{"version":3,"file":"vendor.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAkC;AACgO;AACnH;AACJ;AACxF;;AAEX;;AAExC;AACA;AACA;AACA,yDAAyD;AACzD,oCAAoC,gEAAyB,GAAG,mDAAmD;AACnH,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB;;AAEtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,8BAA8B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D,SAAS;AACT;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,uCAAuC,sDAAe,iBAAiB,sDAAe,CAAC,iDAAa;AAC3K,2CAA2C,gEAAyB,GAAG,iEAAiE;AACxI;AACA,MAAM,qBAAqB;AAC3B,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,qBAAqB,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAE5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6CAA6C;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,gDAAS;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,6CAA6C;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,yDAAyD,gCAAgC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa;AAC7J,oCAAoC,gEAAyB,GAAG,mDAAmD;AACnH;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAEnG;AACA;AACA;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,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;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,SAAS;AACT;AACA;AACA,+DAA+D,mCAAmC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa;AACtK,uCAAuC,gEAAyB,GAAG,yDAAyD;AAC5H;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,iDAAe;AAC3D,qCAAqC,iDAAe;AACpD,uBAAuB,0CAAI,qBAAqB,uDAAO,gCAAgC,sDAAM,oCAAoC,yDAAS,SAAS,2CAAK,cAAc,mDAAG,4DAA4D,4DAAW;AAChP;AACA;AACA;AACA;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,WAAW,GAAG,WAAW;AAC3C;AACA;AACA,+DAA+D,mCAAmC,sDAAe;AACjH,uCAAuC,gEAAyB,GAAG,yDAAyD;AAC5H;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,qBAAqB,IAAI,UAAU;;AAEnE;AACA;AACA,yCAAyC,4CAAU;AACnD;AACA,SAAS;AACT,kBAAkB,mDAAG,gCAAgC,0DAAS,KAAK,gDAAa;AAChF,wCAAwC;AACxC;AACA;AACA;AACA;AACA,mCAAmC,yDAAS;AAC5C;AACA;AACA,kCAAkC,mDAAY;AAC9C,+CAA+C,yDAAS;AACxD;AACA,uBAAuB,yCAAE;AACzB;AACA,mBAAmB,iDAAU;AAC7B,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,qDAAqD,8BAA8B,sDAAe;AAClG,oBAAoB,oEAAkB,GAAG,0CAA0C,uBAAuB,0DAAQ,mBAAmB,0CAA0C;AAC/K;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,iBAAiB,oBAAoB;AACrC,KAAK,iBAAiB,UAAU,qBAAqB,IAAI,UAAU;;AAEnE;AACA,wBAAwB;AACxB;AACA;AACA,0BAA0B;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC,4DAA4D;AAC7D;AACA,oFAAoF;AACpF,2BAA2B;AAC3B;AACA,iCAAiC,yDAAc;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,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,SAAS;AACT;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,qBAAqB;AACrB,SAAS;AACT;AACA,sBAAsB,UAAU,GAAG,YAAY;AAC/C,SAAS;AACT;AACA,kBAAkB,SAAS,IAAI,YAAY,GAAG,OAAO;AACrD;AACA;AACA,iEAAiE,oCAAoC,sDAAe,2BAA2B,sDAAe,aAAa,sDAAe,eAAe,sDAAe,CAAC,oDAAS;AAClO,wCAAwC,gEAAyB,GAAG,2DAA2D;AAC/H;AACA,MAAM,gCAAgC,MAAM,mDAAQ,EAAE,IAAI,MAAM,iDAAM,iCAAiC,GAAG;AAC1G,MAAM,iBAAiB;AACvB,MAAM,mBAAmB;AACzB,MAAM,6BAA6B,MAAM,iDAAM,SAAS,oDAAS,IAAI;AACrE;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,mDAAQ;AAC9B,aAAa;AACb,sBAAsB,iDAAM;AAC5B;AACA,aAAa,GAAG,IAAI,iBAAiB,IAAI,mBAAmB,IAAI;AAChE,sBAAsB,iDAAM;AAC5B,uBAAuB,oDAAS;AAChC,aAAa,GAAG,IAAI,UAAU;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gDAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,qEAAqE,6CAA6C;AAClH;AACA;AACA;AACA;AACA;AACA,uDAAuD,2BAA2B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gDAAS;AACxB;AACA;AACA,SAAS;AACT;AACA;AACA,uDAAuD,gDAAS;AAChE;AACA,4BAA4B,6CAA6C;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA,SAAS;AACT;AACA;AACA,yDAAyD,gCAAgC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa;AAC7J,oCAAoC,gEAAyB,GAAG,mDAAmD;AACnH;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;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,mBAAmB,4CAAU;AAC7B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,iEAAiE,oCAAoC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa,GAAG,sDAAe;AAC3L,wCAAwC,gEAAyB,GAAG,2DAA2D;AAC/H;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM,EAAE;AACpB,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,qBAAqB,IAAI,UAAU;;AAE5H;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,6DAA6D,kCAAkC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa;AACnK,sCAAsC,gEAAyB,GAAG,uDAAuD;AACzH;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uDAAuD,+BAA+B,sDAAe;AACrG,mCAAmC,gEAAyB,GAAG,iDAAiD;AAChH;AACA,MAAM;AACN;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,UAAU;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,uDAAgB,kHAAkH,sDAAsD;AACnM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ;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,aAAa;AACb;AACA;AACA,eAAe;AACf,gBAAgB;AAChB,YAAY;AACZ,eAAe;AACf,YAAY;AACZ,kBAAkB;AAClB,eAAe;AACf,kBAAkB;AAClB;;AAEA;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,oDAAoD,4BAA4B;AAChF;AACA;AACA,sDAAsD,wBAAwB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,gDAAS;AACxB;AACA;AACA;AACA,sCAAsC,0DAAS,GAAG,0BAA0B;AAC5E,YAAY,yDAAS,kBAAkB,4CAAK;AAC5C;AACA,sBAAsB,mDAAG,kBAAkB,6CAA6C;AACxF;AACA,YAAY,0DAAS,GAAG,kDAAkD,KAAK,qDAAI;AACnF,YAAY,mDAAG,IAAI,sCAAsC;AACzD;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,SAAS;AACT;AACA;AACA,2DAA2D,iCAAiC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa;AAChK,qCAAqC,gEAAyB,GAAG,qDAAqD;AACtH;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,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,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS;AACT;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,eAAe,gDAAS;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,OAAO;AAC1E,SAAS;AACT;AACA;AACA,uDAAuD,wBAAwB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,gDAAS;AACxB;AACA;AACA,SAAS;AACT;AACA;AACA,eAAe,gDAAS;AACxB;AACA,SAAS;AACT;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,eAAe,gDAAS;AACxB;AACA;AACA,SAAS;AACT;AACA;AACA,6DAA6D,kCAAkC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa;AACnK,sCAAsC,gEAAyB,GAAG,uDAAuD;AACzH;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAEnG;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,SAAS;AACT;AACA;AACA;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;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,mBAAmB,4CAAU;AAC7B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,+DAA+D,mCAAmC,sDAAe,wBAAwB,sDAAe,CAAC,iDAAa;AACtK,uCAAuC,gEAAyB,GAAG,yDAAyD;AAC5H;AACA,MAAM,4BAA4B;AAClC,MAAM,MAAM,iDAAM;AAClB;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,qDAAU;AACxB,KAAK,iBAAiB,UAAU,4BAA4B,IAAI,MAAM,iDAAa,EAAE,IAAI,UAAU;;AAEnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA,iBAAiB,4BAA4B,oBAAoB;AACjE;AACA;AACA;AACA;AACA;AACA,iEAAiE,oCAAoC,+DAAwB;AAC7H,uCAAuC,+DAAwB,GAAG,yEAAyE,sBAAsB;AACjK;AACA,MAAM;AACN;AACA;AACA,gBAAgB,MAAM,gDAAK,EAAE;AAC7B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,oBAAoB,IAAI,IAAI;AAC5D,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA;AACA,wBAAwB,uDAAY;AACpC;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA,gCAAgC,uDAA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CnC;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,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;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,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;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,8BAA8B,uDAAY;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAA0D;AACxE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA,iBAAiB,uBAAuB,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qKAAqK;AACrK;AACA;AACA;AACA,uDAAuD,+BAA+B,+DAAwB;AAC9G,kCAAkC,+DAAwB,GAAG,+DAA+D,oCAAoC,aAAa,0BAA0B,aAAa,kEAA2B,GAAG;AAClP;AACA;AACA,MAAM;AACN;AACA;AACA,mBAAmB,MAAM,iDAAM,EAAE;AACjC,gBAAgB,MAAM,gDAAK,EAAE;AAC7B,cAAc,MAAM,gDAAK,EAAE;AAC3B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,wBAAwB,IAAI,IAAI;AAChE,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA,kFAAkF,yBAAyB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,0CAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,qEAAoB,4EAA4E,0DAAS;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+BAA+B,+DAAwB,wBAAwB,+DAAwB;AAC9J,kCAAkC,+DAAwB,GAAG,qEAAqE,8BAA8B,aAAa,kEAA2B,GAAG;AAC3M;AACA,MAAM,wCAAwC,MAAM,+CAAI,EAAE,GAAG;AAC7D,MAAM;AACN;AACA;AACA,qBAAqB,MAAM,gDAAK,EAAE;AAClC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU;AAChC,sBAAsB,+CAAI;AAC1B,aAAa,GAAG,IAAI,wBAAwB,IAAI,IAAI;AACpD,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA,YAAY,YAAY;AACxB;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,mCAAmC,uDAAY;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uCAAuC;AAC3E;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,gEAAgE,8BAA8B;AAC9F;AACA;AACA,WAAW;AACX;AACA,iBAAiB;AACjB;AACA,oBAAoB;AACpB;AACA,yDAAyD,gCAAgC,+DAAwB,qBAAqB,+DAAwB,CAAC,qDAAiB;AAChL,mCAAmC,+DAAwB,GAAG,iEAAiE,0IAA0I,aAAa,oCAAoC,aAAa,kEAA2B,8IAA8I;AAChf,QAAQ,6DAAsB;AAC9B,QAAQ,4DAAqB;AAC7B,QAAQ,0DAAmB;AAC3B,QAAQ,0DAAmB;AAC3B,OAAO,oBAAoB;AAC3B;AACA;AACA,MAAM,yBAAyB;AAC/B,MAAM,MAAM,qDAAU;AACtB;AACA;AACA,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,uBAAuB,MAAM,gDAAK,EAAE;AACpC,eAAe,MAAM,gDAAK,EAAE;AAC5B,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,eAAe,MAAM,gDAAK,EAAE;AAC5B,wBAAwB,MAAM,iDAAM,EAAE;AACtC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,KAAK,iBAAiB,UAAU,yBAAyB,IAAI,MAAM,qDAAiB,EAAE,IAAI,IAAI;AAC9F,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,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;AACA;AACA;AACA;AACA;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,uDAAY;AAC1C;AACA;AACA;AACA,yCAAyC,uDAAY;AACrD;AACA;AACA;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,0DAA0D;AACxE,cAAc,mFAAmF;AACjG,cAAc,iEAAiE;AAC/E;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA,iBAAiB,sBAAsB,oBAAoB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,8BAA8B,+DAAwB;AAC3G,iCAAiC,+DAAwB,GAAG,6DAA6D,0KAA0K,aAAa,wGAAwG,aAAa,kEAA2B,GAAG;AACnc;AACA;AACA,MAAM;AACN;AACA;AACA,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,yBAAyB,MAAM,gDAAK,EAAE;AACtC,uBAAuB,MAAM,gDAAK,EAAE;AACpC,4BAA4B,MAAM,gDAAK,EAA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,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,8BAA8B,2DAA2D;AACzF,aAAa;AACb,KAAK,iBAAiB;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,kDAAkD,iCAAiC,4CAA4C,sEAAsE,mEAA4B,6CAA6C;AAC9Q,oCAAoC,+DAAwB,GAAG,mEAAmE,gBAAgB,aAAa,gEAAyB,IAAI,qDAAqD,IAAI,wEAAiC,GAAG;AACzR;AACA,cAAc,MAAM,gDAAK,EAAE;AAC3B;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA,8BAA8B,qDAAqD;AACnF,aAAa;AACb,KAAK,WAAW;AAChB,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;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,2GAA2G,oBAAoB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,mCAAmC,uDAAY;AAC/C;AACA;AACA;AACA,wBAAwB,uDAAY;AACpC;AACA;AACA;AACA,8BAA8B,uDAAY;AAC1C;AACA;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mDAAmD;AACzE;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,oCAAoC,uCAAuC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,yCAAyC,yCAAyC;AAClF,aAAa;AACb,SAA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A;AACA,YAAY,YAAY;AACxB;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,mCAAmC,uDAAY;AAC/C;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA,oCAAoC,uDAAY;AAChD;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA;AACA,wBAAwB,uDAAY;AACpC;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA,8BAA8B,oDAAS;AACvC;AACA;AACA,sCAAsC,gDAAa;AACnD;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,uCAAuC,UAAU,2CAA2C;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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D;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA,mCAAmC,uDAAY;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,cAAc,yDAAyD;AACvE,cAAc,+DAA+D;AAC7E,cAAc,uDAAuD;AACrE,cAAc,6DAA6D;AAC3E,cAAc,iEAAiE;AAC/E,cAAc,iEAAiE;AAC/E,cAAc,iEAAiE;AAC/E,cAAc,+DAA+D;AAC7E,cAAc,iEAAiE;AAC/E,cAAc,6DAA6D;AAC3E,cAAc,mEAAmE;AACjF;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,IAAI;AACb;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,6BAA6B,+DAAwB;AACxG,gCAAgC,+DAAwB,GAAG,0DAA0D,mTAAmT,aAAa,wWAAwW,aAAa,kEAA2B,GAAG;AACx0B;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,kBAAkB,MAAM,gDAAK,4BAA4B;AACzD,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,kBAAkB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ACvB,SAAS,GAAG,IAAI;;AAEhB;AACA,oEAAoE;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uDAAY;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,yCAAyC,0DAAS,GAAG,yCAAyC,GAAG,mDAAG,gBAAgB,kBAAkB;AACtI;AACA;AACA,+DAA+D;AAC/D,sCAAsC,+DAAwB,GAAG,uEAAuE,8CAA8C,aAAa,oCAAoC,aAAa,gEAAyB;AAC7Q,cAAc,yCAAyC,yDAAU,0BAA0B;AAC3F,YAAY,kEAA2B,GAAG;AAC1C;AACA;AACA,iBAAiB,MAAM,gDAAK,EAAE;AAC9B,kBAAkB,MAAM,gDAAK,EAAE;AAC/B,wBAAwB,MAAM,iDAAM,EAAE;AACtC;AACA,eAAe,mDAAmD,+DAAwB;AAC1F,cAAc,oDAAS;AACvB;AACA;AACA;AACA,sBAAsB,yCAAyC,yDAAU,0BAA0B;AACnG;AACA,aAAa;AACb,KAAK,iBAAiB,YAAY,IAAI;AACtC,kBAAkB,iDAAM;AACxB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS,GAAG,IAAI;;AAEhB;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA,YAAY,YAAY;AACxB;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,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,+BAA+B,uDAAY;AAC3C;AACA;AACA;AACA,iCAAiC,uDAAY;AAC7C;AACA;AACA;AACA,iCAAiC,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CvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,gDAAK;AACvB,SAAS;AACT,kBAAkB,0DAAe;AACjC;AACA,SAAS;AACT,kBAAkB,0DAAe;AACjC;AACA,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,gCAAgC,uDAAY;AAC5C;AACA;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA,qCAAqC,uDAAY;AACjD;AACA;AACA;AACA;AACA,wBAAwB,uDAAY;AACpC;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,4BAA4B,uDAAY;AACxC;AACA;AACA;AACA,6BAA6B,uDAAY;AACzC;AACA;AACA;AACA,2BAA2B,uDAAY;AACvC;AACA;AACA;AACA,8BAA8B,uDAAY;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,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,yBAAyB;AACzB;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,+BAA+B,+DA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A;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,4BAA4B,kBAAkB;AAC9C,qBAAqB,uEAAiB;AACtC,8BAA8B,8DAAQ;AACtC;AACA,yBAAyB,uEAAiB;AAC1C;AACA,wBAAwB,8DAAQ;AAChC,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,wEAAwE,kCAAkC;AAC1G;AACA;AACA,gBAAgB,8DAAQ,6BAA6B,8DAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C,gBAAgB,8DAAQ,kCAAkC,8DAAQ;AAClE,gBAAgB,8DAAQ,YAAY,8DAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACoB;;;;;;;;;;;;;;;;;;;ACvOrB;AACA;AACA;AACqH;AACxE;AACU;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,2FAA2F,mEAAa;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gEAAU;AAC1B;AACA;AACA;AACA,+CAA+C,gBAAgB;AAC/D;AACA;AACA,0BAA0B,8DAAQ;AAClC;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD,2BAA2B,8DAAQ;AACnC;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,oDAAoD,8DAAQ,6DAA6D,8DAAQ;AACjI,oBAAoB,8DAAQ;AAC5B,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gEAAgE,gCAAgC;AAChG;AACA;AACA;AACA,YAAY,8DAAQ,6BAA6B,8DAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;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,SAAS;AACT,oEAAoE,kCAAkC;AACtG;AACA;AACA,YAAY,8DAAQ,6BAA6B,8DAAQ;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB;AACtF;AACA;AACA;AACA,uFAAuF,gBAAgB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,oDAAa;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,gBAAgB;AAC/E;AACA,iBAAiB,iEAAW;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,8DAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oCAAoC;AAC5E;AACA;AACA,4CAA4C,4BAA4B;AACxE;AACA;AACA;AACA,4CAA4C,4CAA4C;AACxF;AACA,+CAA+C,8DAAQ;AACvD;AACA;AACA;AACA,wDAAwD,+BAA+B;AACvF;AACA;AACA,oEAAoE,8DAAQ;AAC5E;AACA,4FAA4F,yCAAyC;AACrI;AACA;AACA;AACA;AACA,iFAAiF,+BAA+B;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,gBAAgB;AACnF;AACA;AACA,uCAAuC,8DAAQ;AAC/C;AACA;AACA;AACA,yBAAyB;AACzB;AACA,oFAAoF,gCAAgC;AACpH;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAW,eAAe,iEAAW;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAc;AACtB;AACA;AACA,qBAAqB,8DAAQ;AAC7B;AACA;AACA;AACA;AACA,QAAQ,8DAAQ,QAAQ,uEAAiB;AACzC,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,2BAA2B,8DAAQ;AACnC,iBAAiB;AACjB,yCAAyC;AACzC,aAAa;AACb,YAAY,8DAAQ,sBAAsB,uDAAY;AACtD;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B,aAAa,iEAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B,aAAa,iEAAW;AACxB;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,aAAa,iEAAW;AACxB;AACA;AACA,4BAA4B,8DAAQ;AACpC,aAAa,iEAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACwB;;;;;;;;;;;;;;;;;AC7V8D;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD,sDAAsD;AACtD;AACA;AACA;AACA,wBAAwB,8DAAQ;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,sCAAsC,8DAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ,QAAQ,uEAAiB;AACzC,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/HpB;AACA;AACA;AACqC;AACJ;AACL;AACL;AACI;;;;;;;;;;;;;;;;;;ACPiD;AAClB;AAC1D,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,8DAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAQ;AACvB;AACA;AACA;AACA,uEAAiB,GAAG,kBAAkB;;;;;;;;;;;;;;;;;;;;;;AC5EO;AACY;AACzD;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;AACL;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,kDAAkD,yBAAyB;AAC3E;AACA;AACA,kDAAkD,uDAAY;AAC9D;AACA;AACA;AACA,+CAA+C,uDAAY;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,gFAAgF,gBAAgB;AAChG;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA,wCAAwC,yDAAyD;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,8CAA8C;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,gBAAgB;AACxG;AACA;AACA;AACA;AACA,qCAAqC,uEAAiB;AACtD,oDAAoD,yBAAyB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4CAA4C,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,KAAK;AAChB,WAAW,KAAK;AAChB,YAAY;AACZ;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB,iBAAiB;AACrC;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,kBAAkB;AAC7B,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iEAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,SAAS;AACpB,WAAW,mBAAmB;AAC9B,aAAa,SAAS;AACtB;AACA;AACA,mCAAmC;AACnC,8BAA8B;AAC9B,yCAAyC,uCAAuC;AAChF;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC;AAClF,QAAQ,kEAAY,eAAe,qCAAqC;AACxE;AACA;AACA,4CAA4C,8BAA8B;AAC1E;AACA;AACA;AACA;AACA;AACA,gDAAgD,sBAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;AACrC,yBAAyB,0DAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,kCAAkC,kEAAY,iBAAiB,qCAAqC;AACpG;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA,aAAa,8DAAQ,OAAO,8DAAQ;AACpC;AACA,+DAA+D,6EAA2B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,yCAAyC;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,YAAY,iEAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B,gBAAgB,aAAa;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;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,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,8DAAQ,OAAO,8DAAQ;AAChD;AACA,8CAA8C,6EAA2B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAgB;AACxC;AACA;AACA,wBAAwB,qEAAmB;AAC3C,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe,eAAe;AAC9B,eAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAe;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,gBAAgB,iEAAW;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,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,kDAAkD,SAAS,wBAAwB;AACnF,qDAAqD,+BAA+B;AACpF;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAe;AAC3B,0DAA0D,mBAAmB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAY,eAAe,qCAAqC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B;AACA,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;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,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;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,gDAAgD,6EAA2B;AAC3E,iDAAiD,mCAAmC;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,uBAAuB,6DAAO;AAC9B;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,uBAAuB,6DAAO;AAC9B;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA,iDAAiD,iBAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;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,eAAe,kBAAkB;AACjC,eAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA,2BAA2B,iEAAW;AACtC;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,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,iBAAiB;AACjB;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,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;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,kDAAkD,sBAAsB;AACxE;AACA;AACA,kDAAkD,SAAS,wBAAwB;AACnF;AACA;AACA,YAAY,iEAAe;AAC3B,sDAAsD,uBAAuB;AAC7E;AACA,YAAY,kEAAY;AACxB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,iBAAiB,mBAAmB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;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,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;AACA;AACA;AACA;AACA,qCAAqC,yBAAyB;AAC9D;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,gDAAgD,6EAA2B;AAC3E,qDAAqD,qCAAqC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;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,eAAe,aAAa;AAC5B,eAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAe;AAC3B;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;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,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;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,uDAAuD,6BAA6B;AACpF,mDAAmD,0BAA0B;AAC7E,oDAAoD,2BAA2B;AAC/E,kDAAkD,8BAA8B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAe;AAC3B,0DAA0D,qBAAqB;AAC/E;AACA,YAAY,kEAAY,eAAe,qCAAqC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,aAAa;AAC5B,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;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,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;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,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kEAAY;AAC1C;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,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,mHAAmH,aAAa;AAChI;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,sBAAsB;AACvF;AACA;AACA;AACA;AACA;AACA,+DAA+D,sBAAsB;AACrF;AACA;AACA;AACA;AACA,+DAA+D,sBAAsB;AACrF;AACA;AACA;AACA,2DAA2D,4BAA4B;AACvF;AACA;AACA;AACA;AACA;AACA,iEAAiE,sBAAsB;AACvF;AACA;AACA;AACA;AACA,gEAAgE,sBAAsB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,yCAAyC;AACjD;AACA,gBAAgB,uBAAuB;AACvC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wCAAwC;AAChD;AACA,gBAAgB,iEAAiE;AACjF;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2CAA2C;AACnD;AACA,gBAAgB,iDAAiD;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA,oCAAoC,uBAAuB;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,QAAQ,2CAA2C;AACnD;AACA,gBAAgB,iDAAiD;AACjE;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,QAAQ,qDAAqD;AAC7D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;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,0BAA0B,6DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,0BAA0B,6DAAO;AACjC;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,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,iCAAiC,qBAAqB;AACtD;AACA;AACA,iCAAiC,mBAAmB;AACpD;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,6BAA6B,2FAA2F;AACxH;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA,QAAQ,4CAA4C;AACpD;AACA,iBAAiB;AACjB;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,sHAAsH,aAAa;AACnI;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,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW,gFAAgF,aAAa;AAChI,wBAAwB,8DAAQ,gFAAgF,aAAa;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,CAAC,kCAAkC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B,gBAAgB,0BAA0B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA,iEAAiE,4DAAM;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B,gBAAgB,UAAU;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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;AACA;AACA;AACA;AACA,CAAC,sCAAsC;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,CAAC,0CAA0C;AAC3C;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4DAA4D;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC,gBAAgB,0BAA0B;AAC1C;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,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAY,kBAAkB,0BAA0B;AAC1F,kCAAkC,gEAAc;AAChD;AACA;AACA;AACA,SAAS;AACT,uCAAuC,gEAAc;AACrD;AACA,0BAA0B,eAAe;AACzC;AACA,SAAS;AACT,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,QAAQ,gEAAU,iBAAiB,sFAAsF;AACzH;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,4DAA4D,gCAAgC;AAC5F,QAAQ,4DAAM;AACd;AACA,QAAQ,4DAAM,oBAAoB;AAClC;AACA;AACA;AACA;AACA,0BAA0B,4DAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;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,gBAAgB,kEAAgB,6BAA6B,yCAAyC;AACtG;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,4DAAM;AACvE;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,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA,2EAA2E,6DAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,6DAAO;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,kBAAkB,+DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAAS;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,kBAAkB,+DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA,kBAAkB,+DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,qBAAqB,gEAAU;AAC/B,iBAAiB,+DAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;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,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,6BAA6B,uEAAiB;AAC9C;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,uBAAuB,uEAAiB;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,YAAY,uEAAiB;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,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,+DAAS;AACrG;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2DAAS;AACjC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAS;AACvC,qDAAqD,kCAAkC;AACvF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,2BAA2B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,+DAAS;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA,wBAAwB,2DAAS;AACjC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAS;AACvC,qDAAqD,qCAAqC;AAC1F;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,4BAA4B;AACjE;AACA;AACA;AACA;AACA;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,6DAAO;AACnE,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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;AACA;AACA,qBAAqB,+DAAS;AAC9B;AACA,YAAY,4DAAM;AAClB,SAAS;AACT;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA,YAAY,iEAAe;AAC3B;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gBAAgB;AAChC,gBAAgB,gBAAgB;AAChC,iBAAiB;AACjB;AACA;AACA;AACA;AACA,uBAAuB,4DAAM,GAAG;AAChC,qDAAqD,gBAAgB;AACrE;AACA;AACA,gBAAgB,kEAAY;AAC5B;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B;AAC5E;AACA;AACA;AACA;AACA,iDAAiD,4BAA4B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA;AACA;AACA;;AAEsX;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACr9IsG;AAC7a;AACA;AACE;AACA;;AAEjD,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;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,eAAe,mBAAmB;AAClC,eAAe,sBAAsB;AACrC;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,6BAA6B,sEAAoB;AACjD,YAAY,uEAAiB;AAC7B,iCAAiC,oDAAoD;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA,YAAY,gEAAU;AACtB;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA,YAAY,gEAAU;AACtB;AACA,aAAa;AACb;AACA,aAAa,uEAAiB,CAAC,6DAAO,+BAA+B,6DAAO;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B,iCAAiC,2BAA2B;AAC5D;AACA,YAAY,uEAAiB;AAC7B,iCAAiC,6BAA6B;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,6BAA6B,+DAA+D;AAC5F,6BAA6B,+DAA+D;AAC5F;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB,mBAAmB,uEAAiB,YAAY,uEAAiB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,iEAAW;AACvB;AACA,mBAAmB,uEAAiB;AACpC,mBAAmB,uEAAiB;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,yDAAyD,mBAAmB;AAC5E,wDAAwD,0BAA0B;AAClF,2DAA2D,mCAAmC,kBAAkB;AAChH,QAAQ,kEAAY;AACpB;AACA;AACA;AACA,SAAS;AACT,QAAQ,gEAAU;AAClB,uDAAuD,mCAAmC,kBAAkB;AAC5G,QAAQ,kEAAY;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,gEAAU,sBAAsB,gBAAgB;AAC5D,YAAY,gEAAU,kBAAkB,gBAAgB;AACxD;AACA,QAAQ,gEAAU;AAClB,8DAA8D,oCAAoC;AAClG,QAAQ,gEAAU;AAClB;AACA,mEAAmE,uCAAuC;AAC1G,+DAA+D,uCAAuC;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,oBAAoB;AAC9E,mDAAmD,SAAS,kGAAkG;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ,YAAY,0EAAoB;AAC/D;AACA;AACA,8CAA8C,0DAAQ;AACtD;AACA,aAAa,uEAAiB;AAC9B,wDAAwD,gBAAgB;AACxE;AACA,mCAAmC,8DAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA,8DAA8D,uBAAuB;AACrF;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,iCAAiC,sEAAoB;AACrD,2BAA2B,sDAAI;AAC/B,+DAA+D,SAAS,kBAAkB;AAC1F,YAAY,kEAAY;AACxB;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA,sDAAsD,mBAAmB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,iCAAiC,4DAAM;AACvC;AACA,sCAAsC,gEAAc;AACpD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,sCAAsC,gEAAc;AACpD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC,4DAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC,iCAAiC,4DAAM;AACvC,sBAAsB,4DAAM;AAC5B,iCAAiC,4DAAM;AACvC,yBAAyB,4DAAM;AAC/B,6BAA6B,4DAAM;AACnC,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,4EAA4E;AAC5E;AACA;AACA,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uEAAiB;AACpD,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB,oCAAoC,uEAAiB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;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,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB,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,0BAA0B,kBAAkB;AAC5C,qDAAqD,iBAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,+DAA+D,gCAAgC;AAC/F;AACA,yEAAyE,4CAA4C;AACrH;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,4CAA4C,uBAAuB;AACnE,uGAAuG,+BAA+B;AACtI,sGAAsG,+BAA+B;AACrI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,aAAa;AACtD;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA,wCAAwC,aAAa;AACrD;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,mCAAmC,uEAAiB;AACpD,wCAAwC,2BAA2B;AACnE;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA,yBAAyB,uEAAiB;AAC1C,wBAAwB,iEAAW;AACnC;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,oBAAoB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,0DAA0D,+CAA+C;AACzG;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,8DAAQ;AACxB,qBAAqB,uEAAiB;AACtC,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA,sBAAsB,uEAAiB;AACvC,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,sCAAsC,WAAW,iEAAW;AAC5D;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,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,8BAA8B,mCAAmC;AACjE;AACA,gDAAgD,mBAAmB;AACnE,mFAAmF,uEAAiB;AACpG,oBAAoB,8DAAQ;AAC5B,oBAAoB,kEAAY;AAChC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,mBAAmB;AAClC,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;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,6CAA6C,kEAAkE;AAC/G;AACA;AACA,6CAA6C,kEAAkE;AAC/G;AACA,yCAAyC,2BAA2B;AACpE;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAW;AACvC,4BAA4B,4DAAM;AAClC,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sEAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB,wBAAwB,uEAAiB;AACvF,4BAA4B,4DAAM;AAClC,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA,yCAAyC,0CAA0C;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA,+BAA+B,uEAAiB;AAChD;AACA,oCAAoC,+BAA+B;AACnE;AACA;AACA;AACA;AACA,6EAA6E,+BAA+B;AAC5G;AACA;AACA,6EAA6E,yDAAyD;AACtI;AACA,wCAAwC;AACxC;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB;AACrD;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,4DAAM;AAClB,iCAAiC,2BAA2B;AAC5D;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sEAAoB;AAChD;AACA;AACA;AACA;AACA,4DAA4D,qDAAqD;AACjH;AACA;AACA,aAAa;AACb;AACA;AACA,4DAA4D,oDAAoD;AAChH,8DAA8D,+CAA+C;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,gDAAgD;AAClH;AACA;AACA;AACA,sEAAsE,iDAAiD;AACvH;AACA;AACA,sEAAsE,iDAAiD;AACvH;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB,uEAAiB;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,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,qEAAmB;AACnC;AACA;AACA,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8DAAQ;AAC3B;AACA;AACA,mBAAmB,8DAAQ;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,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,yCAAyC,oBAAoB;AAC7D,yCAAyC,kCAAkC;AAC3E;AACA;AACA,yCAAyC,2CAA2C;AACpF;AACA;AACA;AACA,qCAAqC,wCAAwC;AAC7E;AACA;AACA;AACA,+BAA+B,6DAAO;AACtC,YAAY,uEAAiB;AAC7B;AACA;AACA,gCAAgC,uEAAiB;AACjD,YAAY,iEAAW;AACvB;AACA,gCAAgC,uEAAiB;AACjD,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gCAAgC,uBAAuB;AACvD;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,qCAAqC,oBAAoB;AACzD;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,wCAAwC,+BAA+B;AACvE;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,qEAAmB;AACnC,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,QAAQ,4DAAM,2BAA2B,uBAAuB;AAChE;AACA;AACA;AACA,QAAQ,4DAAM,uBAAuB,+BAA+B;AACpE;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,qEAAmB;AACnC,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uEAAiB,4BAA4B,uEAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB,mCAAmC,uEAAiB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,6BAA6B,wCAAwC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,wCAAwC;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,iCAAiC,gBAAgB;AACjD;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA,iCAAiC,gBAAgB;AACjD;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB;AAC/E;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,gEAAU;AACtB;AACA,yEAAyE,uEAAiB;AAC1F;AACA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB;AACrD,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4CAA4C;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA,iCAAiC,mEAAmE,SAAS;AAC7G;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,qCAAqC,iBAAiB;AACtD,qCAAqC;AACrC;AACA;AACA,qBAAqB,uEAAiB;AACtC,yCAAyC,iBAAiB;AAC1D,yCAAyC;AACzC;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kBAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oBAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oBAAoB;AAC7D,yCAAyC,4CAA4C;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iCAAiC;AACtE;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA,iDAAiD,iDAAiD;AAClG;AACA;AACA;AACA;AACA;AACA,iDAAiD,sBAAsB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,cAAc;AAC/D;AACA;AACA;AACA,gDAAgD,2BAA2B;AAC3E;AACA;AACA;AACA;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA,qDAAqD,kDAAkD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4CAA4C;AACzF;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,uBAAuB,6DAAO;AAC9B;AACA,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,MAAM;AACrB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB;AACrD;AACA,qCAAqC,4CAA4C;AACjF;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA,uEAAuE,uEAAiB;AACxF;AACA;AACA;AACA,oCAAoC,0BAA0B;AAC9D,oCAAoC,uBAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA,iCAAiC,oBAAoB;AACrD;AACA;AACA,qCAAqC,4CAA4C;AACjF;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,MAAM;AACrB;AACA,iBAAiB;AACjB;AACA;AACA;AACA,6BAA6B,kBAAkB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uEAAiB;AACvD,iCAAiC,4CAA4C;AAC7E;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,yCAAyC,uEAAiB;AAC1D,aAAa,uEAAiB;AAC9B,iCAAiC,mBAAmB;AACpD;AACA,sEAAsE,uEAAiB,iBAAiB,uEAAiB;AACzH;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;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,4BAA4B,sEAAoB;AAChD;AACA;AACA,oGAAoG,2DAA2D;AAC/J;AACA;AACA,oGAAoG,uDAAuD;AAC3J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C,sEAAsE,mBAAmB;AACzF;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,gFAAgF,qDAAqD;AACrI;AACA,0FAA0F,kDAAkD;AAC5I;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,4CAA4C,uBAAuB;AACnE,wHAAwH,oDAAoD;AAC5K,6IAA6I,oDAAoD;AACjM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,aAAa;AACvE;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA,2DAA2D,uEAAiB;AAC5E;AACA,wCAAwC,iDAAiD;AACzF,kGAAkG,sDAAsD;AACxJ,+HAA+H,sDAAsD;AACrL;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;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;AACA;AACA;AACA;AACA;AACA,qCAAqC,yEAAuB;AAC5D;AACA;AACA,oCAAoC,yEAAuB;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,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA,8BAA8B,yEAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa;AACzC;AACA,oCAAoC,yEAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F,sDAAsD;AAChJ;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yEAAuB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,oDAAoD;AACnI,2EAA2E,oDAAoD;AAC/H;AACA,cAAc,uEAAiB,kEAAkE,uEAAiB;AAClH;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,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,+BAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yEAAuB;AAC3D;AACA;AACA;AACA,gBAAgB,gEAAU,UAAU,oBAAoB;AACxD;AACA,8FAA8F,oDAAoD;AAClJ;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,sBAAsB,uEAAiB,+EAA+E,uEAAiB;AACvI,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA,wCAAwC,WAAW,iEAAW;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAA+C;AAC7E,gEAAgE,SAAS,iBAAiB;AAC1F,0CAA0C,gBAAgB;AAC1D,gFAAgF,uEAAiB;AACjG,oBAAoB,8DAAQ;AAC5B,oBAAoB,kEAAY;AAChC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;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,gBAAgB,0EAAwB;AACxC;AACA;AACA,eAAe,yEAAuB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;;AAEA;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,wDAAwD,mBAAmB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,2BAA2B;AAC1C;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,QAAQ,wEAAoB;AAC5B,aAAa,uEAAiB,mCAAmC,uEAAiB;AAClF;AACA;AACA,aAAa,uEAAiB,CAAC,6DAAO,+BAA+B,6DAAO;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,sBAAsB,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,iCAAiC,sEAAoB;AACrD,4BAA4B,sDAAI;AAChC,iCAAiC,uEAAuE;AACxG;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,4BAA4B,qEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAmB,GAAG,wBAAwB;AACtD,QAAQ,8DAAQ;AAChB;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,gCAAgC,uEAAiB;AACjD;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,iCAAiC,iBAAiB;AAClD,iCAAiC;AACjC;AACA;AACA,iBAAiB,uEAAiB;AAClC,qCAAqC,iBAAiB;AACtD,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,sEAAoB;AAClD;AACA,kCAAkC;AAClC,mCAAmC,iCAAiC,iBAAiB;AACrF;AACA;AACA,kCAAkC;AAClC,mCAAmC,iCAAiC,iBAAiB;AACrF;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAAoB;AACtD;AACA,sCAAsC;AACtC,uCAAuC,iCAAiC,iBAAiB;AACzF;AACA;AACA,sCAAsC;AACtC;AACA,uCAAuC,iCAAiC,iBAAiB;AACzF;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,EAAE,IAAI,EAAE;AAC3D;AACA,qDAAqD,EAAE,IAAI,EAAE;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA,iCAAiC,4DAAM;AACvC,mCAAmC,gEAAc;AACjD;AACA;AACA;AACA,SAAS;AACT;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,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uEAAiB;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD,+EAA+E;AAC/E;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,QAAQ,qEAAiB;AACzB;AACA,YAAY,qEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uEAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,4DAAM;AAC3C,+CAA+C,gEAAc;AAC7D;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,cAAc,uEAAiB,oBAAoB,uEAAiB;AACpE;AACA;AACA;AACA;AACA,cAAc,6DAAO,+CAA+C,uEAAiB;AACrF,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA,mBAAmB,6DAAO;AAC1B,mBAAmB,6DAAO;AAC1B;AACA;AACA,qBAAqB,6DAAO;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;AACA;AACA;AACA;AACA;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,+BAA+B,uEAAiB;AAChD;AACA;AACA;AACA,gBAAgB,gEAAU;AAC1B;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa,uEAAiB,mBAAmB,uEAAiB;AAClE;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,wDAAwD,6CAA6C;AACrG,aAAa,uEAAiB;AAC9B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yDAAK;AACjC;AACA,sBAAsB,kEAAgB;AACtC,sBAAsB,kEAAgB,KAAK,2BAA2B,IAAI,wBAAwB;AAClG;AACA;AACA;AACA;AACA,uBAAuB,kEAAgB,KAAK,qBAAqB,IAAI,sBAAsB;AAC3F;AACA;AACA;AACA,kDAAkD,4DAAM;AACxD;AACA,4DAA4D,gEAAc;AAC1E;AACA;AACA;AACA,yBAAyB;AACzB,4DAA4D,gEAAc;AAC1E;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,kEAAgB;AACrC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,6BAA6B;AACnF,qDAAqD,2BAA2B;AAChF;AACA,mDAAmD,0BAA0B;AAC7E,qDAAqD,4BAA4B;AACjF;AACA,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uEAAiB;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,2BAA2B,iCAAiC;AAC5D;AACA;AACA,2BAA2B,wCAAwC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA,sCAAsC;AACtC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gEAAU;AAChE;AACA;AACA,iGAAiG,gEAAU;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6BAA6B;AAClE;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC,sEAAsE,wCAAwC;AAC9G;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,0BAA0B,kEAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,kCAAkC,kEAAgB;AAClD;AACA;AACA,gDAAgD,2DAAS;AACzD;AACA;AACA,gDAAgD,2DAAS;AACzD;AACA;AACA,gIAAgI,kEAAgB;AAChJ;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC,yBAAyB,uEAAiB;AAC1C,wBAAwB,8DAAQ;AAChC,wBAAwB,iEAAW;AACnC;AACA;AACA,gBAAgB,kEAAgB;AAChC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,MAAM;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0EAAsB;AAClC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA,YAAY,iEAAW;AACvB,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yCAAyC;AACjE;AACA;AACA,wBAAwB,iBAAiB;AACzC,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAW;AAC7C;AACA,oBAAoB,gEAAU,sBAAsB,kCAAkC;AACtF;AACA;AACA;AACA,kCAAkC,iEAAW;AAC7C;AACA,oBAAoB,gEAAU,sBAAsB,kCAAkC;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,wBAAwB,sBAAsB;AAC9C,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sEAAoB;AAC9C;AACA;AACA;AACA;AACA,qDAAqD,uEAAiB;AACtE;AACA;AACA,iEAAiE,4CAA4C;AAC7G;AACA;AACA,iEAAiE,wCAAwC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sEAAoB;AACjD;AACA;AACA,sCAAsC,uEAAiB;AACvD;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,uDAAuD,0BAA0B;AACjF;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA,iDAAiD,kBAAkB;AACnE;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C,iDAAiD,mDAAmD;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA,+CAA+C,8DAAQ,mDAAmD;AAC1G;AACA;AACA;AACA;AACA;AACA,+CAA+C,8DAAQ,wCAAwC;AAC/F;AACA;AACA;AACA;AACA;AACA,+CAA+C,8DAAQ,wCAAwC;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kBAAkB;AACvD;AACA;AACA,aAAa,uEAAiB,2BAA2B,uEAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,iBAAiB;AACjB;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAmB,GAAG,yBAAyB;AAC3D,YAAY,gEAAU,sBAAsB,gDAAgD;AAC5F;AACA,gBAAgB,gEAAU,sBAAsB,0DAA0D;AAC1G;AACA;AACA;AACA,YAAY,uEAAmB,GAAG,0BAA0B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB,iBAAiB,uEAAiB,eAAe,uEAAiB;AACjG;AACA,0HAA0H,uEAAiB;AAC3I,YAAY,8DAAQ;AACpB,YAAY,gEAAU,sBAAsB,wBAAwB;AACpE;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,gEAAU,sBAAsB,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,iBAAiB;AAChC,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA,oBAAoB,qEAAiB;AACrC;AACA;AACA,oBAAoB,oEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sEAAoB;AAC7D;AACA,yCAAyC,mDAAmD;AAC5F,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oBAAoB,sEAAkB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,yBAAyB,uEAAiB,mCAAmC,uEAAiB;AAC9F;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,oBAAoB,qEAAiB;AACrC,yBAAyB,uEAAiB,mCAAmC,uEAAiB;AAC9F;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;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG,6HAA6H;AAChJ;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,oEAAoE;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAsB;AACrC,eAAe,2BAA2B;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA,6BAA6B,4BAA4B;AACzD,6BAA6B,wBAAwB;AACrD;AACA;AACA;AACA;AACA;AACA,QAAQ,wEAAoB;AAC5B,aAAa,uEAAiB,mCAAmC,uEAAiB;AAClF;AACA;AACA,aAAa,uEAAiB,CAAC,6DAAO,+BAA+B,6DAAO;AAC5E;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,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;AACA,gBAAgB,gEAAU,sBAAsB,kCAAkC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA,qCAAqC,0BAA0B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,qDAAqD;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA,yCAAyC,eAAe;AACxD;AACA;AACA;AACA;AACA,yCAAyC,mDAAmD;AAC5F;AACA;AACA;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6BAA6B;AAClE;AACA;AACA;AACA,qCAAqC,wDAAwD;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,yBAAyB;AAC9D;AACA;AACA;AACA,qCAAqC,oDAAoD;AACzF;AACA;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sEAAoB;AACjD;AACA;AACA,YAAY,uEAAiB;AAC7B,iCAAiC,oDAAoD;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uEAAiB;AACtE;AACA,oEAAoE,wCAAwC;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK,2BAA2B,mCAAmC;AAC3E;AACA,6BAA6B,kBAAkB,SAAS;AACxD,6BAA6B,yEAAyE;AACtG;AACA,6BAA6B,+DAA+D;AAC5F,6BAA6B,+DAA+D;AAC5F,wBAAwB,sDAAI;AAC5B;AACA,6BAA6B,uEAAuE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oCAAoC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,gBAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,sBAAsB,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA,0CAA0C,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,QAAQ,qEAAiB;AACzB;AACA,YAAY,qEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa,iEAAW;AACxB,gDAAgD,gBAAgB;AAChE;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,4CAA4C,+DAA+D;AAC3G;AACA;AACA,4BAA4B,uEAAiB;AAC7C,0BAA0B,uEAAiB;AAC3C,oCAAoC,gGAAgG;AACpI,iBAAiB,uEAAiB,sBAAsB,uEAAiB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,mCAAmC,4DAAM;AACzC,2CAA2C,gEAAc;AACzD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;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,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6CAA6C;AAC1E,6BAA6B,iDAAiD;AAC9E;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,qBAAqB,uEAAiB,iBAAiB,uEAAiB;AACxE,yCAAyC,SAAS,4CAA4C;AAC9F;AACA;AACA;AACA;AACA,yCAAyC,uCAAuC;AAChF;AACA;AACA;AACA,qCAAqC,oDAAoD;AACzF;AACA;AACA,qCAAqC,6CAA6C;AAClF;AACA;AACA;AACA,qCAAqC,6CAA6C;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,SAAS,0BAA0B;AACpE;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA,QAAQ,kEAAc;AACtB,cAAc,uEAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,6BAA6B,sEAAoB;AACjD,wCAAwC,uEAAiB;AACzD;AACA;AACA,uBAAuB;AACvB,uDAAuD,0BAA0B;AACjF;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C,iDAAiD,mDAAmD;AACpG;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,+CAA+C,8DAAQ,gBAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,+CAA+C,8DAAQ,oBAAoB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,+CAA+C,8DAAQ,oBAAoB;AAC3E;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C,+CAA+C,8DAAQ,6DAA6D;AACpH;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C,+CAA+C,8DAAQ,6DAA6D;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kCAAkC;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAa,UAAU,mEAAmE;AACtH;AACA;AACA,aAAa,iEAAW;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB,sBAAsB,uEAAiB;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0EAAwB;AACpC,YAAY,0EAAwB;AACpC,YAAY,0EAAwB;AACpC,YAAY,0EAAwB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,4DAAM;AAC3C,0CAA0C,gEAAc;AACxD;AACA;AACA;AACA,aAAa;AACb,2CAA2C,gEAAc;AACzD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAY,yBAAyB,0DAA0D;AACvG,QAAQ,kEAAY,yBAAyB,0DAA0D;AACvG,QAAQ,kEAAY,0BAA0B,0DAA0D;AACxG,QAAQ,kEAAY,0BAA0B,0DAA0D;AACxG;AACA;AACA,QAAQ,0EAAwB;AAChC,QAAQ,0EAAwB;AAChC,QAAQ,kEAAY,kBAAkB,0DAA0D;AAChG,QAAQ,kEAAY,sBAAsB,0DAA0D;AACpG;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4DAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uEAAiB;AACzE;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB,sBAAsB,uEAAiB;AAC1E;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA,gBAAgB,4DAAM;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,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB,sCAAsC,uEAAiB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,gBAAgB,kEAAc;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,cAAc,uEAAiB,mBAAmB,uEAAiB;AACnE,eAAe,uEAAiB;AAChC,sBAAsB,uEAAiB,sBAAsB,uEAAiB;AAC9E,qBAAqB,uEAAiB;AACtC;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,gEAAU,sBAAsB,wBAAwB;AACpE;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,gEAAU,sBAAsB,yBAAyB;AACzE;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,4CAA4C,uEAAiB;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,4EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;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,kBAAkB,6DAAO;AACzB,cAAc,uEAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC,4BAA4B,6DAAO;AACnC,4BAA4B,6DAAO;AACnC,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,mCAAmC,uEAAiB;AACpD,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB,qCAAqC,uEAAiB;AAChG,6BAA6B,uEAAiB;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,qBAAqB,uEAAiB;AACtC;AACA;AACA,0BAA0B,uEAAiB;AAC3C,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB,mBAAmB,uEAAiB;AAC3E,yBAAyB,uEAAiB;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,qBAAqB,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;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,8CAA8C,uBAAuB;AACrE;AACA,YAAY,0EAAwB;AACpC;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB,sBAAsB,uEAAiB;AAC9E;AACA,sDAAsD,2BAA2B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,mBAAmB,uEAAiB,mBAAmB,uEAAiB;AACxE,qBAAqB,uEAAiB,qBAAqB,uEAAiB;AAC5E;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA,4BAA4B,iEAAW;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,aAAa,uEAAiB;AAC9B,sEAAsE,iCAAiC;AACvG;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA,4BAA4B,iEAAW;AACvC,4BAA4B,iEAAW;AACvC;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA,kEAAkE,uEAAiB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB,yCAAyC,uEAAiB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,aAAa;AACb,uBAAuB,uEAAiB;AACxC;AACA;AACA,aAAa;AACb,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uEAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,sBAAsB;AAC9E;AACA;AACA;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,sBAAsB;AAC1E;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,yCAAyC,6DAAO;AAChD;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC,gCAAgC,0EAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB,qBAAqB,uEAAiB;AACrE;AACA,kBAAkB,uEAAiB,yCAAyC,uEAAiB;AAC7F;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C,4BAA4B,uEAAiB;AAC7C;AACA,8BAA8B,uEAAiB;AAC/C,8BAA8B,uEAAiB;AAC/C;AACA;AACA,8BAA8B,uEAAiB;AAC/C,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA,sDAAsD,uBAAuB;AAC7E;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD,gCAAgC,8DAAQ;AACxC,gCAAgC,0EAAwB;AACxD;AACA,iCAAiC,uEAAiB;AAClD,gCAAgC,8DAAQ;AACxC;AACA,gCAAgC,0EAAwB;AACxD,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA,yCAAyC,6DAAO;AAChD,qCAAqC,uEAAiB;AACtD;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,kEAAgB;AAChC;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA,uBAAuB;AACvB,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,oBAAoB,uEAAiB;AACvE;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,oBAAoB,uEAAiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAiB;AAChC,qBAAqB,uEAAiB;AACtC,sBAAsB,uEAAiB,sBAAsB,uEAAiB;AAC9E;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,iEAAW;AAC3B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,0DAA0D,gCAAgC;AAC1F,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qBAAqB;AACnE;AACA;AACA;AACA;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6DAAO;AACzB,cAAc,uEAAiB,QAAQ,6DAAO;AAC9C;AACA;AACA,aAAa,uEAAiB,qBAAqB,uEAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;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,kBAAkB,6DAAO;AACzB,cAAc,uEAAiB,QAAQ,6DAAO;AAC9C;AACA;AACA,aAAa,uEAAiB,qBAAqB,uEAAiB;AACpE;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,yDAAyD,8BAA8B;AACvF;AACA,uDAAuD,uBAAuB;AAC9E,qDAAqD,qBAAqB;AAC1E,0DAA0D,uBAAuB;AACjF,YAAY,gEAAU,eAAe,+FAA+F;AACpI,YAAY,gEAAU,aAAa,6FAA6F;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,sBAAsB;AAC9E,0DAA0D,wBAAwB;AAClF,mCAAmC,2DAAM,GAAG,8CAA8C;AAC1F,iCAAiC,2DAAM,GAAG,4CAA4C;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,8BAA8B,uEAAiB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,iBAAiB;AAClD,iCAAiC,eAAe;AAChD;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C,QAAQ,oEAAgB;AACxB;AACA;AACA;AACA,mBAAmB,uEAAiB;AACpC,mBAAmB,uEAAiB;AACpC;AACA;AACA;AACA;AACA,aAAa,uEAAiB,mBAAmB,uEAAiB;AAClE;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,sBAAsB,uEAAiB;AACrE;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU,yBAAyB,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,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B,iBAAiB,uEAAiB;AAClC,kBAAkB,uEAAiB,sBAAsB,uEAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B,kBAAkB,uEAAiB,sBAAsB,uEAAiB;AAC1E,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAiB,sBAAsB,uEAAiB;AACvE,iBAAiB,uEAAiB;AAClC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B,iBAAiB,uEAAiB;AAClC,kBAAkB,uEAAiB,sBAAsB,uEAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA,4DAA4D,8BAA8B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,YAAY,6DAAO;AACnB;AACA,4DAA4D,0BAA0B;AACtF,6DAA6D,2BAA2B;AACxF;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,YAAY,6DAAO;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,gBAAgB,6DAAO;AACvB;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,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uEAAiB;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,2DAA2D,2BAA2B;AACtF,0DAA0D,wBAAwB;AAClF;AACA;AACA,kDAAkD,oBAAoB;AACtE,QAAQ,gEAAU,YAAY,+BAA+B;AAC7D;AACA;AACA,oDAAoD,sBAAsB;AAC1E;AACA;AACA;AACA;AACA,wDAAwD,qBAAqB;AAC7E,uDAAuD,gDAAgD;AACvG;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,sBAAsB,uEAAiB,sBAAsB,uEAAiB;AAC9E,gCAAgC,2DAAM,GAAG,8CAA8C;AACvF,+BAA+B,2DAAM,GAAG,gEAAgE;AACxG,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA,iBAAiB,iEAAW;AAC5B;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,qBAAqB,uEAAiB;AACnE;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,sBAAsB,uEAAiB;AACrE;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,6DAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,4DAAM;AAC7C,+CAA+C,gEAAc;AAC7D;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,mEAAmE;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gBAAgB;AAClE;AACA,YAAY,kEAAY;AACxB;AACA;AACA;AACA,aAAa,iEAAW;AACxB,6DAA6D,6BAA6B,mBAAmB;AAC7G,0BAA0B,sEAAmB;AAC7C,YAAY,gEAAU,YAAY,gGAAgG;AAClI;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B;AACA,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yDAAK;AACjC;AACA,kBAAkB,uEAAiB;AACnC;AACA,kBAAkB,iEAAW;AAC7B,sBAAsB,yBAAyB,IAAI,0BAA0B;AAC7E,mCAAmC,yBAAyB,IAAI,yBAAyB;AACzF;AACA;AACA;AACA,kBAAkB,iEAAW;AAC7B,sBAAsB,WAAW,IAAI,oBAAoB,MAAM,qBAAqB;AACpF;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,uBAAuB,0EAA0E;AAC3H;AACA,oBAAoB,gEAAU,uBAAuB,gDAAgD;AACrG;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,sDAAsD,gEAAc;AACpE;AACA;AACA,0CAA0C;AAC1C,yBAAyB;AACzB,sDAAsD,gEAAc;AACpE;AACA;AACA,0CAA0C;AAC1C,yBAAyB;AACzB;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,gDAAgD,4DAAM;AACtD,yDAAyD,gEAAc;AACvE;AACA;AACA;AACA,yBAAyB;AACzB,yDAAyD,gEAAc;AACvE;AACA;AACA,0CAA0C;AAC1C,yBAAyB;AACzB,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,kEAAgB;AACvD,oBAAoB,kEAAgB;AACpC;AACA,aAAa;AACb;AACA,gBAAgB,gEAAU,uBAAuB,0BAA0B;AAC3E;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA,qBAAqB,iEAAW;AAChC;AACA;AACA,qBAAqB,uEAAiB;AACtC,yBAAyB,uEAAiB;AAC1C,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA,uCAAuC,kEAAgB;AACvD,oBAAoB,qEAAmB;AACvC;AACA,aAAa;AACb,qBAAqB,kEAAgB;AACrC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6DAAO;AAC7B,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,cAAc,uEAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB,wBAAwB,uEAAiB;AACnF,4BAA4B,uEAAiB,eAAe,uEAAiB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB,cAAc,uEAAiB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,gEAAc;AACrD;AACA;AACA,0BAA0B;AAC1B,SAAS;AACT,+BAA+B,4DAAM;AACrC,uCAAuC,gEAAc;AACrD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAiB;AACxC,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAO;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA,cAAc,uEAAiB,oBAAoB,6DAAO;AAC1D;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,cAAc,uEAAiB;AAC/B,cAAc,6DAAO;AACrB,iBAAiB,6DAAO;AACxB,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,4BAA4B,qEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT,QAAQ,gEAAU;AAClB;AACA;AACA;AACA,SAAS;AACT,QAAQ,uEAAmB,GAAG,wBAAwB;AACtD,aAAa,uEAAiB;AAC9B,YAAY,uEAAmB,GAAG,sCAAsC;AACxE;AACA;AACA,QAAQ,8DAAQ;AAChB,YAAY,uEAAiB;AAC7B,YAAY,gEAAU,sBAAsB,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gEAAU;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA,iCAAiC,wBAAwB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB,qCAAqC,uEAAiB;AACzH;AACA;AACA;AACA,kCAAkC,uEAAiB;AACnD,gCAAgC,uEAAiB;AACjD;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE,iCAAiC;AACjC;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA,gCAAgC,uEAAiB;AACjD,YAAY,kEAAc;AAC1B;AACA;AACA;AACA,aAAa,uEAAiB;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,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA,iBAAiB,uEAAiB,kCAAkC,uEAAiB;AACrF,kBAAkB,uEAAiB,+BAA+B,uEAAiB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB,kBAAkB,uEAAiB;AACzE;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA,qCAAqC,aAAa;AAClD,qCAAqC,kBAAkB;AACvD,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,gCAAgC,sEAAoB;AACpD;AACA;AACA;AACA;AACA,4CAA4C,EAAE,IAAI,EAAE;AACpD;AACA,+CAA+C,EAAE,IAAI,EAAE;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;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,QAAQ,4DAAM,+BAA+B,uBAAuB;AACpE;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA,qCAAqC,uCAAuC;AAC5E;AACA;AACA,qCAAqC,SAAS,4CAA4C;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uCAAuC;AAChF;AACA;AACA,yCAAyC,aAAa;AACtD;AACA;AACA;AACA;AACA,yCAAyC,SAAS,4CAA4C;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAA6C;AAC9E,iCAAiC,iDAAiD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,MAAM;AACtB,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,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,qEAAmB;AAC/B,YAAY,0EAAsB;AAClC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA,cAAc,uEAAiB;AAC/B,iBAAiB,uEAAiB;AAClC,YAAY,4DAAM;AAClB,YAAY,4DAAM;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,wBAAwB,yCAAyC;AACjE;AACA;AACA,wBAAwB,iBAAiB;AACzC,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa,uEAAiB,sBAAsB,uEAAiB;AACrE;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kEAAgB;AACrD,4EAA4E,6CAA6C;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,kEAAgB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iEAAW;AACxC;AACA;AACA;AACA,kDAAkD,uEAAiB,uBAAuB,uEAAiB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,kEAAgB;AAC1D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,2BAA2B,uEAAiB;AAC7E;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB,wBAAwB,uEAAiB;AAC3F,gCAAgC,qEAAmB;AACnD,gCAAgC,qEAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA,iCAAiC,uEAAiB,+BAA+B,uEAAiB;AAClG;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC,wBAAwB,qEAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA,8CAA8C,kEAAgB;AAC9D,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sEAAoB;AACjD;AACA,6BAA6B,mDAAmD;AAChF,QAAQ,wEAAoB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA;AACA;AACA,iCAAiC,eAAe;AAChD,YAAY,oEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;AAC9C,6BAA6B,eAAe;AAC5C;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA,iCAAiC,SAAS,0BAA0B;AACpE;AACA;AACA,iCAAiC,SAAS,0BAA0B;AACpE;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,2BAA2B,uEAAiB;AACzE;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA,SAAS;AACT,QAAQ,gEAAU;AAClB;AACA,SAAS;AACT,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uEAAiB,qBAAqB,uEAAiB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAsB;AACrC,eAAe,sBAAsB;AACrC,iBAAiB;AACjB;AACA;AACA;AACA,uBAAuB;AACvB,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,yBAAyB,uEAAiB,mCAAmC,uEAAiB;AAC9F;AACA;AACA;AACA;AACA;AACA,yCAAyC,8BAA8B;AACvE;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,yCAAyC,kCAAkC;AAC3E;AACA;AACA,oBAAoB,qEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE,oBAAoB,oEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,8BAA8B;AACvE,oBAAoB,sEAAkB;AACtC;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA,yCAAyC,sEAAoB;AAC7D;AACA,yCAAyC,mDAAmD;AAC5F,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;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,8BAA8B,uEAAiB;AAC/C,gCAAgC,uEAAiB;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,gCAAgC,uEAAiB;AACj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AQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mBAAmB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,2BAA2B;AAC1C;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,QAAQ,iEAAW;AACnB;AACA;AACA,2BAA2B,6DAAO;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,aAAa,uEAAiB,mCAAmC,uEAAiB;AAClF;AACA;AACA,aAAa,uEAAiB,CAAC,6DAAO,+BAA+B,6DAAO;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,sBAAsB,gBAAgB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;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,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,sEAAoB;AACjD,kCAAkC,sEAAoB;AACtD;AACA;AACA;AACA,6BAA6B,qEAAqE;AAClG,6BAA6B,iEAAiE;AAC9F,6BAA6B,iEAAiE;AAC9F,6BAA6B,2EAA2E;AACxG;AACA;AACA;AACA;AACA,qCAAqC;AACrC,2BAA2B;AAC3B,wBAAwB,sDAAI;AAC5B,6BAA6B,uEAAuE;AACpG;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;AACA,gBAAgB,gEAAU,sBAAsB,kCAAkC;AAClF;AACA;AACA,YAAY,uEAAiB;AAC7B,YAAY,gEAAU,sBAAsB,yBAAyB;AACrE;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA,oEAAoE,wCAAwC;AAC5G;AACA;AACA,oEAAoE,iCAAiC;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,4BAA4B,qEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,QAAQ,gEAAU;AAClB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,uEAAmB,GAAG,0BAA0B;AAC5D;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,0BAA0B,sEAAoB;AAC9C;AACA,kDAAkD,iBAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA,yBAAyB;AACzB,4BAA4B,uEAAiB;AAC7C;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,gCAAgC,uEAAiB;AACjD,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,+CAA+C,EAAE,IAAI,EAAE;AACvD;AACA,iDAAiD,EAAE,IAAI,EAAE;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,aAAa;AAClD;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wCAAwC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,8DAAQ,sBAAsB,0EAAoB;AACpF;AACA;AACA,4DAA4D,0DAAQ;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0EAAsB;AAClC;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC,gBAAgB,oEAAgB;AAChC;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yCAAyC;AACjE;AACA;AACA,wBAAwB,yBAAyB;AACjD,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B,wBAAwB,kEAAY;AACpC;AACA;AACA;AACA;AACA;AACA,4BAA4B,yDAAK;AACjC;AACA;AACA;AACA,sBAAsB,kEAAgB,KAAK,2BAA2B,IAAI,wBAAwB;AAClG,uBAAuB,kEAAgB,KAAK,qBAAqB,IAAI,sBAAsB;AAC3F;AACA,sBAAsB,kEAAgB;AACtC;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,aAAa;AACb,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,aAAa;AACb,qBAAqB,kEAAgB;AACrC;AACA;AACA;AACA,SAAS;AACT,aAAa,kEAAgB;AAC7B,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,sDAAsD,kCAAkC;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA,qCAAqC,uEAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,QAAQ,qEAAiB;AACzB;AACA,YAAY,qEAAiB;AAC7B;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,gEAAU,sBAAsB,yBAAyB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,gEAAU,sBAAsB,wBAAwB;AACpE;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ,2BAA2B,0EAAoB;AAC9E;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ,+CAA+C,0DAAQ;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA,uDAAuD,gEAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ,sBAAsB,0EAAoB;AAC1E;AACA;AACA,kDAAkD,0DAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ,sBAAsB,0EAAoB;AAC9E;AACA;AACA,sDAAsD,0DAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ,uBAAuB,0EAAoB;AAC3E;AACA;AACA,wBAAwB,8DAAQ,+EAA+E,0DAAQ;AACvH;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,sDAAsD,4CAA4C;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,QAAQ,wEAAoB;AAC5B;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,gBAAgB,qEAAmB;AACnC;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;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,yBAAyB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6DAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,2DAAS;AACrD,oBAAoB,iEAAW;AAC/B,oBAAoB,gEAAU,uBAAuB,0BAA0B;AAC/E;AACA;AACA,oBAAoB,qEAAmB;AACvC;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,aAAa;AACb;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,0DAA0D;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,uEAAiB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,kEAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2CAA2C;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;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,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA,aAAa,kEAAgB;AAC7B,gCAAgC,4DAAM;AACtC,kCAAkC,gEAAc;AAChD;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,kEAAgB;AAChC;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,iCAAiC,YAAY;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,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,qCAAqC,uEAAiB,wBAAwB,uEAAiB;AAC/F,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,aAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uEAAiB;AACzD;AACA;AACA,uDAAuD,0BAA0B;AACjF;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,iDAAiD,kBAAkB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C,iDAAiD,mDAAmD;AACpG;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,iCAAiC,uEAAiB;AAClD,qDAAqD,YAAY;AACjE;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,iCAAiC,uEAAiB;AAClD,qDAAqD,YAAY;AACjE;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA,qDAAqD,cAAc;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,oDAAoD,6CAA6C;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uEAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA,aAAa,uEAAiB,iCAAiC,uEAAiB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uBAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,kCAAkC,uEAAiB;AAChF;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA,oBAAoB,uEAAiB,gBAAgB,uEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAQ;AACvB;AACA;AACA,eAAe,8DAAQ;AACvB;AACA;AACA,QAAQ,kEAAgB;AACxB,aAAa,kEAAgB;AAC7B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,iBAAiB,kEAAgB;AACjC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA,gCAAgC,uEAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,gEAAU,sBAAsB,kEAAkE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,oDAAoD;AAChH;AACA;AACA;AACA,qEAAqE,oDAAoD;AACzH;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,gBAAgB,uEAAiB;AACjC;AACA,SAAS;AACT,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA,uDAAuD,+BAA+B,oBAAoB;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,6CAA6C;AACrH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,uBAAuB,sEAAmB;AAC1C,QAAQ,gEAAU,iBAAiB,gGAAgG;AACnI,QAAQ,4DAAM;AACd;AACA;AACA;AACA,cAAc,uEAAiB,oBAAoB,uEAAiB;AACpE;AACA;AACA;AACA,cAAc,6DAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kEAAgB;AACjC,sCAAsC,8DAAY,IAAI,mEAAiB;AACvE;AACA;AACA;AACA;AACA;AACA,QAAQ,sEAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAgB;AACxB;AACA,YAAY,iEAAW;AACvB,YAAY,gEAAU,sBAAsB,0BAA0B;AACtE;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,gEAAU,sBAAsB,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;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,iEAAW;AACnB;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,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kEAAgB;AAC/C;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC,uEAAuE,0CAA0C;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,kEAAgB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,kEAAgB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,2DAAS;AACzD;AACA;AACA,gDAAgD,2DAAS;AACzD;AACA;AACA,oBAAoB,gEAAU,uBAAuB,yBAAyB;AAC9E,oBAAoB,gEAAU,uBAAuB,iDAAiD;AACtG,oBAAoB,8DAAQ;AAC5B,oBAAoB,kEAAgB;AACpC,0GAA0G,kEAAgB;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB,uBAAuB,uEAAiB,YAAY,uEAAiB;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA,wFAAwF,gEAAU;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kEAAgB;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,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,iBAAiB;AAChC,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA,oBAAoB,qEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,8BAA8B;AACvE;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE,yCAAyC,sEAAoB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA,oBAAoB,uEAAiB,gCAAgC,uCAAuC;AAC5G;AACA,oBAAoB,wEAAoB;AACxC,yBAAyB,uEAAiB,mCAAmC,uEAAiB;AAC9F;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qDAAqD;AACtG;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,oBAAoB,wEAAoB;AACxC,oBAAoB,qEAAiB;AACrC,yBAAyB,uEAAiB,mCAAmC,uEAAiB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,8EAA8E;AAC3H;AACA;AACA,6CAA6C,gBAAgB;AAC7D;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;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG,6HAA6H;AAChJ;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;;AAEA;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,oEAAoE,mBAAmB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAqB;AACpC,eAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,0EAAsB;AAClC;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;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,aAAa,uEAAiB,CAAC,6DAAO,+BAA+B,6DAAO;AAC5E;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,wBAAwB,sDAAI;AAC5B,6BAA6B,uEAAuE;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA,6BAA6B,yEAAyE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wEAAoB;AAC5B,aAAa,uEAAiB,mCAAmC,uEAAiB;AAClF;AACA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,YAAY,kEAAc;AAC1B,iCAAiC,cAAc;AAC/C;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA,qCAAqC,aAAa;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,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,QAAQ,gEAAU,sBAAsB,sDAAsD;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,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,gCAAgC;AAChC;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,iEAAW;AACnB,QAAQ,8DAAQ;AAChB,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA,wBAAwB,oEAAgB;AACxC;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,iCAAiC,4DAAM;AACvC,mCAAmC,gEAAc;AACjD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ,sBAAsB,0EAAoB;AAC9E;AACA;AACA,sDAAsD,0DAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,sEAAoB;AAC9C,kDAAkD,iBAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ,sBAAsB,0EAAoB;AAC9E;AACA;AACA,sDAAsD,0DAAQ;AAC9D;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8DAAQ;AAC3B;AACA;AACA,mBAAmB,8DAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA,2BAA2B,mEAAa,UAAU,+BAA+B,mBAAmB;AACpG;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU,iBAAiB,+EAA+E;AAClH,QAAQ,4DAAM;AACd;AACA,4BAA4B;AAC5B,wBAAwB,kEAAY;AACpC;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,gEAAU,sBAAsB,sCAAsC;AACtF;AACA;AACA;AACA;AACA,uCAAuC,mEAAa;AACpD;AACA,6BAA6B,oEAAoE;AACjG,iBAAiB;AACjB,qBAAqB,uEAAiB;AACtC;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,oBAAoB,4DAAM;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,+CAA+C,2DAAS;AACxD;AACA;AACA,+CAA+C,2DAAS;AACxD;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,gEAAU,uBAAuB,yBAAyB;AAC1E,gBAAgB,gEAAU,uBAAuB,iDAAiD;AAClG,gBAAgB,kEAAgB;AAChC;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B;AACA;AACA;AACA,cAAc,6DAAO;AACrB,4CAA4C,uEAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kEAAgB;AACjC,yFAAyF,8DAAY,IAAI,mEAAiB;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,6BAA6B,mEAAa;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,yDAAK;AACpC;AACA;AACA;AACA,uBAAuB,kEAAgB,KAAK,qBAAqB,IAAI,sBAAsB;AAC3F,sBAAsB,kEAAgB;AACtC,sBAAsB,kEAAgB,KAAK,2BAA2B,IAAI,wBAAwB;AAClG;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,qBAAqB,kEAAgB;AACrC,6CAA6C,4DAAM;AACnD,2CAA2C,gEAAc;AACzD;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,qBAAqB,kEAAgB;AACrC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,aAAa,kEAAgB;AAC7B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,iBAAiB,kEAAgB;AACjC,gBAAgB,kEAAgB;AAChC,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;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,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+BAA+B;AAChE;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA,iCAAiC,yDAAyD;AAC1F;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,wCAAwC,6DAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C,aAAa,uEAAiB;AAC9B;AACA;AACA,gCAAgC,kBAAkB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,gEAAU,sBAAsB,kEAAkE;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA,aAAa,uEAAiB;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;AACA;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,uEAAiB;AACjC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,2DAAS;AAC/C;AACA,YAAY,gEAAU,sBAAsB,0BAA0B;AACtE;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA,iCAAiC,mCAAmC;AACpE;AACA;AACA,iCAAiC,mCAAmC;AACpE;AACA;AACA;AACA,wCAAwC,uEAAiB;AACzD;AACA;AACA,uDAAuD,0BAA0B;AACjF;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C,iDAAiD,mDAAmD;AACpG;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,qDAAqD,YAAY;AACjE;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA,iDAAiD,kBAAkB;AACnE;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,qDAAqD,cAAc;AACnE;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,qDAAqD,YAAY;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iCAAiC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA,aAAa,uEAAiB,uBAAuB,uEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uEAAiB;AAClE,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA,aAAa;AACb;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA,aAAa;AACb;AACA,gCAAgC,uEAAiB;AACjD,YAAY,kEAAc;AAC1B;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA,oBAAoB,uEAAiB,gBAAgB,uEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uEAAiB;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,oBAAoB,8DAAQ;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,eAAe,qBAAqB;AACpC,eAAe,qBAAqB;AACpC,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAc;AAClC;AACA,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sEAAkB;AACtC;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,oBAAoB,qEAAiB;AACrC;AACA,wBAAwB,qEAAiB;AACzC;AACA;AACA;AACA,yCAAyC,sEAAoB;AAC7D;AACA,yCAAyC,mDAAmD;AAC5F,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,4BAA4B,kEAAc;AAC1C;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA,oBAAoB,oEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,yBAAyB,uEAAiB,mCAAmC,uEAAiB;AAC9F;AACA;AACA;AACA;AACA,oBAAoB,qEAAiB;AACrC;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,oBAAoB,qEAAiB;AACrC,yBAAyB,uEAAiB,mCAAmC,uEAAiB;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,4EAA4E;AACzH;AACA;AACA,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,wBAAwB,kEAAc;AACtC;AACA;AACA;AACA;AACA,4BAA4B,kEAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,uEAAiB;AAClF;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG,6HAA6H;AAChJ;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;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,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,wBAAwB,sDAAI;AAC5B;AACA,wBAAwB,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA,2CAA2C,sCAAsC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4BAA4B;AACxD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;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,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA,oEAAoE,0BAA0B;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,gCAAgC,gBAAgB;AAChD;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,gCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iCAAiC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,mBAAmB;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,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,YAAY;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAQ,SAAS,0EAAoB;AAC1D;AACA;AACA,qBAAqB,8DAAQ,mEAAmE,0DAAQ;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;;AAEkK;;;;;;;;;;;;;;;;;;;;;AC/tctG;;AAE5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gEAAQ;AACrC;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;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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,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,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,yBAAyB,iBAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,oBAAoB;AAC/C;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,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wBAAwB;AACvC,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,+BAA+B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,wBAAwB,+BAA+B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uBAAuB;AACtC,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,eAAe,uBAAuB;AACtC,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,iBAAiB;AACjB;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,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,cAAc;AACd;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,YAAY;AACpD;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,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,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+EAAuB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,gBAAgB;AAC/B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;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,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAyB;AACxC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,iBAAiB;AACjB;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,wCAAwC,gCAAgC;AACxE;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;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,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA,wBAAwB,wEAAwE;AAChG;AACA;AACA;AACA;AACA,8CAA8C;AAC9C,2CAA2C;AAC3C,mEAAmE;AACnE,mEAAmE;AACnE,wDAAwD;AACxD,4DAA4D;AAC5D,kEAAkE;AAClE,6DAA6D;AAC7D,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA,YAAY,iEAAS;AACrB;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,wBAAwB,YAAY;AACpC;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,wBAAwB,SAAS;AACjC;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB;AACjD,eAAe,kBAAkB;AACjC,eAAe,UAAU;AACzB;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,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEyG;;;;;;;;;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2hB,OAA7B,CAAb;AACH;;AACD,SAAO+/C,QAAP;AACH,CApBuC,EAAxC;AAsBA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1/KmH;;AAEnH,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC,+BAA+B;AAC/B,YAAY;AACZ,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC,+BAA+B;AAC/B,YAAY;AACZ,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,6BAA6B;AAC7B;AACA,yCAAyC;AACzC,+BAA+B;AAC/B,YAAY;AACZ,IAAI;AACJ;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,oEAAc;AACtB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;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,CAAC,oDAAoD;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,CAAC,8CAA8C;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,CAAC,kDAAkD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;AAErC;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,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,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,qBAAqB;AACrB,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;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;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,sBAAsB;AAClE;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,CAAC,kCAAkC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,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;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,mEAAiB,eAAe,mEAAiB;AACzD,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;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,oBAAoB,wBAAwB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wBAAwB;AAC5C;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,wBAAwB,oBAAoB;AAC5C;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;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;AACA,0DAA0D;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA,gBAAgB,uBAAuB;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,kBAAkB,mEAAa;AAC/B;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,wCAAwC,cAAc,YAAY,iBAAiB;AACnF,SAAS;AACT,+CAA+C,iCAAiC,sBAAsB;AACtG;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;;AAEA;AACA;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;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB,qBAAqB;AACrB,uBAAuB;AACvB,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,YAAY;AAC/D,oDAAoD,qBAAqB;AACzE,sDAAsD,sBAAsB;AAC5E,uDAAuD,+BAA+B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE,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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC,mCAAmC;AACnC;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA,uBAAuB;AACvB,6BAA6B;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;AACA;AACA;AACA;AACA;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;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,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,gCAAgC,0BAA0B;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,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,wBAAwB;AACxB,yBAAyB;AACzB,2BAA2B;AAC3B,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;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,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,iDAAiD,gBAAgB;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,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,4CAA4C;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,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,iBAAiB;AACjB;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;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;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,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,uCAAuC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,uCAAuC;AACjF;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,yBAAyB;AACnE;AACA;AACA;AACA,sCAAsC,eAAe;AACrD;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,qEAAqE;AAC/G;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C,0CAA0C,qEAAqE;AAC/G;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA;AACA,yBAAyB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,IAAI,mCAAmC;AACtF,UAAU,mCAAmC,IAAI,4CAA4C;AAC7F,UAAU,4CAA4C,IAAI,oCAAoC;AAC9F,UAAU,oCAAoC,IAAI;AAClD;AACA,qBAAqB,oBAAoB,IAAI,6BAA6B,IAAI,qBAAqB,IAAI,YAAY;AACnH;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,0DAA0D,YAAY;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,gCAAgC,0BAA0B;AAC1D;AACA;AACA,gCAAgC,0CAA0C;AAC1E;AACA;AACA,gCAAgC,2CAA2C;AAC3E;AACA;AACA,gCAAgC,2CAA2C;AAC3E;AACA;AACA,gCAAgC,0EAA0E;AAC1G;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC,oCAAoC,kFAAkF;AACtH;AACA;AACA;AACA;AACA,gCAAgC,0DAA0D;AAC1F;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA,iCAAiC;AACjC;AACA,iCAAiC;AACjC,oCAAoC,kEAAkE;AACtG;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,mDAAmD,YAAY;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,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;AACA;AACA;AACA;AACA;AACA;AACA,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,YAAY;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,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4BAA4B;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;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,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,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2BAA2B,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;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;;AAEf;AACA;AACA;;AAEA,YAAY,WAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,8BAA8B;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,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;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;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,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,gDAAgD;AAChD;AACA,mDAAmD;AACnD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wDAAwD;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,4DAA4D,CAAc;AAC1E;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,oBAAoB,2BAA2B;AAC/C;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,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;AACA;AACA;AACA;AACA;AACA;AACA;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;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gBAAgB;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,YAAY;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;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,oBAAoB,iBAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4CAA4C;AAC1E;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,gDAAgD,QAAQ;AACxD;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,aAAa;AACb;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,kBAAkB;AAClB,gBAAgB;AAChB,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gBAAgB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gBAAgB;AACpE;AACA;AACA,uEAAuE,oCAAoC;AAC3G;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,6DAA6D,YAAY;AACzE;AACA;AACA,6DAA6D,oBAAoB;AACjF;AACA;AACA,6DAA6D,gBAAgB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,oBAAoB;AACjF;AACA;AACA,6DAA6D,4BAA4B;AACzF;AACA;AACA,6DAA6D,wBAAwB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,gBAAgB;AAC7E;AACA;AACA,6DAA6D,wBAAwB;AACrF;AACA;AACA,6DAA6D,oBAAoB;AACjF;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAE+wC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvjJl0B;AAC9X;AACF;AACwC;AAC7D;AACS;AACV;;AAEvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,aAAa,eAAe;AAC5B,YAAY,SAAS;AACrB;AACA,aAAa,UAAU;AACvB,WAAW,QAAQ;AACnB,aAAa,SAAS;AACtB;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;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,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,eAAe;AAC1B,WAAW,YAAY;AACvB,WAAW,SAAS;AACpB,aAAa,kBAAkB;AAC/B;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB,SAAS;AAClC;AACA;AACA,+CAA+C,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,YAAY,QAAQ;AACpB,YAAY,SAAS;AACrB,YAAY,gBAAgB;AAC5B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA,wBAAwB,2DAA2D;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,aAAa;AACzB,aAAa;AACb;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,mBAAmB;AAClC,eAAe,sBAAsB;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,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,0BAA0B;AAClF;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8DAAQ;AAC5C,yBAAyB,uEAAiB,qCAAqC,8DAAQ;AACvF,gCAAgC,8DAAQ;AACxC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,8DAAQ;AAChD,6BAA6B,uEAAiB,gBAAgB,uEAAiB;AAC/E,oCAAoC,8DAAQ;AAC5C;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qDAAqD,8DAAQ;AAC7D,oCAAoC,8DAAQ;AAC5C;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,2EAAyB;AAChD,uBAAuB,2EAAyB;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,iCAAiC,+DAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6DAAO,CAAC,4DAAM;AAC/C;AACA;AACA,iCAAiC,6DAAO;AACxC;AACA;AACA;AACA,kDAAkD;AAClD;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,sCAAsC,sDAAI,yBAAyB;AACnE;AACA;AACA;AACA;AACA,gCAAgC,sDAAI;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,8BAA8B,iFAA8B;AAC5D,iCAAiC,UAAU,+BAA+B;AAC1E;AACA;AACA;AACA;AACA,mBAAmB,uEAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA,uBAAuB;AACvB;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,0BAA0B,uEAAiB;AAC3C,iCAAiC,uEAAiB;AAClD,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA,kCAAkC,uEAAiB;AACnD;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,eAAe,0DAA0D;AACzE,eAAe,oBAAoB;AACnC,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,0CAA0C,6DAAW;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,0CAA0C,6DAAW;AACrD;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAW,8BAA8B,uDAAK;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mFAAgC;AACnD;AACA,eAAe,kFAA+B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAiB;AACnD;AACA,4BAA4B,iCAAiC;AAC7D;AACA,wBAAwB,uEAAiB;AACzC,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,iBAAiB,OAAO;AACxB;AACA;AACA,6DAA6D,uDAAK;AAClE;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB;AACjB;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA,iCAAiC,4DAAM;AACvC;AACA,kCAAkC,+EAA4B;AAC9D;AACA;AACA,oCAAoC,wBAAwB;AAC5D,iDAAiD,mDAAmD;AACpG;AACA;AACA;AACA;AACA;AACA,kCAAkC,+EAA4B;AAC9D;AACA;AACA,oCAAoC,wBAAwB;AAC5D,iDAAiD,mDAAmD;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B,eAAe,oBAAoB;AACnC,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2EAAwB;AACrD;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6DAAW,8BAA8B,uDAAK;AAC9D;AACA;AACA,eAAe,sEAAmB;AAClC;AACA;AACA,sBAAsB,uEAAiB;AACvC,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA,iDAAiD;AACjD,UAAU,IAAI,UAAU;AACxB,eAAe,4DAAM,GAAG;AACxB;AACA;AACA,aAAa,uEAAiB;AAC9B,gBAAgB,uEAAiB;AACjC,sEAAsE,0CAA0C;AAChH,qBAAqB,uEAAiB;AACtC;AACA;AACA,qBAAqB,uEAAiB,8BAA8B,uEAAiB;AACrF,oBAAoB,6DAAO;AAC3B;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,oBAAoB;AACnC,iBAAiB,aAAa;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,2EAAwB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAW,8BAA8B,uDAAK;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC,mBAAmB,iFAA8B;AACjD;AACA;AACA,mBAAmB,iFAA8B;AACjD;AACA;AACA;AACA,qBAAqB;AACrB,wBAAwB,EAAE,uEAAiB,8BAA8B;AACzE,iBAAiB,uEAAiB;AAClC;AACA;AACA,gDAAgD,uEAAiB;AACjE,oBAAoB,uEAAiB,CAAC,8DAAQ;AAC9C;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,QAAQ,uEAAiB,4BAA4B,YAAY;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yEAAsB,aAAa,sEAAmB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,2BAA2B;AAC1C,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,QAAQ;AACvB,iBAAiB;AACjB;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,eAAe,0DAA0D;AACzE,eAAe,oBAAoB;AACnC,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;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,eAAe,mBAAmB;AAClC,eAAe,mBAAmB;AAClC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uEAAiB;AACxD;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB;AACA,iBAAiB;AACjB;AACA;AACA,gDAAgD,iDAAiD,mBAAmB;AACpH;AACA;AACA,4BAA4B;AAC5B,yBAAyB,kEAAY;AACrC;AACA,qCAAqC,uEAAiB;AACtD,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAiB;AAC1D;AACA;AACA;AACA;AACA,0BAA0B,2EAAwB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,oBAAoB,2EAAwB;AAC5C;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA,gDAAgD,iGAAiG;AACjJ,oDAAoD,8DAAQ;AAC5D;AACA;AACA;AACA;AACA;AACA,iDAAiD,6DAAO,CAAC,4DAAM,kDAAkD,6DAAO;AACxH;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,mEAAmE,8DAAQ;AAC3E;AACA,qCAAqC,uCAAuC;AAC5E;AACA;AACA,6CAA6C,uEAAiB;AAC9D;AACA;AACA;AACA;AACA,+CAA+C,yBAAyB;AACxE;AACA,gCAAgC,uEAAiB;AACjD,iBAAiB,uEAAiB;AAClC;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,oBAAoB,uEAAiB;AACvE,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA,gCAAgC,0BAA0B;AAC1D;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,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,gBAAgB,kBAAkB;AAClC,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA,yBAAyB,uEAAiB,UAAU,8DAAQ;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,iBAAiB,uEAAiB;AAClC;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG,uDAAuD;AACzE;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,eAAe,mBAAmB;AAClC,eAAe,sBAAsB;AACrC;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,oCAAoC;AACpC,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,0CAA0C,uBAAuB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAAS;AACzB;AACA;AACA,gBAAgB,+DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uEAAiB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAiB;AACnD,YAAY,uEAAiB,kBAAkB,uEAAiB;AAChE,aAAa,uEAAiB;AAC9B,oDAAoD,6DAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC,iBAAiB,uEAAiB;AAClC,wDAAwD,6DAAW;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB,wCAAwC,uEAAiB;AAClG;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wEAAoB;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,QAAQ,sEAAkB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAgB;AACxB;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6DAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA,gBAAgB,uEAAiB;AACjC,qCAAqC,YAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4EAA4E,uEAAiB;AAC7F,sCAAsC,uEAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uEAAiB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;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,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,0BAA0B,6DAAO;AACjC;AACA,YAAY,kEAAgB;AAC5B;AACA,aAAa,kEAAgB;AAC7B,sCAAsC,gEAAc;AACpD;AACA,aAAa;AACb;AACA;AACA,sCAAsC,gEAAc;AACpD;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B;AACA,+CAA+C,6DAAO;AACtD;AACA,YAAY,qEAAmB;AAC/B;AACA,aAAa,kEAAgB;AAC7B;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAiB;AACnD,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,mEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,YAAY,uEAAiB;AAC7B,kCAAkC,kEAAgB,KAAK,uEAAiB;AACxE,iBAAiB,uEAAiB;AAClC,YAAY,8DAAQ;AACpB,YAAY,qEAAa;AACzB;AACA,uBAAuB,kEAAgB;AACvC,aAAa;AACb,YAAY,mEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,gBAAgB,uEAAiB,iBAAiB,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE;AACA;AACA,2BAA2B,uEAAiB;AAC5C,iBAAiB,uEAAiB;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,gBAAgB,uEAAiB,iBAAiB,uEAAiB;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,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAiB,mBAAmB,6DAAO;AAC1D,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,kEAAgB;AACxD,kCAAkC,8DAAY,IAAI,mEAAiB;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAAiB;AACjE;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,kCAAkC,uEAAiB;AACnD;AACA,mCAAmC,uEAAiB;AACpD;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC,YAAY,4DAAM;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,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA,mCAAmC,uEAAiB,+BAA+B,uEAAiB;AACpG;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA,YAAY,mEAAiB;AAC7B;AACA,gBAAgB,gEAAU,yBAAyB,uCAAuC;AAC1F,gBAAgB,gEAAU,yBAAyB,yFAAyF;AAC5I;AACA;AACA;AACA,iCAAiC,uEAAiB,qBAAqB,uEAAiB;AACxF,YAAY,gEAAU,yBAAyB,sFAAsF;AACrI;AACA,sCAAsC,uEAAiB,qBAAqB,uEAAiB;AAC7F,YAAY,gEAAU,yBAAyB,kFAAkF;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,iEAAiE,sCAAsC;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,wBAAwB,8DAAQ;AAChC,uBAAuB,8DAAQ;AAC/B;AACA,sBAAsB,uEAAiB;AACvC,aAAa,iEAAW;AACxB,qBAAqB,uEAAiB;AACtC,aAAa,iEAAW;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,eAAe,yCAAyC;AACxD,iBAAiB;AACjB;AACA;AACA;AACA;AACA,6BAA6B,gEAAgE;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA,qBAAqB;AACrB;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,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;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,oEAAoE,uEAAiB,qBAAqB,uEAAiB;AAC3H,wBAAwB,gEAAU,yBAAyB,sFAAsF;AACjJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uDAAK;AAC7F;AACA;AACA,6CAA6C,6DAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,uDAAK;AAC7F;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAyB;AACxC,eAAe,OAAO;AACtB,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB,wCAAwC,uEAAiB;AAC/F;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,yBAAyB,cAAc;AACvC;AACA,aAAa;AACb;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA,kCAAkC,qEAAiB;AACnD;AACA;AACA;AACA,8BAA8B;AAC9B,aAAa;AACb,iBAAiB,uEAAiB;AAClC;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,YAAY,4DAAM;AAClB,YAAY,6DAAO;AACnB,YAAY,gEAAU;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iBAAiB,kEAAgB;AACjC,gBAAgB,kEAAgB;AAChC;AACA;AACA,iBAAiB,kEAAgB;AACjC,2CAA2C,gEAAc;AACzD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,2CAA2C,gEAAc;AACzD;AACA;AACA;AACA,iBAAiB;AACjB;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB,IAAI,mEAAiB;AACjD;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,qCAAqC,uEAAiB;AACtD;AACA;AACA;AACA;AACA,qCAAqC,uEAAiB;AACtD;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,gEAAU,cAAc,+EAA+E;AACvH;AACA;AACA;AACA;AACA;AACA,6DAA6D,6DAAW;AACxE,uCAAuC,uEAAiB;AACxD;AACA,4DAA4D,OAAO,uEAAiB,0IAA0I;AAC9N;AACA,yFAAyF,2DAAS;AAClG;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,gDAAgD,uEAAiB;AACjE,oDAAoD,6DAAW;AAC/D,6BAA6B,uEAAiB,sBAAsB,uEAAiB;AACrF;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA,qBAAqB,8DAAQ;AAC7B,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;AACA;AACA;AACA;AACA;AACA,iCAAiC,wEAAwE;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,mCAAmC,gEAAU;AAC7C;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yGAAyG;AACzG,+CAA+C,gEAAU;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB,wBAAwB,uEAAiB;AAC/E;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA,oDAAoD;AACpD;AACA,wBAAwB,gEAAU,2BAA2B,iBAAiB,UAAU,QAAQ,WAAW,GAAG;AAC9G,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA,wBAAwB,kEAAgB;AACxC,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA,gFAAgF,oCAAoC;AACpH;AACA,oBAAoB,kEAAgB;AACpC;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,0BAA0B,0EAA0E;AAC9H;AACA;AACA,gBAAgB,8DAAQ;AACxB,kCAAkC;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA,6BAA6B,uEAAiB;AAC9C,4BAA4B,8DAAQ;AACpC;AACA;AACA,6BAA6B,uEAAiB;AAC9C,oDAAoD,2DAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa,kEAAgB,KAAK,kEAAgB;AAClD,4BAA4B,iEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yDAAK;AACjC;AACA,gEAAgE,sBAAsB;AACtF,kEAAkE,wBAAwB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,qEAAmB;AACnC,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB,sBAAsB,uEAAiB;AAC7E,oBAAoB,gEAAU,0BAA0B,uFAAuF;AAC/I;AACA,0BAA0B,uEAAiB,sBAAsB,uEAAiB;AAClF,oBAAoB,gEAAU,0BAA0B,mFAAmF;AAC3I;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA,aAAa;AACb;AACA,qBAAqB,kEAAgB;AACrC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,0DAA0D,uEAAiB;AAC3E,8CAA8C,uEAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,+CAA+C,uEAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,iDAAiD,uEAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2FAA2F,uEAAiB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,0DAA0D,gEAAU;AACpE;AACA;AACA,gGAAgG,gEAAU;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,wCAAwC;AACxH;AACA,YAAY,qEAAmB;AAC/B;AACA,YAAY,kEAAgB;AAC5B,YAAY,iEAAW;AACvB;AACA;AACA,iBAAiB,kEAAgB;AACjC;AACA;AACA,oBAAoB,qEAAmB;AACvC;AACA;AACA;AACA,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA,QAAQ,gEAAU,yBAAyB,0BAA0B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,iBAAiB,uEAAiB;AAClC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,2DAAS;AACrD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,8DAA8D,SAAS,kCAAkC;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB,CAAC,6DAAO,+BAA+B,6DAAO;AAC5E;AACA;AACA,4BAA4B,qEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT,QAAQ,6DAAO;AACf;AACA;AACA;AACA,kDAAkD,gEAAU;AAC5D;AACA,QAAQ,wEAAoB;AAC5B,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,qFAAqF,iEAAW;AAChG;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,gDAAgD,uEAAiB;AAC/F;AACA,YAAY,gEAAU,sBAAsB,yCAAyC;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,6BAA6B,6DAAO,CAAC,4DAAM;AAC3C;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA,8CAA8C;AAC9C;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,6BAA6B,6DAAO,CAAC,4DAAM;AAC3C;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA,8CAA8C;AAC9C;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,uCAAuC,kEAAgB;AACvD,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,mCAAmC,uEAAiB;AACpD,oEAAoE,6DAAW;AAC/E;AACA,wCAAwC;AACxC;AACA;AACA,4EAA4E,uEAAiB;AAC7F,0EAA0E,uEAAiB;AAC3F;AACA;AACA;AACA,0DAA0D,uEAAiB;AAC3E,wCAAwC;AACxC;AACA;AACA,0DAA0D,uEAAiB;AAC3E;AACA,kBAAkB,gDAAgD;AAClE;AACA;AACA;AACA;AACA,gDAAgD,uEAAiB,YAAY,uEAAiB;AAC9F,8CAA8C,6DAAW;AACzD;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,kEAAgB;AAC5B;AACA,eAAe,uEAAiB,YAAY,uEAAiB;AAC7D,8CAA8C,6DAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gDAAgD;AAC7E;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,mBAAmB;AAClC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA,wBAAwB,wEAAoB;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,qEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,6DAAW;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,6DAAW;AAC7F;AACA,iDAAiD,uEAAiB;AAClE;AACA,uGAAuG,2DAAS;AAChH;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,yDAAyD,kBAAkB,GAAG;AAC9E;AACA,yDAAyD,6DAAW;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mFAAmF,6DAAW;AAC9F;AACA,iDAAiD,uEAAiB;AAClE;AACA,uGAAuG,2DAAS;AAChH;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,yDAAyD,6DAAW;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,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,oBAAoB,qEAAiB;AACrC,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;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,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,QAAQ,qEAAiB;AACzB;AACA,YAAY,qEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,6DAA6D,6DAAW;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,gBAAgB,iEAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,aAAa,uEAAiB,iBAAiB,uEAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,kEAAc;AAC9B;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kEAAgB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA,QAAQ,wEAAoB;AAC5B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,wEAAoB;AAC5B;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,4BAA4B,sBAAsB;AAClD;AACA;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA,YAAY,4DAAM;AAClB;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,2CAA2C,6DAAW;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;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,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,iBAAiB;AACjB;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA,2BAA2B,4DAAM;AACjC,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA,0DAA0D,SAAS,iCAAiC;AACpG;AACA;AACA,wBAAwB,qEAAiB;AACzC;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,oDAAoD,oBAAoB;AACxE;AACA,gDAAgD,+BAA+B;AAC/E;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA,8DAA8D,6DAAW;AACzE;AACA;AACA;AACA;AACA;AACA,oEAAoE,2CAA2C;AAC/G;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4DAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,gBAAgB,oBAAoB;AACrE;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C,aAAa,uEAAiB;AAC9B;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA,QAAQ,6DAAO;AACf,6BAA6B,2DAAO;AACpC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,+DAA+D,8CAA8C;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,6DAAW;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA,oCAAoC,0BAA0B;AAC9D;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2EAAyB;AAClD,oBAAoB,2EAAyB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,0BAA0B,6DAAO;AACjC;AACA,YAAY,kEAAgB;AAC5B;AACA,kCAAkC,gEAAc;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC,gEAAc;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,kCAAkC,gEAAc;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,0BAA0B,6DAAO;AACjC;AACA,YAAY,qEAAmB;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,YAAY,8DAAQ;AACpB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,8DAAY,IAAI,mEAAiB;AAC9C;AACA;AACA;AACA,2CAA2C,uEAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4DAAM;AACxC,YAAY,8DAAQ;AACpB,YAAY,iEAAW;AACvB;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B,oBAAoB,iEAAW;AAC/B,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA,YAAY,8DAAQ;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;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,8DAAQ;AAC5B;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,iEAAW;AAC/B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,gBAAgB,iEAAW;AAC3B;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,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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,2BAA2B,OAAO,gCAAgC,OAAO;AACxG,4BAA4B,sDAAI;AAChC;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA,+DAA+D,MAAM;AACrE;AACA,YAAY,4DAAM;AAClB;AACA,gCAAgC,4DAAM;AACtC;AACA,iBAAiB,uEAAiB;AAClC;AACA,wCAAwC,CAAC,uEAAiB,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,gCAAgC,+DAAS;AACzC,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;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,MAAM,mDAAmD,MAAM;AACpG;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAQ;AACvB;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,iBAAiB,4DAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA,QAAQ,6DAAO;AACf;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,QAAQ,8DAAQ;AAChB,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD;AAChD,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA,kBAAkB,6DAAO;AACzB,yBAAyB,uEAAiB;AAC1C,+BAA+B,uEAAc,6BAA6B,sBAAsB;AAChG;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAO;AACnC,aAAa,uEAAiB;AAC9B;AACA,+BAA+B,4DAAM;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,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6DAAO;AACxC;AACA,mDAAmD,qDAAqD,gBAAgB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA;AACA,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA,qDAAqD,uEAAiB;AACtE,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wEAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC,yCAAyC,8BAA8B;AACvE;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,oBAAoB;AACpD;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,yCAAyC,eAAe;AACxD;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,yCAAyC,6CAA6C;AACtF;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,mCAAmC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kCAAkC;AAC3E,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA,gBAAgB,8DAAQ;AACxB;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,4BAA4B,2BAA2B;AACvD;AACA,2BAA2B,8DAAQ;AACnC,qBAAqB,uEAAiB,wBAAwB,uEAAiB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,YAAY;AAC1D;AACA,yBAAyB,8DAAQ;AACjC;AACA;AACA;AACA,yDAAyD,uEAAiB,CAAC,8DAAQ;AACnF;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,6DAAW,KAAK,uEAAiB,CAAC,8DAAQ;AACjG;AACA;AACA,8CAA8C,8DAAQ;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE;AACA;AACA;AACA,2BAA2B,iEAAQ;AACnC;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,qBAAqB;AACrB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6DAAO;AACvB,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,uBAAuB,yBAAyB;AAC1E;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,+BAA+B,6DAAO;AACtC;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA,kCAAkC;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gEAAU;AACpC;AACA;AACA;AACA,0BAA0B,gEAAU;AACpC;AACA;AACA;AACA,0BAA0B,gEAAU;AACpC;AACA;AACA;AACA,0BAA0B,gEAAU;AACpC;AACA;AACA;AACA,sBAAsB,gEAAU;AAChC;AACA;AACA;AACA;AACA;AACA,gCAAgC,yDAAK;AACrC;AACA;AACA,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA,iBAAiB;AACjB;AACA,oBAAoB,kEAAgB;AACpC;AACA,iBAAiB;AACjB;AACA,yBAAyB,kEAAgB;AACzC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,wCAAwC,gEAAU;AAClD;AACA;AACA;AACA,qBAAqB,gEAAU;AAC/B;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,gEAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B,uBAAuB,6DAAO;AAC9B,uBAAuB,6DAAO;AAC9B,uBAAuB,6DAAO;AAC9B;AACA,aAAa,6DAAO,+BAA+B,6DAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,YAAY,iEAAW;AACvB;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;AACA,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAgB;AACxB;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,gBAAgB,iEAAW;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,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6DAAW;AACzD,4BAA4B,eAAe;AAC3C,yDAAyD,uEAAiB,CAAC,8DAAQ;AACnF;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA,6DAA6D,SAAS;AACtE,sDAAsD,uEAAiB,CAAC,8DAAQ;AAChF;AACA;AACA,iBAAiB,uEAAiB,CAAC,8DAAQ,oDAAoD,uEAAiB,CAAC,8DAAQ;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,WAAW;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8DAAQ;AAC7B;AACA;AACA,qCAAqC,aAAa;AAClD;AACA,mCAAmC,8DAAQ;AAC3C;AACA;AACA,mCAAmC,8DAAQ;AAC3C;AACA,gBAAgB,kEAAc;AAC9B,qCAAqC,oBAAoB;AACzD;AACA;AACA,gBAAgB,gEAAU,sBAAsB,qCAAqC;AACrF,gBAAgB,gEAAU,sBAAsB,wCAAwC;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,qBAAqB,8DAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;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,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,iEAAW;AACvB;AACA;AACA,4BAA4B,+DAAS;AACrC,4BAA4B,sBAAsB;AAClD;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B;AACA;AACA,gBAAgB,oEAAgB;AAChC;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,kBAAkB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD,4BAA4B,sBAAsB;AAClD,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,4DAAM;AAClB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,4DAA4D,YAAY;AACxE,6BAA6B,8DAAQ;AACrC,qBAAqB,uEAAiB,wBAAwB,uEAAiB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,6CAA6C,YAAY;AACzD,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA,0DAA0D,uEAAiB,CAAC,8DAAQ;AACpF,oCAAoC,8DAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA,uDAAuD,6DAAW,KAAK,uEAAiB,CAAC,8DAAQ;AACjG;AACA,sDAAsD,8DAAQ;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,6BAA6B,uBAAuB;AACpD,wBAAwB,8BAA8B;AACtD,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,qDAAqD,SAAS;AAC9D;AACA,uBAAuB,8DAAQ;AAC/B;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;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,iEAAW;AAC3B;AACA;AACA,QAAQ,kEAAc;AACtB;AACA,iCAAiC,YAAY;AAC7C;AACA;AACA,iCAAiC,iBAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,SAAS;AACT,uDAAuD,yBAAyB;AAChF,qDAAqD,qCAAqC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,iEAAW;AACvB;AACA,uDAAuD,yBAAyB;AAChF;AACA;AACA;AACA;AACA,uCAAuC,wCAAwC;AAC/E;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA,eAAe,6DAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA,YAAY,4DAAM;AAClB;AACA,QAAQ,4DAAM;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,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA,iCAAiC,WAAW;AAC5C;AACA;AACA,6BAA6B,YAAY;AACzC;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+DAAS;AAClC;AACA;AACA,gCAAgC,eAAe;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,2CAA2C;AAC3C;AACA;AACA,gBAAgB,4DAAM;AACtB,gBAAgB,8DAAQ;AACxB,gBAAgB,6DAAO;AACvB;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,4BAA4B,sDAAI;AAChC;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,2CAA2C;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4DAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,mBAAmB;AAClC,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,qEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA,oBAAoB,wEAAoB;AACxC,oBAAoB,qEAAiB;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,4BAA4B,4DAAM;AAClC;AACA;AACA,4BAA4B,4DAAM;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA,4BAA4B,iEAAW;AACvC,4BAA4B,iEAAW;AACvC;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,6BAA6B,WAAW;AACxC,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB,QAAQ,4DAAM;AACd,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,iBAAiB,EAAE,uBAAuB,KAAK;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,QAAQ,gEAAU,sBAAsB,0BAA0B;AAClE;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,IAAI,cAAc;AAClC;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,eAAe,eAAe;AAC9B,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA,aAAa,uEAAiB;AAC9B,YAAY,kEAAgB;AAC5B;AACA,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,qFAAqF,kEAAgB,KAAK,kEAAgB;AAC1H;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,oBAAoB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,QAAQ,kEAAc;AACtB,6BAA6B,wCAAwC;AACrE;AACA;AACA;AACA,gCAAgC,uEAAiB;AACjD,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAc;AACtB;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;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,aAAa;AACb;AACA;AACA;AACA,+CAA+C,WAAW;AAC1D,wBAAwB,uEAAiB;AACzC,uEAAuE,uEAAiB;AACxF;AACA;AACA;AACA,aAAa,kEAAgB,8BAA8B,kEAAgB;AAC3E,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;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;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAiB,oBAAoB,uEAAiB;AACxF,iCAAiC,yBAAyB;AAC1D;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,gBAAgB,oEAAgB;AAChC;AACA,YAAY,8DAAQ;AACpB,YAAY,qEAAa;AACzB;AACA,uBAAuB,kEAAgB;AACvC,aAAa;AACb,YAAY,mEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,mEAAW;AACvB,YAAY,iEAAW;AACvB;AACA,gBAAgB,4DAAM;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,YAAY,mEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,gBAAgB,uEAAiB,cAAc,uEAAiB;AAC7F;AACA;AACA,mCAAmC,uEAAiB;AACpD;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA,YAAY,kEAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;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,qDAAqD,uEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,QAAQ,wEAAoB;AAC5B;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C,gBAAgB,uEAAiB;AACjC,gBAAgB,kEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,cAAc;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ,uBAAuB,8DAAQ;AAC3D;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,kBAAkB,8DAAQ;AAC1B,mBAAmB,8DAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA,oBAAoB,qEAAiB;AACrC;AACA,wBAAwB,qEAAmB;AAC3C,wBAAwB,qEAAmB;AAC3C,wBAAwB,qEAAmB;AAC3C;AACA;AACA,wBAAwB,kEAAgB;AACxC,wBAAwB,kEAAgB;AACxC,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA;AACA,qFAAqF,uEAAiB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,uEAAiB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,yEAAyE,uEAAiB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAyB;AACxC,eAAe,OAAO;AACtB,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,gBAAgB,kEAAc;AAC9B;AACA;AACA;AACA;AACA;AACA,mDAAmD,WAAW;AAC9D,4BAA4B,uEAAiB;AAC7C,mFAAmF,uEAAiB;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,wCAAwC,uEAAiB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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,gBAAgB,kBAAkB;AAClC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,sBAAsB;AACrC;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,wFAAwF,uDAAK;AAC7F,sDAAsD,uEAAiB;AACvE,uDAAuD,uEAAiB;AACxE;AACA;AACA;AACA;AACA;AACA,6CAA6C,6DAAW;AACxD;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,4CAA4C,4CAA4C;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;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,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,yBAAyB;AACxC,eAAe,OAAO;AACtB,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,gBAAgB,uEAAiB,cAAc,uEAAiB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,KAAI;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kGAAkG,6DAAW;AAC7G;AACA;AACA,4BAA4B,uDAAK;AACjC;AACA,gBAAgB,6DAAW,+CAA+C,2DAAS;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AAC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CA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,eAAe,sBAAsB;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;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oEAAoE,gBAAgB;AACpF;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,4CAA4C;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,uEAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;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,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA,0BAA0B;AAC1B,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,+EAA+E,uEAAiB;AAChG;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,uBAAuB,0EAA0E;AAC3H;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,wEAAwE;AACzG;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B;AACA,iBAAiB,uEAAiB;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,aAAa,uEAAiB;AAC9B,YAAY,gEAAU,mBAAmB,+EAA+E;AACxH;AACA,6BAA6B,uEAAiB;AAC9C,oCAAoC,uEAAiB;AACrD,YAAY,gEAAU;AACtB;AACA;AACA,YAAY,gEAAU,sBAAsB,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM,SAAS,yBAAyB;AACpD,iCAAiC,sBAAsB;AACvD;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,sFAAsF,uEAAiB;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,+DAA+D;AAC1G;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC,wBAAwB,uBAAuB;AAC/C;AACA,gCAAgC,2DAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,4BAA4B,uBAAuB;AACnD,8EAA8E,uEAAiB;AAC/F,8DAA8D,6DAAW;AACzE;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,gEAAgE,6DAAW,KAAK,uEAAiB;AACjG;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6DAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,+DAA+D;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8EAA8E,uEAAiB;AAC/F;AACA,gEAAgE,6DAAW;AAC3E;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,iBAAiB,uEAAiB,gBAAgB,uEAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,gCAAgC,CAAC,uEAAiB,qBAAqB;AACvE;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA,sMAAsM;AACtM;AACA;AACA,gCAAgC,8DAAQ;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,UAAU;AACV;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAiB;AAC1D;AACA;AACA;AACA;AACA,4CAA4C,+EAA+E;AAC3H;AACA;AACA,4CAA4C,iFAAiF;AAC7H;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,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,yBAAyB;AACxC,eAAe,OAAO;AACtB,eAAe,oBAAoB;AACnC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,uDAAK;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,6DAAW;AAC5D;AACA;AACA;AACA;AACA,uCAAuC,uEAAiB;AACxD;AACA;AACA;AACA;AACA;AACA,iEAAiE,uDAAK;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wEAAwE;AACjH;AACA;AACA;AACA;AACA;AACA,4CAA4C,6DAAW;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,2BAA2B,8DAAQ;AACnC;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gEAAU,sBAAsB,0BAA0B;AACtE;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,sBAAsB,yBAAyB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B,YAAY,iEAAW;AACvB;AACA,wCAAwC,8DAAY,KAAK,uEAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,QAAQ,2EAAuB;AAC/B;AACA,aAAa,uEAAiB,0BAA0B,uEAAiB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,wEAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,wDAAwD,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,qBAAqB,uEAAiB;AACpE,YAAY,gEAAU,sBAAsB,sFAAsF;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AAC7B;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,0CAA0C,8BAA8B;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,aAAa,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,uEAAiB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+EAA+E;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uEAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iEAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,iEAAW;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,yEAAyE,uEAAiB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;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,aAAa,uEAAiB;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,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,uEAAiB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iCAAiC;AAC9D;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,oCAAoC,oFAAoF;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,sDAAsD,uEAAiB;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,0CAA0C,iCAAiC;AAC3E;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,kDAAkD,gEAAU;AAC5D;AACA;AACA,wFAAwF,gEAAU;AAClG;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,2CAA2C;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;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;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,QAAQ,iEAAW;AACnB,YAAY,kEAAgB;AAC5B,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+DAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA,uDAAuD,2BAA2B;AAClF,qDAAqD,yBAAyB;AAC9E;AACA;AACA;AACA,mCAAmC,uEAAiB;AACpD;AACA;AACA,iCAAiC,6DAAO,CAAC,4DAAM;AAC/C;AACA;AACA,iCAAiC,6DAAO;AACxC;AACA;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA,oBAAoB,4DAAM;AAC1B;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC,4BAA4B,uEAAiB;AAC7C;AACA;AACA,wEAAwE;AACxE,UAAU,IAAI,UAAU;AACxB,QAAQ,4DAAM;AACd;AACA,wCAAwC,qHAAqH;AAC7J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,+CAA+C,+DAA+D;AAC9G;AACA;AACA;AACA,+CAA+C,+DAA+D;AAC9G;AACA;AACA;AACA,+CAA+C,+DAA+D;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,gDAAgD,gEAAU;AAC1D,wDAAwD,gEAAU;AAClE;AACA;AACA,gDAAgD,gEAAU;AAC1D;AACA,oCAAoC,yDAAK;AACzC,sFAAsF,wBAAwB;AAC9G,gEAAgE,sBAAsB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA,qBAAqB;AACrB,6BAA6B,kEAAgB;AAC7C;AACA;AACA;AACA,iBAAiB;AACjB,gDAAgD,kEAAgB;AAChE,qDAAqD,+DAA+D;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,6BAA6B,6DAAO,CAAC,4DAAM;AAC3C;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA,wCAAwC;AACxC;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA,YAAY,4DAAM;AAClB;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,6BAA6B,6DAAO,CAAC,4DAAM;AAC3C;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA,wCAAwC;AACxC;AACA,+BAA+B,wBAAwB;AACvD;AACA;AACA;AACA,QAAQ,4DAAM;AACd,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,sCAAsC;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;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE;AACA;AACA;AACA,iDAAiD,uEAAiB;AAClE;AACA;AACA,qEAAqE,uEAAiB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA,YAAY,kEAAgB;AAC5B;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,0BAA0B,6DAAO;AACjC;AACA,YAAY,kEAAgB;AAC5B;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB,IAAI,mEAAiB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,uEAAiB;AAChF;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,iBAAiB;AACjB;AACA;AACA,gCAAgC,uDAAK;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B,gCAAgC,CAAC,uEAAiB,qBAAqB;AACvE,wDAAwD,uEAAiB;AACzE,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA,qDAAqD,iEAAW;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,gBAAgB;AACrD;AACA;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,oCAAoC,CAAC,uEAAiB,qBAAqB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC,wBAAwB,8DAAQ;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,mEAAmE,uEAAiB;AACpF,gDAAgD,iFAAiF;AACjI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yLAAyL;AACzL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,8DAAQ;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,yEAAyE,uEAAiB;AAC1F,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,gDAAgD,qFAAqF;AACrI;AACA;AACA,wCAAwC,qFAAqF;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6DAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6DAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE,uEAAiB;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,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B,+DAA+D,uEAAiB;AAChF;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAiB,mBAAmB,6DAAO;AAC9D;AACA;AACA;AACA;AACA,0CAA0C,8DAAY,IAAI,mEAAiB;AAC3E;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,mEAAmE,sDAAsD;AACzH;AACA;AACA,YAAY,qEAAa,GAAG,oCAAoC,kEAAgB,oBAAoB;AACpG,YAAY,8DAAQ;AACpB,YAAY,mEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,mEAAW;AACvB,YAAY,iEAAW;AACvB;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6EAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,OAAO;AAClD,uCAAuC,OAAO;AAC9C;AACA,2BAA2B,sDAAI;AAC/B;AACA,2BAA2B,sDAAI;AAC/B;AACA;AACA,2BAA2B,sDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,6DAA6D,MAAM;AACnE;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,oCAAoC,CAAC,uEAAiB,qBAAqB;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;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,MAAM;AACxD,gDAAgD,MAAM;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,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B;AACA,QAAQ,qEAAmB;AAC3B,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA,gBAAgB,qEAAmB;AACnC;AACA,YAAY,qEAAmB;AAC/B,8BAA8B,6DAAO;AACrC;AACA,gBAAgB,qEAAmB;AACnC;AACA,YAAY,qEAAmB;AAC/B;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAO;AACtB;AACA;AACA;AACA;AACA,qEAAqE,uEAAiB;AACtF,wDAAwD,6DAAO;AAC/D;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2CAA2C;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;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,aAAa;AACb;AACA;AACA,qDAAqD,iEAAW;AAChE;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,6DAAO;AAC3D,eAAe,6DAAO;AACtB;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,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;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,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,eAAe,kBAAkB;AACjC;AACA,iBAAiB;AACjB;AACA;AACA,mCAAmC,uEAAiB;AACpD,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;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,kDAAkD,8BAA8B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,oDAAoD;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,2EAAuB;AAC3C;AACA,yBAAyB,uEAAiB,0BAA0B,uEAAiB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,gEAAU;AAClE,gEAAgE,gEAAU;AAC1E;AACA;AACA,wDAAwD,gEAAU;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,wBAAwB,uBAAuB;AAC/C,0EAA0E,uEAAiB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6DAAW;AACxD;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,uFAAuF,6DAAW,KAAK,uEAAiB;AACxH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;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,gBAAgB,WAAW;AAC3B,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA,4CAA4C,2DAAS;AACrD,oBAAoB,gEAAU,uBAAuB,0BAA0B;AAC/E;AACA;AACA;AACA,qDAAqD,gFAAgF;AACrI;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,qEAAmB;AACvC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,qDAAqD,kEAAgB;AACrE,0DAA0D,gEAAgE;AAC1H;AACA;AACA;AACA,iDAAiD,kEAAgB;AACjE,sDAAsD,gEAAgE;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,aAAa;AACnD,aAAa;AACb;AACA;AACA,iCAAiC,aAAa;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,0DAA0D,iFAAiF;AAC3I,wDAAwD,2EAA2E,GAAG;AACtI;AACA,gEAAgE;AAChE,SAAS;AACT,4DAA4D,4BAA4B;AACxF,0DAA0D,6BAA6B;AACvF;AACA,YAAY,8DAAQ;AACpB;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,wDAAwD,0DAA0D;AAClH;AACA,iEAAiE,sDAAsD;AACvH;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,8DAA8D,iEAAW;AACzE;AACA;AACA,8DAA8D,iEAAW;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,kEAAgB;AACrD;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,qFAAqF,iEAAW;AAChG;AACA;AACA,qBAAqB;AACrB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,CAAC,6DAAO,+BAA+B,6DAAO;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2EAAuB;AAC/B;AACA,aAAa,uEAAiB,0BAA0B,uEAAiB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAiB;AAChC;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,oEAAoE,oBAAoB;AACxF;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uEAAiB;AACnE;AACA;AACA;AACA;AACA,aAAa,uEAAiB,gBAAgB,uEAAiB;AAC/D;AACA;AACA;AACA,6CAA6C,6DAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,kBAAkB,uEAAiB;AACnC,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,yDAAyD,yBAAyB;AAClF;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA,gBAAgB,iEAAW;AAC3B;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,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG,uDAAuD;AACzE;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;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,QAAQ,kEAAgB;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,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,wEAAoB;AAC5B;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAc;AAC5C,uBAAuB,4DAAM;AAC7B,2DAA2D,uEAAiB;AAC5E,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,wBAAwB,4DAAM;AAC9B;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,gCAAgC,6DAAO;AACvC;AACA,aAAa,uEAAiB;AAC9B,+BAA+B,4DAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAO;AACnC;AACA,aAAa,uEAAiB;AAC9B,+BAA+B,4DAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,aAAa;AACb;AACA,yBAAyB,cAAc;AACvC;AACA,aAAa;AACb;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA,kCAAkC,qEAAiB;AACnD;AACA;AACA,8BAA8B;AAC9B,aAAa;AACb,iBAAiB,uEAAiB;AAClC;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,YAAY,4DAAM;AAClB,YAAY,6DAAO;AACnB,YAAY,gEAAU;AACtB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iBAAiB,kEAAgB;AACjC,gBAAgB,kEAAgB;AAChC;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA,QAAQ,gEAAU,iCAAiC,iBAAiB,UAAU,QAAQ,WAAW,GAAG;AACpG,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAY;AAC5B,0BAA0B,uEAAiB;AAC3C;AACA,iBAAiB,8DAAY;AAC7B,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA,oBAAoB,8DAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF,kEAAgB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,0BAA0B,6DAAO;AACnE;AACA;AACA;AACA;AACA,mBAAmB,uEAAiB,0BAA0B,6DAAO;AACrE,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,8DAAY,IAAI,mEAAiB;AAClF;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA,oBAAoB,8DAAY;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAmB;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,iCAAiC,6DAAO;AACxC;AACA,mDAAmD,mEAAmE,gBAAgB;AACtI;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,2BAA2B,sDAAI,gCAAgC;AAC/D;AACA,2BAA2B,sDAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uEAAiB;AAClE;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,4DAAM;AACtB;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,6DAAO;AACvB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;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,cAAc;AAC7B,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,uCAAuC,kBAAkB;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,QAAQ,iEAAW;AACnB;AACA;AACA,QAAQ,gEAAU,cAAc,mIAAmI;AACnK;AACA;AACA;AACA;AACA,iCAAiC,sDAAI,yBAAyB,8DAA8D;AAC5H;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qCAAqC,4BAA4B,IAAI;AAChH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,2CAA2C,wEAAgB;AAC3D;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,sCAAsC,qBAAqB;AAClH;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kEAAY;AACzC;AACA;AACA;AACA,6BAA6B,kEAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sDAAI;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,sBAAsB,2DAAM,GAAG,6CAA6C;AAC5E;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gEAAU;AACrC;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW,QAAQ,oEAAiB;AAChD;AACA;AACA,YAAY,8DAAQ,QAAQ,oEAAiB;AAC7C;AACA;AACA;AACA;AACA,uDAAuD,gCAAgC;AACvF;AACA,oCAAoC,gEAAU;AAC9C;AACA,QAAQ,qEAAa,GAAG,sBAAsB;AAC9C,QAAQ,mEAAW;AACnB;AACA;AACA;AACA,YAAY,mEAAW;AACvB;AACA;AACA,YAAY,4DAAM;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,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,uEAAiB;AACjH;AACA,2BAA2B,kEAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,4DAAM,2BAA2B,oBAAoB;AACpE,YAAY,+DAAa;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;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,yCAAyC,6BAA6B;AACtE,2BAA2B;AAC3B,yBAAyB;AACzB,uBAAuB,4DAAM,GAAG,aAAa,+BAA+B,+BAA+B;AAC3G,gFAAgF;AAChF;AACA,8BAA8B,4DAAM,eAAe,4BAA4B;AAC/E,uBAAuB,4DAAM,aAAa,4CAA4C;AACtF;AACA,YAAY,+DAAa;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,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,oCAAoC,yBAAyB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kEAAY;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4DAAM;AACrC,+BAA+B,4DAAM;AACrC,iCAAiC,4DAAM;AACvC;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAM,eAAe,uBAAuB;AAC1E,uBAAuB,4DAAM,aAAa,qBAAqB;AAC/D;AACA;AACA,4BAA4B,4DAAM,aAAa,uBAAuB;AACtE,uBAAuB,4DAAM,aAAa,wBAAwB;AAClE;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,uEAAuE;AAClH;AACA;AACA,YAAY,iEAAW,QAAQ,oEAAiB;AAChD;AACA;AACA;AACA;AACA;AACA,yCAAyC,8BAA8B,iEAAc,IAAI;AACzF;AACA;AACA;AACA;AACA;AACA,4DAA4D,6DAAO;AACnE,cAAc,6DAAO,8BAA8B,6DAAO;AAC1D;AACA,sBAAsB,kEAAY;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4DAAM,GAAG,6BAA6B,sDAAsD;AAC9H,oCAAoC,6BAA6B;AACjE;AACA;AACA;AACA;AACA,2CAA2C,kCAAkC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW,OAAO,oEAAiB;AACnD;AACA;AACA;AACA,gBAAgB,8DAAQ,OAAO,oEAAiB;AAChD;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,WAAW;AAC5B,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA,mCAAmC,8DAAQ;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,iDAAiD,QAAQ;AACzD;AACA;AACA,mDAAmD,QAAQ;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kCAAkC;AACnD,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kCAAkC;AACnD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kCAAkC;AACnD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kCAAkC;AACnD,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA,oCAAoC,kEAAY;AAChD;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B,iBAAiB,SAAS;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA,wCAAwC,kEAAY;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB,sCAAsC;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uBAAuB,sCAAsC;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;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,uCAAuC,oEAAiB;AACxD;AACA;AACA;AACA,qDAAqD,2BAA2B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,oEAAiB;AAC1D;AACA;AACA,4CAA4C,oEAAiB;AAC7D;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,0BAA0B;AACpF;AACA;AACA;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,0BAA0B;AAChG;AACA;AACA,gCAAgC,sBAAsB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sBAAsB;AAClD;AACA,qCAAqC,gCAAgC;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C,oGAAoG;AACpG;AACA;AACA;AACA,wFAAwF,uDAAK;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6DAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wEAAwE,uDAAK;AAC7E;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,aAAa;AACb;AACA,yBAAyB,cAAc;AACvC;AACA,aAAa;AACb;AACA,6BAA6B,qEAAiB;AAC9C;AACA;AACA,8BAA8B;AAC9B,aAAa;AACb,YAAY,4DAAM;AAClB,YAAY,6DAAO;AACnB,YAAY,gEAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA,+CAA+C,kEAAgB;AAC/D,wCAAwC,oEAAiB;AACzD;AACA;AACA;AACA,oGAAoG,kEAAgB;AACpH;AACA;AACA,qBAAqB;AACrB,oBAAoB,iEAAW,0BAA0B,oEAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,+CAA+C;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ,aAAa,oEAAiB;AAC1D;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,4CAA4C,iCAAiC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oGAAoG;AACrI;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA,2DAA2D,SAAS;AACpE;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,gBAAgB;AACrE;AACA,2DAA2D,SAAS;AACpE;AACA,6BAA6B,uEAAiB,UAAU,8DAAQ;AAChE;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,kBAAkB,6DAAO;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,kDAAkD;AAClD,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAM;AAClB;AACA,SAAS;AACT,yCAAyC,iDAAiD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,eAAe,WAAW;AAC1B,eAAe,QAAQ;AACvB,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,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,+CAA+C,iBAAiB;AAChE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA,aAAa;AACb,6CAA6C,iBAAiB;AAC9D;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,4DAAM,QAAQ;AACjE;AACA;AACA;AACA,gBAAgB,6DAAM;AACtB,qDAAqD,iDAAiD;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,iDAAiD;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yFAAyF,oEAAiB;AAC1G;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,QAAQ,6DAAM;AACd;AACA,4BAA4B,8CAA8C;AAC1E,yCAAyC,iDAAiD;AAC1F;AACA;AACA;AACA;AACA,wBAAwB,8BAA8B;AACtD;AACA;AACA,wBAAwB,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gCAAgC;AACtE;AACA;AACA,SAAS;AACT,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iDAAiD;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,yBAAyB,6DAAO;AAChC,aAAa;AACb;AACA;AACA,sEAAsE,oEAAiB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAY;AAChC,8BAA8B,kEAAY;AAC1C;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uBAAuB;AACnD;AACA,gCAAgC,mBAAmB;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,oEAAiB;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,qCAAqC,uEAAuE;AAC5G;AACA;AACA;AACA;AACA;AACA,mCAAmC,WAAW;AAC9C;AACA,gDAAgD;AAChD;AACA;AACA,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,uDAAK;AAC/E;AACA;AACA,sEAAsE,uDAAK;AAC3E;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yBAAyB;AACzC,gBAAgB,OAAO;AACvB,gBAAgB,oBAAoB;AACpC,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,mFAAmF;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,iEAAc;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,iEAAc;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,gCAAgC,4BAA4B;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,eAAe;AACpD;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,iCAAiC;AACjC,mCAAmC;AACnC,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,yDAAyD,2BAA2B;AACpF;AACA;AACA;AACA,iDAAiD,oEAAiB;AAClE;AACA;AACA;AACA,oDAAoD,oEAAiB;AACrE;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,SAAS;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,8DAAW;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,sDAAI,yBAAyB,8DAA8D;AAC9H;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,0CAA0C,oEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW,kCAAkC,oEAAiB,GAAG,oEAAiB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA,4BAA4B,wEAAoB;AAChD;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAY;AACpC;AACA;AACA;AACA,4BAA4B,kEAAY;AACxC;AACA;AACA;AACA,4BAA4B,kEAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,8CAA8C,sDAAI,yBAAyB,8DAA8D;AACzI;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B;AACA,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;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,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;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;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,gBAAgB,uEAAiB;AACjC,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,aAAa,kEAAgB;AAC7B,sCAAsC,gEAAc;AACpD;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,mEAAW;AACvB;AACA,aAAa,uEAAiB,2BAA2B,uEAAiB;AAC1E,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B,gBAAgB,uEAAiB,0BAA0B,uEAAiB;AAC5E;AACA,gBAAgB,qEAAa;AAC7B;AACA,2BAA2B,kEAAgB;AAC3C,iBAAiB;AACjB,gBAAgB,mEAAW;AAC3B;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,iBAAiB,uEAAiB;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,kBAAkB,uEAAiB;AACnC;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAAiB;AACjE;AACA,2BAA2B,uEAAiB;AAC5C;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,aAAa,kEAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,uEAAiB;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,aAAa,uEAAiB;AAC9B,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;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,wBAAwB,uDAAuD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,gEAAU,cAAc,oFAAoF;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qDAAqD;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,uDAAK;AAC7F,sDAAsD,uEAAiB;AACvE,uDAAuD,uEAAiB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6DAAW;AACxD;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,4CAA4C,4CAA4C;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,QAAQ,gEAAU,sBAAsB,iDAAiD;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,4CAA4C,2DAAS;AACrD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA,mCAAmC,gEAAU;AAC7C,qBAAqB,uEAAiB;AACtC;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA,sDAAsD,uEAAiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA,gBAAgB,gEAAU,uBAAuB,mGAAmG;AACpJ;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,gDAAgD,2DAAS;AACzD,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA,wGAAwG,sDAAsD,qBAAqB,kBAAkB;AACrM;AACA;AACA,oDAAoD,gEAAU;AAC9D,mDAAmD,gEAAU;AAC7D;AACA;AACA,iFAAiF,uEAAiB,qBAAqB,gEAAU;AACjI;AACA,0EAA0E,wEAAgB;AAC1F;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+FAA+F;AAC/F,uCAAuC,gEAAU;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,kEAAgB,KAAK,kEAAgB;AAClD;AACA,4BAA4B,iEAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yDAAK;AACjC;AACA,sDAAsD,sBAAsB;AAC5E,kEAAkE,wBAAwB;AAC1F;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAiB,mBAAmB,6DAAO;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gCAAgC;AAC9E;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,uCAAuC,6DAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD;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,oCAAoC,uEAAiB;AACrD;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,uEAAiB;AACnD;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,aAAa,uEAAiB,2BAA2B,uEAAiB;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAO;AAChC;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;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,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAO;AAChC;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA,iBAAiB;AACjB;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,8CAA8C;AAC9C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,wBAAwB,8DAAQ;AAChC,uBAAuB,8DAAQ;AAC/B;AACA,sBAAsB,uEAAiB;AACvC,aAAa,iEAAW;AACxB,qBAAqB,uEAAiB;AACtC,aAAa,iEAAW;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;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,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,gEAAU;AACrD,0CAA0C,gEAAU;AACpD;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,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG,uDAAuD;AACzE;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEie;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChuiBxZ;AACM;;AAE/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,CAAC;AACD;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;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,CAAC;;AAED,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB;AACzD;AACA;AACA;AACA;AACA;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,CAAC;;AAED,YAAY,kBAAkB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAoB;AAC5C;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,aAAa,uEAAiB;AAC5D;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,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,gBAAgB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,qDAAqD;AACjJ;AACA;AACA;AACA,4FAA4F,mDAAmD;AAC/I;AACA;AACA;AACA;AACA;AACA,4FAA4F,oEAAoE;AAChK;AACA;AACA;AACA,4FAA4F,kEAAkE;AAC9J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF,iCAAiC;AACzH;AACA;AACA;AACA,wFAAwF,gDAAgD;AACxI;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,gBAAgB,QAAQ;AACxB,gBAAgB,MAAM;AACtB;AACA;AACA,2DAA2D,gBAAgB,gBAAgB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oDAAoD,gBAAgB,gBAAgB;AACpF;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA,CAAC;;AAED;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,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sEAAoB;AAC5C;AACA;AACA,gCAAgC,mEAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wBAAwB;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,wBAAwB,YAAY;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,4BAA4B,qBAAqB;AACjD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wBAAwB;AACrD;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,iBAAiB;AACjB,qBAAqB,uEAAiB;AACtC;AACA;AACA,qBAAqB;AACrB,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;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,6BAA6B,sBAAsB;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,uCAAuC;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,wEAAwE,wBAAwB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,gCAAgC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,gBAAgB;AAC9E;AACA;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,kEAAkE;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,0CAA0C;AACxG;AACA;AACA;AACA,kEAAkE,wCAAwC;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,sCAAsC;AACpG;AACA;AACA;AACA,kEAAkE,oCAAoC;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,sCAAsC;AACpG;AACA;AACA;AACA,kEAAkE,oCAAoC;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gBAAgB;AAC3D;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,4CAA4C,gBAAgB;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,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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,0DAA0D,2EAA2E;AACrI;AACA,qBAAqB;AACrB,iBAAiB;AACjB;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,wBAAwB,YAAY;AACpC;AACA;AACA,qDAAqD;AACrD,oDAAoD;AACpD,oDAAoD;AACpD,uDAAuD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,gBAAgB;AAC9D;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;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,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,gBAAgB;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,wBAAwB,oBAAoB;AAC5C;AACA;AACA,sCAAsC,mBAAmB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;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,gDAAgD,gBAAgB;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,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA,iDAAiD;AACjD;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA,4DAA4D;AAC5D;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,2DAA2D;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,gBAAgB;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,kIAAkI;AAClI,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gBAAgB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB;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,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,oBAAoB;AACnE,kCAAkC,uEAAc;AAChD;AACA;AACA;AACA,kCAAkC,uEAAc;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,cAAc;AAC5C,kCAAkC,cAAc;AAChD,oEAAoE,yCAAyC;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC;;AAED;AACA;AACA;;AAEqR;;;;;;;;;;;;;;;;;;;;;;;AC7jFrR;AACA;AACA;AACA,sCAAsC,oBAAoB;AAC1D;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,MAAM;AACtB,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;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,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,eAAe,QAAQ;AACvB;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,mCAAmC;AACnC;AACA;AACA;AACA;AACA,2CAA2C,oBAAoB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,WAAW;AACvD,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;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;AACA;AACA;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,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;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,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAgC;AACxD;AACA;AACA;AACA,wBAAwB,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yEAAyE,oBAAoB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gCAAgC;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,yCAAyC;AACzC,wCAAwC;AACxC,wCAAwC;AACxC;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,WAAW;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;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,wBAAwB,SAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;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,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;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,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB;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,gBAAgB,SAAS,uEAAuE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wFAAwF;AACxF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,oBAAoB,cAAc;AAClC;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAe;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,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,iBAAiB,aAAa;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,gBAAgB,aAAa;AAC7B,gBAAgB,QAAQ;AACxB,gBAAgB,QAAQ;AACxB,iBAAiB,QAAQ;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,gCAAgC,WAAW;AAC3C;AACA,mDAAmD;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA,oCAAoC;AACpC;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;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,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ,YAAY,mBAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;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,QAAQ;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB;AACjB;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,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEiH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kCAAkC;AACjD,kBAAkB,+CAA+C;AACjE,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;AACA;AACA;AACA;AACA;AACA;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,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,oBAAoB;AACnC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;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,YAAY,uEAAiB;AAC7B,iCAAiC,WAAW;AAC5C;AACA,oDAAoD,kBAAkB;AACtE,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA,uCAAuC,8DAAQ,sCAAsC,iEAAW;AAChG;AACA;AACA;AACA;AACA;AACA,qDAAqD,yDAAyD;AAC9G,aAAa,8DAAQ;AACrB;AACA;AACA,qDAAqD,kBAAkB;AACvE;AACA;AACA,qBAAqB,0BAA0B,2BAA2B;AAC1E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,yDAAyD,uEAAiB;AAC3G,gBAAgB,uEAAiB;AACjC,8CAA8C,2BAA2B;AACzE;AACA,YAAY,qEAAa,GAAG,mCAAmC;AAC/D,YAAY,mEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,oBAAoB,uDAAK;AAC9D,wCAAwC,6DAAW;AACnD;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,kDAAkD,6DAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2DAAS;AACrC;AACA;AACA;AACA,8CAA8C,qBAAqB;AACnE;AACA,yDAAyD,2DAAS;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,8DAAQ,EAAE,uEAAiB;AACjF;AACA;AACA;AACA,gDAAgD,sBAAsB;AACtE;AACA,yBAAyB,8DAAQ,EAAE,uEAAiB;AACpD;AACA;AACA;AACA,QAAQ,mEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,kBAAkB,cAAc;AAC7D;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,6DAA6D,mBAAmB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,sDAAsD,kBAAkB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB,8BAA8B,2DAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6DAAW;AACnD;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,iBAAiB,uEAAiB;AACpE,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sFAAsF;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,wDAAwD,oBAAoB;AAC5E,kDAAkD,oBAAoB;AACtE,oDAAoD,iBAAiB;AACrE,uDAAuD,uBAAuB;AAC9E,oDAAoD,kBAAkB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,2BAA2B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oBAAoB;AACtE,wBAAwB,uEAAiB;AACzC;AACA;AACA,qBAAqB,cAAc;AACnC;AACA,SAAS;AACT;AACA,yDAAyD,kBAAkB;AAC3E;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,yDAAyD,uEAAiB,oGAAoG,uEAAiB;AACxN,aAAa;AACb;AACA,yBAAyB,2DAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA,SAAS;AACT,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,kCAAkC,8DAA8D;AAChG;AACA;AACA,gBAAgB,uEAAiB,iCAAiC,8DAAQ;AAC1E;AACA;AACA;AACA;AACA,4CAA4C,iEAAU;AACtD;AACA;AACA,4CAA4C,qEAAc;AAC1D;AACA;AACA,4CAA4C,mEAAY;AACxD;AACA;AACA,4CAA4C,iEAAa;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,QAAQ,EAAE;AACjH;AACA;AACA,4CAA4C,kEAAc;AAC1D;AACA;AACA,4CAA4C,2DAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,4DAAU;AACjD;AACA;AACA,uCAAuC,+DAAa;AACpD;AACA;AACA,uCAAuC,gEAAc;AACrD;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB,6BAA6B;AAC7B;AACA;AACA,6BAA6B,4BAA4B,kEAAgB;AACzE;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,QAAQ,uEAAiB,gBAAgB,iBAAiB;AAC1D,QAAQ,qEAAa;AACrB,QAAQ,mEAAW;AACnB;AACA;AACA;AACA,QAAQ,mEAAW;AACnB,QAAQ,4DAAM;AACd;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,iEAAW;AACvB;AACA,QAAQ,iEAAW;AACnB;AACA;AACA,eAAe,4DAAM;AACrB;AACA;AACA;AACA,mBAAmB,sDAAI;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM,UAAU,YAAY;AACpC,6BAA6B,cAAc;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,iCAAiC,+CAA+C;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iBAAiB;AACnD;AACA;AACA;AACA,kDAAkD,aAAa;AAC/D;AACA,iCAAiC,gCAAgC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAM;AACpC;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,gBAAgB,8DAAQ,0BAA0B,iEAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD;AACnD;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,yEAAmB;AAC/B;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,CAAC,4DAAM;AACrC,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uDAAK;AAC7B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0BAA0B,QAAQ;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,6DAAW,GAAG,4CAA4C;AACtG;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,iCAAiC,uBAAuB,iCAAiC;AAC1I;AACA;AACA;AACA,qCAAqC,QAAQ;AAC7C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B,aAAa,uEAAiB;AAC9B,4BAA4B,8DAAQ;AACpC;AACA;AACA,iCAAiC;AACjC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa;AACb,gBAAgB,8DAAQ;AACxB,gBAAgB,0EAAoB;AACpC;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,yBAAyB,mFAAiC;AAC1D;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,sCAAsC,uEAAiB;AACvD;AACA;AACA;AACA,4BAA4B,mFAAiC;AAC7D;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD,2CAA2C,uEAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ,8BAA8B,iEAAW;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iEAAa;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA;AACA;AACA,uCAAuC,8DAAQ,iBAAiB,iEAAW;AAC3E;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,0CAA0C,uBAAuB;AACjE;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB,IAAI,+DAAa;AAC7C,mCAAmC,uDAAK,mBAAmB,uCAAuC;AAClG;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA,aAAa,uEAAiB;AAC9B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB,IAAI,+DAAa;AAC7C;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAM;AACpC;AACA;AACA;AACA,8BAA8B,4DAAM;AACpC;AACA;AACA;AACA,oDAAoD,6DAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,gCAAgC;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;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa,6DAAO;AACpB,wDAAwD,6DAAO;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,sDAAsD,kEAAgB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAO;AAChC,4BAA4B,6DAAO;AACnC,6BAA6B,6DAAO;AACpC,gCAAgC,6DAAO;AACvC,cAAc,uEAAiB;AAC/B,cAAc,uEAAiB;AAC/B,aAAa,uEAAiB,qBAAqB,uEAAiB;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B;AACA;AACA,iBAAiB,4DAAM;AACvB;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,0BAA0B,8DAAQ;AAClC;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,SAAS;AACT;AACA;AACA;AACA,cAAc,8DAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA,uBAAuB,8CAA8C;AACrE;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC,gBAAgB,oBAAoB;AACpC,iBAAiB;AACjB;AACA;AACA;AACA,sDAAsD,uEAAiB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,gBAAgB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG,gCAAgC;AACnD;AACA;AACA,QAAQ,8DAAQ,GAAG,kCAAkC;AACrD;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;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,YAAY,uEAAiB;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,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,mEAAY;AACvC;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAQ;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,sEAAe;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,gBAAgB,MAA+B;AAC/C;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA,2BAA2B,kEAAW;AACtC;AACA;AACA;AACA;AACA;AACA,yCAAyC,sBAAsB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iFAAqB,CAAC,sEAAU,EAAE,0EAAc,EAAE,mEAAO,EAAE,gEAAI,EAAE,iEAAK,EAAE,wEAAY,EAAE,iEAAK,EAAE,uEAAW;AAChH;AACA;AACA;AACA;AACA;AACA,2BAA2B,0EAAc;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,2BAA2B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,KAAK,IAAI,MAAM,IAAI,MAAM;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,gCAAgC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,eAAe;AAC/B,gBAAgB,eAAe;AAC/B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;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,4CAA4C,8BAA8B;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uBAAuB;AAC/D;AACA;AACA,4CAA4C,uBAAuB;AACnE;AACA;AACA;AACA;AACA,6CAA6C,uEAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,uEAAiB;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,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iEAAW;AACnB;AACA,QAAQ,8DAAQ;AAChB,mBAAmB,mEAAiB;AACpC;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;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,QAAQ,kEAAgB;AACxB;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA,wDAAwD,uEAAiB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA,0CAA0C,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uEAAiB;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,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,uBAAuB,mFAAiC;AACxD;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA,gCAAgC,uEAAiB;AACjD;AACA;AACA;AACA,wBAAwB,mFAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gDAAgD;AAChF;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0CAA0C;AAC1E,mCAAmC,4CAA4C;AAC/E;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gCAAgC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,8DAAQ,wBAAwB,iEAAW;AACzD;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,QAAQ,iEAAW;AACnB,6BAA6B,6CAA6C;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,SAAS,gEAAU,SAAS,IAAI,UAAU,gEAAU;AACjG,QAAQ,uEAAiB;AACzB;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,QAAQ,8DAAQ,EAAE,4DAAM;AACxB;AACA;AACA,aAAa,uEAAiB;AAC9B,aAAa,uEAAiB;AAC9B,YAAY,iEAAW,EAAE,4DAAM;AAC/B;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,gBAAgB,iEAAW,EAAE,4DAAM;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,eAAe,+DAAS;AACxB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,eAAe,uEAAiB;AAChC;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA,wDAAwD,OAAO;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,0BAA0B;AACtD,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,mDAAmD,QAAQ;AAC3D,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,+BAA+B,uEAAiB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,iEAAW,6BAA6B,8DAAQ;AAClE;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA,4BAA4B,6BAA6B;AACzD,2BAA2B,+DAAS;AACpC,4BAA4B,+DAAS;AACrC;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD,YAAY,4DAAM;AAClB;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,kCAAkC;AAC1D;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,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAiB,iBAAiB,kCAAkC;AAC5E;AACA;AACA,aAAa,uEAAiB;AAC9B,iBAAiB,uEAAiB;AAClC;AACA,uDAAuD,iEAAW,0BAA0B,8DAAQ;AACpG,qBAAqB,uEAAiB;AACtC;AACA,+DAA+D,iEAAW,0BAA0B,8DAAQ;AAC5G;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA,mEAAmE,iEAAW,0BAA0B,8DAAQ;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,mBAAmB,uEAAiB;AACpC;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA,gBAAgB,uEAAiB,cAAc,sBAAsB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,wBAAwB,kEAAgB;AACxC,yCAAyC,mEAAiB;AAC1D,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ,EAAE,4DAAM;AACxC;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,mEAAiB;AAC7B;AACA,4BAA4B,mBAAmB;AAC/C,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B;AACA,aAAa,uEAAiB;AAC9B;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,aAAa;AACb,SAAS;AACT;AACA;AACA,YAAY,iEAAW;AACvB,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,uEAAiB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA,4BAA4B,mEAAiB;AAC7C,qCAAqC,wCAAwC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA,mDAAmD,SAAS;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,SAAS;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,SAAS;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,eAAe;AAC3C,qBAAqB,uEAAiB;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,8BAA8B,mEAAiB;AAC/C,6BAA6B,mEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,8BAA8B,mEAAiB;AAC/C,6BAA6B,mEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA,4BAA4B,+DAAS;AACrC;AACA,gBAAgB,iEAAW;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,aAAa;AACb;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,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA,oBAAoB,iEAAW;AAC/B;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,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ,EAAE,4DAAM;AACxB;AACA;AACA,QAAQ,iEAAW,EAAE,4DAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;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,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;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,QAAQ,iEAAW;AACnB;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4BAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW,EAAE,4DAAM;AAC3B;AACA;AACA,QAAQ,8DAAQ,EAAE,4DAAM;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,yBAAyB,uEAAiB;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;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAoD;AAC5E;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,iBAAiB,uEAAiB;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,iBAAiB,uEAAiB;AAClC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA,6CAA6C,uEAAiB;AAC9D,aAAa,uEAAiB;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,aAAa,uEAAiB;AAC9B,aAAa,uEAAiB;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,uDAAuD,uEAAiB;AACxE;AACA;AACA;AACA;AACA,2BAA2B,mEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,mEAAiB;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,wBAAwB,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA,UAAU;AACV;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,YAAY,8DAAQ;AACpB,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,mCAAmC,uEAAiB;AAClF;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,mCAAmC,uEAAiB;AAClF;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oDAAoD;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4BAA4B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,iBAAiB,uEAAiB;AAClC;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,wCAAwC;AAC9F;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,iBAAiB,oBAAoB;AACtE;AACA;AACA;AACA,YAAY,uEAAiB,iBAAiB,oBAAoB;AAClE;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,yBAAyB,6DAAO;AAChC;AACA;AACA,yBAAyB,6DAAO;AAChC;AACA;AACA,aAAa,uEAAiB;AAC9B,uCAAuC;AACvC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,+CAA+C,8DAAQ,wBAAwB,iEAAW;AAC1F;AACA;AACA;AACA,wBAAwB,8BAA8B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,yBAAyB,uEAAiB,2BAA2B,uEAAiB;AACtF;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,4BAA4B,oCAAoC;AAChE;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iCAAiC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,8DAAQ;AACpD,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC,iBAAiB,uEAAiB;AAClC,iBAAiB,uEAAiB;AAClC,qBAAqB,uEAAiB;AACtC,uBAAuB,uEAAiB;AACxC,yBAAyB,uEAAiB;AAC1C,uBAAuB,uEAAiB;AACxC,sBAAsB,uEAAiB;AACvC;AACA;AACA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA,6BAA6B,mCAAmC;AAChE;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA,2DAA2D,yCAAyC;AACpG;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;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,wBAAwB,mBAAmB;AAC3C;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA,qCAAqC,SAAS,gEAAgE;AAC9G;AACA,6CAA6C,oCAAoC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,YAAY;AAC7C;AACA,4BAA4B,sDAAsD;AAClF;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA,+DAA+D,kCAAkC;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uEAAiB;AAC9C;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA,qCAAqC,6EAA2B;AAChE,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA,4DAA4D,0BAA0B;AACtF;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,mBAAmB,4BAA4B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD,iCAAiC,mEAAiB;AAClD,gBAAgB,kEAAgB;AAChC,oBAAoB,mEAAiB;AACrC,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mEAAiB;AAC9C,2BAA2B,mEAAiB;AAC5C;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB,qBAAqB;AACrB;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,8DAAQ;AAChB;AACA,wBAAwB,sCAAsC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uBAAuB;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,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB,qBAAqB;AACrB;AACA,YAAY,8DAAQ;AACpB,iCAAiC,mEAAiB;AAClD,+BAA+B,mEAAiB;AAChD,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B,gBAAgB,mEAAiB;AACjC,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;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;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,gDAAgD;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,yDAAyD,OAAO;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,cAAc;AAC1E;AACA;AACA;AACA;AACA,yDAAyD,gBAAgB;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;AACA;AACA;AACA;AACA;AACA;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,iCAAiC;AACvG;AACA,iCAAiC,SAAS,kEAAkE;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA,6DAA6D,oBAAoB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,8BAA8B,sBAAsB;AACpD;AACA;AACA;AACA;AACA,0BAA0B,kBAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,iBAAiB,iBAAiB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAsD;AAC9E;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAiB,iBAAiB,uBAAuB;AACjE;AACA;AACA,QAAQ,uEAAiB,iBAAiB,qBAAqB;AAC/D;AACA;AACA,QAAQ,uEAAiB,iBAAiB,UAAU,gEAAU,uCAAuC;AACrG,QAAQ,uEAAiB,iBAAiB,SAAS,gEAAU,uCAAuC;AACpG;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA,qDAAqD,uEAAiB;AACtE;AACA;AACA,gBAAgB,8DAAQ;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,QAAQ,uEAAiB,gBAAgB,wCAAwC;AACjF;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA,8CAA8C,qBAAqB;AACnE;AACA;AACA,8CAA8C,oBAAoB;AAClE;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA,8CAA8C,oBAAoB;AAClE;AACA;AACA;AACA;AACA,8CAA8C,iEAAiE;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA,yDAAyD,2CAA2C;AACpG;AACA;AACA;AACA,oBAAoB,8DAAQ;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,wBAAwB,WAAW;AACnC,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8BAA8B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,kCAAkC,uBAAuB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,uEAAuE,yBAAyB;AAChG;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wCAAwC;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,uBAAuB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,4BAA4B,UAAU;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,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,qCAAqC,eAAe;AACpD;AACA;AACA;AACA;AACA;AACA,0CAA0C,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gGAAgG,yBAAyB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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,oCAAoC,oBAAoB;AACxD;AACA,gDAAgD,mCAAmC;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,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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,kDAAkD,aAAa;AAC/D;AACA;AACA;AACA;AACA,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,8CAA8C;AAC7F;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,8BAA8B;AAC3G,qCAAqC,SAAS,sDAAsD;AACpG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA,4BAA4B,oBAAoB;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,6BAA6B,4BAA4B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;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,mDAAmD,iFAAiF;AACpI;AACA,4BAA4B,2BAA2B;AACvD;AACA;AACA,mFAAmF,wBAAwB;AAC3G;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA,gCAAgC,iCAAiC;AACjE;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,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA,gCAAgC,yBAAyB;AACzD;AACA;AACA;AACA;AACA;AACA,+CAA+C,uEAAiB;AAChE;AACA,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,uDAAuD;AACjH;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,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mDAAmD;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qCAAqC;AAC7D;AACA;AACA;AACA,8BAA8B,uCAAuC;AACrE;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,oEAAoE,kCAAkC;AACtG;AACA;AACA;AACA,mDAAmD;AACnD;AACA,2DAA2D,6CAA6C;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;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,uDAAuD,gCAAgC;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,gCAAgC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,4BAA4B,gCAAgC;AAC5D;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,gCAAgC,wCAAwC;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA,8BAA8B,8BAA8B;AAC5D,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kCAAkC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gEAAU;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD,uBAAuB,uEAAiB;AACxC,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB,sCAAsC,uEAAiB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2DAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC;AACA,4BAA4B,iEAAW;AACvC,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oGAAoG,oBAAoB;AACxH;AACA;AACA,sDAAsD,SAAS,4CAA4C;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,yBAAyB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;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,gBAAgB,uEAAiB;AACjC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,mBAAmB,wBAAwB;AACxE,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;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,8EAA8E,oBAAoB;AAClG;AACA;AACA;AACA;AACA,qCAAqC,SAAS,4CAA4C;AAC1F,kFAAkF,oBAAoB;AACtG;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,kFAAkF,oBAAoB;AACtG;AACA;AACA,kFAAkF,oBAAoB;AACtG,qCAAqC,SAAS,4CAA4C;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,4CAA4C;AAC9F;AACA;AACA,yCAAyC;AACzC,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,4BAA4B,+CAA+C;AAC3E,iCAAiC,mEAAiB;AAClD,gBAAgB,kEAAgB;AAChC,oBAAoB,mEAAiB;AACrC,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,mBAAmB,4BAA4B;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;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,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,YAAY;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA,gBAAgB,4DAAM;AACtB;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,eAAe,QAAQ;AACvB;AACA,gBAAgB,QAAQ;AACxB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,oBAAoB;AACtE;AACA;AACA;AACA;AACA,6BAA6B,SAAS,4CAA4C;AAClF;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,kDAAkD,4BAA4B;AAC9E;AACA;AACA;AACA,6BAA6B,SAAS,gFAAgF;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,iEAAW;AACnB;AACA,wBAAwB,gCAAgC;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sDAAsD;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,uDAAuD,0CAA0C;AACjG;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA,yCAAyC,8BAA8B;AACvE;AACA;AACA;AACA,yCAAyC,gCAAgC;AACzE;AACA;AACA;AACA;AACA;AACA,yCAAyC,sCAAsC;AAC/E;AACA;AACA;AACA,yCAAyC,sCAAsC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,0BAA0B;AAClE,6CAA6C,mEAAiB;AAC9D;AACA,4BAA4B,qEAAmB;AAC/C,gCAAgC,mEAAiB;AACjD,gCAAgC,qEAAmB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kCAAkC;AAC3E;AACA;AACA;AACA;AACA,yCAAyC,0CAA0C;AACnF;AACA;AACA;AACA,yCAAyC,sCAAsC;AAC/E;AACA;AACA;AACA;AACA,6CAA6C,sCAAsC;AACnF;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA,yCAAyC,oCAAoC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,0BAA0B;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,kCAAkC;AACjG;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,cAAc,uEAAiB,6BAA6B,uEAAiB;AAC7E,2BAA2B,uEAAiB;AAC5C;AACA;AACA,4CAA4C,oBAAoB;AAChE;AACA,4BAA4B,8DAAQ,6BAA6B,uEAAiB,CAAC,8DAAQ;AAC3F,sCAAsC,8DAAQ;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,wCAAwC;AACpG,iBAAiB,uEAAiB;AAClC,mCAAmC,4DAAM,iCAAiC;AAC1E;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA;AACA;AACA;;AAE4D;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/tK4V;AAC9V;AACD;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,qBAAqB;AACrC;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,iBAAiB;AACjC;AACA,gBAAgB,SAAS;AACzB;AACA,gBAAgB,KAAK;AACrB;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B,6BAA6B,4DAAM,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,iBAAiB;AACjC;AACA,gBAAgB,SAAS;AACzB;AACA,gBAAgB,KAAK;AACrB;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,iBAAiB;AACjC;AACA,gBAAgB,SAAS;AACzB;AACA,gBAAgB,KAAK;AACrB;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B;AACA,+BAA+B;AAC/B,wBAAwB,uBAAuB;AAC/C,gBAAgB,uEAAiB;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,gBAAgB,qBAAqB;AACrC;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,iBAAiB;AACjC;AACA,gBAAgB,SAAS;AACzB;AACA,gBAAgB,QAAQ;AACxB;AACA,gBAAgB,KAAK;AACrB;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B;AACA;AACA;AACA,8BAA8B,4DAAM,GAAG;AACvC,6BAA6B,4DAAM,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAAiB;AACjE;AACA;AACA,+BAA+B;AAC/B;AACA,wBAAwB,uBAAuB;AAC/C;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uEAAiB;AACzE;AACA;AACA;AACA;AACA;AACA,kEAAkE,oCAAoC,oBAAoB;AAC1H;AACA;AACA,2DAA2D,oCAAoC,oBAAoB;AACnH;AACA;AACA;AACA;AACA,oFAAoF,uEAAiB;AACrG,0DAA0D,4DAA4D;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAO;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,kEAAkE,uEAAiB;AACnF;AACA,iCAAiC;AACjC,oBAAoB,2DAAK;AACzB,6DAA6D,wCAAwC;AACrG;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC,6DAA6D,4DAA4D;AACzH;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA,oBAAoB,6DAAO;AAC3B;AACA;AACA,oBAAoB,6DAAO;AAC3B;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,iBAAiB;AACjC;AACA,gBAAgB,QAAQ;AACxB;AACA,gBAAgB,SAAS;AACzB;AACA,gBAAgB,KAAK;AACrB;AACA,kBAAkB,eAAe;AACjC;AACA;AACA;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oBAAoB;AACpC,gBAAgB,SAAS;AACzB,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO,IAAI;AAC5B,gBAAgB,eAAe;AAC/B,gBAAgB,WAAW;AAC3B;AACA;AACA,oCAAoC;AACpC,wBAAwB,4DAAM,GAAG;AACjC,2BAA2B,uDAAK;AAChC;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B,gBAAgB,QAAQ;AACxB,gBAAgB,OAAO;AACvB;AACA;AACA,gCAAgC,YAAY,uDAAK;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,OAAO;AACvB;AACA;AACA;AACA,mBAAmB,6DAAW;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qBAAqB;AACrC,gBAAgB,iBAAiB;AACjC;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B,qBAAqB,4DAAM,GAAG;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,yBAAyB;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,sBAAsB;AACtB,wBAAwB,iBAAiB;AACzC,iBAAiB,uEAAiB;AAClC,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK;AACb;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA;AACA;AACA,4BAA4B,qBAAqB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB,OAAO,IAAI;AAC5B,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,8CAA8C,iCAAiC,wBAAwB;AACvG,qBAAqB,4DAAM,GAAG;AAC9B,wBAAwB,4DAAM,GAAG;AACjC;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,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,6EAA6E;AAC7E,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA,8CAA8C,uEAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,eAAe;AAC/B;AACA,gBAAgB,WAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM,GAAG;AACjC,qBAAqB,4DAAM,GAAG;AAC9B;AACA,sDAAsD,2BAA2B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA,gBAAgB,4DAAM;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,wEAAwE,yDAAO,GAAG,wDAAM;AACxF,kDAAkD,iDAAiD;AACnG;AACA;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B,6BAA6B,4DAAM,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,iBAAiB,uEAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,uEAAiB;AACjG;AACA,kBAAkB,kFAAkF,IAAI;AACxG,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;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,qBAAqB;AACrB;AACA;AACA,YAAY,2DAAK;AACjB;AACA;AACA;AACA;AACA;AACA,6CAA6C,gEAAgE;AAC7G;AACA;AACA,6CAA6C,+CAA+C;AAC5F,uDAAuD,gCAAgC;AACvF;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B,6BAA6B,4DAAM,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAiB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,uEAAiB;AACjG;AACA,kBAAkB,kFAAkF,IAAI;AACxG,SAAS;AACT,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,8DAA8D,mCAAmC,IAAI;AACrG,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,gCAAgC,IAAI;AACnG,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,eAAe;AAC/B;AACA,gBAAgB,QAAQ;AACxB;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B,6BAA6B,4DAAM,GAAG;AACtC;AACA;AACA,4CAA4C,uEAAiB;AAC7D,uDAAuD,gCAAgC,IAAI;AAC3F,SAAS;AACT,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,WAAW;AAC3B;AACA,gBAAgB,QAAQ;AACxB;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA,qBAAqB,4DAAM,GAAG;AAC9B;AACA;AACA,mEAAmE,yDAAO,GAAG,wDAAM;AACnF;AACA;AACA,qBAAqB,uEAAiB;AACtC,aAAa;AACb;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA,WAAW,QAAQ;AACnB;AACA,WAAW,eAAe;AAC1B;AACA;AACA;AACA,QAAQ,uEAAiB;AACzB,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,mDAAmD,gBAAgB;AACnE;AACA;AACA,yBAAyB,uEAAiB;AAC1C,kDAAkD,8DAAQ;AAC1D,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B;AACA;AACA;AACA;;AAEA,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;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,yBAAyB,uEAAiB;AAC1C,wBAAwB,4DAAM;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,YAAY,gEAAU;AACtB;AACA;AACA;AACA;AACA,YAAY,8DAAQ,kEAAkE,aAAa;AACnG;AACA;AACA,YAAY,iEAAW,gEAAgE,aAAa;AACpG;AACA;AACA;AACA,oCAAoC,gEAAU;AAC9C,mCAAmC,gEAAU;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,qCAAqC,aAAa,6EAA2B,oBAAoB;AACjG;AACA,yDAAyD,8BAA8B;AACvF,8DAA8D,+DAA+D;AAC7H,sDAAsD,iEAAiE;AACvH;AACA;AACA,yBAAyB,qBAAqB;AAC9C,aAAa;AACb;AACA;AACA;AACA;AACA,qCAAqC,6DAAO;AAC5C,oEAAoE,0CAA0C;AAC9G;AACA,uDAAuD;AACvD;AACA,oBAAoB,4DAAM;AAC1B;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6EAA2B;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kEAAkE;AAC3G;AACA;AACA;AACA,gBAAgB,6DAAO;AACvB;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,0BAA0B,2DAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAc;AAC5C;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uEAAiB;AAChE,yEAAyE,qEAAqE;AAC9I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;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,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;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,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2DAAK,cAAc,6DAA6D;AACxG;AACA;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,6DAAO;AACpC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAO;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,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA,iBAAiB,uEAAiB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,QAAQ,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAK,cAAc,iFAAiF;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,oBAAoB,uEAAiB;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,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,+BAA+B,uDAAK,iBAAiB,2CAA2C;AAChG;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA,wDAAwD,0BAA0B;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,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAK,cAAc,6DAA6D;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK;AACb;AACA,YAAY,2DAAK,cAAc,yHAAyH;AACxJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,yBAAyB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,6DAAW;AAC/D;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uEAAiB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB,6BAA6B,uEAAiB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,uDAAK;AACxD;AACA;AACA,uEAAuE,gBAAgB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,0BAA0B,uEAAiB;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,uCAAuC,6DAAW;AAClD;AACA;AACA;AACA;AACA,oDAAoD,6DAAW;AAC/D;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB,qCAAqC,gDAAgD;AACrF;AACA;AACA,iDAAiD,sBAAsB;AACvE;AACA;AACA;AACA;AACA;AACA,6CAA6C,sBAAsB;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,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,qBAAqB,6DAAO;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,+BAA+B;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,QAAQ,gEAAU,iBAAiB,6BAA6B;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAY;AACpC;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6FAA6F,aAAa;AAC1G,QAAQ,iEAAW;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;AACA;AACA;AACA,iCAAiC,aAAa,6EAA2B,oBAAoB;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,6DAAW;AAC/D;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,oCAAoC,8BAA8B;AAClE;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,sDAAsD,uEAAiB;AACvE;AACA,wCAAwC,kBAAkB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sCAAsC;AACtD;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,4BAA4B,iBAAiB;AAC7C,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,QAAQ;AAC7D;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,oDAAoD,6DAAW;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,8CAA8C;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,oBAAoB,uEAAiB,eAAe,uEAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;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,gBAAgB,gCAAgC;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,gCAAgC;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,6BAA6B;AAC7B;AACA,iBAAiB,OAAO,IAAI;AAC5B;AACA,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,iCAAiC;AACjC,oDAAoD,6DAAW;AAC/D;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;AACA,kBAAkB,6DAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;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,+BAA+B;AAC/B;AACA,gBAAgB,gCAAgC;AAChD;AACA;AACA,wDAAwD,6DAAW;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,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,mCAAmC,2CAA2C;AAC9E;AACA;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,8CAA8C;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sCAAsC;AACtD;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4DAAM,GAAG;AAC5B;AACA,wBAAwB,oCAAoC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,wCAAwC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG;AACnB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO;AACf;AACA;AACA,QAAQ,8DAAQ,GAAG,oDAAoD;AACvE;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8FAA8F,+BAA+B;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gEAAU;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;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,8BAA8B,uEAAiB;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,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,cAAc;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,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;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,iBAAiB,uEAAiB;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,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,oBAAoB;AACxD;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,oCAAoC,uBAAuB;AAC3D;AACA;AACA;AACA;AACA;AACA,mFAAmF,6DAAW;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,iFAAiF,6DAAW;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uEAAiB;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,yEAAyE,6DAAW;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4DAAM;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,0BAA0B,mBAAmB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,wBAAwB,iBAAiB;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,0CAA0C,2CAA2C;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC,kBAAkB,uEAAiB;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,8BAA8B,6BAA6B;AAC3D,wBAAwB,6BAA6B;AACrD;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,aAAa,uEAAiB;AAC9B;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,IAAI,IAAI;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,wBAAwB,iEAAW,mEAAmE,aAAa;AACnH;AACA;AACA;AACA,wBAAwB,8DAAQ,wDAAwD,aAAa;AACrG;AACA;AACA;AACA;AACA,kCAAkC,wBAAwB;AAC1D;AACA;AACA;AACA,oBAAoB,8DAAQ,mEAAmE,aAAa;AAC5G;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+BAA+B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,IAAI,IAAI;AACxD,iDAAiD,IAAI,IAAI;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,oCAAoC,IAAI,IAAI;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI,IAAI;AACxC;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,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;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,eAAe,YAAY;AAC3B,eAAe,gBAAgB;AAC/B,eAAe,gBAAgB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;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,yCAAyC,oCAAoC;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,0DAA0D;AAC9F;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA,uGAAuG,uEAAiB;AACxH,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,gBAAgB,0DAAQ;AACxB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,6CAA6C,8DAA8D;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,yBAAyB;AACzB;AACA,oBAAoB,4DAAM;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB,YAAY,kEAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,4DAA4D,wEAAwE;AACpI;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0EAAoB;AAC7C;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6DAAO;AACzB;AACA,uBAAuB,kEAAY;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,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,mCAAmC;AACnC,eAAe,6DAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,6DAAO;AACvD;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,QAAQ,kEAAY,eAAe,2DAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,sDAAI;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,QAAQ,uEAAiB;AACzB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEqH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACloJ6b;AACjgB;AACiH;AAC7E;AAC3B;AACX;;AAE/C,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;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,eAAe,cAAc;AAC7B,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,uBAAuB,mEAAiB;AACxC;AACA,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA;AACA,yBAAyB,iEAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,uDAAK,iBAAiB,2EAA2E;AAChI,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,2BAA2B;AAC/E,oDAAoD,2BAA2B;AAC/E;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,+DAAS;AAC3B,sBAAsB,+DAAS;AAC/B;AACA,YAAY,4DAAM;AAClB,SAAS;AACT,wEAAwE,gBAAgB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA,YAAY,4DAAM;AAClB,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA,sBAAsB,+DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,0DAA0D,iDAAiD;AAC3G;AACA,mDAAmD,8CAA8C;AACjG,kDAAkD,gEAAgE;AAClH;AACA,kDAAkD,gDAAgD;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,8CAA8C,6CAA6C;AAC3F;AACA,kDAAkD,gEAAgE;AAClH;AACA,+BAA+B;AAC/B,iDAAiD,+DAA+D;AAChH;AACA,sDAAsD,+DAA+D;AACrH;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,gBAAgB,uDAAK,OAAO,kEAAkE;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,kEAAgB;AAC5B,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+DAAS;AACnC;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,2BAA2B,uEAAiB;AAC5C;AACA,gBAAgB,uEAAiB;AACjC,gBAAgB,+DAAS;AACzB;AACA;AACA,gBAAgB,+DAAS;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;AACA;AACA;AACA;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,gBAAgB,cAAc;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,eAAe,cAAc;AAC7B,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,uBAAuB,mEAAiB;AACxC;AACA,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAW;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,+BAA+B,uDAAK,iBAAiB,2EAA2E;AAChI,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mEAAa,UAAU,2BAA2B;AAC1E,wBAAwB,mEAAa,UAAU,2BAA2B;AAC1E;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,mBAAmB,+DAAS;AAC5B,uBAAuB,+DAAS;AAChC;AACA,YAAY,4DAAM;AAClB,SAAS;AACT,wEAAwE,gBAAgB;AACxF;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA,YAAY,4DAAM;AAClB,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA,qBAAqB,+DAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,6BAA6B,mEAAa,UAAU,kDAAkD;AACtG;AACA,sBAAsB,mEAAa,UAAU,2CAA2C;AACxF,sBAAsB,mEAAa,UAAU,iEAAiE;AAC9G;AACA,oBAAoB,mEAAa,UAAU,gDAAgD;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,mEAAa,UAAU,4CAA4C;AACrF;AACA,sBAAsB,mEAAa,UAAU,iEAAiE;AAC9G;AACA,yBAAyB,mEAAa,UAAU,8DAA8D;AAC9G;AACA,wBAAwB,mEAAa,UAAU,+DAA+D;AAC9G;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,gBAAgB,uDAAK,QAAQ,kEAAkE;AAC/F;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,kEAAgB;AAC5B,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,+DAAS;AACnC;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,2BAA2B,uEAAiB;AAC5C;AACA,gBAAgB,uEAAiB;AACjC,gBAAgB,+DAAS;AACzB;AACA;AACA,gBAAgB,+DAAS;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;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,gBAAgB,cAAc;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,aAAa;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,WAAW,mBAAmB;AAC9B,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,SAAS;AACpB,aAAa,aAAa;AAC1B;AACA;AACA;AACA,8CAA8C,mCAAmC;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sBAAsB;AACxD,+BAA+B,4DAAM;AACrC;AACA;AACA,kCAAkC,sBAAsB;AACxD,+BAA+B,4DAAM;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,mBAAmB;AAC9B,WAAW,SAAS;AACpB,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA,mBAAmB,4DAAM;AACzB;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,2BAA2B;AAC1C;AACA;AACA;AACA;AACA,8BAA8B,2DAAS,GAAG;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC,iBAAiB;AACjB,6BAA6B,8DAAQ;AACrC,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gDAAgD,IAAI,iEAAW,wBAAwB;AACvF,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAQ;AACrC;AACA,2DAA2D,qDAAqD;AAChH,2DAA2D,WAAW;AACtE;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,kCAAkC,iEAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,kDAAkD,qDAAqD;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iFAA8B,iBAAiB,UAAU,kBAAkB;AACnG,iCAAiC,cAAc;AAC/C,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAS;AACvC,sDAAsD,SAAS;AAC/D;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,wBAAwB,+DAAa;AACrC,4BAA4B,uDAAK,WAAW,uCAAuC;AACnF;AACA;AACA,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC,sCAAsC,2EAAmB,sBAAsB,gBAAgB;AAC/F;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,aAAa,kEAAgB;AAC7B;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA,wBAAwB,kEAAY,YAAY,sBAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAc;AAC1B;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,6DAAO;AACnB,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,6DAAO;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iEAAiE,+DAAS;AAC1E,mBAAmB,uEAAiB,iBAAiB,4DAAM;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,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,kCAAkC;AAClC,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,4DAAM;AACxD,kBAAkB,+DAAS;AAC3B;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,uCAAuC,6DAAO;AAC9C;AACA;AACA,gCAAgC,6DAAO;AACvC;AACA;AACA,0CAA0C,iEAAW;AACrD,uCAAuC,iEAAW,WAAW,yDAAK;AAClE;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA,sCAAsC;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,8BAA8B,6DAAO;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,uEAAiB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,6DAAO;AAC5D;AACA;AACA,wDAAwD,+DAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,6DAAO;AAC3C;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,YAAY,uEAAiB;AAC7B;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,+FAA+F,+DAAS;AACxG;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D,oBAAoB,6DAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,+BAA+B;AAC/B,4BAA4B;AAC5B,iCAAiC;AACjC;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA,gCAAgC,kEAAgB;AAChD;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,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA,iEAAiE,kEAAkE;AACnI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iEAAiE,uEAAuE;AACxI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,wEAAgB;AACtD;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,2BAA2B,yDAAK;AAChC;AACA;AACA,8CAA8C,uBAAuB,IAAI;AACzE,gEAAgE;AAChE,sEAAsE,uBAAuB,IAAI,wBAAwB;AACzH;AACA;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC;AACA;AACA;AACA;AACA,yBAAyB,4DAAM;AAC/B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,oDAAoD,oDAAoD;AACxG,qDAAqD,6EAA2B;AAChF;AACA;AACA,SAAS;AACT;AACA,+EAA+E;AAC/E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA,2CAA2C,8DAA8D;AACzG;AACA,SAAS;AACT;AACA;AACA,eAAe,2DAAG,kBAAkB,YAAY,IAAI,sBAAsB;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,6BAA6B;AAC7B;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,wBAAwB,4DAAM;AAC9B;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kEAAY,uBAAuB,sBAAsB;AACrF;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,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,kBAAkB,iEAAS;AAC3B;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA,iCAAiC,yEAAiB;AAClD;AACA;AACA,kBAAkB,iEAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gDAAgD;AACzF,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAiB,qBAAqB,6DAAO;AACpE,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,iEAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,iEAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA,6BAA6B,yEAAiB;AAC9C;AACA;AACA,8BAA8B,iEAAS;AACvC;AACA;AACA,6BAA6B,yEAAiB;AAC9C;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,2DAA2D,iEAAW;AACtE;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,6DAA6D,gCAAgC;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA,6BAA6B,qBAAqB;AAClD;AACA;AACA;AACA,iBAAiB,sEAAmB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,6DAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA6E,6DAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA,aAAa;AACb;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,6DAAO;AAC1C;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA,uDAAuD,kEAAgB;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,kEAAgB;AAC5D,wHAAwH,6DAAO;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;AACA;AACA;AACA,mFAAmF,6DAAO;AAC1F,mCAAmC,6DAAO;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,2BAA2B,6DAAO;AAClC;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA,+CAA+C,kEAAgB;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,kDAAkD,SAAS;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,mBAAmB;AAClC,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,QAAQ;AACvB,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,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,6DAAO;AACtB;AACA;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,eAAe;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,4DAAM;AACzC;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA,0CAA0C,iEAAW;AACrD;AACA;AACA,0CAA0C,iEAAW;AACrD;AACA;AACA;AACA;AACA;AACA,0CAA0C,iEAAW;AACrD;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,WAAW;AAC1F,gCAAgC,4DAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,iEAAW;AAC7C;AACA;AACA,kCAAkC,iEAAW;AAC7C;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,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA,8BAA8B,+DAAS;AACvC,sDAAsD,SAAS;AAC/D;AACA;AACA,oBAAoB,qEAAmB;AACvC;AACA;AACA,wBAAwB,+DAAa;AACrC,sCAAsC,iEAAW,SAAS,uDAAK;AAC/D;AACA;AACA;AACA;AACA;AACA,wBAAwB,qEAAmB;AAC3C;AACA;AACA;AACA;AACA,gBAAgB,qEAAmB;AACnC,sCAAsC,2EAAmB,sBAAsB,gBAAgB;AAC/F;AACA,oBAAoB,qEAAmB;AACvC;AACA;AACA;AACA,aAAa,kEAAgB;AAC7B,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA,6BAA6B,iEAAW,UAAU,gEAAc;AAChE;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;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;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,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,eAAe,6DAAO;AACtB;AACA;AACA,gCAAgC;AAChC,iCAAiC;AACjC,qCAAqC;AACrC,gCAAgC;AAChC;AACA;AACA,4CAA4C,SAAS;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,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,+DAA+D,WAAW;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,4BAA4B,kEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,QAAQ;AACvB,gBAAgB,SAAS;AACzB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,uCAAuC,4DAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,6CAA6C,aAAa;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG,6HAA6H;AAC/I;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,6DAAO,GAAG,oDAAoD;AACtE;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,SAAS,uEAAiB,uBAAuB,uEAAiB;AACpG;AACA;AACA,SAAS;AACT;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,gEAAc;AAC3C;AACA;AACA,SAAS;AACT,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA,aAAa,uEAAiB,UAAU,uEAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB,iBAAiB,+DAAS;AACnE;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,qBAAqB,6DAAO;AAC5B,2BAA2B,+DAAS;AACpC,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iGAAiG,4DAAM,OAAO;AAC9G;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB,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,wCAAwC,+DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B;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,qCAAqC,6DAAO;AAC5C;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAS;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,kCAAkC,6DAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,+DAAS;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,+BAA+B,+DAAS;AACxC;AACA,kCAAkC,+BAA+B;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,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,oKAAoK,+DAAS;AAC7K;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB,CAAC,6DAAO;AACvD;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA,wCAAwC,gCAAgC;AACxE;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,+DAAS;AACrB;AACA,0BAA0B,gCAAgC;AAC1D;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+BAA+B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B,qBAAqB,gEAAU;AAC/B,YAAY,mEAAiB;AAC7B,YAAY,uEAAiB,iBAAiB,kBAAkB;AAChE;AACA,QAAQ,uEAAiB,iBAAiB,gBAAgB;AAC1D;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,iBAAiB,UAAU,gEAAU,wBAAwB,gEAAU,cAAc;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,wDAAwD;AAC1G;AACA;AACA,kDAAkD,wDAAwD;AAC1G;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,YAAY,uEAAiB,iBAAiB,oBAAoB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,+DAAS;AAC/B,gBAAgB,+DAAS;AACzB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,aAAa,uEAAiB,gBAAgB,+DAAS;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;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,mEAAiB;AACjC;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,+DAAS;AACxD;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;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,QAAQ,uEAAiB,iBAAiB,sBAAsB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,+DAAS;AAC/C,oBAAoB,+DAAS;AAC7B;AACA;AACA;AACA,oBAAoB,+DAAS;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,gBAAgB,uEAAiB,OAAO,uCAAuC;AAC/E;AACA;AACA,gBAAgB,uEAAiB,OAAO,uCAAuC;AAC/E;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT,sBAAsB,+DAAS;AAC/B,yCAAyC,QAAQ;AACjD;AACA;AACA,gBAAgB,uEAAiB,gBAAgB,iBAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB,kBAAkB,4DAAM;AACxB;AACA;AACA;AACA;AACA,aAAa;AACb,uDAAuD,sDAAsD;AAC7G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA,YAAY,uEAAiB,iBAAiB,cAAc;AAC5D;AACA,4BAA4B,yDAAK;AACjC;AACA;AACA;AACA;AACA;AACA,6BAA6B,2CAA2C;AACxE,6CAA6C,sBAAsB,IAAI;AACvE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,aAAa,iCAAiC;AAC3E,YAAY,uEAAiB,aAAa,sDAAsD;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAiB,mBAAmB,+BAA+B;AAC3E;AACA;AACA;AACA;AACA,uEAAuE,yEAAiB;AACxF;AACA;AACA,QAAQ,+DAAS;AACjB;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA,4BAA4B,iCAAiC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,mBAAmB,kCAAkC;AAClF;AACA;AACA;AACA,YAAY,uEAAiB,mBAAmB,0FAA0F;AAC1I;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,+DAAS;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,8BAA8B,QAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,sCAAsC,6CAA6C;AACxH;AACA;AACA,oBAAoB,uEAAiB,sCAAsC,4CAA4C;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,gCAAgC,uEAAiB,WAAW,iBAAiB;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB,sCAAsC,6CAA6C;AAC5H;AACA;AACA,wBAAwB,uEAAiB,sCAAsC,4CAA4C;AAC3H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,8BAA8B;AAC5E,YAAY,mEAAiB,eAAe,mEAAiB;AAC7D;AACA;AACA,kDAAkD,uCAAuC;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAS;AACjC;AACA;AACA;AACA,YAAY,+DAAS;AACrB;AACA,gCAAgC,uEAAiB;AACjD,kBAAkB,uEAAiB,kDAAkD,+DAAS;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;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,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,OAAO,gBAAgB;AACpD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,iBAAiB,uEAAiB;AAClC;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,OAAO,yCAAyC;AACjF;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,gCAAgC,+DAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,gBAAgB;AAChF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;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;AACA;AACA;AACA;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,yBAAyB;AAC3E,kDAAkD,2BAA2B;AAC7E,kDAAkD,0BAA0B;AAC5E;AACA;AACA;AACA,aAAa;AACb;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,sBAAsB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,6BAA6B;AAC7C,gBAAgB,SAAS;AACzB;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,+DAA+D,SAAS;AACxE;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B,gBAAgB,QAAQ;AACxB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,SAAS;AACT,0CAA0C,qBAAqB;AAC/D;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,yBAAyB,+DAAS;AAClC;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC;AACA;AACA;AACA;AACA;AACA,iCAAiC,+DAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2CAA2C;AAC3D;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA,uCAAuC,+DAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,+DAA+D,gBAAgB;AAC/E;AACA;AACA;AACA,iCAAiC,+DAAS;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,cAAc,uEAAiB;AACjE;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,uEAAiB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA,iCAAiC,6DAAO;AACxC;AACA;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA,yCAAyC;AACzC;AACA,iBAAiB,uEAAiB;AAClC;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,iEAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,wBAAwB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iEAAW;AAChC;AACA,kDAAkD,8BAA8B;AAChF;AACA,0DAA0D,6EAA2B;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,2DAAM,GAAG,yCAAyC;AAC3E;AACA;AACA;AACA,YAAY,uEAAiB,QAAQ,SAAS,gEAAU,cAAc;AACtE;AACA;AACA;AACA;AACA;AACA,mDAAmD,qBAAqB;AACxE;AACA;AACA,kDAAkD,6EAA2B;AAC7E,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,uEAAiB;AAClE,sDAAsD,uEAAiB;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,eAAe,uEAAiB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;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,iBAAiB,uEAAiB;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,gBAAgB,cAAc;AAC9B,gBAAgB,cAAc;AAC9B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAwB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,uEAAiB;AACrD;AACA;AACA,4DAA4D,+DAAS;AACrE;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,SAAS,SAAS,gEAAU,iBAAiB;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,UAAU,gEAAU,kBAAkB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA,uCAAuC,+DAAS;AAChD;AACA;AACA;AACA;AACA,6CAA6C,+DAAS;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG,oDAAoD;AACtE;AACA;AACA,QAAQ,6DAAO,GAAG,sDAAsD;AACxE;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,eAAe,sBAAsB;AACrC;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAe;AAC7C;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;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;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B,qBAAqB,gEAAU;AAC/B,QAAQ,uEAAiB,iBAAiB,kCAAkC;AAC5E,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,4DAAM;AAClE;AACA;AACA;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA,gBAAgB,0EAAwB;AACxC,gBAAgB,kEAAgB;AAChC,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA,sCAAsC,kEAAY,iBAAiB,4BAA4B;AAC/F;AACA;AACA,iCAAiC,gEAAc;AAC/C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA,uBAAuB,6DAAO;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,sBAAsB,4DAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA,6BAA6B,cAAc;AAC3C;AACA;AACA,kDAAkD,0BAA0B;AAC5E,sDAAsD,4BAA4B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC,oBAAoB,kEAAgB;AACpC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAgB;AACxC,wBAAwB,kEAAgB;AACxC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6DAAO;AAC7B;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B,uBAAuB,6DAAO;AAC9B,uBAAuB,6DAAO;AAC9B,0BAA0B,uEAAiB,cAAc,uEAAiB;AAC1E;AACA;AACA;AACA;AACA,sBAAsB,4DAAM;AAC5B;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC,yBAAyB,uEAAiB,eAAe,uEAAiB,CAAC,4DAAM;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uEAAiB,CAAC,4DAAM;AAChE;AACA,0CAA0C,uEAAiB,CAAC,4DAAM,iCAAiC,uEAAiB,CAAC,6DAAO;AAC5H,wCAAwC,uEAAiB,CAAC,4DAAM,mCAAmC,6DAAO;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,wDAAwD,0BAA0B;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,gBAAgB,uEAAiB;AAC/D,6BAA6B,4DAAM;AACnC,4BAA4B,6DAAO;AACnC;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,gBAAgB,+DAAS;AACzB;AACA;AACA;AACA;AACA;AACA,uCAAuC,4DAAM;AAC7C;AACA,qBAAqB;AACrB;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,2BAA2B,iEAAW,kBAAkB;AACzG;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA;AACA;AACA,kDAAkD,iEAAW;AAC7D,SAAS;AACT;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,6EAA2B;AACzD;AACA;AACA,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA,kBAAkB,4DAAM;AACxB,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,wDAAwD,0BAA0B;AAClF,oDAAoD,sCAAsC;AAC1F;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA;AACA;AACA,gCAAgC,6EAA2B;AAC3D;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA,aAAa,uEAAiB,yCAAyC,uEAAiB;AACxF;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,6EAA2B;AACvD;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B,sBAAsB,4DAAM;AAC5B;AACA;AACA;AACA;AACA;AACA,kDAAkD,gDAAgD,iEAAW,iBAAiB;AAC9H,QAAQ,gEAAU,YAAY,uBAAuB;AACrD,8CAA8C,sBAAsB;AACpE;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA,oBAAoB,6EAA2B;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC,YAAY,uEAAiB,WAAW,+DAAS;AACjD;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4DAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;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,gBAAgB,uEAAiB,SAAS,iCAAiC;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,gCAAgC,yBAAyB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uBAAuB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC,YAAY,uEAAiB,WAAW,+DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4DAAM;AACzB;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,gBAAgB,uEAAiB,SAAS,gDAAgD;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,gCAAgC,0BAA0B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,+DAA+D;AAC/E,gBAAgB,QAAQ;AACxB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA,YAAY,uEAAiB,SAAS,uEAAiB,CAAC,4DAAM;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,cAAc,2CAA2C;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,gBAAgB,QAAQ;AACxB;AACA,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,2BAA2B,4DAAM;AACjC;AACA;AACA;AACA,iBAAiB;AACjB,mCAAmC,4DAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB,SAAS;AACT;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;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,gBAAgB,gBAAgB;AAChC,gBAAgB,gBAAgB;AAChC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAwB;AAChE;AACA;AACA,uCAAuC,+DAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,uEAAiB;AAC7E;AACA,oCAAoC,iEAAW;AAC/C;AACA;AACA,oCAAoC,8DAAQ;AAC5C;AACA;AACA,2DAA2D,uEAAiB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,uEAAiB;AAC7E;AACA;AACA,2DAA2D,uEAAiB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4DAAM;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,oBAAoB,uEAAiB,iBAAiB,UAAU,gEAAU,kBAAkB;AAC5F;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,SAAS,gEAAU,iBAAiB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,UAAU,aAAa,IAAI,cAAc,GAAG,eAAe,qBAAqB;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,6CAA6C,iEAAW;AACxD;AACA;AACA;AACA;AACA,QAAQ,gEAAU,iBAAiB,oCAAoC;AACvE,oCAAoC,wEAAgB;AACpD;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,eAAe,kBAAkB;AACjC,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,UAAU,cAAc,IAAI,oBAAoB,GAAG,eAAe,EAAE;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B,eAAe,QAAQ;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,6CAA6C,iEAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU,iBAAiB,oCAAoC;AACvE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,WAAW;AAC1B,eAAe,WAAW;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;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,yBAAyB;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,qEAAqE,6EAA2B;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,wBAAwB,gBAAgB;AACxC;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG,6HAA6H;AAC/I;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG,sDAAsD;AACxE;AACA;AACA,QAAQ,6DAAO,GAAG,uDAAuD;AACzE;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,eAAe,sBAAsB;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,yBAAyB,4DAAM;AAC/B;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,gCAAgC;AAC5D;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;AACjB;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,mBAAmB,mEAAiB;AACpC;AACA,QAAQ,uEAAiB,iBAAiB,SAAS,gEAAU,wBAAwB,gEAAU,eAAe;AAC9G;AACA,QAAQ,gEAAU,iBAAiB,0BAA0B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,mDAAmD,sDAAsD,qBAAqB;AAC9H,4EAA4E,iEAAW;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,cAAc,uEAAiB;AAChE,qCAAqC,sCAAsC;AAC3E;AACA,SAAS;AACT;AACA,wDAAwD,0BAA0B;AAClF,kFAAkF,yBAAyB;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,CAAC,4DAAM,wCAAwC,uEAAiB,CAAC,4DAAM;AACrG;AACA,2BAA2B,4DAAM;AACjC,iBAAiB,uEAAiB;AAClC,gBAAgB,kEAAY,iBAAiB,yBAAyB;AACtE;AACA;AACA,gBAAgB,+DAAS;AACzB,+BAA+B,4DAAM;AACrC,2DAA2D,kEAAkE;AAC7H,6BAA6B,4DAAM;AACnC,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAS;AACnC,iBAAiB,uEAAiB;AAClC,gCAAgC,uBAAuB;AACvD;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,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA,6DAA6D,wBAAwB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE;AACvE,qBAAqB;AACrB;AACA;AACA,qBAAqB;AACrB;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA,oBAAoB,+DAAS;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,gEAAU,gBAAgB,iBAAiB;AACnD,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,sBAAsB,4DAAM;AAC5B,sBAAsB,+DAAS;AAC/B;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD;AACA,oBAAoB,8DAAQ;AAC5B,oBAAoB,gEAAU,qBAAqB,0EAA0E;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,mCAAmC,uDAAK,gBAAgB,qCAAqC;AAC7F;AACA;AACA;AACA;AACA,sBAAsB,+DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAiB,iBAAiB,uEAAiB;AAC1E,uBAAuB,uEAAiB,iBAAiB,uEAAiB;AAC1E,iBAAiB,uEAAiB,2BAA2B,uEAAiB,iBAAiB,uEAAiB;AAChH;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,6EAA2B;AACjD;AACA;AACA,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,8BAA8B,0BAA0B;AAC9G;AACA,6BAA6B,uEAAiB;AAC9C,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,qDAAqD,0BAA0B;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C,iDAAiD,IAAI;AACrD;AACA,oDAAoD,uCAAuC;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,+DAAS;AACpC,8DAA8D,6CAA6C;AAC3G,8DAA8D,uEAAuE;AACrI;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B,sBAAsB,4DAAM;AAC5B,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,+DAAS;AAClD;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,sBAAsB,+DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAS;AACxB;AACA;AACA,kBAAkB,4DAAM;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,aAAa,uEAAiB;AAC9B;AACA,gBAAgB,uEAAiB,WAAW,wBAAwB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,WAAW,+BAA+B;AAC3E;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA,gBAAgB,2DAAS;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,YAAY,uEAAiB,aAAa,uEAAiB;AAC3D;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,wBAAwB,uEAAiB,+CAA+C;AACxF,eAAe,uEAAiB,gCAAgC,uEAAiB;AACjF;AACA,wEAAwE;AACxE;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAAM;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,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAS;AACzB;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,iFAAiF,4CAA4C;AAC7H;AACA;AACA;AACA;AACA,kFAAkF,4CAA4C;AAC9H;AACA;AACA;AACA,sEAAsE,4CAA4C;AAClH;AACA;AACA;AACA,4CAA4C,+DAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,6DAAO,CAAC,6EAA2B;AAChE;AACA;AACA,gCAAgC,6EAA2B;AAC3D;AACA;AACA;AACA,yBAAyB,6DAAO;AAChC;AACA;AACA,aAAa,uEAAiB;AAC9B,uCAAuC;AACvC;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B,uCAAuC,uEAAiB;AACxD;AACA,sBAAsB,6EAA2B;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,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAAM;AACxB;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,YAAY,8DAAQ;AACpB;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,sBAAsB;AACtB,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,iEAAW;AACnB;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4DAAM;AAC/B,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,6FAA6F;AAChI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,2CAA2C,4DAAM;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,gBAAgB,oEAAoE;AACzH;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,uEAAiB,iBAAiB,kBAAkB;AAChE;AACA;AACA;AACA;AACA,0BAA0B,+DAAS;AACnC,gCAAgC,gBAAgB;AAChD,iEAAiE;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAM;AACpC;AACA;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,gBAAgB,iCAAiC;AAC9E;AACA;AACA,YAAY,uEAAiB,gBAAgB,kBAAkB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,4DAAM;AACxB,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B,kBAAkB,4DAAM;AACxB,wBAAwB,4DAAM;AAC9B;AACA,YAAY,uEAAiB,QAAQ,yBAAyB;AAC9D,4BAA4B,uEAAiB;AAC7C;AACA,gBAAgB,uEAAiB,QAAQ,gEAAgE;AACzG;AACA;AACA,gBAAgB,uEAAiB,QAAQ,uBAAuB;AAChE;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB,QAAQ,mCAAmC;AAC5E;AACA;AACA,gBAAgB,uEAAiB,QAAQ,yBAAyB;AAClE;AACA,2BAA2B,uEAAiB;AAC5C;AACA,gBAAgB,uEAAiB,QAAQ,6FAA6F;AACtI;AACA;AACA,gBAAgB,uEAAiB,QAAQ,iCAAiC;AAC1E;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,uCAAuC;AACvC,uCAAuC;AACvC,sBAAsB,+DAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,0BAA0B,2DAA2D;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB,yCAAyC,4DAAM;AAC/C,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAM;AAChC;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,6BAA6B;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,4DAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,aAAa,uEAAiB;AAC9B,mCAAmC,uDAAK,gBAAgB,qCAAqC;AAC7F;AACA,6BAA6B,gEAAc,iBAAiB,oEAAoE;AAChI,gCAAgC,gEAAc;AAC9C;AACA,0BAA0B,2DAA2D;AACrF;AACA,SAAS;AACT;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB,kBAAkB,uEAAiB;AACjE;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA,sCAAsC,6DAAO;AAC7C;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,QAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,+DAAS;AAChF,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B,sBAAsB,4DAAM;AAC5B,aAAa,uEAAiB;AAC9B;AACA;AACA,mBAAmB,6DAAO;AAC1B,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA,mCAAmC,+DAAS;AAC5C;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA,sDAAsD,uEAAiB;AACvE;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B,mCAAmC,uEAAiB;AACpD,yBAAyB,4DAAM;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,aAAa,uEAAiB;AAC9B,0CAA0C,sDAAI,UAAU,8BAA8B;AACtF;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA,gCAAgC,uEAAiB;AACjD;AACA;AACA;AACA;AACA;AACA,kCAAkC,4DAAM;AACxC,kCAAkC,4DAAM;AACxC;AACA,oCAAoC,uEAAiB;AACrD,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,uEAAiB;AACzE,mEAAmE,uEAAiB;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,4DAAM;AAC1C;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAS;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA,gEAAgE,uEAAiB;AACjF;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAO;AACtC;AACA,gEAAgE,uEAAiB;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,gBAAgB,8DAAQ;AACxB;AACA,YAAY,iEAAW;AACvB,iBAAiB,uEAAiB;AAClC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,WAAW;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;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,QAAQ,4DAAM;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,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB;AACA,iBAAiB,KAAK;AACtB;AACA;AACA,sBAAsB,+DAAS;AAC/B,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,eAAe,QAAQ;AACvB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,4DAAM;AAC5B,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAAS;AACtC;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,qCAAqC,uEAAiB;AACtD;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,2BAA2B,4DAAM;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB,wCAAwC,uEAAiB;AAChG,mDAAmD,uEAAiB,iBAAiB,uEAAiB;AACtG;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAiB,kBAAkB,uEAAiB;AAC7F;AACA;AACA;AACA,iCAAiC;AACjC,qBAAqB;AACrB;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+DAAS;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA,kBAAkB,+DAAS;AAC3B,YAAY,uEAAiB;AAC7B;AACA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,4DAAM,mEAAmE,4DAAM;AAC5G,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,wCAAwC,uCAAuC;AAC/E;AACA,8CAA8C,6DAAO;AACrD,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,+DAAS;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uDAAuD;AACrG;AACA;AACA,mCAAmC,+DAAS;AAC5C;AACA,oBAAoB,+DAAS;AAC7B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,SAAS;AACxB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA,mBAAmB,+DAAS;AAC5B,YAAY,uEAAiB;AAC7B;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,oBAAoB,+DAAS;AAC7B;AACA;AACA,4CAA4C,QAAQ;AACpD;AACA;AACA;AACA;AACA;AACA,oDAAoD,wBAAwB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,wBAAwB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,sBAAsB;AACrC,eAAe,OAAO;AACtB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B,sBAAsB,+DAAS;AAC/B,uBAAuB,4DAAM;AAC7B;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C,gBAAgB,4DAAM;AACtB;AACA;AACA,+BAA+B,uEAAiB;AAChD,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA,uCAAuC,uBAAuB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C,sCAAsC,+DAAS;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,gBAAgB,QAAQ;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB,KAAK;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B,gBAAgB,UAAU;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,OAAO,gEAAU,iBAAiB;AACxF;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,QAAQ,gEAAU,kBAAkB;AAC1F;AACA;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;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,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB,gBAAgB,4DAAM;AACtB;AACA,2BAA2B,uEAAiB,iBAAiB,uEAAiB;AAC9E,2BAA2B,uEAAiB,iBAAiB,uEAAiB;AAC9E;AACA,0DAA0D,8BAA8B,0BAA0B;AAClH,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,yDAAyD,0BAA0B;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA,+BAA+B,uEAAiB;AAChD,mDAAmD,IAAI;AACvD;AACA,yDAAyD,qCAAqC;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,uEAAiB;AAChE;AACA,8BAA8B,6EAA2B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,iEAAiE;AACjE,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA;AACA,qDAAqD,yBAAyB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,wBAAwB,4DAAM;AAC9B,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG,oDAAoD;AACtE;AACA;AACA,QAAQ,6DAAO,GAAG,sDAAsD;AACxE;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,QAAQ;AACzB;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,aAAa;AACb;AACA;AACA;AACA;AACA,0BAA0B,2DAAS,GAAG;AACtC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B,iCAAiC,mBAAmB;AACpD;AACA,YAAY,uEAAiB;AAC7B,iCAAiC,kBAAkB;AACnD;AACA,YAAY,uEAAiB;AAC7B,iCAAiC,mBAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;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,0BAA0B,0DAAQ,GAAG,6DAAW;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kEAAY;AACpC;AACA;AACA;AACA;AACA,4BAA4B,kEAAY;AACxC;AACA;AACA,qBAAqB,0DAAQ,GAAG,6DAAW;AAC3C;AACA;AACA,sBAAsB,4DAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6DAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,6DAAW;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qDAAqD,UAAU;AAC/D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qDAAqD,UAAU;AAC/D,iBAAiB;AACjB;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA,wBAAwB,uDAAK;AAC7B;AACA,qDAAqD,gBAAgB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,sEAAmB;AAC3B,aAAa,uEAAiB,YAAY,uEAAiB;AAC3D;AACA;AACA;AACA;AACA;AACA,2CAA2C,8DAAQ;AACnD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,sEAAmB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,+DAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,6DAAW,iCAAiC,uDAAK;AACtF,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,6DAAW;AACvD,6CAA6C,uDAAK;AAClD,4CAA4C,0BAA0B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8BAA8B;AAC9D;AACA,yCAAyC,6DAAW;AACpD,yCAAyC,uDAAK;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,6DAAW;AACrD,yCAAyC,uDAAK;AAC9C,wCAAwC,4BAA4B;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,6DAAW;AAC1F;AACA,oCAAoC,8BAA8B;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,8DAAQ;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,+BAA+B;AAChE;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,iCAAiC,6DAAW;AAC5C,iCAAiC,uDAAK;AACtC;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAS;AACrC;AACA,wBAAwB,0BAA0B;AAClD,uBAAuB,6DAAO;AAC9B;AACA;AACA,0CAA0C,6DAAW;AACrD,qCAAqC,uDAAK;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC;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,4BAA4B,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mCAAmC;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,uEAAc,6BAA6B,2BAA2B;AACpG;AACA;AACA,uBAAuB,4DAAM;AAC7B;AACA,2FAA2F,uEAAiB;AAC5G,6BAA6B,8DAAQ;AACrC;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4DAAM;AAC/B,QAAQ,2EAAkB;AAC1B;AACA;AACA;AACA,0BAA0B,8DAAQ;AAClC,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,8CAA8C,6DAAW;AACzD,4BAA4B,eAAe;AAC3C;AACA,8DAA8D,uEAAiB,CAAC,8DAAQ,2BAA2B,uEAAiB,CAAC,8DAAQ;AAC7I;AACA;AACA;AACA,+DAA+D,uEAAiB,CAAC,8DAAQ;AACzF;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD,uDAAuD,uEAAiB,CAAC,8DAAQ;AACjF;AACA;AACA,iBAAiB,uEAAiB,CAAC,8DAAQ,8BAA8B,uEAAiB,CAAC,8DAAQ;AACnG;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uDAAK;AAChC,iBAAiB,yEAAsB;AACvC;AACA,wBAAwB,eAAe;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,yEAAsB,OAAO,sEAAmB;AACnE;AACA;AACA;AACA;AACA,qBAAqB,+DAAS;AAC9B,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA,yBAAyB,+DAAS;AAClC,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,qBAAqB,+DAAS;AAC9B,wBAAwB,mBAAmB;AAC3C,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA;AACA,qBAAqB,+DAAS;AAC9B;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,qBAAqB;AACtD;AACA;AACA;AACA;AACA,4BAA4B,+DAAS;AACrC;AACA,4BAA4B,sBAAsB;AAClD;AACA,gCAAgC,4DAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,+DAAS;AACzC,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA,+BAA+B,+DAAS;AACxC,qCAAqC,+DAAS;AAC9C,wBAAwB,+DAAS;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC,iBAAiB,uEAAiB;AAClC,oCAAoC,6DAAO;AAC3C;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,+BAA+B,4DAAM;AACrC;AACA,iBAAiB,uEAAiB;AAClC,6BAA6B,+DAAS;AACtC;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;AACA,yBAAyB,uEAAiB,2BAA2B,uEAAiB,CAAC,8DAAQ;AAC/F,uCAAuC,8DAAQ;AAC/C;AACA;AACA;AACA,8DAA8D,iEAAW;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kFAAkF,iEAAW;AAC7F;AACA;AACA;AACA;AACA,0DAA0D,iEAAW;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+DAAS;AAC1B,aAAa,uEAAiB;AAC9B,yCAAyC,UAAU;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,uBAAuB;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,4DAAM;AACrC;AACA;AACA;AACA;AACA,6BAA6B,+DAAS;AACtC;AACA,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA,oCAAoC,2BAA2B;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kBAAkB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAW,iCAAiC,uDAAK;AAChF;AACA;AACA;AACA;AACA,oDAAoD,4DAAM;AAC1D,4CAA4C,4DAAM;AAClD;AACA;AACA;AACA,oCAAoC,uBAAuB;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,2EAA2E,6DAAW;AACtF;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA,wCAAwC,4DAAM;AAC9C;AACA;AACA;AACA,+BAA+B,8DAAQ;AACvC;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,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA,gDAAgD,4DAAM;AACtD,wCAAwC,4DAAM;AAC9C;AACA,8CAA8C,4DAAM;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,8DAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA,sBAAsB,4DAAM;AAC5B;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,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6CAA6C,uEAAiB;AAC/E;AACA;AACA,sBAAsB,4DAAM;AAC5B,aAAa,uEAAiB;AAC9B;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,0DAAQ,GAAG,6DAAW;AACpD,YAAY,8DAAY;AACxB,kCAAkC,0DAAQ,GAAG,6DAAW;AACxD;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+DAAS;AACrC;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA,sBAAsB,4DAAM;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,mBAAmB;AACpD;AACA,kDAAkD,6DAAW;AAC7D;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD,gCAAgC,4DAAM;AACtC,yBAAyB,uEAAiB;AAC1C,mCAAmC,4DAAM,mBAAmB,4DAAM;AAClE,6BAA6B,uEAAiB;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,SAAS;AACT;AACA;AACA,oBAAoB,4DAAM;AAC1B,aAAa,uEAAiB;AAC9B,uBAAuB,4DAAM,mBAAmB,4DAAM;AACtD,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAS;AAC9B;AACA;AACA,iCAAiC,mBAAmB;AACpD,4BAA4B,kBAAkB;AAC9C,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kEAAgB;AACrC,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA,oCAAoC,4DAAM;AAC1C,kCAAkC,4DAAM;AACxC;AACA;AACA;AACA,uCAAuC,6DAAO;AAC9C,yBAAyB,uEAAiB;AAC1C,2CAA2C,4DAAM;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,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,2BAA2B,4DAAM;AACjC;AACA;AACA,sCAAsC,4DAAM;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA,oCAAoC,4DAAM;AAC1C,yBAAyB;AACzB;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA,iCAAiC,uEAAiB;AAClD;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA,kDAAkD,6DAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA,iBAAiB,4DAAM;AACvB;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,8CAA8C,6DAAW;AACzD;AACA;AACA,gBAAgB,uEAAiB,cAAc,uEAAiB;AAChE,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA,kDAAkD,6DAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,qDAAqD,UAAU;AAC/D,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA,qCAAqC,sEAAmB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,kDAAkD,6DAAW;AAC7D;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,iCAAiC,sEAAmB;AACpD;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,uEAAiB;AACrE;AACA;AACA;AACA,iCAAiC;AACjC;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,gFAAgF;AAC5I;AACA,2BAA2B,8DAAQ;AACnC;AACA;AACA,yDAAyD,YAAY;AACrE,wCAAwC,8DAAQ;AAChD,0CAA0C,uEAAiB,oDAAoD,gFAAgF;AAC/L;AACA,mCAAmC,8DAAQ;AAC3C;AACA,kCAAkC,uEAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,8CAA8C,YAAY;AAC1D,iBAAiB,uEAAiB,iBAAiB,uEAAiB,CAAC,8DAAQ;AAC7E,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAS;AAClC,iDAAiD,SAAS;AAC1D;AACA;AACA,gCAAgC,6DAAO;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,YAAY,uEAAiB,4DAA4D,uEAAiB;AAC1G;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,qCAAqC,eAAe;AACpD;AACA,oBAAoB,+DAAS;AAC7B;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,aAAa,uEAAiB;AAC9B;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,6BAA6B,mBAAmB;AAChD;AACA;AACA;AACA,iBAAiB,6CAA6C,uEAAiB;AAC/E;AACA;AACA,0DAA0D,kEAAgB;AAC1E;AACA;AACA;AACA;AACA;AACA,oEAAoE,6DAAO;AAC3E;AACA;AACA;AACA,sCAAsC,6DAAO;AAC7C;AACA;AACA;AACA,mBAAmB,4DAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4DAAM;AACvB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAS;AAClC,4BAA4B,mBAAmB;AAC/C;AACA;AACA,iCAAiC,4DAAM,mBAAmB,4DAAM;AAChE,yBAAyB,uEAAiB;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,yCAAyC,+DAAS;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,6DAAO,CAAC,6DAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4DAAM;AACjC;AACA;AACA;AACA,iCAAiC,6DAAW,iCAAiC,uDAAK;AAClF,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,sCAAsC,6DAAW,iCAAiC,uDAAK;AACvF,gCAAgC,wBAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,0BAA0B;AAC1D;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,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,mCAAmC,yBAAyB;AAC5D,8BAA8B,8DAAQ;AACtC;AACA;AACA;AACA,6CAA6C,uEAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mEAAmE,uEAAiB;AACpF;AACA;AACA,kCAAkC,8DAAQ;AAC1C;AACA,oBAAoB,8DAAQ;AAC5B,6BAA6B,8DAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,4DAAM;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAO,CAAC,6DAAO;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,oBAAoB,4DAAM;AAC1B,YAAY,uEAAiB;AAC7B,2BAA2B,4DAAM;AACjC;AACA,eAAe,uEAAiB,WAAW,uEAAiB;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,gBAAgB,uEAAiB;AACjC;AACA;AACA,UAAU,QAAQ,+DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,UAAU,QAAQ,+DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,QAAQ,+DAAS;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,QAAQ,+DAAS;AAC3B;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,+DAAS;AACnC;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,aAAa,uEAAiB,CAAC,6DAAO,4BAA4B,6DAAO;AACzE;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA,sFAAsF,4DAAM,8BAA8B,4DAAM;AAChI;AACA,kCAAkC,4DAAM;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,8DAAQ;AAC3B;AACA,eAAe,4DAAM;AACrB;AACA;AACA;AACA,iBAAiB,6BAA6B,uEAAiB;AAC/D;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,6BAA6B,wDAAwD;AACrF;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA,sBAAsB,4DAAM;AAC5B;AACA,qDAAqD,+BAA+B,uBAAuB;AAC3G;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B,wBAAwB,qEAAiB;AACzC;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,8DAAQ;AAC/B;AACA;AACA,aAAa,4DAAM;AACnB;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B,oBAAoB,6DAAO;AAC3B,QAAQ,4DAAM;AACd,8CAA8C,6DAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,sBAAsB,8DAAQ;AAC9B,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,YAAY,kEAAgB;AAC5B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,gEAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,2DAA2D,YAAY;AACvE,6BAA6B,8DAAQ;AACrC,qBAAqB,uEAAiB,uBAAuB,uEAAiB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,6CAA6C,YAAY;AACzD,yBAAyB,8DAAQ;AACjC;AACA;AACA;AACA,0DAA0D,uEAAiB,CAAC,8DAAQ;AACpF,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA,uDAAuD,6DAAW,KAAK,uEAAiB,CAAC,8DAAQ;AACjG;AACA,kDAAkD,8DAAQ;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,2DAAS;AACpC;AACA;AACA;AACA;AACA;AACA,+BAA+B,6DAAO;AACtC,+BAA+B,6DAAO;AACtC,+BAA+B,6DAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,CAAC,4DAAM;AAC5C,4DAA4D,oCAAoC;AAChG;AACA;AACA;AACA,0DAA0D,qBAAqB;AAC/E;AACA;AACA;AACA,8DAA8D,4CAA4C;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,gBAAgB,8DAAQ;AACxB,+BAA+B,6DAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA,aAAa;AACb;AACA,8CAA8C,YAAY,OAAO,uEAAiB,2BAA2B,kEAAgB,gBAAgB;AAC7I;AACA,aAAa;AACb;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA,gCAAgC,6DAAO;AACvC;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA,+BAA+B,6DAAO;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT,2BAA2B,2DAAS;AACpC;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,4DAAM;AACd,QAAQ,iEAAW;AACnB;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B,uBAAuB,6DAAO;AAC9B,mBAAmB,4DAAM;AACzB,QAAQ,iEAAW;AACnB;AACA;AACA;AACA,gDAAgD,uEAAiB;AACjE;AACA;AACA;AACA,yBAAyB,6DAAO;AAChC,+BAA+B,6DAAO;AACtC,2BAA2B,6DAAO;AAClC,yBAAyB,6DAAO;AAChC;AACA;AACA;AACA,yCAAyC,4DAAM;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,yCAAyC;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,6DAAO;AACjC,0BAA0B,6DAAO;AACjC;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA,sDAAsD,6DAAW;AACjE;AACA;AACA;AACA;AACA;AACA,6BAA6B,+DAAS;AACtC;AACA;AACA,sDAAsD,UAAU;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,qBAAqB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,6DAAW;AACzD;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC,uBAAuB,6DAAO;AAC9B,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B,2BAA2B,6DAAO;AAClC,2BAA2B,6DAAO;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,2BAA2B,6DAAO;AAClC,2BAA2B,6DAAO;AAClC,2BAA2B,6DAAO;AAClC;AACA;AACA,6BAA6B,4DAAM;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,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA,iBAAiB,4DAAM;AACvB,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,YAAY,uEAAiB;AAC7B,gBAAgB,uEAAiB;AACjC,gBAAgB,wEAAqB;AACrC;AACA,uBAAuB,4DAAM;AAC7B;AACA;AACA;AACA,qBAAqB,sEAAmB;AACxC;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,wEAAqB;AACrC;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA,gBAAgB,uEAAiB;AACjC,gBAAgB,wEAAqB;AACrC;AACA,uBAAuB,4DAAM;AAC7B;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA,gBAAgB,wEAAqB;AACrC,uBAAuB,4DAAM;AAC7B,gBAAgB,iEAAW;AAC3B;AACA,qBAAqB,sEAAmB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,4DAAM;AACjC,YAAY,4DAAM;AAClB,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,4DAAM;AACxC;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,iDAAiD,SAAS;AAC1D;AACA;AACA,0CAA0C,4DAAM;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6DAAO;AACzC;AACA;AACA;AACA;AACA;AACA,sCAAsC,6DAAO;AAC7C;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA,2DAA2D,6DAAO;AAClE;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;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,8CAA8C,4DAAM;AACpD;AACA,wDAAwD,6DAAW;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,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC,6BAA6B,4DAAM;AACnC,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA,iDAAiD,oBAAoB;AACrE;AACA;AACA;AACA;AACA,yBAAyB,+DAAS;AAClC,gDAAgD,sBAAsB;AACtE;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAS;AAClC,gDAAgD,sBAAsB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA,iDAAiD,SAAS;AAC1D;AACA,2BAA2B,4DAAM,oBAAoB,4DAAM;AAC3D,qBAAqB,uEAAiB;AACtC;AACA;AACA,qCAAqC,4DAAM;AAC3C;AACA;AACA;AACA;AACA,8DAA8D,+DAAS;AACvE,6CAA6C,SAAS;AACtD;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA,iDAAiD,SAAS;AAC1D;AACA,2BAA2B,4DAAM,mBAAmB,4DAAM;AAC1D,qBAAqB,uEAAiB;AACtC;AACA;AACA,mCAAmC,4DAAM;AACzC;AACA;AACA;AACA;AACA,8DAA8D,+DAAS;AACvE,6CAA6C,SAAS;AACtD;AACA,wBAAwB,6DAAO;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C,qBAAqB,+DAAS;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC,2BAA2B,6DAAO;AAClC,aAAa,uEAAiB;AAC9B;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,+DAAS;AAC1D;AACA;AACA,6BAA6B,mBAAmB;AAChD,qBAAqB,+DAAS;AAC9B;AACA;AACA;AACA,6BAA6B,mBAAmB;AAChD,qBAAqB,+DAAS;AAC9B,6CAA6C,SAAS;AACtD;AACA;AACA;AACA;AACA;AACA,yBAAyB,6DAAW;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,SAAS;AAC1D,6BAA6B,6DAAW;AACxC,yBAAyB,8DAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA,uBAAuB,4DAAM,iBAAiB,4DAAM;AACpD,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,kFAA+B;AAChD;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,wBAAwB,4DAAM;AAC9B;AACA,6FAA6F,uEAAiB;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,4DAAM;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,eAAe;AAC/C;AACA;AACA,4CAA4C,uEAAiB,aAAa,uEAAiB;AAC3F;AACA,mCAAmC,4DAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD;AACA;AACA,gDAAgD,uEAAiB,aAAa,uEAAiB;AAC/F;AACA,uCAAuC,4DAAM;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,eAAe;AACnD,wCAAwC,mBAAmB;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC,4BAA4B,kBAAkB;AAC9C,qBAAqB,uEAAiB;AACtC;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD,yBAAyB,8DAAQ;AACjC;AACA;AACA;AACA,0DAA0D,uEAAiB,CAAC,8DAAQ;AACpF,2BAA2B,8DAAQ;AACnC;AACA;AACA;AACA;AACA;AACA,uDAAuD,6DAAW,KAAK,uEAAiB,CAAC,8DAAQ;AACjG,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B,oBAAoB,uEAAiB;AACrC,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA,6CAA6C,YAAY;AACzD,yBAAyB,8DAAQ;AACjC;AACA;AACA,wDAAwD,6DAAW;AACnE;AACA,oCAAoC,8DAAQ;AAC5C,wBAAwB,uEAAiB;AACzC;AACA;AACA,4BAA4B,uEAAiB;AAC7C,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,uEAAiB,CAAC,8DAAQ;AACpF,+BAA+B,8DAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,wDAAwD,6DAAW,MAAM,uEAAiB,CAAC,8DAAQ;AACnG,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,SAAS;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA,iCAAiC,8DAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA,6BAA6B,8DAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6DAAO;AACzB,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D;AACA;AACA;AACA,iDAAiD,aAAa;AAC9D;AACA;AACA;AACA;AACA;AACA,qDAAqD,aAAa;AAClE;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,SAAS,uEAAiB;AACvD;AACA;AACA,6CAA6C,YAAY;AACzD,4BAA4B,kBAAkB;AAC9C;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,qDAAqD,uEAAiB,CAAC,8DAAQ;AAC/E,iCAAiC,8DAAQ;AACzC;AACA,uDAAuD,6DAAW,KAAK,uEAAiB,CAAC,8DAAQ;AACjG,iCAAiC,8DAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC;AACA,wBAAwB,uEAAiB;AACzC;AACA,wBAAwB,uEAAiB;AACzC;AACA,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA,iCAAiC,6DAAW,iCAAiC,uDAAK;AAClF,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,6CAA6C,YAAY;AACzD,yBAAyB,8DAAQ;AACjC;AACA;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,0DAA0D,uEAAiB,CAAC,8DAAQ;AACpF,gCAAgC,8DAAQ;AACxC;AACA;AACA;AACA;AACA;AACA,uDAAuD,6DAAW,KAAK,uEAAiB,CAAC,8DAAQ;AACjG,iCAAiC,8DAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iBAAiB;AAC7C,2DAA2D,uEAAiB,4BAA4B,8DAAQ;AAChH;AACA;AACA;AACA,0BAA0B;AAC1B;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA,oCAAoC,uDAAK;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uDAAK;AAC1C;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uDAAK;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,kCAAkC,gEAAc;AAChD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC,gBAAgB,6DAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,6DAAO;AACvC;AACA;AACA,4BAA4B,6DAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,QAAQ,qEAAa;AACrB;AACA,mBAAmB,kEAAgB;AACnC,SAAS;AACT,QAAQ,mEAAW;AACnB;AACA;AACA,QAAQ,mEAAW;AACnB;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,6DAAW,iCAAiC,uDAAK;AAClF;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yBAAyB;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA,iCAAiC,8DAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,2BAA2B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8DAAQ;AAC5C;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,gCAAgC,uBAAuB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,YAAY;AAC9D,yBAAyB,8DAAQ;AACjC;AACA;AACA;AACA;AACA,0DAA0D,uEAAiB,CAAC,8DAAQ;AACpF,+BAA+B,8DAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,uDAAuD,6DAAW,KAAK,uEAAiB,CAAC,8DAAQ;AACjG,gCAAgC,8DAAQ;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,8CAA8C,SAAS;AACvD;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,sCAAsC;AAC/E,0CAA0C,4BAA4B;AACtE;AACA;AACA;AACA;AACA,yCAAyC,oDAAoD;AAC7F,0CAA0C,6CAA6C;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uBAAuB,4BAA4B;AACpE;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU;AAClD;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA;AACA,qDAAqD,4EAA4E;AACjI;AACA,4BAA4B,iBAAiB;AAC7C,iCAAiC,8DAAQ;AACzC,qBAAqB,uEAAiB;AACtC,mEAAmE,4EAA4E;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;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,yCAAyC,mBAAmB;AAC5D;AACA;AACA,yCAAyC,eAAe,uEAAiB,sDAAsD;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;AACA;AACA;AACA;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,sCAAsC;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,4CAA4C;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,mBAAmB,uBAAuB,KAAK;AAC/C,iBAAiB,mBAAmB;AACpC,iBAAiB,SAAS;AAC1B,gBAAgB,UAAU;AAC1B;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,8CAA8C,6DAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kBAAkB;AAClD,8BAA8B,8DAAQ;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,6DAAW;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,qCAAqC,4DAAM;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA,4CAA4C,uEAAiB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,qCAAqC,uBAAuB,oBAAoB,IAAI;AACpF;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC,gBAAgB,QAAQ;AACxB,gBAAgB,SAAS;AACzB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,mCAAmC,4DAAM;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA,mBAAmB,uEAAiB;AACpC;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC,gBAAgB,kBAAkB;AAClC,gBAAgB,QAAQ;AACxB,gBAAgB,UAAU;AAC1B;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,8CAA8C,6DAAW;AACzD;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,kBAAkB,uBAAuB,IAAI;AAC7C;AACA;AACA,YAAY,uEAAiB,YAAY,uEAAiB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,8DAAQ;AAC5C,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oBAAoB;AAChD,oBAAoB,uEAAiB;AACrC;AACA;AACA;AACA;AACA;AACA,0BAA0B,4DAAM,GAAG;AACnC;AACA;AACA,0BAA0B,4DAAM,GAAG;AACnC;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA,uBAAuB,kFAA+B;AACtD,iBAAiB,4DAAM;AACvB,yBAAyB,8DAAQ;AACjC,0DAA0D,uEAAiB;AAC3E;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,4DAAM;AAC/B,6BAA6B,4DAAM;AACnC,uBAAuB,4DAAM;AAC7B,0BAA0B,4DAAM;AAChC;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,YAAY,4DAAM;AAClB,0BAA0B,4DAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAK;AACjB;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,gBAAgB,gEAAU;AAC1B;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA,aAAa,uEAAiB;AAC9B,kDAAkD,6DAAW;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kBAAkB;AAClC,gBAAgB,QAAQ;AACxB;AACA;AACA;AACA,YAAY,uEAAiB,YAAY,uEAAiB;AAC1D;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA;AACA,uDAAuD,6DAAW;AAClE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,0BAA0B,0DAAQ,GAAG,6DAAW;AAChD;AACA;AACA;AACA;AACA;AACA,iCAAiC,6CAA6C;AAC9E;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA,YAAY,uEAAiB,iBAAiB,2CAA2C;AACzF;AACA;AACA,YAAY,uEAAiB,iBAAiB,2CAA2C;AACzF;AACA;AACA,YAAY,uEAAiB,iBAAiB,wCAAwC;AACtF;AACA;AACA;AACA;AACA,oBAAoB,gEAAU;AAC9B;AACA;AACA,uDAAuD,gEAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAiB,iBAAiB,6BAA6B;AACvE;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,QAAQ,iEAAW;AACnB;AACA,QAAQ,8DAAQ;AAChB;AACA,YAAY,8DAAQ;AACpB;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,qCAAqC,kEAAgB;AACrD;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA,4DAA4D,uEAAiB;AAC7E,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,iEAAW;AAC3B,gBAAgB,uEAAiB,kBAAkB,SAAS,gEAAU,mDAAmD;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,eAAe;AACrD;AACA,6CAA6C,4BAA4B;AACzE;AACA,gBAAgB,kEAAgB;AAChC;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,gBAAgB,uEAAiB,kBAAkB,iBAAiB;AACpE,gBAAgB,iEAAW;AAC3B,gBAAgB,uEAAiB,kBAAkB,SAAS,gEAAU,eAAe;AACrF;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,cAAc;AACpD,gBAAgB,kEAAgB;AAChC;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,gCAAgC;AAChC;AACA;AACA;AACA;AACA,YAAY,uEAAiB,iBAAiB,+FAA+F;AAC7I;AACA;AACA,YAAY,uEAAiB,iBAAiB,oGAAoG;AAClJ;AACA;AACA,YAAY,uEAAiB,iBAAiB,2CAA2C;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,uEAAiB,4BAA4B,mCAAmC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;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,gBAAgB,kEAAgB;AAChC,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,YAAY,6DAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uDAAK,kBAAkB,6CAA6C;AAC1G,kCAAkC,uDAAK,iBAAiB,6CAA6C;AACrG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA,oBAAoB,8DAAQ,yCAAyC,kEAAgB;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,iEAAW;AACnC,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,6CAA6C;AAC1F;AACA,wBAAwB,uEAAiB;AACzC,wBAAwB,iEAAW;AACnC,wBAAwB,iEAAW;AACnC,wBAAwB,uEAAiB,YAAY,qCAAqC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,kEAAgB;AACjC;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB,oBAAoB,kEAAgB;AACpC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,qBAAqB,MAAiC;AACtD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,UAAU,wBAAwB,IAAI,mCAAmC,EAAE;AACnH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,eAAe,sBAAsB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;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,0DAA0D,SAAS,iCAAiC;AACpG;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,yBAAyB,yCAAyC;AAClE,4BAA4B,gBAAgB;AAC5C;AACA,iCAAiC,qCAAqC;AACtE;AACA;AACA;AACA,iCAAiC,cAAc;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,0EAA0E;AAC1H,qDAAqD,wEAAwE;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gFAAgF,sEAAsE;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,4DAAM,GAAG;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,kEAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,wCAAwC;AAClG;AACA;AACA;AACA,8BAA8B,oDAAoD;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4DAAM,GAAG;AACrC;AACA;AACA;AACA,gCAAgC,4DAAM,GAAG,aAAa,4BAA4B;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,yBAAyB,sEAAmB;AAC5C;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,0DAA0D,sDAAsD,iBAAiB;AACjI,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;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,gBAAgB,4DAAM;AACtB;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,yCAAyC;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,SAAS;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,iDAAiD,iBAAiB;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,iEAAiE;AACjE;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA,8DAA8D,+CAA+C;AAC7G;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,6DAAO;AACxB;AACA;AACA;AACA,mBAAmB,6DAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,6DAAO;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,wCAAwC,8CAA8C;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gFAAgF;AAClI;AACA;AACA,4BAA4B,yDAAK;AACjC;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD,yBAAyB,qBAAqB;AAC9C;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,0HAA0H,6DAAO;AACjI;AACA;AACA;AACA,YAAY,4DAAM;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,eAAe,iBAAiB;AAChC,eAAe,iBAAiB;AAChC,iBAAiB;AACjB;AACA;AACA,oDAAoD,gBAAgB;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,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;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,QAAQ,iEAAW;AACnB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,qBAAqB,MAAiC;AACtD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,sBAAsB;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,6BAA6B,sDAAI;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,+DAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,uEAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC;AACA;AACA,gCAAgC,8DAAQ;AACxC;AACA;AACA,gCAAgC,iEAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,SAAS,gEAAU,cAAc;AACvF;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,UAAU,gEAAU,eAAe;AACzF;AACA;AACA,+CAA+C,uEAAiB;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,QAAQ,uEAAiB,iBAAiB,SAAS,gEAAU,wBAAwB,gEAAU,eAAe;AAC9G,QAAQ,gEAAU,iBAAiB,4GAA4G;AAC/I,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,gCAAgC;AACzF;AACA;AACA,yDAAyD,iCAAiC,iDAAiD;AAC3I;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,QAAQ,4DAAM;AACd;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,2BAA2B;AAChF;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,8DAAQ;AACpB;AACA,8EAA8E,kBAAkB;AAChG,YAAY,4DAAM;AAClB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,0EAA0E,cAAc;AACxF,YAAY,4DAAM;AAClB;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb,gCAAgC,2DAAM;AACtC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,YAAY,8DAAQ;AACpB;AACA,0EAA0E;AAC1E,YAAY,4DAAM;AAClB;AACA;AACA;AACA,yBAAyB;AACzB,aAAa;AACb;AACA,gCAAgC,2DAAM;AACtC;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,qCAAqC,iBAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,2BAA2B;AACnF,wDAAwD,+BAA+B;AACvF;AACA;AACA;AACA;AACA;AACA,6BAA6B;AAC7B,iBAAiB;AACjB;AACA,oBAAoB,8DAAQ;AAC5B;AACA,oFAAoF,kDAAkD;AACtI,oBAAoB,4DAAM;AAC1B;AACA;AACA,oEAAoE,4BAA4B;AAChG;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,wCAAwC,2DAAM,GAAG,4BAA4B;AAC7E;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC,aAAa;AACb;AACA;AACA;AACA;AACA,6BAA6B,gEAAc,iBAAiB,oEAAoE;AAChI;AACA;AACA;AACA;AACA;AACA,+BAA+B,uDAAK,iBAAiB,qCAAqC;AAC1F;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,uEAAiB;AACvD;AACA;AACA,2DAA2D,iCAAiC;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,iBAAiB,uEAAiB;AAClC,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,6BAA6B;AAC/D,YAAY,gEAAU,sBAAsB,uBAAuB;AACnE,YAAY,gEAAU,mBAAmB,wBAAwB;AACjE;AACA;AACA,gBAAgB,gEAAU,0DAA0D,yBAAyB;AAC7G,gBAAgB,gEAAU,2DAA2D,wBAAwB;AAC7G,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;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,oBAAoB,8DAAQ;AAC5B;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,gBAAgB,iEAAW;AAC3B,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B,oBAAoB,8DAAQ;AAC5B;AACA;AACA,oBAAoB,8DAAQ;AAC5B,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,YAAY,iEAAW;AACvB;AACA,gBAAgB,iEAAW;AAC3B;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iEAAW,SAAS,2DAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA,4BAA4B,iEAAW,aAAa,2DAAM;AAC1D;AACA,qCAAqC,0BAA0B;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,2CAA2C,uEAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,uEAAiB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,uEAAiB;AAClD,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,qCAAqC,wBAAwB;AAC7D;AACA;AACA;AACA,gCAAgC,iEAAW,aAAa,2DAAM;AAC9D;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C,4BAA4B,iEAAW,aAAa,2DAAM;AAC1D;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C,4BAA4B,iEAAW,aAAa,2DAAM;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,iCAAiC;AACnG;AACA,2BAA2B,iEAAW,SAAS,2DAAM;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,SAAS;AACT;AACA;AACA,YAAY,qEAAmB;AAC/B,SAAS;AACT;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,0EAAwB;AAChC;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,+DAAS;AACrB;AACA;AACA;AACA,6BAA6B,gBAAgB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAAS;AACrB;AACA,6BAA6B,iBAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,UAAU;AACzB,iBAAiB;AACjB;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,sEAAsE,iCAAiC;AACvG,QAAQ,iEAAW;AACnB,gEAAgE,sCAAsC;AACtG;AACA;AACA;AACA,QAAQ,gEAAU;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;;AAEA,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,qBAAqB,MAAiC;AACtD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,sBAAsB;AACrC;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,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,6BAA6B,uEAAiB;AAC9C;AACA,4DAA4D,oBAAoB;AAChF;AACA;AACA,oCAAoC,iEAAW;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iEAAW;AAC/B;AACA;AACA;AACA;AACA,wBAAwB,8DAAQ;AAChC;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,oBAAoB;AAC5D;AACA;AACA,gBAAgB,8DAAQ;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,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;;AAEA;AACA;AACA;;AAE+Z;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC73iBlC;AAC5U;AACS;;AAE1D,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,6DAAO,GAAG,iDAAiD;AACnE;AACA;AACA,QAAQ,6DAAO,GAAG,kDAAkD;AACpE;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,QAAQ,uEAAiB,iBAAiB,+BAA+B;AACzE,aAAa,uEAAiB,sBAAsB,uEAAiB;AACrE;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,YAAY;AAC5B,iBAAiB;AACjB;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,YAAY,4DAAM;AAClB;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB,iEAAW,WAAW;AAC/F;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA,gBAAgB,uDAAK,kBAAkB,qCAAqC;AAC5E;AACA,aAAa,uEAAiB;AAC9B,YAAY,4DAAM,kBAAkB,0BAA0B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,eAAe,YAAY;AAC3B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,iEAAW,uBAAuB,uEAAiB;AAChE;AACA;AACA,aAAa,iEAAW,wBAAwB,uEAAiB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,+DAAS;AACrB;AACA,gBAAgB,+DAAS;AACzB;AACA;AACA;AACA;AACA;AACA,wCAAwC,gEAAU;AAClD;AACA;AACA;AACA;AACA;AACA,wCAAwC,gEAAU;AAClD;AACA;AACA,qCAAqC,gEAAU;AAC/C;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA,uBAAuB,mFAAiC;AACxD;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA,gCAAgC,uEAAiB;AACjD;AACA;AACA;AACA,wBAAwB,mFAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,aAAa;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA,4BAA4B,2CAA2C;AACvE;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA;AACA,yBAAyB,6DAAO;AAChC;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA,wCAAwC;AACxC;AACA;AACA;AACA,wCAAwC;AACxC;AACA;AACA,aAAa,uEAAiB,uCAAuC,uEAAiB;AACtF;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,wBAAwB,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;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,qBAAqB,uEAAiB,oCAAoC,uEAAiB;AAC3F;AACA;AACA;AACA;AACA,mDAAmD,uEAAiB;AACpE,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2DAAS;AAC7B;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU,kBAAkB,iBAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,wBAAwB,QAAQ,gEAAU,gBAAgB,gEAAU,SAAS;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B;AAC3B,wBAAwB,sDAAI;AAC5B;AACA;AACA,mDAAmD,4CAA4C,iEAAiE;AAChK;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA,kEAAkE,qBAAqB;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,kDAAkD,2CAA2C;AAC7F;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,mDAAmD,kBAAkB;AACrE;AACA,uDAAuD,oBAAoB;AAC3E;AACA;AACA;AACA;AACA,qDAAqD,oBAAoB;AACzE;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,uDAAuD,uEAAiB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D,oBAAoB;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,yBAAyB;AACtF;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,gBAAgB,2DAAM;AACtB,iBAAiB,uEAAiB;AAClC,gBAAgB,kEAAgB;AAChC;AACA;AACA,SAAS;AACT;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,gBAAgB,iEAAW;AAC3B,gBAAgB,kEAAgB;AAChC,gBAAgB,kEAAgB;AAChC,oDAAoD,wEAAgB;AACpE;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,6DAAO;AAC9B;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,2BAA2B,6DAAO;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,2DAAS;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,YAAY;AAC3B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,gEAAU,IAAI;AACtB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,sBAAsB;AACtC,eAAe,QAAQ;AACvB,gBAAgB,SAAS;AACzB,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,mEAAa,UAAU,uDAAuD;AAClH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oCAAoC;;AAErC;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,0BAA0B;AAC3B;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,eAAe,aAAa;AAC5B,eAAe,YAAY;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,2BAA2B;AAC3B,wBAAwB,sDAAI;AAC5B;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,4DAA4D,qBAAqB;AACjF;AACA;AACA;AACA;AACA;AACA,4DAA4D,SAAS,yCAAyC;AAC9G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,wBAAwB;AAC9E;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA;AACA;AACA,iCAAiC,6DAAO;AACxC,yBAAyB,uEAAiB;AAC1C,mDAAmD;AACnD;AACA;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,yCAAyC,0DAA0D;AACnG;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,6BAA6B,gBAAgB;AAC7C,0BAA0B;AAC1B;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA,oDAAoD,gBAAgB;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,wBAAwB,4DAAM;AAC9B;AACA;AACA,wEAAwE,qBAAqB;AAC7F;AACA;AACA;AACA;AACA,gDAAgD,uEAAiB;AACjE;AACA,wBAAwB,4DAAM;AAC9B;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,uBAAuB,uEAAiB;AACxC;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA,aAAa,uEAAiB;AAC9B,YAAY,4DAAM;AAClB;AACA,QAAQ,4DAAM;AACd,aAAa,uEAAiB;AAC9B,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,gCAAgC;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,eAAe;AAC9B,eAAe,aAAa;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iEAAW;AACzC;AACA;AACA,QAAQ,gEAAU,iBAAiB,qFAAqF;AACxH;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,iGAAiG,gEAAU;AAC3G,6EAA6E,gEAAU;AACvF;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;AACA;AACA;;AAEA;AACA;AACA;;AAE4K;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9lDvG;AACD;;AAEpE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;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,6BAA6B,6BAA6B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,+BAA+B;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,CAAC,KAAK;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;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,WAAW;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,wCAAwC,iCAAiC;AACzE;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,GAAG;AACrC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,iCAAiC;AACjE;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;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,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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA,wCAAwC,sBAAsB;AAC9D;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,oCAAoC,gCAAgC;AACpE;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA,oCAAoC,mCAAmC;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,sCAAsC;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,0CAA0C,SAAS;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,4BAA4B,sCAAsC;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,4BAA4B,WAAW;AACvC;AACA;AACA;AACA,gCAAgC,kCAAkC;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,4BAA4B,WAAW;AACvC;AACA;AACA,oCAAoC,kCAAkC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,wBAAwB,iBAAiB;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,4BAA4B,iBAAiB;AAC7C;AACA;AACA;AACA,yBAAyB,+EAAsB;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,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,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;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,KAAK,gFAAgF;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,gCAAgC;AACrC,CAAC,oCAAoC;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;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,4BAA4B,iBAAiB;AAC7C;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,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA,mCAAmC,KAAK;AACxC;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa;AACb;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,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,CAAC,wDAAwD;AACzD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;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,CAAC,8CAA8C;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gCAAgC;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,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;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,CAAC,sCAAsC;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,CAAC,oCAAoC;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;AACA;AACA,CAAC,0CAA0C;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,CAAC,oDAAoD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4CAA4C;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;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,SAAS;AACT;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,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,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,CAAC;AACD;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;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,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,CAAC,oCAAoC;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,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;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,CAAC,0CAA0C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;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,CAAC,oCAAoC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;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,CAAC,0CAA0C;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,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,wDAAwD;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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,CAAC,wDAAwD;;AAEzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,aAAa,GAAG,0BAA0B;AAClG;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,+CAA+C,SAAS;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;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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,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,2DAA2D,SAAS;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,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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,CAAC;AACD;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,CAAC,4BAA4B;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,CAAC,oCAAoC;;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;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,yCAAyC,QAAQ;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,gBAAgB;AACtE;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,2BAA2B,gEAAQ;AACnC,qBAAqB,oEAAY;AACjC;AACA,iCAAiC,gEAAQ;AACzC,2BAA2B,oEAAY;AACvC;AACA;AACA;AACA,gFAAgF,yBAAyB;AACzG;AACA,aAAa;AACb;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,CAAC,gCAAgC;;AAEjC,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA,wBAAwB,iCAAiC;AACzD;AACA;AACA;AACA;AACA;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,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,wBAAwB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA,4BAA4B,4BAA4B;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oCAAoC;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA,eAAe,WAAW;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC,gDAAgD;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,CAAC,gDAAgD;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,CAAC,wCAAwC;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,CAAC,oCAAoC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8CAA8C;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,CAAC,oCAAoC;;AAErC;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wBAAwB;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,iCAAiC;AACrE;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;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,qDAAqD,aAAa,GAAG,yBAAyB;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,6DAA6D,aAAa,GAAG,yBAAyB;AACtG;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,aAAa,GAAG,yBAAyB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;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,SAAS;AACT;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,yEAAyE,SAAS;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,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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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,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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;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,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,SAAS;AACT;AACA;AACA,KAAK;AACL;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;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,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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,eAAe;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wBAAwB,qCAAqC;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,4CAA4C;AACxE;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,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,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,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,eAAe,GAAG,0BAA0B;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,uDAAuD,eAAe,GAAG,0BAA0B;AACnG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;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,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;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,gCAAgC,cAAc;AAC9C;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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,wBAAwB,iBAAiB;AACzC;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,eAAe;AACvC;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,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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,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,wBAAwB,cAAc;AACtC,8CAA8C,uCAAuC;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,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4BAA4B,WAAW;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,WAAW;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,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,eAAe;AAC3D;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,8BAA8B;AACtD;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,wBAAwB,yBAAyB;AACjD;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,wBAAwB,uBAAuB;AAC/C;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,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,wBAAwB,4BAA4B;AACpD;AACA;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,kCAAkC,aAAa;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,wBAAwB,qBAAqB;AAC7C;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,wBAAwB,iBAAiB;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,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;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,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mEAAmE;AAC/F;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,iBAAiB;AACjB;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,4BAA4B,+BAA+B;AAC3D;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB;AACjB;AACA;AACA,6CAA6C,2BAA2B;AACxE;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,iBAAiB;AACjB,4CAA4C,sBAAsB;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,iBAAiB;AACzD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iCAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,aAAa;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,eAAe,YAAY;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY;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,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,QAAQ;AACpD;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,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA,oCAAoC,YAAY;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,YAAY;AACxC;AACA;AACA,oCAAoC,YAAY;AAChD;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,4BAA4B,YAAY;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;AACvC;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;AACA;AACA;AACA;AACA;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;AAC7E;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,2CAA2C,SAAS;AACpD;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,gCAAgC,WAAW;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,wCAAwC,mBAAmB;AAC3D;AACA;AACA,yCAAyC,kBAAkB;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,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,gDAAgD;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,CAAC,sCAAsC;;AAEvC,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,CAAC;;AAED;;AAEA,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,+CAA+C;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,oCAAoC,kDAAkD;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,OAAO;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kJAAkJ;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,0DAA0D;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,4BAA4B,yBAAyB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,qCAAqC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,uCAAuC;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,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;AACA;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;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,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,+IAA+I;AAC/I;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,SAAS;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI;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,yDAAyD,aAAa,GAAG,yBAAyB;AAClG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB,GAAG,yBAAyB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB,GAAG,yBAAyB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB,GAAG,yBAAyB;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;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;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,iBAAiB;AACjB;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;AACA;AACA;AACA;AACA;AACA;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,CAAC;AACD;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;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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;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,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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,YAAY;AACxC;AACA;AACA;AACA,wBAAwB,iBAAiB;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,+BAA+B;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;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;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,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,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;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,gCAAgC,+BAA+B;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,+DAA+D;AAC/F;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;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,CAAC;;AAED,YAAY,qBAAqB;AACjC;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,2BAA2B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,WAAW;AACnC;AACA;AACA,gCAAgC,0BAA0B;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,4BAA4B,SAAS;AACrC;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4BAA4B;AACzE;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;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,2BAA2B;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,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gEAAgE,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;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,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,4BAA4B,SAAS;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,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA,SAAS;AACT;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,SAAS;AACT;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,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,2CAA2C,SAAS;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,gBAAgB,GAAG,yBAAyB;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gBAAgB,GAAG,yBAAyB;AACjG;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,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,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,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,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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED;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,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;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC;AACD;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,qCAAqC;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,wCAAwC,+BAA+B;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,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,SAAS;AACT;AACA;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;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;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;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uBAAuB;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,iCAAiC;AAC7D;AACA,sCAAsC,UAAU;AAChD;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,CAAC,gDAAgD;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC,sDAAsD;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,gCAAgC;;AAEjC;AACA;AACA;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;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,gCAAgC,WAAW;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,UAAU;AACV;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD,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;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,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;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;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;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,wBAAwB,mBAAmB;AAC3C;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,wBAAwB,2BAA2B;AACnD;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,wBAAwB,aAAa;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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;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,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,CAAC,sDAAsD;;AAEvD,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;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,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,6BAA6B;AACzD;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8DAA8D;;AAE/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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,cAAc;AAC9C;AACA;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,sCAAsC;AAC9F;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,qBAAqB;AACrB;AACA;AACA;AACA;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;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,kDAAkD,iCAAiC;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;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,kEAAkE,8BAA8B;AAChG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;AACtE;AACA;AACA;AACA;AACA;AACA,iDAAiD,0BAA0B;AAC3E;AACA;AACA;AACA;AACA;AACA,wDAAwD,qBAAqB;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,uEAAuE;AACvE;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4BAA4B,gBAAgB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,4BAA4B;AAC5D;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,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,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,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2DAA2D;AAC3D;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,wBAAwB,WAAW;AACnC;AACA,gCAAgC,8BAA8B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,WAAW;AACxE;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,wBAAwB,gBAAgB;AACxC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,4BAA4B,sBAAsB;AAClD;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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;AACA;AACA,wBAAwB,sBAAsB;AAC9C;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;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;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,SAAS;AACT;AACA;AACA,KAAK;AACL;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,gCAAgC,6BAA6B;AAC7D;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,4BAA4B,SAAS;AACrC;AACA;AACA,gCAAgC,6BAA6B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,wBAAwB,wBAAwB;AAChD;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,wBAAwB,cAAc;AACtC;AACA;AACA;AACA,4BAA4B,cAAc;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,4BAA4B,cAAc;AAC1C;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,wDAAwD,WAAW;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gCAAgC;AAChE;AACA;AACA,gCAAgC,wBAAwB;AACxD;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;AACA;AACA;AACA;AACA,gDAAgD,wBAAwB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,gBAAgB;AAChD;AACA,oCAAoC,cAAc;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,cAAc;AAC1D;AACA,gDAAgD,cAAc;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,gBAAgB;AAC7E,4DAA4D,cAAc;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,wDAAwD,cAAc;AACtE,+DAA+D,cAAc;AAC7E;AACA;AACA,wCAAwC,qDAAqD;AAC7F;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,yDAAyD;AACjH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,WAAW;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,wBAAwB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;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;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,kBAAkB;AAClB;AACA;AACA,cAAc;AACd;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,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,YAAY;AACZ;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;AACA;AACA;AACA,wBAAwB,6BAA6B;AACrD;AACA;AACA;AACA,0CAA0C,QAAQ;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,4BAA4B,kCAAkC;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+BAA+B;AAC7D;AACA;AACA;AACA;AACA,sDAAsD,wBAAwB;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;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,iDAAiD,qBAAqB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,uEAAuE,OAAO;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,qBAAqB;AACtE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,iCAAiC;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,yDAAyD,qBAAqB;AAC9E;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAqB;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,6DAA6D,2BAA2B;AACxF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uBAAuB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B;AAC1B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,+BAA+B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,yBAAyB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0DAA0D,+BAA+B;AACzF;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,iDAAiD,0BAA0B;AAC3E;AACA;AACA,qDAAqD,0CAA0C;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,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,0CAA0C,+BAA+B;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,qBAAqB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,qBAAqB;AACjE;AACA;AACA;AACA;AACA,sDAAsD,gCAAgC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,qBAAqB;AACnE;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;AACA,gCAAgC,WAAW;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,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,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD,yFAAyF,0BAA0B;AACnH;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;AACA;AACA;AACA;AACA;AACA;AACA;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,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,gCAAgC,qBAAqB;AACrD;AACA;AACA;AACA,2CAA2C,4BAA4B;AACvE;AACA;AACA;AACA,4CAA4C,qBAAqB;AACjE;AACA;AACA;AACA;AACA,4CAA4C,yBAAyB;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,yBAAyB;AACzB;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,8CAA8C,wBAAwB;AACtE;AACA;AACA;AACA,oCAAoC,qCAAqC;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,wBAAwB,qBAAqB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,wBAAwB;AAClE;AACA;AACA;AACA,4CAA4C,qCAAqC;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,2CAA2C,kCAAkC;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,CAAC;AACD;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,CAAC;AACD;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,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;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,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;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,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,4BAA4B,mBAAmB;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,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,wBAAwB,4BAA4B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,4BAA4B,mBAAmB;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,qCAAqC,cAAc;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED,oBAAoB,MAAgC;AACpD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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;AACA;AACA;AACA,uDAAuD,SAAS;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA;AACA;AACA,QAAQ,uEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB,aAAa,gBAAgB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,gBAAgB;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,gBAAgB;AAC3B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,gBAAgB;AAC3B,aAAa,gBAAgB;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;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,sBAAsB;AACjC,WAAW,gBAAgB;AAC3B,aAAa;AACb;AACA;AACA,sCAAsC;AACtC,2BAA2B,SAAS;AACpC;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,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA,sCAAsC;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,WAAW,aAAa;AACxB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,aAAa;AACxB,WAAW,sBAAsB;AACjC,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA,sCAAsC;AACtC,2BAA2B,SAAS;AACpC;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0FAA0F;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,kBAAkB;AAC7B,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,YAAY;AACvB,WAAW,kBAAkB;AAC7B,WAAW,SAAS;AACpB,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,kBAAkB;AAC7B,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA,mBAAmB;AACnB,mBAAmB;AACnB,mBAAmB;AACnB;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,kBAAkB;AAC7B,WAAW,YAAY;AACvB,WAAW,SAAS;AACpB,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,WAAW,aAAa;AACxB,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,kBAAkB;AAC7B,WAAW,YAAY;AACvB,WAAW,SAAS;AACpB,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,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;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,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,uBAAuB,uEAAiB;AACxC;AACA;;AAEA,iBAAiB,MAAgC;AACjD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,kBAAkB,MAAiC;AACnD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,aAAa,YAAY;AACrE,gCAAgC;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,YAAY;AAC3B;AACA,iBAAiB;AACjB;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,SAAS,gEAAU,iBAAiB;AAC1F;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,UAAU,gEAAU,kBAAkB;AAC5F;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,0BAA0B;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,iBAAiB;AACjB;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gEAAU;AACrC;AACA;AACA,4BAA4B,gEAAU;AACtC;AACA,QAAQ,uEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,gBAAgB;AACvG;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uFAAuF,gBAAgB;AACvG;AACA,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA;AACA,sDAAsD,uEAAiB;AACvE;AACA,6BAA6B,2BAA2B;AACxD;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,eAAe,aAAa;AAC5B,eAAe,aAAa;AAC5B,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA;AACA,+BAA+B,iCAAiC;AAChE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,uEAAiB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB,aAAa,uEAAiB;AAC3D;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,uEAAiB;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,4BAA4B,kBAAkB;AAC9C;AACA;AACA,2BAA2B,kBAAkB;AAC7C;AACA;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA,gCAAgC,mBAAmB;AACnD;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,eAAe,gBAAgB;AAC/B,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB,4BAA4B,+DAAa;AACvE;AACA;AACA,qCAAqC,uEAAiB;AACtD,iCAAiC,uEAAiB;AAClD;AACA,YAAY,uEAAiB,iBAAiB,uBAAuB;AACrE;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,8DAAQ;AACpB;AACA,YAAY,iEAAW;AACvB,YAAY,8DAAQ;AACpB;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,2DAAS;AACzB;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,gBAAgB;AAC/B,iBAAiB;AACjB;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,oBAAoB,iEAAW;AAC/B,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA,gBAAgB,2DAAS;AACzB;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,gBAAgB,cAAc;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,uEAAiB;AACtE;AACA;AACA,oBAAoB,gEAAU;AAC9B,sBAAsB,gEAAU;AAChC;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB,kBAAkB,uEAAiB;AACrE;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ,GAAG,sBAAsB;AACzC;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;AACX;AACA;AACA;AACA,YAAY,cAAc;AAC1B,WAAW,SAAS;AACpB;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,aAAa;AACb,YAAY,cAAc;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,mCAAmC;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA,wBAAwB,uBAAuB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,YAAY,cAAc;AAC1B;AACA;AACA;AACA,8BAA8B;AAC9B;AACA,oBAAoB,oBAAoB;AACxC;AACA,0BAA0B,uBAAuB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;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,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uBAAuB;AAC3C;AACA;AACA;AACA;AACA,gCAAgC,mEAAa,UAAU,qEAAqE;AAC5H;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA,uBAAuB,mEAAa;AACpC;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,WAAW,QAAQ;AACnB,aAAa,aAAa;AAC1B;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,uEAAiB;AACzB;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC;AACA,QAAQ,kEAAgB;AACxB,yBAAyB,mEAAiB;AAC1C,QAAQ,kEAAgB;AACxB;AACA;AACA,SAAS,uEAAiB;AAC1B,wBAAwB,2BAA2B;AACnD;AACA,YAAY,kEAAgB;AAC5B,6BAA6B,mEAAiB;AAC9C,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD,CAAe,IAAI,CAAa;AACtF;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC,IAAI,kEAAgB;AACpB,IAAI,kEAAgB;AACpB,oBAAoB,0BAA0B;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA,0BAA0B,mEAAiB;AAC3C,yBAAyB,mEAAiB;AAC1C,kBAAkB,uEAAiB;AACnC,qBAAqB,mEAAiB;AACtC,IAAI,qEAAmB;AACvB,IAAI,qEAAmB;AACvB,IAAI,qEAAmB;AACvB,SAAS,uEAAiB;AAC1B;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA,IAAI,qEAAmB;AACvB,IAAI,qEAAmB;AACvB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA,0BAA0B,mEAAiB;AAC3C,yBAAyB,mEAAiB;AAC1C,kBAAkB,uEAAiB;AACnC,IAAI,kEAAgB;AACpB,IAAI,kEAAgB;AACpB;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,cAAc,uEAAiB;AAC/B;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA,aAAa,uEAAiB;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,WAAW,aAAa;AACxB,aAAa,YAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA,eAAe,uEAAiB;AAChC,yBAAyB,uEAAiB;AAC1C;AACA,QAAQ,uEAAiB;AACzB,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;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,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,oBAAoB,qBAAqB;AACzC,QAAQ,4DAAM;AACd;AACA;AACA,SAAS,uEAAiB;AAC1B,wBAAwB,2BAA2B;AACnD,YAAY,4DAAM;AAClB;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,kBAAkB;AACpD;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,2CAA2C,gEAAU;AACrD;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,aAAa;AACb;AACA,2BAA2B;AAC3B,wBAAwB,sDAAI;AAC5B;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAAiB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;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,aAAa;AACb;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,qBAAqB,uEAAiB;AACtC;AACA;AACA,qBAAqB,uEAAiB,oBAAoB,uEAAiB;AAC3E;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,uEAAiB,8BAA8B,uEAAiB;AACtH;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,uEAAiB;AACpC;AACA;AACA;AACA;AACA,0BAA0B,uEAAiB;AAC3C;AACA,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB;AACzC,aAAa;AACb;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA,YAAY,kEAAgB;AAC5B,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAU,iBAAiB,gBAAgB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,uEAAiB;AAC5D;AACA;AACA,2CAA2C,uEAAiB;AAC5D;AACA;AACA;AACA;AACA,uCAAuC,uEAAiB;AACxD;AACA;AACA;AACA;AACA,+CAA+C,uEAAiB;AAChE;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA,YAAY,gEAAU,iBAAiB,iDAAiD;AACxF;AACA;AACA;AACA;AACA,2CAA2C,uEAAiB;AAC5D;AACA,qEAAqE,uBAAuB;AAC5F;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA,0DAA0D,4BAA4B;AACtF;AACA;AACA,aAAa,uEAAiB;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,iBAAiB;AACjB,aAAa;AACb;AACA;AACA;AACA,oBAAoB,8DAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB,gBAAgB,uEAAiB;AACvE;AACA;AACA,qBAAqB,uEAAiB,+BAA+B,uEAAiB;AACtF;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,+BAA+B,2DAAS;AACxC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA,qBAAqB;AACrB,iBAAiB;AACjB;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,yBAAyB;AACrD,kCAAkC,uEAAiB;AACnD,yDAAyD,mCAAmC,oBAAoB;AAChH;AACA;AACA;AACA;AACA;AACA,4DAA4D,uBAAuB;AACnF;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA,qCAAqC,2DAAM;AAC3C;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,iDAAiD,uEAAiB;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD;AACvD;AACA;AACA,sDAAsD,iEAAiE;AACvH;AACA;AACA;AACA,kBAAkB,uEAAiB;AACnC;AACA,uDAAuD,8DAAQ;AAC/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,8DAAY,wCAAwC,uEAAiB;AACrH,2CAA2C,gEAAU;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,sFAAsF,8DAAQ;AAC9F;AACA;AACA;AACA;AACA,6BAA6B,6DAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,4BAA4B,8DAAQ;AACpC;AACA;AACA,+CAA+C,wCAAwC,gBAAgB;AACvG;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,6BAA6B,mFAAiC;AAC9D;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA,sCAAsC,uEAAiB;AACvD;AACA;AACA;AACA,wBAAwB,mFAAiC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,uEAAiB;AAC1D;AACA;AACA,YAAY,8DAAY,+BAA+B,uEAAiB;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,8DAAQ,wBAAwB,iEAAW;AACxE;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,uDAAuD;AAChH;AACA;AACA;AACA;AACA,QAAQ,gEAAU,iBAAiB,oCAAoC;AACvE;AACA,oCAAoC,uEAAiB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,2CAA2C,uEAAiB;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B,6DAA6D,uEAAuE;AACpI;AACA;AACA;AACA;AACA,4DAA4D,wCAAwC,kBAAkB;AACtH,uCAAuC,2DAAM,GAAG,0DAA0D;AAC1G;AACA,iBAAiB,uEAAiB;AAClC,gBAAgB,6DAAO;AACvB;AACA;AACA;AACA,gBAAgB,6DAAO;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,iCAAiC,uEAAiB;AAClD,gBAAgB,iEAAW;AAC3B;AACA;AACA;AACA,YAAY,8DAAQ;AACpB,iCAAiC,uEAAiB;AAClD,gBAAgB,8DAAQ;AACxB;AACA;AACA;AACA;AACA,wDAAwD,0BAA0B;AAClF;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB,sDAAsD,wBAAwB;AAC9E;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC;AACA;AACA,sBAAsB,uEAAiB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,uEAAiB;AACrC,wBAAwB,mEAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,8DAAQ;AACvB;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,aAAa;AAC5B;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA,gCAAgC,4DAAM;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,uEAAiB;AACjD;AACA;AACA;AACA;AACA,8BAA8B,uEAAiB;AAC/C,wBAAwB,4DAAM;AAC9B;AACA;AACA;AACA;AACA,8CAA8C,uEAAiB;AAC/D;AACA,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA;AACA;AACA;AACA,sDAAsD,uEAAiB;AACvE;AACA;AACA;AACA,wBAAwB,4DAAM;AAC9B;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,4BAA4B,uEAAiB;AAC7C;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA,0EAA0E,uEAAiB;AAC3F,4BAA4B,4DAAM;AAClC;AACA;AACA;AACA,4BAA4B,4DAAM;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,oBAAoB,uEAAiB,iBAAiB,UAAU,gEAAU,kBAAkB;AAC5F;AACA;AACA,oBAAoB,uEAAiB,iBAAiB,SAAS,gEAAU,iBAAiB;AAC1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,wBAAwB,4DAAM;AAC9B;AACA;AACA,oCAAoC,iBAAiB;AACrD,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,uEAAiB;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,uEAAiB;AACzD,wCAAwC,uEAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAuD,gEAAU;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,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,iEAAW,IAAI,uEAAiB;AAC5C;AACA;AACA,aAAa,uEAAiB;AAC9B,4BAA4B,wBAAwB;AACpD;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,QAAQ,iEAAW;AACnB,aAAa,uEAAiB;AAC9B,YAAY,iEAAW;AACvB;AACA,aAAa,uEAAiB,sBAAsB,uEAAiB;AACrE;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA;AACA,iBAAiB,uEAAiB;AAClC,gCAAgC,mCAAmC;AACnE;AACA,oBAAoB,4DAAM;AAC1B;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,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA,wCAAwC,uEAAiB;AACzD,4BAA4B,yBAAyB;AACrD;AACA,oBAAoB,qEAAmB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,gBAAgB;AACjC;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAU;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,uEAAiB;AAC7E,iBAAiB,uEAAiB;AAClC;AACA;AACA,8BAA8B,8DAAQ;AACtC;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,uEAAiB;AAC5D;AACA;AACA,wBAAwB,iEAAW;AACnC,6BAA6B,uEAAiB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,uEAAiB,kBAAkB,wBAAwB;AACnF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uEAAiB;AAC9C,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA;AACA,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA,6CAA6C,uEAAiB;AAC9D;AACA;AACA,YAAY,8DAAQ;AACpB,uCAAuC,uEAAiB;AACxD;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,iEAAW;AACvB,wCAAwC,uEAAiB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,iBAAiB,QAAQ;AACzB;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,gEAAU,IAAI;AACtB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,6DAAO,GAAG,0BAA0B;AAC5C;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,iBAAiB;AAChC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,4BAA4B,mEAAa,UAAU,6BAA6B;AAChF;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA,aAAa;AACb;AACA,4CAA4C;AAC5C,4BAA4B,uBAAuB;AACnD;AACA,wCAAwC;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,eAAe,mBAAmB;AAClC,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA,4BAA4B,mEAAa,UAAU,+BAA+B;AAClF;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA,aAAa;AACb,+BAA+B,mBAAmB;AAClD;AACA;AACA;AACA,aAAa;AACb;AACA,8CAA8C,YAAY,uBAAuB;AACjF;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,0BAA0B,uEAAiB;AAC3C,2BAA2B,uEAAiB;AAC5C,2BAA2B,uEAAiB;AAC5C,iCAAiC,uEAAiB;AAClD,iCAAiC,uEAAiB;AAClD,iCAAiC,uEAAiB;AAClD,4BAA4B,uEAAiB,wCAAwC;AACrF,qCAAqC,uEAAiB;AACtD,cAAc;AACd,4BAA4B,uEAAiB;AAC7C,0BAA0B,uEAAiB;AAC3C;AACA,wBAAwB,uEAAiB;AACzC,yBAAyB,uEAAiB;AAC1C,0BAA0B,uEAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA,+BAA+B,gCAAgC;AAC/D;AACA;AACA;AACA,aAAa;AACb,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,gCAAgC;AAC3D;AACA;AACA;AACA;AACA;AACA,2BAA2B,mBAAmB;AAC9C;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACA;AACA;;AAEA,mBAAmB,MAAgC;AACnD;AACA;AACA,eAAe,gBAAgB,sCAAsC,kBAAkB;AACvF,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA,CAAC;AACD,oBAAoB,MAAiC;AACrD;AACA;AACA,6CAA6C,QAAQ;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,QAAQ,8DAAQ,GAAG,2CAA2C;AAC9D;AACA;AACA,QAAQ,8DAAQ,GAAG,4CAA4C;AAC/D;AACA;AACA,CAAC,CAAC,+DAAa;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,yBAAyB;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,qBAAqB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,4CAA4C;AAC1F,oDAAoD,kDAAkD;AACtG,oDAAoD,kDAAkD;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,kBAAkB;AAC3D;AACA;AACA;AACA;AACA,wBAAwB,+BAA+B;AACvD;AACA;AACA;AACA,SAAS;AACT;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;AACA,oBAAoB;AACpB;AACA;AACA,uBAAuB,4DAAM;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,+DAAS;AAC9B;AACA,QAAQ,iEAAW;AACnB;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,4DAAM;AAC7B,4BAA4B,4DAAM;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,6BAA6B,4DAAM;AACnC;AACA,YAAY,8DAAQ;AACpB;AACA,uBAAuB,uEAAiB;AACxC;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS,6EAA2B,gBAAgB;AAC7F;AACA;AACA,mCAAmC,6DAAO;AAC1C,6CAA6C;AAC7C;AACA;AACA;AACA,wCAAwC,cAAc;AACtD,2CAA2C,4DAAM;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6DAAO;AAC9C,iDAAiD;AACjD;AACA,oBAAoB,4DAAM;AAC1B;AACA;AACA;AACA;AACA;AACA,2BAA2B,uEAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,iCAAiC;AACpF;AACA,QAAQ,kEAAgB,WAAW,yEAAuB;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAU,WAAW,yEAAyE;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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,6DAAO;AAC5B;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,6DAAO;AAC5B;AACA;AACA;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,uCAAuC,+DAAS;AAChD,oDAAoD,0BAA0B;AAC9E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA,qDAAqD,uEAAiB;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA,oBAAoB,iEAAW,oCAAoC,iEAAW;AAC9E;AACA;AACA;AACA,qBAAqB;AACrB,wBAAwB,gEAAU,iBAAiB,WAAW,gEAAU,kBAAkB,kBAAkB;AAC5G,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gEAAc;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4DAAM;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC,gBAAgB,8DAAQ;AACxB;AACA;AACA,oDAAoD,gEAAU;AAC9D;AACA,0EAA0E,oBAAoB;AAC9F;AACA,YAAY,iEAAW;AACvB;AACA;AACA,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,gEAAc;AAC1B;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,8DAAQ;AACpB;AACA;AACA,4DAA4D,uEAAiB;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,wBAAwB,kEAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;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,0BAA0B;AAC1B;AACA,8DAA8D,mBAAmB;AACjF;AACA;AACA,2BAA2B,4DAAM;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,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA,qDAAqD,uEAAiB;AACtE;AACA;AACA,2CAA2C;AAC3C;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,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iEAAW;AACvB,YAAY,8DAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,4DAAM;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,6DAAO;AAChD;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,gEAAc;AACtB,QAAQ,iEAAW;AACnB,QAAQ,8DAAQ;AAChB;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,6DAAO;AACtC;AACA;AACA;AACA;AACA;AACA,kBAAkB,6DAAO;AACzB;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;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA,gBAAgB,kEAAgB,eAAe,yEAAuB;AACtE;AACA;AACA,oBAAoB,kEAAgB;AACpC,2CAA2C,uDAAK;AAChD;AACA;AACA,qBAAqB;AACrB,oBAAoB,kEAAgB,eAAe,uEAAqB;AACxE;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB,QAAQ,kEAAgB;AACxB;AACA;AACA,aAAa,uEAAiB,uBAAuB,uEAAiB;AACtE,uCAAuC,+DAAS;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kEAAgB;AACvC;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B,2CAA2C,+DAAS;AACpD;AACA,wDAAwD,0BAA0B;AAClF;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA,YAAY,kEAAgB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA,oBAAoB,kEAAgB;AACpC,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,gBAAgB,kEAAgB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA,sDAAsD,2BAA2B;AACjF;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,qEAAmB;AACnC;AACA;AACA,gBAAgB,qEAAmB,eAAe,yEAAuB;AACzE;AACA;AACA,oBAAoB,kEAAgB;AACpC;AACA;AACA;AACA,oBAAoB,qEAAmB,eAAe,uEAAqB;AAC3E;AACA;AACA,oBAAoB,qEAAmB;AACvC;AACA;AACA;AACA,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B,QAAQ,qEAAmB;AAC3B;AACA;AACA,aAAa,uEAAiB;AAC9B,2CAA2C,+DAAS;AACpD,wDAAwD,0BAA0B;AAClF;AACA;AACA,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA;AACA;AACA,0DAA0D,2BAA2B;AACrF;AACA;AACA,oBAAoB,qEAAmB;AACvC;AACA,4CAA4C,kEAAgB;AAC5D,oBAAoB,qEAAmB;AACvC;AACA;AACA;AACA,gBAAgB,qEAAmB;AACnC,gBAAgB,qEAAmB;AACnC;AACA;AACA;AACA,YAAY,qEAAmB;AAC/B;AACA;AACA;AACA,qBAAqB,4DAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,QAAQ;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,cAAc;AAC7B,eAAe,cAAc;AAC7B,iBAAiB;AACjB;AACA;AACA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA,uFAAuF,gEAAU;AACjG;AACA;AACA;AACA;AACA;AACA,uDAAuD,gEAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,4DAAM;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,4BAA4B,iEAAW;AACvC;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8DAAQ;AACpC;AACA;AACA,4BAA4B,iEAAW;AACvC;AACA;AACA;AACA;AACA,yBAAyB,uEAAiB;AAC1C,wBAAwB,iEAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,eAAe,0BAA0B;AACzC,iBAAiB;AACjB;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA,YAAY,uEAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,0BAA0B;AACzC,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,aAAa;AAC5B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,YAAY,4DAAM;AAClB;AACA;AACA;AACA;AACA,QAAQ,iEAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,6DAAO,GAAG;AAClB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,8DAAQ;AAChB;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,2DAAK;AACb;AACA;AACA,QAAQ,uEAAqB;AAC7B;AACA;AACA,CAAC,CAAC,2DAAS;;AAEX;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,0BAA0B,4BAA4B,sBAAsB,YAAY;AACxF;AACA;AACA,YAAY,QAAQ;AACpB,YAAY,YAAY;AACxB,YAAY,QAAQ;AACpB,YAAY,QAAQ;AACpB,cAAc;AACd;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,0DAA0D;AACnF;AACA;AACA,WAAW,aAAa;AACxB,WAAW,mBAAmB;AAC9B,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uEAAiB,kDAAkD,+DAAa;AACvG;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA,SAAS,uEAAiB,oBAAoB,uEAAiB;AAC/D,wBAAwB,uEAAiB;AACzC;AACA;AACA;AACA;AACA,qBAAqB,uEAAiB;AACtC,qBAAqB,uEAAiB;AACtC;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa,aAAa;AAC1B;AACA;AACA,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA;AACA,SAAS,uEAAiB;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,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,UAAU;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,QAAQ;AACvB,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,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA,oBAAoB,QAAQ;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,kBAAkB;AACjC,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,eAAe,QAAQ;AACvB,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,iBAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA,oBAAoB,OAAO;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,WAAW,QAAQ;AACnB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA;AACA,gDAAgD;AAChD,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,UAAU;AACrB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,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,eAAe,QAAQ;AACvB,eAAe,aAAa;AAC5B,iBAAiB;AACjB;AACA;AACA,cAAc,uEAAiB;AAC/B,iBAAiB,uEAAiB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,aAAa;AACxB,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,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,aAAa;AACxB,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,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,QAAQ;AACrB;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,WAAW,aAAa;AACxB,WAAW,SAAS;AACpB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,uEAAiB;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,+DAAS,gDAAgD,+DAAS;AACnF;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,wBAAwB,kBAAkB;AACjE;AACA;AACA,YAAY,gBAAgB;AAC5B,YAAY,qBAAqB;AACjC,cAAc;AACd;AACA;AACA;AACA,uBAAuB,uEAAiB,kDAAkD,+DAAa;AACvG;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,0BAA0B;AAClD;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA,QAAQ,uEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,uEAAiB;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,aAAa;AACxB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,qBAAqB;AAChC,aAAa;AACb;AACA;AACA,SAAS,uEAAiB;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEqT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACp7LrT;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA,IAAI10Y,OAAO,GAAG,QAAd;AACA;AACA;AACA;AACA;;AACA,IAAIgZ,SAAS,GAAG,SAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIgxY,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAI7xc,IAAI,GAAG,MAAX;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA,IAAI+jE,WAAW,GAAG,cAAlB;AACA;AACA;AACA;AACA;;AACA,IAAI+tY,cAAc,GAAG,iBAArB;AACA;AACA;AACA;AACA;;AACA,IAAI5gb,UAAU,GAAG,aAAjB;AACA;AACA;AACA;AACA;;AACA,IAAI6gb,eAAe,GAAG,cAAtB;AACA;AACA;AACA;AACA;;AACA,IAAI7re,OAAO,GAAG,SAAd;AACA;AACA;AACA;AACA;;AACA,IAAIg8F,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAI8E,cAAc,GAAG,iBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIgrY,YAAY,GAAG,eAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,iBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,qBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,oBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,oBAAoB,GAAG,wBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIrhb,YAAY,GAAG,eAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIshb,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIl2M,KAAK,GAAG,OAAZ;AACA;AACA;AACA;AACA;;AACA,IAAIhsM,OAAO,GAAG,SAAd;AACA;AACA;AACA;AACA;;AACA,IAAIqtP,OAAO,GAAG,SAAd;AACA;AACA;AACA;AACA;;AACA,IAAIvsH,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIqhR,qBAAqB,GAAG,uBAA5B;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,wBAAwB,GAAG,0BAA/B;AACA;AACA;AACA;AACA;;AACA,IAAIC,mBAAmB,GAAG,qBAA1B;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,qBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,QAAnB;AACA;AACA;AACA;AACA;;AACA,IAAI/vY,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIjmB,QAAQ,GAAG,UAAf;AACA;AACA;AACA;AACA;;AACA,IAAIjS,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAI0/O,IAAI,GAAG,MAAX;AACA;AACA;AACA;AACA;;AACA,IAAIC,IAAI,GAAG,MAAX;AACA;AACA;AACA;AACA;;AACA,IAAIuoL,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,MAAM,GAAG,QAAb;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,UAAf;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,UAAf;AACA;AACA;AACA;AACA;;AACA,IAAI5gZ,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIqO,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIwyY,oBAAoB,GAAG,sBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAI3uG,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAI4uG,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,cAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,eAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,OAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,QAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,eAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,YAAf;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,QAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,QAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,QAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,SAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,WAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,WAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,oBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,gBAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,mBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIrjc,KAAK,GAAG,OAAZ;AACA;AACA;AACA;AACA;;AACA,IAAIsjc,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAI93J,SAAS,GAAG,WAAhB;AACA;AACA;AACA;AACA;;AACA,IAAI+3J,mBAAmB,GAAG,qBAA1B;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIhid,MAAM,GAAG,QAAb;AACA;AACA;AACA;AACA;;AACA,IAAIiid,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,oBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,uBAAuB,GAAG,yBAA9B;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,WAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,mBAAmB,GAAG,qBAA1B;AACA;AACA;AACA;AACA;;AACA,IAAI14a,KAAK,GAAG,eAAZ;AACA;AACA;AACA;AACA;;AACA,IAAI24a,SAAS,GAAG,aAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,OAAO,GAAG,UAAd;AACA;AACA;AACA;AACA;;AACA,IAAI79W,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAI89W,QAAQ,GAAG,UAAf;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,gBAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIrrW,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIE,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIo7F,WAAW,GAAG,aAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIgwQ,sBAAsB,GAAG,wBAA7B;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,WAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,oBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,cAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAI36c,IAAI,GAAG,MAAX;AACA;AACA;AACA;AACA;;AACA,IAAI46c,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,oBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,mBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,mBAAmB,GAAG,qBAA1B;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,gBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,kBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,kBAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,kXAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,onBAAvB;AAEA;AACA;AACA;;AACA;AACA;AACA;AACA;;AACA,IAAIC,OAAO,GAAG,kBAAd;AACA;AACA;AACA;AACA;;AACA,IAAIC,OAAO,GAAG,OAAd;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,WAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,YAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,yBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,wBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,eAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,gBAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,oBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,cAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,iBAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,iBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,mBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,qBAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,OAAO,GAAG,WAAd;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,mBAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,kBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,mBAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,oBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,mBAAmB,GAAG,uBAA1B;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,oBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,eAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,gBAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,oBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,mBAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,YAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,YAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,QAAf;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,QAAf;AACA;AACA;AACA;AACA;;AACA,IAAIC,QAAQ,GAAG,QAAf;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,WAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,WAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,sBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,YAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,WAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,YAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,eAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,mBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,cAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,cAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,eAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,eAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,mBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,kBAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,gBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,gBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,uBAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,WAAW,GAAG,WAAlB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,SAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,UAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,eAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,gBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,YAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,4BAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,kBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,wBAAwB,GAAG,4BAA/B;AACA;AACA;AACA;AACA;;AACA,IAAIC,2BAA2B,GAAG,iCAAlC;AACA;AACA;AACA;AACA;;AACA,IAAIC,2BAA2B,GAAG,iCAAlC;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,oBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,oBAAoB,GAAG,sBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAIC,oBAAoB,GAAG,sBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,sBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,qBAAqB,GAAG,yBAA5B;AACA;AACA;AACA;AACA;;AACA,IAAIC,2BAA2B,GAAG,+BAAlC;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,qBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,uBAAuB,GAAG,0BAA9B;AACA;AACA;AACA;AACA;;AACA,IAAIC,6BAA6B,GAAG,gCAApC;AACA;AACA;AACA;AACA;;AACA,IAAIC,iBAAiB,GAAG,sBAAxB;AACA;AACA;AACA;AACA;;AACA,IAAIC,qBAAqB,GAAG,6BAA5B;AACA;AACA;AACA;AACA;;AACA,IAAIC,2BAA2B,GAAG,mCAAlC;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,gBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,iBAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,oBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,iBAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,cAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,aAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,cAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,yBAAyB,GAAG,kBAAhC;AACA;AACA;AACA;AACA;;AACA,IAAIC,2BAA2B,GAAG,oBAAlC;AACA;AACA;AACA;AACA;;AACA,IAAIC,0BAA0B,GAAG,mBAAjC;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,eAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,oBAAoB,GAAG,mBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAIC,yBAAyB,GAAG,wBAAhC;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,iBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,cAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,UAAU,GAAG,UAAjB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,eAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,kBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,oBAAoB,GAAG,oBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,cAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,cAAc,GAAG,cAArB;AACA;AACA;AACA;AACA;;AACA,IAAIC,YAAY,GAAG,YAAnB;AACA;AACA;AACA;AACA;;AACA,IAAIC,aAAa,GAAG,aAApB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,gBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,qBAAqB,GAAG,qBAA5B;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,cAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,eAAe,GAAG,eAAtB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,gBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,SAAS,GAAG,aAAhB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,oBAAvB;AACA;AACA;AACA;AACA;;AACA,IAAIC,oBAAoB,GAAG,oBAA3B;AACA;AACA;AACA;AACA;;AACA,IAAIC,uBAAuB,GAAG,uBAA9B;AACA;AACA;AACA;AACA;;AACA,IAAIC,kBAAkB,GAAG,uBAAzB;AACA;AACA;AACA;AACA;;AACA,IAAIC,gBAAgB,GAAG,cAAvB;AAEA;AACA;AACA;AACA;AACA;AACA;;AACA,IAAItvY,UAAJ;;AACA,CAAC,UAAUA,UAAV,EAAsB;AA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AAC5C,iCAAiC,uDAAY;AAC7C,+BAA+B,uDAAY;AAC3C,iCAAiC,uDAAY;AAC7C,+BAA+B,uDAAY;AAC3C,iCAAiC,uDAAY;AAC7C;AACA;AACA,8BAA8B,kEAAiB;AAC/C;AACA,wCAAwC;AACxC;AACA,oCAAoC,yDAAgB;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;A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3F;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,iBAAiB;AAC9C,6BAA6B,iBAAiB;;AAE9C;;AAEA;AACA;;AAEA,6BAA6B,aAAa;AAC1C,6BAA6B,aAAa;AAC1C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,8BAA8B,sCAAsC;AACpE;AACA;;AAEA,iEAAe,gBAAgB,EAAC;;;;;;;;;;;;;;;;AC3zChC;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/5Be;AACU;AACvC,2BAA2B,6CAAO;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA;AACA,mBAAmB,6DAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvCoC;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/H2C;AACI;AACR;AACiB;AACd;AACQ;AAC3C;AACP;AACA,YAAY,8DAAW;AACvB;AACA;AACA;AACA,oFAAoF,mDAAG,WAAW,sDAAO;AACzG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,mDAAU;AAC7B;AACA;AACA,kCAAkC,uDAAY;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,oEAAc;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,YAAY,2BAA2B;AACvC,YAAY,mCAAmC;AAC/C,UAAU,UAAU;AACpB;AACA,uCAAuC,uDAAY;AACnD;AACA;AACA,2DAA2D,gBAAgB;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,iBAAiB;AAC7B;AACA;AACA;AACA;AACA,YAAY,eAAe;AAC3B;AACA;;;;;;;;;;;;;;;;;;;;;;;ACnFkD;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;AACD;AACM;AACT;AAChC;AACP;AACA,gEAAgE,mDAAG,SAAS,sDAAO;AACnF;AACA,eAAe,mDAAU;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4DAAU;AACvB;AACA;AACA;AACA,KAAK;AACL;;;;;;;;;;;;;;;;;;;;ACvB2C;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;;;;;;;;;;;;;;;;;;;ACrB2C;AACP;AAC7B,kBAAkB,mDAAU,CAAC,4CAAI;AACjC;AACP;AACA;;;;;;;;;;;;;;;;;;;ACLkD;AACV;AACmB;AACpD;AACP;AACA,QAAQ,8DAAW;AACnB;AACA,eAAe,uEAAa;AAC5B;AACA;AACA,eAAe,qDAAS;AACxB;AACA;;;;;;;;;;;;;;;;;;;;;;ACZ0C;AACF;AACa;AACS;AACvD;AACP;AACA,YAAY,sDAAO;AACnB;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,qDAAS;AACpB;AACO;AACP;AACA;AACA;AACA;AACO,6BAA6B,6DAAe;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,2BAA2B;AACvD;AACA,qCAAqC,0EAAiB;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,+BAA+B;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AC9D2C;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;;;;;;;;;;;;;;;;;;;;;;;ACnCwC;AACE;AACC;AACkC;AACoB;AAC1F;AACP;AACA;AACA;AACA;AACA,WAAW,qDAAS;AACpB;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO,4BAA4B,mDAAU;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sDAAO;AACnB;AACA;AACA,8BAA8B,+DAAe;AAC7C,oDAAoD,+DAAe;AACnE;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,wBAAwB,SAAS;AACjC;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,KAAK,+DAAe;AACpB;AACA;AACA;AACA;AACA;AACA,mCAAmC,+BAA+B,IAAI;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,kEAAqB;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,+DAAe;AACpB;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;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,eAAe,+DAAc,sBAAsB,kEAAqB;AACxE;AACA;;;;;;;;;;;;;;;;;ACnMiG;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;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;AACH;AACG;AACI;AACxC,kCAAkC,mDAAK;AAC9C,0BAA0B,oDAAM;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,mDAAU;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,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAAuB;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,sEAA2B;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACjF2C;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;;;;;;;;;;;;;;;;;;ACpD8C;AACR;AAC/B;AACP,uBAAuB,0DAAM,SAAS,kDAAE;AACxC;;;;;;;;;;;;;;;;;ACJ2C;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;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;;;;;;;;;;;;;;;;;AClDiG;AAC1F;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,+DAAc,oBAAoB,kEAAqB;AAChF;AACA;AACA;AACA,+BAA+B,kEAAqB;AACpD;AACA;AACA;AACA;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;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;;;;;;;;;;;;;;;;;AC7D2C;AACpC;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,mDAAU;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACvB8C;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;;;;;;;;;;;;;;;;;;AC3CqD;AACS;AACvD;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,6DAAe;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,SAAS;AACjC;AACA;AACA,wBAAwB,SAAS;AACjC;AACA,qBAAqB,0EAAiB;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;;;;;;;;;;;;;;;;;;ACvE2C;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;;;;;;;;;;;;;;;;;ACRkC;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;;;;;;;;;;;;;;;;;;;ACF4C;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,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;;;;;;;;;;;;;;;;ACFO;AACP;AACA;;;;;;;;;;;;;;;;;ACFuE;AAChE;AACP,iCAAiC,0DAAiB;AAClD;;;;;;;;;;;;;;;;;ACHiE;AAC1D;AACP,iCAAiC,sDAAe;AAChD;;;;;;;;;;;;;;;;;ACHoC;AAC7B;AACP,YAAY,iDAAO;AACnB;;;;;;;;;;;;;;;;ACHO;AACP;AACA;;;;;;;;;;;;;;;;ACFO;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;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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W,GAAG;AACV,SAAK4pmB,IAAL,GAAY,IAAItta,GAAJ,EAAZ;AACH;;AACDpwK,EAAAA,GAAG,CAAChoB,OAAD,EAAU;AACT,WAAO,KAAK0lmB,IAAL,CAAU19kB,GAAV,CAAchoB,OAAd,KAA0B,EAAjC;AACH;;AACD0sB,EAAAA,MAAM,CAAC1sB,OAAD,EAAU2lmB,YAAV,EAAwB;AAC1B,QAAIC,oBAAoB,GAAG,KAAKF,IAAL,CAAU19kB,GAAV,CAAchoB,OAAd,CAA3B;;AACA,QAAI,CAAC4lmB,oBAAL,EAA2B;AACvB,WAAKF,IAAL,CAAUx9kB,GAAV,CAAcloB,OAAd,EAAuB4lmB,oBAAoB,GAAG,EAA9C;AACH;;AACDA,IAAAA,oBAAoB,CAAC9mmB,IAArB,CAA0B,GAAG6mmB,YAA7B;AACH;;AACDrzB,EAAAA,GAAG,CAACtykB,OAAD,EAAU;AACT,WAAO,KAAK0lmB,IAAL,CAAUpzB,GAAV,CAActykB,OAAd,CAAP;AACH;;AACDqjJ,EAAAA,KAAK,GAAG;AACJ,SAAKqid,IAAL,CAAUrid,KAAV;AACH;;AAnBuB;AAsB5B;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMwid,yBAAyB,GAAG,CAAlC;AACA,MAAMC,WAAW,GAAG,QAApB;AACA,MAAMC,iBAAiB,GAAG,IAAIjimB,MAAJ,CAAWgimB,WAAX,EAAwB,GAAxB,CAA1B;AACA,MAAME,WAAW,GAAG,QAApB;AACA,MAAMC,iBAAiB,GAAG,IAAInimB,MAAJ,CAAWkimB,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;AAC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5B,EAA2C;AAC5C,aAAOzvnB,IAAI,CAACqnnB,4EAAD,CAAJ,CAAqC+F,YAAY,CAAC1oc,KAAlD,CAAP;AACH;AACJ;;AACD,SAAOv7K,GAAP;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;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASumnB,qBAAT,CAA+BxsmB,MAA/B,EAAuC5S,IAAvC,EAA6C;AACzC,QAAMtQ,IAAI,GAAGonnB,iEAAe,CAAClkmB,MAAD,CAA5B;AACA,SAAOljB,IAAI,CAACqnnB,4EAAD,CAAJ,CAAqC/2mB,IAArC,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASs/mB,uBAAT,CAAiC1smB,MAAjC,EAAyC;AACrC,QAAMljB,IAAI,GAAGonnB,iEAAe,CAAClkmB,MAAD,CAA5B;AACA,SAAOljB,IAAI,CAACqnnB,6EAAD,CAAJ,IAAyC,IAAhD;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASyI,qBAAT,CAA+B5smB,MAA/B,EAAuC;AACnC,QAAMljB,IAAI,GAAGonnB,iEAAe,CAAClkmB,MAAD,CAA5B;AACA,SAAOljB,IAAI,CAACqnnB,2EAAD,CAAJ,IAAuC,IAA9C;AACH;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS2I,qBAAT,CAA+B9smB,MAA/B,EAAuC;AACnC,SAAOokmB,wEAAsB,CAACpkmB,MAAD,CAA7B;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+smB,mBAAT,CAA6B/smB,MAA7B,EAAqC;AACjC,QAAMljB,IAAI,GAAGonnB,iEAAe,CAAClkmB,MAAD,CAA5B;AACA,SAAOljB,IAAI,CAACqnnB,yEAAD,CAAX;AACH;AACD;AACA;AACA;A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,OAAL,GAAeA,OAAf;AACA,SAAKz9mB,KAAL,GAAaA,KAAb;AACA,SAAKosC,KAAL,GAAaA,KAAb;AACH;;AACQ,MAALhqD,KAAK,GAAG;AACR,WAAO,KAAK4d,KAAL,KAAe,CAAtB;AACH;;AACO,MAAJirH,IAAI,GAAG;AACP,WAAO,KAAKjrH,KAAL,KAAe,KAAKosC,KAAL,GAAa,CAAnC;AACH;;AACO,MAAJ8nL,IAAI,GAAG;AACP,WAAO,KAAKl0N,KAAL,GAAa,CAAb,KAAmB,CAA1B;AACH;;AACM,MAAHgwjB,GAAG,GAAG;AACN,WAAO,CAAC,KAAK97V,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,MAAMwpZ,OAAN,CAAc;AACVv8nB,EAAAA,WAAW,CAACw8nB,cAAD,EAAiBC,SAAjB,EAA4BC,QAA5B,EAAsC;AAC7C,SAAKF,cAAL,GAAsBA,cAAtB;AACA,SAAKC,SAAL,GAAiBA,SAAjB;AACA,SAAKC,QAAL,GAAgBA,QAAhB;AACA,SAAKC,QAAL,GAAgB,IAAhB;AACA,SAAKC,aAAL,GAAqB,IAArB;AACA,SAAKC,OAAL,GAAe,IAAf;AACH;AACD;AACJ;AACA;AACA;;;AACe,MAAPP,OAAO,CAACA,OAAD,EAAU;AACjB,SAAKK,QAAL,GAAgBL,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D;AAAE/unB,MAAAA,IAAI,EAAEu7jB,0DAAkB8wD;AAA1B,KAA1D,CAAP;AAAiG,GAH3I,EAG6J;AAAEqB,IAAAA,OAAO,EAAE,CAAC;AACzJ1tnB,MAAAA,IAAI,EAAEwyD,gDAAKA;AAD8I,KAAD,CAAX;AAE7I07jB,IAAAA,YAAY,EAAE,CAAC;AACflunB,MAAAA,IAAI,EAAEwyD,gDAAKA;AADI,KAAD,CAF+H;AAI7I47jB,IAAAA,aAAa,EAAE,CAAC;AAChBpunB,MAAAA,IAAI,EAAEwyD,gDAAKA;AADK,KAAD;AAJ8H,GAH7J;AAAA;;AAUA,SAASk8jB,eAAT,CAAyBrrjB,IAAzB,EAA+BtoB,MAA/B,EAAuC;AACnCsoB,EAAAA,IAAI,CAACx0D,OAAL,CAAa4+mB,SAAb,GAAyB1ykB,MAAM,CAAChG,IAAhC;AACH;;AACD,SAASs5kB,WAAT,CAAqBrunB,IAArB,EAA2B;AACvB,SAAOA,IAAI,CAAC,MAAD,CAAJ,IAAgB,OAAOA,IAA9B;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC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MAAMC,YAAY,GAAG,IAAIxf,yDAAJ,CAAmB,aAAnB,EAAkC;AAAEqC,EAAAA,UAAU,EAAE,MAAd;AAAsB7qd,EAAAA,OAAO,EAAE,MAAM8ne;AAArC,CAAlC,CAArB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMG,gBAAN,CAAuB;AACnB/koB,EAAAA,WAAW,CAACgloB,WAAD,EAAcvslB,MAAd,EAAsBmjG,QAAtB,EAAgCqpf,UAAhC,EAA4CnJ,QAA5C,EAAsDgD,UAAtD,EAAkEoG,kBAAlE,EAAsF;AAC7F,SAAKF,WAAL,GAAmBA,WAAnB;AACA,SAAKvslB,MAAL,GAAcA,MAAd;AACA,SAAKmjG,QAAL,GAAgBA,QAAhB;AACA,SAAKqpf,UAAL,GAAkBA,UAAlB;AACA,SAAKnJ,QAAL,GAAgBA,QAAhB;AACA,SAAKgD,UAAL,GAAkBA,UAAlB;AACA,SAAKoG,kBAAL,GAA0BA,kBAA1B;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKC,YAAL,GAAoB,IAApB;AACA,SAAKC,SAAL,GAAiB,KAAjB;AACA,SAAKC,uBAAL,GAA+B,KAA/B;AACA,SAAKC,KAAL,GAAa,KAAb;AACA,SAAK7slB,MAAL,GAAc8slB,aAAa,CAAC,KAAK9slB,MAAN,CAA3B;AACA,SAAKijf,UAAL,GAAkB,KAAKupG,UAAL,CAAgB/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,YAA/C;AACH;;AACDvrnB,EAAAA,OAAO,GAAG;AACN,SAAKwrnB,QAAL,GAAgB,KAAhB;;AACA,SAAK5P,iBAAL,CAAuB7ze,KAAvB;AACH;;AACD0jf,EAAAA,YAAY,CAAC9piB,OAAD,EAAU;AAClB,QAAIA,OAAO,IAAI,CAAC,KAAK6piB,QAArB,EAA+B;AAC3B,WAAK7wmB,MAAL;AACH,KAFD,MAGK,IAAI,CAACgnE,OAAD,IAAY,KAAK6piB,QAArB,EAA+B;AAChC,WAAKxrnB,OAAL;AACH;AACJ;;AArBY;AAuBjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0rnB,QAAN,CAAe;AACXlroB,EAAAA,WAAW,GAAG;AACV,SAAKmroB,YAAL,GAAoB,KAApB;AACA,SAAKC,UAAL,GAAkB,CAAlB;AACA,SAAKC,mBAAL,GAA2B,CAA3B;AACA,SAAKC,iBAAL,GAAyB,KAAzB;AACH;;AACW,MAARC,QAAQ,CAACz2mB,QAAD,EAAW;AACnB,SAAK02mB,SAAL,GAAiB12mB,QAAjB;;AACA,QAAI,KAAKs2mB,UAAL,KAAoB,CAAxB,EAA2B;AACvB,WAAKK,mBAAL,CAAyB,IAAzB;AACH;AACJ;AACD;;;AACAC,EAAAA,QAAQ,GAAG;AACP,WAAO,KAAKN,UAAL,EAAP;AACH;AACD;;;AACAO,EAAAA,WAAW,CAAC15jB,IAAD,EAAO;AACd,QAAI,CAAC,KAAK25jB,aAAV,EAAyB;AACrB,WAAKA,aAAL,GAAqB,EAArB;AACH;;AACD,SAAKA,aAAL,CAAmB5ooB,IAAnB,CAAwBivE,IAAxB;AACH;AACD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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMkqB,QAAN,CAAe;AACXxvoB,EAAAA,WAAW,CAACwhB,MAAD,EAASiunB,eAAT,EAA0B;AACjC,SAAKjunB,MAAL,GAAcA,MAAd;AACA,SAAKiunB,eAAL,GAAuBA,eAAvB;AACH;;AACDlwmB,EAAAA,SAAS,CAACzgC,KAAD,EAAQ2P,MAAM,GAAG,YAAjB,EAA+ByC,QAA/B,EAAyCsQ,MAAzC,EAAiD;AACtD,QAAIhb,EAAJ;;AACA,QAAI1H,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAK,EAA3B,IAAiCA,KAAK,KAAKA,KAA/C,EACI,OAAO,IAAP;;AACJ,QAAI;AACA,aAAOwhB,UAAU,CAACxhB,KAAD,EAAQ2P,MAAR,EAAgB+S,MAAM,IAAI,KAAKA,MAA/B,EAAuC,CAAChb,EAAE,GAAG0K,QAAQ,KAAK,IAAb,IAAqBA,QAAQ,KAAK,KAAK,CAAvC,GAA2CA,QAA3C,GAAsD,KAAKu+nB,eAAjE,MAAsF,IAAtF,IAA8FjpoB,EAAE,KAAK,KAAK,CAA1G,GAA8GA,EAA9G,GAAmHtJ,SAA1J,CAAjB;AACH,KAFD,CAGA,OAAO+rB,KAAP,EAAc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I,CAAJ,CAAP;AACH;AACD;AACJ;AACA;;;AACIs+lB,EAAAA,gBAAgB,CAAC1imB,QAAD,EAAW,CAAG;AAC9B;AACJ;AACA;;;AACI2imB,EAAAA,cAAc,CAACj8iB,MAAD,EAAS,CAAG;AAC1B;AACJ;AACA;;;AACIq8iB,EAAAA,2BAA2B,CAACC,iBAAD,EAAoB,CAAG;;AAtB3B;AAyB3B;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMc,UAAN,CAAiB;AAGjB;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMC,uBAAuB,GAAGlT,iBAAiB,CAACmT,mBAAD,EAAsBj6C,SAAS,GAAG,CAAC,uDAAD,CAAH,GAA+D/7lB,SAA9F,CAAjD,EACA;;AACA,SAASg2oB,mBAAT,CAA6B5kkB,IAA7B,EAAmC71B,MAAnC,EAA2C;AACvC,MAAI17C,MAAM,GAAI,aAAd;;AACA,MAAI07C,MAAM,CAAC3H,KAAX,EAAkB;AACd/zC,IAAAA,MAAM,IAAK,UAAS07C,MAAM,CAAC3H,KAAM,EAAjC;AACH,GAJsC,CAKvC;AACA;;;AACA,SAAQ,GAAEw9B,IAAK,kBAAiBvxE,MAAO,IAAG07C,MAAM,CAAC/2C,GAAI,EAArD;AACH;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5yNA;AACA;AACA;AACA;AACA;AAEA;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,MAAMwyoB,WAAN,CAAkB;AAElB;AACA;AACA;AACA;AACA;AACA;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AAI,CAACt2O,MAAO,IAAGs2O,IAAI,CAACzuO,UAAW,EAA3G;AACH;;AACD,SAAKF,KAAL,GAAa2uO,IAAI,CAAC3uO,KAAL,IAAc,IAA3B;AACH;;AAnB4C;AAsBjD;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS+unB,OAAT,CAAiBjooB,OAAjB,EAA0BwuB,IAA1B,EAAgC;AAC5B,SAAO;AACHA,IAAAA,IADG;AAEHhV,IAAAA,OAAO,EAAExZ,OAAO,CAACwZ,OAFd;AAGH9L,IAAAA,OAAO,EAAE1N,OAAO,CAAC0N,OAHd;AAIHizN,IAAAA,OAAO,EAAE3gO,OAAO,CAAC2gO,OAJd;AAKH3zO,IAAAA,MAAM,EAAEgT,OAAO,CAAChT,MALb;AAMHg6oB,IAAAA,cAAc,EAAEhnoB,OAAO,CAACgnoB,cANrB;AAOHn8P,IAAAA,YAAY,EAAE7qY,OAAO,CAAC6qY,YAPnB;AAQHnrF,IAAAA,eAAe,EAAE1/S,OAAO,CAAC0/S;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,MAAMwoV,UAAN,CAAiB;AACbj4oB,EAAAA,WAAW,CAACxC,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;;;AACI8vD,EAAAA,OAAO,CAACrsD,KAAD,EAAQmmB,GAAR,EAAarX,OAAO,GAAG,EAAvB,EAA2B;AAC9B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AAjE,OAHO;AADZ,KAAD;AAF6G,GAAD,CAA9H;AAAA;AAWA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMw0C,UAAU,GAAGc,uDAAnB;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,mBAAmB;AACrE;;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;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,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;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,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;AACA;AACA;AACA;AACA;AACA,+CAA+C,SAAS;AACxD,8CAA8C,kCAAkC;AAChF,+CAA+C,SAAS;AACxD;AACA,6CAA6C,SAAS;AACtD;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,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,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;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;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;;AAEisQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5t4BjsQ;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM8I,wBAAN,CAA+B;AAC3B58oB,EAAAA,WAAW,CAAC85nB,SAAD,EAAY+iB,WAAZ,EAAyB;AAChC,SAAK/iB,SAAL,GAAiBA,SAAjB;AACA,SAAK+iB,WAAL,GAAmBA,WAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAK31b,QAAL,GAAiBmuK,CAAD,IAAO,CAAG,CAA1B;AACA;AACR;AACA;AACA;;;AACQ,SAAKynR,SAAL,GAAiB,MAAM,CAAG,CAA1B;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACI7sU,EAAAA,WAAW,CAACvwU,GAAD,EAAMZ,KAAN,EAAa;AACpB,SAAKg7nB,SAAL,CAAe7pT,WAAf,CAA2B,KAAK4sU,WAAL,CAAiB3xE,aAA5C,EAA2DxrkB,GAA3D,EAAgEZ,KAAhE;AACH;AACD;AACJ;AACA;AACA;;;AACIi+oB,EAAAA,iBAAiB,CAACv9lB,EAAD,EAAK;AAClB,SAAKs9lB,SAAL,GAAiBt9lB,EAAjB;AACH;AACD;AACJ;AACA;AACA;;;AACIw9lB,EAAAA,gBAAgB,CAACx9lB,EAAD,EAAK;AACjB,SAAK0nK,QAAL,GAAgB1nK,EAAhB;AACH;AACD;AACJ;AACA;AACA;;;AACIy9lB,EAAAA,gBAAgB,CAAC1sV,UAAD,EAAa;AACzB,SAAK0f,WAAL,CAAiB,UAAjB,EAA6B1f,UAA7B;AACH;;AA5C0B;;AA8C/BqsV,wBAAwB,CAACrwE,IAAzB;AAAA,mBAAqHqwE,wBAArH,EAA2GzyE,+DAA3G,CAA+JA,oDAA/J,GAA2GA,+DAA3G,CAAwLA,qDAAxL;AAAA;;AACAyyE,wBAAwB,CAACpwE,IAAzB,kBAD2GrC,+DAC3G;AAAA,QAAyGyyE;AAAzG;;AACA;AAAA,qDAF2GzyE,+DAE3G,CAA2FyyE,wBAA3F,EAAiI,CAAC;AACtHhuoB,IAAAA,IAAI,EAAEm7jB,oDAASA;AADuG,GAAD,CAAjI,EAE4B,YAAY;AAAE,WAAO,CAAC;AAAEn7jB,MAAAA,IAAI,EAAEu7jB,oDAAYF;AAApB,KAAD,EAAyB;AAAEr7jB,MAAAA,IAAI,EAAEu7jB,qDAAaH;AAArB,KAAzB,CAAP;AAA2D,GAFrG;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMkzE,2BAAN,SAA0CN,wBAA1C,CAAmE;;AAEnEM,2BAA2B,CAAC3wE,IAA5B;AAAA;AAAA;AAAA,oGAhB2GpC,mEAgB3G,CAAwH+yE,2BAAxH,SAAwHA,2BAAxH;AAAA;AAAA;;AACAA,2BAA2B,CAAC1wE,IAA5B,kBAjB2GrC,+DAiB3G;AAAA,QAA4G+yE,2BAA5G;AAAA,aAjB2G/yE,wEAiB3G;AAAA;;AACA;AAAA,qDAlB2GA,+DAkB3G,CAA2F+yE,2BAA3F,EAAoI,CAAC;AACzHtuoB,IAAAA,IAAI,EAAEm7jB,oDAASA;AAD0G,GAAD,CAApI;AAAA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMozE,iBAAiB,GAAG,IAAI73B,yDAAJ,CAAmB,iBAAnB,CAA1B;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM83B,uBAAuB,GAAG;AAC5B7c,EAAAA,OAAO,EAAE4c,iBADmB;AAE5BhB,EAAAA,WAAW,EAAEI,yDAAU,CAAC,MAAMc,4BAAP,CAFK;AAG5B7+C,EAAAA,KAAK,EAAE;AAHqB,CAAhC;AAKA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAM6+C,4BAAN,SAA2CH,2BAA3C,CAAuE;AACnE;AACJ;AACA;AACA;AACII,EAAAA,UAAU,CAACx+oB,KAAD,EAAQ;AACd,SAAKmxU,WAAL,CAAiB,SAAjB,EAA4BnxU,KAA5B;AACH;;AAPkE;;AASvEu+oB,4BAA4B,CAAC9wE,IAA7B;AAAA;AAAA;AAAA,sGA1E2GpC,mEA0E3G,CAAyHkzE,4BAAzH,SAAyHA,4BAAzH;AAAA;AAAA;;AACAA,4BAA4B,CAAC7wE,IAA7B,kBA3E2GrC,+DA2E3G;AAAA,QAA6GkzE,4BAA7G;AAAA;AAAA;AAAA;AA3E2GlzE,MAAAA,wDA2E3G;AAAA,eAA6G,mCAA7G;AAAA;AAAA,eAA6G,eAA7G;AAAA;AAAA;AAAA;AAAA,aA3E2GA,gEA2E3G,CAAsW,CAACizE,uBAAD,CAAtW,GA3E2GjzE,wEA2E3G;AAAA;;AACA;AAAA,qDA5E2GA,+DA4E3G,CAA2FkzE,4BAA3F,EAAqI,CAAC;AAC1HzuoB,IAAAA,IAAI,EAAEm7jB,oDADoH;AAE1HtnkB,IAAAA,IAAI,EAAE,CAAC;AACC2uB,MAAAA,QAAQ,EAAE,uGADX;AAECoqC,MAAAA,IAAI,EAAE;AAAE,oBAAY,iCAAd;AAAiD,kBAAU;AAA3D,OAFP;AAGC8kkB,MAAAA,SAAS,EAAE,CAAC8c,uBAAD;AAHZ,KAAD;AAFoH,GAAD,CAArI;AAAA;AASA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMG,sBAAsB,GAAG;AAC3Bhd,EAAAA,OAAO,EAAE4c,iBADkB;AAE3BhB,EAAAA,WAAW,EAAEI,yDAAU,CAAC,MAAMiB,oBAAP,CAFI;AAG3Bh/C,EAAAA,KAAK,EAAE;AAHoB,CAA/B;AAKA;AACA;AACA;AACA;;AACA,SAASi/C,UAAT,GAAsB;AAClB,QAAMzynB,SAAS,GAAG0onB,2DAAO,KAAKA,2DAAO,GAAGt1c,YAAV,EAAL,GAAgC,EAAzD;AACA,SAAO,gBAAgB/vL,IAAhB,CAAqB2c,SAAS,CAAC/O,WAAV,EAArB,CAAP;AACH;AACD;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMyhoB,uBAAuB,GAAG,IAAIp4B,yDAAJ,CAAmB,sBAAnB,CAAhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMk4B,oBAAN,SAAmCZ,wBAAnC,CAA4D;AACxD58oB,EAAAA,WAAW,CAAC47I,QAAD,EAAWqpf,UAAX,EAAuB0Y,gBAAvB,EAAyC;AAChD,UAAM/hgB,QAAN,EAAgBqpf,UAAhB;AACA,SAAK0Y,gBAAL,GAAwBA,gBAAxB;AACA;;AACA,SAAKC,UAAL,GAAkB,KAAlB;;AACA,QAAI,KAAKD,gBAAL,IAAyB,IAA7B,EAAmC;AAC/B,WAAKA,gBAAL,GAAwB,CAACF,UAAU,EAAnC;AACH;AACJ;AACD;AACJ;AACA;AACA;;;AACIH,EAAAA,UAAU,CAACx+oB,KAAD,EAAQ;AACd,UAAMo+lB,eAAe,GAAGp+lB,KAAK,IAAI,IAAT,GAAgB,EAAhB,GAAqBA,KAA7C;AACA,SAAKmxU,WAAL,CAAiB,OAAjB,EAA0BitR,eAA1B;AACH;AACD;;;AACA2gD,EAAAA,YAAY,CAAC/+oB,KAAD,EAAQ;AAChB,QAAI,CAAC,KAAK6+oB,gBAAN,IAA2B,KAAKA,gBAAL,IAAyB,CAAC,KAAKC,UAA9D,EAA2E;AACvE,WAAK12b,QAAL,CAAcpoN,KAAd;AACH;AACJ;AACD;;;AACAg/oB,EAAAA,iBAAiB,GAAG;AAChB,SAAKF,UAAL,GAAkB,IAAlB;AACH;AACD;;;AACAG,EAAAA,eAAe,CAACj/oB,KAAD,EAAQ;AACnB,SAAK8+oB,UAAL,GAAkB,KAAlB;AACA,SAAKD,gBAAL,IAAyB,KAAKz2b,QAAL,CAAcpoN,KAAd,CAAzB;AACH;;AAhCuD;;AAkC5D0+oB,oBAAoB,CAACjxE,IAArB;AAAA,mBAAiHixE,oBAAjH,EArL2GrzE,+DAqL3G,CAAuJA,oDAAvJ,GArL2GA,+DAqL3G,CAAgLA,qDAAhL,GArL2GA,+DAqL3G,CAA0MuzE,uBAA1M;AAAA;;AACAF,oBAAoB,CAAChxE,IAArB,kBAtL2GrC,+DAsL3G;AAAA,QAAqGqzE,oBAArG;AAAA;AAAA;AAAA;AAtL2GrzE,MAAAA,wDAsL3G;AAAA,eAAqG,qCAArG;AAAA;AAAA,eAAqG,eAArG;AAAA;AAAA,eAAqG,uBAArG;AAAA;AAAA,eAAqG,wCAArG;AAAA;AAAA;AAAA;AAAA,aAtL2GA,gEAsL3G,CAAokB,CAACozE,sBAAD,CAApkB,GAtL2GpzE,wEAsL3G;AAAA;;AACA;AAAA,qDAvL2GA,+DAuL3G,CAA2FqzE,oBAA3F,EAA6H,CAAC;AAClH5uoB,IAAAA,IAAI,EAAEm7jB,oDAD4G;AAElHtnkB,IAAAA,IAAI,EAAE,CAAC;AACC2uB,MAAAA,QAAQ,EAAE,8MADX;AAEC;AACA;AACA;AACAoqC,MAAAA,IAAI,EAAE;AACF,mBAAW,8CADT;AAEF,kBAAU,aAFR;AAGF,8BAAsB,gCAHpB;AAIF,4BAAoB;AAJlB,OALP;AAWC8kkB,MAAAA,SAAS,EAAE,CAACid,sBAAD;AAXZ,KAAD;AAF4G,GAAD,CAA7H,EAe4B,YAAY;AAChC,WAAO,CAAC;AAAE3uoB,MAAAA,IAAI,EAAEu7jB,oDAAYF;AAApB,KAAD,EAAyB;AAAEr7jB,MAAAA,IAAI,EAAEu7jB,qDAAaH;AAArB,KAAzB,EAAkD;AAAEp7jB,MAAAA,IAAI,EAAE1R,SAAR;AAAmBy9B,MAAAA,UAAU,EAAE,CAAC;AACzE/rB,QAAAA,IAAI,EAAE42mB,mDAAQA;AAD2D,OAAD,EAEzE;AACC52mB,QAAAA,IAAI,EAAE85B,iDADP;AAECjmC,QAAAA,IAAI,EAAE,CAACi7oB,uBAAD;AAFP,OAFyE;AAA/B,KAAlD,CAAP;AAMH,GAtBL;AAAA;AAwBA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASM,iBAAT,CAA2Bl/oB,KAA3B,EAAkC;AAC9B;AACA,SAAOA,KAAK,IAAI,IAAT,IAAiBA,KAAK,CAACP,MAAN,KAAiB,CAAzC;AACH;;AACD,SAAS0/oB,cAAT,CAAwBn/oB,KAAxB,EAA+B;AAC3B;AACA,SAAOA,KAAK,IAAI,IAAT,IAAiB,OAAOA,KAAK,CAACP,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,MAAM2/oB,aAAa,GAAG,IAAI54B,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,MAAM64B,mBAAmB,GAAG,IAAI74B,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,MAAM84B,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,SAAHnnoB,GAAG,CAACA,GAAD,EAAM;AACZ,WAAOonoB,YAAY,CAACpnoB,GAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACc,SAAHC,GAAG,CAACA,GAAD,EAAM;AACZ,WAAOonoB,YAAY,CAACpnoB,GAAD,CAAnB;AACH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACmB,SAARkgS,QAAQ,CAACmnW,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,SAAL9mW,KAAK,CAAC8mW,OAAD,EAAU;AAClB,WAAOI,cAAc,CAACJ,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,SAAT1mW,SAAS,CAACA,SAAD,EAAY;AACxB,WAAO+mW,kBAAkB,CAAC/mW,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,SAATD,SAAS,CAACA,SAAD,EAAY;AACxB,WAAOinW,kBAAkB,CAAC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hB,EAAoB;AACzB,SAAK5pjB,MAAL,GAAcA,MAAd;;AACA,SAAKkonB,qBAAL,CAA2Bt+D,IAAI,CAACs9D,SAAL,KAAmB,KAA9C;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;;;AACI99nB,EAAAA,GAAG,CAACoiD,IAAD,EAAO;AACN,WAAOm5kB,KAAK,CAAC,IAAD,EAAOn5kB,IAAP,EAAa,GAAb,CAAZ;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;;;AACIwzkB,EAAAA,QAAQ,CAACD,SAAD,EAAYvzkB,IAAZ,EAAkB;AACtB,UAAMkwkB,OAAO,GAAGlwkB,IAAI,GAAG,KAAKpiD,GAAL,CAASoiD,IAAT,CAAH,GAAoB,IAAxC;AACA,WAAOkwkB,OAAO,IAAIA,OAAO,CAAC17mB,MAAnB,GAA4B07mB,OAAO,CAAC17mB,MAAR,CAAe++mB,SAAf,CAA5B,GAAwD,IAA/D;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;;;AACID,EAAAA,QAAQ,CAACC,SAAD,EAAYvzkB,IAAZ,EAAkB;AACtB,WAAO,CAAC,CAAC,KAAKwzkB,QAAL,CAAcD,SAAd,EAAyBvzkB,IAAzB,CAAT;AACH;AACD;AACJ;AACA;;;AACY,MAAJrsB,IAAI,GAAG;AACP,QAAIj8B,CAAC,GAAG,IAAR;;AACA,WAAOA,CAAC,CAACg8nB,OAAT,EAAkB;AACdh8nB,MAAAA,CAAC,GAAGA,CAAC,CAACg8nB,OAAN;AACH;;AACD,WAAOh8nB,CAAP;AACH;AACD;;;AACAgloB,EAA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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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/C,WAAN,SAA0BQ,eAA1B,CAA0C;AACtC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI7opB,EAAAA,WAAW,CAACurpB,SAAS,GAAG,IAAb,EAAmBxD,eAAnB,EAAoCtG,cAApC,EAAoD;AAC3D,UAAMqG,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAACzG,cAAD,EAAiBsG,eAAjB,CAA1D;AACA;AACR;AACA;AACA;AACA;AACA;;AACQ,SAAKjynB,YAAL,GAAoB,IAApB;AACA;;AACA,SAAK41nB,SAAL,GAAiB,EAAjB;AACA;;AACA,SAAKpG,cAAL,GAAsB,KAAtB;;AACA,SAAKqG,eAAL,CAAqBJ,SAArB;;AACA,SAAKC,kBAAL,CAAwBzD,eAAxB;;AACA,SAAKkD,gBAAL;;AACA,SAAKhG,sBAAL,CAA4B;AACxBwE,MAAAA,QAAQ,EAAE,IADc;AAExB;AACA;AACA;AACA;AACAO,MAAAA,SAAS,EAAE,CAAC,CAAC,KAAKvI;AANM,KAA5B;;AAQA,QAAIuG,YAAY,CAACD,eAAD,CAAZ,IAAiCA,eAAe,CAAC6D,qBAArD,EAA4E;AACxE,UAAI,KAAKN,aAAL,CAAmBC,SAAnB,CAAJ,EAAmC;AAC/B,aAAKz1nB,YAAL,GAAoBy1nB,SAAS,CAACzspB,KAA9B;AACH,OAFD,MAGK;AACD,aAAKg3B,YAAL,GAAoBy1nB,SAApB;AACH;AACJ;AACJ;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIjspB,EAAAA,QAAQ,CAACR,KAAD,EAAQiR,OAAO,GAAG,EAAlB,EAA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KAAKumpB,aAAL,GAAqBkG,SAAlC;AACH;AACJ;;AA1MqC;AA4M1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMjD,SAAN,SAAwBO,eAAxB,CAAwC;AACpC;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACI7opB,EAAAA,WAAW,CAACu8hB,QAAD,EAAWwrH,eAAX,EAA4BtG,cAA5B,EAA4C;AACnD,UAAMqG,cAAc,CAACC,eAAD,CAApB,EAAuCG,mBAAmB,CAACzG,cAAD,EAAiBsG,eAAjB,CAA1D;AACA,SAAKxrH,QAAL,GAAgBA,QAAhB;;AACA,SAAK0uH,gBAAL;;AACA,SAAKO,kBAAL,CAAwBzD,eAAxB;;AACA,SAAKiE,cAAL;;AACA,SAAK/G,sBAAL,CAA4B;AACxBwE,MAAAA,QAAQ,EAAE,IADc;AAExB;AACA;AACA;AACAO,MAAAA,SAAS,EAAE,CAAC,CAAC,KAAKvI;AALM,KAA5B;AAOH;AACD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACIwK,EAAAA,eAAe,CAACztoB,IAAD,EAAOggoB,OAAP,EAAgB;AAC3B,QAAI,KAAKjiH,QAAL,CAAc/9gB,IAAd,CAAJ,EACI,OAAO,KAAK+9gB,QAAL,CAAc/9gB,IAAd,CAAP;AACJ,SAAK+9gB,QAAL,CAAc/9gB,IAAd,IAAsBggoB,OAAtB;AACAA,IAAAA,OAAO,CAAC8L,SAAR,CAAkB,IAAlB;;AACA9L,IAAAA,OAAO,CAACgG,2BAAR,CAAoC,K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AC5BrsB,EAAAA,OAAO,EAAE0hB,gBADmB;AAE5B9F,EAAAA,WAAW,EAAEI,yDAAU,CAAC,MAAMsQ,MAAP;AAFK,CAAhC;;AAIA,MAAMC,iBAAiB,GAAG,CAAC,MAAMrloB,OAAO,CAACC,OAAR,CAAgB,IAAhB,CAAP,GAA1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAMmloB,MAAN,SAAqB5K,gBAArB,CAAsC;AAClCjipB,EAAAA,WAAW,CAACk/oB,UAAD,EAAa4F,eAAb,EAA8B;AACrC;AACA;AACR;AACA;AACA;;AACQ,SAAKxC,SAAL,GAAiB,KAAjB;AACA,SAAKyK,WAAL,GAAmB,IAAIhoD,GAAJ,EAAnB;AACA;AACR;AACA;AACA;;AACQ,SAAKioD,QAAL,GAAgB,IAAIvnC,uDAAJ,EAAhB;AACA,SAAKhoiB,IAAL,GACI,IAAI6qkB,SAAJ,CAAc,EAAd,EAAkB1I,iBAAiB,CAACV,UAAD,CAAnC,EAAiDY,sBAAsB,CAACgF,eAAD,CAAvE,CADJ;AAEH;AACD;;;AACAmI,EAAAA,eAAe,GAAG;AACd,SAAKzB,kBAAL;AACH;AACD;AACJ;AACA;AACA;;;AACqB,MAAbtJ,aAAa,GAAG;AAChB,WAAO,IAAP;AACH;AACD;AACJ;AACA;AACA;;;AACe,MAAP1D,OAAO,GAAG;AACV,WAAO,KAAK/gkB,IAAZ;AACH;AACD;AACJ;AACA;AACA;AACA;;;AACY,MAAJnP,IAAI,GAAG;AACP,WAAO,EAAP;AACH;AACD;AACJ;AACA;AACA;;;AACgB,MAARiud,QAAQ,GAAG;AACX,WAAO,KAAK9+c,IAAL,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AC,cAAD;AAFU,KAAD;AAAR,GAvBvB;AAAA;AA4BA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,MAAM0rpB,oBAAoB,GAAG;AACzB5tB,EAAAA,OAAO,EAAEwhB,SADgB;AAEzB5F,EAAAA,WAAW,EAAEI,yDAAU,CAAC,MAAM6R,OAAP;AAFE,CAA7B;AAIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAMhV,eAAe,GAAG,CAAC,MAAM3xnB,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,MAAM0moB,OAAN,SAAsBrM,SAAtB,CAAgC;AAC5B/hpB,EAAAA,WAAW,CAACwD,MAAD,EAAS07oB,UAAT,EAAqB4F,eAArB,EAAsC+B,cAAtC,EAAsDwH,kBAAtD,EAA0E;AACjF;AACA,SAAKA,kBAAL,GAA0BA,kBAA1B;AACA,SAAK7P,OAAL,GAAe,IAAI6J,WAAJ,EAAf;AACA;;AACA,SAAKiG,WAAL,GAAmB,KAAnB;AACA;AACR;AACA;AACA;AACA;;AACQ,SAAKz6lB,MAAL,GAAc,IAAI4xjB,uDAAJ,EAAd;AACA,SAAKu8B,OAAL,GAAex+oB,MAAf;;AACA,SAAK69oB,cAAL,CAAoBnC,UAApB;;AACA,SAAKqC,mBAAL,CAAyBuD,eAAzB;;AACA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AM,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,MAAMgwrB,UAAN,CAAiB;AACbrurB,EAAAA,WAAW,CAACsurB,MAAD,EAASriB,KAAT,EAAgBsiB,iBAAhB,EAAmC3yiB,QAAnC,EAA6C7pH,EAA7C,EAAiD;AACxD,SAAKu8pB,MAAL,GAAcA,MAAd;AACA,SAAKriB,KAAL,GAAaA,KAAb;AACA,SAAKsiB,iBAAL,GAAyBA,iBAAzB;AACA,SAAK3yiB,QAAL,GAAgBA,QAAhB;AACA,SAAK7pH,EAAL,GAAUA,EAAV;AACA,SAAK8lF,QAAL,GAAgB,IAAhB;AACA;;AACA,SAAK22kB,SAAL,GAAiB,IAAI3oV,0CAAJ,EAAjB;AACA,SAAK4oV,0BAAL,CAAgC,GAAhC;AACH;AACD;AACJ;AACA;AACA;;;AACIA,EAAAA,0BAA0B,CAACC,WAAD,EAAc;AACpC,QAAI,KAAKH,iBAAL,IAA0B;AAAK;AAAnC,MAAsE;AAClE;AACH;;AACD,UAAM3yiB,QAAQ,GAAG,KAAKA,QAAtB;AACA,UAAMsvb,aAAa,GAAG,KAAKn5iB,EAAL,CAAQm5iB,aAA9B;;AACA,QAAIwjH,WAAW,KAAK,IAApB,EAA0B;AACtB9yiB,MAAAA,QAAQ,CAAC/sH,YAAT,CAAsBq8iB,aAAtB,EAAqC,UAA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//qB,MAAAA,IAAI,EAAEwyD,gDAAKA;AADE,KAAD,CAxBqH;AA0BjI4rF,IAAAA,OAAO,EAAE,CAAC;AACVp+I,MAAAA,IAAI,EAAEg7pB,uDADI;AAEVnnqB,MAAAA,IAAI,EAAE,CAAC,OAAD,EACF,CAAC,eAAD,EAAkB,gBAAlB,EAAoC,iBAApC,EAAuD,eAAvD,EAAwE,gBAAxE,CADE;AAFI,KAAD;AA1BwH,GAHjJ;AAAA;;AAkCA,SAASmsrB,aAAT,CAAuBxhrB,CAAvB,EAA0B;AACtB,SAAOA,CAAC,KAAK,EAAN,IAAY,CAAC,CAACA,CAArB;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,MAAM4hrB,gBAAN,CAAuB;AACnBhvrB,EAAAA,WAAW,CAACsurB,MAAD,EAASpqrB,OAAT,EAAkB03I,QAAlB,EAA4BqziB,GAA5B,EAAiC94lB,IAAjC,EAAuC+4lB,YAAvC,EAAqD;AAC5D,SAAKZ,MAAL,GAAcA,MAAd;AACA,SAAKpqrB,OAAL,GAAeA,OAAf;AACA,SAAK03I,QAAL,GAAgBA,QAAhB;AACA,SAAKqziB,GAAL,GAAWA,GAAX;AACA,SAAK94lB,IAAL,GAAYA,IAAZ;AACA,SAAK+4lB,YAAL,GAAoBA,YAApB;AACA,SAAKhgqB,OAAL,GAAe,EAAf;AACA,SAAKm5b,QAAL,GAAgB,KAAhB;AACA;AACR;AACA;AACA;AACA;AACA;AACA;;AACQ,SAAK8mO,uBAAL,GAA+B;AAAEC,MAAAA,KAAK,EAAE;AAAT,KAA/B;AACA;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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AQ;AAC/D;AACA;AACA;;AAEO;AACP,2EAA2E,OAAO;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA,eAAe,uFAAuF,cAAc;AACpH,qBAAqB,gCAAgC,qCAAqC,2CAA2C;AACrI,0BAA0B,MAAM,iBAAiB,YAAY;AAC7D,qBAAqB;AACrB,4BAA4B;AAC5B,2BAA2B;AAC3B,0BAA0B;AAC1B;;AAEO;AACP;AACA,eAAe,6CAA6C,UAAU,sDAAsD,cAAc;AAC1I,wBAAwB,6BAA6B,oBAAoB,uCAAuC,kBAAkB;AAClI;;AAEO;AACP;AACA;AACA,yGAAyG,uFAAuF,cAAc;AAC9M,qBAAqB,8BAA8B,gDAAgD,wDAAwD;AAC3J,2CAA2C,sCAAsC,UAAU,mBAAmB,IAAI;AAClH;;AAEO;AACP,+BAA+B,uCAAuC,YAAY,KAAK,OAAO;AAC9F;AACA;;AAEA;AACA,wCAAwC,4BAA4B;AACpE,CAAC;AACD;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP,2CAA2C;AAC3C;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,8CAA8C;AACnE;AACA;AACA,qBAAqB,aAAa;AAClC;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA+E,SAAS,gBAAgB;AACxG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe;AACf;AACA;AACA;AACA;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,EAAC","sources":["./node_modules/@agm/core/__ivy_ngcc__/fesm2015/agm-core.js","./node_modules/@syncfusion/ej2-angular-base/index.js","./node_modules/@syncfusion/ej2-angular-base/src/complex-array-base.js","./node_modules/@syncfusion/ej2-angular-base/src/component-base.js","./node_modules/@syncfusion/ej2-angular-base/src/form-base.js","./node_modules/@syncfusion/ej2-angular-base/src/index.js","./node_modules/@syncfusion/ej2-angular-base/src/template.js","./node_modules/@syncfusion/ej2-angular-base/src/util.js","./node_modules/@syncfusion/ej2-base/dist/es6/ej2-base.es5.js","./node_modules/@syncfusion/ej2-buttons/dist/es6/ej2-buttons.es5.js","./node_modules/@syncfusion/ej2-calendars/dist/es6/ej2-calendars.es5.js","./node_modules/@syncfusion/ej2-compression/dist/es6/ej2-compression.es5.js","./node_modules/@syncfusion/ej2-data/dist/es6/ej2-data.es5.js","./node_modules/@syncfusion/ej2-drawings/dist/es6/ej2-drawings.es5.js","./node_modules/@syncfusion/ej2-dropdowns/dist/es6/ej2-dropdowns.es5.js","./node_modules/@syncfusion/ej2-excel-export/dist/es6/ej2-excel-export.es5.js","./node_modules/@syncfusion/ej2-file-utils/dist/es6/ej2-file-utils.es5.js","./node_modules/@syncfusion/ej2-filemanager/dist/es6/ej2-filemanager.es5.js","./node_modules/@syncfusion/ej2-grids/dist/es6/ej2-grids.es5.js","./node_modules/@syncfusion/ej2-inplace-editor/dist/es6/ej2-inplace-editor.es5.js","./node_modules/@syncfusion/ej2-inputs/dist/es6/ej2-inputs.es5.js","./node_modules/@syncfusion/ej2-layouts/dist/es6/ej2-layouts.es5.js","./node_modules/@syncfusion/ej2-lists/dist/es6/ej2-lists.es5.js","./node_modules/@syncfusion/ej2-navigations/dist/es6/ej2-navigations.es5.js","./node_modules/@syncfusion/ej2-notifications/dist/es6/ej2-notifications.es5.js","./node_modules/@syncfusion/ej2-pdf-export/dist/es6/ej2-pdf-export.es5.js","./node_modules/@syncfusion/ej2-pdfviewer/dist/es6/ej2-pdfviewer.es5.js","./node_modules/@syncfusion/ej2-popups/dist/es6/ej2-popups.es5.js","./node_modules/@syncfusion/ej2-richtexteditor/dist/es6/ej2-richtexteditor.es5.js","./node_modules/@syncfusion/ej2-splitbuttons/dist/es6/ej2-splitbuttons.es5.js","./node_modules/angular-datatables/index.js","./node_modules/angular-datatables/src/angular-datatables.directive.js","./node_modules/angular-datatables/src/angular-datatables.module.js","./node_modules/highcharts-angular/__ivy_ngcc__/fesm2015/highcharts-angular.js","./node_modules/highcharts/highcharts.js","./node_modules/jquery/dist/jquery.js","./node_modules/ngx-perfect-scrollbar/__ivy_ngcc__/fesm2015/ngx-perfect-scrollbar.js","./node_modules/perfect-scrollbar/dist/perfect-scrollbar.esm.js","./node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","./node_modules/rxjs/_esm2015/internal/AsyncSubject.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/bindCallback.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/fromEventPattern.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/observable/zip.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/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/endWith.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/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/sample.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/skip.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.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/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/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/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/isDate.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/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/@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/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.mjs","./node_modules/@syncfusion/ej2-angular-pdfviewer/fesm2015/syncfusion-ej2-angular-pdfviewer.mjs","./node_modules/ngx-toastr/fesm2015/ngx-toastr.mjs","./node_modules/tslib/tslib.es6.mjs"],"sourcesContent":["import { __awaiter } from 'tslib';\nimport { Injectable, NgZone, ɵɵdefineInjectable, ɵɵinject, InjectionToken, Optional, Inject, LOCALE_ID, Directive, Input, EventEmitter, Output, Self, Component, ElementRef, PLATFORM_ID, ContentChildren, QueryList, forwardRef, NgModule } from '@angular/core';\nimport { Observable, BehaviorSubject, from, timer, ReplaySubject, bindCallback, of, throwError, fromEventPattern, merge, Subject } from 'rxjs';\nimport { flatMap, sample, switchMap, map, shareReplay, multicast, startWith, skip, distinctUntilChanged, takeUntil } from 'rxjs/operators';\nimport { isPlatformServer } from '@angular/common';\n\nimport * as ɵngcc0 from '@angular/core';\n\nconst _c0 = [\"*\"];\nclass MapsAPILoader {\n}\nMapsAPILoader.ɵfac = function MapsAPILoader_Factory(t) { return new (t || MapsAPILoader)(); };\nMapsAPILoader.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MapsAPILoader, factory: MapsAPILoader.ɵfac });\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MapsAPILoader, [{\n type: Injectable\n }], null, null); })();\n\n/**\n * Wrapper class that handles the communication with the Google Maps Javascript\n * API v3\n */\nclass GoogleMapsAPIWrapper {\n constructor(_loader, _zone) {\n this._loader = _loader;\n this._zone = _zone;\n this._map =\n new Promise((resolve) => { this._mapResolver = resolve; });\n }\n createMap(el, mapOptions) {\n return this._zone.runOutsideAngular(() => {\n return this._loader.load().then(() => {\n const map = new google.maps.Map(el, mapOptions);\n this._mapResolver(map);\n return;\n });\n });\n }\n setMapOptions(options) {\n return this._zone.runOutsideAngular(() => {\n this._map.then((m) => { m.setOptions(options); });\n });\n }\n /**\n * Creates a google map marker with the map context\n */\n createMarker(options = {}, addToMap = true) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => {\n if (addToMap) {\n options.map = map;\n }\n return new google.maps.Marker(options);\n });\n });\n }\n createInfoWindow(options) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then(() => new google.maps.InfoWindow(options));\n });\n }\n /**\n * Creates a google.map.Circle for the current map.\n */\n createCircle(options) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => {\n options.map = map;\n return new google.maps.Circle(options);\n });\n });\n }\n /**\n * Creates a google.map.Rectangle for the current map.\n */\n createRectangle(options) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => {\n options.map = map;\n return new google.maps.Rectangle(options);\n });\n });\n }\n createPolyline(options) {\n return this._zone.runOutsideAngular(() => {\n return this.getNativeMap().then((map) => {\n const line = new google.maps.Polyline(options);\n line.setMap(map);\n return line;\n });\n });\n }\n createPolygon(options) {\n return this._zone.runOutsideAngular(() => {\n return this.getNativeMap().then((map) => {\n const polygon = new google.maps.Polygon(options);\n polygon.setMap(map);\n return polygon;\n });\n });\n }\n /**\n * Creates a new google.map.Data layer for the current map\n */\n createDataLayer(options) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then(m => {\n const data = new google.maps.Data(options);\n data.setMap(m);\n return data;\n });\n });\n }\n /**\n * Creates a TransitLayer instance for a map\n * @returns a new transit layer object\n */\n createTransitLayer() {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => {\n const newLayer = new google.maps.TransitLayer();\n newLayer.setMap(map);\n return newLayer;\n });\n });\n }\n /**\n * Creates a BicyclingLayer instance for a map\n * @returns a new bicycling layer object\n */\n createBicyclingLayer() {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => {\n const newLayer = new google.maps.BicyclingLayer();\n newLayer.setMap(map);\n return newLayer;\n });\n });\n }\n /**\n * Determines if given coordinates are insite a Polygon path.\n */\n containsLocation(latLng, polygon) {\n return this._map.then(() => google.maps.geometry.poly.containsLocation(latLng, polygon));\n }\n subscribeToMapEvent(eventName) {\n return new Observable((observer) => {\n this._map.then(m => m.addListener(eventName, () => this._zone.run(() => observer.next(arguments[0]))));\n });\n }\n clearInstanceListeners() {\n return this._zone.runOutsideAngular(() => {\n this._map.then((map) => {\n google.maps.event.clearInstanceListeners(map);\n });\n });\n }\n setCenter(latLng) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.setCenter(latLng));\n });\n }\n getZoom() {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.getZoom());\n });\n }\n getBounds() {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.getBounds());\n });\n }\n getMapTypeId() {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.getMapTypeId());\n });\n }\n setZoom(zoom) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.setZoom(zoom));\n });\n }\n getCenter() {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.getCenter());\n });\n }\n panTo(latLng) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.panTo(latLng));\n });\n }\n panBy(x, y) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.panBy(x, y));\n });\n }\n fitBounds(latLng, padding) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.fitBounds(latLng, padding));\n });\n }\n panToBounds(latLng, padding) {\n return this._zone.runOutsideAngular(() => {\n return this._map.then((map) => map.panToBounds(latLng, padding));\n });\n }\n /**\n * Returns the native Google Maps Map instance. Be careful when using this instance directly.\n */\n getNativeMap() { return this._map; }\n /**\n * Triggers the given event name on the map instance.\n */\n triggerMapEvent(eventName) {\n return this._map.then((m) => google.maps.event.trigger(m, eventName));\n }\n}\nGoogleMapsAPIWrapper.ɵfac = function GoogleMapsAPIWrapper_Factory(t) { return new (t || GoogleMapsAPIWrapper)(ɵngcc0.ɵɵinject(MapsAPILoader), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nGoogleMapsAPIWrapper.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: GoogleMapsAPIWrapper, factory: GoogleMapsAPIWrapper.ɵfac });\nGoogleMapsAPIWrapper.ctorParameters = () => [\n { type: MapsAPILoader },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(GoogleMapsAPIWrapper, [{\n type: Injectable\n }], function () { return [{ type: MapsAPILoader }, { type: ɵngcc0.NgZone }]; }, null); })();\n\nclass CircleManager {\n constructor(_apiWrapper, _zone) {\n this._apiWrapper = _apiWrapper;\n this._zone = _zone;\n this._circles = new Map();\n }\n addCircle(circle) {\n this._apiWrapper.getNativeMap().then(() => this._circles.set(circle, this._apiWrapper.createCircle({\n center: { lat: circle.latitude, lng: circle.longitude },\n clickable: circle.clickable,\n draggable: circle.draggable,\n editable: circle.editable,\n fillColor: circle.fillColor,\n fillOpacity: circle.fillOpacity,\n radius: circle.radius,\n strokeColor: circle.strokeColor,\n strokeOpacity: circle.strokeOpacity,\n strokePosition: google.maps.StrokePosition[circle.strokePosition],\n strokeWeight: circle.strokeWeight,\n visible: circle.visible,\n zIndex: circle.zIndex,\n })));\n }\n /**\n * Removes the given circle from the map.\n */\n removeCircle(circle) {\n return this._circles.get(circle).then((c) => {\n c.setMap(null);\n this._circles.delete(circle);\n });\n }\n setOptions(circle, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this._circles.get(circle).then((c) => {\n const actualParam = options.strokePosition;\n options.strokePosition = google.maps.StrokePosition[actualParam];\n c.setOptions(options);\n });\n });\n }\n getBounds(circle) {\n return this._circles.get(circle).then((c) => c.getBounds());\n }\n getCenter(circle) {\n return this._circles.get(circle).then((c) => c.getCenter());\n }\n getRadius(circle) {\n return this._circles.get(circle).then((c) => c.getRadius());\n }\n setCenter(circle) {\n return this._circles.get(circle).then(c => c.setCenter({ lat: circle.latitude, lng: circle.longitude }));\n }\n setEditable(circle) {\n return this._circles.get(circle).then(c => c.setEditable(circle.editable));\n }\n setDraggable(circle) {\n return this._circles.get(circle).then(c => c.setDraggable(circle.draggable));\n }\n setVisible(circle) {\n return this._circles.get(circle).then(c => c.setVisible(circle.visible));\n }\n setRadius(circle) {\n return this._circles.get(circle).then(c => c.setRadius(circle.radius));\n }\n getNativeCircle(circle) {\n return this._circles.get(circle);\n }\n createEventObservable(eventName, circle) {\n return new Observable((observer) => {\n let listener = null;\n this._circles.get(circle).then((c) => {\n listener = c.addListener(eventName, (e) => this._zone.run(() => observer.next(e)));\n });\n return () => {\n if (listener !== null) {\n listener.remove();\n }\n };\n });\n }\n}\nCircleManager.ɵfac = function CircleManager_Factory(t) { return new (t || CircleManager)(ɵngcc0.ɵɵinject(GoogleMapsAPIWrapper), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nCircleManager.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: CircleManager, factory: CircleManager.ɵfac });\nCircleManager.ctorParameters = () => [\n { type: GoogleMapsAPIWrapper },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(CircleManager, [{\n type: Injectable\n }], function () { return [{ type: GoogleMapsAPIWrapper }, { type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * Manages all Data Layers for a Google Map instance.\n */\nclass DataLayerManager {\n constructor(_wrapper, _zone) {\n this._wrapper = _wrapper;\n this._zone = _zone;\n this._layers = new Map();\n }\n /**\n * Adds a new Data Layer to the map.\n */\n addDataLayer(layer) {\n const newLayer = this._wrapper.createDataLayer({\n style: layer.style,\n })\n .then(d => {\n if (layer.geoJson) {\n // NOTE: accessing \"features\" on google.maps.Data is undocumented\n this.getDataFeatures(d, layer.geoJson).then(features => d.features = features);\n }\n return d;\n });\n this._layers.set(layer, newLayer);\n }\n deleteDataLayer(layer) {\n this._layers.get(layer).then(l => {\n l.setMap(null);\n this._layers.delete(layer);\n });\n }\n updateGeoJson(layer, geoJson) {\n this._layers.get(layer).then(l => {\n l.forEach(feature => {\n l.remove(feature);\n // NOTE: accessing \"features\" on google.maps.Data is undocumented\n const index = l.features.indexOf(feature, 0);\n if (index > -1) {\n l.features.splice(index, 1);\n }\n });\n this.getDataFeatures(l, geoJson).then(features => l.features = features);\n });\n }\n setDataOptions(layer, options) {\n this._layers.get(layer).then(l => {\n l.setControlPosition(options.controlPosition);\n l.setControls(options.controls);\n l.setDrawingMode(options.drawingMode);\n l.setStyle(options.style);\n });\n }\n /**\n * Creates a Google Maps event listener for the given DataLayer as an Observable\n */\n createEventObservable(eventName, layer) {\n return new Observable((observer) => {\n this._layers.get(layer).then((d) => {\n d.addListener(eventName, (e) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n /**\n * Extract features from a geoJson using google.maps Data Class\n * @param d : google.maps.Data class instance\n * @param geoJson : url or geojson object\n */\n getDataFeatures(d, geoJson) {\n return new Promise((resolve, reject) => {\n if (typeof geoJson === 'object') {\n try {\n const features = d.addGeoJson(geoJson);\n resolve(features);\n }\n catch (e) {\n reject(e);\n }\n }\n else if (typeof geoJson === 'string') {\n d.loadGeoJson(geoJson, null, resolve);\n }\n else {\n reject(`Impossible to extract features from geoJson: wrong argument type`);\n }\n });\n }\n}\nDataLayerManager.ɵfac = function DataLayerManager_Factory(t) { return new (t || DataLayerManager)(ɵngcc0.ɵɵinject(GoogleMapsAPIWrapper), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nDataLayerManager.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: DataLayerManager, factory: DataLayerManager.ɵfac });\nDataLayerManager.ctorParameters = () => [\n { type: GoogleMapsAPIWrapper },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(DataLayerManager, [{\n type: Injectable\n }], function () { return [{ type: GoogleMapsAPIWrapper }, { type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * Class to implement when you what to be able to make it work with the auto fit bounds feature\n * of AGM.\n */\nclass FitBoundsAccessor {\n}\n/**\n * The FitBoundsService is responsible for computing the bounds of the a single map.\n */\nclass FitBoundsService {\n constructor(loader) {\n this._boundsChangeSampleTime$ = new BehaviorSubject(200);\n this._includeInBounds$ = new BehaviorSubject(new Map());\n this.bounds$ = from(loader.load()).pipe(flatMap(() => this._includeInBounds$), sample(this._boundsChangeSampleTime$.pipe(switchMap(time => timer(0, time)))), map(includeInBounds => this._generateBounds(includeInBounds)), shareReplay(1));\n }\n _generateBounds(includeInBounds) {\n const bounds = new google.maps.LatLngBounds();\n includeInBounds.forEach(b => bounds.extend(b));\n return bounds;\n }\n addToBounds(latLng) {\n const id = this._createIdentifier(latLng);\n if (this._includeInBounds$.value.has(id)) {\n return;\n }\n const boundsMap = this._includeInBounds$.value;\n boundsMap.set(id, latLng);\n this._includeInBounds$.next(boundsMap);\n }\n removeFromBounds(latLng) {\n const boundsMap = this._includeInBounds$.value;\n boundsMap.delete(this._createIdentifier(latLng));\n this._includeInBounds$.next(boundsMap);\n }\n changeFitBoundsChangeSampleTime(timeMs) {\n this._boundsChangeSampleTime$.next(timeMs);\n }\n getBounds$() {\n return this.bounds$;\n }\n _createIdentifier(latLng) {\n return `${latLng.lat}+${latLng.lng}`;\n }\n}\nFitBoundsService.ɵfac = function FitBoundsService_Factory(t) { return new (t || FitBoundsService)(ɵngcc0.ɵɵinject(MapsAPILoader)); };\nFitBoundsService.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: FitBoundsService, factory: FitBoundsService.ɵfac });\nFitBoundsService.ctorParameters = () => [\n { type: MapsAPILoader }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(FitBoundsService, [{\n type: Injectable\n }], function () { return [{ type: MapsAPILoader }]; }, null); })();\n\nclass AgmGeocoder {\n constructor(loader) {\n const connectableGeocoder$ = new Observable(subscriber => {\n loader.load().then(() => subscriber.next());\n })\n .pipe(map(() => this._createGeocoder()), multicast(new ReplaySubject(1)));\n connectableGeocoder$.connect(); // ignore the subscription\n // since we will remain subscribed till application exits\n this.geocoder$ = connectableGeocoder$;\n }\n geocode(request) {\n return this.geocoder$.pipe(switchMap((geocoder) => this._getGoogleResults(geocoder, request)));\n }\n _getGoogleResults(geocoder, request) {\n const geocodeObservable = bindCallback(geocoder.geocode);\n return geocodeObservable(request).pipe(switchMap(([results, status]) => {\n if (status === google.maps.GeocoderStatus.OK) {\n return of(results);\n }\n return throwError(status);\n }));\n }\n _createGeocoder() {\n return new google.maps.Geocoder();\n }\n}\nAgmGeocoder.ɵfac = function AgmGeocoder_Factory(t) { return new (t || AgmGeocoder)(ɵngcc0.ɵɵinject(MapsAPILoader)); };\nAgmGeocoder.ɵprov = ɵɵdefineInjectable({ factory: function AgmGeocoder_Factory() { return new AgmGeocoder(ɵɵinject(MapsAPILoader)); }, token: AgmGeocoder, providedIn: \"root\" });\nAgmGeocoder.ctorParameters = () => [\n { type: MapsAPILoader }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(AgmGeocoder, [{\n type: Injectable,\n args: [{ providedIn: 'root' }]\n }], function () { return [{ type: MapsAPILoader }]; }, null); })();\n\nclass WindowRef {\n getNativeWindow() { return window; }\n}\nclass DocumentRef {\n getNativeDocument() { return document; }\n}\nconst BROWSER_GLOBALS_PROVIDERS = [WindowRef, DocumentRef];\n\nvar GoogleMapsScriptProtocol;\n(function (GoogleMapsScriptProtocol) {\n GoogleMapsScriptProtocol[GoogleMapsScriptProtocol[\"HTTP\"] = 1] = \"HTTP\";\n GoogleMapsScriptProtocol[GoogleMapsScriptProtocol[\"HTTPS\"] = 2] = \"HTTPS\";\n GoogleMapsScriptProtocol[GoogleMapsScriptProtocol[\"AUTO\"] = 3] = \"AUTO\";\n})(GoogleMapsScriptProtocol || (GoogleMapsScriptProtocol = {}));\n/**\n * Token for the config of the LazyMapsAPILoader. Please provide an object of type {@link\n * LazyMapsAPILoaderConfig}.\n */\nconst LAZY_MAPS_API_CONFIG = new InjectionToken('angular-google-maps LAZY_MAPS_API_CONFIG');\nclass LazyMapsAPILoader extends MapsAPILoader {\n constructor(config = null, w, d, localeId) {\n super();\n this.localeId = localeId;\n this._SCRIPT_ID = 'agmGoogleMapsApiScript';\n this.callbackName = `agmLazyMapsAPILoader`;\n this._config = config || {};\n this._windowRef = w;\n this._documentRef = d;\n }\n load() {\n const window = this._windowRef.getNativeWindow();\n if (window.google && window.google.maps) {\n // Google maps already loaded on the page.\n return Promise.resolve();\n }\n if (this._scriptLoadingPromise) {\n return this._scriptLoadingPromise;\n }\n // this can happen in HMR situations or Stackblitz.io editors.\n const scriptOnPage = this._documentRef.getNativeDocument().getElementById(this._SCRIPT_ID);\n if (scriptOnPage) {\n this._assignScriptLoadingPromise(scriptOnPage);\n return this._scriptLoadingPromise;\n }\n const script = this._documentRef.getNativeDocument().createElement('script');\n script.type = 'text/javascript';\n script.async = true;\n script.defer = true;\n script.id = this._SCRIPT_ID;\n script.src = this._getScriptSrc(this.callbackName);\n this._assignScriptLoadingPromise(script);\n this._documentRef.getNativeDocument().body.appendChild(script);\n return this._scriptLoadingPromise;\n }\n _assignScriptLoadingPromise(scriptElem) {\n this._scriptLoadingPromise = new Promise((resolve, reject) => {\n this._windowRef.getNativeWindow()[this.callbackName] = () => {\n resolve();\n };\n scriptElem.onerror = (error) => {\n reject(error);\n };\n });\n }\n _getScriptSrc(callbackName) {\n const protocolType = (this._config && this._config.protocol) || GoogleMapsScriptProtocol.HTTPS;\n let protocol;\n switch (protocolType) {\n case GoogleMapsScriptProtocol.AUTO:\n protocol = '';\n break;\n case GoogleMapsScriptProtocol.HTTP:\n protocol = 'http:';\n break;\n case GoogleMapsScriptProtocol.HTTPS:\n protocol = 'https:';\n break;\n }\n const hostAndPath = this._config.hostAndPath || 'maps.googleapis.com/maps/api/js';\n const queryParams = {\n v: this._config.apiVersion || 'quarterly',\n callback: callbackName,\n key: this._config.apiKey,\n client: this._config.clientId,\n channel: this._config.channel,\n libraries: this._config.libraries,\n region: this._config.region,\n language: this._config.language || (this.localeId !== 'en-US' ? this.localeId : null),\n };\n const params = Object.keys(queryParams)\n .filter((k) => queryParams[k] != null)\n .filter((k) => {\n // remove empty arrays\n return !Array.isArray(queryParams[k]) ||\n (Array.isArray(queryParams[k]) && queryParams[k].length > 0);\n })\n .map((k) => {\n // join arrays as comma seperated strings\n const i = queryParams[k];\n if (Array.isArray(i)) {\n return { key: k, value: i.join(',') };\n }\n return { key: k, value: queryParams[k] };\n })\n .map((entry) => {\n return `${entry.key}=${entry.value}`;\n })\n .join('&');\n return `${protocol}//${hostAndPath}?${params}`;\n }\n}\nLazyMapsAPILoader.ɵfac = function LazyMapsAPILoader_Factory(t) { return new (t || LazyMapsAPILoader)(ɵngcc0.ɵɵinject(LAZY_MAPS_API_CONFIG, 8), ɵngcc0.ɵɵinject(WindowRef), ɵngcc0.ɵɵinject(DocumentRef), ɵngcc0.ɵɵinject(LOCALE_ID)); };\nLazyMapsAPILoader.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LazyMapsAPILoader, factory: LazyMapsAPILoader.ɵfac });\nLazyMapsAPILoader.ctorParameters = () => [\n { type: undefined, decorators: [{ type: Optional }, { type: Inject, args: [LAZY_MAPS_API_CONFIG,] }] },\n { type: WindowRef },\n { type: DocumentRef },\n { type: String, decorators: [{ type: Inject, args: [LOCALE_ID,] }] }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LazyMapsAPILoader, [{\n type: Injectable\n }], function () { return [{ type: undefined, decorators: [{\n type: Optional\n }, {\n type: Inject,\n args: [LAZY_MAPS_API_CONFIG]\n }] }, { type: WindowRef }, { type: DocumentRef }, { type: String, decorators: [{\n type: Inject,\n args: [LOCALE_ID]\n }] }]; }, null); })();\n\nclass MarkerManager {\n constructor(_mapsWrapper, _zone) {\n this._mapsWrapper = _mapsWrapper;\n this._zone = _zone;\n this._markers = new Map();\n }\n convertAnimation(uiAnim) {\n return __awaiter(this, void 0, void 0, function* () {\n if (uiAnim === null) {\n return null;\n }\n else {\n return this._mapsWrapper.getNativeMap().then(() => google.maps.Animation[uiAnim]);\n }\n });\n }\n deleteMarker(markerDirective) {\n const markerPromise = this._markers.get(markerDirective);\n if (markerPromise == null) {\n // marker already deleted\n return Promise.resolve();\n }\n return markerPromise.then((marker) => {\n return this._zone.run(() => {\n marker.setMap(null);\n this._markers.delete(markerDirective);\n });\n });\n }\n updateMarkerPosition(marker) {\n return this._markers.get(marker).then((m) => m.setPosition({ lat: marker.latitude, lng: marker.longitude }));\n }\n updateTitle(marker) {\n return this._markers.get(marker).then((m) => m.setTitle(marker.title));\n }\n updateLabel(marker) {\n return this._markers.get(marker).then((m) => { m.setLabel(marker.label); });\n }\n updateDraggable(marker) {\n return this._markers.get(marker).then((m) => m.setDraggable(marker.draggable));\n }\n updateIcon(marker) {\n return this._markers.get(marker).then((m) => m.setIcon(marker.iconUrl));\n }\n updateOpacity(marker) {\n return this._markers.get(marker).then((m) => m.setOpacity(marker.opacity));\n }\n updateVisible(marker) {\n return this._markers.get(marker).then((m) => m.setVisible(marker.visible));\n }\n updateZIndex(marker) {\n return this._markers.get(marker).then((m) => m.setZIndex(marker.zIndex));\n }\n updateClickable(marker) {\n return this._markers.get(marker).then((m) => m.setClickable(marker.clickable));\n }\n updateAnimation(marker) {\n return __awaiter(this, void 0, void 0, function* () {\n const m = yield this._markers.get(marker);\n m.setAnimation(yield this.convertAnimation(marker.animation));\n });\n }\n addMarker(marker) {\n const markerPromise = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n return this._mapsWrapper.createMarker({\n position: { lat: marker.latitude, lng: marker.longitude },\n label: marker.label,\n draggable: marker.draggable,\n icon: marker.iconUrl,\n opacity: marker.opacity,\n visible: marker.visible,\n zIndex: marker.zIndex,\n title: marker.title,\n clickable: marker.clickable,\n animation: yield this.convertAnimation(marker.animation),\n }).then(resolve);\n }));\n this._markers.set(marker, markerPromise);\n }\n getNativeMarker(marker) {\n return this._markers.get(marker);\n }\n createEventObservable(eventName, marker) {\n return new Observable(observer => {\n this._markers.get(marker).then(m => m.addListener(eventName, e => this._zone.run(() => observer.next(e))));\n });\n }\n}\nMarkerManager.ɵfac = function MarkerManager_Factory(t) { return new (t || MarkerManager)(ɵngcc0.ɵɵinject(GoogleMapsAPIWrapper), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nMarkerManager.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: MarkerManager, factory: MarkerManager.ɵfac });\nMarkerManager.ctorParameters = () => [\n { type: GoogleMapsAPIWrapper },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(MarkerManager, [{\n type: Injectable\n }], function () { return [{ type: GoogleMapsAPIWrapper }, { type: ɵngcc0.NgZone }]; }, null); })();\n\nclass InfoWindowManager {\n constructor(_mapsWrapper, _zone, _markerManager) {\n this._mapsWrapper = _mapsWrapper;\n this._zone = _zone;\n this._markerManager = _markerManager;\n this._infoWindows = new Map();\n }\n deleteInfoWindow(infoWindow) {\n const iWindow = this._infoWindows.get(infoWindow);\n if (iWindow == null) {\n // info window already deleted\n return Promise.resolve();\n }\n return iWindow.then((i) => {\n return this._zone.run(() => {\n i.close();\n this._infoWindows.delete(infoWindow);\n });\n });\n }\n setPosition(infoWindow) {\n return this._infoWindows.get(infoWindow).then((i) => i.setPosition({\n lat: infoWindow.latitude,\n lng: infoWindow.longitude,\n }));\n }\n setZIndex(infoWindow) {\n return this._infoWindows.get(infoWindow)\n .then((i) => i.setZIndex(infoWindow.zIndex));\n }\n open(infoWindow) {\n return this._infoWindows.get(infoWindow).then((w) => {\n if (infoWindow.hostMarker != null) {\n return this._markerManager.getNativeMarker(infoWindow.hostMarker).then((marker) => {\n return this._mapsWrapper.getNativeMap().then((map) => w.open(map, marker));\n });\n }\n return this._mapsWrapper.getNativeMap().then((map) => w.open(map));\n });\n }\n close(infoWindow) {\n return this._infoWindows.get(infoWindow).then((w) => w.close());\n }\n setOptions(infoWindow, options) {\n return this._infoWindows.get(infoWindow).then((i) => i.setOptions(options));\n }\n addInfoWindow(infoWindow) {\n const options = {\n content: infoWindow.content,\n maxWidth: infoWindow.maxWidth,\n zIndex: infoWindow.zIndex,\n disableAutoPan: infoWindow.disableAutoPan,\n };\n if (typeof infoWindow.latitude === 'number' && typeof infoWindow.longitude === 'number') {\n options.position = { lat: infoWindow.latitude, lng: infoWindow.longitude };\n }\n const infoWindowPromise = this._mapsWrapper.createInfoWindow(options);\n this._infoWindows.set(infoWindow, infoWindowPromise);\n }\n /**\n * Creates a Google Maps event listener for the given InfoWindow as an Observable\n */\n createEventObservable(eventName, infoWindow) {\n return new Observable((observer) => {\n this._infoWindows.get(infoWindow).then((i) => {\n i.addListener(eventName, (e) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n}\nInfoWindowManager.ɵfac = function InfoWindowManager_Factory(t) { return new (t || InfoWindowManager)(ɵngcc0.ɵɵinject(GoogleMapsAPIWrapper), ɵngcc0.ɵɵinject(ɵngcc0.NgZone), ɵngcc0.ɵɵinject(MarkerManager)); };\nInfoWindowManager.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: InfoWindowManager, factory: InfoWindowManager.ɵfac });\nInfoWindowManager.ctorParameters = () => [\n { type: GoogleMapsAPIWrapper },\n { type: NgZone },\n { type: MarkerManager }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(InfoWindowManager, [{\n type: Injectable\n }], function () { return [{ type: GoogleMapsAPIWrapper }, { type: ɵngcc0.NgZone }, { type: MarkerManager }]; }, null); })();\n\n/**\n * Manages all KML Layers for a Google Map instance.\n */\nclass KmlLayerManager {\n constructor(_wrapper, _zone) {\n this._wrapper = _wrapper;\n this._zone = _zone;\n this._layers = new Map();\n }\n /**\n * Adds a new KML Layer to the map.\n */\n addKmlLayer(layer) {\n const newLayer = this._wrapper.getNativeMap().then(m => {\n return new google.maps.KmlLayer({\n clickable: layer.clickable,\n map: m,\n preserveViewport: layer.preserveViewport,\n screenOverlays: layer.screenOverlays,\n suppressInfoWindows: layer.suppressInfoWindows,\n url: layer.url,\n zIndex: layer.zIndex,\n });\n });\n this._layers.set(layer, newLayer);\n }\n setOptions(layer, options) {\n this._layers.get(layer).then(l => l.setOptions(options));\n }\n deleteKmlLayer(layer) {\n this._layers.get(layer).then(l => {\n l.setMap(null);\n this._layers.delete(layer);\n });\n }\n /**\n * Creates a Google Maps event listener for the given KmlLayer as an Observable\n */\n createEventObservable(eventName, layer) {\n return new Observable((observer) => {\n this._layers.get(layer).then((m) => {\n m.addListener(eventName, (e) => this._zone.run(() => observer.next(e)));\n });\n });\n }\n}\nKmlLayerManager.ɵfac = function KmlLayerManager_Factory(t) { return new (t || KmlLayerManager)(ɵngcc0.ɵɵinject(GoogleMapsAPIWrapper), ɵngcc0.ɵɵinject(ɵngcc0.NgZone)); };\nKmlLayerManager.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: KmlLayerManager, factory: KmlLayerManager.ɵfac });\nKmlLayerManager.ctorParameters = () => [\n { type: GoogleMapsAPIWrapper },\n { type: NgZone }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(KmlLayerManager, [{\n type: Injectable\n }], function () { return [{ type: GoogleMapsAPIWrapper }, { type: ɵngcc0.NgZone }]; }, null); })();\n\n/**\n * This class manages Transit and Bicycling Layers for a Google Map instance.\n */\nclass LayerManager {\n constructor(_wrapper) {\n this._wrapper = _wrapper;\n this._layers = new Map();\n }\n /**\n * Adds a transit layer to a map instance.\n * @param layer - a TransitLayer object\n * @param _options - TransitLayerOptions options\n * @returns void\n */\n addTransitLayer(layer) {\n const newLayer = this._wrapper.createTransitLayer();\n this._layers.set(layer, newLayer);\n }\n /**\n * Adds a bicycling layer to a map instance.\n * @param layer - a bicycling layer object\n * @param _options - BicyclingLayer options\n * @returns void\n */\n addBicyclingLayer(layer) {\n const newLayer = this._wrapper.createBicyclingLayer();\n this._layers.set(layer, newLayer);\n }\n /**\n * Deletes a map layer\n * @param layer - the layer to delete\n */\n deleteLayer(layer) {\n return this._layers.get(layer).then(currentLayer => {\n currentLayer.setMap(null);\n this._layers.delete(layer);\n });\n }\n}\nLayerManager.ɵfac = function LayerManager_Factory(t) { return new (t || LayerManager)(ɵngcc0.ɵɵinject(GoogleMapsAPIWrapper)); };\nLayerManager.ɵprov = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjectable({ token: LayerManager, factory: LayerManager.ɵfac });\nLayerManager.ctorParameters = () => [\n { type: GoogleMapsAPIWrapper }\n];\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(LayerManager, [{\n type: Injectable\n }], function () { return [{ type: GoogleMapsAPIWrapper }]; }, null); })();\n\n/**\n * When using the NoOpMapsAPILoader, the Google Maps API must be added to the page via a `' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nfunction formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nfunction enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nfunction isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nfunction getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nfunction getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nfunction addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n\n/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @__PURE__ @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n return new RegExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n ret.numberParseRegex = new RegExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.‏',\n 'BHD': 'د.ب.‏',\n 'DZD': 'د.ج.‏',\n 'EGP': 'ج.م.‏',\n 'ILS': '₪',\n 'IQD': 'د.ع.‏',\n 'JOD': 'د.ا.‏',\n 'KMF': 'CF',\n 'KWD': 'د.ك.‏',\n 'LBP': 'ل.ل.‏',\n 'LYD': 'د.ل.‏',\n 'MAD': 'د.م.‏',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.‏',\n 'QAR': 'ر.ق.‏',\n 'SAR': 'ر.س.‏',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.‏',\n 'TND': 'د.ت.‏',\n 'YER': 'ر.ي.‏',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nfunction getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n\n/***\n * Hijri parser\n */\n// eslint-disable-next-line\nvar HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\n\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nvar datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @__PURE__ @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = IntlBase.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: IntlBase.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = IntlBase.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n IntlBase.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : IntlBase.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = IntlBase.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + IntlBase.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[IntlBase.days][standalone][IntlBase.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + IntlBase.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[IntlBase.month][standalone][IntlBase.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(IntlBase.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = IntlBase.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += ParserBase.convertValueParts(curstr, IntlBase.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\n\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar mapper$1 = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @__PURE__ @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = IntlBase.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : IntlBase.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(IntlBase.formatRegex.test(option.format))) {\n cOptions = IntlBase.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, IntlBase.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = IntlBase.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, IntlBase.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = IntlBase.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = IntlBase.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper$1[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n IntlBase.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper$1[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper$1[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(IntlBase.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper$1[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper$1[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper$1[3]] || '.', curData.groupData.secondary);\n }\n fValue = ParserBase.convertValueParts(fValue, IntlBase.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n return value + '';\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\n\nvar standalone$1 = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter$1 = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @__PURE__ @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = IntlBase.getDependables(cldr, culture, option.calendar);\n var numOptions = ParserBase.getCurrentNumericOptions(dependable.parserObject, ParserBase.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = IntlBase.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n IntlBase.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = IntlBase.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: IntlBase.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(IntlBase.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + IntlBase.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[IntlBase.days][standalone$1][IntlBase.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = ParserBase.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + IntlBase.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone$1][IntlBase.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = ParserBase.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = ParserBase.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = ParserBase.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n parseOptions.parserRegex = new RegExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter$1[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter$1[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = ParserBase.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\n\nvar parseRegex = /^([^0-9]*)(([0-9,]*[0-9]+)(\\.[0-9]+)?)([Ee][+-]?[0-9]+)?([^0-9]*)$/;\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @__PURE__ @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = IntlBase.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((IntlBase.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, IntlBase.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, IntlBase.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = ParserBase.getCurrentNumericOptions(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = ParserBase.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = IntlBase.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, IntlBase.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = IntlBase.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = IntlBase.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n IntlBase.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = ParserBase.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = ParserBase.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\n\nvar Observer = /** @__PURE__ @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\n\n/**\n * Specifies the observer used for external change detection.\n */\nvar onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nvar rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nvar cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nvar defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nvar defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @__PURE__ @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nfunction setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nfunction setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nfunction loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nfunction enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nfunction getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nfunction getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nfunction getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n\nvar blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nvar IntlBase;\n(function (IntlBase) {\n // tslint:disable-next-line:max-line-length\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = /(^[ncpae]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.currencyFormatRegex = /(^[ca]{1})([0-1]?[0-9]|20)?$/i;\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = ParserBase.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n return val.replace(IntlBase.defaultCurrency, sym);\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n ParserBase.getNumberMapper(dependable.parserObject, ParserBase.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\n\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @__PURE__ @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\n\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @__PURE__ @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\n\n/**\n * Functions related to dom operations.\n */\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nfunction createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nfunction addClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new RegExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nfunction removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nfunction isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nfunction prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nfunction append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nfunction remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nfunction attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nfunction selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nfunction closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nfunction siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nfunction getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nfunction setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nfunction classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nfunction matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nfunction includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nfunction cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @__PURE__ @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances.filter(function (i) { return i !== _this; });\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nfunction getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nfunction removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nfunction Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nfunction Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nfunction ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nfunction Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nfunction CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nfunction Event$1() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nfunction NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nfunction CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @__PURE__ @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable') {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event$1()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event$1()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event$1()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event$1()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nfunction rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nvar isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nfunction enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nvar animationMode = '';\n/**\n * Method for set the Global animation modes for Syncfusion Blazor components.\n *\n * @param {string} value - Specifies the animation mode.\n * @returns {void}\n */\nfunction setGlobalAnimation(value) {\n animationMode = value;\n}\n\n/**\n * Module loading operations\n */\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @__PURE__ @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\n\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @__PURE__ @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\n\nvar componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @__PURE__ @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '20.4';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjAuNA==\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + 'Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nfunction registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nvar validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nvar getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nvar createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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 componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nvar versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nfunction enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n return new RegExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate$1([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate$1([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate$1([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate$2([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (this.element && this.element.classList.length > 0 && this.element.classList.value.indexOf(\"e-dialog\") === -1 && document.scrollingElement) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate$2([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate$2([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate$2([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate$2([\n Event$1()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate$2([\n Event$1()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate$2([\n Event$1()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate$2([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate$2([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate$2([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate$2([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate$2([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate$2([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate$2([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate$2([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @__PURE__ @class */ (function (_super) {\n __extends$3(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate$3([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate$3([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate$3([\n Event$1()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate$3([\n Event$1()\n ], Droppable.prototype, \"over\", void 0);\n __decorate$3([\n Event$1()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate$3([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @__PURE__ @class */ (function (_super) {\n __extends$4(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate$4([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate$4([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate$4([\n Event$1()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate$4([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\n\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @__PURE__ @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$5([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @__PURE__ @class */ (function (_super) {\n __extends$5(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate$5([\n Event$1()\n ], Touch.prototype, \"tap\", void 0);\n __decorate$5([\n Event$1()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate$5([\n Event$1()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate$5([\n Event$1()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate$5([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate$5([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate$5([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate$5([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\n\n/**\n * Template Engine\n */\nvar LINES = new RegExp('\\\\n|\\\\r|\\\\s\\\\s+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\n\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nfunction compile$1(template, helper, ignorePrefix) {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, '').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : ' ';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix) ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n\n/**\n * Template Engine Bridge\n */\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\n\n/**\n * Base modules\n */\n\nexport { blazorCultureFormats, IntlBase, Ajax, Animation, rippleEffect, isRippleEnabled, enableRipple, animationMode, setGlobalAnimation, Base, getComponent, removeChildInstance, Browser, versionBasedStatePersistence, enableVersionBasedPersistence, Component, ChildProperty, Position, Draggable, Droppable, EventHandler, onIntlChange, rightToLeft, cldrData, defaultCulture, defaultCurrencyCode, Internationalization, setCulture, setCurrencyCode, loadCldr, enableRtl, getNumericObject, getNumberDependable, getDefaultDateObject, KeyboardEvents, L10n, ModuleLoader, Property, Complex, ComplexFactory, Collection, CollectionFactory, Event$1 as Event, NotifyPropertyChanges, CreateBuilder, SwipeSettings, Touch, HijriParser, blazorTemplates, getRandomId, compile$$1 as compile, updateBlazorTemplate, resetBlazorTemplate, setTemplateEngine, getTemplateEngine, disableBlazorMode, createInstance, setImmediate, getValue, setValue, deleteObject, containerObject, isObject, getEnumValue, merge, extend, isNullOrUndefined, isUndefined, getUniqueID, debounce, queryParams, isObjectArray, compareElementParent, throwError, print, formatUnit, enableBlazorMode, isBlazor, getElement, getInstance, addInstance, uniqueID, createElement, addClass, removeClass, isVisible, prepend, append, detach, remove, attributes, select, selectAll, closest, siblings, getAttributeOrDefault, setStyleAttribute, classList, matches, includeInnerHTML, containsClass, cloneNode, Observer, SanitizeHtmlHelper, componentList, registerLicense, validateLicense, getVersion, createLicenseOverlay };\n","import { Animation, ChildProperty, Collection, Complex, Component, Event, EventHandler, KeyboardEvents, NotifyPropertyChanges, Observer, Property, SanitizeHtmlHelper, addClass, append, attributes, closest, compile, deleteObject, detach, extend, formatUnit, getInstance, getUniqueID, getValue, isBlazor, isNullOrUndefined, isRippleEnabled, remove, removeClass, rippleEffect, select, selectAll, setValue } from '@syncfusion/ej2-base';\n\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nfunction wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nfunction getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nfunction destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nfunction preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nfunction createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nfunction rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nfunction setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n\n/**\n * Common modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * Defines the icon position of button.\n */\nvar IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nvar buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @__PURE__ @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\n\n/**\n * Button modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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 CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @__PURE__ @class */ (function (_super) {\n __extends$1(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n this.element.checked = true;\n if (this.element.required && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n this.element.checked = false;\n if (this.element.required && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required) {\n this.validCheck = true;\n }\n }\n else {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n this.element.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate$1([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate$1([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate$1([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate$1([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate$1([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate$1([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate$1([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\n\n/**\n * CheckBox modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar LABEL$1 = 'e-label';\nvar RIPPLE$1 = 'e-ripple-container';\nvar RTL$1 = 'e-rtl';\nvar WRAPPER$1 = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @__PURE__ @class */ (function (_super) {\n __extends$2(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n if (this.isVue && value && value === this.value) {\n this.checked = true;\n }\n if (this.isVue ? this.value && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER$1)) {\n wrapper = this.createElement('div', { className: WRAPPER$1 });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE$1) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL$1);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelRippleHandler = function (e) {\n var ripple = this.getLabel().getElementsByClassName(RIPPLE$1)[0];\n rippleMouseHandler(e, ripple);\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL$1);\n }\n else {\n label.classList.remove(RTL$1);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (!isNullOrUndefined(this.htmlAttributes) && this.htmlAttributes.value) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER$1, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL$1)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL$1, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES.indexOf(key) > -1) {\n var wrapper = this.element.parentElement;\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelRippleHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelRippleHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL$1)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelRippleHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelRippleHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate$2([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate$2([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate$2([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate$2([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\n\n/**\n * RadioButton modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 DISABLED$1 = 'e-switch-disabled';\nvar RIPPLE$2 = 'e-ripple-container';\nvar RIPPLE_CHECK = 'e-ripple-check';\nvar RTL$2 = 'e-rtl';\nvar WRAPPER$2 = 'e-switch-wrapper';\nvar ACTIVE = 'e-switch-active';\nvar ATTRIBUTES$1 = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value', 'aria-label', 'id'];\n/**\n * The Switch is a graphical user interface element that allows you to toggle between checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar Switch = /** @__PURE__ @class */ (function (_super) {\n __extends$3(Switch, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n *\n * @param {SwitchModel} options switch model\n * @param {string | HTMLInputElement} element target element\n *\n */\n function Switch(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isDrag = false;\n _this.isWireEvents = false;\n return _this;\n }\n Switch.prototype.changeState = function (state) {\n var rippleSpan;\n var wrapper = this.getWrapper();\n var bar = wrapper.querySelector('.e-switch-inner');\n var handle = wrapper.querySelector('.e-switch-handle');\n if (isRippleEnabled) {\n rippleSpan = wrapper.getElementsByClassName(RIPPLE$2)[0];\n }\n if (state) {\n addClass([bar, handle], ACTIVE);\n this.element.checked = true;\n this.checked = true;\n if (rippleSpan) {\n addClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n else {\n removeClass([bar, handle], ACTIVE);\n this.element.checked = false;\n this.checked = false;\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLE_CHECK]);\n }\n }\n };\n Switch.prototype.clickHandler = function (evt) {\n this.isDrag = false;\n this.focusOutHandler();\n this.changeState(!this.checked);\n this.element.focus();\n var changeEventArgs = { checked: this.element.checked, event: evt };\n this.trigger('change', changeEventArgs);\n };\n /**\n * Destroys the Switch widget.\n *\n * @returns {void}\n */\n Switch.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (!this.disabled) {\n this.unWireEvents();\n }\n destroy(this, this.getWrapper(), this.tagName);\n };\n Switch.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n Switch.prototype.focusOutHandler = function () {\n this.getWrapper().classList.remove('e-focus');\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Switch.prototype.getModuleName = function () {\n return 'switch';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist data\n */\n Switch.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n Switch.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n Switch.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialSwitchCheckedValue)) {\n this.initialSwitchCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.changeState(true);\n }\n if (this.disabled) {\n this.setDisabled();\n }\n if (this.onLabel || this.offLabel) {\n this.setLabel(this.onLabel, this.offLabel);\n }\n };\n Switch.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER$2)) {\n wrapper = this.createElement('div', {\n className: WRAPPER$2\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var switchInner = this.createElement('span', { className: 'e-switch-inner' });\n var onLabel = this.createElement('span', { className: 'e-switch-on' });\n var offLabel = this.createElement('span', { className: 'e-switch-off' });\n var handle = this.createElement('span', { className: 'e-switch-handle' });\n wrapper.appendChild(this.element);\n setHiddenInput(this, wrapper);\n switchInner.appendChild(onLabel);\n switchInner.appendChild(offLabel);\n wrapper.appendChild(switchInner);\n wrapper.appendChild(handle);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE$2 });\n handle.appendChild(rippleSpan);\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL$2);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {SwitchModel} newProp - Specifies New Properties\n * @param {SwitchModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n Switch.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.changeState(newProp.checked);\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n this.isWireEvents = false;\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED$1);\n wrapper.setAttribute('aria-disabled', 'false');\n if (!this.isWireEvents) {\n this.wireEvents();\n this.isWireEvents = true;\n }\n }\n break;\n case 'value':\n this.element.setAttribute('value', newProp.value);\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'onLabel':\n case 'offLabel':\n this.setLabel(newProp.onLabel, newProp.offLabel);\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL$2);\n }\n else {\n wrapper.classList.remove(RTL$2);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n preRender(this, 'EJS-SWITCH', WRAPPER$2, element, this.getModuleName());\n };\n /**\n * Initialize control rendering.\n *\n * @private\n * @returns {void}\n */\n Switch.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.updateHtmlAttribute();\n };\n Switch.prototype.rippleHandler = function (e) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE$2)[0];\n rippleMouseHandler(e, rippleSpan);\n if (e.type === 'mousedown' && e.currentTarget.classList.contains('e-switch-wrapper') && e.which === 1) {\n this.isDrag = true;\n this.isFocused = false;\n }\n };\n Switch.prototype.rippleTouchHandler = function (eventType) {\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE$2)[0];\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(eventType, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n };\n Switch.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED$1);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n Switch.prototype.setLabel = function (onText, offText) {\n var wrapper = this.getWrapper();\n if (onText) {\n wrapper.querySelector('.e-switch-on').textContent = onText;\n }\n if (offText) {\n wrapper.querySelector('.e-switch-off').textContent = offText;\n }\n };\n Switch.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (ATTRIBUTES$1.indexOf(key) > -1) {\n var wrapper = this.getWrapper();\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n Switch.prototype.switchFocusHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n Switch.prototype.switchMouseUp = function (e) {\n var target = e.target;\n if (e.type === 'touchmove') {\n e.preventDefault();\n }\n if (e.type === 'touchstart') {\n this.isDrag = true;\n this.rippleTouchHandler('mousedown');\n }\n if (this.isDrag) {\n if ((e.type === 'mouseup' && target.className.indexOf('e-switch') < 0) || e.type === 'touchend') {\n this.clickHandler(e);\n this.rippleTouchHandler('mouseup');\n e.preventDefault();\n }\n }\n };\n Switch.prototype.formResetHandler = function () {\n this.checked = this.initialSwitchCheckedValue;\n this.element.checked = this.initialSwitchCheckedValue;\n };\n /**\n * Toggle the Switch component state into checked/unchecked.\n *\n * @returns {void}\n */\n Switch.prototype.toggle = function () {\n this.clickHandler();\n };\n Switch.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n this.delegateMouseUpHandler = this.switchMouseUp.bind(this);\n this.delegateKeyUpHandler = this.switchFocusHandler.bind(this);\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'mouseup', this.delegateMouseUpHandler, this);\n EventHandler.add(this.element, 'keyup', this.delegateKeyUpHandler, this);\n EventHandler.add(wrapper, 'mousedown mouseup', this.rippleHandler, this);\n EventHandler.add(wrapper, 'touchstart touchmove touchend', this.switchMouseUp, this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n Switch.prototype.unWireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'mouseup', this.delegateMouseUpHandler);\n EventHandler.remove(this.element, 'keyup', this.delegateKeyUpHandler);\n EventHandler.remove(wrapper, 'mousedown mouseup', this.rippleHandler);\n EventHandler.remove(wrapper, 'touchstart touchmove touchend', this.switchMouseUp);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n /**\n * Click the switch element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Switch.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Switch\n * its native method\n *\n * @public\n */\n Switch.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate$3([\n Event()\n ], Switch.prototype, \"change\", void 0);\n __decorate$3([\n Event()\n ], Switch.prototype, \"created\", void 0);\n __decorate$3([\n Property(false)\n ], Switch.prototype, \"checked\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(false)\n ], Switch.prototype, \"disabled\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"name\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"onLabel\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"offLabel\", void 0);\n __decorate$3([\n Property('')\n ], Switch.prototype, \"value\", void 0);\n __decorate$3([\n Property({})\n ], Switch.prototype, \"htmlAttributes\", void 0);\n Switch = __decorate$3([\n NotifyPropertyChanges\n ], Switch);\n return Switch;\n}(Component));\n\n/**\n * Switch modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\nvar classNames = {\n chipSet: 'e-chip-set',\n chip: 'e-chip',\n avatar: 'e-chip-avatar',\n text: 'e-chip-text',\n icon: 'e-chip-icon',\n delete: 'e-chip-delete',\n deleteIcon: 'e-dlt-btn',\n multiSelection: 'e-multi-selection',\n singleSelection: 'e-selection',\n active: 'e-active',\n chipWrapper: 'e-chip-avatar-wrap',\n iconWrapper: 'e-chip-icon-wrap',\n focused: 'e-focused',\n disabled: 'e-disabled',\n rtl: 'e-rtl'\n};\n/**\n * A chip component is a small block of essential information, mostly used on contacts or filter tags.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar ChipList = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ChipList, _super);\n function ChipList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.multiSelectedChip = [];\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n ChipList.prototype.preRender = function () {\n //prerender\n };\n /**\n * To find the chips length.\n *\n * @returns boolean\n * @private\n */\n ChipList.prototype.chipType = function () {\n return (this.chips && this.chips.length && this.chips.length > 0);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n ChipList.prototype.render = function () {\n var property;\n this.type = this.chips.length ? 'chipset' : (this.text || this.element.innerText ? 'chip' : 'chipset');\n this.setAttributes();\n this.createChip();\n this.setRtl();\n this.select(this.selectedChips, property);\n this.wireEvent(false);\n this.rippleFunction = rippleEffect(this.element, {\n selector: '.e-chip'\n });\n this.renderComplete();\n };\n ChipList.prototype.createChip = function () {\n this.innerText = (this.element.innerText && this.element.innerText.length !== 0)\n ? this.element.innerText.trim() : this.element.innerText;\n this.element.innerHTML = '';\n this.chipCreation(this.type === 'chip' ? [this.innerText ? this.innerText : this.text] : this.chips);\n };\n ChipList.prototype.setAttributes = function () {\n if (this.type === 'chip') {\n if (this.enabled)\n this.element.tabIndex = 0;\n this.element.setAttribute('role', 'option');\n }\n else {\n this.element.classList.add(classNames.chipSet);\n this.element.setAttribute('role', 'listbox');\n if (this.selection === 'Multiple') {\n this.element.classList.add(classNames.multiSelection);\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else if (this.selection === 'Single') {\n this.element.classList.add(classNames.singleSelection);\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n }\n };\n ChipList.prototype.setRtl = function () {\n this.element.classList[this.enableRtl ? 'add' : 'remove'](classNames.rtl);\n };\n ChipList.prototype.chipCreation = function (data) {\n var chipListArray = [];\n for (var i = 0; i < data.length; i++) {\n var fieldsData = this.getFieldValues(data[i]);\n var chipArray = this.elementCreation(fieldsData);\n var className = (classNames.chip + ' ' + (fieldsData.enabled ? ' ' : classNames.disabled) + ' ' +\n (fieldsData.avatarIconCss || fieldsData.avatarText ? classNames.chipWrapper : (fieldsData.leadingIconCss ?\n classNames.iconWrapper : ' ')) + ' ' + fieldsData.cssClass).split(' ').filter(function (css) { return css; });\n if (!this.chipType()) {\n chipListArray = chipArray;\n addClass([this.element], className);\n this.element.setAttribute('aria-label', fieldsData.text);\n if (fieldsData.value) {\n this.element.setAttribute('data-value', fieldsData.value.toString());\n }\n }\n else {\n var wrapper = this.createElement('DIV', {\n className: className.join(' '), attrs: {\n tabIndex: '0', role: 'option',\n 'aria-label': fieldsData.text, 'aria-selected': 'false'\n }\n });\n if (fieldsData.value) {\n wrapper.setAttribute('data-value', fieldsData.value.toString());\n }\n if (fieldsData.enabled) {\n wrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n wrapper.removeAttribute('tabindex');\n wrapper.setAttribute('aria-disabled', 'true');\n }\n append(chipArray, wrapper);\n chipListArray.push(wrapper);\n }\n }\n append(chipListArray, this.element);\n };\n ChipList.prototype.getFieldValues = function (data) {\n var chipEnabled = !(this.enabled.toString() === 'false');\n var fields = {\n text: typeof data === 'object' ? (data.text ? data.text.toString() : this.text.toString()) :\n (!this.chipType() ? (this.innerText ? this.innerText : this.text.toString()) : data.toString()),\n cssClass: typeof data === 'object' ? (data.cssClass ? data.cssClass.toString() : this.cssClass.toString()) :\n (this.cssClass.toString()),\n leadingIconCss: typeof data === 'object' ? (data.leadingIconCss ? data.leadingIconCss.toString() :\n this.leadingIconCss.toString()) : (this.leadingIconCss.toString()),\n avatarIconCss: typeof data === 'object' ? (data.avatarIconCss ? data.avatarIconCss.toString() :\n this.avatarIconCss.toString()) : (this.avatarIconCss.toString()),\n avatarText: typeof data === 'object' ? (data.avatarText ? data.avatarText.toString() : this.avatarText.toString()) :\n (this.avatarText.toString()),\n trailingIconCss: typeof data === 'object' ? (data.trailingIconCss ? data.trailingIconCss.toString() :\n this.trailingIconCss.toString()) : (this.trailingIconCss.toString()),\n enabled: typeof data === 'object' ? (!isNullOrUndefined(data.enabled) ? (data.enabled.toString() === 'false' ? false : true) :\n chipEnabled) : (chipEnabled),\n value: typeof data === 'object' ? ((data.value ? data.value.toString() : null)) : null,\n leadingIconUrl: typeof data === 'object' ? (data.leadingIconUrl ? data.leadingIconUrl.toString() : this.leadingIconUrl) :\n this.leadingIconUrl,\n trailingIconUrl: typeof data === 'object' ? (data.trailingIconUrl ? data.trailingIconUrl.toString() : this.trailingIconUrl) :\n this.trailingIconUrl\n };\n return fields;\n };\n ChipList.prototype.elementCreation = function (fields) {\n var chipArray = [];\n if (fields.avatarText || fields.avatarIconCss) {\n var className = (classNames.avatar + ' ' + fields.avatarIconCss).trim();\n var chipAvatarElement = this.createElement('span', { className: className });\n chipAvatarElement.innerText = fields.avatarText;\n chipArray.push(chipAvatarElement);\n }\n else if (fields.leadingIconCss) {\n var className = (classNames.icon + ' ' + fields.leadingIconCss).trim();\n var chipIconElement = this.createElement('span', { className: className });\n chipArray.push(chipIconElement);\n }\n else if (fields.leadingIconUrl) {\n var className = (classNames.avatar + ' ' + 'image-url').trim();\n var chipIconElement = this.createElement('span', { className: className });\n chipIconElement.style.backgroundImage = 'url(' + fields.leadingIconUrl + ')';\n chipArray.push(chipIconElement);\n }\n var chipTextElement = this.createElement('span', { className: classNames.text });\n chipTextElement.innerText = fields.text;\n chipArray.push(chipTextElement);\n if (fields.trailingIconCss || (this.chipType() && this.enableDelete)) {\n var className = (classNames.delete + ' ' +\n (fields.trailingIconCss ? fields.trailingIconCss : classNames.deleteIcon)).trim();\n var chipdeleteElement = this.createElement('span', { className: className });\n chipArray.push(chipdeleteElement);\n }\n else if (fields.trailingIconUrl) {\n var className = ('trailing-icon-url').trim();\n var chipIconsElement = this.createElement('span', { className: className });\n chipIconsElement.style.backgroundImage = 'url(' + fields.trailingIconUrl + ')';\n chipArray.push(chipIconsElement);\n }\n return chipArray;\n };\n /**\n * A function that finds chip based on given input.\n *\n * {% codeBlock src='chips/find/index.md' %}{% endcodeBlock %}\n *\n * @param {number | HTMLElement } fields - We can pass index number or element of chip.\n *\n * @returns {void}\n */\n ChipList.prototype.find = function (fields) {\n var chipData;\n var chipElement = fields instanceof HTMLElement ?\n fields : this.element.querySelectorAll('.' + classNames.chip)[fields];\n if (chipElement && this.chipType()) {\n chipData = { text: undefined, index: undefined, element: undefined, data: undefined };\n chipData.index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipElement);\n chipData.text = typeof this.chips[chipData.index] === 'object' ?\n (this.chips[chipData.index].text ?\n this.chips[chipData.index].text.toString() : '') :\n this.chips[chipData.index].toString();\n chipData.data = this.chips[chipData.index];\n chipData.element = chipElement;\n }\n return chipData;\n };\n /**\n * Allows adding the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * {% codeBlock src='chips/add/index.md' %}{% endcodeBlock %}\n *\n * @param {string[] | number[] | ChipModel[] | string | number | ChipModel} chipsData - We can pass array of string or\n * array of number or array of chip model or string data or number data or chip model.\n *\n * @returns {void}\n * @deprecated\n */\n ChipList.prototype.add = function (chipsData) {\n var _a;\n if (this.type !== 'chip') {\n var fieldData = chipsData instanceof Array ?\n chipsData : [chipsData];\n (_a = this.chips).push.apply(_a, fieldData);\n this.chipCreation(fieldData);\n }\n };\n /**\n * Allows selecting the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * {% codeBlock src='chips/select/index.md' %}{% endcodeBlock %}\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n *\n * @returns {void}\n */\n ChipList.prototype.select = function (fields, selectionType) {\n this.onSelect(fields, false, selectionType);\n };\n ChipList.prototype.multiSelection = function (newProp) {\n var items = this.element.querySelectorAll('.' + 'e-chip');\n for (var j = 0; j < newProp.length; j++) {\n if (typeof newProp[j] === 'string') {\n for (var k = 0; k < items.length; k++) {\n if (newProp[j] !== k) {\n if (newProp[j] === items[k].attributes[5].value) {\n this.multiSelectedChip.push(k);\n break;\n }\n }\n }\n }\n else {\n this.multiSelectedChip.push(newProp[j]);\n }\n }\n };\n ChipList.prototype.onSelect = function (fields, callFromProperty, selectionType) {\n var index;\n var chipNodes;\n var chipValue;\n if (this.chipType() && this.selection !== 'None') {\n if (callFromProperty) {\n var chipElements = this.element.querySelectorAll('.' + classNames.chip);\n for (var i = 0; i < chipElements.length; i++) {\n chipElements[i].setAttribute('aria-selected', 'false');\n chipElements[i].classList.remove(classNames.active);\n }\n }\n var fieldData = fields instanceof Array ? fields : [fields];\n for (var i = 0; i < fieldData.length; i++) {\n var chipElement = fieldData[i] instanceof HTMLElement ? fieldData[i]\n : this.element.querySelectorAll('.' + classNames.chip)[fieldData[i]];\n if (selectionType !== 'index') {\n for (var j = 0; j < this.chips.length; j++) {\n chipNodes = this.element.querySelectorAll('.' + classNames.chip)[j];\n var fieldsData = this.getFieldValues(this.chips[j]);\n if (selectionType === 'value') {\n if (fieldsData.value !== null) {\n chipValue = chipNodes.dataset.value;\n }\n }\n else if (selectionType === 'text') {\n chipValue = chipNodes.innerText;\n }\n if (chipValue === fieldData[i].toString()) {\n index = j;\n chipElement = this.element.querySelectorAll('.' + classNames.chip)[index];\n }\n }\n }\n if (chipElement instanceof HTMLElement) {\n this.selectionHandler(chipElement);\n }\n }\n }\n };\n /**\n * Allows removing the chip item(s) by passing a single or array of string, number, or ChipModel values.\n *\n * {% codeBlock src='chips/remove/index.md' %}{% endcodeBlock %}\n *\n * @param {number | number[] | HTMLElement | HTMLElement[]} fields - We can pass number or array of number\n * or chip element or array of chip element.\n *\n * @returns {void}\n */\n ChipList.prototype.remove = function (fields) {\n var _this = this;\n if (this.chipType()) {\n var fieldData = fields instanceof Array ? fields : [fields];\n var chipElements_1 = [];\n var chipCollection_1 = this.element.querySelectorAll('.' + classNames.chip);\n fieldData.forEach(function (data) {\n var chipElement = data instanceof HTMLElement ? data\n : chipCollection_1[data];\n if (chipElement instanceof HTMLElement) {\n chipElements_1.push(chipElement);\n }\n });\n chipElements_1.forEach(function (element) {\n var chips = _this.element.querySelectorAll('.' + classNames.chip);\n var index = Array.prototype.slice.call(chips).indexOf(element);\n _this.deleteHandler(element, index);\n });\n }\n };\n /**\n * Returns the selected chip(s) data.\n *\n * {% codeBlock src='chips/getSelectedChips/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.getSelectedChips = function () {\n var selectedChips;\n if (this.chipType() && this.selection !== 'None') {\n var selectedItems = { texts: [], Indexes: [], data: [], elements: [] };\n var items = this.element.querySelectorAll('.' + classNames.active);\n for (var i = 0; i < items.length; i++) {\n var chip = items[i];\n selectedItems.elements.push(chip);\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chip);\n selectedItems.Indexes.push(index);\n selectedItems.data.push(this.chips[index]);\n var text = typeof this.chips[index] === 'object' ?\n this.chips[index].text ? this.chips[index].text.toString()\n : null : this.chips[index].toString();\n selectedItems.texts.push(text);\n }\n var selectedItem = {\n text: selectedItems.texts[0], index: selectedItems.Indexes[0],\n data: selectedItems.data[0], element: selectedItems.elements[0]\n };\n selectedChips = !isNullOrUndefined(selectedItem.index) ?\n (this.selection === 'Multiple' ? selectedItems : selectedItem) : undefined;\n }\n return selectedChips;\n };\n ChipList.prototype.wireEvent = function (unWireEvent) {\n if (!unWireEvent) {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keydown', this.keyHandler);\n EventHandler.remove(this.element, 'keyup', this.keyHandler);\n }\n };\n ChipList.prototype.keyHandler = function (e) {\n if (e.target.classList.contains(classNames.chip)) {\n if (e.type === 'keydown') {\n if (e.keyCode === 13 || e.keyCode === 32) {\n this.clickHandler(e);\n }\n else if (e.keyCode === 46 && this.enableDelete) {\n this.clickHandler(e, true);\n }\n }\n else if (e.keyCode === 9) {\n this.focusInHandler(e.target);\n }\n }\n };\n ChipList.prototype.focusInHandler = function (chipWrapper) {\n if (!chipWrapper.classList.contains(classNames.focused)) {\n chipWrapper.classList.add(classNames.focused);\n }\n };\n ChipList.prototype.focusOutHandler = function (e) {\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n var focusedElement = !this.chipType() ? (this.element.classList.contains(classNames.focused) ?\n this.element : null) : this.element.querySelector('.' + classNames.focused);\n if (chipWrapper && focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n }\n };\n ChipList.prototype.clickHandler = function (e, del) {\n var _this = this;\n if (del === void 0) { del = false; }\n var chipWrapper = closest(e.target, '.' + classNames.chip);\n if (chipWrapper) {\n // eslint-disable-next-line\n var chipDataArgs = void 0;\n if (this.chipType()) {\n chipDataArgs = this.find(chipWrapper);\n }\n else {\n var index = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.chip)).indexOf(chipWrapper);\n chipDataArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, index: index\n };\n }\n chipDataArgs.event = e;\n chipDataArgs.cancel = false;\n this.trigger('beforeClick', chipDataArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.clickEventHandler(observedArgs.element, e, del);\n }\n });\n }\n };\n ChipList.prototype.clickEventHandler = function (chipWrapper, e, del) {\n var _this = this;\n if (this.chipType()) {\n var chipData_1 = this.find(chipWrapper);\n chipData_1.event = e;\n var deleteElement = e.target.classList.contains(classNames.deleteIcon) ?\n e.target : (del ? chipWrapper.querySelector('.' + classNames.deleteIcon) : undefined);\n if (deleteElement && this.enableDelete) {\n chipData_1.cancel = false;\n var deletedItemArgs = chipData_1;\n this.trigger('delete', deletedItemArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.deleteHandler(observedArgs.element, observedArgs.index);\n _this.selectionHandler(chipWrapper);\n chipData_1.selected = observedArgs.element.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n _this.trigger('click', selectedItemArgs);\n var chipElement = _this.element.querySelectorAll('.' + classNames.chip)[observedArgs.index];\n if (chipElement) {\n chipElement.focus();\n _this.focusInHandler(chipElement);\n }\n }\n });\n }\n else if (this.selection !== 'None') {\n this.selectionHandler(chipWrapper);\n chipData_1.selected = chipWrapper.classList.contains(classNames.active);\n var selectedItemArgs = chipData_1;\n this.trigger('click', selectedItemArgs);\n }\n else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = chipData_1;\n this.trigger('click', clickedItemArgs);\n }\n }\n else {\n this.focusInHandler(chipWrapper);\n var clickedItemArgs = {\n text: this.innerText ? this.innerText : this.text,\n element: chipWrapper, data: this.text, event: e\n };\n this.trigger('click', clickedItemArgs);\n }\n };\n ChipList.prototype.selectionHandler = function (chipWrapper) {\n if (this.selection === 'Single') {\n var activeElement = this.element.querySelector('.' + classNames.active);\n if (activeElement && activeElement !== chipWrapper) {\n activeElement.classList.remove(classNames.active);\n activeElement.setAttribute('aria-selected', 'false');\n }\n this.setProperties({ selectedChips: null }, true);\n }\n else {\n this.setProperties({ selectedChips: [] }, true);\n }\n if (chipWrapper.classList.contains(classNames.active)) {\n chipWrapper.classList.remove(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'false');\n }\n else {\n chipWrapper.classList.add(classNames.active);\n chipWrapper.setAttribute('aria-selected', 'true');\n }\n this.updateSelectedChips();\n };\n ChipList.prototype.updateSelectedChips = function () {\n var chipListEle = this.element.querySelectorAll('.e-chip');\n var chipCollIndex = [];\n var chipCollValue = [];\n var chip = null;\n var value;\n for (var i = 0; i < chipListEle.length; i++) {\n var selectedEle = this.element.querySelectorAll('.e-chip')[i];\n if (selectedEle.getAttribute('aria-selected') === 'true') {\n value = selectedEle.getAttribute('data-value');\n if (this.selection === 'Single' && selectedEle.classList.contains('e-active')) {\n chip = value ? value : i;\n break;\n }\n else {\n chip = value ? chipCollValue.push(value) : chipCollIndex.push(i);\n }\n }\n }\n this.setProperties({ selectedChips: this.selection === 'Single' ? chip : value ? chipCollValue : chipCollIndex }, true);\n };\n ChipList.prototype.deleteHandler = function (chipWrapper, index) {\n // Used to store the deleted chip item details.\n var deletedChipData = this.find(chipWrapper);\n this.chips.splice(index, 1);\n this.setProperties({ chips: this.chips }, true);\n detach(chipWrapper);\n this.trigger('deleted', deletedChipData);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * {% codeBlock src='chips/destroy/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n ChipList.prototype.destroy = function () {\n removeClass([this.element], [classNames.chipSet, classNames.chip, classNames.rtl,\n classNames.multiSelection, classNames.singleSelection, classNames.disabled, classNames.chipWrapper, classNames.iconWrapper,\n classNames.active, classNames.focused].concat(this.cssClass.toString().split(' ').filter(function (css) { return css; })));\n this.removeMultipleAttributes(['tabindex', 'role', 'aria-label', 'aria-multiselectable'], this.element);\n this.wireEvent(true);\n this.rippleFunction();\n _super.prototype.destroy.call(this);\n this.element.innerHTML = '';\n this.element.innerText = this.innerText;\n };\n ChipList.prototype.removeMultipleAttributes = function (attributes$$1, element) {\n attributes$$1.forEach(function (attr) {\n element.removeAttribute(attr);\n });\n };\n ChipList.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n ChipList.prototype.getModuleName = function () {\n return 'chip-list';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @returns void\n * @private\n */\n ChipList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var property;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'chips':\n case 'text':\n case 'avatarText':\n case 'avatarIconCss':\n case 'leadingIconCss':\n case 'trailingIconCss':\n case 'selection':\n case 'enableDelete':\n case 'enabled':\n this.refresh();\n break;\n case 'cssClass':\n if (!this.chipType()) {\n removeClass([this.element], oldProp.cssClass.toString().split(' ').filter(function (css) { return css; }));\n addClass([this.element], newProp.cssClass.toString().split(' ').filter(function (css) { return css; }));\n }\n else {\n this.refresh();\n }\n break;\n case 'selectedChips':\n removeClass(this.element.querySelectorAll('.e-active'), 'e-active');\n if (this.selection === 'Multiple') {\n this.multiSelectedChip = [];\n this.multiSelection(newProp.selectedChips);\n this.onSelect(this.multiSelectedChip, true, property);\n this.updateSelectedChips();\n }\n else {\n this.onSelect(newProp.selectedChips, true, property);\n }\n break;\n case 'enableRtl':\n this.setRtl();\n break;\n }\n }\n };\n __decorate$4([\n Property([])\n ], ChipList.prototype, \"chips\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"text\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"avatarText\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"avatarIconCss\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"leadingIconCss\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"trailingIconCss\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"leadingIconUrl\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"trailingIconUrl\", void 0);\n __decorate$4([\n Property('')\n ], ChipList.prototype, \"cssClass\", void 0);\n __decorate$4([\n Property(true)\n ], ChipList.prototype, \"enabled\", void 0);\n __decorate$4([\n Property([])\n ], ChipList.prototype, \"selectedChips\", void 0);\n __decorate$4([\n Property('None')\n ], ChipList.prototype, \"selection\", void 0);\n __decorate$4([\n Property(false)\n ], ChipList.prototype, \"enableDelete\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"click\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"beforeClick\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"delete\", void 0);\n __decorate$4([\n Event()\n ], ChipList.prototype, \"deleted\", void 0);\n ChipList = __decorate$4([\n NotifyPropertyChanges\n ], ChipList);\n return ChipList;\n}(Component));\n\n/**\n * Represents ChipList `Chip` model class.\n */\nvar Chip = /** @__PURE__ @class */ (function () {\n function Chip() {\n }\n return Chip;\n}());\n\n/**\n * Chip modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nvar FABHIDDEN = 'e-fab-hidden';\nvar FIXEDFAB = 'e-fab-fixed';\nvar FABVERTDIST = '--fabVertDist';\nvar FABHORZDIST = '--fabHorzDist';\nvar FABTOP = 'e-fab-top';\nvar FABBOTTOM = 'e-fab-bottom';\nvar FABRIGHT = 'e-fab-right';\nvar FABLEFT = 'e-fab-left';\nvar FABMIDDLE = 'e-fab-middle';\nvar FABCENTER = 'e-fab-center';\n/**\n * Defines the position of FAB (Floating Action Button) in target.\n */\nvar FabPosition;\n(function (FabPosition) {\n /**\n * Positions the FAB at the target's top left corner.\n */\n FabPosition[\"TopLeft\"] = \"TopLeft\";\n /**\n * Places the FAB on the top-center position of the target.\n */\n FabPosition[\"TopCenter\"] = \"TopCenter\";\n /**\n * Positions the FAB at the target's top right corner.\n */\n FabPosition[\"TopRight\"] = \"TopRight\";\n /**\n * Positions the FAB in the middle of target's left side.\n */\n FabPosition[\"MiddleLeft\"] = \"MiddleLeft\";\n /**\n * Positions the FAB in the center of target.\n */\n FabPosition[\"MiddleCenter\"] = \"MiddleCenter\";\n /**\n * Positions the FAB in the middle of target's right side.\n */\n FabPosition[\"MiddleRight\"] = \"MiddleRight\";\n /**\n * Positions the FAB at the target's bottom left corner.\n */\n FabPosition[\"BottomLeft\"] = \"BottomLeft\";\n /**\n * Places the FAB on the bottom-center position of the target.\n */\n FabPosition[\"BottomCenter\"] = \"BottomCenter\";\n /**\n * Positions the FAB at the target's bottom right corner.\n */\n FabPosition[\"BottomRight\"] = \"BottomRight\";\n})(FabPosition || (FabPosition = {}));\n/**\n * The FAB Component (Floating Action Button) is an extension of Button Component that appears in front of all the contents of the page and performs the primary action.\n */\nvar Fab = /** @__PURE__ @class */ (function (_super) {\n __extends$5(Fab, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {FabModel} options - Specifies the floating action button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Fab(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Fab.prototype.render = function () {\n _super.prototype.render.call(this);\n this.initializeFab();\n };\n Fab.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Fab.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n return this.addOnPersist([]);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Fab.prototype.getModuleName = function () {\n return 'fab';\n };\n Fab.prototype.initializeFab = function () {\n // To add 'e-btn' class\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.checkTarget();\n this.setPosition();\n this.setVisibility();\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n };\n Fab.prototype.checkTarget = function () {\n this.isFixed = true;\n if (this.target) {\n this.targetEle = (typeof this.target === 'string') ? select(this.target) : this.target;\n if (this.targetEle) {\n this.isFixed = false;\n this.targetEle.appendChild(this.element);\n }\n }\n this.element.classList[this.isFixed ? 'add' : 'remove'](FIXEDFAB);\n };\n Fab.prototype.setVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](FABHIDDEN);\n };\n Fab.prototype.setPosition = function () {\n this.setVerticalPosition();\n this.setHorizontalPosition();\n };\n Fab.prototype.setVerticalPosition = function () {\n //Check for middle position and middle class and vertical distance atttribute.\n if (['MiddleLeft', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n var yoffset = ((this.isFixed ? window.innerHeight : this.targetEle.clientHeight) - this.element.offsetHeight) / 2;\n this.element.style.setProperty(FABVERTDIST, yoffset + 'px');\n this.element.classList.add(FABMIDDLE);\n }\n //Check for bottom position and bottom class else add top class.\n this.element.classList.add((['BottomLeft', 'BottomCenter', 'BottomRight'].indexOf(this.position) !== -1) ? FABBOTTOM : FABTOP);\n };\n Fab.prototype.setHorizontalPosition = function () {\n //Check for center position and center class and horizontal distance atttribute.\n if (['TopCenter', 'BottomCenter', 'MiddleCenter'].indexOf(this.position) !== -1) {\n var xoffset = ((this.isFixed ? window.innerWidth : this.targetEle.clientWidth) - this.element.offsetWidth) / 2;\n this.element.style.setProperty(FABHORZDIST, xoffset + 'px');\n this.element.classList.add(FABCENTER);\n }\n var isRight = ['TopRight', 'MiddleRight', 'BottomRight'].indexOf(this.position) !== -1;\n this.element.classList.add((!(this.enableRtl || isRight) || (this.enableRtl && isRight)) ? FABLEFT : FABRIGHT);\n };\n Fab.prototype.clearPosition = function () {\n this.element.style.removeProperty(FABVERTDIST);\n this.element.classList.remove(FABTOP, FABBOTTOM, FABMIDDLE);\n this.clearHorizontalPosition();\n };\n Fab.prototype.clearHorizontalPosition = function () {\n this.element.style.removeProperty(FABHORZDIST);\n this.element.classList.remove(FABRIGHT, FABLEFT, FABCENTER);\n };\n /**\n * Refreshes the FAB position. You can call this method to re-position FAB when target is resized.\n *\n * @returns {void}\n */\n Fab.prototype.refreshPosition = function () {\n this.resizeHandler();\n };\n Fab.prototype.resizeHandler = function () {\n this.setPosition();\n };\n /**\n * Destroys the FAB instance.\n *\n * @returns {void}\n *\n */\n Fab.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n // To remove 'e-btn' class\n this.element.classList.remove('e-' + _super.prototype.getModuleName.call(this));\n this.clearPosition();\n EventHandler.remove(window, 'resize', this.resizeHandler);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FabModel} newProp - Specifies new properties\n * @param {FabModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Fab.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.clearHorizontalPosition();\n this.setHorizontalPosition();\n break;\n case 'visible':\n this.setVisibility();\n break;\n case 'position':\n this.clearPosition();\n this.setPosition();\n break;\n case 'target':\n this.checkTarget();\n this.setPosition();\n break;\n }\n }\n };\n __decorate$5([\n Property('BottomRight')\n ], Fab.prototype, \"position\", void 0);\n __decorate$5([\n Property('')\n ], Fab.prototype, \"target\", void 0);\n __decorate$5([\n Property(true)\n ], Fab.prototype, \"visible\", void 0);\n __decorate$5([\n Property(true)\n ], Fab.prototype, \"isPrimary\", void 0);\n Fab = __decorate$5([\n NotifyPropertyChanges\n ], Fab);\n return Fab;\n}(Button));\n\n/**\n * Floating Action Button modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar topPosition = ['TopLeft', 'TopCenter', 'TopRight'];\nvar bottomPosition = ['BottomLeft', 'BottomCenter', 'BottomRight'];\nvar leftPosition = ['TopLeft', 'MiddleLeft', 'BottomLeft'];\nvar rightPosition = ['TopRight', 'MiddleRight', 'BottomRight'];\nvar SDHIDDEN = 'e-speeddial-hidden';\nvar FIXEDSD = 'e-speeddial-fixed';\nvar SPEEDDIAL = 'e-speeddial';\nvar RTLCLASS = 'e-rtl';\nvar HOVERSD = 'e-speeddial-hover-open';\nvar RADIALSD = 'e-speeddial-radial';\nvar LINEARSD = 'e-speeddial-linear';\nvar TEMPLATESD = 'e-speeddial-template';\nvar SDTEMPLATECONTAINER = 'e-speeddial-template-container';\nvar SDOVERLAY = 'e-speeddial-overlay';\nvar SDPOPUP = 'e-speeddial-popup';\nvar SDUL = 'e-speeddial-ul';\nvar SDLI = 'e-speeddial-li';\nvar SDACTIVELI = 'e-speeddial-li-active';\nvar SDLIICON = 'e-speeddial-li-icon';\nvar SDLITEXT = 'e-speeddial-li-text';\nvar SDLITEXTONLY = 'e-speeddial-text-li';\nvar DISABLED$2 = 'e-disabled';\nvar SDVERTICALBOTTOM = 'e-speeddial-vert-bottom';\nvar SDVERTICALRIGHT = 'e-speeddial-vert-right';\nvar SDHORIZONTALTOP = 'e-speeddial-horz-top';\nvar SDHORIZONTALLEFT = 'e-speeddial-horz-left';\nvar SDHORIZONTALRIGHT = 'e-speeddial-horz-right';\nvar SDOVERFLOW = 'e-speeddial-overflow';\nvar SDVERTOVERFLOW = 'e-speeddial-vert-overflow';\nvar SDHORZOVERFLOW = 'e-speeddial-horz-overflow';\nvar SDTOP = 'e-speeddial-top';\nvar SDBOTTOM = 'e-speeddial-bottom';\nvar SDRIGHT = 'e-speeddial-right';\nvar SDLEFT = 'e-speeddial-left';\nvar SDMIDDLE = 'e-speeddial-middle';\nvar SDCENTER = 'e-speeddial-center';\nvar SDTOPLEFT = 'e-speeddial-top-left';\nvar SDBOTTOMRIGHT = 'e-speeddial-bottom-right';\nvar SDTOPRIGHT = 'e-speeddial-top-right';\nvar SDBOTTOMLEFT = 'e-speeddial-bottom-left';\nvar SDVERTDIST = '--speeddialVertDist';\nvar SDHORZDIST = '--speeddialHorzDist';\nvar SDRADICALANGLE = '--speeddialRadialAngle';\nvar SDRADICALOFFSET = '--speeddialRadialOffset';\nvar SDRADICALMINHEIGHT = '--speeddialRadialMinHeight';\nvar SDRADICALMINWIDTH = '--speeddialRadialMinWidth';\nvar SDOVERFLOWLIMIT = '--speeddialOverflowLimit';\n/**\n * Defines the display mode of speed dial action items in SpeedDial\n */\nvar SpeedDialMode;\n(function (SpeedDialMode) {\n /**\n * SpeedDial items are displayed in linear order like list.\n */\n SpeedDialMode[\"Linear\"] = \"Linear\";\n /**\n * SpeedDial items are displayed like radial menu in radial direction (circular direction).\n */\n SpeedDialMode[\"Radial\"] = \"Radial\";\n})(SpeedDialMode || (SpeedDialMode = {}));\n/**\n * Defines the speed dial action items display direction when mode is Linear.\n */\nvar LinearDirection;\n(function (LinearDirection) {\n /**\n * Speed dial action items are displayed vertically above the button of Speed Dial.\n */\n LinearDirection[\"Up\"] = \"Up\";\n /**\n * Speed dial action items are displayed vertically below the button of Speed Dial.\n */\n LinearDirection[\"Down\"] = \"Down\";\n /**\n * Speed dial action items are displayed horizontally on the button's right side.\n */\n LinearDirection[\"Right\"] = \"Right\";\n /**\n * Speed dial action items are displayed horizontally on the button's left side.\n */\n LinearDirection[\"Left\"] = \"Left\";\n /**\n * Speed dial action items are displayed vertically above or below the button of Speed Dial based on the position.\n * If Position is TopRight, TopLeft, TopCenter, the items are displayed vertically below the button else above the button.\n */\n LinearDirection[\"Auto\"] = \"Auto\";\n})(LinearDirection || (LinearDirection = {}));\n/**\n * Defines the speed dial action items order, when mode is Radial.\n */\nvar RadialDirection;\n(function (RadialDirection) {\n /**\n * SpeedDial items are arranged in clockwise direction.\n */\n RadialDirection[\"Clockwise\"] = \"Clockwise\";\n /**\n * SpeedDial items are shown in anti-clockwise direction.\n */\n RadialDirection[\"AntiClockwise\"] = \"AntiClockwise\";\n /**\n * SpeedDial items are shown clockwise or anti-clockwise based on the position.\n */\n RadialDirection[\"Auto\"] = \"Auto\";\n})(RadialDirection || (RadialDirection = {}));\n/**\n * Defines the animation effect applied when open and close the speed dial items.\n */\nvar SpeedDialAnimationEffect;\n(function (SpeedDialAnimationEffect) {\n /**\n * SpeedDial open/close actions occur with the Fade animation effect.\n */\n SpeedDialAnimationEffect[\"Fade\"] = \"Fade\";\n /**\n * SpeedDial open/close actions occur with the FadeZoom animation effect.\n */\n SpeedDialAnimationEffect[\"FadeZoom\"] = \"FadeZoom\";\n /**\n * SpeedDial open/close actions occur with the FlipLeftDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipLeftDown\"] = \"FlipLeftDown\";\n /**\n * SpeedDial open/close actions occur with the FlipLeftUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipLeftUp\"] = \"FlipLeftUp\";\n /**\n * SpeedDial open/close actions occur with the FlipRightDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipRightDown\"] = \"FlipRightDown\";\n /**\n * SpeedDial open/close actions occur with the FlipRightUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipRightUp\"] = \"FlipRightUp\";\n /**\n * SpeedDial open/close actions occur with the FlipXDown animation effect.\n */\n SpeedDialAnimationEffect[\"FlipXDown\"] = \"FlipXDown\";\n /**\n * SpeedDial open/close actions occur with the FlipXUp animation effect.\n */\n SpeedDialAnimationEffect[\"FlipXUp\"] = \"FlipXUp\";\n /**\n * SpeedDial open/close actions occur with the FlipYLeft animation effect.\n */\n SpeedDialAnimationEffect[\"FlipYLeft\"] = \"FlipYLeft\";\n /**\n * SpeedDial open/close actions occur with the FlipYRight animation effect.\n */\n SpeedDialAnimationEffect[\"FlipYRight\"] = \"FlipYRight\";\n /**\n * SpeedDial open/close actions occur with the SlideBottom animation effect.\n */\n SpeedDialAnimationEffect[\"SlideBottom\"] = \"SlideBottom\";\n /**\n * SpeedDial open/close actions occur with the SlideLeft animation effect.\n */\n SpeedDialAnimationEffect[\"SlideLeft\"] = \"SlideLeft\";\n /**\n * SpeedDial open/close actions occur with the SlideRight animation effect.\n */\n SpeedDialAnimationEffect[\"SlideRight\"] = \"SlideRight\";\n /**\n * SpeedDial open/close actions occur with the SlideTop animation effect.\n */\n SpeedDialAnimationEffect[\"SlideTop\"] = \"SlideTop\";\n /**\n * SpeedDial open/close actions occur with the Zoom animation effect.\n */\n SpeedDialAnimationEffect[\"Zoom\"] = \"Zoom\";\n /**\n * SpeedDial open/close actions occur without any animation effect.\n */\n SpeedDialAnimationEffect[\"None\"] = \"None\";\n})(SpeedDialAnimationEffect || (SpeedDialAnimationEffect = {}));\n/**\n * AProvides options to customize the animation applied while opening and closing the popup of SpeedDial.\n */\nvar SpeedDialAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SpeedDialAnimationSettings, _super);\n function SpeedDialAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('Fade')\n ], SpeedDialAnimationSettings.prototype, \"effect\", void 0);\n __decorate$6([\n Property(400)\n ], SpeedDialAnimationSettings.prototype, \"duration\", void 0);\n __decorate$6([\n Property(0)\n ], SpeedDialAnimationSettings.prototype, \"delay\", void 0);\n return SpeedDialAnimationSettings;\n}(ChildProperty));\n/**\n * Provides the options to customize the speed dial action buttons when mode of SpeedDial is Radial.\n */\nvar RadialSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(RadialSettings, _super);\n function RadialSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('Auto')\n ], RadialSettings.prototype, \"direction\", void 0);\n __decorate$6([\n Property(-1)\n ], RadialSettings.prototype, \"endAngle\", void 0);\n __decorate$6([\n Property('100px')\n ], RadialSettings.prototype, \"offset\", void 0);\n __decorate$6([\n Property(-1)\n ], RadialSettings.prototype, \"startAngle\", void 0);\n return RadialSettings;\n}(ChildProperty));\n/**\n * Defines the items of Floating Action Button.\n */\nvar SpeedDialItem = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SpeedDialItem, _super);\n function SpeedDialItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"iconCss\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"id\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"text\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDialItem.prototype, \"title\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDialItem.prototype, \"disabled\", void 0);\n return SpeedDialItem;\n}(ChildProperty));\n/**\n * The SpeedDial component that appears in front of all the contents of the page and displays list of action buttons on click which is an extended version of FAB.\n * The button of speed dial is positioned in relative to a view port of browser or the .\n * It can display a menu of related actions or a custom content popupTemplate>.\n *\n */\nvar SpeedDial = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SpeedDial, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SpeedDialModel} options - Specifies the floating action button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function SpeedDial(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isMenuOpen = false;\n _this.isClock = true;\n _this.isVertical = true;\n _this.isControl = false;\n _this.focusedIndex = -1;\n return _this;\n }\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n SpeedDial.prototype.render = function () {\n this.initialize();\n };\n SpeedDial.prototype.preRender = function () {\n this.keyConfigs = {\n space: 'space',\n enter: 'enter',\n end: 'end',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n esc: 'escape'\n };\n this.validateDirection();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n SpeedDial.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n SpeedDial.prototype.getModuleName = function () {\n return 'speed-dial';\n };\n SpeedDial.prototype.initialize = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.fab = new Fab({\n content: this.content,\n cssClass: this.cssClass ? (SPEEDDIAL + ' ' + this.cssClass) : SPEEDDIAL,\n disabled: this.disabled,\n enablePersistence: this.enablePersistence,\n enableRtl: this.enableRtl,\n iconCss: this.openIconCss,\n iconPosition: this.iconPosition,\n position: this.position,\n target: this.target,\n visible: this.visible\n });\n this.fab.appendTo(this.element);\n if ((this.items.length > 0) || this.popupTemplate) {\n this.createPopup();\n }\n this.wireEvents();\n };\n SpeedDial.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n EventHandler.add(document.body, 'click', this.bodyClickHandler, this);\n if (this.opensOnHover) {\n this.wireFabHover();\n }\n else {\n this.wireFabClick();\n }\n };\n SpeedDial.prototype.wirePopupEvents = function () {\n this.removeRippleEffect = rippleEffect(this.popupEle, { selector: '.' + SDLIICON });\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.popupKeyboardModule = new KeyboardEvents(this.popupEle, {\n keyAction: this.popupKeyActionHandler.bind(this),\n keyConfigs: { esc: 'escape' },\n eventName: 'keydown'\n });\n EventHandler.add(this.popupEle, 'click', this.popupClick, this);\n EventHandler.add(this.popupEle, 'mouseleave', this.popupMouseLeaveHandle, this);\n };\n SpeedDial.prototype.wireFabClick = function () {\n EventHandler.add(this.fab.element, 'click', this.fabClick, this);\n };\n SpeedDial.prototype.wireFabHover = function () {\n this.popupEle.classList.add(HOVERSD);\n EventHandler.add(this.fab.element, 'mouseover', this.mouseOverHandle, this);\n EventHandler.add(this.element, 'mouseleave', this.mouseLeaveHandle, this);\n };\n SpeedDial.prototype.createPopup = function () {\n var className = SDPOPUP + ' ' + SDHIDDEN;\n className = this.enableRtl ? className + ' ' + RTLCLASS : className;\n className = this.cssClass ? className + ' ' + this.cssClass : className;\n this.popupEle = this.createElement('div', {\n className: className,\n id: this.element.id + '_popup'\n });\n this.element.insertAdjacentElement('afterend', this.popupEle);\n attributes(this.element, { 'aria-expanded': 'false', 'aria-haspopup': 'true', 'aria-controls': this.popupEle.id });\n this.setPopupContent();\n if (this.modal) {\n this.createOverlay();\n }\n this.checkTarget();\n this.setPositionProps();\n this.wirePopupEvents();\n };\n SpeedDial.prototype.createOverlay = function () {\n this.overlayEle = this.createElement('div', {\n id: this.element.id + '_overlay',\n className: (SDOVERLAY + (this.isMenuOpen ? '' : ' ' + SDHIDDEN) + ' ' + this.cssClass).trim()\n });\n this.element.insertAdjacentElement('beforebegin', this.overlayEle);\n };\n SpeedDial.prototype.popupClick = function () {\n this.isControl = true;\n };\n //Checks and closes the speed dial if the click happened outside this speed dial.\n SpeedDial.prototype.bodyClickHandler = function (e) {\n if (this.isControl) {\n this.isControl = false;\n return;\n }\n if (this.isMenuOpen) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.fabClick = function (e) {\n this.isControl = true;\n if (this.isMenuOpen) {\n this.hidePopupEle(e);\n }\n else {\n this.showPopupEle(e);\n }\n };\n SpeedDial.prototype.setPopupContent = function () {\n this.popupEle.classList.remove(RADIALSD, LINEARSD, TEMPLATESD);\n if (!this.popupTemplate) {\n this.popupEle.classList.add((this.mode === 'Radial') ? RADIALSD : LINEARSD);\n this.createUl();\n this.createItems();\n }\n else {\n this.popupEle.classList.add(TEMPLATESD);\n this.appendTemplate();\n }\n this.renderReactTemplates();\n };\n SpeedDial.prototype.appendTemplate = function () {\n var templateContainer = this.createElement('div', { className: SDTEMPLATECONTAINER });\n append([templateContainer], this.popupEle);\n var templateFunction = this.getTemplateString(this.popupTemplate);\n append(templateFunction({}, this, 'fabPopupTemplate', (this.element.id + 'popupTemplate'), this.isStringTemplate), templateContainer);\n };\n SpeedDial.prototype.getTemplateString = function (template) {\n var stringContent = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n stringContent = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n stringContent = template;\n }\n }\n catch (e) {\n stringContent = template;\n }\n return compile(stringContent);\n };\n SpeedDial.prototype.updatePopupTemplate = function () {\n if (this.popupEle) {\n if (this.popupEle.querySelector('.' + SDLI)) {\n this.clearItems();\n this.popupEle.classList.remove(RADIALSD, LINEARSD);\n this.popupEle.classList.add(TEMPLATESD);\n }\n while (this.popupEle.firstElementChild) {\n remove(this.popupEle.firstElementChild);\n }\n this.setPopupContent();\n this.updatePositionProperties();\n }\n else {\n this.createPopup();\n }\n };\n SpeedDial.prototype.createUl = function () {\n var popupUlEle = this.createElement('ul', {\n className: SDUL,\n id: this.element.id + '_ul',\n attrs: { 'role': 'menu' }\n });\n this.popupEle.appendChild(popupUlEle);\n };\n SpeedDial.prototype.createItems = function () {\n var _this = this;\n this.focusedIndex = -1;\n var ul = this.popupEle.querySelector('.' + SDUL);\n var _loop_1 = function (index) {\n var item = this_1.items[parseInt(index.toString(), 10)];\n var li = this_1.createElement('li', {\n className: SDLI + ' ' + SDHIDDEN,\n id: item.id ? item.id : (this_1.element.id + '_li_' + index),\n attrs: { 'role': 'menuitem' }\n });\n if (item.text) {\n li.setAttribute('aria-label', item.text);\n }\n if (this_1.itemTemplate) {\n var templateFunction = this_1.getTemplateString(this_1.itemTemplate);\n append(templateFunction(item, this_1, 'fabItemTemplate', (this_1.element.id + 'itemTemplate'), this_1.isStringTemplate), li);\n }\n else {\n if (item.iconCss) {\n var iconSpan = this_1.createElement('span', {\n className: SDLIICON + ' ' + item.iconCss\n });\n li.appendChild(iconSpan);\n }\n if (item.text) {\n var textSpan = this_1.createElement('span', {\n className: SDLITEXT\n });\n textSpan.innerText = item.text;\n li.appendChild(textSpan);\n if (!item.iconCss) {\n li.classList.add(SDLITEXTONLY);\n }\n }\n }\n if (item.disabled) {\n li.classList.add(DISABLED$2);\n li.setAttribute('aria-disabled', 'true');\n }\n else {\n EventHandler.add(li, 'click', function (e) { return _this.triggerItemClick(e, item); }, this_1);\n }\n if (item.title) {\n li.setAttribute('title', item.title);\n }\n var eventArgs = { element: li, item: item };\n this_1.trigger('beforeItemRender', eventArgs, function (args) {\n ul.appendChild(args.element);\n });\n };\n var this_1 = this;\n for (var index = 0; index < this.items.length; index++) {\n _loop_1(index);\n }\n };\n SpeedDial.prototype.setRTL = function () {\n this.popupEle.classList[this.enableRtl ? 'add' : 'remove'](RTLCLASS);\n this.clearHorizontalPosition();\n if (!(this.popupTemplate || (this.mode === 'Radial'))) {\n this.setLinearHorizontalPosition();\n }\n else {\n this.setHorizontalPosition();\n }\n };\n SpeedDial.prototype.checkTarget = function () {\n this.isFixed = true;\n if (this.target) {\n this.targetEle = (typeof this.target === 'string') ? select(this.target) : this.target;\n if (this.targetEle) {\n this.targetEle.appendChild(this.element);\n this.isFixed = false;\n }\n }\n if (this.isFixed) {\n if (this.popupEle) {\n this.popupEle.classList.add(FIXEDSD);\n }\n if (this.overlayEle) {\n this.overlayEle.classList.add(FIXEDSD);\n }\n }\n else {\n if (this.popupEle) {\n this.popupEle.classList.remove(FIXEDSD);\n }\n if (this.overlayEle) {\n this.overlayEle.classList.remove(FIXEDSD);\n }\n }\n };\n SpeedDial.prototype.setVisibility = function (val) {\n this.setProperties({ visible: val }, true);\n this.fab.setProperties({ visible: val });\n };\n SpeedDial.prototype.popupMouseLeaveHandle = function (e) {\n var target = e.relatedTarget;\n if (this.opensOnHover && !(target.classList.contains(SPEEDDIAL) || closest(target, '.' + SPEEDDIAL))) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.mouseOverHandle = function (e) {\n this.showPopupEle(e);\n };\n SpeedDial.prototype.mouseLeaveHandle = function (e) {\n var target = e.relatedTarget;\n if (!(target.classList.contains(SDPOPUP) || closest(target, '.' + SDPOPUP))) {\n this.hidePopupEle(e);\n }\n };\n SpeedDial.prototype.popupKeyActionHandler = function (e) {\n switch (e.action) {\n case 'esc':\n this.hidePopupEle(e);\n break;\n }\n };\n SpeedDial.prototype.keyActionHandler = function (e) {\n e.preventDefault();\n switch (e.action) {\n case 'enter':\n case 'space':\n if (this.isMenuOpen) {\n if (this.focusedIndex !== -1) {\n this.triggerItemClick(e, this.items[this.focusedIndex]);\n }\n else {\n this.hidePopupEle(e);\n }\n }\n else {\n this.showPopupEle(e);\n }\n break;\n case 'esc':\n this.hidePopupEle(e);\n break;\n default:\n if (this.popupTemplate || !this.isMenuOpen) {\n break;\n }\n switch (e.action) {\n case 'end':\n this.focusLastElement();\n break;\n case 'home':\n this.focusFirstElement();\n break;\n case 'moveRight':\n if (this.mode === 'Radial') {\n this.focusLeftRightElement(false);\n }\n else {\n this.focusLinearElement(false);\n }\n break;\n case 'moveDown':\n if (this.mode === 'Radial') {\n this.focusUpDownElement(false);\n }\n else {\n this.focusLinearElement(false);\n }\n break;\n case 'moveLeft':\n if (this.mode === 'Radial') {\n this.focusLeftRightElement(true);\n }\n else {\n this.focusLinearElement(true);\n }\n break;\n case 'moveUp':\n if (this.mode === 'Radial') {\n this.focusUpDownElement(true);\n }\n else {\n this.focusLinearElement(true);\n }\n break;\n }\n break;\n }\n };\n SpeedDial.prototype.focusFirstElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = 0;\n while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2)) {\n index++;\n if (index > (ele.length - 1)) {\n return;\n }\n }\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.focusLastElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = ele.length - 1;\n while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2)) {\n index--;\n if (index < 0) {\n return;\n }\n }\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n /*Linear*/\n SpeedDial.prototype.focusLinearElement = function (isLeftUp) {\n var isReversed = this.popupEle.classList.contains(SDVERTICALBOTTOM) ||\n this.popupEle.classList.contains(SDHORIZONTALRIGHT);\n /* Elements will be in reverse (RTL) order for these classes are present.\n Reversed and Down or right is previous.\n Not reversed and Up or left is previous.\n ((isReversed && !isLeftUp)||(!isReversed && isLeftUp)) ==> isReversed!==isLeftUp */\n if (isReversed !== isLeftUp) {\n this.focusPrevElement();\n }\n else {\n this.focusNextElement();\n }\n };\n /*Radial*/\n SpeedDial.prototype.focusLeftRightElement = function (isLeft) {\n /*radialTop position and left + anticlock or right + clock is previous\n other positions and right + anticlock or left + clock is previous\n ((isLeft && !this.isClock)||(!isLeft && this.isClock)) ==> isLeft!==this.isClock */\n var isradialTop = ['TopLeft', 'TopCenter', 'TopRight', 'MiddleLeft'].indexOf(this.position) !== -1;\n if ((isradialTop && (isLeft !== this.isClock)) || (!isradialTop && (isLeft === this.isClock))) {\n this.focusPrevElement();\n }\n else {\n this.focusNextElement();\n }\n };\n /*Radial*/\n SpeedDial.prototype.focusUpDownElement = function (isUp) {\n /*radialRight position and up + anticlock or down + clock is previous\n other positions and down + anticlock or up + clock is previous\n ((isUp && !this.isClock)||(!isUp && this.isClock)) ==> isUp!==this.isClock */\n var isradialRight = ['TopRight', 'MiddleRight', 'BottomRight', 'BottomCenter'].indexOf(this.position) !== -1;\n if ((isradialRight && (isUp !== this.isClock)) || (!isradialRight && (isUp === this.isClock))) {\n this.focusPrevElement();\n }\n else {\n this.focusNextElement();\n }\n };\n SpeedDial.prototype.focusPrevElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = this.focusedIndex;\n do {\n index--;\n if (index < 0) {\n this.setFocus(-1);\n return;\n }\n } while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2));\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.focusNextElement = function () {\n var ele = selectAll('.' + SDLI, this.popupEle);\n var index = this.focusedIndex;\n do {\n index++;\n if (index > (ele.length - 1)) {\n return;\n }\n } while (ele[parseInt(index.toString(), 10)].classList.contains(DISABLED$2));\n this.setFocus(index, ele[parseInt(index.toString(), 10)]);\n };\n SpeedDial.prototype.setFocus = function (index, ele) {\n this.removeFocus();\n if (ele) {\n ele.classList.add(SDACTIVELI);\n }\n this.focusedIndex = index;\n };\n SpeedDial.prototype.removeFocus = function () {\n var preEle = select('.' + SDACTIVELI, this.popupEle);\n if (preEle) {\n preEle.classList.remove(SDACTIVELI);\n }\n };\n SpeedDial.prototype.updatePositionProperties = function () {\n this.hidePopupEle();\n this.clearPosition();\n this.validateDirection();\n this.setPositionProps();\n };\n SpeedDial.prototype.setPositionProps = function () {\n if (this.popupTemplate) {\n this.setPosition();\n }\n else if ((this.mode === 'Radial')) {\n this.setRadialPosition();\n this.setPosition();\n }\n else {\n this.setLinearPosition();\n this.setMaxSize();\n }\n };\n SpeedDial.prototype.validateDirection = function () {\n switch (this.direction) {\n case 'Up':\n this.actualLinDirection = (topPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Up';\n break;\n case 'Down':\n this.actualLinDirection = (bottomPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Down';\n break;\n case 'Right':\n this.actualLinDirection = (rightPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Right';\n break;\n case 'Left':\n this.actualLinDirection = (leftPosition.indexOf(this.position) !== -1) ? 'Auto' : 'Left';\n break;\n case 'Auto':\n default:\n this.actualLinDirection = 'Auto';\n break;\n }\n this.isVertical = !((this.actualLinDirection === 'Left') || (this.actualLinDirection === 'Right'));\n };\n SpeedDial.prototype.setMaxSize = function () {\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n var bottom = (this.isFixed ? window.innerHeight : this.targetEle.clientHeight) -\n this.element.offsetTop - this.element.offsetHeight;\n var right = (this.isFixed ? window.innerWidth : this.targetEle.clientWidth) -\n this.element.offsetLeft - this.element.offsetWidth;\n var limit = 0;\n var popupUlEle = this.popupEle.querySelector('.' + SDUL);\n if (this.isVertical) {\n limit = ((this.actualLinDirection === 'Up') || ((this.actualLinDirection === 'Auto') && (topPosition.indexOf(this.position) === -1))) ? top : bottom;\n if (limit < popupUlEle.offsetHeight) {\n this.popupEle.classList.add(SDOVERFLOW, SDVERTOVERFLOW);\n popupUlEle.style.setProperty(SDOVERFLOWLIMIT, limit + 'px');\n }\n }\n else {\n limit = (this.direction === 'Right') ? right : left;\n if (limit < popupUlEle.offsetWidth) {\n this.popupEle.classList.add(SDOVERFLOW, SDHORZOVERFLOW);\n popupUlEle.style.setProperty(SDOVERFLOWLIMIT, limit + 'px');\n }\n }\n };\n SpeedDial.prototype.setLinearPosition = function () {\n var vertDist = 0;\n //Check whether the position value should be in top\n var isTop = (this.actualLinDirection === 'Down') || ((this.actualLinDirection === 'Auto') && (topPosition.indexOf(this.position) !== -1)) ||\n (!this.isVertical && (bottomPosition.indexOf(this.position) === -1));\n if (isTop) {\n vertDist = this.element.offsetTop + (this.isVertical ? this.element.offsetHeight : 0);\n if (!this.isVertical) {\n this.popupEle.classList.add(SDHORIZONTALTOP);\n }\n }\n else {\n vertDist = this.isFixed ? window.innerHeight : this.targetEle.clientHeight;\n vertDist = (vertDist - this.element.offsetTop - (this.isVertical ? 0 : this.element.offsetHeight));\n if (this.isVertical) {\n this.popupEle.classList.add(SDVERTICALBOTTOM);\n }\n }\n this.popupEle.classList.add(isTop ? SDTOP : SDBOTTOM);\n this.popupEle.style.setProperty(SDVERTDIST, vertDist + 'px');\n this.setLinearHorizontalPosition();\n };\n SpeedDial.prototype.setLinearHorizontalPosition = function () {\n //Check whether the position value should be in left\n if ((this.actualLinDirection === 'Right') || (this.isVertical && (rightPosition.indexOf(this.position) === -1))) {\n if (this.enableRtl) {\n this.setRight();\n }\n else {\n this.setLeft();\n } //reverse the direction when RTL enabled\n if (!this.isVertical) {\n this.popupEle.classList.add(SDHORIZONTALLEFT);\n }\n }\n else {\n if (this.enableRtl) {\n this.setLeft();\n }\n else {\n this.setRight();\n } //reverse the direction when RTL enabled\n this.popupEle.classList.add(this.isVertical ? SDVERTICALRIGHT : SDHORIZONTALRIGHT);\n }\n };\n SpeedDial.prototype.setLeft = function () {\n var horzDist = this.element.offsetLeft + (this.isVertical ? 0 : this.element.offsetWidth);\n this.popupEle.style.setProperty(SDHORZDIST, horzDist + 'px');\n this.popupEle.classList.add(SDLEFT);\n };\n SpeedDial.prototype.setRight = function () {\n var horzDist = this.isFixed ? window.innerWidth : this.targetEle.clientWidth;\n horzDist = (horzDist - this.element.offsetLeft - (this.isVertical ? this.element.offsetWidth : 0));\n this.popupEle.style.setProperty(SDHORZDIST, horzDist + 'px');\n this.popupEle.classList.add(SDRIGHT);\n };\n SpeedDial.prototype.setPosition = function () {\n //Check for middle Position\n if (['MiddleLeft', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(SDMIDDLE);\n var yoffset = ((this.isFixed ? window.innerHeight : this.targetEle.clientHeight) - this.popupEle.offsetHeight) / 2;\n this.popupEle.style.setProperty(SDVERTDIST, yoffset + 'px');\n }\n this.popupEle.classList.add((bottomPosition.indexOf(this.position) === -1) ? SDTOP : SDBOTTOM);\n this.setHorizontalPosition();\n };\n SpeedDial.prototype.setHorizontalPosition = function () {\n //Check for Center Position\n if (['TopCenter', 'BottomCenter', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(SDCENTER);\n var xoffset = ((this.isFixed ? window.innerWidth : this.targetEle.clientWidth) - this.popupEle.offsetWidth) / 2;\n this.popupEle.style.setProperty(SDHORZDIST, xoffset + 'px');\n }\n var isRight = rightPosition.indexOf(this.position) !== -1;\n this.popupEle.classList.add((!(this.enableRtl || isRight) || (this.enableRtl && isRight)) ? SDLEFT : SDRIGHT);\n };\n SpeedDial.prototype.setRadialPosition = function () {\n this.setRadialCorner();\n var range = this.getActualRange();\n this.isClock = range.direction === 'Clockwise';\n var offset = formatUnit(range.offset);\n var li = selectAll('.' + SDLI, this.popupEle);\n this.popupEle.style.setProperty(SDRADICALOFFSET, offset);\n this.popupEle.style.setProperty(SDRADICALMINHEIGHT, li[0].offsetHeight + 'px');\n this.popupEle.style.setProperty(SDRADICALMINWIDTH, li[0].offsetWidth + 'px');\n var availableAngle = Math.abs(range.endAngle - range.startAngle);\n //Start and end will be same for Middle Center position, hence available angle will 0 or 360.\n var gaps = ((availableAngle === 360) || (availableAngle === 0)) ? li.length : li.length - 1;\n var perAngle = availableAngle / gaps;\n for (var i = 0; i < li.length; i++) {\n var ele = li[parseInt(i.toString(), 10)];\n var angle = this.isClock ? (range.startAngle + (perAngle * i)) : (range.startAngle - (perAngle * i));\n angle = angle % 360; // removing the Zerp crossing changes.\n ele.style.setProperty(SDRADICALANGLE, angle + 'deg');\n }\n };\n SpeedDial.prototype.setRadialCorner = function () {\n //topLeftPosition\n if (['TopLeft', 'TopCenter', 'MiddleLeft', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDTOPRIGHT : SDTOPLEFT);\n }\n //topRightPosition\n if (['TopRight', 'TopCenter', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDTOPLEFT : SDTOPRIGHT);\n }\n //bottpmLeftPosition\n if (['BottomLeft', 'BottomCenter', 'MiddleLeft', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDBOTTOMRIGHT : SDBOTTOMLEFT);\n }\n //bottomRightPosition\n if (['BottomRight', 'BottomCenter', 'MiddleRight', 'MiddleCenter'].indexOf(this.position) !== -1) {\n this.popupEle.classList.add(this.enableRtl ? SDBOTTOMLEFT : SDBOTTOMRIGHT);\n }\n };\n // 0,360 is at right, 90 is at Bottom, 180 is at left, 270 is at top\n SpeedDial.prototype.getActualRange = function () {\n var range = { offset: this.radialSettings.offset };\n var start = this.radialSettings.startAngle;\n var end = this.radialSettings.endAngle;\n var isClockwise;\n switch (this.position) {\n case 'TopLeft':\n case 'TopRight':\n // Switch Left and Right for RTL mode.\n if (('TopLeft' === this.position) !== this.enableRtl) {\n //TopLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 0, 90, false);\n }\n else {\n //TopRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 90, 180, false);\n }\n break;\n case 'TopCenter':\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 0, 180, false);\n break;\n case 'MiddleLeft':\n case 'MiddleRight':\n // Switch Left and Right for RTL mode.\n if (('MiddleLeft' === this.position) !== this.enableRtl) {\n //MiddleLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n /**Replace the value if not defined or greater than 360 or less than 0 or between 91 and 269*/\n start = (isNullOrUndefined(start) || (start < 0) || (start > 360) || ((start > 90) && (start < 270))) ?\n (isClockwise ? 270 : 90) : start;\n end = (isNullOrUndefined(end) || (end < 0) || (end > 360) || ((end > 90) && (end < 270))) ?\n (isClockwise ? 90 : 270) : end;\n /**update for Zero Crossing */\n start = start < 91 ? start + 360 : start;\n end = end < 91 ? end + 360 : end;\n var switchVal = (isClockwise && (end < start)) || (!isClockwise && (end > start));\n range.startAngle = switchVal ? end : start;\n range.endAngle = switchVal ? start : end;\n }\n else {\n //MiddleRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 90, 270, false);\n }\n break;\n case 'MiddleCenter':\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n /**Replace the value if not defined or greater than 360 or less than 0 */\n start = (isNullOrUndefined(start) || (start < 0) || (start > 360)) ? (isClockwise ? 0 : 360) : start;\n end = (isNullOrUndefined(end) || (end < 0) || (end > 360)) ? (isClockwise ? 360 : 0) : end;\n /**update for Zero Crossing */\n range.startAngle = (!isClockwise && (start <= end)) ? (start + 360) : start;\n range.endAngle = (isClockwise && (end <= start)) ? (end + 360) : end;\n break;\n case 'BottomLeft':\n case 'BottomRight':\n // Switch Left and Right for RTL mode.\n if (('BottomLeft' === this.position) !== this.enableRtl) {\n //BottomLeft\n isClockwise = this.radialSettings.direction === 'Clockwise';\n this.checkAngleRange(start, end, range, isClockwise, 270, 360, true);\n }\n else {\n //BottomRight\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 180, 270, true);\n }\n break;\n case 'BottomCenter':\n isClockwise = this.radialSettings.direction !== 'AntiClockwise';\n this.checkAngleRange(start, end, range, isClockwise, 180, 360, true);\n break;\n }\n range.direction = isClockwise ? 'Clockwise' : 'AntiClockwise';\n return range;\n };\n SpeedDial.prototype.checkAngleRange = function (start, end, range, isClockwise, min, max, check0) {\n start = this.checkAngle(start, isClockwise, min, max, check0);\n end = this.checkAngle(end, !isClockwise, min, max, check0);\n /**Switch the values if both are values are in the range but not as per direction*/\n var switchVal = (isClockwise && (end < start)) || (!isClockwise && (end > start));\n range.startAngle = switchVal ? end : start;\n range.endAngle = switchVal ? start : end;\n };\n SpeedDial.prototype.checkAngle = function (val, isStart, min, max, check0) {\n if (isNullOrUndefined(val) || (val < 0) || (val > 360)) {\n return isStart ? min : max;\n }\n else {\n val = check0 ? ((val === 0) ? 360 : val) : ((val === 360) ? 0 : val);\n /**check whether the value is in the range if not replace them */\n return ((val >= min) && (val <= max)) ? val : isStart ? min : max;\n }\n };\n SpeedDial.prototype.clearPosition = function () {\n this.popupEle.style.removeProperty(SDRADICALOFFSET);\n this.popupEle.style.removeProperty(SDRADICALMINHEIGHT);\n this.popupEle.style.removeProperty(SDRADICALMINWIDTH);\n this.popupEle.classList.remove(SDTOPLEFT, SDTOPRIGHT, SDBOTTOMLEFT, SDBOTTOMRIGHT);\n this.popupEle.classList.remove(SDTOP, SDBOTTOM, SDMIDDLE);\n this.popupEle.classList.remove(SDHORIZONTALTOP, SDVERTICALBOTTOM);\n this.popupEle.style.removeProperty(SDVERTDIST);\n this.clearHorizontalPosition();\n this.clearOverflow();\n };\n SpeedDial.prototype.clearHorizontalPosition = function () {\n this.popupEle.style.removeProperty(SDHORZDIST);\n this.popupEle.classList.remove(SDRIGHT, SDLEFT, SDCENTER);\n this.popupEle.classList.remove(SDVERTICALRIGHT, SDHORIZONTALLEFT, SDHORIZONTALRIGHT);\n };\n SpeedDial.prototype.clearOverflow = function () {\n this.popupEle.classList.remove(SDOVERFLOW, SDVERTOVERFLOW, SDHORZOVERFLOW);\n this.popupEle.style.removeProperty(SDOVERFLOWLIMIT);\n };\n SpeedDial.prototype.hidePopupEle = function (e) {\n var _this = this;\n if (!this.popupEle || !this.isMenuOpen) {\n return;\n }\n var eventArgs = { element: this.popupEle, event: e, cancel: false };\n this.trigger('beforeClose', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n if (_this.animation.effect !== 'None') {\n var closeAnimation_1 = {\n name: (_this.animation.effect + 'Out'),\n timingFunction: 'easeOut'\n };\n var eleArray_1 = _this.popupTemplate ? [_this.popupEle.firstElementChild] : selectAll('.' + SDLI, _this.popupEle);\n var timeOutInterval_1 = _this.animation.duration / (eleArray_1.length + 1);\n closeAnimation_1.duration = 2 * timeOutInterval_1;\n /* To keep the animation smooth, start the animation of the second element when animation first element is half completed */\n var animateElement_1 = function (curIndex) {\n var ele = eleArray_1[parseInt(curIndex.toString(), 10)];\n closeAnimation_1.delay = (curIndex === eleArray_1.length - 1) ? _this.animation.delay : 0;\n closeAnimation_1.begin = function () { if (curIndex === eleArray_1.length - 1) {\n _this.startHide();\n } };\n closeAnimation_1.end = function () {\n ele.classList.add(SDHIDDEN);\n if (curIndex === 0) {\n _this.endHide();\n }\n };\n new Animation(closeAnimation_1).animate(ele);\n if (curIndex !== 0) {\n var index_1 = curIndex - 1;\n setTimeout(function () {\n animateElement_1(index_1);\n }, timeOutInterval_1);\n }\n };\n animateElement_1(eleArray_1.length - 1);\n }\n else {\n _this.startHide();\n if (!_this.popupTemplate) {\n var ele = selectAll('.' + SDLI, _this.popupEle);\n ele.forEach(function (element) { element.classList.add(SDHIDDEN); });\n }\n _this.endHide();\n }\n });\n };\n SpeedDial.prototype.startHide = function () {\n this.element.setAttribute('aria-expanded', 'false');\n this.removeFocus();\n this.isMenuOpen = false;\n };\n SpeedDial.prototype.endHide = function () {\n this.fab.setProperties({ iconCss: this.openIconCss });\n this.popupEle.classList.add(SDHIDDEN);\n if (this.popupTemplate) {\n this.setVisibility(true);\n }\n this.toggleOverlay();\n if (this.popupTemplate) {\n this.popupEle.removeAttribute('tabindex');\n }\n this.trigger('onClose', { element: this.popupEle });\n };\n SpeedDial.prototype.showPopupEle = function (e) {\n var _this = this;\n if (!this.popupEle || this.isMenuOpen) {\n return;\n }\n var eventArgs = { element: this.popupEle, event: e, cancel: false };\n this.trigger('beforeOpen', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n if (_this.animation.effect !== 'None') {\n var openAnimation_1 = {\n name: (_this.animation.effect + 'In'),\n timingFunction: 'easeIn'\n };\n var eleArray_2 = _this.popupTemplate ? [_this.popupEle.firstElementChild] : selectAll('.' + SDLI, _this.popupEle);\n var timeOutInterval_2 = _this.animation.duration / (eleArray_2.length + 1);\n openAnimation_1.duration = 2 * timeOutInterval_2;\n /* To keep the animation smooth, start the animation of the second element when animation first element is half completed */\n var animateElement_2 = function (curIndex) {\n var ele = eleArray_2[parseInt(curIndex.toString(), 10)];\n openAnimation_1.delay = (curIndex === 0) ? _this.animation.delay : 0;\n openAnimation_1.begin = function () {\n if (curIndex === 0) {\n _this.startShow();\n }\n ele.classList.remove(SDHIDDEN);\n };\n openAnimation_1.end = function () { if (curIndex === eleArray_2.length - 1) {\n _this.endShow();\n } };\n new Animation(openAnimation_1).animate(ele);\n if (curIndex !== eleArray_2.length - 1) {\n var index_2 = curIndex + 1;\n setTimeout(function () {\n animateElement_2(index_2);\n }, timeOutInterval_2);\n }\n };\n animateElement_2(0);\n }\n else {\n _this.startShow();\n if (!_this.popupTemplate) {\n var ele = selectAll('.' + SDLI, _this.popupEle);\n ele.forEach(function (element) { element.classList.remove(SDHIDDEN); });\n }\n _this.endShow();\n }\n });\n };\n SpeedDial.prototype.startShow = function () {\n this.element.setAttribute('aria-expanded', 'true');\n this.isMenuOpen = true;\n this.toggleOverlay();\n this.popupEle.classList.remove(SDHIDDEN);\n if (this.popupTemplate) {\n this.setVisibility(false);\n }\n };\n SpeedDial.prototype.endShow = function () {\n if (this.closeIconCss) {\n this.fab.setProperties({ iconCss: this.closeIconCss });\n }\n if (this.popupTemplate) {\n this.popupEle.setAttribute('tabindex', '1');\n this.popupEle.focus();\n }\n this.trigger('onOpen', { element: this.popupEle });\n };\n SpeedDial.prototype.toggleOverlay = function () {\n if (!this.overlayEle) {\n return;\n }\n this.overlayEle.classList[this.isMenuOpen ? 'remove' : 'add'](SDHIDDEN);\n };\n SpeedDial.prototype.removeOverlayEle = function () {\n if (!this.overlayEle) {\n return;\n }\n remove(this.overlayEle);\n this.overlayEle = undefined;\n };\n SpeedDial.prototype.updatePopupItems = function () {\n if (this.popupEle) {\n this.hidePopupEle();\n this.clearItems();\n this.createItems();\n this.updatePositionProperties();\n }\n else {\n this.createPopup();\n }\n };\n SpeedDial.prototype.handleResize = function (e) {\n if (!this.popupEle) {\n return;\n }\n this.hidePopupEle(e);\n this.clearOverflow();\n this.setPositionProps();\n };\n SpeedDial.prototype.triggerItemClick = function (e, item) {\n var target = e.target;\n target = target.classList.contains(SDLI) ? target : closest(target, '.' + SDLI);\n var eventArgs = { element: target, item: item, event: e };\n this.trigger('clicked', eventArgs);\n this.hidePopupEle(e);\n };\n /**\n * Opens the SpeedDial popup to display to display the speed dial items or the popupTemplate.\n *\n * @returns {void}\n */\n SpeedDial.prototype.show = function () {\n this.showPopupEle();\n };\n /**\n * Closes the SpeedDial popup.\n *\n *@returns {void}\n */\n SpeedDial.prototype.hide = function () {\n this.hidePopupEle();\n };\n /**\n * Refreshes the button position of speed dial. You can call this method to re-position button when the target is resized.\n *\n *@returns {void}\n */\n SpeedDial.prototype.refreshPosition = function () {\n this.fab.refreshPosition();\n this.resizeHandler();\n };\n SpeedDial.prototype.resizeHandler = function (e) {\n this.handleResize(e);\n };\n SpeedDial.prototype.clearItems = function () {\n var liList = selectAll('.' + SDLI, this.popupEle);\n liList.forEach(function (element) {\n remove(element);\n });\n };\n SpeedDial.prototype.unwireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n EventHandler.remove(document.body, 'click', this.bodyClickHandler);\n if (this.opensOnHover) {\n this.unwireFabHover();\n }\n else {\n this.unwireFabClick();\n }\n };\n SpeedDial.prototype.unwireFabClick = function () {\n EventHandler.remove(this.fab.element, 'click', this.fabClick);\n };\n SpeedDial.prototype.unwireFabHover = function () {\n this.popupEle.classList.remove(HOVERSD);\n EventHandler.remove(this.fab.element, 'mouseover', this.mouseOverHandle);\n EventHandler.remove(this.element, 'mouseleave', this.mouseLeaveHandle);\n };\n SpeedDial.prototype.unwirePopupEvents = function () {\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n this.keyboardModule.destroy();\n this.popupKeyboardModule.destroy();\n EventHandler.remove(this.popupEle, 'click', this.popupClick);\n EventHandler.remove(this.popupEle, 'mouseleave', this.popupMouseLeaveHandle);\n };\n SpeedDial.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n ['aria-expanded', 'aria-haspopup', 'aria-controls'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n if (this.popupEle) {\n this.unwirePopupEvents();\n remove(this.popupEle);\n this.popupEle = undefined;\n }\n this.removeOverlayEle();\n this.fab.destroy();\n this.fab = undefined;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SpeedDialModel} newProp - Specifies new properties\n * @param {SpeedDialModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n SpeedDial.prototype.onPropertyChanged = function (newProp, oldProp) {\n var fabProplist = ['content', 'cssClass', 'disabled', 'enablePersistence', 'enableRtl', 'iconPosition', 'position', 'target', 'template', 'title', 'visible'];\n var fabModel = extend({}, newProp);\n for (var _i = 0, _a = Object.keys(fabModel); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((fabProplist).indexOf(prop) < 0) {\n deleteObject(fabModel, prop);\n }\n }\n this.fab.setProperties(fabModel);\n for (var _b = 0, _c = Object.keys(newProp); _b < _c.length; _b++) {\n var prop = _c[_b];\n switch (prop) {\n case 'cssClass':\n if (!this.popupEle) {\n break;\n }\n if (oldProp.cssClass) {\n removeClass(this.overlayEle ? [this.popupEle, this.overlayEle] : [this.popupEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass(this.overlayEle ? [this.popupEle, this.overlayEle] : [this.popupEle], newProp.cssClass.split(' '));\n }\n break;\n case 'visible':\n case 'disabled':\n this.hide();\n break;\n case 'enableRtl':\n if (!this.popupEle) {\n break;\n }\n this.setRTL();\n break;\n case 'openIconCss':\n if (!this.isMenuOpen) {\n this.fab.setProperties({ iconCss: this.openIconCss });\n }\n break;\n case 'closeIconCss':\n if (this.isMenuOpen) {\n this.fab.setProperties({ iconCss: this.closeIconCss });\n }\n break;\n case 'position':\n if (!this.popupEle) {\n break;\n }\n this.updatePositionProperties();\n break;\n case 'direction':\n if (!this.popupEle || this.popupTemplate) {\n break;\n }\n this.updatePositionProperties();\n break;\n case 'popupTemplate':\n this.updatePopupTemplate();\n break;\n case 'target':\n this.hidePopupEle();\n this.checkTarget();\n if (this.overlayEle) {\n this.element.insertAdjacentElement('beforebegin', this.overlayEle);\n }\n if (!this.popupEle) {\n break;\n }\n this.element.insertAdjacentElement('afterend', this.popupEle);\n this.updatePositionProperties();\n break;\n case 'items':\n case 'itemTemplate':\n if (this.popupTemplate) {\n break;\n }\n this.updatePopupItems();\n break;\n case 'modal':\n if (newProp.modal) {\n this.createOverlay();\n }\n else {\n this.removeOverlayEle();\n }\n break;\n case 'mode':\n if (!this.popupEle || this.popupTemplate) {\n break;\n }\n this.popupEle.classList.remove(RADIALSD, LINEARSD);\n this.popupEle.classList.add((this.mode === 'Radial') ? RADIALSD : LINEARSD);\n this.updatePositionProperties();\n break;\n case 'radialSettings':\n if (this.popupEle && (this.mode === 'Radial') && !this.popupTemplate) {\n this.setRadialPosition();\n }\n break;\n case 'opensOnHover':\n if (this.opensOnHover) {\n this.unwireFabClick();\n this.wireFabHover();\n }\n else {\n this.unwireFabHover();\n this.wireFabClick();\n }\n break;\n }\n }\n };\n __decorate$6([\n Complex({}, SpeedDialAnimationSettings)\n ], SpeedDial.prototype, \"animation\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"content\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"closeIconCss\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"cssClass\", void 0);\n __decorate$6([\n Property('Auto')\n ], SpeedDial.prototype, \"direction\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDial.prototype, \"disabled\", void 0);\n __decorate$6([\n Property('Left')\n ], SpeedDial.prototype, \"iconPosition\", void 0);\n __decorate$6([\n Collection([], SpeedDialItem)\n ], SpeedDial.prototype, \"items\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"itemTemplate\", void 0);\n __decorate$6([\n Property('Linear')\n ], SpeedDial.prototype, \"mode\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"openIconCss\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDial.prototype, \"opensOnHover\", void 0);\n __decorate$6([\n Property('BottomRight')\n ], SpeedDial.prototype, \"position\", void 0);\n __decorate$6([\n Property(false)\n ], SpeedDial.prototype, \"modal\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"popupTemplate\", void 0);\n __decorate$6([\n Complex({}, RadialSettings)\n ], SpeedDial.prototype, \"radialSettings\", void 0);\n __decorate$6([\n Property('')\n ], SpeedDial.prototype, \"target\", void 0);\n __decorate$6([\n Property(true)\n ], SpeedDial.prototype, \"visible\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"beforeClose\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"beforeItemRender\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"beforeOpen\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"created\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"clicked\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"onClose\", void 0);\n __decorate$6([\n Event()\n ], SpeedDial.prototype, \"onOpen\", void 0);\n SpeedDial = __decorate$6([\n NotifyPropertyChanges\n ], SpeedDial);\n return SpeedDial;\n}(Component));\n\n/**\n * SpeedDial modules\n */\n\n/**\n * Button all modules\n */\n\nexport { wrapperInitialize, getTextNode, destroy, preRender, createCheckBox, rippleMouseHandler, setHiddenInput, IconPosition, buttonObserver, Button, CheckBox, RadioButton, Switch, classNames, ChipList, Chip, FabPosition, Fab, SpeedDialMode, LinearDirection, RadialDirection, SpeedDialAnimationEffect, SpeedDialAnimationSettings, RadialSettings, SpeedDialItem, SpeedDial };\n","import { Animation, Browser, ChildProperty, Collection, Component, Event, EventHandler, HijriParser, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, addClass, append, attributes, cldrData, closest, createElement, detach, extend, formatUnit, getDefaultDateObject, getUniqueID, getValue, isNullOrUndefined, isUndefined, merge, prepend, remove, removeClass, rippleEffect, select, setStyleAttribute, setValue, throwError } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { ListBase } from '@syncfusion/ej2-lists';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @__PURE__ @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement = this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type == 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText && this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select$$1 = (value && (value).getFullYear() === yr && localMonth);\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select$$1) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value = date.valueOf();\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n * @deprecated\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n this.l10.setLocale(this.locale);\n this.updateFooter();\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @__PURE__ @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n * @deprecated\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n * @deprecated\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n * @deprecated\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n * @deprecated\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n * @deprecated\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.previousDate) || this.previousDate == null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\n\n/**\n *\n */\n/* eslint-disable @typescript-eslint/no-explicit-any */\n//class constant defination.\nvar OTHERMONTH$1 = 'e-other-month';\nvar YEAR$1 = 'e-year';\nvar MONTH$1 = 'e-month';\nvar DECADE$1 = 'e-decade';\nvar DISABLED$1 = 'e-disabled';\nvar OVERLAY$1 = 'e-overlay';\nvar WEEKEND$1 = 'e-weekend';\nvar WEEKNUMBER$1 = 'e-week-number';\nvar SELECTED$1 = 'e-selected';\nvar FOCUSEDDATE$1 = 'e-focused-date';\nvar OTHERMONTHROW$1 = 'e-month-hide';\nvar TODAY$1 = 'e-today';\nvar LINK$1 = 'e-day';\nvar CELL$1 = 'e-cell';\nvar dayMilliSeconds$1 = 86400000;\nvar minDecade = 2060;\nvar maxDecade = 2069;\nvar Islamic = /** @__PURE__ @class */ (function () {\n function Islamic(instance) {\n this.calendarInstance = instance;\n }\n Islamic.prototype.getModuleName = function () {\n return 'islamic';\n };\n Islamic.prototype.islamicTitleUpdate = function (date, view) {\n var globalize = new Internationalization(this.calendarInstance.locale);\n switch (view) {\n case 'days':\n this.calendarInstance.headerTitleElement.textContent = globalize.formatDate(date, { type: 'dateTime', format: 'MMMMyyyy', calendar: 'islamic' });\n break;\n case 'months':\n this.calendarInstance.headerTitleElement.textContent = globalize.formatDate(date, { type: 'dateTime', format: 'yyyy', calendar: 'islamic' });\n }\n };\n Islamic.prototype.islamicRenderDays = function (currentDate, value, multiSelection, values) {\n var tdEles = [];\n var cellsCount = 42;\n var localDate = new Date(this.islamicInValue(currentDate));\n var minMaxDate;\n this.islamicTitleUpdate(currentDate, 'days');\n var islamicDate = this.getIslamicDate(localDate);\n var gregorianObject = this.toGregorian(islamicDate.year, islamicDate.month, 1);\n var currentMonth = islamicDate.month;\n localDate = gregorianObject;\n while (localDate.getDay() !== this.calendarInstance.firstDayOfWeek) {\n this.calendarInstance.setStartDate(localDate, -1 * dayMilliSeconds$1);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.calendarInstance.createElement('td', { className: CELL$1 });\n var weekAnchor = this.calendarInstance.createElement('span');\n if (day % 7 === 0 && this.calendarInstance.weekNumber) {\n weekAnchor.textContent = '' + this.calendarInstance.getWeek(localDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER$1);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.calendarInstance.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: 'islamic' };\n var date = this.calendarInstance.globalize.parseDate(this.calendarInstance.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.islamicDayCell(localDate);\n var title = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'full', calendar: 'islamic' });\n var dayLink = this.calendarInstance.createElement('span');\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'd', calendar: 'islamic' });\n var disabled = (this.calendarInstance.min > localDate) || (this.calendarInstance.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED$1);\n addClass([tdEle], OVERLAY$1);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n var hijriMonthObject = this.getIslamicDate(localDate);\n if (currentMonth !== hijriMonthObject.month) {\n addClass([tdEle], OTHERMONTH$1);\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND$1);\n }\n tdEle.appendChild(dayLink);\n this.calendarInstance.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.calendarInstance.renderDayCellArgs;\n this.calendarInstance.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n if (this.calendarInstance.isMultiSelection) {\n if (!isNullOrUndefined(this.calendarInstance.values) && this.calendarInstance.values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.calendarInstance.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd', calendar: 'islamic' }));\n var tempDateString = +new Date(this.calendarInstance.globalize.formatDate(this.calendarInstance.values[index], { type: 'date', skeleton: 'yMd', calendar: 'islamic' }));\n if (localDateString === tempDateString) {\n this.calendarInstance.values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (value && +value === +argument.date) {\n this.calendarInstance.setProperties({ value: null }, true);\n }\n }\n if (this.calendarInstance.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED$1)) {\n addClass([tdEle], DISABLED$1);\n addClass([tdEle], OVERLAY$1);\n if (+this.calendarInstance.renderDayCellArgs.date === +this.calendarInstance.todayDate) {\n this.calendarInstance.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH$1);\n var disabledCls = tdEle.classList.contains(DISABLED$1);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n if (this.calendarInstance.isMultiSelection && !isNullOrUndefined(this.calendarInstance.values) &&\n !otherMnthBool && !disabledCls) {\n for (var tempValue = 0; tempValue < this.calendarInstance.values.length; tempValue++) {\n var localDateString = this.calendarInstance.globalize.formatDate(localDate, { type: 'date', skeleton: 'short', calendar: 'islamic' });\n var tempDateString = this.calendarInstance.globalize.formatDate(this.calendarInstance.values[tempValue], { type: 'date', skeleton: 'short', calendar: 'islamic' });\n if (localDateString === tempDateString &&\n this.calendarInstance.getDateVal(localDate, this.calendarInstance.values[tempValue])) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (this.calendarInstance.values.length <= 0) {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!otherMnthBool && !disabledCls && this.calendarInstance.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n this.calendarInstance.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n if (date.getDate() === new Date().getDate() && date.getMonth() === new Date().getMonth()) {\n if (date.getFullYear() === new Date().getFullYear()) {\n addClass([tdEle], TODAY$1);\n }\n }\n localDate = new Date(+minMaxDate);\n tdEles.push(this.calendarInstance.renderDayCellArgs.element);\n this.calendarInstance.addDay(localDate, 1, null, this.calendarInstance.max, this.calendarInstance.min);\n }\n return tdEles;\n };\n Islamic.prototype.islamicIconHandler = function () {\n new Date(this.islamicInValue(this.calendarInstance.currentDate)).setDate(1);\n var date = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n switch (this.calendarInstance.currentView()) {\n case 'Month':\n {\n var prevMonthCompare = this.islamicCompareMonth(date, this.calendarInstance.min) < 1;\n var nextMonthCompare = this.islamicCompareMonth(date, this.calendarInstance.max) > -1;\n this.calendarInstance.previousIconHandler(prevMonthCompare);\n this.calendarInstance.nextIconHandler(nextMonthCompare);\n }\n break;\n case 'Year':\n {\n var prevYearCompare = this.hijriCompareYear(date, this.calendarInstance.min) < 1;\n var nextYearCompare = this.hijriCompareYear(date, this.calendarInstance.max) > -1;\n this.calendarInstance.previousIconHandler(prevYearCompare);\n this.calendarInstance.nextIconHandler(nextYearCompare);\n }\n break;\n case 'Decade': {\n var startIslamicYear = 1361;\n var gregorianValue = HijriParser.toGregorian(startIslamicYear, 1, 1);\n var prevDecadeCompare = this.hijriCompareDecade(date, this.calendarInstance.min) < 1;\n var nextDecadeCompare = this.hijriCompareDecade(date, this.calendarInstance.max) > -1;\n prevDecadeCompare = HijriParser.toGregorian(this.calendarInstance.headerTitleElement.textContent.split('-')[0].trim(), 1, 1).getFullYear() === gregorianValue.getFullYear() ? true : prevDecadeCompare;\n this.calendarInstance.previousIconHandler(prevDecadeCompare);\n this.calendarInstance.nextIconHandler(nextDecadeCompare);\n }\n }\n };\n Islamic.prototype.islamicNext = function () {\n this.calendarInstance.effect = '';\n var view = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n var islamicDate = this.getIslamicDate(this.calendarInstance.currentDate);\n switch (this.calendarInstance.currentView()) {\n case 'Year':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year + 1, islamicDate.month, 1);\n this.calendarInstance.switchView(view);\n break;\n case 'Month':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year, islamicDate.month + 1, 1);\n this.calendarInstance.switchView(view);\n break;\n case 'Decade':\n this.calendarInstance.nextIconClicked = true;\n if (islamicDate.year - this.calendarInstance.headerElement.textContent.split('-')[0].trim() === 1) {\n islamicDate.year = islamicDate.year - this.calendarInstance.headerElement.textContent.split('-')[0].trim() === 1 ? islamicDate.year + 1 : islamicDate.year;\n }\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year + 10, islamicDate.month, 1);\n this.calendarInstance.switchView(view);\n break;\n }\n };\n Islamic.prototype.islamicPrevious = function () {\n var currentView = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n this.calendarInstance.effect = '';\n var islamicDate = this.getIslamicDate(this.calendarInstance.currentDate);\n switch (this.calendarInstance.currentView()) {\n case 'Month':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year, islamicDate.month - 1, 1);\n this.calendarInstance.switchView(currentView);\n break;\n case 'Year':\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year - 1, islamicDate.month, 1);\n this.calendarInstance.switchView(currentView);\n break;\n case 'Decade':\n this.calendarInstance.previousIconClicked = true;\n this.calendarInstance.currentDate = this.toGregorian(islamicDate.year - 10, islamicDate.month - 1, 1);\n this.calendarInstance.switchView(currentView);\n break;\n }\n };\n Islamic.prototype.islamicRenderYears = function (e, value) {\n this.calendarInstance.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n var localDate = curDate;\n var islamicDate = this.getIslamicDate(localDate);\n var gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject;\n var mon = islamicDate.month;\n var yr = islamicDate.year;\n var curYrs = islamicDate.year;\n var minYr = (this.getIslamicDate(this.calendarInstance.min)).year;\n var minMonth = (this.getIslamicDate(this.calendarInstance.min)).month;\n var maxYr = (this.getIslamicDate(this.calendarInstance.max)).year;\n var maxMonth = (this.getIslamicDate(this.calendarInstance.max)).month;\n this.islamicTitleUpdate(this.calendarInstance.currentDate, 'months');\n for (var month = 1; month <= 12; ++month) {\n var islamicDate_1 = this.getIslamicDate(localDate);\n var gregorianObject_1 = HijriParser.toGregorian(islamicDate_1.year, month, 1);\n localDate = gregorianObject_1;\n var tdEle = this.islamicDayCell(localDate);\n var dayLink = this.calendarInstance.createElement('span');\n var localMonth = (value &&\n (this.getIslamicDate(value)).month === (this.getIslamicDate(localDate)).month);\n var select$$1 = (value && (this.getIslamicDate(value)).year === yr && localMonth);\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'MMM', calendar: 'islamic' });\n if ((this.calendarInstance.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.calendarInstance.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED$1);\n }\n else if (!valueUtil && select$$1) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n if ((this.getIslamicDate(localDate)).month === mon &&\n (this.getIslamicDate(this.calendarInstance.currentDate)).month === mon) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n }\n if (!tdEle.classList.contains(DISABLED$1)) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.islamicRenderTemplate(tdEles, numCells, YEAR$1, e, value);\n };\n Islamic.prototype.islamicRenderDecade = function (e, value) {\n this.calendarInstance.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.islamicInValue(this.calendarInstance.currentDate));\n var islamicDate = this.getIslamicDate(localDate);\n var gregorianObject = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject;\n var localYr = localDate.getFullYear();\n var startYr = new Date(this.islamicInValue((localYr - localYr % 10)));\n var endYr = new Date(this.islamicInValue((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.calendarInstance.globalize.formatDate(startYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n var endHdrYr = this.calendarInstance.globalize.formatDate(endYr, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n var splityear = this.calendarInstance.headerElement.textContent.split('-');\n if ((!isNullOrUndefined(e) && (splityear[0] !== startHdrYr) && e.action === 'home') || (!isNullOrUndefined(e) && e.type === 'keydown' && e.action === 'end')) {\n startHdrYr = this.calendarInstance.headerElement.textContent.split('-')[0].trim();\n endHdrYr = this.calendarInstance.headerElement.textContent.split('-')[1].trim();\n }\n if (this.calendarInstance.islamicPreviousHeader) {\n startHdrYr = this.calendarInstance.islamicPreviousHeader.split('-')[0].trim();\n endHdrYr = this.calendarInstance.islamicPreviousHeader.split('-')[1].trim();\n this.calendarInstance.islamicPreviousHeader = null;\n }\n if (this.calendarInstance.previousIconClicked) {\n for (var i = 0; i <= splityear.length; i++) {\n endHdrYr = endHdrYr - splityear[i] === 2 || splityear[i] - endHdrYr === 2 ? (parseInt(endHdrYr) + 1).toString() : endHdrYr - splityear[i] === 3 || splityear[i] - endHdrYr === 3 ? (parseInt(endHdrYr) + 2).toString() : endHdrYr - splityear[i] === 4 || splityear[i] - endHdrYr === 4 ? (parseInt(endHdrYr) + 3).toString() : endHdrYr - splityear[i] === 5 || splityear[i] - endHdrYr === 5 ? (parseInt(endHdrYr) + 4).toString() : endHdrYr;\n if (endHdrYr - splityear[i] === 0 || splityear[i] - endHdrYr === 0) {\n endHdrYr = (parseInt(endHdrYr) - 1).toString();\n }\n }\n if (endHdrYr - splityear[i] === 8 || splityear[i] - endHdrYr === 8) {\n endHdrYr = (parseInt(endHdrYr) - 9).toString();\n startHdrYr = (parseInt(endHdrYr) - 9).toString();\n }\n if (endHdrYr - splityear[i] === 7 || splityear[i] - endHdrYr === 7) {\n endHdrYr = (parseInt(endHdrYr) - 8).toString();\n startHdrYr = (parseInt(endHdrYr) - 9).toString();\n }\n startHdrYr = endHdrYr - startHdrYr === 10\n ? (parseInt(startHdrYr) + 1).toString() : endHdrYr - startHdrYr === 11\n ? (parseInt(startHdrYr) + 2).toString() : endHdrYr - startHdrYr === 12\n ? (parseInt(startHdrYr) + 3).toString() : startHdrYr;\n if (endHdrYr - startHdrYr === 8) {\n startHdrYr = (parseInt(startHdrYr) - 1).toString();\n }\n }\n if (this.calendarInstance.nextIconClicked) {\n for (var i = 0; i <= splityear.length; i++) {\n if (startHdrYr - splityear[i] === 0 || splityear[i] - startHdrYr === 0) {\n startHdrYr = (parseInt(startHdrYr) + 1).toString();\n }\n if (startHdrYr - splityear[i] === 2 && startHdrYr > splityear[i].trim()) {\n startHdrYr = (parseInt(startHdrYr) - 1).toString();\n }\n if (splityear[i] - startHdrYr === 1 && startHdrYr < splityear[i].trim()) {\n startHdrYr = (parseInt(startHdrYr) + 2).toString();\n }\n }\n if (startHdrYr - this.calendarInstance.headerTitleElement.textContent.split('-')[1].trim() > 1) {\n startHdrYr = (parseInt(this.calendarInstance.headerTitleElement.textContent.split('-')[1].trim()) + 1).toString();\n endHdrYr = (parseInt(startHdrYr) + 9).toString();\n }\n endHdrYr = endHdrYr - startHdrYr === 10 ? (parseInt(endHdrYr) - 1).toString() : endHdrYr;\n endHdrYr = endHdrYr - startHdrYr === 7\n ? (parseInt(endHdrYr) + 2).toString() : endHdrYr - startHdrYr === 8\n ? (parseInt(endHdrYr) + 1).toString() : endHdrYr;\n }\n this.calendarInstance.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n this.calendarInstance.nextIconClicked = this.calendarInstance.previousIconClicked = false;\n var year = (parseInt(startHdrYr) - 2).toString();\n startFullYr = Math.round(parseInt(startHdrYr) * 0.97 + 622);\n endFullYr = Math.round(parseInt(endHdrYr) * 0.97 + 622);\n var startYear = Math.round(parseInt(year) * 0.97 + 622);\n for (var rowCount = 1; rowCount <= yearCell; ++rowCount) {\n var year_1 = startYear + rowCount;\n localDate.setFullYear(year_1);\n localDate.setDate(1);\n localDate.setMonth(0);\n if ((this.getIslamicDate(localDate).year - islamicDate.year) > 1) {\n localDate.setMonth(1);\n rowCount = rowCount - 1;\n localDate.setFullYear(localDate.getFullYear() - 1);\n }\n islamicDate = this.getIslamicDate(localDate);\n var gregorianObject_2 = HijriParser.toGregorian(islamicDate.year, 1, 1);\n localDate = gregorianObject_2;\n if (islamicDate.year === parseInt(startHdrYr) - 1 || islamicDate.year >= startHdrYr && islamicDate.year <= endFullYr || islamicDate.year === parseInt(endHdrYr) + 1) {\n var tdEle = this.islamicDayCell(localDate);\n attributes(tdEle, { 'role': 'gridcell' });\n var dayLink = this.calendarInstance.createElement('span');\n dayLink.textContent = this.calendarInstance.globalize.formatDate(localDate, { type: 'dateTime', format: 'y', calendar: 'islamic' });\n if (islamicDate.year === parseInt(startHdrYr) - 1 || (year_1 < startFullYr) || (year_1 > endFullYr) && islamicDate.year !== parseInt(endHdrYr)) {\n addClass([tdEle], OTHERMONTH$1);\n }\n else if (year_1 < new Date(this.islamicInValue(this.calendarInstance.min)).getFullYear()\n || year_1 > new Date(this.islamicInValue(this.calendarInstance.max)).getFullYear()) {\n addClass([tdEle], DISABLED$1);\n }\n else if (!isNullOrUndefined(value) &&\n (this.getIslamicDate(localDate)).year ===\n (this.getIslamicDate(value)).year) {\n addClass([tdEle], SELECTED$1);\n }\n else {\n if (localDate.getFullYear() === this.calendarInstance.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED$1)) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n }\n if (!tdEle.classList.contains(DISABLED$1)) {\n EventHandler.add(tdEle, 'click', this.calendarInstance.clickHandler, this.calendarInstance);\n }\n tdEle.appendChild(dayLink);\n if ((!isNullOrUndefined(e) && e.action === 'home' && islamicDate.year.toString() === startHdrYr) || (!isNullOrUndefined(e) && e.action === 'end' && islamicDate.year.toString() === endHdrYr)) {\n addClass([tdEle], FOCUSEDDATE$1);\n }\n tdEles.push(tdEle);\n }\n }\n this.islamicRenderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n Islamic.prototype.islamicDayCell = function (localDate) {\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: 'islamic' };\n var formatDate = this.calendarInstance.globalize.formatDate(localDate, dateFormatOptions);\n var date = this.calendarInstance.globalize.parseDate(formatDate, dateFormatOptions);\n var value = date.valueOf();\n var attrs = {\n className: CELL$1, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false', 'role': 'gridcell' }\n };\n return this.calendarInstance.createElement('td', attrs);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Islamic.prototype.islamicRenderTemplate = function (elements, count, classNm, e, value) {\n var view = this.calendarInstance.getViewNumber(this.calendarInstance.currentView());\n var trEle;\n this.calendarInstance.tableBodyElement = this.calendarInstance.createElement('tbody');\n this.calendarInstance.table.appendChild(this.calendarInstance.tableBodyElement);\n removeClass([this.calendarInstance.contentElement, this.calendarInstance.headerElement], [MONTH$1, DECADE$1, YEAR$1]);\n addClass([this.calendarInstance.contentElement, this.calendarInstance.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowCount = 0;\n for (var dayCell = 0; dayCell < Math.round(elements.length / count); ++dayCell) {\n trEle = this.calendarInstance.createElement('tr', { attrs: { 'role': 'row' } });\n for (rowCount = 0 + rowCount; rowCount < row; rowCount++) {\n if (!elements[rowCount].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowCount].children[0])) {\n addClass([elements[rowCount].children[0]], [LINK$1]);\n rippleEffect(elements[rowCount].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowCount]);\n if (this.calendarInstance.weekNumber &&\n rowCount === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n if (!this.calendarInstance.weekNumber\n && rowCount === otherMonthCell && elements[otherMonthCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n if (this.calendarInstance.weekNumber) {\n if (rowCount === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n }\n else {\n if (rowCount === numberCell && elements[numberCell].classList.contains(OTHERMONTH$1)) {\n addClass([trEle], OTHERMONTHROW$1);\n }\n }\n }\n row = row + count;\n rowCount = rowCount + 0;\n this.calendarInstance.tableBodyElement.appendChild(trEle);\n }\n this.calendarInstance.table.querySelector('tbody').className = this.calendarInstance.effect;\n this.islamicIconHandler();\n if (view !== this.calendarInstance.getViewNumber(this.calendarInstance.currentView())\n || (view === 0 && view !== this.calendarInstance.getViewNumber(this.calendarInstance.currentView()))) {\n this.calendarInstance.navigateHandler(e);\n }\n this.calendarInstance.setAriaActiveDescendant();\n this.calendarInstance.changedArgs = { value: this.calendarInstance.value, values: this.calendarInstance.values };\n this.calendarInstance.changeHandler();\n };\n Islamic.prototype.islamicCompareMonth = function (start, end) {\n var hijriStart = (this.getIslamicDate(start));\n var hijriEnd = (this.getIslamicDate(end));\n var result;\n if (hijriStart.year > hijriEnd.year) {\n result = 1;\n }\n else if (hijriStart.year < hijriEnd.year) {\n result = -1;\n }\n else {\n result = hijriStart.month === hijriEnd.month ? 0 : hijriStart.month > hijriEnd.month ? 1 : -1;\n }\n return result;\n };\n Islamic.prototype.islamicCompare = function (startDate, endDate, modifier) {\n var hijriStart = this.getIslamicDate(startDate);\n var hijriEnd = this.getIslamicDate(endDate);\n var start = hijriEnd.year;\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (hijriStart.year > end) {\n result = 1;\n }\n else if ((this.calendarInstance.currentView() === 'Decade') && hijriStart.year < start &&\n !((startDate.getFullYear() >= minDecade && startDate.getFullYear() <= maxDecade))) {\n result = -1;\n }\n else if (hijriStart.year < start && (this.calendarInstance.currentView() === 'Year')) {\n result = -1;\n }\n return result;\n };\n Islamic.prototype.getIslamicDate = function (date) {\n return (HijriParser.getHijriDate(date));\n };\n Islamic.prototype.toGregorian = function (year, month, date) {\n return HijriParser.toGregorian(year, month, date);\n };\n Islamic.prototype.hijriCompareYear = function (start, end) {\n return this.islamicCompare(start, end, 0);\n };\n Islamic.prototype.hijriCompareDecade = function (start, end) {\n return this.islamicCompare(start, end, 10);\n };\n Islamic.prototype.destroy = function () {\n this.calendarInstance = null;\n };\n Islamic.prototype.islamicInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n return Islamic;\n}());\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Calendar modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT$1 = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED$2 = 'e-selected';\nvar FOCUSEDDATE$2 = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @__PURE__ @class */ (function (_super) {\n __extends$1(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousElementValue = '';\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n this.updateInput(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false'\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\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)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\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)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify(\"clearHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify(\"inputHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value == this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start == 0 && end == length_1) || (end !== length_1 && e.action == 'tab') || (start !== 0 && e.action == 'shiftTab')) {\n e.preventDefault();\n }\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n this.hide(e);\n break;\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED$2).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED$2), [SELECTED$2]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT$1 + ' ' + POPUPWRAPPER });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT$1 + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n open: function () {\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n * @deprecated\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min)) && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE$2);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED$2);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n * @deprecated\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper)) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n * @deprecated\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n * @deprecated\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT$1]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT$1, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes$$1 = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) && !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n this.updateInputValue('');\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate$1([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate$1([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate$1([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate$1([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate$1([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate$1([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate$1([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate$1([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate$1([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\n\n/**\n * Datepicker modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nvar DATERANGEWRAPPER = 'e-date-range-wrapper';\nvar INPUTCONTAINER$1 = 'e-input-group';\nvar DATERANGEICON = 'e-input-group-icon e-range-icon e-icons';\nvar POPUP$1 = 'e-popup';\nvar LEFTCALENDER = 'e-left-calendar';\nvar RIGHTCALENDER = 'e-right-calendar';\nvar LEFTCONTAINER = 'e-left-container';\nvar RIGHTCONTAINER = 'e-right-container';\nvar ROOT$2 = 'e-daterangepicker';\nvar LIBRARY$1 = 'e-lib';\nvar CONTROL$1 = 'e-control';\nvar ERROR$1 = 'e-error';\nvar ACTIVE$1 = 'e-active';\nvar STARTENDCONTAINER = 'e-start-end';\nvar STARTDATE = 'e-start-date';\nvar ENDDATE = 'e-end-date';\nvar STARTBUTTON = 'e-start-btn';\nvar INPUTFOCUS$1 = 'e-input-focus';\nvar ENDBUTTON = 'e-end-btn';\nvar RANGEHOVER = 'e-range-hover';\nvar OTHERMONTH$2 = 'e-other-month';\nvar STARTLABEL = 'e-start-label';\nvar ENDLABEL = 'e-end-label';\nvar DISABLED$2 = 'e-disabled';\nvar SELECTED$3 = 'e-selected';\nvar CALENDAR = 'e-calendar';\nvar NEXTICON$1 = 'e-next';\nvar PREVICON$1 = 'e-prev';\nvar HEADER$1 = 'e-header';\nvar TITLE$1 = 'e-title';\nvar ICONCONTAINER$1 = 'e-icon-container';\nvar RANGECONTAINER = 'e-date-range-container';\nvar RANGEHEADER = 'e-range-header';\nvar PRESETS = 'e-presets';\nvar FOOTER$1 = 'e-footer';\nvar RANGEBORDER = 'e-range-border';\nvar TODAY$2 = 'e-today';\nvar FOCUSDATE = 'e-focused-date';\nvar CONTENT$1 = 'e-content';\nvar DAYSPAN = 'e-day-span';\nvar WEEKNUMBER$2 = 'e-week-number';\nvar DATEDISABLED = 'e-date-disabled';\nvar ICONDISABLED = 'e-icon-disabled';\nvar CALENDARCONTAINER = 'e-calendar-container';\nvar SEPARATOR = 'e-separator';\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar DEVICE$1 = 'e-device';\nvar OVERLAY$2 = 'e-overlay';\nvar CHANGEICON = 'e-change-icon e-icons';\nvar LISTCLASS = 'e-list-item';\nvar RTL$1 = 'e-rtl';\nvar HOVER = 'e-hover';\nvar OVERFLOW$1 = 'e-range-overflow';\nvar OFFSETVALUE$1 = 4;\nvar PRIMARY$1 = 'e-primary';\nvar FLAT$1 = 'e-flat';\nvar CSS$1 = 'e-css';\nvar ZOOMIN$1 = 'e-zoomin';\nvar NONEDITABLE = 'e-non-edit';\nvar DAYHEADERLONG$1 = 'e-daterange-day-header-lg';\nvar HIDDENELEMENT = 'e-daterange-hidden';\nvar wrapperAttr = ['title', 'class', 'style'];\nvar Presets = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Presets, _super);\n function Presets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property()\n ], Presets.prototype, \"label\", void 0);\n __decorate$2([\n Property()\n ], Presets.prototype, \"start\", void 0);\n __decorate$2([\n Property()\n ], Presets.prototype, \"end\", void 0);\n return Presets;\n}(ChildProperty));\n/**\n * Represents the DateRangePicker component that allows user to select the date range from the calendar\n * or entering the range through the input element.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateRangePicker = /** @__PURE__ @class */ (function (_super) {\n __extends$2(DateRangePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateRangePickerModel} options - Specifies the DateRangePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateRangePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isCustomRange = false;\n _this.isCustomWindow = false;\n _this.presetsItem = [];\n _this.liCollections = [];\n _this.previousEleValue = '';\n _this.isKeyPopup = false;\n _this.dateDisabled = false;\n _this.isRangeIconClicked = false;\n _this.isMaxDaysClicked = false;\n _this.disabledDays = [];\n _this.preventBlur = false;\n _this.preventFocus = false;\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.dateRangeOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.render = function () {\n this.initialize();\n this.setProperties({ startDate: this.startValue }, true);\n this.setProperties({ endDate: this.endValue }, true);\n this.setModelValue();\n this.setDataAttribute(false);\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.preRender = function () {\n this.keyInputConfigs = {\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n tab: 'tab',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n spacebar: 'space'\n };\n this.defaultConstant = {\n placeholder: this.placeholder,\n startLabel: 'Start Date',\n endLabel: 'End Date',\n customRange: 'Custom Range',\n applyText: 'Apply',\n cancelText: 'Cancel',\n selectedDays: 'Selected Days',\n days: 'days'\n };\n /**\n * Mobile View\n */\n this.isMobile = window.matchMedia('(max-width:550px)').matches;\n this.inputElement = this.element;\n this.angularTag = null;\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT$2, CONTROL$1, LIBRARY$1]);\n this.updateHtmlAttributeToElement();\n if (this.element.getAttribute('id')) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n this.checkInvalidRange(this.value);\n if (!this.invalidValueString && (typeof (this.value) === 'string')) {\n var rangeArray = this.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n }\n this.initProperty();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n this.navNextFunction = this.navNextMonth.bind(this);\n this.navPrevFunction = this.navPrevMonth.bind(this);\n this.deviceNavNextFunction = this.deviceNavNext.bind(this);\n this.deviceNavPrevFunction = this.deviceNavPrevious.bind(this);\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.formElement = closest(this.element, 'form');\n };\n DateRangePicker.prototype.updateValue = function () {\n if (this.value && this.value.length > 0) {\n if (this.value[0] instanceof Date && !isNaN(+this.value[0])) {\n this.setProperties({ startDate: this.value[0] }, true);\n this.startValue = this.value[0];\n }\n else if (typeof this.value[0] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.startValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ startDate: new Date(this.checkValue(this.value[0])) }, true);\n this.startValue = new Date(this.checkValue(this.value[0]));\n }\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value[1] instanceof Date && !isNaN(+this.value[1])) {\n this.setProperties({ endDate: this.value[1] }, true);\n this.endValue = this.value[1];\n }\n else if (typeof this.value[1] === 'string') {\n if (+this.value[0] === 0 || isNaN(+(new Date(this.checkValue(this.value[0]))))) {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n else {\n this.setProperties({ endDate: new Date(this.checkValue(this.value[1])) }, true);\n this.endValue = new Date(this.checkValue(this.value[1]));\n this.setValue();\n }\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (this.value && this.value.start) {\n if (this.value.start instanceof Date && !isNaN(+this.value.start)) {\n this.setProperties({ startDate: this.value.start }, true);\n this.startValue = this.value.start;\n }\n else if (typeof this.value.start === 'string') {\n this.setProperties({ startDate: new Date(this.checkValue(this.value.start)) }, true);\n this.startValue = new Date(this.checkValue(this.value.start));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (this.value.end instanceof Date && !isNaN(+this.value.end)) {\n this.setProperties({ endDate: this.value.end }, true);\n this.endValue = this.value.end;\n }\n else if (typeof this.value.end === 'string') {\n this.setProperties({ endDate: new Date(this.checkValue(this.value.end)) }, true);\n this.endValue = new Date(this.checkValue(this.value.end));\n this.setValue();\n }\n else {\n this.setProperties({ endDate: null }, true);\n this.endValue = null;\n this.setValue();\n }\n }\n else if (isNullOrUndefined(this.value)) {\n this.endValue = this.checkDateValue(new Date(this.checkValue(this.endDate)));\n this.startValue = this.checkDateValue(new Date(this.checkValue(this.startDate)));\n this.setValue();\n }\n };\n DateRangePicker.prototype.initProperty = function () {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.updateValue();\n };\n DateRangePicker.prototype.checkFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n else {\n this.formatString = null;\n }\n }\n else {\n this.formatString = null;\n }\n };\n DateRangePicker.prototype.initialize = function () {\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.checkHtmlAttributes(false);\n merge(this.defaultKeyConfigs, { shiftTab: 'shift+tab', tab: 'tab' });\n var start = this.checkDateValue(new Date(this.checkValue(this.startValue)));\n this.setProperties({ startDate: start }, true); // persist the value propeerty.\n this.setProperties({ endValue: this.checkDateValue(new Date(this.checkValue(this.endValue))) }, true);\n this.setValue();\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.l10n = new L10n('daterangepicker', this.defaultConstant, this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.processPresets();\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setRangeAllowEdit();\n this.bindEvents();\n };\n DateRangePicker.prototype.setDataAttribute = function (isDynamic) {\n var attributes$$1 = {};\n if (!isDynamic) {\n for (var i = 0; i < this.element.attributes.length; i++) {\n attributes$$1[this.element.attributes[i].name] = this.element.getAttribute(this.element.attributes[i].name);\n }\n }\n else {\n attributes$$1 = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attributes$$1); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (pro.indexOf('data') === 0) {\n this.firstHiddenChild.setAttribute(pro, attributes$$1[\"\" + pro]);\n this.secondHiddenChild.setAttribute(pro, attributes$$1[\"\" + pro]);\n }\n }\n };\n DateRangePicker.prototype.setRangeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateClearIconState();\n };\n DateRangePicker.prototype.updateClearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDITABLE]);\n }\n };\n DateRangePicker.prototype.validationAttribute = function (element, input) {\n var name = element.getAttribute('name') ? element.getAttribute('name') : element.getAttribute('id');\n input.setAttribute('name', name);\n element.removeAttribute('name');\n var attributes$$1 = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes$$1.length; i++) {\n if (isNullOrUndefined(element.getAttribute(attributes$$1[i]))) {\n continue;\n }\n var attr = element.getAttribute(attributes$$1[i]);\n input.setAttribute(attributes$$1[i], attr);\n element.removeAttribute(attributes$$1[i]);\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (key === 'style') {\n var dateRangeStyle = this.inputWrapper.container.getAttribute(key);\n dateRangeStyle = !isNullOrUndefined(dateRangeStyle) ? (dateRangeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, dateRangeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n DateRangePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DateRangePicker.prototype.updateCssClass = function (cssNewClass, cssOldClass) {\n if (!isNullOrUndefined(cssOldClass)) {\n cssOldClass = (cssOldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssNewClass)) {\n cssNewClass = (cssNewClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssNewClass, [this.inputWrapper.container], cssOldClass);\n if (this.popupWrapper) {\n Input.setCssClass(cssNewClass, [this.popupWrapper], cssOldClass);\n }\n };\n DateRangePicker.prototype.processPresets = function () {\n this.presetsItem = [];\n var i = 0;\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n for (var _i = 0, _a = this.presets; _i < _a.length; _i++) {\n var range = _a[_i];\n var id = range.label.replace(/\\s+/g, '') + '_' + (++i);\n if (typeof range.end === 'string') {\n this.presetsItem.push({\n id: id, text: range.label, end: new Date(this.checkValue(range.end)), start: new Date(this.checkValue(range.start))\n });\n }\n else {\n this.presetsItem.push({ id: id, text: range.label, start: range.start, end: range.end });\n }\n }\n var startDate = isNullOrUndefined(this.startValue) ? null : new Date(+this.startValue);\n var endDate = isNullOrUndefined(this.endValue) ? null : new Date(+this.endValue);\n this.presetsItem.push({ id: 'custom_range', text: this.l10n.getConstant('customRange'), start: startDate, end: endDate });\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.isCustomRange = true;\n this.activeIndex = this.presetsItem.length - 1;\n }\n }\n };\n DateRangePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n if (!this.isMobile) {\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.inputKeyboardModule = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n };\n DateRangePicker.prototype.unBindEvents = function () {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.inputKeyboardModule)) {\n this.inputKeyboardModule.destroy();\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.inputElement.tabIndex = -1;\n };\n DateRangePicker.prototype.updateHiddenInput = function () {\n if (this.firstHiddenChild && this.secondHiddenChild) {\n var format = { type: 'datetime', skeleton: 'yMd' };\n if (typeof this.startDate === 'string') {\n this.startDate = this.globalize.parseDate(this.startDate, format);\n }\n if (typeof this.endDate === 'string') {\n this.endDate = this.globalize.parseDate(this.endDate, format);\n }\n this.firstHiddenChild.value = (this.startDate && this.globalize.formatDate(this.startDate, format))\n || (this.inputElement.value);\n this.secondHiddenChild.value = (this.endDate && this.globalize.formatDate(this.endDate, format)) ||\n (this.inputElement.value);\n this.dispatchEvent(this.firstHiddenChild, 'focusout');\n this.dispatchEvent(this.firstHiddenChild, 'change');\n }\n };\n DateRangePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DateRangePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.valueType = this.value;\n e.preventDefault();\n this.clear();\n var clearedArgs = {\n event: e\n };\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.trigger('cleared', clearedArgs);\n this.changeTrigger(e);\n this.clearRange();\n this.hide(e);\n if (closest(this.element, 'form')) {\n var element = this.firstHiddenChild;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DateRangePicker.prototype.restoreValue = function () {\n this.previousEleValue = this.inputElement.value;\n this.previousStartValue = this.startValue;\n this.previousEndValue = this.endValue;\n this.valueType = null;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n this.setValue();\n this.setModelValue();\n };\n DateRangePicker.prototype.formResetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.formElement && (e.target === this.formElement) && !this.inputElement.disabled) {\n var val = this.inputElement.getAttribute('value');\n if (!isNullOrUndefined(this.startCopy)) {\n if (!isNullOrUndefined(this.value) && !isNullOrUndefined(this.value.start)) {\n this.setProperties({ value: { start: this.startCopy, end: this.endCopy } }, true);\n this.startValue = this.value.start;\n this.endValue = this.value.end;\n }\n else {\n this.setProperties({ value: [this.startCopy, this.endCopy] }, true);\n this.startValue = this.value[0];\n this.endValue = this.value[1];\n }\n this.setProperties({ startDate: this.startValue, endDate: this.endValue }, true);\n }\n else {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n this.startValue = this.endValue = null;\n }\n if (this.element.tagName === 'EJS-DATERANGEPICKER') {\n this.setProperties({ value: null, startDate: null, endDate: null }, true);\n val = '';\n this.startValue = this.endValue = null;\n this.inputElement.setAttribute('value', '');\n }\n this.restoreValue();\n if (this.inputElement) {\n Input.setValue(val, this.inputElement, this.floatLabelType, this.showClearButton);\n this.errorClass();\n }\n }\n };\n DateRangePicker.prototype.clear = function () {\n if (this.startValue !== null) {\n this.startValue = null;\n }\n if (this.endValue !== null) {\n this.endValue = null;\n }\n if (this.value && this.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n if (this.value !== null && this.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n if (!(isNullOrUndefined(this.applyButton))) {\n this.applyButton.disabled = this.applyButton.element.disabled = true;\n }\n this.removeSelection();\n };\n DateRangePicker.prototype.rangeIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isMobile) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n this.targetElement = null;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n }\n else {\n this.isRangeIconClicked = true;\n this.inputWrapper.container.children[0].focus();\n this.show(null, e);\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.isRangeIconClicked = false;\n this.calendarFocus();\n this.isRangeIconClicked = true;\n }\n }\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n };\n DateRangePicker.prototype.checkHtmlAttributes = function (isDynamic) {\n this.globalize = new Internationalization(this.locale);\n var attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['startDate', 'endDate', 'minDays', 'maxDays', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder',\n 'type', 'value'];\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['enabled'] === undefined)) || isDynamic) {\n var disabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ enabled: !disabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === 'true' || this.inputElement.getAttribute(prop) === '' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateRangeOptions) || (this.dateRangeOptions['value'] === undefined)) || isDynamic) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, value, {}), !isDynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'min':\n if ((isNullOrUndefined(this.min) || +this.min === +new Date(1900, 0, 1)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'max':\n if ((isNullOrUndefined(this.max) || +this.max === +new Date(2099, 11, 31)) || isDynamic) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.setProperties(setValue(prop, dateValue, {}), !isDynamic);\n }\n break;\n case 'startDate':\n if (isNullOrUndefined(this.startDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.startValue = dateValue;\n this.setValue();\n }\n break;\n case 'endDate':\n if (isNullOrUndefined(this.endDate)) {\n var dateValue = this.globalize.parseDate(this.inputElement.getAttribute(prop), format);\n this.endValue = dateValue;\n this.setValue();\n }\n break;\n case 'minDays':\n if (isNullOrUndefined(this.minDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'maxDays':\n if (isNullOrUndefined(this.maxDays)) {\n this.setProperties(setValue(prop, parseInt(this.inputElement.getAttribute(prop), 10), {}), true);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n DateRangePicker.prototype.createPopup = function () {\n for (var i = 0; i < this.presetsItem.length; i++) {\n if ((i !== (this.presetsItem.length - 1)) && this.presetsItem[i].id === 'custom_range') {\n this.presetsItem.splice(i, 1);\n }\n }\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n for (var i = 0; i <= this.presetsItem.length - 2; i++) {\n var startDate = this.presetsItem[i].start;\n var endDate = this.presetsItem[i].end;\n if (this.startValue && this.endValue) {\n if ((+new Date(startDate.setHours(0, 0, 0, 0)) === +new Date(this.startValue.setHours(0, 0, 0, 0))) &&\n (+new Date(endDate.setHours(0, 0, 0, 0)) === +new Date(this.endValue.setHours(0, 0, 0, 0)))) {\n this.activeIndex = i;\n this.isCustomRange = false;\n }\n }\n }\n this.popupWrapper = createElement('div', { id: this.element.id + '_popup', className: ROOT$2 + ' ' + POPUP$1 });\n this.adjustLongHeaderWidth();\n var isPreset = (!this.isCustomRange || this.isMobile);\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && isPreset) {\n this.isCustomWindow = false;\n this.createPresets();\n this.listRippleEffect();\n this.renderPopup();\n }\n else {\n this.isCustomWindow = true;\n this.renderControl();\n }\n };\n DateRangePicker.prototype.renderControl = function () {\n this.createControl();\n this.bindCalendarEvents();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.updateHeader();\n };\n DateRangePicker.prototype.clearCalendarEvents = function () {\n if (this.leftCalPrevIcon && this.leftCalNextIcon && this.rightCalPrevIcon && this.rightCalNextIcon) {\n EventHandler.clearEvents(this.leftCalPrevIcon);\n EventHandler.clearEvents(this.leftCalNextIcon);\n EventHandler.clearEvents(this.rightCalPrevIcon);\n EventHandler.clearEvents(this.rightCalNextIcon);\n }\n };\n DateRangePicker.prototype.updateNavIcons = function () {\n _super.prototype.iconHandler.call(this);\n };\n DateRangePicker.prototype.calendarIconEvent = function () {\n this.clearCalendarEvents();\n if (this.leftCalPrevIcon && !this.leftCalPrevIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.leftCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.leftCalNextIcon && !this.leftCalNextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.leftCalNextIcon, 'mousedown', this.navNextFunction);\n }\n if (this.rightCalPrevIcon && !this.rightCalPrevIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.rightCalPrevIcon, 'mousedown', this.navPrevFunction);\n }\n if (this.rightCalNextIcon && !this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.rightCalNextIcon, 'mousedown', this.navNextFunction);\n }\n };\n DateRangePicker.prototype.bindCalendarEvents = function () {\n if (!this.isMobile) {\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.headerTitleElement = this.popupObj.element.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1 + ' .' + TITLE$1);\n this.headerTitleElement = this.popupObj.element.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1 + ' .' + TITLE$1);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.leftKeyboardModule = new KeyboardEvents(this.leftCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n this.rightKeyboardModule = new KeyboardEvents(this.rightCalendar, {\n eventName: 'keydown',\n keyAction: this.keyInputHandler.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.deviceCalendarEvent();\n EventHandler.add(this.startButton.element, 'click', this.deviceHeaderClick, this);\n EventHandler.add(this.endButton.element, 'click', this.deviceHeaderClick, this);\n }\n if (this.start === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.calendarIconRipple = function () {\n rippleEffect(this.leftCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.leftCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalPrevIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.rightCalNextIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n };\n DateRangePicker.prototype.deviceCalendarEvent = function () {\n EventHandler.clearEvents(this.nextIcon);\n EventHandler.clearEvents(this.previousIcon);\n rippleEffect(this.nextIcon, { selector: '.e-prev', duration: 400, isCenterRipple: true });\n rippleEffect(this.previousIcon, { selector: '.e-next', duration: 400, isCenterRipple: true });\n if (this.nextIcon && !this.nextIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.nextIcon, 'mousedown', this.deviceNavNextFunction);\n }\n if (this.previousIcon && !this.previousIcon.classList.contains(DISABLED$2)) {\n EventHandler.add(this.previousIcon, 'mousedown', this.deviceNavPrevFunction);\n }\n };\n DateRangePicker.prototype.deviceNavNext = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigateNext(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.deviceNavPrevious = function (e) {\n var calendar = closest(e.target, '.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n this.navigatePrevious(e);\n this.deviceNavigation();\n };\n DateRangePicker.prototype.updateDeviceCalendar = function (calendar) {\n if (calendar) {\n this.previousIcon = calendar.querySelector('.' + PREVICON$1);\n this.nextIcon = calendar.querySelector('.' + NEXTICON$1);\n this.calendarElement = calendar;\n this.deviceCalendar = calendar;\n this.contentElement = calendar.querySelector('.' + CONTENT$1);\n this.tableBodyElement = select('.' + CONTENT$1 + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT$1).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER$1 + ' .' + TITLE$1);\n this.headerElement = calendar.querySelector('.' + HEADER$1);\n }\n };\n DateRangePicker.prototype.deviceHeaderClick = function (event) {\n var element = event.currentTarget;\n if (element.classList.contains(STARTBUTTON) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.classList.remove(ACTIVE$1);\n this.startButton.element.classList.add(ACTIVE$1);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + STARTDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.startValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.removeClassDisabled();\n }\n else if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.classList.add(ACTIVE$1);\n var calendar = this.popupObj.element.querySelector('.' + CALENDAR);\n this.updateDeviceCalendar(calendar);\n if (isNullOrUndefined(this.calendarElement.querySelector('.' + ENDDATE + ':not(.e-other-month)'))) {\n this.currentDate = new Date(+this.endValue);\n remove(this.tableBodyElement);\n this.createContentBody();\n this.deviceNavigation();\n }\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n this.selectableDates();\n }\n };\n DateRangePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n this.preventBlur = false;\n var focusArguments = {\n model: this\n };\n if (!this.preventFocus) {\n this.trigger('focus', focusArguments);\n }\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.openOnFocus && !this.preventFocus) {\n this.preventFocus = true;\n this.show();\n }\n else {\n this.preventFocus = true;\n }\n };\n DateRangePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (!this.preventBlur) {\n var value = this.inputElement.value;\n if (!isNullOrUndefined(this.presetsItem)) {\n if (this.presetsItem.length > 0 && this.previousEleValue !== this.inputElement.value) {\n this.activeIndex = this.presetsItem.length - 1;\n this.isCustomRange = true;\n }\n }\n if (!isNullOrUndefined(value) && value.trim() !== '') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length > 1) {\n this.invalidValueString = null;\n var dateOptions = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var start = new Date(range[0]);\n var end = new Date(range[1]);\n var startDate = this.getStartEndDate(start, false, range, dateOptions);\n var endDate = this.getStartEndDate(end, true, range, dateOptions);\n if (!isNullOrUndefined(startDate) && !isNaN(+startDate) && !isNullOrUndefined(endDate) && !isNaN(+endDate)) {\n var prevStartVal = this.startValue;\n this.startValue = startDate;\n var prevEndVal = this.endValue;\n this.endValue = endDate;\n this.setValue();\n this.refreshControl();\n if (value !== this.previousEleValue) {\n this.changeTrigger(e);\n }\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n this.updateHiddenInput();\n // For Mobile mode, when a value is present and choose another range and click on console\n // when popup is open, two startvalues and end values are updated in the popup.\n if (this.isMobile && this.isPopupOpen()) {\n this.startValue = prevStartVal;\n this.endValue = prevEndVal;\n }\n return;\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n else {\n if (!this.strictMode) {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n if (!this.strictMode) {\n if (isNullOrUndefined(this.popupObj)) {\n this.currentDate = null;\n }\n this.previousStartValue = this.previousEndValue = null;\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(value) && value.trim() === '') {\n this.startValue = null;\n this.endValue = null;\n }\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.updateInput();\n }\n this.errorClass();\n this.changeTrigger(e);\n if (!this.preventBlur && document.activeElement !== this.inputElement) {\n this.preventFocus = false;\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n }\n this.updateHiddenInput();\n };\n DateRangePicker.prototype.getStartEndDate = function (date, isEnd, range, dateOptions) {\n if (this.depth === 'Month') {\n return this.globalize.parseDate(range[isEnd ? 1 : 0].trim(), dateOptions);\n }\n else if (this.depth === 'Year') {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n };\n DateRangePicker.prototype.clearRange = function () {\n this.previousStartValue = this.previousEndValue = null;\n this.currentDate = null;\n };\n DateRangePicker.prototype.errorClass = function () {\n var inputStr = this.inputElement.value.trim();\n if (((isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue) && inputStr !== '') ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max))\n || ((this.startValue && this.isDateDisabled(this.startValue))\n || (this.endValue && this.isDateDisabled(this.endValue)))) && inputStr !== '') {\n addClass([this.inputWrapper.container], ERROR$1);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else {\n if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], ERROR$1);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n }\n };\n DateRangePicker.prototype.keyCalendarUpdate = function (isLeftCalendar, ele, isRemoveFocus) {\n if (isRemoveFocus === void 0) { isRemoveFocus = true; }\n if (isRemoveFocus) {\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n ele = this.leftCalendar;\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n ele = this.rightCalendar;\n }\n this.updateCalendarElement(ele);\n this.table.focus();\n return ele;\n };\n DateRangePicker.prototype.navInCalendar = function (e, isLeftCalendar, leftLimit, rightLimit, ele) {\n var view = this.getViewNumber(this.currentView());\n var date;\n var min = this.min;\n var max;\n if (!isNullOrUndefined(this.maxDays) && this.isMaxDaysClicked && !isNullOrUndefined(this.startValue)) {\n max = new Date(new Date(+this.startValue).setDate(this.startValue.getDate() + (this.maxDays - 1)));\n }\n else {\n max = this.max;\n }\n switch (e.action) {\n case 'moveRight':\n date = new Date(+this.currentDate);\n this.addDay(date, 1, e, max, min);\n if (isLeftCalendar && +date === +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveLeft':\n date = new Date(+this.currentDate);\n this.addDay(date, -1, e, max, min);\n if (!isLeftCalendar) {\n if (+date === +leftLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n }\n this.keyboardNavigate(-1, view, e, max, min);\n this.keyNavigation(ele, e);\n break;\n case 'moveUp':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, -7, e, max, min);\n if (+date <= +leftLimit && !isLeftCalendar) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.keyboardNavigate(-7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n this.keyNavigation(ele, e);\n break;\n case 'moveDown':\n if (view === 0) {\n date = new Date(+this.currentDate);\n this.addDay(date, 7, e, max, min);\n if (isLeftCalendar && +date >= +rightLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.keyboardNavigate(7, view, e, max, min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n this.keyNavigation(ele, e);\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n remove(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n this.keyNavigation(ele, e);\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n ele = this.keyCalendarUpdate(false, ele, false);\n this.currentDate = this.firstCellToFocus(this.rightCalendar);\n view = this.getViewNumber(this.currentView());\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n case 'shiftTab':\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n ele = this.keyCalendarUpdate(true, ele, false);\n this.currentDate = this.firstCellToFocus(this.leftCalendar);\n this.keyboardNavigate(0, view, e, max, min);\n this.keyNavigation(ele, e);\n }\n break;\n }\n };\n DateRangePicker.prototype.firstCellToFocus = function (calendar) {\n var focusAbleEle = this.getViewNumber(this.currentView()) === 2 ? calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-year)') : calendar.children[1].firstElementChild.querySelector('td.e-cell:not(.e-week-number):not(.e-disabled):not(.e-other-month)');\n var focusEleID = focusAbleEle && focusAbleEle.id ? focusAbleEle.id.split('_')[0] : null;\n var currentFirstDay = new Date(this.currentDate.getFullYear(), this.currentDate.getMonth(), 1);\n var focusDate = focusEleID ? new Date(+focusEleID) : currentFirstDay;\n return focusDate;\n };\n DateRangePicker.prototype.keyInputHandler = function (e, value) {\n var date;\n var view = this.getViewNumber(this.currentView());\n var rightDateLimit = new Date(this.rightCalCurrentDate.getFullYear(), this.rightCalCurrentDate.getMonth(), 1);\n var leftDateLimit = new Date(this.leftCalCurrentDate.getFullYear(), this.leftCalCurrentDate.getMonth() + 1, 0);\n var ele = closest(e.target, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n var isLeftCalendar = ele.classList.contains(LEFTCALENDER);\n this.updateCalendarElement(ele);\n var selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n var focusedDate = ele.querySelector('tr td.' + FOCUSDATE);\n var startDate = ele.querySelector('tr td.' + STARTDATE);\n var endDate = ele.querySelector('tr td.' + ENDDATE);\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n var leftCalendar = closest(e.target, '.' + LEFTCALENDER);\n var rightCalendar = closest(e.target, '.' + RIGHTCALENDER);\n var presetElement = closest(e.target, '.' + PRESETS);\n if (!isNullOrUndefined(focusedDate)) {\n // eslint-disable-next-line no-self-assign\n this.currentDate = this.currentDate;\n }\n else if (!isNullOrUndefined(endDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.endValue);\n }\n else if (!isNullOrUndefined(startDate) && !this.dateDisabled) {\n this.currentDate = new Date(+this.startValue);\n }\n else if (!this.dateDisabled) {\n this.currentDate.setDate(1);\n }\n this.effect = '';\n switch (e.action) {\n case 'altUpArrow':\n if (this.isPopupOpen()) {\n this.hide(e);\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n break;\n case 'select':\n if (levelRestrict) {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : startDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED$2)) {\n this.selectRange(null, (element));\n }\n }\n else {\n if (!isNullOrUndefined(selectedDate) && !levelRestrict || !isNullOrUndefined(focusedDate)) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n }\n e.preventDefault();\n break;\n case 'controlHome':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 0, 1);\n if (!isLeftCalendar && +yearDate < +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 0, 1));\n this.keyNavigation(ele, e);\n }\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else if (!isNullOrUndefined(rightCalendar)) {\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(leftCalendar)) {\n if (this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.cancelButton.element.focus();\n }\n }\n else {\n if (!isNullOrUndefined(rightCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'controlUp':\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n this.calendarNavigation(e, this.calendarElement);\n }\n else {\n this.calendarNavigation(e, this.calendarElement);\n }\n e.preventDefault();\n break;\n case 'controlDown':\n if ((!isNullOrUndefined(selectedDate) || !isNullOrUndefined(focusedDate)) && !levelRestrict) {\n if (!isNullOrUndefined(this.value)) {\n if (this.calendarElement.classList.contains(LEFTCALENDER)) {\n value = this.startDate;\n }\n else {\n value = this.endDate;\n }\n }\n this.controlDown = e;\n this.contentClick(null, --view, (selectedDate || focusedDate), value);\n }\n e.preventDefault();\n break;\n case 'controlEnd':\n {\n var yearDate = new Date(this.currentDate.getFullYear(), 11, 31);\n if (isLeftCalendar && +yearDate > +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n _super.prototype.navigateTo.call(this, 'Month', new Date(this.currentDate.getFullYear(), 11, 31));\n this.keyNavigation(ele, e);\n }\n break;\n case 'pageUp':\n date = new Date(+this.currentDate);\n this.addMonths(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addMonths(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'pageDown':\n date = new Date(+this.currentDate);\n this.addMonths(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addMonths(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageUp':\n date = new Date(+this.currentDate);\n this.addYears(date, -1);\n if (!isLeftCalendar && +date <= +leftDateLimit) {\n ele = this.keyCalendarUpdate(true, ele);\n }\n this.addYears(this.currentDate, -1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftPageDown':\n date = new Date(+this.currentDate);\n this.addYears(date, 1);\n if (isLeftCalendar && +date >= +rightDateLimit) {\n ele = this.keyCalendarUpdate(false, ele);\n }\n this.addYears(this.currentDate, 1);\n _super.prototype.navigateTo.call(this, 'Month', this.currentDate);\n this.keyNavigation(ele, e);\n break;\n case 'shiftTab':\n if (!isNullOrUndefined(this.presetElement)) {\n this.presetElement.setAttribute('tabindex', '0');\n this.presetElement.focus();\n this.removeFocusedDate();\n }\n if (isLeftCalendar) {\n e.preventDefault();\n }\n if (this.tabKeyValidation(ele, RIGHTCALENDER)) {\n this.currentDate = new Date(+this.leftCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n case 'spacebar':\n if (this.applyButton && !this.applyButton.disabled) {\n this.applyFunction(e);\n }\n break;\n case 'tab':\n if (this.tabKeyValidation(ele, LEFTCALENDER)) {\n this.currentDate = new Date(+this.rightCalCurrentDate);\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n }\n break;\n default:\n this.navInCalendar(e, isLeftCalendar, leftDateLimit, rightDateLimit, ele);\n this.checkMinMaxDays();\n }\n this.presetHeight();\n };\n DateRangePicker.prototype.tabKeyValidation = function (ele, calendarPos) {\n var isLeftCalendar = ele.classList.contains(calendarPos);\n var rightHeader = this.rightCalendar.querySelector('.e-header');\n var leftHeader = this.leftCalendar.querySelector('.e-header');\n var isRightMonth = rightHeader ? rightHeader.classList.contains('e-month') : false;\n var isLeftMonth = leftHeader ? leftHeader.classList.contains('e-month') : false;\n var isRightYear = rightHeader ? rightHeader.classList.contains('e-year') : false;\n var isLeftYear = leftHeader ? leftHeader.classList.contains('e-year') : false;\n var isRightDecade = rightHeader ? rightHeader.classList.contains('e-decade') : false;\n var isLeftDecade = leftHeader ? leftHeader.classList.contains('e-decade') : false;\n return isLeftCalendar && (isLeftMonth || isLeftYear || isLeftDecade) && (isRightMonth || isRightYear || isRightDecade) && !this.isMobile;\n };\n DateRangePicker.prototype.keyNavigation = function (calendar, e) {\n this.bindCalendarCellEvents(calendar);\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n else {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n }\n this.updateNavIcons();\n this.calendarIconEvent();\n this.updateRange([calendar]);\n this.dateDisabled = this.isDateDisabled(this.currentDate);\n e.preventDefault();\n };\n DateRangePicker.prototype.inputHandler = function (e) {\n switch (e.action) {\n case 'altDownArrow':\n if (!this.isPopupOpen()) {\n if (this.inputElement.value === '') {\n this.clear();\n this.changeTrigger(e);\n this.clearRange();\n }\n this.show(null, e);\n this.isRangeIconClicked = false;\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.leftCalendar)) {\n this.calendarFocus();\n }\n }\n this.isKeyPopup = true;\n }\n break;\n case 'escape':\n if (this.isPopupOpen()) {\n this.hide(e);\n }\n break;\n case 'enter':\n if (document.activeElement === this.inputElement) {\n this.inputBlurHandler(e);\n this.hide(e);\n }\n break;\n case 'tab':\n if (document.activeElement === this.inputElement && this.isPopupOpen()) {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n DateRangePicker.prototype.bindCalendarCellEvents = function (calendar) {\n var tdCells;\n if (calendar) {\n tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n }\n else {\n tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n }\n for (var _i = 0, tdCells_1 = tdCells; _i < tdCells_1.length; _i++) {\n var cell = tdCells_1[_i];\n EventHandler.clearEvents(cell);\n var disabledCell = cell.classList.contains(DISABLED$2) || cell.classList.contains(DATEDISABLED);\n if (!disabledCell && !cell.classList.contains(WEEKNUMBER$2)) {\n if (!this.isMobile) {\n EventHandler.add(cell, 'mouseover', this.hoverSelection, this);\n }\n EventHandler.add(cell, 'mousedown', this.selectRange, this);\n }\n }\n };\n DateRangePicker.prototype.removeFocusedDate = function () {\n var isDate = !isNullOrUndefined(this.startValue) || !isNullOrUndefined(this.endValue);\n var focusedDate = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' .' + FOCUSDATE);\n for (var _i = 0, focusedDate_1 = focusedDate; _i < focusedDate_1.length; _i++) {\n var ele = focusedDate_1[_i];\n var today = new Date();\n var eleDate = this.getIdValue(null, ele);\n if ((this.depth === 'Month' && this.currentView() === 'Month' &&\n (!ele.classList.contains(TODAY$2) || (ele.classList.contains(TODAY$2) && isDate)))\n || (this.depth === 'Year' && this.currentView() === 'Year' &&\n ((!this.isSameMonth(today, eleDate) && !this.isSameYear(today, eleDate)) || isDate))\n || (this.depth === 'Decade' && this.currentView() === 'Decade' &&\n (!this.isSameYear(today, eleDate) || isDate))) {\n ele.classList.remove(FOCUSDATE);\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(ENDDATE)) {\n ele.removeAttribute('aria-label');\n }\n }\n }\n };\n DateRangePicker.prototype.hoverSelection = function (event, element) {\n var currentElement = element || event.currentTarget;\n var currentDate = this.getIdValue(null, currentElement);\n if (!isNullOrUndefined(this.startValue) && +this.startValue >= +this.min && +this.startValue <= +this.max) {\n if ((!this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)\n && isNullOrUndefined(this.endValue) && isNullOrUndefined(this.startValue))\n || (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td');\n for (var _i = 0, tdCells_2 = tdCells; _i < tdCells_2.length; _i++) {\n var ele = tdCells_2[_i];\n var isDisabledCell = (!ele.classList.contains(DISABLED$2) || ele.classList.contains(DATEDISABLED));\n if (!ele.classList.contains(WEEKNUMBER$2) && isDisabledCell) {\n var eleDate = this.getIdValue(null, ele);\n var startDateValue = new Date(+this.startValue);\n var eleDateValue = new Date(+eleDate);\n if (eleDateValue.setHours(0, 0, 0, 0) >= startDateValue.setHours(0, 0, 0, 0) && +eleDate <= +currentDate) {\n addClass([ele], RANGEHOVER);\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.isSameStartEnd = function (startVal, endVal) {\n var isSame = false;\n if (this.depth === 'Month') {\n if ((startVal).setHours(0, 0, 0, 0) === (endVal).setHours(0, 0, 0, 0)) {\n isSame = true;\n }\n }\n else if (this.depth === 'Year') {\n if ((startVal.getFullYear() === endVal.getFullYear()) &&\n (startVal.getMonth() === endVal.getMonth())) {\n isSame = true;\n }\n }\n else if (this.depth === 'Decade') {\n if (startVal.getFullYear() === endVal.getFullYear()) {\n isSame = true;\n }\n }\n return isSame;\n };\n DateRangePicker.prototype.updateRange = function (elementCollection) {\n if (!isNullOrUndefined(this.startValue)) {\n for (var _i = 0, elementCollection_1 = elementCollection; _i < elementCollection_1.length; _i++) {\n var calendar = elementCollection_1[_i];\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n for (var _a = 0, tdCells_3 = tdCells; _a < tdCells_3.length; _a++) {\n var ele = tdCells_3[_a];\n if (!ele.classList.contains(WEEKNUMBER$2) && !ele.classList.contains(DISABLED$2)) {\n var eleDate = this.getIdValue(null, ele);\n var eleDateValue = this.getIdValue(null, ele);\n if (!isNullOrUndefined(this.endValue)) {\n if (this.currentView() === this.depth &&\n +eleDateValue.setHours(0, 0, 0, 0) >= +new Date(+this.startValue).setHours(0, 0, 0, 0)\n && +eleDateValue.setHours(0, 0, 0, 0) <= +new Date(+this.endValue).setHours(0, 0, 0, 0) &&\n !this.isSameStartEnd(new Date(+this.startValue), new Date(+this.endValue)) &&\n +new Date(+this.startValue).setHours(0, 0, 0, 0) >= +this.min\n && +new Date(+this.endValue).setHours(0, 0, 0, 0) <= +this.max\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], RANGEHOVER);\n }\n }\n else {\n removeClass([ele], [RANGEHOVER]);\n }\n if (ele.classList.contains(SELECTED$3) && ele.classList.contains(ENDDATE) &&\n (+eleDateValue !== +this.endValue)) {\n removeClass([ele], [SELECTED$3]);\n removeClass([ele], [ENDDATE]);\n }\n if (ele.classList.contains(RANGEHOVER) && (+eleDateValue > +this.endValue)) {\n removeClass([ele], [RANGEHOVER]);\n }\n if (!ele.classList.contains(OTHERMONTH$2)) {\n var startDateValue = new Date(+this.startValue);\n var eleDateValue_1 = new Date(+eleDate);\n if (this.currentView() === this.depth &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +startDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) >= +startDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [STARTDATE, SELECTED$3]);\n this.addSelectedAttributes(ele, this.startValue, true);\n }\n var endDateValue = new Date(+this.endValue);\n if (this.currentView() === 'Year') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), eleDateValue_1.getMonth() + 1, 0);\n }\n else if (this.currentView() === 'Decade') {\n eleDateValue_1 = new Date(eleDateValue_1.getFullYear(), 11, 31);\n }\n if (this.currentView() === this.depth &&\n !isNullOrUndefined(this.endValue) &&\n +eleDateValue_1.setHours(0, 0, 0, 0) === +endDateValue.setHours(0, 0, 0, 0)\n && +eleDateValue_1.setHours(0, 0, 0, 0) <= +endDateValue.setHours(0, 0, 0, 0) &&\n +this.startValue >= +this.min\n && !this.inputWrapper.container.classList.contains('e-error')\n && !(this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue))) {\n addClass([ele], [ENDDATE, SELECTED$3]);\n this.addSelectedAttributes(ele, this.startValue, false);\n }\n if (+eleDate === +this.startValue && !isNullOrUndefined(this.endValue) && +eleDate === +this.endValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n }\n }\n }\n }\n };\n DateRangePicker.prototype.checkMinMaxDays = function () {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n if (!this.isMobile) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + LEFTCALENDER));\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + RIGHTCALENDER));\n }\n else {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n }\n };\n DateRangePicker.prototype.rangeArgs = function (e) {\n var inputValue;\n var range;\n var startDate = !isNullOrUndefined(this.startValue) ?\n this.globalize.formatDate(this.startValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n var endDate = !isNullOrUndefined(this.endValue) ?\n this.globalize.formatDate(this.endValue, {\n format: this.formatString, type: 'date', skeleton: 'yMd'\n }) : null;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n inputValue = startDate + ' ' + this.separator + ' ' + endDate;\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n }\n else {\n inputValue = '';\n range = 0;\n }\n var args = {\n value: this.value,\n startDate: this.startValue,\n endDate: this.endValue,\n daySpan: range,\n event: e || null,\n element: this.element,\n isInteracted: !isNullOrUndefined(e),\n text: inputValue\n };\n return args;\n };\n DateRangePicker.prototype.otherMonthSelect = function (ele, isStartDate, sameDate) {\n var value = +this.getIdValue(null, ele);\n var dateIdString = '*[id^=\"/id\"]:not(.e-other-month)'.replace('/id', '' + value);\n var tdCell = this.popupObj && this.popupObj.element.querySelector(dateIdString);\n if (!isNullOrUndefined(tdCell)) {\n if (isStartDate) {\n addClass([tdCell], [STARTDATE, SELECTED$3]);\n this.addSelectedAttributes(tdCell, this.startValue, true);\n }\n else {\n addClass([tdCell], [ENDDATE, SELECTED$3]);\n this.addSelectedAttributes(tdCell, this.endValue, true);\n }\n if (sameDate) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n }\n };\n DateRangePicker.prototype.selectRange = function (event, element) {\n var leftCalendar;\n var rightCalendar;\n if (event) {\n event.preventDefault();\n }\n var date = isNullOrUndefined(event) ? this.getIdValue(null, element)\n : this.getIdValue(event, null);\n var y = date.getFullYear();\n var m = date.getMonth();\n var firstDay = new Date(y, m, 1);\n var lastDay = new Date(y, m + 1, 0);\n var firstMonth = new Date(y, 0, 1);\n var lastMonth = new Date(y, 11, 31);\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n if (!this.isMobile || this.isMobile && !this.endButton.element.classList.contains(ACTIVE$1)) {\n this.removeSelection();\n }\n }\n else if (this.isMobile && this.startButton.element.classList.contains(ACTIVE$1)) {\n this.removeSelection();\n }\n var ele = element || event.currentTarget;\n if (isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.previousStartValue)) {\n date.setHours(this.previousStartValue.getHours());\n date.setMinutes(this.previousStartValue.getMinutes());\n date.setSeconds(this.previousStartValue.getSeconds());\n }\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.endValue = null;\n this.setValue();\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH$2)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n this.applyButton.disabled = true;\n this.applyButton.element.disabled = true;\n if (this.isMobile) {\n this.endButton.element.classList.add(ACTIVE$1);\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.removeAttribute('disabled');\n this.selectableDates();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else {\n if (+date === +this.startValue || +date > +this.startValue) {\n if (+date === +this.startValue && !isNullOrUndefined(this.minDays) && this.minDays > 1) {\n return;\n }\n this.endValue = null;\n this.setValue();\n if (this.isMobile || element) {\n this.hoverSelection(event, element);\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n date.setHours(this.previousEndValue.getHours());\n date.setMinutes(this.previousEndValue.getMinutes());\n date.setSeconds(this.previousEndValue.getSeconds());\n }\n this.endValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? lastDay : lastMonth;\n this.setValue();\n var endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n if (this.isMobile) {\n this.startButton.element.classList.remove(ACTIVE$1);\n this.endButton.element.classList.add(ACTIVE$1);\n for (var _i = 0, endEle_1 = endEle; _i < endEle_1.length; _i++) {\n var ele_1 = endEle_1[_i];\n ele_1.removeAttribute('aria-label');\n if (!ele_1.classList.contains(STARTDATE)) {\n ele_1.setAttribute('aria-selected', 'false');\n removeClass([ele_1], [ENDDATE, SELECTED$3]);\n }\n else {\n this.addSelectedAttributes(ele_1, this.startValue, true);\n removeClass([ele_1], [ENDDATE]);\n }\n }\n }\n addClass([ele], ENDDATE);\n if (+this.endValue === +this.startValue) {\n this.addSelectedAttributes(ele, this.endValue, false, true);\n }\n else {\n this.addSelectedAttributes(ele, this.endValue, false);\n }\n if (ele.classList.contains(OTHERMONTH$2)) {\n if (+this.endValue === +this.startValue) {\n this.otherMonthSelect(ele, false, true);\n }\n else {\n this.otherMonthSelect(ele, false);\n }\n }\n endEle = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, endEle_2 = endEle; _a < endEle_2.length; _a++) {\n var ele_2 = endEle_2[_a];\n if (ele_2.classList.contains(STARTDATE)) {\n removeClass([ele_2], [RANGEHOVER]);\n }\n }\n this.applyButton.disabled = false;\n this.applyButton.element.disabled = false;\n if (!this.isMobile) {\n this.removeClassDisabled();\n }\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.trigger('select', this.rangeArgs(event));\n }\n else if (+date < +this.startValue) {\n this.removeClassDisabled();\n this.startValue = (this.depth === 'Month') ? new Date(this.checkValue(date)) :\n (this.depth === 'Year') ? firstDay : firstMonth;\n this.setValue();\n this.removeSelectedAttributes();\n removeClass(this.popupObj.element.querySelectorAll('.' + STARTDATE), [STARTDATE, SELECTED$3]);\n addClass([ele], STARTDATE);\n this.addSelectedAttributes(ele, this.startValue, true);\n if (ele.classList.contains(OTHERMONTH$2)) {\n this.otherMonthSelect(ele, true);\n }\n this.checkMinMaxDays();\n }\n }\n if (event) {\n leftCalendar = closest(event.target, '.' + LEFTCALENDER);\n }\n if (!isNullOrUndefined(leftCalendar)) {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (event) {\n rightCalendar = event && closest(event.target, '.' + RIGHTCALENDER);\n }\n if (!isNullOrUndefined(rightCalendar)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n addClass([ele], SELECTED$3);\n this.calendarIconEvent();\n this.updateHeader();\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.selectableDates = function () {\n if (!isNullOrUndefined(this.startValue)) {\n var tdCells = this.calendarElement.querySelectorAll('.' + CALENDAR + ' td');\n var isStartDate = false;\n if (this.currentView() === this.depth) {\n for (var _i = 0, tdCells_4 = tdCells; _i < tdCells_4.length; _i++) {\n var ele = tdCells_4[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER$2)) {\n if (!ele.classList.contains(DISABLED$2)) {\n var eleDate = this.getIdValue(null, ele);\n if (+eleDate < +this.startValue) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.clearEvents(ele);\n continue;\n }\n else {\n break;\n }\n }\n }\n if (ele.classList.contains(STARTDATE) && !ele.classList.contains(OTHERMONTH$2)) {\n isStartDate = true;\n break;\n }\n }\n if (isStartDate) {\n if (!this.previousIcon.classList.contains(DISABLED$2)) {\n addClass([this.previousIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n }\n else {\n for (var _a = 0, tdCells_5 = tdCells; _a < tdCells_5.length; _a++) {\n var ele = tdCells_5[_a];\n var startMonth = this.startValue.getMonth();\n var startYear = this.startValue.getFullYear();\n var element = this.getIdValue(null, ele);\n if (!this.startButton.element.classList.contains(ACTIVE$1) && ((this.currentView() === 'Year' &&\n (element.getMonth() < startMonth) && (element.getFullYear() <= startYear))\n || (this.currentView() === 'Decade' && (element.getMonth() <= startMonth) &&\n (element.getFullYear() < startYear)))) {\n addClass([ele], [DISABLED$2]);\n }\n else {\n break;\n }\n }\n if (tdCells[0].classList.contains(DISABLED$2)) {\n this.previousIconHandler(true);\n }\n else if (tdCells[tdCells.length - 1].classList.contains(DISABLED$2)) {\n this.nextIconHandler(true);\n }\n }\n }\n };\n DateRangePicker.prototype.updateMinMaxDays = function (calendar) {\n if ((!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) ||\n (this.isMobile && this.endButton.element.classList.contains(ACTIVE$1))) {\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) || (!isNullOrUndefined(this.maxDays) && this.maxDays > 0)) {\n var startValueSelected = this.removeTimeValueFromDate(this.startValue);\n var minDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.minDays - 1)));\n var maxDate = new Date(new Date(+startValueSelected).setDate(startValueSelected.getDate() + (this.maxDays - 1)));\n minDate = (!isNullOrUndefined(this.minDays) && this.minDays > 0) ? minDate : null;\n maxDate = (!isNullOrUndefined(this.maxDays) && this.maxDays > 0) ? maxDate : null;\n if (this.currentView() === 'Year') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear(), minDate.getMonth(), 0);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), maxDate.getMonth(), 1);\n }\n else if (this.currentView() === 'Decade') {\n minDate = isNullOrUndefined(minDate) ? null : new Date(minDate.getFullYear() - 1, 11, 1);\n maxDate = isNullOrUndefined(maxDate) ? null : new Date(maxDate.getFullYear(), 0, 1);\n }\n var tdCells = calendar.querySelectorAll('.' + CALENDAR + ' td');\n var maxEle = void 0;\n for (var _i = 0, tdCells_6 = tdCells; _i < tdCells_6.length; _i++) {\n var ele = tdCells_6[_i];\n if (!ele.classList.contains(STARTDATE) && !ele.classList.contains(WEEKNUMBER$2)) {\n var eleDate = this.getIdValue(null, ele);\n eleDate = this.removeTimeValueFromDate(eleDate);\n if (!isNullOrUndefined(minDate) && +eleDate === +minDate && ele.classList.contains(DISABLED$2)) {\n minDate.setDate(minDate.getDate() + 1);\n }\n if (!ele.classList.contains(DISABLED$2)) {\n if (+eleDate <= +startValueSelected) {\n continue;\n }\n if (!isNullOrUndefined(minDate) && +eleDate < +minDate) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.clearEvents(ele);\n }\n if (!isNullOrUndefined(maxDate) && +eleDate > +maxDate) {\n addClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n this.isMaxDaysClicked = true;\n EventHandler.clearEvents(ele);\n if (isNullOrUndefined(maxEle) && !ele.classList.contains(OTHERMONTH$2)) {\n maxEle = ele;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(maxEle)) {\n if (this.isMobile) {\n if (!this.nextIcon.classList.contains(DISABLED$2)) {\n addClass([this.nextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n var calendar_1 = closest(maxEle, '.' + RIGHTCALENDER);\n calendar_1 = isNullOrUndefined(calendar_1) ? this.leftCalendar : calendar_1;\n var isLeftCalendar = calendar_1.classList.contains(LEFTCALENDER);\n if (!isLeftCalendar) {\n if (!this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n if (!this.rightCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (!this.leftCalNextIcon.classList.contains(DISABLED$2)) {\n addClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (!this.rightCalPrevIcon.classList.contains(DISABLED$2)) {\n addClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n }\n }\n }\n }\n else {\n this.isMaxDaysClicked = false;\n }\n };\n DateRangePicker.prototype.removeTimeValueFromDate = function (value) {\n var dateValue = new Date(value.getFullYear(), value.getMonth(), value.getDate());\n return dateValue;\n };\n DateRangePicker.prototype.removeClassDisabled = function () {\n var tdCells = this.popupObj.element.querySelectorAll('.' + CALENDAR + ' td' + '.' + DATEDISABLED);\n for (var _i = 0, tdCells_7 = tdCells; _i < tdCells_7.length; _i++) {\n var ele = tdCells_7[_i];\n if (ele.classList.contains(DATEDISABLED)) {\n removeClass([ele], [DATEDISABLED, DISABLED$2, OVERLAY$2]);\n EventHandler.add(ele, 'click', this.selectRange, this);\n if (!this.isMobile) {\n EventHandler.add(ele, 'mouseover', this.hoverSelection, this);\n }\n }\n }\n if (this.isMobile) {\n if (this.nextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.nextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.previousIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.previousIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n else {\n if (this.rightCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.rightCalPrevIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.rightCalPrevIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n if (this.leftCalNextIcon.classList.contains(ICONDISABLED)) {\n removeClass([this.leftCalNextIcon], [ICONDISABLED, DISABLED$2, OVERLAY$2]);\n }\n }\n };\n DateRangePicker.prototype.updateHeader = function () {\n var format = { type: 'date', skeleton: 'yMMMd' };\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = range.toString() + ' ' + this.l10n.getConstant('days');\n }\n else {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n if (!this.isMobile) {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n if (!isNullOrUndefined(this.startValue)) {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.textContent = this.globalize.formatDate(this.startValue, format);\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n this.endButton.element.textContent = this.globalize.formatDate(this.endValue, format);\n }\n else {\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n }\n }\n if ((this.isDateDisabled(this.startValue) || this.isDateDisabled(this.endValue)) ||\n ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue))\n && +this.startValue > +this.endValue))) {\n if (!this.isMobile) {\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n this.popupObj.element.querySelector('.' + STARTLABEL).textContent = this.l10n.getConstant('startLabel');\n this.popupObj.element.querySelector('.' + ENDLABEL).textContent = this.l10n.getConstant('endLabel');\n }\n else {\n this.startButton.element.textContent = this.l10n.getConstant('startLabel');\n this.endButton.element.textContent = this.l10n.getConstant('endLabel');\n this.popupObj.element.querySelector('.' + DAYSPAN).textContent = this.l10n.getConstant('selectedDays');\n }\n }\n if (this.popupObj.element.querySelector('#custom_range')) {\n this.popupObj.element.querySelector('#custom_range').textContent =\n this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange') : 'Custom Range';\n }\n };\n DateRangePicker.prototype.removeSelection = function () {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.removeSelectedAttributes();\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED$3).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED$3), [STARTDATE, ENDDATE, SELECTED$3]);\n }\n if (this.popupObj.element.querySelectorAll('.' + FOCUSDATE).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + FOCUSDATE), FOCUSDATE);\n }\n if (this.popupObj.element.querySelectorAll('.' + RANGEHOVER).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + RANGEHOVER), [RANGEHOVER]);\n }\n }\n };\n DateRangePicker.prototype.addSelectedAttributes = function (ele, date, isStartDate, sameDate) {\n if (ele) {\n var title = this.globalize.formatDate(date, { type: 'date', skeleton: 'full' });\n if (!isNullOrUndefined(sameDate) && sameDate) {\n ele.setAttribute('aria-label', 'The current start and end date is ' + '' + title);\n }\n else {\n ele.setAttribute('aria-label', 'The current ' + (isStartDate ? 'start' : 'end') + ' date is ' + '' + title);\n }\n ele.setAttribute('aria-selected', 'true');\n }\n };\n DateRangePicker.prototype.removeSelectedAttributes = function () {\n if (this.popupObj) {\n var start = this.popupObj.element.querySelectorAll('.' + STARTDATE);\n for (var _i = 0, start_1 = start; _i < start_1.length; _i++) {\n var ele = start_1[_i];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n var end = this.popupObj.element.querySelectorAll('.' + ENDDATE);\n for (var _a = 0, end_1 = end; _a < end_1.length; _a++) {\n var ele = end_1[_a];\n ele.setAttribute('aria-selected', 'false');\n ele.removeAttribute('aria-label');\n }\n }\n };\n DateRangePicker.prototype.updateCalendarElement = function (calendar) {\n if (calendar.classList.contains(LEFTCALENDER)) {\n this.calendarElement = this.leftCalendar;\n this.currentDate = this.leftCalCurrentDate;\n this.previousIcon = this.leftCalPrevIcon;\n this.nextIcon = this.leftCalNextIcon;\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.currentDate = this.rightCalCurrentDate;\n this.previousIcon = this.rightCalPrevIcon;\n this.nextIcon = this.rightCalNextIcon;\n }\n this.contentElement = calendar.querySelector('.' + CONTENT$1);\n this.tableBodyElement = select('.' + CONTENT$1 + ' tbody', calendar);\n this.table = calendar.querySelector('.' + CONTENT$1).getElementsByTagName('table')[0];\n this.headerTitleElement = calendar.querySelector('.' + HEADER$1 + ' .' + TITLE$1);\n this.headerElement = calendar.querySelector('.' + HEADER$1);\n };\n DateRangePicker.prototype.navPrevMonth = function (e) {\n e.preventDefault();\n var ele = closest(e.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(e.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigatePrevious(e);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.deviceNavigation = function (ele) {\n this.deviceCalendarEvent();\n this.updateRange([this.popupObj.element.querySelector('.' + CALENDAR)]);\n if (this.endButton.element.classList.contains(ACTIVE$1)) {\n this.updateMinMaxDays(this.popupObj.element.querySelector('.' + CALENDAR));\n }\n if (this.endButton.element.classList.contains(ACTIVE$1)) {\n this.selectableDates();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n };\n DateRangePicker.prototype.updateControl = function (calendar, customDate) {\n if (customDate === void 0) { customDate = null; }\n if (calendar.classList.contains(RIGHTCALENDER)) {\n this.rightCalCurrentDate = new Date(+(customDate ? customDate : this.currentDate));\n }\n else {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n }\n this.calendarIconEvent();\n if ((((this.depth === 'Month')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-month')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-month'))\n || ((this.depth === 'Year')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-year')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-year'))\n || ((this.depth === 'Decade')\n && this.leftCalendar.querySelector('.e-content').classList.contains('e-decade')\n && this.rightCalendar.querySelector('.e-content').classList.contains('e-decade')))\n || this.isMobile) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange([calendar]);\n };\n DateRangePicker.prototype.navNextMonth = function (event) {\n event.preventDefault();\n var ele = closest(event.target, '.' + LEFTCALENDER);\n ele = isNullOrUndefined(ele) ? closest(event.target, '.' + RIGHTCALENDER) : ele;\n this.updateCalendarElement(ele);\n this.navigateNext(event);\n if (!isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.updateMinMaxDays(ele);\n }\n this.updateControl(ele);\n };\n DateRangePicker.prototype.isPopupOpen = function () {\n if (!isNullOrUndefined(this.popupObj) && this.popupObj.element.classList.contains(POPUP$1)) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.createRangeHeader = function () {\n var labelContainer = this.createElement('div', { className: STARTENDCONTAINER });\n if (!this.isMobile) {\n var startLabel = this.createElement('a', { className: STARTLABEL });\n var endLabel = this.createElement('a', { className: ENDLABEL });\n var changeIcon = this.createElement('span', { className: CHANGEICON });\n attributes(startLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'Start Date', 'role': 'button' });\n attributes(endLabel, { 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'End Date', 'role': 'button' });\n labelContainer.appendChild(startLabel);\n labelContainer.appendChild(changeIcon);\n labelContainer.appendChild(endLabel);\n startLabel.textContent = this.l10n.getConstant('startLabel');\n endLabel.textContent = this.l10n.getConstant('endLabel');\n }\n else {\n var endBtn = this.createElement('button', { className: ENDBUTTON });\n var startBtn = this.createElement('button', { className: STARTBUTTON });\n this.startButton = new Button({ content: this.l10n.getConstant('startLabel') }, startBtn);\n this.endButton = new Button({ content: this.l10n.getConstant('endLabel') }, endBtn);\n labelContainer.appendChild(startBtn);\n labelContainer.appendChild(endBtn);\n }\n return labelContainer;\n };\n DateRangePicker.prototype.disableInput = function () {\n if (this.strictMode) {\n if (!isNullOrUndefined(this.previousStartValue) && !isNullOrUndefined(this.previousEndValue)) {\n this.startValue = this.previousStartValue;\n this.endValue = this.previousEndValue;\n this.setValue();\n this.updateInput();\n }\n }\n else {\n this.updateInput();\n this.clearRange();\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n this.errorClass();\n }\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n this.bindEvents();\n };\n DateRangePicker.prototype.validateMinMax = function () {\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (!(this.min <= this.max)) {\n this.disableInput();\n return;\n }\n if (!isNullOrUndefined(this.minDays) && !isNullOrUndefined(this.maxDays)) {\n if (this.maxDays > 0 && this.minDays > 0 && (this.minDays > this.maxDays)) {\n this.maxDays = null;\n }\n }\n if (!isNullOrUndefined(this.minDays) && this.minDays < 0) {\n this.minDays = null;\n }\n if (!isNullOrUndefined(this.maxDays) && this.maxDays < 0) {\n this.maxDays = null;\n }\n };\n DateRangePicker.prototype.validateRangeStrict = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (+this.startValue <= +this.min) {\n this.startValue = this.min;\n this.setValue();\n }\n else if (+this.startValue >= +this.min && +this.startValue >= +this.max) {\n this.startValue = this.max;\n }\n }\n if (!isNullOrUndefined(this.endValue)) {\n if (+this.endValue > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else if (+this.endValue < +this.min) {\n this.endValue = this.min;\n this.setValue();\n }\n }\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateRange = function () {\n this.validateMinMaxDays();\n };\n DateRangePicker.prototype.validateMinMaxDays = function () {\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n var range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if ((!isNullOrUndefined(this.minDays) && this.minDays > 0) && !(range >= this.minDays)) {\n if (this.strictMode) {\n var date = new Date(+this.startValue);\n date.setDate(date.getDate() + (this.minDays - 1));\n if (+date > +this.max) {\n this.endValue = this.max;\n this.setValue();\n }\n else {\n this.endValue = date;\n this.setValue();\n }\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n if ((!isNullOrUndefined(this.maxDays) && this.maxDays > 0) && !(range <= this.maxDays)) {\n if (this.strictMode) {\n this.endValue = new Date(+this.startValue);\n this.endValue.setDate(this.endValue.getDate() + (this.maxDays - 1));\n this.setValue();\n }\n else {\n this.startValue = null;\n this.endValue = null;\n this.setValue();\n }\n }\n }\n };\n DateRangePicker.prototype.renderCalendar = function () {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(CALENDAR);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL$1);\n }\n attributes(this.calendarElement, { 'data-role': 'calendar' });\n _super.prototype.createHeader.call(this);\n _super.prototype.createContent.call(this);\n };\n DateRangePicker.prototype.isSameMonth = function (start, end) {\n if (start.getMonth() === end.getMonth() && start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameYear = function (start, end) {\n if (start.getFullYear() === end.getFullYear()) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.isSameDecade = function (start, end) {\n var startYear = start.getFullYear();\n var endYear = end.getFullYear();\n if ((startYear - (startYear % 10)) === (endYear - (endYear % 10))) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.startMonthCurrentDate = function () {\n if (this.isSameMonth(this.min, this.max) || +this.currentDate > +this.max || this.isSameMonth(this.currentDate, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (this.currentDate < this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n };\n DateRangePicker.prototype.selectNextMonth = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameMonth(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() + 1);\n return;\n }\n if ((!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setDate(1);\n var month = this.currentDate.getMonth() + 1;\n this.currentDate.setMonth(month);\n }\n };\n DateRangePicker.prototype.selectNextYear = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameYear(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n this.currentDate.setMonth(0);\n var yr = this.currentDate.getFullYear() + 1;\n this.currentDate.setFullYear(yr);\n return;\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setMonth(0);\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 1);\n }\n };\n DateRangePicker.prototype.selectNextDecade = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !this.isSameDecade(this.endValue, this.currentDate)\n && !this.isDateDisabled(this.endValue) && !this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(+this.endValue);\n }\n else {\n var decyr = this.currentDate.getFullYear() + 10;\n this.currentDate.setFullYear(decyr);\n return;\n }\n if (((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)\n || (!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.currentDate.setFullYear(this.currentDate.getFullYear() + 10);\n }\n };\n DateRangePicker.prototype.selectStartMonth = function () {\n if (!isNullOrUndefined(this.startValue)) {\n if (!isNullOrUndefined(this.max) && this.isSameMonth(this.startValue, this.max)) {\n this.currentDate = new Date(+this.max);\n this.currentDate.setDate(1);\n this.currentDate.setMonth(this.currentDate.getMonth() - 1);\n }\n else if (!(this.startValue >= this.min && this.startValue <= this.max)\n || this.isDateDisabled(this.startValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n else {\n this.currentDate = new Date(+this.startValue);\n }\n }\n else {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n this.startMonthCurrentDate();\n }\n if ((!isNullOrUndefined(this.endValue) && +this.endValue > +this.max)\n || (!isNullOrUndefined(this.startValue) && +this.startValue < +this.min)\n || ((!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) && +this.startValue > +this.endValue)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.startMonthCurrentDate();\n };\n DateRangePicker.prototype.createCalendar = function () {\n var calendarContainer = this.createElement('div', { className: CALENDARCONTAINER });\n if (!this.isMobile) {\n this.selectStartMonth();\n this.renderCalendar();\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.calendarElement.classList.add(LEFTCALENDER);\n this.leftCalPrevIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + PREVICON$1);\n this.leftCalNextIcon = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + NEXTICON$1);\n this.leftTitle = this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + TITLE$1);\n remove(this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1).appendChild(this.leftCalNextIcon);\n this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1).appendChild(this.leftCalPrevIcon);\n prepend([this.leftCalPrevIcon], this.calendarElement.querySelector('.' + LEFTCALENDER + ' .' + HEADER$1));\n this.leftCalendar = this.calendarElement;\n var leftContainer = this.createElement('div', { className: LEFTCONTAINER });\n var rightContainer = this.createElement('div', { className: RIGHTCONTAINER });\n leftContainer.appendChild(this.leftCalendar);\n calendarContainer.appendChild(leftContainer);\n if (!this.isMobile) {\n EventHandler.add(this.leftTitle, 'click', this.leftNavTitle, this);\n }\n if (this.start === 'Month') {\n this.selectNextMonth();\n }\n if (this.start === 'Year') {\n this.selectNextYear();\n }\n if (this.start === 'Decade') {\n this.selectNextDecade();\n }\n this.renderCalendar();\n this.rightCalCurrentDate = new Date(+this.currentDate);\n addClass([this.calendarElement], RIGHTCALENDER);\n this.rightCalendar = this.calendarElement;\n removeClass([this.leftCalendar && this.leftCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n removeClass([this.rightCalendar && this.rightCalendar.querySelector('.e-content tbody')], 'e-zoomin');\n this.rightCalPrevIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + PREVICON$1);\n this.rightCalNextIcon = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + NEXTICON$1);\n this.rightTitle = this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + TITLE$1);\n remove(this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('table').setAttribute('tabindex', '0');\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1).appendChild(this.rightCalNextIcon);\n this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1).appendChild(this.rightCalPrevIcon);\n prepend([this.rightCalPrevIcon], this.calendarElement.querySelector('.' + RIGHTCALENDER + ' .' + HEADER$1));\n rightContainer.appendChild(this.rightCalendar);\n calendarContainer.appendChild(rightContainer);\n if (!this.isMobile) {\n EventHandler.add(this.rightTitle, 'click', this.rightNavTitle, this);\n }\n }\n else {\n if (!isNullOrUndefined(this.startValue)) {\n this.currentDate = new Date(+this.startValue);\n }\n _super.prototype.validateDate.call(this);\n _super.prototype.minMaxUpdate.call(this);\n _super.prototype.render.call(this);\n var prevIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + PREVICON$1);\n var nextIcon = this.calendarElement.querySelector('.' + CALENDAR + ' .' + NEXTICON$1);\n remove(this.calendarElement.querySelector('.' + CALENDAR + ' .' + ICONCONTAINER$1));\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1).appendChild(nextIcon);\n this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1).appendChild(prevIcon);\n prepend([prevIcon], this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1));\n this.deviceCalendar = this.calendarElement;\n calendarContainer.appendChild(this.calendarElement);\n this.headerTitleElement = this.calendarElement.querySelector('.' + CALENDAR + ' .' + HEADER$1 + ' .' + TITLE$1);\n }\n return calendarContainer;\n };\n DateRangePicker.prototype.leftNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.leftCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.calendarNavigation = function (e, element) {\n this.table = element.querySelector('table');\n this.headerTitleElement = element.querySelector('.e-title');\n this.tableBodyElement = element.querySelector('tbody');\n this.tableHeadElement = element.querySelector('thead');\n this.contentElement = element.querySelector('.e-content');\n this.updateCalendarElement(element);\n _super.prototype.navigateTitle.call(this, e);\n this.updateNavIcons();\n };\n DateRangePicker.prototype.rightNavTitle = function (e) {\n if (this.isPopupOpen()) {\n this.calendarElement = this.rightCalendar;\n this.calendarNavigation(e, this.calendarElement);\n }\n };\n DateRangePicker.prototype.clickEventEmitter = function (e) {\n if (!this.isMobile) {\n if (closest(e.target, '.e-calendar.e-left-calendar')) {\n this.calendarElement = this.leftCalendar;\n this.updateCalendarElement(this.leftCalendar);\n }\n else {\n this.calendarElement = this.rightCalendar;\n this.updateCalendarElement(this.rightCalendar);\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n * @private\n * @hidden\n */\n DateRangePicker.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n DateRangePicker.prototype.getCalendarView = function (view) {\n if (view === 'Year') {\n return 'Year';\n }\n else if (view === 'Decade') {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n DateRangePicker.prototype.navigatedEvent = function (e) {\n this.trigger('navigated', this.navigatedArgs);\n if (!isNullOrUndefined(this.popupObj)) {\n var element = void 0;\n var view = this.getCalendarView(this.currentView());\n if (this.isMobile) {\n if (view === this.depth) {\n this.bindCalendarCellEvents();\n this.deviceNavigation();\n this.removeFocusedDate();\n this.checkMinMaxDays();\n }\n else {\n this.selectableDates();\n }\n }\n else {\n if (!this.isMobile && view === this.depth) {\n element = this.calendarElement.classList.contains('e-left-calendar') ? this.leftCalendar : this.rightCalendar;\n if (element === this.leftCalendar && ((e && !e.currentTarget.children[0].classList.contains('e-icons'))\n || (!isNullOrUndefined(this.controlDown)))) {\n this.leftCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.leftCalCurrentDate;\n this.updateCalendarElement(this.leftCalendar);\n this.updateControl(this.leftCalendar);\n this.updateCalendarElement(this.rightCalendar);\n _super.prototype.navigateTo.call(this, view, this.rightCalCurrentDate);\n var customDate = this.rightCalCurrentDate ? this.rightCalCurrentDate : this.currentDate;\n this.updateControl(this.rightCalendar, customDate);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n else if (e && !e.currentTarget.children[0].classList.contains('e-icons')\n || (!isNullOrUndefined(this.controlDown))) {\n this.rightCalCurrentDate = new Date(+this.currentDate);\n this.effect = '';\n this.currentDate = this.rightCalCurrentDate;\n this.updateCalendarElement(this.rightCalendar);\n this.updateControl(this.rightCalendar);\n this.updateCalendarElement(this.leftCalendar);\n if (this.startValue && isNullOrUndefined(this.endValue)) {\n if (view === 'Month' && this.startValue.getMonth() < this.rightCalCurrentDate.getMonth() &&\n this.startValue.getFullYear() <= this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else if (view === 'Year' && this.startValue.getFullYear() < this.rightCalCurrentDate.getFullYear()) {\n _super.prototype.navigateTo.call(this, view, new Date(+this.startValue));\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n }\n else {\n _super.prototype.navigateTo.call(this, view, this.leftCalCurrentDate);\n }\n this.updateControl(this.leftCalendar);\n this.updateNavIcons();\n this.calendarIconEvent();\n this.calendarIconRipple();\n this.controlDown = null;\n }\n this.checkMinMaxDays();\n }\n else {\n this.updateNavIcons();\n this.calendarIconEvent();\n }\n }\n }\n };\n DateRangePicker.prototype.createControl = function () {\n var controlContainer = this.createElement('div', { className: RANGECONTAINER });\n var headerContainer = this.createElement('div', { className: RANGEHEADER });\n var labelContainer = this.createRangeHeader();\n headerContainer.appendChild(labelContainer);\n var daySpan = this.createElement('div', { className: DAYSPAN });\n attributes(daySpan, { 'aria-label': 'Selected Days' });\n daySpan.textContent = this.l10n.getConstant('selectedDays');\n headerContainer.appendChild(daySpan);\n var separator = this.createElement('div', { className: SEPARATOR });\n var calendarContainer = this.createCalendar();\n controlContainer.appendChild(headerContainer);\n controlContainer.appendChild(separator);\n controlContainer.appendChild(calendarContainer);\n var footerSection = this.createElement('div', { className: FOOTER$1 });\n var cancelBtn = this.createElement('button', { className: CANCEL + ' ' + FLAT$1 + ' ' + CSS$1 });\n var applyBtn = this.createElement('button');\n addClass([applyBtn], [APPLY, FLAT$1, PRIMARY$1, CSS$1]);\n footerSection.appendChild(applyBtn);\n footerSection.appendChild(cancelBtn);\n var enable = !isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue);\n this.cancelButton = new Button({ content: this.l10n.getConstant('cancelText') }, cancelBtn);\n this.applyButton = new Button({ content: this.l10n.getConstant('applyText'), disabled: !enable }, applyBtn);\n EventHandler.add(applyBtn, 'click', this.applyFunction, this);\n EventHandler.add(cancelBtn, 'click', this.cancelFunction, this);\n this.popupWrapper.appendChild(controlContainer);\n if (!this.isMobile) {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.createPresets();\n this.listRippleEffect();\n addClass([controlContainer], RANGEBORDER);\n addClass([this.popupWrapper], 'e-preset-wrapper');\n var presets = this.popupWrapper.querySelector('.' + PRESETS);\n presets.style.height = this.popupWrapper.querySelector('.' + RANGECONTAINER).getBoundingClientRect().height + 'px';\n }\n }\n this.popupWrapper.appendChild(footerSection);\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n this.renderPopup();\n };\n DateRangePicker.prototype.cancelFunction = function (eve) {\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n eve.preventDefault();\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.startValue = null;\n this.endValue = null;\n this.removeSelection();\n this.hide(eve);\n };\n DateRangePicker.prototype.deviceHeaderUpdate = function () {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.endButton.element.setAttribute('disabled', '');\n this.startButton.element.classList.add(ACTIVE$1);\n }\n else if (!isNullOrUndefined(this.startValue)) {\n this.startButton.element.classList.add(ACTIVE$1);\n }\n };\n DateRangePicker.prototype.applyFunction = function (eve) {\n var isValueChanged = false;\n if (eve.type !== 'touchstart') {\n eve.preventDefault();\n }\n if (this.closeEventArgs && this.closeEventArgs.cancel) {\n this.startValue = this.popupWrapper.querySelector('.e-start-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-start-date'));\n this.endValue = this.popupWrapper.querySelector('.e-end-date') &&\n this.getIdValue(null, this.popupWrapper.querySelector('.e-end-date'));\n this.setValue();\n }\n if (document.activeElement !== this.inputElement) {\n this.preventFocus = true;\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n if (eve.type !== 'touchstart' &&\n this.closeEventArgs && !this.closeEventArgs.cancel) {\n eve.preventDefault();\n }\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n this.previousEleValue = this.inputElement.value;\n Input.setValue(this.rangeArgs(eve).text, this.inputElement, this.floatLabelType, this.showClearButton);\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n isValueChanged = true;\n }\n this.changeTrigger(eve);\n this.hide(eve ? eve : null);\n this.errorClass();\n isValueChanged = true;\n }\n else {\n this.hide(eve ? eve : null);\n }\n if (!(closest(eve.target, '.' + INPUTCONTAINER$1))\n && (!isValueChanged)) {\n this.focusOut();\n }\n if (!this.isMobile) {\n this.isKeyPopup = false;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.children[1].focus();\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyConfigs: this.keyInputConfigs,\n keyAction: this.popupKeyActionHandle.bind(this)\n });\n }\n }\n };\n DateRangePicker.prototype.onMouseClick = function (event, item) {\n if (event.type === 'touchstart') {\n return;\n }\n var target = item || event.target;\n var li = closest(target, '.' + LISTCLASS);\n var isClick = li && li.classList.contains(ACTIVE$1);\n if (li && li.classList.contains(LISTCLASS)) {\n this.setListSelection(li, event);\n }\n this.preventFocus = true;\n this.inputElement.focus();\n if (!this.isMobile) {\n this.preventFocus = true;\n if (li && li.classList.contains(LISTCLASS) && li.getAttribute('id') === 'custom_range') {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (!isClick && event.type === 'keydown') {\n this.inputElement.focus();\n }\n }\n }\n };\n DateRangePicker.prototype.onMouseOver = function (event) {\n var li = closest(event.target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS) && !li.classList.contains(HOVER)) {\n addClass([li], HOVER);\n }\n };\n DateRangePicker.prototype.onMouseLeave = function (event) {\n var item = closest(event.target, '.' + HOVER);\n if (!isNullOrUndefined(item)) {\n removeClass([item], HOVER);\n }\n };\n DateRangePicker.prototype.setListSelection = function (li, event) {\n if (li && (!li.classList.contains(ACTIVE$1) || (this.isMobile && li.classList.contains(ACTIVE$1)))) {\n if (this.isMobile && li.classList.contains(ACTIVE$1)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n var values_1 = this.presetsItem[this.activeIndex];\n if (values_1.id === 'custom_range') {\n this.renderCustomPopup();\n return;\n }\n return;\n }\n this.removeListSelection();\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n addClass([li], ACTIVE$1);\n li.setAttribute('aria-selected', 'true');\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.renderCustomPopup();\n }\n else {\n this.applyPresetRange(values, event);\n }\n }\n };\n DateRangePicker.prototype.removeListSelection = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE$1);\n if (!isNullOrUndefined(item)) {\n removeClass([item], ACTIVE$1);\n item.removeAttribute('aria-selected');\n }\n };\n DateRangePicker.prototype.setValue = function () {\n this.modelValue = [this.startValue, this.endValue];\n };\n DateRangePicker.prototype.applyPresetRange = function (values, e) {\n this.hide(null);\n this.presetsItem[this.presetsItem.length - 1].start = null;\n this.presetsItem[this.presetsItem.length - 1].end = null;\n this.startValue = values.start;\n this.endValue = values.end;\n this.setValue();\n this.refreshControl();\n this.trigger('select', this.rangeArgs(e));\n this.changeTrigger(e);\n this.previousEleValue = this.inputElement.value;\n this.isCustomRange = false;\n this.leftCalendar = this.rightCalendar = null;\n if (this.isKeyPopup) {\n this.isRangeIconClicked = false;\n this.inputElement.focus();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.showPopup = function (element, event) {\n this.presetHeight();\n if (this.zIndex === 1000) {\n this.popupObj.show(null, this.element);\n }\n else {\n this.popupObj.show(null, null);\n }\n if (this.isMobile) {\n this.popupObj.refreshPosition();\n }\n };\n DateRangePicker.prototype.renderCustomPopup = function () {\n this.isCustomWindow = true;\n this.popupObj.hide();\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: ROOT$2 + ' ' + POPUP$1 });\n this.renderControl();\n this.openEventArgs.appendTo.appendChild(this.popupWrapper);\n this.showPopup();\n this.isCustomRange = true;\n if (!this.isMobile) {\n this.calendarFocus();\n }\n };\n DateRangePicker.prototype.listRippleEffect = function () {\n for (var _i = 0, _a = this.liCollections; _i < _a.length; _i++) {\n var li = _a[_i];\n rippleEffect(li);\n }\n };\n DateRangePicker.prototype.createPresets = function () {\n if (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label)) {\n this.presetElement = this.createElement('div', { className: PRESETS, attrs: { 'tabindex': '0' } });\n var listTag = ListBase.createList(this.createElement, this.presetsItem, null, true);\n attributes(listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n this.presetElement.appendChild(listTag);\n this.popupWrapper.appendChild(this.presetElement);\n var customElement = this.presetElement.querySelector('#custom_range');\n if (!isNullOrUndefined(customElement)) {\n customElement.textContent = this.l10n.getConstant('customRange') !== '' ? this.l10n.getConstant('customRange')\n : 'Custom Range';\n }\n this.liCollections = this.presetElement.querySelectorAll('.' + LISTCLASS);\n this.wireListEvents();\n if (this.isMobile) {\n this.presetElement.style.width = this.inputWrapper.container.getBoundingClientRect().width + 'px';\n }\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex > -1) {\n addClass([this.liCollections[this.activeIndex]], ACTIVE$1);\n }\n }\n };\n DateRangePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.presetElement, 'click', this.onMouseClick, this);\n if (!this.isMobile) {\n EventHandler.add(this.presetElement, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.presetElement, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateRangePicker.prototype.unWireListEvents = function () {\n if (!isNullOrUndefined(this.presetElement)) {\n EventHandler.remove(this.presetElement, 'click touchstart', this.onMouseClick);\n if (!this.isMobile) {\n EventHandler.remove(this.presetElement, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.presetElement, 'mouseout', this.onMouseLeave);\n }\n }\n };\n DateRangePicker.prototype.renderPopup = function () {\n var _this = this;\n this.popupWrapper.classList.add('e-control');\n var popupWidth = this.popupWrapper.getBoundingClientRect().width;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass.trim() !== '') {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (this.isMobile && this.isCustomWindow) {\n this.modal = this.createElement('div');\n document.body.appendChild(this.modal);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n relateTo: this.isMobile && this.isCustomWindow ? document.body :\n (!isNullOrUndefined(this.targetElement) ? this.targetElement : this.inputWrapper.container),\n position: (this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'left', Y: 'bottom' } : { X: 'center', Y: 'center' }) :\n this.enableRtl ? { X: 'left', Y: 'bottom' } : { X: 'right', Y: 'bottom' }),\n offsetX: this.isMobile || this.enableRtl ? 0 : -popupWidth,\n offsetY: OFFSETVALUE$1,\n collision: this.isMobile ?\n (!isUndefined(this.presets[0].start && this.presets[0].end && this.presets[0].label) && !this.isCustomWindow ?\n { X: 'fit' } : { X: 'fit', Y: 'fit' }) : { X: 'fit', Y: 'flip' },\n targetType: this.isMobile && this.isCustomWindow ? 'container' : 'relative',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n open: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n if (_this.value) {\n attributes(_this.inputElement, { 'aria-activedescendant': _this.inputElement.id });\n }\n else {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n addClass([_this.inputWrapper.buttons[0]], ACTIVE$1);\n if (!_this.isMobile) {\n if (_this.cancelButton) {\n _this.btnKeyboardModule = new KeyboardEvents(_this.cancelButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { tab: 'tab', altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n _this.btnKeyboardModule = new KeyboardEvents(_this.applyButton.element, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n }\n if (!isNullOrUndefined(_this.leftCalendar)) {\n if (!_this.isRangeIconClicked) {\n _this.calendarFocus();\n }\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.keyInputConfigs = extend(_this.keyInputConfigs, _this.keyConfigs);\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.presetKeyActionHandler.bind(_this),\n keyConfigs: _this.keyInputConfigs\n });\n _this.presetKeyboardModule = new KeyboardEvents(_this.presetElement, {\n eventName: 'keydown',\n keyAction: _this.popupKeyActionHandle.bind(_this),\n keyConfigs: { altRightArrow: 'alt+rightarrow', altLeftArrow: 'alt+leftarrow' }\n });\n if (isNullOrUndefined(_this.leftCalendar)) {\n _this.preventBlur = true;\n _this.presetElement.focus();\n }\n else {\n _this.presetElement.setAttribute('tabindex', '-1');\n }\n }\n _this.popupKeyBoardHandler();\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.add(document, 'keydown', _this.popupCloseHandler, _this);\n }\n },\n close: function () {\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE$1);\n if (_this.isRangeIconClicked) {\n _this.inputWrapper.container.children[1].focus();\n }\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label)) {\n _this.unWireListEvents();\n }\n if (!isNullOrUndefined(_this.popupObj)) {\n if (!isNullOrUndefined(_this.popupObj.element.parentElement)) {\n detach(_this.popupObj.element);\n }\n _this.popupObj.destroy();\n _this.popupObj = null;\n }\n if (_this.isMobile && !Browser.isDevice) {\n EventHandler.remove(document, 'keydown', _this.popupCloseHandler);\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (this.isMobile) {\n this.popupObj.element.classList.add(DEVICE$1);\n if (!this.isMobile) {\n this.popupObj.element.classList.add('e-bigger');\n }\n }\n if (this.isMobile && this.isCustomWindow) {\n addClass([this.modal], [DEVICE$1, ROOT$2, 'e-range-modal']);\n document.body.className += ' ' + OVERFLOW$1;\n this.modal.style.display = 'block';\n }\n EventHandler.add(document, 'mousedown touchstart', this.documentHandler, this);\n };\n DateRangePicker.prototype.popupCloseHandler = function (e) {\n switch (e.keyCode) {\n case 27:\n this.hide(e);\n break;\n }\n };\n DateRangePicker.prototype.calendarFocus = function () {\n var startDate = this.popupObj && this.popupObj.element.querySelector('.' + STARTDATE);\n if (startDate) {\n var ele = closest(startDate, '.' + RIGHTCALENDER);\n ele = isNullOrUndefined(ele) ? this.leftCalendar : ele;\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n ele.children[1].firstElementChild.focus();\n }\n addClass([startDate], FOCUSDATE);\n }\n else {\n if (this.isRangeIconClicked) {\n this.inputWrapper.container.focus();\n }\n else {\n this.preventBlur = true;\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n };\n DateRangePicker.prototype.presetHeight = function () {\n var presets = this.popupObj && this.popupObj.element.querySelector('.' + PRESETS);\n var rangeContainer = this.popupObj && this.popupObj.element.querySelector('.' + RANGECONTAINER);\n if (!isNullOrUndefined(presets) && !isNullOrUndefined(rangeContainer)) {\n presets.style.height = rangeContainer.getBoundingClientRect().height + 'px';\n }\n };\n DateRangePicker.prototype.presetKeyActionHandler = function (e) {\n switch (e.action) {\n case 'moveDown':\n this.listMoveDown(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'moveUp':\n this.listMoveUp(e);\n this.setScrollPosition();\n e.preventDefault();\n break;\n case 'enter':\n {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(this.leftCalendar) && !isNullOrUndefined(actItem)) {\n if (isNullOrUndefined(hvrItem) || (!isNullOrUndefined(actItem) && actItem === hvrItem)) {\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(actItem);\n var values = this.presetsItem[this.activeIndex];\n if (values.id === 'custom_range') {\n this.calendarFocus();\n actItem.classList.remove(HOVER);\n e.preventDefault();\n return;\n }\n }\n }\n if (!isNullOrUndefined(hvrItem) || !isNullOrUndefined(actItem)) {\n this.onMouseClick(e, hvrItem || actItem);\n }\n e.preventDefault();\n }\n break;\n case 'tab':\n if (this.leftCalendar) {\n var item = this.getHoverLI();\n if (!isNullOrUndefined(item)) {\n item.classList.remove(HOVER);\n }\n }\n else {\n this.hide(e);\n e.preventDefault();\n }\n break;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveDown = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.nextElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n else {\n addClass([this.liCollections[0]], HOVER);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateRangePicker.prototype.listMoveUp = function (e) {\n var hvrItem = this.getHoverLI();\n var actItem = this.getActiveLI();\n if (!isNullOrUndefined(hvrItem)) {\n var li = hvrItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n removeClass([hvrItem], HOVER);\n addClass([li], HOVER);\n }\n }\n else if (!isNullOrUndefined(actItem)) {\n var li = actItem.previousElementSibling;\n if (!isNullOrUndefined(li) && li.classList.contains(LISTCLASS)) {\n addClass([li], HOVER);\n }\n }\n };\n DateRangePicker.prototype.getHoverLI = function () {\n var item = this.presetElement.querySelector('.' + HOVER);\n return item;\n };\n DateRangePicker.prototype.getActiveLI = function () {\n var item = this.presetElement.querySelector('.' + ACTIVE$1);\n return item;\n };\n DateRangePicker.prototype.popupKeyBoardHandler = function () {\n this.popupKeyboardModule = new KeyboardEvents(this.popupWrapper, {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: { escape: 'escape' }\n });\n this.keyInputConfigs = extend(this.keyInputConfigs, this.keyConfigs);\n this.popupKeyboardModule = new KeyboardEvents(this.inputWrapper.container.children[1], {\n eventName: 'keydown',\n keyAction: this.popupKeyActionHandle.bind(this),\n keyConfigs: this.keyInputConfigs\n });\n };\n DateRangePicker.prototype.setScrollPosition = function () {\n var listHeight = this.presetElement.getBoundingClientRect().height;\n var hover = this.presetElement.querySelector('.' + HOVER);\n var active = this.presetElement.querySelector('.' + ACTIVE$1);\n var element = !isNullOrUndefined(hover) ? hover : active;\n if (!isNullOrUndefined(element)) {\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.presetElement.scrollTop = nextEle ? (height - (listHeight / 2 + liHeight / 2)) : height;\n }\n else {\n this.presetElement.scrollTop = 0;\n }\n }\n };\n DateRangePicker.prototype.popupKeyActionHandle = function (e) {\n var presetElement = closest(e.target, '.' + PRESETS);\n switch (e.action) {\n case 'escape':\n if (this.isPopupOpen()) {\n if (this.isKeyPopup) {\n this.inputElement.focus();\n this.isKeyPopup = false;\n }\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[1].blur();\n }\n break;\n case 'enter':\n if (!this.isPopupOpen()) {\n this.show(null, e);\n }\n else {\n this.inputWrapper.container.children[1].focus();\n }\n break;\n case 'tab':\n this.hide(e);\n break;\n case 'altRightArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.cancelButton.element.focus();\n }\n else {\n if (document.activeElement === this.cancelButton.element && this.applyButton.element.disabled !== true) {\n this.applyButton.element.focus();\n }\n else {\n this.leftCalendar.children[1].firstElementChild.focus();\n }\n }\n e.preventDefault();\n break;\n case 'altLeftArrow':\n if (!isNullOrUndefined(presetElement)) {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n else {\n if (document.activeElement === this.applyButton.element && this.applyButton.element.disabled !== true) {\n this.cancelButton.element.focus();\n }\n else {\n if (!isNullOrUndefined(this.presetElement) && (document.activeElement === this.cancelButton.element)) {\n this.presetElement.focus();\n }\n else {\n this.rightCalendar.children[1].firstElementChild.focus();\n }\n }\n }\n e.preventDefault();\n break;\n }\n };\n DateRangePicker.prototype.documentHandler = function (e) {\n if (isNullOrUndefined(this.popupObj)) {\n return;\n }\n var target = e.target;\n if (!this.inputWrapper.container.contains(target) ||\n (!isNullOrUndefined(this.popupObj) && !closest(target, '[id=\"' + this.popupWrapper.id + '\"]') && e.type !== 'mousedown')) {\n if (e.type !== 'touchstart' && ((e.type === 'mousedown') ||\n this.closeEventArgs && !this.closeEventArgs.cancel)) {\n e.preventDefault();\n }\n }\n if ((isNullOrUndefined(this.targetElement) ||\n (!isNullOrUndefined(this.targetElement) && !(target === this.targetElement))) &&\n !(closest(target, '[id=\"' + this.popupWrapper.id + '\"]'))\n && !(closest(target, '.' + INPUTCONTAINER$1) === this.inputWrapper.container)\n && !(closest(target, '.e-daterangepicker.e-popup') && (!target.classList.contains('e-day')))) {\n this.preventBlur = false;\n if (this.isPopupOpen() && document.body.contains(this.popupObj.element)) {\n this.applyFunction(e);\n if (!this.isMobile) {\n this.isRangeIconClicked = false;\n }\n }\n }\n };\n DateRangePicker.prototype.createInput = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n floatLabelType: this.floatLabelType,\n element: this.inputElement,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [DATERANGEICON]\n }, this.createElement);\n attributes(this.inputElement, {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false'\n });\n Input.addAttributes({ 'aria-label': 'select' }, this.inputWrapper.buttons[0]);\n if (!isNullOrUndefined(this.placeholder) && this.placeholder.trim() !== '') {\n Input.addAttributes({ 'aria-placeholder': this.placeholder }, this.inputElement);\n }\n this.setEleWidth(this.width);\n addClass([this.inputWrapper.container], DATERANGEWRAPPER);\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.inputElement.type === 'hidden') {\n this.inputWrapper.container.style.display = 'none';\n }\n this.refreshControl();\n this.previousEleValue = this.inputElement.value;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.startCopy = this.startDate;\n this.endCopy = this.endDate;\n };\n DateRangePicker.prototype.setEleWidth = function (width) {\n if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (this.width);\n }\n else if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n DateRangePicker.prototype.adjustLongHeaderWidth = function () {\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.popupWrapper], DAYHEADERLONG$1);\n }\n };\n DateRangePicker.prototype.refreshControl = function () {\n this.validateMinMax();\n if (this.strictMode) {\n this.validateRangeStrict();\n }\n var isDisabled = this.disabledDates();\n if (this.strictMode && (isDisabled)) {\n this.startValue = this.previousStartValue;\n this.setProperties({ startDate: this.startValue }, true);\n this.endValue = this.previousEndValue;\n this.setProperties({ endDate: this.endValue }, true);\n this.setValue();\n }\n this.updateInput();\n if (!this.strictMode) {\n this.validateRange();\n }\n if (!this.strictMode && (isDisabled)) {\n this.clearRange();\n }\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue) && !isDisabled && !isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n this.errorClass();\n this.previousStartValue = isNullOrUndefined(this.startValue) || isNaN(+this.startValue) ? null : new Date(+this.startValue);\n this.previousEndValue = isNullOrUndefined(this.endValue) || isNaN(+this.endValue) ? null : new Date(+this.endValue);\n };\n DateRangePicker.prototype.updateInput = function () {\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n var formatOption = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n var startDate = this.globalize.formatDate(this.startValue, formatOption);\n var endDate = this.globalize.formatDate(this.endValue, formatOption);\n Input.setValue(startDate + ' ' + this.separator + ' ' + endDate, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousStartValue = new Date(+this.startValue);\n this.previousEndValue = new Date(+this.endValue);\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n Input.setValue(this.invalidValueString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n DateRangePicker.prototype.checkInvalidRange = function (value) {\n if (!isNullOrUndefined(value)) {\n var invalid = false;\n var startinvalue = void 0;\n var endinvalue = void 0;\n var startString = null;\n var endString = null;\n var valueString = null;\n var startObject = false;\n var endObject = false;\n var invalidobject = false;\n if (typeof (value) === 'string') {\n var range = value.split(' ' + this.separator + ' ');\n if (range.length === 2) {\n startString = range[0];\n endString = range[1];\n }\n else {\n invalid = true;\n valueString = value;\n }\n }\n else {\n if (value.length > 0) {\n startinvalue = value[0];\n endinvalue = value[1];\n }\n else {\n startinvalue = value.start;\n endinvalue = value.end;\n }\n if (!(startinvalue instanceof Date) && typeof (startinvalue) !== 'object') {\n startString = this.getstringvalue(startinvalue);\n }\n else if (startinvalue instanceof Date) {\n startObject = true;\n }\n else if (!isNullOrUndefined(startinvalue)) {\n invalidobject = true;\n }\n if (!(endinvalue instanceof Date) && typeof (endinvalue) !== 'object') {\n endString = this.getstringvalue(endinvalue);\n }\n else if (endinvalue instanceof Date) {\n endObject = true;\n }\n else if (!isNullOrUndefined(endinvalue)) {\n invalidobject = true;\n }\n }\n if ((isNullOrUndefined(startString) && !startObject && !isNullOrUndefined(endString)) ||\n (!isNullOrUndefined(startString) && !endObject && isNullOrUndefined(endString))) {\n invalid = true;\n }\n if (invalidobject) {\n startString = endString = valueString = null;\n invalid = true;\n }\n if (startString) {\n invalid = invalid || this.checkInvalidValue(startString);\n }\n if (endString) {\n invalid = invalid || this.checkInvalidValue(endString);\n }\n if (invalid) {\n if (startObject && !invalidobject) {\n startString = startinvalue.toLocaleDateString();\n }\n if (endObject && !invalidobject) {\n endString = endinvalue.toLocaleDateString();\n }\n if (!isNullOrUndefined(startString) && !isNullOrUndefined(endString)) {\n valueString = startString + ' ' + this.separator + ' ' + endString;\n }\n else if (!isNullOrUndefined(startString)) {\n valueString = startString;\n }\n else if (!isNullOrUndefined(endString)) {\n valueString = endString;\n }\n this.invalidValueString = valueString;\n this.setProperties({ value: null }, true);\n this.setProperties({ startValue: null }, true);\n this.setProperties({ endValue: null }, true);\n this.startDate = null;\n this.endDate = null;\n }\n }\n };\n DateRangePicker.prototype.getstringvalue = function (value) {\n var stringValue = null;\n if (!isNullOrUndefined(value) && (typeof value === 'number')) {\n stringValue = (value).toString();\n }\n else if (!isNullOrUndefined(value) && (typeof value === 'string')) {\n stringValue = '' + value;\n }\n return stringValue;\n };\n DateRangePicker.prototype.checkInvalidValue = function (value) {\n var valueString = value;\n var invalid = false;\n var formatOpt = null;\n formatOpt = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n if (typeof valueString !== 'string') {\n invalid = true;\n }\n else {\n var globalize = new Internationalization(this.locale);\n if (!this.checkDateValue(globalize.parseDate(valueString, formatOpt))) {\n var extISOStr = null;\n var basISOString = null;\n // eslint-disable-next-line\n extISOStr = /^\\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)?)?/;\n // eslint-disable-next-line\n basISOString = /^\\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)?)?/;\n if ((!extISOStr.test(valueString) && !basISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n }\n }\n return invalid;\n };\n DateRangePicker.prototype.isDateDisabled = function (date) {\n if (isNullOrUndefined(date)) {\n return false;\n }\n var value = new Date(+date);\n if (+value < +this.min || +value > +this.max) {\n return true;\n }\n this.virtualRenderCellArgs = {\n date: value,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n return true;\n }\n return false;\n };\n DateRangePicker.prototype.disabledDateRender = function () {\n this.disabledDays = [];\n this.disabledDayCnt = null;\n var localDate = new Date(+this.startValue);\n var count = 0;\n while (+localDate <= +this.endValue && +this.endValue <= +this.max) {\n this.virtualRenderCellArgs = {\n date: localDate,\n isDisabled: false\n };\n var args = this.virtualRenderCellArgs;\n this.virtualRenderCellEvent(args);\n if (args.isDisabled) {\n this.disabledDays.push(new Date(+args.date));\n if (+localDate > +this.startValue && +localDate < +this.endValue) {\n count++;\n }\n }\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n this.disabledDayCnt = count;\n };\n DateRangePicker.prototype.virtualRenderCellEvent = function (args) {\n extend(this.virtualRenderCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n DateRangePicker.prototype.disabledDates = function () {\n var isStartDisabled = false;\n var isEndDisabled = false;\n if (!isNullOrUndefined(this.endValue) && !isNullOrUndefined(this.startValue)) {\n isStartDisabled = this.isDateDisabled(this.startValue);\n isEndDisabled = this.isDateDisabled(this.endValue);\n if (!this.isPopupOpen()) {\n this.currentDate = null;\n }\n this.setValue();\n }\n return (isStartDisabled || isEndDisabled);\n };\n DateRangePicker.prototype.setModelValue = function () {\n if (!this.value && this.startDate === null && this.endDate === null) {\n this.setProperties({ value: null }, true);\n }\n else if (this.value === null || this.value.start === null) {\n if (this.value === null) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n else if (this.value.start === null) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n else {\n if ((this.value && this.value.length > 0) ||\n this.valueType && this.valueType.length > 0) {\n if (+this.startDate !== +this.value[0] || +this.endDate !== +this.value[1]) {\n this.setProperties({ value: [this.startDate, this.endDate] }, true);\n }\n if (this.value && this.value[0] == null && this.value[1] == null) {\n this.setProperties({ value: null }, true);\n }\n }\n else {\n if ((this.value && this.value.start)) {\n this.setProperties({ value: { start: this.startDate, end: this.endDate } }, true);\n }\n }\n }\n this.createHiddenInput();\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DateRangePicker.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n this.firstHiddenChild.dispatchEvent(evt);\n };\n DateRangePicker.prototype.changeTrigger = function (e) {\n if (+this.initStartDate !== +this.startValue || +this.initEndDate !== +this.endValue) {\n this.setProperties({ endDate: this.checkDateValue(this.endValue) }, true);\n this.setProperties({ startDate: this.checkDateValue(this.startValue) }, true);\n this.setModelValue();\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.rangeArgs(e));\n }\n }\n this.previousEleValue = this.inputElement.value;\n this.initStartDate = this.checkDateValue(this.startValue);\n this.initEndDate = this.checkDateValue(this.endValue);\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n * @hidden\n */\n DateRangePicker.prototype.navigateTo = function (view, date) {\n if (this.isPopupOpen()) {\n if (view.toLowerCase() === 'month') {\n view = 'Month';\n }\n else if (view.toLowerCase() === 'year') {\n view = 'Year';\n }\n else if (view.toLowerCase() === 'decade') {\n view = 'Decade';\n }\n else {\n return;\n }\n if (this.getViewNumber(view) < this.getViewNumber(this.depth)) {\n view = this.depth;\n }\n if (this.isMobile) {\n _super.prototype.navigateTo.call(this, view, date);\n }\n else {\n if (date < this.min) {\n date = new Date(+this.min);\n }\n else if (date >= this.max) {\n date = new Date(+this.max);\n }\n if (view === 'Month' && this.isSameMonth(date, this.max)) {\n date = new Date(this.max.getFullYear(), this.max.getMonth() - 1, this.min.getDate());\n }\n else if (view === 'Year' && this.isSameYear(date, this.max)) {\n date = new Date((this.max.getFullYear() - 1), this.max.getMonth(), this.max.getDate());\n }\n else if (view === 'Decade' && this.isSameDecade(date, this.max)) {\n date = new Date((this.max.getFullYear() - 10), this.max.getMonth(), this.max.getDate());\n }\n this.leftCalCurrentDate = date;\n this.navigate(this.leftCalendar, this.leftCalCurrentDate, view);\n if (view === 'Month') {\n date = new Date(this.currentDate.setMonth(this.currentDate.getMonth() + 1));\n }\n else if (view === 'Year') {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 1));\n }\n else {\n date = new Date(this.currentDate.setFullYear(this.currentDate.getFullYear() + 10));\n }\n this.rightCalCurrentDate = date;\n this.navigate(this.rightCalendar, this.rightCalCurrentDate, view);\n this.leftKeyboardModule = this.rightKeyboardModule = null;\n this.updateNavIcons();\n }\n if (this.currentView() === this.depth) {\n this.bindCalendarCellEvents();\n }\n this.removeFocusedDate();\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n };\n DateRangePicker.prototype.navigate = function (calendar, date, view) {\n this.calendarElement = calendar;\n this.table = calendar.querySelector('table');\n this.tableBodyElement = calendar.querySelector('tbody');\n this.headerTitleElement = calendar.querySelector('.e-title');\n this.tableHeadElement = calendar.querySelector('thead');\n this.contentElement = calendar.querySelector('.e-content');\n this.previousIcon = calendar.querySelector('.e-prev');\n this.nextIcon = calendar.querySelector('.e-next');\n this.effect = ZOOMIN$1;\n _super.prototype.navigateTo.call(this, view, date);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n addClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.focusOut = function () {\n var isBlur = this.preventBlur;\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS$1]);\n this.preventBlur = false;\n this.inputElement.blur();\n this.preventBlur = isBlur;\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.destroy = function () {\n this.unBindEvents();\n this.hide(null);\n var ariaAttrs = {\n 'tabindex': '0', 'aria-expanded': 'false', 'role': 'combobox',\n 'autocomplete': 'off', 'aria-disabled': !this.enabled ? 'true' : 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'aria-invalid': 'false', 'spellcheck': 'false'\n };\n if (this.inputElement) {\n removeClass([this.inputElement], [ROOT$2]);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.inputElement.classList.remove('e-input');\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.rangeIconHandler);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n detach(this.inputWrapper.container);\n }\n }\n if (!isNullOrUndefined(this.inputKeyboardModule) && !this.isMobile) {\n this.inputKeyboardModule.destroy();\n }\n if (this.popupObj) {\n if (!this.isMobile) {\n this.clearCalendarEvents();\n }\n }\n _super.prototype.destroy.call(this);\n this.inputWrapper = this.popupWrapper = this.popupObj = this.cloneElement = this.presetElement = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n if ((!isNullOrUndefined(this.firstHiddenChild))\n && (!isNullOrUndefined(this.secondHiddenChild))) {\n detach(this.firstHiddenChild);\n detach(this.secondHiddenChild);\n this.firstHiddenChild = this.secondHiddenChild = null;\n this.inputElement.setAttribute('name', this.element.getAttribute('data-name'));\n this.inputElement.removeAttribute('data-name');\n }\n this.closeEventArgs = null;\n this.leftCalendar = null;\n this.rightTitle = null;\n this.leftTitle = null;\n this.openEventArgs = null;\n this.leftCalNextIcon = null;\n this.rightCalendar = null;\n this.closeEventArgs = null;\n this.rightCalPrevIcon = null;\n this.leftCalPrevIcon = null;\n this.popupKeyboardModule = null;\n this.cancelButton = null;\n this.applyButton = null;\n this.calendarElement = null;\n this.leftKeyboardModule = null;\n this.rightCalNextIcon = null;\n this.leftCalNextIcon = null;\n this.btnKeyboardModule = null;\n this.rightKeyboardModule = null;\n this.leftKeyboardModule = null;\n this.presetKeyboardModule = null;\n this.liCollections = null;\n this.popupObj = null;\n this.popupWrapper = null;\n };\n DateRangePicker.prototype.ensureInputAttribute = function () {\n var attr = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n attr[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < attr.length; i++) {\n if (isNullOrUndefined(this.cloneElement.getAttribute(attr[i]))) {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(attr[i]);\n }\n else {\n if (attr[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(attr[i]);\n }\n this.inputElement.setAttribute(attr[i], this.cloneElement.getAttribute(attr[i]));\n }\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateRangePicker.prototype.getModuleName = function () {\n return 'daterangepicker';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Return the properties that are maintained upon browser refresh.\n *\n * @returns {string}\n */\n DateRangePicker.prototype.getPersistData = function () {\n var keyEntity = ['startDate', 'endDate', 'value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Return the selected range and day span in the DateRangePicker.\n *\n * @returns {Object}\n */\n DateRangePicker.prototype.getSelectedRange = function () {\n var range;\n if (!isNullOrUndefined(this.startValue) && !isNullOrUndefined(this.endValue)) {\n range = (Math.round(Math.abs((this.removeTimeValueFromDate(this.startValue).getTime() -\n this.removeTimeValueFromDate(this.endValue).getTime()) / (1000 * 60 * 60 * 24))) + 1);\n if (!isNullOrUndefined(this.renderDayCellArgs) && this.renderDayCellArgs.isDisabled) {\n this.disabledDateRender();\n }\n if (!isNullOrUndefined(this.disabledDayCnt)) {\n range = range - this.disabledDayCnt;\n this.disabledDayCnt = null;\n }\n }\n else {\n range = 0;\n }\n return { startDate: this.startValue, endDate: this.endValue, daySpan: range };\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * To open the Popup container in the DateRangePicker component.\n *\n * @param {HTMLElement} element - Specifies element.\n * @returns {void}\n */\n DateRangePicker.prototype.show = function (element, event) {\n var _this = this;\n if (this.isMobile && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n if (!this.isPopupOpen()) {\n if (element) {\n this.targetElement = element;\n }\n this.createPopup();\n if (this.isMobile || Browser.isDevice) {\n this.mobileRangePopupWrap = this.createElement('div', { className: 'e-daterangepick-mob-popup-wrap' });\n document.body.appendChild(this.mobileRangePopupWrap);\n }\n this.openEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null,\n appendTo: this.isMobile || Browser.isDevice ? this.mobileRangePopupWrap : document.body\n };\n var eventArgs = this.openEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openEventArgs = eventArgs;\n if (!_this.openEventArgs.cancel) {\n _this.openEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.showPopup(element, event);\n var isPreset = (!_this.isCustomRange || (_this.isMobile && _this.isCustomRange));\n if (!isUndefined(_this.presets[0].start && _this.presets[0].end && _this.presets[0].label) && isPreset) {\n _this.setScrollPosition();\n }\n _this.checkMinMaxDays();\n if ((_this.isMobile) && (!isNullOrUndefined(_this.startDate)) && (isNullOrUndefined(_this.endDate))) {\n _this.endButton.element.classList.add(ACTIVE$1);\n _this.startButton.element.classList.remove(ACTIVE$1);\n _this.endButton.element.removeAttribute('disabled');\n _this.selectableDates();\n }\n _super.prototype.setOverlayIndex.call(_this, _this.mobileRangePopupWrap, _this.popupObj.element, _this.modal, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.isMobile || Browser.isDevice);\n }\n });\n }\n }\n };\n /**\n * To close the Popup container in the DateRangePicker component.\n *\n * @returns {void}\n */\n DateRangePicker.prototype.hide = function (event) {\n var _this = this;\n if (this.popupObj) {\n if (isNullOrUndefined(this.previousEndValue) && isNullOrUndefined(this.previousStartValue)) {\n this.clearRange();\n }\n else {\n if (!isNullOrUndefined(this.previousStartValue)) {\n this.startValue = new Date(this.checkValue(this.previousStartValue));\n this.setValue();\n this.currentDate = new Date(this.checkValue(this.startValue));\n }\n else {\n this.startValue = null;\n this.setValue();\n }\n if (!isNullOrUndefined(this.previousEndValue)) {\n this.endValue = new Date(this.checkValue(this.previousEndValue));\n this.setValue();\n }\n else {\n this.endValue = null;\n this.setValue();\n }\n }\n if (this.isPopupOpen()) {\n this.closeEventArgs = {\n cancel: false,\n popup: this.popupObj,\n date: this.inputElement.value,\n model: this,\n event: event ? event : null\n };\n var eventArgs = this.closeEventArgs;\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventArgs = eventArgs;\n if (!_this.closeEventArgs.cancel) {\n if (_this.isMobile) {\n if (!isNullOrUndefined(_this.startButton) && !isNullOrUndefined(_this.endButton)) {\n EventHandler.remove(_this.startButton.element, 'click touchstart', _this.deviceHeaderClick);\n EventHandler.remove(_this.endButton.element, 'click touchstart', _this.deviceHeaderClick);\n }\n }\n if (_this.popupObj) {\n _this.popupObj.hide();\n if (_this.preventBlur) {\n _this.inputElement.focus();\n addClass([_this.inputWrapper.container], [INPUTFOCUS$1]);\n }\n }\n if (!_this.isMobile) {\n if (!isNullOrUndefined(_this.leftKeyboardModule) && !isNullOrUndefined(_this.rightKeyboardModule)) {\n _this.leftKeyboardModule.destroy();\n _this.rightKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.presetElement)) {\n _this.presetKeyboardModule.destroy();\n }\n if (!isNullOrUndefined(_this.cancelButton)) {\n _this.btnKeyboardModule.destroy();\n }\n }\n _this.targetElement = null;\n removeClass([document.body], OVERFLOW$1);\n EventHandler.remove(document, 'mousedown touchstart', _this.documentHandler);\n if (_this.isMobile && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (_this.isMobile || Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileRangePopupWrap)) {\n _this.mobileRangePopupWrap.remove();\n _this.mobileRangePopupWrap = null;\n }\n }\n _this.isKeyPopup = _this.dateDisabled = false;\n }\n else {\n removeClass([_this.inputWrapper.buttons[0]], ACTIVE$1);\n }\n _this.updateClearIconState();\n _this.updateHiddenInput();\n if (_this.isMobile && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n }\n else {\n this.updateClearIconState();\n this.updateHiddenInput();\n if (this.isMobile && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DateRangePicker.prototype.setLocale = function () {\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.updateInput();\n this.updateHiddenInput();\n this.changeTrigger();\n };\n DateRangePicker.prototype.refreshChange = function () {\n this.checkView();\n this.refreshControl();\n this.changeTrigger();\n };\n DateRangePicker.prototype.setDate = function () {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n this.refreshChange();\n };\n DateRangePicker.prototype.enableInput = function () {\n if (+this.min <= +this.max) {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.element.hasAttribute('disabled')) {\n this.bindEvents();\n }\n }\n };\n DateRangePicker.prototype.clearModelvalue = function (newProp, oldProp) {\n this.setProperties({ startDate: null }, true);\n this.setProperties({ endDate: null }, true);\n if (oldProp.value && oldProp.value.length > 0) {\n this.setProperties({ value: null }, true);\n }\n else if (oldProp.value && oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n else if (oldProp.value && !oldProp.value.start) {\n this.setProperties({ value: { start: null, end: null } }, true);\n }\n this.updateValue();\n this.setDate();\n };\n DateRangePicker.prototype.createHiddenInput = function () {\n if (isNullOrUndefined(this.firstHiddenChild) && isNullOrUndefined(this.secondHiddenChild)) {\n this.firstHiddenChild = this.createElement('input');\n this.secondHiddenChild = this.createElement('input');\n }\n if (!isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n this.inputElement.setAttribute('data-name', this.inputElement.getAttribute('name'));\n this.inputElement.removeAttribute('name');\n }\n attributes(this.firstHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n attributes(this.secondHiddenChild, {\n 'type': 'text', 'name': this.inputElement.getAttribute('data-name'), 'class': HIDDENELEMENT\n });\n var format = { type: 'datetime', skeleton: 'yMd' };\n this.firstHiddenChild.value = this.startDate && this.globalize.formatDate(this.startDate, format);\n this.secondHiddenChild.value = this.endDate && this.globalize.formatDate(this.endDate, format);\n this.inputElement.parentElement.appendChild(this.firstHiddenChild);\n this.inputElement.parentElement.appendChild(this.secondHiddenChild);\n };\n DateRangePicker.prototype.setMinMaxDays = function () {\n if (this.isPopupOpen()) {\n this.removeClassDisabled();\n this.checkMinMaxDays();\n if (this.isMobile) {\n this.selectableDates();\n }\n if (!this.strictMode && (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue))) {\n this.removeSelection();\n }\n else {\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n }\n this.updateHeader();\n }\n };\n DateRangePicker.prototype.getStartEndValue = function (date, isEnd) {\n if (this.depth === 'Month') {\n return this.checkDateValue(new Date(this.checkValue(date)));\n }\n else if (this.depth === 'Year') {\n return new Date(date.getFullYear(), date.getMonth() + (isEnd ? 1 : 0), isEnd ? 0 : 1);\n }\n else {\n return new Date(date.getFullYear(), isEnd ? 11 : 0, isEnd ? 31 : 1);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateRangePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateRangePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DateRangePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var format = { format: this.formatString, type: 'date', skeleton: 'yMd' };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var openPopup = ['maxDays', 'minDays', 'value'];\n if (openPopup.indexOf(prop) < 0) {\n this.hide(null);\n }\n switch (prop) {\n case 'width':\n this.setEleWidth(this.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'separator':\n this.previousEleValue = this.inputElement.value;\n this.setProperties({ separator: newProp.separator }, true);\n this.updateInput();\n this.changeTrigger();\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n this.setProperties({ placeholder: newProp.placeholder }, true);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n this.setRangeAllowEdit();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'allowEdit':\n this.setRangeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.updateInput();\n this.changeTrigger();\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n this.setLocale();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.setDataAttribute(true);\n this.checkHtmlAttributes(true);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'startDate':\n if (typeof newProp.startDate === 'string') {\n newProp.startDate = this.globalize.parseDate(newProp.startDate, format);\n }\n if (+this.initStartDate !== +newProp.startDate) {\n this.startValue = this.getStartEndValue(newProp.startDate, false);\n this.setDate();\n this.setValue();\n }\n break;\n case 'endDate':\n if (typeof newProp.endDate === 'string') {\n newProp.endDate = this.globalize.parseDate(newProp.endDate, format);\n }\n if (+this.initEndDate !== +newProp.endDate) {\n this.endValue = this.getStartEndValue(newProp.endDate, true);\n this.setDate();\n this.setValue();\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidRange(newProp.value);\n if (typeof (newProp.value) === 'string') {\n if (!this.invalidValueString) {\n var rangeArray = newProp.value.split(' ' + this.separator + ' ');\n this.value = [new Date(rangeArray[0]), new Date(rangeArray[1])];\n this.updateValue();\n this.setDate();\n }\n else {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else {\n if ((!isNullOrUndefined(newProp.value) && newProp.value.length > 0)\n || !isNullOrUndefined(newProp.value) && newProp.value.start) {\n this.valueType = newProp.value;\n if (newProp.value[0] === null || (newProp.value.start === null)) {\n if (newProp.value.length === 1 || (newProp.value.start)) {\n this.clearModelvalue(newProp, oldProp);\n }\n else if (newProp.value[1] === null ||\n (newProp.value.start === null)) {\n this.clearModelvalue(newProp, oldProp);\n }\n }\n else if ((+this.initStartDate !== +newProp.value[0]\n || +this.initEndDate !== +newProp.value[1]) ||\n (+this.initStartDate !== +(newProp.value.start\n || +this.initEndDate !== +newProp.value.start))) {\n if (newProp.value.length === 1) {\n this.modelValue = newProp.value;\n }\n else if (newProp.value.start) {\n this.modelValue = newProp.value;\n }\n this.updateValue();\n this.setDate();\n }\n }\n else {\n if (isNullOrUndefined(this.value)\n || newProp.value.start == null) {\n this.valueType = newProp.value;\n this.startValue = null;\n this.endValue = null;\n this.clearModelvalue(newProp, oldProp);\n }\n }\n }\n if (this.isPopupOpen()) {\n if (isNullOrUndefined(this.startValue) && isNullOrUndefined(this.endValue)) {\n this.removeSelection();\n if (this.isMobile) {\n this.deviceHeaderUpdate();\n }\n return;\n }\n if (this.isMobile) {\n this.navigate(this.deviceCalendar, this.startValue, this.currentView());\n this.deviceHeaderUpdate();\n }\n else {\n this.navigate(this.leftCalendar, this.startValue, this.currentView());\n this.updateControl(this.leftCalendar);\n this.navigate(this.rightCalendar, this.endValue, this.currentView());\n this.updateControl(this.rightCalendar);\n }\n this.updateRange((this.isMobile ? [this.calendarElement] : [this.leftCalendar, this.rightCalendar]));\n this.updateHeader();\n this.applyButton.disabled = this.applyButton.element.disabled = false;\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'minDays':\n this.setProperties({ minDays: newProp.minDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'maxDays':\n this.setProperties({ maxDays: newProp.maxDays }, true);\n this.refreshChange();\n this.setMinMaxDays();\n break;\n case 'min':\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n this.previousEleValue = this.inputElement.value;\n this.enableInput();\n this.refreshChange();\n break;\n case 'max':\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n this.enableInput();\n this.refreshChange();\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.refreshChange();\n break;\n case 'presets':\n this.setProperties({ presets: newProp.presets }, true);\n this.processPresets();\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'start':\n this.setProperties({ start: newProp.start }, true);\n this.refreshChange();\n break;\n case 'depth':\n this.setProperties({ depth: newProp.depth }, true);\n this.refreshChange();\n break;\n }\n }\n };\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"value\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"enablePersistence\", void 0);\n __decorate$2([\n Property(new Date(1900, 0, 1))\n ], DateRangePicker.prototype, \"min\", void 0);\n __decorate$2([\n Property(new Date(2099, 11, 31))\n ], DateRangePicker.prototype, \"max\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"locale\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"weekNumber\", void 0);\n __decorate$2([\n Property('Gregorian')\n ], DateRangePicker.prototype, \"calendarMode\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"openOnFocus\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"destroyed\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"cleared\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"navigated\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"renderDayCell\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"startDate\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"endDate\", void 0);\n __decorate$2([\n Collection([{}], Presets)\n ], DateRangePicker.prototype, \"presets\", void 0);\n __decorate$2([\n Property('')\n ], DateRangePicker.prototype, \"width\", void 0);\n __decorate$2([\n Property(1000)\n ], DateRangePicker.prototype, \"zIndex\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"showClearButton\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"showTodayButton\", void 0);\n __decorate$2([\n Property('Month')\n ], DateRangePicker.prototype, \"start\", void 0);\n __decorate$2([\n Property('Month')\n ], DateRangePicker.prototype, \"depth\", void 0);\n __decorate$2([\n Property('')\n ], DateRangePicker.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property('-')\n ], DateRangePicker.prototype, \"separator\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"minDays\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"maxDays\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"strictMode\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"keyConfigs\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"format\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"enabled\", void 0);\n __decorate$2([\n Property(false)\n ], DateRangePicker.prototype, \"readonly\", void 0);\n __decorate$2([\n Property(true)\n ], DateRangePicker.prototype, \"allowEdit\", void 0);\n __decorate$2([\n Property('Never')\n ], DateRangePicker.prototype, \"floatLabelType\", void 0);\n __decorate$2([\n Property(null)\n ], DateRangePicker.prototype, \"placeholder\", void 0);\n __decorate$2([\n Property({})\n ], DateRangePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"open\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"close\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"select\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"focus\", void 0);\n __decorate$2([\n Event()\n ], DateRangePicker.prototype, \"blur\", void 0);\n DateRangePicker = __decorate$2([\n NotifyPropertyChanges\n ], DateRangePicker);\n return DateRangePicker;\n}(CalendarBase));\n\n/**\n * DateRangePicker modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP$2 = 'e-popup';\nvar ERROR$2 = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH$2 = new Date().getMonth();\nvar YEAR$2 = new Date().getFullYear();\nvar ROOT$3 = 'e-timepicker';\nvar LIBRARY$2 = 'e-lib';\nvar CONTROL$2 = 'e-control';\nvar CONTENT$2 = 'e-content';\nvar SELECTED$4 = 'e-active';\nvar HOVER$1 = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED$3 = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS$1 = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW$2 = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n if (this.calendarMode === 'Gregorian') {\n \n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n \n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @__PURE__ @class */ (function (_super) {\n __extends$3(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate$3([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate$3([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate$3([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate$3([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate$3([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate$3([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @__PURE__ @class */ (function (_super) {\n __extends$3(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT$3, CONTROL$2, LIBRARY$2]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes$$1 = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes$$1.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes$$1[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes$$1[i]);\n input.setAttribute(attributes$$1[i], attr);\n target.removeAttribute(attributes$$1[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\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)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\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)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT$3 + ' ' + POPUP$2,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.openPopupEventArgs.appendTo.appendChild(this.popupWrapper);\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS$1 };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS$1);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED$4);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED$4);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH$2;\n var year = value ? this.initValue.getFullYear() : YEAR$2;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR$2);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) || (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR$2);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED$3);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED$3);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED$4);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS$1);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify(\"setMaskSelection\", {\n module: \"MaskedDateTime\"\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: event\n });\n }\n if (!this.enableMask || this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart == 0 && this.inputElement.selectionEnd == this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action == 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action == 'shiftTab') || (event.action == 'left' || event.action == 'right')) {\n event.preventDefault();\n }\n this.notify(\"keyDownHandler\", { module: \"MaskedDateTime\",\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS$1);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS$1)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW$2);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS$1);\n this.setHover(currentLi, HOVER$1);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime', navigated: true\n });\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED$4);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER$1);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify(\"keyDownHandler\", {\n module: \"MaskedDateTime\",\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify(\"inputHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify(\"clearHandler\", {\n module: \"MaskedDateTime\"\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR$2, MONTH$2, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value != this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value == this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time == '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value != this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value == this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS$1);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED$3)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED$3)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper) && this.inputWrapper.buttons[0].classList.contains(DISABLED$3)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n this.selectInputText();\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER$1);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED$4);\n if (items.length) {\n removeClass(items, SELECTED$4);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS$1);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED$4);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS$1) && !li.classList.contains(DISABLED$3));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT$2, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED$3);\n }\n if (eventArgs.element.classList.contains(DISABLED$3)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED$3);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED$3);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value == this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT$3)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType == 'Auto' || this.floatLabelType == 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n * @deprecated\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n * @deprecated\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT$3 + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW$2;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED$3)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.updatePlaceHolder();\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate$3([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate$3([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$3([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate$3([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate$3([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate$3([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate$3([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate$3([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate$3([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate$3([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate$3([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate$3([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * TimePicker modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\n//class constant defination\nvar DATEWRAPPER$1 = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY$1 = new Date().getDate();\nvar MONTH$3 = new Date().getMonth();\nvar YEAR$3 = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT$4 = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER$1 = 'e-input-group-icon';\nvar POPUP$3 = 'e-popup';\nvar TIMEICON$1 = 'e-time-icon';\nvar INPUTFOCUS$2 = 'e-input-focus';\nvar POPUPDIMENSION$1 = '250px';\nvar ICONANIMATION$1 = 'e-icon-anim';\nvar DISABLED$4 = 'e-disabled';\nvar ERROR$3 = 'e-error';\nvar CONTENT$3 = 'e-content';\nvar NAVIGATION$1 = 'e-navigation';\nvar ACTIVE$2 = 'e-active';\nvar HOVER$2 = 'e-hover';\nvar ICONS$1 = 'e-icons';\nvar HALFPOSITION$1 = 2;\nvar LISTCLASS$2 = 'e-list-item';\nvar ANIMATIONDURATION$1 = 100;\nvar OVERFLOW$3 = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @__PURE__ @class */ (function (_super) {\n __extends$4(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS$2);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS$2]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS$2);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP$3)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType == 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR$3);\n }\n else {\n addClass([this.inputWrapper.container], ERROR$3);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED$4);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED$4);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER$1);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT$4);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER$1 + ' ' + TIMEICON$1 + ' ' + ICONS$1, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS$2]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject :\n new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT$3, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS$2 };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS$2);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_datepopup' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT$4 + ' ' + POPUP$3,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n this.popupObject.refreshPosition(this.inputElement);\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION$1\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION$1]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT$4)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT$4 + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW$3;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE$2);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE$2);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObject.element.style.maxHeight = POPUPDIMENSION$1;\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS$2);\n this.setTimeHover(currentLi, HOVER$2);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER$2);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION$1, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION$1 + lineHeight / HALFPOSITION$1)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS$2);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS$2);\n if (li && li.classList.contains(LISTCLASS$2)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE$2)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE$2);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS$2);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE$2);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER$2);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE$2);\n if (items.length) {\n removeClass(items, ACTIVE$2);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS$2) && !li.classList.contains(DISABLED$4));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW$3);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION$1,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION$1);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT$4]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE$2);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY$1;\n var month = status_1 ? value.getMonth() : MONTH$3;\n var year = status_1 ? value.getFullYear() : YEAR$3;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ? this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION$1);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS$2);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @deprecated\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify(\"createMask\", {\n module: \"MaskedDateTime\",\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate$4([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate$4([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate$4([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate$4([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate$4([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate$4([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate$4([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate$4([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate$4([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate$4([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate$4([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate$4([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate$4([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate$4([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate$4([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate$4([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\n\n/**\n * DateTimePicker modules\n */\n\nvar ARROWLEFT = 'ArrowLeft';\nvar ARROWRIGHT = 'ArrowRight';\nvar ARROWUP = 'ArrowUp';\nvar ARROWDOWN = 'ArrowDown';\nvar TAB = 'Tab';\nvar SHIFTTAB = 'shiftTab';\nvar END = 'End';\nvar HOME = 'Home';\nvar MaskedDateTime = /** @__PURE__ @class */ (function () {\n function MaskedDateTime(parent) {\n this.mask = '';\n this.defaultConstant = {\n day: 'day',\n month: 'month',\n year: 'year',\n hour: 'hour',\n minute: 'minute',\n second: 'second',\n dayOfTheWeek: 'day of the week',\n };\n this.hiddenMask = '';\n this.validCharacters = 'dMyhmHfasz';\n this.isDayPart = false;\n this.isMonthPart = false;\n this.isYearPart = false;\n this.isHourPart = false;\n this.isMinutePart = false;\n this.isSecondsPart = false;\n this.isMilliSecondsPart = false;\n this.monthCharacter = '';\n this.periodCharacter = '';\n this.isHiddenMask = false;\n this.isComplete = false;\n this.isNavigate = false;\n this.navigated = false;\n this.formatRegex = /EEEEE|EEEE|EEE|EE|E|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|HH|H|hh|h|mm|m|fff|ff|f|aa|a|ss|s|zzzz|zzz|zz|z|'[^']*'|'[^']*'/g;\n this.isDeletion = false;\n this.isShortYear = false;\n this.isDeleteKey = false;\n this.isDateZero = false;\n this.isMonthZero = false;\n this.isYearZero = false;\n this.dayTypeCount = 0;\n this.monthTypeCount = 0;\n this.hourTypeCount = 0;\n this.minuteTypeCount = 0;\n this.secondTypeCount = 0;\n this.parent = parent;\n this.dateformat = this.getCulturedFormat();\n this.maskDateValue = this.parent.value != null ? new Date(+this.parent.value) : new Date();\n this.maskDateValue.setMonth(0);\n this.maskDateValue.setHours(0);\n this.maskDateValue.setMinutes(0);\n this.maskDateValue.setSeconds(0);\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.removeEventListener();\n this.addEventListener();\n }\n MaskedDateTime.prototype.getModuleName = function () {\n return 'MaskedDateTime';\n };\n MaskedDateTime.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('createMask', this.createMask, this);\n this.parent.on('setMaskSelection', this.validCharacterCheck, this);\n this.parent.on('inputHandler', this.maskInputHandler, this);\n this.parent.on('keyDownHandler', this.maskKeydownHandler, this);\n this.parent.on('clearHandler', this.clearHandler, this);\n };\n MaskedDateTime.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('createMask', this.createMask);\n this.parent.off('setMaskSelection', this.validCharacterCheck);\n this.parent.off('inputHandler', this.maskInputHandler);\n this.parent.off('keyDownHandler', this.maskKeydownHandler);\n this.parent.off('clearHandler', this.clearHandler);\n };\n MaskedDateTime.prototype.createMask = function (navigated) {\n if (navigated === void 0) { navigated = false; }\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.dateformat = this.getCulturedFormat();\n if (this.parent.maskPlaceholder.day)\n this.defaultConstant['day'] = this.parent.maskPlaceholder.day;\n if (this.parent.maskPlaceholder.month)\n this.defaultConstant['month'] = this.parent.maskPlaceholder.month;\n if (this.parent.maskPlaceholder.year)\n this.defaultConstant['year'] = this.parent.maskPlaceholder.year;\n if (this.parent.maskPlaceholder.hour)\n this.defaultConstant['hour'] = this.parent.maskPlaceholder.hour;\n if (this.parent.maskPlaceholder.minute)\n this.defaultConstant['minute'] = this.parent.maskPlaceholder.minute;\n if (this.parent.maskPlaceholder.second)\n this.defaultConstant['second'] = this.parent.maskPlaceholder.second;\n if (this.parent.maskPlaceholder.dayOfTheWeek)\n this.defaultConstant['dayOfTheWeek'] = this.parent.maskPlaceholder.dayOfTheWeek.toString();\n this.getCUltureMaskFormat();\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.mask = this.previousValue = inputValue;\n this.parent.maskedDateValue = this.mask;\n if (this.parent.value) {\n this.navigated = navigated;\n this.setDynamicValue();\n }\n };\n MaskedDateTime.prototype.getCUltureMaskFormat = function () {\n this.l10n = new L10n(this.parent.moduleName, this.defaultConstant, this.parent.locale);\n this.objectString = Object.keys(this.defaultConstant);\n for (var i = 0; i < this.objectString.length; i++) {\n this.defaultConstant[this.objectString[i].toString()] = this.l10n.getConstant(this.objectString[i].toString());\n }\n };\n MaskedDateTime.prototype.validCharacterCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n for (var i = start, j = start - 1; i < this.hiddenMask.length || j >= 0; i++, j--) {\n if (i < this.hiddenMask.length && this.validCharacters.indexOf(this.hiddenMask[i]) !== -1) {\n this.setSelection(this.hiddenMask[i]);\n return;\n }\n if (j >= 0 && this.validCharacters.indexOf(this.hiddenMask[j]) !== -1) {\n this.setSelection(this.hiddenMask[j]);\n return;\n }\n }\n };\n MaskedDateTime.prototype.setDynamicValue = function () {\n this.maskDateValue = new Date(+this.parent.value);\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = true;\n this.updateValue();\n // this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n };\n MaskedDateTime.prototype.setSelection = function (validChar) {\n var start = -1;\n var end = 0;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === validChar) {\n end = i + 1;\n if (start === -1) {\n start = i;\n }\n }\n }\n if (start < 0) {\n start = 0;\n }\n this.parent.inputElement.setSelectionRange(start, end);\n };\n MaskedDateTime.prototype.maskKeydownHandler = function (args) {\n this.dayTypeCount = this.monthTypeCount = this.hourTypeCount = this.minuteTypeCount = this.secondTypeCount = 0;\n if (args.e.key === 'Delete') {\n this.isDeleteKey = true;\n return;\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWLEFT || args.e.key === ARROWRIGHT || args.e.key === SHIFTTAB || args.e.key === TAB || args.e.action === SHIFTTAB ||\n args.e.key === END || args.e.key === HOME)) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var length_1 = this.parent.inputElement.value.length;\n if ((start == 0 && end == length_1) && (args.e.key === TAB || args.e.action === SHIFTTAB)) {\n var index = args.e.action === SHIFTTAB ? end : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = index;\n }\n if (args.e.key === END || args.e.key === HOME) {\n var range = args.e.key === END ? length_1 : 0;\n this.parent.inputElement.selectionStart = this.parent.inputElement.selectionEnd = range;\n }\n this.navigateSelection(args.e.key === ARROWLEFT || args.e.action === SHIFTTAB || args.e.key === END ? true : false);\n }\n if ((!args.e.altKey && !args.e.ctrlKey) && (args.e.key === ARROWUP || args.e.key === ARROWDOWN)) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n this.dateAlteration(args.e.key === ARROWDOWN ? true : false);\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n }\n };\n MaskedDateTime.prototype.isPersist = function () {\n var isPersist = this.parent.isFocused || this.navigated;\n return isPersist;\n };\n MaskedDateTime.prototype.differenceCheck = function () {\n var start = this.parent.inputElement.selectionStart;\n var inputValue = this.parent.inputElement.value;\n var previousVal = this.previousValue.substring(0, start + this.previousValue.length - inputValue.length);\n var newVal = inputValue.substring(0, start);\n var newDateValue = new Date(+this.maskDateValue);\n var maxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (previousVal.indexOf(newVal) === 0 && (newVal.length === 0 || this.previousHiddenMask[newVal.length - 1] !== this.previousHiddenMask[newVal.length])) {\n for (var i = newVal.length; i < previousVal.length; i++) {\n if (this.previousHiddenMask[i] !== '' && this.validCharacters.indexOf(this.previousHiddenMask[i]) >= 0) {\n this.isDeletion = this.handleDeletion(this.previousHiddenMask[i], false);\n }\n }\n if (this.isDeletion) {\n return;\n }\n }\n switch (this.previousHiddenMask[start - 1]) {\n case 'd':\n var date = (this.isDayPart && newDateValue.getDate().toString().length < 2 && !this.isPersist() ? newDateValue.getDate() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isDateZero = (newVal[start - 1] == '0');\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(date)) {\n return;\n }\n for (var i = 0; date > maxDate; i++) {\n date = parseInt(date.toString().slice(1), 10);\n }\n if (date >= 1) {\n newDateValue.setDate(date);\n this.isNavigate = date.toString().length === 2;\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n if (newDateValue.getMonth() !== this.maskDateValue.getMonth()) {\n return;\n }\n this.isDayPart = true;\n this.dayTypeCount = this.dayTypeCount + 1;\n }\n else {\n this.isDayPart = false;\n this.dayTypeCount = this.isDateZero ? this.dayTypeCount + 1 : this.dayTypeCount;\n }\n break;\n case 'M':\n var month = void 0;\n if (newDateValue.getMonth().toString().length < 2 && !this.isPersist()) {\n month = (this.isMonthPart ? (newDateValue.getMonth() + 1) * 10 : 0) + parseInt(newVal[start - 1], 10);\n }\n else {\n month = parseInt(newVal[start - 1], 10);\n }\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n this.isMonthZero = (newVal[start - 1] == '0');\n if (!isNaN(month)) {\n while (month > 12) {\n month = parseInt(month.toString().slice(1), 10);\n }\n if (month >= 1) {\n newDateValue.setMonth(month - 1);\n this.isNavigate = month.toString().length === 2;\n if (newDateValue.getMonth() !== month - 1) {\n newDateValue.setDate(1);\n newDateValue.setMonth(month - 1);\n }\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() == previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isMonthPart = true;\n this.monthTypeCount = this.monthTypeCount + 1;\n }\n else {\n newDateValue.setMonth(0);\n this.isMonthPart = false;\n this.monthTypeCount = this.isMonthZero ? this.monthTypeCount + 1 : this.monthTypeCount;\n }\n }\n else { // let monthString: string[] = (getValue('months[stand-alone].wide', getDefaultDateObject()));\n var monthString = (this.getCulturedValue('months[stand-alone].wide'));\n var monthValue = Object.keys(monthString);\n this.monthCharacter += newVal[start - 1].toLowerCase();\n while (this.monthCharacter.length > 0) {\n var i = 1;\n for (var _i = 0, monthValue_1 = monthValue; _i < monthValue_1.length; _i++) {\n var months = monthValue_1[_i];\n if (monthString[i].toLowerCase().indexOf(this.monthCharacter) === 0) {\n newDateValue.setMonth(i - 1);\n this.isMonthPart = true;\n this.maskDateValue = newDateValue;\n return;\n }\n i++;\n }\n this.monthCharacter = this.monthCharacter.substring(1, this.monthCharacter.length);\n }\n }\n break;\n case 'y':\n var year = (this.isYearPart && (newDateValue.getFullYear().toString().length < 4 && !this.isShortYear) ? newDateValue.getFullYear() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.isShortYear = false;\n this.isYearZero = (newVal[start - 1] == '0');\n if (isNaN(year)) {\n return;\n }\n while (year > 9999) {\n year = parseInt(year.toString().slice(1), 10);\n }\n if (year < 1) {\n this.isYearPart = false;\n }\n else {\n newDateValue.setFullYear(year);\n if (year.toString().length === 4) {\n this.isNavigate = true;\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n this.isYearPart = true;\n }\n break;\n case 'h':\n this.hour = (this.isHourPart && (newDateValue.getHours() % 12 || 12).toString().length < 2 && !this.isPersist() ? (newDateValue.getHours() % 12 || 12) * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n while (this.hour > 12) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(Math.floor(newDateValue.getHours() / 12) * 12 + (this.hour % 12));\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'H':\n this.hour = (this.isHourPart && newDateValue.getHours().toString().length < 2 && !this.isPersist() ? newDateValue.getHours() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(this.hour)) {\n return;\n }\n for (var i = 0; this.hour > 23; i++) {\n this.hour = parseInt(this.hour.toString().slice(1), 10);\n }\n newDateValue.setHours(this.hour);\n this.isNavigate = this.hour.toString().length === 2;\n this.isHourPart = true;\n this.hourTypeCount = this.hourTypeCount + 1;\n break;\n case 'm':\n var minutes = (this.isMinutePart && newDateValue.getMinutes().toString().length < 2 && !this.isPersist() ? newDateValue.getMinutes() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(minutes)) {\n return;\n }\n for (var i = 0; minutes > 59; i++) {\n minutes = parseInt(minutes.toString().slice(1), 10);\n }\n newDateValue.setMinutes(minutes);\n this.isNavigate = minutes.toString().length === 2;\n this.isMinutePart = true;\n this.minuteTypeCount = this.minuteTypeCount + 1;\n break;\n case 's':\n var seconds = (this.isSecondsPart && newDateValue.getSeconds().toString().length < 2 && !this.isPersist() ? newDateValue.getSeconds() * 10 : 0) + parseInt(newVal[start - 1], 10);\n this.parent.isFocused = this.parent.isFocused ? false : this.parent.isFocused;\n this.navigated = this.navigated ? false : this.navigated;\n if (isNaN(seconds)) {\n return;\n }\n for (var i = 0; seconds > 59; i++) {\n seconds = parseInt(seconds.toString().slice(1), 10);\n }\n newDateValue.setSeconds(seconds);\n this.isNavigate = seconds.toString().length === 2;\n this.isSecondsPart = true;\n this.secondTypeCount = this.secondTypeCount + 1;\n break;\n case 'a':\n this.periodCharacter += newVal[start - 1].toLowerCase();\n // let periodString: string[] = (getValue('dayPeriods.format.wide', getDefaultDateObject()));;\n var periodString = (this.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n //periodString[periodkeys[0]] : periodString[periodkeys[1]] : periodString[periodkeys[0]];\n for (var i = 0; this.periodCharacter.length > 0; i++) {\n if ((periodString[periodkeys[0]].toLowerCase().indexOf(this.periodCharacter) === 0 && newDateValue.getHours() >= 12) || (periodString[periodkeys[1]].toLowerCase().indexOf(this.periodCharacter) === 0 && newDateValue.getHours() < 12)) {\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n this.maskDateValue = newDateValue;\n }\n this.periodCharacter = this.periodCharacter.substring(1, this.periodCharacter.length);\n // Object.values()\n }\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue;\n };\n MaskedDateTime.prototype.formatCheck = function () {\n var proxy = this;\n function formatValueSpecifier(formattext) {\n var result;\n var daysAbbreviated = proxy.getCulturedValue('days[stand-alone].abbreviated');\n var dayKeyAbbreviated = Object.keys(daysAbbreviated);\n var daysWide = (proxy.getCulturedValue('days[stand-alone].wide'));\n var dayKeyWide = Object.keys(daysWide);\n var daysNarrow = (proxy.getCulturedValue('days[stand-alone].narrow'));\n var dayKeyNarrow = Object.keys(daysNarrow);\n var monthAbbreviated = (proxy.getCulturedValue('months[stand-alone].abbreviated'));\n var monthWide = (proxy.getCulturedValue('months[stand-alone].wide'));\n var periodString = (proxy.getCulturedValue('dayPeriods.format.wide'));\n var periodkeys = Object.keys(periodString);\n var milliseconds;\n var dateOptions;\n switch (formattext) {\n case 'ddd':\n case 'dddd':\n case 'd':\n result = proxy.isDayPart ? proxy.maskDateValue.getDate().toString() : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'dd':\n result = proxy.isDayPart ? proxy.roundOff(proxy.maskDateValue.getDate(), 2) : proxy.defaultConstant['day'].toString();\n result = proxy.zeroCheck(proxy.isDateZero, proxy.isDayPart, result);\n if (proxy.dayTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.dayTypeCount = 0;\n }\n break;\n case 'E':\n case 'EE':\n case 'EEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysAbbreviated[dayKeyAbbreviated[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysWide[dayKeyWide[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'EEEEE':\n result = proxy.isDayPart && proxy.isMonthPart && proxy.isYearPart ? daysNarrow[dayKeyNarrow[proxy.maskDateValue.getDay()]].toString() : proxy.defaultConstant['dayOfTheWeek'].toString();\n break;\n case 'M':\n result = proxy.isMonthPart ? (proxy.maskDateValue.getMonth() + 1).toString() : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MM':\n result = proxy.isMonthPart ? proxy.roundOff(proxy.maskDateValue.getMonth() + 1, 2) : proxy.defaultConstant['month'].toString();\n result = proxy.zeroCheck(proxy.isMonthZero, proxy.isMonthPart, result);\n if (proxy.monthTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.monthTypeCount = 0;\n }\n break;\n case 'MMM':\n result = proxy.isMonthPart ? monthAbbreviated[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'MMMM':\n result = proxy.isMonthPart ? monthWide[proxy.maskDateValue.getMonth() + 1] : proxy.defaultConstant['month'].toString();\n break;\n case 'yy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear() % 100, 2) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n if (proxy.isYearPart) {\n proxy.isNavigate = proxy.isShortYear = (proxy.maskDateValue.getFullYear() % 100).toString().length === 2;\n }\n break;\n case 'y':\n case 'yyyy':\n result = proxy.isYearPart ? proxy.roundOff(proxy.maskDateValue.getFullYear(), 4) : proxy.defaultConstant['year'].toString();\n result = proxy.zeroCheck(proxy.isYearZero, proxy.isYearPart, result);\n break;\n case 'h':\n result = proxy.isHourPart ? (proxy.maskDateValue.getHours() % 12 || 12).toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'hh':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours() % 12 || 12, 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'H':\n result = proxy.isHourPart ? proxy.maskDateValue.getHours().toString() : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'HH':\n result = proxy.isHourPart ? proxy.roundOff(proxy.maskDateValue.getHours(), 2) : proxy.defaultConstant['hour'].toString();\n if (proxy.hourTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.hourTypeCount = 0;\n }\n break;\n case 'm':\n result = proxy.isMinutePart ? proxy.maskDateValue.getMinutes().toString() : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 'mm':\n result = proxy.isMinutePart ? proxy.roundOff(proxy.maskDateValue.getMinutes(), 2) : proxy.defaultConstant['minute'].toString();\n if (proxy.minuteTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.minuteTypeCount = 0;\n }\n break;\n case 's':\n result = proxy.isSecondsPart ? proxy.maskDateValue.getSeconds().toString() : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'ss':\n result = proxy.isSecondsPart ? proxy.roundOff(proxy.maskDateValue.getSeconds(), 2) : proxy.defaultConstant['second'].toString();\n if (proxy.secondTypeCount == 2) {\n proxy.isNavigate = true;\n proxy.secondTypeCount = 0;\n }\n break;\n case 'f':\n result = Math.floor(proxy.maskDateValue.getMilliseconds() / 100).toString();\n break;\n case 'ff':\n milliseconds = proxy.maskDateValue.getMilliseconds();\n if (proxy.maskDateValue.getMilliseconds() > 99) {\n milliseconds = Math.floor(proxy.maskDateValue.getMilliseconds() / 10);\n }\n result = proxy.roundOff(milliseconds, 2);\n break;\n case 'fff':\n result = proxy.roundOff(proxy.maskDateValue.getMilliseconds(), 3);\n break;\n case 'a':\n case 'aa':\n result = proxy.maskDateValue.getHours() < 12 ? periodString[periodkeys[0]] : periodString[periodkeys[1]];\n break;\n case 'z':\n case 'zz':\n case 'zzz':\n case 'zzzz':\n dateOptions = {\n format: formattext,\n type: 'dateTime', skeleton: 'yMd', calendar: proxy.parent.calendarMode\n };\n result = proxy.parent.globalize.formatDate(proxy.maskDateValue, dateOptions);\n break;\n }\n result = result !== undefined ? result : formattext.slice(1, formattext.length - 1);\n if (proxy.isHiddenMask) {\n var hiddenChar = '';\n for (var i = 0; i < result.length; i++) {\n hiddenChar += formattext[0];\n }\n return hiddenChar;\n }\n else {\n return result;\n }\n }\n return formatValueSpecifier;\n };\n MaskedDateTime.prototype.maskInputHandler = function () {\n var start = this.parent.inputElement.selectionStart;\n var selectionChar = this.previousHiddenMask[start - 1];\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n var inputValue;\n this.differenceCheck();\n inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isDateZero = this.isMonthZero = this.isYearZero = false;\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.inputElement.value = inputValue;\n this.parent.inputElement.value = inputValue;\n for (var i = 0; i < this.hiddenMask.length; i++) {\n if (formatText === this.hiddenMask[i]) {\n start = i;\n break;\n }\n }\n this.parent.inputElement.selectionStart = start;\n this.validCharacterCheck();\n if ((this.isNavigate || this.isDeletion) && !this.isDeleteKey) {\n var isbackward = this.isNavigate ? false : true;\n this.isNavigate = this.isDeletion = false;\n this.navigateSelection(isbackward);\n }\n if (this.isDeleteKey) {\n this.isDeletion = false;\n }\n this.isDeleteKey = false;\n // this.setSelection(selectionChar);\n // this.navigateSelection(inputValue);\n };\n MaskedDateTime.prototype.navigateSelection = function (isbackward) {\n var start = this.parent.inputElement.selectionStart;\n var end = this.parent.inputElement.selectionEnd;\n var formatIndex = isbackward ? start - 1 : end + 1;\n this.navigated = true;\n while (formatIndex < this.hiddenMask.length && formatIndex >= 0) {\n if (this.validCharacters.indexOf(this.hiddenMask[formatIndex]) >= 0) {\n this.setSelection(this.hiddenMask[formatIndex]);\n break;\n }\n formatIndex = formatIndex + (isbackward ? -1 : 1);\n }\n };\n MaskedDateTime.prototype.roundOff = function (val, count) {\n var valueText = val.toString();\n var length = count - valueText.length;\n var result = '';\n for (var i = 0; i < length; i++) {\n result += '0';\n }\n return result + valueText;\n };\n MaskedDateTime.prototype.zeroCheck = function (isZero, isDayPart, resultValue) {\n var result = resultValue;\n if (isZero && !isDayPart) {\n result = '0';\n }\n return result;\n };\n MaskedDateTime.prototype.handleDeletion = function (format, isSegment) {\n switch (format) {\n case 'd':\n this.isDayPart = isSegment;\n break;\n case 'M':\n this.isMonthPart = isSegment;\n if (!isSegment) {\n this.maskDateValue.setMonth(0);\n this.monthCharacter = '';\n }\n break;\n case 'y':\n this.isYearPart = isSegment;\n break;\n case 'H':\n case 'h':\n this.isHourPart = isSegment;\n if (!isSegment) {\n this.periodCharacter = '';\n }\n break;\n case 'm':\n this.isMinutePart = isSegment;\n break;\n case 's':\n this.isSecondsPart = isSegment;\n break;\n default:\n return false;\n }\n return true;\n };\n MaskedDateTime.prototype.dateAlteration = function (isDecrement) {\n var start = this.parent.inputElement.selectionStart;\n var formatText = '';\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n formatText = this.hiddenMask[start];\n }\n else {\n return;\n }\n var newDateValue = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n this.previousDate = new Date(this.maskDateValue.getFullYear(), this.maskDateValue.getMonth(), this.maskDateValue.getDate(), this.maskDateValue.getHours(), this.maskDateValue.getMinutes(), this.maskDateValue.getSeconds());\n var incrementValue = isDecrement ? -1 : 1;\n switch (formatText) {\n case 'd':\n newDateValue.setDate(newDateValue.getDate() + incrementValue);\n break;\n case 'M':\n var newMonth = newDateValue.getMonth() + incrementValue;\n newDateValue.setDate(1);\n newDateValue.setMonth(newMonth);\n if (this.isDayPart) {\n var previousMaxDate = new Date(this.previousDate.getFullYear(), this.previousDate.getMonth() + 1, 0).getDate();\n var currentMaxDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth() + 1, 0).getDate();\n if (this.previousDate.getDate() == previousMaxDate && currentMaxDate <= previousMaxDate) {\n newDateValue.setDate(currentMaxDate);\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n }\n else {\n newDateValue.setDate(this.previousDate.getDate());\n }\n this.previousDate = new Date(newDateValue.getFullYear(), newDateValue.getMonth(), newDateValue.getDate());\n break;\n case 'y':\n newDateValue.setFullYear(newDateValue.getFullYear() + incrementValue);\n break;\n case 'H':\n case 'h':\n newDateValue.setHours(newDateValue.getHours() + incrementValue);\n break;\n case 'm':\n newDateValue.setMinutes(newDateValue.getMinutes() + incrementValue);\n break;\n case 's':\n newDateValue.setSeconds(newDateValue.getSeconds() + incrementValue);\n break;\n case 'a':\n newDateValue.setHours((newDateValue.getHours() + 12) % 24);\n break;\n default:\n break;\n }\n this.maskDateValue = newDateValue.getFullYear() > 0 ? newDateValue : this.maskDateValue;\n if (this.validCharacters.indexOf(this.hiddenMask[start]) !== -1) {\n this.handleDeletion(this.hiddenMask[start], true);\n }\n };\n MaskedDateTime.prototype.getCulturedValue = function (format) {\n var locale = this.parent.locale;\n var result;\n if (locale === 'en' || locale === 'en-US') {\n result = getValue(format, getDefaultDateObject());\n }\n else {\n result = getValue('main.' + '' + locale + ('.dates.calendars.gregorian.' + format), cldrData);\n }\n return result;\n };\n MaskedDateTime.prototype.getCulturedFormat = function () {\n var formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.moduleName == 'datepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.format && this.parent.formatString) {\n formatString = this.parent.formatString;\n }\n }\n if (this.parent.moduleName == 'datetimepicker') {\n formatString = (this.getCulturedValue('dateTimeFormats[availableFormats].yMd')).toString();\n if (this.parent.dateTimeFormat) {\n formatString = this.parent.dateTimeFormat;\n }\n }\n if (this.parent.moduleName == 'timepicker') {\n formatString = this.parent.cldrTimeFormat();\n }\n return formatString;\n };\n MaskedDateTime.prototype.clearHandler = function () {\n this.isDayPart = this.isMonthPart = this.isYearPart = this.isHourPart = this.isMinutePart = this.isSecondsPart = false;\n this.updateValue();\n };\n MaskedDateTime.prototype.updateValue = function () {\n this.monthCharacter = this.periodCharacter = '';\n var inputValue = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = true;\n this.hiddenMask = this.dateformat.replace(this.formatRegex, this.formatCheck());\n this.isHiddenMask = false;\n this.previousHiddenMask = this.hiddenMask;\n this.previousValue = inputValue;\n this.parent.updateInputValue(inputValue);\n //this.parent.inputElement.value = inputValue;\n };\n MaskedDateTime.prototype.destroy = function () {\n this.removeEventListener();\n };\n return MaskedDateTime;\n}());\n\n/**\n * MaskedDateTime modules\n */\n\n/**\n * Calendar all modules\n */\n\nexport { CalendarBase, Calendar, Islamic, DatePicker, Presets, DateRangePicker, TimePickerBase, TimeMaskPlaceholder, TimePicker, DateTimePicker, MaskedDateTime };\n","import { Encoding, Save } from '@syncfusion/ej2-file-utils';\n\n/**\n * array literal codes\n */\nvar ARR_LITERAL_CODES = new Int16Array(286);\nvar ARR_LITERAL_LENGTHS = new Uint8Array(286);\nvar ARR_DISTANCE_CODES = new Int16Array(30);\nvar ARR_DISTANCE_LENGTHS = new Uint8Array(30);\n/**\n * represent compression stream writer\n * ```typescript\n * let compressedWriter = new CompressedStreamWriter();\n * let text: string = 'Hello world!!!';\n * compressedWriter.write(text, 0, text.length);\n * compressedWriter.close();\n * ```\n */\nvar CompressedStreamWriter = /** @__PURE__ @class */ (function () {\n /**\n * Initializes compressor and writes ZLib header if needed.\n * @param {boolean} noWrap - optional if true, ZLib header and checksum will not be written.\n */\n function CompressedStreamWriter(noWrap) {\n this.pendingBuffer = new Uint8Array(1 << 16);\n this.pendingBufLength = 0;\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.currentHash = 0;\n this.matchStart = 0;\n this.matchLength = 0;\n this.matchPrevAvail = false;\n this.blockStart = 0;\n this.stringStart = 0;\n this.lookAhead = 0;\n this.totalBytesIn = 0;\n this.inputOffset = 0;\n this.inputEnd = 0;\n this.windowSize = 1 << 15;\n this.windowMask = this.windowSize - 1;\n this.hashSize = 1 << 15;\n this.hashMask = this.hashSize - 1;\n this.hashShift = Math.floor((15 + 3 - 1) / 3);\n this.maxDist = this.windowSize - 262;\n this.checkSum = 1;\n this.noWrap = false;\n if (!CompressedStreamWriter.isHuffmanTreeInitiated) {\n CompressedStreamWriter.initHuffmanTree();\n CompressedStreamWriter.isHuffmanTreeInitiated = true;\n }\n this.treeLiteral = new CompressorHuffmanTree(this, 286, 257, 15);\n this.treeDistances = new CompressorHuffmanTree(this, 30, 1, 15);\n this.treeCodeLengths = new CompressorHuffmanTree(this, 19, 4, 7);\n this.arrDistances = new Uint16Array((1 << 14));\n this.arrLiterals = new Uint8Array((1 << 14));\n this.stream = [];\n this.dataWindow = new Uint8Array(2 * this.windowSize);\n this.hashHead = new Int16Array(this.hashSize);\n this.hashPrevious = new Int16Array(this.windowSize);\n this.blockStart = this.stringStart = 1;\n this.noWrap = noWrap;\n if (!noWrap) {\n this.writeZLibHeader();\n }\n }\n Object.defineProperty(CompressedStreamWriter.prototype, \"compressedData\", {\n /**\n * get compressed data\n */\n get: function () {\n return this.stream;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressedStreamWriter.prototype, \"getCompressedString\", {\n get: function () {\n var compressedString = '';\n if (this.stream !== undefined) {\n for (var i = 0; i < this.stream.length; i++) {\n compressedString += String.fromCharCode.apply(null, this.stream[i]);\n }\n }\n return compressedString;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Compresses data and writes it to the stream.\n * @param {Uint8Array} data - data to compress\n * @param {number} offset - offset in data\n * @param {number} length - length of the data\n * @returns {void}\n */\n CompressedStreamWriter.prototype.write = function (data, offset, length) {\n if (data === undefined || data === null) {\n throw new Error('ArgumentException: data cannot null or undefined');\n }\n var end = offset + length;\n if (0 > offset || offset > end || end > data.length) {\n throw new Error('ArgumentOutOfRangeException: Offset or length is incorrect');\n }\n if (typeof data === 'string') {\n var encode = new Encoding(false);\n encode.type = 'Utf8';\n data = new Uint8Array(encode.getBytes(data, 0, data.length));\n end = offset + data.length;\n }\n this.inputBuffer = data;\n this.inputOffset = offset;\n this.inputEnd = end;\n if (!this.noWrap) {\n this.checkSum = ChecksumCalculator.checksumUpdate(this.checkSum, this.inputBuffer, this.inputOffset, end);\n }\n while (!(this.inputEnd === this.inputOffset) || !(this.pendingBufLength === 0)) {\n this.pendingBufferFlush();\n this.compressData(false);\n }\n };\n /**\n * write ZLib header to the compressed data\n * @return {void}\n */\n CompressedStreamWriter.prototype.writeZLibHeader = function () {\n /* Initialize header.*/\n var headerDate = (8 + (7 << 4)) << 8;\n /* Save compression level.*/\n headerDate |= ((5 >> 2) & 3) << 6;\n /* Align header.*/\n headerDate += 31 - (headerDate % 31);\n /* Write header to stream.*/\n this.pendingBufferWriteShortBytes(headerDate);\n };\n /**\n * Write Most Significant Bytes in to stream\n * @param {number} s - check sum value\n */\n CompressedStreamWriter.prototype.pendingBufferWriteShortBytes = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s >> 8;\n this.pendingBuffer[this.pendingBufLength++] = s;\n };\n CompressedStreamWriter.prototype.compressData = function (finish) {\n var success;\n do {\n this.fillWindow();\n var canFlush = (finish && this.inputEnd === this.inputOffset);\n success = this.compressSlow(canFlush, finish);\n } while (this.pendingBufLength === 0 && success);\n return success;\n };\n CompressedStreamWriter.prototype.compressSlow = function (flush, finish) {\n if (this.lookAhead < 262 && !flush) {\n return false;\n }\n while (this.lookAhead >= 262 || flush) {\n if (this.lookAhead === 0) {\n return this.lookAheadCompleted(finish);\n }\n if (this.stringStart >= 2 * this.windowSize - 262) {\n this.slideWindow();\n }\n var prevMatch = this.matchStart;\n var prevLen = this.matchLength;\n if (this.lookAhead >= 3) {\n this.discardMatch();\n }\n if (prevLen >= 3 && this.matchLength <= prevLen) {\n prevLen = this.matchPreviousBest(prevMatch, prevLen);\n }\n else {\n this.matchPreviousAvailable();\n }\n if (this.bufferPosition >= (1 << 14)) {\n return this.huffmanIsFull(finish);\n }\n }\n return true;\n };\n CompressedStreamWriter.prototype.discardMatch = function () {\n var hashHead = this.insertString();\n if (hashHead !== 0 && this.stringStart - hashHead <= this.maxDist && this.findLongestMatch(hashHead)) {\n if (this.matchLength <= 5 && (this.matchLength === 3 && this.stringStart - this.matchStart > 4096)) {\n this.matchLength = 3 - 1;\n }\n }\n };\n CompressedStreamWriter.prototype.matchPreviousAvailable = function () {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = true;\n this.stringStart++;\n this.lookAhead--;\n };\n CompressedStreamWriter.prototype.matchPreviousBest = function (prevMatch, prevLen) {\n this.huffmanTallyDist(this.stringStart - 1 - prevMatch, prevLen);\n prevLen -= 2;\n do {\n this.stringStart++;\n this.lookAhead--;\n if (this.lookAhead >= 3) {\n this.insertString();\n }\n } while (--prevLen > 0);\n this.stringStart++;\n this.lookAhead--;\n this.matchPrevAvail = false;\n this.matchLength = 3 - 1;\n return prevLen;\n };\n CompressedStreamWriter.prototype.lookAheadCompleted = function (finish) {\n if (this.matchPrevAvail) {\n this.huffmanTallyLit(this.dataWindow[this.stringStart - 1] & 0xff);\n }\n this.matchPrevAvail = false;\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, this.stringStart - this.blockStart, finish);\n this.blockStart = this.stringStart;\n return false;\n };\n CompressedStreamWriter.prototype.huffmanIsFull = function (finish) {\n var len = this.stringStart - this.blockStart;\n if (this.matchPrevAvail) {\n len--;\n }\n var lastBlock = (finish && this.lookAhead === 0 && !this.matchPrevAvail);\n this.huffmanFlushBlock(this.dataWindow, this.blockStart, len, lastBlock);\n this.blockStart += len;\n return !lastBlock;\n };\n CompressedStreamWriter.prototype.fillWindow = function () {\n if (this.stringStart >= this.windowSize + this.maxDist) {\n this.slideWindow();\n }\n while (this.lookAhead < 262 && this.inputOffset < this.inputEnd) {\n var more = 2 * this.windowSize - this.lookAhead - this.stringStart;\n if (more > this.inputEnd - this.inputOffset) {\n more = this.inputEnd - this.inputOffset;\n }\n this.dataWindow.set(this.inputBuffer.subarray(this.inputOffset, this.inputOffset + more), this.stringStart + this.lookAhead);\n this.inputOffset += more;\n this.totalBytesIn += more;\n this.lookAhead += more;\n }\n if (this.lookAhead >= 3) {\n this.updateHash();\n }\n };\n CompressedStreamWriter.prototype.slideWindow = function () {\n this.dataWindow.set(this.dataWindow.subarray(this.windowSize, this.windowSize + this.windowSize), 0);\n this.matchStart -= this.windowSize;\n this.stringStart -= this.windowSize;\n this.blockStart -= this.windowSize;\n for (var i = 0; i < this.hashSize; ++i) {\n var m = this.hashHead[i] & 0xffff;\n this.hashHead[i] = (((m >= this.windowSize) ? (m - this.windowSize) : 0));\n }\n for (var i = 0; i < this.windowSize; i++) {\n var m = this.hashPrevious[i] & 0xffff;\n this.hashPrevious[i] = ((m >= this.windowSize) ? (m - this.windowSize) : 0);\n }\n };\n CompressedStreamWriter.prototype.insertString = function () {\n var match;\n var hash = ((this.currentHash << this.hashShift) ^ this.dataWindow[this.stringStart + (3 - 1)]) & this.hashMask;\n this.hashPrevious[this.stringStart & this.windowMask] = match = this.hashHead[hash];\n this.hashHead[hash] = this.stringStart;\n this.currentHash = hash;\n return match & 0xffff;\n };\n CompressedStreamWriter.prototype.findLongestMatch = function (curMatch) {\n var chainLen = 4096;\n var niceLen = 258;\n var scan = this.stringStart;\n var match;\n var bestEnd = this.stringStart + this.matchLength;\n var bestLength = Math.max(this.matchLength, 3 - 1);\n var limit = Math.max(this.stringStart - this.maxDist, 0);\n var stringEnd = this.stringStart + 258 - 1;\n var scanEnd1 = this.dataWindow[bestEnd - 1];\n var scanEnd = this.dataWindow[bestEnd];\n var data = this.dataWindow;\n if (bestLength >= 32) {\n chainLen >>= 2;\n }\n if (niceLen > this.lookAhead) {\n niceLen = this.lookAhead;\n }\n do {\n if (data[curMatch + bestLength] !== scanEnd ||\n data[curMatch + bestLength - 1] !== scanEnd1 ||\n data[curMatch] !== data[scan] ||\n data[curMatch + 1] !== data[scan + 1]) {\n continue;\n }\n match = curMatch + 2;\n scan += 2;\n /* tslint:disable */\n while (data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] &&\n data[++scan] === data[++match] && data[++scan] === data[++match] && scan < stringEnd) {\n /* tslint:disable */\n }\n if (scan > bestEnd) {\n this.matchStart = curMatch;\n bestEnd = scan;\n bestLength = scan - this.stringStart;\n if (bestLength >= niceLen) {\n break;\n }\n scanEnd1 = data[bestEnd - 1];\n scanEnd = data[bestEnd];\n }\n scan = this.stringStart;\n } while ((curMatch = (this.hashPrevious[curMatch & this.windowMask] & 0xffff)) > limit && --chainLen !== 0);\n this.matchLength = Math.min(bestLength, this.lookAhead);\n return this.matchLength >= 3;\n };\n CompressedStreamWriter.prototype.updateHash = function () {\n this.currentHash = (this.dataWindow[this.stringStart] << this.hashShift) ^ this.dataWindow[this.stringStart + 1];\n };\n CompressedStreamWriter.prototype.huffmanTallyLit = function (literal) {\n this.arrDistances[this.bufferPosition] = 0;\n this.arrLiterals[this.bufferPosition++] = literal;\n this.treeLiteral.codeFrequencies[literal]++;\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanTallyDist = function (dist, len) {\n this.arrDistances[this.bufferPosition] = dist;\n this.arrLiterals[this.bufferPosition++] = (len - 3);\n var lc = this.huffmanLengthCode(len - 3);\n this.treeLiteral.codeFrequencies[lc]++;\n if (lc >= 265 && lc < 285) {\n this.extraBits += Math.floor((lc - 261) / 4);\n }\n var dc = this.huffmanDistanceCode(dist - 1);\n this.treeDistances.codeFrequencies[dc]++;\n if (dc >= 4) {\n this.extraBits += Math.floor((dc / 2 - 1));\n }\n return this.bufferPosition >= (1 << 14);\n };\n CompressedStreamWriter.prototype.huffmanFlushBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.treeLiteral.codeFrequencies[256]++;\n this.treeLiteral.buildTree();\n this.treeDistances.buildTree();\n this.treeLiteral.calculateBLFreq(this.treeCodeLengths);\n this.treeDistances.calculateBLFreq(this.treeCodeLengths);\n this.treeCodeLengths.buildTree();\n var blTreeCodes = 4;\n for (var i = 18; i > blTreeCodes; i--) {\n if (this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[i]] > 0) {\n blTreeCodes = i + 1;\n }\n }\n var opt_len = 14 + blTreeCodes * 3 + this.treeCodeLengths.getEncodedLength() +\n this.treeLiteral.getEncodedLength() + this.treeDistances.getEncodedLength() + this.extraBits;\n var static_len = this.extraBits;\n for (var i = 0; i < 286; i++) {\n static_len += this.treeLiteral.codeFrequencies[i] * ARR_LITERAL_LENGTHS[i];\n }\n for (var i = 0; i < 30; i++) {\n static_len += this.treeDistances.codeFrequencies[i] * ARR_DISTANCE_LENGTHS[i];\n }\n if (opt_len >= static_len) {\n // Force static trees.\n opt_len = static_len;\n }\n if (storedOffset >= 0 && storedLength + 4 < opt_len >> 3) {\n this.huffmanFlushStoredBlock(stored, storedOffset, storedLength, lastBlock);\n }\n else if (opt_len == static_len) {\n // Encode with static tree.\n this.pendingBufferWriteBits((1 << 1) + (lastBlock ? 1 : 0), 3);\n this.treeLiteral.setStaticCodes(ARR_LITERAL_CODES, ARR_LITERAL_LENGTHS);\n this.treeDistances.setStaticCodes(ARR_DISTANCE_CODES, ARR_DISTANCE_LENGTHS);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n else {\n this.pendingBufferWriteBits((2 << 1) + (lastBlock ? 1 : 0), 3);\n this.huffmanSendAllTrees(blTreeCodes);\n this.huffmanCompressBlock();\n this.huffmanReset();\n }\n };\n CompressedStreamWriter.prototype.huffmanFlushStoredBlock = function (stored, storedOffset, storedLength, lastBlock) {\n this.pendingBufferWriteBits((0 << 1) + (lastBlock ? 1 : 0), 3);\n this.pendingBufferAlignToByte();\n this.pendingBufferWriteShort(storedLength);\n this.pendingBufferWriteShort(~storedLength);\n this.pendingBufferWriteByteBlock(stored, storedOffset, storedLength);\n this.huffmanReset();\n };\n CompressedStreamWriter.prototype.huffmanLengthCode = function (len) {\n if (len === 255) {\n return 285;\n }\n var code = 257;\n while (len >= 8) {\n code += 4;\n len >>= 1;\n }\n return code + len;\n };\n CompressedStreamWriter.prototype.huffmanDistanceCode = function (distance) {\n var code = 0;\n while (distance >= 4) {\n code += 2;\n distance >>= 1;\n }\n return code + distance;\n };\n CompressedStreamWriter.prototype.huffmanSendAllTrees = function (blTreeCodes) {\n this.treeCodeLengths.buildCodes();\n this.treeLiteral.buildCodes();\n this.treeDistances.buildCodes();\n this.pendingBufferWriteBits(this.treeLiteral.treeLength - 257, 5);\n this.pendingBufferWriteBits(this.treeDistances.treeLength - 1, 5);\n this.pendingBufferWriteBits(blTreeCodes - 4, 4);\n for (var rank = 0; rank < blTreeCodes; rank++) {\n this.pendingBufferWriteBits(this.treeCodeLengths.codeLengths[CompressorHuffmanTree.huffCodeLengthOrders[rank]], 3);\n }\n this.treeLiteral.writeTree(this.treeCodeLengths);\n this.treeDistances.writeTree(this.treeCodeLengths);\n };\n CompressedStreamWriter.prototype.huffmanReset = function () {\n this.bufferPosition = 0;\n this.extraBits = 0;\n this.treeLiteral.reset();\n this.treeDistances.reset();\n this.treeCodeLengths.reset();\n };\n CompressedStreamWriter.prototype.huffmanCompressBlock = function () {\n for (var i = 0; i < this.bufferPosition; i++) {\n var literalLen = this.arrLiterals[i] & 255;\n var dist = this.arrDistances[i];\n if (dist-- !== 0) {\n var lc = this.huffmanLengthCode(literalLen);\n this.treeLiteral.writeCodeToStream(lc);\n var bits = Math.floor((lc - 261) / 4);\n if (bits > 0 && bits <= 5) {\n this.pendingBufferWriteBits(literalLen & ((1 << bits) - 1), bits);\n }\n var dc = this.huffmanDistanceCode(dist);\n this.treeDistances.writeCodeToStream(dc);\n bits = Math.floor(dc / 2 - 1);\n if (bits > 0) {\n this.pendingBufferWriteBits(dist & ((1 << bits) - 1), bits);\n }\n }\n else {\n this.treeLiteral.writeCodeToStream(literalLen);\n }\n }\n this.treeLiteral.writeCodeToStream(256);\n };\n /**\n * write bits in to internal buffer\n * @param {number} b - source of bits\n * @param {number} count - count of bits to write\n */\n CompressedStreamWriter.prototype.pendingBufferWriteBits = function (b, count) {\n var uint = new Uint32Array(1);\n uint[0] = this.pendingBufCache | (b << this.pendingBufBitsInCache);\n this.pendingBufCache = uint[0];\n this.pendingBufBitsInCache += count;\n this.pendingBufferFlushBits();\n };\n CompressedStreamWriter.prototype.pendingBufferFlush = function (isClose) {\n this.pendingBufferFlushBits();\n if (this.pendingBufLength > 0) {\n var array = new Uint8Array(this.pendingBufLength);\n array.set(this.pendingBuffer.subarray(0, this.pendingBufLength), 0);\n this.stream.push(array);\n }\n this.pendingBufLength = 0;\n };\n CompressedStreamWriter.prototype.pendingBufferFlushBits = function () {\n var result = 0;\n while (this.pendingBufBitsInCache >= 8 && this.pendingBufLength < (1 << 16)) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n this.pendingBufCache >>= 8;\n this.pendingBufBitsInCache -= 8;\n result++;\n }\n return result;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteByteBlock = function (data, offset, length) {\n var array = data.subarray(offset, offset + length);\n this.pendingBuffer.set(array, this.pendingBufLength);\n this.pendingBufLength += length;\n };\n CompressedStreamWriter.prototype.pendingBufferWriteShort = function (s) {\n this.pendingBuffer[this.pendingBufLength++] = s;\n this.pendingBuffer[this.pendingBufLength++] = (s >> 8);\n };\n CompressedStreamWriter.prototype.pendingBufferAlignToByte = function () {\n if (this.pendingBufBitsInCache > 0) {\n this.pendingBuffer[this.pendingBufLength++] = this.pendingBufCache;\n }\n this.pendingBufCache = 0;\n this.pendingBufBitsInCache = 0;\n };\n /**\n * Huffman Tree literal calculation\n * @private\n */\n CompressedStreamWriter.initHuffmanTree = function () {\n var i = 0;\n while (i < 144) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x030 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n while (i < 256) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x190 - 144 + i) << 7);\n ARR_LITERAL_LENGTHS[i++] = 9;\n }\n while (i < 280) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x000 - 256 + i) << 9);\n ARR_LITERAL_LENGTHS[i++] = 7;\n }\n while (i < 286) {\n ARR_LITERAL_CODES[i] = CompressorHuffmanTree.bitReverse((0x0c0 - 280 + i) << 8);\n ARR_LITERAL_LENGTHS[i++] = 8;\n }\n for (i = 0; i < 30; i++) {\n ARR_DISTANCE_CODES[i] = CompressorHuffmanTree.bitReverse(i << 11);\n ARR_DISTANCE_LENGTHS[i] = 5;\n }\n };\n /**\n * close the stream and write all pending buffer in to stream\n * @returns {void}\n */\n CompressedStreamWriter.prototype.close = function () {\n do {\n this.pendingBufferFlush(true);\n if (!this.compressData(true)) {\n this.pendingBufferFlush(true);\n this.pendingBufferAlignToByte();\n if (!this.noWrap) {\n this.pendingBufferWriteShortBytes(this.checkSum >> 16);\n this.pendingBufferWriteShortBytes(this.checkSum & 0xffff);\n }\n this.pendingBufferFlush(true);\n }\n } while (!(this.inputEnd === this.inputOffset) ||\n !(this.pendingBufLength === 0));\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n CompressedStreamWriter.prototype.destroy = function () {\n this.stream = [];\n this.stream = undefined;\n this.pendingBuffer = undefined;\n this.treeLiteral = undefined;\n this.treeDistances = undefined;\n this.treeCodeLengths = undefined;\n this.arrLiterals = undefined;\n this.arrDistances = undefined;\n this.hashHead = undefined;\n this.hashPrevious = undefined;\n this.dataWindow = undefined;\n this.inputBuffer = undefined;\n this.pendingBufLength = undefined;\n this.pendingBufCache = undefined;\n this.pendingBufBitsInCache = undefined;\n this.bufferPosition = undefined;\n this.extraBits = undefined;\n this.currentHash = undefined;\n this.matchStart = undefined;\n this.matchLength = undefined;\n this.matchPrevAvail = undefined;\n this.blockStart = undefined;\n this.stringStart = undefined;\n this.lookAhead = undefined;\n this.totalBytesIn = undefined;\n this.inputOffset = undefined;\n this.inputEnd = undefined;\n this.windowSize = undefined;\n this.windowMask = undefined;\n this.hashSize = undefined;\n this.hashMask = undefined;\n this.hashShift = undefined;\n this.maxDist = undefined;\n this.checkSum = undefined;\n this.noWrap = undefined;\n };\n CompressedStreamWriter.isHuffmanTreeInitiated = false;\n return CompressedStreamWriter;\n}());\n/**\n * represent the Huffman Tree\n */\nvar CompressorHuffmanTree = /** @__PURE__ @class */ (function () {\n /**\n * Create new Huffman Tree\n * @param {CompressedStreamWriter} writer instance\n * @param {number} elementCount - element count\n * @param {number} minCodes - minimum count\n * @param {number} maxLength - maximum count\n */\n function CompressorHuffmanTree(writer, elementCount, minCodes, maxLength) {\n this.writer = writer;\n this.codeMinCount = minCodes;\n this.maxLength = maxLength;\n this.codeFrequency = new Uint16Array(elementCount);\n this.lengthCount = new Int32Array(maxLength);\n }\n Object.defineProperty(CompressorHuffmanTree.prototype, \"treeLength\", {\n get: function () {\n return this.codeCount;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeLengths\", {\n get: function () {\n return this.codeLength;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(CompressorHuffmanTree.prototype, \"codeFrequencies\", {\n get: function () {\n return this.codeFrequency;\n },\n enumerable: true,\n configurable: true\n });\n CompressorHuffmanTree.prototype.setStaticCodes = function (codes, lengths) {\n var temp = new Int16Array(codes.length);\n temp.set(codes, 0);\n this.codes = temp;\n var lengthTemp = new Uint8Array(lengths.length);\n lengthTemp.set(lengths, 0);\n this.codeLength = lengthTemp;\n };\n /**\n * reset all code data in tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.reset = function () {\n for (var i = 0; i < this.codeFrequency.length; i++) {\n this.codeFrequency[i] = 0;\n }\n this.codes = undefined;\n this.codeLength = undefined;\n };\n /**\n * write code to the compressor output stream\n * @param {number} code - code to be written\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeCodeToStream = function (code) {\n this.writer.pendingBufferWriteBits(this.codes[code] & 0xffff, this.codeLength[code]);\n };\n /**\n * calculate code from their frequencies\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildCodes = function () {\n var nextCode = new Int32Array(this.maxLength);\n this.codes = new Int16Array(this.codeCount);\n var code = 0;\n for (var bitsCount = 0; bitsCount < this.maxLength; bitsCount++) {\n nextCode[bitsCount] = code;\n code += this.lengthCount[bitsCount] << (15 - bitsCount);\n }\n for (var i = 0; i < this.codeCount; i++) {\n var bits = this.codeLength[i];\n if (bits > 0) {\n this.codes[i] = CompressorHuffmanTree.bitReverse(nextCode[bits - 1]);\n nextCode[bits - 1] += 1 << (16 - bits);\n }\n }\n };\n CompressorHuffmanTree.bitReverse = function (value) {\n return (CompressorHuffmanTree.reverseBits[value & 15] << 12\n | CompressorHuffmanTree.reverseBits[(value >> 4) & 15] << 8\n | CompressorHuffmanTree.reverseBits[(value >> 8) & 15] << 4\n | CompressorHuffmanTree.reverseBits[value >> 12]);\n };\n /**\n * calculate length of compressed data\n * @returns {number}\n */\n CompressorHuffmanTree.prototype.getEncodedLength = function () {\n var len = 0;\n for (var i = 0; i < this.codeFrequency.length; i++) {\n len += this.codeFrequency[i] * this.codeLength[i];\n }\n return len;\n };\n /**\n * calculate code frequencies\n * @param {CompressorHuffmanTree} blTree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.calculateBLFreq = function (blTree) {\n var maxCount;\n var minCount;\n var count;\n var curLen = -1;\n var i = 0;\n while (i < this.codeCount) {\n count = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxCount = 138;\n minCount = 3;\n }\n else {\n maxCount = 6;\n minCount = 3;\n if (curLen !== nextLen) {\n blTree.codeFrequency[nextLen]++;\n count = 0;\n }\n }\n curLen = nextLen;\n i++;\n while (i < this.codeCount && curLen === this.codeLength[i]) {\n i++;\n if (++count >= maxCount) {\n break;\n }\n }\n if (count < minCount) {\n blTree.codeFrequency[curLen] += count;\n }\n else if (curLen !== 0) {\n blTree.codeFrequency[16]++;\n }\n else if (count <= 10) {\n blTree.codeFrequency[17]++;\n }\n else {\n blTree.codeFrequency[18]++;\n }\n }\n };\n /**\n * @param {CompressorHuffmanTree} blTree - write tree to output stream\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.writeTree = function (blTree) {\n var maxRepeatCount;\n var minRepeatCount;\n var currentRepeatCount;\n var currentCodeLength = -1;\n var i = 0;\n while (i < this.codeCount) {\n currentRepeatCount = 1;\n var nextLen = this.codeLength[i];\n if (nextLen === 0) {\n maxRepeatCount = 138;\n minRepeatCount = 3;\n }\n else {\n maxRepeatCount = 6;\n minRepeatCount = 3;\n if (currentCodeLength !== nextLen) {\n blTree.writeCodeToStream(nextLen);\n currentRepeatCount = 0;\n }\n }\n currentCodeLength = nextLen;\n i++;\n while (i < this.codeCount && currentCodeLength === this.codeLength[i]) {\n i++;\n if (++currentRepeatCount >= maxRepeatCount) {\n break;\n }\n }\n if (currentRepeatCount < minRepeatCount) {\n while (currentRepeatCount-- > 0) {\n blTree.writeCodeToStream(currentCodeLength);\n }\n }\n else if (currentCodeLength !== 0) {\n blTree.writeCodeToStream(16);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 2);\n }\n else if (currentRepeatCount <= 10) {\n blTree.writeCodeToStream(17);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 3, 3);\n }\n else {\n blTree.writeCodeToStream(18);\n this.writer.pendingBufferWriteBits(currentRepeatCount - 11, 7);\n }\n }\n };\n /**\n * Build huffman tree\n * @returns {void}\n */\n CompressorHuffmanTree.prototype.buildTree = function () {\n var codesCount = this.codeFrequency.length;\n var arrTree = new Int32Array(codesCount);\n var treeLength = 0;\n var maxCount = 0;\n for (var n = 0; n < codesCount; n++) {\n var freq = this.codeFrequency[n];\n if (freq !== 0) {\n var pos = treeLength++;\n var pPos = 0;\n while (pos > 0 && this.codeFrequency[arrTree[pPos = Math.floor((pos - 1) / 2)]] > freq) {\n arrTree[pos] = arrTree[pPos];\n pos = pPos;\n }\n arrTree[pos] = n;\n maxCount = n;\n }\n }\n while (treeLength < 2) {\n arrTree[treeLength++] =\n (maxCount < 2) ? ++maxCount : 0;\n }\n this.codeCount = Math.max(maxCount + 1, this.codeMinCount);\n var leafsCount = treeLength;\n var nodesCount = leafsCount;\n var child = new Int32Array(4 * treeLength - 2);\n var values = new Int32Array(2 * treeLength - 1);\n for (var i = 0; i < treeLength; i++) {\n var node = arrTree[i];\n var iIndex = 2 * i;\n child[iIndex] = node;\n child[iIndex + 1] = -1;\n values[i] = (this.codeFrequency[node] << 8);\n arrTree[i] = i;\n }\n this.constructHuffmanTree(arrTree, treeLength, values, nodesCount, child);\n this.buildLength(child);\n };\n CompressorHuffmanTree.prototype.constructHuffmanTree = function (arrTree, treeLength, values, nodesCount, child) {\n do {\n var first = arrTree[0];\n var last = arrTree[--treeLength];\n var lastVal = values[last];\n var pPos = 0;\n var path = 1;\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n }\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n var second = arrTree[0];\n last = nodesCount++;\n child[2 * last] = first;\n child[2 * last + 1] = second;\n var minDepth = Math.min(values[first] & 0xff, values[second] & 0xff);\n values[last] = lastVal = values[first] + values[second] - minDepth + 1;\n pPos = 0;\n path = 1;\n /* tslint:disable */\n while (path < treeLength) {\n if (path + 1 < treeLength && values[arrTree[path]] > values[arrTree[path + 1]]) {\n path++;\n }\n arrTree[pPos] = arrTree[path];\n pPos = path;\n path = pPos * 2 + 1;\n } /* tslint:disable */\n while ((path = pPos) > 0 && values[arrTree[pPos = Math.floor((path - 1) / 2)]] > lastVal) {\n arrTree[path] = arrTree[pPos];\n }\n arrTree[path] = last;\n } while (treeLength > 1);\n };\n CompressorHuffmanTree.prototype.buildLength = function (child) {\n this.codeLength = new Uint8Array(this.codeFrequency.length);\n var numNodes = Math.floor(child.length / 2);\n var numLeafs = Math.floor((numNodes + 1) / 2);\n var overflow = 0;\n for (var i = 0; i < this.maxLength; i++) {\n this.lengthCount[i] = 0;\n }\n overflow = this.calculateOptimalCodeLength(child, overflow, numNodes);\n if (overflow === 0) {\n return;\n }\n var iIncreasableLength = this.maxLength - 1;\n do {\n while (this.lengthCount[--iIncreasableLength] === 0) {\n /* tslint:disable */\n }\n do {\n this.lengthCount[iIncreasableLength]--;\n this.lengthCount[++iIncreasableLength]++;\n overflow -= (1 << (this.maxLength - 1 - iIncreasableLength));\n } while (overflow > 0 && iIncreasableLength < this.maxLength - 1);\n } while (overflow > 0);\n this.recreateTree(child, overflow, numLeafs);\n };\n CompressorHuffmanTree.prototype.recreateTree = function (child, overflow, numLeafs) {\n this.lengthCount[this.maxLength - 1] += overflow;\n this.lengthCount[this.maxLength - 2] -= overflow;\n var nodePtr = 2 * numLeafs;\n for (var bits = this.maxLength; bits !== 0; bits--) {\n var n = this.lengthCount[bits - 1];\n while (n > 0) {\n var childPtr = 2 * child[nodePtr++];\n if (child[childPtr + 1] === -1) {\n this.codeLength[child[childPtr]] = bits;\n n--;\n }\n }\n }\n };\n CompressorHuffmanTree.prototype.calculateOptimalCodeLength = function (child, overflow, numNodes) {\n var lengths = new Int32Array(numNodes);\n lengths[numNodes - 1] = 0;\n for (var i = numNodes - 1; i >= 0; i--) {\n var childIndex = 2 * i + 1;\n if (child[childIndex] !== -1) {\n var bitLength = lengths[i] + 1;\n if (bitLength > this.maxLength) {\n bitLength = this.maxLength;\n overflow++;\n }\n lengths[child[childIndex - 1]] = lengths[child[childIndex]] = bitLength;\n }\n else {\n var bitLength = lengths[i];\n this.lengthCount[bitLength - 1]++;\n this.codeLength[child[childIndex - 1]] = lengths[i];\n }\n }\n return overflow;\n };\n CompressorHuffmanTree.reverseBits = [0, 8, 4, 12, 2, 10, 6, 14, 1, 9, 5, 13, 3, 11, 7, 15];\n CompressorHuffmanTree.huffCodeLengthOrders = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];\n return CompressorHuffmanTree;\n}());\n/**\n * Checksum calculator, based on Adler32 algorithm.\n */\nvar ChecksumCalculator = /** @__PURE__ @class */ (function () {\n function ChecksumCalculator() {\n }\n /**\n * Updates checksum by calculating checksum of the\n * given buffer and adding it to current value.\n * @param {number} checksum - current checksum.\n * @param {Uint8Array} buffer - data byte array.\n * @param {number} offset - offset in the buffer.\n * @param {number} length - length of data to be used from the stream.\n * @returns {number}\n */\n ChecksumCalculator.checksumUpdate = function (checksum, buffer, offset, length) {\n var uint = new Uint32Array(1);\n uint[0] = checksum;\n var checksum_uint = uint[0];\n var s1 = uint[0] = checksum_uint & 65535;\n var s2 = uint[0] = checksum_uint >> ChecksumCalculator.checkSumBitOffset;\n while (length > 0) {\n var steps = Math.min(length, ChecksumCalculator.checksumIterationCount);\n length -= steps;\n while (--steps >= 0) {\n s1 = s1 + (uint[0] = (buffer[offset++] & 255));\n s2 = s2 + s1;\n }\n s1 %= ChecksumCalculator.checksumBase;\n s2 %= ChecksumCalculator.checksumBase;\n }\n checksum_uint = (s2 << ChecksumCalculator.checkSumBitOffset) | s1;\n return checksum_uint;\n };\n ChecksumCalculator.checkSumBitOffset = 16;\n ChecksumCalculator.checksumBase = 65521;\n ChecksumCalculator.checksumIterationCount = 3800;\n return ChecksumCalculator;\n}());\n\nvar CRC32TABLE = [];\n/**\n * class provide compression library\n * ```typescript\n * let archive = new ZipArchive();\n * archive.compressionLevel = 'Normal';\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * archive.addItem(archiveItem);\n * archive.save(fileName.zip);\n * ```\n */\nvar ZipArchive = /** @__PURE__ @class */ (function () {\n /**\n * constructor for creating ZipArchive instance\n */\n function ZipArchive() {\n if (CRC32TABLE.length === 0) {\n ZipArchive.initCrc32Table();\n }\n this.files = [];\n this.level = 'Normal';\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(ZipArchive.prototype, \"compressionLevel\", {\n /**\n * gets compression level\n */\n get: function () {\n return this.level;\n },\n /**\n * sets compression level\n */\n set: function (level) {\n this.level = level;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZipArchive.prototype, \"length\", {\n /**\n * gets items count\n */\n get: function () {\n if (this.files === undefined) {\n return 0;\n }\n return this.files.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * add new item to archive\n * @param {ZipArchiveItem} item - item to be added\n * @returns {void}\n */\n ZipArchive.prototype.addItem = function (item) {\n if (item === null || item === undefined) {\n throw new Error('ArgumentException: item cannot be null or undefined');\n }\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n if (file.name === item.name) {\n throw new Error('item with same name already exist');\n }\n }\n }\n this.files.push(item);\n };\n /**\n * add new directory to archive\n * @param directoryName directoryName to be created\n * @returns {void}\n */\n ZipArchive.prototype.addDirectory = function (directoryName) {\n if (directoryName === null || directoryName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (directoryName.length === 0) {\n throw new Error('ArgumentException: string cannot be empty');\n }\n if (directoryName.slice(-1) !== '/') {\n directoryName += '/';\n }\n if (this.files.indexOf(directoryName) !== -1) {\n throw new Error('item with same name already exist');\n }\n this.files.push(directoryName);\n };\n /**\n * gets item at specified index\n * @param {number} index - item index\n * @returns {ZipArchiveItem}\n */\n ZipArchive.prototype.getItem = function (index) {\n if (index >= 0 && index < this.files.length) {\n return this.files[index];\n }\n return undefined;\n };\n /**\n * determines whether an element is in the collection\n * @param {string | ZipArchiveItem} item - item to search\n * @returns {boolean}\n */\n ZipArchive.prototype.contains = function (item) {\n return this.files.indexOf(item) !== -1 ? true : false;\n };\n /**\n * save archive with specified file name\n * @param {string} fileName save archive with specified file name\n * @returns {Promise}\n */\n ZipArchive.prototype.save = function (fileName) {\n if (fileName === null || fileName === undefined || fileName.length === 0) {\n throw new Error('ArgumentException: fileName cannot be null or undefined');\n }\n if (this.files.length === 0) {\n throw new Error('InvalidOperation');\n }\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal(fileName, false).then(function () {\n resolve(zipArchive);\n });\n });\n };\n /**\n * Save archive as blob\n * @return {Promise}\n */\n ZipArchive.prototype.saveAsBlob = function () {\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n zipArchive.saveInternal('', true).then(function (blob) {\n resolve(blob);\n });\n });\n };\n ZipArchive.prototype.saveInternal = function (fileName, skipFileSave) {\n var _this = this;\n var zipArchive = this;\n var promise;\n return promise = new Promise(function (resolve, reject) {\n var zipData = [];\n var dirLength = 0;\n for (var i = 0; i < zipArchive.files.length; i++) {\n var compressedObject = _this.getCompressedData(_this.files[i]);\n compressedObject.then(function (data) {\n dirLength = zipArchive.constructZippedObject(zipData, data, dirLength, data.isDirectory);\n if (zipData.length === zipArchive.files.length) {\n var blob = zipArchive.writeZippedContent(fileName, zipData, dirLength, skipFileSave);\n resolve(blob);\n }\n });\n }\n });\n };\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchive.prototype.destroy = function () {\n if (this.files !== undefined && this.files.length > 0) {\n for (var i = 0; i < this.files.length; i++) {\n var file = this.files[i];\n if (file instanceof ZipArchiveItem) {\n file.destroy();\n }\n file = undefined;\n }\n this.files = [];\n }\n this.files = undefined;\n this.level = undefined;\n };\n ZipArchive.prototype.getCompressedData = function (item) {\n var zipArchive = this;\n var promise = new Promise(function (resolve, reject) {\n if (item instanceof ZipArchiveItem) {\n var reader_1 = new FileReader();\n reader_1.onload = function () {\n var input = new Uint8Array(reader_1.result);\n var data = {\n fileName: item.name, crc32Value: 0, compressedData: [],\n compressedSize: undefined, uncompressedDataSize: input.length, compressionType: undefined,\n isDirectory: false\n };\n if (zipArchive.level === 'Normal') {\n zipArchive.compressData(input, data, CRC32TABLE);\n var length_1 = 0;\n for (var i = 0; i < data.compressedData.length; i++) {\n length_1 += data.compressedData[i].length;\n }\n data.compressedSize = length_1;\n data.compressionType = '\\x08\\x00'; //Deflated = 8\n }\n else {\n data.compressedSize = input.length;\n data.crc32Value = zipArchive.calculateCrc32Value(0, input, CRC32TABLE);\n data.compressionType = '\\x00\\x00'; // Stored = 0\n data.compressedData.push(input);\n }\n resolve(data);\n };\n reader_1.readAsArrayBuffer(item.data);\n }\n else {\n var data = {\n fileName: item, crc32Value: 0, compressedData: '', compressedSize: 0, uncompressedDataSize: 0,\n compressionType: '\\x00\\x00', isDirectory: true\n };\n resolve(data);\n }\n });\n return promise;\n };\n ZipArchive.prototype.compressData = function (input, data, crc32Table) {\n var compressor = new CompressedStreamWriter(true);\n var currentIndex = 0;\n var nextIndex = 0;\n do {\n if (currentIndex >= input.length) {\n compressor.close();\n break;\n }\n nextIndex = Math.min(input.length, currentIndex + 16384);\n var subArray = input.subarray(currentIndex, nextIndex);\n data.crc32Value = this.calculateCrc32Value(data.crc32Value, subArray, crc32Table);\n compressor.write(subArray, 0, nextIndex - currentIndex);\n currentIndex = nextIndex;\n } while (currentIndex <= input.length);\n data.compressedData = compressor.compressedData;\n compressor.destroy();\n };\n ZipArchive.prototype.constructZippedObject = function (zipParts, data, dirLength, isDirectory) {\n var extFileAttr = 0;\n var date = new Date();\n if (isDirectory) {\n extFileAttr = extFileAttr | 0x00010; // directory flag\n }\n extFileAttr = extFileAttr | (0 & 0x3F);\n var header = this.writeHeader(data, date);\n var localHeader = 'PK\\x03\\x04' + header + data.fileName;\n var centralDir = this.writeCentralDirectory(data, header, dirLength, extFileAttr);\n zipParts.push({ localHeader: localHeader, centralDir: centralDir, compressedData: data });\n return dirLength + localHeader.length + data.compressedSize;\n };\n ZipArchive.prototype.writeHeader = function (data, date) {\n var zipHeader = '';\n zipHeader += '\\x0A\\x00' + '\\x00\\x00'; // version needed to extract & general purpose bit flag\n zipHeader += data.compressionType; // compression method Deflate=8,Stored=0\n zipHeader += this.getBytes(this.getModifiedTime(date), 2); // last modified Time\n zipHeader += this.getBytes(this.getModifiedDate(date), 2); // last modified date\n zipHeader += this.getBytes(data.crc32Value, 4); // crc-32 value\n zipHeader += this.getBytes(data.compressedSize, 4); // compressed file size\n zipHeader += this.getBytes(data.uncompressedDataSize, 4); // uncompressed file size\n zipHeader += this.getBytes(data.fileName.length, 2); // file name length\n zipHeader += this.getBytes(0, 2); // extra field length\n return zipHeader;\n };\n ZipArchive.prototype.writeZippedContent = function (fileName, zipData, localDirLen, skipFileSave) {\n var cenDirLen = 0;\n var buffer = [];\n for (var i = 0; i < zipData.length; i++) {\n var item = zipData[i];\n cenDirLen += item.centralDir.length;\n buffer.push(this.getArrayBuffer(item.localHeader));\n while (item.compressedData.compressedData.length) {\n buffer.push(item.compressedData.compressedData.shift().buffer);\n }\n }\n for (var i = 0; i < zipData.length; i++) {\n buffer.push(this.getArrayBuffer(zipData[i].centralDir));\n }\n buffer.push(this.getArrayBuffer(this.writeFooter(zipData, cenDirLen, localDirLen)));\n var blob = new Blob(buffer, { type: 'application/zip' });\n if (!skipFileSave) {\n Save.save(fileName, blob);\n }\n return blob;\n };\n ZipArchive.prototype.writeCentralDirectory = function (data, localHeader, offset, externalFileAttribute) {\n var directoryHeader = 'PK\\x01\\x02' +\n this.getBytes(0x0014, 2) + localHeader + // inherit from file header\n this.getBytes(0, 2) + // comment length\n '\\x00\\x00' + '\\x00\\x00' + // internal file attributes \n this.getBytes(externalFileAttribute, 4) + // external file attributes\n this.getBytes(offset, 4) + // local fileHeader relative offset\n data.fileName;\n return directoryHeader;\n };\n ZipArchive.prototype.writeFooter = function (zipData, centralLength, localLength) {\n var dirEnd = 'PK\\x05\\x06' + '\\x00\\x00' + '\\x00\\x00' +\n this.getBytes(zipData.length, 2) + this.getBytes(zipData.length, 2) +\n this.getBytes(centralLength, 4) + this.getBytes(localLength, 4) +\n this.getBytes(0, 2);\n return dirEnd;\n };\n ZipArchive.prototype.getArrayBuffer = function (input) {\n var a = new Uint8Array(input.length);\n for (var j = 0; j < input.length; ++j) {\n a[j] = input.charCodeAt(j) & 0xFF;\n }\n return a.buffer;\n };\n ZipArchive.prototype.getBytes = function (value, offset) {\n var bytes = '';\n for (var i = 0; i < offset; i++) {\n bytes += String.fromCharCode(value & 0xff);\n value = value >>> 8;\n }\n return bytes;\n };\n ZipArchive.prototype.getModifiedTime = function (date) {\n var modTime = date.getHours();\n modTime = modTime << 6;\n modTime = modTime | date.getMinutes();\n modTime = modTime << 5;\n return modTime = modTime | date.getSeconds() / 2;\n };\n ZipArchive.prototype.getModifiedDate = function (date) {\n var modiDate = date.getFullYear() - 1980;\n modiDate = modiDate << 4;\n modiDate = modiDate | (date.getMonth() + 1);\n modiDate = modiDate << 5;\n return modiDate = modiDate | date.getDate();\n };\n ZipArchive.prototype.calculateCrc32Value = function (crc32Value, input, crc32Table) {\n crc32Value ^= -1;\n for (var i = 0; i < input.length; i++) {\n crc32Value = (crc32Value >>> 8) ^ crc32Table[(crc32Value ^ input[i]) & 0xFF];\n }\n return (crc32Value ^ (-1));\n };\n /**\n * construct cyclic redundancy code table\n * @private\n */\n ZipArchive.initCrc32Table = function () {\n var i;\n for (var j = 0; j < 256; j++) {\n i = j;\n for (var k = 0; k < 8; k++) {\n i = ((i & 1) ? (0xEDB88320 ^ (i >>> 1)) : (i >>> 1));\n }\n CRC32TABLE[j] = i;\n }\n };\n return ZipArchive;\n}());\n/**\n * Class represent unique ZipArchive item\n * ```typescript\n * let archiveItem = new ZipArchiveItem(archive, 'directoryName\\fileName.txt');\n * ```\n */\nvar ZipArchiveItem = /** @__PURE__ @class */ (function () {\n /**\n * constructor for creating {ZipArchiveItem} instance\n * @param {Blob|ArrayBuffer} data file data\n * @param {itemName} itemName absolute file path\n */\n function ZipArchiveItem(data, itemName) {\n if (data === null || data === undefined) {\n throw new Error('ArgumentException: data cannot be null or undefined');\n }\n if (itemName === null || itemName === undefined) {\n throw new Error('ArgumentException: string cannot be null or undefined');\n }\n if (itemName.length === 0) {\n throw new Error('string cannot be empty');\n }\n this.data = data;\n this.name = itemName;\n }\n Object.defineProperty(ZipArchiveItem.prototype, \"name\", {\n /**\n * Get the name of archive item\n * @returns string\n */\n get: function () {\n return this.fileName;\n },\n /**\n * Set the name of archive item\n * @param {string} value\n */\n set: function (value) {\n this.fileName = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * release allocated un-managed resource\n * @returns {void}\n */\n ZipArchiveItem.prototype.destroy = function () {\n this.fileName = undefined;\n this.data = undefined;\n };\n return ZipArchiveItem;\n}());\n\n/**\n * export ZipArchive class\n */\n\nexport { ZipArchive, ZipArchiveItem, CompressedStreamWriter, CompressorHuffmanTree, ChecksumCalculator };\n","import { Ajax, extend, getValue, isNullOrUndefined, merge, setValue } from '@syncfusion/ej2-base';\n\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Query class.\n * @param {string|string[]} from?\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Predicate class.\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var isAnd;\n var ret;\n if (!this.isComplex && this.comparer) {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n isAnd = this.condition === 'and';\n for (var i = 0; i < predicate.length; i++) {\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\n\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n * @hidden\n */\nvar DataUtil = /** @__PURE__ @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string starts with given string.\n * @param {string} str\n * @param {string} startstr\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * To return the sorting function based on the string.\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n return from[nameSpace];\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n * @param {Object[]} json\n * @param {string} field\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n * @param {string} datamanager\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n var result = sampledata.executeLocal(query);\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition == 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition == 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition == 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n * @param {string} er\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n * @param {Object[]} ds\n * @param {string} field?\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the given input value is not null.\n * @param {string|number} actual\n * @returns boolean\n */\n notnull: function (actual) {\n return actual !== null;\n },\n /**\n * Returns true when the given input value is null.\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null;\n },\n /**\n * Returns true when the actual input starts with the given string\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string') {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n }\n else if (typeof array[i] === 'string' && !/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i])) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n * @param {string} value\n */\n isGuid: function (value) {\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n * @param {string} key\n * @param {Object} val\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, (((value.getTimezoneOffset() / 60) * 2)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar consts$1 = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n * @hidden\n */\nvar Adaptor = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Adaptor class\n * @param {DataOptions} ds?\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors \n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n * @hidden\n */\nvar JsonAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n * @param {Object[]} ds\n * @param {{field:string} e\n * @param {string}} type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n * @param {Object[]} ds\n * @param {{comparer:(a:Object} e\n * @param {Object} b\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n * @param {Object[]} ds\n * @param {{pageSize:number} e\n * @param {number}} pageIndex\n * @param {Query} query\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n * @param {Object[]} ds\n * @param {{start:number} e\n * @param {number}} end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n * @param {Object[]} ds\n * @param {{nos:number}} e\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n * @hidden\n */\nvar UrlAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = \"(\" + res + \")\";\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.getResponseHeader('Content-Type') &&\n xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts$1[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n * @hidden\n */\nvar ODataAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, \"''\");\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n operator = DataUtil.odBiOperator[predicate.operator];\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.options.multipartAccept);\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.setRequestHeader('Accept', this.options.accept);\n }\n request.setRequestHeader('DataServiceVersion', '2.0');\n request.setRequestHeader('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n * @param {Object} req\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.getResponseHeader('Content-Type') && xhr.getResponseHeader('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.getResponseHeader('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n * @hidden\n */\nvar ODataV4Adaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n * @param {{fields:string[]} e\n * @param {string} operator\n * @param {string} key\n * @param {boolean}} ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length == 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n * @param {string} e\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.setRequestHeader('Prefer', 'return=representation');\n }\n request.setRequestHeader('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaName]) {\n var dataUrl = data[metaName].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n * @hidden\n */\nvar WebApiAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation \n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.setRequestHeader('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.getResponseHeader('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n * @hidden\n */\nvar WebMethodAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\n/**\n * Ajax Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n * @hidden\n */\nvar CustomDataAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n * @hidden\n */\nvar GraphQLAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n * @param {DataManager} dm\n * @param {Query} query?\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Object} request?\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n * @hidden\n */\nvar CacheAdaptor = /** @__PURE__ @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data;\n data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n * @param {string} url\n * @param {Query} query?\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems;\n cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {XMLHttpRequest} xhr?\n * @param {Ajax} request?\n * @param {CrudOptions} changes?\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n * @param {DataManager} dm\n * @param {XMLHttpRequest} request\n * @param {Ajax} settings?\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.setRequestHeader('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\n\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for DataManager class\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.requests = [];\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Overrides DataManager's default query with given query.\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n (window.setImmediate || window.setTimeout)(fn, 0);\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n if (!isNullOrUndefined(data['errors'])) {\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.ajaxReqOption, request);\n }\n if (request.httpRequest.getResponseHeader('Content-Type').indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.httpRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.httpRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_1 = new Ajax(req);\n ajax_1.beforeSend = function () {\n _this.beforeSend(ajax_1.httpRequest, ajax_1);\n };\n req = ajax_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests. \n this.requests.push(ajax_1);\n }\n else {\n this.ajaxReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].httpRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].httpRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].httpRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.setRequestHeader(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var ajax_2 = new Ajax(req);\n ajax_2.beforeSend = function () {\n _this.beforeSend(ajax_2.httpRequest, ajax_2);\n };\n ajax_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n if (!isNullOrUndefined(data['errors'])) {\n ajax_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.httpRequest, request, changes, args));\n };\n ajax_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n ajax_2.send().catch(function (e) { return true; }); // to handle the failure requests. \n return deff_1.promise;\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](req);\n }\n else {\n return this.doAjaxRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.doAjaxRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var doAjaxRequest = 'doAjaxRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[doAjaxRequest])) {\n return this.adaptor[doAjaxRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.doAjaxRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n if (!isNullOrUndefined(data['errors'])) {\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.ajaxReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.httpRequest, request);\n this.ajaxDeffered.resolve(record);\n };\n \n DataManager.prototype.failureFunc = function (e) {\n this.ajaxDeffered.reject([{ error: e }]);\n };\n \n DataManager.prototype.doAjaxRequest = function (res, ajaxFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.ajaxDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var ajax_3 = new Ajax(res);\n ajax_3.beforeSend = function () {\n _this.beforeSend(ajax_3.httpRequest, ajax_3);\n };\n ajax_3.onSuccess = this.successFunc.bind(this);\n ajax_3.onFailure = this.failureFunc.bind(this);\n ajax_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.ajaxReqOption = res;\n ajaxFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.ajaxDeffered.promise;\n };\n return DataManager;\n}());\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @__PURE__ @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\n\n/**\n * Data modules\n */\n\nexport { DataManager, Deferred, Query, Predicate, Adaptor, JsonAdaptor, UrlAdaptor, ODataAdaptor, ODataV4Adaptor, WebApiAdaptor, WebMethodAdaptor, RemoteSaveAdaptor, CustomDataAdaptor, GraphQLAdaptor, CacheAdaptor, DataUtil };\n","import { Browser, ChildProperty, Collection, ComplexFactory, Property, createElement } from '@syncfusion/ej2-base';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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/** @private */\nvar getGradientType = function (obj) {\n switch (obj.type) {\n case 'Linear':\n return LinearGradient;\n case 'Radial':\n return RadialGradient;\n default:\n return LinearGradient;\n }\n};\n/**\n * Layout Model module defines the styles and types to arrange objects in containers\n */\nvar Thickness = /** @__PURE__ @class */ (function () {\n function Thickness(left, right, top, bottom) {\n this.left = left;\n this.right = right;\n this.top = top;\n this.bottom = bottom;\n }\n return Thickness;\n}());\n/**\n * Defines the space to be left between an object and its immediate parent\n */\nvar Margin = /** @__PURE__ @class */ (function (_super) {\n __extends(Margin, _super);\n function Margin() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Margin.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], Margin.prototype, \"bottom\", void 0);\n return Margin;\n}(ChildProperty));\n/**\n * Defines the different colors and the region of color transitions\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: RadialGradientModel = { cx: 50, cy: 50, fx: 50, fy: 50, stops: stopscol, type: 'Radial' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar Stop = /** @__PURE__ @class */ (function (_super) {\n __extends(Stop, _super);\n function Stop() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @private\n * Returns the name of class Stop\n */\n Stop.prototype.getClassName = function () {\n return 'Stop';\n };\n __decorate([\n Property('')\n ], Stop.prototype, \"color\", void 0);\n __decorate([\n Property(0)\n ], Stop.prototype, \"offset\", void 0);\n __decorate([\n Property(1)\n ], Stop.prototype, \"opacity\", void 0);\n return Stop;\n}(ChildProperty));\n/**\n * Paints the node with a smooth transition from one color to another color\n */\nvar Gradient = /** @__PURE__ @class */ (function (_super) {\n __extends(Gradient, _super);\n function Gradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Collection([], Stop)\n ], Gradient.prototype, \"stops\", void 0);\n __decorate([\n Property('None')\n ], Gradient.prototype, \"type\", void 0);\n __decorate([\n Property('')\n ], Gradient.prototype, \"id\", void 0);\n return Gradient;\n}(ChildProperty));\n/**\n * Defines the linear gradient of styles\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: LinearGradientModel = { x1: 0, x2: 50, y1: 0, y2: 50, stops: stopscol, type: 'Linear' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\n/**\n * Paints the node with linear color transitions\n */\nvar LinearGradient = /** @__PURE__ @class */ (function (_super) {\n __extends(LinearGradient, _super);\n function LinearGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"x1\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"x2\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"y1\", void 0);\n __decorate([\n Property(0)\n ], LinearGradient.prototype, \"y2\", void 0);\n return LinearGradient;\n}(Gradient));\n/**\n * A focal point defines the beginning of the gradient, and a circle defines the end point of the gradient\n * ```html\n *
\n * ```\n * ```typescript\n * let stopscol: StopModel[] = [];\n * let stops1: StopModel = { color: 'white', offset: 0, opacity: 0.7 };\n * stopscol.push(stops1);\n * let stops2: StopModel = { color: 'red', offset: 0, opacity: 0.3 };\n * stopscol.push(stops2);\n * let gradient: RadialGradientModel = { cx: 50, cy: 50, fx: 50, fy: 50, stops: stopscol, type: 'Radial' };\n * let nodes: NodeModel[] = [{ id: 'node1', width: 100, height: 100,\n * style: { gradient: gradient }\n * }];\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: nodes,\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar RadialGradient = /** @__PURE__ @class */ (function (_super) {\n __extends(RadialGradient, _super);\n function RadialGradient() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"cx\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"cy\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"fx\", void 0);\n __decorate([\n Property(0)\n ], RadialGradient.prototype, \"fy\", void 0);\n __decorate([\n Property(50)\n ], RadialGradient.prototype, \"r\", void 0);\n return RadialGradient;\n}(Gradient));\n/**\n * Defines the style of shape/path\n */\nvar ShapeStyle = /** @__PURE__ @class */ (function (_super) {\n __extends(ShapeStyle, _super);\n function ShapeStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('white')\n ], ShapeStyle.prototype, \"fill\", void 0);\n __decorate([\n Property('black')\n ], ShapeStyle.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('')\n ], ShapeStyle.prototype, \"strokeDashArray\", void 0);\n __decorate([\n Property(1)\n ], ShapeStyle.prototype, \"strokeWidth\", void 0);\n __decorate([\n Property(1)\n ], ShapeStyle.prototype, \"opacity\", void 0);\n __decorate([\n ComplexFactory(getGradientType)\n ], ShapeStyle.prototype, \"gradient\", void 0);\n return ShapeStyle;\n}(ChildProperty));\n/**\n * Defines the stroke style of a path\n */\nvar StrokeStyle = /** @__PURE__ @class */ (function (_super) {\n __extends(StrokeStyle, _super);\n function StrokeStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('transparent')\n ], StrokeStyle.prototype, \"fill\", void 0);\n return StrokeStyle;\n}(ShapeStyle));\n/**\n * Defines the appearance of text\n * ```html\n *
\n * ```\n * ```typescript\n * let style: TextStyleModel = { strokeColor: 'black', opacity: 0.5, strokeWidth: 1 };\n * let node: NodeModel;\n * node = {\n * ...\n * id: 'node', width: 100, height: 100, offsetX: 100, offsetY: 100,\n * annotations : [{\n * content: 'text', style: style }];\n * ...\n * };\n * let diagram: Diagram = new Diagram({\n * ...\n * nodes: [node],\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\nvar TextStyle = /** @__PURE__ @class */ (function (_super) {\n __extends(TextStyle, _super);\n function TextStyle() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('black')\n ], TextStyle.prototype, \"color\", void 0);\n __decorate([\n Property('Arial')\n ], TextStyle.prototype, \"fontFamily\", void 0);\n __decorate([\n Property(12)\n ], TextStyle.prototype, \"fontSize\", void 0);\n __decorate([\n Property(false)\n ], TextStyle.prototype, \"italic\", void 0);\n __decorate([\n Property(false)\n ], TextStyle.prototype, \"bold\", void 0);\n __decorate([\n Property('CollapseSpace')\n ], TextStyle.prototype, \"whiteSpace\", void 0);\n __decorate([\n Property('WrapWithOverflow')\n ], TextStyle.prototype, \"textWrapping\", void 0);\n __decorate([\n Property('Center')\n ], TextStyle.prototype, \"textAlign\", void 0);\n __decorate([\n Property('None')\n ], TextStyle.prototype, \"textDecoration\", void 0);\n __decorate([\n Property('Wrap')\n ], TextStyle.prototype, \"textOverflow\", void 0);\n __decorate([\n Property('transparent')\n ], TextStyle.prototype, \"fill\", void 0);\n return TextStyle;\n}(ShapeStyle));\n\n/**\n * enum module defines the public enumerations\n */\n/**\n * Defines the container/canvas transform\n * Self - Sets the transform type as Self\n * Parent - Sets the transform type as Parent\n */\nvar RotateTransform;\n(function (RotateTransform) {\n /** Self - Sets the transform type as Self */\n RotateTransform[RotateTransform[\"Self\"] = 1] = \"Self\";\n /** Parent - Sets the transform type as Parent */\n RotateTransform[RotateTransform[\"Parent\"] = 2] = \"Parent\";\n})(RotateTransform || (RotateTransform = {}));\n/** Enables/Disables The element actions\n * None - Diables all element actions are none\n * ElementIsPort - Enable element action is port\n * ElementIsGroup - Enable element action as Group\n * @private\n */\nvar ElementAction;\n(function (ElementAction) {\n /** Disables all element actions are none */\n ElementAction[ElementAction[\"None\"] = 0] = \"None\";\n /** Enable the element action is Port */\n ElementAction[ElementAction[\"ElementIsPort\"] = 2] = \"ElementIsPort\";\n /** Enable the element action as Group */\n ElementAction[ElementAction[\"ElementIsGroup\"] = 4] = \"ElementIsGroup\";\n})(ElementAction || (ElementAction = {}));\n/**\n * Defines the constraints to enable/disable certain features of connector.\n * * None - Interaction of the connectors cannot be done.\n * * Select - Selects the connector.\n * * Delete - Delete the connector.\n * * Drag - Drag the connector.\n * * DragSourceEnd - Drag the source end of the connector.\n * * DragTargetEnd - Drag the target end of the connector.\n * * DragSegmentThump - Drag the segment thumb of the connector.\n * * AllowDrop - Allow to drop a node.\n * * Bridging - Creates bridge on intersection of two connectors.\n * * BridgeObstacle -\n * * InheritBridging - Creates bridge on intersection of two connectors.\n * * PointerEvents - Sets the pointer events.\n * * Tooltip - Displays a tooltip for the connectors.\n * * InheritToolTip - Displays a tooltip for the connectors.\n * * Interaction - Features of the connector used for interaction.\n * * ReadOnly - Enables ReadOnly\n * * Default - Default features of the connector.\n * @aspNumberEnum\n * @IgnoreSingular\n */\nvar ConnectorConstraints;\n(function (ConnectorConstraints) {\n /** Disable all connector Constraints. */\n ConnectorConstraints[ConnectorConstraints[\"None\"] = 1] = \"None\";\n /** Enables connector to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"Select\"] = 2] = \"Select\";\n /** Enables connector to be Deleted. */\n ConnectorConstraints[ConnectorConstraints[\"Delete\"] = 4] = \"Delete\";\n /** Enables connector to be Dragged. */\n ConnectorConstraints[ConnectorConstraints[\"Drag\"] = 8] = \"Drag\";\n /** Enables connectors source end to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"DragSourceEnd\"] = 16] = \"DragSourceEnd\";\n /** Enables connectors target end to be selected. */\n ConnectorConstraints[ConnectorConstraints[\"DragTargetEnd\"] = 32] = \"DragTargetEnd\";\n /** Enables control point and end point of every segment in a connector for editing. */\n ConnectorConstraints[ConnectorConstraints[\"DragSegmentThumb\"] = 64] = \"DragSegmentThumb\";\n /** Enables AllowDrop constraints to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"AllowDrop\"] = 128] = \"AllowDrop\";\n /** Enables bridging to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"Bridging\"] = 256] = \"Bridging\";\n /** Enables or Disables Bridge Obstacles with overlapping of connectors. */\n ConnectorConstraints[ConnectorConstraints[\"BridgeObstacle\"] = 512] = \"BridgeObstacle\";\n /** Enables bridging to the connector. */\n ConnectorConstraints[ConnectorConstraints[\"InheritBridging\"] = 1024] = \"InheritBridging\";\n /** Used to set the pointer events. */\n ConnectorConstraints[ConnectorConstraints[\"PointerEvents\"] = 2048] = \"PointerEvents\";\n /** Enables or disables tool tip for the connectors */\n ConnectorConstraints[ConnectorConstraints[\"Tooltip\"] = 4096] = \"Tooltip\";\n /** Enables or disables tool tip for the connectors */\n ConnectorConstraints[ConnectorConstraints[\"InheritTooltip\"] = 8192] = \"InheritTooltip\";\n /** Enables Interaction. */\n ConnectorConstraints[ConnectorConstraints[\"Interaction\"] = 4218] = \"Interaction\";\n /** Enables ReadOnly */\n ConnectorConstraints[ConnectorConstraints[\"ReadOnly\"] = 16384] = \"ReadOnly\";\n /** Enables all constraints. */\n ConnectorConstraints[ConnectorConstraints[\"Default\"] = 11838] = \"Default\";\n})(ConnectorConstraints || (ConnectorConstraints = {}));\n/** Enables/Disables the handles of the selector\n * Rotate - Enable Rotate Thumb\n * ConnectorSource - Enable Connector source point\n * ConnectorTarget - Enable Connector target point\n * ResizeNorthEast - Enable ResizeNorthEast Resize\n * ResizeEast - Enable ResizeEast Resize\n * ResizeSouthEast - Enable ResizeSouthEast Resize\n * ResizeSouth - Enable ResizeSouth Resize\n * ResizeSouthWest - Enable ResizeSouthWest Resize\n * ResizeWest - Enable ResizeWest Resize\n * ResizeNorthWest - Enable ResizeNorthWest Resize\n * ResizeNorth - Enable ResizeNorth Resize\n * Default - Enables all constraints\n * @private\n */\nvar ThumbsConstraints;\n(function (ThumbsConstraints) {\n /** Enable Rotate Thumb */\n ThumbsConstraints[ThumbsConstraints[\"Rotate\"] = 2] = \"Rotate\";\n /** Enable Connector source point */\n ThumbsConstraints[ThumbsConstraints[\"ConnectorSource\"] = 4] = \"ConnectorSource\";\n /** Enable Connector target point */\n ThumbsConstraints[ThumbsConstraints[\"ConnectorTarget\"] = 8] = \"ConnectorTarget\";\n /** Enable ResizeNorthEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorthEast\"] = 16] = \"ResizeNorthEast\";\n /** Enable ResizeEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeEast\"] = 32] = \"ResizeEast\";\n /** Enable ResizeSouthEast Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouthEast\"] = 64] = \"ResizeSouthEast\";\n /** Enable ResizeSouth Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouth\"] = 128] = \"ResizeSouth\";\n /** Enable ResizeSouthWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeSouthWest\"] = 256] = \"ResizeSouthWest\";\n /** Enable ResizeWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeWest\"] = 512] = \"ResizeWest\";\n /** Enable ResizeNorthWest Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorthWest\"] = 1024] = \"ResizeNorthWest\";\n /** Enable ResizeNorth Resize */\n ThumbsConstraints[ThumbsConstraints[\"ResizeNorth\"] = 2048] = \"ResizeNorth\";\n /** Enables all constraints */\n ThumbsConstraints[ThumbsConstraints[\"Default\"] = 4094] = \"Default\";\n})(ThumbsConstraints || (ThumbsConstraints = {}));\n/**\n * Defines the visibility of the selector handles\n * None - Hides all the selector elements\n * ConnectorSourceThumb - Shows/hides the source thumb of the connector\n * ConnectorTargetThumb - Shows/hides the target thumb of the connector\n * ResizeSouthEast - Shows/hides the bottom right resize handle of the selector\n * ResizeSouthWest - Shows/hides the bottom left resize handle of the selector\n * ResizeNorthEast - Shows/hides the top right resize handle of the selector\n * ResizeNorthWest - Shows/hides the top left resize handle of the selector\n * ResizeEast - Shows/hides the middle right resize handle of the selector\n * ResizeWest - Shows/hides the middle left resize handle of the selector\n * ResizeSouth - Shows/hides the bottom center resize handle of the selector\n * ResizeNorth - Shows/hides the top center resize handle of the selector\n * Rotate - Shows/hides the rotate handle of the selector\n * UserHandles - Shows/hides the user handles of the selector\n * Resize - Shows/hides all resize handles of the selector\n * @aspNumberEnum\n * @IgnoreSingular\n */\nvar SelectorConstraints;\n(function (SelectorConstraints) {\n /** Hides all the selector elements */\n SelectorConstraints[SelectorConstraints[\"None\"] = 1] = \"None\";\n /** Shows/hides the source thumb of the connector */\n SelectorConstraints[SelectorConstraints[\"ConnectorSourceThumb\"] = 2] = \"ConnectorSourceThumb\";\n /** Shows/hides the target thumb of the connector */\n SelectorConstraints[SelectorConstraints[\"ConnectorTargetThumb\"] = 4] = \"ConnectorTargetThumb\";\n /** Shows/hides the bottom right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouthEast\"] = 8] = \"ResizeSouthEast\";\n /** Shows/hides the bottom left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouthWest\"] = 16] = \"ResizeSouthWest\";\n /** Shows/hides the top right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorthEast\"] = 32] = \"ResizeNorthEast\";\n /** Shows/hides the top left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorthWest\"] = 64] = \"ResizeNorthWest\";\n /** Shows/hides the middle right resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeEast\"] = 128] = \"ResizeEast\";\n /** Shows/hides the middle left resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeWest\"] = 256] = \"ResizeWest\";\n /** Shows/hides the bottom center resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeSouth\"] = 512] = \"ResizeSouth\";\n /** Shows/hides the top center resize handle of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeNorth\"] = 1024] = \"ResizeNorth\";\n /** Shows/hides the rotate handle of the selector */\n SelectorConstraints[SelectorConstraints[\"Rotate\"] = 2048] = \"Rotate\";\n /** Shows/hides the user handles of the selector */\n SelectorConstraints[SelectorConstraints[\"UserHandle\"] = 4096] = \"UserHandle\";\n /** Shows/hides the default tooltip of nodes and connectors */\n SelectorConstraints[SelectorConstraints[\"ToolTip\"] = 8192] = \"ToolTip\";\n /** Shows/hides all resize handles of the selector */\n SelectorConstraints[SelectorConstraints[\"ResizeAll\"] = 2046] = \"ResizeAll\";\n /** Shows all handles of the selector */\n SelectorConstraints[SelectorConstraints[\"All\"] = 16382] = \"All\";\n})(SelectorConstraints || (SelectorConstraints = {}));\n/** @private */\nvar NoOfSegments;\n(function (NoOfSegments) {\n NoOfSegments[NoOfSegments[\"Zero\"] = 0] = \"Zero\";\n NoOfSegments[NoOfSegments[\"One\"] = 1] = \"One\";\n NoOfSegments[NoOfSegments[\"Two\"] = 2] = \"Two\";\n NoOfSegments[NoOfSegments[\"Three\"] = 3] = \"Three\";\n NoOfSegments[NoOfSegments[\"Four\"] = 4] = \"Four\";\n NoOfSegments[NoOfSegments[\"Five\"] = 5] = \"Five\";\n})(NoOfSegments || (NoOfSegments = {}));\n\n/**\n * Size defines and processes the size(width/height) of the objects\n */\nvar Size = /** @__PURE__ @class */ (function () {\n function Size(width, height) {\n this.width = width;\n this.height = height;\n }\n // /** @private */\n // public isEmpty(): boolean {\n // return this.height === 0 && this.width === 0;\n // }\n /** @private */\n Size.prototype.clone = function () {\n return new Size(this.width, this.height);\n };\n return Size;\n}());\n\n/**\n * Rect defines and processes rectangular regions\n */\nvar Rect = /** @__PURE__ @class */ (function () {\n function Rect(x, y, width, height) {\n /**\n * Sets the x-coordinate of the starting point of a rectangular region\n * @default 0\n */\n this.x = Number.MAX_VALUE;\n /**\n * Sets the y-coordinate of the starting point of a rectangular region\n * @default 0\n */\n this.y = Number.MAX_VALUE;\n /**\n * Sets the width of a rectangular region\n * @default 0\n */\n this.width = 0;\n /**\n * Sets the height of a rectangular region\n * @default 0\n */\n this.height = 0;\n if (x === undefined || y === undefined) {\n x = y = Number.MAX_VALUE;\n width = height = 0;\n }\n else {\n if (width === undefined) {\n width = 0;\n }\n if (height === undefined) {\n height = 0;\n }\n }\n this.x = x;\n this.y = y;\n this.width = width;\n this.height = height;\n }\n Object.defineProperty(Rect.prototype, \"left\", {\n /** @private */\n get: function () {\n return this.x;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"right\", {\n /** @private */\n get: function () {\n return this.x + this.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"top\", {\n /** @private */\n get: function () {\n return this.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottom\", {\n /** @private */\n get: function () {\n return this.y + this.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"topLeft\", {\n /** @private */\n get: function () {\n return { x: this.left, y: this.top };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"topRight\", {\n /** @private */\n get: function () {\n return { x: this.right, y: this.top };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottomLeft\", {\n /** @private */\n get: function () {\n return { x: this.left, y: this.bottom };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottomRight\", {\n /** @private */\n get: function () {\n return { x: this.right, y: this.bottom };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"middleLeft\", {\n /** @private */\n get: function () {\n return { x: this.left, y: this.y + this.height / 2 };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"middleRight\", {\n /** @private */\n get: function () {\n return { x: this.right, y: this.y + this.height / 2 };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"topCenter\", {\n /** @private */\n get: function () {\n return { x: this.x + this.width / 2, y: this.top };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"bottomCenter\", {\n /** @private */\n get: function () {\n return { x: this.x + this.width / 2, y: this.bottom };\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rect.prototype, \"center\", {\n /** @private */\n get: function () {\n return { x: this.x + this.width / 2, y: this.y + this.height / 2 };\n },\n enumerable: true,\n configurable: true\n });\n /** @private */\n Rect.prototype.equals = function (rect1, rect2) {\n return rect1.x === rect2.x && rect1.y === rect2.y && rect1.width === rect2.width && rect1.height === rect2.height;\n };\n /** @private */\n Rect.prototype.uniteRect = function (rect) {\n var right = Math.max(Number.NaN === this.right || this.x === Number.MAX_VALUE ? rect.right : this.right, rect.right);\n var bottom = Math.max(Number.NaN === this.bottom || this.y === Number.MAX_VALUE ? rect.bottom : this.bottom, rect.bottom);\n this.x = Math.min(this.left, rect.left);\n this.y = Math.min(this.top, rect.top);\n this.width = right - this.x;\n this.height = bottom - this.y;\n return this;\n };\n /** @private */\n Rect.prototype.unitePoint = function (point) {\n if (this.x === Number.MAX_VALUE) {\n this.x = point.x;\n this.y = point.y;\n return;\n }\n var x = Math.min(this.left, point.x);\n var y = Math.min(this.top, point.y);\n var right = Math.max(this.right, point.x);\n var bottom = Math.max(this.bottom, point.y);\n this.x = x;\n this.y = y;\n this.width = right - this.x;\n this.height = bottom - this.y;\n };\n Rect.prototype.intersection = function (rect) {\n if (this.intersects(rect)) {\n var left = Math.max(this.left, rect.left);\n var top_1 = Math.max(this.top, rect.top);\n var right = Math.min(this.right, rect.right);\n var bottom = Math.min(this.bottom, rect.bottom);\n return new Rect(left, top_1, right - left, bottom - top_1);\n }\n return Rect.empty;\n };\n /** @private */\n Rect.prototype.Inflate = function (padding) {\n this.x -= padding;\n this.y -= padding;\n this.width += padding * 2;\n this.height += padding * 2;\n return this;\n };\n // public Inflate(size: Size): Rect {\n // this.x -= size.Width;\n // this.y -= size.Height;\n // this.width += size.Width * 2;\n // this.height += size.Height * 2;\n // return this;\n // }\n // public inflate(width: number, height: number): void {\n // this.x -= width;\n // this.y -= height;\n // this.width += width * 2;\n // this.height += height * 2;\n // }\n /** @private */\n Rect.prototype.intersects = function (rect) {\n if (this.right < rect.left || this.left > rect.right || this.top > rect.bottom || this.bottom < rect.top) {\n return false;\n }\n return true;\n };\n /** @private */\n Rect.prototype.containsRect = function (rect) {\n return this.left <= rect.left && this.right >= rect.right && this.top <= rect.top && this.bottom >= rect.bottom;\n };\n /** @private */\n Rect.prototype.containsPoint = function (point, padding) {\n if (padding === void 0) { padding = 0; }\n return this.left - padding <= point.x && this.right + padding >= point.x\n && this.top - padding <= point.y && this.bottom + padding >= point.y;\n };\n Rect.prototype.toPoints = function () {\n var points = [];\n points.push(this.topLeft);\n points.push(this.topRight);\n points.push(this.bottomLeft);\n points.push(this.bottomRight);\n return points;\n };\n /** @private */\n Rect.toBounds = function (points) {\n var rect = new Rect();\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var pt = points_1[_i];\n rect.unitePoint(pt);\n }\n return rect;\n };\n Rect.prototype.scale = function (scaleX, scaleY) {\n this.width *= scaleX;\n this.height *= scaleY;\n };\n Rect.prototype.offset = function (offsetX, offsetY) {\n this.x += offsetX;\n this.y += offsetY;\n };\n /** @private */\n Rect.empty = new Rect(Number.MAX_VALUE, Number.MIN_VALUE, 0, 0);\n return Rect;\n}());\n\n/**\n * Matrix module is used to transform points based on offsets, angle\n */\n/** @private */\nvar MatrixTypes;\n(function (MatrixTypes) {\n MatrixTypes[MatrixTypes[\"Identity\"] = 0] = \"Identity\";\n MatrixTypes[MatrixTypes[\"Translation\"] = 1] = \"Translation\";\n MatrixTypes[MatrixTypes[\"Scaling\"] = 2] = \"Scaling\";\n MatrixTypes[MatrixTypes[\"Unknown\"] = 4] = \"Unknown\";\n})(MatrixTypes || (MatrixTypes = {}));\n/** @private */\nvar Matrix = /** @__PURE__ @class */ (function () {\n function Matrix(m11, m12, m21, m22, offsetX, offsetY, type) {\n this.m11 = m11;\n this.m12 = m12;\n this.m21 = m21;\n this.m22 = m22;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n // if (type === undefined) {\n // this.type = MatrixTypes.Unknown;\n // } else {\n // this.type = type;\n // }\n this.type = type;\n }\n return Matrix;\n}());\n/** @private */\nfunction identityMatrix() {\n return new Matrix(1, 0, 0, 1, 0, 0, MatrixTypes.Identity);\n}\n/** @private */\nfunction transformPointByMatrix(matrix, point) {\n var pt = multiplyPoint(matrix, point.x, point.y);\n return { x: Math.round(pt.x * 100) / 100, y: Math.round(pt.y * 100) / 100 };\n}\n/** @private */\nfunction transformPointsByMatrix(matrix, points) {\n var transformedPoints = [];\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n transformedPoints.push(transformPointByMatrix(matrix, point));\n }\n return transformedPoints;\n}\n/** @private */\nfunction rotateMatrix(matrix, angle, centerX, centerY) {\n angle %= 360.0;\n multiplyMatrix(matrix, createRotationRadians(angle * 0.017453292519943295, centerX ? centerX : 0, centerY ? centerY : 0));\n}\n/** @private */\nfunction scaleMatrix(matrix, scaleX, scaleY, centerX, centerY) {\n if (centerX === void 0) { centerX = 0; }\n if (centerY === void 0) { centerY = 0; }\n multiplyMatrix(matrix, createScaling(scaleX, scaleY, centerX, centerY));\n}\n/** @private */\nfunction translateMatrix(matrix, offsetX, offsetY) {\n if (matrix.type & MatrixTypes.Identity) {\n matrix.type = MatrixTypes.Translation;\n setMatrix(matrix, 1.0, 0.0, 0.0, 1.0, offsetX, offsetY);\n return;\n }\n if (matrix.type & MatrixTypes.Unknown) {\n matrix.offsetX += offsetX;\n matrix.offsetY += offsetY;\n return;\n }\n matrix.offsetX += offsetX;\n matrix.offsetY += offsetY;\n matrix.type |= MatrixTypes.Translation;\n}\n/** @private */\nfunction createScaling(scaleX, scaleY, centerX, centerY) {\n var result = identityMatrix();\n result.type = !(centerX || centerY) ? MatrixTypes.Scaling : MatrixTypes.Scaling | MatrixTypes.Translation;\n setMatrix(result, scaleX, 0.0, 0.0, scaleY, centerX - scaleX * centerX, centerY - scaleY * centerY);\n return result;\n}\n/** @private */\nfunction createRotationRadians(angle, centerX, centerY) {\n var result = identityMatrix();\n var num = Math.sin(angle);\n var num2 = Math.cos(angle);\n var offsetX = centerX * (1.0 - num2) + centerY * num;\n var offsetY = centerY * (1.0 - num2) - centerX * num;\n result.type = MatrixTypes.Unknown;\n setMatrix(result, num2, num, -num, num2, offsetX, offsetY);\n return result;\n}\n/** @private */\nfunction multiplyPoint(matrix, x, y) {\n switch (matrix.type) {\n case MatrixTypes.Identity: break;\n case MatrixTypes.Translation:\n x += matrix.offsetX;\n y += matrix.offsetY;\n break;\n case MatrixTypes.Scaling:\n x *= matrix.m11;\n y *= matrix.m22;\n break;\n case MatrixTypes.Translation | MatrixTypes.Scaling:\n x *= matrix.m11;\n x += matrix.offsetX;\n y *= matrix.m22;\n y += matrix.offsetY;\n break;\n default:\n var num = y * matrix.m21 + matrix.offsetX;\n var num2 = x * matrix.m12 + matrix.offsetY;\n x *= matrix.m11;\n x += num;\n y *= matrix.m22;\n y += num2;\n break;\n }\n return { x: x, y: y };\n}\n/** @private */\nfunction multiplyMatrix(matrix1, matrix2) {\n var type = matrix1.type;\n var type2 = matrix2.type;\n if (type2 === MatrixTypes.Identity) {\n return;\n }\n if (type === MatrixTypes.Identity) {\n assignMatrix(matrix1, matrix2);\n matrix1.type = matrix2.type;\n return;\n }\n if (type2 === MatrixTypes.Translation) {\n matrix1.offsetX += matrix2.offsetX;\n matrix1.offsetY += matrix2.offsetY;\n if (type !== MatrixTypes.Unknown) {\n matrix1.type |= MatrixTypes.Translation;\n }\n return;\n }\n if (type !== MatrixTypes.Translation) {\n var num = type << 4 | type2;\n switch (num) {\n case 34:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n return;\n case 35:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX = matrix2.offsetX;\n matrix1.offsetY = matrix2.offsetY;\n matrix1.type = (MatrixTypes.Translation | MatrixTypes.Scaling);\n return;\n case 36: break;\n default:\n {\n switch (num) {\n case 50:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX *= matrix2.m11;\n matrix1.offsetY *= matrix2.m22;\n return;\n case 51:\n matrix1.m11 *= matrix2.m11;\n matrix1.m22 *= matrix2.m22;\n matrix1.offsetX = matrix2.m11 * matrix1.offsetX + matrix2.offsetX;\n matrix1.offsetY = matrix2.m22 * matrix1.offsetY + matrix2.offsetY;\n return;\n case 52: break;\n default:\n switch (num) {\n case 66:\n case 67:\n case 68: break;\n default: return;\n }\n break;\n }\n break;\n }\n }\n var result = identityMatrix();\n var m11New = matrix1.m11 * matrix2.m11 + matrix1.m12 * matrix2.m21;\n var m12New = matrix1.m11 * matrix2.m12 + matrix1.m12 * matrix2.m22;\n var m21New = matrix1.m21 * matrix2.m11 + matrix1.m22 * matrix2.m21;\n var m22New = matrix1.m21 * matrix2.m12 + matrix1.m22 * matrix2.m22;\n var offsetX_1 = matrix1.offsetX * matrix2.m11 + matrix1.offsetY * matrix2.m21 + matrix2.offsetX;\n var offsetY_1 = matrix1.offsetX * matrix2.m12 + matrix1.offsetY * matrix2.m22 + matrix2.offsetY;\n setMatrix(result, m11New, m12New, m21New, m22New, offsetX_1, offsetY_1);\n if (result.m21 || result.m12) {\n result.type = MatrixTypes.Unknown;\n }\n else {\n if (result.m11 && result.m11 !== 1.0 || result.m22 && result.m22 !== 1.0) {\n result.type = MatrixTypes.Scaling;\n }\n if (result.offsetX || result.offsetY) {\n result.type |= MatrixTypes.Translation;\n }\n if ((result.type & (MatrixTypes.Translation | MatrixTypes.Scaling)) === MatrixTypes.Identity) {\n result.type = MatrixTypes.Identity;\n }\n result.type = MatrixTypes.Scaling | MatrixTypes.Translation;\n }\n assignMatrix(matrix1, result);\n matrix1.type = result.type;\n return;\n }\n var offsetX = matrix1.offsetX;\n var offsetY = matrix1.offsetY;\n matrix1.offsetX = offsetX * matrix2.m11 + offsetY * matrix2.m21 + matrix2.offsetX;\n matrix1.offsetY = offsetX * matrix2.m12 + offsetY * matrix2.m22 + matrix2.offsetY;\n if (type2 === MatrixTypes.Unknown) {\n matrix1.type = MatrixTypes.Unknown;\n return;\n }\n matrix1.type = (MatrixTypes.Translation | MatrixTypes.Scaling);\n}\n/** @private */\nfunction setMatrix(mat, m11, m12, m21, m22, x, y) {\n mat.m11 = m11;\n mat.m12 = m12;\n mat.m21 = m21;\n mat.m22 = m22;\n mat.offsetX = x;\n mat.offsetY = y;\n}\n/** @private */\nfunction assignMatrix(matrix1, matrix2) {\n matrix1.m11 = matrix2.m11;\n matrix1.m12 = matrix2.m12;\n matrix1.m21 = matrix2.m21;\n matrix1.m22 = matrix2.m22;\n matrix1.offsetX = matrix2.offsetX;\n matrix1.offsetY = matrix2.offsetY;\n matrix1.type = matrix2.type;\n}\n\n/**\n * Defines the functionalities that need to access DOM\n */\nfunction getChildNode(node) {\n var child;\n var collection = [];\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n for (var i = 0; i < node.childNodes.length; i++) {\n child = node.childNodes[i];\n if (child.nodeType === 1) {\n collection.push(child);\n }\n }\n }\n else {\n collection = node.children;\n }\n return collection;\n}\nfunction translatePoints(element, points) {\n var translatedPts = [];\n for (var _i = 0, points_1 = points; _i < points_1.length; _i++) {\n var point = points_1[_i];\n var pt1 = {\n x: element.offsetX - element.actualSize.width * element.pivot.x + point.x,\n y: element.offsetY - element.actualSize.height * element.pivot.y + point.y\n };\n var matrix = void 0;\n var angle = element.rotateAngle + element.parentTransform;\n if (angle) {\n matrix = identityMatrix();\n rotateMatrix(matrix, angle, element.offsetX, element.offsetY);\n }\n if (matrix) {\n pt1 = transformPointByMatrix(matrix, pt1);\n }\n translatedPts.push(pt1);\n }\n return translatedPts;\n}\n/** @private */\nfunction measurePath(data) {\n var path = 'pathTable';\n if (!window[path]) {\n window[path] = {};\n }\n if (data) {\n var measureElement = 'measureElement';\n window[measureElement].style.visibility = 'visible';\n var svg = window[measureElement].children[2];\n var element = getChildNode(svg)[0];\n element.setAttribute('d', data);\n //let bounds: SVGRect = element.getBBox();\n var bounds = void 0;\n if (window[path][data]) {\n bounds = window[path][data];\n }\n else {\n window[path][data] = bounds = element.getBBox();\n if ((bounds.x === 0 || bounds.y === 0) && (bounds.width === 0 || bounds.height === 0)) {\n window[path][data] = bounds = getBBox(data);\n }\n }\n var svgBounds = new Rect(bounds.x, bounds.y, bounds.width, bounds.height);\n window[measureElement].style.visibility = 'hidden';\n return svgBounds;\n }\n return new Rect(0, 0, 0, 0);\n}\n// tslint:disable-next-line\nfunction getBBox(path) {\n var xmin = 0;\n var xmax = 0;\n var ymin = 0;\n var ymax = 0;\n // tslint:disable-next-line\n var currentValue;\n // tslint:disable-next-line\n var currentpath = path;\n currentpath = currentpath.replace(/[a-z].*/g, ' ').replace(/[\\sA-Z]+/gi, ' ').trim().split(' ');\n for (var i = 0; i < currentpath.length; i++) {\n if (currentpath[i].length > 1) {\n currentValue = currentpath[i].split(',');\n xmin = xmax = currentValue[0];\n ymin = ymax = currentValue[1];\n }\n }\n for (var i = 0; i < currentpath.length; i++) {\n currentValue = currentpath[i].split(',');\n if (!currentValue[1]) {\n currentValue[0] = xmin;\n currentValue[1] = ymin;\n }\n xmin = Math.min(xmin, currentValue[0]);\n xmax = Math.max(xmax, currentValue[0]);\n ymin = Math.min(ymin, currentValue[1]);\n ymax = Math.max(ymax, currentValue[1]);\n }\n return { x: xmin, y: ymin, width: xmax - xmin, height: ymax - ymin };\n}\nfunction getTextOptions(element, maxWidth) {\n var options = {\n fill: element.style.fill, stroke: element.style.strokeColor, angle: element.rotateAngle + element.parentTransform,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: element.style.strokeWidth,\n dashArray: element.style.strokeDashArray, opacity: element.style.opacity,\n visible: element.visible, id: element.id,\n width: maxWidth || element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5\n };\n options.fontSize = element.style.fontSize;\n options.fontFamily = element.style.fontFamily;\n options.textOverflow = element.style.textOverflow;\n options.textDecoration = element.style.textDecoration;\n options.doWrap = element.doWrap;\n options.whiteSpace = whiteSpaceToString(element.style.whiteSpace, element.style.textWrapping);\n options.content = element.content;\n options.textWrapping = element.style.textWrapping;\n options.breakWord = wordBreakToString(element.style.textWrapping);\n options.textAlign = textAlignToString(element.style.textAlign);\n options.color = element.style.color;\n options.italic = element.style.italic;\n options.bold = element.style.bold;\n options.dashArray = '';\n options.strokeWidth = 0;\n options.fill = '';\n return options;\n}\nfunction wrapSvgText(text, textValue) {\n var childNodes = [];\n var k = 0;\n var txtValue;\n var bounds1;\n var content = textValue || text.content;\n if (text.whiteSpace !== 'nowrap' && text.whiteSpace !== 'pre') {\n if (text.breakWord === 'breakall') {\n txtValue = '';\n txtValue += content[0];\n for (k = 0; k < content.length; k++) {\n bounds1 = bBoxText(txtValue, text);\n if (bounds1 >= text.width && txtValue.length > 0) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: bounds1 };\n txtValue = '';\n }\n else {\n txtValue = txtValue + (content[k + 1] || '');\n // if (txtValue.indexOf('\\n') > -1) {\n // txtValue = txtValue.replace('\\n', '');\n // }\n var width = bBoxText(txtValue, text);\n if ((Math.ceil(width) + 2 >= text.width && txtValue.length > 0) || (txtValue.indexOf('\\n') > -1)) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n if (k === content.length - 1 && txtValue.length > 0) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n }\n }\n }\n else {\n childNodes = wordWrapping(text, textValue);\n }\n }\n else {\n childNodes[childNodes.length] = { text: content, x: 0, dy: 0, width: bBoxText(content, text) };\n }\n return childNodes;\n}\nfunction wordWrapping(text, textValue) {\n var childNodes = [];\n var txtValue = '';\n var j = 0;\n var i = 0;\n var wrap = text.whiteSpace !== 'nowrap' ? true : false;\n var content = textValue || text.content;\n var bounds1;\n var eachLine = content.split('\\n');\n var words;\n var newText;\n var existingWidth;\n var existingText;\n for (j = 0; j < eachLine.length; j++) {\n words = text.textWrapping !== 'NoWrap' ? eachLine[j].split(' ') : eachLine;\n for (i = 0; i < words.length; i++) {\n bounds1 = bBoxText(words[i], text);\n if (bounds1 > text.width && words[i].length > 0) {\n if (eachLine.length > 1) {\n words[i] = words[i] + '\\n';\n }\n text.content = words[i];\n childNodes = wrapText(text, txtValue, childNodes);\n }\n else {\n txtValue += (((i !== 0 || words.length === 1) && wrap && txtValue.length > 0) ? ' ' : '') + words[i];\n newText = txtValue + (words[i + 1] || '');\n var width = bBoxText(newText, text);\n if (eachLine.length > 1 && i === words.length - 1) {\n txtValue = txtValue + '\\n';\n }\n if (Math.floor(width) > text.width - 2 && txtValue.length > 0) {\n childNodes[childNodes.length] = {\n text: (txtValue.indexOf('\\n') === -1) ? txtValue + ' ' : textValue, x: 0, dy: 0,\n width: newText === txtValue ? width : (txtValue === existingText) ? existingWidth : bBoxText(txtValue, text)\n };\n txtValue = '';\n }\n else {\n if (i === words.length - 1) {\n childNodes[childNodes.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n }\n existingText = newText;\n existingWidth = width;\n }\n }\n }\n return childNodes;\n}\nfunction wrapText(txt, textValue, childNode) {\n var k = 0;\n var txtValue;\n var bounds1;\n var content = textValue || txt.content;\n txtValue = '';\n txtValue += content[0];\n for (k = 0; k < content.length; k++) {\n bounds1 = bBoxText(txtValue, txt);\n if (bounds1 >= txt.width && txtValue.length > 0) {\n childNode[childNode.length] = { text: txtValue, x: 0, dy: 0, width: bounds1 };\n txtValue = '';\n }\n else {\n txtValue = txtValue + (content[k + 1] || '');\n var width = bBoxText(txtValue, txt);\n if ((Math.ceil(width) + 2 >= txt.width && txtValue.length > 0) || (txtValue.indexOf('\\n') > -1)) {\n txtValue = txtValue.slice(0, -1);\n childNode[childNode.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = content[k + 1] || '';\n }\n if (k === content.length - 1 && txtValue.length > 0) {\n childNode[childNode.length] = { text: txtValue, x: 0, dy: 0, width: width };\n txtValue = '';\n }\n }\n }\n return childNode;\n}\nfunction wrapSvgTextAlign(text, childNodes) {\n var wrapBounds = { x: 0, width: 0 };\n var k = 0;\n var txtWidth;\n var width;\n for (k = 0; k < childNodes.length; k++) {\n txtWidth = childNodes[k].width;\n width = txtWidth;\n if (text.textAlign === 'left') {\n txtWidth = 0;\n }\n else if (text.textAlign === 'center') {\n if (txtWidth > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n txtWidth = 0;\n }\n else {\n txtWidth = -txtWidth / 2;\n }\n }\n else if (text.textAlign === 'right') {\n txtWidth = -txtWidth;\n }\n else {\n txtWidth = childNodes.length > 1 ? 0 : -txtWidth / 2;\n }\n childNodes[k].dy = text.fontSize * 1.2;\n childNodes[k].x = txtWidth;\n if (!wrapBounds) {\n wrapBounds = {\n x: txtWidth,\n width: width\n };\n }\n else {\n wrapBounds.x = Math.min(wrapBounds.x, txtWidth);\n wrapBounds.width = Math.max(wrapBounds.width, width);\n }\n }\n return wrapBounds;\n}\n/** @private */\nfunction measureText(text, style, content, maxWidth, textValue) {\n var bounds = new Size(0, 0);\n var childNodes;\n var wrapBounds;\n var options = getTextOptions(text, maxWidth);\n text.childNodes = childNodes = wrapSvgText(options, textValue);\n text.wrapBounds = wrapBounds = wrapSvgTextAlign(options, childNodes);\n bounds.width = wrapBounds.width;\n if (text.wrapBounds.width >= maxWidth && options.textOverflow !== 'Wrap') {\n bounds.width = maxWidth;\n }\n bounds.height = childNodes.length * text.style.fontSize * 1.2;\n return bounds;\n}\n/** @private */\nfunction getDiagramElement(elementId, contentId) {\n var diagramElement;\n var element;\n if (contentId) {\n element = document.getElementById(contentId);\n }\n diagramElement = (element) ? element.querySelector('#' + elementId) : document.getElementById(elementId);\n return diagramElement;\n}\n/** @private */\nfunction createHtmlElement(elementType, attribute) {\n var element = createElement(elementType);\n setAttributeHtml(element, attribute);\n return element;\n}\n/** @private */\nfunction setAttributeHtml(element, attributes) {\n var keys = Object.keys(attributes);\n for (var i = 0; i < keys.length; i++) {\n element.setAttribute(keys[i], attributes[keys[i]]);\n }\n}\n/**\n * @private\n */\nfunction getAdornerLayerSvg(diagramId, index) {\n var adornerLayerSvg = null;\n var diagramElement = getDiagramElement(diagramId + index + '_diagramAdornerLayer');\n var elementcoll;\n if (diagramElement) {\n elementcoll = diagramElement.getElementsByClassName('e-adorner-layer' + index);\n adornerLayerSvg = elementcoll[0];\n }\n return adornerLayerSvg;\n}\n/** @private */\nfunction getSelectorElement(diagramId, index) {\n var adornerLayer = null;\n var adornerSvg = getAdornerLayerSvg(diagramId, index);\n if (adornerSvg) {\n adornerLayer = adornerSvg.getElementById(diagramId + '_SelectorElement');\n }\n return adornerLayer;\n}\n/** @private */\nfunction createMeasureElements() {\n var measureElement = 'measureElement';\n if (!window[measureElement]) {\n var divElement = createHtmlElement('div', {\n id: 'measureElement',\n style: 'visibility:hidden ; height: 0px ; width: 0px; overflow: hidden;'\n });\n var text = createHtmlElement('span', { 'style': 'display:inline-block ; line-height: normal' });\n divElement.appendChild(text);\n var imageElement = void 0;\n imageElement = createHtmlElement('img', {});\n divElement.appendChild(imageElement);\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('xlink', 'http://www.w3.org/1999/xlink');\n divElement.appendChild(svg);\n var element = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svg.appendChild(element);\n var data = document.createTextNode('');\n var tSpan = document.createElementNS('http://www.w3.org/2000/svg', 'text');\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n svg.appendChild(tSpan);\n window[measureElement] = divElement;\n window[measureElement].usageCount = 1;\n document.body.appendChild(divElement);\n }\n else {\n window[measureElement].usageCount += 1;\n }\n}\n/** @private */\nfunction measureImage(source, contentSize) {\n var measureElement = 'measureElement';\n window[measureElement].style.visibility = 'visible';\n var imageElement = window[measureElement].children[1];\n imageElement.setAttribute('src', source);\n var bounds = imageElement.getBoundingClientRect();\n var width = bounds.width;\n var height = bounds.height;\n contentSize = new Size(width, height);\n window[measureElement].style.visibility = 'hidden';\n return contentSize;\n}\n\n/**\n * Implements the basic functionalities\n */\n/** @private */\nfunction randomId() {\n var chars = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';\n var id = '';\n var num;\n for (var i = 0; i < 5; i++) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var count = new Uint16Array(1);\n // tslint:disable-next-line:no-any\n var intCrypto = window.msCrypto || window.crypto;\n num = intCrypto.getRandomValues(count)[0] % (chars.length - 1);\n }\n else {\n num = Math.floor(Math.random() * chars.length);\n }\n if (i === 0 && num < 10) {\n i--;\n continue;\n }\n id += chars.substring(num, num + 1);\n }\n return id;\n}\n/** @private */\nfunction cornersPointsBeforeRotation(ele) {\n var bounds = new Rect();\n var top = ele.offsetY - ele.actualSize.height * ele.pivot.y;\n var bottom = ele.offsetY + ele.actualSize.height * (1 - ele.pivot.y);\n var left = ele.offsetX - ele.actualSize.width * ele.pivot.x;\n var right = ele.offsetX + ele.actualSize.width * (1 - ele.pivot.x);\n var topLeft = { x: left, y: top };\n var topRight = { x: right, y: top };\n var bottomLeft = { x: left, y: bottom };\n var bottomRight = { x: right, y: bottom };\n bounds = Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n return bounds;\n}\n/** @private */\nfunction rotateSize(size, angle) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, 0, 0);\n var topLeft = transformPointByMatrix(matrix, { x: 0, y: 0 });\n var topRight = transformPointByMatrix(matrix, { x: size.width, y: 0 });\n var bottomLeft = transformPointByMatrix(matrix, { x: 0, y: size.height });\n var bottomRight = transformPointByMatrix(matrix, { x: size.width, y: size.height });\n var minX = Math.min(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x);\n var minY = Math.min(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y);\n var maxX = Math.max(topLeft.x, topRight.x, bottomLeft.x, bottomRight.x);\n var maxY = Math.max(topLeft.y, topRight.y, bottomLeft.y, bottomRight.y);\n return new Size(maxX - minX, maxY - minY);\n}\n/** @private */\nfunction getBounds(element) {\n var bounds = new Rect();\n var corners;\n corners = cornersPointsBeforeRotation(element);\n var middleLeft = corners.middleLeft;\n var topCenter = corners.topCenter;\n var bottomCenter = corners.bottomCenter;\n var middleRight = corners.middleRight;\n var topLeft = corners.topLeft;\n var topRight = corners.topRight;\n var bottomLeft = corners.bottomLeft;\n var bottomRight = corners.bottomRight;\n element.corners = {\n topLeft: topLeft, topCenter: topCenter, topRight: topRight, middleLeft: middleLeft,\n middleRight: middleRight, bottomLeft: bottomLeft, bottomCenter: bottomCenter, bottomRight: bottomRight\n };\n if (element.rotateAngle !== 0 || element.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, element.rotateAngle + element.parentTransform, element.offsetX, element.offsetY);\n element.corners.topLeft = topLeft = transformPointByMatrix(matrix, topLeft);\n element.corners.topCenter = topCenter = transformPointByMatrix(matrix, topCenter);\n element.corners.topRight = topRight = transformPointByMatrix(matrix, topRight);\n element.corners.middleLeft = middleLeft = transformPointByMatrix(matrix, middleLeft);\n element.corners.middleRight = middleRight = transformPointByMatrix(matrix, middleRight);\n element.corners.bottomLeft = bottomLeft = transformPointByMatrix(matrix, bottomLeft);\n element.corners.bottomCenter = bottomCenter = transformPointByMatrix(matrix, bottomCenter);\n element.corners.bottomRight = bottomRight = transformPointByMatrix(matrix, bottomRight);\n //Set corners based on rotate angle\n }\n bounds = Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n element.corners.left = bounds.left;\n element.corners.right = bounds.right;\n element.corners.top = bounds.top;\n element.corners.bottom = bounds.bottom;\n element.corners.center = bounds.center;\n element.corners.width = bounds.width;\n element.corners.height = bounds.height;\n return bounds;\n}\n/** @private */\nfunction textAlignToString(value) {\n var state = '';\n switch (value) {\n case 'Center':\n state = 'center';\n break;\n case 'Left':\n state = 'left';\n break;\n case 'Right':\n state = 'right';\n break;\n }\n return state;\n}\n/** @private */\nfunction wordBreakToString(value) {\n var state = '';\n switch (value) {\n case 'Wrap':\n state = 'breakall';\n break;\n case 'NoWrap':\n state = 'keepall';\n break;\n case 'WrapWithOverflow':\n state = 'normal';\n break;\n case 'LineThrough':\n state = 'line-through';\n break;\n }\n return state;\n}\nfunction bBoxText(textContent, options) {\n var measureElement = 'measureElement';\n window[measureElement].style.visibility = 'visible';\n var svg = window[measureElement].children[2];\n var text = getChildNode(svg)[1];\n text.textContent = textContent;\n text.setAttribute('style', 'font-size:' + options.fontSize + 'px; font-family:'\n + options.fontFamily + ';font-weight:' + (options.bold ? 'bold' : 'normal'));\n var bBox = text.getBBox().width;\n window[measureElement].style.visibility = 'hidden';\n return bBox;\n}\n/** @private */\nfunction middleElement(i, j) {\n var m = 0;\n m = (i + j) / 2;\n return m;\n}\n/** @private */\nfunction whiteSpaceToString(value, wrap) {\n if (wrap === 'NoWrap' && value === 'PreserveAll') {\n return 'pre';\n }\n var state = '';\n switch (value) {\n case 'CollapseAll':\n state = 'nowrap';\n break;\n case 'CollapseSpace':\n state = 'pre-line';\n break;\n case 'PreserveAll':\n state = 'pre-wrap';\n break;\n }\n return state;\n}\n/** @private */\nfunction rotatePoint(angle, pivotX, pivotY, point) {\n if (angle !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, pivotX, pivotY);\n return transformPointByMatrix(matrix, point);\n }\n return point;\n}\n/** @private */\nfunction getOffset(topLeft, obj) {\n var offX = topLeft.x + obj.desiredSize.width * obj.pivot.x;\n var offY = topLeft.y + obj.desiredSize.height * obj.pivot.y;\n return {\n x: offX, y: offY\n };\n}\n\n/**\n * DiagramElement module defines the basic unit of diagram\n */\nvar DrawingElement = /** @__PURE__ @class */ (function () {\n function DrawingElement() {\n /**\n * Sets/Gets the reference point of the element\n * ```html\n *
\n * ```\n * ```typescript\n * let stackPanel: StackPanel = new StackPanel();\n * stackPanel.offsetX = 300; stackPanel.offsetY = 200;\n * stackPanel.width = 100; stackPanel.height = 100;\n * stackPanel.style.fill = 'red';\n * stackPanel.pivot = { x: 0.5, y: 0.5 };\n * let diagram: Diagram = new Diagram({\n * ...\n * basicElements: [stackPanel],\n * ...\n * });\n * diagram.appendTo('#diagram');\n * ```\n */\n this.pivot = { x: 0.5, y: 0.5 };\n this.rotateValue = { x: 0, y: 0, angle: 0 };\n /**\n * Sets or gets whether the content of the element needs to be measured\n */\n this.isDirt = true;\n /**\n * Sets/Gets the x-coordinate of the element\n */\n this.offsetX = 0;\n /**\n * Sets/Gets the y-coordinate of the element\n */\n this.offsetY = 0;\n /**\n * Set the corner of the element\n */\n this.cornerRadius = 0;\n /**\n * Sets/Gets the minimum height of the element\n */\n this.minHeight = undefined;\n /**\n * Sets/Gets the minimum width of the element\n */\n this.minWidth = undefined;\n /**\n * Sets/Gets the maximum width of the element\n */\n this.maxWidth = undefined;\n /**\n * Sets/Gets the maximum height of the element\n */\n this.maxHeight = undefined;\n /**\n * Sets/Gets the width of the element\n */\n this.width = undefined;\n /**\n * Sets/Gets the height of the element\n */\n this.height = undefined;\n /**\n * Sets/Gets how the element has to be horizontally arranged with respect to its immediate parent\n * * Stretch - Stretches the diagram element throughout its immediate parent\n * * Left - Aligns the diagram element at the left of its immediate parent\n * * Right - Aligns the diagram element at the right of its immediate parent\n * * Center - Aligns the diagram element at the center of its immediate parent\n * * Auto - Aligns the diagram element based on the characteristics of its immediate parent\n */\n this.horizontalAlignment = 'Auto';\n /**\n * Sets/Gets how the element has to be vertically arranged with respect to its immediate parent\n * * Stretch - Stretches the diagram element throughout its immediate parent\n * * Top - Aligns the diagram element at the top of its immediate parent\n * * Bottom - Aligns the diagram element at the bottom of its immediate parent\n * * Center - Aligns the diagram element at the center of its immediate parent\n * * Auto - Aligns the diagram element based on the characteristics of its immediate parent\n */\n this.verticalAlignment = 'Auto';\n /**\n * Sets or gets whether the content of the element to be visible\n */\n this.visible = true;\n /**\n * Sets/Gets the rotate angle of the element\n */\n this.rotateAngle = 0;\n /**\n * Sets/Gets the margin of the element\n */\n this.margin = { left: 0, right: 0, top: 0, bottom: 0 };\n /**\n * Sets whether the element has to be aligned with respect to a point/with respect to its immediate parent\n * * Point - Diagram elements will be aligned with respect to a point\n * * Object - Diagram elements will be aligned with respect to its immediate parent\n */\n this.relativeMode = 'Point';\n /**\n * Sets whether the element has to be transformed based on its parent or not\n * * Self - Sets the transform type as Self\n * * Parent - Sets the transform type as Parent\n */\n /** @private */\n this.transform = RotateTransform.Self | RotateTransform.Parent;\n /**\n * Sets the style of the element\n */\n this.style = { fill: 'white', strokeColor: 'black', opacity: 1, strokeWidth: 1 };\n /**\n * Gets the minimum size that is required by the element\n */\n this.desiredSize = new Size();\n /**\n * Gets the size that the element will be rendered\n */\n this.actualSize = new Size();\n /**\n * Gets the rotate angle that is set to the immediate parent of the element\n */\n this.parentTransform = 0;\n /** @private */\n this.preventContainer = false;\n /**\n * Gets/Sets the boundary of the element\n */\n this.bounds = new Rect(0, 0, 0, 0);\n /**\n * Defines whether the element has to be measured or not\n */\n this.staticSize = false;\n /**\n * check whether the element is rect or not\n */\n /** @private */\n this.isRectElement = false;\n /** @private */\n this.isCalculateDesiredSize = true;\n /**\n * Defines whether the element is group or port\n */\n /** @private */\n this.elementActions = ElementAction.None;\n //private variables\n this.position = undefined;\n this.unitMode = undefined;\n /** @private */\n this.float = false;\n this.floatingBounds = undefined;\n }\n // public constructor() {\n // this.id = randomId();\n // }\n /**\n * Sets the offset of the element with respect to its parent\n * @param x\n * @param y\n * @param mode\n */\n DrawingElement.prototype.setOffsetWithRespectToBounds = function (x, y, mode) {\n this.unitMode = mode;\n this.position = { x: x, y: y };\n };\n /**\n * Gets the position of the element with respect to its parent\n * @param size\n */\n DrawingElement.prototype.getAbsolutePosition = function (size) {\n if (this.position !== undefined) {\n if (this.unitMode === 'Absolute') {\n return this.position;\n }\n else {\n return {\n x: this.position.x * size.width, y: this.position.y * size.height\n };\n }\n }\n return undefined;\n };\n Object.defineProperty(DrawingElement.prototype, \"outerBounds\", {\n get: function () {\n return this.floatingBounds || this.bounds;\n },\n /**\n * used to set the outer bounds value\n * @private\n */\n set: function (bounds) {\n this.floatingBounds = bounds;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures the minimum space that the element requires\n * @param availableSize\n */\n DrawingElement.prototype.measure = function (availableSize) {\n var width = this.width !== undefined ? this.width : (availableSize.width || 0) - this.margin.left - this.margin.right;\n var height = this.height !== undefined ? this.height : (availableSize.height || 0) - this.margin.top - this.margin.bottom;\n this.desiredSize = new Size(width, height);\n if (this.isCalculateDesiredSize) {\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n }\n return this.desiredSize;\n };\n /**\n * Arranges the element\n * @param desiredSize\n */\n DrawingElement.prototype.arrange = function (desiredSize) {\n this.actualSize = desiredSize;\n this.updateBounds();\n return this.actualSize;\n };\n /**\n * Updates the bounds of the element\n */\n DrawingElement.prototype.updateBounds = function () {\n this.bounds = getBounds(this);\n };\n /**\n * Validates the size of the element with respect to its minimum and maximum size\n * @param desiredSize\n * @param availableSize\n */\n DrawingElement.prototype.validateDesiredSize = function (desiredSize, availableSize) {\n //Empty canvas\n if (this.isRectElement && !this.width && !this.minWidth && !this.maxWidth) {\n desiredSize.width = 50;\n }\n if (this.isRectElement && !this.height && !this.minHeight && !this.maxHeight) {\n desiredSize.height = 50;\n }\n if (desiredSize === undefined || this.width !== undefined &&\n this.height !== undefined) {\n desiredSize = desiredSize || new Size();\n desiredSize.width = this.width === undefined ? (availableSize.width || 0)\n - this.margin.left - this.margin.right : this.width;\n desiredSize.height = this.height === undefined ? (availableSize.height || 0)\n - this.margin.top - this.margin.bottom : this.height;\n }\n //Considering min values\n if (this.minWidth !== undefined) {\n desiredSize.width = Math.max(desiredSize.width, this.minWidth);\n }\n if (this.minHeight !== undefined) {\n desiredSize.height = Math.max(desiredSize.height, this.minHeight);\n }\n //Considering max values\n if (this.maxWidth !== undefined) {\n desiredSize.width = Math.min(desiredSize.width, this.maxWidth);\n }\n if (this.maxHeight !== undefined) {\n desiredSize.height = Math.min(desiredSize.height, this.maxHeight);\n }\n return desiredSize;\n };\n return DrawingElement;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Container module is used to group related objects\n */\nvar Container = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Container, _super);\n function Container() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n //private members \n _this.desiredBounds = undefined;\n /** @private */\n _this.measureChildren = true;\n /** @private */\n _this.prevRotateAngle = 0;\n return _this;\n }\n /**\n * returns whether the container has child elements or not\n */\n Container.prototype.hasChildren = function () {\n if (this.children !== undefined && this.children.length > 0) {\n return true;\n }\n return false;\n };\n /**\n * Measures the minimum space that the container requires\n *\n * @param availableSize\n */\n Container.prototype.measure = function (availableSize) {\n // measure the element and find the desired size\n this.desiredBounds = undefined;\n var desired = undefined;\n var child;\n var childBounds;\n if (this.hasChildren()) {\n //Measuring the children\n for (var i = 0; i < this.children.length; i++) {\n child = this.children[i];\n if (child.horizontalAlignment === 'Stretch' && !availableSize.width) {\n availableSize.width = child.bounds.width;\n }\n if (child.verticalAlignment === 'Stretch' && !availableSize.height) {\n availableSize.height = child.bounds.height;\n }\n var force = child.horizontalAlignment === 'Stretch' || child.verticalAlignment === 'Stretch';\n if (this.measureChildren || force || (child instanceof Container && child.measureChildren !== undefined)) {\n child.measure(availableSize);\n }\n childBounds = this.GetChildrenBounds(child);\n if (child.horizontalAlignment !== 'Stretch' && child.verticalAlignment !== 'Stretch') {\n if (this.desiredBounds === undefined) {\n this.desiredBounds = childBounds;\n }\n else {\n this.desiredBounds.uniteRect(childBounds);\n }\n }\n else if (this.actualSize && !this.actualSize.width && !this.actualSize.height &&\n !child.preventContainer && child.horizontalAlignment === 'Stretch' && child.verticalAlignment === 'Stretch') {\n if (this.desiredBounds === undefined) {\n this.desiredBounds = child.bounds;\n }\n else {\n this.desiredBounds.uniteRect(child.bounds);\n }\n }\n }\n if (this.desiredBounds !== undefined && this.rotateAngle !== 0) {\n var offsetPt = {\n x: this.desiredBounds.x + this.desiredBounds.width * this.pivot.x,\n y: this.desiredBounds.y + this.desiredBounds.height * this.pivot.y\n };\n var newPoint = rotatePoint(this.rotateAngle, undefined, undefined, offsetPt);\n this.desiredBounds.x = newPoint.x - this.desiredBounds.width * this.pivot.x;\n this.desiredBounds.y = newPoint.y - this.desiredBounds.height * this.pivot.y;\n }\n if (this.desiredBounds) {\n desired = new Size(this.desiredBounds.width, this.desiredBounds.height);\n }\n }\n desired = this.validateDesiredSize(desired, availableSize);\n this.stretchChildren(desired);\n this.desiredSize = desired;\n return desired;\n };\n /**\n * Arranges the container and its children\n * @param desiredSize\n */\n Container.prototype.arrange = function (desiredSize) {\n var child;\n var childBounds = this.desiredBounds;\n if (childBounds) {\n var x = this.offsetX;\n var y = this.offsetY;\n this.offsetX = childBounds.x + childBounds.width * this.pivot.x;\n this.offsetY = childBounds.y + childBounds.height * this.pivot.y;\n // container has rotateAngle\n if (this.hasChildren()) {\n //Measuring the children\n for (var i = 0; i < this.children.length; i++) {\n child = this.children[i];\n var arrange = false;\n if (child.horizontalAlignment === 'Stretch') {\n child.offsetX = this.offsetX;\n child.parentTransform = this.parentTransform + this.rotateAngle;\n arrange = true;\n }\n if (child.verticalAlignment === 'Stretch') {\n child.offsetY = this.offsetY;\n child.parentTransform = this.parentTransform + this.rotateAngle;\n arrange = true;\n }\n if (arrange || this.measureChildren || (child instanceof Container && child.measureChildren !== undefined)) {\n child.arrange(child.desiredSize);\n }\n }\n }\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.prevRotateAngle = this.rotateAngle;\n return desiredSize;\n };\n //protected methods\n /**\n * Stretches the child elements based on the size of the container\n * @param size\n */\n Container.prototype.stretchChildren = function (size) {\n if (this.hasChildren()) {\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child.horizontalAlignment === 'Stretch' || child.desiredSize.width === undefined) {\n child.desiredSize.width = size.width - child.margin.left - child.margin.right;\n }\n if (child.verticalAlignment === 'Stretch' || child.desiredSize.height === undefined) {\n child.desiredSize.height = size.height - child.margin.top - child.margin.bottom;\n }\n if (child instanceof Container) {\n child.stretchChildren(child.desiredSize);\n }\n }\n }\n };\n /**\n * Finds the offset of the child element with respect to the container\n * @param child\n * @param center\n */\n Container.prototype.findChildOffsetFromCenter = function (child, center) {\n var topLeft = { x: center.x - child.desiredSize.width / 2, y: center.y - child.desiredSize.height / 2 };\n var offset = getOffset(topLeft, child);\n //Rotate based on child rotate angle\n offset = rotatePoint(child.rotateAngle, center.x, center.y, offset);\n //Rotate based on parent pivot\n offset = rotatePoint(this.rotateAngle + this.parentTransform, this.offsetX, this.offsetY, offset);\n child.offsetX = offset.x;\n child.offsetY = offset.y;\n };\n //private methods - check its need\n Container.prototype.GetChildrenBounds = function (child) {\n var childSize;\n childSize = child.desiredSize.clone();\n var diffAngle = child.rotateAngle - this.rotateAngle;\n var refPoint = { x: child.offsetX, y: child.offsetY };\n var left = refPoint.x - childSize.width * child.pivot.x;\n var top = refPoint.y - childSize.height * child.pivot.y;\n var right = left + childSize.width;\n var bottom = top + childSize.height;\n var topLeft = { x: left, y: top };\n var topRight = { x: right, y: top };\n var bottomLeft = { x: left, y: bottom };\n var bottomRight = { x: right, y: bottom };\n topLeft = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, topLeft);\n topRight = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, topRight);\n bottomLeft = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, bottomLeft);\n bottomRight = rotatePoint(child.rotateAngle, child.offsetX, child.offsetY, bottomRight);\n if (this.rotateAngle !== 0) {\n topLeft = rotatePoint(-this.rotateAngle, undefined, undefined, topLeft);\n topRight = rotatePoint(-this.rotateAngle, undefined, undefined, topRight);\n bottomLeft = rotatePoint(-this.rotateAngle, undefined, undefined, bottomLeft);\n bottomRight = rotatePoint(-this.rotateAngle, undefined, undefined, bottomRight);\n }\n return Rect.toBounds([topLeft, topRight, bottomLeft, bottomRight]);\n };\n return Container;\n}(DrawingElement));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * TextElement is used to display text/annotations\n */\nvar TextElement = /** @__PURE__ @class */ (function (_super) {\n __extends$3(TextElement, _super);\n /**\n * set the id for each element\n */\n function TextElement() {\n var _this = _super.call(this) || this;\n /**\n * sets or gets the image source\n */\n _this.textContent = '';\n /** @private */\n _this.canMeasure = true;\n /** @private */\n _this.canConsiderBounds = true;\n /** @private */\n _this.doWrap = true;\n _this.textNodes = [];\n /**\n * Defines the appearance of the text element\n */\n _this.style = {\n color: 'black', fill: 'transparent', strokeColor: 'black',\n strokeWidth: 1, fontFamily: 'Arial', fontSize: 12, whiteSpace: 'CollapseSpace',\n textWrapping: 'WrapWithOverflow', textAlign: 'Center', italic: false, bold: false,\n textDecoration: 'None', strokeDashArray: '', opacity: 1,\n textOverflow: 'Wrap'\n };\n _this.style.fill = 'transparent';\n _this.style.strokeColor = 'transparent';\n return _this;\n }\n Object.defineProperty(TextElement.prototype, \"content\", {\n /**\n * gets the content for the text element\n */\n get: function () {\n return this.textContent;\n },\n /**\n * sets the content for the text element\n */\n set: function (value) {\n if (this.textContent !== value) {\n this.textContent = value;\n this.isDirt = true;\n this.doWrap = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextElement.prototype, \"childNodes\", {\n /**\n * sets the content for the text element\n */\n get: function () {\n return this.textNodes;\n },\n /**\n * gets the content for the text element\n */\n set: function (value) {\n this.textNodes = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TextElement.prototype, \"wrapBounds\", {\n /**\n * gets the wrapBounds for the text\n */\n get: function () {\n return this.textWrapBounds;\n },\n /**\n * sets the wrapBounds for the text\n */\n set: function (value) {\n this.textWrapBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n /** @private */\n TextElement.prototype.refreshTextElement = function () {\n this.isDirt = true;\n };\n /**\n * Measures the minimum size that is required for the text element\n * @param availableSize\n */\n TextElement.prototype.measure = function (availableSize) {\n var size;\n if (this.isDirt && this.canMeasure) {\n size = measureText(this, this.style, this.content, this.width || availableSize.width);\n }\n else {\n size = this.desiredSize;\n }\n if (this.width === undefined || this.height === undefined) {\n this.desiredSize = new Size(size.width, size.height);\n }\n else {\n this.desiredSize = new Size(this.width, this.height);\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n return this.desiredSize;\n };\n /**\n * Arranges the text element\n * @param desiredSize\n */\n TextElement.prototype.arrange = function (desiredSize) {\n if (desiredSize.width !== this.actualSize.width || desiredSize.height !== this.actualSize.height || this.isDirt) {\n this.doWrap = true;\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.isDirt = false;\n return this.actualSize;\n };\n return TextElement;\n}(DrawingElement));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Canvas module is used to define a plane(canvas) and to arrange the children based on margin\n */\nvar Canvas = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Canvas, _super);\n function Canvas() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /**\n * Not applicable for canvas\n * @private\n */\n _this.measureChildren = undefined;\n return _this;\n }\n /**\n * Measures the minimum space that the canvas requires\n * @param availableSize\n */\n Canvas.prototype.measure = function (availableSize) {\n var desired = undefined;\n var desiredBounds = undefined;\n if (this.hasChildren()) {\n //Measuring the children\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child instanceof TextElement) {\n if (child.canMeasure) {\n availableSize.width = availableSize.width || this.maxWidth || this.minWidth;\n child.measure(availableSize);\n }\n else {\n break;\n }\n }\n else if (!(child instanceof TextElement)) {\n child.measure(availableSize);\n }\n var childSize = child.desiredSize.clone();\n if (child.rotateAngle !== 0) {\n childSize = rotateSize(childSize, child.rotateAngle);\n }\n var right = childSize.width + child.margin.right;\n var bottom = childSize.height + child.margin.bottom;\n var childBounds = new Rect(child.margin.left, child.margin.top, right, bottom);\n if (child.float) {\n var position = child.getAbsolutePosition(childSize);\n if (position !== undefined) {\n continue;\n }\n }\n if ((!(child instanceof TextElement)) || (child instanceof TextElement && child.canConsiderBounds)) {\n if (desiredBounds === undefined) {\n desiredBounds = childBounds;\n }\n else {\n desiredBounds.uniteRect(childBounds);\n }\n }\n }\n if (desiredBounds) {\n var leftMargin = 0;\n var topMargin = 0;\n leftMargin = Math.max(desiredBounds.left, 0);\n topMargin = Math.max(desiredBounds.top, 0);\n desired = new Size(desiredBounds.width + leftMargin, desiredBounds.height + topMargin);\n }\n }\n desired = _super.prototype.validateDesiredSize.call(this, desired, availableSize);\n _super.prototype.stretchChildren.call(this, desired);\n this.desiredSize = desired;\n return desired;\n };\n /**\n * Arranges the child elements of the canvas\n */\n Canvas.prototype.arrange = function (desiredSize) {\n this.outerBounds = new Rect();\n if (this.hasChildren()) {\n var y = void 0;\n var x = void 0;\n y = this.offsetY - desiredSize.height * this.pivot.y;\n x = this.offsetX - desiredSize.width * this.pivot.x;\n for (var _i = 0, _a = this.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if ((child.transform & RotateTransform.Parent) !== 0) {\n child.parentTransform = this.parentTransform + this.rotateAngle;\n var childSize = child.desiredSize.clone();\n var topLeft = void 0;\n var center = { x: 0, y: 0 };\n var childX = x;\n var childY = y;\n if (child.relativeMode === 'Point') {\n var position = child.getAbsolutePosition(desiredSize);\n if (position !== undefined) {\n childX += position.x;\n childY += position.y;\n }\n }\n if (child.relativeMode === 'Object') {\n topLeft = this.alignChildBasedOnParent(child, childSize, desiredSize, childX, childY);\n }\n else {\n topLeft = this.alignChildBasedOnaPoint(child, childX, childY);\n }\n center = { x: topLeft.x + childSize.width / 2, y: topLeft.y + childSize.height / 2 };\n if (child.rotateValue) {\n var rotateValue = {\n x: this.offsetX + (child.rotateValue.x || 0),\n y: this.offsetY + (child.rotateValue.y || 0)\n };\n var centerPoint = { x: this.offsetX, y: this.offsetY };\n var angle = child.rotateValue.angle | 0;\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, centerPoint.x, centerPoint.y);\n center = transformPointByMatrix(matrix, rotateValue);\n }\n _super.prototype.findChildOffsetFromCenter.call(this, child, center);\n }\n if ((child.horizontalAlignment === 'Stretch' || child.verticalAlignment === 'Stretch')) {\n child.arrange(desiredSize);\n }\n else {\n if (child instanceof TextElement && child.canMeasure) {\n child.arrange(child.desiredSize);\n this.outerBounds.uniteRect(child.outerBounds);\n }\n else if (!(child instanceof TextElement)) {\n child.arrange(child.desiredSize);\n this.outerBounds.uniteRect(child.outerBounds);\n }\n }\n }\n }\n this.actualSize = desiredSize;\n this.updateBounds();\n this.outerBounds.uniteRect(this.bounds);\n return desiredSize;\n };\n /**\n * Aligns the child element based on its parent\n * @param child\n * @param childSize\n * @param parentSize\n * @param x\n * @param y\n */\n Canvas.prototype.alignChildBasedOnParent = function (child, childSize, parentSize, x, y) {\n switch (child.horizontalAlignment) {\n case 'Auto':\n case 'Left':\n x += child.margin.left;\n break;\n case 'Right':\n x += parentSize.width - childSize.width - child.margin.right;\n break;\n case 'Stretch':\n case 'Center':\n x += parentSize.width / 2 - childSize.width / 2;\n break;\n }\n switch (child.verticalAlignment) {\n case 'Auto':\n case 'Top':\n y += child.margin.top;\n break;\n case 'Bottom':\n y += parentSize.height - childSize.height - child.margin.bottom;\n break;\n case 'Stretch':\n case 'Center':\n y += parentSize.height / 2 - childSize.height / 2;\n break;\n }\n return { x: x, y: y };\n };\n /**\n * Aligns the child elements based on a point\n * @param child\n * @param x\n * @param y\n */\n Canvas.prototype.alignChildBasedOnaPoint = function (child, x, y) {\n x += child.margin.left - child.margin.right;\n y += child.margin.top - child.margin.bottom;\n switch (child.horizontalAlignment) {\n case 'Auto':\n case 'Left':\n x = x;\n break;\n case 'Stretch':\n case 'Center':\n x -= child.desiredSize.width * child.pivot.x;\n break;\n case 'Right':\n x -= child.desiredSize.width;\n break;\n }\n switch (child.verticalAlignment) {\n case 'Auto':\n case 'Top':\n y = y;\n break;\n case 'Stretch':\n case 'Center':\n y -= child.desiredSize.height * child.pivot.y;\n break;\n case 'Bottom':\n y -= child.desiredSize.height;\n break;\n }\n return { x: x, y: y };\n };\n return Canvas;\n}(Container));\n\n/**\n * Diagram component exported items\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * ImageElement defines a basic image elements\n */\nvar ImageElement = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ImageElement, _super);\n /**\n * set the id for each element\n */\n function ImageElement() {\n var _this = _super.call(this) || this;\n /**\n * sets or gets the image source\n */\n _this.imageSource = '';\n /**\n * sets or gets the print id\n * @private\n */\n _this.printID = '';\n /**\n * sets scaling factor of the image\n */\n _this.imageScale = 'None';\n /**\n * sets the alignment of the image\n */\n _this.imageAlign = 'None';\n /**\n * Sets how to stretch the image\n */\n _this.stretch = 'Stretch';\n return _this;\n }\n Object.defineProperty(ImageElement.prototype, \"source\", {\n /**\n * Gets the source for the image element\n */\n get: function () {\n return this.imageSource;\n },\n /**\n * Sets the source for the image element\n */\n set: function (value) {\n this.imageSource = value;\n this.isDirt = true;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures minimum space that is required to render the image\n * @param availableSize\n */\n ImageElement.prototype.measure = function (availableSize) {\n if (this.isDirt && (this.stretch !== 'Stretch' || this.width === undefined && this.height === undefined)) {\n this.contentSize = measureImage(this.source, this.contentSize);\n this.isDirt = false;\n }\n if (this.width !== undefined && this.height !== undefined) {\n this.desiredSize = new Size(this.width, this.height);\n this.contentSize = this.desiredSize;\n }\n else {\n this.desiredSize = this.contentSize;\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n return this.desiredSize;\n };\n /**\n * Arranges the image\n * @param desiredSize\n */\n ImageElement.prototype.arrange = function (desiredSize) {\n this.actualSize = new Size(this.desiredSize.width, this.desiredSize.height);\n this.updateBounds();\n return this.actualSize;\n };\n return ImageElement;\n}(DrawingElement));\n\n/**\n * These utility methods help to process the data and to convert it to desired dimensions\n */\n/** @private */\nfunction processPathData(data) {\n var collection = [];\n var j;\n var arrayCollection = parsePathData(data);\n if (arrayCollection.length > 0) {\n for (var i = 0; i < arrayCollection.length; i++) {\n var ob = arrayCollection[i];\n var char = '';\n char = ob[0];\n switch (char.toLowerCase()) {\n case 'm':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[j], y: ob[j + 1] });\n j = j + 1;\n if (char === 'm') {\n char = 'l';\n }\n else if (char === 'M') {\n char = 'L';\n }\n }\n break;\n case 'l':\n case 't':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[j], y: ob[j + 1] });\n j = j + 1;\n }\n break;\n case 'h':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x: ob[j] });\n }\n break;\n case 'v':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, y: ob[j] });\n }\n break;\n case 'z':\n collection.push({ command: char });\n break;\n case 'c':\n for (j = 1; j < ob.length; j++) {\n collection.push({\n command: char, x1: ob[j], y1: ob[j + 1], x2: ob[j + 2], y2: ob[j + 3], x: ob[j + 4], y: ob[j + 5]\n });\n j = j + 5;\n }\n break;\n case 's':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x2: ob[j], y2: ob[j + 1], x: ob[j + 2], y: ob[j + 3] });\n j = j + 3;\n }\n break;\n case 'q':\n for (j = 1; j < ob.length; j++) {\n collection.push({ command: char, x1: ob[j], y1: ob[j + 1], x: ob[j + 2], y: ob[j + 3] });\n j = j + 3;\n }\n break;\n case 'a':\n for (j = 1; j < ob.length; j++) {\n collection.push({\n command: char, r1: ob[j], r2: ob[j + 1], angle: ob[j + 2], largeArc: ob[j + 3],\n sweep: ob[j + 4], x: ob[j + 5], y: ob[j + 6]\n });\n j = j + 6;\n }\n break;\n }\n }\n }\n return collection;\n}\n/** @private */\nfunction parsePathData(data) {\n var tokenizer = /([a-z]+)|([+-]?(?:\\d+\\.?\\d*|\\.\\d+))/gi;\n var current = [];\n var commands = [];\n var match = {};\n tokenizer.lastIndex = 0;\n var isExponential = false;\n match = tokenizer.exec(data);\n while (match) {\n if (match[1] === 'e') {\n isExponential = true;\n }\n else if (match[1]) {\n if (match[1].toLowerCase() === 'zm') {\n if (current.length) {\n commands.push(current);\n }\n commands.push(['Z']);\n current = [match[1].substring(1, 2)];\n }\n else {\n if (current.length) {\n commands.push(current);\n }\n current = [match[1]];\n }\n isExponential = false;\n }\n else {\n if (!current.length) {\n current = [];\n }\n if (!isExponential) {\n current.push(Number(match[2]));\n }\n isExponential = false;\n }\n match = tokenizer.exec(data);\n }\n if (current.length) {\n commands.push(current);\n }\n return commands;\n}\n/**\n * Used to find the path for rounded rect\n */\nfunction getRectanglePath(cornerRadius, height, width) {\n if (cornerRadius > height / 2) {\n cornerRadius = height / 2;\n }\n if (cornerRadius > width / 2) {\n cornerRadius = width / 2;\n }\n var x = 0;\n var y = 0;\n var path = '';\n var points = [{ x: x + cornerRadius, y: y }, { x: x + width - cornerRadius, y: y },\n { x: x + width, y: y + cornerRadius }, { x: x + width, y: y + height - cornerRadius },\n { x: x + width - cornerRadius, y: y + height }, { x: x + cornerRadius, y: y + height },\n { x: x, y: y + height - cornerRadius }, { x: x, y: y + cornerRadius }\n ];\n var corners = [{ x: x + width, y: y }, { x: x + width, y: y + height }, { x: x, y: y + height }, { x: x, y: y }];\n var corner = 0;\n var point2;\n var next;\n path = 'M' + points[0].x + ' ' + points[0].y;\n var i;\n for (i = 0; i < points.length; i = i + 2) {\n point2 = points[i + 1];\n path += 'L' + point2.x + ' ' + point2.y;\n next = points[i + 2] || points[0];\n path += 'Q' + corners[corner].x + ' ' + corners[corner].y + ' ' + next.x + ' ' + next.y;\n corner++;\n }\n return path;\n}\n/** @private */\nfunction pathSegmentCollection(collection) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var segments = [];\n for (x = 0, y = 0, i = 0, length = collection.length; i < length; ++i) {\n var obj = collection[i];\n var seg = obj;\n var char = '';\n char = seg.command;\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n var prev = segments[segments.length - 1];\n switch (char) {\n case 'M':\n segments.push({ command: 'M', x: x, y: y });\n break;\n case 'L':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x, y: y });\n break;\n case 'H':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x, y: y0 });\n break;\n case 'V':\n segments.push({ command: 'L', x0: x0, y0: y0, x: x0, y: y });\n break;\n case 'C':\n segments.push({ command: 'C', x0: x0, y0: y0, x1: x1, y1: y1, x2: x2, y2: y2, x: x, y: y });\n break;\n case 'S':\n if (prev) {\n var ctrl = void 0;\n if (prev.command === 'C' || prev.command === 'S') {\n ctrl = { x: prev.x2, y: prev.y2 };\n }\n else {\n ctrl = { x: x0, y: y0 };\n }\n var cpt2 = { x: 2 * x0 - ctrl.x, y: 2 * y0 - ctrl.y };\n segments.push({ command: 'C', x0: x0, y0: y0, x1: cpt2.x, y1: cpt2.y, x2: x2, y2: y2, x: x, y: y });\n }\n break;\n case 'Q':\n //ctx.quadraticCurveTo(x1, y1, x, y);\n segments.push({ command: 'Q', x0: x0, y0: y0, x1: x1, y1: y1, x: x, y: y });\n break;\n case 'T':\n if (prev) {\n var ctrl = void 0;\n if (prev.command === 'Q') {\n ctrl = { x: prev.x1, y: prev.y1 };\n }\n else {\n ctrl = { x: x0, y: y0 };\n }\n var cpt2 = { x: 2 * x0 - ctrl.x, y: 2 * y0 - ctrl.y };\n segments.push({ command: 'Q', x0: x0, y0: y0, x1: cpt2.x, y1: cpt2.y, x: x, y: y });\n }\n break;\n case 'A':\n var newSeg = seg;\n newSeg.command = 'A';\n segments.push(newSeg);\n break;\n case 'Z':\n case 'z':\n segments.push({ command: 'Z' });\n x = x0;\n y = y0;\n break;\n }\n x0 = x;\n y0 = y;\n }\n return segments;\n}\n/** @private */\nfunction transformPath(arr, sX, sY, s, bX, bY, iX, iY) {\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var newSeg;\n for (x = 0, y = 0, i = 0, length = arr.length; i < length; ++i) {\n var obj = arr[i];\n var seg = obj;\n var char = seg.command;\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if (s) {\n if (x !== undefined) {\n x = scalePathData(x, sX, bX, iX);\n }\n if (y !== undefined) {\n y = scalePathData(y, sY, bY, iY);\n }\n if (x1 !== undefined) {\n x1 = scalePathData(x1, sX, bX, iX);\n }\n if (y1 !== undefined) {\n y1 = scalePathData(y1, sY, bY, iY);\n }\n if (x2 !== undefined) {\n x2 = scalePathData(x2, sX, bX, iX);\n }\n if (y2 !== undefined) {\n y2 = scalePathData(y2, sY, bY, iY);\n }\n }\n else {\n if (x !== undefined) {\n x = Number((x + sX).toFixed(2));\n }\n if (y !== undefined) {\n y = Number((y + sY).toFixed(2));\n }\n if (x1 !== undefined) {\n x1 = Number((x1 + sX).toFixed(2));\n }\n if (y1 !== undefined) {\n y1 = Number((y1 + sY).toFixed(2));\n }\n if (x2 !== undefined) {\n x2 = Number((x2 + sX).toFixed(2));\n }\n if (y2 !== undefined) {\n y2 = Number((y2 + sY).toFixed(2));\n }\n }\n var scaledPath = { x: x, y: y, x1: x1, y1: y1, x2: x2, y2: y2, r1: seg.r1, r2: seg.r2 };\n newSeg = updatedSegment(seg, char, scaledPath, s, sX, sY);\n if (newSeg) {\n arr[i] = newSeg;\n }\n // Record the start of a subpath\n \n }\n var pathData = getPathString(arr);\n return pathData;\n}\n/** @private */\nfunction updatedSegment(segment, char, obj, isScale, sX, sY) {\n switch (char) {\n case 'M':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'L':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'H':\n segment.x = obj.x;\n break;\n case 'V':\n segment.y = obj.y;\n break;\n case 'C':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x1 = obj.x1;\n segment.y1 = obj.y1;\n segment.x2 = obj.x2;\n segment.y2 = obj.y2;\n break;\n case 'S':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x2 = obj.x2;\n segment.y2 = obj.y2;\n break;\n case 'Q':\n segment.x = obj.x;\n segment.y = obj.y;\n segment.x1 = obj.x1;\n segment.y1 = obj.y1;\n break;\n case 'T':\n segment.x = obj.x;\n segment.y = obj.y;\n break;\n case 'A':\n var r1 = obj.r1;\n var r2 = obj.r2;\n if (isScale) {\n obj.r1 = r1 = (r1 * sX);\n obj.r2 = r2 = (r2 * sY);\n }\n segment.x = obj.x;\n segment.y = obj.y;\n segment.r1 = obj.r1;\n segment.r2 = obj.r2;\n break;\n case 'z':\n case 'Z':\n segment = { command: 'Z' };\n break;\n }\n return segment;\n}\n/** @private */\nfunction scalePathData(val, scaleFactor, oldOffset, newOffset) {\n if (val !== oldOffset) {\n if (newOffset !== oldOffset) {\n val = (((val * scaleFactor) - (Number(oldOffset) * scaleFactor - Number(oldOffset)))\n + (newOffset - Number(oldOffset)));\n }\n else {\n val = ((Number(val) * scaleFactor) - (Number(oldOffset) * scaleFactor - Number(oldOffset)));\n }\n }\n else {\n if (newOffset !== oldOffset) {\n val = newOffset;\n }\n }\n return Number(val.toFixed(2));\n}\n/** @private */\nfunction splitArrayCollection(arrayCollection) {\n var x0;\n var y0;\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n for (x = 0, y = 0, i = 0, length = arrayCollection.length; i < length; ++i) {\n var path = arrayCollection[i];\n var seg = path;\n var char = seg.command;\n if (/[MLHVCSQTA]/.test(char)) {\n if ('x' in seg) {\n seg.x = x = seg.x;\n }\n if ('y' in seg) {\n seg.y = y = seg.y;\n }\n }\n else {\n if ('x1' in seg) {\n seg.x1 = x1 = x + seg.x1;\n }\n if ('x2' in seg) {\n seg.x2 = x2 = x + seg.x2;\n }\n if ('y1' in seg) {\n seg.y1 = y1 = y + seg.y1;\n }\n if ('y2' in seg) {\n seg.y2 = y2 = y + seg.y2;\n }\n if ('x' in seg) {\n seg.x = x += seg.x;\n }\n if ('y' in seg) {\n seg.y = y += seg.y;\n }\n var newSeg = void 0;\n switch (char) {\n case 'm':\n case 'M':\n newSeg = { command: 'M', x: x, y: y };\n break;\n case 'l':\n case 'L':\n newSeg = { command: 'L', x: x, y: y };\n break;\n case 'h':\n case 'H':\n newSeg = { command: 'H', x: x };\n break;\n case 'v':\n case 'V':\n newSeg = { command: 'V', y: y };\n break;\n case 'c':\n case 'C':\n newSeg = { command: 'C', x: x, y: y, x1: x1, y1: y1, x2: x2, y2: y2 };\n break;\n case 's':\n case 'S':\n newSeg = { command: 'S', x: x, y: y, x2: x2, y2: y2 };\n break;\n case 'q':\n case 'Q':\n newSeg = { command: 'Q', x: x, y: y, x1: x1, y1: y1 };\n break;\n case 't':\n case 'T':\n newSeg = { command: 'T', x: x, y: y };\n break;\n case 'a':\n case 'A':\n newSeg = { command: 'A', x: x, y: y };\n newSeg.r1 = seg.r1;\n newSeg.r2 = seg.r2;\n newSeg.angle = seg.angle;\n newSeg.largeArc = seg.largeArc;\n newSeg.sweep = seg.sweep;\n break;\n case 'z':\n case 'Z':\n newSeg = { command: 'Z' };\n x = x0;\n y = y0;\n newSeg = arrayCollection[i];\n break;\n }\n if (newSeg) {\n arrayCollection[i] = newSeg;\n }\n }\n if (char === 'M' || char === 'm') {\n x0 = x;\n y0 = y;\n }\n }\n return arrayCollection;\n}\n/** @private */\nfunction getPathString(arrayCollection) {\n var getNewString = '';\n var i;\n for (i = 0; i < arrayCollection.length; i++) {\n if (i === 0) {\n getNewString += getString(arrayCollection[i]);\n }\n else {\n getNewString += ' ' + getString(arrayCollection[i]);\n }\n }\n return getNewString;\n}\n/** @private */\nfunction getString(obj) {\n var string = '';\n switch (obj.command) {\n case 'Z':\n case 'z':\n string = obj.command;\n break;\n case 'M':\n case 'm':\n case 'L':\n case 'l':\n string = obj.command + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'C':\n case 'c':\n string = obj.command + ' ' + obj.x1 + ' ' + obj.y1 + ' ' + obj.x2 + ' ' + obj.y2 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'Q':\n case 'q':\n string = obj.command + ' ' + obj.x1 + ' ' + obj.y1 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'A':\n case 'a':\n var cmd = obj.command;\n var ang = obj.angle;\n var l = (obj.largeArc ? '1' : '0');\n var s = (obj.sweep ? '1' : '0');\n string = cmd + ' ' + obj.r1 + ' ' + obj.r2 + ' ' + ang + ' ' + l + ' ' + s + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'H':\n case 'h':\n string = obj.command + ' ' + obj.x;\n break;\n case 'V':\n case 'v':\n string = obj.command + ' ' + obj.y;\n break;\n case 'S':\n case 's':\n string = obj.command + ' ' + obj.x2 + ' ' + obj.y2 + ' ' + obj.x + ' ' + obj.y;\n break;\n case 'T':\n case 't':\n string = obj.command + ' ' + obj.x + ' ' + obj.y;\n }\n return string;\n}\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PathElement takes care of how to align the path based on offsetX and offsetY\n */\nvar PathElement = /** @__PURE__ @class */ (function (_super) {\n __extends$5(PathElement, _super);\n /**\n * set the id for each element\n */\n function PathElement() {\n var _this = _super.call(this) || this;\n /**\n * Gets or sets the geometry of the path element\n */\n _this.pathData = '';\n /**\n * Gets/Sets whether the path has to be transformed to fit the given x,y, width, height\n */\n _this.transformPath = true;\n /**\n * Gets/Sets the equivalent path, that will have the origin as 0,0\n */\n _this.absolutePath = '';\n /** @private */\n _this.canMeasurePath = false;\n //Private variables\n /** @private */\n _this.absoluteBounds = new Rect();\n return _this;\n }\n Object.defineProperty(PathElement.prototype, \"data\", {\n /**\n * Gets the geometry of the path element\n */\n get: function () {\n return this.pathData;\n },\n /**\n * Sets the geometry of the path element\n */\n set: function (value) {\n if (this.pathData !== value) {\n this.pathData = value;\n this.isDirt = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Measures the minimum space that is required to render the element\n * @param availableSize\n */\n PathElement.prototype.measure = function (availableSize) {\n //Performance issue - Avoiding measuring the connector path\n if (this.staticSize && this.width !== undefined && this.height !== undefined) {\n this.absoluteBounds = new Rect(this.offsetX - this.width * this.pivot.x, this.offsetY - this.height * this.pivot.y, this.width, this.height);\n }\n else if (this.isDirt && (this.transformPath || (this.width === undefined || this.height === undefined))\n && (!this.absoluteBounds || this.absoluteBounds.height === 0) || this.canMeasurePath) {\n //Measure the element only whent the path data is changed/ size is not specified\n this.absoluteBounds = measurePath(this.data ? this.data : '');\n }\n if (this.width === undefined) {\n this.desiredSize = new Size(this.absoluteBounds.width, this.height || this.absoluteBounds.height);\n }\n else if (this.height === undefined) {\n this.desiredSize = new Size(this.width || this.absoluteBounds.width, this.absoluteBounds.height);\n }\n else {\n this.desiredSize = new Size(this.width, this.height);\n }\n this.desiredSize = this.validateDesiredSize(this.desiredSize, availableSize);\n this.canMeasurePath = false;\n return this.desiredSize;\n };\n /**\n * Arranges the path element\n * @param desiredSize\n */\n PathElement.prototype.arrange = function (desiredSize) {\n if (this.isDirt || this.actualSize.width !== desiredSize.width || this.actualSize.height !== desiredSize.height) {\n this.isDirt = true;\n this.absolutePath = this.updatePath(this.data, this.absoluteBounds, desiredSize);\n if (!this.staticSize) {\n this.points = null;\n }\n }\n this.actualSize = this.desiredSize;\n this.updateBounds();\n this.isDirt = false;\n return this.actualSize;\n };\n /**\n * Translates the path to 0,0 and scales the path based on the actual size\n * @param pathData\n * @param bounds\n * @param actualSize\n */\n PathElement.prototype.updatePath = function (pathData, bounds, actualSize) {\n var isScale = false;\n var newPathString = '';\n var scaleX = -bounds.x;\n var scaleY = -bounds.y;\n var arrayCollection = [];\n if (actualSize.width !== bounds.width || actualSize.height !== bounds.height) {\n scaleX = actualSize.width / Number(bounds.width ? bounds.width : 1);\n scaleY = actualSize.height / Number(bounds.height ? bounds.height : 1);\n isScale = true;\n }\n arrayCollection = processPathData(pathData);\n arrayCollection = splitArrayCollection(arrayCollection);\n if ((isScale || this.isDirt) && this.transformPath) {\n newPathString = transformPath(arrayCollection, scaleX, scaleY, isScale, bounds.x, bounds.y, 0, 0);\n }\n else {\n newPathString = getPathString(arrayCollection);\n }\n isScale = false;\n return newPathString;\n };\n return PathElement;\n}(DrawingElement));\n\n/**\n * Diagram component exported items\n */\n\n/**\n * Diagram component exported items\n */\n\n/**\n * Diagram component exported items\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n/**\n * Defines and processes coordinates\n */\nvar Point = /** @__PURE__ @class */ (function (_super) {\n __extends$6(Point, _super);\n function Point() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /** @private */\n Point.equals = function (point1, point2) {\n if (point1 === point2) {\n return true;\n }\n if (!point1 || !point2) {\n return false;\n }\n return !point1 || !point2 || point1.x === point2.x && point1.y === point2.y;\n };\n /**\n * check whether the points are given\n */\n Point.isEmptyPoint = function (point) {\n if (point.x && point.y) {\n return false;\n }\n return true;\n };\n /** @private */\n Point.transform = function (point, angle, length) {\n var pt = { x: 0, y: 0 };\n pt.x = Math.round((point.x + length * Math.cos(angle * Math.PI / 180)) * 100) / 100;\n pt.y = Math.round((point.y + length * Math.sin(angle * Math.PI / 180)) * 100) / 100;\n return pt;\n };\n /** @private */\n Point.findLength = function (s, e) {\n var length = Math.sqrt(Math.pow((s.x - e.x), 2) + Math.pow((s.y - e.y), 2));\n return length;\n };\n /** @private */\n Point.findAngle = function (point1, point2) {\n var angle = Math.atan2(point2.y - point1.y, point2.x - point1.x);\n angle = (180 * angle / Math.PI);\n angle %= 360;\n if (angle < 0) {\n angle += 360;\n }\n return angle;\n };\n /** @private */\n Point.distancePoints = function (pt1, pt2) {\n return Math.sqrt(Math.pow(pt2.x - pt1.x, 2) + Math.pow(pt2.y - pt1.y, 2));\n };\n /** @private */\n Point.getLengthFromListOfPoints = function (points) {\n var length = 0;\n for (var j = 0; j < points.length - 1; j++) {\n length += this.distancePoints(points[j], points[j + 1]);\n }\n return length;\n };\n /** @private */\n Point.adjustPoint = function (source, target, isStart, length) {\n var pt = isStart ? { x: source.x, y: source.y } : { x: target.x, y: target.y };\n var angle;\n if (source.x === target.x) {\n if (source.y < target.y && isStart || source.y > target.y && !isStart) {\n pt.y += length;\n }\n else {\n pt.y -= length;\n }\n }\n else if (source.y === target.y) {\n if (source.x < target.x && isStart || source.x > target.x && !isStart) {\n pt.x += length;\n }\n else {\n pt.x -= length;\n }\n }\n else {\n if (isStart) {\n angle = this.findAngle(source, target);\n pt = this.transform(source, angle, length);\n }\n else {\n angle = this.findAngle(target, source);\n pt = this.transform(target, angle, length);\n }\n }\n return pt;\n };\n /** @private */\n Point.direction = function (pt1, pt2) {\n if (Math.abs(pt2.x - pt1.x) > Math.abs(pt2.y - pt1.y)) {\n return pt1.x < pt2.x ? 'Right' : 'Left';\n }\n else {\n return pt1.y < pt2.y ? 'Bottom' : 'Top';\n }\n };\n /**\n * @private\n * Returns the name of class Point\n */\n Point.prototype.getClassName = function () {\n return 'Point';\n };\n __decorate$1([\n Property(0)\n ], Point.prototype, \"x\", void 0);\n __decorate$1([\n Property(0)\n ], Point.prototype, \"y\", void 0);\n return Point;\n}(ChildProperty));\n\n/**\n * Diagram component exported items\n */\n\n// import { overFlow } from './../utility/base-util';\n/**\n * Canvas Renderer\n */\n/** @private */\nvar CanvasRenderer = /** @__PURE__ @class */ (function () {\n function CanvasRenderer() {\n }\n /** @private */\n CanvasRenderer.getContext = function (canvas) {\n return canvas.getContext('2d');\n };\n CanvasRenderer.prototype.setStyle = function (canvas, style) {\n var ctx = CanvasRenderer.getContext(canvas);\n if (style.fill === 'none') {\n style.fill = 'transparent';\n }\n if (style.stroke === 'none') {\n style.stroke = 'transparent';\n }\n ctx.strokeStyle = style.stroke;\n ctx.lineWidth = style.strokeWidth;\n if (style.strokeWidth === 0) {\n ctx.strokeStyle = 'transparent';\n }\n ctx.globalAlpha = style.opacity;\n var dashArray = [];\n if (style.dashArray) {\n dashArray = this.parseDashArray(style.dashArray);\n }\n ctx.setLineDash(dashArray);\n ctx.fillStyle = style.fill;\n };\n CanvasRenderer.prototype.rotateContext = function (canvas, angle, x, y) {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.translate(x, y);\n ctx.rotate(angle * Math.PI / 180);\n ctx.translate(-x, -y);\n };\n CanvasRenderer.prototype.setFontStyle = function (canvas, text) {\n var ctx = CanvasRenderer.getContext(canvas);\n var font = '';\n if (text.italic) {\n font += 'italic ';\n }\n if (text.bold) {\n font += 'bold ';\n }\n font += (text.fontSize) + 'px ';\n font += text.fontFamily;\n ctx.font = font;\n };\n /** @private */\n CanvasRenderer.prototype.parseDashArray = function (dashArray) {\n var dashes = [];\n var separator = dashArray.indexOf(' ') !== -1 ? ' ' : ',';\n var splittedDashes = dashArray.split(separator);\n for (var _i = 0, splittedDashes_1 = splittedDashes; _i < splittedDashes_1.length; _i++) {\n var i = splittedDashes_1[_i];\n dashes.push(Number(i));\n }\n return dashes;\n };\n //Rendering Part\n /** @private */\n CanvasRenderer.prototype.drawRectangle = function (canvas, options) {\n if (options.visible === true) {\n if (options.cornerRadius) {\n options.data = getRectanglePath(options.cornerRadius, options.height, options.width);\n this.drawPath(canvas, options);\n }\n else {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n ctx.beginPath();\n var cornerRadius = options.cornerRadius;\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setStyle(canvas, options);\n ctx.rect(options.x, options.y, options.width, options.height);\n ctx.fillRect(options.x, options.y, options.width, options.height);\n ctx.fill();\n ctx.stroke();\n ctx.closePath();\n ctx.restore();\n }\n }\n };\n /** @private */\n CanvasRenderer.prototype.drawPath = function (canvas, options) {\n var collection = [];\n collection = processPathData(options.data);\n collection = pathSegmentCollection(collection);\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n ctx.beginPath();\n var pivotY = options.y + options.height * options.pivotY;\n var pivotX = options.x + options.width * options.pivotX;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setStyle(canvas, options);\n ctx.translate(options.x, options.y);\n this.renderPath(canvas, options, collection);\n ctx.fill();\n ctx.translate(-options.x, -options.y);\n ctx.stroke();\n ctx.restore();\n };\n /** @private */\n CanvasRenderer.prototype.renderPath = function (canvas, options, collection) {\n if (options.visible === true) {\n var ctx = CanvasRenderer.getContext(canvas);\n var x0 = void 0;\n var y0 = void 0;\n var x1 = void 0;\n var y1 = void 0;\n var x2 = void 0;\n var y2 = void 0;\n var x = void 0;\n var y = void 0;\n var length_1;\n var i = void 0;\n var segs = collection;\n for (x = 0, y = 0, i = 0, length_1 = segs.length; i < length_1; ++i) {\n var obj = segs[i];\n var seg = obj;\n var char = seg.command;\n if ('x1' in seg) {\n x1 = seg.x1;\n }\n if ('x2' in seg) {\n x2 = seg.x2;\n }\n if ('y1' in seg) {\n y1 = seg.y1;\n }\n if ('y2' in seg) {\n y2 = seg.y2;\n }\n if ('x' in seg) {\n x = seg.x;\n }\n if ('y' in seg) {\n y = seg.y;\n }\n switch (char) {\n case 'M':\n ctx.moveTo(x, y);\n seg.x = x;\n seg.y = y;\n break;\n case 'L':\n ctx.lineTo(x, y);\n seg.x = x;\n seg.y = y;\n break;\n case 'C':\n ctx.bezierCurveTo(x1, y1, x2, y2, x, y);\n seg.x = x;\n seg.y = y;\n seg.x1 = x1;\n seg.y1 = y1;\n seg.x2 = x2;\n seg.y2 = y2;\n break;\n case 'Q':\n ctx.quadraticCurveTo(x1, y1, x, y);\n seg.x = x;\n seg.y = y;\n seg.x1 = x1;\n seg.y1 = y1;\n break;\n case 'A':\n var curr = { x: x0, y: y0 };\n var rx = seg.r1;\n var ry = seg.r2;\n var xAxisRotation = seg.angle * (Math.PI / 180.0);\n var largeArc = seg.largeArc;\n var sweep = seg.sweep;\n var cp = { x: x, y: y };\n var currp = {\n x: Math.cos(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.sin(xAxisRotation) * (curr.y - cp.y) / 2.0,\n y: -Math.sin(xAxisRotation) * (curr.x - cp.x) / 2.0 + Math.cos(xAxisRotation) * (curr.y - cp.y) / 2.0\n };\n var l = Math.pow(currp.x, 2) / Math.pow(rx, 2) + Math.pow(currp.y, 2) / Math.pow(ry, 2);\n if (l > 1) {\n rx *= Math.sqrt(l);\n ry *= Math.sqrt(l);\n }\n var k = (Math.pow(ry, 2) * Math.pow(currp.x, 2));\n var s = (largeArc === sweep ? -1 : 1) * Math.sqrt(((Math.pow(rx, 2) * Math.pow(ry, 2)) - (Math.pow(rx, 2) * Math.pow(currp.y, 2)) - k) /\n (Math.pow(rx, 2) * Math.pow(currp.y, 2) + Math.pow(ry, 2) * Math.pow(currp.x, 2)));\n if (isNaN(s)) {\n s = 0;\n }\n var cpp = { x: s * rx * currp.y / ry, y: s * -ry * currp.x / rx };\n var centp = {\n x: (curr.x + cp.x) / 2.0 + Math.cos(xAxisRotation) * cpp.x - Math.sin(xAxisRotation) * cpp.y,\n y: (curr.y + cp.y) / 2.0 + Math.sin(xAxisRotation) * cpp.x + Math.cos(xAxisRotation) * cpp.y\n };\n var a1 = this.a([1, 0], [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry]);\n var u = [(currp.x - cpp.x) / rx, (currp.y - cpp.y) / ry];\n var v = [(-currp.x - cpp.x) / rx, (-currp.y - cpp.y) / ry];\n var ad = this.a(u, v);\n if (this.r(u, v) <= -1) {\n ad = Math.PI;\n }\n if (this.r(u, v) >= 1) {\n ad = 0;\n }\n \n \n \n seg.centp = centp;\n seg.xAxisRotation = xAxisRotation;\n seg.rx = rx;\n seg.ry = ry;\n seg.a1 = a1;\n seg.ad = ad;\n seg.sweep = sweep;\n if (ctx != null) {\n var ra = rx > ry ? rx : ry;\n var sx = rx > ry ? 1 : rx / ry;\n var sy = rx > ry ? ry / rx : 1;\n ctx.save();\n ctx.translate(centp.x, centp.y);\n ctx.rotate(xAxisRotation);\n ctx.scale(sx, sy);\n ctx.arc(0, 0, ra, a1, a1 + ad, !sweep);\n ctx.scale(1 / sx, 1 / sy);\n ctx.rotate(-xAxisRotation);\n ctx.translate(-centp.x, -centp.y);\n ctx.restore();\n }\n break;\n case 'Z':\n case 'z':\n ctx.closePath();\n x = x0;\n y = y0;\n break;\n }\n x0 = x;\n y0 = y;\n }\n }\n };\n /** @private */\n CanvasRenderer.prototype.drawText = function (canvas, options) {\n if (options.content && options.visible === true) {\n var ctx = CanvasRenderer.getContext(canvas);\n ctx.save();\n this.setStyle(canvas, options);\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n this.rotateContext(canvas, options.angle, pivotX, pivotY);\n this.setFontStyle(canvas, options);\n var i = 0;\n var childNodes = [];\n childNodes = options.childNodes;\n var wrapBounds = options.wrapBounds;\n ctx.fillStyle = options.color;\n if (wrapBounds) {\n var position = this.labelAlign(options, wrapBounds, childNodes);\n for (i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n var offsetX = position.x + child.x - wrapBounds.x;\n var offsetY = position.y + child.dy * i + ((options.fontSize) * 0.8);\n // if (wrapBounds.width > options.width && options.textOverflow !== 'Wrap') {\n // child.text = overFlow(child.text, options);\n // }\n ctx.fillText(child.text, offsetX, offsetY);\n if (options.textDecoration === 'Underline'\n || options.textDecoration === 'Overline'\n || options.textDecoration === 'LineThrough') {\n var startPointX = offsetX;\n var startPointY = void 0;\n var textlength = ctx.measureText(child.text).width;\n var endPointX = offsetX + textlength;\n var endPointY = void 0;\n switch (options.textDecoration) {\n case 'Underline':\n startPointY = offsetY + 2;\n endPointY = offsetY + 2;\n break;\n case 'Overline':\n startPointY = (position.y + child.dy * i);\n endPointY = (position.y + child.dy * i);\n break;\n case 'LineThrough':\n startPointY = ((offsetY + position.y + child.dy * i) / 2) + 2;\n endPointY = ((offsetY + position.y + child.dy * i) / 2) + 2;\n }\n ctx.beginPath();\n ctx.moveTo(startPointX, startPointY);\n ctx.lineTo(endPointX, endPointY);\n ctx.strokeStyle = options.color;\n ctx.lineWidth = options.fontSize * .08;\n ctx.globalAlpha = options.opacity;\n ctx.stroke();\n }\n }\n }\n ctx.restore();\n }\n };\n //end region\n // vector magnitude\n CanvasRenderer.prototype.m = function (v) { return Math.sqrt(Math.pow(v[0], 2) + Math.pow(v[1], 2)); };\n // ratio between two vectors\n CanvasRenderer.prototype.r = function (u, v) { return (u[0] * v[0] + u[1] * v[1]) / (this.m(u) * this.m(v)); };\n // angle between two vectors\n CanvasRenderer.prototype.a = function (u, v) { return (u[0] * v[1] < u[1] * v[0] ? -1 : 1) * Math.acos(this.r(u, v)); };\n CanvasRenderer.prototype.getMeetOffset = function (arg, res, dest) {\n var max = Math.max(res, dest);\n var min = Math.min(res, dest);\n switch (arg) {\n case 'min': return 0;\n case 'mid': return (max - min) / 2;\n case 'max': return max - min;\n default: return 0;\n }\n };\n CanvasRenderer.prototype.getSliceOffset = function (arg, res, dest, src) {\n switch (arg) {\n case 'min': return 0;\n case 'mid': return (res - dest) / 2 * src / res;\n case 'max': return (res - dest) * src / res;\n default: return 0;\n }\n };\n CanvasRenderer.prototype.image = function (ctx, image, x, y, width, height, alignOptions) {\n ctx.beginPath();\n var srcWidth = image.width;\n var srcHeight = image.height;\n var destinationW = width;\n var destinationH = height;\n var resultWidth = 0;\n var resultHeight = 0;\n ctx.globalAlpha = alignOptions.opacity;\n if (alignOptions && alignOptions.alignment !== 'None') {\n var xalign = alignOptions.alignment.toLowerCase().substr(1, 3);\n var yalign = alignOptions.alignment.toLowerCase().substr(5, 3);\n if (alignOptions.scale === 'Slice') {\n var a = function () {\n resultWidth = destinationW;\n resultHeight = srcHeight * destinationW / srcWidth;\n };\n var b = function () {\n resultWidth = srcWidth * destinationH / srcHeight;\n resultHeight = destinationH;\n };\n if (destinationW > destinationH) {\n a();\n if (destinationH > resultHeight) {\n b();\n }\n }\n else if (destinationW === destinationH) {\n if (srcWidth > srcHeight) {\n b();\n }\n else {\n a();\n }\n }\n else {\n b();\n if (destinationW > resultWidth) {\n a();\n }\n }\n var x1 = this.getSliceOffset(xalign, resultWidth, destinationW, srcWidth);\n var y1 = this.getSliceOffset(yalign, resultHeight, destinationH, srcHeight);\n var sWidth = srcWidth - x1;\n var sHeight = srcHeight - y1;\n var dWidth = resultWidth - (x1 * (resultWidth / srcWidth));\n var dHeight = resultHeight - (y1 * (resultHeight / srcHeight));\n var canvas1 = createHtmlElement('canvas', { 'width': width.toString(), 'height': height.toString() });\n var ctx1 = canvas1.getContext('2d');\n ctx1.drawImage(image, x1, y1, sWidth, sHeight, 0, 0, dWidth, dHeight);\n ctx.drawImage(canvas1, x, y, width, height);\n }\n else if (alignOptions.scale === 'Meet') {\n var srcRatio = (srcHeight / srcWidth);\n var destRatio = (destinationH / destinationW);\n resultWidth = destRatio > srcRatio ? destinationW : destinationH / srcRatio;\n resultHeight = destRatio > srcRatio ? destinationW * srcRatio : destinationH;\n x += this.getMeetOffset(xalign, resultWidth, destinationW);\n y += this.getMeetOffset(yalign, resultHeight, destinationH);\n ctx.drawImage(image, 0, 0, srcWidth, srcHeight, x, y, resultWidth, resultHeight);\n }\n else {\n ctx.drawImage(image, x, y, width, height);\n }\n }\n else {\n if (image.complete) {\n ctx.drawImage(image, x, y, width, height);\n }\n else {\n var transform_1 = ctx.getTransform();\n image.onload = function () {\n ctx.setTransform(transform_1.a, transform_1.b, transform_1.c, transform_1.d, transform_1.e, transform_1.f);\n ctx.drawImage(image, x, y, width, height);\n };\n }\n }\n ctx.closePath();\n };\n // text utility\n CanvasRenderer.prototype.loadImage = function (ctx, obj, canvas, pivotX, pivotY) {\n this.rotateContext(canvas, obj.angle, pivotX, pivotY);\n var image;\n if (window.customStampCollection && window.customStampCollection.get(obj.printID)) {\n image = window.customStampCollection.get(obj.printID);\n }\n else {\n image = new Image();\n image.src = obj.source;\n }\n this.image(ctx, image, obj.x, obj.y, obj.width, obj.height, obj);\n };\n /** @private */\n CanvasRenderer.prototype.drawImage = function (canvas, obj, parentSvg, fromPalette) {\n var _this = this;\n if (obj.visible) {\n var ctx_1 = CanvasRenderer.getContext(canvas);\n ctx_1.save();\n var pivotX_1 = obj.x + obj.width * obj.pivotX;\n var pivotY_1 = obj.y + obj.height * obj.pivotY;\n var imageObj = new Image();\n imageObj.src = obj.source;\n var id = ctx_1.canvas.id.split('_');\n var value = id[id.length - 1] === ('diagram' || 'diagramLayer') ? true : false;\n /**\n * Since Clipping portion for node with slice option is not calculated properly\n * if (obj.sourceX !== undefined && obj.sourceY !== undefined && obj.sourceWidth !== undefined\n * && obj.sourceHeight !== undefined) {\n * ctx.drawImage(imageObj, obj.sourceX, obj.sourceY, obj.sourceWidth, obj.sourceHeight, obj.x, obj.y, obj.width, obj.height);\n * } else {\n * ctx.drawImage(imageObj, obj.x, obj.y, obj.width, obj.height);\n * }\n */\n if (!fromPalette) {\n this.loadImage(ctx_1, obj, canvas, pivotX_1, pivotY_1);\n }\n else {\n imageObj.onload = function () {\n _this.loadImage(ctx_1, obj, canvas, pivotX_1, pivotY_1);\n };\n }\n ctx_1.restore();\n }\n };\n /** @private */\n CanvasRenderer.prototype.labelAlign = function (text, wrapBounds, childNodes) {\n var bounds = new Size(wrapBounds.width, childNodes.length * (text.fontSize * 1.2));\n var position = { x: 0, y: 0 };\n var labelX = text.x;\n var labelY = text.y;\n var offsetx = text.width * 0.5;\n var offsety = text.height * 0.5;\n var pointx = offsetx;\n var pointy = offsety;\n if (text.textAlign === 'left') {\n pointx = 0;\n }\n else if (text.textAlign === 'center') {\n if (wrapBounds.width > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n pointx = 0;\n }\n else {\n pointx = text.width * 0.5;\n }\n }\n else if (text.textAlign === 'right') {\n pointx = (text.width * 1);\n }\n position.x = labelX + pointx + (wrapBounds ? wrapBounds.x : 0);\n position.y = labelY + pointy - bounds.height / 2;\n return position;\n };\n return CanvasRenderer;\n}());\nfunction refreshDiagramElements(canvas, drawingObjects, renderer) {\n for (var i = 0; i < drawingObjects.length; i++) {\n renderer.renderElement(drawingObjects[i], canvas, undefined);\n }\n}\n\n/**\n * Renderer module is used to render basic diagram elements\n */\n/** @private */\nvar DrawingRenderer = /** @__PURE__ @class */ (function () {\n function DrawingRenderer(name, isSvgMode) {\n /** @private */\n this.renderer = null;\n // private svgRenderer: SvgRenderer;\n /** @private */\n this.isSvgMode = true;\n this.diagramId = name;\n this.element = getDiagramElement(this.diagramId);\n this.isSvgMode = isSvgMode;\n this.renderer = new CanvasRenderer();\n // this.svgRenderer = new SvgRenderer();\n }\n // /** @private */\n // public setLayers(): void {\n // this.adornerSvgLayer = this.element.getElementsByClassName('e-adorner-layer')[0] as SVGSVGElement;\n // }\n /** @private */\n DrawingRenderer.prototype.renderElement = function (element, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue) {\n if (element instanceof Container) {\n this.renderContainer(element, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue);\n }\n else if (element instanceof ImageElement) {\n this.renderImageElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else if (element instanceof PathElement) {\n this.renderPathElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else if (element instanceof TextElement) {\n this.renderTextElement(element, canvas, transform, parentSvg, fromPalette);\n }\n else {\n this.renderRect(element, canvas, transform, parentSvg);\n }\n };\n /** @private */\n DrawingRenderer.prototype.renderImageElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = 0;\n this.renderer.drawRectangle(canvas, options);\n // let sx: number; let sy: number;\n var imageWidth;\n var imageHeight;\n var sourceWidth;\n var sourceHeight;\n if (element.stretch === 'Stretch') {\n imageWidth = element.actualSize.width;\n imageHeight = element.actualSize.height;\n }\n else {\n var contentWidth = element.contentSize.width;\n var contentHeight = element.contentSize.height;\n var widthRatio = options.width / contentWidth;\n var heightRatio = options.height / contentHeight;\n var ratio = void 0;\n switch (element.stretch) {\n case 'Meet':\n ratio = Math.min(widthRatio, heightRatio);\n imageWidth = contentWidth * ratio;\n imageHeight = contentHeight * ratio;\n options.x += Math.abs(options.width - imageWidth) / 2;\n options.y += Math.abs(options.height - imageHeight) / 2;\n break;\n case 'Slice':\n widthRatio = options.width / contentWidth;\n heightRatio = options.height / contentHeight;\n ratio = Math.max(widthRatio, heightRatio);\n imageWidth = contentWidth * ratio;\n imageHeight = contentHeight * ratio;\n sourceWidth = options.width / imageWidth * contentWidth;\n sourceHeight = options.height / imageHeight * contentHeight;\n break;\n case 'None':\n imageWidth = contentWidth;\n imageHeight = contentHeight;\n break;\n }\n }\n options.width = imageWidth;\n options.height = imageHeight;\n //Commented for code coverage\n //(options as ImageAttributes).sourceX = sx;\n //(options as ImageAttrib utes).sourceY = sy;\n options.sourceWidth = sourceWidth;\n options.sourceHeight = sourceHeight;\n options.source = element.source;\n options.alignment = element.imageAlign;\n options.scale = element.imageScale;\n options.printID = element.printID;\n this.renderer.drawImage(canvas, options, parentSvg, fromPalette);\n };\n /** @private */\n DrawingRenderer.prototype.renderPathElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.data = element.absolutePath;\n options.data = element.absolutePath;\n var ariaLabel = element.id;\n if (!this.isSvgMode) {\n options.x = options.x;\n options.y = options.y;\n }\n this.renderer.drawPath(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.renderTextElement = function (element, canvas, transform, parentSvg, fromPalette) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = 0;\n options.whiteSpace = whiteSpaceToString(element.style.whiteSpace, element.style.textWrapping);\n options.content = element.content;\n options.breakWord = wordBreakToString(element.style.textWrapping);\n options.textAlign = textAlignToString(element.style.textAlign);\n options.color = element.style.color;\n options.italic = element.style.italic;\n options.bold = element.style.bold;\n options.fontSize = element.style.fontSize;\n options.fontFamily = element.style.fontFamily;\n options.textOverflow = element.style.textOverflow;\n options.textDecoration = element.style.textDecoration;\n options.doWrap = element.doWrap;\n options.wrapBounds = element.wrapBounds;\n options.childNodes = element.childNodes;\n options.dashArray = '';\n options.strokeWidth = 0;\n options.fill = element.style.fill;\n var ariaLabel = element.content ? element.content : element.id;\n this.renderer.drawRectangle(canvas, options);\n this.renderer.drawText(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.renderContainer = function (group, canvas, htmlLayer, transform, parentSvg, createParent, fromPalette, indexValue) {\n transform = { tx: 0, ty: 0, scale: 1 };\n if (this.diagramId) {\n parentSvg = parentSvg;\n }\n this.renderRect(group, canvas, transform, parentSvg);\n if (group.hasChildren()) {\n var parentG = void 0;\n for (var _i = 0, _a = group.children; _i < _a.length; _i++) {\n var child = _a[_i];\n this.renderElement(child, parentG || canvas, htmlLayer, transform, parentSvg, true, fromPalette, indexValue);\n }\n }\n };\n /** @private */\n DrawingRenderer.prototype.renderRect = function (element, canvas, transform, parentSvg) {\n var options = this.getBaseAttributes(element, transform);\n options.cornerRadius = element.cornerRadius || 0;\n var ariaLabel = element.id;\n this.renderer.drawRectangle(canvas, options);\n };\n /** @private */\n DrawingRenderer.prototype.getBaseAttributes = function (element, transform) {\n var options = {\n width: element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5,\n fill: element.style.fill, stroke: element.style.strokeColor, angle: element.rotateAngle + element.parentTransform,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: element.style.strokeWidth,\n dashArray: element.style.strokeDashArray || '', opacity: element.style.opacity,\n visible: element.visible, id: element.id, gradient: element.style.gradient,\n };\n if (transform) {\n options.x += transform.tx;\n options.y += transform.ty;\n }\n return options;\n };\n return DrawingRenderer;\n}());\n\n/**\n * SVG Renderer\n */\n/** @private */\nvar SvgRenderer = /** @__PURE__ @class */ (function () {\n function SvgRenderer() {\n }\n /** @private */\n SvgRenderer.prototype.parseDashArray = function (dashArray) {\n var dashes = [];\n return dashes;\n };\n /** @private */\n SvgRenderer.prototype.drawRectangle = function (svg, options, diagramId, onlyRect, isSelector, parentSvg, ariaLabel) {\n var id;\n if (options.id === svg.id) {\n id = options.id + '_container';\n }\n else {\n id = options.id;\n }\n var rect;\n if (!rect || isSelector) {\n rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n svg.appendChild(rect);\n }\n var attr = {\n 'id': id, 'x': options.x.toString(), 'y': options.y.toString(), 'width': options.width.toString(),\n 'height': options.height.toString(), 'visibility': options.visible ? 'visible' : 'hidden',\n 'transform': 'rotate(' + options.angle + ','\n + (options.x + options.width * options.pivotX) + ',' + (options.y + options.height * options.pivotY) + ')',\n 'rx': options.cornerRadius || 0, 'ry': options.cornerRadius || 0, 'opacity': options.opacity,\n 'aria-label': ariaLabel ? ariaLabel : ''\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n var poiterEvents = 'pointer-events';\n if (!ariaLabel) {\n attr[poiterEvents] = 'none';\n }\n setAttributeSvg(rect, attr);\n this.setSvgStyle(rect, options, diagramId);\n };\n /** @private */\n SvgRenderer.prototype.updateSelectionRegion = function (gElement, options) {\n var rect;\n rect = gElement.parentNode.getElementById(options.id);\n var attr;\n attr = {\n 'id': options.id, 'x': options.x.toString(), 'y': options.y.toString(), 'width': options.width.toString(),\n 'height': options.height.toString(), 'transform': 'rotate(' + options.angle + ','\n + (options.x + options.width * options.pivotX) + ',' + (options.y + options.height * options.pivotY) + ')',\n class: 'e-diagram-selected-region'\n };\n if (!rect) {\n rect = document.createElementNS('http://www.w3.org/2000/svg', 'rect');\n gElement.appendChild(rect);\n }\n this.setSvgStyle(rect, options);\n setAttributeSvg(rect, attr);\n };\n /** @private */\n SvgRenderer.prototype.createGElement = function (elementType, attribute) {\n var gElement = createSvgElement(elementType, attribute);\n return gElement;\n };\n /** @private */\n SvgRenderer.prototype.drawCircle = function (gElement, options, enableSelector, ariaLabel) {\n var circle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n this.setSvgStyle(circle, options);\n var classval = options.class || '';\n if (!enableSelector) {\n classval += ' e-disabled';\n }\n var attr = {\n 'id': options.id,\n 'cx': options.centerX,\n 'cy': options.centerY,\n 'r': options.radius,\n 'visibility': options.visible ? 'visible' : 'hidden',\n 'class': classval,\n 'aria-label': ariaLabel ? ariaLabel['aria-label'] : ''\n };\n var pointerEvents = 'pointer-events';\n if (attr['aria-label'] === '') {\n attr[pointerEvents] = 'none';\n }\n circle.style.display = options.visible ? 'block' : 'none';\n setAttributeSvg(circle, attr);\n gElement.appendChild(circle);\n };\n /** @private */\n SvgRenderer.prototype.setSvgStyle = function (svg, style, diagramId) {\n if (style.canApplyStyle || style.canApplyStyle === undefined) {\n if (style.fill === 'none') {\n style.fill = 'transparent';\n }\n if (style.stroke === 'none') {\n style.stroke = 'transparent';\n }\n var dashArray = [];\n var fill = void 0;\n if (style.dashArray !== undefined) {\n var canvasRenderer = new CanvasRenderer();\n dashArray = canvasRenderer.parseDashArray(style.dashArray);\n }\n fill = style.fill;\n if (style.stroke) {\n svg.setAttribute('stroke', style.stroke);\n }\n if (style.strokeWidth !== undefined && style.strokeWidth !== null) {\n svg.setAttribute('stroke-width', style.strokeWidth.toString());\n }\n if (dashArray) {\n svg.setAttribute('stroke-dasharray', dashArray.toString());\n }\n if (fill) {\n svg.setAttribute('fill', fill);\n }\n }\n };\n //end region\n // text utility\n /** @private */\n SvgRenderer.prototype.svgLabelAlign = function (text, wrapBound, childNodes) {\n var bounds = new Size(wrapBound.width, childNodes.length * (text.fontSize * 1.2));\n var pos = { x: 0, y: 0 };\n var x = 0;\n var y = 1.2;\n var offsetX = text.width * 0.5;\n var offsety = text.height * 0.5;\n var pointX = offsetX;\n var pointY = offsety;\n if (text.textAlign === 'left') {\n pointX = 0;\n }\n else if (text.textAlign === 'center') {\n if (wrapBound.width > text.width && (text.textOverflow === 'Ellipsis' || text.textOverflow === 'Clip')) {\n pointX = 0;\n }\n else {\n pointX = text.width * 0.5;\n }\n }\n else if (text.textAlign === 'right') {\n pointX = (text.width * 1);\n }\n pos.x = x + pointX + (wrapBound ? wrapBound.x : 0);\n pos.y = y + pointY - bounds.height / 2;\n return pos;\n };\n /** @private */\n SvgRenderer.prototype.drawLine = function (gElement, options) {\n var line = document.createElementNS('http://www.w3.org/2000/svg', 'line');\n this.setSvgStyle(line, options);\n var pivotX = options.x + options.width * options.pivotX;\n var pivotY = options.y + options.height * options.pivotY;\n var attr = {\n 'id': options.id,\n 'x1': options.startPoint.x + options.x,\n 'y1': options.startPoint.y + options.y,\n 'x2': options.endPoint.x + options.x,\n 'y2': options.endPoint.y + options.y,\n 'stroke': options.stroke,\n 'stroke-width': options.strokeWidth.toString(), 'opacity': options.opacity.toString(),\n 'transform': 'rotate(' + options.angle + ' ' + pivotX + ' ' + pivotY + ')',\n 'visibility': options.visible ? 'visible' : 'hidden',\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n setAttributeSvg(line, attr);\n gElement.appendChild(line);\n };\n /** @private */\n SvgRenderer.prototype.drawPath = function (svg, options, diagramId, isSelector, parentSvg, ariaLabel) {\n var id;\n var x = Math.floor((Math.random() * 10) + 1);\n id = svg.id + '_shape' + x.toString();\n var collection = [];\n collection = processPathData(options.data);\n collection = pathSegmentCollection(collection);\n var shadowElement;\n if (parentSvg) {\n shadowElement = parentSvg.getElementById(options.id + '_groupElement_shadow');\n if (shadowElement) {\n shadowElement.parentNode.removeChild(shadowElement);\n }\n }\n var path;\n if (parentSvg) {\n path = parentSvg.getElementById(options.id);\n }\n if (!path || isSelector) {\n path = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svg.appendChild(path);\n }\n this.renderPath(path, options, collection);\n var attr = {\n 'id': options.id, 'transform': 'rotate(' + options.angle + ',' + (options.x + options.width * options.pivotX) + ','\n + (options.y + options.height * options.pivotY) + ')' + 'translate(' + (options.x) + ',' + (options.y) + ')',\n 'visibility': options.visible ? 'visible' : 'hidden', 'opacity': options.opacity,\n 'aria-label': ariaLabel ? ariaLabel : ''\n };\n if (options.class) {\n attr['class'] = options.class;\n }\n setAttributeSvg(path, attr);\n this.setSvgStyle(path, options, diagramId);\n };\n /** @private */\n SvgRenderer.prototype.renderPath = function (svg, options, collection) {\n var x1;\n var y1;\n var x2;\n var y2;\n var x;\n var y;\n var length;\n var i;\n var segments = collection;\n var d = '';\n for (x = 0, y = 0, i = 0, length = segments.length; i < length; ++i) {\n var obj = segments[i];\n var segment = obj;\n var char = segment.command;\n if ('x1' in segment) {\n x1 = segment.x1;\n }\n if ('x2' in segment) {\n x2 = segment.x2;\n }\n if ('y1' in segment) {\n y1 = segment.y1;\n }\n if ('y2' in segment) {\n y2 = segment.y2;\n }\n if ('x' in segment) {\n x = segment.x;\n }\n if ('y' in segment) {\n y = segment.y;\n }\n switch (char) {\n case 'M':\n d = d + 'M' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'L':\n d = d + 'L' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'C':\n d = d + 'C' + x1.toString() + ',' + y1.toString() + ',' + x2.toString() + ',' + y2.toString() + ',';\n d += x.toString() + ',' + y.toString() + ' ';\n break;\n case 'Q':\n d = d + 'Q' + x1.toString() + ',' + y1.toString() + ',' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'A':\n d = d + 'A' + segment.r1.toString() + ',' + segment.r2.toString() + ',' + segment.angle.toString() + ',';\n d += segment.largeArc.toString() + ',' + segment.sweep + ',' + x.toString() + ',' + y.toString() + ' ';\n break;\n case 'Z':\n case 'z':\n d = d + 'Z' + ' ';\n break;\n }\n }\n svg.setAttribute('d', d);\n };\n return SvgRenderer;\n}());\n/** @private */\nfunction setAttributeSvg(svg, attributes) {\n var keys = Object.keys(attributes);\n for (var i = 0; i < keys.length; i++) {\n svg.setAttribute(keys[i], attributes[keys[i]]);\n }\n}\n/** @private */\nfunction createSvgElement(elementType, attribute) {\n var element = document.createElementNS('http://www.w3.org/2000/svg', elementType);\n setAttributeSvg(element, attribute);\n return element;\n}\n/** @private */\nfunction createSvg(id, width, height) {\n var svgObj = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n setAttributeSvg(svgObj, { 'id': id, 'width': width, 'height': height });\n return svgObj;\n}\nfunction getParentSvg(element, targetElement, canvas) {\n if (element && element.id) {\n if (targetElement && targetElement === 'selector') {\n return this.pdfViewer.adornerSvgLayer;\n }\n }\n return canvas;\n}\n\n/**\n * Implements the drawing functionalities\n */\n/** @private */\nfunction findNearestPoint(reference, start, end) {\n var shortestPoint;\n var shortest = Point.findLength(start, reference);\n var shortest1 = Point.findLength(end, reference);\n if (shortest > shortest1) {\n shortestPoint = end;\n }\n else {\n shortestPoint = start;\n }\n var angleBWStAndEnd = Point.findAngle(start, end);\n var angleBWStAndRef = Point.findAngle(shortestPoint, reference);\n var r = Point.findLength(shortestPoint, reference);\n var vaAngle = angleBWStAndRef + ((angleBWStAndEnd - angleBWStAndRef) * 2);\n return {\n x: (shortestPoint.x + r * Math.cos(vaAngle * Math.PI / 180)),\n y: (shortestPoint.y + r * Math.sin(vaAngle * Math.PI / 180))\n };\n}\n/** @private */\nfunction findElementUnderMouse(obj, position, padding) {\n return findTargetElement(obj.wrapper, position, padding);\n}\n/** @private */\nfunction findTargetElement(container, position, padding) {\n for (var i = container.children.length - 1; i >= 0; i--) {\n var element = container.children[i];\n if (element && element.bounds.containsPoint(position, 0)) {\n if (element instanceof Container) {\n var target = this.findTargetElement(element, position);\n if (target) {\n return target;\n }\n }\n if (element.bounds.containsPoint(position, 0)) {\n return element;\n }\n }\n }\n if (container.bounds.containsPoint(position, padding) && container.style.fill !== 'none') {\n return container;\n }\n return null;\n}\n/** @private */\nfunction intersect3(lineUtil1, lineUtil2) {\n var point = { x: 0, y: 0 };\n var l1 = lineUtil1;\n var l2 = lineUtil2;\n var d = (l2.y2 - l2.y1) * (l1.x2 - l1.x1) - (l2.x2 - l2.x1) * (l1.y2 - l1.y1);\n var na = (l2.x2 - l2.x1) * (l1.y1 - l2.y1) - (l2.y2 - l2.y1) * (l1.x1 - l2.x1);\n var nb = (l1.x2 - l1.x1) * (l1.y1 - l2.y1) - (l1.y2 - l1.y1) * (l1.x1 - l2.x1);\n if (d === 0) {\n return { enabled: false, intersectPt: point };\n }\n var ua = na / d;\n var ub = nb / d;\n if (ua >= 0 && ua <= 1 && ub >= 0 && ub <= 1) {\n point.x = l1.x1 + (ua * (l1.x2 - l1.x1));\n point.y = l1.y1 + (ua * (l1.y2 - l1.y1));\n return { enabled: true, intersectPt: point };\n }\n return { enabled: false, intersectPt: point };\n}\n/** @private */\nfunction intersect2(start1, end1, start2, end2) {\n var point = { x: 0, y: 0 };\n var lineUtil1 = getLineSegment(start1.x, start1.y, end1.x, end1.y);\n var lineUtil2 = getLineSegment(start2.x, start2.y, end2.x, end2.y);\n var line3 = intersect3(lineUtil1, lineUtil2);\n if (line3.enabled) {\n return line3.intersectPt;\n }\n else {\n return point;\n }\n}\n/** @private */\nfunction getLineSegment(x1, y1, x2, y2) {\n return { 'x1': Number(x1) || 0, 'y1': Number(y1) || 0, 'x2': Number(x2) || 0, 'y2': Number(y2) || 0 };\n}\n/** @private */\nfunction getPoints(element, corners, padding) {\n var line = [];\n padding = padding || 0;\n var left = { x: corners.topLeft.x - padding, y: corners.topLeft.y };\n var right = { x: corners.topRight.x + padding, y: corners.topRight.y };\n var top = { x: corners.bottomRight.x, y: corners.bottomRight.y - padding };\n var bottom = { x: corners.bottomLeft.x, y: corners.bottomLeft.y + padding };\n line.push(left);\n line.push(right);\n line.push(top);\n line.push(bottom);\n return line;\n}\n/** @private */\nfunction getBezierDirection(src, tar) {\n if (Math.abs(tar.x - src.x) > Math.abs(tar.y - src.y)) {\n return src.x < tar.x ? 'right' : 'left';\n }\n else {\n return src.y < tar.y ? 'bottom' : 'top';\n }\n}\n/** @private */\nfunction updateStyle(changedObject, target) {\n //since text style model is the super set of shape style model, we used text style model\n var style = target.style;\n var textElement = target;\n for (var _i = 0, _a = Object.keys(changedObject); _i < _a.length; _i++) {\n var key = _a[_i];\n switch (key) {\n case 'fill':\n style.fill = changedObject.fill;\n if (style instanceof StrokeStyle) {\n /* tslint:disable:no-string-literal */\n style['fill'] = 'transparent';\n }\n break;\n case 'textOverflow':\n style.textOverflow = changedObject.textOverflow;\n break;\n case 'opacity':\n style.opacity = changedObject.opacity;\n break;\n case 'strokeColor':\n style.strokeColor = changedObject.strokeColor;\n break;\n case 'strokeDashArray':\n style.strokeDashArray = changedObject.strokeDashArray;\n break;\n case 'strokeWidth':\n style.strokeWidth = changedObject.strokeWidth;\n break;\n case 'bold':\n style.bold = changedObject.bold;\n break;\n case 'color':\n style.color = changedObject.color;\n break;\n case 'textWrapping':\n style.textWrapping = changedObject.textWrapping;\n break;\n case 'fontFamily':\n style.fontFamily = changedObject.fontFamily;\n break;\n case 'fontSize':\n style.fontSize = changedObject.fontSize;\n break;\n case 'italic':\n style.italic = changedObject.italic;\n break;\n case 'textAlign':\n style.textAlign = changedObject.textAlign;\n break;\n case 'whiteSpace':\n style.whiteSpace = changedObject.whiteSpace;\n break;\n case 'textDecoration':\n style.textDecoration = changedObject.textDecoration;\n break;\n }\n }\n if (target instanceof TextElement) {\n textElement.refreshTextElement();\n }\n}\n/** @private */\nfunction scaleElement(element, sw, sh, refObject) {\n if (element.width !== undefined && element.height !== undefined) {\n element.width *= sw;\n element.height *= sh;\n }\n if (element instanceof Container) {\n var matrix = identityMatrix();\n var width = refObject.width || refObject.actualSize.width;\n var height = refObject.height || refObject.actualSize.height;\n if (width !== undefined && height !== undefined) {\n var x = refObject.offsetX - width * refObject.pivot.x;\n var y = refObject.offsetY - height * refObject.pivot.y;\n var refPoint = {\n x: x + width * refObject.pivot.x,\n y: y + height * refObject.pivot.y\n };\n refPoint = rotatePoint(refObject.rotateAngle, refObject.offsetX, refObject.offsetY, refPoint);\n rotateMatrix(matrix, -refObject.rotateAngle, refPoint.x, refPoint.y);\n // scaleMatrix(matrix, sw, sh, refPoint.x, refPoint.y);\n rotateMatrix(matrix, refObject.rotateAngle, refPoint.x, refPoint.y);\n for (var _i = 0, _a = element.children; _i < _a.length; _i++) {\n var child = _a[_i];\n if (child.width !== undefined && child.height !== undefined) {\n var newPosition = transformPointByMatrix(matrix, { x: child.offsetX, y: child.offsetY });\n child.offsetX = newPosition.x;\n child.offsetY = newPosition.y;\n scaleElement(child, sw, sh, refObject);\n }\n }\n }\n }\n}\n/** @private */\nfunction contains(mousePosition, corner, padding) {\n if (mousePosition.x >= corner.x - padding && mousePosition.x <= corner.x + padding) {\n if (mousePosition.y >= corner.y - padding && mousePosition.y <= corner.y + padding) {\n return true;\n }\n }\n return false;\n}\n/** @private */\nfunction getPoint(x, y, w, h, angle, offsetX, offsetY, cornerPoint) {\n var pivot = { x: 0, y: 0 };\n var trans = identityMatrix();\n rotateMatrix(trans, angle, offsetX, offsetY);\n switch (cornerPoint.x) {\n case 0:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x, y: y + h }));\n break;\n }\n break;\n case 0.5:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x + w / 2, y: y + h }));\n break;\n }\n break;\n case 1:\n switch (cornerPoint.y) {\n case 0:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y }));\n break;\n case 0.5:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y + h / 2 }));\n break;\n case 1:\n pivot = transformPointByMatrix(trans, ({ x: x + w, y: y + h }));\n break;\n }\n break;\n }\n return { x: pivot.x, y: pivot.y };\n}\n\n/**\n * Diagram component exported items\n */\n\n/**\n * Diagram component exported items\n */\n\nexport { Thickness, Margin, Stop, Gradient, LinearGradient, RadialGradient, ShapeStyle, StrokeStyle, TextStyle, Canvas, Container, DrawingElement, ImageElement, PathElement, TextElement, RotateTransform, ElementAction, ConnectorConstraints, ThumbsConstraints, SelectorConstraints, NoOfSegments, MatrixTypes, Matrix, identityMatrix, transformPointByMatrix, transformPointsByMatrix, rotateMatrix, scaleMatrix, translateMatrix, multiplyMatrix, Point, Rect, Size, CanvasRenderer, refreshDiagramElements, DrawingRenderer, SvgRenderer, setAttributeSvg, createSvgElement, createSvg, getParentSvg, randomId, cornersPointsBeforeRotation, rotateSize, getBounds, textAlignToString, wordBreakToString, bBoxText, middleElement, whiteSpaceToString, rotatePoint, getOffset, findNearestPoint, findElementUnderMouse, findTargetElement, intersect3, intersect2, getLineSegment, getPoints, getBezierDirection, updateStyle, scaleElement, contains, getPoint, getChildNode, translatePoints, measurePath, measureText, getDiagramElement, createHtmlElement, setAttributeHtml, getAdornerLayerSvg, getSelectorElement, createMeasureElements, measureImage, processPathData, parsePathData, getRectanglePath, pathSegmentCollection, transformPath, updatedSegment, scalePathData, splitArrayCollection, getPathString, getString };\n","import { Animation, Browser, ChildProperty, Complex, Component, Event, EventHandler, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getComponent, getUniqueID, getValue, isNullOrUndefined, isUndefined, matches, prepend, remove, removeClass, rippleEffect, select, selectAll, setStyleAttribute, setValue } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, Predicate, Query } from '@syncfusion/ej2-data';\nimport { ListBase, Sortable, cssClass, moveTo } from '@syncfusion/ej2-lists';\nimport { Popup, createSpinner, getZindexPartial, hideSpinner, isCollide, showSpinner } from '@syncfusion/ej2-popups';\nimport { Input, TextBox } from '@syncfusion/ej2-inputs';\nimport { Button, createCheckBox } from '@syncfusion/ej2-buttons';\nimport { TreeView } from '@syncfusion/ej2-navigations';\n\nvar queryString = '';\nvar prevString = '';\nvar matches$1 = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nfunction incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId) {\n queryString += String.fromCharCode(keyCode);\n setTimeout(function () {\n queryString = '';\n }, 1000);\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString) {\n for (var i = 0; i < matches$1.length; i++) {\n if (matches$1[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n }\n index = index + 1;\n return matches$1[index] ? matches$1[index] : matches$1[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches$1 = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches$1.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n return matches$1[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nfunction Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n if (type === 'object' && checkField_1.textContent.toString().indexOf(data[value]) !== -1 && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n }\n return itemData;\n}\nfunction escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nfunction resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches$1 = [];\n }\n}\n\n/* eslint-disable jsdoc/require-param, valid-jsdoc */\n/**\n * Function helps to find which highlightSearch is to call based on your data.\n *\n * @param {HTMLElement} element - Specifies an li element.\n * @param {string} query - Specifies the string to be highlighted.\n * @param {boolean} ignoreCase - Specifies the ignoreCase option.\n * @param {HightLightType} type - Specifies the type of highlight.\n * @returns {void}\n */\nfunction highlightSearch(element, query, ignoreCase, type) {\n if (query === '') {\n return;\n }\n else {\n var ignoreRegex = ignoreCase ? 'gim' : 'gm';\n // eslint-disable-next-line\n query = /^[a-zA-Z0-9- ]*$/.test(query) ? query : query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n var replaceQuery = type === 'StartsWith' ? '^(' + query + ')' : type === 'EndsWith' ?\n '(' + query + ')$' : '(' + query + ')';\n findTextNode(element, new RegExp(replaceQuery, ignoreRegex));\n }\n}\n/* eslint-enable jsdoc/require-param, valid-jsdoc */\n/**\n *\n * @param {HTMLElement} element - Specifies the element.\n * @param {RegExp} pattern - Specifies the regex to match the searched text.\n * @returns {void}\n */\nfunction findTextNode(element, pattern) {\n for (var index = 0; element.childNodes && (index < element.childNodes.length); index++) {\n if (element.childNodes[index].nodeType === 3 && element.childNodes[index].textContent.trim() !== '') {\n var value = element.childNodes[index].nodeValue.trim().replace(pattern, '$1');\n element.childNodes[index].nodeValue = '';\n element.innerHTML = element.innerHTML.trim() + value;\n break;\n }\n else {\n findTextNode(element.childNodes[index], pattern);\n }\n }\n}\n/**\n * Function helps to remove highlighted element based on your data.\n *\n * @param {HTMLElement} content - Specifies an content element.\n * @returns {void}\n */\nfunction revertHighlightSearch(content) {\n var contentElement = content.querySelectorAll('.e-highlight');\n for (var i = contentElement.length - 1; i >= 0; i--) {\n var parent_1 = contentElement[i].parentNode;\n var text = document.createTextNode(contentElement[i].textContent);\n parent_1.replaceChild(text, contentElement[i]);\n }\n}\n\n/**\n * Common source\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 FieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nvar dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @__PURE__ @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataCompTemp = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n if (noDataCompTemp && noDataCompTemp.length > 0) {\n for (var i = 0; i < noDataCompTemp.length; i++) {\n ele.appendChild(noDataCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = this.typeOfData(this.listData);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.showSpinner();\n if (dataSource instanceof DataManager) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!e.cancel) {\n var listItems = e.result;\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n var dataManager = new DataManager(eventArgs.data);\n var listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n for (var i = topIndex; i > -1; i--) {\n if (!isNullOrUndefined(liCollections[i]) && liCollections[i].classList.contains(dropDownBaseClasses.group)) {\n var currentLi = liCollections[i];\n this.fixedHeaderElement.innerHTML = currentLi.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n break;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n }\n }\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n }\n else {\n ulElement = this.createListItems(listData, fields);\n }\n return ulElement;\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if (isFiltering && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes$$1 = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes$$1.length; i++) {\n if (!target.getAttribute(attributes$$1[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes$$1[i]);\n hidden.setAttribute(attributes$$1[i], attr);\n target.removeAttribute(attributes$$1[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\n\n/**\n * export all modules from current location\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n// don't use space in classnames\nvar dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden'\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @__PURE__ @class */ (function (_super) {\n __extends$1(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) && this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavAction = e.action === 'down' || e.action === 'up' || e.action === 'home' || e.action === 'end';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateHomeEndAction = function (e) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n }\n else {\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.getPageCount = function () {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n };\n DropDownList.prototype.pageUpSelection = function (steps, event) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.pageDownSelection = function (steps, event) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n this.setSelection(previousItem, event);\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.isInteracted = false;\n this.hidePopup(e);\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-label': this.inputElement.value });\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id != '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n this.valueTempElement.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n this.resetList(dataSource, fields, query);\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.isNotSearchList) {\n this.isNotSearchList = false;\n return;\n }\n if (this.isActive) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n this.list.scrollTop = 0;\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) { return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ? _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value; });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n this.addNewItem(list, selectedItem);\n if (!isNullOrUndefined(this.itemData)) {\n this.focusIndexItem();\n }\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n }\n }\n };\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_1 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_1) ||\n (getValue(_this.fields.value, data) === value_1));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index != null) {\n this.actionCompleteData.ulElement.insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n this.removeFocus();\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container)) {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.getFocusElement();\n _this.createPopup(popupEle, offsetValue, left);\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n var isResetItem = (_this.getModuleName() === 'autocomplete') ? true : false;\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n },\n open: function () {\n EventHandler.remove(document, 'mousedown', _this.onDocumentClick);\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n DropDownList.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && (this.beforePopupOpen || this.isEventCancel))) {\n return;\n }\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.isEventCancel = eventArgs.cancel;\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n this.popupObj.destroy();\n detach(this.popupObj.element);\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n this.initValue();\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact) {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n for (var i = 0; i < footerCompTemp.length; i++) {\n this.footer.appendChild(footerCompTemp[i]);\n }\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n for (var i = 0; i < headerCompTemp.length; i++) {\n this.header.appendChild(headerCompTemp[i]);\n }\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(props.dataSource === [])) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource': break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate != null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = { ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list != this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n this.invokeRenderPopup(e);\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) || this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n this.isTyped = true;\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate$1([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate$1([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$1([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate$1([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate$1([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate$1([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate$1([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\n\n/**\n * export all modules from current location\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar RTL = 'e-rtl';\nvar DROPDOWNTREE = 'e-ddt';\nvar HIDDENELEMENT = 'e-ddt-hidden';\nvar DROPDOWNICON = 'e-input-group-icon e-ddt-icon e-icons';\nvar SHOW_CHIP = 'e-show-chip';\nvar SHOW_CLEAR = 'e-show-clear';\nvar SHOW_DD_ICON = 'e-show-dd-icon';\nvar CHIP_INPUT = 'e-chip-input';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTGROUP = 'e-input-group';\nvar ICONANIMATION = 'e-icon-anim';\nvar CLOSEICON_CLASS = 'e-clear-icon e-icons';\nvar CHIP_WRAPPER = 'e-chips-wrapper';\nvar CHIP_COLLECTION = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar HIDEICON = 'e-icon-hide';\nvar DDTHIDEICON = 'e-ddt-icon-hide';\nvar POPUP_CLASS = 'e-ddt e-popup';\nvar PARENTITEM = 'e-list-parent';\nvar CONTENT = 'e-popup-content';\nvar DROPDOWN = 'e-dropdown';\nvar DISABLED = 'e-disabled';\nvar ICONS = 'e-icons';\nvar CHECKALLPARENT = 'e-selectall-parent';\nvar CHECKALLHIDE = 'e-hide-selectall';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar ALLTEXT = 'e-all-text';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECK = 'e-check';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar FILTERWRAP = 'e-filter-wrap';\nvar DDTICON = 'e-ddt-icon';\nvar FOOTER = 'e-ddt-footer';\nvar HEADER = 'e-ddt-header';\nvar NODATACONTAINER = 'e-ddt-nodata';\nvar NODATA = 'e-no-data';\nvar HEADERTEMPLATE = 'HeaderTemplate';\nvar FOOTERTEMPLATE = 'FooterTemplate';\nvar NORECORDSTEMPLATE = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE = 'ActionFailureTemplate';\nvar CUSTOMTEMPLATE = 'CustomTemplate';\nvar REMAIN_WRAPPER = 'e-remain';\nvar OVERFLOW_VIEW = 'e-overflow';\nvar SHOW_TEXT = 'e-show-text';\nvar TOTAL_COUNT_WRAPPER = 'e-total-count';\nvar REMAIN_COUNT = 'e-wrap-count';\nvar Fields = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Fields, _super);\n function Fields() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('child')\n ], Fields.prototype, \"child\", void 0);\n __decorate$2([\n Property([])\n ], Fields.prototype, \"dataSource\", void 0);\n __decorate$2([\n Property('expanded')\n ], Fields.prototype, \"expanded\", void 0);\n __decorate$2([\n Property('hasChildren')\n ], Fields.prototype, \"hasChildren\", void 0);\n __decorate$2([\n Property('htmlAttributes')\n ], Fields.prototype, \"htmlAttributes\", void 0);\n __decorate$2([\n Property('iconCss')\n ], Fields.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('imageUrl')\n ], Fields.prototype, \"imageUrl\", void 0);\n __decorate$2([\n Property('parentValue')\n ], Fields.prototype, \"parentValue\", void 0);\n __decorate$2([\n Property(null)\n ], Fields.prototype, \"query\", void 0);\n __decorate$2([\n Property('selectable')\n ], Fields.prototype, \"selectable\", void 0);\n __decorate$2([\n Property('selected')\n ], Fields.prototype, \"selected\", void 0);\n __decorate$2([\n Property(null)\n ], Fields.prototype, \"tableName\", void 0);\n __decorate$2([\n Property('text')\n ], Fields.prototype, \"text\", void 0);\n __decorate$2([\n Property('tooltip')\n ], Fields.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property('value')\n ], Fields.prototype, \"value\", void 0);\n return Fields;\n}(ChildProperty));\nvar TreeSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$2(TreeSettings, _super);\n function TreeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(false)\n ], TreeSettings.prototype, \"autoCheck\", void 0);\n __decorate$2([\n Property('Auto')\n ], TreeSettings.prototype, \"expandOn\", void 0);\n __decorate$2([\n Property(false)\n ], TreeSettings.prototype, \"loadOnDemand\", void 0);\n return TreeSettings;\n}(ChildProperty));\n/**\n * The Dropdown Tree control allows you to select single or multiple values from hierarchical data in a tree-like structure.\n * It has several out-of-the-box features, such as data binding, check boxes, templates, filter,\n * UI customization, accessibility, and preselected values.\n * ```html\n * \n * ```\n * ```typescript\n * let ddtObj: DropDownTree = new DropDownTree();\n * ddtObj.appendTo(\"#tree\");\n * ```\n */\nvar DropDownTree = /** @__PURE__ @class */ (function (_super) {\n __extends$2(DropDownTree, _super);\n function DropDownTree(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.filterTimer = null;\n _this.isFilteredData = false;\n _this.isFilterRestore = false;\n // eslint-disable-next-line\n _this.selectedData = [];\n _this.filterDelayTime = 300;\n _this.isClicked = false;\n // Specifies if the checkAll method has been called\n _this.isCheckAllCalled = false;\n return _this;\n }\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string}\n * @hidden\n */\n DropDownTree.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n DropDownTree.prototype.getLocaleName = function () {\n return 'drop-down-tree';\n };\n /**\n * Initialize the event handler.\n *\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.preRender = function () {\n this.inputFocus = false;\n this.isPopupOpen = false;\n this.isFirstRender = true;\n this.isInitialized = false;\n this.currentText = null;\n this.currentValue = null;\n this.oldValue = null;\n this.removeValue = false;\n this.selectedText = [];\n this.treeItems = [];\n this.dataValue = null;\n this.isNodeSelected = false;\n this.isDynamicChange = false;\n this.clearIconWidth = 0;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE;\n this.customTemplateId = \"\" + this.element.id + CUSTOMTEMPLATE;\n this.keyConfigs = {\n escape: 'escape',\n altUp: 'alt+uparrow',\n altDown: 'alt+downarrow',\n tab: 'tab',\n shiftTab: 'shift+tab',\n end: 'end',\n enter: 'enter',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n ctrlA: 'ctrl+A'\n };\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownTree.prototype.render = function () {\n var isTree = select('#' + this.element.id + '_tree', document);\n if (isTree) {\n var popupDiv = select('#' + this.element.id + '_popup', document);\n detach(popupDiv ? popupDiv : isTree.parentElement);\n }\n this.ensureAutoCheck();\n if (this.element.tagName === 'INPUT') {\n this.inputEle = this.element;\n if (isNullOrUndefined(this.inputEle.getAttribute('role'))) {\n this.inputEle.setAttribute('role', 'textbox');\n }\n if (isNullOrUndefined(this.inputEle.getAttribute('type'))) {\n this.inputEle.setAttribute('type', 'text');\n }\n }\n else {\n this.inputEle = this.createElement('input', { attrs: { role: 'textbox', type: 'text' } });\n this.element.parentElement.insertBefore(this.inputEle, this.element);\n }\n this.inputObj = Input.createInput({\n element: this.inputEle,\n floatLabelType: this.floatLabelType,\n buttons: this.showDropDownIcon ? [DROPDOWNICON] : null,\n properties: {\n readonly: true,\n placeholder: this.placeholder,\n enabled: this.enabled,\n cssClass: this.cssClass,\n enableRtl: this.enableRtl\n }\n }, this.createElement);\n this.inputWrapper = this.inputObj.container;\n if (!this.inputWrapper.classList.contains(INPUTGROUP)) {\n this.inputWrapper.classList.add(INPUTGROUP);\n }\n if (this.showDropDownIcon) {\n this.inputWrapper.classList.add(SHOW_DD_ICON);\n }\n if (this.element.tagName === this.getDirective()) {\n this.element.appendChild(this.inputWrapper);\n }\n this.createHiddenElement();\n this.createClearIcon();\n this.inputWrapper.classList.add(DROPDOWNTREE);\n this.setElementWidth(this.width);\n this.updateDataAttribute();\n this.setHTMLAttributes();\n this.setAttributes();\n this.popupDiv = this.createElement('div', { className: CONTENT });\n this.popupDiv.classList.add(DROPDOWN);\n this.tree = this.createElement('div', { id: this.element.id + '_tree' });\n this.popupDiv.appendChild(this.tree);\n document.body.appendChild(this.popupDiv);\n this.wireTreeEvents();\n addClass([this.popupDiv], DDTHIDEICON);\n this.renderTree();\n this.isRemoteData = this.fields.dataSource instanceof DataManager;\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter') {\n this.createChip();\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n if (this.mode !== 'Box') {\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n }\n }\n if (!this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n }\n this.wireEvents();\n var firstUl = select('.' + PARENTITEM, this.treeObj.element);\n if (firstUl && firstUl.getAttribute('aria-multiselectable')) {\n firstUl.removeAttribute('aria-multiselectable');\n }\n this.oldValue = this.value;\n this.isInitialized = true;\n this.hasTemplate = this.itemTemplate || this.headerTemplate || this.footerTemplate || this.actionFailureTemplate\n || this.noRecordsTemplate || this.customTemplate;\n this.renderComplete();\n };\n DropDownTree.prototype.ensureAutoCheck = function () {\n if (this.allowFiltering && this.treeSettings.autoCheck) {\n this.setProperties({ treeSettings: { autoCheck: false } }, true);\n }\n };\n DropDownTree.prototype.hideCheckAll = function (flag) {\n var checkAllEle = !isNullOrUndefined(this.popupEle) ? this.popupEle.querySelector('.' + CHECKALLPARENT) : null;\n if (!isNullOrUndefined(checkAllEle)) {\n if (flag && !checkAllEle.classList.contains(CHECKALLHIDE)) {\n addClass([checkAllEle], CHECKALLHIDE);\n }\n else if (!flag && checkAllEle.classList.contains(CHECKALLHIDE)) {\n removeClass([checkAllEle], CHECKALLHIDE);\n }\n }\n };\n DropDownTree.prototype.renderFilter = function () {\n this.filterContainer = this.createElement('div', {\n id: this.element.id + '_filter_wrap',\n className: FILTERWRAP\n });\n var filterInput = this.createElement('input', {\n id: this.element.id + '_filter',\n attrs: { autocomplete: 'off', 'aria-label': this.filterBarPlaceholder }\n });\n this.filterContainer.appendChild(filterInput);\n prepend([this.filterContainer], this.popupEle);\n this.filterObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: this.filterBarPlaceholder,\n input: this.filterChangeHandler.bind(this)\n });\n this.filterObj.appendTo('#' + this.element.id + '_filter');\n };\n DropDownTree.prototype.filterChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n window.clearTimeout(this.filterTimer);\n this.filterTimer = window.setTimeout(function () { _this.filterHandler(args.value, args.event); }, this.filterDelayTime);\n }\n };\n DropDownTree.prototype.filterHandler = function (value, event) {\n var _this = this;\n if (!this.isFilteredData) {\n this.treeData = this.treeObj.getTreeData();\n }\n var filterFields = this.cloneFields(this.fields);\n var args = {\n cancel: false,\n preventDefaultAction: false,\n event: event,\n text: value,\n fields: filterFields\n };\n this.trigger('filtering', args, function (args) {\n if (!args.cancel) {\n var flag = false;\n var fields = void 0;\n _this.isFilteredData = true;\n if (value === '') {\n _this.isFilteredData = false;\n _this.isFilterRestore = true;\n fields = _this.cloneFields(_this.fields);\n }\n else if (args.preventDefaultAction) {\n fields = args.fields;\n }\n else {\n if (_this.treeDataType === 1) {\n fields = _this.selfReferencefilter(value, args.fields);\n }\n else {\n if (_this.fields.dataSource instanceof DataManager) {\n flag = true;\n }\n else {\n fields = _this.nestedFilter(value, args.fields);\n }\n }\n }\n _this.hideCheckAll(_this.isFilteredData);\n if (flag) {\n return;\n }\n _this.treeObj.fields = _this.getTreeFields(fields);\n _this.treeObj.dataBind();\n }\n });\n };\n DropDownTree.prototype.nestedFilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, this.treeData[i]);\n if (!isNullOrUndefined(filteredChild)) {\n matchedDataSource.push(filteredChild);\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.nestedChildFilter = function (value, node) {\n // eslint-disable-next-line\n var children = node[this.fields.child];\n if (isNullOrUndefined(children)) {\n return (this.isMatchedNode(value, node)) ? node : null;\n }\n else {\n // eslint-disable-next-line\n var matchedChildren = [];\n for (var i = 0; i < children.length; i++) {\n // eslint-disable-next-line\n var filteredChild = this.nestedChildFilter(value, children[i]);\n if (!isNullOrUndefined(filteredChild)) {\n matchedChildren.push(filteredChild);\n }\n }\n var filteredItems = Object.assign({}, node);\n if (matchedChildren.length !== 0) {\n filteredItems[this.fields.child] = matchedChildren;\n return filteredItems;\n }\n else {\n filteredItems[this.fields.child] = null;\n return (this.isMatchedNode(value, filteredItems)) ? filteredItems : null;\n }\n }\n };\n DropDownTree.prototype.selfReferencefilter = function (value, filteredFields) {\n // eslint-disable-next-line\n var matchedData = [];\n // eslint-disable-next-line\n var matchedDataSource = [];\n for (var i = 0; i < this.treeData.length; i++) {\n if (this.isMatchedNode(value, this.treeData[i])) {\n matchedData.push(this.treeData[i]);\n }\n }\n for (var i = 0; i < matchedData.length; i++) {\n if (matchedDataSource.indexOf(matchedData[i]) === -1) {\n matchedDataSource.push(matchedData[i]);\n // eslint-disable-next-line\n var parentId = matchedData[i][this.fields.parentValue];\n while (!isNullOrUndefined(parentId)) {\n // eslint-disable-next-line\n var parent_1 = null;\n for (var j = 0; j < this.treeData.length; j++) {\n // eslint-disable-next-line\n var value_1 = this.treeData[j][this.fields.value];\n if (!isNullOrUndefined(value_1) && (value_1 === parentId)) {\n parent_1 = this.treeData[j];\n break;\n }\n }\n if (!isNullOrUndefined(parent_1) && (matchedDataSource.indexOf(parent_1) === -1)) {\n matchedDataSource.push(parent_1);\n parentId = parent_1[this.fields.parentValue];\n }\n else {\n break;\n }\n }\n }\n }\n filteredFields.dataSource = matchedDataSource;\n return filteredFields;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.isMatchedNode = function (value, node) {\n var checkValue = node[this.fields.text];\n if (this.ignoreCase) {\n checkValue = checkValue.toLowerCase();\n value = value.toLowerCase();\n }\n if (this.ignoreAccent) {\n checkValue = DataUtil.ignoreDiacritics(checkValue);\n value = DataUtil.ignoreDiacritics(value);\n }\n if (this.filterType === 'StartsWith') {\n return checkValue.slice(0, value.length) === value;\n }\n else if (this.filterType === 'EndsWith') {\n return checkValue.slice(-value.length) === value;\n }\n else {\n return checkValue.indexOf(value) !== -1;\n }\n };\n /* To wire events for the dropdown tree */\n DropDownTree.prototype.wireEvents = function () {\n EventHandler.add(this.inputWrapper, 'mouseup', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper, 'blur', this.focusOut, this);\n EventHandler.add(this.inputWrapper, 'mousemove', this.mouseIn, this);\n EventHandler.add(this.inputWrapper, 'mouseout', this.onMouseLeave, this);\n EventHandler.add(this.overAllClear, 'mousedown', this.clearAll, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n this.keyboardModule = new KeyboardEvents(this.inputWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireTreeEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.tree, {\n keyAction: this.treeAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n DropDownTree.prototype.wireCheckAllWrapperEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.checkAllParent, {\n keyAction: this.checkAllAction.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n /* To unwire events for the dropdown tree */\n DropDownTree.prototype.unWireEvents = function () {\n EventHandler.remove(this.inputWrapper, 'mouseup', this.dropDownClick);\n EventHandler.remove(this.inputWrapper, 'focus', this.focusIn);\n EventHandler.remove(this.inputWrapper, 'blur', this.focusOut);\n EventHandler.remove(this.inputWrapper, 'mousemove', this.mouseIn);\n EventHandler.remove(this.inputWrapper, 'mouseout', this.onMouseLeave);\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n EventHandler.remove(window, 'resize', this.windowResize);\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n };\n /* Trigger when the dropdown is clicked */\n DropDownTree.prototype.dropDownClick = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n return;\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n else {\n this.focusIn(e);\n this.renderPopup();\n }\n this.showOverAllClear();\n };\n DropDownTree.prototype.mouseIn = function () {\n if (this.enabled || !this.readonly) {\n this.showOverAllClear();\n }\n };\n DropDownTree.prototype.onMouseLeave = function () {\n if (!this.inputFocus) {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n };\n DropDownTree.prototype.getDirective = function () {\n return 'EJS-DROPDOWNTREE';\n };\n DropDownTree.prototype.focusOut = function (e) {\n if (!this.enabled || this.readonly || !this.inputFocus) {\n return;\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && (e.target === this.inputWrapper)) {\n return;\n }\n var target = e.relatedTarget;\n if ((target !== this.inputEle) && (isNullOrUndefined(target)) && (e.target !== this.inputWrapper || !this.isPopupOpen)) {\n this.onFocusOut(e);\n }\n };\n DropDownTree.prototype.onFocusOut = function (event) {\n this.inputFocus = false;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n if (this.isClearButtonClick) {\n this.isClearButtonClick = false;\n }\n if (this.showClearButton) {\n this.clearIconWidth = select('.e-clear-icon', this.inputWrapper).offsetWidth;\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n if ((this.allowMultiSelection || this.showCheckBox)) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.mode !== 'Delimiter' && this.mode !== 'Custom') {\n if (this.chipWrapper && (this.mode === 'Default')) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n if (!this.wrapText && isValue) {\n this.updateView();\n }\n }\n if (this.changeOnBlur) {\n this.triggerChangeEvent(event);\n }\n this.removeValue = false;\n this.oldValue = this.value;\n this.trigger('blur');\n };\n DropDownTree.prototype.updateView = function () {\n if ((!this.showCheckBox && !this.allowMultiSelection) || this.mode === 'Custom' || this.inputFocus) {\n return;\n }\n if (this.mode !== 'Box') {\n addClass([this.inputWrapper, this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n if (this.value && this.value.length !== 0) {\n if (this.inputWrapper.contains(this.chipWrapper)) {\n addClass([this.chipWrapper], HIDEICON);\n }\n addClass([this.inputEle], CHIP_INPUT);\n this.updateOverFlowView();\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.triggerChangeEvent = function (event) {\n var isEqual = this.ddtCompareValues(this.oldValue, this.value);\n if ((!isEqual || this.isChipDelete) && !this.removeValue) {\n var eventArgs = {\n e: event,\n oldValue: this.oldValue,\n value: this.value,\n isInteracted: event ? true : false,\n element: this.element\n };\n this.trigger('change', eventArgs);\n this.oldValue = this.value;\n }\n };\n DropDownTree.prototype.ddtCompareValues = function (oldValue, newValue) {\n if (oldValue === null || newValue === null) {\n var isValid = oldValue === null ? ((newValue === oldValue) ? true : false) :\n (oldValue.length === 0 ? (newValue === oldValue) : false);\n return isValid;\n }\n else if (oldValue.length !== newValue.length) {\n return false;\n }\n for (var i = 0; i < oldValue.length; i++) {\n if (oldValue[i] !== newValue[i]) {\n return false;\n }\n }\n return true;\n };\n DropDownTree.prototype.focusIn = function (e) {\n if (!this.enabled || this.readonly || this.inputFocus) {\n return;\n }\n this.showOverAllClear();\n this.inputFocus = true;\n addClass([this.inputWrapper], [INPUTFOCUS]);\n if (this.allowMultiSelection || this.showCheckBox) {\n if (this.mode !== 'Delimiter' && this.inputFocus) {\n if (this.chipWrapper && (this.value && this.value.length !== 0)) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputEle], CHIP_INPUT);\n }\n addClass([this.inputWrapper], SHOW_CHIP);\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n }\n if (!this.wrapText && this.mode !== 'Custom') {\n if (this.inputWrapper.contains(this.overFlowWrapper)) {\n addClass([this.overFlowWrapper], HIDEICON);\n }\n if (this.mode === 'Delimiter') {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n else {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n removeClass([this.inputWrapper], SHOW_TEXT);\n this.ensurePlaceHolder();\n }\n }\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n };\n DropDownTree.prototype.treeAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n _this.inputWrapper.focus();\n e.preventDefault();\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'tab':\n case 'shiftTab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n if (!_this.showCheckBox) {\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n }\n break;\n case 'space':\n _this.isValueChange = true;\n _this.keyEventArgs = e;\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n _this.selectAll(true);\n }\n break;\n case 'moveRight':\n case 'moveLeft':\n case 'shiftDown':\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n case 'shiftUp':\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n }\n }\n else {\n e.stopImmediatePropagation();\n }\n });\n };\n DropDownTree.prototype.keyActionHandler = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'escape':\n case 'altUp':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n break;\n case 'shiftTab':\n case 'tab':\n if (_this.isPopupOpen) {\n _this.hidePopup();\n }\n if (_this.inputFocus) {\n _this.onFocusOut();\n }\n break;\n case 'altDown':\n if (!_this.isPopupOpen) {\n _this.showPopup();\n e.preventDefault();\n }\n break;\n case 'moveDown':\n if (_this.showSelectAll && _this.showCheckBox) {\n _this.checkAllParent.focus();\n }\n break;\n }\n }\n });\n };\n DropDownTree.prototype.checkAllAction = function (e) {\n var _this = this;\n var eventArgs = {\n cancel: false,\n event: e\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n _this.clickHandler(e);\n break;\n case 'moveDown':\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-hover', 'e-node-focus']);\n }\n }\n });\n };\n DropDownTree.prototype.windowResize = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ width: this.setWidth() });\n this.popupObj.refreshPosition();\n }\n };\n DropDownTree.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputWrapper, 'form');\n if (formElement && e.target === formElement) {\n this.isDynamicChange = true;\n this.setProperties({ value: null }, true);\n this.resetValue(true);\n this.isDynamicChange = false;\n }\n };\n DropDownTree.prototype.getAriaAttributes = function () {\n var disable = this.enabled ? 'false' : 'true';\n return {\n 'aria-disabled': disable,\n 'aria-owns': this.element.id + '_options',\n 'role': 'listbox',\n 'aria-haspopup': 'true',\n 'aria-expanded': 'false',\n 'aria-activedescendant': 'null',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownTree.prototype.updateOverFlowView = function () {\n this.overFlowWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], HIDEICON);\n if (this.value && this.value.length) {\n var data = '';\n var overAllContainer = void 0;\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n this.overFlowWrapper.innerHTML = '';\n // eslint-disable-next-line\n var l10nLocale = { overflowCountTemplate: '+${count} more..', totalCountTemplate: '${count} selected' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n var remainContent = this.l10n.getConstant('overflowCountTemplate');\n var totalContent = this.l10n.getConstant('totalCountTemplate');\n var remainElement = this.createElement('span', { className: REMAIN_WRAPPER });\n this.overFlowWrapper.appendChild(remainElement);\n remainElement.innerText = remainContent.replace('${count}', this.value.length.toString());\n var remainSize = remainElement.offsetWidth;\n remove(remainElement);\n if (this.showDropDownIcon) {\n downIconWidth = select('.' + DDTICON, this.inputWrapper).offsetWidth;\n }\n if (!isNullOrUndefined(this.value)) {\n if (this.mode !== 'Box') {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.overFlowWrapper.innerHTML;\n if (this.enableHtmlSanitizer) {\n this.overFlowWrapper.innerText = data;\n }\n else {\n this.overFlowWrapper.innerHTML = data;\n }\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - index;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n var textArr = this.overFlowWrapper.innerHTML.split(this.delimiterChar);\n textArr.pop();\n this.overFlowWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n else {\n addClass([this.chipWrapper], HIDEICON);\n var ele = this.chipWrapper.cloneNode(true);\n var chips = selectAll('.' + CHIP, ele);\n for (var i = 0; i < chips.length; i++) {\n temp = this.overFlowWrapper.innerHTML;\n this.overFlowWrapper.appendChild(chips[i]);\n data = this.overFlowWrapper.innerHTML;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n overAllContainer = this.inputWrapper.offsetWidth;\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n i = tempIndex + 1;\n }\n this.overFlowWrapper.innerHTML = temp;\n remaining = this.value.length - i;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer)\n && wrapperleng !== 0 && this.overFlowWrapper.innerHTML !== '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.lastChild);\n remaining++;\n wrapperleng = this.overFlowWrapper.offsetWidth;\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = i;\n }\n else if (i === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n }\n if (remaining > 0) {\n this.overFlowWrapper.appendChild(this.updateRemainTemplate(remainElement, remaining, remainContent, totalContent));\n }\n if (this.mode === 'Box' && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([remainElement], REMAIN_COUNT);\n }\n }\n else {\n this.overFlowWrapper.innerHTML = '';\n addClass([this.overFlowWrapper], HIDEICON);\n }\n this.updateDelimMode();\n };\n DropDownTree.prototype.updateRemainTemplate = function (remainElement, remaining, remainContent, totalContent) {\n if (this.overFlowWrapper.firstChild && this.overFlowWrapper.firstChild.nodeType === 3 &&\n this.overFlowWrapper.firstChild.nodeValue === '') {\n this.overFlowWrapper.removeChild(this.overFlowWrapper.firstChild);\n }\n remainElement.innerHTML = '';\n remainElement.innerText = (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) ?\n remainContent.replace('${count}', remaining.toString()) : totalContent.replace('${count}', remaining.toString());\n if (this.overFlowWrapper.firstChild && (this.overFlowWrapper.firstChild.nodeType === 3 || this.mode === 'Box')) {\n removeClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n }\n else {\n addClass([this.overFlowWrapper], TOTAL_COUNT_WRAPPER);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n return remainElement;\n };\n DropDownTree.prototype.getOverflowVal = function (index) {\n // eslint-disable-next-line\n var selectedData = this.getSelectedData(this.value[index]);\n return getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n };\n DropDownTree.prototype.updateDelimMode = function () {\n if (this.mode !== 'Box') {\n if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper) && !this.overFlowWrapper.classList.contains(TOTAL_COUNT_WRAPPER)) {\n addClass([this.overFlowWrapper], REMAIN_COUNT);\n addClass([this.overFlowWrapper], SHOW_TEXT);\n }\n else {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n removeClass([this.overFlowWrapper], REMAIN_COUNT);\n }\n }\n else if (select('.' + REMAIN_WRAPPER, this.overFlowWrapper)) {\n this.overFlowWrapper.classList.remove(REMAIN_COUNT);\n }\n };\n DropDownTree.prototype.createHiddenElement = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDENELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n }\n else {\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'tabindex': '-1', 'class': HIDDENELEMENT }\n });\n }\n prepend([this.hiddenElement], this.inputWrapper);\n this.validationAttribute();\n };\n DropDownTree.prototype.createClearIcon = function () {\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS\n });\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n if (this.showClearButton) {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.validationAttribute = function () {\n var name = this.inputEle.getAttribute('name') ? this.inputEle.getAttribute('name') : this.inputEle.getAttribute('id');\n this.hiddenElement.setAttribute('name', name);\n this.inputEle.removeAttribute('name');\n var attributes$$1 = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes$$1.length; i++) {\n var attr = this.inputEle.getAttribute(attributes$$1[i]);\n if (attr) {\n this.hiddenElement.setAttribute(attributes$$1[i], attr);\n this.inputEle.removeAttribute(attributes$$1[i]);\n }\n }\n };\n DropDownTree.prototype.createChip = function () {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.chipWrapper = this.createElement('span', {\n className: CHIP_WRAPPER\n });\n this.chipCollection = this.createElement('span', {\n className: CHIP_COLLECTION\n });\n this.chipWrapper.appendChild(this.chipCollection);\n this.inputWrapper.insertBefore(this.chipWrapper, this.hiddenElement);\n addClass([this.inputWrapper], SHOW_CHIP);\n var isValid = this.getValidMode();\n if (isValid && this.value !== null && (this.value && this.value.length !== 0)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else if (this.value === null || (this.value && this.value.length === 0) || this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.getValidMode = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return this.mode === 'Box' ? true : (this.mode === 'Default' && this.inputFocus) ? true : false;\n }\n else {\n return false;\n }\n };\n DropDownTree.prototype.createSelectAllWrapper = function () {\n this.checkAllParent = this.createElement('div', {\n className: CHECKALLPARENT, attrs: { 'tabindex': '0' }\n });\n this.selectAllSpan = this.createElement('span', {\n className: ALLTEXT\n });\n this.selectAllSpan.textContent = '';\n var ele = closest(this.element, '.' + BIGGER);\n var touchClass = isNullOrUndefined(ele) ? '' : SMALL;\n this.checkBoxElement = createCheckBox(this.createElement, true, { cssClass: touchClass });\n this.checkBoxElement.setAttribute('role', 'checkbox');\n this.checkAllParent.appendChild(this.checkBoxElement);\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n EventHandler.add(this.checkAllParent, 'mouseup', this.clickHandler, this);\n this.wireCheckAllWrapperEvents();\n };\n DropDownTree.prototype.clickHandler = function (e) {\n var target;\n if ((e.currentTarget && e.currentTarget.classList.contains(CHECKALLPARENT))) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.target;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNullOrUndefined(this.checkWrapper)) {\n this.isClicked = true;\n var checkElement = select('.' + CHECKBOXFRAME, this.checkWrapper);\n this.changeState(this.checkWrapper, checkElement.classList.contains(CHECK) ? 'uncheck' : 'check', e);\n this.isClicked = false;\n }\n e.preventDefault();\n };\n DropDownTree.prototype.changeState = function (wrapper, state, e) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.add(CHECK);\n ariaState = 'true';\n if (!this.isReverseUpdate) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(true);\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK))) {\n frameSpan.classList.remove(CHECK);\n ariaState = 'false';\n if (!this.isReverseUpdate) {\n this.treeObj.uncheckAll();\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n }\n this.setLocale(false);\n }\n this.setMultiSelect();\n this.ensurePlaceHolder();\n ariaState = state === 'check' ? 'true' : 'false';\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n };\n DropDownTree.prototype.setLocale = function (unSelect) {\n if (!this.selectAllSpan) {\n return;\n }\n if (this.selectAllText !== 'Select All' || this.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.unSelectAllText : this.selectAllText;\n this.selectAllSpan.textContent = '';\n // eslint-disable-next-line\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this, templateName, null, !this.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n this.selectAllSpan.textContent = unSelect ? this.unSelectAllText : this.selectAllText;\n }\n };\n DropDownTree.prototype.setAttributes = function () {\n this.inputEle.setAttribute('tabindex', '-1');\n var id = this.element.getAttribute('id');\n this.hiddenElement.id = id + '_hidden';\n this.inputWrapper.setAttribute('tabindex', '0');\n attributes(this.inputWrapper, this.getAriaAttributes());\n };\n DropDownTree.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n this.inputWrapper.classList.add(this.htmlAttributes[htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[htmlAttr] === 'disabled') {\n this.setProperties({ enabled: false }, true);\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[htmlAttr])) {\n this.setProperties({ readonly: true }, true);\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.setAttribute('style', this.htmlAttributes[htmlAttr]);\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder', 'aria-placeholder',\n 'role', 'autocorrect', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[htmlAttr], this.inputEle);\n }\n else {\n this.inputEle.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n else {\n this.inputWrapper.setAttribute(htmlAttr, this.htmlAttributes[htmlAttr]);\n }\n }\n }\n }\n };\n DropDownTree.prototype.updateDataAttribute = function () {\n var value = this.htmlAttributes;\n var invalidAttr = ['class', 'style', 'id', 'type'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownTree.prototype.showOverAllClear = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.overAllClear) {\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (isValue && this.showClearButton) {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n };\n DropDownTree.prototype.setTreeValue = function () {\n if (this.value !== null && this.value.length !== 0) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.showCheckBox || this.allowMultiSelection) {\n for (var i = 0; i < this.value.length; i++) {\n data = this.treeObj.getTreeData(this.value[i])[0];\n if (isNullOrUndefined(data)) {\n this.value.splice(this.value.indexOf(this.value[i]), 1);\n }\n }\n if (this.value.length !== 0) {\n this.setValidValue();\n }\n }\n else {\n data = this.treeObj.getTreeData(this.value[0])[0];\n if (!isNullOrUndefined(data)) {\n this.setProperties({ text: data[this.fields.text] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ value: this.currentValue }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setTreeText = function () {\n if (this.value !== null && !this.isInitialized) {\n return;\n }\n if (this.text !== null) {\n // eslint-disable-next-line\n var data = void 0;\n var valArr = [];\n if (this.showCheckBox || this.allowMultiSelection) {\n var textArr = this.text.split(this.delimiterChar);\n for (var i = 0; i < textArr.length; i++) {\n data = this.getItems(textArr[i]);\n if (!isNullOrUndefined(data)) {\n valArr.push(data[this.fields.value].toString());\n }\n }\n if (valArr.length !== 0) {\n this.oldValue = this.value;\n this.setProperties({ value: valArr }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n else {\n data = this.getItems(this.text);\n if (!isNullOrUndefined(data)) {\n this.oldValue = this.value;\n this.setProperties({ value: [data[this.fields.value].toString()] }, true);\n this.setValidValue();\n }\n else {\n this.setProperties({ text: this.currentText }, true);\n }\n }\n }\n };\n DropDownTree.prototype.setSelectedValue = function () {\n if (this.value != null) {\n return;\n }\n if (!this.isInitialized) {\n this.oldValue = this.value;\n if (this.treeObj.selectedNodes.length > 0 && !this.showCheckBox) {\n this.setProperties({ value: this.treeObj.selectedNodes }, true);\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n }\n else if (this.showCheckBox && this.treeObj.checkedNodes) {\n if (this.treeObj.checkedNodes.length > 0) {\n this.setProperties({ value: this.treeObj.checkedNodes }, true);\n setValue('selectedNodes', [], this.treeObj);\n this.treeObj.dataBind();\n this.updateMode();\n }\n }\n this.updateSelectedValues();\n this.currentText = this.text;\n this.currentValue = this.value;\n }\n };\n DropDownTree.prototype.setValidValue = function () {\n var _this = this;\n if (!this.showCheckBox && !this.allowMultiSelection) {\n Input.setValue(this.text, this.inputEle, this.floatLabelType);\n var id = this.value[0].toString();\n if (this.treeObj.selectedNodes[0] !== id) {\n setValue('selectedNodes', [id], this.treeObj);\n }\n }\n else {\n if (this.showCheckBox) {\n var difference = this.value.filter(function (e) {\n return _this.treeObj.checkedNodes.indexOf(e) === -1;\n });\n if (difference.length > 0 || this.treeSettings.autoCheck) {\n this.treeObj.checkedNodes = this.value.slice();\n this.treeObj.dataBind();\n this.setMultiSelect();\n }\n }\n else {\n this.treeObj.selectedNodes = this.value.slice();\n this.selectedText = [];\n this.updateSelectedValues();\n }\n this.treeObj.dataBind();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n if (this.isInitialized) {\n this.triggerChangeEvent();\n }\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getItems = function (givenText) {\n // eslint-disable-next-line\n var data;\n if (this.treeDataType === 1) {\n for (var i = 0; i < this.treeItems.length; i++) {\n // eslint-disable-next-line\n var text = getValue(this.fields.text, this.treeItems[i]);\n if (!isNullOrUndefined(this.treeItems[i]) && !isNullOrUndefined(text) && text === givenText) {\n data = this.treeItems[i];\n break;\n }\n }\n }\n else {\n data = this.getNestedItems(this.treeItems, this.fields, givenText);\n }\n return data;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getNestedItems = function (data, field, givenText) {\n // eslint-disable-next-line\n var newData;\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n // eslint-disable-next-line\n var dataId = getValue(this.fields.text, data[i]);\n if (data[i] && dataId && dataId.toString() === givenText) {\n return data[i];\n }\n else if (typeof field.child === 'string' && !isNullOrUndefined(getValue(field.child, data[i]))) {\n // eslint-disable-next-line\n var childData = getValue(field.child, data[i]);\n // eslint-disable-next-line\n newData = this.getNestedItems(childData, this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', data[i]))) {\n var child = 'child';\n // eslint-disable-next-line\n newData = this.getNestedItems(getValue(child, data[i]), this.getChildType(field), givenText);\n if (newData !== undefined) {\n break;\n }\n }\n }\n return newData;\n };\n DropDownTree.prototype.getChildType = function (mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n };\n /* To render the treeview */\n DropDownTree.prototype.renderTree = function () {\n this.treeObj = new TreeView({\n fields: this.getTreeFields(this.fields),\n enableRtl: this.enableRtl,\n nodeSelected: this.onNodeSelected.bind(this),\n nodeChecked: this.onNodeChecked.bind(this),\n nodeChecking: this.beforeCheck.bind(this),\n nodeExpanded: this.onNodeExpanded.bind(this),\n actionFailure: this.onActionFailure.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n dataBound: this.OnDataBound.bind(this),\n allowMultiSelection: this.allowMultiSelection,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n showCheckBox: this.showCheckBox,\n autoCheck: this.treeSettings.autoCheck,\n sortOrder: this.sortOrder,\n expandOn: this.treeSettings.expandOn,\n loadOnDemand: this.treeSettings.loadOnDemand,\n nodeSelecting: this.onBeforeSelect.bind(this),\n nodeTemplate: this.itemTemplate\n });\n this.treeObj.root = this.root ? this.root : this;\n this.treeObj.appendTo('#' + this.tree.id);\n };\n /* To render the popup element */\n DropDownTree.prototype.renderPopup = function () {\n var _this = this;\n if (this.isFilteredData) {\n this.filterObj.value = '';\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.isFilterRestore = true;\n this.isFilteredData = false;\n this.hideCheckAll(false);\n }\n var isCancelled = false;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n addClass([_this.inputWrapper], [ICONANIMATION]);\n if (_this.isFirstRender) {\n _this.popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: POPUP_CLASS + ' ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n document.body.appendChild(_this.popupEle);\n _this.createPopup(_this.popupEle);\n }\n else {\n _this.popupEle = _this.popupObj.element;\n }\n }\n else {\n isCancelled = true;\n }\n if (_this.isFirstRender && !isCancelled) {\n prepend([_this.popupDiv], _this.popupEle);\n removeClass([_this.popupDiv], DDTHIDEICON);\n if (_this.allowFiltering) {\n _this.renderFilter();\n }\n if (_this.showCheckBox && _this.showSelectAll && (!_this.popupDiv.classList.contains(NODATA))) {\n _this.createSelectAllWrapper();\n _this.popupEle.insertBefore(_this.checkAllParent, _this.popupDiv);\n }\n if (_this.headerTemplate) {\n _this.setHeaderTemplate();\n }\n if (_this.footerTemplate) {\n _this.setFooterTemplate();\n }\n _this.isFirstRender = false;\n /* eslint-disable */\n if (_this.hasTemplate && _this.portals) {\n _this.portals = _this.portals.concat(_this.treeObj.portals);\n /* eslint-enable */\n _this.renderReactTemplates();\n }\n }\n if (!isCancelled) {\n attributes(_this.inputWrapper, { 'aria-expanded': 'true' });\n _this.popupObj.show(null, (_this.zIndex === 1000) ? _this.inputEle : null);\n removeClass([_this.popupEle], DDTHIDEICON);\n _this.updatePopupHeight();\n _this.popupObj.refreshPosition();\n if (!(_this.showCheckBox && _this.showSelectAll) && (!_this.popupDiv.classList.contains(NODATA)\n && _this.treeItems.length > 0)) {\n var focusedElement = _this.treeObj.element.querySelector('li');\n focusedElement.focus();\n addClass([focusedElement], ['e-hover', 'e-node-focus']);\n }\n if (_this.checkSelectAll && _this.checkBoxElement) {\n var wrap = closest(_this.checkBoxElement, '.' + CHECKBOXWRAP);\n _this.changeState(wrap, 'check');\n _this.checkSelectAll = false;\n }\n if (_this.allowFiltering) {\n removeClass([_this.inputWrapper], [INPUTFOCUS]);\n _this.filterObj.element.focus();\n }\n var eventArgs = { popup: _this.popupObj };\n _this.trigger('open', eventArgs);\n }\n });\n };\n DropDownTree.prototype.updatePopupHeight = function () {\n if (this.isFirstRender) {\n return;\n }\n var popupHeight = this.getHeight();\n this.popupEle.style.maxHeight = popupHeight;\n if (this.allowFiltering) {\n var height = Math.round(this.filterContainer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.headerTemplate) {\n var height = Math.round(this.header.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.showCheckBox && this.showSelectAll && (!this.popupDiv.classList.contains(NODATA))) {\n var height = Math.round(this.checkAllParent.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n if (this.footerTemplate) {\n var height = Math.round(this.footer.getBoundingClientRect().height);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - height + 'px');\n }\n var border = parseInt(window.getComputedStyle(this.popupEle).borderTopWidth, 10);\n border = border + parseInt(window.getComputedStyle(this.popupEle).borderBottomWidth, 10);\n popupHeight = formatUnit(parseInt(popupHeight, 10) - border + 'px');\n this.popupDiv.style.maxHeight = popupHeight;\n };\n DropDownTree.prototype.createPopup = function (element) {\n var _this = this;\n if (this.isFirstRender) {\n this.popupObj = new Popup(element, {\n width: this.setWidth(),\n targetType: 'relative',\n collision: { X: 'flip', Y: 'flip' },\n relateTo: this.inputWrapper,\n zIndex: this.zIndex,\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n close: function () {\n _this.isPopupOpen = false;\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n }\n };\n /* To calculate the width when change via set model */\n DropDownTree.prototype.setElementWidth = function (inputWidth) {\n var ddElement = this.inputWrapper;\n if (!isNullOrUndefined(inputWidth)) {\n if (typeof inputWidth === 'number') {\n ddElement.style.width = formatUnit(inputWidth);\n }\n else if (typeof inputWidth === 'string') {\n ddElement.style.width = (inputWidth.match(/px|%|em/)) ? (inputWidth) :\n (formatUnit(inputWidth));\n }\n }\n };\n /* To calculate the width of the popup */\n DropDownTree.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n width = (this.inputWrapper.offsetWidth * parseFloat(width) / 100).toString() + 'px';\n }\n else if (typeof this.popupWidth === 'string') {\n width = (this.popupWidth.match(/px|em/)) ? (this.popupWidth) : width;\n }\n return width;\n };\n /* To calculate the height of the popup */\n DropDownTree.prototype.getHeight = function () {\n var height = formatUnit(this.popupHeight);\n if (height.indexOf('%') > -1) {\n // Will set the height of the popup according to the view port height\n height = (document.documentElement.clientHeight * parseFloat(height) / 100).toString() + 'px';\n }\n else if (typeof this.popupHeight === 'string') {\n height = (this.popupHeight.match(/px|em/)) ? (this.popupHeight) : height;\n }\n return height;\n };\n DropDownTree.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var isTree = closest(target, '.' + PARENTITEM);\n var isFilter = closest(target, '.' + FILTERWRAP);\n var isHeader = closest(target, '.' + HEADER);\n var isFooter = closest(target, '.' + FOOTER);\n var isScroller = target.classList.contains(DROPDOWN) ? true :\n (matches(target, '.e-ddt .e-popup') || matches(target, '.e-ddt .e-treeview'));\n if ((this.isPopupOpen && (this.inputWrapper.contains(target) || isTree || isScroller || isHeader || isFooter)) ||\n ((this.allowMultiSelection || this.showCheckBox) && (this.isPopupOpen && target.classList.contains(CHIP_CLOSE) ||\n (this.isPopupOpen && (target.classList.contains(CHECKALLPARENT) || target.classList.contains(ALLTEXT)\n || target.classList.contains(CHECKBOXFRAME)))))) {\n this.isDocumentClick = false;\n e.preventDefault();\n }\n else if (!this.inputWrapper.contains(target) && this.inputFocus && !isFilter) {\n this.focusOut(e);\n }\n };\n DropDownTree.prototype.onActionFailure = function (e) {\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n addClass([this.popupDiv], NODATA);\n };\n DropDownTree.prototype.OnDataBound = function (args) {\n this.treeItems = args.data;\n if (this.treeItems.length <= 0) {\n this.l10nUpdate();\n addClass([this.popupDiv], NODATA);\n this.hideCheckAll(true);\n }\n else if (this.popupDiv.classList.contains(NODATA) && this.treeItems.length >= 1) {\n removeClass([this.popupDiv], NODATA);\n this.hideCheckAll(false);\n }\n this.treeDataType = this.getTreeDataType(this.treeItems, this.fields);\n if (this.isFirstRender && this.isRemoteData) {\n this.setTreeValue();\n this.setTreeText();\n this.updateHiddenValue();\n this.setSelectedValue();\n if (!this.wrapText) {\n this.updateView();\n }\n this.treeObj.element.focus();\n }\n var eventArgs = { data: args.data };\n this.trigger('dataBound', eventArgs);\n if (this.filterObj === null) {\n this.isFilteredData = false;\n }\n if (this.isFilteredData) {\n this.treeObj.expandAll();\n }\n if (this.isFilterRestore) {\n this.restoreFilterSelection();\n this.isFilterRestore = false;\n }\n };\n DropDownTree.prototype.restoreFilterSelection = function () {\n if (this.showCheckBox) {\n this.treeObj.checkedNodes = this.value ? this.value : [];\n }\n else {\n this.treeObj.selectedNodes = this.value ? this.value : [];\n }\n };\n /* To set cssclass for the dropdowntree */\n DropDownTree.prototype.setCssClass = function (newClass, oldClass) {\n var elements = this.popupObj ? [this.inputWrapper, this.popupObj.element] : [this.inputWrapper];\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(newClass) && newClass !== '') {\n addClass(elements, newClass.split(' '));\n }\n };\n DropDownTree.prototype.setEnableRTL = function (state) {\n if (state) {\n this.inputWrapper.classList.add(RTL);\n }\n else {\n this.inputWrapper.classList.remove(RTL);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n if (this.treeObj) {\n this.treeObj.enableRtl = state;\n this.treeObj.dataBind();\n }\n };\n /* To set enable property */\n DropDownTree.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputEle);\n if (this.enabled) {\n removeClass([this.inputWrapper], DISABLED);\n this.inputEle.setAttribute('aria-disabled', 'false');\n this.inputWrapper.setAttribute('aria-disabled', 'false');\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n addClass([this.inputWrapper], DISABLED);\n if (this.inputWrapper && this.inputWrapper.classList.contains(INPUTFOCUS)) {\n removeClass([this.inputWrapper], [INPUTFOCUS]);\n }\n this.inputEle.setAttribute('aria-disabled', 'true');\n this.inputWrapper.setAttribute('aria-disabled', 'true');\n }\n };\n DropDownTree.prototype.cloneFields = function (fields) {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: this.cloneChildField(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes, query: fields.query,\n selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n };\n DropDownTree.prototype.cloneChildField = function (fields) {\n if (typeof fields === 'string') {\n return fields;\n }\n else {\n var clonedField = {\n dataSource: fields.dataSource, value: fields.value, text: fields.text, parentValue: fields.parentValue,\n child: (fields.child ? this.cloneChildField(fields.child) : null), hasChildren: fields.hasChildren,\n expanded: fields.expanded, iconCss: fields.iconCss, imageUrl: fields.imageUrl, htmlAttributes: fields.htmlAttributes,\n query: fields.query, selected: fields.selected, selectable: fields.selectable, tableName: fields.tableName, tooltip: fields.tooltip\n };\n return clonedField;\n }\n };\n DropDownTree.prototype.getTreeFields = function (fields) {\n var treeFields = {\n dataSource: fields.dataSource, id: fields.value, text: fields.text, parentID: fields.parentValue,\n child: this.getTreeChildren(fields.child), hasChildren: fields.hasChildren, expanded: fields.expanded,\n iconCss: fields.iconCss, imageUrl: fields.imageUrl, isChecked: fields.selected,\n htmlAttributes: fields.htmlAttributes, query: fields.query, selectable: fields.selectable, selected: fields.selected,\n tableName: fields.tableName, tooltip: fields.tooltip\n };\n return treeFields;\n };\n DropDownTree.prototype.getTreeChildren = function (mapper) {\n if (typeof mapper === 'string') {\n return mapper;\n }\n else if (!isNullOrUndefined(mapper)) {\n mapper = this.getActualProperties(mapper);\n var childFields = mapper;\n if (mapper.value) {\n childFields.id = mapper.value;\n }\n if (mapper.parentValue) {\n childFields.parentID = mapper.parentValue;\n }\n if (mapper.child) {\n childFields.child = this.getTreeChildren(mapper.child);\n }\n if (mapper.selected && this.showCheckBox) {\n childFields.isChecked = mapper.selected;\n }\n return childFields;\n }\n return null;\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getTreeDataType = function (ds, field) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if ((typeof field.child === 'string') && isNullOrUndefined(getValue(field.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n if (isNullOrUndefined(this.fields.dataSource))\n this.fields.dataSource = [];\n for (var i = 0, len = this.fields.dataSource.length; i < len; i++) {\n if ((typeof field.child === 'string') && !isNullOrUndefined(getValue(field.child, this.fields.dataSource[i]))) {\n return 2;\n }\n if (!isNullOrUndefined(getValue(field.parentValue, this.fields.dataSource[i])) || !isNullOrUndefined(getValue(field.hasChildren, this.fields.dataSource[i]))) {\n return 1;\n }\n }\n return 1;\n };\n /* Triggers when the tree fields is changed dynamically */\n DropDownTree.prototype.setFields = function () {\n this.resetValue();\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.fields = this.getTreeFields(this.fields);\n this.treeObj.dataBind();\n };\n DropDownTree.prototype.getEventArgs = function (args) {\n // eslint-disable-next-line\n var checkData = args.data;\n // eslint-disable-next-line\n var selectData = args.nodeData;\n var state;\n if (this.showCheckBox) {\n if (args.action === 'check') {\n state = 'select';\n }\n else if (args.action === 'uncheck') {\n state = 'un-select';\n }\n }\n var eventArgs = {\n action: this.showCheckBox ? state : args.action,\n isInteracted: this.isClicked ? true : args.isInteracted,\n item: args.node,\n itemData: this.showCheckBox ? checkData[0] : selectData\n };\n return eventArgs;\n };\n DropDownTree.prototype.onBeforeSelect = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n if (this.value === null) {\n this.setProperties({ value: [] }, true);\n }\n }\n };\n DropDownTree.prototype.updateHiddenValue = function () {\n if (this.allowMultiSelection || this.showCheckBox) {\n return;\n }\n if (this.value && this.value.length) {\n this.hiddenElement.innerHTML = '';\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /* Triggers when the tree node is selected */\n DropDownTree.prototype.onNodeSelected = function (args) {\n if (this.showCheckBox) {\n return;\n }\n var selectedText;\n if (args.isInteracted) {\n var id = getValue('id', args.nodeData).toString();\n if (!this.allowMultiSelection) {\n this.hiddenElement.innerHTML = '';\n this.setProperties({ value: [id] }, true);\n if (this.itemTemplate) {\n selectedText = getValue('text', this.treeObj.getNode(id));\n }\n else {\n selectedText = getValue('text', args.nodeData).toString();\n }\n Input.setValue(selectedText, this.inputEle, this.floatLabelType);\n this.setProperties({ text: selectedText }, true);\n this.currentText = this.text;\n this.currentValue = this.value;\n attributes(this.inputWrapper, { 'aria-describedby': this.element.id });\n attributes(this.inputWrapper, { 'aria-activedescendant': id.toString() });\n this.updateHiddenValue();\n this.showOverAllClear();\n this.hidePopup();\n this.isNodeSelected = true;\n }\n else if (this.allowMultiSelection) {\n this.setMultiSelect();\n }\n }\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isValueChange && !this.changeOnBlur) {\n this.triggerChangeEvent(this.keyEventArgs);\n this.isValueChange = false;\n }\n };\n DropDownTree.prototype.onNodeClicked = function (args) {\n if (!this.changeOnBlur && this.isNodeSelected) {\n this.triggerChangeEvent(args.event);\n this.isNodeSelected = false;\n }\n var target = args.event.target;\n if ((target.classList.contains('e-fullrow') || target.classList.contains('e-list-text')) && this.showCheckBox) {\n this.isClicked = true;\n // eslint-disable-next-line\n var getNodeDetails = this.treeObj.getNode(args.node);\n if (getNodeDetails.isChecked === 'true') {\n this.treeObj.uncheckAll([args.node]);\n }\n else {\n this.treeObj.checkAll([args.node]);\n }\n this.isClicked = false;\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (!this.changeOnBlur && (this.allowMultiSelection || this.showCheckBox)) {\n this.triggerChangeEvent(args.event);\n }\n };\n DropDownTree.prototype.onNodeChecked = function (args) {\n var eventArgs = this.getEventArgs(args);\n this.trigger('select', eventArgs);\n if (this.isFilteredData && args.action === 'uncheck') {\n var id = getValue('id', args.data[0]).toString();\n this.removeSelectedData(id, true);\n }\n if (!this.isChipDelete && args.isInteracted) {\n this.setMultiSelect();\n this.ensurePlaceHolder();\n }\n if (this.showSelectAll && this.checkBoxElement) {\n var nodes = this.treeObj.element.querySelectorAll('li');\n var checkedNodes = this.treeObj.element.querySelectorAll('li .e-checkbox-wrapper[aria-checked=true]');\n var wrap = closest(this.checkBoxElement, '.' + CHECKBOXWRAP);\n if (wrap && args.action === 'uncheck' && (args.isInteracted || checkedNodes.length === 0)) {\n this.isReverseUpdate = true;\n this.changeState(wrap, 'uncheck');\n this.isReverseUpdate = false;\n }\n else if (wrap && args.action === 'check' && checkedNodes.length === nodes.length && this.isCheckAllCalled) {\n this.isReverseUpdate = true;\n this.isCheckAllCalled = false;\n this.changeState(wrap, 'check');\n this.isReverseUpdate = false;\n }\n }\n };\n DropDownTree.prototype.beforeCheck = function (args) {\n if (args.isInteracted) {\n this.oldValue = this.value ? this.value.slice() : this.value;\n }\n };\n DropDownTree.prototype.onNodeExpanded = function (args) {\n if (this.hasTemplate && this.portals) {\n this.portals = [].concat(this.treeObj.portals);\n /* eslint-enable */\n this.renderReactTemplates();\n }\n };\n DropDownTree.prototype.updateClearButton = function (state) {\n if (state) {\n if (!this.inputWrapper.contains(this.overAllClear)) {\n this.inputEle.parentElement.insertBefore(this.overAllClear, this.inputEle.nextSibling);\n }\n else {\n removeClass([this.overAllClear], HIDEICON);\n addClass([this.inputWrapper], SHOW_CLEAR);\n }\n }\n else {\n addClass([this.overAllClear], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CLEAR);\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n var chipClose = selectAll('.' + CHIP_CLOSE, this.chipWrapper);\n for (var i = 0; i < chipClose.length; i++) {\n if (!state) {\n addClass([chipClose[i]], HIDEICON);\n }\n else {\n removeClass([chipClose[i]], HIDEICON);\n }\n }\n }\n };\n DropDownTree.prototype.updateDropDownIconState = function (state) {\n var spinIcon = select('.' + DDTICON, this.inputWrapper);\n if (state) {\n if (!spinIcon) {\n Input.appendSpan(DROPDOWNICON, this.inputWrapper, this.createElement);\n }\n else {\n removeClass([spinIcon], HIDEICON);\n }\n addClass([this.inputWrapper], SHOW_DD_ICON);\n }\n else {\n addClass([spinIcon], HIDEICON);\n removeClass([this.inputWrapper], SHOW_DD_ICON);\n }\n };\n DropDownTree.prototype.updateMode = function () {\n if (this.mode === 'Custom') {\n return;\n }\n if (this.mode !== 'Delimiter') {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var isValid = this.getValidMode();\n if (this.chipWrapper.classList.contains(HIDEICON) && isValid) {\n removeClass([this.chipWrapper], HIDEICON);\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n else if (!isValid) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n var isValue = this.value !== null ? (this.value.length !== 0 ? true : false) : false;\n if (isValid && isValue) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n else {\n removeClass([this.inputEle], CHIP_INPUT);\n }\n }\n else if (this.inputEle.classList.contains(CHIP_INPUT)) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n };\n DropDownTree.prototype.ensurePlaceHolder = function () {\n if (this.value && this.value.length === 0) {\n removeClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n }\n }\n };\n DropDownTree.prototype.ensureClearIconPosition = function (floatLabelType) {\n if (floatLabelType !== 'Never') {\n this.inputWrapper.insertBefore(this.overAllClear, this.inputObj.buttons[0]);\n }\n };\n DropDownTree.prototype.setMultiSelectValue = function (newValues) {\n if (!this.isFilteredData) {\n this.setProperties({ value: newValues }, true);\n if (newValues && newValues.length !== 0 && !this.showCheckBox) {\n this.treeObj.selectedNodes = this.value.slice();\n this.treeObj.dataBind();\n }\n }\n else {\n var selectedValues = isNullOrUndefined(this.value) ? [] : this.value;\n for (var i = 0; i < newValues.length; i++) {\n if (isNullOrUndefined(this.value) || this.value.indexOf(newValues[i]) === -1) {\n selectedValues.push(newValues[i]);\n }\n }\n this.setProperties({ value: selectedValues }, true);\n }\n };\n DropDownTree.prototype.setMultiSelect = function () {\n if (this.showCheckBox && !this.isDynamicChange) {\n this.setMultiSelectValue(this.treeObj.checkedNodes.slice());\n }\n else {\n var ddtValue = this.allowMultiSelection ? (this.showCheckBox ? this.treeObj.checkedNodes\n : this.treeObj.selectedNodes) : (this.value ? (this.showCheckBox ? this.value : [this.value[0]]) : null);\n this.setMultiSelectValue(ddtValue);\n if (this.showCheckBox && this.value !== null) {\n this.treeObj.checkedNodes = this.value;\n this.treeObj.dataBind();\n }\n }\n this.selectedText = [];\n var checkSelection = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (this.inputWrapper.contains(this.chipWrapper) && !checkSelection) {\n removeClass([this.inputEle], CHIP_INPUT);\n detach(this.chipWrapper);\n }\n var isValid = this.getValidMode();\n if (isValid && this.value !== null) {\n addClass([this.inputEle], CHIP_INPUT);\n if (this.chipWrapper) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n }\n var isValue = this.value ? (this.value.length ? true : false) : false;\n if (this.chipWrapper && (this.mode === 'Box' && !isValue)) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.updateSelectedValues();\n };\n // eslint-disable-next-line\n DropDownTree.prototype.getSelectedData = function (value) {\n // eslint-disable-next-line\n var data = null;\n if (this.isFilteredData) {\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n data = this.selectedData[i];\n break;\n }\n }\n }\n if (isNullOrUndefined(data)) {\n if (this.treeSettings.loadOnDemand) {\n data = this.getNodeData(value);\n }\n else {\n data = this.treeObj.getNode(value);\n }\n if (!isNullOrUndefined(data)) {\n this.selectedData.push(data);\n }\n }\n return data;\n };\n DropDownTree.prototype.getNodeData = function (id) {\n var childItems;\n if (isNullOrUndefined(id)) {\n return childItems;\n }\n else if (this.treeDataType === 1) {\n for (var i = 0, objlen = this.treeItems.length; i < objlen; i++) {\n var dataId = getValue(this.fields.value, this.treeItems[i]);\n if (!isNullOrUndefined(this.treeItems[i]) && !isNullOrUndefined(dataId) && dataId.toString() === id) {\n return this.treeItems[i];\n }\n }\n }\n else {\n return this.getChildNodeData(this.treeItems, this.fields, id);\n }\n return childItems;\n };\n DropDownTree.prototype.getChildNodeData = function (obj, mapper, id) {\n var newChildItems;\n if (isNullOrUndefined(obj)) {\n return newChildItems;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataValue = getValue(mapper.value, obj[i]);\n if (obj[i] && dataValue && dataValue.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n var childNodeData = getValue(mapper.child, obj[i]);\n newChildItems = this.getChildNodeData(childNodeData, this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n var child = 'child';\n newChildItems = this.getChildNodeData(getValue(child, obj[i]), this.getChildMapperFields(mapper), id);\n if (newChildItems !== undefined) {\n break;\n }\n }\n }\n return newChildItems;\n };\n DropDownTree.prototype.getChildMapperFields = function (mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n };\n DropDownTree.prototype.removeSelectedData = function (value, muteOnChange) {\n var selectedValues = isNullOrUndefined(this.value) ? [] : this.value.slice();\n selectedValues.splice(selectedValues.indexOf(value), 1);\n this.setProperties({ value: selectedValues }, muteOnChange);\n for (var i = 0; i < this.selectedData.length; i++) {\n if (getValue(this.treeSettings.loadOnDemand ? this.fields.value : 'id', this.selectedData[i]).toString() === value) {\n this.selectedData.splice(i, 1);\n break;\n }\n }\n };\n DropDownTree.prototype.updateSelectedValues = function () {\n this.dataValue = '';\n var temp;\n var text;\n var textValue = '';\n // eslint-disable-next-line\n var selectedData;\n this.hiddenElement.innerHTML = '';\n var hiddenInputValue = '';\n if ((!this.isChipDelete || this.treeSettings.autoCheck) && (this.inputWrapper.contains(this.chipWrapper))) {\n this.chipCollection.innerHTML = '';\n }\n if (!this.isFilteredData) {\n this.selectedData = [];\n }\n if (!isNullOrUndefined(this.value)) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n selectedData = this.getSelectedData(this.value[i]);\n text = getValue(this.treeSettings.loadOnDemand ? this.fields.text : 'text', selectedData);\n this.selectedText.push(text);\n temp = this.selectedText[this.selectedText.length - 1];\n if (this.selectedText.length > 1) {\n this.dataValue += (this.delimiterChar + ' ' + temp);\n textValue += (',' + temp);\n }\n else {\n this.dataValue += temp;\n textValue += temp;\n }\n if (this.mode !== 'Custom' && this.mode !== 'Delimiter' && (!this.isChipDelete || this.treeSettings.autoCheck) &&\n (this.allowMultiSelection || this.showCheckBox)) {\n this.setChipValues(temp, this.value[i]);\n }\n hiddenInputValue += '';\n }\n if (this.selectedText.length >= 1) {\n this.setProperties({ text: textValue }, true);\n }\n this.hiddenElement.innerHTML = hiddenInputValue;\n if (this.mode === 'Custom' && (this.allowMultiSelection || this.showCheckBox)) {\n this.setTagValues();\n }\n }\n var isValid = this.getValidMode();\n if (this.mode !== 'Custom' && this.mode !== 'Box' && (this.allowMultiSelection || this.showCheckBox) && !isValid) {\n if (this.chipWrapper) {\n addClass([this.chipWrapper], HIDEICON);\n removeClass([this.inputWrapper], SHOW_CHIP);\n }\n }\n Input.setValue(this.dataValue, this.inputEle, this.floatLabelType);\n if (textValue === '') {\n this.setProperties({ text: null }, true);\n }\n else {\n this.setProperties({ text: textValue }, true);\n }\n if (this.showClearButton && this.inputFocus) {\n this.showOverAllClear();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.popupObj) {\n this.popupObj.refreshPosition();\n }\n this.currentText = this.text;\n this.currentValue = this.value;\n };\n DropDownTree.prototype.setChipValues = function (text, value) {\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value }\n });\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE + ' ' + ICONS });\n if (this.enableHtmlSanitizer) {\n chipContent.innerText = text;\n }\n else {\n chipContent.innerHTML = text;\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n if (this.showClearButton) {\n chip.appendChild(chipClose);\n EventHandler.add(chipClose, 'mousedown', this.removeChip, this);\n }\n };\n DropDownTree.prototype.setTagValues = function () {\n if (this.value === null || this.text == null) {\n return;\n }\n if (!this.inputWrapper.contains(this.chipWrapper)) {\n this.createChip();\n }\n if (!this.inputWrapper.classList.contains(SHOW_CHIP)) {\n addClass([this.inputWrapper], SHOW_CHIP);\n }\n var chip = this.createElement('span', {\n className: CHIP,\n });\n if (!this.inputEle.classList.contains(CHIP_INPUT)) {\n addClass([this.inputEle], CHIP_INPUT);\n }\n if (this.chipWrapper.classList.contains(HIDEICON)) {\n removeClass([this.chipWrapper], HIDEICON);\n }\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var template = this.customTemplate;\n var templateId = this.customTemplateId;\n var templatestring = 'customTemplate';\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({ 'value': this.value, 'text': this.text }, this, templatestring, templateId, this.isStringTemplate, undefined, chipContent);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, chipContent);\n }\n chip.appendChild(chipContent);\n this.chipCollection.appendChild(chip);\n };\n DropDownTree.prototype.setSelectAllWrapper = function (state) {\n if (this.isFirstRender) {\n return;\n }\n if (state && !this.popupEle.contains(this.checkAllParent) && this.showCheckBox) {\n this.createSelectAllWrapper();\n this.popupEle.insertBefore(this.checkAllParent, this.popupDiv);\n }\n else if (this.popupEle.contains(this.checkAllParent)) {\n detach(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n DropDownTree.prototype.setHeaderTemplate = function () {\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.headerTemplate);\n var tempArr = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, undefined, this.header);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.header);\n }\n this.popupEle.insertBefore(this.header, this.checkAllParent ? this.checkAllParent : this.popupDiv);\n };\n // eslint-disable-next-line\n DropDownTree.prototype.templateComplier = function (template) {\n if (template) {\n // eslint-disable-next-line\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return compile(template);\n };\n DropDownTree.prototype.setFooterTemplate = function () {\n if (this.footer) {\n this.footer.innerHTML = '';\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n }\n // eslint-disable-next-line\n var compiledString = this.templateComplier(this.footerTemplate);\n var tempArr = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, undefined, this.footer);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.footer);\n }\n append([this.footer], this.popupEle);\n };\n DropDownTree.prototype.clearAll = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n this.resetValue();\n this.showOverAllClear();\n if ((this.allowMultiSelection || this.showCheckBox)) {\n if (this.popupObj) {\n this.popupObj.refreshPosition();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n }\n if (e) {\n this.isClearButtonClick = true;\n }\n if (!this.changeOnBlur) {\n this.triggerChangeEvent(e);\n }\n };\n DropDownTree.prototype.removeChip = function (e) {\n if (!this.enabled || this.readonly) {\n return;\n }\n var element = e.target.parentElement;\n var value = element.getAttribute('data-value');\n if (this.chipCollection) {\n if (element) {\n remove(element);\n }\n }\n this.isChipDelete = true;\n this.isClearButtonClick = true;\n this.removeSelectedData(value, true);\n this.selectedText = [];\n if (this.allowMultiSelection) {\n this.treeObj.selectedNodes = this.value.slice();\n this.updateSelectedValues();\n }\n if (this.showCheckBox) {\n this.treeObj.uncheckAll([value]);\n this.clearCheckAll();\n this.setMultiSelect();\n }\n this.triggerChangeEvent(e);\n this.isChipDelete = false;\n this.ensurePlaceHolder();\n };\n DropDownTree.prototype.resetValue = function (isDynamicChange) {\n if (this.value == [] && this.text == null) {\n return;\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n if (!isDynamicChange) {\n this.oldValue = this.value;\n this.setProperties({ value: [] }, true);\n }\n this.dataValue = null;\n this.setProperties({ text: null }, true);\n this.selectedData = [];\n setValue('selectedNodes', [], this.treeObj);\n this.hiddenElement.innerHTML = '';\n if (this.showCheckBox) {\n this.treeObj.uncheckAll();\n this.setMultiSelect();\n this.clearCheckAll();\n }\n if (this.oldValue === null && !isDynamicChange) {\n this.removeValue = true;\n }\n else if (isDynamicChange) {\n this.triggerChangeEvent();\n }\n if ((this.allowMultiSelection || this.showCheckBox) && this.chipWrapper) {\n this.chipCollection.innerHTML = '';\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.ensurePlaceHolder();\n }\n };\n DropDownTree.prototype.clearCheckAll = function () {\n if (this.showSelectAll && this.value && this.value.length === 0) {\n this.setLocale(false);\n }\n };\n DropDownTree.prototype.selectAllItems = function (state) {\n if (this.showCheckBox) {\n if (state) {\n this.isCheckAllCalled = true;\n this.treeObj.checkAll();\n }\n else {\n this.treeObj.uncheckAll();\n }\n this.checkSelectAll = true;\n }\n else if (this.allowMultiSelection) {\n if (!state) {\n this.treeObj.selectedNodes = [];\n }\n else {\n var li = selectAll('li', this.treeObj.element);\n var id = void 0;\n var arr = [];\n for (var i = 0; i < li.length; i++) {\n id = li[i].getAttribute('data-uid').toString();\n arr.push(id);\n }\n this.treeObj.selectedNodes = arr;\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText) {\n if (state) {\n this.updateView();\n }\n else {\n this.updateOverflowWrapper(true);\n }\n }\n };\n DropDownTree.prototype.updateTreeSettings = function (prop) {\n var value = Object.keys(prop.treeSettings)[0];\n if (value === 'autoCheck') {\n this.ensureAutoCheck();\n this.treeObj.autoCheck = this.treeSettings.autoCheck;\n }\n else if (value === 'loadOnDemand') {\n this.treeObj.loadOnDemand = this.treeSettings.loadOnDemand;\n }\n else if (value === 'expandOn') {\n this.treeObj.expandOn = this.treeSettings.expandOn;\n this.treeObj.dataBind();\n return;\n }\n this.treeObj.dataBind();\n this.setMultiSelect();\n this.updateValue(this.value);\n };\n DropDownTree.prototype.updateCheckBoxState = function (checkBox) {\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.showCheckBox = checkBox;\n this.treeObj.dataBind();\n this.isDynamicChange = true;\n this.setSelectAllWrapper(this.showSelectAll);\n if (this.showSelectAll) {\n this.setLocale();\n }\n if (this.showCheckBox) {\n this.updateMode();\n }\n this.setMultiSelect();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateTemplate = function () {\n if (this.popupObj) {\n this.clearTemplate();\n /* eslint-disable */\n this.portals = [];\n /* eslint-enable */\n this.popupObj.destroy();\n if (this.isPopupOpen) {\n this.hidePopup();\n this.isFirstRender = true;\n this.renderPopup();\n }\n else {\n this.isFirstRender = true;\n }\n }\n };\n DropDownTree.prototype.l10nUpdate = function (actionFailure) {\n if (this.noRecord) {\n this.noRecord.innerHTML = '';\n }\n else {\n this.noRecord = this.createElement('div');\n }\n if (this.noRecordsTemplate !== 'No Records Found' || this.actionFailureTemplate !== 'The Request Failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n var templatestring = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line\n var compiledString = this.templateComplier(template);\n var tempArr = compiledString({}, this, templatestring, templateId, this.isStringTemplate, undefined, this.noRecord);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.noRecord);\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n }\n else {\n // eslint-disable-next-line\n var l10nLocale = { noRecordsTemplate: 'No Records Found', actionFailureTemplate: 'The Request Failed' };\n this.l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n this.noRecord.innerHTML = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n addClass([this.noRecord], NODATACONTAINER);\n prepend([this.noRecord], this.popupDiv);\n }\n };\n DropDownTree.prototype.updateRecordTemplate = function (action) {\n if (this.treeItems && this.treeItems.length <= 0) {\n this.l10nUpdate(action);\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n }\n };\n DropDownTree.prototype.updateOverflowWrapper = function (state) {\n if (!state) {\n if (!this.inputWrapper.contains(this.overFlowWrapper)) {\n this.overFlowWrapper = this.createElement('span', { className: OVERFLOW_VIEW + ' ' + HIDEICON });\n this.inputWrapper.insertBefore(this.overFlowWrapper, this.hiddenElement);\n }\n }\n else if (this.inputWrapper.contains(this.overFlowWrapper) && state) {\n this.overFlowWrapper.innerHTML = '';\n }\n };\n DropDownTree.prototype.updateMultiSelection = function (state) {\n if (!this.wrapText) {\n this.updateOverflowWrapper(false);\n }\n this.treeObj.allowMultiSelection = state;\n this.treeObj.dataBind();\n this.updateOption();\n if (this.allowMultiSelection) {\n this.updateMode();\n }\n this.setMultiSelect();\n };\n DropDownTree.prototype.updateAllowFiltering = function (state) {\n if (!this.isFirstRender) {\n if (state) {\n this.renderFilter();\n }\n else {\n this.destroyFilter();\n }\n }\n this.ensureAutoCheck();\n };\n DropDownTree.prototype.updateFilterPlaceHolder = function () {\n if (this.filterObj) {\n this.filterObj.placeholder = this.filterBarPlaceholder;\n this.filterObj.element.setAttribute('aria-label', this.filterBarPlaceholder);\n }\n };\n DropDownTree.prototype.updateValue = function (value) {\n this.isDynamicChange = true;\n if (isNullOrUndefined(value) || value.length === 0) {\n this.resetValue(true);\n }\n else {\n this.setTreeValue();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n this.isDynamicChange = false;\n };\n DropDownTree.prototype.updateText = function (text) {\n if (isNullOrUndefined(text)) {\n this.resetValue();\n }\n else {\n this.setTreeText();\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateOverflowWrapper(false);\n this.updateView();\n }\n }\n this.updateHiddenValue();\n };\n DropDownTree.prototype.updateModelMode = function () {\n var validMode = this.allowMultiSelection ? true : (this.showCheckBox ? true : false);\n if (!validMode) {\n return;\n }\n if (!this.wrapText) {\n var overFlow = select('.' + OVERFLOW_VIEW, this.inputWrapper);\n if (overFlow) {\n overFlow.innerHTML = '';\n }\n }\n this.updateMode();\n this.setMultiSelect();\n if (!this.wrapText && (this.value && this.value.length !== 0)) {\n this.updateOverFlowView();\n addClass([this.inputEle], CHIP_INPUT);\n if (this.mode === 'Box') {\n removeClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n else {\n addClass([this.overFlowWrapper, this.inputWrapper], SHOW_TEXT);\n }\n }\n };\n DropDownTree.prototype.updateOption = function () {\n if (!this.hiddenElement.hasAttribute('multiple') && (this.allowMultiSelection || this.showCheckBox)) {\n this.hiddenElement.setAttribute('multiple', '');\n }\n else if (this.hiddenElement.hasAttribute('multiple') && (!this.allowMultiSelection && !this.showCheckBox)) {\n this.hiddenElement.removeAttribute('multiple');\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {DropDownTreeModel} newProp - specifies the newProp value.\n * @param {DropDownTreeModel} oldProp - specifies the newProp value.\n * @returns {void}\n * @private\n */\n DropDownTree.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputEle);\n break;\n case 'cssClass':\n this.setCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRTL(this.enableRtl);\n break;\n case 'fields':\n this.setFields();\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.inputEle);\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'floatLabelType':\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.inputEle, newProp.floatLabelType, this.placeholder, this.createElement);\n this.ensureClearIconPosition(newProp.floatLabelType);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'allowFiltering':\n this.updateAllowFiltering(newProp.allowFiltering);\n break;\n case 'filterBarPlaceholder':\n this.updateFilterPlaceHolder();\n break;\n case 'value':\n this.oldValue = oldProp.value;\n this.updateValue(newProp.value);\n break;\n case 'text':\n this.updateText(newProp.text);\n break;\n case 'allowMultiSelection':\n this.updateMultiSelection(newProp.allowMultiSelection);\n break;\n case 'mode':\n if (!this.showCheckBox && !this.allowMultiSelection) {\n return;\n }\n if (this.mode === 'Custom') {\n if (this.overFlowWrapper) {\n detach(this.overFlowWrapper);\n }\n if (this.chipWrapper) {\n detach(this.chipWrapper);\n }\n this.setTagValues();\n }\n else {\n if (oldProp.mode === 'Custom') {\n this.updateOverflowWrapper(this.wrapText);\n }\n this.updateModelMode();\n }\n break;\n case 'delimiterChar':\n if (this.mode === 'Box') {\n return;\n }\n if (this.showCheckBox || this.allowMultiSelection) {\n this.setMultiSelect();\n }\n break;\n case 'selectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale();\n }\n break;\n case 'unSelectAllText':\n if (this.showCheckBox && this.showSelectAll) {\n this.setLocale(false);\n }\n break;\n case 'showSelectAll':\n if (this.showCheckBox) {\n this.setSelectAllWrapper(newProp.showSelectAll);\n this.updatePopupHeight();\n }\n break;\n case 'showCheckBox':\n this.updateCheckBoxState(newProp.showCheckBox);\n if (!this.wrapText) {\n this.updateOverflowWrapper(true);\n }\n this.updatePopupHeight();\n this.updateOption();\n break;\n case 'treeSettings':\n this.updateTreeSettings(newProp);\n break;\n case 'customTemplate':\n if (this.mode !== \"Custom\") {\n return;\n }\n this.chipCollection.innerHTML = \"\";\n this.setTagValues();\n break;\n case 'sortOrder':\n if (this.hasTemplate) {\n this.updateTemplate();\n }\n this.treeObj.sortOrder = newProp.sortOrder;\n this.treeObj.dataBind();\n this.updateValue(this.value);\n break;\n case 'showDropDownIcon':\n this.updateDropDownIconState(newProp.showDropDownIcon);\n break;\n case 'popupWidth':\n if (this.popupObj) {\n this.popupObj.element.style.width = this.setWidth();\n }\n break;\n case 'popupHeight':\n if (this.popupObj) {\n this.updatePopupHeight();\n }\n break;\n case 'zIndex':\n if (this.popupObj) {\n this.popupObj.zIndex = newProp.zIndex;\n this.popupObj.dataBind();\n }\n break;\n case 'headerTemplate':\n this.updateTemplate();\n break;\n case 'footerTemplate':\n this.updateTemplate();\n break;\n case 'itemTemplate':\n this.updateTemplate();\n this.treeObj.nodeTemplate = newProp.itemTemplate;\n this.treeObj.dataBind();\n break;\n case 'noRecordsTemplate':\n this.updateRecordTemplate();\n break;\n case 'actionFailureTemplate':\n this.updateRecordTemplate(true);\n break;\n case 'htmlAttributes':\n this.setHTMLAttributes();\n break;\n case 'wrapText':\n this.updateOverflowWrapper(this.wrapText);\n if ((this.allowMultiSelection || this.showCheckBox) && !this.wrapText) {\n this.updateView();\n }\n else {\n addClass([this.overFlowWrapper], HIDEICON);\n if (this.chipWrapper && this.mode === 'Box') {\n removeClass([this.chipWrapper], HIDEICON);\n }\n else {\n removeClass([this.inputWrapper], SHOW_CHIP);\n removeClass([this.inputEle], CHIP_INPUT);\n }\n this.ensurePlaceHolder();\n }\n break;\n }\n }\n };\n /**\n * Allows you to clear the selected values from the Dropdown Tree component.\n *\n * @method clear\n * @returns {void}\n */\n DropDownTree.prototype.clear = function () {\n this.clearAll();\n if (this.inputFocus) {\n this.onFocusOut();\n }\n else {\n if (this.changeOnBlur) {\n this.triggerChangeEvent();\n }\n this.removeValue = false;\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also, it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownTree.prototype.destroy = function () {\n this.clearTemplate();\n this.unWireEvents();\n this.setCssClass(null, this.cssClass);\n this.setProperties({ value: [] }, true);\n this.setProperties({ text: null }, true);\n this.treeObj.destroy();\n this.destroyFilter();\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n if (this.element.tagName !== this.getDirective()) {\n this.inputWrapper.parentElement.insertBefore(this.element, this.inputWrapper);\n }\n Input.setValue(null, this.inputEle, this.floatLabelType);\n detach(this.inputWrapper);\n detach(this.popupDiv);\n this.element.classList.remove('e-input');\n if (this.showCheckBox || this.allowMultiSelection) {\n this.element.classList.remove(CHIP_INPUT);\n }\n _super.prototype.destroy.call(this);\n };\n DropDownTree.prototype.destroyFilter = function () {\n if (this.filterObj) {\n this.filterObj.destroy();\n detach(this.filterObj.element);\n detach(this.filterContainer);\n this.filterObj = null;\n }\n };\n /**\n * Ensures visibility of the Dropdown Tree item by using item value or item element.\n * If many Dropdown Tree items are present, and we are in need to find a particular item, then the `ensureVisible` property\n * helps you to bring the item to visibility by expanding the Dropdown Tree and scrolling to the specific item.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element.\n * @returns {void}\n */\n DropDownTree.prototype.ensureVisible = function (item) {\n this.treeObj.ensureVisible(item);\n };\n /**\n * To get the updated data source of the Dropdown Tree.\n *\n * @param {string | Element} item - Specifies the value of Dropdown Tree item/ Dropdown Tree item element\n * @returns {'{[key: string]: Object }[]'} - returns the updated data source of the Dropdown Tree.\n */\n // eslint-disable-next-line\n DropDownTree.prototype.getData = function (item) {\n return this.treeObj.getTreeData(item);\n };\n /**\n * Close the Dropdown tree pop-up.\n *\n * @returns {void}\n */\n DropDownTree.prototype.hidePopup = function () {\n var eventArgs = { popup: this.popupObj };\n this.inputWrapper.classList.remove(ICONANIMATION);\n if (this.popupEle) {\n addClass([this.popupEle], DDTHIDEICON);\n }\n attributes(this.inputWrapper, { 'aria-expanded': 'false' });\n if (this.popupObj && this.isPopupOpen) {\n this.popupObj.hide();\n if (this.inputFocus) {\n this.inputWrapper.focus();\n if (this.allowFiltering) {\n addClass([this.inputWrapper], [INPUTFOCUS]);\n }\n }\n this.trigger('close', eventArgs);\n }\n };\n /**\n * Based on the state parameter, entire list item will be selected or deselected.\n *\n * @param {boolean} state - Unselects/Selects entire Dropdown Tree items.\n * @returns {void}\n *\n */\n DropDownTree.prototype.selectAll = function (state) {\n this.selectAllItems(state);\n };\n /**\n * Opens the popup that displays the Dropdown Tree items.\n *\n * @returns {void}\n */\n DropDownTree.prototype.showPopup = function () {\n if (!this.enabled || this.readonly || this.isPopupOpen) {\n return;\n }\n this.renderPopup();\n this.focusIn();\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - returns the module name.\n */\n DropDownTree.prototype.getModuleName = function () {\n return 'dropdowntree';\n };\n __decorate$2([\n Property('The Request Failed')\n ], DropDownTree.prototype, \"actionFailureTemplate\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"allowFiltering\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"allowMultiSelection\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"changeOnBlur\", void 0);\n __decorate$2([\n Property('')\n ], DropDownTree.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(\"${value.length} item(s) selected\")\n ], DropDownTree.prototype, \"customTemplate\", void 0);\n __decorate$2([\n Property(',')\n ], DropDownTree.prototype, \"delimiterChar\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"enabled\", void 0);\n __decorate$2([\n Complex({}, Fields)\n ], DropDownTree.prototype, \"fields\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$2([\n Property('StartsWith')\n ], DropDownTree.prototype, \"filterType\", void 0);\n __decorate$2([\n Property('Never')\n ], DropDownTree.prototype, \"floatLabelType\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"footerTemplate\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"ignoreAccent\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"ignoreCase\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"headerTemplate\", void 0);\n __decorate$2([\n Property({})\n ], DropDownTree.prototype, \"htmlAttributes\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"itemTemplate\", void 0);\n __decorate$2([\n Property('Default')\n ], DropDownTree.prototype, \"mode\", void 0);\n __decorate$2([\n Property('No Records Found')\n ], DropDownTree.prototype, \"noRecordsTemplate\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"placeholder\", void 0);\n __decorate$2([\n Property('300px')\n ], DropDownTree.prototype, \"popupHeight\", void 0);\n __decorate$2([\n Property('100%')\n ], DropDownTree.prototype, \"popupWidth\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"readonly\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"showSelectAll\", void 0);\n __decorate$2([\n Property('Select All')\n ], DropDownTree.prototype, \"selectAllText\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"showCheckBox\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"showClearButton\", void 0);\n __decorate$2([\n Property(true)\n ], DropDownTree.prototype, \"showDropDownIcon\", void 0);\n __decorate$2([\n Property('None')\n ], DropDownTree.prototype, \"sortOrder\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"text\", void 0);\n __decorate$2([\n Complex({}, TreeSettings)\n ], DropDownTree.prototype, \"treeSettings\", void 0);\n __decorate$2([\n Property('Unselect All')\n ], DropDownTree.prototype, \"unSelectAllText\", void 0);\n __decorate$2([\n Property(null)\n ], DropDownTree.prototype, \"value\", void 0);\n __decorate$2([\n Property('100%')\n ], DropDownTree.prototype, \"width\", void 0);\n __decorate$2([\n Property(1000)\n ], DropDownTree.prototype, \"zIndex\", void 0);\n __decorate$2([\n Property(false)\n ], DropDownTree.prototype, \"wrapText\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"actionFailure\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"close\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"blur\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"dataBound\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"destroyed\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"filtering\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"focus\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"keyPress\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"open\", void 0);\n __decorate$2([\n Event()\n ], DropDownTree.prototype, \"select\", void 0);\n DropDownTree = __decorate$2([\n NotifyPropertyChanges\n ], DropDownTree);\n return DropDownTree;\n}(Component));\n\n/**\n * export all modules from current location\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nvar SPINNER_CLASS = 'e-atc-spinner-icon';\ndropDownListClasses.root = 'e-combobox';\nvar inputObject$1 = {\n container: null,\n buttons: []\n};\n/**\n * The ComboBox component allows the user to type a value or choose an option from the list of predefined options.\n * ```html\n * \n * ```\n * ```typescript\n * let games:ComboBox = new ComboBox();\n * games.appendTo(\"#list\");\n * ```\n */\nvar ComboBox = /** @__PURE__ @class */ (function (_super) {\n __extends$3(ComboBox, _super);\n /**\n * *Constructor for creating the component\n *\n * @param {ComboBoxModel} options - Specifies the ComboBox model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function ComboBox(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n ComboBox.prototype.getLocaleName = function () {\n return 'combo-box';\n };\n ComboBox.prototype.wireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur, this);\n EventHandler.add(this.inputWrapper.container, 'blur', this.onBlurHandler, this);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick, this);\n }\n EventHandler.add(this.inputElement, 'focus', this.targetFocus, this);\n if (!this.readonly) {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n }\n this.bindCommonEvent();\n };\n ComboBox.prototype.preventBlur = function (e) {\n if ((!this.allowFiltering && document.activeElement !== this.inputElement &&\n !document.activeElement.classList.contains(dropDownListClasses.input) && Browser.isDevice || !Browser.isDevice)) {\n e.preventDefault();\n }\n };\n ComboBox.prototype.onBlurHandler = function (e) {\n var inputValue = this.inputElement && this.inputElement.value === '' ?\n null : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData) && !isNullOrUndefined(inputValue) && inputValue !== this.text) {\n this.customValue(e);\n }\n _super.prototype.onBlurHandler.call(this, e);\n };\n ComboBox.prototype.targetElement = function () {\n return this.inputElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldText = function (text) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n this.removeSelection();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.setOldValue = function (value) {\n if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n this.removeSelection();\n this.setHiddenValue();\n };\n ComboBox.prototype.valueMuteChange = function (value) {\n var inputValue = isNullOrUndefined(value) ? null : value.toString();\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value, text: value, index: null }, true);\n this.activeIndex = this.index;\n var fields = this.fields;\n var dataItem = {};\n dataItem[fields.text] = isNullOrUndefined(value) ? null : value.toString();\n dataItem[fields.value] = isNullOrUndefined(value) ? null : value.toString();\n this.itemData = dataItem;\n this.item = null;\n if (this.previousValue !== this.value) {\n this.detachChangeEvent(null);\n }\n };\n ComboBox.prototype.updateValues = function () {\n if (!isNullOrUndefined(this.value)) {\n var li = this.getElementByValue(this.value);\n if (li) {\n this.setSelection(li, null);\n }\n else if (this.allowCustom) {\n this.valueMuteChange(this.value);\n }\n else {\n this.valueMuteChange(null);\n }\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var li = this.getElementByText(this.text);\n if (li) {\n this.setSelection(li, null);\n }\n else {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n this.customValue();\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n ComboBox.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement && this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n ComboBox.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'role': 'combobox',\n 'aria-autocomplete': 'both',\n 'aria-labelledby': this.hiddenElement.id,\n 'aria-expanded': 'false',\n 'aria-readonly': this.readonly.toString(),\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n };\n return ariaAttributes;\n };\n ComboBox.prototype.searchLists = function (e) {\n this.isTyped = true;\n if (this.isFiltering()) {\n _super.prototype.searchLists.call(this, e);\n if (this.ulElement && this.filterInput.value.trim() === '') {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n }\n else {\n if (this.ulElement && this.inputElement.value === '' && this.preventAutoFill) {\n this.setHoverList(this.ulElement.querySelector('.' + dropDownListClasses.li));\n }\n this.incrementalSearch(e);\n }\n };\n ComboBox.prototype.getNgDirective = function () {\n return 'EJS-COMBOBOX';\n };\n ComboBox.prototype.setSearchBox = function () {\n this.filterInput = this.inputElement;\n return (this.isFiltering() ? this.inputWrapper : inputObject$1);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ComboBox.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isSelectCustom) {\n this.removeSelection();\n }\n if (!this.preventAutoFill && this.getModuleName() === 'combobox' && this.isTyped) {\n setTimeout(function () {\n _this.inlineSearch();\n });\n }\n };\n ComboBox.prototype.getFocusElement = function () {\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : this.list;\n var isSelected = dataItem.text === this.inputElement.value && !isNullOrUndefined(selected);\n if (isSelected) {\n return selected;\n }\n if ((Browser.isDevice && !this.isDropDownClick || !Browser.isDevice) &&\n !isNullOrUndefined(this.liCollections) && this.liCollections.length > 0) {\n var inputValue = this.inputElement.value;\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var activeItem = Search(inputValue, this.liCollections, this.filterType, true, dataSource, this.fields, type);\n var activeElement = activeItem.item;\n if (!isNullOrUndefined(activeElement)) {\n var count = this.getIndexByValue(activeElement.getAttribute('data-value')) - 1;\n var height = parseInt(getComputedStyle(this.liCollections[0], null).getPropertyValue('height'), 10);\n if (!isNaN(height) && this.getModuleName() !== 'autocomplete') {\n this.removeFocus();\n var fixedHead = this.fields.groupBy ? this.liCollections[0].offsetHeight : 0;\n this.list.scrollTop = count * height + fixedHead;\n addClass([activeElement], dropDownListClasses.focus);\n }\n }\n else {\n if (this.isSelectCustom && this.inputElement.value.trim() !== '') {\n this.removeFocus();\n this.list.scrollTop = 0;\n }\n }\n return activeElement;\n }\n else {\n return null;\n }\n };\n ComboBox.prototype.setValue = function (e) {\n if (e && e.type === 'keydown' && e.action === 'enter') {\n this.removeFillSelection();\n }\n if (this.autofill && this.getModuleName() === 'combobox' && e && e.type === 'keydown' && e.action !== 'enter') {\n this.preventAutoFill = false;\n this.inlineSearch(e);\n return false;\n }\n else {\n return _super.prototype.setValue.call(this, e);\n }\n };\n ComboBox.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n if (!(this.allowCustom && isNullOrUndefined(dataItem.value) && isNullOrUndefined(dataItem.text))) {\n this.setProperties({ 'value': dataItem.value }, !this.allowCustom);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = (this.getModuleName() === 'autocomplete') ? (this.inputWrapper.buttons[0] ||\n this.inputWrapper.clearButton ||\n Input.appendSpan('e-input-group-icon ' + SPINNER_CLASS, this.inputWrapper.container, this.createElement)) :\n (this.inputWrapper.buttons[0] || this.inputWrapper.clearButton);\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n ComboBox.prototype.setAutoFill = function (activeElement, isHover) {\n if (!isHover) {\n this.setHoverList(activeElement);\n }\n if (this.autofill && !this.preventAutoFill) {\n var currentValue = this.getTextByValue(activeElement.getAttribute('data-value')).toString();\n var currentFillValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n if (this.getModuleName() === 'combobox') {\n if (!this.isSelected && this.previousValue !== currentFillValue) {\n this.updateSelectedItem(activeElement, null);\n this.isSelected = true;\n this.previousValue = this.getFormattedValue(activeElement.getAttribute('data-value'));\n }\n else {\n this.updateSelectedItem(activeElement, null, true);\n }\n }\n if (!this.isAndroidAutoFill(currentValue)) {\n this.setAutoFillSelection(currentValue, isHover);\n }\n }\n };\n ComboBox.prototype.isAndroidAutoFill = function (value) {\n if (Browser.isAndroid) {\n var currentPoints = this.getSelectionPoints();\n var prevEnd = this.prevSelectPoints.end;\n var curEnd = currentPoints.end;\n var prevStart = this.prevSelectPoints.start;\n var curStart = currentPoints.start;\n if (prevEnd !== 0 && ((prevEnd === value.length && prevStart === value.length) ||\n (prevStart > curStart && prevEnd > curEnd) || (prevEnd === curEnd && prevStart === curStart))) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n ComboBox.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.isFiltering() && !isNullOrUndefined(e) && e.target === this.inputWrapper.clearButton) {\n this.searchLists(e);\n }\n };\n ComboBox.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n ComboBox.prototype.inlineSearch = function (e) {\n var isKeyNavigate = (e && (e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown'));\n var activeElement = isKeyNavigate ? this.liCollections[this.activeIndex] : this.getFocusElement();\n if (!isNullOrUndefined(activeElement)) {\n if (!isKeyNavigate) {\n var value = this.getFormattedValue(activeElement.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.activeIndex = !isNullOrUndefined(this.activeIndex) ? this.activeIndex : null;\n }\n this.preventAutoFill = this.inputElement.value === '' ? false : this.preventAutoFill;\n this.setAutoFill(activeElement, isKeyNavigate);\n }\n else if (this.inputElement.value === '') {\n this.activeIndex = null;\n if (!isNullOrUndefined(this.list)) {\n this.list.scrollTop = 0;\n var focusItem = this.list.querySelector('.' + dropDownListClasses.li);\n this.setHoverList(focusItem);\n }\n }\n else {\n this.activeIndex = null;\n this.removeSelection();\n if (this.liCollections && this.liCollections.length > 0 && !this.isCustomFilter) {\n this.removeFocus();\n }\n }\n };\n ComboBox.prototype.incrementalSearch = function (e) {\n this.showPopup(e);\n if (!isNullOrUndefined(this.listData)) {\n this.inlineSearch(e);\n e.preventDefault();\n }\n };\n ComboBox.prototype.setAutoFillSelection = function (currentValue, isKeyNavigate) {\n if (isKeyNavigate === void 0) { isKeyNavigate = false; }\n var selection = this.getSelectionPoints();\n var value = this.inputElement.value.substr(0, selection.start);\n if (value && (value.toLowerCase() === currentValue.substr(0, selection.start).toLowerCase())) {\n var inputValue = value + currentValue.substr(value.length, currentValue.length);\n Input.setValue(inputValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(selection.start, this.inputElement.value.length);\n }\n else if (isKeyNavigate) {\n Input.setValue(currentValue, this.inputElement, this.floatLabelType, this.showClearButton);\n this.inputElement.setSelectionRange(0, this.inputElement.value.length);\n }\n };\n ComboBox.prototype.getValueByText = function (text) {\n return _super.prototype.getValueByText.call(this, text, true, this.ignoreAccent);\n };\n ComboBox.prototype.unWireEvent = function () {\n if (this.getModuleName() === 'combobox') {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.preventBlur);\n EventHandler.remove(this.inputWrapper.container, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0])) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dropDownClick);\n }\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'focus', this.targetFocus);\n if (!this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n }\n this.unBindCommonEvent();\n };\n ComboBox.prototype.setSelection = function (li, e) {\n _super.prototype.setSelection.call(this, li, e);\n if (!isNullOrUndefined(li) && !this.autofill && !this.isDropDownClick) {\n this.removeFocus();\n }\n };\n ComboBox.prototype.selectCurrentItem = function (e) {\n var li;\n if (this.isPopupOpen) {\n if (this.isSelected) {\n li = this.list.querySelector('.' + dropDownListClasses.selected);\n }\n else {\n li = this.list.querySelector('.' + dropDownListClasses.focus);\n }\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n }\n if (e.action === 'enter' && this.inputElement.value.trim() === '') {\n this.clearAll(e);\n }\n else if (this.isTyped && !this.isSelected && isNullOrUndefined(li)) {\n this.customValue(e);\n }\n this.hidePopup(e);\n };\n ComboBox.prototype.setHoverList = function (li) {\n this.removeSelection();\n if (this.isValidLI(li) && !li.classList.contains(dropDownListClasses.selected)) {\n this.removeFocus();\n li.classList.add(dropDownListClasses.focus);\n }\n };\n ComboBox.prototype.targetFocus = function (e) {\n if (Browser.isDevice && !this.allowFiltering) {\n this.preventFocus = false;\n }\n this.onFocus(e);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n };\n ComboBox.prototype.dropDownClick = function (e) {\n e.preventDefault();\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.dropDownClick.call(this, e);\n };\n ComboBox.prototype.customValue = function (e) {\n var _this = this;\n var value = this.getValueByText(this.inputElement.value);\n if (!this.allowCustom && this.inputElement.value !== '') {\n var previousValue = this.previousValue;\n var currentValue = this.value;\n this.setProperties({ value: value });\n if (isNullOrUndefined(this.value)) {\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.autofill && previousValue === this.value && currentValue !== this.value) {\n this.onChangeEvent(null);\n }\n }\n else if (this.inputElement.value.trim() !== '') {\n var previousValue_1 = this.value;\n if (isNullOrUndefined(value)) {\n var value_1 = this.inputElement.value === '' ? null : this.inputElement.value;\n // eslint-disable-next-line max-len\n var eventArgs = { text: value_1, item: {} };\n if (!this.initial) {\n this.trigger('customValueSpecifier', eventArgs, function (eventArgs) {\n _this.updateCustomValueCallback(value_1, eventArgs, previousValue_1, e);\n });\n }\n else {\n this.updateCustomValueCallback(value_1, eventArgs, previousValue_1);\n }\n }\n else {\n this.isSelectCustom = false;\n this.setProperties({ value: value });\n if (previousValue_1 !== this.value) {\n this.onChangeEvent(e);\n }\n }\n }\n else if (this.allowCustom) {\n this.isSelectCustom = true;\n }\n };\n ComboBox.prototype.updateCustomValueCallback = function (value, eventArgs, previousValue, e) {\n var fields = this.fields;\n var item = eventArgs.item;\n var dataItem = {};\n if (item && getValue(fields.text, item) && getValue(fields.value, item)) {\n dataItem = item;\n }\n else {\n setValue(fields.text, value, dataItem);\n setValue(fields.value, value, dataItem);\n }\n this.itemData = dataItem;\n var changeData = {\n text: getValue(fields.text, this.itemData),\n value: getValue(fields.value, this.itemData),\n index: null\n };\n this.setProperties(changeData, true);\n this.setSelection(null, null);\n this.isSelectCustom = true;\n if (previousValue !== this.value) {\n this.onChangeEvent(e);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {ComboBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {ComboBoxModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n ComboBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'combobox') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n if (this.readonly) {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n EventHandler.remove(this.inputElement, 'keyup', this.onFilterUp);\n EventHandler.remove(this.inputElement, 'keydown', this.onFilterDown);\n }\n else {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n EventHandler.add(this.inputElement, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.inputElement, 'keydown', this.onFilterDown, this);\n }\n this.setReadOnly();\n break;\n case 'allowFiltering':\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n break;\n case 'allowCustom':\n break;\n default: {\n // eslint-disable-next-line max-len\n var comboProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, comboProps.newProperty, comboProps.oldProperty);\n if (this.isFiltering() && prop === 'dataSource' && isNullOrUndefined(this.list) && this.itemTemplate &&\n this.getModuleName() === 'combobox') {\n _super.prototype.renderList.call(this);\n }\n break;\n }\n }\n }\n };\n /**\n * To initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n ComboBox.prototype.render = function () {\n _super.prototype.render.call(this);\n this.setSearchBox();\n if (this.isFiltering() && this.getModuleName() === 'combobox' && isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this);\n }\n this.renderComplete();\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n ComboBox.prototype.getModuleName = function () {\n return 'combobox';\n };\n /**\n * Adds a new item to the combobox popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.filter = function (dataSource, query, fields) {\n _super.prototype.filter.call(this, dataSource, query, fields);\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.showPopup = function (e) {\n _super.prototype.showPopup.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n var inputValue = this.inputElement && this.inputElement.value === '' ? null\n : this.inputElement && this.inputElement.value;\n if (!isNullOrUndefined(this.listData)) {\n var isEscape = this.isEscapeKey;\n if (this.isEscapeKey) {\n Input.setValue(this.typedString, this.inputElement, this.floatLabelType, this.showClearButton);\n this.isEscapeKey = false;\n }\n if (this.autofill) {\n this.removeFillSelection();\n }\n var dataItem = this.isSelectCustom ? { text: '' } : this.getItemData();\n var selected = !isNullOrUndefined(this.list) ? this.list.querySelector('.' + dropDownListClasses.selected) : null;\n if (this.inputElement && dataItem.text === this.inputElement.value && !isNullOrUndefined(selected)) {\n if (this.isSelected) {\n this.onChangeEvent(e);\n this.isSelectCustom = false;\n }\n _super.prototype.hidePopup.call(this, e);\n return;\n }\n if (this.getModuleName() === 'combobox' && this.inputElement.value.trim() !== '') {\n var dataSource = this.sortedData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, this.liCollections, 'Equal', true, dataSource, this.fields, type);\n this.selectedLI = searchItem.item;\n if (isNullOrUndefined(searchItem.index)) {\n searchItem.index = Search(this.inputElement.value, this.liCollections, 'StartsWith', true, dataSource, this.fields, type).index;\n }\n this.activeIndex = searchItem.index;\n if (!isNullOrUndefined(this.selectedLI)) {\n this.updateSelectedItem(this.selectedLI, null, true);\n }\n else if (isEscape) {\n this.isSelectCustom = true;\n this.removeSelection();\n }\n }\n if (!this.isEscapeKey && this.isTyped && !this.isInteracted) {\n this.customValue(e);\n }\n }\n if (isNullOrUndefined(this.listData) && this.allowCustom && !isNullOrUndefined(inputValue) && inputValue !== this.value) {\n this.customValue();\n }\n _super.prototype.hidePopup.call(this, e);\n };\n /**\n * Sets the focus to the component for interaction.\n *\n * @returns {void}\n */\n ComboBox.prototype.focusIn = function () {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice && !this.isFiltering()) {\n this.preventFocus = true;\n }\n _super.prototype.focusIn.call(this);\n };\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.clear = function () {\n this.value = null;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n * @deprecated\n */\n ComboBox.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n _super.prototype.focusOut.call(this, e);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n * @deprecated\n */\n ComboBox.prototype.getItems = function () {\n return _super.prototype.getItems.call(this);\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n * @deprecated\n */\n ComboBox.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n ComboBox.prototype.renderHightSearch = function () {\n // update high light search\n };\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"autofill\", void 0);\n __decorate$3([\n Property(true)\n ], ComboBox.prototype, \"allowCustom\", void 0);\n __decorate$3([\n Property({})\n ], ComboBox.prototype, \"htmlAttributes\", void 0);\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"allowFiltering\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"query\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"index\", void 0);\n __decorate$3([\n Property(true)\n ], ComboBox.prototype, \"showClearButton\", void 0);\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"enableRtl\", void 0);\n __decorate$3([\n Event()\n ], ComboBox.prototype, \"customValueSpecifier\", void 0);\n __decorate$3([\n Event()\n ], ComboBox.prototype, \"filtering\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"valueTemplate\", void 0);\n __decorate$3([\n Property('Never')\n ], ComboBox.prototype, \"floatLabelType\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"headerTemplate\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"footerTemplate\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"placeholder\", void 0);\n __decorate$3([\n Property('100%')\n ], ComboBox.prototype, \"width\", void 0);\n __decorate$3([\n Property('300px')\n ], ComboBox.prototype, \"popupHeight\", void 0);\n __decorate$3([\n Property('100%')\n ], ComboBox.prototype, \"popupWidth\", void 0);\n __decorate$3([\n Property(false)\n ], ComboBox.prototype, \"readonly\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"text\", void 0);\n __decorate$3([\n Property(null)\n ], ComboBox.prototype, \"value\", void 0);\n ComboBox = __decorate$3([\n NotifyPropertyChanges\n ], ComboBox);\n return ComboBox;\n}(DropDownList));\n\n/**\n * export all modules from current location\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \ndropDownListClasses.root = 'e-autocomplete';\ndropDownListClasses.icon = 'e-input-group-icon e-ddl-icon e-search-icon';\n/**\n * The AutoComplete component provides the matched suggestion list when type into the input,\n * from which the user can select one.\n * ```html\n * \n * ```\n * ```typescript\n * let atcObj:AutoComplete = new AutoComplete();\n * atcObj.appendTo(\"#list\");\n * ```\n */\nvar AutoComplete = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AutoComplete, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {AutoCompleteModel} options - Specifies the AutoComplete model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function AutoComplete(options, element) {\n var _this_1 = _super.call(this, options, element) || this;\n _this_1.isFiltered = false;\n _this_1.searchList = false;\n return _this_1;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n AutoComplete.prototype.getLocaleName = function () {\n return 'auto-complete';\n };\n AutoComplete.prototype.getNgDirective = function () {\n return 'EJS-AUTOCOMPLETE';\n };\n AutoComplete.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.value)) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.value)) ? this.value : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.value) ? this.fields.value : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 20, checked the condition\n if (this.suggestionCount !== 20) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n AutoComplete.prototype.searchLists = function (e) {\n var _this_1 = this;\n this.isTyped = true;\n this.isDataFetched = this.isSelectCustom = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.renderList.call(this, e, true);\n }\n this.queryString = this.filterInput.value;\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields, null, e);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this_1.isFiltered = true;\n _this_1.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this_1.isFiltered && !eventArgs.preventDefaultAction) {\n _this_1.searchList = true;\n _this_1.filterAction(_this_1.dataSource, null, _this_1.fields, e);\n }\n });\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.filterAction(dataSource, query, fields);\n };\n AutoComplete.prototype.filterAction = function (dataSource, query, fields, e) {\n this.beforePopupOpen = true;\n if (this.queryString !== '' && (this.queryString.length >= this.minLength)) {\n this.resetList(dataSource, fields, query, e);\n }\n else {\n this.hidePopup(e);\n this.beforePopupOpen = false;\n }\n this.renderReactTemplates();\n };\n AutoComplete.prototype.clearAll = function (e, property) {\n if (isNullOrUndefined(property) || (!isNullOrUndefined(property) && isNullOrUndefined(property.dataSource))) {\n _super.prototype.clearAll.call(this, e);\n }\n if (this.beforePopupOpen) {\n this.hidePopup();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n this.fixedHeaderElement = null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n var item = this.list.querySelector('.' + dropDownListClasses.li);\n if (!isNullOrUndefined(item)) {\n removeClass([item], dropDownListClasses.focus);\n }\n this.postBackAction();\n };\n AutoComplete.prototype.postBackAction = function () {\n if (this.autofill && !isNullOrUndefined(this.liCollections[0]) && this.searchList) {\n var items = [this.liCollections[0]];\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n var searchItem = Search(this.inputElement.value, items, 'StartsWith', this.ignoreCase, dataSource, this.fields, type);\n this.searchList = false;\n if (!isNullOrUndefined(searchItem.item)) {\n _super.prototype.setAutoFill.call(this, this.liCollections[0], true);\n }\n }\n };\n AutoComplete.prototype.setSelection = function (li, e) {\n if (!this.isValidLI(li)) {\n this.selectedLI = li;\n return;\n }\n if (!isNullOrUndefined(e) && e.type === 'keydown' && e.action !== 'enter'\n && e.action !== 'tab' && this.isValidLI(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n this.setHoverList(li);\n this.selectedLI = li;\n this.setScrollPosition(e);\n if (this.autofill && this.isPopupOpen) {\n this.preventAutoFill = false;\n var isKeyNavigate = (e && e.action === 'down' || e.action === 'up' ||\n e.action === 'home' || e.action === 'end' || e.action === 'pageUp' || e.action === 'pageDown');\n _super.prototype.setAutoFill.call(this, li, isKeyNavigate);\n }\n }\n else {\n _super.prototype.setSelection.call(this, li, e);\n }\n };\n AutoComplete.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this_1 = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n if (_this_1.element.tagName === _this_1.getNgDirective() && _this_1.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this_1.highlight) {\n highlightSearch(e.item, _this_1.queryString, _this_1.ignoreCase, _this_1.filterType);\n }\n itemCreated_1.apply(_this_1, [e]);\n };\n }\n return fields;\n };\n AutoComplete.prototype.isFiltering = function () {\n return true;\n };\n AutoComplete.prototype.renderPopup = function (e) {\n this.list.scrollTop = 0;\n _super.prototype.renderPopup.call(this, e);\n };\n AutoComplete.prototype.isEditTextBox = function () {\n return true && this.inputElement.value.trim() !== '';\n };\n AutoComplete.prototype.isPopupButton = function () {\n return this.showPopupButton;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n AutoComplete.prototype.isSelectFocusItem = function (element) {\n return false;\n };\n AutoComplete.prototype.setInputValue = function (newProp, oldProp) {\n var oldValue = oldProp && oldProp.text ? oldProp.text : oldProp ? oldProp.value : oldProp;\n var value = newProp && newProp.text ? newProp.text : newProp && newProp.value ? newProp.value : this.value;\n if (value && this.typedString === '' && !this.allowCustom && !(this.dataSource instanceof DataManager)) {\n var checkFields_1_1 = this.typeOfData(this.dataSource).typeof === 'string' ? '' : this.fields.value;\n var listLength_1 = this.getItems().length;\n var query = new Query();\n var _this_2 = this;\n new DataManager(this.dataSource).executeQuery(query.where(new Predicate(checkFields_1_1, 'equal', value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this_2.value = checkFields_1_1 !== '' ? e.result[0][_this_2.fields.value].toString() : e.result[0].toString();\n _this_2.addItem(e.result, listLength_1);\n _this_2.updateValues();\n }\n else {\n newProp && newProp.text ? _this_2.setOldText(oldValue) : newProp && newProp.value ? _this_2.setOldValue(oldValue) : _this_2.updateValues();\n }\n });\n }\n else if (newProp) {\n newProp.text ? this.setOldText(oldValue) : this.setOldValue(oldValue);\n }\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n * @deprecated\n */\n AutoComplete.prototype.showPopup = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n this.preventAutoFill = true;\n if (isNullOrUndefined(this.list)) {\n this.renderList(e);\n }\n else {\n this.resetList(this.dataSource, this.fields, null, e);\n }\n };\n /**\n * Hides the popup if it is in open state.\n *\n * @returns {void}\n */\n AutoComplete.prototype.hidePopup = function (e) {\n _super.prototype.hidePopup.call(this, e);\n this.activeIndex = -1;\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {AutoCompleteModel} newProp - Returns the dynamic property value of the component.\n * @param {AutoCompleteModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'autocomplete') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showPopupButton':\n if (this.showPopupButton) {\n var button = Input.appendSpan(dropDownListClasses.icon, this.inputWrapper.container, this.createElement);\n this.inputWrapper.buttons[0] = button;\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (this.inputWrapper && this.inputWrapper.buttons && this.inputWrapper.buttons[0]) {\n EventHandler.add(this.inputWrapper.buttons[0], 'click', this.dropDownClick, this);\n }\n }\n else {\n detach(this.inputWrapper.buttons[0]);\n this.inputWrapper.buttons[0] = null;\n }\n break;\n default: {\n // eslint-disable-next-line max-len\n var atcProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, atcProps.newProperty, atcProps.oldProperty);\n break;\n }\n }\n }\n };\n AutoComplete.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n AutoComplete.prototype.getModuleName = function () {\n return 'autocomplete';\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n AutoComplete.prototype.render = function () {\n _super.prototype.render.call(this);\n };\n __decorate$4([\n Complex({ value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], AutoComplete.prototype, \"fields\", void 0);\n __decorate$4([\n Property(true)\n ], AutoComplete.prototype, \"ignoreCase\", void 0);\n __decorate$4([\n Property(false)\n ], AutoComplete.prototype, \"showPopupButton\", void 0);\n __decorate$4([\n Property(false)\n ], AutoComplete.prototype, \"highlight\", void 0);\n __decorate$4([\n Property(20)\n ], AutoComplete.prototype, \"suggestionCount\", void 0);\n __decorate$4([\n Property({})\n ], AutoComplete.prototype, \"htmlAttributes\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"query\", void 0);\n __decorate$4([\n Property(1)\n ], AutoComplete.prototype, \"minLength\", void 0);\n __decorate$4([\n Property('Contains')\n ], AutoComplete.prototype, \"filterType\", void 0);\n __decorate$4([\n Event()\n ], AutoComplete.prototype, \"filtering\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"index\", void 0);\n __decorate$4([\n Property('Never')\n ], AutoComplete.prototype, \"floatLabelType\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"valueTemplate\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$4([\n Property(false)\n ], AutoComplete.prototype, \"allowFiltering\", void 0);\n __decorate$4([\n Property(null)\n ], AutoComplete.prototype, \"text\", void 0);\n AutoComplete = __decorate$4([\n NotifyPropertyChanges\n ], AutoComplete);\n return AutoComplete;\n}(ComboBox));\n\n/**\n * export all modules from current location\n */\n\n/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nfunction updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nfunction floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nfunction floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nfunction encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nvar FOCUS = 'e-input-focus';\nvar DISABLED$1 = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER$1 = 'e-chips-collection';\nvar CHIP$1 = 'e-chips';\nvar CHIP_CONTENT$1 = 'e-chipcontent';\nvar CHIP_CLOSE$1 = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER$1 = 'e-remain';\nvar CLOSEICON_CLASS$1 = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER$1 = 'e-ddl-footer';\nvar HEADER$1 = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS$1 = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER$1 = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @__PURE__ @class */ (function (_super) {\n __extends$5(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n document.body.appendChild(_this.popupObj.element);\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.inputElement.id + '_options' });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n return this.getQuery(this.query).where(predicate);\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE$1) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED$1);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED$1);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n if (!document.activeElement.classList.contains(FILTERINPUT)) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n if (elements.length) {\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP$1);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP$1);\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE$1.split(' ')[0]);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP$1);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE$1.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP$1,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT$1 });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE$1 });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n for (var i = 0; i < valueCompTemp.length; i++) {\n chipContent.appendChild(valueCompTemp[i]);\n }\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = data;\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative', position: { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper, collision: { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER$1);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.header.appendChild(elements[temp]);\n }\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER$1);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n for (var temp = 0; temp < elements.length; temp++) {\n this.footer.appendChild(elements[temp]);\n }\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n var listValue = this.findListElement(((!isNullOrUndefined(this.mainList)) ? this.mainList : this.ulElement), 'li', 'data-value', this.value[index]);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(this.value[index]);\n }\n else {\n temp = this.value[index];\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML += '';\n }\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS$1 + ' ' + SPINNER_CLASS$1 });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS$1)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = wrapperData;\n }\n else {\n wrapperType.innerText = SanitizeHtmlHelper.sanitize(wrapperData);\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER$1);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER$1\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) >= overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) >= overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) < overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER$1) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER$1);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER$1);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-describedby', this.delimiterWrapper.id);\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n \n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n \n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS$1, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER$1,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-describedby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate$5([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate$5([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate$5([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate$5([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$5([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate$5([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate$5([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate$5([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate$5([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate$5([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate$5([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$5([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate$5([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate$5([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate$5([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate$5([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate$5([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate$5([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate$5([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate$5([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate$5([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate$5([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate$5([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\n\nvar ICON = 'e-icons';\nvar CHECKBOXFRAME$1 = 'e-frame';\nvar CHECK$1 = 'e-check';\nvar CHECKBOXWRAP$1 = 'e-checkbox-wrapper';\nvar INDETERMINATE = 'e-stop';\nvar checkAllParent = 'e-selectall-parent';\nvar searchBackIcon = 'e-input-group-icon e-back-icon e-icons';\nvar filterBarClearIcon = 'e-input-group-icon e-clear-icon e-icons';\nvar filterInput = 'e-input-filter';\nvar filterParent = 'e-filter-parent';\nvar mobileFilter = 'e-ddl-device-filter';\nvar clearIcon = 'e-clear-icon';\nvar popupFullScreen = 'e-popup-full-page';\nvar device = 'e-ddl-device';\nvar FOCUS$1 = 'e-input-focus';\n/**\n * The Multiselect enable CheckBoxSelection call this inject module.\n */\nvar CheckBoxSelection = /** @__PURE__ @class */ (function () {\n function CheckBoxSelection(parent) {\n this.activeLi = [];\n this.activeEle = [];\n this.parent = parent;\n this.removeEventListener();\n this.addEventListener();\n }\n CheckBoxSelection.prototype.getModuleName = function () {\n return 'CheckBoxSelection';\n };\n CheckBoxSelection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on('updatelist', this.listSelection, this);\n this.parent.on('listoption', this.listOption, this);\n this.parent.on('selectAll', this.setSelectAll, this);\n this.parent.on('checkSelectAll', this.checkSelectAll, this);\n this.parent.on('searchBox', this.setSearchBox, this);\n this.parent.on('blur', this.onBlurHandler, this);\n this.parent.on('targetElement', this.targetElement, this);\n this.parent.on('deviceSearchBox', this.setDeviceSearchBox, this);\n this.parent.on('inputFocus', this.getFocus, this);\n this.parent.on('reOrder', this.setReorder, this);\n this.parent.on('activeList', this.getActiveList, this);\n this.parent.on('selectAllText', this.setLocale, this);\n this.parent.on('filterBarPlaceholder', this.setPlaceholder, this);\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n this.parent.on('addItem', this.checboxCreate, this);\n this.parent.on('popupFullScreen', this.setPopupFullScreen, this);\n };\n CheckBoxSelection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('updatelist', this.listSelection);\n this.parent.off('listoption', this.listOption);\n this.parent.off('selectAll', this.setSelectAll);\n this.parent.off('checkSelectAll', this.checkSelectAll);\n this.parent.off('searchBox', this.setSearchBox);\n this.parent.off('blur', this.onBlurHandler);\n this.parent.off('targetElement', this.targetElement);\n this.parent.off('deviceSearchBox', this.setDeviceSearchBox);\n this.parent.off('inputFocus', this.getFocus);\n this.parent.off('reOrder', this.setReorder);\n this.parent.off('activeList', this.getActiveList);\n this.parent.off('selectAllText', this.setLocale);\n this.parent.off('filterBarPlaceholder', this.setPlaceholder);\n this.parent.off('addItem', this.checboxCreate);\n this.parent.off('popupFullScreen', this.setPopupFullScreen);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.listOption = function (args) {\n var _this = this;\n if (isNullOrUndefined(this.parent.listCurrentOptions.itemCreated)) {\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n };\n }\n else {\n var itemCreated_1 = this.parent.listCurrentOptions.itemCreated;\n this.parent.listCurrentOptions.itemCreated = function (e) {\n _this.checboxCreate(e);\n itemCreated_1.apply(_this, [e]);\n };\n }\n };\n CheckBoxSelection.prototype.setPlaceholder = function (props) {\n Input.setPlaceholder(props.filterBarPlaceholder, this.filterInput);\n };\n CheckBoxSelection.prototype.checboxCreate = function (e) {\n var item;\n if (!isNullOrUndefined(e.item)) {\n item = e.item;\n }\n else {\n item = e;\n }\n if (this.parent.enableGroupCheckBox || (item.className !== 'e-list-group-item '\n && item.className !== 'e-list-group-item')) {\n var checkboxEle = createCheckBox(this.parent.createElement, true);\n var icon = select('div.' + ICON, item);\n item.insertBefore(checkboxEle, item.childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n select('.' + CHECKBOXFRAME$1, checkboxEle);\n if (this.parent.enableGroupCheckBox) {\n this.parent.popupWrapper.classList.add('e-multiselect-group');\n }\n return item;\n }\n else {\n return item;\n }\n };\n CheckBoxSelection.prototype.setSelectAll = function () {\n if (this.parent.showSelectAll) {\n if (isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent = this.parent.createElement('div', {\n className: checkAllParent\n });\n this.selectAllSpan = this.parent.createElement('span', {\n className: 'e-all-text'\n });\n this.selectAllSpan.textContent = '';\n this.checkAllParent.appendChild(this.selectAllSpan);\n this.setLocale();\n this.checboxCreate(this.checkAllParent);\n if (this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n append([this.checkAllParent], this.parent.filterParent);\n }\n else {\n append([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n if (!this.parent.headerTemplate) {\n if (!isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent.parentNode.insertBefore(this.checkAllParent, this.parent.filterParent.nextSibling);\n }\n else {\n prepend([this.checkAllParent], this.parent.popupWrapper);\n }\n }\n EventHandler.add(this.checkAllParent, 'mousedown', this.clickHandler, this);\n }\n if (this.parent.list.classList.contains('e-nodata') || (this.parent.listData && this.parent.listData.length <= 1 &&\n !(this.parent.isDynamicDataChange)) || (this.parent.isDynamicDataChange &&\n this.parent.listData && this.parent.listData.length <= 1)) {\n this.checkAllParent.style.display = 'none';\n }\n else {\n this.checkAllParent.style.display = 'block';\n }\n this.parent.selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n else if (!isNullOrUndefined(this.checkAllParent)) {\n this.checkAllParent.parentElement.removeChild(this.checkAllParent);\n this.checkAllParent = null;\n }\n };\n CheckBoxSelection.prototype.destroy = function () {\n this.removeEventListener();\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.checkAllParent = null;\n this.clearIconElement = null;\n this.filterInput = null;\n this.filterInputObj = null;\n this.checkWrapper = null;\n this.selectAllSpan = null;\n };\n CheckBoxSelection.prototype.listSelection = function (args) {\n var target;\n if (!isNullOrUndefined(args.e)) {\n var frameElm = args.li.querySelector('.e-checkbox-wrapper .e-frame');\n target = !isNullOrUndefined(args.e.target) ?\n (args.e.target.classList.contains('e-frame')\n && (!this.parent.showSelectAll\n || (this.checkAllParent && !this.checkAllParent.contains(args.e.target)))) ?\n args.e.target : args.li.querySelector('.e-checkbox-wrapper').childNodes[1]\n : args.li.querySelector('.e-checkbox-wrapper').childNodes[1];\n }\n else {\n var checkboxWrapper = args.li.querySelector('.e-checkbox-wrapper');\n target = checkboxWrapper ? checkboxWrapper.childNodes[1] : args.li.lastElementChild.childNodes[1];\n }\n if (this.parent.itemTemplate || this.parent.enableGroupCheckBox) {\n target = args.li.firstElementChild.childNodes[1];\n }\n if (!isNullOrUndefined(target)) {\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP$1);\n }\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME$1, this.checkWrapper);\n var selectAll$$1 = false;\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK$1), args.li, args.e, selectAll$$1);\n }\n };\n CheckBoxSelection.prototype.validateCheckNode = function (checkWrap, isCheck, li, e, selectAll$$1) {\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true, selectAll$$1);\n };\n CheckBoxSelection.prototype.clickHandler = function (e) {\n var target;\n if (e.currentTarget.classList.contains(this.checkAllParent.className)) {\n target = e.currentTarget.firstElementChild.lastElementChild;\n }\n else {\n target = e.currentTarget;\n }\n this.checkWrapper = closest(target, '.' + CHECKBOXWRAP$1);\n var selectAll$$1 = true;\n if (!isNullOrUndefined(this.checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME$1, this.checkWrapper);\n this.validateCheckNode(this.checkWrapper, checkElement.classList.contains(CHECK$1), null, e, selectAll$$1);\n }\n e.preventDefault();\n };\n CheckBoxSelection.prototype.changeState = function (wrapper, state, e, isPrevent, selectAll$$1) {\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME$1)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK$1)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK$1);\n if (selectAll$$1) {\n this.parent.selectAllItems(true, e);\n this.setLocale(true);\n }\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK$1) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK$1, INDETERMINATE]);\n if (selectAll$$1) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n else if (state === 'indeterminate' && !(frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK$1]);\n frameSpan.classList.add(INDETERMINATE);\n if (selectAll$$1) {\n this.parent.selectAllItems(false, e);\n this.setLocale();\n }\n }\n };\n CheckBoxSelection.prototype.setSearchBox = function (args) {\n if (isNullOrUndefined(this.parent.filterParent)) {\n this.parent.filterParent = this.parent.createElement('span', {\n className: filterParent\n });\n this.filterInput = this.parent.createElement('input', {\n attrs: { type: 'text' },\n className: filterInput\n });\n this.parent.element.parentNode.insertBefore(this.filterInput, this.parent.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n this.parent.mobFilter = false;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ? [searchBackIcon, filterBarClearIcon] : [filterBarClearIcon],\n properties: { placeholder: this.parent.filterBarPlaceholder }\n }, this.parent.createElement);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n if (this.parent.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.parent.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], this.parent.filterParent);\n prepend([this.parent.filterParent], args.popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'mousedown', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n EventHandler.add(this.filterInput, 'input', this.parent.onInput, this.parent);\n EventHandler.add(this.filterInput, 'keyup', this.parent.keyUp, this.parent);\n EventHandler.add(this.filterInput, 'keydown', this.parent.onKeyDown, this.parent);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.parent.pasteHandler, this.parent);\n this.parent.searchBoxHeight = (this.filterInputObj.container.parentElement).getBoundingClientRect().height;\n return this.filterInputObj;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.clickOnBackIcon = function (e) {\n this.parent.hidePopup();\n removeClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.inputElement.focus();\n };\n CheckBoxSelection.prototype.clearText = function (e) {\n this.parent.targetInputElement.value = '';\n if (this.parent.allowFiltering && this.parent.targetInputElement.value === '') {\n this.parent.search(null);\n }\n this.parent.refreshPopup();\n this.parent.refreshListItems(null);\n this.clearIconElement.style.visibility = 'hidden';\n this.filterInput.focus();\n this.setReorder(e);\n e.preventDefault();\n };\n CheckBoxSelection.prototype.setDeviceSearchBox = function () {\n this.parent.popupObj.element.classList.add(device);\n this.parent.popupObj.element.classList.add(mobileFilter);\n this.parent.popupObj.position = { X: 0, Y: 0 };\n this.parent.popupObj.dataBind();\n this.setSearchBoxPosition();\n this.backIconElement = this.filterInputObj.container.querySelector('.e-back-icon');\n this.clearIconElement = this.filterInputObj.container.querySelector('.' + clearIcon);\n this.clearIconElement.style.visibility = 'hidden';\n EventHandler.add(this.backIconElement, 'click', this.clickOnBackIcon, this);\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n };\n CheckBoxSelection.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n var selectAllHeight = 0;\n if (this.checkAllParent) {\n selectAllHeight = this.checkAllParent.getBoundingClientRect().height;\n }\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n this.parent.list.style.maxHeight = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n this.parent.list.style.height = (window.innerHeight - searchBoxHeight - selectAllHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n CheckBoxSelection.prototype.setPopupFullScreen = function () {\n attributes(this.parent.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, this.parent.popupObj.element], popupFullScreen);\n this.parent.popupObj.element.style.maxHeight = '100%';\n this.parent.popupObj.element.style.width = '100%';\n };\n CheckBoxSelection.prototype.targetElement = function () {\n if (!isNullOrUndefined(this.clearIconElement)) {\n this.parent.targetInputElement = this.filterInput;\n this.clearIconElement.style.visibility = this.parent.targetInputElement.value === '' ? 'hidden' : 'visible';\n }\n return this.parent.targetInputElement.value;\n };\n CheckBoxSelection.prototype.onBlurHandler = function (e) {\n if (!this.parent.element.classList.contains('e-listbox')) {\n var target = void 0;\n if (this.parent.keyAction) {\n return;\n }\n if (Browser.isIE) {\n target = !isNullOrUndefined(e) && e.target;\n }\n if (!Browser.isIE) {\n target = !isNullOrUndefined(e) && e.relatedTarget;\n }\n // eslint-disable-next-line max-len\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) && this.parent.popupObj.element.contains(target)\n && !Browser.isIE && this.filterInput) {\n this.filterInput.focus();\n return;\n }\n if (this.parent.scrollFocusStatus && this.filterInput) {\n e.preventDefault();\n this.filterInput.focus();\n this.parent.scrollFocusStatus = false;\n return;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element)\n && !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.updateValueState(e, this.parent.value, this.parent.tempValues);\n this.parent.dispatchEvent(this.parent.hiddenElement, 'change');\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close')) {\n this.parent.inputFocus = false;\n this.parent.overAllWrapper.classList.remove(FOCUS$1);\n this.parent.trigger('blur');\n this.parent.focused = true;\n }\n if (this.parent.popupObj && document.body.contains(this.parent.popupObj.element) &&\n !this.parent.popupObj.element.classList.contains('e-popup-close') && !Browser.isDevice) {\n this.parent.hidePopup();\n }\n }\n };\n CheckBoxSelection.prototype.onDocumentClick = function (e) {\n if (this.parent.getLocaleName() !== 'listbox') {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]')) {\n if (!(this.filterInput && this.filterInput.value !== '')) {\n e.preventDefault();\n }\n }\n if (!(!isNullOrUndefined(this.parent.popupObj) && closest(target, '[id=\"' + this.parent.popupObj.element.id + '\"]'))\n && !isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target)) {\n if (this.parent.overAllWrapper.classList.contains(dropDownBaseClasses.focus) || this.parent.isPopupOpen()) {\n this.parent.inputFocus = false;\n this.parent.scrollFocusStatus = false;\n this.parent.hidePopup();\n this.parent.onBlurHandler(e, true);\n this.parent.focused = true;\n }\n }\n else {\n this.parent.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') &&\n (document.activeElement === this.filterInput);\n }\n if (!isNullOrUndefined(this.parent.overAllWrapper) && !this.parent.overAllWrapper.contains(e.target) && this.parent.overAllWrapper.classList.contains('e-input-focus') &&\n !this.parent.isPopupOpen()) {\n if (Browser.isIE) {\n this.parent.onBlurHandler();\n }\n else {\n this.parent.onBlurHandler(e);\n }\n }\n if (this.filterInput === target) {\n this.filterInput.focus();\n }\n }\n };\n CheckBoxSelection.prototype.getFocus = function (e) {\n this.parent.overAllWrapper.classList.remove(FOCUS$1);\n if (this.parent.keyAction && e.value !== 'clear' && e.value !== 'focus') {\n this.parent.keyAction = false;\n return;\n }\n if (e.value === 'focus') {\n this.filterInput.focus();\n this.parent.removeFocus();\n EventHandler.remove(this.parent.list, 'keydown', this.parent.onKeyDown);\n }\n if (e.value === 'clear') {\n this.filterInput.value = '';\n this.clearIconElement.style.visibility = 'hidden';\n }\n };\n CheckBoxSelection.prototype.checkSelectAll = function (e) {\n if (e.value === 'check') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale(true);\n }\n if (e.value === 'uncheck') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n if (e.value === 'indeterminate') {\n this.changeState(this.checkAllParent, e.value, null, null, false);\n this.setLocale();\n }\n };\n CheckBoxSelection.prototype.setLocale = function (unSelect) {\n if (this.parent.selectAllText !== 'Select All' || this.parent.unSelectAllText !== 'Unselect All') {\n var template = unSelect ? this.parent.unSelectAllText : this.parent.selectAllText;\n this.selectAllSpan.textContent = '';\n var compiledString = compile(template);\n var templateName = unSelect ? 'unSelectAllText' : 'selectAllText';\n for (var _i = 0, _a = compiledString({}, this.parent, templateName, null, !this.parent.isStringTemplate); _i < _a.length; _i++) {\n var item = _a[_i];\n this.selectAllSpan.textContent = item.textContent;\n }\n }\n else {\n var l10nLocale = { selectAllText: 'Select All', unSelectAllText: 'Unselect All' };\n var l10n = new L10n(this.parent.getLocaleName(), {}, this.parent.locale);\n if (l10n.getConstant('selectAllText') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.parent.locale);\n }\n this.selectAllSpan.textContent = unSelect ? l10n.getConstant('unSelectAllText') : l10n.getConstant('selectAllText');\n }\n };\n CheckBoxSelection.prototype.getActiveList = function (args) {\n if (args.li.classList.contains('e-active')) {\n this.activeLi.push(args.li.cloneNode(true));\n }\n else {\n this.activeLi.splice(args.index, 1);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CheckBoxSelection.prototype.setReorder = function (args) {\n if (this.parent.enableSelectionOrder && !isNullOrUndefined(this.parent.value)) {\n var activeLiCount = this.parent.ulElement.querySelectorAll('li.e-active').length;\n var remLi = void 0;\n var ulEle = this.parent.createElement('ul', {\n className: 'e-list-parent e-ul e-reorder'\n });\n if (activeLiCount > 0) {\n append(this.parent.ulElement.querySelectorAll('li.e-active'), ulEle);\n remLi = this.parent.ulElement.querySelectorAll('li.e-active');\n addClass(remLi, 'e-reorder-hide');\n prepend([ulEle], this.parent.list);\n }\n this.parent.focusAtFirstListItem();\n }\n };\n return CheckBoxSelection;\n}());\n\n/**\n * export all modules from current location\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n/**\n * Defines the Selection settings of List Box.\n */\nvar SelectionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('Multiple')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate$6([\n Property(false)\n ], SelectionSettings.prototype, \"showCheckbox\", void 0);\n __decorate$6([\n Property(false)\n ], SelectionSettings.prototype, \"showSelectAll\", void 0);\n __decorate$6([\n Property('Left')\n ], SelectionSettings.prototype, \"checkboxPosition\", void 0);\n return SelectionSettings;\n}(ChildProperty));\n/**\n * Defines the toolbar settings of List Box.\n */\nvar ToolbarSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property([])\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate$6([\n Property('Right')\n ], ToolbarSettings.prototype, \"position\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\n/**\n * The ListBox is a graphical user interface component used to display a list of items.\n * Users can select one or more items in the list using a checkbox or by keyboard selection.\n * It supports sorting, grouping, reordering and drag and drop of items.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ListBox = /** @__PURE__ @class */ (function (_super) {\n __extends$6(ListBox, _super);\n /**\n * Constructor for creating the ListBox component.\n *\n * @param {ListBoxModel} options - Specifies ListBox model\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function ListBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isValidKey = false;\n _this.isDataSourceUpdate = false;\n _this.keyDownStatus = false;\n return _this;\n }\n ListBox_1 = ListBox;\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}.\n * @private\n */\n ListBox.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Build and render the component.\n *\n * @private\n * @returns {void}\n */\n ListBox.prototype.render = function () {\n this.inputString = '';\n this.initLoad = true;\n this.isCustomFiltering = false;\n this.initialSelectedOptions = this.value;\n _super.prototype.render.call(this);\n this.setEnabled();\n this.renderComplete();\n };\n ListBox.prototype.initWrapper = function () {\n var hiddenSelect = this.createElement('select', { className: 'e-hidden-select', attrs: { 'multiple': '' } });\n hiddenSelect.style.visibility = 'hidden';\n this.list.classList.add('e-listbox-wrapper');\n if (this.itemTemplate) {\n this.list.classList.add('e-list-template');\n }\n this.list.classList.add('e-wrapper');\n this.list.classList.add('e-lib');\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.setAttribute('tabindex', '0');\n if (this.initLoad) {\n this.element.appendChild(this.list);\n }\n }\n else {\n if (this.initLoad) {\n this.element.parentElement.insertBefore(this.list, this.element);\n }\n this.list.insertBefore(this.element, this.list.firstChild);\n this.element.style.display = 'none';\n }\n this.list.insertBefore(hiddenSelect, this.list.firstChild);\n if (this.list.getElementsByClassName('e-list-item')[0]) {\n this.list.getElementsByClassName('e-list-item')[0].classList.remove(dropDownBaseClasses.focus);\n }\n if (this.itemTemplate) {\n this.renderReactTemplates();\n }\n removeClass([this.list], [dropDownBaseClasses.content, dropDownBaseClasses.root]);\n this.validationAttribute(this.element, hiddenSelect);\n this.list.setAttribute('role', 'listbox');\n attributes(this.list, { 'role': 'listbox', 'aria-label': 'listbox', 'aria-multiselectable': this.selectionSettings.mode === 'Multiple' ? 'true' : 'false' });\n this.updateSelectionSettings();\n };\n ListBox.prototype.updateSelectionSettings = function () {\n if (this.selectionSettings.showCheckbox && this.selectionSettings.showSelectAll && this.liCollections.length) {\n var l10nSelect = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nSelect.getConstant('selectAllText');\n this.unSelectAllText = l10nSelect.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n }\n };\n ListBox.prototype.initDraggable = function () {\n var _this = this;\n if (this.ulElement) {\n this.ulElement.id = this.element.id + '_parent';\n }\n if (this.allowDragAndDrop) {\n new Sortable(this.ulElement, {\n scope: this.scope,\n itemClass: 'e-list-item',\n dragStart: this.triggerDragStart.bind(this),\n drag: this.triggerDrag.bind(this),\n beforeDrop: this.beforeDragEnd.bind(this),\n drop: this.dragEnd.bind(this),\n placeHolder: function () { return _this.createElement('span', { className: 'e-placeholder' }); },\n helper: function (e) {\n var wrapper = _this.list.cloneNode();\n var ele = e.sender.cloneNode(true);\n wrapper.appendChild(ele);\n var refEle = _this.getItems()[0];\n wrapper.style.width = refEle.offsetWidth + 'px';\n wrapper.style.height = refEle.offsetHeight + 'px';\n if ((_this.value && _this.value.length) > 1 && _this.isSelected(ele)) {\n ele.appendChild(_this.createElement('span', {\n className: 'e-list-badge', innerHTML: _this.value.length + ''\n }));\n }\n wrapper.style.zIndex = getZindexPartial(_this.element) + '';\n return wrapper;\n }\n });\n }\n };\n ListBox.prototype.updateActionCompleteData = function (li, item, index) {\n this.jsonData.splice(index, 0, item);\n };\n ListBox.prototype.initToolbar = function () {\n var pos = this.toolbarSettings.position;\n var prevScope = this.element.getAttribute('data-value');\n if (this.toolbarSettings.items.length) {\n var toolElem = this.createElement('div', { className: 'e-listbox-tool', attrs: { 'role': 'toolbar' } });\n var wrapper = this.createElement('div', {\n className: 'e-listboxtool-wrapper e-lib e-' + pos.toLowerCase()\n });\n this.list.parentElement.insertBefore(wrapper, this.list);\n wrapper.appendChild(pos === 'Right' ? this.list : toolElem);\n wrapper.appendChild(pos === 'Right' ? toolElem : this.list);\n this.createButtons(toolElem);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.scope) {\n document.querySelector(this.scope).setAttribute('data-value', this.element.id);\n }\n else {\n this.updateToolBarState();\n }\n }\n var scope = this.element.getAttribute('data-value');\n if (prevScope && scope && (prevScope !== scope)) {\n this.tBListBox = getComponent(document.getElementById(prevScope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n else if (scope) {\n this.tBListBox = getComponent(document.getElementById(scope), this.getModuleName());\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.createButtons = function (toolElem) {\n var _this = this;\n var btn;\n var ele;\n var title;\n var l10n = new L10n(this.getModuleName(), {\n moveUp: 'Move Up', moveDown: 'Move Down', moveTo: 'Move To',\n moveFrom: 'Move From', moveAllTo: 'Move All To', moveAllFrom: 'Move All From'\n }, this.locale);\n this.toolbarSettings.items.forEach(function (value) {\n title = l10n.getConstant(value);\n ele = _this.createElement('button', {\n attrs: {\n 'type': 'button',\n 'data-value': value,\n 'title': title,\n 'aria-label': title\n }\n });\n toolElem.appendChild(ele);\n btn = new Button({ iconCss: 'e-icons e-' + value.toLowerCase() }, ele);\n btn.createElement = _this.createElement;\n });\n };\n ListBox.prototype.validationAttribute = function (input, hiddenSelect) {\n _super.prototype.validationAttribute.call(this, input, hiddenSelect);\n hiddenSelect.required = input.required;\n input.required = false;\n };\n ListBox.prototype.setHeight = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n ele.style.height = formatUnit(this.height);\n if (this.allowFiltering && this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n else {\n removeClass([this.list], 'e-filter-list');\n }\n };\n ListBox.prototype.setCssClass = function () {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.cssClass) {\n addClass([wrap], this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n addClass([this.list], 'e-rtl');\n }\n };\n ListBox.prototype.setEnable = function () {\n var ele = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n if (this.enabled) {\n removeClass([ele], cssClass.disabled);\n }\n else {\n addClass([ele], cssClass.disabled);\n }\n };\n ListBox.prototype.showSpinner = function () {\n if (!this.spinner) {\n this.spinner = this.createElement('div', { className: 'e-listbox-wrapper' });\n }\n this.spinner.style.height = formatUnit(this.height);\n this.element.parentElement.insertBefore(this.spinner, this.element.nextSibling);\n createSpinner({ target: this.spinner }, this.createElement);\n showSpinner(this.spinner);\n };\n ListBox.prototype.hideSpinner = function () {\n if (this.spinner.querySelector('.e-spinner-pane')) {\n hideSpinner(this.spinner);\n }\n if (this.spinner.parentElement) {\n detach(this.spinner);\n }\n };\n ListBox.prototype.onInput = function () {\n this.isDataSourceUpdate = false;\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n this.refreshClearIcon();\n };\n ListBox.prototype.clearText = function () {\n this.filterInput.value = '';\n this.refreshClearIcon();\n var event = document.createEvent('KeyboardEvent');\n this.isValidKey = true;\n this.KeyUp(event);\n };\n ListBox.prototype.refreshClearIcon = function () {\n if (this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n };\n ListBox.prototype.onActionComplete = function (ulElement, list, e) {\n var searchEle;\n if (this.allowFiltering && this.list.getElementsByClassName('e-filter-parent')[0]) {\n searchEle = this.list.getElementsByClassName('e-filter-parent')[0].cloneNode(true);\n }\n if (list.length === 0) {\n var noRecElem = ulElement.childNodes[0];\n if (noRecElem) {\n ulElement.removeChild(noRecElem);\n }\n }\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.allowFiltering && !isNullOrUndefined(searchEle)) {\n this.list.insertBefore(searchEle, this.list.firstElementChild);\n this.filterParent = this.list.getElementsByClassName('e-filter-parent')[0];\n this.filterWireEvents(searchEle);\n }\n this.initWrapper();\n this.setSelection();\n this.initDraggable();\n this.mainList = this.ulElement;\n if (this.initLoad) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.initToolbarAndStyles();\n this.wireEvents();\n if (this.showCheckbox) {\n this.setCheckboxPosition();\n }\n if (this.allowFiltering) {\n this.setFiltering();\n }\n }\n else {\n if (this.isDataSourceUpdate) {\n this.jsonData = [];\n extend(this.jsonData, list, []);\n this.isDataSourceUpdate = false;\n }\n if (this.allowFiltering) {\n var filterElem = this.list.getElementsByClassName('e-input-filter')[0];\n var txtLength = this.filterInput.value.length;\n filterElem.selectionStart = txtLength;\n filterElem.selectionEnd = txtLength;\n filterElem.focus();\n }\n }\n if (this.toolbarSettings.items.length && this.scope && this.scope.indexOf('#') > -1 && !isNullOrUndefined(e)) {\n var scope = this.scope.replace('#', '');\n var scopedLB = getComponent(document.getElementById(scope), this.getModuleName());\n scopedLB.initToolbar();\n }\n this.initLoad = false;\n };\n ListBox.prototype.initToolbarAndStyles = function () {\n this.initToolbar();\n this.setCssClass();\n this.setEnable();\n this.setHeight();\n };\n ListBox.prototype.triggerDragStart = function (args) {\n var _this = this;\n var badge;\n args = extend(this.getDragArgs(args), { dragSelected: true });\n if (Browser.isIos) {\n this.list.style.overflow = 'hidden';\n }\n this.trigger('dragStart', args, function (dragEventArgs) {\n _this.allowDragAll = dragEventArgs.dragSelected;\n if (!_this.allowDragAll) {\n badge = _this.ulElement.getElementsByClassName('e-list-badge')[0];\n if (badge) {\n detach(badge);\n }\n }\n });\n };\n ListBox.prototype.triggerDrag = function (args) {\n var scrollParent;\n var boundRect;\n var scrollMoved = 36;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var event = args.event;\n var wrapper;\n if (args.target && (args.target.classList.contains('e-listbox-wrapper') || args.target.classList.contains('e-list-item')\n || args.target.classList.contains('e-filter-parent') || args.target.classList.contains('e-input-group'))) {\n if (args.target.classList.contains('e-list-item') || args.target.classList.contains('e-filter-parent')\n || args.target.classList.contains('e-input-group')) {\n wrapper = args.target.closest('.e-listbox-wrapper');\n }\n else {\n wrapper = args.target;\n }\n if (this.allowFiltering) {\n scrollParent = wrapper.querySelector('.e-list-parent');\n }\n else {\n scrollParent = wrapper;\n }\n boundRect = scrollParent.getBoundingClientRect();\n if ((boundRect.y + scrollParent.offsetHeight) - (event.pageY + scrollMoved) < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop + 10;\n }\n else if ((event.pageY - scrollMoved) - boundRect.y < 1) {\n scrollParent.scrollTop = scrollParent.scrollTop - 10;\n }\n }\n if (args.target === null) {\n return;\n }\n this.trigger('drag', this.getDragArgs(args));\n var listObj = this.getComponent(args.target);\n if (listObj && listObj.listData.length === 0) {\n var noRecElem = listObj.ulElement.childNodes[0];\n if (noRecElem) {\n listObj.ulElement.removeChild(noRecElem);\n }\n }\n };\n ListBox.prototype.beforeDragEnd = function (args) {\n this.dragValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n if (this.value.indexOf(this.dragValue) > -1) {\n args.items = this.getDataByValues(this.value);\n }\n else {\n args.items = this.getDataByValues([this.dragValue]);\n }\n this.trigger('beforeDrop', args);\n };\n ListBox.prototype.dragEnd = function (args) {\n var _this = this;\n var listData;\n var liColl;\n var jsonData;\n var droppedData;\n var selectedOptions;\n var sortedData;\n var dropValue = this.getFormattedValue(args.droppedElement.getAttribute('data-value'));\n var listObj = this.getComponent(args.droppedElement);\n var getArgs = this.getDragArgs({ target: args.droppedElement }, true);\n var sourceArgs = { previousData: this.dataSource };\n var destArgs = { previousData: listObj.dataSource };\n var dragArgs = extend({}, getArgs, { target: args.target, source: { previousData: this.dataSource },\n previousIndex: args.previousIndex, currentIndex: args.currentIndex });\n if (listObj !== this) {\n var sourceArgs1 = extend(sourceArgs, { currentData: this.listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1, destination: destArgs });\n }\n if (Browser.isIos) {\n this.list.style.overflow = '';\n }\n if (listObj === this) {\n var ul_1 = this.ulElement;\n listData = [].slice.call(this.listData);\n liColl = [].slice.call(this.liCollections);\n jsonData = [].slice.call(this.jsonData);\n sortedData = [].slice.call(this.sortedData);\n var toSortIdx_1 = args.currentIndex;\n var toIdx_1 = args.currentIndex = this.getCurIdx(this, args.currentIndex);\n var rIdx = listData.indexOf(this.getDataByValue(dropValue));\n var jsonIdx = jsonData.indexOf(this.getDataByValue(dropValue));\n var sIdx = sortedData.indexOf(this.getDataByValue(dropValue));\n listData.splice(toIdx_1, 0, listData.splice(rIdx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx, 1)[0]);\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(rIdx, 1)[0]);\n if (this.allowDragAll) {\n selectedOptions = this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 ? this.value : [dropValue];\n selectedOptions.forEach(function (value) {\n if (value !== dropValue) {\n var idx = listData.indexOf(_this.getDataByValue(value));\n var jsonIdx_1 = jsonData.indexOf(_this.getDataByValue(value));\n var sIdx_1 = sortedData.indexOf(_this.getDataByValue(value));\n if (idx > toIdx_1) {\n toIdx_1++;\n }\n jsonData.splice(toIdx_1, 0, jsonData.splice(jsonIdx_1, 1)[0]);\n listData.splice(toIdx_1, 0, listData.splice(idx, 1)[0]);\n sortedData.splice(toSortIdx_1, 0, sortedData.splice(sIdx_1, 1)[0]);\n liColl.splice(toIdx_1, 0, liColl.splice(idx, 1)[0]);\n ul_1.insertBefore(_this.getItems()[_this.getIndexByValue(value)], ul_1.getElementsByClassName('e-placeholder')[0]);\n }\n });\n }\n this.listData = listData;\n this.jsonData = jsonData;\n this.sortedData = sortedData;\n this.liCollections = liColl;\n }\n else {\n var li_1;\n var fLiColl_1 = [].slice.call(this.liCollections);\n var currIdx_1 = args.currentIndex = this.getCurIdx(listObj, args.currentIndex);\n var ul_2 = listObj.ulElement;\n listData = [].slice.call(listObj.listData);\n liColl = [].slice.call(listObj.liCollections);\n jsonData = [].slice.call(listObj.jsonData);\n sortedData = [].slice.call(listObj.sortedData);\n selectedOptions = (this.value && Array.prototype.indexOf.call(this.value, dropValue) > -1 && this.allowDragAll)\n ? this.value : [dropValue];\n var fListData_1 = [].slice.call(this.listData);\n var fSortData_1 = [].slice.call(this.sortedData);\n selectedOptions.forEach(function (value, index) {\n droppedData = _this.getDataByValue(value);\n var srcIdx = _this.listData.indexOf(droppedData);\n var jsonSrcIdx = _this.jsonData.indexOf(droppedData);\n var sortIdx = _this.sortedData.indexOf(droppedData);\n fListData_1.splice(srcIdx, 1);\n _this.jsonData.splice(jsonSrcIdx, 1);\n fSortData_1.splice(sortIdx, 1);\n _this.listData = fListData_1;\n _this.sortedData = fSortData_1;\n var destIdx = value === dropValue ? args.currentIndex : currIdx_1;\n listData.splice(destIdx, 0, droppedData);\n jsonData.splice(destIdx, 0, droppedData);\n sortedData.splice(destIdx, 0, droppedData);\n liColl.splice(destIdx, 0, fLiColl_1.splice(srcIdx, 1)[0]);\n if (!value) {\n var liCollElem_1 = _this.getItems();\n for (var i = 0; i < liCollElem_1.length; i++) {\n if (liCollElem_1[i].getAttribute('data-value') === null && liCollElem_1[i].classList.contains('e-list-item')) {\n li_1 = liCollElem_1[i];\n break;\n }\n }\n }\n else {\n li_1 = _this.getItems()[_this.getIndexByValue(value)];\n }\n if (!li_1) {\n li_1 = args.helper;\n }\n _this.removeSelected(_this, value === dropValue ? [args.droppedElement] : [li_1]);\n ul_2.insertBefore(li_1, ul_2.getElementsByClassName('e-placeholder')[0]);\n currIdx_1++;\n });\n if (this.fields.groupBy) {\n var sourceElem = this.renderItems(this.listData, this.fields);\n this.updateListItems(sourceElem, this.ulElement);\n this.setSelection();\n }\n if (listObj.sortOrder !== 'None' || this.selectionSettings.showCheckbox\n !== listObj.selectionSettings.showCheckbox || listObj.fields.groupBy || listObj.itemTemplate || this.itemTemplate) {\n var sortable = getComponent(ul_2, 'sortable');\n var sourceElem = listObj.renderItems(listData, listObj.fields);\n listObj.updateListItems(sourceElem, ul_2);\n this.setSelection();\n if (sortable.placeHolderElement) {\n ul_2.appendChild(sortable.placeHolderElement);\n }\n ul_2.appendChild(args.helper);\n listObj.setSelection();\n }\n this.liCollections = fLiColl_1;\n listObj.liCollections = liColl;\n listObj.jsonData = extend([], [], jsonData, false);\n listObj.listData = extend([], [], listData, false);\n listObj.sortedData = extend([], [], sortedData, false);\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n }\n if (this === listObj) {\n var sourceArgs1 = extend(sourceArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { source: sourceArgs1 });\n }\n else {\n var dragArgs1 = extend(destArgs, { currentData: listData });\n dragArgs = extend(dragArgs, { destination: dragArgs1 });\n }\n this.trigger('drop', dragArgs);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var liCollElem = dragArgs.elements;\n if (liCollElem.length) {\n for (var i = 0; i < liCollElem.length; i++) {\n liCollElem[i].classList.remove('e-grabbed');\n }\n }\n };\n ListBox.prototype.updateListItems = function (sourceElem, destElem) {\n var i = 0;\n destElem.innerHTML = '';\n while (i < sourceElem.childNodes.length) {\n destElem.appendChild(sourceElem.childNodes[i]);\n }\n };\n ListBox.prototype.removeSelected = function (listObj, elems) {\n if (listObj.selectionSettings.showCheckbox) {\n elems.forEach(function (ele) { ele.getElementsByClassName('e-frame')[0].classList.remove('e-check'); });\n }\n else {\n removeClass(elems, cssClass.selected);\n }\n };\n ListBox.prototype.getCurIdx = function (listObj, idx) {\n if (listObj.fields.groupBy) {\n idx -= [].slice.call(listObj.ulElement.children).slice(0, idx)\n .filter(function (ele) { return ele.classList.contains(cssClass.group); }).length;\n }\n return idx;\n };\n ListBox.prototype.getComponent = function (li) {\n var listObj;\n var ele = (this.element.tagName === 'EJS-LISTBOX' ? closest(li, '.e-listbox')\n : closest(li, '.e-listbox-wrapper') && closest(li, '.e-listbox-wrapper').querySelector('.e-listbox'));\n if (ele) {\n listObj = getComponent(ele, this.getModuleName());\n }\n return listObj;\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n ListBox.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n ListBox.prototype.listOption = function (dataSource, fields) {\n this.listCurrentOptions = _super.prototype.listOption.call(this, dataSource, fields);\n this.listCurrentOptions = extend({}, this.listCurrentOptions, { itemCreated: this.triggerBeforeItemRender.bind(this) }, true);\n this.notify('listoption', { module: 'CheckBoxSelection' });\n return this.listCurrentOptions;\n };\n ListBox.prototype.triggerBeforeItemRender = function (e) {\n e.item.setAttribute('tabindex', '-1');\n this.trigger('beforeItemRender', { element: e.item, item: e.curData });\n };\n ListBox.prototype.requiredModules = function () {\n var modules = [];\n if (this.selectionSettings.showCheckbox) {\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * This method is used to enable or disable the items in the ListBox based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.enableItems = function (items, enable, isValue) {\n var _this = this;\n if (enable === void 0) { enable = true; }\n var li;\n items.forEach(function (item) {\n var text = item;\n li = _this.findListElement(_this.list, 'li', 'data-value', isValue ? text : _this.getValueByText(text));\n if (!li) {\n return;\n }\n if (enable) {\n removeClass([li], cssClass.disabled);\n li.removeAttribute('aria-disabled');\n }\n else {\n addClass([li], cssClass.disabled);\n li.setAttribute('aria-disabled', 'true');\n }\n });\n };\n /**\n * Based on the state parameter, specified list item will be selected/deselected.\n *\n * @param {string[]} items - Array of text value of the item.\n * @param {boolean} state - Set `true`/`false` to select/un select the list items.\n * @param {boolean} isValue - Set `true` if `items` parameter is a array of unique values.\n * @returns {void}\n */\n ListBox.prototype.selectItems = function (items, state, isValue) {\n if (state === void 0) { state = true; }\n this.setSelection(items, state, !isValue);\n this.updateSelectedOptions();\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n *\n * @param {boolean} state - Set `true`/`false` to select/un select the entire list items.\n * @returns {void}\n */\n ListBox.prototype.selectAll = function (state) {\n if (state === void 0) { state = true; }\n this.selectAllItems(state);\n };\n /**\n * Adds a new item to the list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the list.\n * @returns {void}.\n */\n ListBox.prototype.addItems = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItems = function (items, itemIndex) {\n this.removeItem(items, itemIndex);\n };\n /**\n * Removes a item from the list. By default, removed the last item in the list,\n * but you can remove based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to remove the item from the list.\n * @returns {void}.\n */\n ListBox.prototype.removeItem = function (items, itemIndex) {\n var liCollections = [];\n var liElement = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n if (items) {\n items = (items instanceof Array ? items : [items]);\n var fields = this.fields;\n var dataValue = void 0;\n var objValue = void 0;\n var dupData = [];\n var itemIdx = void 0;\n extend(dupData, [], this.jsonData);\n var removeIdxes = [];\n var removeLiIdxes = [];\n for (var j = 0; j < items.length; j++) {\n if (items[j] instanceof Object) {\n dataValue = getValue(fields.value, items[j]);\n }\n else {\n dataValue = items[j].toString();\n }\n for (var i = 0, len = dupData.length; i < len; i++) {\n if (dupData[i] instanceof Object) {\n objValue = getValue(fields.value, dupData[i]);\n }\n else {\n objValue = dupData[i].toString();\n }\n if (objValue === dataValue) {\n itemIdx = this.getIndexByValue(dataValue);\n var idx = itemIdx === i ? itemIdx : i;\n liCollections.push(liElement[idx]);\n removeIdxes.push(idx);\n removeLiIdxes.push(idx);\n }\n }\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.listData.splice(removeIdxes[k], 1);\n }\n for (var k = removeIdxes.length - 1; k >= 0; k--) {\n this.jsonData.splice(removeIdxes[k], 1);\n }\n for (var k = removeLiIdxes.length - 1; k >= 0; k--) {\n this.updateLiCollection(removeLiIdxes[k]);\n }\n }\n else {\n itemIndex = itemIndex ? itemIndex : 0;\n liCollections.push(liElement[itemIndex]);\n this.listData.splice(itemIndex, 1);\n this.jsonData.splice(itemIndex, 1);\n this.updateLiCollection(itemIndex);\n }\n for (var i = 0; i < liCollections.length; i++) {\n this.ulElement.removeChild(liCollections[i]);\n }\n if (this.listData.length === 0) {\n this.l10nUpdate();\n }\n this.value = [];\n this.updateToolBarState();\n };\n /**\n * Gets the array of data Object that matches the given array of values.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the array value of the list item.\n * @returns {object[]}.\n */\n ListBox.prototype.getDataByValues = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n data.push(this.getDataByValue(value[i]));\n }\n return data;\n };\n /**\n * Moves the given value(s) / selected value(s) upwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveUp = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(true, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) downwards.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value(s).\n * @returns {void}\n */\n ListBox.prototype.moveDown = function (value) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n this.moveUpDown(false, false, elem);\n };\n /**\n * Moves the given value(s) / selected value(s) to the given / default scoped ListBox.\n *\n * @param { string[] | number[] | boolean[] } value - Specifies the value or array value of the list item.\n * @param {number} index - Specifies the index.\n * @param {string} targetId - Specifies the target id.\n * @returns {void}\n */\n ListBox.prototype.moveTo = function (value, index, targetId) {\n var elem = (value) ? this.getElemByValue(value) : this.getSelectedItems();\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveData(this, tlistbox, false, elem, index);\n };\n /**\n * Moves all the values from one ListBox to the scoped ListBox.\n *\n * @param { string } targetId - Specifies the scoped ListBox ID.\n * @param { string } index - Specifies the index to where the items moved.\n * @returns {void}\n */\n ListBox.prototype.moveAllTo = function (targetId, index) {\n if (this.listData.length > 0) {\n var tlistbox = (targetId) ? getComponent(targetId, ListBox_1) : this.getScopedListBox();\n this.moveAllData(this, tlistbox, false, index);\n }\n };\n /* eslint-disable */\n /**\n * Gets the updated dataSource in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Updated DataSource.\n */\n /* eslint-enable */\n ListBox.prototype.getDataList = function () {\n return this.jsonData;\n };\n /* eslint-disable */\n /**\n * Returns the sorted Data in ListBox.\n *\n * @returns {{ [key: string]: Object }[] | string[] | boolean[] | number[]} - Sorted data\n */\n /* eslint-enable */\n ListBox.prototype.getSortedList = function () {\n var sortData;\n var tempData;\n sortData = tempData = this.sortedData;\n if (this.fields.groupBy) {\n sortData = [];\n for (var i = 0; i < tempData.length; i++) {\n if (tempData[i].isHeader) {\n continue;\n }\n sortData.push(tempData[i]);\n }\n }\n return sortData;\n };\n ListBox.prototype.getElemByValue = function (value) {\n var elem = [];\n for (var i = 0; i < value.length; i++) {\n elem.push(this.ulElement.querySelector('[data-value =\"' + value[i] + '\"]'));\n }\n return elem;\n };\n ListBox.prototype.updateLiCollection = function (index) {\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 1);\n this.liCollections = tempLi;\n };\n ListBox.prototype.selectAllItems = function (state, event) {\n var _this = this;\n [].slice.call(this.getItems()).forEach(function (li) {\n if (!li.classList.contains(cssClass.disabled)) {\n if (_this.selectionSettings.showCheckbox) {\n var ele = li.getElementsByClassName('e-check')[0];\n if ((!ele && state) || (ele && !state)) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n if (_this.maximumSelectionLength >= _this.list.querySelectorAll('.e-list-item span.e-check').length) {\n _this.checkMaxSelection();\n }\n }\n }\n else {\n if (state) {\n li.classList.add(cssClass.selected);\n }\n else {\n li.classList.remove(cssClass.selected);\n }\n }\n }\n });\n this.updateSelectedOptions();\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n var liEle = this.list.getElementsByTagName('li');\n var index = 0;\n if (state) {\n var _loop_1 = function () {\n var dataValue1 = this_1.getFormattedValue(liEle[index].getAttribute('data-value'));\n if (!this_1.value.some(function (e) { return e === dataValue1; })) {\n this_1.value.push(this_1.getFormattedValue(liEle[index].getAttribute('data-value')));\n }\n };\n var this_1 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_1();\n }\n }\n else {\n var _loop_2 = function () {\n var dataValue2 = this_2.getFormattedValue(liEle[index].getAttribute('data-value'));\n this_2.value = this_2.value.filter(function (e) { return e !== dataValue2; });\n };\n var this_2 = this;\n for (index = 0; index < liEle.length; index++) {\n _loop_2();\n }\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.triggerChange(this.getSelectedItems(), event);\n };\n ListBox.prototype.updateMainList = function () {\n var mainList = this.mainList.querySelectorAll('.e-list-item');\n var ulList = this.ulElement.querySelectorAll('.e-list-item');\n var mainCount = mainList.length;\n var ulEleCount = ulList.length;\n if (this.selectionSettings.showCheckbox || (document.querySelectorAll('ul').length > 1 || mainCount !== ulEleCount)) {\n var listindex = 0;\n var valueindex = 0;\n var count = 0;\n for (listindex; listindex < mainCount;) {\n if (this.value) {\n for (valueindex; valueindex < this.value.length; valueindex++) {\n if (mainList[listindex].getAttribute('data-value') === this.value[valueindex]) {\n count++;\n }\n }\n }\n if (!count && this.selectionSettings.showCheckbox) {\n mainList[listindex].getElementsByClassName('e-frame')[0].classList.remove('e-check');\n }\n if (document.querySelectorAll('ul').length > 1 && count && mainCount !== ulEleCount) {\n this.mainList.removeChild(this.mainList.getElementsByTagName('li')[listindex]);\n listindex = 0;\n }\n else {\n listindex++;\n }\n count = 0;\n valueindex = 0;\n }\n }\n };\n ListBox.prototype.wireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.add(this.list, 'click', this.clickHandler, this);\n EventHandler.add(wrapper, 'keydown', this.keyDownHandler, this);\n EventHandler.add(wrapper, 'focusout', this.focusOutHandler, this);\n this.wireToolbarEvent();\n if (this.selectionSettings.showCheckbox) {\n EventHandler.remove(document, 'mousedown', this.checkBoxSelectionModule.onDocumentClick);\n }\n if (this.fields.groupBy || this.element.querySelector('select>optgroup')) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler, this);\n }\n };\n ListBox.prototype.wireToolbarEvent = function () {\n if (this.toolbarSettings.items.length) {\n EventHandler.add(this.getToolElem(), 'click', this.toolbarClickHandler, this);\n }\n };\n ListBox.prototype.unwireEvents = function () {\n var form = closest(this.element, 'form');\n var wrapper = this.element.tagName === 'EJS-LISTBOX' ? this.element : this.list;\n EventHandler.remove(this.list, 'click', this.clickHandler);\n EventHandler.remove(wrapper, 'keydown', this.keyDownHandler);\n EventHandler.remove(wrapper, 'focusout', this.focusOutHandler);\n if (this.allowFiltering && this.clearFilterIconElem) {\n EventHandler.remove(this.clearFilterIconElem, 'click', this.clearText);\n }\n if (this.toolbarSettings.items.length) {\n EventHandler.remove(this.getToolElem(), 'click', this.toolbarClickHandler);\n }\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler);\n }\n };\n ListBox.prototype.clickHandler = function (e) {\n this.selectHandler(e);\n };\n ListBox.prototype.checkSelectAll = function () {\n var searchCount = 0;\n var liItems = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n for (var i = 0; i < liItems.length; i++) {\n if (!liItems[i].classList.contains('e-disabled')) {\n searchCount++;\n }\n }\n var len = this.getSelectedItems().length;\n if (this.showSelectAll && searchCount) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection',\n value: (searchCount === len) ? 'check' : (len === 0) ? 'uncheck' : 'indeterminate' });\n }\n };\n ListBox.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.allowFiltering) {\n var filterType = this.inputString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (dataType === null) {\n dataType = this.typeOfData(this.jsonData).typeof;\n }\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.inputString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query : this.query ? this.query : new Query();\n }\n return filterQuery;\n };\n ListBox.prototype.setFiltering = function () {\n var filterInputObj;\n if (this.initLoad || isNullOrUndefined(this.filterParent)) {\n this.filterParent = this.createElement('span', {\n className: listBoxClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: listBoxClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: [listBoxClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n append([filterInputObj.container], this.filterParent);\n prepend([this.filterParent], this.list);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'aria-label': 'search list item',\n 'autocomplete': 'off',\n 'autocorrect': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n if (this.height.toString().indexOf('%') < 0) {\n addClass([this.list], 'e-filter-list');\n }\n this.inputString = this.filterInput.value;\n this.filterWireEvents();\n return filterInputObj;\n }\n };\n ListBox.prototype.filterWireEvents = function (filterElem) {\n if (filterElem) {\n this.filterInput = filterElem.querySelector('.e-input-filter');\n }\n this.clearFilterIconElem = this.filterInput.parentElement.querySelector('.' + listBoxClasses.clearIcon);\n if (this.clearFilterIconElem) {\n EventHandler.add(this.clearFilterIconElem, 'click', this.clearText, this);\n if (!filterElem) {\n this.clearFilterIconElem.style.visibility = 'hidden';\n }\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.KeyUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onKeyDown, this);\n };\n ListBox.prototype.selectHandler = function (e, isKey) {\n var isSelect = true;\n var currSelIdx;\n var li = closest(e.target, '.' + 'e-list-item');\n var selectedLi = [li];\n if (li && li.parentElement) {\n currSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n if (!this.selectionSettings.showCheckbox) {\n if ((e.ctrlKey || e.metaKey || Browser.isDevice) && this.isSelected(li)) {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n isSelect = false;\n }\n else if (!(this.selectionSettings.mode === 'Multiple' && (e.ctrlKey || e.metaKey || Browser.isDevice))) {\n this.getSelectedItems().forEach(function (ele) {\n ele.removeAttribute('aria-selected');\n });\n removeClass(this.getSelectedItems(), cssClass.selected);\n }\n }\n else {\n isSelect = !li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n if (e.shiftKey && !this.selectionSettings.showCheckbox && this.selectionSettings.mode !== 'Single') {\n selectedLi = [].slice.call(li.parentElement.children)\n .slice(Math.min(currSelIdx, this.prevSelIdx), Math.max(currSelIdx, this.prevSelIdx) + 1)\n .filter(function (ele) { return ele.classList.contains('e-list-item'); });\n }\n else {\n this.prevSelIdx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (isSelect) {\n if (!this.selectionSettings.showCheckbox) {\n addClass(selectedLi, cssClass.selected);\n }\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'true');\n });\n this.list.setAttribute('aria-activedescendant', li.id);\n }\n else {\n selectedLi.forEach(function (ele) {\n ele.setAttribute('aria-selected', 'false');\n });\n }\n if (!isKey && (this.maximumSelectionLength > (this.value && this.value.length) || !isSelect) &&\n (this.maximumSelectionLength >= (this.value && this.value.length) || !isSelect) &&\n !(this.maximumSelectionLength < (this.value && this.value.length))) {\n this.notify('updatelist', { li: li, e: e, module: 'listbox' });\n }\n if (this.allowFiltering && !isKey) {\n var liDataValue_1 = this.getFormattedValue(li.getAttribute('data-value'));\n if (!isSelect) {\n this.value = this.value.filter(function (value1) {\n return value1 !== liDataValue_1;\n });\n }\n else {\n var values = [];\n extend(values, this.value);\n values.push(liDataValue_1);\n this.value = values;\n }\n if (document.querySelectorAll('ul').length < 2) {\n this.updateMainList();\n }\n }\n this.updateSelectedOptions();\n this.triggerChange(this.getSelectedItems(), e);\n this.checkMaxSelection();\n }\n };\n ListBox.prototype.triggerChange = function (selectedLis, event) {\n this.trigger('change', { elements: selectedLis, items: this.getDataByElements(selectedLis), value: this.value, event: event });\n };\n ListBox.prototype.getDataByElems = function (elems) {\n var data = [];\n for (var i = 0, len = elems.length; i < len; i++) {\n data.push(this.getDataByValue(this.getFormattedValue(elems[i].getAttribute('data-value'))));\n }\n return data;\n };\n ListBox.prototype.getDataByElements = function (elems) {\n var data = [];\n var value;\n var sIdx = 0;\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && item === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n for (var i = sIdx, len = elems.length; i < len; i++) {\n value = this.getFormattedValue(elems[i].getAttribute('data-value'));\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n sIdx = i;\n data.push(item);\n break;\n }\n }\n if (elems.length === data.length) {\n break;\n }\n }\n }\n return data;\n }\n return null;\n };\n ListBox.prototype.checkMaxSelection = function () {\n var limit = this.list.querySelectorAll('.e-list-item span.e-check').length;\n if (this.selectionSettings.showCheckbox) {\n var index = 0;\n var liCollElem = this.list.getElementsByClassName('e-list-item');\n for (index; index < liCollElem.length; index++) {\n if (!liCollElem[index].querySelector('.e-frame.e-check')) {\n if (limit === this.maximumSelectionLength) {\n liCollElem[index].classList.add('e-disable');\n }\n else if (liCollElem[index].classList.contains('e-disable')) {\n liCollElem[index].classList.remove('e-disable');\n }\n }\n }\n }\n };\n ListBox.prototype.toolbarClickHandler = function (e) {\n var btn = closest(e.target, 'button');\n if (btn) {\n this.toolbarAction = btn.getAttribute('data-value');\n if (btn.disabled) {\n return;\n }\n switch (this.toolbarAction) {\n case 'moveUp':\n this.moveUpDown(true);\n break;\n case 'moveDown':\n this.moveUpDown();\n break;\n case 'moveTo':\n this.moveItemTo();\n break;\n case 'moveFrom':\n this.moveItemFrom();\n break;\n case 'moveAllTo':\n this.moveAllItemTo();\n break;\n case 'moveAllFrom':\n this.moveAllItemFrom();\n break;\n default:\n this.trigger('actionBegin', { cancel: false, items: this.getDataByElems(this.getSelectedItems()),\n eventName: this.toolbarAction });\n break;\n }\n }\n };\n ListBox.prototype.moveUpDown = function (isUp, isKey, value) {\n var _this = this;\n var elems = this.getSelectedItems();\n if (value) {\n elems = value;\n }\n if (((isUp && this.isSelected(this.ulElement.firstElementChild))\n || (!isUp && this.isSelected(this.ulElement.lastElementChild))) && !value) {\n return;\n }\n var tempItems = this.getDataByElems(elems);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n this.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n (isUp ? elems : elems.reverse()).forEach(function (ele) {\n var jsonToIdx = Array.prototype.indexOf.call(_this.ulElement.querySelectorAll('.e-list-item'), ele);\n var idx = Array.prototype.indexOf.call(_this.ulElement.children, ele);\n moveTo(_this.ulElement, _this.ulElement, [idx], isUp ? idx - 1 : idx + 2);\n _this.changeData(idx, isUp ? idx - 1 : idx + 1, isUp ? jsonToIdx - 1 : jsonToIdx + 1, ele);\n });\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n elems[0].focus();\n if (!isKey && this.toolbarSettings.items.length) {\n this.getToolElem().querySelector('[data-value=' + (isUp ? 'moveUp' : 'moveDown') + ']').focus();\n }\n this.updateToolBarState();\n };\n ListBox.prototype.moveItemTo = function () {\n this.moveData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveItemFrom = function () {\n this.moveData(this.getScopedListBox(), this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBox} fListBox - Specifies the from listbox.\n * @param {ListBox} tListBox - Specifies the to listbox.\n * @param {boolean} isKey - Specifies the key.\n * @param {Element[]} value - Specifies the value.\n * @param {number} index - Specifies the index.\n * @returns {void}\n * @private\n */\n ListBox.prototype.moveData = function (fListBox, tListBox, isKey, value, index) {\n var idx = [];\n var dataIdx = [];\n var jsonIdx = [];\n var sortIdx = [];\n var listData = [].slice.call(fListBox.listData);\n var tListData = [].slice.call(tListBox.listData);\n var sortData = [].slice.call(fListBox.sortedData);\n var tSortData = [].slice.call(tListBox.sortedData);\n var fliCollections = [].slice.call(fListBox.liCollections);\n var dataLiIdx = [];\n var tliCollections = [].slice.call(tListBox.liCollections);\n var tempItems = [];\n var data = [];\n var elems = fListBox.getSelectedItems();\n if (value) {\n elems = value;\n }\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n fListBox.value = [];\n if (elems.length) {\n this.removeSelected(fListBox, elems);\n elems.forEach(function (ele) {\n idx.push(Array.prototype.indexOf.call(fListBox.ulElement.children, ele)); // update sortable elem\n // To update lb view data\n dataLiIdx.push(Array.prototype.indexOf.call(fListBox.ulElement.querySelectorAll('.e-list-item'), ele));\n // To update lb listdata data\n dataIdx.push(Array.prototype.indexOf.call(fListBox.listData, fListBox.getDataByElems([ele])[0]));\n // To update lb sorted data\n sortIdx.push(Array.prototype.indexOf.call(fListBox.sortedData, fListBox.getDataByElems([ele])[0]));\n // To update lb original data\n jsonIdx.push(Array.prototype.indexOf.call(fListBox.jsonData, fListBox.getDataByElems([ele])[0]));\n });\n if (this.sortOrder !== 'None') {\n sortIdx.forEach(function (i) {\n tempItems.push(fListBox.sortedData[i]);\n });\n }\n else {\n jsonIdx.forEach(function (i) {\n tempItems.push(fListBox.jsonData[i]);\n });\n }\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n var rLiCollection_1 = [];\n dataLiIdx.sort(function (n1, n2) { return n1 - n2; }).reverse().forEach(function (i) {\n rLiCollection_1.push(fliCollections.splice(i, 1)[0]);\n });\n fListBox.liCollections = fliCollections;\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(rLiCollection_1.reverse()).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(rLiCollection_1.reverse());\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n dataIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n listData.splice(i, 1)[0];\n });\n sortIdx.sort(function (n1, n2) { return n2 - n1; }).forEach(function (i) {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n sortData.splice(i, 1)[0];\n });\n jsonIdx.slice().reverse().forEach(function (i) {\n data.push(fListBox.jsonData.splice(i, 1)[0]);\n });\n if (isRefresh) {\n if (fListBox.fields.groupBy) {\n var sourceElem = fListBox.renderItems(listData, fListBox.fields);\n fListBox.updateListItems(sourceElem, fListBox.ulElement);\n }\n else {\n elems.forEach(function (ele) { detach(ele); });\n }\n }\n else {\n moveTo(fListBox.ulElement, tListBox.ulElement, idx, index);\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n if (tListBox.mainList.childElementCount !== tListBox.jsonData.length) {\n tListBox.mainList = tListBox.ulElement;\n }\n fListBox.updateMainList();\n var tJsonData = [].slice.call(tListBox.jsonData);\n tSortData = [].slice.call(tListBox.sortedData);\n this.selectNextList(elems, dataLiIdx, dataIdx, fListBox);\n if (isKey) {\n this.list.focus();\n }\n fListBox.listData = listData;\n fListBox.sortedData = sortData;\n index = (index) ? index : tListData.length;\n for (var i = tempItems.length - 1; i >= 0; i--) {\n tListData.splice(index, 0, tempItems[i]);\n tJsonData.splice(index, 0, tempItems[i]);\n tSortData.splice(index, 0, tempItems[i]);\n }\n tListBox.listData = tListData;\n tListBox.jsonData = tJsonData;\n tListBox.sortedData = tSortData;\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(tListData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n tListBox.setSelection();\n fListBox.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n }\n if (fListBox.value.length === 1 && fListBox.getSelectedItems().length) {\n fListBox.value[0] = fListBox.getFormattedValue(fListBox.getSelectedItems()[0].getAttribute('data-value'));\n }\n };\n ListBox.prototype.selectNextList = function (elems, dataLiIdx, dataIdx, inst) {\n var childCnt = inst.ulElement.querySelectorAll('.e-list-item').length;\n var ele;\n var liIdx;\n var validIdx = -1;\n if (elems.length === 1 && childCnt && !inst.selectionSettings.showCheckbox) {\n liIdx = childCnt <= dataLiIdx[0] ? childCnt - 1 : dataLiIdx[0];\n ele = inst.ulElement.querySelectorAll('.e-list-item')[liIdx];\n validIdx = inst.getValidIndex(ele, liIdx, childCnt === dataIdx[0] ? 38 : 40);\n if (validIdx > -1) {\n (inst.ulElement.querySelectorAll('.e-list-item')[validIdx].classList.add(cssClass.selected));\n }\n }\n };\n ListBox.prototype.moveAllItemTo = function () {\n this.moveAllData(this, this.getScopedListBox());\n };\n ListBox.prototype.moveAllItemFrom = function () {\n this.moveAllData(this.getScopedListBox(), this);\n };\n ListBox.prototype.moveAllData = function (fListBox, tListBox, isKey, index) {\n var listData = [].slice.call(tListBox.listData);\n var jsonData = [].slice.call(tListBox.jsonData);\n var isRefresh = tListBox.sortOrder !== 'None' || (tListBox.selectionSettings.showCheckbox !==\n fListBox.selectionSettings.showCheckbox) || tListBox.fields.groupBy || tListBox.itemTemplate || fListBox.itemTemplate;\n this.removeSelected(fListBox, fListBox.getSelectedItems());\n var tempItems = [].slice.call(fListBox.listData);\n var localDataArgs = { cancel: false, items: tempItems, eventName: this.toolbarAction };\n fListBox.trigger('actionBegin', localDataArgs);\n if (localDataArgs.cancel) {\n return;\n }\n if (tListBox.listData.length === 0) {\n var noRecElem = tListBox.ulElement.childNodes[0];\n if (noRecElem) {\n tListBox.ulElement.removeChild(noRecElem);\n }\n }\n if (isRefresh) {\n var noRecElem = fListBox.ulElement.childNodes[0];\n if (noRecElem) {\n fListBox.ulElement.removeChild(noRecElem);\n }\n }\n moveTo(fListBox.ulElement, tListBox.ulElement, \n // eslint-disable-next-line prefer-spread\n Array.apply(null, { length: fListBox.ulElement.childElementCount }).map(Number.call, Number), index);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n if (isKey) {\n this.list.focus();\n }\n index = (index) ? index : listData.length;\n for (var i = 0; i < fListBox.listData.length; i++) {\n listData.splice(index + i, 0, fListBox.listData[i]);\n }\n for (var i = 0; i < fListBox.jsonData.length; i++) {\n jsonData.splice(index + i, 0, fListBox.jsonData[i]);\n }\n var fliCollections = [].slice.call(fListBox.liCollections);\n var tliCollections = [].slice.call(tListBox.liCollections);\n fListBox.liCollections = [];\n if (index) {\n var toColl = tliCollections.splice(0, index);\n tListBox.liCollections = toColl.concat(fliCollections).concat(tliCollections);\n }\n else {\n tListBox.liCollections = tliCollections.concat(fliCollections);\n }\n fListBox.value = [];\n listData = listData\n .filter(function (data) { return data.isHeader !== true; });\n var sortedData = listData.filter(function (val) {\n return tListBox.jsonData.indexOf(val) === -1;\n });\n for (var i = 0; i < sortedData.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n tListBox.jsonData.splice(index + i, 0, sortedData[i]);\n }\n tListBox.listData = listData;\n if (fListBox.listData.length === fListBox.jsonData.length) {\n fListBox.listData = fListBox.sortedData = fListBox.jsonData = [];\n }\n else if (fListBox.allowFiltering) {\n for (var i = 0; i < fListBox.listData.length; i++) {\n for (var j = 0; j < fListBox.jsonData.length; j++) {\n if (fListBox.listData[i] === fListBox.jsonData[j]) {\n fListBox.jsonData.splice(j, 1);\n }\n }\n }\n fListBox.listData = fListBox.sortedData = [];\n }\n if (isRefresh) {\n var sourceElem = tListBox.renderItems(listData, tListBox.fields);\n tListBox.updateListItems(sourceElem, tListBox.ulElement);\n this.trigger('actionComplete', { items: tempItems, eventName: this.toolbarAction });\n }\n else {\n tListBox.sortedData = listData;\n }\n fListBox.updateSelectedOptions();\n if (fListBox.listData.length === 0) {\n fListBox.l10nUpdate();\n }\n };\n ListBox.prototype.changeData = function (fromIdx, toIdx, jsonToIdx, ele) {\n var listData = [].slice.call(this.listData);\n var jsonData = [].slice.call(this.jsonData);\n var sortData = [].slice.call(this.sortedData);\n var jsonIdx = Array.prototype.indexOf.call(this.jsonData, this.getDataByElems([ele])[0]);\n var sortIdx = Array.prototype.indexOf.call(this.sortedData, this.getDataByElems([ele])[0]);\n var liColl = [].slice.call(this.liCollections);\n listData.splice(toIdx, 0, listData.splice(fromIdx, 1)[0]);\n jsonData.splice(jsonToIdx, 0, jsonData.splice(jsonIdx, 1)[0]);\n sortData.splice(toIdx, 0, sortData.splice(sortIdx, 1)[0]);\n liColl.splice(toIdx, 0, liColl.splice(fromIdx, 1)[0]);\n this.listData = listData;\n this.jsonData = jsonData;\n this.liCollections = liColl;\n this.sortedData = sortData;\n };\n ListBox.prototype.getSelectedItems = function () {\n var ele = [];\n if (this.selectionSettings.showCheckbox) {\n [].slice.call(this.ulElement.getElementsByClassName('e-check')).forEach(function (cbox) {\n ele.push(closest(cbox, '.' + 'e-list-item'));\n });\n }\n else {\n ele = [].slice.call(this.ulElement.getElementsByClassName(cssClass.selected));\n }\n return ele;\n };\n ListBox.prototype.getScopedListBox = function () {\n var _this = this;\n var listObj;\n if (this.scope) {\n [].slice.call(document.querySelectorAll(this.scope)).forEach(function (ele) {\n if (getComponent(ele, _this.getModuleName())) {\n listObj = getComponent(ele, _this.getModuleName());\n }\n });\n }\n return listObj;\n };\n ListBox.prototype.getGrabbedItems = function (args) {\n var grabbItems = false;\n for (var i = 0; i < this.value.length; i++) {\n if (this.value[i] === this.getFormattedValue(args.target.getAttribute('data-value'))) {\n grabbItems = true;\n break;\n }\n }\n if (grabbItems) {\n for (var i = 0; i < this.value.length; i++) {\n var liColl = this.list.querySelectorAll('[aria-selected=\"true\"]');\n for (var j = 0; j < liColl.length; j++) {\n if (this.value[i] === this.getFormattedValue(liColl[j].getAttribute('data-value'))) {\n liColl[j].classList.add('e-grabbed');\n }\n }\n }\n }\n var elems;\n if (this.isAngular) {\n elems = Array.prototype.slice.call(this.element.getElementsByClassName('e-list-parent')[0].querySelectorAll('.e-grabbed'));\n }\n else {\n elems = Array.prototype.slice.call(this.element.nextElementSibling.querySelectorAll('.e-grabbed'));\n }\n return elems;\n };\n ListBox.prototype.getDragArgs = function (args, isDragEnd) {\n var elems = this.getGrabbedItems(args);\n if (elems.length) {\n if (isDragEnd) {\n elems.push(args.target);\n }\n }\n else {\n elems = [args.target];\n }\n return { elements: elems, items: this.getDataByElems(elems) };\n };\n ListBox.prototype.onKeyDown = function (e) {\n this.keyDownHandler(e);\n e.stopPropagation();\n };\n ListBox.prototype.keyDownHandler = function (e) {\n if ([32, 35, 36, 37, 38, 39, 40, 65].indexOf(e.keyCode) > -1 && !this.allowFiltering) {\n if (e.target && e.target.className.indexOf('e-edit-template') > -1) {\n return;\n }\n e.preventDefault();\n if (e.keyCode === 32 && this.ulElement.children.length) {\n this.selectHandler({\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n });\n }\n else if (e.keyCode === 65 && e.ctrlKey) {\n this.selectAll();\n }\n else if ((e.keyCode === 38 || e.keyCode === 40) && e.ctrlKey && e.shiftKey) {\n this.moveUpDown(e.keyCode === 38 ? true : false, true);\n }\n else if ((this.toolbarSettings.items.length || this.tBListBox) && (e.keyCode === 39 || e.keyCode === 37) && e.ctrlKey) {\n var listObj = this.tBListBox || this.getScopedListBox();\n if (e.keyCode === 39) {\n if (e.shiftKey) {\n this.moveAllData(this, listObj, true);\n }\n else {\n this.moveData(this, listObj, true);\n }\n }\n else {\n if (e.shiftKey) {\n this.moveAllData(listObj, this, true);\n }\n else {\n this.moveData(listObj, this, true);\n }\n }\n }\n else if (e.keyCode !== 37 && e.keyCode !== 39 && e.code !== 'KeyA') {\n this.upDownKeyHandler(e);\n }\n }\n else if (this.allowFiltering) {\n if (e.keyCode === 40 || e.keyCode === 38) {\n this.upDownKeyHandler(e);\n }\n }\n };\n ListBox.prototype.upDownKeyHandler = function (e) {\n var ul = this.ulElement;\n var defaultIdx = (e.keyCode === 40 || e.keyCode === 36) ? 0 : ul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = ul.getElementsByClassName('e-focused')[0] || ul.getElementsByClassName(cssClass.selected)[0];\n if (fli) {\n if (e.keyCode !== 35 && e.keyCode !== 36) {\n fliIdx = Array.prototype.indexOf.call(ul.children, fli);\n if (e.keyCode === 40) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx < 0 || fliIdx > ul.childElementCount - 1) {\n return;\n }\n }\n removeClass([fli], 'e-focused');\n }\n var cli = ul.children[fliIdx];\n if (cli) {\n fliIdx = this.getValidIndex(cli, fliIdx, e.keyCode);\n if (fliIdx === -1) {\n addClass([fli], 'e-focused');\n return;\n }\n ul.children[fliIdx].focus();\n ul.children[fliIdx].classList.add('e-focused');\n if (!e.ctrlKey || !this.selectionSettings.showCheckbox && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n this.selectHandler({ target: ul.children[fliIdx], ctrlKey: e.ctrlKey, shiftKey: e.shiftKey }, true);\n }\n if (this.selectionSettings.showCheckbox && e.ctrlKey && e.shiftKey && (e.keyCode === 36 || e.keyCode === 35)) {\n var selectedidx = Array.prototype.indexOf.call(ul.children, fli);\n var sidx = e.code === 'Home' ? 0 : selectedidx;\n var eidx = e.code === 'Home' ? selectedidx : ul.children.length - 1;\n for (var i = sidx; i <= eidx; i++) {\n var item = ul.children[i];\n this.notify('updatelist', { li: item, e: {\n target: this.ulElement.getElementsByClassName('e-focused')[0],\n ctrlKey: e.ctrlKey, shiftKey: e.shiftKey\n }, module: 'listbox' });\n }\n }\n }\n };\n ListBox.prototype.KeyUp = function (e) {\n var _this = this;\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n this.isValidKey = (e.keyCode === 8) || (e.keyCode === 46) || this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n switch (e.keyCode) {\n default:\n if (this.allowFiltering) {\n var eventArgsData_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgsData_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgsData_1, function (args) {\n _this.isDataFetched = false;\n if (args.cancel || (_this.filterInput.value !== '' && _this.isFiltered)) {\n return;\n }\n if (!args.cancel && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.inputString = _this.filterInput.value;\n _this.filteringAction(_this.jsonData, new Query(), _this.fields);\n }\n if (!_this.isFiltered && !_this.isCustomFiltering && !args.preventDefaultAction) {\n _this.dataUpdater(_this.jsonData, new Query(), _this.fields);\n }\n });\n }\n }\n }\n };\n /**\n * To filter the data from given data source by using query.\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}.\n */\n ListBox.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFiltering = true;\n this.filteringAction(dataSource, query, fields);\n };\n ListBox.prototype.filteringAction = function (dataSource, query, fields) {\n this.resetList(dataSource, fields, query);\n };\n ListBox.prototype.targetElement = function () {\n this.targetInputElement = this.list.getElementsByClassName('e-input-filter')[0];\n return this.targetInputElement.value;\n };\n ListBox.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n var backCommand = true;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (backCommand) {\n this.remoteCustomValue = false;\n this.onActionComplete(list, this.jsonData);\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.selectionSettings.showCheckbox, e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n }\n };\n ListBox.prototype.focusOutHandler = function () {\n var ele = this.list.getElementsByClassName('e-focused')[0];\n if (ele) {\n ele.classList.remove('e-focused');\n }\n if (this.allowFiltering) {\n this.refreshClearIcon();\n }\n };\n ListBox.prototype.getValidIndex = function (cli, index, keyCode) {\n var cul = this.ulElement;\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n if (keyCode === 40 || keyCode === 36) {\n index++;\n }\n else {\n index--;\n }\n }\n if (index < 0 || index === cul.childElementCount) {\n return -1;\n }\n cli = cul.querySelectorAll('.e-list-item')[index];\n if (cli.classList.contains('e-disabled') || cli.classList.contains(cssClass.group)) {\n index = this.getValidIndex(cli, index, keyCode);\n }\n return index;\n };\n ListBox.prototype.updateSelectedOptions = function () {\n var _this = this;\n var selectedOptions = [];\n var values = [];\n extend(values, this.value);\n this.getSelectedItems().forEach(function (ele) {\n if (!ele.classList.contains('e-grabbed')) {\n selectedOptions.push(_this.getFormattedValue(ele.getAttribute('data-value')));\n }\n });\n if (this.mainList.childElementCount === this.ulElement.childElementCount) {\n if (this.allowFiltering && this.selectionSettings.showCheckbox) {\n for (var i = 0; i < selectedOptions.length; i++) {\n if (values.indexOf(selectedOptions[i]) > -1) {\n continue;\n }\n else {\n values.push(selectedOptions[i]);\n }\n }\n this.setProperties({ value: values }, true);\n }\n else {\n this.setProperties({ value: selectedOptions }, true);\n }\n }\n this.updateSelectTag();\n this.updateToolBarState();\n if (this.tBListBox) {\n this.tBListBox.updateToolBarState();\n }\n };\n ListBox.prototype.clearSelection = function (values) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (this.selectionSettings.showCheckbox) {\n var dvalue_1;\n this.getSelectedItems().forEach(function (li) {\n dvalue_1 = _this.getFormattedValue(li.getAttribute('data-value'));\n if (values.indexOf(dvalue_1) < 0) {\n li.getElementsByClassName('e-check')[0].classList.remove('e-check');\n li.removeAttribute('aria-selected');\n }\n });\n }\n };\n ListBox.prototype.setSelection = function (values, isSelect, isText) {\n var _this = this;\n if (values === void 0) { values = this.value; }\n if (isSelect === void 0) { isSelect = true; }\n if (isText === void 0) { isText = false; }\n var li;\n var liselect;\n if (values) {\n values.forEach(function (value) {\n var text;\n if (isText) {\n text = _this.getValueByText(value);\n }\n else {\n text = value;\n }\n if (typeof (text) === 'string') {\n text = text.split(\"\\\\\").join(\"\\\\\\\\\");\n }\n li = _this.list.querySelector('[data-value=\"' + text + '\"]');\n if (li) {\n if (_this.selectionSettings.showCheckbox) {\n liselect = li.getElementsByClassName('e-frame')[0].classList.contains('e-check');\n }\n else {\n liselect = li.classList.contains('e-selected');\n }\n if (!isSelect && liselect || isSelect && !liselect && li) {\n if (_this.selectionSettings.showCheckbox) {\n _this.notify('updatelist', { li: li, module: 'listbox' });\n }\n else {\n if (isSelect) {\n li.classList.add(cssClass.selected);\n li.setAttribute('aria-selected', 'true');\n }\n else {\n li.classList.remove(cssClass.selected);\n li.removeAttribute('aria-selected');\n }\n }\n }\n }\n });\n }\n this.updateSelectTag();\n };\n ListBox.prototype.updateSelectTag = function () {\n var ele = this.getSelectTag();\n var innerHTML = '';\n ele.innerHTML = '';\n if (this.value) {\n for (var i = 0, len = this.value.length; i < len; i++) {\n innerHTML += '';\n }\n ele.innerHTML += innerHTML;\n }\n this.checkSelectAll();\n };\n ListBox.prototype.checkDisabledState = function (inst) {\n return inst.ulElement.querySelectorAll('.' + cssClass.li).length === 0;\n };\n ListBox.prototype.updateToolBarState = function () {\n var _this = this;\n if (this.toolbarSettings.items.length) {\n var listObj_1 = this.getScopedListBox();\n var wrap_1 = this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n this.toolbarSettings.items.forEach(function (value) {\n var btn = wrap_1.querySelector('[data-value=\"' + value + '\"]');\n switch (value) {\n case 'moveAllTo':\n btn.disabled = _this.checkDisabledState(_this);\n break;\n case 'moveAllFrom':\n btn.disabled = _this.checkDisabledState(listObj_1);\n break;\n case 'moveFrom':\n btn.disabled = listObj_1.value && listObj_1.value.length ? false : true;\n break;\n case 'moveUp':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[0]) ? false : true;\n break;\n case 'moveDown':\n btn.disabled = _this.value && _this.value.length\n && !_this.isSelected(_this.ulElement.children[_this.ulElement.childElementCount - 1]) ? false : true;\n break;\n default:\n btn.disabled = _this.value && _this.value.length ? false : true;\n break;\n }\n });\n }\n };\n ListBox.prototype.setCheckboxPosition = function () {\n var listWrap = this.list;\n if (!this.initLoad && this.selectionSettings.checkboxPosition === 'Left') {\n listWrap.classList.remove('e-right');\n }\n if (this.selectionSettings.checkboxPosition === 'Right') {\n listWrap.classList.add('e-right');\n }\n };\n ListBox.prototype.showCheckbox = function (showCheckbox) {\n var index = 0;\n var liColl = this.list.lastElementChild.querySelectorAll('li');\n var liCollLen = this.list.lastElementChild.getElementsByClassName('e-list-item').length;\n if (showCheckbox) {\n this.ulElement = this.renderItems(this.listData, this.fields);\n this.mainList = this.ulElement;\n this.list.removeChild(this.list.getElementsByTagName('ul')[0]);\n this.list.appendChild(this.ulElement);\n if (this.selectionSettings.showSelectAll && !this.list.getElementsByClassName('e-selectall-parent')[0]) {\n var l10nShow = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.showSelectAll = true;\n this.selectAllText = l10nShow.getConstant('selectAllText');\n this.unSelectAllText = l10nShow.getConstant('unSelectAllText');\n this.popupWrapper = this.list;\n this.checkBoxSelectionModule.checkAllParent = null;\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n }\n else {\n if (this.list.getElementsByClassName('e-selectall-parent')[0]) {\n this.list.removeChild(this.list.getElementsByClassName('e-selectall-parent')[0]);\n }\n for (index; index < liCollLen; index++) {\n if (liColl[index].classList.contains('e-list-item')) {\n liColl[index].removeChild(liColl[index].getElementsByClassName('e-checkbox-wrapper')[0]);\n }\n if (liColl[index].hasAttribute('aria-selected')) {\n liColl[index].removeAttribute('aria-selected');\n }\n }\n this.mainList = this.ulElement;\n }\n this.value = [];\n };\n ListBox.prototype.isSelected = function (ele) {\n if (!isNullOrUndefined(ele)) {\n return ele.classList.contains(cssClass.selected) || ele.querySelector('.e-check') !== null;\n }\n else {\n return false;\n }\n };\n ListBox.prototype.getSelectTag = function () {\n return this.list.getElementsByClassName('e-hidden-select')[0];\n };\n ListBox.prototype.getToolElem = function () {\n return this.list.parentElement.getElementsByClassName('e-listbox-tool')[0];\n };\n ListBox.prototype.formResetHandler = function () {\n this.value = this.initialSelectedOptions;\n };\n /**\n * Return the module name.\n *\n * @private\n * @returns {string} - Module name\n */\n ListBox.prototype.getModuleName = function () {\n return 'listbox';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ListBox.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ListBox.prototype.getLocaleName = function () {\n return 'listbox';\n };\n ListBox.prototype.destroy = function () {\n this.unwireEvents();\n if (this.element.tagName === 'EJS-LISTBOX') {\n this.element.innerHTML = '';\n }\n else {\n this.element.style.display = 'inline-block';\n if (this.toolbarSettings.items.length) {\n this.list.parentElement.parentElement.insertBefore(this.list, this.list.parentElement);\n detach(this.list.nextElementSibling);\n }\n this.list.parentElement.insertBefore(this.element, this.list);\n }\n _super.prototype.destroy.call(this);\n this.enableRtlElements = [];\n this.liCollections = null;\n this.list = null;\n this.ulElement = null;\n this.mainList = null;\n this.spinner = null;\n this.rippleFun = null;\n if (this.itemTemplate) {\n this.clearTemplate();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ListBoxModel} newProp - Specifies the new properties.\n * @param {ListBoxModel} oldProp - Specifies the old properties.\n * @returns {void}\n * @private\n */\n ListBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.toolbarSettings.items.length ? this.list.parentElement : this.list;\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.list.classList.add('e-rtl');\n }\n else {\n this.list.classList.remove('e-rtl');\n }\n break;\n case 'value':\n removeClass(this.list.querySelectorAll('.' + cssClass.selected), cssClass.selected);\n this.clearSelection(this.value);\n this.setSelection();\n break;\n case 'height':\n this.setHeight();\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'allowDragAndDrop':\n if (newProp.allowDragAndDrop) {\n this.initDraggable();\n }\n else {\n getComponent(this.ulElement, 'sortable').destroy();\n }\n break;\n case 'allowFiltering':\n if (this.allowFiltering) {\n this.setFiltering();\n }\n else {\n this.list.removeChild(this.list.getElementsByClassName('e-filter-parent')[0]);\n this.filterParent = null;\n removeClass([this.list], 'e-filter-list');\n }\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n if (this.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this.filterInput);\n }\n }\n break;\n case 'scope':\n if (this.allowDragAndDrop) {\n getComponent(this.ulElement, 'sortable').scope = newProp.scope;\n }\n if (this.toolbarSettings.items.length) {\n if (oldProp.scope) {\n getComponent(document.querySelector(oldProp.scope), this.getModuleName())\n .tBListBox = null;\n }\n if (newProp.scope) {\n getComponent(document.querySelector(newProp.scope), this.getModuleName())\n .tBListBox = this;\n }\n }\n break;\n case 'toolbarSettings': {\n var ele = void 0;\n var pos = newProp.toolbarSettings.position;\n var toolElem = this.getToolElem();\n if (pos) {\n removeClass([wrap], ['e-right', 'e-left']);\n wrap.classList.add('e-' + pos.toLowerCase());\n if (pos === 'Left') {\n wrap.insertBefore(toolElem, this.list);\n }\n else {\n wrap.appendChild(toolElem);\n }\n }\n if (newProp.toolbarSettings.items) {\n if (oldProp.toolbarSettings && oldProp.toolbarSettings.items.length) {\n ele = this.list.parentElement;\n ele.parentElement.insertBefore(this.list, ele);\n detach(ele);\n }\n this.initToolbarAndStyles();\n this.wireToolbarEvent();\n }\n break;\n }\n case 'selectionSettings': {\n var showSelectAll = newProp.selectionSettings.showSelectAll;\n var showCheckbox = newProp.selectionSettings.showCheckbox;\n if (!isNullOrUndefined(showSelectAll)) {\n this.showSelectAll = showSelectAll;\n if (this.showSelectAll) {\n var l10nSel = new L10n(this.getModuleName(), { selectAllText: 'Select All', unSelectAllText: 'Unselect All' }, this.locale);\n this.checkBoxSelectionModule.checkAllParent = null;\n this.showSelectAll = true;\n this.selectAllText = l10nSel.getConstant('selectAllText');\n this.unSelectAllText = l10nSel.getConstant('selectAllText');\n this.popupWrapper = this.list;\n }\n this.notify('selectAll', {});\n this.checkSelectAll();\n }\n if (!isNullOrUndefined(showCheckbox)) {\n this.showCheckbox(showCheckbox);\n }\n if (this.selectionSettings.showCheckbox) {\n this.setCheckboxPosition();\n }\n break;\n }\n case 'dataSource':\n this.isDataSourceUpdate = true;\n this.jsonData = [].slice.call(this.dataSource);\n break;\n }\n }\n };\n var ListBox_1;\n __decorate$6([\n Property('')\n ], ListBox.prototype, \"cssClass\", void 0);\n __decorate$6([\n Property([])\n ], ListBox.prototype, \"value\", void 0);\n __decorate$6([\n Property('')\n ], ListBox.prototype, \"height\", void 0);\n __decorate$6([\n Property(true)\n ], ListBox.prototype, \"enabled\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"enablePersistence\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"allowDragAndDrop\", void 0);\n __decorate$6([\n Property(1000)\n ], ListBox.prototype, \"maximumSelectionLength\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"allowFiltering\", void 0);\n __decorate$6([\n Property('')\n ], ListBox.prototype, \"scope\", void 0);\n __decorate$6([\n Property(true)\n ], ListBox.prototype, \"ignoreCase\", void 0);\n __decorate$6([\n Property(null)\n ], ListBox.prototype, \"filterBarPlaceholder\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"beforeItemRender\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"filtering\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"select\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"change\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"beforeDrop\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"dragStart\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"drag\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"drop\", void 0);\n __decorate$6([\n Event()\n ], ListBox.prototype, \"dataBound\", void 0);\n __decorate$6([\n Property(null)\n ], ListBox.prototype, \"groupTemplate\", void 0);\n __decorate$6([\n Property('Request failed')\n ], ListBox.prototype, \"actionFailureTemplate\", void 0);\n __decorate$6([\n Property(1000)\n ], ListBox.prototype, \"zIndex\", void 0);\n __decorate$6([\n Property(false)\n ], ListBox.prototype, \"ignoreAccent\", void 0);\n __decorate$6([\n Complex({}, ToolbarSettings)\n ], ListBox.prototype, \"toolbarSettings\", void 0);\n __decorate$6([\n Complex({}, SelectionSettings)\n ], ListBox.prototype, \"selectionSettings\", void 0);\n ListBox = ListBox_1 = __decorate$6([\n NotifyPropertyChanges\n ], ListBox);\n return ListBox;\n}(DropDownBase));\nvar listBoxClasses = {\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n clearIcon: 'e-clear-icon'\n};\n\n/**\n * export all modules from current location\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * The Mention component is used to list someone or something based on user input in textarea, input,\n * or any other editable element from which the user can select.\n */\nvar Mention = /** @__PURE__ @class */ (function (_super) {\n __extends$7(Mention, _super);\n /**\n * * Constructor for creating the widget\n *\n * @param {MentionModel} options - Specifies the MentionComponent model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Mention(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {MentionModel} newProp - Returns the dynamic property value of the component.\n * @param {MentionModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'minLength':\n this.minLength = newProp.minLength;\n break;\n case 'suffixText':\n this.suffixText = newProp.suffixText;\n break;\n case 'allowSpaces':\n this.allowSpaces = newProp.allowSpaces;\n break;\n case 'mentionChar':\n this.mentionChar = newProp.mentionChar;\n break;\n case 'showMentionChar':\n this.showMentionChar = newProp.showMentionChar;\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n }\n }\n };\n Mention.prototype.updateCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n this.setCssClass(newClass, [this.inputElement], oldClass);\n if (this.popupObj) {\n this.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n Mention.prototype.setCssClass = function (cssClass$$1, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass$$1) && cssClass$$1 !== '') {\n addClass(elements, cssClass$$1.split(' '));\n }\n };\n Mention.prototype.initializeData = function () {\n this.isSelected = false;\n this.isFiltered = false;\n this.beforePopupOpen = false;\n this.initRemoteRender = false;\n this.isListResetted = false;\n this.isPopupOpen = false;\n this.isCollided = false;\n this.lineBreak = false;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.preRender = function () {\n this.initializeData();\n _super.prototype.preRender.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.render = function () {\n this.inputElement = !isNullOrUndefined(this.target) ? ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target : this.element;\n if (this.isContentEditable(this.inputElement)) {\n this.inputElement.setAttribute('contenteditable', 'true');\n addClass([this.inputElement], ['e-mention']);\n if (isNullOrUndefined(this.target)) {\n addClass([this.inputElement], ['e-editable-element']);\n }\n }\n this.queryString = this.elementValue();\n this.wireEvent();\n };\n Mention.prototype.wireEvent = function () {\n EventHandler.add(this.inputElement, 'keyup', this.onKeyUp, this);\n this.bindCommonEvent();\n };\n Mention.prototype.unWireEvent = function () {\n EventHandler.remove(this.inputElement, 'keyup', this.onKeyUp);\n this.unBindCommonEvent();\n };\n Mention.prototype.bindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.inputElement, {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @private\n * @returns {void}\n */\n Mention.prototype.hideSpinner = function () {\n this.hideWaitingSpinner();\n };\n Mention.prototype.hideWaitingSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate) && !isNullOrUndefined(this.spinnerTemplateElement)) {\n detach(this.spinnerTemplateElement);\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n Mention.prototype.showWaitingSpinner = function () {\n if (!isNullOrUndefined(this.popupObj)) {\n if (isNullOrUndefined(this.spinnerTemplate) && isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = this.popupObj.element;\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n if (!isNullOrUndefined(this.spinnerTemplate)) {\n this.setSpinnerTemplate();\n }\n }\n };\n Mention.prototype.keyActionHandler = function (e) {\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (this.list === undefined && !this.isRequested && !isTabAction && e.action !== 'escape' && e.action !== 'space') {\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'tab':\n if (this.isPopupOpen) {\n e.preventDefault();\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (li) {\n this.setSelection(li, e);\n }\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n }\n break;\n case 'enter':\n if (this.isPopupOpen) {\n e.preventDefault();\n if (this.popupObj && this.popupObj.element.contains(this.selectedLI)) {\n this.setValue(e);\n }\n }\n break;\n case 'escape':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n }\n break;\n }\n };\n Mention.prototype.updateUpDownAction = function (e) {\n var focusEle = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (this.isSelectFocusItem(focusEle)) {\n this.setSelection(focusEle, e);\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var li = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (!isNullOrUndefined(li)) {\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n this.activeIndex = this.getIndexByValue(value);\n }\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n var startIndex = 0;\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n var nextItem = isNullOrUndefined(this.activeIndex) ?\n this.liCollections[startIndex] : this.liCollections[index];\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n }\n if (this.isPopupOpen) {\n e.preventDefault();\n }\n };\n Mention.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n Mention.prototype.unBindCommonEvent = function () {\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n };\n Mention.prototype.onKeyUp = function (e) {\n var rangetextContent;\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n rangetextContent = this.range.startContainer.textContent.split('');\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n // eslint-disable-next-line security/detect-non-literal-regexp\n var Regex = new RegExp(this.mentionChar, 'g');\n var charRegex = new RegExp('[a-zA-Z]', 'g');\n if (e.key === 'Shift' || e.keyCode === 37 || e.keyCode === 39) {\n if ((e.keyCode === 37 || e.keyCode === 39) && !isNullOrUndefined(currentRange) &&\n currentRange.indexOf(this.mentionChar) === -1 && this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if ((!currentRange || !lastWordRange) || e.code === 'Enter' || e.keyCode === 27 ||\n (lastWordRange.match(Regex) && lastWordRange.match(Regex).length > 1) ||\n (this.isContentEditable(this.inputElement) && this.range.startContainer &&\n this.range.startContainer.previousElementSibling && this.range.startContainer.textContent.split('').length > 0 &&\n (rangetextContent.length === 1 || rangetextContent[rangetextContent.length - 2].indexOf('') === -1 ||\n this.range.startContainer.nodeType === 1))) {\n if (this.allowSpaces && currentRange && currentRange.trim() !== '' && charRegex.test(currentRange) && currentRange.indexOf(this.mentionChar) !== -1\n && !this.isMatchedText() && (currentRange.length > 1 && currentRange.replace(/\\u00A0/g, ' ').charAt(currentRange.length - 2) !== ' ') &&\n (this.list && this.list.querySelectorAll('ul').length > 0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.isPopupOpen && (!this.allowSpaces || !lastWordRange)) {\n this.hidePopup();\n this.lineBreak = true;\n }\n return;\n }\n this.queryString = lastWordRange.replace(this.mentionChar, '');\n if (this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0) &&\n this.queryString !== '' && e.keyCode !== 38 && e.keyCode !== 40 && !this.lineBreak) {\n this.searchLists(e);\n if (!this.isPopupOpen && this.queryString.length >= this.minLength) {\n if (!this.isContentEditable(this.inputElement)) {\n this.showPopup();\n }\n else if (this.isContentEditable(this.inputElement) && this.range && this.range.startContainer !== this.inputElement && e.keyCode !== 9) {\n this.showPopup();\n }\n }\n }\n else if (lastWordRange.indexOf(this.mentionChar) === 0 && !this.isPopupOpen && e.keyCode !== 8 && (!this.popupObj ||\n (isNullOrUndefined(this.target) && !document.body.contains(this.popupObj.element) ||\n !isNullOrUndefined(this.target) && document.body.contains(this.popupObj.element)))) {\n if (this.initRemoteRender && this.list && this.list.classList.contains('e-nodata')) {\n this.searchLists(e);\n }\n this.resetList(this.dataSource, this.fields);\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n if (!this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40) {\n this.showPopup();\n if (this.initRemoteRender && this.list.querySelectorAll('li').length === 0) {\n this.showWaitingSpinner();\n }\n this.lineBreak = false;\n }\n }\n else if (this.allowSpaces && this.queryString !== '' && currentRange && currentRange.trim() !== '' && currentRange.replace('\\u00a0', ' ').lastIndexOf(' ') < currentRange.length - 1 &&\n e.keyCode !== 38 && e.keyCode !== 40 && e.keyCode !== 8 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.queryString = currentRange.substring(currentRange.lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ');\n this.searchLists(e);\n }\n else if (this.queryString === '' && this.isPopupOpen && e.keyCode !== 38 && e.keyCode !== 40 && this.mentionChar.charCodeAt(0) === lastWordRange.charCodeAt(0)) {\n this.searchLists(e);\n if (!this.isListResetted) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n this.isListResetted = false;\n };\n Mention.prototype.isMatchedText = function () {\n var isMatched = false;\n for (var i = 0; i < (this.liCollections && this.liCollections.length); i++) {\n if (this.getTextRange() &&\n this.getTextRange().substring(this.getTextRange().lastIndexOf(this.mentionChar) + 1).replace('\\u00a0', ' ').trim() === this.liCollections[i].getAttribute('data-value').toLowerCase()) {\n isMatched = true;\n }\n }\n return isMatched;\n };\n Mention.prototype.getCurrentRange = function () {\n this.range = this.inputElement.ownerDocument.getSelection().getRangeAt(0);\n return this.range;\n };\n Mention.prototype.searchLists = function (e) {\n var _this = this;\n this.isDataFetched = false;\n if (isNullOrUndefined(this.list)) {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n }\n if (e.type !== 'mousedown' && (e.keyCode === 40 || e.keyCode === 38)) {\n this.queryString = this.queryString === '' ? null : this.queryString;\n this.beforePopupOpen = true;\n this.resetList(this.dataSource, this.fields);\n return;\n }\n this.isSelected = false;\n this.activeIndex = null;\n var eventArgs = {\n preventDefaultAction: false,\n text: this.queryString,\n updateData: function (dataSource, query, fields) {\n if (eventArgs.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.filterAction(dataSource, query, fields);\n },\n cancel: false\n };\n this.trigger('filtering', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction(_this.dataSource, null, _this.fields);\n }\n });\n };\n Mention.prototype.filterAction = function (dataSource, query, fields) {\n this.beforePopupOpen = true;\n if (this.queryString.length >= this.minLength) {\n this.resetList(dataSource, fields, query);\n this.isListResetted = true;\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.beforePopupOpen = false;\n }\n this.setDataIndex();\n this.renderReactTemplates();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Mention.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n if (this.isActive) {\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.inputElement.id + '_options', 'role': 'listbox', 'aria-hidden': 'false' });\n }\n var focusItem = ulElement.querySelector('.' + dropDownBaseClasses.li);\n if (focusItem) {\n focusItem.classList.add(dropDownBaseClasses.selected);\n this.selectedLI = focusItem;\n var value = this.getFormattedValue(focusItem.getAttribute('data-value'));\n this.selectEventCallback(focusItem, this.getDataByValue(value), value, true);\n }\n }\n };\n Mention.prototype.setDataIndex = function () {\n for (var i = 0; this.liCollections && i < this.liCollections.length; i++) {\n this.liCollections[i].setAttribute('data-index', i.toString());\n }\n };\n Mention.prototype.listOption = function (dataSource, fieldsSettings) {\n var _this = this;\n var fields = _super.prototype.listOption.call(this, dataSource, fieldsSettings);\n if (isNullOrUndefined(fields.itemCreated)) {\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n if (_this.inputElement.tagName === _this.getNgDirective() && _this.itemTemplate) {\n setTimeout(function () {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }, 0);\n }\n else {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n }\n };\n }\n else {\n var itemCreated_1 = fields.itemCreated;\n fields.itemCreated = function (e) {\n if (_this.highlight) {\n highlightSearch(e.item, _this.queryString, _this.ignoreCase, _this.filterType);\n }\n itemCreated_1.apply(_this, [e]);\n };\n }\n return fields;\n };\n Mention.prototype.elementValue = function () {\n if (!this.isContentEditable(this.inputElement)) {\n return this.inputElement.value.replace(this.mentionChar, '');\n }\n else {\n return this.inputElement.textContent.replace(this.mentionChar, '');\n }\n };\n Mention.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ? 'equal' : this.filterType;\n var queryString = (this.queryString === '' && !isNullOrUndefined(this.elementValue())) ?\n this.elementValue() : this.queryString;\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.queryString !== null && this.queryString !== '') {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var mapping = !isNullOrUndefined(this.fields.text) ? this.fields.text : '';\n filterQuery.where(mapping, filterType, queryString, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (!isNullOrUndefined(this.suggestionCount)) {\n // Since defualt value of suggestioncount is 25, checked the condition\n if (this.suggestionCount !== 25) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onTake') {\n filterQuery.queries.splice(queryElements, 1);\n }\n }\n }\n filterQuery.take(this.suggestionCount);\n }\n return filterQuery;\n };\n Mention.prototype.renderHightSearch = function () {\n if (this.highlight) {\n for (var i = 0; i < this.liCollections.length; i++) {\n var isHighlight = this.ulElement.querySelector('.e-active');\n if (!isHighlight) {\n revertHighlightSearch(this.liCollections[i]);\n highlightSearch(this.liCollections[i], this.queryString, this.ignoreCase, this.filterType);\n }\n }\n }\n };\n Mention.prototype.getTextRange = function () {\n var text;\n if (!this.isContentEditable(this.inputElement)) {\n var component = this.inputElement;\n if (!isNullOrUndefined(component)) {\n var startPos = component.selectionStart;\n if (component.value && startPos >= 0) {\n text = component.value.substring(0, startPos);\n }\n }\n }\n else {\n if (this.range) {\n var selectedElem = this.range.startContainer;\n if (!isNullOrUndefined(selectedElem)) {\n var workingNodeContent = selectedElem.textContent;\n var selectStartOffset = this.range.startOffset;\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n }\n return text;\n };\n Mention.prototype.getLastLetter = function (text) {\n if (isNullOrUndefined(text)) {\n return '';\n }\n var textValue = text.replace(/\\u00A0/g, ' ');\n var words = textValue.split(/\\s+/);\n var wordCnt = words.length - 1;\n return words[wordCnt].trim();\n };\n Mention.prototype.isContentEditable = function (element) {\n return element && element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA';\n };\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n Mention.prototype.showPopup = function () {\n this.beforePopupOpen = true;\n if (isNullOrUndefined(this.list)) {\n this.initValue();\n }\n this.renderPopup();\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElementID });\n if (this.selectedElementID == null) {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n Mention.prototype.hidePopup = function (e) {\n this.removeSelection();\n this.closePopup(0, e);\n };\n Mention.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-activedescendant');\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('closed', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel && _this.popupObj) {\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n };\n Mention.prototype.renderPopup = function () {\n var _this = this;\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle_1;\n if (isNullOrUndefined(_this.target)) {\n popupEle_1 = _this.createElement('div', {\n id: _this.inputElement.id + '_popup', className: 'e-mention e-popup ' + (_this.cssClass != null ? _this.cssClass : '')\n });\n }\n else {\n popupEle_1 = _this.element;\n if (_this.cssClass != null) {\n addClass([popupEle_1], _this.cssClass.split(' '));\n }\n }\n if (!isNullOrUndefined(_this.target)) {\n popupEle_1.id = _this.inputElement.id + '_popup';\n }\n _this.listHeight = formatUnit(_this.popupHeight);\n if (!isNullOrUndefined(_this.list.querySelector('li')) && !_this.initRemoteRender) {\n var li = _this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n _this.selectedLI = li;\n var value = _this.getFormattedValue(li.getAttribute('data-value'));\n _this.selectEventCallback(li, _this.getDataByValue(value), value, true);\n }\n }\n append([_this.list], popupEle_1);\n if ((!_this.popupObj || !document.body.contains(_this.popupObj.element)) ||\n !document.contains(popupEle_1) && isNullOrUndefined(_this.target)) {\n document.body.appendChild(popupEle_1);\n }\n var coordinates_1;\n popupEle_1.style.visibility = 'hidden';\n _this.setHeight(popupEle_1);\n var offsetValue = 0;\n var left = 0;\n _this.initializePopup(popupEle_1, offsetValue, left);\n _this.checkCollision(popupEle_1);\n popupEle_1.style.visibility = 'visible';\n addClass([popupEle_1], ['e-mention', 'e-popup', 'e-popup-close']);\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options', 'aria-activedescendant': _this.selectedElementID });\n if (_this.selectedElementID == null) {\n _this.inputElement.removeAttribute('aria-activedescendant');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel };\n _this.trigger('opened', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.renderReactTemplates();\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.inputElement : null);\n if (isNullOrUndefined(_this.getTriggerCharPosition())) {\n return;\n }\n coordinates_1 = _this.getCoordinates(_this.inputElement, _this.getTriggerCharPosition());\n if (!_this.isCollided) {\n popupEle_1.style.cssText = 'top: '.concat(coordinates_1.top.toString(), 'px;\\n left: ').concat(coordinates_1.left.toString(), 'px;\\nposition: absolute;\\n display: block;');\n }\n else {\n popupEle_1.style.left = formatUnit(coordinates_1.left);\n popupEle_1.style.top = formatUnit(coordinates_1.top - parseInt(_this.popupHeight.toString()));\n _this.isCollided = false;\n }\n popupEle_1.style.width = _this.popupWidth !== '100%' && !isNullOrUndefined(_this.popupWidth) ? formatUnit(_this.popupWidth) : 'auto';\n _this.setHeight(popupEle_1);\n popupEle_1.style.zIndex = _this.zIndex === 1000 ? getZindexPartial(popupEle_1).toString() : _this.zIndex.toString();\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n Mention.prototype.setHeight = function (popupEle) {\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = (parseInt(this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n };\n Mention.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'mention'))) {\n var coordinates = this.getCoordinates(this.inputElement, this.getTriggerCharPosition());\n var collision = isCollide(popupEle, null, coordinates.left, coordinates.top);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n this.isCollided = true;\n }\n this.popupObj.resolveCollision();\n }\n };\n Mention.prototype.getTriggerCharPosition = function () {\n var mostRecentTriggerCharPos;\n var currentRange = this.getTextRange();\n if (currentRange !== undefined && currentRange !== null) {\n mostRecentTriggerCharPos = 0;\n var idx = currentRange.lastIndexOf(this.mentionChar);\n if (idx >= mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n }\n }\n return mostRecentTriggerCharPos;\n };\n Mention.prototype.initializePopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputElement, collision: { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left, position: { X: 'left', Y: 'bottom' }, actionOnScroll: 'hide',\n zIndex: this.zIndex,\n close: function () {\n _this.destroyPopup();\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n _this.setDataIndex();\n }\n });\n };\n Mention.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputElement.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n Mention.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.popupObj.destroy();\n if (isNullOrUndefined(this.target)) {\n detach(this.popupObj.element);\n }\n else {\n this.popupObj.element.innerHTML = '';\n this.popupObj.element.removeAttribute('style');\n this.popupObj.element.removeAttribute('aria-disabled');\n }\n };\n Mention.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '#' + this.popupObj.element.id))) {\n this.hidePopup(e);\n }\n };\n Mention.prototype.getCoordinates = function (element, position) {\n var properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX', 'overflowY', 'borderTopWidth', 'borderRightWidth', 'borderBottomWidth', 'borderLeftWidth', 'paddingTop', 'paddingRight', 'paddingBottom', 'paddingLeft', 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch', 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily', 'textAlign', 'textTransform', 'textIndent', 'textDecoration', 'letterSpacing', 'wordSpacing'];\n var div;\n var span;\n var range;\n var globalRange;\n var coordinates;\n var computed;\n var rect;\n if (!this.isContentEditable(this.inputElement)) {\n div = this.createElement('div', { className: 'e-form-mirror-div' });\n document.body.appendChild(div);\n computed = getComputedStyle(element);\n div.style.position = 'absolute';\n div.style.visibility = 'hidden';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n properties.forEach(function (prop) {\n // eslint-disable-next-line security/detect-object-injection\n div.style[prop] = computed[prop];\n });\n div.textContent = element.value.substring(0, position);\n if (this.inputElement.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, '\\u00a0');\n }\n span = this.createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n rect = element.getBoundingClientRect();\n }\n else {\n var selectedNodePosition = this.getTriggerCharPosition();\n globalRange = this.range;\n range = document.createRange();\n range.setStart(globalRange.startContainer, selectedNodePosition);\n range.setEnd(globalRange.startContainer, selectedNodePosition);\n range.collapse(false);\n rect = range.getBoundingClientRect();\n }\n var doc = document.documentElement;\n var windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n if (!this.isContentEditable(this.inputElement)) {\n coordinates = {\n top: rect.top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth, 10) +\n parseInt(computed.fontSize, 10) + 3 - element.scrollTop - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth, 10)\n };\n document.body.removeChild(div);\n }\n else {\n coordinates = {\n top: rect.top + windowTop + parseInt(getComputedStyle(this.inputElement).fontSize, 10) - (this.isCollided ? 10 : 0),\n left: rect.left + windowLeft\n };\n }\n return coordinates;\n };\n Mention.prototype.initValue = function () {\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n Mention.prototype.updateValues = function () {\n var li = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, null);\n }\n };\n Mention.prototype.renderList = function () {\n _super.prototype.render.call(this);\n this.unWireListEvents();\n this.wireListEvents();\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n Mention.prototype.wireListEvents = function () {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n Mention.prototype.unWireListEvents = function () {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n };\n Mention.prototype.onMouseClick = function (e) {\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n var delay = 100;\n this.closePopup(delay, e);\n this.inputElement.focus();\n };\n Mention.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = this.getFormattedValue(li.getAttribute('data-value'));\n var selectedData = this.getDataByValue(value);\n if (!preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n Mention.prototype.setSelection = function (li, e) {\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n }\n };\n Mention.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI)) {\n this.setScrollPosition(e);\n }\n if (e && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n if (isNullOrUndefined(e) || this.setValue(e)) {\n return;\n }\n };\n Mention.prototype.setScrollPosition = function (e) {\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.scrollBottom();\n break;\n default:\n this.scrollTop();\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n };\n Mention.prototype.scrollBottom = function (isInitial) {\n if (!isNullOrUndefined(this.selectedLI)) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset;\n var boxRange = this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop;\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n }\n };\n Mention.prototype.scrollTop = function () {\n if (!isNullOrUndefined(this.selectedLI)) {\n var nextOffset = this.selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && nextOffset;\n var boxRange = (this.selectedLI.offsetTop + this.selectedLI.offsetHeight - this.list.scrollTop);\n if (this.activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop;\n }\n }\n };\n Mention.prototype.selectEventCallback = function (li, selectedData, value, selectLi) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n if (selectLi) {\n addClass([li], dropDownBaseClasses.selected);\n }\n li.setAttribute('aria-selected', 'true');\n this.activeIndex = this.getIndexByValue(value);\n };\n Mention.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.setValue = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate();\n }\n this.updateMentionValue(e);\n return true;\n }\n else {\n if (!isNullOrUndefined(this.displayTemplate)) {\n this.setDisplayTemplate(e);\n }\n else {\n this.updateMentionValue(e);\n }\n return true;\n }\n };\n Mention.prototype.updateMentionValue = function (e) {\n var dataItem = this.getItemData();\n var textSuffix;\n var value;\n var endPos;\n var range;\n var globalRange;\n var selection = this.inputElement.ownerDocument.getSelection();\n var startPos = this.getTriggerCharPosition();\n textSuffix = typeof this.suffixText === 'string' ? this.suffixText : '';\n if (dataItem.text !== null) {\n value = this.mentionVal(dataItem.text);\n }\n if (!this.isContentEditable(this.inputElement)) {\n var myField = this.inputElement;\n var currentTriggerSnippet = this.getTextRange().substring(startPos + this.mentionChar.length, this.getTextRange().length);\n value += textSuffix;\n endPos = startPos + this.mentionChar.length;\n endPos += currentTriggerSnippet.length;\n myField.value = myField.value.substring(0, startPos) + value + myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + value.length;\n myField.selectionEnd = startPos + value.length;\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n else {\n endPos = this.getTriggerCharPosition() + this.mentionChar.length;\n if (this.range && (this.range.startContainer.textContent.trim() !== this.mentionChar)) {\n endPos = this.range.endOffset;\n }\n globalRange = this.range;\n range = document.createRange();\n range.setStart(globalRange.startContainer, startPos);\n range.setEnd(globalRange.startContainer, endPos);\n range.deleteContents();\n var element = this.createElement('div');\n element.innerHTML = value;\n var frag = document.createDocumentFragment();\n var node = void 0;\n var lastNode = void 0;\n // eslint-disable-next-line no-cond-assign\n while (node = element.firstChild) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n this.onChangeEvent(e);\n }\n };\n Mention.prototype.mentionVal = function (value) {\n var showChar = this.showMentionChar ? this.mentionChar : '';\n if (!isNullOrUndefined(this.displayTemplate) && !isNullOrUndefined(this.displayTempElement)) {\n value = this.displayTempElement.innerHTML;\n }\n if (this.isContentEditable(this.inputElement)) {\n return '' + showChar + value + ''.concat(typeof this.suffixText === 'string' ? this.suffixText : ' ');\n }\n else {\n return showChar + value;\n }\n };\n Mention.prototype.setDisplayTemplate = function (e) {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['displayTemplate']);\n if (this.displayTempElement) {\n detach(this.displayTempElement);\n this.displayTempElement = null;\n }\n }\n if (!this.displayTempElement) {\n this.displayTempElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.displayTempElement.innerHTML = '';\n }\n compiledString = compile(this.displayTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var displayCompTemp = compiledString(this.itemData, this, 'displayTemplate', this.displayTemplateId, this.isStringTemplate, null, this.displayTempElement);\n if (displayCompTemp && displayCompTemp.length > 0) {\n for (var i = 0; i < displayCompTemp.length; i++) {\n this.displayTempElement.appendChild(displayCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n }\n else {\n this.renderTemplates(function () {\n _this.updateMentionValue(e);\n });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Mention.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n Mention.prototype.setSpinnerTemplate = function () {\n var _this = this;\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['spinnerTemplate']);\n if (this.spinnerTemplateElement) {\n detach(this.spinnerTemplateElement);\n this.spinnerTemplateElement = null;\n }\n }\n if (!this.spinnerTemplateElement) {\n this.spinnerTemplateElement = this.createElement('div');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.spinnerTemplateElement.innerHTML = '';\n }\n compiledString = compile(this.spinnerTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var spinnerCompTemp = compiledString(null, this, 'spinnerTemplate', this.spinnerTemplateId, this.isStringTemplate, null, this.spinnerTemplateElement);\n if (spinnerCompTemp && spinnerCompTemp.length > 0) {\n for (var i = 0; i < spinnerCompTemp.length; i++) {\n this.spinnerTemplateElement.appendChild(spinnerCompTemp[i]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.renderTemplates();\n this.popupObj.element.appendChild(this.spinnerTemplateElement);\n }\n else {\n this.renderTemplates(function () {\n _this.popupObj.element.appendChild(_this.spinnerTemplateElement);\n });\n }\n };\n Mention.prototype.onChangeEvent = function (eve) {\n this.isSelected = false;\n var items = this.detachMentionChanges(this.itemData);\n var preItems;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.item.innerHTML,\n element: this.inputElement\n };\n this.trigger('change', eventArgs);\n };\n Mention.prototype.detachMentionChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n Mention.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n Mention.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n Mention.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n Mention.prototype.setHover = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n Mention.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n Mention.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n Mention.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n /**\n * Search the entered text and show it in the suggestion list if available.\n *\n * @returns {void}\n */\n Mention.prototype.search = function (text, positionX, positionY) {\n if (this.isContentEditable(this.inputElement)) {\n this.range = this.getCurrentRange();\n }\n var currentRange = this.getTextRange();\n var lastWordRange = this.getLastLetter(currentRange);\n if ((this.ignoreCase && (text === lastWordRange || text === lastWordRange.toLowerCase()))\n || !this.ignoreCase && text === lastWordRange) {\n this.resetList(this.dataSource, this.fields);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup();\n }\n return;\n }\n if (isNullOrUndefined(this.list)) {\n this.renderList();\n this.renderPopup();\n }\n else {\n this.showPopup();\n }\n this.popupObj.element.style.left = formatUnit(positionX);\n this.popupObj.element.style.top = formatUnit(positionY);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Mention.prototype.destroy = function () {\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.inputElement && !this.inputElement.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n _super.prototype.destroy.call(this);\n };\n Mention.prototype.getLocaleName = function () {\n return 'mention';\n };\n Mention.prototype.getNgDirective = function () {\n return 'EJS-MENTION';\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n Mention.prototype.getModuleName = function () {\n return 'mention';\n };\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"cssClass\", void 0);\n __decorate$7([\n Property('@')\n ], Mention.prototype, \"mentionChar\", void 0);\n __decorate$7([\n Property(false)\n ], Mention.prototype, \"showMentionChar\", void 0);\n __decorate$7([\n Property(false)\n ], Mention.prototype, \"allowSpaces\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"suffixText\", void 0);\n __decorate$7([\n Property(25)\n ], Mention.prototype, \"suggestionCount\", void 0);\n __decorate$7([\n Property(0)\n ], Mention.prototype, \"minLength\", void 0);\n __decorate$7([\n Property('None')\n ], Mention.prototype, \"sortOrder\", void 0);\n __decorate$7([\n Property(true)\n ], Mention.prototype, \"ignoreCase\", void 0);\n __decorate$7([\n Property(false)\n ], Mention.prototype, \"highlight\", void 0);\n __decorate$7([\n Property()\n ], Mention.prototype, \"locale\", void 0);\n __decorate$7([\n Property('auto')\n ], Mention.prototype, \"popupWidth\", void 0);\n __decorate$7([\n Property('300px')\n ], Mention.prototype, \"popupHeight\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"displayTemplate\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"itemTemplate\", void 0);\n __decorate$7([\n Property('No records found')\n ], Mention.prototype, \"noRecordsTemplate\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"spinnerTemplate\", void 0);\n __decorate$7([\n Property()\n ], Mention.prototype, \"target\", void 0);\n __decorate$7([\n Property([])\n ], Mention.prototype, \"dataSource\", void 0);\n __decorate$7([\n Property(null)\n ], Mention.prototype, \"query\", void 0);\n __decorate$7([\n Property('Contains')\n ], Mention.prototype, \"filterType\", void 0);\n __decorate$7([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], Mention.prototype, \"fields\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"actionBegin\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"actionComplete\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"actionFailure\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"change\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"beforeOpen\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"opened\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"closed\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"select\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"filtering\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"created\", void 0);\n __decorate$7([\n Event()\n ], Mention.prototype, \"destroyed\", void 0);\n Mention = __decorate$7([\n NotifyPropertyChanges\n ], Mention);\n return Mention;\n}(DropDownBase));\n\n/**\n * export all modules from current location\n */\n\n/**\n * export all modules from current location\n */\n\nexport { incrementalSearch, Search, escapeCharRegExp, resetIncrementalSearchValues, highlightSearch, revertHighlightSearch, FieldSettings, dropDownBaseClasses, DropDownBase, dropDownListClasses, DropDownList, Fields, TreeSettings, DropDownTree, ComboBox, AutoComplete, MultiSelect, CheckBoxSelection, createFloatLabel, updateFloatLabelState, removeFloating, setPlaceHolder, floatLabelFocus, floatLabelBlur, encodePlaceholder, SelectionSettings, ToolbarSettings, ListBox, Mention };\n","import { ZipArchive, ZipArchiveItem } from '@syncfusion/ej2-compression';\nimport { Internationalization, isNullOrUndefined } from '@syncfusion/ej2-base';\n\n/**\n * CellStyle class\n * @private\n */\nvar CellStyle = /** @__PURE__ @class */ (function () {\n function CellStyle() {\n this.numFmtId = 0;\n this.backColor = 'none';\n this.fontName = 'Calibri';\n this.fontSize = 10.5;\n this.fontColor = '#000000';\n this.italic = false;\n this.bold = false;\n this.underline = false;\n this.strikeThrough = false;\n this.wrapText = false;\n this.hAlign = 'general';\n this.vAlign = 'bottom';\n this.indent = 0;\n this.rotation = 0;\n this.numberFormat = 'GENERAL';\n this.type = 'datetime';\n this.borders = new Borders();\n this.isGlobalStyle = false;\n }\n return CellStyle;\n}());\n/**\n * Font Class\n * @private\n */\nvar Font = /** @__PURE__ @class */ (function () {\n function Font() {\n this.sz = 10.5;\n this.name = 'Calibri';\n this.u = false;\n this.b = false;\n this.i = false;\n this.color = 'FF000000';\n this.strike = false;\n }\n return Font;\n}());\n/**\n * CellXfs class\n * @private\n */\nvar CellXfs = /** @__PURE__ @class */ (function () {\n function CellXfs() {\n }\n return CellXfs;\n}());\n/**\n * Alignment class\n * @private\n */\nvar Alignment = /** @__PURE__ @class */ (function () {\n function Alignment() {\n }\n return Alignment;\n}());\n/**\n * CellStyleXfs class\n * @private\n */\nvar CellStyleXfs = /** @__PURE__ @class */ (function () {\n function CellStyleXfs() {\n }\n return CellStyleXfs;\n}());\n/**\n * CellStyles class\n * @private\n */\nvar CellStyles = /** @__PURE__ @class */ (function () {\n function CellStyles() {\n this.name = 'Normal';\n this.xfId = 0;\n }\n return CellStyles;\n}());\n/**\n * NumFmt class\n * @private\n */\nvar NumFmt = /** @__PURE__ @class */ (function () {\n function NumFmt(id, code) {\n this.numFmtId = id;\n this.formatCode = code;\n }\n return NumFmt;\n}());\n/**\n * Border class\n * @private\n */\nvar Border = /** @__PURE__ @class */ (function () {\n function Border(mLine, mColor) {\n this.lineStyle = mLine;\n this.color = mColor;\n }\n return Border;\n}());\n/**\n * Borders class\n * @private\n */\nvar Borders = /** @__PURE__ @class */ (function () {\n function Borders() {\n this.left = new Border('none', '#FFFFFF');\n this.right = new Border('none', '#FFFFFF');\n this.top = new Border('none', '#FFFFFF');\n this.bottom = new Border('none', '#FFFFFF');\n this.all = new Border('none', '#FFFFFF');\n }\n return Borders;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Worksheet class\n * @private\n */\nvar Cell = /** @__PURE__ @class */ (function () {\n function Cell() {\n }\n return Cell;\n}());\n/**\n * Cells class\n * @private\n */\nvar Cells = /** @__PURE__ @class */ (function (_super) {\n __extends(Cells, _super);\n function Cells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (cell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var c = _a[_i];\n if (c.index === cell.index) {\n _this[count] = cell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(cell);\n }\n };\n return _this;\n }\n return Cells;\n}(Array));\n\n/**\n * Column class\n * @private\n */\nvar Column = /** @__PURE__ @class */ (function () {\n function Column() {\n }\n return Column;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Row class\n * @private\n */\nvar Row = /** @__PURE__ @class */ (function () {\n function Row() {\n }\n return Row;\n}());\n/**\n * Rows class\n * @private\n */\nvar Rows = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Rows, _super);\n function Rows() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (row) {\n _this.push(row);\n };\n return _this;\n }\n return Rows;\n}(Array));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Worksheets class\n * @private\n */\nvar Worksheets = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Worksheets, _super);\n function Worksheets() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return Worksheets;\n}(Array));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Worksheet class\n * @private\n */\nvar Worksheet = /** @__PURE__ @class */ (function () {\n function Worksheet() {\n this.isSummaryRowBelow = true;\n this.showGridLines = true;\n this.enableRtl = false;\n }\n return Worksheet;\n}());\n/**\n * Hyperlink class\n * @private\n */\nvar HyperLink = /** @__PURE__ @class */ (function () {\n function HyperLink() {\n }\n return HyperLink;\n}());\n/**\n * Grouping class\n * @private\n */\nvar Grouping = /** @__PURE__ @class */ (function () {\n function Grouping() {\n }\n return Grouping;\n}());\n/**\n * FreezePane class\n * @private\n */\nvar FreezePane = /** @__PURE__ @class */ (function () {\n function FreezePane() {\n }\n return FreezePane;\n}());\n/**\n * MergeCell\n * @private\n */\nvar MergeCell = /** @__PURE__ @class */ (function () {\n function MergeCell() {\n }\n return MergeCell;\n}());\n/**\n * MergeCells class\n * @private\n */\nvar MergeCells = /** @__PURE__ @class */ (function (_super) {\n __extends$3(MergeCells, _super);\n function MergeCells() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.add = function (mergeCell) {\n var inserted = false;\n var count = 0;\n for (var _i = 0, _a = _this; _i < _a.length; _i++) {\n var mCell = _a[_i];\n if (MergeCells.isIntersecting(mCell, mergeCell)) {\n var intersectingCell = new MergeCell();\n intersectingCell.x = Math.min(mCell.x, mergeCell.x);\n intersectingCell.y = Math.min(mCell.Y, mergeCell.y);\n intersectingCell.width = Math.max(mCell.Width + mCell.X, mergeCell.width + mergeCell.x);\n intersectingCell.height = Math.max(mCell.Height + mCell.Y, mergeCell.height + mergeCell.y);\n intersectingCell.ref = (_this[count].ref.split(':')[0]) + ':' + (mergeCell.ref.split(':')[1]);\n _this[count] = intersectingCell;\n mergeCell = intersectingCell;\n inserted = true;\n }\n count++;\n }\n if (!inserted) {\n _this.push(mergeCell);\n }\n return mergeCell;\n };\n return _this;\n }\n MergeCells.isIntersecting = function (base, compare) {\n return (base.x <= compare.x + compare.width)\n && (compare.x <= base.x + base.width)\n && (base.y <= compare.y + compare.height)\n && (compare.y <= base.y + base.height);\n };\n return MergeCells;\n}(Array));\n\n/**\n * Image class\n * @private\n */\nvar Image = /** @__PURE__ @class */ (function () {\n function Image() {\n }\n return Image;\n}());\n\n// import { IValueFormatter } from '../base/interface';\n/**\n * ValueFormatter class to globalize the value.\n * @private\n */\nvar ValueFormatter = /** @__PURE__ @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n // if (!isNullOrUndefined(cultureName)) {\n // this.intl.culture = cultureName;\n // }\n }\n ValueFormatter.prototype.getFormatFunction = function (format, isServerRendered) {\n if (format.type) {\n if (isServerRendered) {\n format.isServerRendered = true;\n }\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n // public getParserFunction(format: NumberFormatOptions | DateFormatOptions): Function {\n // if ((format).type) {\n // return this.intl.getDateParser(format);\n // } else {\n // return this.intl.getNumberParser(format);\n // }\n // }\n // public fromView(value: string, format: Function, type?: string): string | number | Date {\n // if (type === 'date' || type === 'datetime' || type === 'number') {\n // return format(value);\n // } else {\n // return value;\n // }\n // }\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n // public setCulture(cultureName: string): void {\n // if (!isNullOrUndefined(cultureName)) {\n // setCulture(cultureName);\n // }\n // }\n /* tslint:disable:no-any */\n ValueFormatter.prototype.displayText = function (value, format, isServerRendered) {\n return this.toView(value, this.getFormatFunction(format, isServerRendered));\n };\n return ValueFormatter;\n}());\n\n/**\n * CsvHelper class\n * @private\n */\nvar CsvHelper = /** @__PURE__ @class */ (function () {\n /* tslint:disable:no-any */\n function CsvHelper(json, separator) {\n this.csvStr = '';\n if (separator === null || separator === undefined) {\n this.separator = ',';\n }\n else {\n this.separator = separator;\n }\n this.formatter = new ValueFormatter();\n this.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n if (json.isServerRendered !== null && json.isServerRendered !== undefined) {\n this.isServerRendered = json.isServerRendered;\n }\n if (json.styles !== null && json.styles !== undefined) {\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined && json.styles[i].numberFormat !== undefined) {\n this.globalStyles.set(json.styles[i].name, json.styles[i].numberFormat);\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parseWorksheet(json.worksheets[0]);\n }\n //this.csvStr = 'a1,a2,a3\\nb1,b2,b3';\n }\n CsvHelper.prototype.parseWorksheet = function (json) {\n //Rows\n if (json.rows !== null && json.rows !== undefined) {\n this.parseRows(json.rows);\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRows = function (rows) {\n var count = 1;\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n //Row index\n if (row.index !== null && row.index !== undefined) {\n while (count < row.index) {\n this.csvStr += '\\r\\n';\n count++;\n }\n this.parseRow(row);\n }\n else {\n throw Error('Row index is missing.');\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseRow = function (row) {\n if (row.cells !== null && row.cells !== undefined) {\n var count = 1;\n for (var _i = 0, _a = row.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n //cell index\n if (cell.index !== null && cell.index !== undefined) {\n while (count < cell.index) {\n this.csvStr += this.separator;\n count++;\n }\n this.parseCell(cell);\n }\n else {\n throw Error('Cell index is missing.');\n }\n }\n }\n };\n /* tslint:disable:no-any */\n CsvHelper.prototype.parseCell = function (cell) {\n var csv = this.csvStr;\n if (cell.value !== undefined) {\n if (cell.value instanceof Date) {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: cell.style.numberFormat }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: cell.style.numberFormat }, this.isServerRendered));\n }\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n try {\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', skeleton: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n catch (error) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { type: 'dateTime', format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n }\n else {\n csv += cell.value;\n }\n }\n else if (typeof (cell.value) === 'boolean') {\n csv += cell.value ? 'TRUE' : 'FALSE';\n }\n else if (typeof (cell.value) === 'number') {\n if (cell.style !== undefined && cell.style.numberFormat !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: cell.style.numberFormat }, this.isServerRendered));\n }\n else if (cell.style !== undefined && cell.style.name !== undefined && this.globalStyles.has(cell.style.name)) {\n /* tslint:disable-next-line:max-line-length */\n csv += this.parseCellValue(this.formatter.displayText(cell.value, { format: this.globalStyles.get(cell.style.name) }, this.isServerRendered));\n }\n else {\n csv += cell.value;\n }\n }\n else {\n csv += this.parseCellValue(cell.value);\n }\n }\n this.csvStr = csv;\n };\n CsvHelper.prototype.parseCellValue = function (value) {\n var val = '';\n var length = value.length;\n for (var start = 0; start < length; start++) {\n if (value[start] === '\\\"') {\n val += value[start].replace('\\\"', '\\\"\\\"');\n }\n else {\n val += value[start];\n }\n }\n value = val;\n if (value.indexOf(this.separator) !== -1 || value.indexOf('\\n') !== -1) {\n return value = '\\\"' + value + '\\\"';\n }\n else {\n return value;\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n */\n CsvHelper.prototype.save = function (fileName) {\n this.buffer = new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(this.buffer, fileName);\n }\n else {\n var dataUrl_1 = window.URL.createObjectURL(this.buffer);\n var dwlLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n dwlLink.download = fileName;\n dwlLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n dwlLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n });\n }\n };\n CsvHelper.prototype.saveAsBlob = function () {\n return new Blob(['\\ufeff' + this.csvStr], { type: 'text/csv;charset=UTF-8' });\n };\n return CsvHelper;\n}());\n\n/**\n * BlobHelper class\n * @private\n */\nvar BlobHelper = /** @__PURE__ @class */ (function () {\n function BlobHelper() {\n /* tslint:disable:no-any */\n this.parts = [];\n }\n /* tslint:disable:no-any */\n BlobHelper.prototype.append = function (part) {\n this.parts.push(part);\n this.blob = undefined; // Invalidate the blob\n };\n BlobHelper.prototype.getBlob = function () {\n return new Blob(this.parts, { type: 'text/plain' });\n };\n return BlobHelper;\n}());\n\n/**\n * AutoFilters class\n * @private\n */\nvar AutoFilters = /** @__PURE__ @class */ (function () {\n function AutoFilters() {\n }\n return AutoFilters;\n}());\n\n/**\n * Workbook class\n */\nvar Workbook = /** @__PURE__ @class */ (function () {\n /* tslint:disable:no-any */\n function Workbook(json, saveType, culture, currencyString, separator) {\n this.sharedStringCount = 0;\n this.unitsProportions = [\n 96 / 75.0,\n 96 / 300.0,\n 96,\n 96 / 25.4,\n 96 / 2.54,\n 1,\n 96 / 72.0,\n 96 / 72.0 / 12700,\n ];\n /* tslint:disable:no-any */\n this.hyperlinkStyle = { fontColor: '#0000FF', underline: true };\n if (culture !== undefined) {\n this.culture = culture;\n }\n else {\n this.culture = 'en-US';\n }\n if (currencyString !== undefined) {\n this.currency = currencyString;\n }\n else {\n this.currency = 'USD';\n }\n this.intl = new Internationalization(this.culture);\n this.mSaveType = saveType;\n if (saveType === 'xlsx') {\n this.mArchive = new ZipArchive();\n this.sharedString = [];\n this.mFonts = [];\n this.mBorders = [];\n this.mStyles = [];\n this.printTitles = new Map();\n this.cellStyles = new Map();\n this.mNumFmt = new Map();\n this.mFills = new Map();\n this.mStyles.push(new CellStyle());\n this.mFonts.push(new Font());\n /* tslint:disable */\n this.cellStyles.set('Normal', new CellStyles());\n /* tslint:enable */\n this.mCellXfs = [];\n this.mCellStyleXfs = [];\n this.drawingCount = 0;\n this.imageCount = 0;\n if (json.styles !== null && json.styles !== undefined) {\n /* tslint:disable-next-line:no-any */\n this.globalStyles = new Map();\n for (var i = 0; i < json.styles.length; i++) {\n if (json.styles[i].name !== undefined) {\n if (!this.cellStyles.has(json.styles[i].name)) {\n var cellStyle = new CellStyle();\n cellStyle.isGlobalStyle = true;\n this.parserCellStyle(json.styles[i], cellStyle, 'none');\n var cellStylesIn = new CellStyles();\n cellStylesIn.name = cellStyle.name;\n cellStylesIn.xfId = (cellStyle.index - 1);\n this.cellStyles.set(cellStylesIn.name, cellStylesIn);\n /* tslint:disable-next-line:no-any */\n var tFormat = {};\n if (json.styles[i].numberFormat !== undefined) {\n tFormat.format = json.styles[i].numberFormat;\n }\n if (json.styles[i].type !== undefined) {\n tFormat.type = json.styles[i].type;\n }\n else {\n tFormat.type = 'datetime';\n }\n if (tFormat.format !== undefined) {\n this.globalStyles.set(json.styles[i].name, tFormat);\n }\n }\n else {\n throw Error('Style name ' + json.styles[i].name + ' is already existed');\n }\n }\n }\n }\n // Parses Worksheets data to DOM. \n if (json.worksheets !== null && json.worksheets !== undefined) {\n this.parserWorksheets(json.worksheets);\n }\n else {\n throw Error('Worksheet is expected.');\n }\n // Parses the BuiltInProperties data to DOM. \n if (json.builtInProperties !== null && json.builtInProperties !== undefined) {\n this.builtInProperties = new BuiltInProperties();\n this.parserBuiltInProperties(json.builtInProperties, this.builtInProperties);\n }\n }\n else {\n this.csvHelper = new CsvHelper(json, separator);\n }\n }\n /* tslint:disable:no-any */\n Workbook.prototype.parserBuiltInProperties = function (jsonBuiltInProperties, builtInProperties) {\n //Author\n if (jsonBuiltInProperties.author !== null && jsonBuiltInProperties.author !== undefined) {\n builtInProperties.author = jsonBuiltInProperties.author;\n }\n //Comments\n if (jsonBuiltInProperties.comments !== null && jsonBuiltInProperties.comments !== undefined) {\n builtInProperties.comments = jsonBuiltInProperties.comments;\n }\n //Category\n if (jsonBuiltInProperties.category !== null && jsonBuiltInProperties.category !== undefined) {\n builtInProperties.category = jsonBuiltInProperties.category;\n }\n //Company\n if (jsonBuiltInProperties.company !== null && jsonBuiltInProperties.company !== undefined) {\n builtInProperties.company = jsonBuiltInProperties.company;\n }\n //Manager\n if (jsonBuiltInProperties.manager !== null && jsonBuiltInProperties.manager !== undefined) {\n builtInProperties.manager = jsonBuiltInProperties.manager;\n }\n //Subject\n if (jsonBuiltInProperties.subject !== null && jsonBuiltInProperties.subject !== undefined) {\n builtInProperties.subject = jsonBuiltInProperties.subject;\n }\n //Title\n if (jsonBuiltInProperties.title !== null && jsonBuiltInProperties.title !== undefined) {\n builtInProperties.title = jsonBuiltInProperties.title;\n }\n //Creation date\n if (jsonBuiltInProperties.createdDate !== null && jsonBuiltInProperties.createdDate !== undefined) {\n builtInProperties.createdDate = jsonBuiltInProperties.createdDate;\n }\n //Modified date\n if (jsonBuiltInProperties.modifiedDate !== null && jsonBuiltInProperties.modifiedDate !== undefined) {\n builtInProperties.modifiedDate = jsonBuiltInProperties.modifiedDate;\n }\n //Tags\n if (jsonBuiltInProperties.tags !== null && jsonBuiltInProperties.tags !== undefined) {\n builtInProperties.tags = jsonBuiltInProperties.tags;\n }\n //Status\n if (jsonBuiltInProperties.status !== null && jsonBuiltInProperties.status !== undefined) {\n builtInProperties.status = jsonBuiltInProperties.status;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserWorksheets = function (json) {\n this.worksheets = new Worksheets();\n var length = json.length;\n for (var i = 0; i < length; i++) {\n var jsonSheet = json[i];\n var sheet = new Worksheet();\n this.mergeCells = new MergeCells();\n this.mergedCellsStyle = new Map();\n this.mHyperLinks = [];\n //Name\n if (jsonSheet.name !== null && jsonSheet.name !== undefined) {\n sheet.name = jsonSheet.name;\n }\n else {\n sheet.name = 'Sheet' + (i + 1).toString();\n }\n if (jsonSheet.enableRtl !== null && jsonSheet.enableRtl !== undefined) {\n sheet.enableRtl = jsonSheet.enableRtl;\n }\n sheet.index = (i + 1);\n //Columns\n if (jsonSheet.columns !== null && jsonSheet.columns !== undefined) {\n this.parserColumns(jsonSheet.columns, sheet);\n }\n //Rows\n if (jsonSheet.rows !== null && jsonSheet.rows !== undefined) {\n this.parserRows(jsonSheet.rows, sheet);\n }\n //showGridLines\n if (jsonSheet.showGridLines !== null && jsonSheet.showGridLines !== undefined) {\n sheet.showGridLines = jsonSheet.showGridLines;\n }\n //FreezePanes\n if (jsonSheet.freeze !== null && jsonSheet.freeze !== undefined) {\n this.parserFreezePanes(jsonSheet.freeze, sheet);\n }\n //Print Title\n if (jsonSheet.printTitle !== null && jsonSheet.printTitle !== undefined) {\n this.parserPrintTitle(jsonSheet.printTitle, sheet);\n }\n if (jsonSheet.pageSetup !== undefined) {\n if (jsonSheet.pageSetup.isSummaryRowBelow !== undefined) {\n sheet.isSummaryRowBelow = jsonSheet.pageSetup.isSummaryRowBelow;\n }\n }\n if (jsonSheet.images !== undefined) {\n this.parserImages(jsonSheet.images, sheet);\n }\n if (jsonSheet.autoFilters !== null && jsonSheet.autoFilters !== undefined) {\n this.parseFilters(jsonSheet.autoFilters, sheet);\n }\n sheet.index = (i + 1);\n sheet.mergeCells = this.mergeCells;\n sheet.hyperLinks = this.mHyperLinks;\n this.worksheets.push(sheet);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.mergeOptions = function (fromJson, toJson) {\n /* tslint:disable:no-any */\n var result = {};\n this.applyProperties(fromJson, result);\n this.applyProperties(toJson, result);\n return result;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.applyProperties = function (sourceJson, destJson) {\n var keys = Object.keys(sourceJson);\n for (var index = 0; index < keys.length; index++) {\n if (keys[index] !== 'name') {\n destJson[keys[index]] = sourceJson[keys[index]];\n }\n }\n };\n Workbook.prototype.getCellName = function (row, column) {\n return this.getColumnName(column) + row.toString();\n };\n Workbook.prototype.getColumnName = function (col) {\n col--;\n var strColumnName = '';\n do {\n var iCurrentDigit = col % 26;\n col = col / 26 - 1;\n strColumnName = String.fromCharCode(65 + iCurrentDigit) + strColumnName;\n } while (col >= 0);\n return strColumnName;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserPrintTitle = function (json, sheet) {\n var printTitleName = '';\n var titleRowName;\n if (json.fromRow !== null && json.fromRow !== undefined) {\n var fromRow = json.fromRow;\n var toRow = void 0;\n if (json.toRow !== null && json.toRow !== undefined) {\n toRow = json.toRow;\n }\n else {\n toRow = json.fromRow;\n }\n titleRowName = '$' + fromRow + ':$' + toRow;\n }\n var titleColName;\n if (json.fromColumn !== null && json.fromColumn !== undefined) {\n var fromColumn = json.fromColumn;\n var toColumn = void 0;\n if (json.toColumn !== null && json.toColumn !== undefined) {\n toColumn = json.toColumn;\n }\n else {\n toColumn = json.fromColumn;\n }\n titleColName = '$' + this.getColumnName(fromColumn) + ':$' + this.getColumnName(toColumn);\n }\n if (titleRowName !== undefined) {\n printTitleName += (sheet.name + '!' + titleRowName);\n }\n if (titleColName !== undefined && titleRowName !== undefined) {\n printTitleName += ',' + (sheet.name + '!' + titleColName);\n }\n else if (titleColName !== undefined) {\n printTitleName += (sheet.name + '!' + titleColName);\n }\n if (printTitleName !== '') {\n this.printTitles.set(sheet.index - 1, printTitleName);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserFreezePanes = function (json, sheet) {\n sheet.freezePanes = new FreezePane();\n if (json.row !== null && json.row !== undefined) {\n sheet.freezePanes.row = json.row;\n }\n else {\n sheet.freezePanes.row = 0;\n }\n if (json.column !== null && json.column !== undefined) {\n sheet.freezePanes.column = json.column;\n }\n else {\n sheet.freezePanes.column = 0;\n }\n sheet.freezePanes.leftCell = this.getCellName(sheet.freezePanes.row + 1, sheet.freezePanes.column + 1);\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserColumns = function (json, sheet) {\n var columnsLength = json.length;\n sheet.columns = [];\n for (var column = 0; column < columnsLength; column++) {\n var col = new Column();\n if (json[column].index !== null && json[column].index !== undefined) {\n col.index = json[column].index;\n }\n else {\n throw Error('Column index is missing.');\n }\n if (json[column].width !== null && json[column].width !== undefined) {\n col.width = json[column].width;\n }\n sheet.columns.push(col);\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRows = function (json, sheet) {\n var rowsLength = json.length;\n sheet.rows = new Rows();\n var rowId = 0;\n for (var r = 0; r < rowsLength; r++) {\n var row = this.parserRow(json[r], rowId);\n rowId = row.index;\n sheet.rows.add(row);\n }\n this.insertMergedCellsStyle(sheet);\n };\n Workbook.prototype.insertMergedCellsStyle = function (sheet) {\n var _this = this;\n if (this.mergeCells.length > 0) {\n this.mergedCellsStyle.forEach(function (value, key) {\n var row = sheet.rows.filter(function (item) {\n return item.index === value.y;\n })[0];\n if (!isNullOrUndefined(row)) {\n var cell = row.cells.filter(function (item) {\n return item.index === value.x;\n })[0];\n if (!isNullOrUndefined(cell)) {\n cell.styleIndex = value.styleIndex;\n }\n else {\n var cells = row.cells.filter(function (item) {\n return item.index <= value.x;\n });\n var insertIndex = 0;\n if (cells.length > 0) {\n insertIndex = row.cells.indexOf(cells[cells.length - 1]) + 1;\n }\n row.cells.splice(insertIndex, 0, _this.createCell(value, key));\n }\n }\n else {\n var rows = sheet.rows.filter(function (item) {\n return item.index <= value.y;\n });\n var rowToInsert = new Row();\n rowToInsert.index = value.y;\n rowToInsert.cells = new Cells();\n rowToInsert.cells.add(_this.createCell(value, key));\n var insertIndex = 0;\n if (rows.length > 0) {\n insertIndex = sheet.rows.indexOf(rows[rows.length - 1]) + 1;\n }\n sheet.rows.splice(insertIndex, 0, rowToInsert);\n }\n });\n }\n };\n Workbook.prototype.createCell = function (value, key) {\n var cellToInsert = new Cell();\n cellToInsert.refName = key;\n cellToInsert.index = value.x;\n cellToInsert.cellStyle = new CellStyle();\n cellToInsert.styleIndex = value.styleIndex;\n return cellToInsert;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserRow = function (json, rowIndex) {\n var row = new Row();\n //Row Height\n if (json.height !== null && json.height !== undefined) {\n row.height = json.height;\n }\n //Row index\n if (json.index !== null && json.index !== undefined) {\n row.index = json.index;\n }\n else {\n throw Error('Row index is missing.');\n }\n if (json.grouping !== null && json.grouping !== undefined) {\n this.parseGrouping(json.grouping, row);\n }\n this.parseCells(json.cells, row);\n return row;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseGrouping = function (json, row) {\n row.grouping = new Grouping();\n if (json.outlineLevel !== undefined) {\n row.grouping.outlineLevel = json.outlineLevel;\n }\n if (json.isCollapsed !== undefined) {\n row.grouping.isCollapsed = json.isCollapsed;\n }\n if (json.isHidden !== undefined) {\n row.grouping.isHidden = json.isHidden;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parseCells = function (json, row) {\n row.cells = new Cells();\n var cellsLength = json !== undefined ? json.length : 0;\n var spanMin = 1;\n var spanMax = 1;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n /* tslint:disable:no-any */\n var jsonCell = json[cellId];\n var cell = new Cell();\n //cell index\n if (jsonCell.index !== null && jsonCell.index !== undefined) {\n cell.index = jsonCell.index;\n }\n else {\n throw Error('Cell index is missing.');\n }\n if (cell.index < spanMin) {\n spanMin = cell.index;\n }\n else if (cell.index > spanMax) {\n spanMax = cell.index;\n }\n //Update the Cell name\n cell.refName = this.getCellName(row.index, cell.index);\n //Row span\n if (jsonCell.rowSpan !== null && jsonCell.rowSpan !== undefined) {\n cell.rowSpan = jsonCell.rowSpan - 1;\n }\n else {\n cell.rowSpan = 0;\n }\n //Column span\n if (jsonCell.colSpan !== null && jsonCell.colSpan !== undefined) {\n cell.colSpan = jsonCell.colSpan - 1;\n }\n else {\n cell.colSpan = 0;\n }\n //Hyperlink\n if (jsonCell.hyperlink !== null && jsonCell.hyperlink !== undefined) {\n var hyperLink = new HyperLink();\n if (jsonCell.hyperlink.target !== undefined) {\n hyperLink.target = jsonCell.hyperlink.target;\n if (jsonCell.hyperlink.displayText !== undefined) {\n cell.value = jsonCell.hyperlink.displayText;\n }\n else {\n cell.value = jsonCell.hyperlink.target;\n }\n cell.type = this.getCellValueType(cell.value);\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n cell.cellStyle = new CellStyle();\n /* tslint:disable-next-line:max-line-length */\n this.parserCellStyle((jsonCell.style !== undefined ? this.mergeOptions(jsonCell.style, this.hyperlinkStyle) : this.hyperlinkStyle), cell.cellStyle, 'string');\n cell.styleIndex = cell.cellStyle.index;\n }\n }\n // formulas\n if (jsonCell.formula !== null && jsonCell.formula !== undefined) {\n cell.formula = jsonCell.formula;\n cell.type = 'formula';\n }\n //Cell value\n if (jsonCell.value !== null && jsonCell.value !== undefined) {\n if (cell.formula !== undefined) {\n cell.value = 0;\n }\n else {\n cell.value = jsonCell.value;\n cell.type = this.getCellValueType(cell.value);\n }\n }\n if (jsonCell.style !== null && jsonCell.style !== undefined && cell.styleIndex === undefined) {\n cell.cellStyle = new CellStyle();\n if (cell.value instanceof Date) {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type, 14);\n }\n else {\n this.parserCellStyle(jsonCell.style, cell.cellStyle, cell.type);\n }\n cell.styleIndex = cell.cellStyle.index;\n }\n else if (cell.value instanceof Date) {\n cell.cellStyle = new CellStyle();\n this.parserCellStyle({}, cell.cellStyle, cell.type, 14);\n cell.styleIndex = cell.cellStyle.index;\n }\n this.parseCellType(cell);\n this.mergeCells = this.processMergeCells(cell, row.index, this.mergeCells);\n row.cells.add(cell);\n \n }\n row.spans = (spanMin) + ':' + (spanMax);\n };\n Workbook.prototype.GetColors = function () {\n var colors;\n colors = new Map();\n /* tslint:disable */\n colors.set('WHITE', 'FFFFFFFF');\n /* tslint:disable */\n colors.set('SILVER', 'FFC0C0C0');\n /* tslint:disable */\n colors.set('GRAY', 'FF808080');\n /* tslint:disable */\n colors.set('BLACK', 'FF000000');\n /* tslint:disable */\n colors.set('RED', 'FFFF0000');\n /* tslint:disable */\n colors.set('MAROON', 'FF800000');\n /* tslint:disable */\n colors.set('YELLOW', 'FFFFFF00');\n /* tslint:disable */\n colors.set('OLIVE', 'FF808000');\n /* tslint:disable */\n colors.set('LIME', 'FF00FF00');\n /* tslint:disable */\n colors.set('GREEN', 'FF008000');\n /* tslint:disable */\n colors.set('AQUA', 'FF00FFFF');\n /* tslint:disable */\n colors.set('TEAL', 'FF008080');\n /* tslint:disable */\n colors.set('BLUE', 'FF0000FF');\n /* tslint:disable */\n colors.set('NAVY', 'FF000080');\n /* tslint:disable */\n colors.set('FUCHSIA', 'FFFF00FF');\n /* tslint:disable */\n colors.set('PURPLE', 'FF800080');\n return colors;\n };\n Workbook.prototype.processColor = function (colorVal) {\n if (colorVal.indexOf('#') === 0) {\n return colorVal.replace('#', 'FF');\n }\n colorVal = colorVal.toUpperCase();\n this.rgbColors = this.GetColors();\n if (this.rgbColors.has(colorVal)) {\n colorVal = this.rgbColors.get(colorVal);\n }\n else {\n colorVal = 'FF000000';\n }\n return colorVal;\n };\n Workbook.prototype.processCellValue = function (value, cell) {\n var cellValue = value;\n if (value.indexOf(\"\") !== -1 ||\n value.indexOf(\"\") !== -1 || value.indexOf(\"\") !== -1) {\n var processedVal = '';\n var startindex = value.indexOf('<', 0);\n var endIndex = value.indexOf('>', startindex + 1);\n if (startindex >= 0 && endIndex >= 0) {\n if (startindex !== 0) {\n processedVal += '' + this.processString(value.substring(0, startindex)) + '';\n }\n while (startindex >= 0 && endIndex >= 0) {\n endIndex = value.indexOf('>', startindex + 1);\n if (endIndex >= 0) {\n var subString = value.substring(startindex + 1, endIndex);\n startindex = value.indexOf('<', endIndex + 1);\n if (startindex < 0) {\n startindex = cellValue.length;\n }\n var text = cellValue.substring(endIndex + 1, startindex);\n if (text.length !== 0) {\n var subSplit = subString.split(' ');\n if (subSplit.length > 0) {\n processedVal += '';\n }\n if (subSplit.length > 1) {\n for (var _i = 0, subSplit_1 = subSplit; _i < subSplit_1.length; _i++) {\n var element = subSplit_1[_i];\n var start = element.trim().substring(0, 5);\n switch (start) {\n case 'size=':\n processedVal += '';\n break;\n case 'face=':\n processedVal += '';\n break;\n case 'color':\n processedVal += '';\n break;\n case 'href=':\n var hyperLink = new HyperLink();\n hyperLink.target = element.substring(6, element.length - 1).trim();\n hyperLink.ref = cell.refName;\n hyperLink.rId = (this.mHyperLinks.length + 1);\n this.mHyperLinks.push(hyperLink);\n processedVal += '';\n break;\n }\n }\n }\n else if (subSplit.length === 1) {\n var style = subSplit[0].trim();\n switch (style) {\n case 'b':\n processedVal += '';\n break;\n case 'i':\n processedVal += '';\n break;\n case 'u':\n processedVal += '';\n break;\n }\n }\n processedVal += '' + this.processString(text) + '';\n }\n }\n }\n if (processedVal === '') {\n return cellValue;\n }\n return processedVal;\n }\n else {\n return cellValue;\n }\n }\n else {\n return cellValue;\n }\n };\n Workbook.prototype.applyGlobalStyle = function (json, cellStyle) {\n if (this.cellStyles.has(json.name)) {\n cellStyle.index = this.mStyles.filter(function (a) { return (a.name === json.name); })[0].index;\n cellStyle.name = json.name;\n }\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserCellStyle = function (json, cellStyle, cellType, defStyleIndex) {\n //name\n if (json.name !== null && json.name !== undefined) {\n if (cellStyle.isGlobalStyle) {\n cellStyle.name = json.name;\n }\n else {\n this.applyGlobalStyle(json, cellStyle);\n return;\n }\n }\n //background color\n if (json.backColor !== null && json.backColor !== undefined) {\n cellStyle.backColor = json.backColor;\n }\n //borders\n //leftBorder\n cellStyle.borders = new Borders();\n //AllBorder\n if (json.borders !== null && json.borders !== undefined) {\n this.parserBorder(json.borders, cellStyle.borders.all);\n }\n //leftborder\n if (json.leftBorder !== null && json.leftBorder !== undefined) {\n this.parserBorder(json.leftBorder, cellStyle.borders.left);\n }\n //rightBorder\n if (json.rightBorder !== null && json.rightBorder !== undefined) {\n this.parserBorder(json.rightBorder, cellStyle.borders.right);\n }\n //topBorder\n if (json.topBorder !== null && json.topBorder !== undefined) {\n this.parserBorder(json.topBorder, cellStyle.borders.top);\n }\n //bottomBorder\n if (json.bottomBorder !== null && json.bottomBorder !== undefined) {\n this.parserBorder(json.bottomBorder, cellStyle.borders.bottom);\n }\n //fontName\n if (json.fontName !== null && json.fontName !== undefined) {\n cellStyle.fontName = json.fontName;\n }\n //fontSize\n if (json.fontSize !== null && json.fontSize !== undefined) {\n cellStyle.fontSize = json.fontSize;\n }\n //fontColor\n if (json.fontColor !== null && json.fontColor !== undefined) {\n cellStyle.fontColor = json.fontColor;\n }\n //italic\n if (json.italic !== null && json.italic !== undefined) {\n cellStyle.italic = json.italic;\n }\n //bold\n if (json.bold !== null && json.bold !== undefined) {\n cellStyle.bold = json.bold;\n }\n //hAlign\n if (json.hAlign !== null && json.hAlign !== undefined) {\n cellStyle.hAlign = json.hAlign.toLowerCase();\n }\n //indent\n if (json.indent !== null && json.indent !== undefined) {\n cellStyle.indent = json.indent;\n if (!(cellStyle.hAlign === 'left' || cellStyle.hAlign === 'right')) {\n cellStyle.hAlign = 'left';\n }\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n cellStyle.rotation = json.rotation;\n }\n //vAlign\n if (json.vAlign !== null && json.vAlign !== undefined) {\n cellStyle.vAlign = json.vAlign.toLowerCase();\n }\n //underline\n if (json.underline !== null && json.underline !== undefined) {\n cellStyle.underline = json.underline;\n }\n //strikeThrough\n if (json.strikeThrough !== null && json.strikeThrough !== undefined) {\n cellStyle.strikeThrough = json.strikeThrough;\n }\n //wrapText\n if (json.wrapText !== null && json.wrapText !== undefined) {\n cellStyle.wrapText = json.wrapText;\n }\n //numberFormat\n if (json.numberFormat !== null && json.numberFormat !== undefined) {\n if (json.type !== null && json.type !== undefined) {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, json.type);\n }\n else {\n cellStyle.numberFormat = this.getNumberFormat(json.numberFormat, cellType);\n }\n }\n else if (defStyleIndex !== undefined) {\n cellStyle.numFmtId = 14;\n cellStyle.numberFormat = 'GENERAL';\n }\n else {\n cellStyle.numberFormat = 'GENERAL';\n }\n cellStyle.index = this.processCellStyle(cellStyle);\n };\n Workbook.prototype.switchNumberFormat = function (numberFormat, type) {\n var format = this.getNumberFormat(numberFormat, type);\n if (format !== numberFormat) {\n var numFmt = this.mNumFmt.get(numberFormat);\n if (numFmt !== undefined) {\n numFmt.formatCode = format;\n if (this.mNumFmt.has(format)) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXfs = _a[_i];\n if (cellStyleXfs.numFmtId === numFmt.numFmtId) {\n cellStyleXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n for (var _b = 0, _c = this.mCellXfs; _b < _c.length; _b++) {\n var cellXfs = _c[_b];\n if (cellXfs.numFmtId === numFmt.numFmtId) {\n cellXfs.numFmtId = this.mNumFmt.get(format).numFmtId;\n }\n }\n }\n }\n }\n };\n Workbook.prototype.getNumberFormat = function (numberFormat, type) {\n var returnFormat;\n switch (type) {\n case 'number':\n try {\n returnFormat = this.intl.getNumberPattern({ format: numberFormat, currency: this.currency, useGrouping: true }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n break;\n case 'datetime':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'dateTime' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'date':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'date' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n case 'time':\n try {\n returnFormat = this.intl.getDatePattern({ skeleton: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n try {\n returnFormat = this.intl.getDatePattern({ format: numberFormat, type: 'time' }, true);\n }\n catch (error) {\n returnFormat = numberFormat;\n }\n }\n break;\n default:\n returnFormat = numberFormat;\n break;\n }\n return returnFormat;\n };\n /* tslint:disable:no-any */\n Workbook.prototype.parserBorder = function (json, border) {\n if (json.color !== null && json.color !== undefined) {\n border.color = json.color;\n }\n else {\n border.color = '#000000';\n }\n if (json.lineStyle !== null && json.lineStyle !== undefined) {\n border.lineStyle = json.lineStyle;\n }\n else {\n border.lineStyle = 'thin';\n }\n };\n Workbook.prototype.processCellStyle = function (style) {\n if (style.isGlobalStyle) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n var compareResult = this.compareStyle(style);\n if (!compareResult.result) {\n this.processNumFormatId(style);\n this.mStyles.push(style);\n return this.mStyles.length;\n }\n else {\n //Return the index of the already existing style.\n return compareResult.index;\n }\n }\n };\n Workbook.prototype.processNumFormatId = function (style) {\n if (style.numberFormat !== 'GENERAL' && !this.mNumFmt.has(style.numberFormat)) {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n }\n };\n Workbook.prototype.isNewFont = function (toCompareStyle) {\n var result = false;\n var index = 0;\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n index++;\n var fontColor = undefined;\n if (toCompareStyle.fontColor !== undefined) {\n fontColor = ('FF' + toCompareStyle.fontColor.replace('#', ''));\n }\n result = font.color === fontColor &&\n font.b === toCompareStyle.bold &&\n font.i === toCompareStyle.italic &&\n font.u === toCompareStyle.underline &&\n font.strike === toCompareStyle.strikeThrough &&\n font.name === toCompareStyle.fontName &&\n font.sz === toCompareStyle.fontSize;\n if (result) {\n break;\n }\n }\n index = index - 1;\n return { index: index, result: result };\n };\n Workbook.prototype.isNewBorder = function (toCompareStyle) {\n var bStyle = new CellStyle();\n if (this.isAllBorder(toCompareStyle.borders)) {\n return (bStyle.borders.all.color === toCompareStyle.borders.all.color &&\n bStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle);\n }\n else {\n return (bStyle.borders.left.color === toCompareStyle.borders.left.color &&\n bStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n bStyle.borders.right.color === toCompareStyle.borders.right.color &&\n bStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n bStyle.borders.top.color === toCompareStyle.borders.top.color &&\n bStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n bStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n bStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle);\n }\n };\n Workbook.prototype.isAllBorder = function (toCompareBorder) {\n var allBorderStyle = new CellStyle();\n return allBorderStyle.borders.all.color !== toCompareBorder.all.color &&\n allBorderStyle.borders.all.lineStyle !== toCompareBorder.all.lineStyle;\n };\n Workbook.prototype.compareStyle = function (toCompareStyle) {\n var result = true;\n var index = 0;\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var baseStyle = _a[_i];\n result = baseStyle.isGlobalStyle ? false : (baseStyle.backColor === toCompareStyle.backColor &&\n baseStyle.bold === toCompareStyle.bold &&\n baseStyle.numFmtId === toCompareStyle.numFmtId &&\n baseStyle.numberFormat === toCompareStyle.numberFormat &&\n baseStyle.type === toCompareStyle.type &&\n baseStyle.fontColor === toCompareStyle.fontColor &&\n baseStyle.fontName === toCompareStyle.fontName &&\n baseStyle.fontSize === toCompareStyle.fontSize &&\n baseStyle.hAlign === toCompareStyle.hAlign &&\n baseStyle.italic === toCompareStyle.italic &&\n baseStyle.underline === toCompareStyle.underline &&\n baseStyle.strikeThrough === toCompareStyle.strikeThrough &&\n baseStyle.vAlign === toCompareStyle.vAlign &&\n baseStyle.indent === toCompareStyle.indent &&\n baseStyle.rotation === toCompareStyle.rotation &&\n baseStyle.wrapText === toCompareStyle.wrapText &&\n (baseStyle.borders.all.color === toCompareStyle.borders.all.color &&\n baseStyle.borders.all.lineStyle === toCompareStyle.borders.all.lineStyle) &&\n (baseStyle.borders.left.color === toCompareStyle.borders.left.color &&\n baseStyle.borders.left.lineStyle === toCompareStyle.borders.left.lineStyle &&\n baseStyle.borders.right.color === toCompareStyle.borders.right.color &&\n baseStyle.borders.right.lineStyle === toCompareStyle.borders.right.lineStyle &&\n baseStyle.borders.top.color === toCompareStyle.borders.top.color &&\n baseStyle.borders.top.lineStyle === toCompareStyle.borders.top.lineStyle &&\n baseStyle.borders.bottom.color === toCompareStyle.borders.bottom.color &&\n baseStyle.borders.bottom.lineStyle === toCompareStyle.borders.bottom.lineStyle));\n if (result) {\n index = baseStyle.index;\n break;\n }\n }\n return { index: index, result: result };\n };\n Workbook.prototype.contains = function (array, item) {\n var index = array.indexOf(item);\n return index > -1 && index < array.length;\n };\n Workbook.prototype.getCellValueType = function (value) {\n if (value instanceof Date) {\n return 'datetime';\n }\n else if (typeof (value) === 'boolean') {\n return 'boolean';\n }\n else if (typeof (value) === 'number') {\n return 'number';\n }\n else {\n return 'string';\n }\n };\n Workbook.prototype.parseCellType = function (cell) {\n var type = cell.type;\n var saveType;\n var value = cell.value;\n switch (type) {\n case 'datetime':\n value = this.toOADate(value);\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n var value_1 = this.globalStyles.get(cell.cellStyle.name);\n this.switchNumberFormat(value_1.format, value_1.type);\n }\n }\n saveType = 'n';\n break;\n //TODO: Update the number format index and style\n case 'boolean':\n value = value ? 1 : 0;\n saveType = 'b';\n break;\n case 'number':\n saveType = 'n';\n if (cell.cellStyle !== undefined && cell.cellStyle.name !== undefined) {\n if (this.globalStyles.has(cell.cellStyle.name)) {\n this.switchNumberFormat(this.globalStyles.get(cell.cellStyle.name).format, 'number');\n }\n }\n break;\n case 'string':\n this.sharedStringCount++;\n saveType = 's';\n var sstvalue = this.processCellValue(value, cell);\n if (!this.contains(this.sharedString, sstvalue)) {\n this.sharedString.push(sstvalue);\n }\n value = this.sharedString.indexOf(sstvalue);\n break;\n default:\n break;\n }\n cell.saveType = saveType;\n cell.value = value;\n };\n Workbook.prototype.parserImages = function (json, sheet) {\n var imagesLength = json.length;\n sheet.images = [];\n for (var p = 0; p < imagesLength; p++) {\n var image = this.parserImage(json[p]);\n sheet.images.push(image);\n }\n };\n Workbook.prototype.parseFilters = function (json, sheet) {\n sheet.autoFilters = new AutoFilters();\n if (json.row !== null && json.row !== undefined)\n sheet.autoFilters.row = json.row;\n else\n throw new Error('Argument Null Exception: row null or empty');\n if (json.lastRow !== null && json.lastRow !== undefined)\n sheet.autoFilters.lastRow = json.lastRow;\n else\n throw new Error('Argument Null Exception: lastRow cannot be null or empty');\n if (json.column !== null && json.column !== undefined)\n sheet.autoFilters.column = json.column;\n else\n throw new Error('Argument Null Exception: column cannot be null or empty');\n if (json.lastColumn !== null && json.row !== undefined)\n sheet.autoFilters.lastColumn = json.lastColumn;\n else\n throw new Error('Argument Null Exception: lastColumn cannot be null or empty');\n };\n Workbook.prototype.parserImage = function (json) {\n var image = new Image();\n if (json.image !== null && json.image !== undefined) {\n image.image = json.image;\n }\n if (json.row !== null && json.row !== undefined) {\n image.row = json.row;\n }\n if (json.column !== null && json.column !== undefined) {\n image.column = json.column;\n }\n if (json.lastRow !== null && json.lastRow !== undefined) {\n image.lastRow = json.lastRow;\n }\n if (json.lastColumn !== null && json.lastColumn !== undefined) {\n image.lastColumn = json.lastColumn;\n }\n if (json.width !== null && json.width !== undefined) {\n image.width = json.width;\n }\n if (json.height !== null && json.height !== undefined) {\n image.height = json.height;\n }\n if (json.horizontalFlip !== null && json.horizontalFlip !== undefined) {\n image.horizontalFlip = json.horizontalFlip;\n }\n if (json.verticalFlip !== null && json.verticalFlip !== undefined) {\n image.verticalFlip = json.verticalFlip;\n }\n if (json.rotation !== null && json.rotation !== undefined) {\n image.rotation = json.rotation;\n }\n return image;\n };\n Workbook.prototype.saveAsBlob = function (blobSaveType) {\n var _this = this;\n switch (blobSaveType) {\n case 'text/csv':\n return new Promise(function (resolve, reject) {\n var obj = {};\n obj.blobData = _this.csvHelper.saveAsBlob();\n resolve(obj);\n });\n default:\n return new Promise(function (resolve, reject) {\n _this.saveInternal();\n _this.mArchive.saveAsBlob().then(function (blob) {\n var obj = {};\n obj.blobData = new Blob([blob], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n resolve(obj);\n });\n });\n }\n };\n Workbook.prototype.save = function (fileName, proxyUrl) {\n var _this = this;\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('Argument Null Exception: fileName cannot be null or empty');\n }\n var xlsxMatch = fileName.match('.xlsx$');\n var csvMatch = fileName.match('.csv$');\n if (xlsxMatch !== null && xlsxMatch[0] === ('.' + this.mSaveType)) {\n this.saveInternal();\n this.mArchive.save(fileName).then(function () {\n _this.mArchive.destroy();\n });\n }\n else if (csvMatch !== null && csvMatch[0] === ('.' + this.mSaveType)) {\n this.csvHelper.save(fileName);\n }\n else {\n throw Error('Save type and file extension is different.');\n }\n };\n Workbook.prototype.saveInternal = function () {\n this.saveWorkbook();\n this.saveWorksheets();\n this.saveSharedString();\n this.saveStyles();\n this.saveApp(this.builtInProperties);\n this.saveCore(this.builtInProperties);\n this.saveContentType();\n this.saveTopLevelRelation();\n this.saveWorkbookRelation();\n };\n Workbook.prototype.saveWorkbook = function () {\n /* tslint:disable-next-line:max-line-length */\n var workbookTemp = '';\n var sheets = '';\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n var sheetName = this.worksheets[i].name;\n sheetName = sheetName.replace(\"&\", \"&\");\n sheetName = sheetName.replace(\"<\", \"<\");\n sheetName = sheetName.replace(\">\", \">\");\n sheetName = sheetName.replace(\"\\\"\", \""\");\n sheets += '';\n }\n sheets += '';\n workbookTemp += sheets;\n if (this.printTitles.size > 0) {\n var printTitle_1 = '';\n this.printTitles.forEach(function (value, key) {\n printTitle_1 += '' + value + '';\n });\n printTitle_1 += '';\n workbookTemp += printTitle_1;\n }\n this.addToArchive(workbookTemp + '', 'xl/workbook.xml');\n };\n Workbook.prototype.saveWorksheets = function () {\n var length = this.worksheets.length;\n for (var i = 0; i < length; i++) {\n this.saveWorksheet(this.worksheets[i], i);\n }\n };\n Workbook.prototype.saveWorksheet = function (sheet, index) {\n var sheetBlob = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetString = '';\n if (!sheet.isSummaryRowBelow) {\n sheetString += ('' + '' + '' + '');\n }\n else {\n sheetString += ('');\n }\n sheetString += this.saveSheetView(sheet);\n if (sheet.columns !== undefined) {\n var colString = '';\n for (var _i = 0, _a = sheet.columns; _i < _a.length; _i++) {\n var column = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n if (column.width !== undefined) {\n colString += '';\n }\n else {\n colString += '';\n }\n }\n sheetString += (colString + '');\n }\n sheetString += ('');\n sheetBlob.append(sheetString);\n sheetString = '';\n if (sheet.rows !== undefined) {\n for (var _b = 0, _c = sheet.rows; _b < _c.length; _b++) {\n var row = _c[_b];\n var rowString = '');\n for (var _d = 0, _e = row.cells; _d < _e.length; _d++) {\n var cell = _e[_d];\n if (cell !== undefined && (cell.value !== undefined || cell.cellStyle !== undefined)) {\n rowString += ('');\n if (cell.formula !== undefined) {\n rowString += ('' + cell.formula + '');\n }\n if (cell.value !== undefined) {\n rowString += ('' + cell.value + '');\n }\n else {\n rowString += ('');\n }\n }\n }\n rowString += ('');\n sheetBlob.append(rowString);\n }\n }\n sheetString += ('');\n /* tslint:disable-next-line:max-line-length */\n if (sheet.autoFilters !== null && sheet.autoFilters !== undefined)\n sheetString += ('');\n if (sheet.mergeCells.length > 0) {\n sheetString += ('');\n for (var _f = 0, _g = sheet.mergeCells; _f < _g.length; _f++) {\n var mCell = _g[_f];\n sheetString += ('');\n }\n sheetString += ('');\n }\n if (sheet.hyperLinks.length > 0) {\n sheetString += ('');\n for (var _h = 0, _j = sheet.hyperLinks; _h < _j.length; _h++) {\n var hLink = _j[_h];\n sheetString += ('');\n }\n sheetString += ('');\n }\n /* tslint:disable-next-line:max-line-length */\n sheetString += ('');\n if (sheet.images != undefined && sheet.images.length > 0) {\n this.drawingCount++;\n this.saveDrawings(sheet, sheet.index);\n sheetString += '';\n }\n this.addToArchive(this.saveSheetRelations(sheet), ('xl/worksheets/_rels/sheet' + sheet.index + '.xml.rels'));\n sheetBlob.append(sheetString + '');\n this.addToArchive(sheetBlob.getBlob(), 'xl/worksheets' + '/sheet' + (index + 1) + '.xml');\n };\n Workbook.prototype.saveDrawings = function (sheet, index) {\n var drawings = new BlobHelper();\n /* tslint:disable-next-line:max-line-length */\n var sheetDrawingString = '';\n if (sheet.images !== undefined) {\n var imgId = 0;\n for (var _i = 0, _a = sheet.images; _i < _a.length; _i++) {\n var pic = _a[_i];\n if (pic.height !== undefined && pic.width !== undefined) {\n this.updatelastRowOffset(sheet, pic);\n this.updatelastColumnOffSet(sheet, pic);\n pic.lastRow -= 1;\n pic.lastColumn -= 1;\n }\n else if (pic.lastRow !== undefined && pic.lastColumn !== undefined) {\n pic.lastRowOffset = 0;\n pic.lastColOffset = 0;\n }\n imgId++;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.column - 1;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.row - 1;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += 0;\n sheetDrawingString += '';\n sheetDrawingString += '';\n //col\n sheetDrawingString += pic.lastColumn;\n sheetDrawingString += '';\n //colOff\n sheetDrawingString += pic.lastColOffset;\n sheetDrawingString += '';\n //row\n sheetDrawingString += pic.lastRow;\n sheetDrawingString += '';\n //rowOff\n sheetDrawingString += pic.lastRowOffset;\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += ' ';\n sheetDrawingString += ' ';\n sheetDrawingString += '';\n /* tslint:disable-next-line:max-line-length */\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '';\n sheetDrawingString += '= -3600) {\n sheetDrawingString += ' rot=\"' + (pic.rotation * 60000) + '\"';\n }\n if (pic.verticalFlip != undefined && pic.verticalFlip != false) {\n sheetDrawingString += ' flipV=\"1\"';\n }\n if (pic.horizontalFlip != undefined && pic.horizontalFlip != false) {\n sheetDrawingString += ' flipH=\"1\"';\n }\n sheetDrawingString += '/>';\n sheetDrawingString += '';\n sheetDrawingString += '';\n var imageData = this.convertBase64toImage(pic.image);\n this.imageCount += 1;\n this.addToArchive(imageData, 'xl/media/image' + this.imageCount + '.png');\n }\n drawings.append(sheetDrawingString);\n drawings.append('');\n this.saveDrawingRelations(sheet);\n this.addToArchive(drawings.getBlob(), 'xl/drawings/drawing' + this.drawingCount + '.xml');\n }\n };\n Workbook.prototype.updatelastRowOffset = function (sheet, picture) {\n var iCurHeight = picture.height;\n var iCurRow = picture.row;\n var iCurOffset = 0;\n while (iCurHeight >= 0) {\n var iRowHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n iRowHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n iRowHeight = this.convertToPixels(15);\n var iSpaceInCell = iRowHeight - (iCurOffset * iRowHeight / 256);\n if (iSpaceInCell > iCurHeight) {\n picture.lastRow = iCurRow;\n picture.lastRowOffset = iCurOffset + (iCurHeight * 256 / iRowHeight);\n var rowHiddenHeight = 0;\n if (sheet.rows !== undefined && sheet.rows[iCurRow - 1] !== undefined)\n rowHiddenHeight = this.convertToPixels(sheet.rows[iCurRow - 1].height === undefined ? 15 : sheet.rows[iCurRow - 1].height);\n else\n rowHiddenHeight = this.convertToPixels(15);\n picture.lastRowOffset = (rowHiddenHeight * picture.lastRowOffset) / 256;\n picture.lastRowOffset = Math.round(picture.lastRowOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurHeight -= iSpaceInCell;\n iCurRow++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.updatelastColumnOffSet = function (sheet, picture) {\n var iCurWidth = picture.width;\n var iCurCol = picture.column;\n var iCurOffset = 0;\n while (iCurWidth >= 0) {\n var iColWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n iColWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n iColWidth = this.ColumnWidthToPixels(8.43);\n var iSpaceInCell = iColWidth - (iCurOffset * iColWidth / 1024);\n if (iSpaceInCell > iCurWidth) {\n picture.lastColumn = iCurCol;\n picture.lastColOffset = iCurOffset + (iCurWidth * 1024 / iColWidth);\n var colHiddenWidth = 0;\n if (sheet.columns !== undefined && sheet.columns[iCurCol - 1] !== undefined)\n colHiddenWidth = this.ColumnWidthToPixels(sheet.columns[iCurCol - 1].width === undefined ? 8.43 : sheet.columns[iCurCol - 1].width);\n else\n colHiddenWidth = this.ColumnWidthToPixels(8.43);\n picture.lastColOffset = (colHiddenWidth * picture.lastColOffset) / 1024;\n picture.lastColOffset = Math.round(picture.lastColOffset / this.unitsProportions[7]);\n break;\n }\n else {\n iCurWidth -= iSpaceInCell;\n iCurCol++;\n iCurOffset = 0;\n }\n }\n };\n Workbook.prototype.convertToPixels = function (value) {\n return value * this.unitsProportions[6];\n };\n Workbook.prototype.convertBase64toImage = function (img) {\n var byteStr = window.atob(img);\n var buffer = new ArrayBuffer(byteStr.length);\n var data = new Uint8Array(buffer);\n for (var i = 0; i < byteStr.length; i++) {\n data[i] = byteStr.charCodeAt(i);\n }\n var blob = new Blob([data], { type: 'image/png' });\n return blob;\n };\n Workbook.prototype.saveDrawingRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var drawingRelation = '';\n var length = sheet.images.length;\n var id = this.imageCount - sheet.images.length;\n for (var i = 1; i <= length; i++) {\n id++;\n /* tslint:disable-next-line:max-line-length */\n drawingRelation += '';\n }\n this.addToArchive((drawingRelation + ''), 'xl/drawings/_rels/drawing' + this.drawingCount + '.xml.rels');\n };\n Workbook.prototype.pixelsToColumnWidth = function (pixels) {\n var dDigitWidth = 7;\n var val = (pixels > dDigitWidth + 5) ?\n this.trunc((pixels - 5) / dDigitWidth * 100 + 0.5) / 100 :\n pixels / (dDigitWidth + 5);\n return (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n };\n Workbook.prototype.ColumnWidthToPixels = function (val) {\n var dDigitWidth = 7;\n var fileWidth = (val > 1) ?\n ((val * dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0 :\n (val * (dDigitWidth + 5) / dDigitWidth * 256.0) / 256.0;\n return this.trunc(((256 * fileWidth + this.trunc(128 / dDigitWidth)) / 256) * dDigitWidth);\n };\n Workbook.prototype.trunc = function (x) {\n var n = x - x % 1;\n return n === 0 && (x < 0 || (x === 0 && (1 / x !== 1 / 0))) ? -0 : n;\n };\n Workbook.prototype.pixelsToRowHeight = function (pixels) {\n return (pixels * this.unitsProportions[5] / this.unitsProportions[6]);\n };\n Workbook.prototype.saveSheetRelations = function (sheet) {\n /* tslint:disable-next-line:max-line-length */\n var relStr = '';\n for (var _i = 0, _a = sheet.hyperLinks; _i < _a.length; _i++) {\n var hLink = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n if (sheet.images != undefined && sheet.images.length > 0) {\n /* tslint:disable-next-line:max-line-length */\n relStr += '';\n }\n relStr += '';\n return relStr;\n };\n Workbook.prototype.saveSheetView = function (sheet) {\n var paneString = ' 0) {\n /* tslint:disable-next-line:max-line-length */\n var sstStart = '';\n var si = '';\n for (var i = 0; i < length; i++) {\n if (this.sharedString[i].indexOf('') !== 0) {\n si += '';\n si += this.processString(this.sharedString[i]);\n si += '';\n }\n else {\n si += '';\n si += this.sharedString[i];\n si += '';\n }\n }\n si += '';\n this.addToArchive(sstStart + si, 'xl/sharedStrings.xml');\n }\n };\n Workbook.prototype.processString = function (value) {\n if (typeof value == \"string\") {\n if (value.indexOf('&') !== -1) {\n value = value.replace(/&/g, '&');\n }\n if (value.indexOf('<') !== -1) {\n value = value.replace(/') !== -1) {\n value = value.replace(/>/g, '>');\n }\n if (value.indexOf('\\v') !== -1) {\n value = value.replace(/\\v/g, '_x000B_');\n }\n }\n else if (typeof value == \"object\") {\n for (var i = 0; i < value.length; i++) {\n if (value[i].indexOf('&') !== -1) {\n value[i] = value[i].replace(/&/g, '&');\n }\n if (value[i].indexOf('<') !== -1) {\n value[i] = value[i].replace(/') !== -1) {\n value[i] = value[i].replace(/>/g, '>');\n }\n if (value[i].indexOf('\\v') !== -1) {\n value[i] = value[i].replace(/\\v/g, '_x000B_');\n }\n }\n }\n return value;\n };\n Workbook.prototype.saveStyles = function () {\n this.updateCellXfsStyleXfs();\n /* tslint:disable-next-line:max-line-length */\n var styleTemp = '';\n styleTemp += this.saveNumberFormats();\n styleTemp += this.saveFonts();\n styleTemp += this.saveFills();\n styleTemp += this.saveBorders();\n styleTemp += this.saveCellStyleXfs();\n styleTemp += this.saveCellXfs();\n styleTemp += this.saveCellStyles();\n this.addToArchive(styleTemp + '', 'xl/styles.xml');\n };\n Workbook.prototype.updateCellXfsStyleXfs = function () {\n for (var _i = 0, _a = this.mStyles; _i < _a.length; _i++) {\n var style = _a[_i];\n var cellXfs = undefined;\n if (style.isGlobalStyle) {\n cellXfs = new CellStyleXfs();\n cellXfs.xfId = (style.index - 1);\n }\n else {\n cellXfs = new CellXfs();\n cellXfs.xfId = 0;\n }\n //Add font\n var compareFontResult = this.isNewFont(style);\n if (!compareFontResult.result) {\n var font = new Font();\n font.b = style.bold;\n font.i = style.italic;\n font.name = style.fontName;\n font.sz = style.fontSize;\n font.u = style.underline;\n font.strike = style.strikeThrough;\n font.color = ('FF' + style.fontColor.replace('#', ''));\n this.mFonts.push(font);\n cellXfs.fontId = this.mFonts.length - 1;\n }\n else {\n cellXfs.fontId = compareFontResult.index;\n }\n //Add fill\n if (style.backColor !== 'none') {\n var backColor = 'FF' + style.backColor.replace('#', '');\n if (this.mFills.has(backColor)) {\n var fillId = this.mFills.get(backColor);\n cellXfs.fillId = fillId;\n }\n else {\n var fillId = this.mFills.size + 2;\n this.mFills.set(backColor, fillId);\n cellXfs.fillId = (fillId);\n }\n }\n else {\n cellXfs.fillId = 0;\n }\n //Add border \n if (!this.isNewBorder(style)) {\n this.mBorders.push(style.borders);\n cellXfs.borderId = this.mBorders.length;\n }\n else {\n cellXfs.borderId = 0;\n }\n //Add Number Format \n if (style.numberFormat !== 'GENERAL') {\n if (this.mNumFmt.has(style.numberFormat)) {\n var numFmt = this.mNumFmt.get(style.numberFormat);\n cellXfs.numFmtId = numFmt.numFmtId;\n }\n else {\n var id = this.mNumFmt.size + 164;\n this.mNumFmt.set(style.numberFormat, new NumFmt(id, style.numberFormat));\n cellXfs.numFmtId = id;\n }\n }\n else {\n if (style.numberFormat === 'GENERAL' && style.numFmtId === 14) {\n cellXfs.numFmtId = 14;\n }\n else {\n cellXfs.numFmtId = 0;\n }\n }\n //Add alignment \n if (!style.isGlobalStyle) {\n cellXfs.applyAlignment = 1;\n }\n cellXfs.alignment = new Alignment();\n cellXfs.alignment.indent = style.indent;\n cellXfs.alignment.horizontal = style.hAlign;\n cellXfs.alignment.vertical = style.vAlign;\n cellXfs.alignment.wrapText = style.wrapText ? 1 : 0;\n cellXfs.alignment.rotation = style.rotation;\n if (style.isGlobalStyle) {\n this.mCellStyleXfs.push(cellXfs);\n this.mCellXfs.push(cellXfs);\n }\n else {\n //Add cellxfs\n this.mCellXfs.push(cellXfs);\n }\n }\n };\n Workbook.prototype.saveNumberFormats = function () {\n if (this.mNumFmt.size >= 1) {\n var numFmtStyle_1 = '';\n this.mNumFmt.forEach(function (value, key) {\n numFmtStyle_1 += '';\n });\n return (numFmtStyle_1 += '');\n }\n else {\n return '';\n }\n };\n Workbook.prototype.saveFonts = function () {\n /* tslint:disable-next-line:max-line-length */\n var fontStyle = '';\n if (this.mFonts.length >= 1) {\n for (var _i = 0, _a = this.mFonts; _i < _a.length; _i++) {\n var font = _a[_i];\n fontStyle += '';\n if (font.b) {\n fontStyle += '';\n }\n if (font.i) {\n fontStyle += '';\n }\n if (font.u) {\n fontStyle += '';\n }\n if (font.strike) {\n fontStyle += '';\n }\n fontStyle += '';\n fontStyle += '';\n fontStyle += '';\n }\n }\n return fontStyle + '';\n };\n Workbook.prototype.saveFills = function () {\n /* tslint:disable-next-line:max-line-length */\n var fillsStyle = '';\n if (this.mFills.size >= 1) {\n this.mFills.forEach(function (value, key) {\n /* tslint:disable-next-line:max-line-length */\n fillsStyle += '';\n });\n }\n return fillsStyle + '';\n };\n Workbook.prototype.saveBorders = function () {\n /* tslint:disable-next-line:max-line-length */\n var bordersStyle = '';\n if (this.mBorders.length >= 1) {\n for (var _i = 0, _a = this.mBorders; _i < _a.length; _i++) {\n var borders = _a[_i];\n if (this.isAllBorder(borders)) {\n var color = borders.all.color.replace('#', '');\n var lineStyle = borders.all.lineStyle;\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n bordersStyle += '';\n }\n }\n }\n return bordersStyle + '';\n };\n Workbook.prototype.saveCellStyles = function () {\n var _this = this;\n var cellStyleString = '';\n this.cellStyles.forEach(function (value, key) {\n cellStyleString += '';\n if (this.mCellStyleXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellStyleXfs; _i < _a.length; _i++) {\n var cellStyleXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n else {\n cellXfsStyle += ' />';\n }\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveCellXfs = function () {\n /* tslint:disable-next-line:max-line-length */\n var cellXfsStyle = '';\n if (this.mCellXfs.length >= 1) {\n for (var _i = 0, _a = this.mCellXfs; _i < _a.length; _i++) {\n var cellXf = _a[_i];\n /* tslint:disable-next-line:max-line-length */\n cellXfsStyle += '';\n }\n }\n return cellXfsStyle + '';\n };\n Workbook.prototype.saveAlignment = function (cellXf) {\n var alignString = '';\n return alignString;\n };\n Workbook.prototype.saveApp = function (builtInProperties) {\n /* tslint:disable-next-line:max-line-length */\n var appString = 'Essential XlsIO';\n if (builtInProperties !== undefined) {\n if (builtInProperties.manager !== undefined) {\n appString += '' + builtInProperties.manager + '';\n }\n if (builtInProperties.company !== undefined) {\n appString += '' + builtInProperties.company + '';\n }\n }\n this.addToArchive((appString + ''), 'docProps/app.xml');\n };\n Workbook.prototype.saveCore = function (builtInProperties) {\n var createdDate = new Date();\n /* tslint:disable-next-line:max-line-length */\n var coreString = '';\n if (this.builtInProperties !== undefined) {\n if (builtInProperties.author !== undefined) {\n coreString += '' + builtInProperties.author + '';\n }\n if (builtInProperties.subject !== undefined) {\n coreString += '' + builtInProperties.subject + '';\n }\n if (builtInProperties.category !== undefined) {\n coreString += '' + builtInProperties.category + '';\n }\n if (builtInProperties.comments !== undefined) {\n coreString += '' + builtInProperties.comments + '';\n }\n if (builtInProperties.title !== undefined) {\n coreString += '' + builtInProperties.title + '';\n }\n if (builtInProperties.tags !== undefined) {\n coreString += '' + builtInProperties.tags + '';\n }\n if (builtInProperties.status !== undefined) {\n coreString += '' + builtInProperties.status + '';\n }\n if (builtInProperties.createdDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.createdDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n if (builtInProperties.modifiedDate !== undefined) {\n /* tslint:disable-next-line:max-line-length */\n coreString += '' + builtInProperties.modifiedDate.toISOString() + '';\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n }\n }\n else {\n coreString += '' + createdDate.toISOString() + '';\n coreString += '' + createdDate.toISOString() + '';\n }\n /* tslint:disable-next-line:max-line-length */\n coreString += '';\n this.addToArchive(coreString, 'docProps/core.xml');\n };\n Workbook.prototype.saveTopLevelRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var topRelation = '';\n this.addToArchive(topRelation, '_rels/.rels');\n };\n Workbook.prototype.saveWorkbookRelation = function () {\n /* tslint:disable-next-line:max-line-length */\n var wbRelation = '';\n var length = this.worksheets.length;\n var count = 0;\n for (var i = 0; i < length; i++, count++) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n wbRelation += '';\n }\n this.addToArchive((wbRelation + ''), 'xl/_rels/workbook.xml.rels');\n };\n Workbook.prototype.saveContentType = function () {\n /* tslint:disable-next-line:max-line-length */\n var contentTypeString = '';\n var sheetsOverride = '';\n var length = this.worksheets.length;\n var drawingIndex = 0;\n for (var i = 0; i < length; i++) {\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n if (this.worksheets[i].images != undefined && this.worksheets[i].images.length > 0) {\n drawingIndex++;\n /* tslint:disable-next-line:max-line-length */\n sheetsOverride += '';\n }\n }\n if (this.imageCount > 0)\n sheetsOverride += '';\n if (this.sharedStringCount > 0) {\n /* tslint:disable-next-line:max-line-length */\n contentTypeString += '';\n }\n this.addToArchive((contentTypeString + sheetsOverride + ''), '[Content_Types].xml');\n };\n Workbook.prototype.addToArchive = function (xmlString, itemName) {\n if (typeof (xmlString) === 'string') {\n var blob = new Blob([xmlString], { type: 'text/plain' });\n var archiveItem = new ZipArchiveItem(blob, itemName);\n this.mArchive.addItem(archiveItem);\n }\n else {\n var archiveItem = new ZipArchiveItem(xmlString, itemName);\n this.mArchive.addItem(archiveItem);\n }\n };\n Workbook.prototype.processMergeCells = function (cell, rowIndex, mergeCells) {\n if (cell.rowSpan !== 0 || cell.colSpan !== 0) {\n var mCell = new MergeCell();\n mCell.x = cell.index;\n mCell.width = cell.colSpan;\n mCell.y = rowIndex;\n mCell.height = cell.rowSpan;\n var startCell = this.getCellName(mCell.y, mCell.x);\n var endCell = this.getCellName(rowIndex + mCell.height, cell.index + mCell.width);\n mCell.ref = startCell + ':' + endCell;\n var mergedCell = mergeCells.add(mCell);\n var start = { x: mCell.x, y: mCell.y };\n var end = {\n x: (cell.index + mCell.width), y: (rowIndex + mCell.height)\n };\n this.updatedMergedCellStyles(start, end, cell);\n }\n return mergeCells;\n };\n Workbook.prototype.updatedMergedCellStyles = function (sCell, eCell, cell) {\n for (var x = sCell.x; x <= eCell.x; x++) {\n for (var y = sCell.y; y <= eCell.y; y++) {\n this.mergedCellsStyle.set(this.getCellName(y, x), { x: x, y: y, styleIndex: cell.styleIndex });\n }\n }\n };\n /**\n * Returns the tick count corresponding to the given year, month, and day.\n * @param year number value of year\n * @param month number value of month\n * @param day number value of day\n */\n Workbook.prototype.dateToTicks = function (year, month, day) {\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysToMonth365 = [0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365];\n var daysToMonth366 = [0, 31, 60, 91, 121, 152, 182, 213, 244, 274, 305, 335, 366];\n if (year >= 1 && year <= 9999 && month >= 1 && month <= 12) {\n var days = this.isLeapYear(year) ? daysToMonth366 : daysToMonth365;\n var y = year - 1;\n var n = y * 365 + ((y / 4) | 0) - ((y / 100) | 0) + ((y / 400) | 0) + days[month - 1] + day - 1;\n return n * ticksPerDay;\n }\n throw new Error('Not a valid date');\n };\n /**\n * Return the tick count corresponding to the given hour, minute, second.\n * @param hour number value of hour\n * @param minute number value if minute\n * @param second number value of second\n */\n Workbook.prototype.timeToTicks = function (hour, minute, second) {\n if (hour >= 0 && hour < 24 && minute >= 0 && minute < 60 && second >= 0 && second < 60) {\n var totalSeconds = hour * 3600 + minute * 60 + second;\n return totalSeconds * 10000 * 1000;\n }\n throw new Error('Not valid time');\n };\n /**\n * Checks if given year is a leap year.\n * @param year Year value.\n */\n Workbook.prototype.isLeapYear = function (year) {\n return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0);\n };\n /**\n * Converts `DateTime` to the equivalent OLE Automation date.\n */\n Workbook.prototype.toOADate = function (date) {\n var ticks = 0;\n /* tslint:disable-next-line:max-line-length */\n ticks = this.dateToTicks(date.getFullYear(), (date.getMonth() + 1), date.getDate()) + this.timeToTicks(date.getHours(), date.getMinutes(), date.getSeconds());\n if (ticks === 0) {\n return 0.0;\n }\n var ticksPerDay = 10000 * 1000 * 60 * 60 * 24;\n var daysTo1899 = (((365 * 4 + 1) * 25 - 1) * 4 + 1) * 4 + ((365 * 4 + 1) * 25 - 1) * 3 - 367;\n var doubleDateOffset = daysTo1899 * ticksPerDay;\n var oaDateMinAsTicks = (((365 * 4 + 1) * 25 - 1) - 365) * ticksPerDay;\n if (ticks < oaDateMinAsTicks) {\n throw new Error('Arg_OleAutDateInvalid');\n }\n var millisPerDay = 1000 * 60 * 60 * 24;\n return ((ticks - doubleDateOffset) / 10000) / millisPerDay;\n };\n return Workbook;\n}());\n/**\n * BuiltInProperties Class\n * @private\n */\nvar BuiltInProperties = /** @__PURE__ @class */ (function () {\n function BuiltInProperties() {\n }\n return BuiltInProperties;\n}());\n\n/**\n * index class\n */\n\nexport { CellStyle, Font, CellXfs, Alignment, CellStyleXfs, CellStyles, NumFmt, Border, Borders, Cell, Cells, Column, Row, Rows, Workbook, BuiltInProperties, Worksheet, HyperLink, Grouping, FreezePane, MergeCell, MergeCells, Worksheets, CsvHelper, ValueFormatter, BlobHelper };\n","/**\n * Save class provide method to save file\n * ```typescript\n * let blob : Blob = new Blob([''], { type: 'text/plain' });\n * Save.save('fileName.txt',blob);\n */\nvar Save = /** @__PURE__ @class */ (function () {\n /**\n * Initialize new instance of {save}\n */\n function Save() {\n // tslint:disable\n }\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName- file name to save.\n * @param {Blob} buffer- the content to write in file\n * @param {boolean} isMicrosoftBrowser- specify whether microsoft browser or not\n * @returns {void}\n */\n Save.save = function (fileName, buffer) {\n if (fileName === null || fileName === undefined || fileName === '') {\n throw new Error('ArgumentException: fileName cannot be undefined, null or empty');\n }\n var extension = fileName.substring(fileName.lastIndexOf('.') + 1, fileName.length);\n var mimeType = this.getMimeType(extension);\n if (mimeType !== '') {\n buffer = new Blob([buffer], { type: mimeType });\n }\n if (this.isMicrosoftBrowser) {\n navigator.msSaveBlob(buffer, fileName);\n }\n else {\n var downloadLink = document.createElementNS('http://www.w3.org/1999/xhtml', 'a');\n this.saveInternal(fileName, extension, buffer, downloadLink, 'download' in downloadLink);\n }\n };\n Save.saveInternal = function (fileName, extension, buffer, downloadLink, hasDownloadAttribute) {\n if (hasDownloadAttribute) {\n downloadLink.download = fileName;\n var dataUrl_1 = window.URL.createObjectURL(buffer);\n downloadLink.href = dataUrl_1;\n var event_1 = document.createEvent('MouseEvent');\n event_1.initEvent('click', true, true);\n downloadLink.dispatchEvent(event_1);\n setTimeout(function () {\n window.URL.revokeObjectURL(dataUrl_1);\n dataUrl_1 = undefined;\n });\n }\n else {\n if (extension !== 'docx' && extension !== 'xlsx') {\n var url = window.URL.createObjectURL(buffer);\n var isPopupBlocked = window.open(url, '_blank');\n if (!isPopupBlocked) {\n window.location.href = url;\n }\n }\n else {\n var reader_1 = new FileReader();\n reader_1.onloadend = function () {\n var isPopupBlocked = window.open(reader_1.result, '_blank');\n if (!isPopupBlocked) {\n window.location.href = reader_1.result;\n }\n };\n reader_1.readAsDataURL(buffer);\n }\n }\n };\n /**\n *\n * @param {string} extension - get mime type of the specified extension\n * @private\n */\n Save.getMimeType = function (extension) {\n var mimeType = '';\n switch (extension) {\n case 'html':\n mimeType = 'text/html';\n break;\n case 'pdf':\n mimeType = 'application/pdf';\n break;\n case 'docx':\n mimeType = 'application/vnd.openxmlformats-officedocument.wordprocessingml.document';\n break;\n case 'xlsx':\n mimeType = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet';\n break;\n case 'txt':\n mimeType = 'text/plain';\n break;\n }\n return mimeType;\n };\n return Save;\n}());\n\n/**\n * XmlWriter class provide method to create XML data\n */\nvar XmlWriter = /** @__PURE__ @class */ (function () {\n /**\n * Initialize new instance of {XmlWriter}\n */\n function XmlWriter() {\n this.contentPos = 0;\n this.bufferText = '';\n this.bufferBlob = new Blob([''], { type: 'text/plain' });\n this.currentState = 'Initial';\n this.namespaceStack = [];\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[0].set('xmlns', 'http://www.w3.org/2000/xmlns/', 'Special');\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[1].set('xml', 'http://www.w3.org/XML/1998/namespace', 'Special');\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[2].set('', '', 'Implied');\n this.elementStack = [];\n this.elementStack.push(new XmlElement());\n this.elementStack[0].set('', '', '', this.namespaceStack.length - 1);\n this.attributeStack = [];\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(XmlWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the {XmlWriter} as Blob.\n * @returns {Blob}\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes processing instruction with a space between the name and text\n * @param {string} name - name of the processing instruction\n * @param {string} text - text to write in the processing instruction\n * @throws ArgumentException\n * @throws InvalidArgumentException\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeProcessingInstruction = function (name, text) {\n if (name === undefined || name === null || name.length === 0) {\n throw new Error('ArgumentException: name should not be undefined, null or empty');\n }\n this.checkName(name);\n if (text === undefined || text === null) {\n text = '';\n }\n if (name.length === 3 && name === 'xml') {\n if (this.currentState !== 'Initial') {\n // tslint:disable-next-line:max-line-length\n throw new Error('InvalidArgumentException: Cannot write XML declaration.WriteStartDocument method has already written it');\n }\n }\n if (this.currentState !== 'Initial' || this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n else {\n this.writeStartDocument();\n this.writeProcessingInstructionInternal(name, text);\n }\n };\n /**\n * Writes Xml declaration with version and standalone attribute\n * @param {boolean} standalone - if true it write standalone=yes else standalone=no\n * @throws InvalidOperation\n */\n XmlWriter.prototype.writeStartDocument = function (standalone) {\n if (this.currentState !== 'Initial' || this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this.currentState = 'StartDocument';\n this.rawText('');\n };\n /**\n * Closes any open tag or attribute and write the state back to start\n */\n XmlWriter.prototype.writeEndDocument = function () {\n while (this.elementStack.length - 1 > 0) {\n this.writeEndElement();\n }\n this.currentState = 'EndDocument';\n this.flush();\n };\n /**\n * Writes the specified start tag and associates it with the given namespace and prefix.\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName -localName of element\n * @param {string} namespace - namespace URI associate with element\n * @throws ArgumentException\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeStartElement = function (prefix, localName, namespace) {\n if (this.bufferBlob === undefined) {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (localName === undefined || localName === null || localName.length === 0) {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n this.checkName(localName);\n if (this.currentState === 'Initial') {\n this.writeStartDocument();\n }\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n }\n this.currentState = 'StartElement';\n if (prefix === undefined || prefix === null) {\n if (namespace !== undefined && namespace !== null) {\n prefix = this.lookupPrefix(namespace);\n }\n if (prefix === undefined || prefix === null) {\n prefix = '';\n }\n }\n else if (prefix.length > 0) {\n if (namespace === undefined || namespace === null) {\n namespace = this.lookupNamespace(prefix);\n }\n if (namespace === undefined || namespace === null || (namespace !== undefined && namespace.length === 0)) {\n throw new Error('ArgumentException: Cannot use a prefix with an empty namespace');\n }\n }\n if (namespace === undefined || namespace === null) {\n namespace = this.lookupNamespace(prefix);\n }\n this.writeStartElementInternal(prefix, localName, namespace);\n };\n /**\n * Closes one element and pop corresponding namespace scope\n */\n XmlWriter.prototype.writeEndElement = function () {\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n this.currentState = 'ElementContent';\n }\n else if (this.currentState === 'ElementContent') {\n this.currentState = 'ElementContent';\n }\n this.currentState = 'EndElement';\n var top = this.elementStack.length - 1;\n this.writeEndElementInternal(this.elementStack[top].prefix, this.elementStack[top].localName);\n this.namespaceStack.splice(this.elementStack[top].previousTop + 1);\n this.elementStack.splice(top);\n if (this.bufferText.length > 10240) {\n this.flush();\n }\n };\n /**\n * Writes an element with the specified prefix, local name, namespace URI, and value.\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName - localName of element\n * @param {string} namespace - namespace URI associate with element\n * @param {string} value - value of element\n */\n XmlWriter.prototype.writeElementString = function (prefix, localName, namespace, value) {\n this.writeStartElement(prefix, localName, namespace);\n if (value !== undefined && value !== null && value.length !== 0) {\n this.writeString(value);\n }\n this.writeEndElement();\n };\n /**\n * Writes out the attribute with the specified prefix, local name, namespace URI, and value\n * @param {string} prefix - namespace prefix of element\n * @param {string} localName - localName of element\n * @param {string} namespace - namespace URI associate with element\n * @param {string} value - value of element\n */\n XmlWriter.prototype.writeAttributeString = function (prefix, localName, namespace, value) {\n this.writeStartAttribute(prefix, localName, namespace, value);\n this.writeStringInternal(value, true);\n this.writeEndAttribute();\n };\n /**\n * Writes the given text content\n * @param {string} text - text to write\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeString = function (text) {\n this.writeInternal(text, false);\n };\n /**\n * Write given text as raw data\n * @param {string} text - text to write\n * @throws InvalidOperationException\n */\n XmlWriter.prototype.writeRaw = function (text) {\n this.writeInternal(text, true);\n };\n XmlWriter.prototype.writeInternal = function (text, isRawString) {\n if (text === undefined || text === null) {\n return;\n }\n else {\n if (this.currentState !== 'StartElement' && this.currentState !== 'ElementContent') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n if (this.currentState === 'StartElement') {\n this.startElementContent();\n }\n this.currentState = 'ElementContent';\n if (isRawString) {\n this.rawText(text);\n }\n else {\n this.writeStringInternal(text, false);\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - file name\n */\n XmlWriter.prototype.save = function (fileName) {\n while (this.elementStack.length - 1 > 0) {\n this.writeEndElement();\n }\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Releases the resources used by XmlWriter.\n */\n XmlWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n for (var i = 0; i < this.namespaceStack.length; i++) {\n this.namespaceStack[i].destroy();\n }\n this.namespaceStack = [];\n for (var i = 0; i < this.elementStack.length; i++) {\n this.elementStack[i].destroy();\n }\n this.elementStack = [];\n this.bufferText = '';\n this.contentPos = 0;\n };\n XmlWriter.prototype.flush = function () {\n if (this.bufferBlob === undefined) {\n return;\n }\n this.bufferBlob = new Blob([this.bufferBlob, this.bufferText], { type: 'text/plain' });\n this.bufferText = '';\n };\n XmlWriter.prototype.writeProcessingInstructionInternal = function (name, text) {\n this.bufferText += ' 0) {\n this.bufferText += ' ';\n text = text.replace(/\\?\\>/g, '? >');\n this.bufferText += text;\n }\n this.bufferText += '?';\n this.bufferText += '>';\n };\n XmlWriter.prototype.writeStartAttribute = function (prefix, localName, namespace, value) {\n if (localName === undefined || localName === null || localName.length === 0) {\n if (prefix === 'xmlns') {\n localName = 'xmlns';\n prefix = '';\n }\n else {\n throw new Error('ArgumentException: localName cannot be undefined, null or empty');\n }\n }\n if (this.currentState !== 'StartElement') {\n throw new Error('InvalidOperationException: Wrong Token');\n }\n this.checkName(localName);\n this.writeStartAttributePrefixAndNameSpace(prefix, localName, namespace, value);\n };\n XmlWriter.prototype.writeStartAttributePrefixAndNameSpace = function (prefix, localName, namespace, value) {\n if (prefix === undefined || prefix === null) {\n if (namespace !== undefined && namespace !== null) {\n if (!(localName === 'xmlns' && namespace === 'http://www.w3.org/2000/xmlns/')) {\n prefix = this.lookupPrefix(namespace);\n }\n }\n if (prefix === undefined || prefix === null) {\n prefix = '';\n }\n }\n if (namespace === undefined || namespace === null) {\n if (prefix !== undefined && prefix !== null && prefix.length > 0) {\n namespace = this.lookupNamespace(prefix);\n }\n if (namespace === undefined || namespace === null) {\n namespace = '';\n }\n }\n this.writeStartAttributeSpecialAttribute(prefix, localName, namespace, value);\n };\n XmlWriter.prototype.writeStartAttributeSpecialAttribute = function (prefix, localName, namespace, value) {\n if (prefix.length === 0) {\n if (localName[0] === 'x' && localName === 'xmlns') {\n this.skipPushAndWrite(prefix, localName, namespace);\n this.pushNamespaceExplicit('', value);\n return;\n }\n else if (namespace.length > 0) {\n prefix = this.lookupPrefix(namespace);\n }\n }\n else {\n if (prefix[0] === 'x') {\n if (prefix === 'xmlns') {\n this.skipPushAndWrite(prefix, localName, namespace);\n this.pushNamespaceExplicit(localName, value);\n return;\n }\n else if (prefix === 'xml') {\n if (localName === 'space' || localName === 'lang') {\n this.skipPushAndWrite(prefix, localName, namespace);\n return;\n }\n }\n }\n if (namespace.length === 0) {\n prefix = '';\n }\n }\n if (prefix !== undefined && prefix !== null && prefix.length !== 0) {\n this.pushNamespaceImplicit(prefix, namespace);\n }\n this.skipPushAndWrite(prefix, localName, namespace);\n };\n XmlWriter.prototype.writeEndAttribute = function () {\n this.currentState = 'StartElement';\n this.bufferText += '\"';\n };\n XmlWriter.prototype.writeStartElementInternal = function (prefix, localName, namespace) {\n this.bufferText += '<';\n if (prefix.length > 0) {\n this.rawText(prefix);\n this.bufferText += ':';\n }\n this.rawText(localName);\n var top = this.elementStack.length;\n this.elementStack.push(new XmlElement());\n this.elementStack[top].set(prefix, localName, namespace, this.namespaceStack.length - 1);\n this.pushNamespaceImplicit(prefix, namespace);\n for (var i = 0; i < this.attributeStack.length; i++) {\n this.attributeStack[i].destroy();\n }\n this.attributeStack = [];\n };\n XmlWriter.prototype.writeEndElementInternal = function (prefix, localName) {\n if (this.contentPos !== this.bufferText.length + 1) {\n this.bufferText += '';\n }\n else {\n this.bufferText = this.bufferText.substring(0, this.bufferText.length - 1);\n this.bufferText += ' />';\n }\n };\n XmlWriter.prototype.writeStartAttributeInternal = function (prefix, localName, namespaceName) {\n this.bufferText += ' ';\n if (prefix !== undefined && prefix !== null && prefix.length > 0) {\n this.rawText(prefix);\n this.bufferText += ':';\n }\n this.rawText(localName);\n this.bufferText += '=';\n this.bufferText += '\"';\n };\n XmlWriter.prototype.writeNamespaceDeclaration = function (prefix, namespaceUri) {\n this.writeStartNamespaceDeclaration(prefix);\n this.writeStringInternal(namespaceUri, true);\n this.bufferText += '\"';\n };\n XmlWriter.prototype.writeStartNamespaceDeclaration = function (prefix) {\n if (prefix === undefined || prefix === null || prefix.length === 0) {\n this.rawText(' xmlns=\\\"');\n }\n else {\n this.rawText(' xmlns:');\n this.rawText(prefix);\n this.bufferText += '=';\n this.bufferText += '\"';\n }\n };\n XmlWriter.prototype.writeStringInternal = function (text, inAttributeValue) {\n if (text === null || text === undefined) {\n text = '';\n }\n text = text.replace(/\\&/g, '&');\n text = text.replace(/\\/g, '>');\n if (inAttributeValue) {\n text = text.replace(/\\\"/g, '"');\n }\n this.bufferText += text;\n if (!inAttributeValue) {\n this.contentPos = 0;\n }\n };\n XmlWriter.prototype.startElementContent = function () {\n var start = this.elementStack[this.elementStack.length - 1].previousTop;\n for (var i = this.namespaceStack.length - 1; i > start; i--) {\n if (this.namespaceStack[i].kind === 'NeedToWrite') {\n this.writeNamespaceDeclaration(this.namespaceStack[i].prefix, this.namespaceStack[i].namespaceUri);\n }\n }\n this.bufferText += '>';\n this.contentPos = this.bufferText.length + 1;\n };\n XmlWriter.prototype.rawText = function (text) {\n this.bufferText += text;\n };\n XmlWriter.prototype.addNamespace = function (prefix, ns, kind) {\n var top = this.namespaceStack.length;\n this.namespaceStack.push(new Namespace());\n this.namespaceStack[top].set(prefix, ns, kind);\n };\n XmlWriter.prototype.lookupPrefix = function (namespace) {\n for (var i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].namespaceUri === namespace) {\n return this.namespaceStack[i].prefix;\n }\n }\n return undefined;\n };\n XmlWriter.prototype.lookupNamespace = function (prefix) {\n for (var i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].prefix === prefix) {\n return this.namespaceStack[i].namespaceUri;\n }\n }\n return undefined;\n };\n XmlWriter.prototype.lookupNamespaceIndex = function (prefix) {\n for (var i = this.namespaceStack.length - 1; i >= 0; i--) {\n if (this.namespaceStack[i].prefix === prefix) {\n return i;\n }\n }\n return -1;\n };\n XmlWriter.prototype.pushNamespaceImplicit = function (prefix, ns) {\n var kind;\n var existingNsIndex = this.lookupNamespaceIndex(prefix);\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this.elementStack[this.elementStack.length - 1].previousTop) {\n if (this.namespaceStack[existingNsIndex].namespaceUri !== ns) {\n throw new Error('XmlException namespace Uri needs to be the same as the one that is already declared');\n }\n return;\n }\n else {\n if (this.namespaceStack[existingNsIndex].kind === 'Special') {\n if (prefix === 'xml') {\n if (ns !== this.namespaceStack[existingNsIndex].namespaceUri) {\n throw new Error('InvalidArgumentException: Xml String');\n }\n else {\n kind = 'Implied';\n }\n }\n else {\n throw new Error('InvalidArgumentException: Prefix \"xmlns\" is reserved for use by XML.');\n }\n }\n else {\n kind = (this.namespaceStack[existingNsIndex].namespaceUri === ns) ? 'Implied' : 'NeedToWrite';\n }\n }\n }\n else {\n if ((ns === 'http://www.w3.org/XML/1998/namespace' && prefix !== 'xml') ||\n (ns === 'http://www.w3.org/2000/xmlns/' && prefix !== 'xmlns')) {\n throw new Error('InvalidArgumentException');\n }\n kind = 'NeedToWrite';\n }\n this.addNamespace(prefix, ns, kind);\n };\n XmlWriter.prototype.pushNamespaceExplicit = function (prefix, ns) {\n var existingNsIndex = this.lookupNamespaceIndex(prefix);\n if (existingNsIndex !== -1) {\n if (existingNsIndex > this.elementStack[this.elementStack.length - 1].previousTop) {\n this.namespaceStack[existingNsIndex].kind = 'Written';\n return;\n }\n }\n this.addNamespace(prefix, ns, 'Written');\n return;\n };\n XmlWriter.prototype.addAttribute = function (prefix, localName, namespaceName) {\n var top = this.attributeStack.length;\n this.attributeStack.push(new XmlAttribute());\n this.attributeStack[top].set(prefix, localName, namespaceName);\n for (var i = 0; i < top; i++) {\n if (this.attributeStack[i].isDuplicate(prefix, localName, namespaceName)) {\n throw new Error('XmlException: duplicate attribute name');\n }\n }\n };\n XmlWriter.prototype.skipPushAndWrite = function (prefix, localName, namespace) {\n this.addAttribute(prefix, localName, namespace);\n this.writeStartAttributeInternal(prefix, localName, namespace);\n };\n XmlWriter.prototype.checkName = function (text) {\n var format = /[ !@#$%^&*()+\\=\\[\\]{};':\"\\\\|,<>\\/?]/;\n if (format.test(text)) {\n throw new Error('InvalidArgumentException: invalid name character');\n }\n };\n return XmlWriter;\n}());\n/**\n * class for managing namespace collection\n */\nvar Namespace = /** @__PURE__ @class */ (function () {\n function Namespace() {\n }\n /**\n * set value for current namespace instance\n * @param {string} prefix namespace's prefix\n * @param {string} namespaceUri namespace URI\n * @param {string} kind namespace kind\n */\n Namespace.prototype.set = function (prefix, namespaceUri, kind) {\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.kind = kind;\n };\n /**\n * Releases the resources used by Namespace\n */\n Namespace.prototype.destroy = function () {\n this.prefix = undefined;\n this.namespaceUri = undefined;\n this.kind = undefined;\n };\n return Namespace;\n}());\n/**\n * class for managing element collection\n */\nvar XmlElement = /** @__PURE__ @class */ (function () {\n function XmlElement() {\n }\n /**\n * set value of current element\n * @param {string} prefix - element prefix\n * @param {string} localName - element local name\n * @param {string} namespaceUri -namespace URI\n * @param {string} previousTop - previous namespace top\n */\n XmlElement.prototype.set = function (prefix, localName, namespaceUri, previousTop) {\n this.previousTop = previousTop;\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.localName = localName;\n };\n /**\n * Releases the resources used by XmlElement\n */\n XmlElement.prototype.destroy = function () {\n this.previousTop = undefined;\n this.prefix = undefined;\n this.localName = undefined;\n this.namespaceUri = undefined;\n };\n return XmlElement;\n}());\n/**\n * class for managing attribute collection\n */\nvar XmlAttribute = /** @__PURE__ @class */ (function () {\n function XmlAttribute() {\n }\n /**\n * set value of current attribute\n * @param {string} prefix - namespace's prefix\n * @param {string} namespaceUri - namespace URI\n * @param {string} localName - attribute localName\n */\n XmlAttribute.prototype.set = function (prefix, localName, namespaceUri) {\n this.prefix = prefix;\n this.namespaceUri = namespaceUri;\n this.localName = localName;\n };\n /**\n * get whether the attribute is duplicate or not\n * @param {string} prefix - namespace's prefix\n * @param {string} namespaceUri - namespace URI\n * @param {string} localName - attribute localName\n */\n XmlAttribute.prototype.isDuplicate = function (prefix, localName, namespaceUri) {\n return ((this.localName === localName) && ((this.prefix === prefix) || (this.namespaceUri === namespaceUri)));\n };\n /**\n * Releases the resources used by XmlAttribute\n */\n XmlAttribute.prototype.destroy = function () {\n this.prefix = undefined;\n this.namespaceUri = undefined;\n this.localName = undefined;\n };\n return XmlAttribute;\n}());\n\n/**\n * Encoding class: Contains the details about encoding type, whether to write a Unicode byte order mark (BOM).\n * ```typescript\n * let encoding : Encoding = new Encoding();\n * encoding.type = 'Utf8';\n * encoding.getBytes('Encoding', 0, 5);\n * ```\n */\nvar Encoding = /** @__PURE__ @class */ (function () {\n /**\n * Initializes a new instance of the Encoding class. A parameter specifies whether to write a Unicode byte order mark\n * @param {boolean} includeBom?-true to specify that a Unicode byte order mark is written; otherwise, false.\n */\n function Encoding(includeBom) {\n this.emitBOM = true;\n this.encodingType = 'Ansi';\n this.initBOM(includeBom);\n }\n Object.defineProperty(Encoding.prototype, \"includeBom\", {\n /**\n * Gets a value indicating whether to write a Unicode byte order mark\n * @returns boolean- true to specify that a Unicode byte order mark is written; otherwise, false\n */\n get: function () {\n return this.emitBOM;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Encoding.prototype, \"type\", {\n /**\n * Gets the encoding type.\n * @returns EncodingType\n */\n get: function () {\n return this.encodingType;\n },\n /**\n * Sets the encoding type.\n * @param {EncodingType} value\n */\n set: function (value) {\n this.encodingType = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Initialize the includeBom to emit BOM or Not\n * @param {boolean} includeBom\n */\n Encoding.prototype.initBOM = function (includeBom) {\n if (includeBom === undefined || includeBom === null) {\n this.emitBOM = true;\n }\n else {\n this.emitBOM = includeBom;\n }\n };\n /**\n * Calculates the number of bytes produced by encoding the characters in the specified string\n * @param {string} chars - The string containing the set of characters to encode\n * @returns {number} - The number of bytes produced by encoding the specified characters\n */\n Encoding.prototype.getByteCount = function (chars) {\n validateNullOrUndefined(chars, 'string');\n if (chars === '') {\n var byte = this.utf8Len(chars.charCodeAt(0));\n return byte;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n return this.getByteCountInternal(chars, 0, chars.length);\n };\n /**\n * Return the Byte of character\n * @param {number} codePoint\n * @returns {number}\n */\n Encoding.prototype.utf8Len = function (codePoint) {\n var bytes = codePoint <= 0x7F ? 1 :\n codePoint <= 0x7FF ? 2 :\n codePoint <= 0xFFFF ? 3 :\n codePoint <= 0x1FFFFF ? 4 : 0;\n return bytes;\n };\n /**\n * for 4 byte character return surrogate pair true, otherwise false\n * @param {number} codeUnit\n * @returns {boolean}\n */\n Encoding.prototype.isHighSurrogate = function (codeUnit) {\n return codeUnit >= 0xD800 && codeUnit <= 0xDBFF;\n };\n /**\n * for 4byte character generate the surrogate pair\n * @param {number} highCodeUnit\n * @param {number} lowCodeUnit\n */\n Encoding.prototype.toCodepoint = function (highCodeUnit, lowCodeUnit) {\n highCodeUnit = (0x3FF & highCodeUnit) << 10;\n var u = highCodeUnit | (0x3FF & lowCodeUnit);\n return u + 0x10000;\n };\n /**\n * private method to get the byte count for specific charindex and count\n * @param {string} chars\n * @param {number} charIndex\n * @param {number} charCount\n */\n Encoding.prototype.getByteCountInternal = function (chars, charIndex, charCount) {\n var byteCount = 0;\n if (this.encodingType === 'Utf8' || this.encodingType === 'Unicode') {\n var isUtf8 = this.encodingType === 'Utf8';\n for (var i = 0; i < charCount; i++) {\n var charCode = chars.charCodeAt(isUtf8 ? charIndex : charIndex++);\n if (this.isHighSurrogate(charCode)) {\n if (isUtf8) {\n var high = charCode;\n var low = chars.charCodeAt(++charIndex);\n byteCount += this.utf8Len(this.toCodepoint(high, low));\n }\n else {\n byteCount += 4;\n ++i;\n }\n }\n else {\n if (isUtf8) {\n byteCount += this.utf8Len(charCode);\n }\n else {\n byteCount += 2;\n }\n }\n if (isUtf8) {\n charIndex++;\n }\n }\n return byteCount;\n }\n else {\n byteCount = charCount;\n return byteCount;\n }\n };\n /**\n * Encodes a set of characters from the specified string into the ArrayBuffer.\n * @param {string} s- The string containing the set of characters to encode\n * @param {number} charIndex-The index of the first character to encode.\n * @param {number} charCount- The number of characters to encode.\n * @returns {ArrayBuffer} - The ArrayBuffer that contains the resulting sequence of bytes.\n */\n Encoding.prototype.getBytes = function (s, charIndex, charCount) {\n validateNullOrUndefined(s, 'string');\n validateNullOrUndefined(charIndex, 'charIndex');\n validateNullOrUndefined(charCount, 'charCount');\n if (charIndex < 0 || charCount < 0) {\n throw new RangeError('Argument Out Of Range Exception: charIndex or charCount is less than zero');\n }\n if (s.length - charIndex < charCount) {\n throw new RangeError('Argument Out Of Range Exception: charIndex and charCount do not denote a valid range in string');\n }\n var bytes;\n if (s === '') {\n bytes = new ArrayBuffer(0);\n return bytes;\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var byteCount = this.getByteCountInternal(s, charIndex, charCount);\n switch (this.type) {\n case 'Utf8':\n bytes = this.getBytesOfUtf8Encoding(byteCount, s, charIndex, charCount);\n return bytes;\n case 'Unicode':\n bytes = this.getBytesOfUnicodeEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n default:\n bytes = this.getBytesOfAnsiEncoding(byteCount, s, charIndex, charCount);\n return bytes;\n }\n };\n /**\n * Decodes a sequence of bytes from the specified ArrayBuffer into the string.\n * @param {ArrayBuffer} bytes- The ArrayBuffer containing the sequence of bytes to decode.\n * @param {number} index- The index of the first byte to decode.\n * @param {number} count- The number of bytes to decode.\n * @returns {string} - The string that contains the resulting set of characters.\n */\n Encoding.prototype.getString = function (bytes, index, count) {\n validateNullOrUndefined(bytes, 'bytes');\n validateNullOrUndefined(index, 'index');\n validateNullOrUndefined(count, 'count');\n if (index < 0 || count < 0) {\n throw new RangeError('Argument Out Of Range Exception: index or count is less than zero');\n }\n if (bytes.byteLength - index < count) {\n throw new RangeError('Argument Out Of Range Exception: index and count do not denote a valid range in bytes');\n }\n if (bytes.byteLength === 0 || count === 0) {\n return '';\n }\n if (this.type === null || this.type === undefined) {\n this.type = 'Ansi';\n }\n var out = '';\n var byteCal = new Uint8Array(bytes);\n switch (this.type) {\n case 'Utf8':\n var s = this.getStringOfUtf8Encoding(byteCal, index, count);\n return s;\n case 'Unicode':\n var byteUnicode = new Uint16Array(bytes);\n out = this.getStringofUnicodeEncoding(byteUnicode, index, count);\n return out;\n default:\n var j = index;\n for (var i = 0; i < count; i++) {\n var c = byteCal[j];\n out += String.fromCharCode(c); // 1 byte(ASCII) character \n j++;\n }\n return out;\n }\n };\n Encoding.prototype.getBytesOfAnsiEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var bufview = new Uint8Array(bytes);\n var k = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(charIndex++);\n if (charcode < 0x800) {\n bufview[k] = charcode;\n }\n else {\n bufview[k] = 63; //replacement character '?'\n }\n k++;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUtf8Encoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint = new Uint8Array(bytes);\n var index = charIndex;\n var j = 0;\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(index);\n if (charcode <= 0x7F) { // 1 byte character 2^7\n uint[j] = charcode;\n }\n else if (charcode < 0x800) { // 2 byte character 2^11\n uint[j] = 0xc0 | (charcode >> 6);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else if ((charcode < 0xd800 || charcode >= 0xe000)) { // 3 byte character 2^16 \n uint[j] = 0xe0 | (charcode >> 12);\n uint[++j] = 0x80 | ((charcode >> 6) & 0x3f);\n uint[++j] = 0x80 | (charcode & 0x3f);\n }\n else {\n uint[j] = 0xef;\n uint[++j] = 0xbf;\n uint[++j] = 0xbd; // U+FFFE \"replacement character\"\n }\n ++j;\n ++index;\n }\n return bytes;\n };\n Encoding.prototype.getBytesOfUnicodeEncoding = function (byteCount, s, charIndex, charCount) {\n var bytes = new ArrayBuffer(byteCount);\n var uint16 = new Uint16Array(bytes);\n for (var i = 0; i < charCount; i++) {\n var charcode = s.charCodeAt(i);\n uint16[i] = charcode;\n }\n return bytes;\n };\n Encoding.prototype.getStringOfUtf8Encoding = function (byteCal, index, count) {\n var j = 0;\n var i = index;\n var s = '';\n for (j; j < count; j++) {\n var c = byteCal[i++];\n while (i > byteCal.length) {\n return s;\n }\n if (c > 127) {\n if (c > 191 && c < 224 && i < count) {\n c = (c & 31) << 6 | byteCal[i] & 63;\n }\n else if (c > 223 && c < 240 && i < byteCal.byteLength) {\n c = (c & 15) << 12 | (byteCal[i] & 63) << 6 | byteCal[++i] & 63;\n }\n else if (c > 239 && c < 248 && i < byteCal.byteLength) {\n c = (c & 7) << 18 | (byteCal[i] & 63) << 12 | (byteCal[++i] & 63) << 6 | byteCal[++i] & 63;\n }\n ++i;\n }\n s += String.fromCharCode(c); // 1 byte(ASCII) character \n }\n return s;\n };\n Encoding.prototype.getStringofUnicodeEncoding = function (byteUni, index, count) {\n if (count > byteUni.length) {\n throw new RangeError('ArgumentOutOfRange_Count');\n }\n var byte16 = new Uint16Array(count);\n var out = '';\n for (var i = 0; i < count && i < byteUni.length; i++) {\n byte16[i] = byteUni[index++];\n }\n out = String.fromCharCode.apply(null, byte16);\n return out;\n };\n /**\n * To clear the encoding instance\n * @return {void}\n */\n Encoding.prototype.destroy = function () {\n this.emitBOM = undefined;\n this.encodingType = undefined;\n };\n return Encoding;\n}());\n/**\n * To check the object is null or undefined and throw error if it is null or undefined\n * @param {Object} value - object to check is null or undefined\n * @return {boolean}\n * @throws {ArgumentException} - if the value is null or undefined\n * @private\n */\nfunction validateNullOrUndefined(value, message) {\n if (value === null || value === undefined) {\n throw new Error('ArgumentException: ' + message + ' cannot be null or undefined');\n }\n}\n\n/**\n * StreamWriter class contains the implementation for writing characters to a file in a particular encoding\n * ```typescript\n * let writer = new StreamWriter();\n * writer.write('Hello World');\n * writer.save('Sample.txt');\n * writer.dispose();\n * ```\n */\nvar StreamWriter = /** @__PURE__ @class */ (function () {\n /**\n * Initializes a new instance of the StreamWriter class by using the specified encoding.\n * @param {Encoding} encoding?- The character encoding to use.\n */\n function StreamWriter(encoding) {\n this.bufferBlob = new Blob(['']);\n this.bufferText = '';\n this.init(encoding);\n Save.isMicrosoftBrowser = !(!navigator.msSaveBlob);\n }\n Object.defineProperty(StreamWriter.prototype, \"buffer\", {\n /**\n * Gets the content written to the StreamWriter as Blob.\n * @returns Blob\n */\n get: function () {\n this.flush();\n return this.bufferBlob;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StreamWriter.prototype, \"encoding\", {\n /**\n * Gets the encoding.\n * @returns Encoding\n */\n get: function () {\n return this.enc;\n },\n enumerable: true,\n configurable: true\n });\n StreamWriter.prototype.init = function (encoding) {\n if (encoding === null || encoding === undefined) {\n this.enc = new Encoding(false);\n this.enc.type = 'Utf8';\n }\n else {\n this.enc = encoding;\n this.setBomByte();\n }\n };\n /**\n * Private method to set Byte Order Mark(BOM) value based on EncodingType\n */\n StreamWriter.prototype.setBomByte = function () {\n if (this.encoding.includeBom) {\n switch (this.encoding.type) {\n case 'Unicode':\n var arrayUnicode = new ArrayBuffer(2);\n var uint8 = new Uint8Array(arrayUnicode);\n uint8[0] = 255;\n uint8[1] = 254;\n this.bufferBlob = new Blob([arrayUnicode]);\n break;\n case 'Utf8':\n var arrayUtf8 = new ArrayBuffer(3);\n var utf8 = new Uint8Array(arrayUtf8);\n utf8[0] = 239;\n utf8[1] = 187;\n utf8[2] = 191;\n this.bufferBlob = new Blob([arrayUtf8]);\n break;\n default:\n this.bufferBlob = new Blob(['']);\n break;\n }\n }\n };\n /**\n * Saves the file with specified name and sends the file to client browser\n * @param {string} fileName - The file name to save\n * @returns {void}\n */\n StreamWriter.prototype.save = function (fileName) {\n if (this.bufferText !== '') {\n this.flush();\n }\n Save.save(fileName, this.buffer);\n };\n /**\n * Writes the specified string.\n * @param {string} value - The string to write. If value is null or undefined, nothing is written.\n * @returns {void}\n */\n StreamWriter.prototype.write = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText += value;\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n StreamWriter.prototype.flush = function () {\n if (this.bufferText === undefined || this.bufferText === null || this.bufferText.length === 0) {\n return;\n }\n var bufferArray = this.encoding.getBytes(this.bufferText, 0, this.bufferText.length);\n this.bufferText = '';\n this.bufferBlob = new Blob([this.bufferBlob, bufferArray]);\n };\n /**\n * Writes the specified string followed by a line terminator\n * @param {string} value - The string to write. If value is null or undefined, nothing is written\n * @returns {void}\n */\n StreamWriter.prototype.writeLine = function (value) {\n if (this.encoding === undefined) {\n throw new Error('Object Disposed Exception: current writer is disposed');\n }\n validateNullOrUndefined(value, 'string');\n this.bufferText = this.bufferText + value + '\\r\\n';\n if (this.bufferText.length >= 10240) {\n this.flush();\n }\n };\n /**\n * Releases the resources used by the StreamWriter\n * @returns {void}\n */\n StreamWriter.prototype.destroy = function () {\n this.bufferBlob = undefined;\n this.bufferText = undefined;\n if (this.enc instanceof Encoding) {\n this.enc.destroy();\n }\n this.enc = undefined;\n };\n return StreamWriter;\n}());\n\n// export all modules from current location\n// example: export * from './module'\n/**\n * file utils modules\n */\n\nexport { XmlWriter, Namespace, XmlElement, XmlAttribute, StreamWriter, Encoding, validateNullOrUndefined, Save };\n","import { Ajax, Browser, ChildProperty, Complex, Component, Draggable, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, Touch, addClass, closest, createElement, detach, extend, formatUnit, getUniqueID, getValue, isNullOrUndefined, isVisible, matches, remove, removeClass, select, selectAll, setStyleAttribute, setValue } from '@syncfusion/ej2-base';\nimport { Splitter } from '@syncfusion/ej2-layouts';\nimport { Dialog, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Input, TextBox, Uploader } from '@syncfusion/ej2-inputs';\nimport { CheckBox, createCheckBox } from '@syncfusion/ej2-buttons';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { ContextMenu, Toolbar, TreeView } from '@syncfusion/ej2-navigations';\nimport { ContextMenu as ContextMenu$1, Grid, Resize, Sort, VirtualScroll } from '@syncfusion/ej2-grids';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * Specifies the Ajax settings of the File Manager.\n */\nvar AjaxSettings = /** @__PURE__ @class */ (function (_super) {\n __extends(AjaxSettings, _super);\n function AjaxSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"downloadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"getImageUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"uploadUrl\", void 0);\n __decorate([\n Property(null)\n ], AjaxSettings.prototype, \"url\", void 0);\n return AjaxSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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 toolbarItems = ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename',\n 'SortBy', 'Refresh', 'Selection', 'View', 'Details'];\n/**\n * Specifies the Toolbar settings of the FileManager.\n */\nvar ToolbarSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property(toolbarItems)\n ], ToolbarSettings.prototype, \"items\", void 0);\n __decorate$1([\n Property(true)\n ], ToolbarSettings.prototype, \"visible\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Specifies the Search settings of the File Manager.\n */\nvar SearchSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$2(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(true)\n ], SearchSettings.prototype, \"allowSearchOnTyping\", void 0);\n __decorate$2([\n Property('contains')\n ], SearchSettings.prototype, \"filterType\", void 0);\n __decorate$2([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate$2([\n Property(null)\n ], SearchSettings.prototype, \"placeholder\", void 0);\n return SearchSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Specifies the columns in the details view of the file manager.\n */\nvar columnArray = [\n {\n field: 'name', headerText: 'Name', minWidth: 120, isPrimaryKey: true,\n template: '${name}', customAttributes: { class: 'e-fe-grid-name' }\n },\n {\n field: '_fm_modified', headerText: 'DateModified', type: 'dateTime',\n format: 'MMMM dd, yyyy HH:mm', minWidth: 120, width: '190'\n },\n {\n field: 'size', headerText: 'Size', minWidth: 90, width: '110', template: '${size}'\n }\n];\n/**\n * Specifies the grid settings of the File Manager.\n */\nvar DetailsViewSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$3(DetailsViewSettings, _super);\n function DetailsViewSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property(true)\n ], DetailsViewSettings.prototype, \"columnResizing\", void 0);\n __decorate$3([\n Property(columnArray)\n ], DetailsViewSettings.prototype, \"columns\", void 0);\n return DetailsViewSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\nvar fileItems = ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Download', 'Rename', '|', 'Details'];\nvar folderItems = ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', 'Download', '|', 'Details'];\nvar layoutItems = [\n 'SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'\n];\n/**\n * Specifies the ContextMenu settings of the File Manager.\n */\nvar ContextMenuSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property(fileItems)\n ], ContextMenuSettings.prototype, \"file\", void 0);\n __decorate$4([\n Property(folderItems)\n ], ContextMenuSettings.prototype, \"folder\", void 0);\n __decorate$4([\n Property(layoutItems)\n ], ContextMenuSettings.prototype, \"layout\", void 0);\n __decorate$4([\n Property(true)\n ], ContextMenuSettings.prototype, \"visible\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Specifies the navigationpane settings of the File Manager.\n */\nvar NavigationPaneSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(NavigationPaneSettings, _super);\n function NavigationPaneSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$5([\n Property('650px')\n ], NavigationPaneSettings.prototype, \"maxWidth\", void 0);\n __decorate$5([\n Property('240px')\n ], NavigationPaneSettings.prototype, \"minWidth\", void 0);\n __decorate$5([\n Property(true)\n ], NavigationPaneSettings.prototype, \"visible\", void 0);\n __decorate$5([\n Property('None')\n ], NavigationPaneSettings.prototype, \"sortOrder\", void 0);\n return NavigationPaneSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Specifies the Ajax settings of the File Manager.\n */\nvar UploadSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(UploadSettings, _super);\n function UploadSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$6([\n Property('')\n ], UploadSettings.prototype, \"allowedExtensions\", void 0);\n __decorate$6([\n Property(true)\n ], UploadSettings.prototype, \"autoUpload\", void 0);\n __decorate$6([\n Property(false)\n ], UploadSettings.prototype, \"autoClose\", void 0);\n __decorate$6([\n Property(false)\n ], UploadSettings.prototype, \"directoryUpload\", void 0);\n __decorate$6([\n Property(0)\n ], UploadSettings.prototype, \"minFileSize\", void 0);\n __decorate$6([\n Property(30000000)\n ], UploadSettings.prototype, \"maxFileSize\", void 0);\n return UploadSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Interface for a class Column\n */\n/* istanbul ignore next */\nvar Column = /** @__PURE__ @class */ (function (_super) {\n __extends$7(Column, _super);\n function Column() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Property('')\n ], Column.prototype, \"field\", void 0);\n __decorate$7([\n Property('')\n ], Column.prototype, \"headerText\", void 0);\n __decorate$7([\n Property('')\n ], Column.prototype, \"width\", void 0);\n __decorate$7([\n Property('')\n ], Column.prototype, \"minWidth\", void 0);\n __decorate$7([\n Property('')\n ], Column.prototype, \"maxWidth\", void 0);\n __decorate$7([\n Property('Left')\n ], Column.prototype, \"textAlign\", void 0);\n __decorate$7([\n Property(null)\n ], Column.prototype, \"headerTextAlign\", void 0);\n __decorate$7([\n Property(null)\n ], Column.prototype, \"type\", void 0);\n __decorate$7([\n Property(null)\n ], Column.prototype, \"format\", void 0);\n __decorate$7([\n Property(null)\n ], Column.prototype, \"template\", void 0);\n __decorate$7([\n Property(null)\n ], Column.prototype, \"headerTemplate\", void 0);\n __decorate$7([\n Property(true)\n ], Column.prototype, \"allowSorting\", void 0);\n __decorate$7([\n Property(true)\n ], Column.prototype, \"allowResizing\", void 0);\n __decorate$7([\n Property(null)\n ], Column.prototype, \"customAttributes\", void 0);\n __decorate$7([\n Property('')\n ], Column.prototype, \"hideAtMedia\", void 0);\n __decorate$7([\n Property(null)\n ], Column.prototype, \"customFormat\", void 0);\n __decorate$7([\n Property(false)\n ], Column.prototype, \"isPrimaryKey\", void 0);\n return Column;\n}(ChildProperty));\n\n/**\n * FileExplorer common modules\n */\n\n/**\n * Specifies the File Manager internal ID's\n */\n/** @hidden */\nvar TOOLBAR_ID = '_toolbar';\n/** @hidden */\nvar LAYOUT_ID = '_layout';\n/** @hidden */\nvar NAVIGATION_ID = '_navigation';\n/** @hidden */\nvar TREE_ID = '_tree';\n/** @hidden */\nvar GRID_ID = '_grid';\n/** @hidden */\nvar LARGEICON_ID = '_largeicons';\n/** @hidden */\nvar DIALOG_ID = '_dialog';\n/** @hidden */\nvar ALT_DIALOG_ID = '_alt_dialog';\n/** @hidden */\nvar IMG_DIALOG_ID = '_img_dialog';\n/** @hidden */\nvar EXTN_DIALOG_ID = '_extn_dialog';\n/** @hidden */\nvar UPLOAD_DIALOG_ID = '_upload_dialog';\n/** @hidden */\nvar RETRY_DIALOG_ID = '_retry_dialog';\n/** @hidden */\nvar CONTEXT_MENU_ID = '_contextmenu';\n/** @hidden */\nvar SORTBY_ID = '_sortby';\n/** @hidden */\nvar VIEW_ID = '_view';\n/** @hidden */\nvar SPLITTER_ID = '_splitter';\n/** @hidden */\nvar CONTENT_ID = '_content';\n/** @hidden */\nvar BREADCRUMBBAR_ID = '_breadcrumbbar';\n/** @hidden */\nvar UPLOAD_ID = '_upload';\n/** @hidden */\nvar RETRY_ID = '_retry';\n/** @hidden */\nvar SEARCH_ID = '_search';\n/**\n * Specifies the File Manager internal class names\n */\n/** @hidden */\nvar ROOT = 'e-filemanager';\n/** @hidden */\nvar CONTROL = 'e-control';\n/** @hidden */\nvar CHECK_SELECT = 'e-fe-cb-select';\n/** @hidden */\nvar ROOT_POPUP = 'e-fe-popup';\n/** @hidden */\nvar MOBILE = 'e-fe-mobile';\n/** @hidden */\nvar MOB_POPUP = 'e-fe-popup e-fe-mobile';\n/** @hidden */\nvar MULTI_SELECT = 'e-fe-m-select';\n/** @hidden */\nvar FILTER = 'e-fe-m-filter';\n/** @hidden */\nvar LAYOUT = 'e-layout';\n/** @hidden */\nvar NAVIGATION = 'e-navigation';\n/** @hidden */\nvar LAYOUT_CONTENT = 'e-layout-content';\n/** @hidden */\nvar LARGE_ICONS = 'e-large-icons';\n/** @hidden */\nvar TB_ITEM = 'e-toolbar-item';\n/** @hidden */\nvar LIST_ITEM = 'e-list-item';\n/** @hidden */\nvar LIST_TEXT = 'e-list-text';\n/** @hidden */\nvar LIST_PARENT = 'e-list-parent';\n/** @hidden */\nvar TB_OPTION_TICK = 'e-icons e-fe-tick';\n/** @hidden */\nvar TB_OPTION_DOT = 'e-icons e-fe-dot';\n/** @hidden */\nvar BLUR = 'e-blur';\n/** @hidden */\nvar ACTIVE = 'e-active';\n/** @hidden */\nvar HOVER = 'e-hover';\n/** @hidden */\nvar FOCUS = 'e-focus';\n/** @hidden */\nvar FOCUSED = 'e-focused';\n/** @hidden */\nvar CHECK = 'e-check';\n/** @hidden */\nvar FRAME = 'e-frame';\n/** @hidden */\nvar CB_WRAP = 'e-checkbox-wrapper';\n/** @hidden */\nvar ROW = 'e-row';\n/** @hidden */\nvar ROWCELL = 'e-rowcell';\n/** @hidden */\nvar EMPTY = 'e-empty';\n/** @hidden */\nvar EMPTY_CONTENT = 'e-empty-content';\n/** @hidden */\nvar EMPTY_INNER_CONTENT = 'e-empty-inner-content';\n/** @hidden */\nvar CLONE = 'e-fe-clone';\n/** @hidden */\nvar DROP_FOLDER = 'e-fe-drop-folder';\n/** @hidden */\nvar DROP_FILE = 'e-fe-drop-file';\n/** @hidden */\nvar FOLDER = 'e-fe-folder';\n/** @hidden */\nvar ICON_IMAGE = 'e-fe-image';\n/** @hidden */\nvar ICON_MUSIC = 'e-fe-music';\n/** @hidden */\nvar ICON_VIDEO = 'e-fe-video';\n/** @hidden */\nvar LARGE_ICON = 'e-large-icon';\n/** @hidden */\nvar LARGE_EMPTY_FOLDER = 'e-empty-icon e-fe-folder';\n/** @hidden */\nvar LARGE_EMPTY_FOLDER_TWO = 'e-empty-icon.e-fe-folder';\n/** @hidden */\nvar LARGE_ICON_FOLDER = 'e-fe-folder';\n/** @hidden */\nvar SELECTED_ITEMS = 'e-items';\n/** @hidden */\nvar TEXT_CONTENT = 'e-text-content';\n/** @hidden */\nvar GRID_HEADER = 'e-gridheader';\n/** @hidden */\nvar TEMPLATE_CELL = 'e-templatecell';\n/** @hidden */\nvar TREE_VIEW = 'e-treeview';\n/** @hidden */\nvar MENU_ITEM = 'e-menu-item';\n/** @hidden */\nvar MENU_ICON = 'e-menu-icon';\n/** @hidden */\nvar SUBMENU_ICON = 'e-caret';\n/** @hidden */\nvar GRID_VIEW = 'e-content';\n/** @hidden */\nvar GRID_CONTENT = 'e-gridcontent';\n/** @hidden */\nvar ICON_VIEW = 'e-list-parent';\n/** @hidden */\nvar ICON_OPEN = 'e-icons e-fe-open';\n/** @hidden */\nvar ICON_UPLOAD = 'e-icons e-fe-upload';\n/** @hidden */\nvar ICON_CUT = 'e-icons e-fe-cut';\n/** @hidden */\nvar ICON_COPY = 'e-icons e-fe-copy';\n/** @hidden */\nvar ICON_PASTE = 'e-icons e-fe-paste';\n/** @hidden */\nvar ICON_DELETE = 'e-icons e-fe-delete';\n/** @hidden */\nvar ICON_RENAME = 'e-icons e-fe-rename';\n/** @hidden */\nvar ICON_NEWFOLDER = 'e-icons e-fe-newfolder';\n/** @hidden */\nvar ICON_DETAILS = 'e-icons e-fe-details';\n/** @hidden */\nvar ICON_SHORTBY = 'e-icons e-fe-sort';\n/** @hidden */\nvar ICON_REFRESH = 'e-icons e-fe-refresh';\n/** @hidden */\nvar ICON_SELECTALL = 'e-icons e-fe-select';\n/** @hidden */\nvar ICON_DOWNLOAD = 'e-icons e-fe-download';\n/** @hidden */\nvar ICON_OPTIONS = 'e-icons e-fe-options';\n/** @hidden */\nvar ICON_GRID = 'e-icons e-fe-grid';\n/** @hidden */\nvar ICON_LARGE = 'e-icons e-fe-large';\n/** @hidden */\nvar ICON_BREADCRUMB = 'e-icons e-fe-breadcrumb';\n/** @hidden */\nvar ICON_CLEAR = 'e-icons e-fe-clear';\n/** @hidden */\nvar ICON_DROP_IN = 'e-icons e-fe-drop-in';\n/** @hidden */\nvar ICON_DROP_OUT = 'e-icons e-fe-drop-out';\n/** @hidden */\nvar ICON_NO_DROP = 'e-icons e-fe-no-drop';\n/** @hidden */\nvar ICONS = 'e-icons';\n/** @hidden */\nvar DETAILS_LABEL = 'e-detailslabel';\n/** @hidden */\nvar ERROR_CONTENT = 'e-fe-errorcontent';\n/** @hidden */\nvar STATUS = 'e-status';\n/** @hidden */\nvar BREADCRUMBS = 'e-address';\n/** @hidden */\nvar RTL = 'e-rtl';\n/** @hidden */\nvar DISPLAY_NONE = 'e-display-none';\n/** @hidden */\nvar COLLAPSED = 'e-node-collapsed';\n/** @hidden */\nvar FULLROW = 'e-fullrow';\n/** @hidden */\nvar ICON_COLLAPSIBLE = 'e-icon-collapsible';\n/** @hidden */\nvar SPLIT_BAR = 'e-split-bar';\n/** @hidden */\nvar HEADER_CHECK = 'e-headercheck';\n/** @hidden */\nvar OVERLAY = 'e-fe-overlay';\n/** @hidden */\nvar VALUE = 'e-fe-value';\n\n/**\n * Specifies the File Manager internal variables\n */\n/** @hidden */\nvar isFile = 'isFile';\n/**\n * Specifies the File Manager internal events\n */\n/** @hidden */\nvar modelChanged = 'model-changed';\n/** @hidden */\nvar initialEnd = 'initial-end';\n/** @hidden */\nvar finalizeEnd = 'finalize-end';\n/** @hidden */\nvar createEnd = 'create-end';\n/** @hidden */\nvar filterEnd = 'filter-end';\n/** @hidden */\nvar beforeDelete = 'before-delete';\n/** @hidden */\nvar pathDrag = 'path-drag';\n/** @hidden */\nvar deleteInit = 'delete-init';\n/** @hidden */\nvar deleteEnd = 'delete-end';\n/** @hidden */\nvar refreshEnd = 'refresh-end';\n/** @hidden */\nvar resizeEnd = 'resize-end';\n/** @hidden */\nvar splitterResize = 'splitter-resize';\n/** @hidden */\nvar pathChanged = 'path-changed';\n/** @hidden */\nvar destroy = 'destroy';\n/** @hidden */\nvar beforeRequest = 'before-request';\n/** @hidden */\nvar upload = 'upload';\n/** @hidden */\nvar skipUpload = 'skip-upload';\n/** @hidden */\nvar afterRequest = 'after-request';\n/** @hidden */\nvar download = 'download';\n/** @hidden */\nvar layoutRefresh = 'layout-refresh';\n/** @hidden */\nvar actionFailure = 'actionFailure';\n/** @hidden */\nvar search = 'search';\n/** @hidden */\nvar openInit = 'open-init';\n/** @hidden */\nvar openEnd = 'open-end';\n/** @hidden */\nvar selectionChanged = 'selection-changed';\n/** @hidden */\nvar selectAllInit = 'select-all-init';\n/** @hidden */\nvar clearAllInit = 'clear-all-init';\n/** @hidden */\nvar clearPathInit = 'clear-path-init';\n/** @hidden */\nvar layoutChange = 'layout-change';\n/** @hidden */\nvar sortByChange = 'sort-by-change';\n/** @hidden */\nvar nodeExpand = 'node-expand';\n/** @hidden */\nvar detailsInit = 'details-init';\n/** @hidden */\nvar menuItemData = 'menu-item-data';\n/** @hidden */\nvar renameInit = 'rename-init';\n/** @hidden */\nvar renameEndParent = 'rename-end-parent';\n/** @hidden */\nvar renameEnd = 'rename-end';\n/** @hidden */\nvar showPaste = 'show-paste';\n/** @hidden */\nvar hidePaste = 'hide-paste';\n/** @hidden */\nvar selectedData = 'selected-data';\n/** @hidden */\nvar cutCopyInit = 'cut-copy-init';\n/** @hidden */\nvar pasteInit = 'paste-init';\n/** @hidden */\nvar pasteEnd = 'paste-end';\n/** @hidden */\nvar cutEnd = 'cut-end';\n/** @hidden */\nvar hideLayout = 'hide-layout';\n/** @hidden */\nvar updateTreeSelection = 'update-tree-selection';\n/** @hidden */\nvar treeSelect = 'select-node';\n/** @hidden */\nvar sortColumn = 'sort-column';\n/** @hidden */\nvar pathColumn = 'path-column';\n/** @hidden */\nvar searchTextChange = 'search-change';\n/** @hidden */\nvar beforeDownload = 'before-download';\n/** @hidden */\nvar downloadInit = 'download-init';\n/** @hidden */\nvar dropInit = 'drop-init';\n/** @hidden */\nvar dragEnd = 'drag-end';\n/** @hidden */\nvar dropPath = 'drop-path';\n/** @hidden */\nvar dragHelper = 'drag-helper';\n/** @hidden */\nvar dragging = 'dragging';\n/** @hidden */\nvar updateSelectionData = 'update-selection-data';\n/** @hidden */\nvar methodCall = 'method-call';\n/** @hidden */\nvar permissionRead = 'read';\n/** @hidden */\nvar permissionEdit = 'write';\n/** @hidden */\nvar permissionEditContents = 'writeContents';\n/** @hidden */\nvar permissionCopy = 'copy';\n/** @hidden */\nvar permissionUpload = 'upload';\n/** @hidden */\nvar permissionDownload = 'download';\n\n/**\n * Utility file for common actions\n *\n * @param {HTMLLIElement} node - specifies the node.\n * @param {Object} data - specifies the data.\n * @param {IFileManager} instance - specifies the control instance.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction updatePath(node, data, instance) {\n var text = getValue('name', data);\n var id = node.getAttribute('data-id');\n var newText = isNullOrUndefined(id) ? text : id;\n instance.setProperties({ path: getPath(node, newText, instance.hasId) }, true);\n instance.pathId = getPathId(node);\n instance.pathNames = getPathNames(node, text);\n}\n/**\n * Functions for get path in FileManager\n *\n * @param {Element | Node} element - specifies the element.\n * @param {string} text - specifies the text.\n * @param {boolean} hasId - specifies the id.\n * @returns {string} returns the path.\n * @private\n */\nfunction getPath(element, text, hasId) {\n var matched = getParents(element, text, false, hasId);\n var path = hasId ? '' : '/';\n var len = matched.length - (hasId ? 1 : 2);\n for (var i = len; i >= 0; i--) {\n path += matched[i] + '/';\n }\n return path;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} node - specifies the node element.\n * @returns {string[]} returns the path ids.\n * @private\n */\nfunction getPathId(node) {\n var matched = getParents(node, node.getAttribute('data-uid'), true);\n var ids = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n ids.push(matched[i]);\n }\n return ids;\n}\n/**\n * Functions for get path names in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @returns {string[]} returns the path names.\n * @private\n */\nfunction getPathNames(element, text) {\n var matched = getParents(element, text, false);\n var names = [];\n for (var i = matched.length - 1; i >= 0; i--) {\n names.push(matched[i]);\n }\n return names;\n}\n/**\n * Functions for get path id in FileManager\n *\n * @param {Element} element - specifies the node element.\n * @param {string} text - specifies the text.\n * @param {boolean} isId - specifies the id.\n * @param {boolean} hasId - checks the id exists.\n * @returns {string[]} returns parent element.\n * @private\n */\nfunction getParents(element, text, isId, hasId) {\n var matched = [text];\n var el = element.parentNode;\n while (!isNullOrUndefined(el)) {\n if (matches(el, '.' + LIST_ITEM)) {\n var parentText = isId ? el.getAttribute('data-uid') : (hasId ? el.getAttribute('data-id') :\n select('.' + LIST_TEXT, el).textContent);\n matched.push(parentText);\n }\n el = el.parentNode;\n if (el.classList.contains(TREE_VIEW)) {\n break;\n }\n }\n return matched;\n}\n/**\n * Functions for generate path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction generatePath(parent) {\n var key = parent.hasId ? 'id' : 'name';\n var newPath = parent.hasId ? '' : '/';\n var i = parent.hasId ? 0 : 1;\n for (i; i < parent.pathId.length; i++) {\n // eslint-disable-next-line\n var data = getValue(parent.pathId[i], parent.feParent);\n newPath += getValue(key, data) + '/';\n }\n parent.setProperties({ path: newPath }, true);\n}\n/**\n * Functions for remove active element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction removeActive(parent) {\n if (parent.isCut) {\n removeBlur(parent);\n parent.selectedNodes = [];\n parent.actionRecords = [];\n parent.enablePaste = false;\n parent.notify(hidePaste, {});\n }\n}\n/**\n * Selects active element in File Manager\n *\n * @param {string} action - specifies the action.\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {boolean} - returns active element.\n * @private\n */\nfunction activeElement(action, parent) {\n parent.isSearchCut = false;\n parent.actionRecords = [];\n parent.activeElements = [];\n parent.notify(cutCopyInit, {});\n if (parent.activeElements.length === 0) {\n return false;\n }\n removeBlur(parent);\n var blurEle = parent.activeElements;\n if (parent.activeModule !== 'navigationpane') {\n parent.targetPath = parent.path;\n }\n else {\n parent.targetPath = getParentPath(parent.path);\n }\n var i = 0;\n if (blurEle) {\n getModule(parent, blurEle[0]);\n if (action === 'cut') {\n while (i < blurEle.length) {\n addBlur(blurEle[i]);\n i++;\n }\n }\n }\n i = 0;\n parent.selectedNodes = [];\n parent.enablePaste = true;\n parent.notify(showPaste, {});\n while (i < parent.activeRecords.length) {\n parent.actionRecords.push(parent.activeRecords[i]);\n parent.selectedNodes.push(getValue('name', parent.activeRecords[i]));\n i++;\n }\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) &&\n parent.activeModule !== 'navigationpane') {\n parent.selectedNodes = [];\n parent.isSearchCut = true;\n var i_1 = 0;\n while (i_1 < parent.selectedItems.length) {\n parent.selectedNodes.push(parent.selectedItems[i_1]);\n i_1++;\n }\n }\n return true;\n}\n/**\n * Adds blur to the elements\n *\n * @param {Element} nodes - specifies the nodes.\n * @returns {void}\n * @private\n */\nfunction addBlur(nodes) {\n nodes.classList.add(BLUR);\n}\n/**\n * Removes blur from elements\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} hover - specifies the hover string.\n * @returns {void}\n * @private\n */\nfunction removeBlur(parent, hover) {\n var blurEle = (!hover) ? parent.element.querySelectorAll('.' + BLUR) :\n parent.element.querySelectorAll('.' + HOVER);\n var i = 0;\n while (i < blurEle.length) {\n blurEle[i].classList.remove((!hover) ? BLUR : HOVER);\n i++;\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nfunction getModule(parent, element) {\n if (element) {\n if (element.classList.contains(ROW)) {\n parent.activeModule = 'detailsview';\n }\n else if (closest(element, '.' + LARGE_ICON)) {\n parent.activeModule = 'largeiconsview';\n }\n else {\n parent.activeModule = 'navigationpane';\n }\n }\n}\n/**\n * Gets module name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} value - specifies the value.\n * @param {boolean} isLayoutChange - specifies the layout change.\n * @returns {void}\n * @private\n */\nfunction searchWordHandler(parent, value, isLayoutChange) {\n var searchWord;\n if (value.length === 0 && !parent.isFiltered) {\n parent.notify(pathColumn, { args: parent });\n }\n if (parent.searchSettings.filterType === 'startsWith') {\n searchWord = value + '*';\n }\n else if (parent.searchSettings.filterType === 'endsWith') {\n searchWord = '*' + value;\n }\n else {\n searchWord = '*' + value + '*';\n }\n parent.searchWord = searchWord;\n parent.itemData = [getPathObject(parent)];\n if (value.length > 0) {\n var caseSensitive = parent.searchSettings.ignoreCase;\n var hiddenItems = parent.showHiddenItems;\n Search(parent, isLayoutChange ? layoutChange : search, parent.path, searchWord, hiddenItems, !caseSensitive);\n }\n else {\n if (!parent.isFiltered) {\n if (parent.isSortByClicked) {\n parent.notify(layoutChange, { files: (parent.oldView === 'Details') ? parent.detailsviewModule.gridObj.dataSource : parent.largeiconsviewModule.allItems });\n parent.isSortByClicked = false;\n }\n else {\n read(parent, isLayoutChange ? layoutChange : search, parent.path);\n }\n }\n else {\n filter(parent, layoutChange);\n }\n }\n}\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} view - specifies the view.\n * @returns {void}\n * @private\n */\nfunction updateLayout(parent, view) {\n parent.oldView = parent.view;\n parent.setProperties({ view: view }, true);\n if (parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) {\n parent.layoutSelectedItems = parent.selectedItems;\n }\n var searchWord = '';\n if (parent.breadcrumbbarModule.searchObj.element.value) {\n searchWord = parent.breadcrumbbarModule.searchObj.element.value;\n }\n parent.isLayoutChange = true;\n searchWordHandler(parent, searchWord, true);\n}\n/* istanbul ignore next */\n/**\n * Gets updated layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @private\n */\nfunction getTargetModule(parent, element) {\n var tartgetModule = '';\n if (element) {\n if (closest(element, '.' + ROOT + '.' + CONTROL + ' .' + GRID_CONTENT)) {\n tartgetModule = 'detailsview';\n }\n else if (closest(element, '.' + LARGE_ICONS)) {\n tartgetModule = 'largeiconsview';\n }\n else if (element.classList.contains('e-fullrow') ||\n element.classList.contains('e-icon-expandable')) {\n tartgetModule = 'navigationpane';\n }\n else if (closest(element, '.e-address-list-item')) {\n tartgetModule = 'breadcrumbbar';\n }\n else {\n tartgetModule = '';\n }\n }\n parent.targetModule = tartgetModule;\n}\n/* istanbul ignore next */\n/**\n * refresh the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction refresh(parent) {\n parent.itemData = [getPathObject(parent)];\n if (!hasReadAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], permissionRead);\n }\n else {\n read(parent, refreshEnd, parent.path);\n }\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openAction(parent) {\n read(parent, openEnd, parent.path);\n}\n/**\n * open action in the layout\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {Object} - returns the path data.\n * @private\n */\n// eslint-disable-next-line\nfunction getPathObject(parent) {\n return getValue(parent.pathId[parent.pathId.length - 1], parent.feParent);\n}\n/**\n * Copy files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction copyFiles(parent) {\n if (!activeElement('copy', parent)) {\n return;\n }\n else {\n parent.fileAction = 'copy';\n }\n}\n/**\n * Cut files\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction cutFiles(parent) {\n if (!activeElement('cut', parent)) {\n return;\n }\n else {\n parent.isCut = true;\n parent.fileAction = 'move';\n }\n}\n/**\n * To add class for fileType\n *\n * @param {Object} file - specifies the file.\n * @returns {string} - returns the file type.\n * @private\n */\n// eslint-disable-next-line\nfunction fileType(file) {\n var isFile$$1 = getValue('isFile', file);\n if (!isFile$$1) {\n return FOLDER;\n }\n var imageFormat = ['bmp', 'dib', 'jpg', 'jpeg', 'jpe', 'jfif', 'gif', 'tif', 'tiff', 'png', 'ico'];\n var audioFormat = ['mp3', 'wav', 'aac', 'ogg', 'wma', 'aif', 'fla', 'm4a'];\n var videoFormat = ['webm', 'mkv', 'flv', 'vob', 'ogv', 'ogg', 'avi', 'wmv', 'mp4', '3gp'];\n var knownFormat = ['css', 'exe', 'html', 'js', 'msi', 'pdf', 'pptx', 'ppt', 'rar', 'zip', 'txt', 'docx', 'doc',\n 'xlsx', 'xls', 'xml', 'rtf', 'php'];\n var filetype = getValue('type', file);\n filetype = filetype.toLowerCase();\n if (filetype.indexOf('.') !== -1) {\n filetype = filetype.split('.').join('');\n }\n var iconType;\n if (imageFormat.indexOf(filetype) !== -1) {\n iconType = ICON_IMAGE;\n }\n else if (audioFormat.indexOf(filetype) !== -1) {\n iconType = ICON_MUSIC;\n }\n else if (videoFormat.indexOf(filetype) !== -1) {\n iconType = ICON_VIDEO;\n }\n else if (knownFormat.indexOf(filetype) !== -1) {\n iconType = 'e-fe-' + filetype;\n }\n else {\n iconType = 'e-fe-unknown e-fe-' + filetype;\n }\n return iconType;\n}\n/* istanbul ignore next */\n/**\n * To get the image URL\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} item - specifies the item.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nfunction getImageUrl(parent, item) {\n var baseUrl = parent.ajaxSettings.getImageUrl ? parent.ajaxSettings.getImageUrl : parent.ajaxSettings.url;\n var pathUrl = (baseUrl.indexOf('?') !== -1) ? '&path=' : '?path=';\n var imgUrl;\n var fileName = encodeURIComponent(getValue('name', item));\n var fPath = getValue('filterPath', item);\n if (parent.hasId) {\n var imgId = getValue('id', item);\n imgUrl = baseUrl + pathUrl + parent.path + '&id=' + imgId;\n }\n else if (!isNullOrUndefined(fPath)) {\n imgUrl = baseUrl + pathUrl + encodeURIComponent(fPath.replace(/\\\\/g, '/')) + fileName;\n }\n else {\n imgUrl = baseUrl + pathUrl + parent.path + fileName;\n }\n imgUrl = imgUrl + '&time=' + (new Date().getTime()).toString();\n var eventArgs = {\n fileDetails: [item],\n imageUrl: imgUrl\n };\n parent.trigger('beforeImageLoad', eventArgs);\n return eventArgs.imageUrl;\n}\n/* istanbul ignore next */\n/**\n * Gets the full path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {string} path - specifies the path.\n * @returns {string} - returns the image url.\n * @private\n */\n// eslint-disable-next-line\nfunction getFullPath(parent, data, path) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', data) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', data);\n if (!isNullOrUndefined(fPath)) {\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return path + filePath;\n }\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @returns {string} - returns the name.\n * @private\n */\n// eslint-disable-next-line\nfunction getName(parent, data) {\n var name = getValue('name', data);\n var fPath = getValue('filterPath', data);\n if ((parent.breadcrumbbarModule.searchObj.element.value !== '' || parent.isFiltered) && !isNullOrUndefined(fPath)) {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(parent.path, '') + name;\n }\n return name;\n}\n/**\n * Gets the name\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object[]} items - specifies the item elements.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nfunction getSortedData(parent, items) {\n if (items.length === 0) {\n return items;\n }\n var query;\n if (parent.sortOrder !== 'None') {\n query = new Query().sortBy(parent.sortBy, parent.sortOrder.toLowerCase(), true).group('isFile');\n }\n else {\n query = new Query().group('isFile');\n }\n // eslint-disable-next-line\n var lists = new DataManager(items).executeLocal(query);\n return getValue('records', lists);\n}\n/**\n * Gets the data object\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} key - specifies the key.\n * @param {string} value - specifies the value.\n * @returns {Object} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nfunction getObject(parent, key, value) {\n // eslint-disable-next-line\n var currFiles = getValue(parent.pathId[parent.pathId.length - 1], parent.feFiles);\n var query = new Query().where(key, 'equal', value);\n // eslint-disable-next-line\n var lists = new DataManager(currFiles).executeLocal(query);\n return lists[0];\n}\n/**\n * Creates empty element\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLElement} element - specifies the element.\n * @param {ReadArgs | SearchArgs} args - specifies the args.\n * @returns {void}\n * @private\n */\nfunction createEmptyElement(parent, element, args) {\n var top;\n var layoutElement = select('#' + parent.element.id + LAYOUT_ID, parent.element);\n var addressBarHeight = select('#' + parent.element.id + BREADCRUMBBAR_ID, layoutElement).offsetHeight;\n top = layoutElement.offsetHeight - addressBarHeight;\n if (parent.view === 'Details') {\n top = top - select('.' + GRID_HEADER, layoutElement).offsetHeight;\n }\n if (isNullOrUndefined(element.querySelector('.' + EMPTY))) {\n var emptyDiv = createElement('div', { className: EMPTY });\n var emptyFolder = createElement('div', { className: LARGE_EMPTY_FOLDER });\n var emptyEle = createElement('div', { className: EMPTY_CONTENT });\n var dragFile = createElement('div', { className: EMPTY_INNER_CONTENT });\n if (parent.view === 'Details') {\n element.querySelector('.' + GRID_VIEW).appendChild(emptyDiv);\n }\n else {\n element.appendChild(emptyDiv);\n }\n emptyDiv.appendChild(emptyFolder);\n emptyDiv.appendChild(emptyEle);\n emptyDiv.appendChild(dragFile);\n }\n if (element.querySelector('.' + EMPTY)) {\n if (!isNullOrUndefined(args.error)) {\n element.querySelector('.' + EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Access-Denied');\n element.querySelector('.' + EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Access-Details');\n }\n else if (parent.isFiltered) {\n element.querySelector('.' + EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Empty');\n element.querySelector('.' + EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Filter-Key');\n }\n else if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n element.querySelector('.' + EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Search-Empty');\n element.querySelector('.' + EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'Search-Key');\n }\n else {\n element.querySelector('.' + EMPTY_CONTENT).innerHTML = getLocaleText(parent, 'Folder-Empty');\n element.querySelector('.' + EMPTY_INNER_CONTENT).innerHTML = getLocaleText(parent, 'File-Upload');\n }\n }\n var eDiv = select('.' + EMPTY, element);\n top = (top - eDiv.offsetHeight) / 2;\n eDiv.style.marginTop = top + 'px';\n}\n/**\n * Gets the directories\n *\n * @param {Object[]} files - specifies the file object.\n * @returns {Object[]} - returns the sorted data.\n * @private\n */\n// eslint-disable-next-line\nfunction getDirectories(files) {\n return new DataManager(files).executeLocal(new Query().where(isFile, 'equal', false, false));\n}\n/**\n * set the Node ID\n *\n * @param {ReadArgs} result - specifies the result.\n * @param {string} rootId - specifies the rootId.\n * @returns {void}\n * @private\n */\nfunction setNodeId(result, rootId) {\n // eslint-disable-next-line\n var dirs = getDirectories(result.files);\n for (var i = 0, len = dirs.length; i < len; i++) {\n setValue('_fm_id', rootId + '_' + i, dirs[i]);\n }\n}\n/**\n * set the date object\n *\n * @param {Object[]} args - specifies the file object.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction setDateObject(args) {\n for (var i = 0; i < args.length; i++) {\n setValue('_fm_created', new Date(getValue('dateCreated', args[i])), args[i]);\n setValue('_fm_modified', new Date(getValue('dateModified', args[i])), args[i]);\n }\n}\n/**\n * get the locale text\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text.\n * @returns {string} - returns the locale text.\n * @private\n */\nfunction getLocaleText(parent, text) {\n var locale = parent.localeObj.getConstant(text);\n return (locale === '') ? text : locale;\n}\n/**\n * get the CSS class\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} css - specifies the css.\n * @returns {string} - returns the css classes.\n * @private\n */\nfunction getCssClass(parent, css) {\n var cssClass = parent.cssClass;\n cssClass = (isNullOrUndefined(cssClass) || cssClass === '') ? css : (cssClass + ' ' + css);\n return cssClass;\n}\n/**\n * sort on click\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {MenuEventArgs} args - specifies the menu event arguements.\n * @returns {void}\n * @private\n */\nfunction sortbyClickHandler(parent, args) {\n var tick;\n parent.isSortByClicked = true;\n if (args.item.id.indexOf('ascending') !== -1 || args.item.id.indexOf('descending') !== -1 || args.item.id.indexOf('none') !== -1) {\n tick = true;\n }\n else {\n tick = false;\n }\n if (!tick) {\n parent.sortBy = getSortField(args.item.id);\n }\n else {\n parent.sortOrder = getSortField(args.item.id);\n }\n parent.itemData = [getPathObject(parent)];\n if (parent.view === 'Details') {\n if (parent.isMobile) {\n updateLayout(parent, 'Details');\n }\n else {\n parent.notify(sortColumn, { module: 'detailsview' });\n parent.isSortByClicked = false;\n }\n }\n if (parent.view === 'LargeIcons') {\n updateLayout(parent, 'LargeIcons');\n }\n parent.notify(sortByChange, {});\n}\n/**\n * Gets the sorted fields\n *\n * @param {string} id - specifies the id.\n * @returns {string} - returns the sorted fields\n * @private\n */\nfunction getSortField(id) {\n var text = id.substring(id.lastIndexOf('_') + 1);\n var field = text;\n switch (text) {\n case 'date':\n field = '_fm_modified';\n break;\n case 'ascending':\n field = 'Ascending';\n break;\n case 'descending':\n field = 'Descending';\n break;\n case 'none':\n field = 'None';\n break;\n }\n return field;\n}\n/**\n * Sets the next path\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction setNextPath(parent, path) {\n var currfolders = path.split('/');\n var folders = parent.originalPath.split('/');\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n var key = isNullOrUndefined(getValue('id', root)) ? 'name' : 'id';\n for (var i = currfolders.length - 1, len = folders.length - 1; i < len; i++) {\n var eventName = (folders[i + 1] === '') ? finalizeEnd : initialEnd;\n var newPath = (folders[i] === '') ? '/' : (parent.path + folders[i] + '/');\n // eslint-disable-next-line\n var data = getObject(parent, key, folders[i]);\n var id = getValue('_fm_id', data);\n parent.setProperties({ path: newPath }, true);\n parent.pathId.push(id);\n parent.itemData = [data];\n parent.pathNames.push(getValue('name', data));\n read(parent, eventName, parent.path);\n break;\n }\n}\n/**\n * Opens the searched folder\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction openSearchFolder(parent, data) {\n parent.notify(clearPathInit, { selectedNode: parent.pathId[parent.pathId.length - 1] });\n parent.originalPath = getFullPath(parent, data, parent.path);\n read(parent, (parent.path !== parent.originalPath) ? initialEnd : finalizeEnd, parent.path);\n}\n/**\n * Paste handling function\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction pasteHandler(parent) {\n parent.isDragDrop = false;\n if (parent.selectedNodes.length !== 0 && parent.enablePaste) {\n var path = (parent.folderPath === '') ? parent.path : parent.folderPath;\n // eslint-disable-next-line\n var subFolder = validateSubFolder(parent, parent.actionRecords, path, parent.path);\n if (!subFolder) {\n if ((parent.fileAction === 'move' && parent.targetPath !== path) || parent.fileAction === 'copy') {\n parent.notify(pasteInit, {});\n paste(parent, parent.targetPath, parent.selectedNodes, path, parent.fileAction, [], parent.actionRecords);\n }\n else {\n parent.enablePaste = false;\n parent.notify(hidePaste, {});\n removeBlur(parent);\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n }\n }\n }\n}\n/**\n * Validates the sub folders\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {'{ [key: string]: Object; }[]'} data - specifies the data.\n * @param {string} dropPath - specifies the drop path.\n * @param {string} dragPath - specifies the drag path.\n * @returns {boolean} - returns the validated sub folder.\n * @private\n */\n// eslint-disable-next-line\nfunction validateSubFolder(parent, data, dropPath$$1, dragPath) {\n var subFolder = false;\n for (var i = 0; i < data.length; i++) {\n if (!getValue('isFile', data[i])) {\n var tempTarget = getFullPath(parent, data[i], dragPath);\n if (dropPath$$1.indexOf(tempTarget) === 0) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Sub-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n else {\n var srcData = parent.dragNodes[i];\n var len = 0;\n if (srcData) {\n len = srcData.lastIndexOf('/');\n }\n var path = '';\n if (len > 0) {\n path = dragPath + srcData.substring(0, len + 1);\n }\n if (path === dropPath$$1) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(parent, 'Same-Folder-Error'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result);\n subFolder = true;\n break;\n }\n }\n }\n return subFolder;\n}\n/**\n * Validates the drop handler\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction dropHandler(parent) {\n parent.isDragDrop = true;\n if (parent.dragData.length !== 0) {\n parent.dragPath = parent.dragPath.replace(/\\\\/g, '/');\n parent.dropPath = parent.dropPath.replace(/\\\\/g, '/');\n var subFolder = validateSubFolder(parent, parent.dragData, parent.dropPath, parent.dragPath);\n if (!subFolder && (parent.dragPath !== parent.dropPath)) {\n parent.itemData = [parent.dropData];\n paste(parent, parent.dragPath, parent.dragNodes, parent.dropPath, 'move', [], parent.dragData);\n parent.notify(pasteInit, {});\n }\n }\n}\n/**\n * Gets the parent path\n *\n * @param {string} oldPath - specifies the old path.\n * @returns {string} - returns the parent path.\n * @private\n */\nfunction getParentPath(oldPath) {\n var path = oldPath.split('/');\n var newPath = path[0] + '/';\n for (var i = 1; i < path.length - 2; i++) {\n newPath += path[i] + '/';\n }\n return newPath;\n}\n/**\n * Gets the directory path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {ReadArgs} args - returns the read arguements.\n * @returns {string} - returns the directory path\n * @private\n */\nfunction getDirectoryPath(parent, args) {\n var filePath = getValue(parent.hasId ? 'id' : 'name', args.cwd) + '/';\n var fPath = getValue(parent.hasId ? 'filterId' : 'filterPath', args.cwd);\n if (!isNullOrUndefined(fPath)) {\n if (fPath === '') {\n return parent.hasId ? filePath : '/';\n }\n return fPath.replace(/\\\\/g, '/') + filePath;\n }\n else {\n return parent.path + filePath;\n }\n}\n/**\n * Gets the do paste path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} operation - specifies the operations.\n * @param {ReadArgs} result - returns the result.\n * @returns {void}\n * @private\n */\nfunction doPasteUpdate(parent, operation, result) {\n if (operation === 'move') {\n if (!parent.isDragDrop) {\n parent.enablePaste = false;\n parent.notify(hidePaste, {});\n parent.notify(cutEnd, result);\n }\n else {\n parent.notify(dragEnd, result);\n }\n }\n if (parent.duplicateItems.length === 0) {\n parent.pasteNodes = [];\n }\n var flag = false;\n for (var count = 0; (count < result.files.length) && !flag; count++) {\n parent.pasteNodes.push(result.files[count][parent.hasId ? 'id' : 'name']);\n if (parent.isDragDrop) {\n parent.droppedObjects.push(result.files[count]);\n }\n }\n parent.duplicateItems = [];\n parent.duplicateRecords = [];\n if (parent.isDragDrop && !parent.isPasteError) {\n parent.isDropEnd = true;\n }\n else {\n parent.isDropEnd = false;\n }\n if (!parent.isDragDrop || (parent.path === parent.dragPath) || (parent.path === parent.dropPath)\n || parent.isSearchDrag) {\n parent.isPathDrag = false;\n read(parent, pasteEnd, parent.path);\n }\n else {\n readDropPath(parent);\n }\n parent.trigger('success', { action: operation, result: result });\n}\n/**\n * Reads the drop path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction readDropPath(parent) {\n var pathId = getValue('_fm_id', parent.dropData);\n parent.expandedId = pathId;\n parent.itemData = [parent.dropData];\n if (parent.isPathDrag) {\n parent.notify(pathDrag, parent.itemData);\n }\n else {\n if (parent.navigationpaneModule) {\n var node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n if (!node) {\n var liElement = document.querySelector('[data-id = \"' + getValue('id', parent.dropData) + '\"]');\n pathId = liElement.getAttribute(\"data-uid\");\n node = select('[data-uid=\"' + pathId + '\"]', parent.navigationpaneModule.treeObj.element);\n }\n updatePath(node, parent.dropData, parent);\n }\n read(parent, dropPath, parent.dropPath);\n }\n}\n/**\n * Gets the duplicated path\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} name - specifies the name.\n * @returns {object} - returns the duplicated path.\n * @private\n */\n// eslint-disable-next-line\nfunction getDuplicateData(parent, name) {\n // eslint-disable-next-line\n var data = null;\n // eslint-disable-next-line\n var records = parent.isDragDrop ? parent.dragData : parent.actionRecords;\n for (var i = 0; i < records.length; i++) {\n if (getValue('name', records[i]) === name) {\n data = records[i];\n break;\n }\n }\n return data;\n}\n/**\n * Gets the create the virtual drag element\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction createVirtualDragElement(parent) {\n parent.isSearchDrag = false;\n if (parent.breadcrumbbarModule.searchObj.element.value !== '') {\n parent.isSearchDrag = true;\n }\n if (parent.activeModule !== 'navigationpane') {\n parent.dragNodes = [];\n var i = 0;\n while (i < parent.selectedItems.length) {\n parent.dragNodes.push(parent.selectedItems[i]);\n i++;\n }\n if (parent.selectedItems.length === 0 && parent.dragData && parent.dragData.length === 1) {\n parent.dragNodes.push(getItemName(parent, parent.dragData[0]));\n }\n }\n var cloneIcon = parent.createElement('div', {\n className: 'e-fe-icon ' + fileType(parent.dragData[0])\n });\n var cloneName = parent.createElement('div', {\n className: 'e-fe-name',\n innerHTML: parent.dragData[0].name\n });\n var virtualEle = parent.createElement('div', {\n className: 'e-fe-content'\n });\n virtualEle.appendChild(cloneIcon);\n virtualEle.appendChild(cloneName);\n var ele = parent.createElement('div', {\n className: CLONE\n });\n ele.appendChild(virtualEle);\n if (parent.dragNodes.length > 1) {\n var badge = parent.createElement('span', {\n className: 'e-fe-count',\n innerHTML: (parent.dragNodes.length).toString(10)\n });\n ele.appendChild(badge);\n }\n parent.virtualDragElement = ele;\n parent.element.appendChild(parent.virtualDragElement);\n}\n/**\n * Drops the stop handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nfunction dragStopHandler(parent, args) {\n var dragArgs = args;\n dragArgs.cancel = false;\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeDropTarget(parent);\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n removeBlur(parent);\n parent.uploadObj.dropArea = select('#' + parent.element.id + CONTENT_ID, parent.element);\n var virtualEle = select('.' + CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n getTargetModule(parent, args.target);\n parent.notify(dropInit, args);\n removeBlur(parent, 'hover');\n dragArgs.fileDetails = parent.dragData;\n parent.trigger('fileDragStop', dragArgs, function (dragArgs) {\n if (!dragArgs.cancel && !isNullOrUndefined(parent.targetModule) && parent.targetModule !== '' && parent.dragCount > 2) {\n dropHandler(parent);\n }\n parent.dragCount = 0;\n });\n}\n/**\n * Drag the start handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {'DragEventArgs'} args - specifies the drag event arguements.\n * @param {Draggable} dragObj - specifies the drag event arguements.\n * @returns {void}\n * @private\n */\nfunction dragStartHandler(parent, args, dragObj) {\n var dragArgs = args;\n dragArgs.cancel = false;\n dragArgs.fileDetails = parent.dragData;\n parent.dragCount = 0;\n parent.droppedObjects = [];\n if (!parent.allowDragAndDrop || ((parent.activeModule === 'navigationpane') &&\n (closest(args.element, 'li').getAttribute('data-uid') === parent.pathId[0]))) {\n dragArgs.cancel = true;\n }\n if ((parent.activeModule === 'navigationpane') &&\n (parent.pathId.indexOf(closest(args.element, 'li').getAttribute('data-uid')) !== -1)) {\n parent.isPathDrag = true;\n }\n else {\n parent.isPathDrag = false;\n }\n removeBlur(parent);\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else if (!dragArgs.cancel) {\n var i = 0;\n while (i < parent.activeElements.length) {\n addBlur(parent.activeElements[i]);\n i++;\n }\n parent.trigger('fileDragStart', dragArgs, function (dragArgs) {\n if (dragArgs.cancel) {\n dragObj.intDestroy(args.event);\n dragCancel(parent);\n }\n else {\n parent.uploadObj.dropArea = null;\n }\n });\n }\n}\n/**\n * Drag the cancel handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction dragCancel(parent) {\n removeBlur(parent);\n var virtualEle = select('.' + CLONE, parent.element);\n if (virtualEle) {\n detach(virtualEle);\n }\n}\n/**\n * Remove drop target handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction removeDropTarget(parent) {\n removeItemClass(parent, DROP_FOLDER);\n removeItemClass(parent, DROP_FILE);\n}\n/**\n * Remove item class handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {string} value - specifies the value.\n * @returns {void}\n * @private\n */\nfunction removeItemClass(parent, value) {\n var ele = parent.element.querySelectorAll('.' + value);\n for (var i = 0; i < ele.length; i++) {\n ele[i].classList.remove(value);\n }\n}\n/**\n * Dragging handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {DragEventArgs} args - specifies the arguements.\n * @returns {void}\n * @private\n */\nfunction draggingHandler(parent, args) {\n var dragArgs = args;\n dragArgs.fileDetails = parent.dragData;\n var canDrop = false;\n getTargetModule(parent, args.target);\n removeDropTarget(parent);\n if (parent.treeExpandTimer != null) {\n window.clearTimeout(parent.treeExpandTimer);\n parent.treeExpandTimer = null;\n }\n removeBlur(parent, 'hover');\n var node = null;\n if (parent.targetModule === 'navigationpane') {\n node = closest(args.target, 'li');\n node.classList.add(HOVER, DROP_FOLDER);\n canDrop = true;\n /* istanbul ignore next */\n parent.treeExpandTimer = window.setTimeout(function () { parent.notify(dragging, args); }, 800);\n }\n else if (parent.targetModule === 'detailsview') {\n node = closest(args.target, 'tr');\n if (node && node.querySelector('.' + FOLDER) && !node.classList.contains(BLUR)) {\n node.classList.add(DROP_FOLDER);\n }\n else if (node && !node.querySelector('.' + FOLDER) && !node.classList.contains(BLUR)) {\n node.classList.add(DROP_FILE);\n }\n canDrop = true;\n }\n else if (parent.targetModule === 'largeiconsview') {\n node = closest(args.target, 'li');\n if (node && node.querySelector('.' + FOLDER) && !node.classList.contains(BLUR)) {\n node.classList.add(HOVER, DROP_FOLDER);\n }\n canDrop = true;\n /* istanbul ignore next */\n }\n else if (parent.targetModule === 'breadcrumbbar') {\n canDrop = true;\n }\n parent.element.classList.remove('e-fe-drop', 'e-no-drop');\n parent.element.classList.add(canDrop ? 'e-fe-drop' : 'e-no-drop');\n parent.dragCount = parent.dragCount + 1;\n parent.trigger('fileDragging', dragArgs);\n}\n/**\n * Object to string handler\n *\n * @param {Object} data - specifies the data.\n * @returns {string} returns string converted from Object.\n * @private\n */\n// Ignored the message key value in permission object\n// eslint-disable-next-line\nfunction objectToString(data) {\n var str = '';\n var keys = Object.keys(data);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'message') {\n str += (i === 0 ? '' : ', ') + keys[i] + ': ' + getValue(keys[i], data);\n }\n }\n return str;\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {string} returns the item name.\n * @private\n */\n// eslint-disable-next-line\nfunction getItemName(parent, data) {\n if (parent.hasId) {\n return getValue('id', data);\n }\n return getName(parent, data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction updateRenamingData(parent, data) {\n parent.itemData = [data];\n parent.currentItemText = getValue('name', data);\n parent.isFile = getValue('isFile', data);\n parent.filterPath = getValue('filterPath', data);\n}\n/**\n * Get item name handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction doRename(parent) {\n if (!hasEditAccess(parent.itemData[0])) {\n createDeniedDialog(parent, parent.itemData[0], permissionEdit);\n }\n else {\n createDialog(parent, 'Rename');\n }\n}\n/* istanbul ignore next */\n/**\n * Download handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction doDownload(parent) {\n // eslint-disable-next-line\n var items = parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(parent, items[i], permissionDownload);\n return;\n }\n }\n if (parent.selectedItems.length > 0) {\n Download(parent, parent.path, parent.selectedItems);\n }\n}\n/**\n * Delete Files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction doDeleteFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(parent, data[i], permissionEdit);\n return;\n }\n }\n parent.itemData = data;\n Delete(parent, newIds, parent.path, 'delete');\n}\n/* istanbul ignore next */\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object[]} data - specifies the data.\n * @param {string[]} newIds - specifies the new Ids.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction doDownloadFiles(parent, data, newIds) {\n for (var i = 0; i < data.length; i++) {\n if (!hasDownloadAccess(data[i])) {\n createDeniedDialog(parent, data[i], permissionDownload);\n return;\n }\n }\n parent.itemData = data;\n if (newIds.length > 0) {\n Download(parent, parent.path, newIds);\n }\n}\n/**\n * Download files handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @param {Object} data - specifies the data.\n * @param {string} action - specifies the actions.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction createDeniedDialog(parent, data, action) {\n var message = getValue('message', getValue('permission', data));\n if (message === '') {\n message = getLocaleText(parent, 'Access-Message').replace('{0}', getValue('name', data)).replace('{1}', action);\n }\n var response = {\n error: {\n code: '401',\n fileExists: null,\n message: message\n }\n };\n createDialog(parent, 'Error', response);\n}\n/**\n * Get Access Classes\n *\n * @param {Object} data - specifies the data.\n * @returns {string} - returns accesses classes.\n * @private\n */\n// eslint-disable-next-line\nfunction getAccessClass(data) {\n return !hasReadAccess(data) ? 'e-fe-locked e-fe-hidden' : 'e-fe-locked';\n}\n/**\n * Check read access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns read access.\n * @private\n */\n// eslint-disable-next-line\nfunction hasReadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return (permission && !getValue('read', permission)) ? false : true;\n}\n/**\n * Check edit access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns edit access.\n * @private\n */\n// eslint-disable-next-line\nfunction hasEditAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('write', permission))) : true;\n}\n/**\n * Check content access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns content access.\n * @private\n */\n// eslint-disable-next-line\nfunction hasContentAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('writeContents', permission))) : true;\n}\n/**\n * Check upload access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns upload access.\n * @private\n */\n// eslint-disable-next-line\nfunction hasUploadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('upload', permission))) : true;\n}\n/**\n * Check download access handler\n *\n * @param {Object} data - specifies the data.\n * @returns {boolean} - returns download access.\n * @private\n */\n// eslint-disable-next-line\nfunction hasDownloadAccess(data) {\n // eslint-disable-next-line\n var permission = getValue('permission', data);\n return permission ? ((getValue('read', permission) && getValue('download', permission))) : true;\n}\n/**\n * Create new folder handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction createNewFolder(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasContentAccess(details)) {\n createDeniedDialog(parent, details, permissionEditContents);\n }\n else {\n createDialog(parent, 'NewFolder');\n }\n}\n/**\n * Upload item handler\n *\n * @param {IFileManager} parent - specifies the parent.\n * @returns {void}\n * @private\n */\nfunction uploadItem(parent) {\n // eslint-disable-next-line\n var details = parent.itemData[0];\n if (!hasUploadAccess(details)) {\n createDeniedDialog(parent, details, permissionUpload);\n }\n else {\n var eleId = '#' + parent.element.id + UPLOAD_ID;\n var uploadEle = document.querySelector(eleId);\n uploadEle.click();\n }\n}\n\n/**\n * Function to read the content from given path in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction read(parent, event, path) {\n // eslint-disable-next-line\n var itemData = parent.itemData;\n for (var i = 0; i < itemData.length; i++) {\n if (isNullOrUndefined(getValue('hasChild', itemData[i]))) {\n setValue('hasChild', false, itemData[i]);\n }\n }\n // eslint-disable-next-line\n var data = { action: 'read', path: path, showHiddenItems: parent.showHiddenItems, data: itemData };\n createAjax(parent, data, readSuccess, event);\n}\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createFolder(parent, itemName) {\n // eslint-disable-next-line\n var data = { action: 'create', path: parent.path, name: itemName, data: parent.itemData };\n createAjax(parent, data, createSuccess, itemName);\n}\n/**\n * Function to filter the files in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction filter(parent, event) {\n // eslint-disable-next-line\n var data = { action: 'filter', path: parent.path, showHiddenItems: parent.showHiddenItems, data: [getPathObject(parent)] };\n // eslint-disable-next-line\n var filterData;\n // eslint-disable-next-line\n var filterDataVal = parent.filterData ? extend(filterData, data, parent.filterData) : data;\n createAjax(parent, filterDataVal, filterSuccess, event, getValue('action', filterDataVal));\n}\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string} itemNewName - specifies the item's new name.\n * @returns {void}\n * @private\n */\nfunction rename(parent, path, itemNewName) {\n var name;\n var newName;\n if (parent.breadcrumbbarModule.searchObj.element.value === '' && !parent.isFiltered) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n var fPath = parent.filterPath;\n if (parent.hasId) {\n name = parent.currentItemText;\n newName = itemNewName;\n }\n else {\n fPath = fPath.replace(/\\\\/g, '/');\n name = fPath.replace(path, '') + parent.currentItemText;\n newName = fPath.replace(path, '') + itemNewName;\n }\n }\n // eslint-disable-next-line\n var data = {\n action: 'rename', path: path, name: name, newName: newName, data: parent.itemData\n };\n createAjax(parent, data, renameSuccess, path);\n}\n/**\n * Function to paste file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} names - specifies the names.\n * @param {string} targetPath - specifies the target path.\n * @param {string} pasteOperation - specifies the paste operation.\n * @param {string[]} renameItems - specifies the rename items.\n * @param {Object[]} actionRecords - specifies the action records.\n * @returns {void}\n * @private\n */\nfunction paste(parent, path, names, targetPath, pasteOperation, \n// eslint-disable-next-line\nrenameItems, actionRecords) {\n // eslint-disable-next-line\n var data = {\n action: pasteOperation, path: path, targetData: parent.itemData[0],\n targetPath: targetPath, names: names, renameFiles: renameItems, data: actionRecords\n };\n parent.destinationPath = targetPath;\n createAjax(parent, data, pasteSuccess, path, pasteOperation, targetPath);\n}\n/**\n * Function to delete file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} items - specifies the items.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction Delete(parent, items, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: items, data: parent.itemData };\n createAjax(parent, data, deleteSuccess, path);\n}\n/* istanbul ignore next */\n/**\n * Function to get details of file's and folder's in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string[]} names - specifies the names.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation data.\n * @returns {void}\n * @private\n */\nfunction GetDetails(parent, names, path, operation) {\n // eslint-disable-next-line\n var data = { action: operation, path: path, names: names, data: parent.itemData };\n createAjax(parent, data, detailsSuccess, path, operation);\n}\n/**\n * Function for createAjax in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Object} data - specifies the data.\n * @param {Function} fn - specifies the fn.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the target path.\n * @returns {void}\n * @private\n */\nfunction createAjax(\n// eslint-disable-next-line\nparent, data, fn, event, operation, targetPath) {\n // eslint-disable-next-line\n var ajaxSettings = {\n url: parent.ajaxSettings.url,\n type: 'POST',\n mode: true,\n dataType: 'json',\n contentType: 'application/json',\n data: JSON.stringify(data),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n var eventArgs = { action: getValue('action', data), ajaxSettings: ajaxSettings, cancel: false };\n parent.trigger('beforeSend', eventArgs, function (beforeSendArgs) {\n if (!beforeSendArgs.cancel) {\n parent.notify(beforeRequest, {});\n var ajax = new Ajax({\n url: getValue('url', beforeSendArgs.ajaxSettings),\n type: getValue('type', beforeSendArgs.ajaxSettings),\n mode: getValue('mode', beforeSendArgs.ajaxSettings),\n dataType: getValue('dataType', beforeSendArgs.ajaxSettings),\n contentType: getValue('contentType', beforeSendArgs.ajaxSettings),\n data: getValue('data', beforeSendArgs.ajaxSettings),\n beforeSend: getValue('beforeSend', beforeSendArgs.ajaxSettings),\n onSuccess: function (result) {\n if (isNullOrUndefined(result)) {\n var result_1 = {\n error: {\n fileExists: null,\n message: getLocaleText(parent, 'Server-Error') + ' ' + parent.ajaxSettings.url,\n code: '406'\n },\n files: null\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result_1, event, operation, targetPath);\n return;\n }\n if (typeof (result) === 'string') {\n result = JSON.parse(result);\n }\n parent.notify(afterRequest, { action: 'success' });\n var id = parent.expandedId ? parent.expandedId : parent.pathId[parent.pathId.length - 1];\n if (!isNullOrUndefined(result.cwd) && (getValue('action', data) === 'read')) {\n result.cwd.name = (parent.pathId.length === 1) ? (parent.rootAliasName || result.cwd.name) : result.cwd.name;\n setValue('_fm_id', id, result.cwd);\n setValue(id, result.cwd, parent.feParent);\n if (!isNullOrUndefined(result.files) || result.error.code === '401') {\n if ((event === 'finalize-end' || event === 'initial-end') && parent.pathNames.length === 0) {\n // eslint-disable-next-line\n var root = getValue(parent.pathId[0], parent.feParent);\n parent.pathNames[0] = getValue('name', root);\n parent.hasId = !isNullOrUndefined(getValue('id', root));\n }\n if (event === 'finalize-end') {\n generatePath(parent);\n }\n }\n }\n if (!isNullOrUndefined(result.files)) {\n setDateObject(result.files);\n for (var i = 0, len = result.files.length; i < len; i++) {\n // eslint-disable-next-line\n var item = result.files[i];\n setValue('_fm_iconClass', fileType(item), item);\n }\n if (getValue('action', data) === 'read') {\n setNodeId(result, id);\n setValue(id, result.files, parent.feFiles);\n }\n }\n if (!isNullOrUndefined(result.details) && !isNullOrUndefined(parent.rootAliasName)) {\n var rootName = parent.rootAliasName || getValue('name', result.details);\n var location_1 = getValue('location', result.details).replace(new RegExp('/', 'g'), '\\\\');\n if ((getValue('path', data) === '/') || (parent.hasId && getValue('path', data).match(/[/]/g).length === 1)) {\n if (getValue('names', data).length === 0) {\n setValue('name', rootName, result.details);\n location_1 = rootName;\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n }\n else {\n location_1 = location_1.replace(location_1.substring(0, location_1.indexOf('\\\\')), rootName);\n }\n setValue('location', location_1, result.details);\n }\n fn(parent, result, event, operation, targetPath);\n if (!isNullOrUndefined(result.files) && (event === 'path-changed' || event === 'finalize-end' || event === 'open-end')) {\n parent.notify(searchTextChange, result);\n }\n if (typeof getValue('onSuccess', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', beforeSendArgs.ajaxSettings)();\n }\n },\n onFailure: function () {\n var result = {\n files: null,\n error: {\n code: '404',\n message: getLocaleText(parent, 'Network-Error') + ' ' + parent.ajaxSettings.url,\n fileExists: null\n }\n };\n triggerAjaxFailure(parent, beforeSendArgs, fn, result, event, operation, targetPath);\n }\n });\n ajax.send();\n }\n });\n}\n/**\n * Function for trigger Ajax failure in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {BeforeSendEventArgs} beforeSendArgs - specifies the beforeSendArgs.\n * @param {Function} fn - specifies the function.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} operation - specifies the operation.\n * @param {string} targetPath - specifies the targetPath.\n * @returns {void}\n * @private\n */\nfunction triggerAjaxFailure(\n// eslint-disable-next-line\nparent, beforeSendArgs, fn, result, event, operation, targetPath) {\n parent.notify(afterRequest, { action: 'failure' });\n fn(parent, result, event, operation, targetPath);\n if (typeof getValue('onFailure', beforeSendArgs.ajaxSettings) === 'function') {\n getValue('onFailure', beforeSendArgs.ajaxSettings)();\n }\n}\n/**\n * Function for read success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction readSuccess(parent, result, event) {\n if (!isNullOrUndefined(result.files)) {\n parent.notify(event, result);\n parent.notify(selectionChanged, {});\n var args = { action: 'read', result: result };\n parent.trigger('success', args);\n }\n else {\n if (result.error.code === '401') {\n result.files = [];\n parent.notify(event, result);\n parent.notify(selectionChanged, {});\n }\n onFailure(parent, result, 'read');\n parent.setProperties({ path: parent.oldPath }, true);\n parent.pathNames.pop();\n }\n if (parent.isDragDrop && parent.isDropEnd) {\n if (parent.droppedObjects.length !== 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n }\n parent.isDropEnd = parent.isDragDrop = false;\n }\n}\n/**\n * Function for filter success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction filterSuccess(parent, result, event, action) {\n if (!isNullOrUndefined(result.files)) {\n parent.notify(event, result);\n var args = { action: action, result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, action);\n }\n}\n/* istanbul ignore next */\n/**\n * Function for create success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} itemName - specifies the item name.\n * @returns {void}\n * @private\n */\nfunction createSuccess(parent, result, itemName) {\n if (!isNullOrUndefined(result.files)) {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n parent.createdItem = result.files[0];\n parent.breadcrumbbarModule.searchObj.value = '';\n var args = { action: 'create', result: result };\n parent.trigger('success', args);\n parent.itemData = [getPathObject(parent)];\n read(parent, createEnd, parent.path);\n }\n else {\n if (result.error.code === '400') {\n if (parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#newname', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n else {\n var result_2 = {\n files: null,\n error: {\n code: '400',\n message: getLocaleText(parent, 'Validation-NewFolder-Exists').replace('{0}', '\"' + itemName + '\"'),\n fileExists: null\n }\n };\n createDialog(parent, 'Error', result_2);\n }\n var args = { action: 'create', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (parent.dialogObj && parent.dialogObj.visible) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'create');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to rename the folder/file in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path\n * @returns {void}\n * @private\n */\nfunction renameSuccess(parent, result, path) {\n if (!isNullOrUndefined(result.files)) {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n var args = { action: 'rename', result: result };\n parent.trigger('success', args);\n parent.renamedItem = result.files[0];\n if (parent.activeModule === 'navigationpane') {\n parent.pathId.pop();\n parent.itemData = [getValue(parent.pathId[parent.pathId.length - 1], parent.feParent)];\n read(parent, renameEndParent, getParentPath(parent.path));\n }\n else {\n parent.itemData = [getPathObject(parent)];\n if (parent.breadcrumbbarModule.searchObj.value !== '') {\n Search(parent, renameEnd, parent.path, parent.searchWord, parent.showHiddenItems, !parent.searchSettings.ignoreCase);\n }\n else {\n if (parent.isFiltered) {\n filter(parent, renameEnd);\n }\n else {\n read(parent, renameEnd, parent.path);\n }\n }\n }\n }\n else {\n if (result.error.code === '400' && parent.dialogObj && parent.dialogObj.visible) {\n var ele = select('#rename', parent.dialogObj.element);\n var error = getLocaleText(parent, 'Validation-Rename-Exists').replace('{0}', '\"' + parent.currentItemText + '\"');\n error = error.replace('{1}', '\"' + ele.value + '\"');\n ele.parentElement.nextElementSibling.innerHTML = error;\n var args = { action: 'rename', error: result.error };\n parent.trigger('failure', args);\n }\n else {\n if (!isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj.hide();\n }\n onFailure(parent, result, 'rename');\n }\n }\n}\n/* istanbul ignore next */\n/**\n * Function to create new folder in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction pasteSuccess(parent, result, path, operation) {\n if (result.error && result.error.fileExists) {\n parent.fileLength = 0;\n if (!isNullOrUndefined(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n }\n createExtDialog(parent, 'DuplicateItems', result.error.fileExists);\n if (result.error.code === '404') {\n createDialog(parent, 'Error', result);\n }\n }\n else if (!result.error && !isNullOrUndefined(result.files)) {\n parent.isPasteError = false;\n doPasteUpdate(parent, operation, result);\n }\n else if (result.error && !isNullOrUndefined(result.files)) {\n parent.isPasteError = true;\n doPasteUpdate(parent, operation, result);\n createDialog(parent, 'Error', result);\n }\n else {\n onFailure(parent, result, operation);\n }\n}\n/**\n * Function to delete success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @returns {void}\n * @private\n */\nfunction deleteSuccess(parent, result, path) {\n if (!isNullOrUndefined(result.files)) {\n parent.setProperties({ path: path }, true);\n parent.itemData = [getPathObject(parent)];\n read(parent, deleteEnd, parent.path);\n if (result.error) {\n onFailure(parent, result, 'delete');\n }\n else {\n var args = { action: 'delete', result: result };\n parent.trigger('success', args);\n }\n }\n else {\n onFailure(parent, result, 'delete');\n }\n}\n/**\n * Function for details success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} path - specifies the path.\n * @param {string} operation - specifies the operation.\n * @returns {void}\n * @private\n */\nfunction detailsSuccess(\n// eslint:disable-next-line\nparent, result, path, operation) {\n if (!isNullOrUndefined(result.details)) {\n createDialog(parent, operation, null, result.details);\n var args = { action: 'details', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'details');\n }\n}\n/**\n * Function for on failure event in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} action - specifies the action.\n * @returns {void}\n * @private\n */\nfunction onFailure(parent, result, action) {\n createDialog(parent, 'Error', result);\n var args = { action: action, error: result.error };\n parent.trigger('failure', args);\n}\n/**\n * Function for search in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} event - specifies the event.\n * @param {string} path - specifies the path.\n * @param {string} searchString - specifies the search string.\n * @param {boolean} showHiddenItems - specifies the hidden items.\n * @param {boolean} caseSensitive - specifies the casing of search text.\n * @returns {void}\n * @private\n */\nfunction Search(\n// eslint:disable-next-line\nparent, event, path, searchString, showHiddenItems, caseSensitive) {\n // eslint-disable-next-line\n var data = {\n action: 'search', path: path, searchString: searchString, showHiddenItems: showHiddenItems, caseSensitive: caseSensitive,\n data: parent.itemData\n };\n createAjax(parent, data, searchSuccess, event);\n}\n/* istanbul ignore next */\n/**\n * Function for search success in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {ReadArgs} result - specifies the result.\n * @param {string} event - specifies the event.\n * @returns {void}\n * @private\n */\nfunction searchSuccess(parent, result, event) {\n if (!isNullOrUndefined(result.files)) {\n parent.notify(event, result);\n var args = { action: 'search', result: result };\n parent.trigger('success', args);\n }\n else {\n onFailure(parent, result, 'search');\n }\n}\n/* istanbul ignore next */\n/**\n * Function for download in File Manager.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} path - specifies the path.\n * @param {string[]} items - specifies the items.\n * @returns {void}\n * @private\n */\nfunction Download(parent, path, items) {\n var downloadUrl = parent.ajaxSettings.downloadUrl ? parent.ajaxSettings.downloadUrl : parent.ajaxSettings.url;\n // eslint-disable-next-line\n var data = { 'action': 'download', 'path': path, 'names': items, 'data': parent.itemData };\n var eventArgs = { data: data, cancel: false };\n parent.trigger('beforeDownload', eventArgs, function (downloadArgs) {\n if (!downloadArgs.cancel) {\n var form = createElement('form', {\n id: parent.element.id + '_downloadForm',\n attrs: { action: downloadUrl, method: 'post', name: 'downloadForm', 'download': '' }\n });\n var input = createElement('input', {\n id: parent.element.id + '_hiddenForm',\n attrs: { name: 'downloadInput', value: JSON.stringify(downloadArgs.data), type: 'hidden' }\n });\n form.appendChild(input);\n parent.element.appendChild(form);\n document.forms.namedItem('downloadForm').submit();\n parent.element.removeChild(form);\n }\n });\n}\n\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the type of event args.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement.\n * @returns {void}\n * @private\n */\nfunction createDialog(parent, text, e, details, replaceItems) {\n var options = getOptions(parent, text, e, details, replaceItems);\n if (isNullOrUndefined(parent.dialogObj)) {\n parent.dialogObj = new Dialog({\n beforeOpen: keydownAction.bind(this, parent, options.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n },\n header: options.header,\n content: options.content,\n buttons: options.buttons,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n allowDragging: true,\n isModal: true,\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? MOB_POPUP : ROOT_POPUP),\n width: '350px',\n open: options.open,\n close: options.close,\n enableRtl: parent.enableRtl,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.dialogObj.isStringTemplate = true;\n parent.dialogObj.appendTo('#' + parent.element.id + DIALOG_ID);\n }\n else {\n changeOptions(parent, options);\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {void}\n * @private\n */\nfunction createExtDialog(parent, text, replaceItems, newPath) {\n var extOptions = getExtOptions(parent, text, replaceItems, newPath);\n parent.isApplySame = false;\n if (isNullOrUndefined(parent.extDialogObj)) {\n parent.extDialogObj = new Dialog({\n beforeOpen: beforeExtOpen.bind(this, parent, extOptions.dialogName),\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n },\n content: extOptions.content,\n header: extOptions.header,\n closeOnEscape: true,\n allowDragging: true,\n animationSettings: { effect: 'None' },\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? MOB_POPUP : ROOT_POPUP),\n enableRtl: parent.enableRtl,\n showCloseIcon: true,\n isModal: true,\n width: 350,\n buttons: extOptions.buttons,\n open: extOptions.open,\n close: extOptions.close,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n locale: parent.locale\n });\n parent.extDialogObj.isStringTemplate = true;\n parent.extDialogObj.appendTo('#' + parent.element.id + EXTN_DIALOG_ID);\n }\n else {\n parent.extDialogObj.header = extOptions.header;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.open = extOptions.open;\n parent.extDialogObj.close = extOptions.close;\n parent.extDialogObj.content = extOptions.content;\n parent.extDialogObj.buttons = extOptions.buttons;\n parent.extDialogObj.enableRtl = parent.enableRtl;\n parent.extDialogObj.locale = parent.locale;\n parent.extDialogObj.beforeOpen = beforeExtOpen.bind(this, parent, extOptions.dialogName);\n parent.extDialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.extDialogObj, args, extOptions.dialogName);\n };\n parent.extDialogObj.dataBind();\n parent.extDialogObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {Dialog} dlgModule - Specifies the dialog module.\n * @param {BeforeOpenEventArgs} args - specifies the before open arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeOpen(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupName: dialogName, popupModule: dlgModule\n };\n parent.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {BeforeCloseEventArgs} args - specifies the before close event arguements.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupBeforeClose(parent, dlgModule, args, dialogName) {\n var eventArgs = {\n cancel: args.cancel, popupModule: dlgModule, popupName: dialogName\n };\n parent.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n if (!args.cancel && args.isInteracted && ((dialogName === 'Rename') || (dialogName === 'Create Folder'))) {\n parent.trigger(actionFailure, {});\n }\n });\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupOpen(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupOpen', args);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {Dialog} dlgModule - specifies the dialog module.\n * @param {string} dialogName - specifies the dialog name.\n * @returns {void}\n * @private\n */\nfunction triggerPopupClose(parent, dlgModule, dialogName) {\n var args = { popupModule: dlgModule, element: dlgModule.element, popupName: dialogName };\n parent.trigger('popupClose', args);\n}\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @param {string} newPath - specifies the new path.\n * @returns {DialogOptions} - returns the dialog options.\n * @private\n */\nfunction getExtOptions(parent, text, replaceItems, newPath) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var duplicateContent;\n var item;\n var index;\n options.open = function () { triggerPopupOpen(parent, parent.extDialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.extDialogObj, options.dialogName); };\n switch (text) {\n case 'Extension':\n options.header = getLocaleText(parent, 'Header-Rename-Confirmation');\n options.content = '
' + getLocaleText(parent, 'Content-Rename-Confirmation') + '
';\n options.buttons = [{\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.extDialogObj.hide();\n rename(parent, newPath, parent.renameText);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.extDialogObj.hide();\n parent.dialogObj.hide();\n }\n }];\n options.dialogName = 'Extension Change';\n break;\n case 'DuplicateItems':\n options.dialogName = 'Duplicate Items';\n parent.replaceItems = replaceItems;\n item = parent.replaceItems[parent.fileLength];\n index = item.lastIndexOf('/');\n item = index === -1 ? item : item.substring(index);\n options.header = getLocaleText(parent, 'Header-Duplicate');\n duplicateContent = '
' + getLocaleText(parent, 'Content-Duplicate') + '
';\n options.content = (duplicateContent).replace('{0}', item);\n options.close = function () {\n if (!parent.isDropEnd && parent.duplicateItems.length === 0) {\n var args = { fileDetails: parent.droppedObjects };\n parent.trigger('fileDropped', args);\n parent.isDropEnd = parent.isDragDrop = false;\n }\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function () {\n parent.duplicateItems.push(parent.replaceItems[parent.fileLength]);\n parent.duplicateRecords.push(getDuplicateData(parent, parent.replaceItems[parent.fileLength]));\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_1 = parent.replaceItems[parent.fileLength];\n var indexval = item_1.lastIndexOf('/');\n item_1 = indexval === -1 ? item_1 : item_1.substring(indexval);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_1);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.fileLength++;\n if (replaceItems[parent.fileLength]) {\n var item_2 = parent.replaceItems[parent.fileLength];\n var ind = item_2.lastIndexOf('/');\n item_2 = ind === -1 ? item_2 : item_2.substring(ind);\n parent.extDialogObj.content = (duplicateContent).replace('{0}', item_2);\n parent.extDialogObj.show();\n }\n else {\n parent.extDialogObj.hide();\n if (parent.duplicateItems.length !== 0) {\n var action = parent.isDragDrop ? 'move' : parent.fileAction;\n var targetPath = parent.isDragDrop ? parent.dragPath : parent.targetPath;\n var path = parent.isDragDrop ? parent.dropPath : ((parent.folderPath === '') ? parent.path :\n parent.folderPath);\n paste(parent, targetPath, parent.duplicateItems, path, action, parent.duplicateItems, parent.duplicateRecords);\n }\n }\n }\n }\n ];\n break;\n case 'UploadRetry':\n options.dialogName = 'Retry Upload';\n options.header = getLocaleText(parent, 'Header-Retry');\n options.content = parent.retryFiles[0].name + '
' +\n (getLocaleText(parent, 'Content-Retry')) + '
';\n options.open = onRetryOpen.bind(this, parent);\n options.close = function () {\n parent.isRetryOpened = false;\n retryDlgClose(parent);\n triggerPopupClose(parent, parent.extDialogObj, options.dialogName);\n };\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Keep-Both') },\n click: function () {\n retryDlgUpdate(parent, true);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Replace') },\n click: function () {\n retryDlgUpdate(parent, false);\n }\n },\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Skip') },\n click: function () {\n var count = 0;\n if (parent.isApplySame) {\n count = parent.retryFiles.length;\n parent.retryFiles = [];\n retryDlgClose(parent);\n }\n else {\n count = 1;\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n parent.notify(skipUpload, { count: count });\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {boolean} isKeepBoth - checks the arguement to keep both.\n * @returns {void}\n * @private\n */\nfunction retryDlgUpdate(parent, isKeepBoth) {\n if (parent.isApplySame) {\n if (isKeepBoth) {\n onKeepBothAll(parent);\n }\n else {\n onReplaceAll(parent);\n }\n retryDlgClose(parent);\n }\n else {\n parent.retryArgs.push({\n action: isKeepBoth ? 'keepboth' : 'replace',\n file: parent.retryFiles[0]\n });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n if (parent.retryFiles.length !== 0) {\n createExtDialog(parent, 'UploadRetry');\n }\n else {\n retryDlgClose(parent);\n }\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction retryDlgClose(parent) {\n var flag = true;\n if (parent.isRetryOpened) {\n parent.isRetryOpened = false;\n }\n else {\n flag = false;\n }\n var ele = select('.e-dlg-checkbox', parent.extDialogObj.element);\n if (ele) {\n remove(ele);\n }\n if (flag) {\n parent.extDialogObj.hide();\n }\n else {\n parent.retryFiles = [];\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {object} args - specifies the arguements.\n * @returns {void}\n * @private\n */\n// eslint-disable-next-line\nfunction onRetryOpen(parent, args) {\n parent.isRetryOpened = true;\n var dialogEle = getValue('element', args);\n var container = select('.e-dlg-content', dialogEle);\n var checkContainer = parent.createElement('div', {\n className: 'e-dlg-checkbox'\n });\n var checkbox = parent.createElement('input', {\n id: parent.element.id + '_applyall'\n });\n checkContainer.appendChild(checkbox);\n container.appendChild(checkContainer);\n var checkBoxObj = new CheckBox({\n label: getLocaleText(parent, 'ApplyAll-Label'),\n change: function (args) {\n parent.isApplySame = args.checked;\n }\n });\n checkBoxObj.appendTo('#' + parent.element.id + '_applyall');\n triggerPopupOpen(parent, parent.extDialogObj, 'Retry Upload');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onKeepBothAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'keepboth', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReplaceAll(parent) {\n while (parent.retryFiles.length !== 0) {\n parent.retryArgs.push({ action: 'replace', file: parent.retryFiles[0] });\n parent.uploadObj.retry(parent.retryFiles[0]);\n parent.retryFiles.splice(0, 1);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction focusInput(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n ele.focus();\n ele.value = '';\n var len = ele.value.length;\n ele.setSelectionRange(0, len);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onFolderDialogOpen(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n if (!ele.parentElement.classList.contains('e-control-wrapper')) {\n createInput(ele, getLocaleText(parent, 'Content-NewFolder'));\n }\n ele.parentElement.nextElementSibling.innerHTML = '';\n ele.oninput = function () {\n onValidate(parent, ele);\n };\n ele.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onSubmit(parent);\n }\n };\n focusInput(parent);\n triggerPopupOpen(parent, parent.dialogObj, 'Create Folder');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onRenameDialogOpen(parent) {\n var inputEle = select('#rename', parent.dialogObj.element);\n if (!inputEle.parentElement.classList.contains('e-control-wrapper')) {\n createInput(inputEle, getLocaleText(parent, 'Content-Rename'));\n }\n inputEle.parentElement.nextElementSibling.innerHTML = '';\n inputEle.oninput = function () {\n onValidate(parent, inputEle);\n };\n inputEle.onkeyup = function (e) {\n var code = getKeyCode(e);\n if (code === 13) {\n onReSubmit(parent);\n }\n };\n onFocusRenameInput(parent, inputEle);\n triggerPopupOpen(parent, parent.dialogObj, 'Rename');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} inputEle - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onFocusRenameInput(parent, inputEle) {\n inputEle.focus();\n var txt = '';\n if (parent.isFile && !parent.showFileExtension) {\n var index = parent.currentItemText.lastIndexOf('.');\n txt = (index === -1) ? parent.currentItemText : parent.currentItemText.substring(0, index);\n }\n else {\n txt = parent.currentItemText;\n }\n inputEle.value = txt;\n if (parent.isFile && parent.showFileExtension && (inputEle.value.indexOf('.') !== -1)) {\n inputEle.setSelectionRange(0, inputEle.value.lastIndexOf('.'));\n }\n else {\n inputEle.setSelectionRange(0, inputEle.value.length);\n }\n}\n/**\n *\n * @param {HTMLInputElement} ele - specifies the element.\n * @param {string} placeholder - specifies the place holder.\n * @returns {void}\n * @private\n */\nfunction createInput(ele, placeholder) {\n Input.createInput({\n element: ele,\n properties: {\n placeholder: placeholder\n }\n });\n}\n/* istanbul ignore next */\n// eslint:disable-next-line\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} text - specifies the text string.\n * @param {ReadArgs | SelectedEventArgs} e - specifies the event arguements.\n * @param {FileDetails} details - specifies the file details.\n * @param {string[]} replaceItems - specifies the replacement items.\n * @returns {DialogOptions} - specifies the dialog options.\n * @private\n */\nfunction getOptions(parent, text, e, details, replaceItems) {\n var options = {\n header: '', content: '', buttons: [], dialogName: ''\n };\n var permission;\n var formattedString;\n var intl;\n var strArr;\n var fileType$$1;\n var location;\n options.open = function () { triggerPopupOpen(parent, parent.dialogObj, options.dialogName); };\n options.close = function () { triggerPopupClose(parent, parent.dialogObj, options.dialogName); };\n text = (details && details.multipleFiles === true) ? 'MultipleFileDetails' : text;\n switch (text) {\n case 'NewFolder':\n options.dialogName = 'Create Folder';\n options.header = getLocaleText(parent, 'Header-NewFolder');\n options.content = '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Create') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onSubmit(parent);\n }\n }\n ];\n options.open = onFolderDialogOpen.bind(this, parent);\n break;\n case 'Delete':\n options.dialogName = 'Delete';\n if (parent.selectedItems.length > 1) {\n options.content = ('
' + getLocaleText(parent, 'Content-Multiple-Delete') + '
')\n .replace('{0}', parent.selectedItems.length.toString());\n options.header = getLocaleText(parent, 'Header-Multiple-Delete');\n }\n else {\n options.content = '
' + getLocaleText(parent, parent.isFile ? 'Content-Delete' : 'Content-Folder-Delete') + '
';\n options.header = getLocaleText(parent, parent.isFile ? 'Header-Delete' : 'Header-Folder-Delete');\n }\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Yes') },\n click: function (e) {\n onDeleteSubmit(parent);\n }\n },\n {\n buttonModel: { content: getLocaleText(parent, 'Button-No') },\n click: function () {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Rename':\n options.dialogName = 'Rename';\n options.header = getLocaleText(parent, 'Header-Rename');\n options.content = '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Save') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n onReSubmit(parent);\n }\n }\n ];\n options.open = onRenameDialogOpen.bind(this, parent);\n break;\n case 'details':\n options.dialogName = 'File Details';\n intl = new Internationalization(parent.locale);\n formattedString = intl.formatDate(new Date(details.modified), { format: 'MMMM dd, yyyy HH:mm:ss' });\n permission = '';\n if (!isNullOrUndefined(details.permission)) {\n permission = '' + getLocaleText(parent, 'Permission') + ''\n + objectToString(details.permission) + '';\n }\n options.header = details.name;\n options.content = '' +\n '' +\n '' +\n '' +\n ''\n + permission + '
' + getLocaleText(parent, 'Type') + '' + (details.isFile ? 'File' : 'Folder') + '
' + getLocaleText(parent, 'Size') + '' + details.size + '
' + getLocaleText(parent, 'Location') + '' + details.location + '
' + getLocaleText(parent, 'Modified') + ''\n + formattedString + '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'MultipleFileDetails':\n var index_1;\n options.dialogName = 'File Details';\n strArr = parent.itemData.map(function (val) {\n index_1 = val.name.indexOf('.') + 1;\n return (index_1 === 0 && (!val.isFile)) ? 'Folder' : ((index_1 !== 0) ? val.name.substr(index_1).replace(' ', '') : 'undetermined');\n });\n if (strArr[0] == undefined) {\n strArr = details.name.split(',').map(function (val) {\n index_1 = val.indexOf('.') + 1;\n return (index_1 === 0) ? 'Folder' : val.substr(index_1).replace(' ', '');\n });\n }\n fileType$$1 = strArr.every(function (val, i, arr) { return val === arr[0]; }) ?\n ((strArr[0] === 'Folder') ? 'Folder' : strArr[0].toLocaleUpperCase() + ' Type') : 'Multiple Types';\n location = details.location;\n options.header = details.name;\n options.content = '' +\n '' + '' + '
' + getLocaleText(parent, 'Type')\n + ':' + fileType$$1 + '
' + getLocaleText(parent, 'Size') + ':' +\n details.size + '
' + getLocaleText(parent, 'Location') +\n ':'\n + location + '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n if (e.type === 'keydown') {\n return;\n }\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n case 'Error':\n parent.notify(actionFailure, {});\n options.dialogName = 'Error';\n if (e.error.code === '401') {\n options.header = '
' +\n getLocaleText(parent, 'Access-Denied') + '
';\n }\n else {\n options.header = getLocaleText(parent, 'Error');\n }\n options.content = '
' + e.error.message + '
';\n options.buttons = [\n {\n buttonModel: { isPrimary: true, content: getLocaleText(parent, 'Button-Ok') },\n click: function (e) {\n parent.dialogObj.hide();\n }\n }\n ];\n break;\n }\n return options;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dialogName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction keydownAction(parent, dialogName, args) {\n var btnElement = selectAll('.e-btn', parent.dialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.dialogObj, args, dialogName);\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} dlgName - specifies the dialog name.\n * @param {BeforeOpenEventArgs} args - specifies the before open event arguements.\n * @returns {void}\n * @private\n */\nfunction beforeExtOpen(parent, dlgName, args) {\n var btnElement = selectAll('.e-btn', parent.extDialogObj.element);\n preventKeydown(btnElement);\n triggerPopupBeforeOpen(parent, parent.extDialogObj, args, dlgName);\n}\n/**\n *\n * @param {HTMLInputElement[]} btnElement - specifies the button element.\n * @returns {void}\n * @private\n */\nfunction preventKeydown(btnElement) {\n var _loop_1 = function (btnCount) {\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {DialogOptions} options - specifies the dialog options.\n * @returns {void}\n * @private\n */\nfunction changeOptions(parent, options) {\n parent.dialogObj.header = options.header;\n parent.dialogObj.content = options.content;\n parent.dialogObj.buttons = options.buttons;\n parent.dialogObj.enableRtl = parent.enableRtl;\n parent.dialogObj.open = options.open;\n parent.dialogObj.close = options.close;\n parent.dialogObj.beforeOpen = keydownAction.bind(this, parent, options.dialogName);\n parent.dialogObj.beforeClose = function (args) {\n triggerPopupBeforeClose(parent, parent.dialogObj, args, options.dialogName);\n };\n parent.dialogObj.dataBind();\n parent.dialogObj.show();\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onSubmit(parent) {\n var ele = select('#newname', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n createFolder(parent, ele.value);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onReSubmit(parent) {\n var ele = select('#rename', parent.dialogObj.element);\n onSubmitValidate(parent, ele);\n if (ele.parentElement.nextElementSibling.innerHTML !== '') {\n return;\n }\n var text = ele.value;\n var oIndex = parent.currentItemText.lastIndexOf('.');\n if (parent.isFile && !parent.showFileExtension) {\n var extn = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n text += extn;\n }\n parent.renameText = text;\n if (parent.currentItemText === text) {\n parent.dialogObj.hide();\n return;\n }\n var newPath = (parent.activeModule === 'navigationpane') ? getParentPath(parent.path) : parent.path;\n parent.renamedId = getValue('id', parent.itemData[0]);\n if (parent.isFile) {\n var oldExtension = (oIndex === -1) ? '' : parent.currentItemText.substr(oIndex);\n var nIndex = text.lastIndexOf('.');\n var newExtension = (nIndex === -1) ? '' : text.substr(nIndex);\n if (parent.showFileExtension && oldExtension !== newExtension) {\n createExtDialog(parent, 'Extension', null, newPath);\n }\n else {\n rename(parent, newPath, text);\n }\n }\n else {\n rename(parent, newPath, text);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction onDeleteSubmit(parent) {\n parent.dialogObj.hide();\n parent.notify(deleteInit, {});\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onValidate(parent, ele) {\n if (/[/\\\\|*?\"<>:]/.test(ele.value)) {\n addInvalid(parent, ele);\n }\n else if (ele.value === '') {\n ele.parentElement.nextElementSibling.innerHTML = getLocaleText(parent, 'Validation-Empty');\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = '';\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction onSubmitValidate(parent, ele) {\n onValidate(parent, ele);\n var len = ele.value.length - 1;\n if (ele.value !== '' && ((ele.value.lastIndexOf('.') === len) || (ele.value.lastIndexOf(' ') === len)) &&\n (parent.showFileExtension || (ele.value.lastIndexOf('.') === -1 || ele.value.substring(ele.value.indexOf('.') + 1).length === 0))) {\n addInvalid(parent, ele);\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {HTMLInputElement} ele - specifies the input element.\n * @returns {void}\n * @private\n */\nfunction addInvalid(parent, ele) {\n var error = getLocaleText(parent, 'Validation-Invalid').replace('{0}', '\"' + ele.value + '\"');\n if (parent.enableHtmlSanitizer) {\n ele.parentElement.nextElementSibling.textContent = error;\n }\n else {\n ele.parentElement.nextElementSibling.innerHTML = error;\n }\n}\n/**\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {number} - returns the key code.\n * @private\n */\nfunction getKeyCode(e) {\n var code;\n if (e.keyCode) {\n code = e.keyCode;\n }\n else if (e.which) {\n code = e.which;\n }\n else {\n code = e.charCode;\n }\n return code;\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @param {string} header - specifies the header element.\n * @param {string} imageUrl - specifies the image URL.\n * @returns {void}\n * @private\n */\nfunction createImageDialog(parent, header, imageUrl) {\n var content = createElement('div', { className: 'e-image-wrap' });\n var image = createElement('img', { className: 'e-image', attrs: { src: imageUrl, alt: header } });\n content.appendChild(image);\n if (isNullOrUndefined(parent.viewerObj)) {\n parent.viewerObj = new Dialog({\n header: header,\n content: content,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: true,\n isModal: true,\n width: '350px',\n height: '350px',\n target: parent.popupTarget ? parent.popupTarget : '#' + parent.element.id,\n cssClass: getCssClass(parent, parent.isMobile ? MOB_POPUP : ROOT_POPUP),\n locale: parent.locale,\n enableResize: true,\n allowDragging: true,\n enableHtmlSanitizer: parent.enableHtmlSanitizer,\n position: { X: 'center', Y: 'center' },\n enableRtl: parent.enableRtl,\n open: openImage.bind(this, parent),\n close: function () { triggerPopupClose(parent, parent.viewerObj, 'Image Preview'); },\n beforeOpen: function (args) {\n triggerPopupBeforeOpen(parent, parent.viewerObj, args, 'Image Preview');\n },\n beforeClose: function (args) {\n triggerPopupBeforeClose(parent, parent.viewerObj, args, 'Image Preview');\n },\n resizing: updateImage.bind(this, parent),\n resizeStop: updateImage.bind(this, parent)\n });\n parent.viewerObj.isStringTemplate = true;\n parent.viewerObj.appendTo('#' + parent.element.id + IMG_DIALOG_ID);\n }\n else {\n parent.viewerObj.refresh();\n parent.viewerObj.header = header;\n parent.viewerObj.content = content;\n parent.viewerObj.enableRtl = parent.enableRtl;\n parent.viewerObj.dataBind();\n parent.viewerObj.show();\n }\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction openImage(parent) {\n setTimeout(function () {\n if (parent.viewerObj) {\n parent.viewerObj.element.focus();\n }\n });\n updateImage(parent);\n triggerPopupOpen(parent, parent.viewerObj, 'Image Preview');\n}\n/**\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @returns {void}\n * @private\n */\nfunction updateImage(parent) {\n var content = select('.e-dlg-content', parent.viewerObj.element);\n var imgWrap = select('.e-image-wrap', parent.viewerObj.element);\n var cssObj = window.getComputedStyle(content, null);\n var paddingWidth = cssObj ? (2 * parseFloat(cssObj.paddingRight)) : 36;\n var paddingHeight = cssObj ? (2 * parseFloat(cssObj.paddingBottom)) : 20;\n imgWrap.style.width = (content.offsetWidth - paddingWidth) + 'px';\n imgWrap.style.height = (content.offsetHeight - paddingHeight) + 'px';\n}\n\n/**\n * File Manager common operations\n */\n\n/**\n * LargeIconsView module\n */\nvar LargeIconsView = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the LargeIcons module.\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n function LargeIconsView(parent) {\n this.isInteraction = true;\n this.uploadOperation = false;\n this.count = 0;\n this.isRendered = true;\n this.tapCount = 0;\n this.isPasteOperation = false;\n this.isInteracted = true;\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + LARGEICON_ID, this.parent.element);\n addClass([this.element], LARGE_ICONS);\n this.addEventListener();\n this.keyConfigs = {\n end: 'end',\n home: 'home',\n tab: 'tab',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n ctrlUp: 'ctrl+uparrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftLeft: 'shift+leftarrow',\n shiftRight: 'shift+rightarrow',\n shiftUp: 'shift+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csLeft: 'ctrl+shift+leftarrow',\n csRight: 'ctrl+shift+rightarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n ctrlA: 'ctrl+a',\n enter: 'enter',\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n f2: 'f2',\n shiftdel: 'shift+delete',\n back: 'backspace',\n ctrlD: 'ctrl+d'\n };\n }\n LargeIconsView.prototype.render = function (args) {\n this.parent.visitedItem = null;\n this.startItem = null;\n showSpinner(this.parent.element);\n if (this.parent.view === 'LargeIcons') {\n this.resetMultiSelect();\n this.element.setAttribute('tabindex', '0');\n if (this.listObj) {\n this.unWireEvents();\n this.removeEventListener();\n }\n this.parent.notify(hideLayout, {});\n var iconsView = select('#' + this.parent.element.id + LARGEICON_ID, this.parent.element);\n var ul = select('ul', iconsView);\n if (ul) {\n remove(ul);\n }\n this.listObj = {\n ariaAttributes: {\n itemRole: 'option', listRole: 'listbox', itemText: '',\n groupItemRole: 'group', wrapperRole: ''\n },\n showIcon: true,\n fields: { text: 'name', iconCss: '_fm_icon', imageUrl: '_fm_imageUrl', htmlAttributes: '_fm_htmlAttr' },\n sortOrder: this.parent.sortOrder,\n itemCreated: this.onItemCreated.bind(this),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n };\n this.items = [];\n this.items = this.renderList(args);\n this.items = this.allItems = getSortedData(this.parent, this.items);\n iconsView.classList.remove(DISPLAY_NONE);\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n if (!this.element.style.height) {\n this.adjustHeight();\n }\n this.parent.virtualizationModule.setUIVirtualization();\n }\n // eslint-disable-next-line\n this.listElements = ListBase.createListFromJson(createElement, this.items, this.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.listElements));\n this.element.appendChild(this.listElements);\n this.preventImgDrag();\n this.createDragObj();\n if (this.itemList.length === 0) {\n var emptyList = this.element.querySelector('.' + LIST_PARENT);\n this.element.removeChild(emptyList);\n createEmptyElement(this.parent, this.element, args);\n }\n else if (this.itemList.length !== 0 && this.element.querySelector('.' + EMPTY)) {\n this.element.removeChild(this.element.querySelector('.' + EMPTY));\n }\n if (this.isPasteOperation === true) {\n this.selectItems(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n /* istanbul ignore next */\n if (this.uploadOperation === true) {\n this.selectItems(this.parent.uploadItem);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.count++;\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n var activeEle = this.element.querySelectorAll('.' + ACTIVE);\n if (activeEle.length !== 0) {\n this.parent.activeModule = 'largeiconsview';\n }\n for (var i = 0; i < activeEle.length; i++) {\n activeEle[i].setAttribute('aria-selected', 'true');\n }\n this.adjustHeight();\n this.element.style.maxHeight = '100%';\n this.getItemCount();\n this.addEventListener();\n this.wireEvents();\n if (this.parent.enableVirtualization && this.allItems.length > 0) {\n this.parent.virtualizationModule.setUlElementHeight();\n this.parent.virtualizationModule.wireScrollEvent(false);\n }\n this.isRendered = true;\n hideSpinner(this.parent.element);\n if (this.parent.selectedItems.length) {\n this.checkItem();\n }\n }\n };\n LargeIconsView.prototype.preventImgDrag = function () {\n var i = 0;\n while (i < this.itemList.length) {\n if (this.itemList[i].querySelector('img')) {\n /* istanbul ignore next */\n this.itemList[i].ondragstart = function () { return false; };\n }\n i++;\n }\n };\n LargeIconsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.listObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.listElements, {\n enableTailMode: true,\n distance: 5,\n enableAutoScroll: true,\n dragTarget: '.' + LARGE_ICON,\n helper: this.dragHelper.bind(this),\n cursorAt: this.parent.dragCursorPosition,\n dragArea: this.parent.element,\n dragStop: dragStopHandler.bind(this, this.parent),\n drag: draggingHandler.bind(this, this.parent),\n clone: true,\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n }\n });\n }\n else if (this.dragObj && !this.parent.allowDragAndDrop) {\n this.dragObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = closest(dragTarget, '.e-list-item');\n if (!dragLi) {\n return null;\n }\n if (dragLi && !dragLi.classList.contains('e-active')) {\n this.setFocus(dragLi);\n }\n var activeEle = this.element.querySelectorAll('.' + ACTIVE);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n for (var i = 0; i < activeEle.length; i++) {\n // eslint-disable-next-line\n this.parent.dragData.push(this.getItemObject(activeEle[i]));\n this.parent.activeElements.push(activeEle[i]);\n }\n getModule(this.parent, dragLi);\n this.parent.dragPath = this.parent.path;\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n LargeIconsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, '.e-list-item');\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (dropLi) {\n // eslint-disable-next-line\n var info = this.getItemObject(dropLi);\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n else {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n LargeIconsView.prototype.getModuleName = function () {\n return 'largeiconsview';\n };\n LargeIconsView.prototype.adjustHeight = function () {\n var pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);\n this.element.style.height = (pane.offsetHeight - bar.offsetHeight) + 'px';\n };\n LargeIconsView.prototype.onItemCreated = function (args) {\n args.item.removeAttribute('aria-level');\n if (!this.parent.showFileExtension && getValue('isFile', args.curData)) {\n var textEle = args.item.querySelector('.' + LIST_TEXT);\n var txt = getValue('name', args.curData);\n var type = getValue('type', args.curData);\n textEle.innerHTML = txt.substr(0, txt.length - type.length);\n }\n this.renderCheckbox(args);\n var eventArgs = {\n element: args.item,\n fileDetails: args.curData,\n module: 'LargeIconsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n LargeIconsView.prototype.renderCheckbox = function (args) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkElement = createCheckBox(createElement, false, {\n checked: false,\n cssClass: 'e-small'\n });\n checkElement.setAttribute('role', 'checkbox');\n checkElement.setAttribute('aria-checked', 'false');\n args.item.firstElementChild.insertBefore(checkElement, args.item.firstElementChild.childNodes[0]);\n };\n LargeIconsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.destroy();\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.render(args);\n /* istanbul ignore next */\n if (getValue('name', args) === 'layout-change' && this.parent.fileAction === 'move' &&\n this.parent.isCut && this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n var indexes = this.getIndexes(this.parent.selectedNodes);\n var length_1 = 0;\n while (length_1 < indexes.length) {\n addBlur(this.itemList[indexes[length_1]]);\n length_1++;\n }\n }\n var activeEle = this.element.querySelectorAll('.' + ACTIVE);\n if (activeEle.length !== 0) {\n this.element.focus();\n }\n this.checkItem();\n this.parent.isLayoutChange = false;\n }\n else {\n this.element.setAttribute('tabindex', '-1');\n }\n };\n LargeIconsView.prototype.checkItem = function () {\n var checkEle = this.element.querySelectorAll('.' + ACTIVE);\n if (checkEle) {\n var checkLength = 0;\n while (checkLength < checkEle.length) {\n this.checkState(checkEle[checkLength], true);\n checkLength++;\n }\n }\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.renderList = function (args) {\n var i = 0;\n // eslint-disable-next-line\n var items = JSON.parse(JSON.stringify(args.files));\n while (i < items.length) {\n var icon = fileType(items[i]);\n var name_1 = getValue('name', items[i]);\n var selected = getItemName(this.parent, items[i]);\n var className = ((this.parent.selectedItems &&\n this.parent.selectedItems.indexOf(selected) !== -1)) ?\n LARGE_ICON + ' e-active' : LARGE_ICON;\n if (!hasEditAccess(items[i])) {\n className += ' ' + getAccessClass(items[i]);\n }\n if (icon === ICON_IMAGE && this.parent.showThumbnail && hasReadAccess(items[i])) {\n var imgUrl = getImageUrl(this.parent, items[i]);\n setValue('_fm_imageUrl', imgUrl, items[i]);\n setValue('_fm_imageAttr', { alt: name_1 }, items[i]);\n }\n else {\n setValue('_fm_icon', icon, items[i]);\n }\n setValue('_fm_htmlAttr', { class: className, title: name_1 }, items[i]);\n i++;\n }\n return items;\n };\n LargeIconsView.prototype.onFinalizeEnd = function (args) {\n this.render(args);\n };\n LargeIconsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.clearSelect();\n this.selectItems([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n this.parent.largeiconsviewModule.element.focus();\n };\n LargeIconsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n this.updateSelectedData();\n }\n };\n LargeIconsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'largeiconsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.clearSelect();\n };\n LargeIconsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.onLayoutChange(args);\n };\n LargeIconsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'largeiconsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n LargeIconsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n /* istanbul ignore next */\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '') {\n this.parent.searchedItems = [];\n }\n if (this.parent.view === 'LargeIcons') {\n removeBlur(this.parent);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onLayoutChange(args);\n if (this.parent.renamedItem) {\n this.clearSelect();\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n }\n };\n LargeIconsView.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'largeiconsview') {\n this.doOpenAction(args.target);\n }\n };\n LargeIconsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'LargeIcons' && this.element) {\n this.element.classList.add(DISPLAY_NONE);\n }\n };\n LargeIconsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.startItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n var eveArgs = { ctrlKey: true, shiftKey: true };\n this.doSelection(lastItem, eveArgs);\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'LargeIcons') {\n this.clearSelection();\n this.isInteraction = true;\n this.isInteracted = true;\n }\n };\n LargeIconsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n LargeIconsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onSearch = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(selectionChanged, {});\n this.parent.searchedItems = args.files;\n this.onLayoutChange(args);\n }\n };\n LargeIconsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.adjustHeight();\n };\n LargeIconsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n this.updateSelectedData();\n };\n LargeIconsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'LargeIcons' && !isNullOrUndefined(this.listObj) &&\n this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered\n && this.parent.sortBy === 'filterPath') {\n this.parent.sortBy = 'name';\n this.parent.notify(sortByChange, {});\n }\n };\n LargeIconsView.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(pathColumn, this.onPathColumn);\n this.parent.off(finalizeEnd, this.onFinalizeEnd);\n this.parent.off(createEnd, this.onCreateEnd);\n this.parent.off(selectedData, this.onSelectedData);\n this.parent.off(deleteInit, this.onDeleteInit);\n this.parent.off(deleteEnd, this.onDeleteEnd);\n this.parent.off(refreshEnd, this.onRefreshEnd);\n this.parent.off(pathChanged, this.onPathChanged);\n this.parent.off(layoutChange, this.onLayoutChange);\n this.parent.off(search, this.onSearch);\n this.parent.off(openInit, this.onOpenInit);\n this.parent.off(openEnd, this.onPathChanged);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(methodCall, this.onMethodCall);\n this.parent.off(actionFailure, this.onActionFailure);\n this.parent.off(renameInit, this.onRenameInit);\n this.parent.off(renameEnd, this.onPathChanged);\n this.parent.off(hideLayout, this.onHideLayout);\n this.parent.off(selectAllInit, this.onSelectAllInit);\n this.parent.off(clearAllInit, this.onClearAllInit);\n this.parent.off(menuItemData, this.onMenuItemData);\n this.parent.off(beforeRequest, this.onBeforeRequest);\n this.parent.off(afterRequest, this.onAfterRequest);\n this.parent.off(splitterResize, this.splitterResizeHandler);\n this.parent.off(resizeEnd, this.resizeHandler);\n this.parent.off(pasteInit, this.onpasteInit);\n this.parent.off(pasteEnd, this.onpasteEnd);\n this.parent.off(cutCopyInit, this.oncutCopyInit);\n this.parent.off(dropInit, this.onDropInit);\n this.parent.off(detailsInit, this.onDetailsInit);\n this.parent.off(layoutRefresh, this.onLayoutRefresh);\n this.parent.off(dropPath, this.onDropPath);\n this.parent.off(updateSelectionData, this.onUpdateSelectionData);\n this.parent.off(filterEnd, this.onPathChanged);\n };\n LargeIconsView.prototype.addEventListener = function () {\n this.parent.on(pathColumn, this.onPathColumn, this);\n this.parent.on(finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(createEnd, this.onCreateEnd, this);\n this.parent.on(refreshEnd, this.onRefreshEnd, this);\n this.parent.on(selectedData, this.onSelectedData, this);\n this.parent.on(pathChanged, this.onPathChanged, this);\n this.parent.on(deleteInit, this.onDeleteInit, this);\n this.parent.on(pasteInit, this.onpasteInit, this);\n this.parent.on(deleteEnd, this.onDeleteEnd, this);\n this.parent.on(layoutChange, this.onLayoutChange, this);\n this.parent.on(search, this.onSearch, this);\n this.parent.on(openInit, this.onOpenInit, this);\n this.parent.on(renameInit, this.onRenameInit, this);\n this.parent.on(renameEnd, this.onPathChanged, this);\n this.parent.on(openEnd, this.onPathChanged, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(methodCall, this.onMethodCall, this);\n this.parent.on(actionFailure, this.onActionFailure, this);\n this.parent.on(hideLayout, this.onHideLayout, this);\n this.parent.on(selectAllInit, this.onSelectAllInit, this);\n this.parent.on(clearAllInit, this.onClearAllInit, this);\n this.parent.on(menuItemData, this.onMenuItemData, this);\n this.parent.on(beforeRequest, this.onBeforeRequest, this);\n this.parent.on(afterRequest, this.onAfterRequest, this);\n this.parent.on(dropInit, this.onDropInit, this);\n this.parent.on(detailsInit, this.onDetailsInit, this);\n this.parent.on(splitterResize, this.splitterResizeHandler, this);\n this.parent.on(resizeEnd, this.resizeHandler, this);\n this.parent.on(pasteEnd, this.onpasteEnd, this);\n this.parent.on(cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(dropPath, this.onDropPath, this);\n this.parent.on(updateSelectionData, this.onUpdateSelectionData, this);\n this.parent.on(filterEnd, this.onPathChanged, this);\n };\n LargeIconsView.prototype.onActionFailure = function () { this.isInteraction = true; this.isInteracted = true; };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var ele = closest(args.target, 'li');\n this.parent.itemData = [this.getItemObject(ele)];\n }\n };\n LargeIconsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.updateSelectedData();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n LargeIconsView.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath === '') ? [getPathObject(this.parent)] :\n [this.getItemObject(select('.e-active', this.element))];\n }\n };\n LargeIconsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n var activeEle = this.element.querySelectorAll('.' + ACTIVE);\n this.parent.activeRecords = [];\n this.parent.activeElements = [];\n for (var i = 0; i < activeEle.length; i++) {\n this.parent.activeElements.push(activeEle[i]);\n this.parent.activeRecords.push(this.getItemObject(activeEle[i]));\n }\n }\n };\n LargeIconsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n LargeIconsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'LargeIcons') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n LargeIconsView.prototype.onPropertyChanged = function (e) {\n var currentSelected;\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'selectedItems':\n this.isInteraction = false;\n this.isInteracted = false;\n currentSelected = isNullOrUndefined(this.parent.selectedItems) ? [] : this.parent.selectedItems.slice(0);\n currentSelected = this.parent.allowMultiSelection ? currentSelected :\n currentSelected.slice(currentSelected.length - 1);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.onClearAllInit();\n if (currentSelected.length) {\n this.selectItems(currentSelected);\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n this.isInteraction = true;\n this.isInteracted = true;\n break;\n case 'showThumbnail':\n refresh(this.parent);\n break;\n case 'showFileExtension':\n read(this.parent, pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (this.parent.view !== 'LargeIcons') {\n break;\n }\n refresh(this.parent);\n break;\n case 'view':\n updateLayout(this.parent, 'LargeIcons');\n break;\n }\n }\n };\n LargeIconsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.listObj) {\n this.unWireEvents();\n }\n };\n LargeIconsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n };\n LargeIconsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n };\n /* istanbul ignore next */\n LargeIconsView.prototype.onMouseOver = function (e) {\n var targetEle = closest(e.target, '.e-list-item');\n removeBlur(this.parent, 'hover');\n if (targetEle !== null) {\n targetEle.classList.add(HOVER);\n }\n };\n LargeIconsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n this.clickObj = new Touch(this.element, {\n tap: function (eve) {\n eve.originalEvent.preventDefault();\n if (proxy_1.parent.isDevice) {\n proxy_1.tapCount = eve.tapCount;\n proxy_1.tapEvent = eve;\n setTimeout(function () {\n if (proxy_1.tapCount > 0) {\n proxy_1.doTapAction(proxy_1.tapEvent);\n }\n proxy_1.tapCount = 0;\n }, 350);\n }\n else {\n if (eve.tapCount === 2 && eve.originalEvent.which !== 3) {\n proxy_1.dblClickHandler(eve);\n }\n else {\n proxy_1.clickHandler(eve);\n }\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n proxy_1.multiSelect = proxy_1.parent.allowMultiSelection ? true : false;\n if (proxy_1.parent.allowMultiSelection) {\n addClass([proxy_1.parent.element], MULTI_SELECT);\n }\n proxy_1.clickHandler(e);\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n LargeIconsView.prototype.doTapAction = function (eve) {\n var target = eve.originalEvent.target;\n var item = closest(target, '.' + LIST_ITEM);\n if (this.multiSelect || target.classList.contains(LIST_PARENT) || isNullOrUndefined(item)) {\n this.clickHandler(eve);\n }\n else {\n this.parent.isFile = false;\n this.updateType(item);\n if (!this.parent.isFile) {\n this.dblClickHandler(eve);\n }\n else if (eve.tapCount === 2) {\n this.clickHandler(eve);\n this.dblClickHandler(eve);\n }\n else {\n this.clickHandler(eve);\n }\n }\n };\n LargeIconsView.prototype.clickHandler = function (e) {\n var target = e.originalEvent.target;\n removeBlur(this.parent, 'hover');\n this.doSelection(target, e.originalEvent);\n this.parent.activeModule = 'largeiconsview';\n };\n /**\n *\n * @param {Element} target - specifies the target element.\n * @param {TouchEventArgs | MouseEventArgs | KeyboardEventArgs} e - specifies event arguements.\n * @returns {void}\n * @hidden\n */\n LargeIconsView.prototype.doSelection = function (target, e) {\n var item = closest(target, '.' + LIST_ITEM);\n var cList = target.classList;\n this.parent.isFile = false;\n var action = 'select';\n if (e.which === 3 && !isNullOrUndefined(item) && item.classList.contains(ACTIVE)) {\n this.updateType(item);\n return;\n }\n else if (!isNullOrUndefined(item)) {\n if (this.parent.allowMultiSelection && item.classList.contains(ACTIVE)\n && (e.ctrlKey || target.classList.contains(CHECK))) {\n action = 'unselect';\n }\n var fileSelectionArgs = this.triggerSelection(action, item);\n if (fileSelectionArgs.cancel !== true) {\n if ((!this.parent.allowMultiSelection || (!this.multiSelect && (e && !e.ctrlKey)))\n && !cList.contains(FRAME)) {\n this.updateType(item);\n this.clearSelect();\n }\n if (this.parent.allowMultiSelection && e.shiftKey) {\n if (!(e && e.ctrlKey)) {\n this.clearSelect();\n }\n if (!this.startItem) {\n this.startItem = item;\n }\n var startIndex = this.itemList.indexOf(this.startItem);\n var endIndex = this.itemList.indexOf(item);\n if (startIndex > endIndex) {\n for (var i = startIndex; i >= endIndex; i--) {\n this.addActive(this.itemList[i]);\n }\n }\n else {\n for (var i = startIndex; i <= endIndex; i++) {\n this.addActive(this.itemList[i]);\n }\n }\n this.addFocus(this.itemList[endIndex]);\n }\n else {\n this.startItem = item;\n if (this.parent.allowMultiSelection && item.classList.contains(ACTIVE)) {\n this.removeActive(item);\n }\n else {\n this.addActive(item);\n }\n this.addFocus(item);\n }\n if (this.parent.selectedItems.length === 0) {\n this.resetMultiSelect();\n }\n this.parent.notify(selectionChanged, {});\n this.triggerSelect(action, item);\n }\n }\n else {\n this.clearSelection();\n }\n if (!isNullOrUndefined(item)) {\n this.updateType(item);\n }\n };\n LargeIconsView.prototype.dblClickHandler = function (e) {\n this.parent.activeModule = 'largeiconsview';\n var target = e.originalEvent.target;\n this.doOpenAction(target);\n };\n LargeIconsView.prototype.clearSelection = function () {\n this.clearSelect();\n this.resetMultiSelect();\n this.parent.notify(selectionChanged, {});\n };\n LargeIconsView.prototype.resetMultiSelect = function () {\n this.multiSelect = false;\n removeClass([this.parent.element], MULTI_SELECT);\n };\n LargeIconsView.prototype.doOpenAction = function (target) {\n var _this = this;\n if (isNullOrUndefined(target)) {\n return;\n }\n var item = closest(target, '.' + LIST_ITEM);\n this.parent.isFile = false;\n if (!isNullOrUndefined(item)) {\n this.updateType(item);\n // eslint-disable-next-line\n var details_1 = this.getItemObject(item);\n if (!hasReadAccess(details_1)) {\n createDeniedDialog(this.parent, details_1, permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: details_1, module: 'LargeIconsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var text = getValue('name', details_1);\n if (!_this.parent.isFile) {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', details_1);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNullOrUndefined(id) ? text : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(text);\n _this.parent.pathId.push(getValue('_fm_id', details_1));\n _this.parent.itemData = [details_1];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, details_1);\n }\n _this.parent.isFiltered = false;\n _this.parent.setProperties({ selectedItems: [] }, true);\n }\n else {\n var icon = fileType(details_1);\n if (icon === ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, details_1);\n createImageDialog(_this.parent, text, imgUrl);\n }\n }\n }\n });\n }\n };\n LargeIconsView.prototype.updateType = function (item) {\n var folder = select('.' + FOLDER, item);\n this.parent.isFile = isNullOrUndefined(folder) ? true : false;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keydownActionHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'moveDown':\n case 'moveLeft':\n case 'moveRight':\n case 'moveUp':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n LargeIconsView.prototype.keyActionHandler = function (e) {\n var _this = this;\n if (!this.isRendered) {\n return;\n }\n var fItem = this.getFocusedItem();\n var firstItem = this.getFirstItem();\n var lastItem = this.getLastItem();\n switch (e.action) {\n case 'end':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTo(0, this.element.firstElementChild.scrollHeight);\n setTimeout(function () {\n _this.navigateItem(_this.itemList[_this.itemList.length - 1]);\n }, 10);\n }\n else {\n this.navigateItem(lastItem);\n }\n break;\n case 'home':\n if (this.parent.enableVirtualization) {\n this.clearSelect();\n this.element.firstElementChild.scrollTop = 0;\n setTimeout(function () {\n _this.navigateItem(_this.itemList[0]);\n }, 10);\n }\n else {\n this.navigateItem(firstItem);\n }\n break;\n case 'tab':\n if (!isNullOrUndefined(fItem)) {\n this.addFocus(fItem);\n }\n else if (!isNullOrUndefined(firstItem)) {\n this.addFocus(firstItem);\n }\n break;\n case 'moveDown':\n this.navigateDown(fItem, true);\n break;\n case 'moveLeft':\n this.navigateRight(fItem, false);\n break;\n case 'moveRight':\n this.navigateRight(fItem, true);\n break;\n case 'moveUp':\n this.navigateDown(fItem, false);\n break;\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n this.csEndKey(lastItem, e);\n break;\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n this.csHomeKey(firstItem, e);\n break;\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n this.csDownKey(fItem, e);\n break;\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n this.csLeftKey(fItem, e);\n break;\n case 'ctrlRight':\n case 'shiftRight':\n case 'csRight':\n this.csRightKey(fItem, e);\n break;\n case 'ctrlUp':\n case 'shiftUp':\n case 'csUp':\n this.csUpKey(fItem, e);\n break;\n case 'space':\n this.spaceKey(fItem);\n break;\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n if (!isNullOrUndefined(fItem)) {\n this.doSelection(fItem, e);\n }\n break;\n case 'ctrlA':\n this.ctrlAKey(firstItem, lastItem);\n break;\n case 'enter':\n this.doOpenAction(this.parent.visitedItem ? this.parent.visitedItem : this.getVisitedItem());\n break;\n case 'altEnter':\n this.parent.notify(detailsInit, {});\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n }\n };\n LargeIconsView.prototype.doDownload = function () {\n this.updateSelectedData();\n doDownload(this.parent);\n };\n LargeIconsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.updateSelectedData();\n // eslint-disable-next-line\n var data = this.parent.itemData;\n for (var i = 0; i < data.length; i++) {\n if (!hasEditAccess(data[i])) {\n createDeniedDialog(this.parent, data[i], permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n LargeIconsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n LargeIconsView.prototype.updateRenameData = function () {\n var item = select('.' + LIST_ITEM + '.' + ACTIVE, this.element);\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n updateRenamingData(this.parent, data);\n };\n LargeIconsView.prototype.getVisitedItem = function () {\n var item = this.parent.selectedItems[this.parent.selectedItems.length - 1];\n var indexes = this.getIndexes([item], this.parent.hasId);\n return this.itemList[indexes[0]];\n };\n LargeIconsView.prototype.getFocusedItem = function () {\n return select('.' + LIST_ITEM + '.' + FOCUS, this.element);\n };\n LargeIconsView.prototype.getActiveItem = function () {\n return select('.' + LIST_ITEM + '.' + ACTIVE, this.element);\n };\n LargeIconsView.prototype.getFirstItem = function () {\n return this.itemList[0];\n };\n LargeIconsView.prototype.getLastItem = function () {\n return this.itemList[this.itemList.length - 1];\n };\n LargeIconsView.prototype.navigateItem = function (item) {\n this.setFocus(item);\n };\n LargeIconsView.prototype.navigateDown = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards, this.perRow);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.navigateRight = function (fItem, isTowards) {\n var nItem = this.getNextItem(fItem, isTowards);\n this.setFocus(nItem);\n };\n LargeIconsView.prototype.getNextItem = function (li, isTowards, perRow) {\n if (isNullOrUndefined(li)) {\n return this.getFocusedItem() || this.getActiveItem() || this.getFirstItem();\n }\n var index = this.itemList.indexOf(li);\n var nextItem;\n do {\n if (isTowards) {\n index = perRow ? index + perRow : index + 1;\n }\n else {\n index = perRow ? index - perRow : index - 1;\n }\n nextItem = this.itemList[index];\n if (this.parent.enableVirtualization && isNullOrUndefined(nextItem)) {\n var marginValue = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-bottom'), 10);\n var scrollHeight = this.itemList[0].getBoundingClientRect().height + marginValue;\n this.element.firstElementChild.scrollTo(this.element.firstElementChild.scrollTop, this.element.firstElementChild.scrollTop + scrollHeight);\n }\n if (isNullOrUndefined(nextItem)) {\n return li;\n }\n } while (!isVisible(nextItem));\n return nextItem;\n };\n LargeIconsView.prototype.setFocus = function (nextItem) {\n if (!isNullOrUndefined(nextItem)) {\n var fileSelectionArgs = this.triggerSelection('select', nextItem);\n if (fileSelectionArgs.cancel !== true) {\n this.startItem = nextItem;\n this.clearSelect();\n this.addActive(nextItem);\n this.addFocus(nextItem);\n this.parent.notify(selectionChanged, {});\n this.triggerSelect('select', nextItem);\n }\n }\n };\n LargeIconsView.prototype.spaceKey = function (fItem) {\n if (!isNullOrUndefined(fItem) && !fItem.classList.contains(ACTIVE)) {\n var fileSelectionArgs = this.triggerSelection('select', fItem);\n if (fileSelectionArgs.cancel !== true) {\n this.addActive(fItem);\n this.parent.notify(selectionChanged, {});\n this.triggerSelect('select', fItem);\n }\n }\n };\n LargeIconsView.prototype.ctrlAKey = function (firstItem, lastItem) {\n if (this.parent.allowMultiSelection && !isNullOrUndefined(firstItem)) {\n this.startItem = firstItem;\n var eveArgs = { ctrlKey: true, shiftKey: true };\n var liParent = this.element.querySelector('.' + LIST_PARENT);\n var liScrPos = liParent.scrollTop;\n var getCurFocusedItem = this.getFocusedItem();\n this.doSelection(lastItem, eveArgs);\n liParent.scrollTop = liScrPos;\n if (!isNullOrUndefined(getCurFocusedItem)) {\n this.addFocus(getCurFocusedItem);\n }\n }\n };\n LargeIconsView.prototype.csEndKey = function (lastItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(lastItem);\n }\n else if (!isNullOrUndefined(lastItem)) {\n if (e.action === 'ctrlEnd') {\n this.addFocus(lastItem);\n }\n else {\n this.doSelection(lastItem, e);\n }\n }\n };\n LargeIconsView.prototype.csHomeKey = function (firstItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateItem(firstItem);\n }\n else if (!isNullOrUndefined(firstItem)) {\n if (e.action === 'ctrlHome') {\n this.addFocus(firstItem);\n }\n else {\n this.doSelection(firstItem, e);\n }\n }\n };\n LargeIconsView.prototype.csDownKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, true);\n }\n else {\n var dItem = this.getNextItem(fItem, true, this.perRow);\n if (!isNullOrUndefined(dItem)) {\n if (e.action === 'ctrlDown') {\n this.addFocus(dItem);\n }\n else {\n this.doSelection(dItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csLeftKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, false);\n }\n else {\n var lItem = this.getNextItem(fItem, false);\n if (!isNullOrUndefined(lItem)) {\n if (e.action === 'ctrlLeft') {\n this.addFocus(lItem);\n }\n else {\n this.doSelection(lItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csRightKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateRight(fItem, true);\n }\n else {\n var rItem = this.getNextItem(fItem, true);\n if (!isNullOrUndefined(rItem)) {\n if (e.action === 'ctrlRight') {\n this.addFocus(rItem);\n }\n else {\n this.doSelection(rItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.csUpKey = function (fItem, e) {\n if (!this.parent.allowMultiSelection) {\n this.navigateDown(fItem, false);\n }\n else {\n var uItem = this.getNextItem(fItem, false, this.perRow);\n if (!isNullOrUndefined(uItem)) {\n if (e.action === 'ctrlUp') {\n this.addFocus(uItem);\n }\n else {\n this.doSelection(uItem, e);\n }\n }\n }\n };\n LargeIconsView.prototype.addActive = function (nextItem) {\n if (!isNullOrUndefined(nextItem)) {\n if (!nextItem.classList.contains(ACTIVE)) {\n this.parent.selectedItems.push(this.getDataName(nextItem));\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n addClass([nextItem], [ACTIVE]);\n nextItem.setAttribute('aria-selected', 'true');\n this.checkState(nextItem, true);\n }\n this.parent.visitedItem = nextItem;\n }\n };\n LargeIconsView.prototype.removeActive = function (preItem) {\n if (!isNullOrUndefined(preItem)) {\n removeClass([preItem], [ACTIVE]);\n if (this.parent.allowMultiSelection) {\n preItem.setAttribute('aria-selected', 'false');\n }\n else {\n preItem.removeAttribute('aria-selected');\n }\n this.checkState(preItem, false);\n var index = this.parent.selectedItems.indexOf(this.getDataName(preItem));\n if (index > -1) {\n this.parent.selectedItems.splice(index, 1);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n this.parent.visitedItem = null;\n }\n };\n LargeIconsView.prototype.getDataName = function (item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n return getItemName(this.parent, data);\n };\n LargeIconsView.prototype.addFocus = function (item) {\n this.element.setAttribute('tabindex', '-1');\n var fItem = this.getFocusedItem();\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [FOCUS]);\n }\n addClass([item], [FOCUS]);\n item.setAttribute('tabindex', '0');\n item.focus();\n };\n LargeIconsView.prototype.checkState = function (item, toCheck) {\n if (!this.parent.allowMultiSelection) {\n return;\n }\n var checkEle = select('.' + FRAME, item);\n if (isNullOrUndefined(checkEle)) {\n return;\n }\n if (toCheck) {\n if (!checkEle.classList.contains(CHECK)) {\n addClass([checkEle], CHECK);\n closest(checkEle, '.' + CB_WRAP).setAttribute('aria-checked', 'true');\n }\n }\n else {\n if (checkEle.classList.contains(CHECK)) {\n removeClass([checkEle], CHECK);\n closest(checkEle, '.' + CB_WRAP).setAttribute('aria-checked', 'false');\n }\n }\n };\n LargeIconsView.prototype.clearSelect = function () {\n var eles = Array.prototype.slice.call(selectAll('.' + ACTIVE, this.listElements));\n var fileSelectionArgs;\n if (eles.length !== 0) {\n fileSelectionArgs = this.triggerSelection('unselect', eles[0]);\n if (fileSelectionArgs.cancel !== true) {\n for (var i = 0, len = eles.length; i < len; i++) {\n this.removeActive(eles[i]);\n }\n }\n this.triggerSelect('unselect', eles[0]);\n }\n };\n LargeIconsView.prototype.resizeHandler = function () {\n this.getItemCount();\n if (!isNullOrUndefined(this.listObj)) {\n this.adjustHeight();\n }\n };\n LargeIconsView.prototype.splitterResizeHandler = function () {\n this.getItemCount();\n };\n LargeIconsView.prototype.getItemCount = function () {\n var perRow = 1;\n if (this.itemList) {\n for (var i = 0, len = this.itemList.length - 1; i < len; i++) {\n if (this.itemList[i].getBoundingClientRect().top === this.itemList[i + 1].getBoundingClientRect().top) {\n perRow++;\n }\n else {\n break;\n }\n }\n }\n this.perRow = perRow;\n };\n LargeIconsView.prototype.triggerSelection = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n var eventArgs = {\n action: action, fileDetails: data, isInteracted: this.isInteraction, cancel: false, target: item\n };\n this.parent.trigger('fileSelection', eventArgs);\n this.isInteraction = true;\n return eventArgs;\n };\n LargeIconsView.prototype.triggerSelect = function (action, item) {\n // eslint-disable-next-line\n var data = this.getItemObject(item);\n this.parent.visitedData = data;\n var eventArgs = { action: action, fileDetails: data, isInteracted: this.isInteracted };\n this.parent.trigger('fileSelect', eventArgs);\n this.isInteracted = true;\n };\n LargeIconsView.prototype.selectItems = function (items) {\n var indexes = this.getIndexes(items, this.parent.hasId);\n for (var j = 0, len = indexes.length; j < len; j++) {\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[indexes[j]], eveArgs);\n }\n };\n LargeIconsView.prototype.getIndexes = function (items, byId) {\n var indexes = [];\n var filter$$1 = byId ? 'id' : 'name';\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filter$$1, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n return indexes;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.getItemObject = function (item) {\n var index = this.itemList.indexOf(item);\n return this.items[index];\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var newData = new DataManager(this.items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (newData.length > 0) {\n resultData = new DataManager(newData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n var index = this.items.indexOf(resultData[0]);\n var eveArgs = { ctrlKey: true, shiftKey: false };\n this.doSelection(this.itemList[index], eveArgs);\n }\n };\n LargeIconsView.prototype.updateSelectedData = function () {\n // eslint-disable-next-line\n var data = [];\n var items = selectAll('.' + LIST_ITEM + '.' + ACTIVE, this.element);\n for (var i = 0; i < items.length; i++) {\n data[i] = this.getItemObject(items[i]);\n }\n this.parent.itemData = data;\n };\n // eslint-disable-next-line\n LargeIconsView.prototype.onMethodCall = function (args) {\n if (this.parent.view !== 'LargeIcons') {\n return;\n }\n var action = getValue('action', args);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', args));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', args));\n break;\n case 'openFile':\n this.openFile(getValue('id', args));\n break;\n case 'renameFile':\n this.isInteraction = false;\n this.isInteracted = false;\n this.renameFile(getValue('id', args), getValue('newName', args));\n break;\n case 'createFolder':\n this.isInteraction = false;\n this.isInteracted = false;\n break;\n case 'clearSelection':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onClearAllInit();\n break;\n case 'selectAll':\n this.isInteraction = false;\n this.isInteracted = false;\n this.onSelectAllInit();\n break;\n }\n };\n LargeIconsView.prototype.getItemsIndex = function (items) {\n var indexes = [];\n var isFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filterName = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !isFilter) {\n for (var i = 0, len = this.items.length; i < len; i++) {\n if (items.indexOf(getValue(filterName, this.items[i])) !== -1) {\n indexes.push(i);\n }\n }\n }\n else {\n for (var i = 0, len = this.items.length; i < len; i++) {\n var name_2 = getValue('filterPath', this.items[i]) + getValue('name', this.items[i]);\n if ((items.indexOf(name_2) !== -1) || (items.indexOf(getValue(filterName, this.items[i])) !== -1)) {\n indexes.push(i);\n }\n }\n }\n return indexes;\n };\n LargeIconsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'largeiconsview';\n if (isNullOrUndefined(ids)) {\n this.performDelete();\n return;\n }\n var indexes = this.getItemsIndex(ids);\n if (indexes.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < indexes.length; i++) {\n data[i] = this.items[indexes[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.downloadFiles = function (ids) {\n if (isNullOrUndefined(ids)) {\n this.doDownload();\n return;\n }\n var index = this.getItemsIndex(ids);\n if (index.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < index.length; i++) {\n data[i] = this.items[index[i]];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n LargeIconsView.prototype.openFile = function (id) {\n if (isNullOrUndefined(id)) {\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n this.doOpenAction(this.itemList[indexes[0]]);\n }\n };\n LargeIconsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'largeiconsview';\n if (isNullOrUndefined(id)) {\n this.performRename();\n return;\n }\n var indexes = this.getItemsIndex([id]);\n if (indexes.length > 0) {\n updateRenamingData(this.parent, this.items[indexes[0]]);\n if (isNullOrUndefined(name)) {\n doRename(this.parent);\n }\n else {\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], permissionEdit);\n }\n else {\n rename(this.parent, this.parent.path, name);\n }\n }\n }\n };\n return LargeIconsView;\n}());\n\n/**\n * BreadCrumbBar module\n */\nvar BreadCrumbBar = /** @__PURE__ @class */ (function () {\n /**\n * constructor for addressbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies parent element.\n * @private\n *\n */\n function BreadCrumbBar(parent) {\n this.addressPath = '';\n this.addressBarLink = '';\n this.searchTimer = null;\n this.searchWrapWidth = null;\n this.parent = parent;\n this.keyConfigs = {\n enter: 'enter'\n };\n this.render();\n }\n BreadCrumbBar.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n var value = e.newProp.searchSettings;\n switch (prop) {\n case 'searchSettings':\n if (!isNullOrUndefined(value.allowSearchOnTyping)) {\n this.searchEventBind(value.allowSearchOnTyping);\n }\n if (this.parent.breadcrumbbarModule.searchObj.value && this.parent.breadcrumbbarModule.searchObj.value !== '' &&\n !(!isNullOrUndefined(value.allowSearchOnTyping) && isNullOrUndefined(value.filterType) &&\n isNullOrUndefined(value.ignoreCase))) {\n searchWordHandler(this.parent, this.parent.breadcrumbbarModule.searchObj.value, false);\n }\n break;\n }\n }\n };\n BreadCrumbBar.prototype.render = function () {\n this.addEventListener();\n };\n BreadCrumbBar.prototype.onPathChange = function () {\n var pathNames = this.parent.pathNames;\n var paths = this.parent.path.split('/');\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var addressbarLI = null;\n var pathNamesLen = pathNames.length;\n if (pathNames.length > 0) {\n var id = '';\n for (var i = 0; i < pathNamesLen; i++) {\n var addressATag = null;\n addressbarLI = this.parent.createElement('li', { className: 'e-address-list-item' });\n for (var j = 0; j <= i; j++) {\n id = id + paths[j] + '/';\n }\n addressbarLI.setAttribute('data-utext', id);\n if (i !== 0) {\n var icon = createElement('span', { className: ICONS });\n addressbarLI.appendChild(icon);\n }\n if (pathNamesLen - i !== 1) {\n addressATag = createElement('a', { className: LIST_TEXT });\n addressbarLI.setAttribute('tabindex', '0');\n }\n else {\n addressATag = createElement('span', { className: LIST_TEXT });\n }\n id = '';\n addressATag.innerText = pathNames[i];\n addressbarLI.appendChild(addressATag);\n addressbarUL.appendChild(addressbarLI);\n }\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n if (!isNullOrUndefined(ulElement)) {\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n remove(ulElement);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n if (!searchWrap) {\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.appendChild(addressbarUL);\n }\n this.updateBreadCrumbBar(addressbarUL);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.updateBreadCrumbBar = function (addresBarUL) {\n var liElements = addresBarUL.querySelectorAll('li');\n var ulElement = this.parent.breadCrumbBarNavigation.querySelector('.e-addressbar-ul');\n var style = window.getComputedStyle(ulElement, null);\n var pRight = parseFloat(style.getPropertyValue('padding-right'));\n var pLeft = parseFloat(style.getPropertyValue('padding-left'));\n var breadCrumbBarWidth = ulElement.offsetWidth - pRight - pLeft;\n var addressbarUL = this.parent.createElement('ul', { className: 'e-addressbar-ul' });\n var liElementsWidth = 0;\n var liElementsWidths = [];\n for (var i = 0; i < liElements.length; i++) {\n var width = liElements[i].clientWidth;\n liElementsWidths.push(width);\n liElementsWidth = liElementsWidth + width;\n }\n if (!isNullOrUndefined(ulElement)) {\n remove(ulElement);\n }\n var searchContainer = this.parent.createElement('div');\n searchContainer.setAttribute('class', 'e-search-wrap');\n var id = this.parent.element.id + SEARCH_ID;\n var searchInput = createElement('input', { id: id,\n attrs: { autocomplete: 'off', 'aria-label': getLocaleText(this.parent, 'Search') } });\n searchContainer.appendChild(searchInput);\n var searchEle = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap .e-input');\n if (isNullOrUndefined(searchEle)) {\n this.parent.breadCrumbBarNavigation.appendChild(searchContainer);\n var span = createElement('span', { className: 'e-icons e-fe-search' });\n EventHandler.add(span, 'click', this.onShowInput, this);\n searchInput.parentElement.insertBefore(span, searchInput);\n this.searchObj = new TextBox({\n value: '',\n showClearButton: true,\n placeholder: getLocaleText(this.parent, 'Search'),\n focus: this.onFocus.bind(this),\n blur: this.onBlur.bind(this)\n });\n this.searchObj.appendTo('#' + this.parent.element.id + SEARCH_ID);\n this.searchEventBind(this.parent.searchSettings.allowSearchOnTyping);\n var search$$1 = this.searchObj.element.nextElementSibling;\n EventHandler.add(search$$1, 'mousedown', this.searchChangeHandler.bind(this), this);\n EventHandler.add(this.searchObj.element, 'keyup', this.onKeyUp.bind(this), this);\n }\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n breadCrumbBarWidth = breadCrumbBarWidth - (this.searchWrapWidth ? this.searchWrapWidth : searchWrap.offsetWidth);\n if (liElementsWidth > breadCrumbBarWidth) {\n var i = liElements.length;\n while (i--) {\n var diff = breadCrumbBarWidth - liElementsWidths[i];\n if (diff > 40) {\n addressbarUL.insertBefore(liElements[i], addressbarUL.querySelector('li'));\n breadCrumbBarWidth = diff;\n }\n else {\n // eslint-disable-next-line\n var items = [];\n for (var j = 0; j <= i; j++) {\n var liElement = liElements[j];\n items.push({\n text: liElement.innerText,\n utext: liElement.getAttribute('data-utext')\n });\n }\n var subMenuLi = this.parent.createElement('li', { className: 'e-breadcrumb-menu' });\n // eslint-disable-next-line\n var attributes = { className: 'e-breadcrumb-submenu' };\n var subMenuSpan = this.parent.createElement('button', attributes);\n subMenuLi.appendChild(subMenuSpan);\n addressbarUL.insertBefore(subMenuLi, addressbarUL.querySelector('li'));\n this.subMenuObj = new DropDownButton({\n items: items,\n cssClass: 'e-caret-hide e-submenu',\n iconCss: ICON_BREADCRUMB,\n iconPosition: 'Top',\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.addSubMenuAttributes.bind(this),\n select: this.subMenuSelectOperations.bind(this)\n });\n this.subMenuObj.isStringTemplate = true;\n this.subMenuObj.appendTo(subMenuSpan);\n break;\n }\n }\n this.parent.breadCrumbBarNavigation.insertBefore(addressbarUL, searchWrap);\n }\n else {\n this.parent.breadCrumbBarNavigation.insertBefore(addresBarUL, searchWrap);\n }\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onFocus = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.add('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onKeyUp = function () {\n this.parent.notify(pathColumn, { args: this.parent });\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onBlur = function () {\n var wrap = closest(this.searchObj.element, '.e-search-wrap');\n wrap.classList.remove('e-focus');\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.subMenuSelectOperations = function (event) {\n // eslint-disable-next-line\n var args = { target: event.element };\n this.addressPathClickHandler(args);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.addSubMenuAttributes = function (args) {\n args.element.setAttribute('data-utext', getValue('utext', args.item));\n var anchor = this.parent.createElement('a', { className: 'e-list-text' });\n args.element.appendChild(anchor);\n };\n BreadCrumbBar.prototype.searchEventBind = function (allow) {\n if (allow) {\n this.searchObj.input = this.searchChangeHandler.bind(this);\n this.searchObj.change = null;\n }\n else {\n this.searchObj.change = this.searchChangeHandler.bind(this);\n this.searchObj.input = null;\n }\n };\n BreadCrumbBar.prototype.searchChangeHandler = function (args) {\n var _this = this;\n if (!isNullOrUndefined(args.value)) {\n this.parent.isFiltered = false;\n if (this.parent.searchSettings.allowSearchOnTyping) {\n window.clearTimeout(this.searchTimer);\n this.searchTimer = window.setTimeout(function () { searchWordHandler(_this.parent, args.value, false); }, 300);\n }\n else {\n searchWordHandler(this.parent, args.value, false);\n }\n }\n };\n BreadCrumbBar.prototype.addressPathClickHandler = function (e) {\n var li = e.target;\n if (li.nodeName === 'LI' || li.nodeName === 'A') {\n var node = li.nodeName === 'LI' ? li.children[0] : li;\n if (!isNullOrUndefined(node)) {\n this.parent.isFiltered = false;\n var currentPath = this.updatePath(node);\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n this.triggerFileOpen(this.parent.itemData[0]);\n read(this.parent, pathChanged, currentPath);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n }\n };\n // eslint-disable-next-line\n BreadCrumbBar.prototype.triggerFileOpen = function (data) {\n var eventArgs = { cancel: false, fileDetails: data, module: 'BreadCrumbBar' };\n delete eventArgs.cancel;\n this.parent.trigger('fileOpen', eventArgs);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onShowInput = function () {\n if (this.parent.isMobile) {\n if (this.parent.element.classList.contains(FILTER)) {\n removeClass([this.parent.element], FILTER);\n this.searchWrapWidth = null;\n }\n else {\n var searchWrap = this.parent.breadCrumbBarNavigation.querySelector('.e-search-wrap');\n this.searchWrapWidth = searchWrap.offsetWidth;\n addClass([this.parent.element], FILTER);\n this.searchObj.element.focus();\n }\n }\n };\n BreadCrumbBar.prototype.updatePath = function (list) {\n var li = closest(list, 'li');\n var liElementId = li.getAttribute('data-utext');\n this.addressBarLink = liElementId;\n var link = this.addressBarLink.split('/');\n var ids = this.parent.pathId;\n var names = this.parent.pathNames;\n this.parent.pathId = [];\n this.parent.pathNames = [];\n var newpath = '';\n for (var i = 0, len = link.length - 1; i < len; i++) {\n this.parent.pathId.push(ids[i]);\n this.parent.pathNames.push(names[i]);\n newpath += link[i] + '/';\n }\n this.parent.setProperties({ path: newpath }, true);\n return newpath;\n };\n BreadCrumbBar.prototype.onUpdatePath = function () {\n this.onPathChange();\n this.removeSearchValue();\n };\n BreadCrumbBar.prototype.onCreateEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onRenameEnd = function () {\n this.onPathChange();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDeleteEnd = function () {\n this.onUpdatePath();\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.removeSearchValue = function () {\n this.parent.isFiltered = false;\n if (this.searchObj && (this.searchObj.value !== '' || this.searchObj.element.value !== '')) {\n this.searchObj.value = '';\n this.searchObj.element.value = '';\n this.searchObj.dataBind();\n }\n };\n BreadCrumbBar.prototype.onResize = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.onPasteEnd = function () {\n this.onPathChange();\n };\n BreadCrumbBar.prototype.addEventListener = function () {\n this.keyboardModule = new KeyboardEvents(this.parent.breadCrumbBarNavigation, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n EventHandler.add(this.parent.breadCrumbBarNavigation, 'click', this.addressPathClickHandler, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(pathChanged, this.onUpdatePath, this);\n this.parent.on(finalizeEnd, this.onUpdatePath, this);\n this.parent.on(refreshEnd, this.onUpdatePath, this);\n this.parent.on(openEnd, this.onUpdatePath, this);\n this.parent.on(createEnd, this.onCreateEnd, this);\n this.parent.on(renameEnd, this.onRenameEnd, this);\n this.parent.on(deleteEnd, this.onDeleteEnd, this);\n this.parent.on(splitterResize, this.onResize, this);\n this.parent.on(pasteEnd, this.onPasteEnd, this);\n this.parent.on(resizeEnd, this.onResize, this);\n this.parent.on(searchTextChange, this.onSearchTextChange, this);\n this.parent.on(dropInit, this.onDropInit, this);\n this.parent.on(layoutRefresh, this.onResize, this);\n this.parent.on(dropPath, this.onPathChange, this);\n };\n BreadCrumbBar.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'enter':\n this.addressPathClickHandler(e);\n break;\n }\n };\n BreadCrumbBar.prototype.removeEventListener = function () {\n this.keyboardModule.destroy();\n this.parent.off(pathChanged, this.onUpdatePath);\n this.parent.off(finalizeEnd, this.onUpdatePath);\n this.parent.off(refreshEnd, this.onUpdatePath);\n this.parent.off(openEnd, this.onUpdatePath);\n this.parent.off(pasteEnd, this.onPasteEnd);\n this.parent.off(createEnd, this.onCreateEnd);\n this.parent.off(renameEnd, this.onRenameEnd);\n this.parent.off(deleteEnd, this.onDeleteEnd);\n this.parent.off(splitterResize, this.onResize);\n this.parent.off(resizeEnd, this.onResize);\n this.parent.off(searchTextChange, this.onSearchTextChange);\n this.parent.off(dropInit, this.onDropInit);\n this.parent.off(layoutRefresh, this.onResize);\n this.parent.off(dropPath, this.onPathChange);\n };\n /* istanbul ignore next */\n BreadCrumbBar.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var liEle = args.target.closest('li');\n this.parent.dropPath = this.updatePath((liEle.children[0]));\n this.parent.dropData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n this.triggerFileOpen(this.parent.dropData);\n var treeNodeId = this.parent.pathId[this.parent.pathId.length - 1];\n this.parent.notify(updateTreeSelection, { module: 'treeview', selectedNode: treeNodeId });\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n BreadCrumbBar.prototype.getModuleName = function () {\n return 'breadcrumbbar';\n };\n BreadCrumbBar.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n /* istanbul ignore next */\n if (!isNullOrUndefined(this.subMenuObj)) {\n this.subMenuObj.destroy();\n }\n if (!isNullOrUndefined(this.searchObj)) {\n this.searchObj.destroy();\n }\n };\n BreadCrumbBar.prototype.onSearchTextChange = function (args) {\n this.searchObj.element.placeholder = (this.parent.searchSettings.placeholder != null) ? this.parent.searchSettings.placeholder : getLocaleText(this.parent, 'Search') + ' ' + getLocaleText(this.parent, args.cwd.name.toString());\n };\n return BreadCrumbBar;\n}());\n\n/**\n * ContextMenu module\n */\nvar ContextMenu$2 = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the ContextMenu module\n *\n * @param {IFileManager} parent - Specifies the parent element.\n * @hidden\n */\n function ContextMenu$$1(parent) {\n this.currentItems = [];\n this.currentElement = null;\n this.disabledItems = [];\n this.parent = parent;\n this.render();\n }\n ContextMenu$$1.prototype.render = function () {\n this.keyConfigs = {\n downarrow: 'downarrow',\n uparrow: 'uparrown'\n };\n this.contextMenu = new ContextMenu({\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n target: '#' + this.parent.element.id,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeItemRender: this.onBeforeItemRender.bind(this),\n select: this.onSelect.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this),\n cssClass: getCssClass(this.parent, ROOT_POPUP)\n });\n this.contextMenu.isStringTemplate = true;\n this.contextMenu.appendTo('#' + this.parent.element.id + CONTEXT_MENU_ID);\n this.addEventListener();\n };\n /* istanbul ignore next */\n ContextMenu$$1.prototype.onBeforeItemRender = function (args) {\n if (args.item.id === this.getMenuId('largeiconsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'LargeIcons' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', ICON_LARGE + ' ' + MENU_ICON);\n }\n if (args.item.id === this.getMenuId('detailsview')) {\n var iconSpan = createElement('span');\n var element = args.element;\n element.insertBefore(iconSpan, this.parent.view === 'Details' ? element.childNodes[1] : element.childNodes[0]);\n iconSpan.setAttribute('class', ICON_GRID + ' ' + MENU_ICON);\n }\n };\n ContextMenu$$1.prototype.onBeforeClose = function () {\n this.menuTarget = null;\n };\n /* istanbul ignore next */\n ContextMenu$$1.prototype.onBeforeOpen = function (args) {\n var _this = this;\n this.disabledItems = [];\n var selected = false;\n var uid;\n // eslint-disable-next-line\n var data;\n var treeFolder = false;\n var target = args.event.target;\n this.menuTarget = this.targetNodeElement = target;\n this.currentElement = args.element;\n if (target.classList.contains('e-spinner-pane')) {\n target = this.parent.navigationpaneModule.activeNode.getElementsByClassName(FULLROW)[0];\n this.menuTarget = this.targetNodeElement = target;\n }\n this.targetElement = this.parent.view === 'Details' ? closest(target, 'tr.e-row') : target;\n if (this.parent.enableVirtualization && (target.classList.contains('e-virtual-bottom') || target.classList.contains('e-virtualtable'))) {\n target = target.parentElement.closest(\"div\");\n }\n var view = this.getTargetView(target);\n this.updateActiveModule();\n /* istanbul ignore next */\n if (target.classList.contains(TREE_VIEW) || closest(target, 'th') ||\n (closest(target, '#' + this.parent.element.id + BREADCRUMBBAR_ID)) ||\n (closest(target, '#' + this.parent.element.id + TOOLBAR_ID))) {\n args.cancel = true;\n // eslint:disable-next-line\n }\n else if (!(this.parent.view === 'LargeIcons') && this.targetElement &&\n this.targetElement.classList.contains('e-emptyrow')) {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else if (closest(target, '.' + EMPTY)) {\n this.setLayoutItem(target);\n // eslint:disable-next-line\n }\n else if (!target.classList.contains(MENU_ITEM) &&\n !target.classList.contains(MENU_ICON) && !target.classList.contains(SUBMENU_ICON)) {\n /* istanbul ignore next */\n // eslint:disable-next-line\n if (this.parent.view === 'LargeIcons' && !isNullOrUndefined(closest(target, 'li')) && !closest(target, '#' + this.parent.element.id + TREE_ID)) {\n var eveArgs = { ctrlKey: true, shiftKey: true };\n if (!closest(target, 'li').classList.contains('e-active')) {\n this.parent.largeiconsviewModule.doSelection(target, eveArgs);\n }\n // eslint-disable-next-line\n data = this.parent.visitedData;\n selected = true;\n }\n else if (!isNullOrUndefined(closest(target, 'tr.e-row'))) {\n uid = this.targetElement.getAttribute('data-uid');\n // eslint-disable-next-line\n data = this.parent.detailsviewModule.gridObj.getRowObjectFromUID(uid).data;\n if (isNullOrUndefined(this.targetElement.getAttribute('aria-selected'))) {\n /* istanbul ignore next */\n this.parent.detailsviewModule.gridObj.selectRows([parseInt(this.targetElement.getAttribute('data-rowindex'), 10)]);\n }\n selected = true;\n /* istanbul ignore next */\n }\n else if (closest(target, '#' + this.parent.element.id + TREE_ID)) {\n uid = closest(target, 'li').getAttribute('data-uid');\n treeFolder = true;\n }\n /* istanbul ignore next */\n if (selected) {\n if (getValue('isFile', data) === true) {\n this.setFileItem();\n }\n else {\n this.setFolderItem(false);\n }\n /* istanbul ignore next */\n }\n else if (treeFolder) {\n this.setFolderItem(true);\n if (uid === this.parent.pathId[0]) {\n this.disabledItems.push('Delete', 'Rename', 'Cut', 'Copy');\n }\n /* istanbul ignore next */\n // eslint:disable-next-line\n }\n else if (view === 'TreeView' || view === 'GridView' || view === 'LargeIcon') {\n this.setLayoutItem(target);\n /* istanbul ignore next */\n }\n else {\n args.cancel = true;\n }\n }\n var pasteEle = select('#' + this.getMenuId('Paste'), this.contextMenu.element);\n if (!args.cancel && !this.parent.enablePaste &&\n pasteEle && !pasteEle.classList.contains('e-disabled')) {\n this.disabledItems.push('Paste');\n }\n if (args.cancel) {\n this.menuTarget = this.currentElement = null;\n return;\n }\n this.contextMenu.dataBind();\n var isSubMenu = false;\n if (target.classList.contains(MENU_ITEM) ||\n target.classList.contains(MENU_ICON) || target.classList.contains(SUBMENU_ICON)) {\n isSubMenu = true;\n }\n this.menuItemData = isSubMenu ? this.menuItemData : this.getMenuItemData();\n var eventArgs = {\n fileDetails: [this.menuItemData],\n element: args.element,\n target: target,\n items: isSubMenu ? args.items : this.contextMenu.items,\n menuModule: this.contextMenu,\n cancel: false,\n menuType: this.menuType,\n isSubMenu: isSubMenu\n };\n this.currentItems = eventArgs.items;\n this.parent.trigger('menuOpen', eventArgs, function (menuOpenArgs) {\n if (!isSubMenu) {\n _this.contextMenu.dataBind();\n _this.contextMenu.items = menuOpenArgs.items;\n _this.contextMenu.dataBind();\n }\n _this.enableItems(_this.disabledItems, false, true);\n args.cancel = menuOpenArgs.cancel;\n if (menuOpenArgs.cancel) {\n _this.menuTarget = _this.targetNodeElement = _this.currentElement = null;\n }\n });\n };\n ContextMenu$$1.prototype.updateActiveModule = function () {\n this.parent.activeModule = closest(this.menuTarget, '#' + this.parent.element.id + TREE_ID) ?\n 'navigationpane' : closest(this.menuTarget, '#' + this.parent.element.id + GRID_ID) ?\n 'detailsview' : closest(this.menuTarget, '#' + this.parent.element.id + LARGEICON_ID) ?\n 'largeiconsview' : this.parent.activeModule;\n };\n /* istanbul ignore next */\n /**\n *\n * @param {Element} target - specifies the target element.\n * @returns {string} -returns the target view.\n * @hidden\n */\n ContextMenu$$1.prototype.getTargetView = function (target) {\n return target.classList.contains(TREE_VIEW) ?\n 'TreeView' : target.classList.contains(GRID_VIEW) ?\n 'GridView' : target.classList.contains(ICON_VIEW) ?\n 'LargeIcon' : target.classList.contains(LARGE_ICONS) ?\n 'LargeIcon' : '';\n };\n ContextMenu$$1.prototype.getItemIndex = function (item) {\n var itemId = this.getMenuId(item);\n for (var i = 0; i < this.currentItems.length; i++) {\n if ((this.currentItems[i].id === itemId) || (this.currentItems[i].id === item)) {\n return i;\n }\n }\n return -1;\n };\n ContextMenu$$1.prototype.disableItem = function (items) {\n if (items.length !== 0) {\n this.disabledItems = this.disabledItems.concat(items);\n }\n };\n ContextMenu$$1.prototype.enableItems = function (items, enable, isUniqueId) {\n for (var i = 0; i < items.length; i++) {\n if (this.checkValidItem(items[i]) === 1) {\n this.contextMenu.enableItems([this.getMenuId(items[i])], enable, isUniqueId);\n }\n else if (this.checkValidItem(items[i]) === 2) {\n this.contextMenu.enableItems([items[i]], enable, isUniqueId);\n }\n }\n };\n ContextMenu$$1.prototype.setFolderItem = function (isTree) {\n this.menuType = 'folder';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.folder.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (isTree) {\n this.disabledItems.push('Open');\n }\n else if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename', 'Paste');\n }\n };\n ContextMenu$$1.prototype.setFileItem = function () {\n this.menuType = 'file';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.file.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (this.parent.selectedItems.length !== 1) {\n this.disabledItems.push('Rename');\n }\n };\n ContextMenu$$1.prototype.setLayoutItem = function (target) {\n this.menuType = 'layout';\n this.contextMenu.items = this.getItemData(this.parent.contextMenuSettings.layout.map(function (item) { return item.trim(); }));\n this.contextMenu.dataBind();\n if (!this.parent.allowMultiSelection || ((this.parent.view === 'LargeIcons' &&\n (closest(target, '#' + this.parent.element.id + LARGEICON_ID).getElementsByClassName(EMPTY).length !== 0))\n || (this.parent.view === 'Details' &&\n (closest(target, '#' + this.parent.element.id + GRID_ID).getElementsByClassName(EMPTY).length !== 0)))) {\n this.disabledItems.push('SelectAll');\n }\n if (this.parent.selectedNodes.length === 0) {\n this.disabledItems.push('Paste');\n }\n this.contextMenu.dataBind();\n };\n ContextMenu$$1.prototype.checkValidItem = function (nameEle) {\n if (!isNullOrUndefined(select('#' + this.getMenuId(nameEle), this.currentElement))) {\n return 1;\n }\n else if (!isNullOrUndefined(select('#' + nameEle, this.currentElement))) {\n return 2;\n }\n else {\n return -1;\n }\n };\n // eslint-disable-next-line\n ContextMenu$$1.prototype.getMenuItemData = function () {\n if (this.menuType === 'layout') {\n return getPathObject(this.parent);\n }\n else {\n // eslint-disable-next-line\n var args = { target: this.menuTarget };\n this.parent.notify(menuItemData, args);\n return this.parent.itemData[0];\n }\n };\n /* istanbul ignore next */\n ContextMenu$$1.prototype.onSelect = function (args) {\n var _this = this;\n if (isNullOrUndefined(args.item) || !args.item.id) {\n return;\n }\n var itemText = args.item.id.substr((this.parent.element.id + '_cm_').length);\n // eslint-disable-next-line\n var details;\n if (itemText === 'refresh' || itemText === 'newfolder' || itemText === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(selectedData, {});\n if (this.parent.activeModule === 'navigationpane' && itemText === 'open') {\n details = [this.menuItemData];\n }\n else {\n details = this.parent.itemData;\n }\n }\n var eventArgs = {\n cancel: false,\n element: args.element,\n fileDetails: details,\n item: args.item\n };\n this.parent.trigger('menuClick', eventArgs, function (menuClickArgs) {\n var sItems;\n if (!menuClickArgs.cancel) {\n // eslint:disable-next-line\n switch (itemText) {\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'paste':\n if (_this.menuType === 'folder') {\n if ((_this.parent.activeModule === 'largeiconsview') || (_this.parent.activeModule === 'detailsview')) {\n _this.parent.folderPath = getFullPath(_this.parent, _this.menuItemData, _this.parent.path);\n }\n else {\n _this.parent.folderPath = '';\n }\n }\n else {\n _this.parent.folderPath = '';\n }\n pasteHandler(_this.parent);\n break;\n case 'delete':\n for (var j = 0; j < details.length; j++) {\n if (!hasEditAccess(details[j])) {\n createDeniedDialog(_this.parent, details[j], permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n /* istanbul ignore next */\n case 'download':\n for (var i = 0; i < details.length; i++) {\n if (!hasDownloadAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], permissionDownload);\n return;\n }\n }\n if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.notify(downloadInit, {});\n }\n else if (_this.parent.selectedItems.length > 0) {\n Download(_this.parent, _this.parent.path, _this.parent.selectedItems);\n }\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], permissionEdit);\n }\n else {\n _this.parent.notify(renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'selectall':\n /* istanbul ignore next */\n _this.parent.notify(selectAllInit, {});\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'open':\n if (_this.parent.visitedItem) {\n _this.parent.notify(openInit, { target: _this.parent.visitedItem });\n }\n else if (_this.parent.activeModule === 'navigationpane') {\n _this.parent.navigationpaneModule.openFileOnContextMenuClick(closest(_this.targetNodeElement, 'li'));\n }\n break;\n case 'details':\n _this.parent.notify(detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n /* istanbul ignore next */\n case 'name':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'size':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'date':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'ascending':\n /* istanbul ignore next */\n // eslint-disable-next-line no-fallthrough\n case 'descending':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n case 'none':\n /* istanbul ignore next */\n sortbyClickHandler(_this.parent, args);\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'largeiconsview':\n updateLayout(_this.parent, 'LargeIcons');\n break;\n /* istanbul ignore next */\n // eslint:disable-next-line\n case 'detailsview':\n updateLayout(_this.parent, 'Details');\n break;\n }\n }\n });\n };\n ContextMenu$$1.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.contextMenu.cssClass = getCssClass(this.parent, ROOT_POPUP);\n break;\n }\n }\n };\n ContextMenu$$1.prototype.addEventListener = function () {\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.keyboardModule = new KeyboardEvents(this.contextMenu.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n ContextMenu$$1.prototype.removeEventListener = function () {\n this.parent.off(destroy, this.destroy);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.keyboardModule.destroy();\n };\n ContextMenu$$1.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'uparrow':\n case 'downarrow':\n e.preventDefault();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n ContextMenu$$1.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n ContextMenu$$1.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.contextMenu.destroy();\n };\n /* istanbul ignore next */\n ContextMenu$$1.prototype.getItemData = function (data) {\n var items = [];\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getMenuId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n switch (data[i]) {\n case '|':\n item = { separator: true };\n break;\n case 'Open':\n item = { id: itemId, text: itemText, iconCss: ICON_OPEN };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, iconCss: ICON_UPLOAD };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, iconCss: ICON_CUT };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, iconCss: ICON_COPY };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, iconCss: ICON_PASTE };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, iconCss: ICON_DELETE };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, iconCss: ICON_RENAME };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, iconCss: ICON_NEWFOLDER };\n break;\n case 'Details':\n item = { id: itemId, text: itemText, iconCss: ICON_DETAILS };\n break;\n case 'SortBy':\n item = {\n id: itemId, text: itemText, iconCss: ICON_SHORTBY,\n items: [\n {\n id: this.getMenuId('Name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? TB_OPTION_DOT : null\n },\n {\n id: this.getMenuId('Date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? TB_OPTION_DOT : null\n },\n { separator: true },\n {\n id: this.getMenuId('Ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('Descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? TB_OPTION_TICK : null\n },\n {\n id: this.getMenuId('None'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? TB_OPTION_TICK : null\n }\n ]\n };\n break;\n /* istanbul ignore next */\n case 'View':\n item = {\n id: itemId, text: itemText, iconCss: this.parent.view === 'Details' ? ICON_GRID : ICON_LARGE,\n items: [\n {\n id: this.getMenuId('largeiconsview'), text: getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? null : TB_OPTION_TICK\n },\n {\n id: this.getMenuId('detailsview'), text: getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? TB_OPTION_TICK : null\n }\n ]\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, iconCss: ICON_REFRESH };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, iconCss: ICON_SELECTALL };\n break;\n /* istanbul ignore next */\n case 'Download':\n item = { id: itemId, text: itemText, iconCss: ICON_DOWNLOAD };\n break;\n /* istanbul ignore next */\n default:\n item = { id: itemId, text: itemText };\n break;\n }\n items.push(item);\n }\n return items;\n };\n ContextMenu$$1.prototype.getMenuId = function (id) {\n return this.parent.element.id + '_cm_' + id.toLowerCase();\n };\n return ContextMenu$$1;\n}());\n\n/**\n * Specifies the default locale of FileManager component\n */\n// eslint-disable-next-line\nvar defaultLocale = {\n 'NewFolder': 'New folder',\n 'Upload': 'Upload',\n 'Delete': 'Delete',\n 'Rename': 'Rename',\n 'Download': 'Download',\n 'Cut': 'Cut',\n 'Copy': 'Copy',\n 'Paste': 'Paste',\n 'SortBy': 'Sort by',\n 'Refresh': 'Refresh',\n 'Item-Selection': 'item selected',\n 'Items-Selection': 'items selected',\n 'View': 'View',\n 'Details': 'Details',\n 'SelectAll': 'Select all',\n 'Open': 'Open',\n 'Tooltip-NewFolder': 'New folder',\n 'Tooltip-Upload': 'Upload',\n 'Tooltip-Delete': 'Delete',\n 'Tooltip-Rename': 'Rename',\n 'Tooltip-Download': 'Download',\n 'Tooltip-Cut': 'Cut',\n 'Tooltip-Copy': 'Copy',\n 'Tooltip-Paste': 'Paste',\n 'Tooltip-SortBy': 'Sort by',\n 'Tooltip-Refresh': 'Refresh',\n 'Tooltip-Selection': 'Clear selection',\n 'Tooltip-View': 'View',\n 'Tooltip-Details': 'Details',\n 'Tooltip-SelectAll': 'Select all',\n 'Name': 'Name',\n 'Size': 'Size',\n 'DateModified': 'Modified',\n 'DateCreated': 'Date created',\n 'Path': 'Path',\n 'Modified': 'Modified',\n 'Created': 'Created',\n 'Location': 'Location',\n 'Type': 'Type',\n 'Permission': 'Permission',\n 'Ascending': 'Ascending',\n 'Descending': 'Descending',\n 'None': 'None',\n 'View-LargeIcons': 'Large icons',\n 'View-Details': 'Details',\n 'Search': 'Search',\n 'Button-Ok': 'OK',\n 'Button-Cancel': 'Cancel',\n 'Button-Yes': 'Yes',\n 'Button-No': 'No',\n 'Button-Create': 'Create',\n 'Button-Save': 'Save',\n 'Header-NewFolder': 'Folder',\n 'Content-NewFolder': 'Enter your folder name',\n 'Header-Rename': 'Rename',\n 'Content-Rename': 'Enter your new name',\n 'Header-Rename-Confirmation': 'Rename Confirmation',\n 'Content-Rename-Confirmation': 'If you change a file name extension, the file might become unstable. ' +\n 'Are you sure you want to change it?',\n 'Header-Delete': 'Delete File',\n 'Content-Delete': 'Are you sure you want to delete this file?',\n 'Header-Folder-Delete': 'Delete Folder',\n 'Content-Folder-Delete': 'Are you sure you want to delete this folder?',\n 'Header-Multiple-Delete': 'Delete Multiple Items',\n 'Content-Multiple-Delete': 'Are you sure you want to delete these {0} items?',\n 'Header-Duplicate': 'File/Folder exists',\n 'Content-Duplicate': '{0} already exists. Do you want to rename and paste?',\n 'Header-Upload': 'Upload Files',\n 'Error': 'Error',\n 'Validation-Empty': 'The file or folder name cannot be empty.',\n 'Validation-Invalid': 'The file or folder name {0} contains invalid characters. Please use a different name. ' +\n // eslint-disable-next-line no-useless-escape\n 'Valid file or folder names cannot end with a dot or space, and cannot contain any of the following characters: \\\\/:*?\\\"<>|',\n 'Validation-NewFolder-Exists': 'A file or folder with the name {0} already exists.',\n 'Validation-Rename-Exists': 'Cannot rename {0} to {1}: destination already exists.',\n 'Folder-Empty': 'This folder is empty',\n 'File-Upload': 'Drag files here to upload',\n 'Search-Empty': 'No results found',\n 'Search-Key': 'Try with different keywords',\n 'Filter-Empty': 'No results found',\n 'Filter-Key': 'Try with different filter',\n 'Sub-Folder-Error': 'The destination folder is the subfolder of the source folder.',\n 'Same-Folder-Error': 'The destination folder is the same as the source folder.',\n 'Access-Denied': 'Access Denied',\n 'Access-Details': 'You don\"t have permission to access this folder.',\n 'Header-Retry': 'File Already Exists',\n 'Content-Retry': 'A file with this name already exists in this folder. What would you like to do?',\n 'Button-Keep-Both': 'Keep both',\n 'Button-Replace': 'Replace',\n 'Button-Skip': 'Skip',\n 'ApplyAll-Label': 'Do this for all current items',\n 'KB': 'KB',\n 'Access-Message': '{0} is not accessible. You need permission to perform the {1} action.',\n 'Network-Error': 'NetworkError: Failed to send on XMLHTTPRequest: Failed to load',\n 'Server-Error': 'ServerError: Invalid response from'\n};\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * The FileManager component allows users to access and manage the file system through the web browser. It can performs the\n * functionalities like add, rename, search, sort, upload and delete files or folders. And also it\n * provides an easy way of dynamic injectable modules like toolbar, navigationpane, detailsview, largeiconsview.\n * ```html\n *
\n * ```\n * ```typescript,\n * let feObj: FileManager = new FileManager();\n * feObj.appendTo('#file');\n * ```\n */\nvar FileManager = /** @__PURE__ @class */ (function (_super) {\n __extends$8(FileManager, _super);\n function FileManager(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.filterData = null;\n _this.selectedNodes = [];\n _this.duplicateItems = [];\n // eslint-disable-next-line\n _this.duplicateRecords = [];\n _this.previousPath = [];\n _this.nextPath = [];\n _this.isLayoutChange = false;\n _this.layoutSelectedItems = [];\n _this.renamedId = null;\n _this.uploadItem = [];\n _this.deleteRecords = [];\n _this.isFile = false;\n _this.isCut = false;\n _this.isSearchCut = false;\n _this.isSearchDrag = false;\n _this.isPasteError = false;\n _this.folderPath = '';\n _this.isSameAction = false;\n _this.isFiltered = false;\n // Specifies whether the sort by option is clicked or not.\n _this.isSortByClicked = false;\n _this.enablePaste = false;\n _this.persistData = false;\n _this.retryArgs = [];\n _this.isOpened = false;\n _this.isRetryOpened = false;\n _this.isPathDrag = false;\n // eslint-disable-next-line\n _this.searchedItems = [];\n _this.retryFiles = [];\n _this.isApplySame = false;\n // eslint-disable-next-line\n _this.dragData = [];\n _this.dragNodes = [];\n _this.dragPath = '';\n _this.dropPath = '';\n _this.isDragDrop = false;\n _this.treeExpandTimer = null;\n _this.dragCursorPosition = { left: 44, top: 18 };\n _this.isDropEnd = false;\n _this.dragCount = 0;\n // eslint-disable-next-line\n _this.droppedObjects = [];\n _this.uploadingCount = 0;\n _this.uploadedCount = 0;\n //Specifies whether the operating system is MAC or not \n _this.isMac = false;\n FileManager_1.Inject(BreadCrumbBar, LargeIconsView, ContextMenu$2);\n return _this;\n }\n FileManager_1 = FileManager;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n FileManager.prototype.getModuleName = function () {\n return 'filemanager';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n FileManager.prototype.preRender = function () {\n if (isNullOrUndefined(this.element.id) || this.element.id === '') {\n this.element.setAttribute('id', getUniqueID('filemanager'));\n }\n this.ensurePath();\n this.feParent = [];\n this.feFiles = [];\n setStyleAttribute(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.isDevice = Browser.isDevice;\n this.isMobile = this.checkMobile();\n if (this.isMobile) {\n this.setProperties({ navigationPaneSettings: { visible: false } }, true);\n }\n var ele = closest(this.element, '.e-bigger');\n this.isBigger = ele ? true : false;\n this.activeModule = (this.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n createSpinner({ target: this.element }, createElement);\n this.addWrapper();\n this.keyConfigs = {\n altN: 'alt+n',\n f5: 'f5',\n ctrlShift1: 'ctrl+shift+1',\n ctrlShift2: 'ctrl+shift+2',\n ctrlU: 'ctrl+u'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string} - returns the persisted data.\n * @hidden\n */\n FileManager.prototype.getPersistData = function () {\n var keyEntity = ['view', 'path', 'selectedItems'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns module declaration.\n * @hidden\n */\n FileManager.prototype.requiredModules = function () {\n var modules = [];\n modules.push({\n member: 'breadcrumbbar',\n args: [this]\n });\n modules.push({\n member: 'largeiconsview',\n args: [this]\n });\n if (this.toolbarSettings.visible) {\n modules.push({\n member: 'toolbar',\n args: [this]\n });\n }\n if (this.navigationPaneSettings.visible) {\n modules.push({\n member: 'navigationpane',\n args: [this]\n });\n }\n if (this.view) {\n modules.push({\n member: 'detailsview',\n args: [this]\n });\n }\n if (this.contextMenuSettings.visible && !this.isDevice) {\n modules.push({\n member: 'contextmenu',\n args: [this]\n });\n }\n if (this.enableVirtualization) {\n modules.push({\n member: 'virtualization',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n FileManager.prototype.render = function () {\n this.initialize();\n var slItems = isNullOrUndefined(this.selectedItems) ? [] :\n this.allowMultiSelection ? this.selectedItems : this.selectedItems.slice(this.selectedItems.length - 1);\n this.setProperties({ selectedItems: slItems }, true);\n this.fileView = this.view;\n this.isMac = navigator.platform.toUpperCase().indexOf('MAC') >= 0;\n this.setRtl(this.enableRtl);\n this.addEventListeners();\n read(this, (this.path !== this.originalPath) ? initialEnd : finalizeEnd, this.path);\n this.adjustHeight();\n if (isNullOrUndefined(this.navigationpaneModule)) {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n var bar = select('.' + SPLIT_BAR, this.element);\n bar.classList.add(DISPLAY_NONE);\n }\n this.wireEvents();\n this.renderComplete();\n };\n FileManager.prototype.ensurePath = function () {\n var currentPath = this.path;\n if (isNullOrUndefined(currentPath)) {\n currentPath = '/';\n }\n if (currentPath.lastIndexOf('/') !== (currentPath.length - 1)) {\n currentPath = currentPath + '/';\n }\n this.originalPath = currentPath;\n var paths = currentPath.split('/');\n this.setProperties({ path: paths[0] + '/' }, true);\n this.pathNames = [];\n this.pathId = ['fe_tree'];\n this.itemData = [];\n };\n FileManager.prototype.initialize = function () {\n if (this.isMobile) {\n addClass([this.element], MOBILE);\n }\n if (this.allowMultiSelection) {\n addClass([this.element], CHECK_SELECT);\n }\n this.addCssClass(null, this.cssClass);\n this.renderFileUpload();\n };\n FileManager.prototype.addWrapper = function () {\n var headerWrap = this.createElement('div', { id: this.element.id + TOOLBAR_ID });\n this.element.appendChild(headerWrap);\n var layoutWrap = this.createElement('div', {\n id: this.element.id + LAYOUT_ID, className: LAYOUT\n });\n this.element.appendChild(layoutWrap);\n var navigationWrap = this.createElement('div', {\n id: this.element.id + NAVIGATION_ID, className: NAVIGATION\n });\n var treeWrap = this.createElement('div', {\n id: this.element.id + TREE_ID\n });\n navigationWrap.appendChild(treeWrap);\n var contentWrap = this.createElement('div', {\n id: this.element.id + CONTENT_ID, className: LAYOUT_CONTENT\n });\n this.breadCrumbBarNavigation = this.createElement('div', {\n id: this.element.id + BREADCRUMBBAR_ID,\n className: BREADCRUMBS\n });\n contentWrap.appendChild(this.breadCrumbBarNavigation);\n var gridWrap = this.createElement('div', {\n id: this.element.id + GRID_ID\n });\n contentWrap.appendChild(gridWrap);\n var largeiconWrap = this.createElement('div', {\n id: this.element.id + LARGEICON_ID,\n className: LARGE_ICONS, attrs: { 'role': 'group' }\n });\n contentWrap.appendChild(largeiconWrap);\n var overlay = this.createElement('span', { className: OVERLAY });\n contentWrap.appendChild(overlay);\n var paneSettings;\n if (!this.enableRtl) {\n layoutWrap.appendChild(navigationWrap);\n layoutWrap.appendChild(contentWrap);\n paneSettings = [\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n },\n { size: '75%', min: '270px' }\n ];\n }\n else {\n layoutWrap.appendChild(contentWrap);\n layoutWrap.appendChild(navigationWrap);\n paneSettings = [\n { size: '75%', min: '270px' },\n {\n size: '25%', min: this.navigationPaneSettings.minWidth.toString(),\n max: this.navigationPaneSettings.maxWidth.toString()\n }\n ];\n }\n this.splitterObj = new Splitter({\n paneSettings: paneSettings,\n width: '100%',\n enableRtl: false,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n resizing: this.splitterResize.bind(this)\n });\n this.splitterObj.isStringTemplate = true;\n this.splitterObj.appendTo(layoutWrap);\n var dialogWrap = this.createElement('div', { id: this.element.id + DIALOG_ID });\n this.element.appendChild(dialogWrap);\n var menuWrap = this.createElement('ul', { id: this.element.id + CONTEXT_MENU_ID });\n this.element.appendChild(menuWrap);\n var dialogImgWrap = this.createElement('div', { id: this.element.id + IMG_DIALOG_ID });\n this.element.appendChild(dialogImgWrap);\n var extnDialogWrap = this.createElement('div', { id: this.element.id + EXTN_DIALOG_ID });\n this.element.appendChild(extnDialogWrap);\n var uploadDialogWrap = this.createElement('div', { id: this.element.id + UPLOAD_DIALOG_ID });\n this.element.appendChild(uploadDialogWrap);\n };\n FileManager.prototype.adjustHeight = function () {\n var toolbar = select('#' + this.element.id + TOOLBAR_ID, this.element);\n var toolBarHeight = toolbar ? toolbar.offsetHeight : 0;\n if (this.splitterObj) {\n this.splitterObj.height = (this.element.clientHeight - toolBarHeight).toString();\n this.splitterObj.dataBind();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.splitterResize = function () {\n this.notify(splitterResize, {});\n };\n FileManager.prototype.splitterAdjust = function () {\n var bar = select('.' + SPLIT_BAR, this.element);\n if (this.navigationPaneSettings.visible) {\n this.splitterObj.expand(this.enableRtl ? 1 : 0);\n bar.classList.remove(DISPLAY_NONE);\n }\n else {\n this.splitterObj.collapse(this.enableRtl ? 1 : 0);\n bar.classList.add(DISPLAY_NONE);\n }\n };\n FileManager.prototype.addCssClass = function (oldOne, newOne) {\n if (!isNullOrUndefined(oldOne) && oldOne !== '') {\n removeClass([this.element], oldOne.split(' '));\n }\n if (!isNullOrUndefined(newOne) && newOne !== '') {\n addClass([this.element], newOne.split(' '));\n }\n };\n FileManager.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n FileManager.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n FileManager.prototype.onContextMenu = function (e) {\n e.preventDefault();\n };\n FileManager.prototype.checkMobile = function () {\n return (/iphone|ipod|android|blackberry|opera|mini|windows\\sce|palm|smartphone|iemobile/i.test(Browser.userAgent.toLowerCase())\n && /mobile/i.test(Browser.userAgent.toLowerCase()));\n };\n FileManager.prototype.renderFileUpload = function () {\n var id = this.element.id + UPLOAD_ID;\n var uploadEle = this.createElement('input', { id: id, attrs: { name: 'uploadFiles', type: 'file' } });\n this.element.appendChild(uploadEle);\n this.uploadDialogObj = new Dialog({\n header: getLocaleText(this, 'Header-Upload'),\n content: uploadEle,\n animationSettings: { effect: 'None' },\n showCloseIcon: true,\n closeOnEscape: true,\n visible: false,\n isModal: true,\n width: '350px',\n target: this.popupTarget ? this.popupTarget : '#' + this.element.id,\n cssClass: getCssClass(this, this.isMobile ? MOB_POPUP : ROOT_POPUP),\n locale: this.locale,\n allowDragging: true,\n position: { X: 'center', Y: 'center' },\n enableRtl: this.enableRtl,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n open: this.onOpen.bind(this),\n close: this.onClose.bind(this),\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n });\n this.uploadDialogObj.appendTo('#' + this.element.id + UPLOAD_DIALOG_ID);\n this.renderUploadBox();\n };\n FileManager.prototype.renderUploadBox = function () {\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n this.uploadObj = new Uploader({\n dropArea: select('#' + this.element.id + CONTENT_ID, this.element),\n asyncSettings: {\n saveUrl: uploadUrl,\n removeUrl: uploadUrl\n },\n locale: this.locale,\n enableRtl: this.enableRtl,\n uploading: this.onUploading.bind(this),\n removing: this.onRemoving.bind(this),\n canceling: this.onCancel.bind(this),\n clearing: this.onClearing.bind(this),\n selected: this.onSelected.bind(this),\n success: this.onUploadSuccess.bind(this),\n failure: this.onUploadFailure.bind(this),\n autoUpload: this.uploadSettings.autoUpload,\n minFileSize: this.uploadSettings.minFileSize,\n maxFileSize: this.uploadSettings.maxFileSize,\n allowedExtensions: this.uploadSettings.allowedExtensions,\n directoryUpload: this.uploadSettings.directoryUpload,\n fileListRendering: this.onFileListRender.bind(this)\n });\n this.uploadObj.appendTo('#' + this.element.id + UPLOAD_ID);\n };\n FileManager.prototype.onFileListRender = function (args) {\n this.trigger('uploadListCreate', args);\n };\n FileManager.prototype.updateUploader = function () {\n this.uploadObj.autoUpload = this.uploadSettings.autoUpload;\n this.uploadObj.minFileSize = this.uploadSettings.minFileSize;\n this.uploadObj.maxFileSize = this.uploadSettings.maxFileSize;\n this.uploadObj.allowedExtensions = this.uploadSettings.allowedExtensions;\n this.uploadObj.directoryUpload = this.uploadSettings.directoryUpload;\n this.uploadObj.dataBind();\n };\n FileManager.prototype.onBeforeOpen = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupOpen', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onBeforeClose = function (args) {\n var eventArgs = {\n cancel: args.cancel, popupName: 'Upload', popupModule: this.uploadDialogObj\n };\n this.trigger('beforePopupClose', eventArgs, function (eventargs) {\n args.cancel = eventargs.cancel;\n });\n };\n FileManager.prototype.onOpen = function () {\n this.isOpened = true;\n this.uploadDialogObj.element.focus();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupOpen', args);\n };\n FileManager.prototype.onClose = function () {\n this.isOpened = false;\n this.uploadObj.clearAll();\n var args = {\n popupModule: this.uploadDialogObj, popupName: 'Upload',\n element: this.uploadDialogObj.element\n };\n this.trigger('popupClose', args);\n };\n /* istanbul ignore next */\n FileManager.prototype.onUploading = function (args) {\n var action = 'save';\n if ((this.retryArgs.length !== 0)) {\n for (var i = 0; i < this.retryArgs.length; i++) {\n if (args.fileData.name === this.retryArgs[i].file.name) {\n action = this.retryArgs[i].action;\n this.retryArgs.splice(i, 1);\n i = this.retryArgs.length;\n }\n }\n }\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': action }, { 'data': data }, { 'filename': args.fileData.name }];\n var uploadUrl = this.ajaxSettings.uploadUrl ? this.ajaxSettings.uploadUrl : this.ajaxSettings.url;\n // eslint-disable-next-line\n var ajaxSettings = {\n url: uploadUrl,\n type: 'POST',\n mode: true,\n dataType: null,\n contentType: null,\n data: JSON.stringify(args.customFormData),\n onSuccess: null,\n onFailure: null,\n beforeSend: null\n };\n this.uploadEventArgs = { action: 'Upload', ajaxSettings: ajaxSettings, cancel: false };\n this.trigger('beforeSend', this.uploadEventArgs, function (uploadEventArgs) {\n args.customFormData = JSON.parse(getValue('data', uploadEventArgs.ajaxSettings));\n args.cancel = uploadEventArgs.cancel;\n // eslint-disable-next-line\n var eventArgs = {\n cancel: false,\n httpRequest: args.currentRequest\n };\n if (typeof getValue('beforeSend', uploadEventArgs.ajaxSettings) === 'function') {\n getValue('beforeSend', uploadEventArgs.ajaxSettings)(eventArgs);\n if (getValue('cancel', eventArgs)) {\n args.cancel = getValue('cancel', eventArgs);\n }\n }\n });\n };\n FileManager.prototype.onRemoving = function () {\n this.onFileUploadSuccess({ count: 1 });\n if (this.uploadObj.getFilesData().length === 1) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onCancel = function (args) {\n var data = JSON.stringify(getValue(this.pathId[this.pathId.length - 1], this.feParent));\n args.customFormData = [{ 'path': this.path }, { 'action': 'remove' }, { 'data': data }];\n };\n /* istanbul ignore next */\n FileManager.prototype.onClearing = function () {\n if (this.isOpened) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.onSelected = function (args) {\n if (args.filesData.length === 0) {\n return;\n }\n this.uploadingCount = args.filesData.length;\n this.uploadedCount = 0;\n // eslint-disable-next-line\n var details = getPathObject(this);\n if (!hasUploadAccess(details)) {\n args.cancel = true;\n createDeniedDialog(this, details, permissionUpload);\n return;\n }\n this.uploadDialogObj.show();\n };\n // eslint-disable-next-line\n FileManager.prototype.onFileUploadSuccess = function (args) {\n this.uploadedCount = this.uploadedCount + args.count;\n if (this.uploadSettings.autoClose && (this.uploadingCount === this.uploadedCount)) {\n this.uploadDialogObj.hide();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadSuccess = function (files) {\n var args = { action: 'Upload', result: files };\n this.trigger('success', args);\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n read(this, pathChanged, this.path);\n this.onFileUploadSuccess({ count: 1 });\n if (typeof getValue('onSuccess', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onSuccess', this.uploadEventArgs.ajaxSettings)();\n }\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n FileManager.prototype.onUploadFailure = function (files) {\n // eslint-disable-next-line\n var response = getValue('response', files);\n var statusText = getValue('statusText', response);\n if (statusText !== '') {\n setValue('statusText', statusText, files);\n }\n var args = { action: 'Upload', error: files };\n this.trigger('failure', args);\n if (getValue('statusCode', response) === 400) {\n this.retryFiles.push(getValue('file', files));\n if (!this.isRetryOpened) {\n createExtDialog(this, 'UploadRetry');\n }\n }\n if (typeof getValue('onFailure', this.uploadEventArgs.ajaxSettings) === 'function') {\n getValue('onFailure', this.uploadEventArgs.ajaxSettings)();\n }\n };\n FileManager.prototype.onInitialEnd = function () {\n setNextPath(this, this.path);\n };\n FileManager.prototype.addEventListeners = function () {\n this.on(beforeRequest, this.showSpinner, this);\n this.on(afterRequest, this.hideSpinner, this);\n this.on(initialEnd, this.onInitialEnd, this);\n this.on(detailsInit, this.onDetailsInit, this);\n this.on(skipUpload, this.onFileUploadSuccess, this);\n EventHandler.add(this.element, 'contextmenu', this.onContextMenu, this);\n };\n FileManager.prototype.removeEventListeners = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(beforeRequest, this.showSpinner);\n this.off(afterRequest, this.hideSpinner);\n this.off(initialEnd, this.onInitialEnd);\n this.off(detailsInit, this.onDetailsInit);\n this.off(skipUpload, this.onFileUploadSuccess);\n EventHandler.remove(this.element, 'contextmenu', this.onContextMenu);\n };\n FileManager.prototype.onDetailsInit = function () {\n if (isNullOrUndefined(this.activeModule)) {\n this.itemData = [getValue(this.pathId[this.pathId.length - 1], this.feParent)];\n }\n };\n FileManager.prototype.resizeHandler = function () {\n this.adjustHeight();\n this.notify(resizeEnd, {});\n };\n FileManager.prototype.keyActionHandler = function (e) {\n var uploadEle;\n switch (e.action) {\n case 'altN':\n e.preventDefault();\n this.itemData = [getPathObject(this)];\n if (!hasContentAccess(this.itemData[0])) {\n createDeniedDialog(this, this.itemData[0], permissionEditContents);\n }\n else {\n createDialog(this, 'NewFolder');\n }\n break;\n case 'f5':\n e.preventDefault();\n refresh(this);\n break;\n /* istanbul ignore next */\n case 'ctrlShift1':\n e.preventDefault();\n this.fileView = 'Details';\n this.setProperties({ view: 'Details' }, true);\n showSpinner(this.element);\n updateLayout(this, 'Details');\n break;\n /* istanbul ignore next */\n case 'ctrlShift2':\n e.preventDefault();\n this.fileView = 'LargeIcons';\n this.setProperties({ view: 'LargeIcons' }, true);\n showSpinner(this.element);\n updateLayout(this, 'LargeIcons');\n break;\n case 'ctrlU':\n e.preventDefault();\n uploadEle = select('#' + this.element.id + UPLOAD_ID, this.element);\n uploadEle.click();\n break;\n }\n };\n FileManager.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.resizeHandler, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n FileManager.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resizeHandler);\n this.keyboardModule.destroy();\n };\n FileManager.prototype.setPath = function () {\n this.setProperties({ selectedItems: [] }, true);\n this.ensurePath();\n this.notify(clearPathInit, { selectedNode: this.pathId[0] });\n read(this, (this.path !== this.originalPath) ? initialEnd : finalizeEnd, this.path);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {FileManager} newProp\n * @param {FileManager} oldProp\n * @returns void\n * @private\n */\n /* istanbul ignore next */\n // eslint:disable-next-line\n FileManager.prototype.onPropertyChanged = function (newProp, oldProp) {\n var height;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'ajaxSettings':\n this.ajaxSettingSetModel(newProp);\n break;\n case 'allowDragAndDrop':\n this.allowDragAndDrop = newProp.allowDragAndDrop;\n this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'allowMultiSelection':\n if (this.allowMultiSelection) {\n addClass([this.element], CHECK_SELECT);\n }\n else {\n if (this.selectedItems.length > 1) {\n this.setProperties({ selectedItems: this.selectedItems.slice(this.selectedItems.length - 1) }, true);\n }\n removeClass([this.element], CHECK_SELECT);\n }\n this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'cssClass':\n this.addCssClass(oldProp.cssClass, newProp.cssClass);\n this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'detailsViewSettings':\n this.notify(modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'enableRtl':\n this.enableRtl = newProp.enableRtl;\n this.refresh();\n break;\n case 'rootAliasName':\n this.rootAliasName = newProp.rootAliasName;\n this.refresh();\n break;\n case 'height':\n height = !isNullOrUndefined(newProp.height) ? formatUnit(newProp.height) : newProp.height;\n setStyleAttribute(this.element, { 'height': height });\n this.adjustHeight();\n this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'locale':\n if (!isNullOrUndefined(newProp.enableRtl)) {\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n }\n this.localeSetModelOption(newProp);\n break;\n case 'navigationPaneSettings':\n this.splitterAdjust();\n this.notify(modelChanged, { module: 'navigationpane', newProp: newProp, oldProp: oldProp });\n break;\n case 'path':\n this.setPath();\n break;\n case 'searchSettings':\n if (!isNullOrUndefined(newProp.searchSettings.allowSearchOnTyping)) {\n this.setProperties({ searchSettings: { allowSearchOnTyping: newProp.searchSettings.allowSearchOnTyping } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.ignoreCase)) {\n this.setProperties({ searchSettings: { ignoreCase: newProp.searchSettings.ignoreCase } }, true);\n }\n if (isNullOrUndefined(newProp.searchSettings.filterType)) {\n this.setProperties({ searchSettings: { filterType: newProp.searchSettings.filterType } }, true);\n }\n this.notify(modelChanged, { module: 'breadcrumbbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'selectedItems':\n if (this.view === 'Details') {\n this.notify(modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (this.view === 'LargeIcons') {\n this.notify(modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'showFileExtension':\n this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showHiddenItems':\n this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'showThumbnail':\n this.notify(modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n break;\n case 'toolbarSettings':\n this.adjustHeight();\n this.notify(modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n break;\n case 'uploadSettings':\n this.updateUploader();\n break;\n case 'view':\n if (newProp.view === 'Details') {\n this.notify(modelChanged, { module: 'detailsview', newProp: newProp, oldProp: oldProp });\n }\n else if (newProp.view === 'LargeIcons') {\n this.notify(modelChanged, { module: 'largeiconsview', newProp: newProp, oldProp: oldProp });\n }\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': !isNullOrUndefined(newProp.width) ? formatUnit(newProp.width) : newProp.width });\n this.notify(modelChanged, { module: 'common', newProp: newProp, oldProp: oldProp });\n break;\n case 'sortOrder':\n refresh(this);\n this.notify(sortByChange, {});\n break;\n case 'sortBy':\n refresh(this);\n this.notify(sortByChange, {});\n if (this.view === 'Details') {\n this.notify(sortColumn, {});\n }\n break;\n case 'popupTarget':\n if (this.uploadDialogObj) {\n this.uploadDialogObj.target = newProp.popupTarget;\n }\n if (this.dialogObj) {\n this.dialogObj.target = newProp.popupTarget;\n }\n if (this.extDialogObj) {\n this.extDialogObj.target = newProp.popupTarget;\n }\n if (this.viewerObj) {\n this.viewerObj.target = newProp.popupTarget;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n FileManager.prototype.ajaxSettingSetModel = function (newProp) {\n if (!isNullOrUndefined(newProp.ajaxSettings.url)) {\n this.setProperties({ ajaxSettings: { url: newProp.ajaxSettings.url } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.uploadUrl)) {\n this.setProperties({ ajaxSettings: { uploadUrl: newProp.ajaxSettings.uploadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.downloadUrl)) {\n this.setProperties({ ajaxSettings: { downloadUrl: newProp.ajaxSettings.downloadUrl } }, true);\n }\n if (!isNullOrUndefined(newProp.ajaxSettings.getImageUrl)) {\n this.setProperties({ ajaxSettings: { getImageUrl: newProp.ajaxSettings.getImageUrl } }, true);\n }\n this.setProperties({ path: '/' }, true);\n this.setProperties({ selectedItems: [] }, true);\n _super.prototype.refresh.call(this);\n };\n /* istanbul ignore next */\n FileManager.prototype.localeSetModelOption = function (newProp) {\n this.uploadObj.locale = newProp.locale;\n _super.prototype.refresh.call(this);\n };\n /**\n * Triggers when the component is destroyed.\n *\n * @returns {void}\n */\n FileManager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.refreshing) {\n this.notify(destroy, {});\n }\n this.uploadObj.destroy();\n this.uploadObj = null;\n this.uploadDialogObj.destroy();\n this.uploadDialogObj = null;\n this.splitterObj.destroy();\n this.splitterObj = null;\n if (this.dialogObj) {\n this.dialogObj.destroy();\n this.dialogObj = null;\n }\n if (this.viewerObj) {\n this.viewerObj.destroy();\n this.viewerObj = null;\n }\n if (this.extDialogObj) {\n this.extDialogObj.destroy();\n this.extDialogObj = null;\n }\n this.element.removeAttribute('style');\n this.element.removeAttribute('tabindex');\n this.removeEventListeners();\n this.unWireEvents();\n this.addCssClass(this.cssClass, null);\n removeClass([this.element], [RTL, MOBILE, CHECK_SELECT]);\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Creates a new folder in file manager.\n *\n * @param {string} name – Specifies the name of new folder in current path.\n * If it is not specified, then the default new folder dialog will be opened.\n * @returns {void}\n */\n FileManager.prototype.createFolder = function (name) {\n this.notify(methodCall, { action: 'createFolder' });\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n if (name) {\n if (/[/\\\\|*?\"<>:]/.test(name)) {\n var result = {\n files: null,\n error: {\n code: '402',\n message: getLocaleText(this, 'Validation-Invalid').replace('{0}', '\"' + name + '\"'),\n fileExists: null\n }\n };\n createDialog(this, 'Error', result);\n }\n else {\n if (!hasContentAccess(details[0])) {\n createDeniedDialog(this, details[0], permissionEditContents);\n }\n else {\n createFolder(this, name);\n }\n }\n }\n else {\n createNewFolder(this);\n }\n };\n /**\n * Deletes the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to delete the nested level folders or\n * files, then specify the filter path along with name of the folders or files when performing the search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then delete confirmation dialog will be opened for selected item.\n *\n * @returns {void}\n */\n FileManager.prototype.deleteFiles = function (ids) {\n this.notify(methodCall, { action: 'deleteFiles', ids: ids });\n };\n /**\n * Disables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableToolbarItems = function (items) {\n if (!isNullOrUndefined(items)) {\n this.toolbarModule.enableItems(items, false);\n }\n };\n /**\n * Downloads the folders or files from the given unique identifiers.\n *\n * @param {string} ids - Specifies the name of folders or files in current path. If you want to download the nested level folders\n * or files, then specify the filter path along with name of the folders or files when performing search or custom filtering.\n * For ID based file provider, specify the unique identifier of folders or files.\n * If it is not specified, then the selected items will be downloaded.\n *\n * @returns {void}\n */\n FileManager.prototype.downloadFiles = function (ids) {\n this.notify(methodCall, { action: 'downloadFiles', ids: ids });\n };\n /**\n * Enables the specified toolbar items of the file manager.\n *\n * @param {string[]} items - Specifies an array of items to be enabled.\n * @returns {void}\n */\n FileManager.prototype.enableToolbarItems = function (items) {\n if (!isNullOrUndefined(items)) {\n this.toolbarModule.enableItems(items, true);\n }\n };\n /**\n * Disables the specified context menu items in file manager. This method is used only in the menuOpen event.\n *\n * @param {string[]} items - Specifies an array of items to be disabled.\n * @returns {void}\n */\n FileManager.prototype.disableMenuItems = function (items) {\n if (!isNullOrUndefined(items) && !isNullOrUndefined(this.contextmenuModule.contextMenu)) {\n this.contextmenuModule.disableItem(items);\n }\n };\n /**\n * Returns the index position of given current context menu item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns menu item index.\n */\n FileManager.prototype.getMenuItemIndex = function (item) {\n if (this.contextmenuModule) {\n return this.contextmenuModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Returns the index position of given toolbar item in file manager.\n *\n * @param {string} item - Specifies an item to get the index position.\n * @returns {number} - returns toolbar item index.\n */\n FileManager.prototype.getToolbarItemIndex = function (item) {\n if (this.toolbarModule) {\n return this.toolbarModule.getItemIndex(item);\n }\n else {\n return -1;\n }\n };\n /**\n * Display the custom filtering files in file manager.\n *\n * @param {Object} filterData - Specifies the custom filter details along with custom file action name,\n * which needs to be sent to the server side. If you do not specify the details, then default action name will be `filter`.\n *\n * @returns {void}\n */\n // eslint-disable-next-line\n FileManager.prototype.filterFiles = function (filterData) {\n this.filterData = filterData ? filterData : null;\n this.setProperties({ selectedItems: [] }, true);\n this.notify(selectionChanged, {});\n this.isFiltered = true;\n if (this.breadcrumbbarModule.searchObj.element.value !== '') {\n this.breadcrumbbarModule.searchObj.element.value = '';\n }\n filter(this, filterEnd);\n };\n /**\n * Gets the details of the selected files in the file manager.\n *\n * @returns {Object[]} - returns selected files.\n */\n // eslint-disable-next-line\n FileManager.prototype.getSelectedFiles = function () {\n this.notify(updateSelectionData, {});\n return this.itemData;\n };\n /**\n * Opens the corresponding file or folder from the given unique identifier.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to open the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n *\n * @returns {void}\n */\n FileManager.prototype.openFile = function (id) {\n this.notify(methodCall, { action: 'openFile', id: id });\n };\n /**\n * Refreshes the folder files of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshFiles = function () {\n refresh(this);\n };\n /**\n * Refreshes the layout of the file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.refreshLayout = function () {\n this.adjustHeight();\n this.notify(layoutRefresh, {});\n };\n /**\n * Selects the entire folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.selectAll = function () {\n this.notify(methodCall, { action: 'selectAll' });\n };\n /**\n * Deselects the currently selected folders and files in current path.\n *\n * @returns {void}\n */\n FileManager.prototype.clearSelection = function () {\n this.notify(methodCall, { action: 'clearSelection' });\n };\n /**\n * Renames the file or folder with given new name in file manager.\n *\n * @param {string} id - Specifies the name of folder or file in current path. If you want to rename the nested level folder or\n * file, then specify the filter path along with name of the folder or file when performing search or custom filtering. For ID based\n * file provider, specify the unique identifier of folder or file.\n * If it is not specified, then rename dialog will be opened for selected item.\n *\n * @param {string} name – Specifies the new name of the file or folder in current path. If it is not specified, then rename dialog\n * will be opened for given identifier.\n *\n * @returns {void}\n */\n FileManager.prototype.renameFile = function (id, name) {\n this.notify(methodCall, { action: 'renameFile', id: id, newName: name });\n };\n /**\n * Opens the upload dialog in file manager.\n *\n * @returns {void}\n */\n FileManager.prototype.uploadFiles = function () {\n // eslint-disable-next-line\n var details = [getPathObject(this)];\n this.itemData = details;\n uploadItem(this);\n };\n /**\n * Specifies the direction of FileManager\n *\n * @param {boolean} rtl - specifies rtl parameter.\n * @returns {void}\n */\n FileManager.prototype.setRtl = function (rtl) {\n if (rtl) {\n this.addCssClass(null, RTL);\n }\n else {\n this.addCssClass(RTL, null);\n }\n if (this.uploadObj) {\n this.uploadDialogObj.enableRtl = rtl;\n this.uploadObj.enableRtl = rtl;\n }\n };\n var FileManager_1;\n __decorate$8([\n Complex({}, AjaxSettings)\n ], FileManager.prototype, \"ajaxSettings\", void 0);\n __decorate$8([\n Property(false)\n ], FileManager.prototype, \"allowDragAndDrop\", void 0);\n __decorate$8([\n Property(true)\n ], FileManager.prototype, \"allowMultiSelection\", void 0);\n __decorate$8([\n Complex({}, ContextMenuSettings)\n ], FileManager.prototype, \"contextMenuSettings\", void 0);\n __decorate$8([\n Property('')\n ], FileManager.prototype, \"cssClass\", void 0);\n __decorate$8([\n Complex({}, DetailsViewSettings)\n ], FileManager.prototype, \"detailsViewSettings\", void 0);\n __decorate$8([\n Property(true)\n ], FileManager.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$8([\n Property(false)\n ], FileManager.prototype, \"enablePersistence\", void 0);\n __decorate$8([\n Property(false)\n ], FileManager.prototype, \"enableVirtualization\", void 0);\n __decorate$8([\n Property('400px')\n ], FileManager.prototype, \"height\", void 0);\n __decorate$8([\n Property('LargeIcons')\n ], FileManager.prototype, \"view\", void 0);\n __decorate$8([\n Complex({}, NavigationPaneSettings)\n ], FileManager.prototype, \"navigationPaneSettings\", void 0);\n __decorate$8([\n Property('/')\n ], FileManager.prototype, \"path\", void 0);\n __decorate$8([\n Property(null)\n ], FileManager.prototype, \"popupTarget\", void 0);\n __decorate$8([\n Complex({}, SearchSettings)\n ], FileManager.prototype, \"searchSettings\", void 0);\n __decorate$8([\n Property()\n ], FileManager.prototype, \"selectedItems\", void 0);\n __decorate$8([\n Property(true)\n ], FileManager.prototype, \"showFileExtension\", void 0);\n __decorate$8([\n Property(null)\n ], FileManager.prototype, \"rootAliasName\", void 0);\n __decorate$8([\n Property(false)\n ], FileManager.prototype, \"showHiddenItems\", void 0);\n __decorate$8([\n Property(true)\n ], FileManager.prototype, \"showThumbnail\", void 0);\n __decorate$8([\n Property('Ascending')\n ], FileManager.prototype, \"sortOrder\", void 0);\n __decorate$8([\n Property('name')\n ], FileManager.prototype, \"sortBy\", void 0);\n __decorate$8([\n Complex({}, ToolbarSettings)\n ], FileManager.prototype, \"toolbarSettings\", void 0);\n __decorate$8([\n Complex({}, UploadSettings)\n ], FileManager.prototype, \"uploadSettings\", void 0);\n __decorate$8([\n Property('100%')\n ], FileManager.prototype, \"width\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileLoad\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileOpen\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"beforeDownload\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"beforeImageLoad\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"beforePopupClose\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"beforePopupOpen\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"beforeSend\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"created\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"destroyed\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileDragStart\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileDragging\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileDragStop\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileDropped\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileSelection\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"fileSelect\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"menuClick\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"menuOpen\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"failure\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"popupClose\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"popupOpen\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"success\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"toolbarClick\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"toolbarCreate\", void 0);\n __decorate$8([\n Event()\n ], FileManager.prototype, \"uploadListCreate\", void 0);\n FileManager = FileManager_1 = __decorate$8([\n NotifyPropertyChanges\n ], FileManager);\n return FileManager;\n}(Component));\n\n/**\n * File Manager base modules\n */\n\n/**\n * Toolbar module\n */\nvar Toolbar$1 = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Toolbar module\n *\n * @hidden\n * @param {IFileManager} parent - specifies the parent element.\n * @private\n */\n function Toolbar$$1(parent) {\n this.default = ['Delete', 'Rename', 'Download', 'Cut', 'Copy', 'Paste'];\n this.single = ['Delete', 'Rename', 'Download', 'Cut', 'Copy'];\n this.multiple = ['Delete', 'Download', 'Cut', 'Copy', 'Refresh'];\n this.selection = ['NewFolder', 'Upload', 'SortBy', 'Refresh'];\n this.parent = parent;\n this.render();\n this.addEventListener();\n }\n Toolbar$$1.prototype.render = function () {\n var _this = this;\n this.items = this.toolbarItemData(this.getItems(this.parent.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj = new Toolbar({\n items: _this.items,\n created: _this.toolbarCreateHandler.bind(_this),\n overflowMode: 'Popup',\n clicked: _this.onClicked.bind(_this),\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n enableRtl: _this.parent.enableRtl\n });\n _this.toolbarObj.isStringTemplate = true;\n _this.toolbarObj.appendTo('#' + _this.parent.element.id + TOOLBAR_ID);\n });\n };\n Toolbar$$1.prototype.getItemIndex = function (item) {\n var itemId = this.getId(item);\n for (var i = 0; i < this.items.length; i++) {\n if (this.items[i].id === itemId) {\n return i;\n }\n }\n return -1;\n };\n Toolbar$$1.prototype.getItems = function (items) {\n var currItems = items.slice();\n if (this.parent.isDevice && this.parent.allowMultiSelection) {\n currItems.push('SelectAll');\n }\n return currItems;\n };\n /* istanbul ignore next */\n Toolbar$$1.prototype.onClicked = function (args) {\n var _this = this;\n if (isNullOrUndefined(args.item) || !args.item.id) {\n return;\n }\n var tool = args.item.id.substr((this.parent.element.id + '_tb_').length);\n // eslint-disable-next-line\n var details;\n if (tool === 'refresh' || tool === 'newfolder' || tool === 'upload') {\n details = [getPathObject(this.parent)];\n this.parent.itemData = details;\n }\n else {\n this.parent.notify(selectedData, {});\n details = this.parent.itemData;\n }\n var eventArgs = { cancel: false, fileDetails: details, item: args.item };\n this.parent.trigger('toolbarClick', eventArgs, function (toolbarClickArgs) {\n var sItems;\n var target;\n if (!toolbarClickArgs.cancel) {\n switch (tool) {\n case 'sortby':\n target = closest(args.originalEvent.target, '.' + TB_ITEM);\n if (target && target.classList.contains('e-toolbar-popup')) {\n args.cancel = true;\n }\n break;\n case 'newfolder':\n createNewFolder(_this.parent);\n break;\n case 'cut':\n cutFiles(_this.parent);\n break;\n case 'copy':\n copyFiles(_this.parent);\n break;\n case 'delete':\n for (var i = 0; i < details.length; i++) {\n if (!hasEditAccess(details[i])) {\n createDeniedDialog(_this.parent, details[i], permissionEdit);\n return;\n }\n }\n createDialog(_this.parent, 'Delete');\n break;\n case 'details':\n _this.parent.notify(detailsInit, {});\n sItems = _this.parent.selectedItems;\n if (_this.parent.activeModule === 'navigationpane') {\n sItems = [];\n }\n GetDetails(_this.parent, sItems, _this.parent.path, 'details');\n break;\n case 'paste':\n _this.parent.folderPath = '';\n pasteHandler(_this.parent);\n break;\n case 'refresh':\n refresh(_this.parent);\n break;\n case 'download':\n doDownload(_this.parent);\n break;\n case 'rename':\n if (!hasEditAccess(details[0])) {\n createDeniedDialog(_this.parent, details[0], permissionEdit);\n }\n else {\n _this.parent.notify(renameInit, {});\n createDialog(_this.parent, 'Rename');\n }\n break;\n case 'upload':\n uploadItem(_this.parent);\n break;\n case 'selectall':\n _this.parent.notify(selectAllInit, {});\n break;\n case 'selection':\n _this.parent.notify(clearAllInit, {});\n break;\n }\n }\n });\n };\n Toolbar$$1.prototype.toolbarCreateHandler = function () {\n if (!isNullOrUndefined(select('#' + this.getId('SortBy'), this.parent.element))) {\n var items = [\n { id: this.getPupupId('name'), text: getLocaleText(this.parent, 'Name'),\n iconCss: this.parent.sortBy === 'name' ? TB_OPTION_DOT : '' },\n { id: this.getPupupId('size'), text: getLocaleText(this.parent, 'Size'),\n iconCss: this.parent.sortBy === 'size' ? TB_OPTION_DOT : '' },\n { id: this.getPupupId('date'), text: getLocaleText(this.parent, 'DateModified'),\n iconCss: this.parent.sortBy === '_fm_modified' ? TB_OPTION_DOT : '' },\n { separator: true },\n { id: this.getPupupId('ascending'), text: getLocaleText(this.parent, 'Ascending'),\n iconCss: this.parent.sortOrder === 'Ascending' ? TB_OPTION_TICK : '' },\n { id: this.getPupupId('descending'), text: getLocaleText(this.parent, 'Descending'),\n iconCss: this.parent.sortOrder === 'Descending' ? TB_OPTION_TICK : '' },\n { id: this.getPupupId('none'), text: getLocaleText(this.parent, 'None'),\n iconCss: this.parent.sortOrder === 'None' ? TB_OPTION_TICK : '' }\n ];\n this.buttonObj = new DropDownButton({\n items: items, cssClass: getCssClass(this.parent, ROOT_POPUP),\n select: sortbyClickHandler.bind(this, this.parent),\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n enableRtl: this.parent.enableRtl, iconCss: ICON_SHORTBY\n });\n this.buttonObj.isStringTemplate = true;\n this.buttonObj.appendTo('#' + this.getId('SortBy'));\n }\n if (!isNullOrUndefined(select('#' + this.getId('View'), this.parent.element))) {\n var gridSpan = '';\n var largeIconSpan = '';\n var layoutItems = [\n {\n id: this.getPupupId('large'), text: largeIconSpan + getLocaleText(this.parent, 'View-LargeIcons'),\n iconCss: this.parent.view === 'Details' ? '' : TB_OPTION_TICK\n },\n {\n id: this.getPupupId('details'), text: gridSpan + getLocaleText(this.parent, 'View-Details'),\n iconCss: this.parent.view === 'Details' ? TB_OPTION_TICK : ''\n }\n ];\n this.layoutBtnObj = new DropDownButton({\n iconCss: this.parent.view === 'Details' ? ICON_GRID : ICON_LARGE,\n cssClass: getCssClass(this.parent, 'e-caret-hide ' + ROOT_POPUP),\n items: layoutItems, select: this.layoutChange.bind(this),\n enableRtl: this.parent.enableRtl,\n content: '' + getLocaleText(this.parent, 'View') + ''\n });\n this.layoutBtnObj.isStringTemplate = true;\n this.layoutBtnObj.appendTo('#' + this.getId('View'));\n }\n this.hideItems(this.default, true);\n this.hideStatus();\n var btnElement = selectAll('.e-btn', this.toolbarObj.element);\n var _loop_1 = function (btnCount) {\n /* istanbul ignore next */\n btnElement[btnCount].onkeydown = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n e.preventDefault();\n }\n };\n btnElement[btnCount].onkeyup = function (e) {\n if (e.keyCode === 13 && !e.target.classList.contains('e-fe-popup')) {\n btnElement[btnCount].click();\n }\n };\n };\n for (var btnCount = 0; btnCount < btnElement.length; btnCount++) {\n _loop_1(btnCount);\n }\n this.parent.refreshLayout();\n };\n Toolbar$$1.prototype.updateSortByButton = function () {\n if (this.buttonObj) {\n var items = this.buttonObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('name')) {\n items[itemCount].iconCss = this.parent.sortBy === 'name' ? TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('size')) {\n items[itemCount].iconCss = this.parent.sortBy === 'size' ? TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('date')) {\n items[itemCount].iconCss = this.parent.sortBy === '_fm_modified' ? TB_OPTION_DOT : '';\n }\n else if (items[itemCount].id === this.getPupupId('ascending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Ascending' ? TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('descending')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'Descending' ? TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('none')) {\n items[itemCount].iconCss = this.parent.sortOrder === 'None' ? TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar$$1.prototype.getPupupId = function (id) {\n return this.parent.element.id + '_ddl_' + id.toLowerCase();\n };\n Toolbar$$1.prototype.layoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (args.item.id === this.getPupupId('large')) {\n updateLayout(this.parent, 'LargeIcons');\n }\n }\n else {\n if (args.item.id === this.getPupupId('details')) {\n updateLayout(this.parent, 'Details');\n }\n }\n };\n Toolbar$$1.prototype.toolbarItemData = function (data) {\n var items = [];\n var mode = 'Both';\n if (this.parent.isMobile) {\n mode = 'Overflow';\n }\n for (var i = 0; i < data.length; i++) {\n var item = void 0;\n var itemId = this.getId(data[i]);\n var itemText = getLocaleText(this.parent, data[i]);\n var itemTooltip = getLocaleText(this.parent, 'Tooltip-' + data[i]);\n var spanElement = '' + itemText + '';\n switch (data[i]) {\n case '|':\n item = { type: 'Separator' };\n break;\n case 'Upload':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_UPLOAD, showTextOn: mode };\n break;\n case 'SortBy':\n item = {\n id: itemId, tooltipText: itemTooltip,\n template: ''\n };\n break;\n case 'Refresh':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_REFRESH, showTextOn: mode };\n break;\n case 'Selection':\n item = {\n id: itemId, text: itemText, tooltipText: itemTooltip, suffixIcon: ICON_CLEAR, overflow: 'Show',\n align: 'Right'\n };\n break;\n case 'View':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: this.parent.view === 'Details' ? ICON_GRID : ICON_LARGE,\n overflow: 'Show', align: 'Right', text: itemText, showTextOn: 'Overflow',\n template: ''\n };\n break;\n case 'Details':\n item = {\n id: itemId, tooltipText: itemTooltip, prefixIcon: ICON_DETAILS, overflow: 'Show', align: 'Right',\n text: itemText, showTextOn: 'Overflow'\n };\n break;\n case 'NewFolder':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_NEWFOLDER, showTextOn: mode };\n break;\n case 'Cut':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_CUT, showTextOn: mode };\n break;\n case 'Copy':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_COPY, showTextOn: mode };\n break;\n case 'Paste':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_PASTE, showTextOn: mode };\n break;\n case 'Delete':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_DELETE, showTextOn: mode };\n break;\n case 'Rename':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_RENAME, showTextOn: mode };\n break;\n case 'Download':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_DOWNLOAD, showTextOn: mode };\n break;\n case 'SelectAll':\n item = { id: itemId, text: itemText, tooltipText: itemTooltip, prefixIcon: ICON_SELECTALL, showTextOn: mode };\n break;\n default:\n item = { id: itemId, text: itemText, tooltipText: itemTooltip };\n break;\n }\n items.push(item);\n }\n return items;\n };\n Toolbar$$1.prototype.getId = function (id) {\n return this.parent.element.id + '_tb_' + id.toLowerCase();\n };\n Toolbar$$1.prototype.addEventListener = function () {\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(selectionChanged, this.onSelectionChanged, this);\n this.parent.on(layoutChange, this.onLayoutChange, this);\n this.parent.on(showPaste, this.showPaste, this);\n this.parent.on(hidePaste, this.hidePaste, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(sortByChange, this.updateSortByButton, this);\n };\n Toolbar$$1.prototype.reRenderToolbar = function (e) {\n var _this = this;\n if (e.newProp.toolbarSettings.items !== undefined) {\n this.items = this.toolbarItemData(this.getItems(e.newProp.toolbarSettings.items.map(function (item) { return item.trim(); })));\n var eventArgs = { items: this.items };\n this.parent.trigger('toolbarCreate', eventArgs, function (toolbarCreateArgs) {\n if (_this.buttonObj) {\n _this.buttonObj.destroy();\n }\n if (_this.layoutBtnObj) {\n _this.layoutBtnObj.destroy();\n }\n _this.items = toolbarCreateArgs.items;\n _this.toolbarObj.items = _this.items;\n _this.toolbarObj.dataBind();\n _this.toolbarCreateHandler();\n });\n }\n };\n Toolbar$$1.prototype.onSelectionChanged = function () {\n this.hideStatus();\n this.hideItems(this.single, true);\n this.hideItems(this.selection, false);\n if (this.parent.selectedItems.length === 1) {\n this.hideItems(this.single, false);\n this.hideItems(this.selection, true);\n }\n else if (this.parent.selectedItems.length > 1) {\n this.hideItems(this.multiple, false);\n this.hideItems(this.selection, true);\n }\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (this.parent.selectedItems.length > 0 && ele && !this.parent.enableVirtualization) {\n var txt = void 0;\n if (this.parent.selectedItems.length === 1) {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Item-Selection');\n }\n else {\n txt = this.parent.selectedItems.length + ' ' + getLocaleText(this.parent, 'Items-Selection');\n }\n select('.e-tbar-btn-text', ele).textContent = txt;\n this.toolbarObj.hideItem(ele.parentElement, false);\n }\n };\n Toolbar$$1.prototype.hideItems = function (tools, toHide) {\n for (var i = 0; i < tools.length; i++) {\n var ele = select('#' + this.getId(tools[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, toHide);\n }\n }\n };\n Toolbar$$1.prototype.hideStatus = function () {\n var ele = select('#' + this.getId('Selection'), this.toolbarObj.element);\n if (ele) {\n this.toolbarObj.hideItem(ele.parentElement, true);\n }\n };\n Toolbar$$1.prototype.showPaste = function () {\n this.hideItems(['Paste'], false);\n };\n Toolbar$$1.prototype.hidePaste = function () {\n this.hideItems(['Paste'], true);\n };\n Toolbar$$1.prototype.onLayoutChange = function () {\n if (this.layoutBtnObj) {\n this.layoutBtnObj.iconCss = this.parent.view === 'Details' ? ICON_GRID : ICON_LARGE;\n var items = this.layoutBtnObj.items;\n for (var itemCount = 0; itemCount < items.length; itemCount++) {\n if (items[itemCount].id === this.getPupupId('large')) {\n items[itemCount].iconCss = this.parent.view === 'LargeIcons' ? TB_OPTION_TICK : '';\n }\n else if (items[itemCount].id === this.getPupupId('details')) {\n items[itemCount].iconCss = this.parent.view === 'Details' ? TB_OPTION_TICK : '';\n }\n }\n }\n };\n Toolbar$$1.prototype.removeEventListener = function () {\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(selectionChanged, this.onSelectionChanged);\n this.parent.off(layoutChange, this.onLayoutChange);\n this.parent.off(showPaste, this.showPaste);\n this.parent.off(hidePaste, this.hidePaste);\n this.parent.off(destroy, this.destroy);\n this.parent.off(sortByChange, this.updateSortByButton);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n Toolbar$$1.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar$$1.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (this.buttonObj) {\n this.buttonObj.cssClass = getCssClass(this.parent, ROOT_POPUP);\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.cssClass = getCssClass(this.parent, 'e-caret-hide ' + ROOT_POPUP);\n }\n break;\n case 'height':\n case 'width':\n this.toolbarObj.refreshOverflow();\n break;\n case 'toolbarSettings':\n this.reRenderToolbar(e);\n break;\n }\n }\n };\n Toolbar$$1.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n if (this.layoutBtnObj) {\n this.layoutBtnObj.destroy();\n }\n this.toolbarObj.destroy();\n this.parent.refreshLayout();\n };\n Toolbar$$1.prototype.enableItems = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n var ele = select('#' + this.getId(items[i]), this.parent.element);\n if (ele) {\n this.toolbarObj.enableItems(ele.parentElement, isEnable);\n }\n }\n };\n return Toolbar$$1;\n}());\n\nvar Virtualization = /** @__PURE__ @class */ (function () {\n function Virtualization(instance) {\n this.filemanagerInstance = instance;\n this.largeIconInstance = instance.largeiconsviewModule;\n }\n /**\n * Sets up UI virtualization for the large icon view.\n */\n Virtualization.prototype.setUIVirtualization = function () {\n // Get the current view data source\n var currentViewItems = this.largeIconInstance.items;\n // Get the first item in the data source\n var firstItem = currentViewItems.slice(0, 1);\n // Create a list element from the first item in the data source\n var listElements = ListBase.createListFromJson(createElement, firstItem, this.largeIconInstance.listObj);\n // Get the list items from the list element\n this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, listElements));\n // Append the list element to the large icon element\n this.largeIconInstance.element.appendChild(listElements);\n // Get the total number of items\n this.itemCount = this.getItemCount(Object.keys(this.largeIconInstance.allItems).length);\n // Remove the first child element from the large icon element\n this.largeIconInstance.element.firstChild.remove();\n // Set the items for the large icon view to the current view data source, limited to the number of items to display\n this.largeIconInstance.items = currentViewItems.slice(0, this.itemCount);\n };\n /**\n * Sets the height of the top and bottom elements that are used for virtualization.\n * These elements are used to give the appearance of an infinitely scrolling list.\n */\n Virtualization.prototype.setUlElementHeight = function () {\n // Calculate the number of items in the last row\n this.lastRowCount = (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount ?\n (this.largeIconInstance.allItems.length - this.itemCount) % this.rowItemCount : this.rowItemCount;\n // Create top and bottom elements\n this.topElement = this.filemanagerInstance.createElement('div');\n this.topElement.classList.add(\"e-virtual-top\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.topElement, this.largeIconInstance.element.firstElementChild.firstChild);\n this.bottomElement = this.filemanagerInstance.createElement('div');\n this.bottomElement.classList.add(\"e-virtual-bottom\");\n this.largeIconInstance.element.firstElementChild.insertBefore(this.bottomElement, null);\n // Get the margin value for list items\n var marginValue = parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-top'), 10) +\n parseInt(window.getComputedStyle(this.largeIconInstance.itemList[0]).getPropertyValue('margin-bottom'), 10);\n // Calculate the height of a single list item\n this.listItemHeight = this.largeIconInstance.itemList[0].getBoundingClientRect().height + marginValue;\n // Calculate the total height of the list\n this.totalHeight = (Object.keys(this.largeIconInstance.allItems).length / this.rowItemCount) * this.listItemHeight;\n // Set the initial height of the top and bottom elements\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n // Initialize the top and bottom element heights\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n // Initialize the list difference variable\n this.listDiff = 0;\n // Set the initial rendered count\n this.renderedCount = this.itemCount;\n };\n /**\n * Calculates the number of items to display in the list based on the available width and height.\n * @param dataSourceLength The length of the data source.\n * @returns The number of items to display.\n */\n Virtualization.prototype.getItemCount = function (dataSourceLength) {\n // Get the margin values for list items\n var widthMargin = parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-right'), 10) +\n parseInt(window.getComputedStyle(this.itemList[0]).getPropertyValue('margin-left'), 10);\n // Calculate the number of items that can fit in a single row\n this.rowItemCount = Math.floor(parseFloat(formatUnit(this.largeIconInstance.element.firstElementChild.clientWidth)) / (this.itemList[0].offsetWidth + widthMargin));\n // Calculate the number of items that can fit in the available height\n var itemCount = this.rowItemCount * (Math.round(parseFloat(formatUnit(this.largeIconInstance.element.clientHeight)) / this.itemList[0].offsetHeight));\n // If the calculated item count is greater than the data source length, set the item count to the data source length\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n /**\n * Wires or un wires the scroll event for the list element.\n * @param destroy - Set `true` to unwire the scroll event.\n */\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n // Wire the scroll event\n EventHandler.add(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll, this);\n }\n else {\n // Unwire the scroll event\n EventHandler.remove(this.largeIconInstance.element.firstElementChild, 'scroll', this.onVirtualUiScroll);\n }\n };\n /**\n * Handles the scroll event for the list element.\n * This method updates the top and bottom elements and the displayed items based on the scroll position.\n */\n Virtualization.prototype.onVirtualUiScroll = function () {\n var _a;\n // Set the starting height to 0\n var startingHeight = 0;\n // Get the current scroll position\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n // Calculate the height of the top element\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n // Calculate the height of the bottom element\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n // If the scroll position is less than or equal to the total height, set the top and bottom element heights.\n // Otherwise, set the top element height to the total height and the bottom element height to 0.\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n // If the top element height has changed, update the top and bottom element heights and re-render the items.\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n // Check whether the scroll direction is upward or downward\n if (scroll > this.scrollPosition) {\n // Scrolling is upward\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n this.onNormalScroll(listDiff, true);\n }\n else {\n // Scrolling is downward\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n this.onNormalScroll(listDiff, false);\n }\n }\n // Update the list difference and scroll position variables\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n this.scrollPosition = scroll;\n // Update the list of items and the items property of the largeIconInstance\n this.largeIconInstance.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, this.largeIconInstance.element));\n this.largeIconInstance.items = this.largeIconInstance.allItems.slice(this.renderedCount -\n this.itemCount, this.renderedCount);\n };\n /**\n * Calculates the current scroll position of the list element.\n * @param startingHeight The starting height from which to calculate the scroll position.\n * @returns The current scroll position.\n */\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n // If the scroll position is less than or equal to the starting height, return 0.\n // Otherwise, return the scroll position minus the starting height.\n return ((this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight) <= 0) ? 0 :\n (this.largeIconInstance.element.firstElementChild.scrollTop - startingHeight);\n };\n /**\n * This method updates the displayed items and the selection based on the scroll direction.\n * @param listDiff The number of rows to update.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n // Update the displayed items\n for (var i = 0; i < listDiff; i++) {\n this.updateUI(isScrollingDown);\n }\n };\n /**\n * Updates the items in the large icons view.\n * @param isScrollingDown If set to true, the scroll direction is downward.\n */\n Virtualization.prototype.updateUI = function (isScrollingDown) {\n var _this = this;\n if (isScrollingDown) {\n // Get the next batch of items to be displayed\n this.items = this.largeIconInstance.allItems.slice(this.renderedCount, this.renderedCount + this.rowItemCount);\n // If there are items to be displayed, create list elements for them and append them to the list\n if (this.items.length > 0) {\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, listElements));\n this.itemList.forEach(function (liEle) {\n _this.largeIconInstance.element.firstElementChild.insertBefore(liEle, _this.bottomElement);\n });\n // Update the rendered count variable\n this.renderedCount = (this.largeIconInstance.allItems.length >= this.renderedCount + this.rowItemCount) ?\n this.renderedCount + this.rowItemCount : this.renderedCount + this.lastRowCount;\n // Remove the first batch of items from the list\n for (var i = 0; i < this.rowItemCount; i++) {\n detach(this.topElement.nextElementSibling);\n }\n }\n }\n else {\n // Scrolling up\n var lastItemIndex = void 0;\n var isAllRendered = void 0;\n if (this.renderedCount === this.largeIconInstance.allItems.length) {\n // Set lastItemIndex to the last item in the last row\n lastItemIndex = this.renderedCount - (this.itemCount - this.rowItemCount + this.lastRowCount);\n // Set renderedCount to the total number of items that have been rendered, except for the items in the last row\n this.renderedCount = ((this.renderedCount - this.lastRowCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.lastRowCount);\n // Set isAllRendered to true to indicate that all items have been rendered\n isAllRendered = true;\n }\n else {\n // Set lastItemIndex to the last item in the current row\n lastItemIndex = this.renderedCount - this.itemCount;\n // Set renderedCount to the total number of items that have been rendered, except for the items in the current row\n this.renderedCount = ((this.renderedCount - this.rowItemCount) < this.itemCount) ?\n this.itemCount : (this.renderedCount - this.rowItemCount);\n }\n // Set startItemIndex to the first item in the current or previous row\n var startItemIndex = (lastItemIndex - this.rowItemCount > 0) ? lastItemIndex - this.rowItemCount : 0;\n // Set the items array to the items in the current or previous row\n this.items = this.largeIconInstance.allItems.slice(startItemIndex, lastItemIndex);\n if (this.items.length > 0) {\n // Create a list of elements from the items array\n var listElements = ListBase.createListFromJson(createElement, this.items, this.largeIconInstance.listObj);\n // Set the itemList array to the list items in the list elements\n this.itemList = Array.prototype.slice.call(selectAll('.' + LIST_ITEM, listElements));\n // Add the items to the beginning of the list\n for (var len = this.itemList.length; len > 0; len--) {\n this.largeIconInstance.element.firstElementChild.insertBefore(this.itemList[len - 1], this.topElement.nextElementSibling);\n }\n // Remove the last row of items from the list\n for (var i = 0; i < ((isAllRendered) ? this.lastRowCount : this.rowItemCount); i++) {\n detach(this.bottomElement.previousElementSibling);\n }\n }\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n /**\n * Destroys the component.\n */\n Virtualization.prototype.destroy = function () {\n // If the file manager has already been destroyed, return immediately\n if (this.filemanagerInstance.isDestroyed) {\n return;\n }\n // If the large icon element has a child element, unwire the scroll event\n if (!isNullOrUndefined(this.largeIconInstance.element.firstElementChild)) {\n this.wireScrollEvent(true);\n }\n };\n return Virtualization;\n}());\n\n/**\n * File Manager actions modules\n */\n\n/**\n * NavigationPane module\n */\nvar NavigationPane = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the TreeView module\n *\n * @param {IFileManager} parent - specifies the parent element.\n * @hidden\n */\n /* istanbul ignore next */\n function NavigationPane(parent) {\n this.removeNodes = [];\n this.moveNames = [];\n this.expandTree = false;\n this.isDrag = false;\n this.isPathDragged = false;\n this.isRenameParent = false;\n this.isRightClick = false;\n this.renameParent = null;\n // Specifies the previously selected nodes in the treeview control.\n this.previousSelected = null;\n // Specifies whether the nodeClicked event of the treeview control is triggered or not.\n this.isNodeClickCalled = false;\n // Specifies whether to restrict node selection in the treeview control.\n this.restrictSelecting = false;\n this.parent = parent;\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftF10: 'shift+F10',\n f2: 'f2'\n };\n }\n NavigationPane.prototype.onInit = function () {\n if (!isNullOrUndefined(this.treeObj)) {\n return;\n }\n // eslint-disable-next-line\n var rootData = getValue(this.parent.pathId[0], this.parent.feParent);\n setValue('_fm_icon', 'e-fe-folder', rootData);\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', rootData);\n if (!isNullOrUndefined(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(rootData)) {\n setValue('class', getAccessClass(rootData), attr);\n }\n if (!isNullOrUndefined(attr)) {\n setValue('_fm_htmlAttr', attr, rootData);\n }\n this.treeObj = new TreeView({\n fields: {\n dataSource: [rootData], id: '_fm_id', parentID: '_fm_pId', expanded: '_fm_expanded', selected: '_fm_selected', text: 'name',\n hasChildren: 'hasChild', iconCss: '_fm_icon', htmlAttributes: '_fm_htmlAttr', tooltip: 'name'\n },\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n sortOrder: this.parent.navigationPaneSettings.sortOrder,\n nodeSelecting: this.onNodeSelecting.bind(this),\n nodeSelected: this.onNodeSelected.bind(this),\n nodeExpanding: this.onNodeExpand.bind(this),\n nodeClicked: this.onNodeClicked.bind(this),\n allowEditing: true,\n nodeEditing: this.onNodeEditing.bind(this),\n drawNode: this.onDrowNode.bind(this),\n enableRtl: this.parent.enableRtl,\n dataBound: this.addDragDrop.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n this.treeObj.appendTo('#' + this.parent.element.id + TREE_ID);\n this.wireEvents();\n };\n NavigationPane.prototype.addDragDrop = function () {\n var _this = this;\n if (!this.parent.isMobile && this.treeObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.treeObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n dragTarget: '.' + FULLROW,\n distance: 5,\n dragArea: this.parent.element,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableTailMode: true,\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n NavigationPane.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n if (!dragTarget.classList.contains(FULLROW)) {\n return null;\n }\n var dragLi = closest(dragTarget, 'li');\n this.parent.dragPath = '';\n this.parent.dragData = [];\n this.parent.activeElements = [];\n this.parent.activeElements = [dragLi];\n this.parent.dragNodes = [];\n getModule(this.parent, dragLi);\n // eslint-disable-next-line\n this.parent.dragData = this.getTreeData(dragLi);\n this.parent.dragPath = this.getDragPath(dragLi, this.parent.dragData[0].name);\n this.parent.dragNodes.push(this.parent.dragData[0].name);\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n NavigationPane.prototype.getDragPath = function (dragLi, text) {\n var path = this.getDropPath(dragLi, text);\n return getParentPath(path);\n };\n NavigationPane.prototype.getDropPath = function (node, text) {\n var id = node.getAttribute('data-id');\n var newText = this.parent.hasId ? id : text;\n return getPath(node, newText, this.parent.hasId);\n };\n NavigationPane.prototype.onDrowNode = function (args) {\n var eventArgs = {\n element: args.node,\n fileDetails: args.nodeData,\n module: 'NavigationPane'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.addChild = function (files, target, prevent) {\n // eslint-disable-next-line\n var directories = getDirectories(files);\n if (directories.length > 0) {\n var length_1 = 0;\n // eslint-disable-next-line\n var folders = directories;\n while (length_1 < directories.length) {\n // eslint-disable-next-line\n folders[length_1]._fm_icon = 'e-fe-folder';\n // eslint-disable-next-line\n var attr = {};\n var id = getValue('id', folders[length_1]);\n if (!isNullOrUndefined(id)) {\n setValue('data-id', id, attr);\n }\n if (!hasEditAccess(folders[length_1])) {\n setValue('class', getAccessClass(folders[length_1]), attr);\n }\n if (!isNullOrUndefined(attr)) {\n setValue('_fm_htmlAttr', attr, folders[length_1]);\n }\n length_1++;\n }\n // eslint-disable-next-line\n this.treeObj.addNodes(directories, target, null, prevent);\n }\n };\n // Node Selecting event handler\n NavigationPane.prototype.onNodeSelecting = function (args) {\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent || this.restrictSelecting) {\n this.restrictSelecting = false;\n this.isNodeClickCalled = false;\n return;\n }\n if (!this.renameParent) {\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n var eventArgs = { cancel: false, fileDetails: nodeData[0], module: 'NavigationPane' };\n this.parent.trigger('fileOpen', eventArgs);\n var selecEventArgs = { action: args.action, fileDetails: nodeData[0], isInteracted: args.isInteracted };\n this.parent.trigger('fileSelect', selecEventArgs);\n args.cancel = eventArgs.cancel;\n if (args.cancel) {\n this.restrictSelecting = this.isNodeClickCalled ? this.previousSelected[0] !== args.node.getAttribute('data-uid') : false;\n this.previousSelected = this.treeObj.selectedNodes;\n this.treeObj.selectedNodes = [args.node.getAttribute(\"data-uid\")];\n if (!isNullOrUndefined(this.parent) && !isNullOrUndefined(this.parent.contextmenuModule)) {\n this.parent.contextmenuModule.contextMenu.enableItems(['Open'], true);\n }\n }\n }\n };\n // Opens the folder while clicking open context menu item in the treeview.\n NavigationPane.prototype.openFileOnContextMenuClick = function (node) {\n var data = this.treeObj.getTreeData(node);\n // eslint-disable-next-line\n this.parent.selectedItems = [];\n this.parent.itemData = data;\n this.activeNode = node;\n this.parent.activeModule = 'navigationpane';\n updatePath(node, this.parent.itemData[0], this.parent);\n read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);\n this.parent.visitedItem = node;\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n this.treeObj.selectedNodes = [node.getAttribute('data-uid')];\n };\n NavigationPane.prototype.onNodeSelected = function (args) {\n if (this.parent.breadcrumbbarModule && this.parent.breadcrumbbarModule.searchObj && !this.renameParent) {\n this.parent.breadcrumbbarModule.searchObj.element.value = '';\n this.parent.isFiltered = false;\n }\n this.parent.searchedItems = [];\n if (!args.isInteracted && !this.isRightClick && !this.isPathDragged && !this.isRenameParent) {\n this.parent.pathId = getPathId(args.node);\n return;\n }\n this.activeNode = args.node;\n this.parent.activeModule = 'navigationpane';\n // eslint-disable-next-line\n var nodeData = this.getTreeData(getValue('id', args.nodeData));\n this.parent.selectedItems = [];\n this.parent.itemData = nodeData;\n var previousPath = this.parent.path;\n if (!this.isRightClick) {\n updatePath(args.node, this.parent.itemData[0], this.parent);\n }\n else {\n this.parent.pathId = getPathId(args.node);\n this.parent.visitedItem = args.node;\n }\n if (previousPath !== this.parent.path) {\n this.expandNodeTarget = null;\n if (args.node.querySelector('.' + ICONS) && args.node.querySelector('.' + LIST_ITEM) === null) {\n this.expandNodeTarget = 'add';\n }\n if (!this.isRightClick) {\n read(this.parent, this.isPathDragged ? pasteEnd : pathChanged, this.parent.path);\n }\n this.parent.visitedItem = args.node;\n }\n this.isPathDragged = this.isRenameParent = this.isRightClick = false;\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.onPathDrag = function (args) {\n this.isPathDragged = true;\n this.selectResultNode(args[0]);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpand = function (args) {\n if (!args.isInteracted && !this.isDrag) {\n return;\n }\n if (args.node.querySelector('.' + LIST_ITEM) === null) {\n var text = getValue('text', args.nodeData);\n var id = args.node.getAttribute('data-id');\n var isId = isNullOrUndefined(id) ? false : true;\n var newText = isNullOrUndefined(id) ? text : id;\n var path = getPath(args.node, newText, isId);\n this.expandNodeTarget = args.node.getAttribute('data-uid');\n this.parent.expandedId = this.expandNodeTarget;\n this.parent.itemData = this.getTreeData(getValue('id', args.nodeData));\n read(this.parent, nodeExpand, path);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeExpanded = function (args) {\n this.addChild(args.files, this.expandNodeTarget, false);\n this.parent.expandedId = null;\n };\n NavigationPane.prototype.onNodeClicked = function (args) {\n this.parent.activeModule = 'navigationpane';\n this.previousSelected = this.treeObj.selectedNodes;\n this.activeNode = args.node;\n if ((args.event.which === 3) && (args.node.getAttribute('data-uid') !== this.treeObj.selectedNodes[0])) {\n this.isRightClick = true;\n this.isNodeClickCalled = true;\n this.treeObj.selectedNodes = [args.node.getAttribute('data-uid')];\n }\n else if (args.node.getAttribute('data-uid') === this.treeObj.selectedNodes[0] && this.parent.selectedItems.length !== 0) {\n this.parent.setProperties({ selectedItems: [] }, true);\n var layout = (this.parent.view === 'LargeIcons') ? 'largeiconsview' : 'detailsview';\n this.parent.notify(modelChanged, { module: layout, newProp: { selectedItems: [] } });\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onNodeEditing = function (args) {\n if (!isNullOrUndefined(args.innerHtml)) {\n args.cancel = true;\n }\n };\n NavigationPane.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n // eslint-disable-next-line\n var currFiles = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feFiles);\n if (this.expandNodeTarget === 'add') {\n var sNode = select('[data-uid=\"' + this.treeObj.selectedNodes[0] + '\"]', this.treeObj.element);\n var ul = (!isNullOrUndefined(sNode)) ? select('.' + LIST_PARENT, sNode) : null;\n if (isNullOrUndefined(ul)) {\n this.addChild(args.files, this.treeObj.selectedNodes[0], !this.expandTree);\n }\n this.expandNodeTarget = '';\n }\n this.expandTree = false;\n if (isNullOrUndefined(currFiles)) {\n setValue(this.parent.pathId[this.parent.pathId.length - 1], args.files, this.parent.feFiles);\n }\n if (this.parent.uploadObj.directoryUpload && !(this.parent.hasId)) {\n this.updateTree(args);\n }\n };\n NavigationPane.prototype.updateTree = function (args) {\n if (this.treeObj) {\n var id = this.treeObj.selectedNodes[0];\n this.updateTreeNode(args, id);\n }\n };\n NavigationPane.prototype.updateTreeNode = function (args, id) {\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1 ? false : true;\n this.removeChildNodes(id);\n this.addChild(args.files, id, !toExpand);\n };\n NavigationPane.prototype.removeChildNodes = function (id) {\n var sNode = select('[data-uid=\"' + id + '\"]', this.treeObj.element);\n var parent = select('.' + LIST_PARENT, sNode);\n var childs = parent ? Array.prototype.slice.call(parent.children) : null;\n if (childs) {\n this.treeObj.removeNodes(childs);\n }\n };\n NavigationPane.prototype.onOpenEnd = function (args) {\n var sleId = this.parent.pathId[this.parent.pathId.length - 1];\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n this.treeObj.selectedNodes = [sleId];\n this.expandNodeTarget = 'add';\n this.onPathChanged(args);\n };\n NavigationPane.prototype.onOpenInit = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n if (args.target.querySelector('.' + ICONS)) {\n this.treeObj.expandAll(this.treeObj.selectedNodes);\n }\n }\n };\n NavigationPane.prototype.onInitialEnd = function (args) {\n this.onInit();\n this.addChild(args.files, getValue('_fm_id', args.cwd), false);\n };\n NavigationPane.prototype.onFinalizeEnd = function (args) {\n this.onInit();\n var id = getValue('_fm_id', args.cwd);\n this.removeChildNodes(id);\n this.addChild(args.files, id, false);\n this.treeObj.selectedNodes = [this.parent.pathId[this.parent.pathId.length - 1]];\n };\n NavigationPane.prototype.onCreateEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateItemData();\n }\n };\n NavigationPane.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateActionData();\n var name_1 = getValue('name', this.parent.itemData[0]);\n Delete(this.parent, [name_1], this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDeleteEnd = function (args) {\n if (this.parent.activeModule === 'navigationpane') {\n var selectedNode = this.treeObj.selectedNodes[0];\n var selcetedEle = select('[data-uid=\"' + selectedNode + '\"]', this.treeObj.element);\n var selectedNodeEle = closest(selcetedEle, '.' + LIST_PARENT).parentElement;\n this.treeObj.selectedNodes = [selectedNodeEle.getAttribute('data-uid')];\n this.treeObj.dataBind();\n }\n this.updateTree(args);\n };\n NavigationPane.prototype.onRefreshEnd = function (args) {\n this.updateTree(args);\n };\n NavigationPane.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'navigationpane') {\n this.updateRenameData();\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEndParent = function (args) {\n var id = this.renameParent ? this.renameParent : this.parent.pathId[this.parent.pathId.length - 1];\n this.expandTree = this.treeObj.expandedNodes.indexOf(this.treeObj.selectedNodes[0]) !== -1;\n this.updateTreeNode(args, id);\n this.parent.expandedId = null;\n if (this.renameParent) {\n this.renameParent = null;\n }\n else {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.renameText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('_fm_pId', 'equal', id, false));\n }\n }\n if (resultData.length > 0) {\n var id_1 = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id_1];\n this.treeObj.dataBind();\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onRenameEnd = function (args) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.updateTree(args);\n }\n else {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData();\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(data).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(data).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', this.parent.currentItemText, false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (resultData.length > 0) {\n this.renameParent = getValue(this.treeObj.fields.parentID, resultData[0]);\n this.parent.expandedId = this.renameParent;\n this.parent.itemData = this.getTreeData(this.renameParent);\n read(this.parent, renameEndParent, this.parent.filterPath.replace(/\\\\/g, '/'));\n }\n }\n };\n NavigationPane.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.addDragDrop();\n break;\n case 'navigationPaneSettings':\n read(this.parent, finalizeEnd, '/');\n if (e.oldProp.navigationPaneSettings.sortOrder !== e.newProp.navigationPaneSettings.sortOrder) {\n this.treeObj.sortOrder = e.newProp.navigationPaneSettings.sortOrder;\n }\n break;\n }\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDownLoadInit = function () {\n this.doDownload();\n };\n NavigationPane.prototype.onSelectionChanged = function (e) {\n this.treeObj.selectedNodes = [e.selectedNode];\n };\n NavigationPane.prototype.onClearPathInit = function (e) {\n this.removeChildNodes(e.selectedNode);\n };\n NavigationPane.prototype.onDragEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchDrag) {\n moveNames = this.getMoveNames(args.files, this.parent.isSearchDrag, this.parent.dragPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getMoveNames = function (files, flag, path) {\n var moveNames = [];\n for (var i = 0; i < files.length; i++) {\n if (!files[i].isFile) {\n if (!this.parent.hasId) {\n var name_2 = (files[i].previousName);\n if (flag) {\n path = path + files[i].previousName;\n var index = path.lastIndexOf('/');\n name_2 = path.substring(index + 1);\n path = path.substring(0, index + 1);\n }\n // eslint-disable-next-line\n var resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', name_2, false));\n for (var j = 0; j < resultData.length; j++) {\n var fPath = getValue('filterPath', resultData[j]);\n fPath = fPath.replace(/\\\\/g, '/');\n if (fPath === path) {\n moveNames.push(getValue(this.treeObj.fields.id, resultData[j]));\n break;\n }\n }\n }\n }\n }\n return moveNames;\n };\n NavigationPane.prototype.onCutEnd = function (args) {\n var moveNames = [];\n if (this.parent.isPasteError || this.parent.isSearchCut) {\n this.moveNames = this.getMoveNames(args.files, this.parent.isSearchCut, this.parent.targetPath);\n }\n else {\n moveNames = this.moveNames;\n }\n this.treeObj.removeNodes(moveNames);\n };\n /* istanbul ignore next */\n // eslint-disable-next-line\n NavigationPane.prototype.selectResultNode = function (resultObj) {\n if (!this.parent.hasId) {\n var path = getValue('filterPath', resultObj);\n var itemname = getValue('name', resultObj);\n // eslint-disable-next-line\n var data = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', itemname, false));\n if (data.length > 0) {\n // eslint-disable-next-line\n var resultData = new DataManager(data).\n executeLocal(new Query().where('filterPath', 'equal', path, false));\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n this.treeObj.selectedNodes = [id];\n this.treeObj.dataBind();\n }\n }\n }\n else {\n var selectedNode = this.treeObj.getTreeData().filter(function (obj) { return obj.name === resultObj.name; })[0];\n this.treeObj.selectedNodes = [getValue('_fm_id', selectedNode)];\n this.treeObj.dataBind();\n }\n };\n NavigationPane.prototype.onDropPath = function (args) {\n this.onpasteEnd(args);\n this.selectResultNode(this.parent.dropData);\n this.parent.isDropEnd = !this.parent.isPasteError;\n };\n NavigationPane.prototype.onpasteEnd = function (args) {\n // eslint-disable-next-line\n var resultData = [];\n if (this.parent.hasId) {\n resultData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where('id', 'equal', getValue('id', args.cwd), false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(this.treeObj.getTreeData()).\n executeLocal(new Query().where(this.treeObj.fields.text, 'equal', getValue('name', args.cwd), false));\n if (nData.length > 0) {\n resultData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', getValue('filterPath', args.cwd), false));\n }\n }\n if (resultData.length > 0) {\n var id = getValue(this.treeObj.fields.id, resultData[0]);\n var toExpand = this.treeObj.expandedNodes.indexOf(id) === -1;\n this.removeChildNodes(id);\n this.addChild(args.files, id, toExpand);\n }\n this.parent.expandedId = null;\n this.onPathChanged(args);\n if (this.parent.isDragDrop) {\n this.checkDropPath(args);\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.checkDropPath = function (args) {\n if (this.parent.hasId) {\n this.parent.isDropEnd = !this.parent.isPasteError;\n readDropPath(this.parent);\n return;\n }\n if ((this.parent.dropPath.indexOf(getDirectoryPath(this.parent, args)) === -1)) {\n this.parent.isDropEnd = false;\n readDropPath(this.parent);\n }\n else {\n this.parent.isDropEnd = !this.parent.isPasteError;\n }\n };\n NavigationPane.prototype.onpasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.updateItemData();\n }\n this.moveNames = [];\n // eslint-disable-next-line\n var obj = this.parent.isDragDrop ? this.parent.dragData : this.parent.actionRecords;\n for (var i = 0; i < obj.length; i++) {\n if (getValue('isFile', obj[i]) === false) {\n this.moveNames.push(getValue('_fm_id', obj[i]));\n }\n }\n };\n NavigationPane.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.activeElements = [this.activeNode];\n }\n };\n NavigationPane.prototype.addEventListener = function () {\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(downloadInit, this.onDownLoadInit, this);\n this.parent.on(initialEnd, this.onInitialEnd, this);\n this.parent.on(finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(pathChanged, this.onPathChanged, this);\n this.parent.on(pasteEnd, this.onpasteEnd, this);\n this.parent.on(cutEnd, this.onCutEnd, this);\n this.parent.on(pasteInit, this.onpasteInit, this);\n this.parent.on(nodeExpand, this.onNodeExpanded, this);\n this.parent.on(createEnd, this.onCreateEnd, this);\n this.parent.on(selectedData, this.onSelectedData, this);\n this.parent.on(deleteInit, this.onDeleteInit, this);\n this.parent.on(deleteEnd, this.onDeleteEnd, this);\n this.parent.on(refreshEnd, this.onRefreshEnd, this);\n this.parent.on(updateTreeSelection, this.onSelectionChanged, this);\n this.parent.on(openInit, this.onOpenInit, this);\n this.parent.on(openEnd, this.onOpenEnd, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(renameInit, this.onRenameInit, this);\n this.parent.on(renameEnd, this.onRenameEnd, this);\n this.parent.on(renameEndParent, this.onRenameEndParent, this);\n this.parent.on(clearPathInit, this.onClearPathInit, this);\n this.parent.on(cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(dropInit, this.onDropInit, this);\n this.parent.on(menuItemData, this.onMenuItemData, this);\n this.parent.on(dragEnd, this.onDragEnd, this);\n this.parent.on(dragging, this.onDragging, this);\n this.parent.on(dropPath, this.onDropPath, this);\n this.parent.on(detailsInit, this.onDetailsInit, this);\n this.parent.on(pathDrag, this.onPathDrag, this);\n };\n NavigationPane.prototype.removeEventListener = function () {\n this.parent.off(initialEnd, this.onInitialEnd);\n this.parent.off(downloadInit, this.onDownLoadInit);\n this.parent.off(finalizeEnd, this.onFinalizeEnd);\n this.parent.off(selectedData, this.onSelectedData);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(pathChanged, this.onPathChanged);\n this.parent.off(pasteEnd, this.onpasteEnd);\n this.parent.off(cutEnd, this.onCutEnd);\n this.parent.off(pasteInit, this.onpasteInit);\n this.parent.off(updateTreeSelection, this.onSelectionChanged);\n this.parent.off(nodeExpand, this.onNodeExpanded);\n this.parent.off(createEnd, this.onCreateEnd);\n this.parent.off(refreshEnd, this.onRefreshEnd);\n this.parent.off(openInit, this.onOpenInit);\n this.parent.off(openEnd, this.onOpenEnd);\n this.parent.off(destroy, this.destroy);\n this.parent.off(renameInit, this.onRenameInit);\n this.parent.off(renameEnd, this.onRenameEnd);\n this.parent.off(renameEndParent, this.onRenameEndParent);\n this.parent.off(clearPathInit, this.onClearPathInit);\n this.parent.off(deleteInit, this.onDeleteInit);\n this.parent.off(deleteEnd, this.onDeleteEnd);\n this.parent.off(cutCopyInit, this.oncutCopyInit);\n this.parent.off(dropInit, this.onDropInit);\n this.parent.off(dragEnd, this.onDragEnd);\n this.parent.off(dragging, this.onDragging);\n this.parent.off(dropPath, this.onDropPath);\n this.parent.off(detailsInit, this.onDetailsInit);\n this.parent.off(menuItemData, this.onMenuItemData);\n this.parent.off(pathDrag, this.onPathDrag);\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n // eslint-disable-next-line\n var dataobj = this.getTreeData(this.treeObj.selectedNodes[0]);\n this.parent.itemData = dataobj;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n var liEle = closest(args.target, 'li');\n this.parent.itemData = this.getTreeData(liEle.getAttribute('data-uid'));\n }\n };\n /* istanbul ignore next */\n NavigationPane.prototype.onDragging = function (args) {\n var ele = closest(args.target, 'li');\n if (ele.classList.contains('e-node-collapsed')) {\n this.isDrag = true;\n var level = parseInt(ele.getAttribute('aria-level'), 10);\n this.treeObj.expandAll([ele.getAttribute('data-uid')], level + 1);\n this.isDrag = false;\n }\n };\n NavigationPane.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n var dropLi = closest(args.target, 'li');\n this.parent.dropData = this.getTreeData(dropLi)[0];\n this.parent.dropPath = this.getDropPath(dropLi, getValue('name', this.parent.dropData));\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name.\n * @private\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'navigationpane';\n };\n NavigationPane.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.treeObj) {\n this.unWireEvents();\n this.treeObj.destroy();\n }\n };\n NavigationPane.prototype.wireEvents = function () {\n this.keyboardModule = new KeyboardEvents(this.treeObj.element, {\n keyAction: this.keyDown.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n NavigationPane.prototype.unWireEvents = function () {\n this.keyboardModule.destroy();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.keyDown = function (e) {\n var action = e.action;\n switch (action) {\n case 'altEnter':\n this.parent.notify(detailsInit, {});\n GetDetails(this.parent, [], this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n if (this.parent.pathId[0] !== this.activeNode.getAttribute('data-uid')) {\n this.updateItemData();\n if (!hasEditAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], permissionEdit);\n }\n else {\n this.removeNodes = [];\n createDialog(this.parent, 'Delete');\n }\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'shiftF10':\n this.updateItemData();\n if (!hasDownloadAccess(this.parent.itemData[0])) {\n createDeniedDialog(this.parent, this.parent.itemData[0], permissionDownload);\n return;\n }\n if (this.parent.selectedItems.length !== 0) {\n this.doDownload();\n }\n break;\n case 'f2':\n if (this.parent.selectedItems.length === 0) {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n if (!hasEditAccess(data)) {\n createDeniedDialog(this.parent, data, permissionEdit);\n }\n else {\n this.updateRenameData();\n createDialog(this.parent, 'Rename');\n }\n }\n break;\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.getTreeData = function (args) {\n // eslint-disable-next-line\n var data = this.treeObj.getTreeData(args);\n for (var i = 0; i < data.length; i++) {\n if (isNullOrUndefined(getValue('hasChild', data[i]))) {\n setValue('hasChild', false, data[i]);\n }\n }\n return data;\n };\n NavigationPane.prototype.updateRenameData = function () {\n this.updateItemData();\n this.parent.currentItemText = getValue('name', this.parent.itemData[0]);\n };\n NavigationPane.prototype.updateItemData = function () {\n // eslint-disable-next-line\n var data = this.getTreeData(this.treeObj.selectedNodes[0])[0];\n this.parent.itemData = [data];\n this.parent.isFile = false;\n };\n NavigationPane.prototype.updateActionData = function () {\n this.updateItemData();\n var newPath = getParentPath(this.parent.path);\n this.parent.setProperties({ path: newPath }, true);\n this.parent.pathId.pop();\n this.parent.pathNames.pop();\n };\n /* istanbul ignore next */\n NavigationPane.prototype.doDownload = function () {\n var newPath = getParentPath(this.parent.path);\n var itemId = this.treeObj.selectedNodes[0];\n var name = (itemId === this.parent.pathId[0]) ? '' : getValue('name', this.parent.itemData[0]);\n Download(this.parent, newPath, [name]);\n };\n return NavigationPane;\n}());\n\n/**\n * DetailsView module\n */\nvar DetailsView = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the GridView module\n *\n * @param {FileManager} parent - specifies the parent.\n * @hidden\n */\n function DetailsView(parent) {\n this.isInteracted = true;\n this.interaction = true;\n this.isPasteOperation = false;\n this.isColumnRefresh = false;\n this.dragObj = null;\n this.startIndex = null;\n this.firstItemIndex = null;\n this.isSelectionUpdate = false;\n this.currentSelectedItem = [];\n this.count = 0;\n this.isRendered = true;\n this.isLoaded = false;\n this.isNameWidth = false;\n this.pasteOperation = false;\n this.uploadOperation = false;\n /* istanbul ignore next */\n // eslint:disable-next-line\n this.actionDivert = false;\n Grid.Inject(Resize, ContextMenu$1, Sort, VirtualScroll);\n this.parent = parent;\n this.element = select('#' + this.parent.element.id + GRID_ID, this.parent.element);\n this.addEventListener();\n this.keyConfigs = {\n altEnter: 'alt+enter',\n esc: 'escape',\n tab: 'tab',\n moveDown: 'downarrow',\n ctrlEnd: 'ctrl+end',\n ctrlHome: 'ctrl+home',\n ctrlDown: 'ctrl+downarrow',\n ctrlLeft: 'ctrl+leftarrow',\n ctrlRight: 'ctrl+rightarrow',\n shiftEnd: 'shift+end',\n shiftHome: 'shift+home',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n ctrlUp: 'ctrl+uparrow',\n csEnd: 'ctrl+shift+end',\n csHome: 'ctrl+shift+home',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n space: 'space',\n ctrlSpace: 'ctrl+space',\n shiftSpace: 'shift+space',\n csSpace: 'ctrl+shift+space',\n end: 'end',\n home: 'home',\n moveUp: 'uparrow',\n del: 'delete',\n ctrlX: this.parent.isMac ? 'cmd+x' : 'ctrl+x',\n ctrlC: this.parent.isMac ? 'cmd+c' : 'ctrl+c',\n ctrlV: this.parent.isMac ? 'cmd+v' : 'ctrl+v',\n ctrlShiftN: 'ctrl+shift+n',\n shiftdel: 'shift+delete',\n ctrlD: 'ctrl+d',\n f2: 'f2',\n ctrlA: 'ctrl+a',\n enter: 'enter'\n };\n }\n /* istanbul ignore next */\n DetailsView.prototype.render = function (args) {\n showSpinner(this.parent.element);\n if (this.parent.view === 'Details') {\n removeClass([this.parent.element], MULTI_SELECT);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n this.checkNameWidth();\n var columns = this.getColumns();\n var sortSettings = void 0;\n if (this.parent.isMobile) {\n sortSettings = [];\n }\n else {\n if (this.parent.sortOrder !== 'None') {\n sortSettings = [{ direction: this.parent.sortOrder, field: this.parent.sortBy }];\n }\n }\n this.gridObj = new Grid({\n dataSource: items,\n allowSorting: true,\n rowSelecting: this.onSelection.bind(this, 'select'),\n rowDeselecting: this.onSelection.bind(this, 'unselect'),\n rowSelected: this.onSelected.bind(this),\n rowDeselected: this.onDeSelection.bind(this),\n allowResizing: this.parent.detailsViewSettings.columnResizing,\n selectionSettings: {\n type: this.parent.allowMultiSelection ? 'Multiple' : 'Single',\n checkboxMode: 'ResetOnRowClick',\n persistSelection: (this.parent.enableVirtualization) ? true : false\n },\n enableRtl: this.parent.enableRtl,\n pageSettings: { pageSize: 20 },\n enableVirtualization: this.parent.enableVirtualization,\n enablePersistence: this.parent.enablePersistence,\n enableVirtualMaskRow: true,\n sortSettings: { allowUnsort: false, columns: sortSettings },\n columns: columns,\n recordDoubleClick: this.DblClickEvents.bind(this),\n beforeDataBound: this.onBeforeDataBound.bind(this),\n dataBound: this.onDataBound.bind(this),\n rowDataBound: this.onRowDataBound.bind(this),\n actionBegin: this.onActionBegin.bind(this),\n headerCellInfo: this.onHeaderCellInfo.bind(this),\n width: '100%',\n height: (this.parent.enableVirtualization) ? this.getGridHeight() : 'auto',\n beforeCopy: function (args) { args.cancel = true; },\n // eslint-disable-next-line\n load: function (args) {\n this.focusModule.destroy();\n },\n locale: this.parent.locale\n });\n this.gridObj.isStringTemplate = true;\n this.gridObj.appendTo('#' + this.parent.element.id + GRID_ID);\n this.wireEvents();\n this.adjustHeight();\n this.emptyArgs = args;\n }\n };\n /**\n * Gets the grid height.\n * @returns The grid height.\n * @private\n */\n DetailsView.prototype.getGridHeight = function () {\n // Get the content pane and breadcrumb bar elements\n var pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);\n // The maximum height of the header is 36\n var headerMaxHeight = 36;\n // Calculate and return the grid height\n return (pane.offsetHeight - bar.offsetHeight - headerMaxHeight);\n };\n DetailsView.prototype.checkNameWidth = function () {\n var initialColumn = this.parent.detailsViewSettings.columns;\n this.isNameWidth = false;\n for (var i = 0; i < initialColumn.length; i++) {\n if (initialColumn[i].field === 'name') {\n this.isNameWidth = !isNullOrUndefined(initialColumn[i].width);\n return;\n }\n }\n };\n DetailsView.prototype.adjustWidth = function (columns, fieldName) {\n if (this.isNameWidth && (fieldName === 'name')) {\n return;\n }\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === fieldName) {\n var nameWidth = void 0;\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n nameWidth = (this.element.clientWidth <= 500) ? '120px' : 'auto';\n }\n else {\n nameWidth = (this.element.clientWidth <= 680) ? ((fieldName === 'name') ? '120px' : '180px') : 'auto';\n }\n columns[i].width = nameWidth;\n }\n }\n };\n DetailsView.prototype.getColumns = function () {\n var columns;\n if (this.parent.isMobile) {\n columns = [\n {\n field: 'name', headerText: getLocaleText(this.parent, 'Name'), width: 'auto', minWidth: 120, headerTextAlign: 'Left',\n template: '
${name}
${_fm_modified}
' +\n '${size}'\n }\n ];\n }\n else {\n columns = JSON.parse(JSON.stringify(this.parent.detailsViewSettings.columns));\n this.adjustWidth(columns, 'name');\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].headerText = getLocaleText(this.parent, columns[i].headerText);\n }\n }\n var iWidth = ((this.parent.isMobile || this.parent.isBigger) ? '54' : '46');\n var icon = {\n field: 'type', width: iWidth, minWidth: iWidth, template: '',\n allowResizing: false, allowSorting: true, customAttributes: { class: 'e-fe-grid-icon' },\n headerTemplate: ''\n };\n columns.unshift(icon);\n if (this.parent.allowMultiSelection) {\n var cWidth = (this.parent.isBigger ? '36' : '26');\n var cBox = {\n type: 'checkbox', width: cWidth, minWidth: cWidth, customAttributes: { class: 'e-fe-checkbox' },\n allowResizing: false, allowSorting: false\n };\n if (this.parent.isMobile) {\n columns.push(cBox);\n }\n else {\n columns.unshift(cBox);\n }\n }\n for (var i = 0, len = columns.length; i < len; i++) {\n columns[i].disableHtmlEncode = !this.parent.enableHtmlSanitizer;\n }\n return columns;\n };\n DetailsView.prototype.adjustHeight = function () {\n if (!this.gridObj) {\n return;\n }\n var pane = select('#' + this.parent.element.id + CONTENT_ID, this.parent.element);\n var bar = select('#' + this.parent.element.id + BREADCRUMBBAR_ID, this.parent.element);\n var gridHeader = select('.' + GRID_HEADER, this.parent.element);\n var height = (pane.offsetHeight - bar.offsetHeight - gridHeader.offsetHeight);\n this.gridObj.height = height;\n this.gridObj.dataBind();\n };\n DetailsView.prototype.renderCheckBox = function () {\n this.gridObj.columns = this.getColumns();\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n };\n DetailsView.prototype.onRowDataBound = function (args) {\n var td = select('.e-fe-grid-name', args.row);\n if (!td) {\n var columns = this.parent.detailsViewSettings.columns;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'name') {\n td = args.row.children[this.parent.allowMultiSelection ? (i + 2) : (i + 1)];\n break;\n }\n }\n }\n if (td) {\n td.setAttribute('title', getValue('name', args.data));\n }\n if (this.parent.isLayoutChange && this.parent.isCut && this.parent.fileAction === 'move' &&\n this.parent.selectedNodes && this.parent.selectedNodes.length !== 0) {\n if (this.parent.selectedNodes.indexOf(getValue('name', args.data)) !== -1) {\n addBlur(args.row);\n }\n }\n if (!this.parent.showFileExtension && getValue('isFile', args.data)) {\n var textEle = args.row.querySelector('.e-fe-text');\n if (textEle) {\n var name_1 = getValue('name', args.data);\n var type = getValue('type', args.data);\n textEle.innerHTML = name_1.substr(0, name_1.length - type.length);\n }\n }\n if (getValue('size', args.data) !== undefined && args.row.querySelector('.e-fe-size')) {\n var sizeEle = args.row.querySelector('.e-fe-size');\n var modifiedSize = void 0;\n if (!getValue('isFile', args.data)) {\n modifiedSize = '';\n }\n else {\n var sizeValue = getValue('size', args.data);\n var intl = new Internationalization(this.parent.locale);\n var value = intl.formatNumber((sizeValue / 1024), { format: 'n' });\n modifiedSize = value + ' ' + getLocaleText(this.parent, 'KB');\n }\n sizeEle.innerHTML = modifiedSize;\n }\n if (this.parent.isMobile) {\n if (getValue('_fm_modified', args.data) !== undefined && args.row.querySelector('.e-fe-date')) {\n var dateEle = args.row.querySelector('.e-fe-date');\n var intl = new Internationalization(this.parent.locale);\n var columns = this.parent.detailsViewSettings.columns;\n // eslint-disable-next-line\n var format = void 0;\n for (var i = 0; i < columns.length; i++) {\n if (columns[i].field === 'dateModified') {\n format = columns[i].format;\n break;\n }\n }\n var formattedString = intl.formatDate(new Date(getValue('_fm_modified', args.data)), format);\n dateEle.innerHTML = formattedString;\n }\n }\n var checkWrap = args.row.querySelector('.' + CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n if (!hasEditAccess(args.data)) {\n args.row.className += ' ' + getAccessClass(args.data);\n }\n var eventArgs = {\n element: args.row,\n fileDetails: args.data,\n module: 'DetailsView'\n };\n this.parent.trigger('fileLoad', eventArgs);\n };\n DetailsView.prototype.onActionBegin = function (args) {\n if (args.requestType === 'sorting') {\n this.parent.setProperties({ sortOrder: args.direction }, true);\n this.parent.setProperties({ sortBy: args.columnName }, true);\n if (this.parent.selectedItems.length !== 0) {\n this.sortItem = true;\n var rows = this.gridObj.getSelectedRowIndexes();\n var len = rows.length;\n this.sortSelectedNodes = [];\n while (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.sortSelectedNodes.push(getValue(this.parent.hasId ? 'id' : 'name', data));\n len--;\n }\n }\n this.parent.notify(sortByChange, {});\n }\n };\n DetailsView.prototype.onHeaderCellInfo = function (args) {\n var checkWrap = args.node.querySelector('.' + CB_WRAP);\n if (checkWrap) {\n checkWrap.classList.add('e-small');\n }\n };\n DetailsView.prototype.onBeforeDataBound = function (args) {\n showSpinner(this.parent.element);\n // eslint-disable-next-line\n var items = getSortedData(this.parent, (this.parent.enableVirtualization) ? args.result : this.gridObj.dataSource);\n args.result = items;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDataBound = function () {\n this.createDragObj();\n if ((this.parent.selectedItems.length !== 0 && !this.parent.enableVirtualization) ||\n ((this.parent.selectedItems.length !== 0 && this.parent.enableVirtualization &&\n this.element.querySelector('.e-content').scrollTop == 0))) {\n this.selectRecords(this.parent.selectedItems);\n }\n if (this.isPasteOperation === true) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.parent.pasteNodes);\n this.isPasteOperation = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.parent.createdItem) {\n this.selectRecords([getValue(this.parent.hasId ? 'id' : 'name', this.parent.createdItem)]);\n this.parent.createdItem = null;\n }\n if (this.parent.layoutSelectedItems.length) {\n this.selectRecords(this.parent.layoutSelectedItems);\n }\n if (this.parent.renamedItem) {\n this.addSelection(this.parent.renamedItem);\n this.parent.renamedItem = null;\n }\n if (this.sortItem === true) {\n this.selectRecords(this.sortSelectedNodes);\n this.sortItem = false;\n }\n if (this.isSelectionUpdate) {\n if (!this.isColumnRefresh) {\n this.selectRecords(this.currentSelectedItem);\n this.isSelectionUpdate = false;\n }\n else {\n this.isColumnRefresh = false;\n }\n }\n if (this.uploadOperation === true) {\n this.count++;\n this.selectRecords(this.parent.uploadItem);\n if (this.count === this.parent.uploadItem.length) {\n this.uploadOperation = false;\n this.parent.uploadItem = [];\n }\n }\n if (this.gridObj.currentViewData.length * this.gridObj.getRowHeight() < this.gridObj.height) {\n var hdTable = this.gridObj.getHeaderContent();\n hdTable.style.paddingRight = '';\n hdTable.style.paddingLeft = '';\n var hdContent = select('.e-headercontent', hdTable);\n hdContent.style.borderRightWidth = '0';\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.style.overflowY = '';\n cnTable.classList.add('e-scrollShow');\n }\n else {\n var hdTable = this.gridObj.getHeaderContent();\n if (!this.parent.enableRtl) {\n hdTable.style.paddingRight = '16px';\n }\n else {\n hdTable.style.paddingLeft = '16px';\n }\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n cnTable.classList.remove('e-scrollShow');\n }\n this.isRendered = true;\n this.parent.isLayoutChange = false;\n hideSpinner(this.parent.element);\n this.checkEmptyDiv(this.emptyArgs);\n this.isInteracted = this.isLoaded ? true : this.isInteracted;\n this.isLoaded = false;\n };\n DetailsView.prototype.selectRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n var sRecords = [];\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var node = this.parent.hasId ? getValue('id', gridRecords[i]) : getName(this.parent, gridRecords[i]);\n if (nodes.indexOf(node) !== -1) {\n sRecords.push(i);\n }\n else if (!this.parent.showFileExtension && node.includes('.')) {\n var Str2 = node.split('.').slice(0, -1).join('.');\n if (nodes.indexOf(Str2) !== -1) {\n sRecords.push(i);\n }\n }\n }\n if (sRecords.length !== 0) {\n this.gridObj.selectRows(sRecords);\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.addSelection = function (data) {\n // eslint-disable-next-line\n var items = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var rData = [];\n if (this.parent.hasId) {\n rData = new DataManager(items).\n executeLocal(new Query().where('id', 'equal', this.parent.renamedId, false));\n }\n else {\n // eslint-disable-next-line\n var nData = new DataManager(items).\n executeLocal(new Query().where('name', 'equal', getValue('name', data), false));\n if (nData.length > 0) {\n rData = new DataManager(nData).\n executeLocal(new Query().where('filterPath', 'equal', this.parent.filterPath, false));\n }\n }\n if (rData.length > 0) {\n var index = items.indexOf(rData[0]);\n this.gridObj.selectRows([index]);\n }\n };\n DetailsView.prototype.onSortColumn = function () {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortModule.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n if (this.element.querySelector('.e-content').scrollTop !== 0) {\n this.gridObj.freezeRefresh();\n }\n };\n DetailsView.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() && e.module !== 'common') {\n /* istanbul ignore next */\n return;\n }\n for (var _i = 0, _a = Object.keys(e.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.createDragObj();\n break;\n case 'height':\n this.adjustHeight();\n break;\n case 'detailsViewSettings':\n if (!isNullOrUndefined(this.gridObj)) {\n this.checkNameWidth();\n var columns = this.getColumns();\n this.gridObj.columns = columns;\n this.gridObj.allowResizing = this.parent.detailsViewSettings.columnResizing;\n this.gridObj.dataBind();\n this.gridObj.refreshColumns();\n }\n break;\n case 'selectedItems':\n this.interaction = false;\n if (this.parent.selectedItems.length !== 0) {\n if (!this.parent.allowMultiSelection) {\n var slItems = this.parent.selectedItems.slice(this.parent.selectedItems.length - 1);\n this.parent.setProperties({ selectedItems: slItems }, true);\n }\n this.selectRecords(this.parent.selectedItems);\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n }\n else if (!isNullOrUndefined(this.gridObj)) {\n this.gridObj.clearSelection();\n }\n break;\n case 'showFileExtension':\n read(this.parent, pathChanged, this.parent.path);\n break;\n case 'showHiddenItems':\n read(this.parent, pathChanged, this.parent.path);\n break;\n case 'allowMultiSelection':\n if (!isNullOrUndefined(this.gridObj)) {\n this.currentSelectedItem = this.parent.selectedItems;\n this.gridObj.selectionSettings.type = e.newProp.allowMultiSelection ? 'Multiple' : 'Single';\n this.isSelectionUpdate = true;\n this.renderCheckBox();\n }\n break;\n case 'view':\n updateLayout(this.parent, 'Details');\n break;\n case 'width':\n this.onDetailsResize();\n }\n }\n };\n DetailsView.prototype.onPathChanged = function (args) {\n this.parent.isCut = false;\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() === '' && this.gridObj) {\n this.parent.searchedItems = [];\n if (!this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n else {\n this.updatePathColumn();\n }\n }\n removeBlur(this.parent);\n if (this.parent.view === 'Details') {\n /* istanbul ignore next */\n this.isInteracted = false;\n showSpinner(this.parent.element);\n this.parent.setProperties({ selectedItems: [] }, true);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.gridObj.freezeRefresh();\n }\n this.emptyArgs = args;\n };\n DetailsView.prototype.updatePathColumn = function () {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && columnData[len - 1].field !== 'filterPath' && !this.parent.isMobile) {\n var pathColumn$$1 = {\n field: 'filterPath', headerText: getLocaleText(this.parent, 'Path'), minWidth: 180, width: 'auto'\n };\n this.gridObj.columns.push(pathColumn$$1);\n this.adjustWidth(this.gridObj.columns, 'filterPath');\n this.adjustWidth(this.gridObj.columns, 'name');\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n };\n DetailsView.prototype.checkEmptyDiv = function (args) {\n // eslint-disable-next-line\n var items = getSortedData(this.parent, args.files);\n if (items.length === 0 && !isNullOrUndefined(this.element.querySelector('.' + GRID_VIEW))) {\n createEmptyElement(this.parent, this.element, args);\n }\n else if (items.length !== 0 && this.element.querySelector('.' + EMPTY)) {\n if (this.element.querySelector('.' + GRID_VIEW).querySelector('.' + EMPTY)) {\n var emptyDiv = this.element.querySelector('.' + GRID_VIEW).querySelector('.' + EMPTY);\n this.element.querySelector('.' + GRID_VIEW).removeChild(emptyDiv);\n }\n else {\n this.element.removeChild(this.element.querySelector('.' + EMPTY));\n }\n }\n };\n DetailsView.prototype.onOpenInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n // eslint-disable-next-line\n var data = this.gridObj.getSelectedRecords()[0];\n this.openContent(data);\n }\n };\n DetailsView.prototype.DblClickEvents = function (args) {\n this.gridObj.selectRows([args.rowIndex]);\n // eslint-disable-next-line\n var data;\n if (args.rowData) {\n data = JSON.parse(JSON.stringify(args.rowData));\n this.openContent(data);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.openContent = function (data) {\n var _this = this;\n if (!hasReadAccess(data)) {\n createDeniedDialog(this.parent, data, permissionRead);\n return;\n }\n var eventArgs = { cancel: false, fileDetails: data, module: 'DetailsView' };\n this.parent.trigger('fileOpen', eventArgs, function (fileOpenArgs) {\n if (!fileOpenArgs.cancel) {\n var name_2 = getValue('name', data);\n if (getValue('isFile', data)) {\n var icon = fileType(data);\n if (icon === ICON_IMAGE) {\n var imgUrl = getImageUrl(_this.parent, data);\n createImageDialog(_this.parent, name_2, imgUrl);\n }\n }\n else {\n var val = _this.parent.breadcrumbbarModule.searchObj.element.value;\n if (val === '' && !_this.parent.isFiltered) {\n var id = getValue('id', data);\n _this.parent.oldPath = _this.parent.path;\n var newPath = _this.parent.path + (isNullOrUndefined(id) ? name_2 : id) + '/';\n _this.parent.setProperties({ path: newPath }, true);\n _this.parent.pathNames.push(name_2);\n _this.parent.pathId.push(getValue('_fm_id', data));\n _this.parent.itemData = [data];\n openAction(_this.parent);\n }\n else {\n openSearchFolder(_this.parent, data);\n }\n _this.parent.isFiltered = false;\n }\n _this.element.focus();\n if (_this.parent.enableVirtualization) {\n _this.parent.element.querySelector('#' + _this.parent.element.id + IMG_DIALOG_ID).focus();\n }\n }\n });\n };\n /* istanbul ignore next */\n DetailsView.prototype.onLayoutChange = function (args) {\n if (this.parent.view === 'Details') {\n if (this.parent.enableVirtualization) {\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.isLoaded = true;\n }\n if (this.parent.isFiltered) {\n this.updatePathColumn();\n this.parent.setProperties({ selectedItems: [] }, true);\n }\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.parent.notify(hideLayout, {});\n this.gridObj.element.classList.remove(DISPLAY_NONE);\n this.isInteracted = false;\n this.gridObj.clearSelection();\n if (this.parent.breadcrumbbarModule.searchObj.element.value.trim() !== '') {\n this.onSearchFiles(args);\n }\n this.adjustHeight();\n if (this.gridObj.sortSettings.columns.length > 0 && this.gridObj.sortSettings.columns[0].field !== this.parent.sortBy) {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn(this.parent.sortBy, this.parent.sortOrder);\n }\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSearchFiles = function (args) {\n if (this.parent.view === 'Details') {\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(selectionChanged, {});\n if (!this.parent.isLayoutChange) {\n this.parent.layoutSelectedItems = [];\n }\n this.updatePathColumn();\n this.parent.searchedItems = args.files;\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.removePathColumn = function (isRefresh) {\n var len = this.gridObj.columns.length;\n var columnData = JSON.parse(JSON.stringify(this.gridObj.columns));\n if (columnData[len - 1].field && (columnData[len - 1].field === 'filterPath')) {\n /* istanbul ignore next */\n if (this.gridObj.sortSettings.columns[0].field === 'filterPath') {\n if (this.parent.sortOrder !== 'None') {\n this.gridObj.sortColumn('name', this.parent.sortOrder);\n }\n else {\n // eslint-disable-next-line\n this.gridObj.dataSource = getSortedData(this.parent, this.gridObj.dataSource);\n }\n this.parent.notify(sortByChange, {});\n }\n this.gridObj.columns.pop();\n if (!isRefresh) {\n this.isColumnRefresh = true;\n this.gridObj.refreshColumns();\n }\n }\n };\n DetailsView.prototype.onFinalizeEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n if (!this.gridObj) {\n this.render(args);\n }\n else {\n this.onPathChanged(args);\n }\n };\n DetailsView.prototype.onCreateEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n };\n DetailsView.prototype.onRenameInit = function () {\n if (this.parent.activeModule === 'detailsview' && this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n }\n };\n DetailsView.prototype.onSelectedData = function () {\n if (this.parent.activeModule === 'detailsview') {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n };\n DetailsView.prototype.onDeleteInit = function () {\n if (this.parent.activeModule === 'detailsview') {\n Delete(this.parent, this.parent.selectedItems, this.parent.path, 'delete');\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDeleteEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.onPathChanged(args);\n this.parent.setProperties({ selectedItems: [] }, true);\n };\n DetailsView.prototype.onRefreshEnd = function (args) {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.isInteracted = false;\n this.removePathColumn(false);\n this.gridObj.dataSource = getSortedData(this.parent, args.files);\n this.emptyArgs = args;\n };\n DetailsView.prototype.onHideLayout = function () {\n if (this.parent.view !== 'Details' && this.gridObj) {\n this.gridObj.element.classList.add(DISPLAY_NONE);\n }\n };\n DetailsView.prototype.onSelectAllInit = function () {\n if (this.parent.view === 'Details') {\n this.isInteracted = false;\n if (this.parent.allowMultiSelection) {\n this.gridObj.selectionModule.selectRowsByRange(0, this.gridObj.getRows().length);\n }\n else {\n this.gridObj.selectRow(this.gridObj.getRows().length - 1);\n }\n this.isInteracted = true;\n this.interaction = true;\n }\n };\n DetailsView.prototype.onClearAllInit = function () {\n if (this.parent.view === 'Details') {\n this.removeSelection();\n this.interaction = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelectionChanged = function () {\n removeClass([this.element], HEADER_CHECK);\n if (this.parent.selectedItems.length > 0) {\n addClass([this.element], HEADER_CHECK);\n }\n };\n DetailsView.prototype.onLayoutRefresh = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.adjustHeight();\n };\n DetailsView.prototype.onBeforeRequest = function () {\n this.isRendered = false;\n };\n DetailsView.prototype.onAfterRequest = function () {\n this.isRendered = true;\n };\n DetailsView.prototype.onUpdateSelectionData = function () {\n if (this.parent.view !== 'Details') {\n return;\n }\n this.parent.itemData = this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.addEventListener = function () {\n this.parent.on(finalizeEnd, this.onFinalizeEnd, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(layoutChange, this.onLayoutChange, this);\n this.parent.on(pathChanged, this.onPathChanged, this);\n this.parent.on(createEnd, this.onCreateEnd, this);\n this.parent.on(dropInit, this.onDropInit, this);\n this.parent.on(detailsInit, this.onDetailsInit, this);\n this.parent.on(refreshEnd, this.onRefreshEnd, this);\n this.parent.on(search, this.onSearchFiles, this);\n this.parent.on(methodCall, this.onMethodCall, this);\n this.parent.on(actionFailure, this.onActionFailure, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(deleteInit, this.onDeleteInit, this);\n this.parent.on(deleteEnd, this.onDeleteEnd, this);\n this.parent.on(selectedData, this.onSelectedData, this);\n this.parent.on(renameInit, this.onRenameInit, this);\n this.parent.on(renameEnd, this.onPathChanged, this);\n this.parent.on(openInit, this.onOpenInit, this);\n this.parent.on(sortColumn, this.onSortColumn, this);\n this.parent.on(openEnd, this.onPathChanged, this);\n this.parent.on(filterEnd, this.onPathChanged, this);\n this.parent.on(pasteInit, this.onPasteInit, this);\n this.parent.on(hideLayout, this.onHideLayout, this);\n this.parent.on(selectAllInit, this.onSelectAllInit, this);\n this.parent.on(clearAllInit, this.onClearAllInit, this);\n this.parent.on(pathColumn, this.onPathColumn, this);\n this.parent.on(selectionChanged, this.onSelectionChanged, this);\n this.parent.on(beforeRequest, this.onBeforeRequest, this);\n this.parent.on(afterRequest, this.onAfterRequest, this);\n this.parent.on(pasteEnd, this.onpasteEnd, this);\n this.parent.on(cutCopyInit, this.oncutCopyInit, this);\n this.parent.on(menuItemData, this.onMenuItemData, this);\n this.parent.on(resizeEnd, this.onDetailsResizeHandler, this);\n this.parent.on(splitterResize, this.onDetailsResize, this);\n this.parent.on(layoutRefresh, this.onLayoutRefresh, this);\n this.parent.on(dropPath, this.onDropPath, this);\n this.parent.on(updateSelectionData, this.onUpdateSelectionData, this);\n };\n DetailsView.prototype.removeEventListener = function () {\n this.parent.off(finalizeEnd, this.onFinalizeEnd);\n this.parent.off(destroy, this.destroy);\n this.parent.off(layoutChange, this.onLayoutChange);\n this.parent.off(pathChanged, this.onPathChanged);\n this.parent.off(pasteInit, this.onPasteInit);\n this.parent.off(createEnd, this.onCreateEnd);\n this.parent.off(refreshEnd, this.onRefreshEnd);\n this.parent.off(search, this.onSearchFiles);\n this.parent.off(methodCall, this.onMethodCall);\n this.parent.off(actionFailure, this.onActionFailure);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(renameInit, this.onRenameInit);\n this.parent.off(renameEnd, this.onPathChanged);\n this.parent.off(filterEnd, this.onPathChanged);\n this.parent.off(openInit, this.onOpenInit);\n this.parent.off(sortColumn, this.onSortColumn);\n this.parent.off(openEnd, this.onPathChanged);\n this.parent.off(hideLayout, this.onHideLayout);\n this.parent.off(selectAllInit, this.onSelectAllInit);\n this.parent.off(clearAllInit, this.onClearAllInit);\n this.parent.off(deleteInit, this.onDeleteInit);\n this.parent.off(deleteEnd, this.onDeleteEnd);\n this.parent.off(pathColumn, this.onPathColumn);\n this.parent.off(selectionChanged, this.onSelectionChanged);\n this.parent.off(beforeRequest, this.onBeforeRequest);\n this.parent.off(afterRequest, this.onAfterRequest);\n this.parent.off(pasteEnd, this.onpasteEnd);\n this.parent.off(cutCopyInit, this.oncutCopyInit);\n this.parent.off(dropInit, this.onDropInit);\n this.parent.off(selectedData, this.onSelectedData);\n this.parent.off(detailsInit, this.onDetailsInit);\n this.parent.off(menuItemData, this.onMenuItemData);\n this.parent.off(resizeEnd, this.onDetailsResizeHandler);\n this.parent.off(splitterResize, this.onDetailsResize);\n this.parent.off(layoutRefresh, this.onLayoutRefresh);\n this.parent.off(dropPath, this.onDropPath);\n this.parent.off(updateSelectionData, this.onUpdateSelectionData);\n };\n DetailsView.prototype.onActionFailure = function () { this.interaction = true; };\n // eslint-disable-next-line\n DetailsView.prototype.onMenuItemData = function (args) {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = [this.gridObj.getRowInfo(args.target).rowData];\n }\n };\n DetailsView.prototype.onPasteInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.itemData = (this.parent.folderPath !== '') ? this.gridObj.getSelectedRecords() :\n [getPathObject(this.parent)];\n }\n };\n DetailsView.prototype.onDetailsInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n }\n else {\n this.parent.itemData = [getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent)];\n }\n }\n };\n DetailsView.prototype.dragHelper = function (args) {\n var dragTarget = args.sender.target;\n var dragLi = dragTarget.closest('tr.e-row');\n if (!dragLi) {\n return null;\n }\n var name;\n if (dragLi.getElementsByClassName('e-fe-text')[0]) {\n name = dragLi.getElementsByClassName('e-fe-text')[0].innerText;\n }\n else if (dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling) {\n name = dragLi.getElementsByClassName(\"e-rowcell e-templatecell\")[0].nextElementSibling.innerText;\n }\n if (dragLi && !dragLi.querySelector('.e-active')) {\n this.selectRecords([name]);\n }\n getModule(this.parent, dragLi);\n this.parent.activeElements = [];\n this.parent.dragData = [];\n // eslint-disable-next-line\n this.parent.dragData = this.gridObj.getSelectedRecords();\n var dragRow;\n if (this.parent.dragData.length === 0 && dragLi) {\n dragRow = this.gridObj.getRowInfo(dragLi);\n }\n if (dragRow) {\n this.parent.dragData.push(dragRow.rowData);\n }\n this.parent.dragPath = this.parent.path;\n this.parent.activeElements = this.gridObj.getSelectedRows();\n createVirtualDragElement(this.parent);\n return this.parent.virtualDragElement;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onDetailsResize = function () {\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNullOrUndefined(this.gridObj)) {\n var gridHeader = this.gridObj.getHeaderContent().querySelector('.e-headercontent');\n var gridHeaderColGroup = gridHeader.firstChild.childNodes[0];\n var gridContentColGroup = this.gridObj.getContent().querySelector('.e-content .e-table').children[0];\n var gridHeaderColNames = this.gridObj.getColumns();\n for (var i = 0; i < gridHeaderColNames.length; i++) {\n if ((!this.isNameWidth && gridHeaderColNames[i].field === 'name') || gridHeaderColNames[i].field === 'filterPath') {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n if (this.element.clientWidth <= 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else if (this.element.clientWidth > 500) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n else {\n if (this.element.clientWidth <= 680) {\n if (gridHeaderColNames[i].field === 'name') {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 120px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 120px');\n }\n else {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: 180px');\n gridContentColGroup.children[i].setAttribute('style', 'width: 180px');\n }\n }\n else if (this.element.clientWidth > 680) {\n gridHeaderColGroup.children[i].setAttribute('style', 'width: auto');\n gridContentColGroup.children[i].setAttribute('style', 'width: auto');\n }\n }\n }\n }\n }\n };\n DetailsView.prototype.onDetailsResizeHandler = function () {\n this.onDetailsResize();\n if (this.parent.view === 'Details' && !this.parent.isMobile && !isNullOrUndefined(this.gridObj)) {\n this.adjustHeight();\n }\n };\n DetailsView.prototype.createDragObj = function () {\n var _this = this;\n if (!this.parent.isMobile && this.gridObj) {\n if (this.parent.allowDragAndDrop) {\n if (this.dragObj) {\n this.dragObj.destroy();\n }\n this.dragObj = new Draggable(this.gridObj.element, {\n cursorAt: this.parent.dragCursorPosition,\n distance: 5,\n enableTailMode: true,\n dragArea: this.parent.element,\n dragTarget: '.' + ROW,\n drag: draggingHandler.bind(this, this.parent),\n dragStart: function (args) {\n dragStartHandler(_this.parent, args, _this.dragObj);\n },\n dragStop: dragStopHandler.bind(this, this.parent),\n enableAutoScroll: true,\n helper: this.dragHelper.bind(this)\n });\n }\n else if (!this.parent.allowDragAndDrop && this.dragObj) {\n this.dragObj.destroy();\n }\n }\n };\n DetailsView.prototype.onDropInit = function (args) {\n if (this.parent.targetModule === this.getModuleName()) {\n /* istanbul ignore next */\n // eslint-disable-next-line\n var cwdData = getValue(this.parent.pathId[this.parent.pathId.length - 1], this.parent.feParent);\n if (!args.target.closest('tr')) {\n this.parent.dropPath = this.parent.path;\n this.parent.dropData = cwdData;\n }\n else {\n // eslint-disable-next-line\n var info = null;\n // eslint-disable-next-line\n info = this.gridObj.getRowInfo(args.target).rowData;\n this.parent.dropPath = info.isFile ? this.parent.path : getFullPath(this.parent, info, this.parent.path);\n this.parent.dropData = info.isFile ? cwdData : info;\n }\n }\n };\n DetailsView.prototype.oncutCopyInit = function () {\n if (this.parent.activeModule === this.getModuleName()) {\n this.parent.activeRecords = this.gridObj.getSelectedRecords();\n this.parent.activeElements = this.gridObj.getSelectedRows();\n }\n };\n DetailsView.prototype.onpasteEnd = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n if (this.parent.path === this.parent.destinationPath || this.parent.path === getDirectoryPath(this.parent, args)) {\n this.onPathChanged(args);\n }\n }\n };\n DetailsView.prototype.onDropPath = function (args) {\n if (this.parent.view === 'Details') {\n this.isPasteOperation = true;\n this.onPathChanged(args);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns modules name.\n * @private\n */\n DetailsView.prototype.getModuleName = function () {\n return 'detailsview';\n };\n DetailsView.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n if (this.gridObj) {\n this.unWireEvents();\n this.gridObj.destroy();\n }\n };\n DetailsView.prototype.updateType = function (item) {\n var folder = select('.' + FOLDER, item);\n this.parent.isFile = isNullOrUndefined(folder) ? true : false;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelection = function (action, args) {\n var eventArgs = {\n action: action, fileDetails: args.data, isInteracted: this.interaction, cancel: false, target: args.target\n };\n this.parent.trigger('fileSelection', eventArgs);\n args.cancel = eventArgs.cancel;\n };\n /* istanbul ignore next */\n DetailsView.prototype.onSelected = function (args) {\n this.parent.activeModule = 'detailsview';\n if (!this.parent.isLayoutChange || this.parent.isFiltered) {\n this.selectedRecords();\n }\n this.parent.notify(selectionChanged, {});\n if (this.gridObj.getSelectedRowIndexes().length === 1) {\n this.firstItemIndex = this.gridObj.selectedRowIndex;\n }\n this.gridObj.element.setAttribute('tabindex', '-1');\n this.triggerSelect('select', args);\n var item = this.gridObj.getRowByIndex(this.gridObj.selectedRowIndex);\n this.updateType(item);\n if (!isNullOrUndefined(item) && !isNullOrUndefined(item.querySelector('.e-checkselect'))) {\n if (this.gridObj.getSelectedRowIndexes().length !== 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n var lastItem = this.gridObj.getRowByIndex(lastItemIndex);\n lastItem.querySelector('.e-checkselect').setAttribute('tabindex', '-1');\n }\n item.querySelector('.e-rowcell.e-fe-checkbox').removeAttribute('tabindex');\n }\n if (!isNullOrUndefined(this.gridObj) && !isNullOrUndefined(this.gridObj.element.querySelector('.e-checkselectall'))) {\n this.gridObj.element.querySelector('.e-checkselectall').setAttribute('tabindex', '-1');\n }\n var rows = this.gridObj.getSelectedRowIndexes();\n if (!this.parent.allowMultiSelection) {\n for (var i = 0; i < rows.length; i++) {\n if (rows[i] === this.gridObj.selectedRowIndex) {\n this.gridObj.getRowByIndex(rows[i]).setAttribute('tabindex', '0');\n }\n else {\n this.gridObj.getRowByIndex(rows[i]).removeAttribute('tabindex');\n }\n }\n }\n var len = rows.length;\n if (this.parent.enableVirtualization) {\n this.parent.currentItemText = getValue('name', args.data);\n }\n else if (len > 0) {\n // eslint-disable-next-line\n var data = this.gridObj.getRowsObject()[rows[len - 1]].data;\n this.parent.currentItemText = getValue('name', data);\n }\n var indexes = getValue('rowIndexes', args);\n var multiSelect = getValue('enableSelectMultiTouch', this.gridObj.selectionModule);\n if (this.parent.isDevice && isNullOrUndefined(indexes) && args.target && !multiSelect && !args.target.closest('.e-headercell')) {\n this.parent.isFile = getValue('isFile', args.data);\n if (!this.parent.isFile) {\n this.openContent(args.data);\n }\n }\n this.parent.visitedItem = args.row;\n if ((!this.parent.enableVirtualization) || (!args.isHeaderCheckboxClicked)) {\n if (this.parent.allowMultiSelection && !isNullOrUndefined(item) && !isNullOrUndefined(item.querySelector('.e-checkselect'))) {\n var checkItem = item.querySelector('.e-checkselect');\n checkItem.focus();\n }\n this.addFocus(this.gridObj.selectedRowIndex);\n }\n if (!this.parent.isLayoutChange) {\n this.isInteracted = true;\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.onPathColumn = function () {\n if (this.parent.view === 'Details' && !isNullOrUndefined(this.gridObj)) {\n if (this.parent.breadcrumbbarModule.searchObj.element.value === '' && !this.parent.isFiltered) {\n this.removePathColumn(false);\n }\n }\n };\n DetailsView.prototype.selectedRecords = function () {\n this.parent.setProperties({ selectedItems: [] }, true);\n // eslint-disable-next-line\n var selectedRecords = this.gridSelectNodes();\n var selectSize = 0;\n while (selectSize < selectedRecords.length) {\n var record = selectedRecords[selectSize];\n var name_3 = getItemName(this.parent, record);\n this.parent.selectedItems.push(name_3);\n selectSize++;\n }\n this.parent.setProperties({ selectedItems: this.parent.selectedItems }, true);\n };\n DetailsView.prototype.onDeSelection = function (args) {\n /* istanbul ignore next */\n if (!this.parent.allowMultiSelection && isNullOrUndefined(args.data)) {\n this.gridObj.getRowByIndex(args.rowIndex).removeAttribute('tabindex');\n }\n else if (this.gridObj.getSelectedRowIndexes().length > 1) {\n var lastItemIndex = this.gridObj.getSelectedRowIndexes()[this.gridObj.getSelectedRowIndexes().length - 2];\n this.gridObj.getRowByIndex(lastItemIndex).querySelector('.e-checkselect').removeAttribute('tabindex');\n }\n if (this.gridObj.selectedRowIndex === -1) {\n this.gridObj.element.setAttribute('tabindex', '0');\n }\n if (!this.isInteracted) {\n this.isInteracted = true;\n return;\n }\n this.selectedRecords();\n if (this.parent.selectedItems.length === 0) {\n setValue('enableSelectMultiTouch', false, this.gridObj.selectionModule);\n removeClass([this.parent.element], MULTI_SELECT);\n }\n this.parent.notify(selectionChanged, {});\n this.triggerSelect('unselect', args);\n this.parent.visitedItem = null;\n };\n DetailsView.prototype.triggerSelect = function (action, args) {\n var eventArgs = { action: action, fileDetails: args.data, isInteracted: this.interaction };\n this.parent.trigger('fileSelect', eventArgs);\n this.interaction = true;\n };\n DetailsView.prototype.wireEvents = function () {\n this.wireClickEvent(true);\n this.keyboardModule = new KeyboardEvents(this.gridObj.element, {\n keyAction: this.keyupHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keyup'\n });\n this.keyboardDownModule = new KeyboardEvents(this.element, {\n keyAction: this.keydownHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.gridObj.element, 'blur', this.removeFocus, this);\n };\n DetailsView.prototype.unWireEvents = function () {\n this.wireClickEvent(false);\n this.keyboardModule.destroy();\n this.keyboardDownModule.destroy();\n EventHandler.remove(this.gridObj.element, 'blur', this.removeFocus);\n };\n DetailsView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var ele = this.gridObj.getContent();\n this.clickObj = new Touch(ele, {\n tap: function (eve) {\n if (eve.tapCount === 1 && eve.originalEvent.target.classList.contains('e-content')) {\n proxy_1.onClearAllInit();\n }\n },\n tapHold: function (e) {\n if (proxy_1.parent.isDevice) {\n e.originalEvent.preventDefault();\n if (proxy_1.parent.allowMultiSelection) {\n setValue('enableSelectMultiTouch', proxy_1.parent.allowMultiSelection, proxy_1.gridObj.selectionModule);\n addClass([proxy_1.parent.element], MULTI_SELECT);\n }\n var target = e.originalEvent.target;\n if (target) {\n var row = closest(target, '.' + ROW);\n var index = proxy_1.gridObj.getRows().indexOf(row);\n proxy_1.gridObj.selectRow(index);\n }\n }\n }\n });\n }\n else {\n if (this.clickObj) {\n this.clickObj.destroy();\n }\n }\n };\n /* istanbul ignore next */\n DetailsView.prototype.removeSelection = function () {\n removeClass([this.parent.element], MULTI_SELECT);\n this.gridObj.clearSelection();\n this.parent.setProperties({ selectedItems: [] }, true);\n this.parent.notify(selectionChanged, {});\n if (this.gridObj.selectedRowIndex === -1) {\n this.startIndex = null;\n }\n this.isInteracted = true;\n };\n DetailsView.prototype.removeFocus = function () {\n this.addFocus(null);\n };\n DetailsView.prototype.getFocusedItemIndex = function () {\n return (!isNullOrUndefined(this.getFocusedItem())) ?\n parseInt(this.getFocusedItem().getAttribute('data-rowindex'), 10) : null;\n };\n /* istanbul ignore next */\n // eslint:disable-next-line\n DetailsView.prototype.keydownHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n switch (e.action) {\n case 'end':\n case 'home':\n case 'space':\n case 'ctrlSpace':\n case 'shiftSpace':\n case 'csSpace':\n case 'ctrlA':\n case 'enter':\n case 'altEnter':\n case 'ctrlEnd':\n case 'shiftEnd':\n case 'csEnd':\n case 'ctrlHome':\n case 'shiftHome':\n case 'csHome':\n case 'ctrlDown':\n case 'shiftDown':\n case 'csDown':\n case 'ctrlLeft':\n case 'shiftLeft':\n case 'csLeft':\n case 'esc':\n case 'del':\n case 'shiftdel':\n case 'ctrlC':\n case 'ctrlV':\n case 'ctrlX':\n case 'f2':\n case 'moveDown':\n case 'moveUp':\n case 'ctrlD':\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n DetailsView.prototype.keyupHandler = function (e) {\n if (!this.isRendered) {\n return;\n }\n e.preventDefault();\n var action = e.action;\n // eslint-disable-next-line\n var gridItems = getSortedData(this.parent, this.gridObj.dataSource);\n var gridLength = gridItems.length;\n var focItem = this.getFocusedItem();\n var focIndex = this.getFocusedItemIndex();\n var selIndex = this.gridObj.selectedRowIndex;\n var selRowIndeces = this.gridObj.getSelectedRowIndexes();\n // eslint-disable-next-line\n var rowData;\n var firstItem;\n var lastItem;\n switch (action) {\n case 'altEnter':\n GetDetails(this.parent, this.parent.selectedItems, this.parent.path, 'details');\n break;\n case 'esc':\n removeActive(this.parent);\n break;\n case 'del':\n case 'shiftdel':\n this.performDelete();\n break;\n case 'enter':\n if (this.gridObj.selectedRowIndex === -1) {\n break;\n }\n rowData = this.gridObj.getRowsObject()[this.gridObj.selectedRowIndex].data;\n if (rowData) {\n // eslint-disable-next-line\n var data = JSON.parse(JSON.stringify(rowData));\n this.openContent(data);\n }\n break;\n case 'ctrlC':\n copyFiles(this.parent);\n break;\n case 'ctrlV':\n this.parent.folderPath = '';\n pasteHandler(this.parent);\n break;\n case 'ctrlX':\n cutFiles(this.parent);\n break;\n case 'ctrlD':\n this.doDownload();\n break;\n case 'f2':\n this.performRename();\n break;\n case 'ctrlA':\n if (!isNullOrUndefined(gridItems[0]) && this.parent.allowMultiSelection) {\n var cnTable = this.gridObj.getContent().querySelector('.e-content');\n var crtSrlPos = cnTable.scrollTop;\n var crtFocusIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n cnTable.scrollTop = crtSrlPos;\n if (crtFocusIndex !== -1) {\n this.addFocus(crtFocusIndex);\n }\n }\n break;\n case 'ctrlHome':\n case 'tab':\n if (!isNullOrUndefined(gridItems[0])) {\n if (!this.parent.allowMultiSelection && e.action === 'ctrlHome') {\n this.gridObj.selectRow(0);\n }\n else if (this.gridObj.selectedRowIndex !== -1 && e.action === 'tab') {\n return;\n }\n else if (!this.actionDivert) {\n this.addHeaderFocus();\n this.actionDivert = true;\n }\n else {\n this.addFocus(0);\n this.actionDivert = false;\n }\n }\n break;\n case 'ctrlEnd':\n if (!isNullOrUndefined(gridItems[0])) {\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow(gridLength - 1);\n }\n else {\n this.addFocus(gridLength - 1);\n }\n }\n break;\n case 'shiftHome':\n case 'shiftEnd':\n case 'csHome':\n case 'csEnd':\n if (!this.parent.allowMultiSelection) {\n this.gridObj.selectRow((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : gridItems.length - 1);\n }\n else {\n if (!isNullOrUndefined(gridItems[0])) {\n if (!isNullOrUndefined(selIndex) && selIndex !== -1) {\n this.checkRowsKey(gridItems, selIndex, null, e);\n }\n else {\n if (e.action === 'csHome' || e.action === 'shiftHome') {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, gridItems.length - 1);\n }\n }\n }\n }\n break;\n case 'space':\n case 'csSpace':\n case 'shiftSpace':\n case 'ctrlSpace':\n this.spaceSelection(selRowIndeces, focIndex, selIndex, e);\n break;\n case 'csUp':\n case 'csDown':\n case 'shiftUp':\n case 'shiftDown':\n this.shiftMoveMethod(gridItems, selIndex, focIndex, selRowIndeces, e);\n break;\n case 'ctrlUp':\n case 'ctrlDown':\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n break;\n case 'home':\n firstItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[0])];\n this.parent.setProperties({ selectedItems: firstItem }, true);\n this.selectRecords(firstItem);\n break;\n case 'moveUp':\n case 'moveDown':\n this.moveFunction(gridItems, e, selIndex);\n break;\n case 'end':\n lastItem = [getValue(this.parent.hasId ? 'id' : 'name', gridItems[gridLength - 1])];\n this.parent.setProperties({ selectedItems: lastItem }, true);\n this.selectRecords(lastItem);\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.gridSelectNodes = function () {\n return this.gridObj.getSelectedRecords();\n };\n DetailsView.prototype.doDownload = function () {\n if (this.parent.selectedItems.length !== 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasDownloadAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], permissionDownload);\n return;\n }\n }\n Download(this.parent, this.parent.path, this.parent.selectedItems);\n }\n };\n DetailsView.prototype.performDelete = function () {\n if (this.parent.selectedItems && this.parent.selectedItems.length > 0) {\n this.parent.itemData = this.gridObj.getSelectedRecords();\n // eslint-disable-next-line\n var items = this.parent.itemData;\n for (var i = 0; i < items.length; i++) {\n if (!hasEditAccess(items[i])) {\n createDeniedDialog(this.parent, items[i], permissionEdit);\n return;\n }\n }\n createDialog(this.parent, 'Delete');\n }\n };\n DetailsView.prototype.performRename = function () {\n if (this.parent.selectedItems.length === 1) {\n this.updateRenameData();\n doRename(this.parent);\n }\n };\n DetailsView.prototype.updateRenameData = function () {\n // eslint-disable-next-line\n var data = this.gridSelectNodes()[0];\n updateRenamingData(this.parent, data);\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftMoveMethod = function (gridItems, selIndex, focIndex, selRowIndeces, e) {\n if (!this.parent.allowMultiSelection) {\n this.moveFunction(gridItems, e, selIndex);\n }\n else {\n if (selIndex === -1 && (e.action === 'csUp' || e.action === 'csDown')) {\n this.ctrlMoveFunction(gridItems, e, selIndex);\n }\n else if (selIndex !== -1 && focIndex !== selIndex &&\n !((e.action === 'csUp' || e.action === 'csDown') && this.isSelected(selRowIndeces, focIndex))) {\n this.shiftSelectFocusItem(selIndex, focIndex, selRowIndeces, e);\n }\n else {\n this.shiftSelectedItem(selIndex, selRowIndeces, gridItems, e);\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.moveFunction = function (selectedItems, e, rowIndex) {\n if (!isNullOrUndefined(this.getFocusedItem()) && this.parent.allowMultiSelection) {\n if (e.action === 'moveDown') {\n this.gridObj.selectRow(this.getFocusedItemIndex() + 1);\n }\n else {\n this.gridObj.selectRow(this.getFocusedItemIndex() - 1);\n }\n }\n else if (!isNullOrUndefined(rowIndex) && rowIndex !== -1) {\n if (e.action === 'moveDown' || e.action === 'ctrlDown' || e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectRow(rowIndex + ((rowIndex !== selectedItems.length - 1) ? 1 : 0));\n }\n else {\n this.gridObj.selectRow(rowIndex - ((rowIndex !== 0) ? 1 : 0));\n }\n }\n else {\n if (!isNullOrUndefined(selectedItems[0])) {\n this.gridObj.selectRow(0);\n }\n }\n };\n DetailsView.prototype.spaceSelection = function (selRowIndeces, focIndex, selIndex, e) {\n if (!this.isSelected(selRowIndeces, focIndex) && selIndex !== -1 && (e.action === 'shiftSpace' || e.action === 'csSpace')) {\n if (focIndex < selIndex) {\n this.gridObj.selectionModule.selectRowsByRange(focIndex, selIndex);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(selIndex, focIndex);\n }\n }\n else if (!isNullOrUndefined(this.getFocusedItem()) && focIndex !== selIndex) {\n selRowIndeces.push(this.getFocusedItemIndex());\n this.gridObj.selectRows(selRowIndeces);\n }\n else if (selIndex !== -1 && e.action === 'ctrlSpace' && this.parent.allowMultiSelection) {\n var lItem = selIndex;\n selRowIndeces.pop();\n this.gridObj.selectRows(selRowIndeces);\n this.addFocus(lItem);\n }\n else if (e.action === 'shiftSpace') {\n this.gridObj.selectRow(selIndex);\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.ctrlMoveFunction = function (items, e, rowIndex) {\n var nextItem;\n if (!isNullOrUndefined(this.getFocusedItem())) {\n var nextIndex = this.getFocusedItemIndex();\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n nextIndex + ((nextIndex < items.length - 1) ? 1 : 0) : nextIndex - ((nextIndex < 1) ? 0 : 1);\n }\n else if (!isNullOrUndefined(rowIndex) && rowIndex !== -1) {\n nextItem = (e.action === 'ctrlDown' || e.action === 'csDown') ?\n rowIndex + ((rowIndex < items.length) ? 1 : 0) : rowIndex - ((rowIndex < 1) ? 0 : 1);\n }\n else {\n if (!isNullOrUndefined(items[0])) {\n nextItem = 0;\n }\n }\n this.addFocus(nextItem);\n };\n // eslint-disable-next-line\n DetailsView.prototype.checkRowsKey = function (items, indexValue, focIndex, e) {\n if (this.gridObj.checkAllRows === 'Uncheck' || this.gridObj.checkAllRows === 'Intermediate') {\n if (e.action !== 'csHome' && e.action !== 'csEnd') {\n if (isNullOrUndefined(this.startIndex) && this.firstItemIndex !== indexValue) {\n this.firstItemIndex = indexValue;\n }\n if (e.action === 'shiftEnd') {\n this.gridObj.selectionModule.selectRowsByRange(this.firstItemIndex, items.length - 1);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(0, this.firstItemIndex);\n }\n this.startIndex = indexValue;\n }\n else {\n if (e.action === 'csEnd') {\n this.gridObj.\n selectRows(this.InnerItems(isNullOrUndefined(indexValue) ? 0 : indexValue, isNullOrUndefined(focIndex) ? items.length - 1 : focIndex, e));\n }\n else {\n if (isNullOrUndefined(indexValue)) {\n this.gridObj.selectRow(0);\n }\n else {\n this.gridObj.selectRows(this.InnerItems(isNullOrUndefined(focIndex) ? 0 : focIndex, indexValue, e));\n }\n }\n }\n }\n else {\n this.gridObj.selectionModule.selectRow(((e.action === 'shiftHome' || e.action === 'csHome') ? 0 : items.length - 1));\n }\n };\n DetailsView.prototype.InnerItems = function (fItem, lItem, e) {\n var itemArr = this.gridObj.getSelectedRowIndexes();\n if (e.action === 'csEnd') {\n for (var i = fItem + 1; i <= lItem; i++) {\n itemArr.push(i);\n }\n }\n else {\n for (var i = lItem - 1; fItem <= i; i--) {\n itemArr.push(i);\n }\n }\n return itemArr;\n };\n DetailsView.prototype.shiftSelectFocusItem = function (selIndex, fIndex, selRowIndexes, e) {\n var lItem = fIndex + ((e.action === 'shiftDown' || e.action === 'csDown') ? 1 : -1);\n var fItem = isNullOrUndefined(this.startIndex) ? selIndex : selRowIndexes[0];\n if (fItem === lItem) {\n this.gridObj.selectRow(fItem);\n }\n else {\n if (fItem < lItem) {\n if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n }\n else if (e.action === 'shiftDown' || e.action === 'csDown') {\n this.gridObj.selectionModule.selectRowsByRange(lItem, fItem);\n }\n else {\n this.gridObj.selectionModule.selectRowsByRange(fItem, lItem);\n }\n }\n this.startIndex = this.gridObj.selectedRowIndex;\n };\n DetailsView.prototype.addFocus = function (item) {\n var fItem = this.getFocusedItem();\n var itemElement = this.gridObj.getRowByIndex(item);\n if (fItem) {\n fItem.removeAttribute('tabindex');\n removeClass([fItem], [FOCUS, FOCUSED]);\n }\n if (!isNullOrUndefined(itemElement)) {\n this.gridObj.element.setAttribute('tabindex', '-1');\n itemElement.setAttribute('tabindex', '0');\n itemElement.focus();\n addClass([itemElement], [FOCUS, FOCUSED]);\n }\n };\n DetailsView.prototype.addHeaderFocus = function () {\n var treeFocus = select('.e-row', this.element);\n this.gridObj.element.setAttribute('tabindex', '-1');\n var nameFocus = select('th.e-fe-grid-name', this.element);\n nameFocus.setAttribute('tabindex', '0');\n nameFocus.focus();\n addClass([nameFocus], [FOCUS, FOCUSED]);\n treeFocus.setAttribute('tabindex', '0');\n if (treeFocus.tabIndex === 0 && nameFocus.tabIndex === 0) {\n removeClass([treeFocus], [FOCUS, FOCUSED]);\n }\n };\n DetailsView.prototype.getFocusedItem = function () {\n return select('.' + FOCUSED, this.element);\n };\n DetailsView.prototype.isSelected = function (selRowIndexes, focIndex) {\n var check = false;\n for (var i = 0; i <= selRowIndexes.length - 1; i++) {\n if (selRowIndexes[i] === focIndex) {\n check = true;\n break;\n }\n }\n return check;\n };\n // eslint-disable-next-line\n DetailsView.prototype.shiftSelectedItem = function (selIndex, selRowIndexes, gridItems, e) {\n if (selIndex === -1) {\n this.gridObj.selectRow(0);\n }\n else {\n if (isNullOrUndefined(this.startIndex) && e.shiftKey) {\n this.startIndex = this.gridObj.selectedRowIndex;\n this.gridObj.selectRows([selIndex, (e.action === 'shiftDown' || e.action === 'csDown') ?\n (selIndex + ((selIndex !== gridItems.length - 1) ? 1 : 0)) : (selIndex - ((selIndex !== 0) ? 1 : 0))]);\n }\n else {\n if (e.action === 'shiftDown' || e.action === 'shiftUp') {\n if (e.action === 'shiftDown' && selRowIndexes.indexOf(selIndex + 1) === -1) {\n if (selIndex !== gridItems.length - 1) {\n selRowIndexes.push(selIndex + 1);\n }\n }\n else if (e.action === 'shiftUp' && selRowIndexes.indexOf(selIndex - 1) === -1) {\n if (selIndex !== 0) {\n selRowIndexes.push(selIndex - 1);\n }\n }\n else {\n selRowIndexes.pop();\n }\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n if (e.action === 'csDown') {\n if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() + 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() + 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() + 1);\n }\n }\n else if (!this.isSelected(selRowIndexes, this.getFocusedItemIndex() - 1)) {\n selRowIndexes.push((this.getFocusedItemIndex() - 1));\n this.gridObj.selectRows(selRowIndexes);\n }\n else {\n this.addFocus(this.getFocusedItemIndex() - 1);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.onMethodCall = function (e) {\n if (this.parent.view !== 'Details') {\n return;\n }\n var action = getValue('action', e);\n switch (action) {\n case 'deleteFiles':\n this.deleteFiles(getValue('ids', e));\n break;\n case 'downloadFiles':\n this.downloadFiles(getValue('ids', e));\n break;\n case 'openFile':\n this.openFile(getValue('id', e));\n break;\n case 'createFolder':\n this.interaction = false;\n break;\n case 'renameFile':\n this.interaction = false;\n this.renameFile(getValue('id', e), getValue('newName', e));\n break;\n case 'selectAll':\n this.interaction = false;\n this.onSelectAllInit();\n break;\n case 'clearSelection':\n this.interaction = false;\n this.onClearAllInit();\n break;\n }\n };\n // eslint-disable-next-line\n DetailsView.prototype.getRecords = function (nodes) {\n // eslint-disable-next-line\n var gridRecords = this.gridObj.getCurrentViewRecords();\n // eslint-disable-next-line\n var records = [];\n var hasFilter = (this.parent.breadcrumbbarModule.searchObj.element.value !== '' || this.parent.isFiltered) ? true : false;\n var filter$$1 = this.parent.hasId ? 'id' : 'name';\n if (this.parent.hasId || !hasFilter) {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n if (nodes.indexOf(getValue(filter$$1, gridRecords[i])) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n else {\n for (var i = 0, len = gridRecords.length; i < len; i++) {\n var name_4 = getValue('filterPath', gridRecords[i]) + getValue('name', gridRecords[i]);\n if (nodes.indexOf(name_4) !== -1) {\n records.push(gridRecords[i]);\n }\n }\n }\n return records;\n };\n DetailsView.prototype.deleteFiles = function (ids) {\n this.parent.activeModule = 'detailsview';\n if (isNullOrUndefined(ids)) {\n this.performDelete();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords(ids);\n if (records.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < records.length; i++) {\n data[i] = records[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDeleteFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.downloadFiles = function (ids) {\n if (isNullOrUndefined(ids)) {\n this.doDownload();\n return;\n }\n // eslint-disable-next-line\n var dRecords = this.getRecords(ids);\n if (dRecords.length === 0) {\n return;\n }\n // eslint-disable-next-line\n var data = [];\n var newIds = [];\n for (var i = 0; i < dRecords.length; i++) {\n data[i] = dRecords[i];\n newIds[i] = getItemName(this.parent, data[i]);\n }\n doDownloadFiles(this.parent, data, newIds);\n };\n DetailsView.prototype.openFile = function (id) {\n if (isNullOrUndefined(id)) {\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n this.openContent(records[0]);\n }\n };\n DetailsView.prototype.renameFile = function (id, name) {\n this.parent.activeModule = 'detailsview';\n if (isNullOrUndefined(id)) {\n this.performRename();\n return;\n }\n // eslint-disable-next-line\n var records = this.getRecords([id]);\n if (records.length > 0) {\n updateRenamingData(this.parent, records[0]);\n if (!isNullOrUndefined(name)) {\n if (hasEditAccess(this.parent.itemData[0])) {\n rename(this.parent, this.parent.path, name);\n }\n else {\n createDeniedDialog(this.parent, this.parent.itemData[0], permissionEdit);\n }\n }\n else {\n doRename(this.parent);\n }\n }\n };\n return DetailsView;\n}());\n\n/**\n * File Manager layout modules\n */\n\n/**\n * File Manager pop-up modules\n */\n\n/**\n * File Manager modules\n */\n\n/**\n * File Manager all modules\n */\n\nexport { AjaxSettings, toolbarItems, ToolbarSettings, SearchSettings, columnArray, DetailsViewSettings, fileItems, folderItems, layoutItems, ContextMenuSettings, NavigationPaneSettings, UploadSettings, Column, TOOLBAR_ID, LAYOUT_ID, NAVIGATION_ID, TREE_ID, GRID_ID, LARGEICON_ID, DIALOG_ID, ALT_DIALOG_ID, IMG_DIALOG_ID, EXTN_DIALOG_ID, UPLOAD_DIALOG_ID, RETRY_DIALOG_ID, CONTEXT_MENU_ID, SORTBY_ID, VIEW_ID, SPLITTER_ID, CONTENT_ID, BREADCRUMBBAR_ID, UPLOAD_ID, RETRY_ID, SEARCH_ID, ROOT, CONTROL, CHECK_SELECT, ROOT_POPUP, MOBILE, MOB_POPUP, MULTI_SELECT, FILTER, LAYOUT, NAVIGATION, LAYOUT_CONTENT, LARGE_ICONS, TB_ITEM, LIST_ITEM, LIST_TEXT, LIST_PARENT, TB_OPTION_TICK, TB_OPTION_DOT, BLUR, ACTIVE, HOVER, FOCUS, FOCUSED, CHECK, FRAME, CB_WRAP, ROW, ROWCELL, EMPTY, EMPTY_CONTENT, EMPTY_INNER_CONTENT, CLONE, DROP_FOLDER, DROP_FILE, FOLDER, ICON_IMAGE, ICON_MUSIC, ICON_VIDEO, LARGE_ICON, LARGE_EMPTY_FOLDER, LARGE_EMPTY_FOLDER_TWO, LARGE_ICON_FOLDER, SELECTED_ITEMS, TEXT_CONTENT, GRID_HEADER, TEMPLATE_CELL, TREE_VIEW, MENU_ITEM, MENU_ICON, SUBMENU_ICON, GRID_VIEW, GRID_CONTENT, ICON_VIEW, ICON_OPEN, ICON_UPLOAD, ICON_CUT, ICON_COPY, ICON_PASTE, ICON_DELETE, ICON_RENAME, ICON_NEWFOLDER, ICON_DETAILS, ICON_SHORTBY, ICON_REFRESH, ICON_SELECTALL, ICON_DOWNLOAD, ICON_OPTIONS, ICON_GRID, ICON_LARGE, ICON_BREADCRUMB, ICON_CLEAR, ICON_DROP_IN, ICON_DROP_OUT, ICON_NO_DROP, ICONS, DETAILS_LABEL, ERROR_CONTENT, STATUS, BREADCRUMBS, RTL, DISPLAY_NONE, COLLAPSED, FULLROW, ICON_COLLAPSIBLE, SPLIT_BAR, HEADER_CHECK, OVERLAY, VALUE, isFile, modelChanged, initialEnd, finalizeEnd, createEnd, filterEnd, beforeDelete, pathDrag, deleteInit, deleteEnd, refreshEnd, resizeEnd, splitterResize, pathChanged, destroy, beforeRequest, upload, skipUpload, afterRequest, download, layoutRefresh, actionFailure, search, openInit, openEnd, selectionChanged, selectAllInit, clearAllInit, clearPathInit, layoutChange, sortByChange, nodeExpand, detailsInit, menuItemData, renameInit, renameEndParent, renameEnd, showPaste, hidePaste, selectedData, cutCopyInit, pasteInit, pasteEnd, cutEnd, hideLayout, updateTreeSelection, treeSelect, sortColumn, pathColumn, searchTextChange, beforeDownload, downloadInit, dropInit, dragEnd, dropPath, dragHelper, dragging, updateSelectionData, methodCall, permissionRead, permissionEdit, permissionEditContents, permissionCopy, permissionUpload, permissionDownload, FileManager, Toolbar$1 as Toolbar, BreadCrumbBar, Virtualization, NavigationPane, DetailsView, LargeIconsView, createDialog, createExtDialog, createImageDialog, ContextMenu$2 as ContextMenu };\n","import { Browser, ChildProperty, Collection, Complex, Component, Draggable, Droppable, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, addClass, append, attributes, blazorTemplates, classList, closest, compile, createElement, debounce, detach, extend, formatUnit, getEnumValue, getValue, isNullOrUndefined, isObject, isUndefined, matches, merge, print, remove, removeClass, resetBlazorTemplate, select, selectAll, setCulture, setStyleAttribute, setValue, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { DataManager, DataUtil, Deferred, Predicate, Query, UrlAdaptor } from '@syncfusion/ej2-data';\nimport { Dialog, Tooltip, calculatePosition, calculateRelativeBasedPosition, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { Button, CheckBox, RadioButton, Switch, createCheckBox } from '@syncfusion/ej2-buttons';\nimport { FormValidator, Input, MaskedTextBox, NumericTextBox, TextBox } from '@syncfusion/ej2-inputs';\nimport { AutoComplete, ComboBox, DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { DatePicker, DateTimePicker, TimePicker } from '@syncfusion/ej2-calendars';\nimport { ContextMenu, Toolbar } from '@syncfusion/ej2-navigations';\nimport { Workbook } from '@syncfusion/ej2-excel-export';\nimport { PdfBitmap, PdfBorders, PdfColor, PdfCompositeField, PdfDocument, PdfFontFamily, PdfFontStyle, PdfGrid, PdfPaddings, PdfPageCountField, PdfPageNumberField, PdfPageOrientation, PdfPageSettings, PdfPageTemplateElement, PdfPen, PdfSolidBrush, PdfStandardFont, PdfStringFormat, PdfTextAlignment, PdfTextWebLink, PdfTrueTypeFont, PdfVerticalAlignment, PointF, RectangleF, SizeF } from '@syncfusion/ej2-pdf-export';\n\n/**\n * ValueFormatter class to globalize the value.\n *\n * @hidden\n */\nvar ValueFormatter = /** @__PURE__ @class */ (function () {\n function ValueFormatter(cultureName) {\n this.intl = new Internationalization();\n if (!isNullOrUndefined(cultureName)) {\n this.intl.culture = cultureName;\n }\n }\n ValueFormatter.prototype.getFormatFunction = function (format) {\n if (format.type) {\n return this.intl.getDateFormat(format);\n }\n else {\n return this.intl.getNumberFormat(format);\n }\n };\n ValueFormatter.prototype.getParserFunction = function (format) {\n if (format.type) {\n return this.intl.getDateParser(format);\n }\n else {\n return this.intl.getNumberParser(format);\n }\n };\n ValueFormatter.prototype.fromView = function (value, format, type) {\n if ((type === 'date' || type === 'datetime' || type === 'number') && (!isNullOrUndefined(format))) {\n return format(value);\n }\n else {\n return value;\n }\n };\n ValueFormatter.prototype.toView = function (value, format) {\n var result = value;\n if (!isNullOrUndefined(format) && !isNullOrUndefined(value)) {\n result = format(value);\n }\n return result;\n };\n ValueFormatter.prototype.setCulture = function (cultureName) {\n if (!isNullOrUndefined(cultureName)) {\n setCulture(cultureName);\n }\n };\n return ValueFormatter;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * Represents Grid `Column` model class.\n */\nvar Column = /** @__PURE__ @class */ (function () {\n function Column(options, parent) {\n var _this = this;\n /**\n * If `disableHtmlEncode` is set to true, it encodes the HTML of the header and content cells.\n *\n * @default true\n */\n this.disableHtmlEncode = true;\n /**\n * If `allowSorting` set to false, then it disables sorting option of a particular column.\n * By default all columns are sortable.\n *\n * @default true\n */\n this.allowSorting = true;\n /**\n * If `allowResizing` is set to false, it disables resize option of a particular column.\n * By default all the columns can be resized.\n *\n * @default true\n */\n this.allowResizing = true;\n /**\n * If `allowFiltering` set to false, then it disables filtering option and filter bar element of a particular column.\n * By default all columns are filterable.\n *\n * @default true\n */\n this.allowFiltering = true;\n /**\n * If `allowGrouping` set to false, then it disables grouping of a particular column.\n * By default all columns are groupable.\n *\n * @default true\n */\n this.allowGrouping = true;\n /**\n * If `allowReordering` set to false, then it disables reorder of a particular column.\n * By default all columns can be reorder.\n *\n * @default true\n */\n this.allowReordering = true;\n /**\n * If `showColumnMenu` set to false, then it disable the column menu of a particular column.\n * By default column menu will show for all columns\n *\n * @default true\n */\n this.showColumnMenu = true;\n /**\n * If `enableGroupByFormat` set to true, then it groups the particular column by formatted values.\n *\n * @default true\n */\n this.enableGroupByFormat = false;\n /**\n * If `allowEditing` set to false, then it disables editing of a particular column.\n * By default all columns are editable.\n *\n * @default true\n */\n this.allowEditing = true;\n /**\n * It is used to customize the default filter options for a specific columns.\n * * type - Specifies the filter type as menu or checkbox.\n * * ui - to render custom component for specific column it has following functions.\n * * ui.create – It is used for creating custom components.\n * * ui.read - It is used for read the value from the component.\n * * ui.write - It is used to apply component model as dynamically.\n * {% codeBlock src=\"grid/filter-menu-api/index.ts\" %}{% endcodeBlock %}\n *\n * > Check the [`Filter UI`](../../grid/filtering/filter-menu/#custom-component-in-filter-menu) for its customization.\n *\n * @default {}\n */\n this.filter = {};\n /**\n * If `showInColumnChooser` set to false, then hide the particular column in column chooser.\n * By default all columns are displayed in column Chooser.\n *\n * @default true\n */\n this.showInColumnChooser = true;\n /**\n * Defines the `IEditCell` object to customize default edit cell.\n *\n * @default {}\n */\n this.edit = {};\n /**\n * If `allowSearching` set to false, then it disables Searching of a particular column.\n * By default all columns allow Searching.\n *\n * @default true\n */\n this.allowSearching = true;\n /**\n * If `autoFit` set to true, then the particular column content width will be\n * adjusted based on its content in the initial rendering itself.\n * Setting this property as true is equivalent to calling `autoFitColumns` method in the `dataBound` event.\n *\n * @default false\n */\n this.autoFit = false;\n this.sortDirection = 'Descending';\n /**\n * @returns {Function} returns the edit template\n * @hidden */\n this.getEditTemplate = function () { return _this.editTemplateFn; };\n /**\n * @returns {Function} returns the filter template\n * @hidden */\n this.getFilterTemplate = function () { return _this.filterTemplateFn; };\n merge(this, options);\n this.parent = parent;\n if (this.type === 'none') {\n this.type = null;\n }\n else if (this.type) {\n this.type = typeof (this.type) === 'string' ? this.type.toLowerCase() : undefined;\n }\n if (this.editType) {\n this.editType = this.editType.toLowerCase();\n }\n if (isNullOrUndefined(this.uid)) {\n this.uid = getUid('grid-column');\n }\n var valueFormatter = new ValueFormatter();\n if (options.format && (options.format.skeleton || (options.format.format &&\n typeof options.format.format === 'string'))) {\n this.setFormatter(valueFormatter.getFormatFunction(extend({}, options.format)));\n this.setParser(valueFormatter.getParserFunction(options.format));\n }\n this.toJSON = function () {\n var col = {};\n var skip = ['filter', 'dataSource', 'headerText', 'template', 'headerTemplate', 'edit',\n 'editTemplate', 'filterTemplate', 'commandsTemplate', 'parent'];\n var keys = Object.keys(_this);\n for (var i = 0; i < keys.length; i++) {\n if (keys[parseInt(i.toString(), 10)] === 'columns') {\n col[keys[parseInt(i.toString(), 10)]] = [];\n for (var j = 0; j < _this[keys[parseInt(i.toString(), 10)]].length; j++) {\n col[keys[parseInt(i.toString(), 10)]].push(_this[keys[parseInt(i.toString(), 10)]][parseInt(j.toString(), 10)].toJSON());\n }\n }\n else if (skip.indexOf(keys[parseInt(i.toString(), 10)]) < 0) {\n col[keys[parseInt(i.toString(), 10)]] = _this[keys[parseInt(i.toString(), 10)]];\n }\n }\n return col;\n };\n if (!this.field) {\n this.allowFiltering = false;\n this.allowGrouping = false;\n this.allowSorting = false;\n if (this.columns) {\n this.allowResizing = this.columns.some(function (col) {\n return col.allowResizing;\n });\n }\n }\n if (this.commands && !this.textAlign) {\n this.textAlign = 'Right';\n }\n if (this.template || this.commandsTemplate) {\n this.templateFn = templateCompiler(this.template || this.commandsTemplate);\n }\n if (this.headerTemplate) {\n this.headerTemplateFn = templateCompiler(this.headerTemplate);\n }\n if (!isNullOrUndefined(this.filter) && this.filter.itemTemplate) {\n this.fltrTemplateFn = templateCompiler(this.filter.itemTemplate);\n }\n if (this.editTemplate) {\n this.editTemplateFn = templateCompiler(this.editTemplate);\n }\n if (this.filterTemplate) {\n this.filterTemplateFn = templateCompiler(this.filterTemplate);\n }\n if (this.isForeignColumn() &&\n (isNullOrUndefined(this.editType) || this.editType === 'dropdownedit' || this.editType === 'defaultedit')) {\n this.editType = 'dropdownedit';\n if (this.edit.params && this.edit.params.dataSource) {\n this.edit.params.ddEditedData = true;\n }\n this.edit.params = extend({\n dataSource: this.dataSource,\n query: new Query(), fields: { value: this.foreignKeyField || this.field, text: this.foreignKeyValue }\n }, this.edit.params);\n }\n if (this.sortComparer) {\n var a_1 = this.sortComparer;\n this.sortComparer = function (x, y, xObj, yObj) {\n if (typeof a_1 === 'string') {\n a_1 = getObject(a_1, window);\n }\n if (_this.sortDirection === 'Descending') {\n var z = x;\n x = y;\n y = z;\n var obj = xObj;\n xObj = yObj;\n yObj = obj;\n }\n return a_1(x, y, xObj, yObj);\n };\n }\n if (!this.sortComparer && this.isForeignColumn()) {\n this.sortComparer = function (x, y) {\n x = getObject(_this.foreignKeyValue, getForeignData(_this, {}, x)[0]);\n y = getObject(_this.foreignKeyValue, getForeignData(_this, {}, y)[0]);\n return _this.sortDirection === 'Descending' ? DataUtil.fnDescending(x, y) : DataUtil.fnAscending(x, y);\n };\n }\n }\n /**\n * @returns {string} returns the sort direction\n * @hidden */\n Column.prototype.getSortDirection = function () {\n return this.sortDirection;\n };\n /**\n * @param {string} direction - specifies the direction\n * @returns {void}\n * @hidden\n */\n Column.prototype.setSortDirection = function (direction) {\n this.sortDirection = direction;\n };\n /**\n * @returns {freezeTable} returns the FreezeTable\n * @hidden */\n Column.prototype.getFreezeTableName = function () {\n return this.freezeTable;\n };\n /**\n * @param {Column} column - specifies the column\n * @returns {void}\n * @hidden\n */\n Column.prototype.setProperties = function (column) {\n //Angular two way binding\n var keys = Object.keys(column);\n for (var i = 0; i < keys.length; i++) {\n this[keys[parseInt(i.toString(), 10)]] = column[keys[parseInt(i.toString(), 10)]];\n //Refresh the react columnTemplates on state change\n if (this.parent && this.parent.isReact) {\n if (keys[parseInt(i.toString(), 10)] === 'template') {\n this.parent.refreshReactColumnTemplateByUid(this.uid, true);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'headerTemplate') {\n this.headerTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n this.parent.refreshReactHeaderTemplateByUid(this.uid);\n }\n else if (keys[parseInt(i.toString(), 10)] === 'editTemplate') {\n this.editTemplateFn = templateCompiler(column[keys[parseInt(i.toString(), 10)]]);\n }\n }\n }\n };\n /**\n * @returns {boolean} returns true for foreign column\n * @hidden\n * It defines the column is foreign key column or not.\n */\n Column.prototype.isForeignColumn = function () {\n return !!(this.dataSource && this.foreignKeyValue);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Column.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getParser = function () {\n return this.parserFn;\n };\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n Column.prototype.setParser = function (value) {\n this.parserFn = value;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getColumnTemplate = function () {\n return this.templateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n /**\n * @returns {Function} returns the function\n * @hidden */\n Column.prototype.getFilterItemTemplate = function () {\n return this.fltrTemplateFn;\n };\n /**\n * @returns {string} returns the string\n * @hidden */\n Column.prototype.getDomSetter = function () {\n return this.disableHtmlEncode ? 'textContent' : 'innerHTML';\n };\n return Column;\n}());\n/**\n * Define options for custom command buttons.\n */\nvar CommandColumnModel = /** @__PURE__ @class */ (function () {\n function CommandColumnModel() {\n }\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"type\", void 0);\n __decorate([\n Property()\n ], CommandColumnModel.prototype, \"buttonOption\", void 0);\n return CommandColumnModel;\n}());\n/**\n * Defines Grid column\n */\nvar GridColumn = /** @__PURE__ @class */ (function (_super) {\n __extends(GridColumn, _super);\n function GridColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], GridColumn.prototype, \"columns\", void 0);\n return GridColumn;\n}(Column));\n/**\n * Defines stacked grid column\n */\nvar StackedColumn = /** @__PURE__ @class */ (function (_super) {\n __extends(StackedColumn, _super);\n function StackedColumn() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return StackedColumn;\n}(GridColumn));\n\n/** @hidden */\nvar created = 'create';\n/** @hidden */\nvar destroyed = 'destroy';\n/** @hidden */\nvar load = 'load';\n/** @hidden */\nvar rowDataBound = 'rowDataBound';\n/** @hidden */\nvar queryCellInfo = 'queryCellInfo';\n/** @hidden */\nvar headerCellInfo = 'headerCellInfo';\n/** @hidden */\nvar actionBegin = 'actionBegin';\n/** @hidden */\nvar actionComplete = 'actionComplete';\n/** @hidden */\nvar actionFailure = 'actionFailure';\n/** @hidden */\nvar dataBound = 'dataBound';\n/** @hidden */\nvar rowSelecting = 'rowSelecting';\n/** @hidden */\nvar rowSelected = 'rowSelected';\n/** @hidden */\nvar rowDeselecting = 'rowDeselecting';\n/** @hidden */\nvar rowDeselected = 'rowDeselected';\n/** @hidden */\nvar cellSelecting = 'cellSelecting';\n/** @hidden */\nvar cellSelected = 'cellSelected';\n/** @hidden */\nvar cellDeselecting = 'cellDeselecting';\n/** @hidden */\nvar cellDeselected = 'cellDeselected';\n/** @hidden */\nvar columnSelecting = 'columnSelecting';\n/** @hidden */\nvar columnSelected = 'columnSelected';\n/** @hidden */\nvar columnDeselecting = 'columnDeselecting';\n/** @hidden */\nvar columnDeselected = 'columnDeselected';\n/** @hidden */\nvar columnDragStart = 'columnDragStart';\n/** @hidden */\nvar columnDrag = 'columnDrag';\n/** @hidden */\nvar columnDrop = 'columnDrop';\n/** @hidden */\nvar rowDragStartHelper = 'rowDragStartHelper';\n/** @hidden */\nvar rowDragStart = 'rowDragStart';\n/** @hidden */\nvar rowDrag = 'rowDrag';\n/** @hidden */\nvar rowDrop = 'rowDrop';\n/** @hidden */\nvar beforePrint = 'beforePrint';\n/** @hidden */\nvar printComplete = 'printComplete';\n/** @hidden */\nvar detailDataBound = 'detailDataBound';\n/** @hidden */\nvar toolbarClick = 'toolbarClick';\n/** @hidden */\nvar batchAdd = 'batchAdd';\n/** @hidden */\nvar batchCancel = 'batchCancel';\n/** @hidden */\nvar batchDelete = 'batchDelete';\n/** @hidden */\nvar beforeBatchAdd = 'beforeBatchAdd';\n/** @hidden */\nvar beforeBatchDelete = 'beforeBatchDelete';\n/** @hidden */\nvar beforeBatchSave = 'beforeBatchSave';\n/** @hidden */\nvar beginEdit = 'beginEdit';\n/** @hidden */\nvar cellEdit = 'cellEdit';\n/** @hidden */\nvar cellSave = 'cellSave';\n/** @hidden */\nvar cellSaved = 'cellSaved';\n/** @hidden */\nvar endAdd = 'endAdd';\n/** @hidden */\nvar endDelete = 'endDelete';\n/** @hidden */\nvar endEdit = 'endEdit';\n/** @hidden */\nvar recordDoubleClick = 'recordDoubleClick';\n/** @hidden */\nvar recordClick = 'recordClick';\n/** @hidden */\nvar beforeDataBound = 'beforeDataBound';\n/** @hidden */\nvar beforeOpenColumnChooser = 'beforeOpenColumnChooser';\n/** @hidden */\nvar beforeOpenAdaptiveDialog = 'beforeOpenAdaptiveDialog';\n/** @hidden */\nvar resizeStart = 'resizeStart';\n/** @hidden */\nvar onResize = 'resizing';\n/** @hidden */\nvar resizeStop = 'resizeStop';\n/** @hidden */\nvar checkBoxChange = 'checkBoxChange';\n/** @hidden */\nvar beforeCopy = 'beforeCopy';\n/** @hidden */\nvar beforePaste = 'beforePaste';\n/** @hidden */\nvar beforeAutoFill = 'beforeAutoFill';\n/** @hidden */\nvar filterChoiceRequest = 'filterchoicerequest';\n/** @hidden */\nvar filterAfterOpen = 'filterafteropen';\n/** @hidden */\nvar filterBeforeOpen = 'filterbeforeopen';\n/** @hidden */\nvar filterSearchBegin = 'filtersearchbegin';\n/** @hidden */\nvar commandClick = 'commandClick';\n/** @hidden */\nvar exportGroupCaption = 'exportGroupCaption';\n/** @hidden */\nvar lazyLoadGroupExpand = 'lazyLoadGroupExpand';\n/** @hidden */\nvar lazyLoadGroupCollapse = 'lazyLoadGroupCollapse';\n/**\n * Specifies grid internal events\n */\n/** @hidden */\nvar initialLoad = 'initial-load';\n/** @hidden */\nvar initialEnd = 'initial-end';\n/** @hidden */\nvar dataReady = 'data-ready';\n/** @hidden */\nvar contentReady = 'content-ready';\n/** @hidden */\nvar uiUpdate = 'ui-update';\n/** @hidden */\nvar onEmpty = 'on-empty';\n/** @hidden */\nvar inBoundModelChanged = 'inbound-model-changed';\n/** @hidden */\nvar modelChanged = 'model-changed';\n/** @hidden */\nvar colGroupRefresh = 'colgroup-refresh';\n/** @hidden */\nvar headerRefreshed = 'header-refreshed';\n/** @hidden */\nvar pageBegin = 'paging-begin';\n/** @hidden */\nvar pageComplete = 'paging-complete';\n/** @hidden */\nvar sortBegin = 'sorting-begin';\n/** @hidden */\nvar sortComplete = 'sorting-complete';\n/** @hidden */\nvar filterBegin = 'filtering-begin';\n/** @hidden */\nvar filterComplete = 'filtering-complete';\n/** @hidden */\nvar searchBegin = 'searching-begin';\n/** @hidden */\nvar searchComplete = 'searching-complete';\n/** @hidden */\nvar reorderBegin = 'reorder-begin';\n/** @hidden */\nvar reorderComplete = 'reorder-complete';\n/** @hidden */\nvar rowDragAndDropBegin = 'rowdraganddrop-begin';\n/** @hidden */\nvar rowDragAndDropComplete = 'rowdraganddrop-complete';\n/** @hidden */\nvar groupBegin = 'grouping-begin';\n/** @hidden */\nvar groupComplete = 'grouping-complete';\n/** @hidden */\nvar ungroupBegin = 'ungrouping-begin';\n/** @hidden */\nvar ungroupComplete = 'ungrouping-complete';\n/** @hidden */\nvar groupAggregates = 'group-aggregates';\n/** @hidden */\nvar refreshFooterRenderer = 'refresh-footer-rendered';\n/** @hidden */\nvar refreshAggregateCell = 'refresh-aggregate-cell';\n/** @hidden */\nvar refreshAggregates = 'refresh-aggregates';\n/** @hidden */\nvar rowSelectionBegin = 'rowselecting';\n/** @hidden */\nvar rowSelectionComplete = 'rowselected';\n/** @hidden */\nvar columnSelectionBegin = 'columnselecting';\n/** @hidden */\nvar columnSelectionComplete = 'columnselected';\n/** @hidden */\nvar cellSelectionBegin = 'cellselecting';\n/** @hidden */\nvar cellSelectionComplete = 'cellselected';\n/** @hidden */\nvar beforeCellFocused = 'beforecellfocused';\n/** @hidden */\nvar cellFocused = 'cellfocused';\n/** @hidden */\nvar keyPressed = 'key-pressed';\n/** @hidden */\nvar click = 'click';\n/** @hidden */\nvar destroy = 'destroy';\n/** @hidden */\nvar columnVisibilityChanged = 'column-visible-changed';\n/** @hidden */\nvar scroll = 'scroll';\n/** @hidden */\nvar columnWidthChanged = 'column-width-changed';\n/** @hidden */\nvar columnPositionChanged = 'column-position-changed';\n/** @hidden */\nvar rowDragAndDrop = 'row-drag-and-drop';\n/** @hidden */\nvar rowsAdded = 'rows-added';\n/** @hidden */\nvar rowsRemoved = 'rows-removed';\n/** @hidden */\nvar columnDragStop = 'column-drag-stop';\n/** @hidden */\nvar headerDrop = 'header-drop';\n/** @hidden */\nvar dataSourceModified = 'datasource-modified';\n/** @hidden */\nvar refreshComplete = 'refresh-complete';\n/** @hidden */\nvar refreshVirtualBlock = 'refresh-virtual-block';\n/** @hidden */\nvar dblclick = 'dblclick';\n/** @hidden */\nvar toolbarRefresh = 'toolbar-refresh';\n/** @hidden */\nvar bulkSave = 'bulk-save';\n/** @hidden */\nvar autoCol = 'auto-col';\n/** @hidden */\nvar tooltipDestroy = 'tooltip-destroy';\n/** @hidden */\nvar updateData = 'update-data';\n/** @hidden */\nvar editBegin = 'edit-begin';\n/** @hidden */\nvar editComplete = 'edit-complete';\n/** @hidden */\nvar addBegin = 'add-begin';\n/** @hidden */\nvar addComplete = 'add-complete';\n/** @hidden */\nvar saveComplete = 'save-complete';\n/** @hidden */\nvar deleteBegin = 'delete-begin';\n/** @hidden */\nvar deleteComplete = 'delete-complete';\n/** @hidden */\nvar preventBatch = 'prevent-batch';\n/** @hidden */\nvar dialogDestroy = 'dialog-destroy';\n/** @hidden */\nvar crudAction = 'crud-Action';\n/** @hidden */\nvar addDeleteAction = 'add-delete-Action';\n/** @hidden */\nvar destroyForm = 'destroy-form';\n/** @hidden */\nvar doubleTap = 'double-tap';\n/** @hidden */\nvar beforeExcelExport = 'beforeExcelExport';\n/** @hidden */\nvar excelExportComplete = 'excelExportComplete';\n/** @hidden */\nvar excelQueryCellInfo = 'excelQueryCellInfo';\n/** @hidden */\nvar excelHeaderQueryCellInfo = 'excelHeaderQueryCellInfo';\n/** @hidden */\nvar exportDetailDataBound = 'exportDetailDataBound';\n/** @hidden */\nvar beforePdfExport = 'beforePdfExport';\n/** @hidden */\nvar pdfExportComplete = 'pdfExportComplete';\n/** @hidden */\nvar pdfQueryCellInfo = 'pdfQueryCellInfo';\n/** @hidden */\nvar pdfHeaderQueryCellInfo = 'pdfHeaderQueryCellInfo';\n/** @hidden */\nvar accessPredicate = 'access-predicate';\n/** @hidden */\nvar contextMenuClick = 'contextMenuClick';\n/** @hidden */\nvar freezeRender = 'freezerender';\n/** @hidden */\nvar freezeRefresh = 'freezerefresh';\n/** @hidden */\nvar contextMenuOpen = 'contextMenuOpen';\n/** @hidden */\nvar columnMenuClick = 'columnMenuClick';\n/** @hidden */\nvar columnMenuOpen = 'columnMenuOpen';\n/** @hidden */\nvar filterOpen = 'filterOpen';\n/** @hidden */\nvar filterDialogCreated = 'filterDialogCreated';\n/** @hidden */\nvar filterMenuClose = 'filter-menu-close';\n/** @hidden */\nvar initForeignKeyColumn = 'initForeignKeyColumn';\n/** @hidden */\nvar getForeignKeyData = 'getForeignKeyData';\n/** @hidden */\nvar generateQuery = 'generateQuery';\n/** @hidden */\nvar showEmptyGrid = 'showEmptyGrid';\n/** @hidden */\nvar foreignKeyData = 'foreignKeyData';\n/** @hidden */\nvar columnDataStateChange = 'columnDataStateChange';\n/** @hidden */\nvar dataStateChange = 'dataStateChange';\n/** @hidden */\nvar dataSourceChanged = 'dataSourceChanged';\n/** @hidden */\nvar rtlUpdated = 'rtl-updated';\n/** @hidden */\nvar beforeFragAppend = 'beforeFragAppend';\n/** @hidden */\nvar frozenHeight = 'frozenHeight';\n/** @hidden */\nvar textWrapRefresh = 'textWrapRefresh';\n/** @hidden */\nvar recordAdded = 'recordAdded';\n/** @hidden */\nvar cancelBegin = 'cancel-Begin';\n/** @hidden */\nvar editNextValCell = 'editNextValCell';\n/** @hidden */\nvar hierarchyPrint = 'hierarchyprint';\n/** @hidden */\nvar expandChildGrid = 'expandchildgrid';\n/** @hidden */\nvar printGridInit = 'printGrid-Init';\n/** @hidden */\nvar exportRowDataBound = 'export-RowDataBound';\n/** @hidden */\nvar exportDataBound = 'export-DataBound';\n/** @hidden */\nvar rowPositionChanged = 'row-position-changed';\n/** @hidden */\nvar columnChooserOpened = 'columnChooserOpened';\n/** @hidden */\nvar batchForm = 'batchedit-form';\n/** @hidden */\nvar beforeStartEdit = 'edit-form';\n/** @hidden */\nvar beforeBatchCancel = 'before-batch-cancel';\n/** @hidden */\nvar batchEditFormRendered = 'batcheditform-rendered';\n/** @hidden */\nvar partialRefresh = 'partial-refresh';\n/** @hidden */\nvar beforeCustomFilterOpen = 'beforeCustomFilterOpen';\n/** @hidden */\nvar selectVirtualRow = 'select-virtual-Row';\n/** @hidden */\nvar columnsPrepared = 'columns-prepared';\n/** @hidden */\nvar cBoxFltrBegin = 'cbox-filter-begin';\n/** @hidden */\nvar cBoxFltrComplete = 'cbox-filter-complete';\n/** @hidden */\nvar fltrPrevent = 'filter-Prevent';\n/** @hidden */\nvar beforeFltrcMenuOpen = 'before-filter-cmenu-open';\n/** @hidden */\nvar valCustomPlacement = 'validation-custom-placement';\n/** @hidden */\nvar filterCboxValue = 'filter-cbox-value';\n/** @hidden */\nvar componentRendered = 'component-rendered';\n/** @hidden */\nvar restoreFocus = 'restore-Focus';\n/** @hidden */\nvar detailStateChange = 'detail-state-change';\n/** @hidden */\nvar detailIndentCellInfo = 'detail-indentcell-info';\n/** @hidden */\nvar virtaulKeyHandler = 'virtaul-key-handler';\n/** @hidden */\nvar virtaulCellFocus = 'virtaul-cell-focus';\n/** @hidden */\nvar virtualScrollEditActionBegin = 'virtual-scroll-edit-action-begin';\n/** @hidden */\nvar virtualScrollEditSuccess = 'virtual-scroll-edit-success';\n/** @hidden */\nvar virtualScrollEditCancel = 'virtual-scroll-edit-cancel';\n/** @hidden */\nvar virtualScrollEdit = 'virtual-scroll-edit';\n/** @hidden */\nvar refreshVirtualCache = 'refresh-virtual-cache';\n/** @hidden */\nvar editReset = 'edit-reset';\n/** @hidden */\nvar virtualScrollAddActionBegin = 'virtual-scroll-add-action-begin';\n/** @hidden */\nvar getVirtualData = 'get-virtual-data';\n/** @hidden */\nvar refreshInfiniteModeBlocks = 'refresh-infinite-mode-blocks';\n/** @hidden */\nvar resetInfiniteBlocks = 'reset-infinite-blocks';\n/** @hidden */\nvar infiniteScrollHandler = 'infinite-scroll-handler';\n/** @hidden */\nvar infinitePageQuery = 'infinite-page-query';\n/** @hidden */\nvar infiniteShowHide = 'infinite-show-hide';\n/** @hidden */\nvar appendInfiniteContent = 'append-infinite-content';\n/** @hidden */\nvar removeInfiniteRows = 'remove-infinite-rows';\n/** @hidden */\nvar setInfiniteCache = 'set-infinite-cache';\n/** @hidden */\nvar infiniteEditHandler = 'infinite-edit-handler';\n/** @hidden */\nvar initialCollapse = 'initial-collapse';\n/** @hidden */\nvar getAggregateQuery = 'get-aggregate-query';\n/** @hidden */\nvar closeFilterDialog = 'close-filter-dialog';\n/** @hidden */\nvar columnChooserCancelBtnClick = 'columnChooserCancelBtnClick';\n/** @hidden */\nvar getFilterBarOperator = 'get-filterbar-operator';\n/** @hidden */\nvar resetColumns = 'reset-columns';\n/** @hidden */\nvar pdfAggregateQueryCellInfo = 'pdfAggregateQueryCellInfo';\n/** @hidden */\nvar excelAggregateQueryCellInfo = 'excelAggregateQueryCellInfo';\n/** @hidden */\nvar setGroupCache = 'group-cache';\n/** @hidden */\nvar lazyLoadScrollHandler = 'lazy-load-scroll-handler';\n/** @hidden */\nvar groupCollapse = 'group-collapse';\n/** @hidden */\nvar beforeCheckboxRenderer = 'beforeCheckboxRenderer';\n/** @hidden */\nvar refreshHandlers = 'refreshResizeHandlers';\n/** @hidden */\nvar refreshFrozenColumns = 'refresh-frozen-columns';\n/** @hidden */\nvar setReorderDestinationElement = 'set-reorder-destination-element';\n/** @hidden */\nvar refreshVirtualFrozenHeight = 'refresh-virtual-frozen-height';\n/** @hidden */\nvar setFreezeSelection = 'set-freeze-selection';\n/** @hidden */\nvar setInfiniteFrozenHeight = 'set-infinite-frozen-height';\n/** @hidden */\nvar setInfiniteColFrozenHeight = 'set-infinite-col-frozen-height';\n/** @hidden */\nvar beforeRefreshOnDataChange = 'before-refresh-on-data-change';\n/** @hidden */\nvar immutableBatchCancel = 'immutable-batch-cancel';\n/** @hidden */\nvar refreshVirtualFrozenRows = 'refresh-virtual-frozenrows';\n/** @hidden */\nvar checkScrollReset = 'check-scroll-reset';\n/** @hidden */\nvar refreshFrozenHeight = 'refresh-frozen-height';\n/** @hidden */\nvar setHeightToFrozenElement = 'set-height-to-frozen-element';\n/** @hidden */\nvar preventFrozenScrollRefresh = 'prevent-frozen-scroll-refresh';\n/** @hidden */\nvar nextCellIndex = 'next-cell-index';\n/** @hidden */\nvar refreshInfiniteCurrentViewData = 'refresh-infinite-current-view-data';\n/** @hidden */\nvar infiniteCrudCancel = 'infinite-crud-cancel';\n/** @hidden */\nvar filterDialogClose = 'filter-dialog-close';\n/** @hidden */\nvar refreshCustomFilterOkBtn = 'refresh-cutsom-filter-ok-button';\n/** @hidden */\nvar refreshCustomFilterClearBtn = 'refresh-cutsom-filter-clear-button';\n/** @hidden */\nvar renderResponsiveCmenu = 'render-responsive-cmenu';\n/** @hidden */\nvar filterCmenuSelect = 'filter-cmenu-select';\n/** @hidden */\nvar customFilterClose = 'custom-filter-close';\n/** @hidden */\nvar setFullScreenDialog = 'set-fullscreen-dialog';\n/** @hidden */\nvar refreshExpandandCollapse = 'refresh-Expand-and-Collapse';\n/** @hidden */\nvar rowModeChange = 'row-mode-change';\n/** @hidden */\nvar enterKeyHandler = 'enter-key-handler';\n/** @hidden */\nvar refreshVirtualMaxPage = 'refresh-virtual-max-page';\n/** @hidden */\nvar setVirtualPageQuery = 'set-virtual-page-query';\n/** @hidden */\nvar selectRowOnContextOpen = 'select-row-on-context-open';\n/** @hidden */\nvar pagerRefresh = 'pager-refresh';\n/** @hidden */\nvar closeInline = 'closeinline';\n/** @hidden */\nvar closeBatch = 'closebatch';\n/** @hidden */\nvar closeEdit = 'close-edit';\n/** @hidden */\nvar resetVirtualFocus = 'reset-virtual-focus';\n/** @hidden */\nvar afterContentRender = 'after-content-renderer';\n/** @hidden */\nvar refreshVirtualEditFormCells = 'refresh-virtual-editform-cells';\n/** @hidden */\nvar scrollToEdit = 'scroll-to-edit';\n/** @hidden */\nvar beforeCheckboxRendererQuery = 'before-checkbox-renderer-query';\n/** @hidden */\nvar createVirtualValidationForm = 'create-virtual-validation-form';\n/** @hidden */\nvar validateVirtualForm = 'validate-virtual-form';\n/** @hidden */\nvar destroyChildGrid = 'destroy-child-grid';\n/** @hidden */\nvar stickyScrollComplete = 'sticky-scroll-complete';\n/** @hidden */\nvar captionActionComplete = 'infinite-group-collapse';\n/** @hidden */\nvar refreshInfinitePersistSelection = 'refresh-infinite-persist-selection';\n/** @hidden */\nvar refreshInfiniteEditrowindex = 'refresh-infinite-editrowindex';\n/** @hidden */\nvar afterFilterColumnMenuClose = 'after-filter-column-menu-close';\n/** @hidden */\nvar beforeCheckboxfilterRenderer = 'beforeCheckboxfilterRenderer';\n/** @hidden */\nvar commandColumnDestroy = 'commandColumnDestroy';\n/** @hidden */\nvar batchCnfrmDlgCancel = 'cancelcnfrmDlg';\n/** @hidden */\nvar refreshVirtualLazyLoadCache = 'refresh-Virtual-LazyLoad-Cache';\n\n/**\n * Defines types of Cell\n *\n * @hidden\n */\nvar CellType;\n(function (CellType) {\n /** Defines CellType as Data */\n CellType[CellType[\"Data\"] = 0] = \"Data\";\n /** Defines CellType as Header */\n CellType[CellType[\"Header\"] = 1] = \"Header\";\n /** Defines CellType as Summary */\n CellType[CellType[\"Summary\"] = 2] = \"Summary\";\n /** Defines CellType as GroupSummary */\n CellType[CellType[\"GroupSummary\"] = 3] = \"GroupSummary\";\n /** Defines CellType as CaptionSummary */\n CellType[CellType[\"CaptionSummary\"] = 4] = \"CaptionSummary\";\n /** Defines CellType as Filter */\n CellType[CellType[\"Filter\"] = 5] = \"Filter\";\n /** Defines CellType as Indent */\n CellType[CellType[\"Indent\"] = 6] = \"Indent\";\n /** Defines CellType as GroupCaption */\n CellType[CellType[\"GroupCaption\"] = 7] = \"GroupCaption\";\n /** Defines CellType as GroupCaptionEmpty */\n CellType[CellType[\"GroupCaptionEmpty\"] = 8] = \"GroupCaptionEmpty\";\n /** Defines CellType as Expand */\n CellType[CellType[\"Expand\"] = 9] = \"Expand\";\n /** Defines CellType as HeaderIndent */\n CellType[CellType[\"HeaderIndent\"] = 10] = \"HeaderIndent\";\n /** Defines CellType as StackedHeader */\n CellType[CellType[\"StackedHeader\"] = 11] = \"StackedHeader\";\n /** Defines CellType as DetailHeader */\n CellType[CellType[\"DetailHeader\"] = 12] = \"DetailHeader\";\n /** Defines CellType as DetailExpand */\n CellType[CellType[\"DetailExpand\"] = 13] = \"DetailExpand\";\n /** Defines CellType as CommandColumn */\n CellType[CellType[\"CommandColumn\"] = 14] = \"CommandColumn\";\n /** Defines CellType as DetailFooterIntent */\n CellType[CellType[\"DetailFooterIntent\"] = 15] = \"DetailFooterIntent\";\n /** Defines CellType as RowDrag */\n CellType[CellType[\"RowDragIcon\"] = 16] = \"RowDragIcon\";\n /** Defines CellType as RowDragHeader */\n CellType[CellType[\"RowDragHIcon\"] = 17] = \"RowDragHIcon\";\n})(CellType || (CellType = {}));\n/**\n * Defines types of Render\n *\n * @hidden\n */\nvar RenderType;\n(function (RenderType) {\n /** Defines RenderType as Header */\n RenderType[RenderType[\"Header\"] = 0] = \"Header\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Summary */\n RenderType[RenderType[\"Summary\"] = 2] = \"Summary\";\n})(RenderType || (RenderType = {}));\n/**\n * Defines Predefined toolbar items.\n *\n * @hidden\n */\nvar ToolbarItem;\n(function (ToolbarItem) {\n ToolbarItem[ToolbarItem[\"Add\"] = 0] = \"Add\";\n ToolbarItem[ToolbarItem[\"Edit\"] = 1] = \"Edit\";\n ToolbarItem[ToolbarItem[\"Update\"] = 2] = \"Update\";\n ToolbarItem[ToolbarItem[\"Delete\"] = 3] = \"Delete\";\n ToolbarItem[ToolbarItem[\"Cancel\"] = 4] = \"Cancel\";\n ToolbarItem[ToolbarItem[\"Print\"] = 5] = \"Print\";\n ToolbarItem[ToolbarItem[\"Search\"] = 6] = \"Search\";\n ToolbarItem[ToolbarItem[\"ColumnChooser\"] = 7] = \"ColumnChooser\";\n ToolbarItem[ToolbarItem[\"PdfExport\"] = 8] = \"PdfExport\";\n ToolbarItem[ToolbarItem[\"ExcelExport\"] = 9] = \"ExcelExport\";\n ToolbarItem[ToolbarItem[\"CsvExport\"] = 10] = \"CsvExport\";\n ToolbarItem[ToolbarItem[\"WordExport\"] = 11] = \"WordExport\";\n})(ToolbarItem || (ToolbarItem = {}));\n/**\n * Defines types of responsive dialogs\n *\n * @hidden\n */\nvar ResponsiveDialogAction;\n(function (ResponsiveDialogAction) {\n /** Defines dialog type as Edit */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isEdit\"] = 0] = \"isEdit\";\n /** Defines dialog type as Add */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isAdd\"] = 1] = \"isAdd\";\n /** Defines dialog type as Sort */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isSort\"] = 2] = \"isSort\";\n /** Defines dialog type as Filter */\n ResponsiveDialogAction[ResponsiveDialogAction[\"isFilter\"] = 3] = \"isFilter\";\n})(ResponsiveDialogAction || (ResponsiveDialogAction = {}));\n/**\n * Defines responsive toolbar actions\n *\n * @hidden\n */\nvar ResponsiveToolbarAction;\n(function (ResponsiveToolbarAction) {\n /** Defines initial responsive toolbar buttons */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isInitial\"] = 0] = \"isInitial\";\n /** Defines responsive toolbar search */\n ResponsiveToolbarAction[ResponsiveToolbarAction[\"isSearch\"] = 1] = \"isSearch\";\n})(ResponsiveToolbarAction || (ResponsiveToolbarAction = {}));\n\n/**\n * Grid data module is used to generate query and data source.\n *\n * @hidden\n */\nvar Data = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for data module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @hidden\n */\n function Data(parent, serviceLocator) {\n this.dataState = { isPending: false, resolver: null, group: [] };\n this.foreignKeyDataState = { isPending: false, resolver: null };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.initDataManager();\n if (this.parent.isDestroyed || this.getModuleName() === 'foreignKey') {\n return;\n }\n this.parent.on(rowsAdded, this.addRows, this);\n this.parent.on(rowPositionChanged, this.reorderRows, this);\n this.parent.on(rowsRemoved, this.removeRows, this);\n this.parent.on(dataSourceModified, this.initDataManager, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(updateData, this.crudActions, this);\n this.parent.on(addDeleteAction, this.getData, this);\n this.parent.on(autoCol, this.refreshFilteredCols, this);\n this.parent.on(columnsPrepared, this.refreshFilteredCols, this);\n }\n Data.prototype.reorderRows = function (e) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, this.dataManager.dataSource.json.splice(e.fromIndex, 1)[0]);\n };\n Data.prototype.getModuleName = function () {\n return 'data';\n };\n /**\n * The function used to initialize dataManager and external query\n *\n * @returns {void}\n */\n Data.prototype.initDataManager = function () {\n var gObj = this.parent;\n this.dataManager = gObj.dataSource instanceof DataManager ? gObj.dataSource :\n (isNullOrUndefined(gObj.dataSource) ? new DataManager() : new DataManager(gObj.dataSource));\n if (gObj.isAngular && !(gObj.query instanceof Query)) {\n gObj.setProperties({ query: new Query() }, true);\n }\n else {\n this.isQueryInvokedFromData = true;\n gObj.query = gObj.query instanceof Query ? gObj.query : new Query();\n }\n };\n /**\n * The function is used to generate updated Query from Grid model.\n *\n * @param {boolean} skipPage - specifies the boolean to skip the page\n * @returns {Query} returns the Query\n * @hidden\n */\n Data.prototype.generateQuery = function (skipPage, isAutoCompleteCall) {\n var gObj = this.parent;\n var query = gObj.getQuery().clone();\n if (this.parent.columnQueryMode === 'ExcludeHidden') {\n query.select(this.parent.getColumns().filter(function (column) { return !(column.isPrimaryKey !== true && column.visible === false || column.field === undefined); }).map(function (column) { return column.field; }));\n }\n else if (this.parent.columnQueryMode === 'Schema') {\n var selectQueryFields = [];\n var columns = this.parent.columns;\n for (var i = 0; i < columns.length; i++) {\n selectQueryFields.push(columns[parseInt(i.toString(), 10)].field);\n }\n query.select(selectQueryFields);\n }\n this.filterQuery(query);\n this.searchQuery(query);\n this.aggregateQuery(query);\n this.sortQuery(query);\n if (isGroupAdaptive(this.parent)) {\n this.virtualGroupPageQuery(query);\n }\n else {\n this.pageQuery(query, skipPage);\n }\n if (isNullOrUndefined(isAutoCompleteCall) || !isAutoCompleteCall) {\n this.groupQuery(query);\n }\n return query;\n };\n /**\n * @param {Query} query - specifies the query\n * @returns {Query} - returns the query\n * @hidden\n */\n Data.prototype.aggregateQuery = function (query) {\n var rows = this.parent.aggregates;\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n for (var j = 0; j < row.columns.length; j++) {\n var cols = row.columns[parseInt(j.toString(), 10)];\n var types = cols.type instanceof Array ? cols.type : [cols.type];\n for (var k = 0; k < types.length; k++) {\n query.aggregate(types[parseInt(k.toString(), 10)].toLowerCase(), cols.field);\n }\n }\n }\n return query;\n };\n Data.prototype.virtualGroupPageQuery = function (query) {\n var fName = 'fn';\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n };\n Data.prototype.pageQuery = function (query, skipPage) {\n var gObj = this.parent;\n var fName = 'fn';\n var args = { query: query, skipPage: false };\n gObj.notify(setVirtualPageQuery, args);\n if (args.skipPage) {\n return query;\n }\n if ((gObj.allowPaging || gObj.enableVirtualization || gObj.enableInfiniteScrolling) && skipPage !== true) {\n gObj.pageSettings.currentPage = Math.max(1, gObj.pageSettings.currentPage);\n if (gObj.pageSettings.pageCount <= 0) {\n gObj.pageSettings.pageCount = 8;\n }\n if (gObj.pageSettings.pageSize <= 0) {\n gObj.pageSettings.pageSize = 12;\n }\n if (query.queries.length) {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[parseInt(i.toString(), 10)][\"\" + fName] === 'onPage') {\n query.queries.splice(i, 1);\n }\n }\n }\n if (!isNullOrUndefined(gObj.infiniteScrollModule) && gObj.enableInfiniteScrolling) {\n this.parent.notify(infinitePageQuery, query);\n }\n else {\n query.page(gObj.pageSettings.currentPage, gObj.allowPaging && gObj.pagerModule &&\n gObj.pagerModule.pagerObj.isAllPage && !this.dataManager.dataSource.offline ? null :\n gObj.pageSettings.pageSize);\n }\n }\n return query;\n };\n Data.prototype.groupQuery = function (query) {\n var gObj = this.parent;\n if (gObj.allowGrouping && gObj.groupSettings.columns.length) {\n if (this.parent.groupSettings.enableLazyLoading) {\n query.lazyLoad.push({ key: 'isLazyLoad', value: this.parent.groupSettings.enableLazyLoading });\n }\n var columns = gObj.groupSettings.columns;\n for (var i = 0, len = columns.length; i < len; i++) {\n var column = this.getColumnByField(columns[parseInt(i.toString(), 10)]);\n if (!column) {\n this.parent.log('initial_action', { moduleName: 'group', columnName: columns[parseInt(i.toString(), 10)] });\n }\n var isGrpFmt = column.enableGroupByFormat;\n var format = column.format;\n if (isGrpFmt) {\n query.group(columns[parseInt(i.toString(), 10)], this.formatGroupColumn.bind(this), format);\n }\n else {\n query.group(columns[parseInt(i.toString(), 10)], null);\n }\n }\n }\n return query;\n };\n Data.prototype.sortQuery = function (query) {\n var gObj = this.parent;\n if ((gObj.allowSorting || gObj.allowGrouping) && gObj.sortSettings.columns.length) {\n var columns = gObj.sortSettings.columns;\n var sortGrp = [];\n for (var i = columns.length - 1; i > -1; i--) {\n var col = this.getColumnByField(columns[parseInt(i.toString(), 10)].field);\n if (col) {\n col.setSortDirection(columns[parseInt(i.toString(), 10)].direction);\n }\n else {\n this.parent.log('initial_action', { moduleName: 'sort', columnName: columns[parseInt(i.toString(), 10)].field });\n return query;\n }\n var fn = columns[parseInt(i.toString(), 10)].direction;\n if (col.sortComparer) {\n this.parent.log('grid_sort_comparer');\n fn = !this.isRemote() ? col.sortComparer.bind(col) : columns[parseInt(i.toString(), 10)].direction;\n }\n if (gObj.groupSettings.columns.indexOf(columns[parseInt(i.toString(), 10)].field) === -1) {\n if (col.isForeignColumn() || col.sortComparer) {\n query.sortByForeignKey(col.field, fn, undefined, columns[parseInt(i.toString(), 10)].direction.toLowerCase());\n }\n else {\n query.sortBy(col.field, fn);\n }\n }\n else {\n sortGrp.push({ direction: fn, field: col.field });\n }\n }\n for (var i = 0, len = sortGrp.length; i < len; i++) {\n if (typeof sortGrp[parseInt(i.toString(), 10)].direction === 'string') {\n query.sortBy(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction);\n }\n else {\n var col = this.getColumnByField(sortGrp[parseInt(i.toString(), 10)].field);\n query.sortByForeignKey(sortGrp[parseInt(i.toString(), 10)].field, sortGrp[parseInt(i.toString(), 10)].direction, undefined, col.getSortDirection().toLowerCase());\n }\n }\n }\n return query;\n };\n Data.prototype.searchQuery = function (query, fcolumn, isForeignKey) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.getSearchColumnFieldNames();\n var predicateList = [];\n var needForeignKeySearch = false;\n if (this.parent.searchSettings.key.length) {\n needForeignKeySearch = this.parent.getForeignKeyColumns().some(function (col) { return fields.indexOf(col.field) > -1; });\n var adaptor = !isForeignKey ? this.dataManager.adaptor : fcolumn.dataSource.adaptor;\n if (needForeignKeySearch || (adaptor.getModuleName &&\n adaptor.getModuleName() === 'ODataV4Adaptor')) {\n fields = isForeignKey ? [fcolumn.foreignKeyValue] : fields;\n for (var i = 0; i < fields.length; i++) {\n var column = isForeignKey ? fcolumn : this.getColumnByField(fields[parseInt(i.toString(), 10)]);\n if (column.isForeignColumn() && !isForeignKey) {\n predicateList = this.fGeneratePredicate(column, predicateList);\n }\n else {\n predicateList.push(new Predicate(fields[parseInt(i.toString(), 10)], sSettings.operator, sSettings.key, sSettings.ignoreCase, sSettings.ignoreAccent));\n }\n }\n var predList = Predicate.or(predicateList);\n predList.key = sSettings.key;\n query.where(predList);\n }\n else {\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n }\n return query;\n };\n Data.prototype.filterQuery = function (query, column, skipFoerign) {\n var gObj = this.parent;\n var predicateList = [];\n var actualFilter = [];\n var foreignColumn = this.parent.getForeignKeyColumns();\n var foreignColEmpty;\n if (gObj.allowFiltering && gObj.filterSettings.columns.length) {\n var columns = column ? column : gObj.filterSettings.columns;\n var colType = {};\n for (var _i = 0, _a = gObj.getColumns(); _i < _a.length; _i++) {\n var col = _a[_i];\n colType[col.field] = col.filter.type ? col.filter.type : gObj.filterSettings.type;\n }\n var foreignCols = [];\n var defaultFltrCols = [];\n for (var _b = 0, columns_1 = columns; _b < columns_1.length; _b++) {\n var col = columns_1[_b];\n var gridColumn = col.isForeignKey ? gObj.getColumnByUid(col.uid) : gObj.getColumnByField(col.field);\n if (isNullOrUndefined(col.type) && gridColumn && (gridColumn.type === 'date' || gridColumn.type === 'datetime')) {\n col.type = col.isForeignKey ? gObj.getColumnByUid(col.uid).type : gObj.getColumnByField(col.field).type;\n }\n if (col.isForeignKey) {\n foreignCols.push(col);\n }\n else {\n defaultFltrCols.push(col);\n }\n }\n if (defaultFltrCols.length) {\n for (var i = 0, len = defaultFltrCols.length; i < len; i++) {\n defaultFltrCols[parseInt(i.toString(), 10)].uid = defaultFltrCols[parseInt(i.toString(), 10)].uid ||\n this.parent.grabColumnByFieldFromAllCols(defaultFltrCols[parseInt(i.toString(), 10)].field).uid;\n }\n var excelPredicate = CheckBoxFilterBase.getPredicate(defaultFltrCols);\n for (var _c = 0, _d = Object.keys(excelPredicate); _c < _d.length; _c++) {\n var prop = _d[_c];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n if (foreignCols.length) {\n for (var _e = 0, foreignCols_1 = foreignCols; _e < foreignCols_1.length; _e++) {\n var col = foreignCols_1[_e];\n col.uid = col.uid || this.parent.grabColumnByFieldFromAllCols(col.field).uid;\n var column_1 = this.parent.grabColumnByUidFromAllCols(col.uid);\n if (!column_1) {\n this.parent.log('initial_action', { moduleName: 'filter', columnName: col.field });\n }\n if (column_1.isForeignColumn() && getColumnByForeignKeyValue(col.field, foreignColumn) && !skipFoerign) {\n actualFilter.push(col);\n if (!column_1.columnData.length) {\n foreignColEmpty = true;\n }\n predicateList = this.fGeneratePredicate(column_1, predicateList);\n }\n else {\n var excelPredicate = CheckBoxFilterBase.getPredicate(columns);\n for (var _f = 0, _g = Object.keys(excelPredicate); _f < _g.length; _f++) {\n var prop = _g[_f];\n predicateList.push(excelPredicate[\"\" + prop]);\n }\n }\n }\n }\n if (predicateList.length && !foreignColEmpty) {\n query.where(Predicate.and(predicateList));\n }\n else {\n this.parent.notify(showEmptyGrid, {});\n }\n }\n return query;\n };\n Data.prototype.fGeneratePredicate = function (col, predicateList) {\n var fPredicate = {};\n if (col) {\n this.parent.notify(generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(fPredicate.predicate);\n }\n }\n return predicateList;\n };\n /**\n * The function is used to get dataManager promise by executing given Query.\n *\n * @param {object} args - specifies the object\n * @param {string} args.requestType - Defines the request type\n * @param {string[]} args.foreignKeyData - Defines the foreignKeyData.string\n * @param {Object} args.data - Defines the data.\n * @param {number} args.index - Defines the index .\n * @param {Query} query - Defines the query which will execute along with data processing.\n * @returns {Promise} - returns the object\n * @hidden\n */\n Data.prototype.getData = function (args, query) {\n var _this = this;\n if (args === void 0) { args = { requestType: '' }; }\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ?\n args.foreignKeyData : this.parent.getPrimaryKeyFieldNames());\n this.parent.log('datasource_syntax_mismatch', { dataState: this.parent });\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n var def = this.eventPromise(args, query, key);\n return def.promise;\n }\n else {\n var crud = void 0;\n switch (args.requestType) {\n case 'delete':\n query = query ? query : this.generateQuery();\n // eslint-disable-next-line no-case-declarations\n var len = Object.keys(args.data).length;\n if (len === 1) {\n crud = this.dataManager.remove(key, args.data[0], query.fromTable, query);\n }\n else {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n changes.deletedRecords = args.data;\n crud = this.dataManager.saveChanges(changes, key, query.fromTable, query.requiresCount());\n }\n break;\n case 'save':\n query = query ? query : this.generateQuery();\n args.index = isNullOrUndefined(args.index) ? 0 : args.index;\n crud = this.dataManager.insert(args.data, query.fromTable, query, args.index);\n break;\n }\n var promise = 'promise';\n args[\"\" + promise] = crud;\n // eslint-disable-next-line no-prototype-builtins\n if (crud && !Array.isArray(crud) && !crud.hasOwnProperty('deletedRecords')) {\n return crud.then(function () {\n return _this.insert(query, args);\n });\n }\n else {\n return this.insert(query, args);\n }\n }\n };\n Data.prototype.insert = function (query, args) {\n if (args.requestType === 'save') {\n this.parent.notify(recordAdded, args);\n }\n return this.executeQuery(query);\n };\n Data.prototype.executeQuery = function (query) {\n var _this = this;\n if (this.dataManager.ready) {\n var deferred_1 = new Deferred();\n var ready = this.dataManager.ready;\n ready.then(function () {\n _this.dataManager.executeQuery(query).then(function (result) {\n deferred_1.resolve(result);\n });\n }).catch(function (e) {\n deferred_1.reject(e);\n });\n return deferred_1.promise;\n }\n else {\n return this.dataManager.executeQuery(query);\n }\n };\n Data.prototype.formatGroupColumn = function (value, field) {\n var serviceLocator = this.serviceLocator;\n var column = this.getColumnByField(field);\n var date = value;\n if (!column.type) {\n column.type = date.getDay ? (date.getHours() > 0 || date.getMinutes() > 0 ||\n date.getSeconds() > 0 || date.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n if (isNullOrUndefined(column.getFormatter())) {\n setFormatter(serviceLocator, column);\n }\n var formatVal = ValueFormatter.prototype.toView(value, column.getFormatter());\n return formatVal;\n };\n Data.prototype.crudActions = function (args) {\n var query = this.generateQuery();\n var promise = null;\n var pr = 'promise';\n var key = this.getKey(args.foreignKeyData &&\n Object.keys(args.foreignKeyData).length ? args.foreignKeyData :\n this.parent.getPrimaryKeyFieldNames());\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.eventPromise(args, query, key);\n }\n switch (args.requestType) {\n case 'save':\n promise = this.dataManager.update(key, args.data, query.fromTable, query, args.previousData);\n break;\n }\n args[\"\" + pr] = promise ? promise : args[\"\" + pr];\n this.parent.notify(crudAction, args);\n };\n /**\n * @param {object} changes - specifies the changes\n * @param {string} key - specifies the key\n * @param {object} original - specifies the original data\n * @param {Query} query - specifies the query\n * @returns {Promise} returns the object\n * @hidden\n */\n Data.prototype.saveChanges = function (changes, key, original, query) {\n if (query === void 0) { query = this.generateQuery(); }\n query.requiresCount();\n if ('result' in this.parent.dataSource) {\n var deff = new Deferred();\n var args = {\n requestType: 'batchsave', changes: changes, key: key, query: query,\n endEdit: deff.resolve\n };\n this.setState({ isPending: true, resolver: deff.resolve });\n this.parent.trigger(dataSourceChanged, args);\n return deff.promise;\n }\n else {\n var promise = this.dataManager.saveChanges(changes, key, query.fromTable, query, original);\n return promise;\n }\n };\n Data.prototype.getKey = function (keys) {\n if (keys && keys.length) {\n return keys[0];\n }\n return undefined;\n };\n /**\n * @returns {boolean} returns whether its remote data\n * @hidden\n */\n Data.prototype.isRemote = function () {\n return this.dataManager.dataSource.offline !== true && this.dataManager.dataSource.url !== undefined &&\n this.dataManager.dataSource.url !== '';\n };\n Data.prototype.addRows = function (e) {\n for (var i = e.records.length; i > 0; i--) {\n this.dataManager.dataSource.json.splice(e.toIndex, 0, e.records[i - 1]);\n }\n };\n Data.prototype.removeRows = function (e) {\n var json = this.dataManager.dataSource.json;\n this.dataManager.dataSource.json = json.filter(function (value) { return e.records.indexOf(value) === -1; });\n };\n Data.prototype.getColumnByField = function (field) {\n var col;\n return (this.parent.columnModel).some(function (column) {\n col = column;\n return column.field === field;\n }) && col;\n };\n Data.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(rowsAdded, this.addRows);\n this.parent.off(rowsRemoved, this.removeRows);\n this.parent.off(dataSourceModified, this.initDataManager);\n this.parent.off(destroy, this.destroy);\n this.parent.off(updateData, this.crudActions);\n this.parent.off(addDeleteAction, this.getData);\n this.parent.off(autoCol, this.refreshFilteredCols);\n this.parent.off(columnsPrepared, this.refreshFilteredCols);\n };\n Data.prototype.getState = function () {\n return this.dataState;\n };\n Data.prototype.setState = function (state) {\n return this.dataState = state;\n };\n Data.prototype.getForeignKeyDataState = function () {\n return this.foreignKeyDataState;\n };\n Data.prototype.setForeignKeyDataState = function (state) {\n this.foreignKeyDataState = state;\n };\n Data.prototype.getStateEventArgument = function (query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return extend(data, state.pvtData);\n };\n Data.prototype.eventPromise = function (args, query, key) {\n var _this = this;\n var dataArgs = args;\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n if (args.requestType !== undefined && this.dataState.isDataChanged !== false) {\n state.action = args;\n if (args.requestType === 'save' || args.requestType === 'delete') {\n var editArgs_1 = args;\n editArgs_1.key = key;\n var promise = 'promise';\n editArgs_1[\"\" + promise] = deff.promise;\n editArgs_1.state = state;\n this.setState({ isPending: true, resolver: deff.resolve });\n dataArgs.endEdit = deff.resolve;\n dataArgs.cancelEdit = deff.reject;\n this.parent.trigger(dataSourceChanged, editArgs_1);\n deff.promise.then(function () {\n _this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n if (editArgs_1.requestType === 'save') {\n _this.parent.notify(recordAdded, editArgs_1);\n }\n _this.parent.trigger(dataStateChange, state);\n })\n .catch(function () { return void 0; });\n }\n else {\n this.setState({ isPending: true, resolver: def.resolve, group: state.group, aggregates: state.aggregates });\n this.parent.trigger(dataStateChange, state);\n }\n }\n else {\n this.setState({});\n def.resolve(this.parent.dataSource);\n }\n return def;\n };\n /**\n * Gets the columns where searching needs to be performed from the Grid.\n *\n * @returns {string[]} returns the searched column field names\n */\n Data.prototype.getSearchColumnFieldNames = function () {\n var colFieldNames = [];\n var columns = this.parent.getColumns();\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var col = columns_2[_i];\n if (col.allowSearching && !isNullOrUndefined(col.field)) {\n colFieldNames.push(col.field);\n }\n }\n return colFieldNames;\n };\n Data.prototype.refreshFilteredCols = function () {\n if (this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n refreshFilteredColsUid(this.parent, this.parent.filterSettings.columns);\n }\n };\n return Data;\n}());\n\n/**\n * Row\n *\n * @hidden\n */\nvar Row = /** @__PURE__ @class */ (function () {\n function Row(options, parent) {\n merge(this, options);\n this.parent = parent;\n }\n Row.prototype.clone = function () {\n var row = new Row({});\n merge(row, this);\n row.cells = this.cells.map(function (cell) { return cell.clone(); });\n return row;\n };\n /**\n * Replaces the row data and grid refresh the particular row element only.\n *\n * @param {Object} data - To update new data for the particular row.\n * @returns {void}\n */\n Row.prototype.setRowValue = function (data) {\n if (!this.parent) {\n return;\n }\n var key = this.data[this.parent.getPrimaryKeyFieldNames()[0]];\n this.parent.setRowData(key, data);\n };\n /**\n * Replaces the given field value and refresh the particular cell element only.\n *\n * @param {string} field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Row.prototype.setCellValue = function (field, value) {\n if (!this.parent) {\n return;\n }\n var isValDiff = !(this.data[\"\" + field].toString() === value.toString());\n if (isValDiff) {\n var pKeyField = this.parent.getPrimaryKeyFieldNames()[0];\n var key = this.data[\"\" + pKeyField];\n this.parent.setCellValue(key, field, value);\n this.makechanges(pKeyField, this.data);\n }\n else {\n return;\n }\n };\n Row.prototype.makechanges = function (key, data) {\n if (!this.parent) {\n return;\n }\n var gObj = this.parent;\n var dataManager = gObj.getDataModule().dataManager;\n dataManager.update(key, data);\n };\n return Row;\n}());\n\n/**\n * Cell\n *\n * @hidden\n */\nvar Cell = /** @__PURE__ @class */ (function () {\n function Cell(options) {\n this.isSpanned = false;\n this.isRowSpanned = false;\n merge(this, options);\n }\n Cell.prototype.clone = function () {\n var cell = new Cell({});\n merge(cell, this);\n return cell;\n };\n return Cell;\n}());\n\n/**\n * `CellMergeRender` module.\n *\n * @hidden\n */\nvar CellMergeRender = /** @__PURE__ @class */ (function () {\n function CellMergeRender(serviceLocator, parent) {\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n }\n CellMergeRender.prototype.render = function (cellArgs, row, i, td) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var cellRenderer = cellRendererFact.getCellRenderer(row.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var colSpan = row.cells[parseInt(i.toString(), 10)].cellSpan ? row.cells[parseInt(i.toString(), 10)].cellSpan :\n (cellArgs.colSpan + i) <= row.cells.length ? cellArgs.colSpan : row.cells.length - i;\n var rowSpan = cellArgs.rowSpan;\n var visible = 0;\n var spannedCell;\n if (row.index > 0) {\n var rowsObject = this.parent.isFrozenGrid() ?\n this.parent.contentModule.tempFreezeRows : this.parent.getRowsObject();\n var cells = this.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row.index - 1].isDataRow ? rowsObject[row.index].cells : rowsObject[row.index - 1].cells;\n var targetCell_1 = row.cells[parseInt(i.toString(), 10)];\n var uid_1 = 'uid';\n spannedCell = cells.filter(function (cell) { return cell.column.uid === targetCell_1.column[\"\" + uid_1]; })[0];\n }\n var colSpanLen = spannedCell && spannedCell.colSpanRange > 1 && spannedCell.rowSpanRange > 1 ?\n spannedCell.colSpanRange : colSpan;\n for (var j = i + 1; j < i + colSpanLen && j < row.cells.length; j++) {\n if (row.cells[parseInt(j.toString(), 10)].visible === false) {\n visible++;\n }\n else {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n }\n if (visible > 0) {\n for (var j = i + colSpan; j < i + colSpan + visible && j < row.cells.length; j++) {\n row.cells[parseInt(j.toString(), 10)].isSpanned = true;\n }\n if (i + colSpan + visible >= row.cells.length) {\n colSpan -= (i + colSpan + visible) - row.cells.length;\n }\n }\n if (row.cells[parseInt(i.toString(), 10)].cellSpan) {\n row.data[cellArgs.column.field] = row.cells[parseInt(i.toString(), 10)].spanText;\n td = cellRenderer.render(row.cells[parseInt(i.toString(), 10)], row.data, { 'index': !isNullOrUndefined(row.index) ? row.index.toString() : '' });\n }\n if (colSpan > 1) {\n attributes(td, { 'colSpan': colSpan.toString(), 'aria-colSpan': colSpan.toString() });\n }\n if (rowSpan > 1) {\n attributes(td, { 'rowspan': rowSpan.toString(), 'aria-rowspan': rowSpan.toString() });\n row.cells[parseInt(i.toString(), 10)].isRowSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(rowSpan);\n if (colSpan > 1) {\n row.cells[parseInt(i.toString(), 10)].colSpanRange = Number(colSpan);\n }\n }\n if (row.index > 0 && (spannedCell.rowSpanRange > 1)) {\n row.cells[parseInt(i.toString(), 10)].isSpanned = true;\n row.cells[parseInt(i.toString(), 10)].rowSpanRange = Number(spannedCell.rowSpanRange - 1);\n row.cells[parseInt(i.toString(), 10)].colSpanRange = spannedCell.rowSpanRange > 0 ? spannedCell.colSpanRange : 1;\n }\n if (this.parent.enableColumnVirtualization && !row.cells[parseInt(i.toString(), 10)].cellSpan &&\n !this.containsKey(cellArgs.column.field, cellArgs.data[cellArgs.column.field])) {\n this.backupMergeCells(cellArgs.column.field, cellArgs.data[cellArgs.column.field], cellArgs.colSpan);\n }\n return td;\n };\n CellMergeRender.prototype.backupMergeCells = function (fName, data, span) {\n this.setMergeCells(this.generteKey(fName, data), span);\n };\n CellMergeRender.prototype.generteKey = function (fname, data) {\n return fname + '__' + data.toString();\n };\n CellMergeRender.prototype.splitKey = function (key) {\n return key.split('__');\n };\n CellMergeRender.prototype.containsKey = function (fname, data) {\n // eslint-disable-next-line no-prototype-builtins\n return this.getMergeCells().hasOwnProperty(this.generteKey(fname, data));\n };\n CellMergeRender.prototype.getMergeCells = function () {\n return this.parent.mergeCells;\n };\n CellMergeRender.prototype.setMergeCells = function (key, span) {\n this.parent.mergeCells[\"\" + key] = span;\n };\n CellMergeRender.prototype.updateVirtualCells = function (rows) {\n var mCells = this.getMergeCells();\n for (var _i = 0, _a = Object.keys(mCells); _i < _a.length; _i++) {\n var key = _a[_i];\n var value = mCells[\"\" + key];\n var merge$$1 = this.splitKey(key);\n var columnIndex = this.getIndexFromAllColumns(merge$$1[0]);\n var vColumnIndices = this.parent.getColumnIndexesInView();\n var span = value - (vColumnIndices[0] - columnIndex);\n if (columnIndex < vColumnIndices[0] && span > 1) {\n for (var _b = 0, rows_1 = rows; _b < rows_1.length; _b++) {\n var row = rows_1[_b];\n if (row.data[merge$$1[0]].toString() === merge$$1[1].toString()) {\n row.cells[0].cellSpan = span;\n row.cells[0].spanText = merge$$1[1];\n break;\n }\n }\n }\n }\n return rows;\n };\n CellMergeRender.prototype.getIndexFromAllColumns = function (field) {\n var index = iterateArrayOrObject(this.parent.getVisibleColumns(), function (item, index) {\n if (item.field === field) {\n return index;\n }\n return undefined;\n })[0];\n return index;\n };\n return CellMergeRender;\n}());\n\n/**\n * Specifies class names\n */\n/** @hidden */\nvar rowCell = 'e-rowcell';\n/** @hidden */\nvar gridHeader = 'e-gridheader';\n/** @hidden */\nvar gridContent = 'e-gridcontent';\n/** @hidden */\nvar gridFooter = 'e-gridfooter';\n/** @hidden */\nvar headerContent = 'e-headercontent';\n/** @hidden */\nvar movableContent = 'e-movablecontent';\n/** @hidden */\nvar movableHeader = 'e-movableheader';\n/** @hidden */\nvar frozenContent = 'e-frozencontent';\n/** @hidden */\nvar frozenHeader = 'e-frozenheader';\n/** @hidden */\nvar content = 'e-content';\n/** @hidden */\nvar table = 'e-table';\n/** @hidden */\nvar row = 'e-row';\n/** @hidden */\nvar gridChkBox = 'e-gridchkbox';\n/** @hidden */\nvar editedRow = 'e-editedrow';\n/** @hidden */\nvar addedRow = 'e-addedrow';\n/**\n * Specifies repeated strings\n */\n/** @hidden */\nvar changedRecords = 'changedRecords';\n/** @hidden */\nvar addedRecords = 'addedRecords';\n/** @hidden */\nvar deletedRecords = 'deletedRecords';\n/** @hidden */\nvar leftRight = 'Left-Right';\n/** @hidden */\nvar frozenRight = 'frozen-right';\n/** @hidden */\nvar frozenLeft = 'frozen-left';\n/** @hidden */\nvar dataColIndex = 'data-colindex';\n/** @hidden */\nvar ariaColIndex = 'aria-colindex';\n/** @hidden */\nvar dataRowIndex = 'data-rowindex';\n/** @hidden */\nvar ariaRowIndex = 'aria-rowindex';\n/** @hidden */\nvar tbody = 'tbody';\n/** @hidden */\nvar colGroup = 'colgroup';\n/** @hidden */\nvar open = 'open';\n/** @hidden */\nvar change = 'change';\n/** @hidden */\nvar focus = 'focus';\n/** @hidden */\nvar create = 'created';\n/** @hidden */\nvar beforeOpen = 'beforeOpen';\n/** @hidden */\nvar downArrow = 'downArrow';\n/** @hidden */\nvar upArrow = 'upArrow';\n/** @hidden */\nvar pageUp = 'PageUp';\n/** @hidden */\nvar pageDown = 'PageDown';\n/** @hidden */\nvar enter = 'enter';\n/** @hidden */\nvar shiftEnter = 'shiftEnter';\n/** @hidden */\nvar tab = 'tab';\n/** @hidden */\nvar shiftTab = 'shiftTab';\n\n/**\n * RowRenderer class which responsible for building row content.\n *\n * @hidden\n */\nvar RowRenderer = /** @__PURE__ @class */ (function () {\n function RowRenderer(serviceLocator, cellType, parent) {\n this.isSpan = false;\n this.cellType = cellType;\n this.serviceLocator = serviceLocator;\n this.parent = parent;\n this.element = this.parent.createElement('tr', { attrs: { role: 'row' } });\n }\n /* eslint-disable */\n /**\n * Function to render the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the columns\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @param {Element} cloneNode - specifies the cloneNode\n * @returns {Element} returns the element\n */\n /* eslint-enable */\n RowRenderer.prototype.render = function (row$$1, columns, attributes$$1, rowTemplate, cloneNode) {\n return this.refreshRow(row$$1, columns, attributes$$1, rowTemplate, cloneNode);\n };\n /* eslint-disable */\n /**\n * Function to refresh the row content based on Column[] and data.\n *\n * @param {Row} row - specifies the row\n * @param {Column[]} columns - specifies the column\n * @param {boolean} isChanged - specifies isChanged\n * @param {Object} attributes - specifies the attributes\n * @param {string} rowTemplate - specifies the rowTemplate\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.refresh = function (row$$1, columns, isChanged, attributes$$1, rowTemplate) {\n var _this = this;\n if (isChanged) {\n row$$1.data = extendObjWithFn({}, row$$1.changes);\n this.refreshMergeCells(row$$1);\n }\n var node = this.parent.element.querySelector('[data-uid=' + row$$1.uid + ']');\n var tr = this.refreshRow(row$$1, columns, attributes$$1, rowTemplate, null, isChanged);\n var cells = [].slice.call(tr.cells);\n var tempCells = [].slice.call(node.querySelectorAll('.e-templatecell'));\n if (this.parent.isReact && tempCells.length) {\n var _loop_1 = function (col) {\n if (col.template) {\n setTimeout(function () {\n _this.parent.refreshReactColumnTemplateByUid(col.uid, true);\n }, 0);\n return \"break\";\n }\n };\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var state_1 = _loop_1(col);\n if (state_1 === \"break\")\n break;\n }\n }\n var attr = [].slice.call(tr.attributes);\n attr.map(function (item) {\n node.setAttribute(item['name'], item['value']);\n });\n node.innerHTML = '';\n for (var _a = 0, cells_1 = cells; _a < cells_1.length; _a++) {\n var cell = cells_1[_a];\n node.appendChild(cell);\n }\n };\n // tslint:disable-next-line:max-func-body-length\n RowRenderer.prototype.refreshRow = function (row$$1, columns, attributes$$1, rowTemplate, cloneNode, isEdit) {\n var tr = !isNullOrUndefined(cloneNode) ? cloneNode : this.element.cloneNode();\n var rowArgs = { data: row$$1.data };\n var cellArgs = { data: row$$1.data };\n var chekBoxEnable = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox' && col.field; })[0];\n var value = false;\n if (chekBoxEnable) {\n value = getObject(chekBoxEnable.field, rowArgs.data);\n }\n var selIndex = this.parent.getSelectedRowIndexes();\n if (row$$1.isDataRow) {\n row$$1.isSelected = selIndex.indexOf(row$$1.index) > -1 || value;\n }\n if (row$$1.isDataRow && this.parent.isCheckBoxSelection\n && this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n row$$1.isSelected = true;\n if (selIndex.indexOf(row$$1.index) === -1) {\n selIndex.push(row$$1.index);\n }\n }\n this.buildAttributeFromRow(tr, row$$1);\n attributes(tr, extend({}, attributes$$1, {}));\n setStyleAndAttributes(tr, row$$1.attributes);\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var _loop_2 = function (i, len) {\n var cell = row$$1.cells[parseInt(i.toString(), 10)];\n cell.isSelected = row$$1.isSelected;\n cell.isColumnSelected = cell.column.isSelected;\n var cellRenderer = cellRendererFact.getCellRenderer(row$$1.cells[parseInt(i.toString(), 10)].cellType\n || CellType.Data);\n var attrs = { 'index': !isNullOrUndefined(row$$1.index) ? row$$1.index.toString() : '' };\n if (row$$1.isExpand && row$$1.cells[parseInt(i.toString(), 10)].cellType === CellType.DetailExpand) {\n attrs['class'] = this_1.parent.isPrinting ? 'e-detailrowcollapse' : 'e-detailrowexpand';\n }\n var td = cellRenderer.render(row$$1.cells[parseInt(i.toString(), 10)], row$$1.data, attrs, row$$1.isExpand, isEdit);\n if (row$$1.cells[parseInt(i.toString(), 10)].cellType !== CellType.Filter) {\n if (row$$1.cells[parseInt(i.toString(), 10)].cellType === CellType.Data\n || row$$1.cells[parseInt(i.toString(), 10)].cellType === CellType.CommandColumn) {\n var isReactChild = this_1.parent.parentDetails && this_1.parent.parentDetails.parentInstObj &&\n this_1.parent.parentDetails.parentInstObj.isReact;\n if (((this_1.parent.isReact && this_1.parent.requireTemplateRef) || (isReactChild &&\n this_1.parent.parentDetails.parentInstObj.requireTemplateRef)) && cell.isTemplate) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this_1;\n thisRef_1.parent.renderTemplates(function () {\n var ariaAttr = td.getAttribute('aria-label');\n td.setAttribute('aria-label', td.innerText + ariaAttr);\n thisRef_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row$$1.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: thisRef_1.parent.requestTypeAction\n }));\n });\n }\n else {\n this_1.parent.trigger(queryCellInfo, extend(cellArgs, {\n cell: td, column: cell.column, colSpan: 1,\n rowSpan: 1, foreignKeyData: row$$1.cells[parseInt(i.toString(), 10)].foreignKeyData,\n requestType: this_1.parent.requestTypeAction\n }));\n }\n var isRowSpanned = false;\n if (row$$1.index > 0 && this_1.isSpan) {\n var rowsObject = this_1.parent.isFrozenGrid() ?\n this_1.parent.contentModule.tempFreezeRows : this_1.parent.getRowsObject();\n var prevRowCells = this_1.parent.groupSettings.columns.length > 0 &&\n !rowsObject[row$$1.index - 1].isDataRow ? rowsObject[row$$1.index].cells : rowsObject[row$$1.index - 1].cells;\n var uid_1 = 'uid';\n var prevRowCell = prevRowCells.filter(function (cell) {\n return cell.column.uid === row$$1.cells[parseInt(i.toString(), 10)].column[\"\" + uid_1];\n })[0];\n isRowSpanned = prevRowCell.isRowSpanned ? prevRowCell.isRowSpanned : prevRowCell.rowSpanRange > 1;\n }\n if (cellArgs.colSpan > 1 || row$$1.cells[parseInt(i.toString(), 10)].cellSpan > 1 || cellArgs.rowSpan > 1\n || isRowSpanned) {\n this_1.isSpan = true;\n var cellMerge = new CellMergeRender(this_1.serviceLocator, this_1.parent);\n td = cellMerge.render(cellArgs, row$$1, i, td);\n }\n }\n if (!row$$1.cells[parseInt(i.toString(), 10)].isSpanned) {\n tr.appendChild(td);\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = row$$1.cells.length; i < len; i++) {\n _loop_2(i, len);\n }\n var args = { row: tr, rowHeight: this.parent.rowHeight };\n if (row$$1.isDataRow) {\n var eventArg_1 = extend(rowArgs, args);\n eventArg_1.isSelectable = true;\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var cellTemplate = eventArg_1.row.querySelectorAll('.e-templatecell');\n if (((this.parent.isReact && this.parent.requireTemplateRef) || (isReactChild &&\n this.parent.parentDetails.parentInstObj.requireTemplateRef)) && cellTemplate.length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this;\n thisRef_2.parent.renderTemplates(function () {\n thisRef_2.parent.trigger(rowDataBound, eventArg_1);\n });\n }\n else {\n this.parent.trigger(rowDataBound, eventArg_1);\n }\n row$$1.isSelectable = eventArg_1.isSelectable;\n var isDraggable = this.parent.isRowDragable();\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n var primaryKey_1 = this.parent.getPrimaryKeyFieldNames()[0];\n var pKey_1 = row$$1.data ? row$$1.data[\"\" + primaryKey_1] : null;\n var SelectedRecords = eventArg_1.isSelectable ? this.parent.partialSelectedRecords :\n this.parent.disableSelectedRecords;\n if (!SelectedRecords.some(function (data) { return data[\"\" + primaryKey_1] === pKey_1; })) {\n SelectedRecords.push(row$$1.data);\n }\n }\n if (!eventArg_1.isSelectable) {\n this.parent.selectionModule.isPartialSelection = true;\n row$$1.isSelected = false;\n var chkBox = args.row.querySelectorAll('.e-rowcell.e-gridchkbox');\n var isDrag = eventArg_1.row.querySelector('.e-rowdragdrop');\n var cellIdx = this.parent.groupSettings.columns.length + (isDrag || this.parent.isDetail() ? 1 : 0);\n for (var i = 0; i < chkBox.length; i++) {\n chkBox[parseInt(i.toString(), 10)].firstElementChild.classList.add('e-checkbox-disabled');\n chkBox[parseInt(i.toString(), 10)].querySelector('.e-frame').classList.remove('e-check');\n }\n if (row$$1.cells.length) {\n for (var i = cellIdx; i < row$$1.cells.length; i++) {\n var cell = eventArg_1.row.querySelector('.e-rowcell[data-colindex=\"' + row$$1.cells[parseInt(i.toString(), 10)].index + '\"]');\n if (cell) {\n removeClass([cell], ['e-selectionbackground', 'e-active']);\n }\n }\n }\n if (isDrag) {\n removeClass([isDrag], ['e-selectionbackground', 'e-active']);\n }\n }\n if (this.parent.childGrid || isDraggable || this.parent.detailTemplate) {\n var td = tr.querySelectorAll('.e-rowcell:not(.e-hide)')[0];\n if (td) {\n td.classList.add('e-detailrowvisible');\n }\n }\n }\n if (this.parent.enableVirtualization) {\n rowArgs.rowHeight = this.parent.rowHeight;\n }\n if (rowArgs.rowHeight) {\n tr.style.height = rowArgs.rowHeight + 'px';\n }\n else if (this.parent.rowHeight && (tr.querySelector('.e-headercell') || tr.querySelector('.e-groupcaption'))) {\n tr.style.height = this.parent.rowHeight + 'px';\n }\n if (row$$1.cssClass) {\n tr.classList.add(row$$1.cssClass);\n }\n if (row$$1.lazyLoadCssClass) {\n tr.classList.add(row$$1.lazyLoadCssClass);\n }\n var vFTable = this.parent.enableColumnVirtualization && this.parent.frozenColumns !== 0;\n if (!vFTable && this.parent.aggregates.length && this.parent.element.scrollHeight > this.parent.height) {\n for (var i = 0; i < this.parent.aggregates.length; i++) {\n var property = 'properties';\n var column = 'columns';\n if (this.parent.aggregates[parseInt(i.toString(), 10)][\"\" + property][\"\" + column][0].footerTemplate) {\n var summarycell = [].slice.call(tr.getElementsByClassName('e-summarycell'));\n if (summarycell.length) {\n var lastSummaryCell = (summarycell[summarycell.length - 1]);\n addClass([lastSummaryCell], ['e-lastsummarycell']);\n var firstSummaryCell = (summarycell[0]);\n addClass([firstSummaryCell], ['e-firstsummarycell']);\n }\n }\n }\n }\n return tr;\n };\n RowRenderer.prototype.refreshMergeCells = function (row$$1) {\n for (var _i = 0, _a = row$$1.cells; _i < _a.length; _i++) {\n var cell = _a[_i];\n cell.isSpanned = false;\n }\n return row$$1;\n };\n /* eslint-disable */\n /**\n * Function to check and add alternative row css class.\n *\n * @param {Element} tr - specifies the tr element\n * @param {Row} row - specifies the row\n * @returns {void}\n */\n /* eslint-enable */\n RowRenderer.prototype.buildAttributeFromRow = function (tr, row$$1) {\n var attr = {};\n var prop = { 'rowindex': dataRowIndex, 'dataUID': 'data-uid', 'ariaSelected': 'aria-selected' };\n var classes = [];\n if (row$$1.isDataRow) {\n classes.push(row);\n }\n if (row$$1.isAltRow) {\n classes.push('e-altrow');\n }\n if (row$$1.isCaptionRow) {\n classes.push('e-groupcaptionrow');\n }\n if (row$$1.isAggregateRow && row$$1.parentUid) {\n classes.push('e-groupfooterrow');\n }\n if (!isNullOrUndefined(row$$1.index)) {\n attr[ariaRowIndex] = row$$1.index + 1;\n attr[prop.rowindex] = row$$1.index;\n }\n if (row$$1.rowSpan) {\n attr.rowSpan = row$$1.rowSpan;\n }\n if (row$$1.uid) {\n attr[prop.dataUID] = row$$1.uid;\n }\n if (row$$1.isSelected) {\n attr[prop.ariaSelected] = true;\n }\n if (row$$1.visible === false) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(tr, attr);\n };\n return RowRenderer;\n}());\n\n/**\n * RowModelGenerator is used to generate grid data rows.\n *\n * @hidden\n */\nvar RowModelGenerator = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function RowModelGenerator(parent) {\n this.parent = parent;\n }\n RowModelGenerator.prototype.generateRows = function (data, args) {\n var rows = [];\n var startIndex = this.parent.enableVirtualization && args ? args.startIndex : 0;\n startIndex = this.parent.enableInfiniteScrolling && args ? this.getInfiniteIndex(args) : startIndex;\n if (this.parent.enableImmutableMode && args && args.startIndex) {\n startIndex = args.startIndex;\n }\n for (var i = 0, len = Object.keys(data).length; i < len; i++, startIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], startIndex);\n }\n return rows;\n };\n RowModelGenerator.prototype.ensureColumns = function () {\n //TODO: generate dummy column for group, detail here;\n var cols = [];\n if (this.parent.detailTemplate || this.parent.childGrid) {\n var args = {};\n this.parent.notify(detailIndentCellInfo, args);\n cols.push(this.generateCell(args, null, CellType.DetailExpand));\n }\n if (this.parent.isRowDragable()) {\n cols.push(this.generateCell({}, null, CellType.RowDragIcon));\n }\n return cols;\n };\n RowModelGenerator.prototype.generateRow = function (data, index, cssClass, indent, pid, tIndex, parentUid) {\n var options = {};\n options.foreignKeyData = {};\n options.uid = getUid('grid-row');\n options.data = data;\n options.index = index;\n options.indent = indent;\n options.tIndex = tIndex;\n options.isDataRow = true;\n options.parentGid = pid;\n options.parentUid = parentUid;\n if (this.parent.isPrinting) {\n if (this.parent.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (this.parent.hierarchyPrintMode === 'Expanded' && this.parent.expandedRows && this.parent.expandedRows[parseInt(index.toString(), 10)]) {\n options.isExpand = this.parent.expandedRows[parseInt(index.toString(), 10)].isExpand;\n }\n }\n options.cssClass = cssClass;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n options.isSelected = this.parent.getSelectedRowIndexes().indexOf(index) > -1;\n this.refreshForeignKeyRow(options);\n var cells = this.ensureColumns();\n var row = new Row(options, this.parent);\n row.cells = this.parent.getFrozenMode() === 'Right' ? this.generateCells(options).concat(cells)\n : cells.concat(this.generateCells(options));\n return row;\n };\n RowModelGenerator.prototype.refreshForeignKeyRow = function (options) {\n var foreignKeyColumns = this.parent.getForeignKeyColumns();\n for (var i = 0; i < foreignKeyColumns.length; i++) {\n setValue(foreignKeyColumns[parseInt(i.toString(), 10)].field, getForeignData(foreignKeyColumns[parseInt(i.toString(), 10)], options.data), options.foreignKeyData);\n }\n };\n RowModelGenerator.prototype.generateCells = function (options) {\n var dummies = this.parent.getColumns();\n var tmp = [];\n for (var i = 0; i < dummies.length; i++) {\n tmp.push(this.generateCell(dummies[parseInt(i.toString(), 10)], options.uid, isNullOrUndefined(dummies[parseInt(i.toString(), 10)].commands) ? undefined : CellType.CommandColumn, null, i, options.foreignKeyData));\n }\n return tmp;\n };\n /**\n *\n * @param {Column} column - Defines column details\n * @param {string} rowId - Defines row id\n * @param {CellType} cellType - Defines cell type\n * @param {number} colSpan - Defines colSpan\n * @param {number} oIndex - Defines index\n * @param {Object} foreignKeyData - Defines foreign key data\n * @returns {Cell} returns cell model\n * @hidden\n */\n RowModelGenerator.prototype.generateCell = function (column, rowId, cellType, colSpan, oIndex, foreignKeyData$$1) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(column.field || column.template),\n 'isTemplate': !isNullOrUndefined(column.template),\n 'rowID': rowId,\n 'column': column,\n 'cellType': !isNullOrUndefined(cellType) ? cellType : CellType.Data,\n 'colSpan': colSpan,\n 'commands': column.commands,\n 'isForeignKey': column.isForeignColumn && column.isForeignColumn(),\n 'foreignKeyData': column.isForeignColumn && column.isForeignColumn() && getValue(column.field, foreignKeyData$$1)\n };\n if (opt.isDataCell || opt.column.type === 'checkbox' || opt.commands) {\n opt.index = oIndex;\n }\n return new Cell(opt);\n };\n RowModelGenerator.prototype.refreshRows = function (input) {\n for (var i = 0; i < input.length; i++) {\n this.refreshForeignKeyRow(input[parseInt(i.toString(), 10)]);\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n }\n return input;\n };\n RowModelGenerator.prototype.getInfiniteIndex = function (args) {\n return args.requestType === 'infiniteScroll' || args.requestType === 'delete' || args.action === 'add'\n ? args.startIndex : 0;\n };\n return RowModelGenerator;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Summary row model generator\n *\n * @hidden\n */\nvar SummaryModelGenerator = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Summary row model generator\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function SummaryModelGenerator(parent) {\n this.parent = parent;\n }\n SummaryModelGenerator.prototype.getData = function () {\n var _this = this;\n var rows = [];\n var row = this.parent.aggregates.slice();\n for (var i = 0; i < row.length; i++) {\n var columns = row[parseInt(i.toString(), 10)].columns.filter(function (column) {\n return !(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)\n || _this.columnSelector(column);\n });\n if (columns.length) {\n rows.push({ columns: columns });\n }\n }\n return rows;\n };\n SummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.footerTemplate !== undefined;\n };\n SummaryModelGenerator.prototype.getColumns = function (start, end) {\n var columns = [];\n if (this.parent.detailTemplate || !isNullOrUndefined(this.parent.childGrid)) {\n columns.push(new Column({}));\n }\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n columns.push(new Column({}));\n }\n }\n if (this.parent.isRowDragable() && !start) {\n columns.push(new Column({}));\n }\n columns.push.apply(columns, this.parent.getColumns());\n end = end && !start ? end + this.parent.getIndentCount() : end;\n return isNullOrUndefined(start) ? columns : columns.slice(start, end);\n };\n SummaryModelGenerator.prototype.generateRows = function (input, args, start, end, columns) {\n if (input.length === 0) {\n if (args === undefined || !args.count) {\n return [];\n }\n }\n var data = this.buildSummaryData(input, args);\n var rows = [];\n var row = this.getData();\n for (var i = 0; i < row.length; i++) {\n rows.push(this.getGeneratedRow(row[parseInt(i.toString(), 10)], data[parseInt(i.toString(), 10)], args ? args.level : undefined, start, end, args ? args.parentUid : undefined, columns));\n }\n return rows;\n };\n SummaryModelGenerator.prototype.getGeneratedRow = function (summaryRow, data, raw, start, end, parentUid, columns) {\n var tmp = [];\n var indents = this.getIndentByLevel();\n var isDetailGridAlone = !isNullOrUndefined(this.parent.childGrid);\n var indentLength = !start ? this.parent.getIndentCount() : 0;\n if (this.parent.isRowDragable() && !start) {\n indents = ['e-indentcelltop'];\n }\n var values = columns ? columns : this.getColumns(start, end);\n for (var i = 0; i < values.length; i++) {\n tmp.push(this.getGeneratedCell(values[parseInt(i.toString(), 10)], summaryRow, i >= indentLength ? this.getCellType() :\n i === 0 && this.parent.childGrid ? CellType.DetailFooterIntent : CellType.Indent, indents[parseInt(i.toString(), 10)], isDetailGridAlone));\n }\n var row = new Row({ data: data, attributes: { class: 'e-summaryrow' } });\n row.cells = tmp;\n row.uid = getUid('grid-row');\n row.parentUid = parentUid;\n row.isAggregateRow = true;\n row.visible = tmp.some(function (cell) { return cell.isDataCell && cell.visible; });\n return row;\n };\n SummaryModelGenerator.prototype.getGeneratedCell = function (column, summaryRow, cellType, indent, isDetailGridAlone) {\n //Get the summary column by display\n var sColumn = summaryRow.columns.filter(function (scolumn) { return scolumn.columnName === column.field; })[0];\n var attrs = {\n 'style': { 'textAlign': column.textAlign },\n 'e-mappinguid': column.uid, index: column.index\n };\n if (indent) {\n attrs.class = indent;\n }\n if (isNullOrUndefined(indent) && isDetailGridAlone) {\n attrs.class = 'e-detailindentcelltop';\n }\n var opt = {\n 'visible': column.visible,\n 'isDataCell': !isNullOrUndefined(sColumn),\n 'isTemplate': sColumn && !isNullOrUndefined(sColumn.footerTemplate\n || sColumn.groupFooterTemplate || sColumn.groupCaptionTemplate),\n 'column': sColumn || {},\n 'attributes': attrs,\n 'cellType': cellType\n };\n opt.column.headerText = column.headerText;\n return new Cell(opt);\n };\n SummaryModelGenerator.prototype.buildSummaryData = function (data, args) {\n var dummy = [];\n var summaryRows = this.getData();\n var single = {};\n for (var i = 0; i < summaryRows.length; i++) {\n single = {};\n var column = summaryRows[parseInt(i.toString(), 10)].columns;\n for (var j = 0; j < column.length; j++) {\n single = this.setTemplate(column[parseInt(j.toString(), 10)], (args && args.aggregates) ? args : data, single);\n }\n dummy.push(single);\n }\n return dummy;\n };\n SummaryModelGenerator.prototype.getIndentByLevel = function () {\n return this.parent.groupSettings.columns.map(function () { return 'e-indentcelltop'; });\n };\n SummaryModelGenerator.prototype.setTemplate = function (column, data, single) {\n var types = column.type;\n var helper = {};\n var formatFn = column.getFormatter() || (function () { return function (a) { return a; }; })();\n var group = data;\n if (!(types instanceof Array)) {\n types = [column.type];\n }\n for (var i = 0; i < types.length; i++) {\n var key = column.field + ' - ' + types[parseInt(i.toString(), 10)].toLowerCase();\n var disp = column.columnName;\n var val = types[parseInt(i.toString(), 10)] !== 'Custom' && group.aggregates && key in group.aggregates ? group.aggregates[\"\" + key] :\n calculateAggregate(types[parseInt(i.toString(), 10)], group.aggregates ? group : data, column, this.parent);\n single[\"\" + disp] = single[\"\" + disp] || {};\n single[\"\" + disp][\"\" + key] = val;\n single[\"\" + disp][types[parseInt(i.toString(), 10)]] = !isNullOrUndefined(val) ? formatFn(val) : ' ';\n if (group.field) {\n single[\"\" + disp].field = group.field;\n single[\"\" + disp].key = group.key;\n }\n }\n helper.format = column.getFormatter();\n column.setTemplate(helper);\n return single;\n };\n SummaryModelGenerator.prototype.getCellType = function () {\n return CellType.Summary;\n };\n return SummaryModelGenerator;\n}());\nvar GroupSummaryModelGenerator = /** @__PURE__ @class */ (function (_super) {\n __extends$3(GroupSummaryModelGenerator, _super);\n function GroupSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n GroupSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupFooterTemplate !== undefined;\n };\n GroupSummaryModelGenerator.prototype.getIndentByLevel = function (level) {\n if (level === void 0) { level = this.parent.groupSettings.columns.length; }\n return this.parent.groupSettings.columns.map(function (v, indx) { return indx <= level - 1 ? '' : 'e-indentcelltop'; });\n };\n GroupSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.GroupSummary;\n };\n return GroupSummaryModelGenerator;\n}(SummaryModelGenerator));\nvar CaptionSummaryModelGenerator = /** @__PURE__ @class */ (function (_super) {\n __extends$3(CaptionSummaryModelGenerator, _super);\n function CaptionSummaryModelGenerator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n CaptionSummaryModelGenerator.prototype.columnSelector = function (column) {\n return column.groupCaptionTemplate !== undefined;\n };\n CaptionSummaryModelGenerator.prototype.getData = function () {\n var initVal = { columns: [] };\n return [_super.prototype.getData.call(this).reduce(function (prev, cur) {\n prev.columns = prev.columns.concat(cur.columns);\n return prev;\n }, initVal)];\n };\n CaptionSummaryModelGenerator.prototype.isEmpty = function () {\n return (this.getData()[0].columns || []).length === 0;\n };\n CaptionSummaryModelGenerator.prototype.getCellType = function () {\n return CellType.CaptionSummary;\n };\n return CaptionSummaryModelGenerator;\n}(SummaryModelGenerator));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * GroupModelGenerator is used to generate group caption rows and data rows.\n *\n * @hidden\n */\nvar GroupModelGenerator = /** @__PURE__ @class */ (function (_super) {\n __extends$2(GroupModelGenerator, _super);\n function GroupModelGenerator(parent) {\n var _this = _super.call(this, parent) || this;\n _this.rows = [];\n /** @hidden */\n _this.index = 0;\n _this.infiniteChildCount = 0;\n _this.renderInfiniteAgg = true;\n _this.parent = parent;\n _this.summaryModelGen = new GroupSummaryModelGenerator(parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(parent);\n return _this;\n }\n GroupModelGenerator.prototype.generateRows = function (data, args) {\n if (this.parent.groupSettings.columns.length === 0) {\n return _super.prototype.generateRows.call(this, data, args);\n }\n this.isInfiniteScroll = (args.requestType === 'infiniteScroll');\n this.rows = [];\n this.index = this.parent.enableVirtualization || this.isInfiniteScroll ? args.startIndex : 0;\n for (var i = 0, len = data.length; i < len; i++) {\n this.infiniteChildCount = 0;\n this.renderInfiniteAgg = true;\n this.getGroupedRecords(0, data[parseInt(i.toString(), 10)], data.level, i, undefined, this.rows.length);\n }\n this.index = 0;\n if (this.parent.isCollapseStateEnabled()) {\n this.ensureRowVisibility();\n }\n return this.rows;\n };\n GroupModelGenerator.prototype.getGroupedRecords = function (index, data, raw, parentid, childId, tIndex, parentUid) {\n var _a;\n var level = raw;\n if (isNullOrUndefined(data.items)) {\n if (isNullOrUndefined(data.GroupGuid)) {\n this.rows = this.rows.concat(this.generateDataRows(data, index, parentid, this.rows.length, parentUid));\n }\n else {\n for (var j = 0, len = data.length; j < len; j++) {\n this.getGroupedRecords(index, data[parseInt(j.toString(), 10)], data.level, parentid, index, this.rows.length, parentUid);\n }\n }\n }\n else {\n var preCaption = void 0;\n var captionRow = this.generateCaptionRow(data, index, parentid, childId, tIndex, parentUid);\n if (this.isInfiniteScroll) {\n preCaption = this.getPreCaption(index, captionRow.data.key);\n }\n if (!preCaption) {\n this.rows = this.rows.concat(captionRow);\n }\n else {\n captionRow.uid = preCaption.uid;\n }\n if (data.items && data.items.length) {\n this.getGroupedRecords(index + 1, data.items, data.items.level, parentid, index + 1, this.rows.length, captionRow.uid);\n }\n if (this.parent.aggregates.length && this.isRenderAggregate(captionRow)) {\n var rowCnt = this.rows.length;\n (_a = this.rows).push.apply(_a, this.summaryModelGen.generateRows(data, { level: level, parentUid: captionRow.uid }));\n for (var i = rowCnt - 1; i >= 0; i--) {\n if (this.rows[parseInt(i.toString(), 10)].isCaptionRow) {\n this.rows[parseInt(i.toString(), 10)].aggregatesCount = this.rows.length - rowCnt;\n }\n else if (!this.rows[parseInt(i.toString(), 10)].isCaptionRow && !this.rows[parseInt(i.toString(), 10)].isDataRow) {\n break;\n }\n }\n }\n if (preCaption) {\n this.setInfiniteRowVisibility(preCaption);\n }\n }\n };\n GroupModelGenerator.prototype.isRenderAggregate = function (data) {\n if (this.parent.enableInfiniteScrolling) {\n if (!this.renderInfiniteAgg) {\n return false;\n }\n this.getPreCaption(data.indent, data.data.key);\n this.renderInfiniteAgg = data.data.count === this.infiniteChildCount;\n return this.renderInfiniteAgg;\n }\n return !this.parent.enableInfiniteScrolling;\n };\n GroupModelGenerator.prototype.getPreCaption = function (indent, key) {\n var rowObj = this.parent.getRowsObject().concat(this.rows);\n var preCap;\n this.infiniteChildCount = 0;\n var i = rowObj.length;\n while (i--) {\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && rowObj[parseInt(i.toString(), 10)].indent === indent\n && rowObj[parseInt(i.toString(), 10)].data.key === key) {\n preCap = rowObj[parseInt(i.toString(), 10)];\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent || rowObj[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === indent + 1) {\n this.infiniteChildCount++;\n }\n }\n return preCap;\n };\n GroupModelGenerator.prototype.getCaptionRowCells = function (field, indent, data) {\n var cells = [];\n var visibles = [];\n var column = this.parent.getColumnByField(field);\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization) {\n column = this.parent.columns.filter(function (c) { return c.field === field; })[0];\n }\n var groupedLen = this.parent.groupSettings.columns.length;\n var gObj = this.parent;\n if (!this.parent.enableColumnVirtualization || indexes.indexOf(indent) !== -1) {\n for (var i = 0; i < indent; i++) {\n cells.push(this.generateIndentCell());\n }\n cells.push(this.generateCell({}, null, CellType.Expand));\n }\n indent = this.parent.enableColumnVirtualization ? 1 :\n (this.parent.getVisibleColumns().length + groupedLen + (gObj.detailTemplate || gObj.childGrid ? 1 : 0) -\n indent + (this.parent.getVisibleColumns().length ? -1 : 0));\n //Captionsummary cells will be added here.\n if (this.parent.aggregates.length && !this.captionModelGen.isEmpty()) {\n var captionCells = this.captionModelGen.generateRows(data)[0];\n extend(data, captionCells.data);\n var cIndex_1 = 0;\n captionCells.cells.some(function (cell, index) { cIndex_1 = index; return cell.visible && cell.isDataCell; });\n visibles = captionCells.cells.slice(cIndex_1).filter(function (cell) { return cell.visible; });\n if (captionCells.visible && visibles[0].column.field === this.parent.getVisibleColumns()[0].field) {\n visibles = visibles.slice(1);\n }\n if (this.parent.getVisibleColumns().length === 1) {\n visibles = [];\n }\n indent = indent - visibles.length;\n }\n var cols = (!this.parent.enableColumnVirtualization ? [column] : this.parent.getColumns());\n var wFlag = true;\n for (var j = 0; j < cols.length; j++) {\n var tmpFlag = wFlag && indexes.indexOf(indent) !== -1;\n if (tmpFlag) {\n wFlag = false;\n }\n var cellType = !this.parent.enableColumnVirtualization || tmpFlag ?\n CellType.GroupCaption : CellType.GroupCaptionEmpty;\n indent = this.parent.enableColumnVirtualization && cellType === CellType.GroupCaption ? indent + groupedLen : indent;\n if (gObj.isRowDragable()) {\n indent++;\n }\n cells.push(this.generateCell(column, null, cellType, indent));\n }\n cells.push.apply(cells, visibles);\n return cells;\n };\n /**\n * @param {GroupedData} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} parentID - specifies the parentID\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the TIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row} returns the Row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateCaptionRow = function (data, indent, parentID, childID, tIndex, parentUid) {\n var options = {};\n var records = 'records';\n var col = this.parent.getColumnByField(data.field);\n options.data = extend({}, data);\n if (col) {\n options.data.field = data.field;\n }\n options.isDataRow = false;\n options.isExpand = !this.parent.groupSettings.enableLazyLoading && !this.parent.isCollapseStateEnabled();\n options.parentGid = parentID;\n options.childGid = childID;\n options.tIndex = tIndex;\n options.isCaptionRow = true;\n options.parentUid = parentUid;\n options.gSummary = !isNullOrUndefined(data.items[\"\" + records]) ? data.items[\"\" + records].length : data.items.length;\n options.uid = getUid('grid-row');\n var row = new Row(options);\n row.indent = indent;\n this.getForeignKeyData(row);\n row.cells = this.getCaptionRowCells(data.field, indent, row.data);\n return row;\n };\n GroupModelGenerator.prototype.getForeignKeyData = function (row) {\n var data = row.data;\n var col = this.parent.getColumnByField(data.field);\n if (col && col.isForeignColumn && col.isForeignColumn()) {\n var fkValue = (isNullOrUndefined(data.key) ? '' : col.valueAccessor(col.foreignKeyValue, getForeignData(col, {}, data.key)[0], col));\n setValue('foreignKey', fkValue, row.data);\n }\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {number} indent - specifies the indent\n * @param {number} childID - specifies the childID\n * @param {number} tIndex - specifies the tIndex\n * @param {string} parentUid - specifies the ParentUid\n * @returns {Row[]} returns the row object\n * @hidden\n */\n GroupModelGenerator.prototype.generateDataRows = function (data, indent, childID, tIndex, parentUid) {\n var rows = [];\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = data.length; i < len; i++, tIndex++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(data[parseInt(i.toString(), 10)], this.index, i ? undefined : 'e-firstchildrow', indent, childID, tIndex, parentUid);\n for (var j = 0; j < indent; j++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(indent) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n this.index++;\n }\n return rows;\n };\n GroupModelGenerator.prototype.generateIndentCell = function () {\n return this.generateCell({}, null, CellType.Indent);\n };\n GroupModelGenerator.prototype.refreshRows = function (input) {\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0; i < input.length; i++) {\n if (input[parseInt(i.toString(), 10)].isDataRow) {\n input[parseInt(i.toString(), 10)].cells = this.generateCells(input[parseInt(i.toString(), 10)]);\n for (var j = 0; j < input[parseInt(i.toString(), 10)].indent; j++) {\n if (this.parent.enableColumnVirtualization\n && indexes.indexOf(input[parseInt(i.toString(), 10)].indent) === -1) {\n continue;\n }\n input[parseInt(i.toString(), 10)].cells.unshift(this.generateIndentCell());\n }\n }\n else {\n var cRow = this.generateCaptionRow(input[parseInt(i.toString(), 10)].data, input[parseInt(i.toString(), 10)].indent);\n input[parseInt(i.toString(), 10)].cells = cRow.cells;\n }\n }\n return input;\n };\n GroupModelGenerator.prototype.setInfiniteRowVisibility = function (caption) {\n if (!caption.isExpand || caption.visible === false) {\n for (var _i = 0, _a = this.rows; _i < _a.length; _i++) {\n var row = _a[_i];\n if (row.parentUid === caption.uid) {\n row.visible = false;\n if (row.isCaptionRow) {\n this.setInfiniteRowVisibility(row);\n }\n }\n }\n }\n };\n GroupModelGenerator.prototype.ensureRowVisibility = function () {\n for (var i = 0; i < this.rows.length; i++) {\n var row = this.rows[parseInt(i.toString(), 10)];\n if (!row.isCaptionRow) {\n continue;\n }\n for (var j = i + 1; j < this.rows.length; j++) {\n var childRow = this.rows[parseInt(j.toString(), 10)];\n if (row.uid === childRow.parentUid) {\n this.rows[parseInt(j.toString(), 10)].visible = row.isExpand;\n }\n }\n }\n };\n return GroupModelGenerator;\n}(RowModelGenerator));\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar ContentRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IGrid} parent - specifies the Igrid\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n */\n function ContentRender(parent, serviceLocator) {\n var _this = this;\n this.rows = [];\n this.freezeRows = [];\n this.movableRows = [];\n this.freezeRowElements = [];\n /** @hidden */\n this.currentInfo = {};\n /** @hidden */\n this.prevCurrentView = [];\n this.isLoaded = true;\n this.viewColIndexes = [];\n this.drop = function (e) {\n _this.parent.notify(columnDrop, { target: e.target, droppedElement: e.droppedElement });\n remove(e.droppedElement);\n };\n this.infiniteCache = {};\n this.isRemove = false;\n /** @hidden */\n this.visibleRows = [];\n this.visibleFrozenRows = [];\n this.rightFreezeRows = [];\n this.isAddRows = false;\n this.isInfiniteFreeze = false;\n this.useGroupCache = false;\n /** @hidden */\n this.tempFreezeRows = [];\n this.rafCallback = function (args) {\n var arg = args;\n return function () {\n if (_this.parent.isFrozenGrid() && (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling)) {\n var tableName = args.tableName;\n _this.isLoaded = _this.parent.getFrozenMode() === leftRight ? tableName === 'frozen-right' : tableName === 'movable';\n if (_this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll' && _this.isLoaded) {\n var mHdr = [].slice.call(_this.parent.getMovableVirtualHeader().getElementsByClassName(row));\n var fHdr = [].slice.call(_this.parent.getFrozenVirtualHeader().getElementsByClassName(row));\n _this.isLoaded = mHdr.length === fHdr.length;\n }\n }\n _this.ariaService.setBusy(_this.getPanel().querySelector('.' + content), false);\n if (_this.parent.isDestroyed) {\n return;\n }\n var rows = _this.rows.slice(0);\n if (_this.parent.enableInfiniteScrolling) {\n if (_this.parent.groupSettings.enableLazyLoading) {\n for (var i = 0; i < _this.visibleRows.length; i++) {\n _this.setRowsInLazyGroup(_this.visibleRows[parseInt(i.toString(), 10)], i);\n }\n }\n rows = _this.parent.getRowsObject();\n var prevPage = arg.prevPage;\n if (_this.parent.infiniteScrollSettings.enableCache && prevPage) {\n var maxBlock = _this.parent.infiniteScrollSettings.maxBlocks;\n rows = [];\n var rowIdx = (parseInt(_this.rowElements[0].getAttribute('data-rowindex'), 10) + 1);\n var startIdx = Math.ceil(rowIdx / _this.parent.pageSettings.pageSize);\n for (var i = 0, count = startIdx; i < maxBlock; i++, count++) {\n if (_this.infiniteCache[parseInt(count.toString(), 10)]) {\n rows = rows.concat(_this.infiniteCache[parseInt(count.toString(), 10)]);\n }\n }\n }\n }\n if (_this.parent.isFrozenGrid()) {\n rows = args.isFrozen ? _this.freezeRows : args.renderFrozenRightContent ? _this.parent.getFrozenRightRowsObject()\n : _this.movableRows;\n }\n _this.parent.notify(contentReady, { rows: rows, args: arg });\n if (!_this.parent.isInitialLoad) {\n _this.parent.focusModule.setFirstFocusableTabIndex();\n }\n if (_this.isLoaded) {\n _this.parent.isManualRefresh = false;\n if (_this.parent.enableInfiniteScrolling && _this.parent.groupSettings.enableLazyLoading && args.requestType === 'sorting') {\n _this.parent.infiniteScrollModule['groupCaptionAction'] = undefined;\n }\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n _this.parent.parentDetails.parentInstObj.isReact;\n if ((_this.parent.isReact || isReactChild) && _this.parent.element.querySelectorAll('.e-templatecell').length) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = _this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(dataBound, {}, function () {\n if (thisRef_1.parent.allowTextWrap) {\n thisRef_1.parent.notify(freezeRender, { case: 'textwrap' });\n }\n });\n });\n }\n else {\n _this.parent.trigger(dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(freezeRender, { case: 'textwrap' });\n }\n });\n }\n if (_this.parent.allowTextWrap && _this.parent.height === 'auto') {\n if (_this.parent.getContentTable().scrollHeight > _this.parent.getContent().clientHeight) {\n _this.parent.scrollModule.setPadding();\n }\n else {\n _this.parent.scrollModule.removePadding();\n }\n }\n }\n if (arg) {\n var action = (arg.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, arg);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n _this.parent.trigger(actionComplete, args);\n }\n }\n if (_this.isLoaded) {\n _this.parent.hideSpinner();\n }\n };\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.parent.enableDeepCompare = this.parent.getDataModule().isRemote();\n this.generator = this.getModelGenerator();\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization && !this.parent.enableVirtualization\n && !this.parent.groupSettings.enableLazyLoading) {\n this.parent.on(columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(colGroupRefresh, this.colGroupRefresh, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(refreshInfiniteModeBlocks, this.refreshContentRows, this);\n this.parent.on(beforeCellFocused, this.beforeCellFocused, this);\n this.parent.on(destroy, this.droppableDestroy, this);\n }\n ContentRender.prototype.beforeCellFocused = function (e) {\n if (e.byKey && (e.keyArgs.action === 'upArrow' || e.keyArgs.action === 'downArrow')) {\n this.pressedKey = e.keyArgs.action;\n }\n else {\n this.pressedKey = undefined;\n }\n };\n /**\n * The function is used to render grid content div\n *\n * @returns {void}\n */\n ContentRender.prototype.renderPanel = function () {\n var gObj = this.parent;\n var div = this.parent.element.querySelector('.' + gridContent);\n if (div) {\n this.ariaService.setOptions(this.parent.element.querySelector('.' + content), { busy: false });\n this.setPanel(div);\n return;\n }\n div = this.parent.createElement('div', { className: gridContent });\n var innerDiv = this.parent.createElement('div', {\n className: content\n });\n this.ariaService.setOptions(innerDiv, { busy: false });\n div.appendChild(innerDiv);\n this.setPanel(div);\n gObj.element.appendChild(div);\n };\n /**\n * The function is used to render grid content table\n *\n * @returns {void}\n */\n ContentRender.prototype.renderTable = function () {\n var contentDiv = this.getPanel();\n var virtualTable = contentDiv.querySelector('.e-virtualtable');\n var virtualTrack = contentDiv.querySelector('.e-virtualtrack');\n if (this.parent.enableVirtualization && !isNullOrUndefined(virtualTable) && !isNullOrUndefined(virtualTrack)) {\n remove(virtualTable);\n remove(virtualTrack);\n }\n contentDiv.appendChild(this.createContentTable('_content_table'));\n this.setTable(contentDiv.querySelector('.' + table));\n this.ariaService.setOptions(this.getTable(), {\n multiselectable: this.parent.selectionSettings.type === 'Multiple'\n });\n this.initializeContentDrop();\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n };\n /**\n * The function is used to create content table elements\n *\n * @param {string} id - specifies the id\n * @returns {Element} returns the element\n * @hidden\n */\n ContentRender.prototype.createContentTable = function (id) {\n var innerDiv = this.getPanel().firstElementChild;\n if (this.getTable()) {\n remove(this.getTable());\n }\n var table$$1 = innerDiv.querySelector('.' + table) ? innerDiv.querySelector('.' + table) :\n this.parent.createElement('table', {\n className: table, attrs: {\n cellspacing: '0.25px', role: 'grid',\n id: this.parent.element.id + id\n }\n });\n this.setColGroup(this.parent.getHeaderTable().querySelector(colGroup).cloneNode(true));\n table$$1.appendChild(this.getColGroup());\n table$$1.appendChild(this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } }));\n innerDiv.appendChild(table$$1);\n return innerDiv;\n };\n /**\n * Refresh the content of the Grid.\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n // tslint:disable-next-line:max-func-body-length\n ContentRender.prototype.refreshContentRows = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var dataSource = this.currentMovableRows || gObj.currentViewData;\n var contentModule = this.parent.contentModule;\n var isReact = gObj.isReact && !isNullOrUndefined(gObj.rowTemplate);\n var frag = isReact ? gObj.createElement(tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n if (!this.initialPageRecords) {\n this.initialPageRecords = extend([], dataSource);\n }\n var hdrfrag = isReact ? gObj.createElement(tbody, { attrs: { role: 'rowgroup' } }) : document.createDocumentFragment();\n var refFrag;\n var refHdrfrag;\n if (gObj.isReact && gObj.rowTemplate) {\n refFrag = frag;\n refHdrfrag = hdrfrag;\n }\n var columns = gObj.getColumns();\n var tr;\n var hdrTbody;\n var frzCols = gObj.getFrozenColumns();\n var isFrozenGrid = this.parent.isFrozenGrid();\n var trElement;\n var row$$1 = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInfiniteScroll = this.parent.enableInfiniteScrolling\n && args.requestType === 'infiniteScroll';\n gObj.notify(destroyChildGrid, {});\n this.rowElements = [];\n this.rows = [];\n this.tempFreezeRows = [];\n var fCont = this.getPanel().querySelector('.' + frozenContent);\n var mCont = this.getPanel().querySelector('.' + movableContent);\n var cont = this.getPanel().querySelector('.' + content);\n var tbdy;\n var tableName;\n if (isGroupAdaptive(gObj)) {\n if (['sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'save', 'delete']\n .some(function (value) { return args.requestType === value; })) {\n this.emptyVcRows();\n }\n }\n var modelData;\n if (this.parent.enableVirtualization && this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization && args.requestType === 'virtualscroll'\n && args.virtualInfo.sentinelInfo.axis === 'X') {\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n args.renderMovableContent = true;\n }\n modelData = this.parent.contentModule.generateRows(dataSource, args);\n }\n else {\n modelData = this.checkCache(modelData, args);\n if (!this.isAddRows && !this.useGroupCache) {\n modelData = this.generator.generateRows(dataSource, args);\n }\n }\n this.setGroupCache(modelData, args);\n this.parent.notify(setInfiniteCache, { isInfiniteScroll: isInfiniteScroll, modelData: modelData, args: args });\n var idx = modelData[0].cells[0].index;\n if (isFrozenGrid) {\n tableName = contentModule.setTbody(modelData, args);\n tbdy = contentModule.getTbody(tableName);\n }\n var isFrozenLeft = this.parent.getFrozenMode() === leftRight && tableName === frozenRight;\n /* eslint-disable */\n if (args.requestType !== 'infiniteScroll' && this.parent.registeredTemplate\n && this.parent.registeredTemplate.template && !args.isFrozen && !isFrozenLeft) {\n var templatetoclear = [];\n for (var i = 0; i < this.parent.registeredTemplate.template.length; i++) {\n for (var j = 0; j < this.parent.registeredTemplate.template[i].rootNodes.length; j++) {\n if (isNullOrUndefined(this.parent.registeredTemplate.template[i].rootNodes[j].parentNode)) {\n templatetoclear.push(this.parent.registeredTemplate.template[i]);\n /* eslint-enable */\n }\n }\n }\n this.parent.destroyTemplate(['template'], templatetoclear);\n }\n if ((this.parent.isReact || this.parent.isVue) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n var templates = [\n this.parent.isVue ? 'template' : 'columnTemplate', 'rowTemplate', 'detailTemplate',\n 'captionTemplate', 'commandsTemplate', 'groupFooterTemplate', 'groupCaptionTemplate'\n ];\n clearReactVueTemplates(this.parent, templates);\n }\n if (this.parent.enableColumnVirtualization) {\n var cellMerge = new CellMergeRender(this.serviceLocator, this.parent);\n cellMerge.updateVirtualCells(modelData);\n }\n if (!isFrozenGrid) {\n this.tbody = this.getTable().querySelector(tbody);\n }\n var startIndex = 0;\n var blockLoad = true;\n if (isGroupAdaptive(gObj) && gObj.vcRows.length) {\n var top_1 = 'top';\n var scrollTop = !isNullOrUndefined(args.virtualInfo.offsets) ? args.virtualInfo.offsets.top :\n (!isNullOrUndefined(args.scrollTop) ? args.scrollTop[\"\" + top_1] : 0);\n if (scrollTop !== 0) {\n var offsets_1 = gObj.vGroupOffsets;\n var bSize = gObj.pageSettings.pageSize / 2;\n var values = Object.keys(offsets_1).map(function (key) { return offsets_1[\"\" + key]; });\n for (var m = 0; m < values.length; m++) {\n if (scrollTop < values[parseInt(m.toString(), 10)]) {\n if (!isNullOrUndefined(args.virtualInfo) && args.virtualInfo.direction === 'up') {\n startIndex = m > 0 ? ((m - 1) * bSize) : (m * bSize);\n break;\n }\n else {\n startIndex = m * bSize;\n if (this.parent.contentModule.isEndBlock(m) || this.parent.contentModule.isEndBlock(m + 1)) {\n args.virtualInfo.blockIndexes = [m, m + 1];\n }\n break;\n }\n }\n }\n if (Math.round(scrollTop + this.contentPanel.firstElementChild.offsetHeight) >=\n this.contentPanel.firstElementChild.scrollHeight && !args.rowObject) {\n blockLoad = false;\n }\n }\n }\n var isVFFrozenOnly = gObj.frozenRows && !gObj.isFrozenGrid() && this.parent.enableVirtualization\n && args.requestType === 'reorder';\n if ((gObj.frozenRows && args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo.axis === 'X') || isVFFrozenOnly) {\n var bIndex = args.virtualInfo.blockIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n if (isVFFrozenOnly) {\n args.virtualInfo.page = 1;\n }\n var data = isVFFrozenOnly ? this.initialPageRecords : dataSource;\n var mhdrData = this.vgenerator\n .generateRows(data, args);\n mhdrData.splice(this.parent.frozenRows);\n for (var i = 0; i < this.parent.frozenRows; i++) {\n mhdrData[parseInt(i.toString(), 10)].cells.splice(0, this.parent.getFrozenColumns());\n tr = row$$1.render(mhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.page = page;\n if (isVFFrozenOnly && args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n }\n this.virtualFrozenHdrRefresh(hdrfrag, modelData, row$$1, args, dataSource, columns);\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage] = [];\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading && args.requestType === 'delete') { // || (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache))\n this.visibleRows = [];\n }\n var _loop_1 = function (i, len) {\n this_1.rows.push(modelData[parseInt(i.toString(), 10)]);\n if (isFrozenGrid) {\n this_1.tempFreezeRows.push(modelData[parseInt(i.toString(), 10)]);\n }\n if (this_1.parent.groupSettings.enableLazyLoading && !this_1.useGroupCache && this_1.parent.groupSettings.columns.length) {\n (this_1.parent.enableVirtualization ? this_1.parent.lazyLoadRender :\n this_1.parent.contentModule).refRowsObj[this_1.parent.pageSettings.currentPage].push(modelData[parseInt(i.toString(), 10)]);\n this_1.setRowsInLazyGroup(modelData[parseInt(i.toString(), 10)], i);\n if (isNullOrUndefined(modelData[parseInt(i.toString(), 10)].indent)) {\n return \"continue\";\n }\n }\n this_1.setInfiniteVisibleRows(args, modelData[parseInt(i.toString(), 10)], tableName);\n if (isGroupAdaptive(gObj) && args.virtualInfo && args.virtualInfo.blockIndexes\n && (this_1.rowElements.length >= (args.virtualInfo.blockIndexes.length * this_1.parent.contentModule.getBlockSize()))\n && blockLoad) {\n this_1.parent.currentViewData['records'] = this_1.rows.map(function (m) { return m.data; });\n return \"break\";\n }\n if (!gObj.rowTemplate) {\n tr = row$$1.render(modelData[parseInt(i.toString(), 10)], columns);\n var isVFreorder = this_1.ensureFrozenHeaderRender(args);\n if (gObj.frozenRows && i < gObj.frozenRows && !isInfiniteScroll && args.requestType !== 'virtualscroll' && isVFreorder\n && this_1.ensureVirtualFrozenHeaderRender(args)) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n if (modelData[parseInt(i.toString(), 10)].isExpand) {\n gObj.notify(expandChildGrid, tr.cells[gObj.groupSettings.columns.length]);\n }\n }\n else {\n var rowTemplateID = gObj.element.id + 'rowTemplate';\n var elements = void 0;\n if (gObj.isReact) {\n var isHeader = gObj.frozenRows && i < gObj.frozenRows;\n var copied = extend({ index: i }, dataSource[parseInt(i.toString(), 10)]);\n gObj.getRowTemplate()(copied, gObj, 'rowTemplate', rowTemplateID, null, null, isHeader ? hdrfrag : frag);\n if (gObj.requireTemplateRef) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_2 = this_1;\n thisRef_2.parent.renderTemplates(function () {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = refHdrfrag.childNodes[parseInt(i.toString(), 10)];\n }\n else {\n trElement = refFrag.childNodes[parseInt(i.toString(), 10)];\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data,\n row: trElement ? trElement : tr };\n thisRef_2.parent.trigger(rowDataBound, arg);\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (thisRef_2.parent.enableVirtualization &&\n thisRef_2.parent.groupSettings.enableLazyLoading)) {\n thisRef_2.rowElements.push(tr);\n }\n thisRef_2.ariaService.setOptions(thisRef_2.getTable(), {\n colcount: gObj.getColumns().length.toString()\n });\n if (i === modelData.length - 1) {\n refFrag = null;\n refHdrfrag = null;\n }\n });\n return \"continue\";\n }\n }\n else {\n elements = gObj.getRowTemplate()(extend({ index: i }, dataSource[parseInt(i.toString(), 10)]), gObj, 'rowTemplate', rowTemplateID, undefined, undefined, undefined, this_1.parent['root']);\n }\n if (!gObj.isReact && elements[0].tagName === 'TBODY') {\n for (var j = 0; j < elements.length; j++) {\n var isTR = elements[parseInt(j.toString(), 10)].nodeName.toLowerCase() === 'tr';\n if (isTR || (elements[parseInt(j.toString(), 10)].querySelectorAll && elements[parseInt(j.toString(), 10)].querySelectorAll('tr').length)) {\n tr = isTR ? elements[parseInt(j.toString(), 10)] : elements[parseInt(j.toString(), 10)].querySelector('tr');\n }\n }\n if (gObj.frozenRows && i < gObj.frozenRows) {\n hdrfrag.appendChild(tr);\n }\n else {\n frag.appendChild(tr);\n }\n }\n else {\n if (gObj.frozenRows && i < gObj.frozenRows) {\n tr = !gObj.isReact ? appendChildren(hdrfrag, elements) : hdrfrag.lastElementChild;\n }\n else {\n // frag.appendChild(tr);\n if (!gObj.isReact) {\n tr = appendChildren(frag, elements);\n }\n trElement = gObj.isReact ? frag.lastElementChild : tr.lastElementChild;\n }\n }\n var arg = { data: modelData[parseInt(i.toString(), 10)].data, row: trElement ? trElement : tr };\n this_1.parent.trigger(rowDataBound, arg);\n }\n if (modelData[parseInt(i.toString(), 10)].isDataRow || (this_1.parent.enableVirtualization &&\n this_1.parent.groupSettings.enableLazyLoading)) {\n this_1.rowElements.push(tr);\n }\n this_1.ariaService.setOptions(this_1.getTable(), { colcount: gObj.getColumns().length.toString() });\n };\n var this_1 = this;\n for (var i = startIndex, len = modelData.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n var isReactChild = gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact;\n if ((gObj.isReact || isReactChild) && !gObj.requireTemplateRef) {\n gObj.renderTemplates();\n }\n if (this.parent.enableInfiniteScrolling && this.parent.groupSettings.enableLazyLoading) {\n this.parent.contentModule.refRowsObj[this.parent.pageSettings.currentPage] =\n this.parent.contentModule['groupCache'][this.parent.pageSettings.currentPage];\n }\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n this.parent.notify(refreshExpandandCollapse, {\n rows: (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).refRowsObj[this.parent.pageSettings.currentPage]\n });\n }\n if (isFrozenGrid) {\n contentModule.splitRows(tableName);\n }\n gObj.removeMaskRow();\n this.parent.notify(\"removeGanttShimmer\", { requestType: 'hideShimmer' });\n if ((gObj.frozenRows && args.requestType !== 'virtualscroll' && !isInfiniteScroll && this.ensureVirtualFrozenHeaderRender(args))\n || (args.requestType === 'virtualscroll' && args.virtualInfo.sentinelInfo && args.virtualInfo.sentinelInfo.axis === 'X')) {\n hdrTbody = isFrozenGrid ? contentModule.getFrozenHeader(tableName) : gObj.getHeaderTable().querySelector(tbody);\n if (isReact) {\n var parentTable = hdrTbody.parentElement;\n remove(hdrTbody);\n parentTable.appendChild(hdrfrag);\n }\n else {\n hdrTbody.innerHTML = '';\n hdrTbody.appendChild(hdrfrag);\n }\n }\n if (!gObj.enableVirtualization && gObj.frozenRows && idx === 0 && cont.offsetHeight === Number(gObj.height)) {\n cont.style.height = (cont.offsetHeight - hdrTbody.offsetHeight) + 'px';\n }\n args.rows = this.rows.slice(0);\n if (isFrozenGrid) {\n contentModule.setIsFrozen(args, tableName);\n }\n this.index = idx;\n getUpdateUsingRaf(function () {\n _this.parent.notify(beforeFragAppend, args);\n var isVFTable = _this.parent.enableVirtualization && _this.parent.isFrozenGrid();\n if (!_this.parent.enableVirtualization && !isInfiniteScroll) {\n if (_this.parent.isFrozenGrid()) {\n remove(contentModule.getTbody(tableName));\n tbdy = _this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n }\n else {\n if (!gObj.isReact) {\n _this.tbody.innerHTML = '';\n }\n if (!isNullOrUndefined(_this.tbody.parentElement)) {\n remove(_this.tbody);\n }\n else {\n remove(gObj.getContentTable().querySelector(tbody));\n }\n _this.tbody = _this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n }\n }\n if (isFrozenGrid && !isVFTable && !_this.parent.enableInfiniteScrolling) {\n _this.appendContent(tbdy, frag, args, tableName);\n }\n else {\n if (gObj.rowTemplate) {\n updateBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate', gObj);\n }\n if (isVFTable) {\n if (args.renderFrozenRightContent) {\n var frCont = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(tbody);\n _this.appendContent(frCont, frag, args);\n }\n else if (!args.renderMovableContent) {\n _this.appendContent(fCont.querySelector(tbody), frag, args);\n }\n else {\n _this.appendContent(mCont.querySelector(tbody), frag, args);\n args.renderMovableContent = false;\n }\n if (!_this.parent.getFrozenColumns()) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n }\n else {\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.isAddRows = false;\n _this.parent.notify(removeInfiniteRows, { args: args });\n _this.parent.notify(appendInfiniteContent, {\n tbody: tbdy ? tbdy : _this.tbody, frag: frag, args: args, rows: _this.rows,\n rowElements: _this.rowElements, visibleRows: _this.visibleRows,\n tableName: tableName\n });\n if (!frzCols && isFrozenGrid) {\n if ((gObj.getFrozenMode() !== leftRight\n && (tableName === frozenLeft || tableName === frozenRight))\n || (gObj.getFrozenMode() === leftRight\n && (tableName === frozenLeft || tableName === 'movable'))) {\n _this.refreshContentRows(extend({}, args));\n }\n }\n }\n else {\n _this.useGroupCache = false;\n _this.appendContent(_this.tbody, frag, args);\n }\n }\n }\n if (frzCols) {\n contentModule.renderNextFrozentPart(args, tableName);\n }\n frag = null;\n }, this.rafCallback(extend({}, args)));\n };\n ContentRender.prototype.emptyVcRows = function () {\n this.parent.vcRows = [];\n this.parent.vRows = [];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ContentRender.prototype.appendContent = function (tbody$$1, frag, args, tableName) {\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (isReact) {\n this.getTable().appendChild(frag);\n }\n else {\n tbody$$1.appendChild(frag);\n this.getTable().appendChild(tbody$$1);\n }\n };\n ContentRender.prototype.setRowsInLazyGroup = function (row$$1, index) {\n if (this.parent.groupSettings.enableLazyLoading && !this.useGroupCache && this.parent.groupSettings.columns.length) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).maintainRows(row$$1, index);\n }\n };\n ContentRender.prototype.setGroupCache = function (data, args) {\n if (!this.useGroupCache && this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(setGroupCache, { args: args, data: data });\n }\n };\n ContentRender.prototype.ensureFrozenHeaderRender = function (args) {\n return !((this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) || (this.parent.infiniteScrollSettings.enableCache\n && this.parent.frozenRows && this.parent.infiniteScrollModule.requestType === 'delete'\n && this.parent.pageSettings.currentPage !== 1));\n };\n ContentRender.prototype.ensureVirtualFrozenHeaderRender = function (args) {\n return !(this.parent.enableVirtualization && args.requestType === 'delete');\n };\n ContentRender.prototype.checkCache = function (modelData, args) {\n if (this.parent.infiniteScrollSettings.enableCache && args.requestType === 'infiniteScroll') {\n var index = args.isFrozen ? 1 : 0;\n var frozenCols = this.parent.isFrozenGrid();\n this.isAddRows = !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage]);\n if (frozenCols && !isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.isAddRows = this.infiniteCache[this.parent.pageSettings\n .currentPage][parseInt(index.toString(), 10)].length !== 0;\n }\n if (this.isAddRows) {\n var data = !frozenCols ? this.infiniteCache[this.parent.pageSettings.currentPage]\n : this.infiniteCache[this.parent.pageSettings.currentPage][parseInt(index.toString(), 10)];\n modelData = this.parent.pageSettings.currentPage === 1 ? data.slice(this.parent.frozenRows) : data;\n }\n return modelData;\n }\n if (this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length && (args.requestType === 'paging'\n || args.requestType === 'columnstate' || args.requestType === 'reorder' || args.requestType === 'virtualscroll')\n && (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).getGroupCache()[this.parent.pageSettings.currentPage]) {\n if (!this.parent.enableVirtualization) {\n this.useGroupCache = true;\n }\n return this.parent.enableVirtualization ? this.parent.getRowsObject() :\n this.parent.contentModule.initialGroupRows(args.requestType === 'reorder');\n }\n return null;\n };\n ContentRender.prototype.setInfiniteVisibleRows = function (args, data, tableName) {\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache) {\n if (frozenCols) {\n if (tableName === frozenLeft || (this.parent.getFrozenMode() === 'Right' && tableName === frozenRight)) {\n this.visibleFrozenRows.push(data);\n }\n else if (tableName === 'movable') {\n this.visibleRows.push(data);\n }\n else {\n this.rightFreezeRows.push(data);\n }\n }\n else if (!this.parent.infiniteScrollSettings.enableCache) {\n this.visibleRows.push(data);\n }\n }\n };\n ContentRender.prototype.getCurrentBlockInfiniteRecords = function (isFreeze) {\n var data = [];\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.infiniteCache).length) {\n return [];\n }\n var frozenCols = this.parent.isFrozenGrid();\n var rows = this.parent.getRows();\n var index = parseInt(rows[this.parent.frozenRows].getAttribute(dataRowIndex), 10);\n var first = Math.ceil((index + 1) / this.parent.pageSettings.pageSize);\n index = parseInt(rows[rows.length - 1].getAttribute(dataRowIndex), 10);\n var last = Math.ceil((index + (rows.length ? 1 : 0)) / this.parent.pageSettings.pageSize);\n if (frozenCols) {\n var idx = isFreeze ? 0 : 1;\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)][parseInt(idx.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1][parseInt(idx.toString(), 10)]\n .slice(0, this.parent.frozenRows).concat(data);\n }\n }\n else {\n for (var i = first; i <= last; i++) {\n data = !data.length ? this.infiniteCache[parseInt(i.toString(), 10)]\n : data.concat(this.infiniteCache[parseInt(i.toString(), 10)]);\n }\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n data = this.infiniteCache[1].slice(0, this.parent.frozenRows).concat(data);\n }\n }\n }\n return data;\n };\n ContentRender.prototype.getReorderedVFRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.getReorderedRows = function (args) {\n return this.parent.contentModule.getReorderedFrozenRows(args);\n };\n ContentRender.prototype.virtualFrozenHdrRefresh = function (hdrfrag, modelData, row$$1, args, dataSource, columns) {\n if (this.parent.frozenRows && this.parent.enableVirtualization\n && (args.requestType === 'reorder' || args.requestType === 'refresh')) {\n var tr = void 0;\n var fhdrData = [];\n if (this.parent.isFrozenGrid()) {\n this.currentMovableRows = dataSource;\n fhdrData = this.getReorderedVFRows(args);\n }\n else {\n fhdrData = this.getReorderedRows(args);\n }\n for (var i = 0; i < fhdrData.length; i++) {\n tr = row$$1.render(fhdrData[parseInt(i.toString(), 10)], columns);\n hdrfrag.appendChild(tr);\n }\n if (args.virtualInfo.page === 1) {\n modelData.splice(0, this.parent.frozenRows);\n }\n if (args.renderMovableContent) {\n this.parent.currentViewData = this.currentMovableRows;\n this.currentMovableRows = null;\n }\n }\n };\n ContentRender.prototype.getInfiniteRows = function () {\n var rows = [];\n var frozenCols = this.parent.isFrozenGrid();\n if (this.parent.enableInfiniteScrolling) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var keys = Object.keys(this.infiniteCache);\n for (var i = 0; i < keys.length; i++) {\n rows = !frozenCols ? rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]]) : rows.concat(this.infiniteCache[keys[parseInt(i.toString(), 10)]][0]);\n }\n }\n else {\n rows = frozenCols ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return rows;\n };\n ContentRender.prototype.getInfiniteMovableRows = function () {\n var infiniteCacheRows = this.getCurrentBlockInfiniteRecords();\n var infiniteRows = this.parent.enableInfiniteScrolling ? infiniteCacheRows.length ? infiniteCacheRows\n : this.visibleRows : [];\n return infiniteRows;\n };\n /**\n * Get the content div element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Set the content div element of grid\n *\n * @param {Element} panel - specifies the panel\n * @returns {void}\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the content table element of grid\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getTable = function () {\n return this.contentTable;\n };\n /**\n * Set the content table element of grid\n *\n * @param {Element} table - specifies the table\n * @returns {void}\n */\n ContentRender.prototype.setTable = function (table$$1) {\n this.contentTable = table$$1;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.parent.getFrozenColumns() ? this.freezeRows : this.rows;\n };\n /**\n * Get the Movable Row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row\n */\n ContentRender.prototype.getMovableRows = function () {\n var infiniteRows = this.getInfiniteMovableRows();\n return infiniteRows.length ? infiniteRows : this.movableRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getRowElements = function () {\n return this.parent.getFrozenColumns() ? this.freezeRowElements : this.rowElements;\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getMovableRowElements = function () {\n return this.rowElements;\n };\n /**\n * Get the content table data row elements\n *\n * @param {Element[]} elements - specifies the elements\n * @returns {void}\n */\n ContentRender.prototype.setRowElements = function (elements) {\n this.rowElements = elements;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n ContentRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n ContentRender.prototype.setColGroup = function (colGroup$$1) {\n if (!isNullOrUndefined(colGroup$$1)) {\n colGroup$$1.id = 'content-' + colGroup$$1.id;\n }\n return this.colgroup = colGroup$$1;\n };\n /**\n * Function to hide content table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n ContentRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var isFrozenGrid = this.parent.isFrozenGrid();\n var frzCols = gObj.getFrozenColumns();\n var rows = [];\n if (isFrozenGrid) {\n var fRows = this.freezeRows;\n var mRows = this.movableRows;\n var rowLen = fRows.length;\n var cellLen = void 0;\n var rightRows = [];\n if (gObj.getFrozenMode() === leftRight) {\n rightRows = gObj.getFrozenRightRowsObject();\n }\n for (var i = 0, row$$1 = void 0; i < rowLen; i++) {\n cellLen = mRows[parseInt(i.toString(), 10)].cells.length;\n var rightLen = rightRows.length ? rightRows[parseInt(i.toString(), 10)].cells.length : 0;\n row$$1 = fRows[parseInt(i.toString(), 10)].clone();\n for (var j = 0; j < cellLen; j++) {\n row$$1.cells.push(mRows[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)]);\n }\n for (var k = 0; k < rightLen; k++) {\n row$$1.cells.push(rightRows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)]);\n }\n rows.push(row$$1);\n }\n }\n else {\n rows = this.getRows();\n }\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var needFullRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n needFullRefresh = false;\n }\n var tr = gObj.getDataRows();\n var args = {};\n var infiniteData = this.infiniteRowVisibility();\n var contentrows = infiniteData ? infiniteData\n : this.rows.filter(function (row$$1) { return !row$$1.isDetailRow; });\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n if (isFrozenGrid) {\n if (column.getFreezeTableName() !== 'movable') {\n if (column.getFreezeTableName() === frozenRight) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n colIdx = idx = idx - (left + movable);\n var colG = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(colGroup);\n setStyleAttribute(colG.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n contentrows = gObj.getFrozenRightRowsObject();\n tr = gObj.getFrozenRightDataRows();\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n var infiniteFreezeData = this.infiniteRowVisibility(true);\n contentrows = infiniteFreezeData ? infiniteFreezeData : this.freezeRows;\n tr = gObj.getDataRows();\n }\n }\n else {\n var mTable = gObj.getContent().querySelector('.' + movableContent).querySelector(colGroup);\n colIdx = idx = idx - frzCols - this.parent.getFrozenLeftColumnsCount();\n setStyleAttribute(mTable.childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n tr = gObj.getMovableDataRows();\n var infiniteMovableData = this.infiniteRowVisibility();\n contentrows = infiniteMovableData ? infiniteMovableData : this.movableRows;\n }\n }\n else {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n if (!needFullRefresh) {\n this.setDisplayNone(tr, colIdx, displayVal, contentrows);\n if (isFrozenGrid) {\n this.parent.notify(freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (needFullRefresh) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n if (!this.parent.getFrozenColumns()) {\n this.parent.notify(partialRefresh, { rows: contentrows, args: args });\n }\n else {\n this.parent.notify(partialRefresh, { rows: this.freezeRows, args: { isFrozen: true, rows: this.freezeRows } });\n this.parent.notify(partialRefresh, { rows: this.movableRows, args: { isFrozen: false, rows: this.movableRows } });\n }\n }\n };\n /**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.setDisplayNone = function (tr, idx, displayVal, rows) {\n setDisplayValue(tr, idx, displayVal, rows, this.parent, this.parent.isRowDragable());\n this.parent.notify(infiniteShowHide, { visible: displayVal, index: idx, isFreeze: this.isInfiniteFreeze });\n };\n ContentRender.prototype.infiniteRowVisibility = function (isFreeze) {\n var infiniteData;\n if (this.parent.enableInfiniteScrolling) {\n this.isInfiniteFreeze = isFreeze;\n if (this.parent.infiniteScrollSettings.enableCache) {\n infiniteData = isFreeze ? this.getCurrentBlockInfiniteRecords(true) : this.getCurrentBlockInfiniteRecords();\n }\n else {\n infiniteData = isFreeze ? this.visibleFrozenRows : this.visibleRows;\n }\n }\n return infiniteData;\n };\n ContentRender.prototype.colGroupRefresh = function () {\n if (this.getColGroup()) {\n var colGroup$$1 = void 0;\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n colGroup$$1 = this.parent.getMovableVirtualHeader()\n .querySelector(colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n }\n else {\n colGroup$$1 = this.getHeaderColGroup();\n }\n this.getTable().replaceChild(colGroup$$1, this.getColGroup());\n this.setColGroup(colGroup$$1);\n }\n };\n ContentRender.prototype.getHeaderColGroup = function () {\n return this.parent.element.querySelector('.' + gridHeader)\n .querySelector(colGroup + ':not(.e-masked-colgroup)').cloneNode(true);\n };\n ContentRender.prototype.initializeContentDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n ContentRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n };\n ContentRender.prototype.canSkip = function (column, row$$1, index) {\n /**\n * Skip the toggle visiblity operation when one of the following success\n * 1. Grid has empty records\n * 2. column visible property is unchanged\n * 3. cell`s isVisible property is same as column`s visible property.\n */\n return isNullOrUndefined(row$$1) || //(1)\n isNullOrUndefined(column.visible) || //(2)\n row$$1.cells[parseInt(index.toString(), 10)].visible === column.visible; //(3)\n };\n ContentRender.prototype.getModelGenerator = function () {\n return this.generator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n };\n ContentRender.prototype.renderEmpty = function (tbody$$1) {\n this.getTable().appendChild(tbody$$1);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(tbody).innerHTML = '';\n }\n };\n ContentRender.prototype.setSelection = function (uid, set, clearAll) {\n this.parent.notify(setFreezeSelection, { uid: uid, set: set, clearAll: clearAll });\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen && this.parent.enableVirtualization) {\n return;\n }\n if (isFrozen) {\n var rows = this.getMovableRows().filter(function (row$$1) { return clearAll || uid === row$$1.uid; });\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].isSelected = set;\n }\n }\n var row$$1 = this.getRows().filter(function (row$$1) { return clearAll || uid === row$$1.uid; });\n for (var j = 0; j < row$$1.length; j++) {\n row$$1[parseInt(j.toString(), 10)].isSelected = set;\n var cells = row$$1[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = set;\n }\n }\n };\n ContentRender.prototype.getRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.getInfiniteRowIndex = function (index) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var fRows = this.parent.frozenRows;\n var idx = fRows > index ? 0 : fRows;\n var firstRowIndex = parseInt(this.parent.getRows()[parseInt(idx.toString(), 10)]\n .getAttribute(dataRowIndex), 10);\n index = fRows > index ? index : (index - firstRowIndex) + fRows;\n }\n return index;\n };\n ContentRender.prototype.getVirtualRowIndex = function (index) {\n return index;\n };\n ContentRender.prototype.getMovableRowByIndex = function (index) {\n index = this.getInfiniteRowIndex(index);\n return !isNullOrUndefined(index) ? this.parent.getMovableDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n ContentRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'group' && e.enable) {\n this.generator = this.getModelGenerator();\n }\n };\n ContentRender.prototype.setRowObjects = function (rows) {\n this.rows = rows;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n ContentRender.prototype.immutableModeRendering = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n gObj.hideSpinner();\n var key = gObj.getPrimaryKeyFieldNames()[0];\n var oldKeys = {};\n var newKeys = {};\n var newRowObjs = [];\n var oldIndexes = {};\n var oldRowObjs = gObj.getRowsObject().slice();\n var batchChangeKeys = this.getBatchEditedRecords(key, oldRowObjs);\n var newIndexes = {};\n var hasBatch = Object.keys(batchChangeKeys).length !== 0;\n if (gObj.getContent().querySelector('.e-emptyrow') || args.requestType === 'reorder'\n || this.parent.groupSettings.columns.length) {\n this.refreshContentRows(args);\n }\n else {\n if (gObj.currentViewData.length === 0) {\n return;\n }\n var oldRowElements = {};\n var tbody$$1 = gObj.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var dataSource = gObj.currentViewData;\n var trs = [].slice.call(this.getTable().querySelector(tbody).children);\n if (this.prevCurrentView.length) {\n var prevLen = this.prevCurrentView.length;\n var currentLen = dataSource.length;\n if (prevLen === currentLen) {\n for (var i = 0; i < currentLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n else {\n for (var i = 0; i < currentLen; i++) {\n newKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]] = i;\n newIndexes[parseInt(i.toString(), 10)] = dataSource[parseInt(i.toString(), 10)][\"\" + key];\n }\n for (var i = 0; i < prevLen; i++) {\n if (this.parent.editSettings.mode === 'Batch'\n && trs[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n trs.splice(i, 1);\n --i;\n continue;\n }\n oldRowElements[oldRowObjs[parseInt(i.toString(), 10)].uid] = trs[parseInt(i.toString(), 10)];\n oldKeys[this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key]] = i;\n oldIndexes[parseInt(i.toString(), 10)] = this.prevCurrentView[parseInt(i.toString(), 10)][\"\" + key];\n }\n }\n }\n for (var i = 0; i < dataSource.length; i++) {\n var oldIndex = oldKeys[dataSource[parseInt(i.toString(), 10)][\"\" + key]];\n if (!isNullOrUndefined(oldIndex)) {\n var isEqual = false;\n if (this.parent.enableDeepCompare) {\n isEqual = this.objectEqualityChecker(this.prevCurrentView[parseInt(oldIndex.toString(), 10)], dataSource[parseInt(i.toString(), 10)]);\n }\n var tr = oldRowElements[oldRowObjs[parseInt(oldIndex.toString(), 10)]\n .uid];\n newRowObjs.push(oldRowObjs[parseInt(oldIndex.toString(), 10)]);\n if (this.rowElements[parseInt(oldIndex.toString(), 10)] && this.rowElements[parseInt(oldIndex.toString(), 10)].getAttribute('data-uid') === newRowObjs[parseInt(i.toString(), 10)].uid\n && ((hasBatch && isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!hasBatch && (isEqual\n || this.prevCurrentView[parseInt(oldIndex.toString(), 10)] === dataSource[parseInt(i.toString(), 10)])))) {\n if (oldIndex !== i) {\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n tbody$$1.appendChild(tr);\n continue;\n }\n if ((hasBatch && !isNullOrUndefined(batchChangeKeys[newIndexes[parseInt(i.toString(), 10)]]))\n || (!this.parent.enableDeepCompare\n && dataSource[parseInt(i.toString(), 10)] !== this.prevCurrentView[parseInt(oldIndex.toString(), 10)])\n || (this.parent.enableDeepCompare && !isEqual)) {\n oldRowObjs[parseInt(oldIndex.toString(), 10)].setRowValue(dataSource[parseInt(i.toString(), 10)]);\n }\n tbody$$1.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n else {\n var row$$1 = new RowRenderer(this.serviceLocator, null, gObj);\n var args_1 = { startIndex: i };\n var modelData = this.generator.generateRows([dataSource[parseInt(i.toString(), 10)]], args_1);\n newRowObjs.push(modelData[0]);\n var tr = row$$1.render(modelData[0], gObj.getColumns());\n tbody$$1.appendChild(tr);\n this.refreshImmutableContent(i, tr, newRowObjs[parseInt(i.toString(), 10)]);\n }\n }\n this.rows = newRowObjs;\n this.rowElements = [].slice.call(tbody$$1.children);\n remove(this.getTable().querySelector(tbody));\n this.getTable().appendChild(tbody$$1);\n this.parent.trigger(dataBound, {}, function () {\n if (_this.parent.allowTextWrap) {\n _this.parent.notify(freezeRender, { case: 'textwrap' });\n }\n });\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n this.parent.notify(action, args);\n }\n }\n };\n ContentRender.prototype.objectEqualityChecker = function (old, next) {\n var keys = Object.keys(old);\n var isEqual = true;\n for (var i = 0; i < keys.length; i++) {\n if (old[keys[parseInt(i.toString(), 10)]] !== next[keys[parseInt(i.toString(), 10)]]) {\n var isDate = old[keys[parseInt(i.toString(), 10)]] instanceof Date\n && next[keys[parseInt(i.toString(), 10)]] instanceof Date;\n if (!isDate || (old[keys[parseInt(i.toString(), 10)]]\n .getTime() !== next[keys[parseInt(i.toString(), 10)]].getTime())) {\n isEqual = false;\n break;\n }\n }\n }\n return isEqual;\n };\n ContentRender.prototype.getBatchEditedRecords = function (primaryKey, rows) {\n var keys = {};\n var changes = this.parent.getBatchChanges();\n var changedRecords$$1 = [];\n var addedRecords$$1 = [];\n if (Object.keys(changes).length) {\n changedRecords$$1 = changes.changedRecords;\n addedRecords$$1 = changes.addedRecords;\n }\n var args = { cancel: false };\n this.parent.notify(immutableBatchCancel, { rows: rows, args: args });\n if (addedRecords$$1.length) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n rows.splice(rows.length - 1, addedRecords$$1.length);\n }\n else {\n if (!args.cancel) {\n rows.splice(0, addedRecords$$1.length);\n }\n }\n }\n for (var i = 0; i < changedRecords$$1.length; i++) {\n keys[changedRecords$$1[parseInt(i.toString(), 10)][\"\" + primaryKey]] = i;\n }\n return keys;\n };\n ContentRender.prototype.refreshImmutableContent = function (index, tr, row$$1) {\n row$$1.isAltRow = this.parent.enableAltRow ? index % 2 !== 0 : false;\n if (row$$1.isAltRow) {\n tr.classList.add('e-altrow');\n }\n else {\n tr.classList.remove('e-altrow');\n }\n row$$1.index = index;\n row$$1.edit = undefined;\n row$$1.isDirty = false;\n tr.setAttribute(dataRowIndex, index.toString());\n tr.setAttribute(ariaRowIndex, (index + 1).toString());\n this.updateCellIndex(tr, index);\n };\n ContentRender.prototype.updateCellIndex = function (rowEle, index) {\n for (var i = 0; i < rowEle.cells.length; i++) {\n rowEle.cells[parseInt(i.toString(), 10)].setAttribute('index', index.toString());\n }\n };\n return ContentRender;\n}());\n\n// eslint-disable-next-line valid-jsdoc\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar HeaderRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for header renderer module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function HeaderRender(parent, serviceLocator) {\n var _this = this;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n this.isFirstCol = false;\n this.isReplaceDragEle = true;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var parentEle = parentsUntil(target, 'e-headercell');\n if (!(gObj.allowReordering || gObj.allowGrouping) || (!isNullOrUndefined(parentEle)\n && parentEle.getElementsByClassName('e-checkselectall').length > 0)) {\n return false;\n }\n var visualElement = _this.parent.createElement('div', { className: 'e-cloneproperties e-dragclone e-headerclone' });\n var element = target.classList.contains('e-headercell') ? target : parentEle;\n if (!element || (!gObj.allowReordering && element.classList.contains('e-stackedheadercell'))) {\n return false;\n }\n var height = element.offsetHeight;\n var headercelldiv = element.querySelector('.e-headercelldiv') || element.querySelector('.e-stackedheadercelldiv');\n var col;\n if (headercelldiv) {\n if (element.querySelector('.e-stackedheadercelldiv')) {\n col = gObj.getStackedHeaderColumnByHeaderText(headercelldiv.innerText.trim(), gObj.columns);\n }\n else {\n col = gObj.getColumnByUid(headercelldiv.getAttribute('e-mappinguid'));\n }\n _this.column = col;\n if (_this.column.lockColumn) {\n return false;\n }\n visualElement.setAttribute('e-mappinguid', _this.column.uid);\n }\n if (col && !isNullOrUndefined(col.headerTemplate)) {\n if (!isNullOrUndefined(col.headerTemplate)) {\n var colIndex = gObj.getColumnIndexByField(col.field);\n var result = col.getHeaderTemplate()(extend({ 'index': colIndex }, col), gObj, 'headerTemplate');\n appendChildren(visualElement, result);\n }\n else {\n visualElement.innerHTML = col.headerTemplate;\n }\n }\n else {\n visualElement.innerHTML = headercelldiv ?\n col.headerText : element.firstElementChild.innerHTML;\n }\n visualElement.style.width = element.offsetWidth + 'px';\n visualElement.style.height = element.offsetHeight + 'px';\n visualElement.style.lineHeight = (height - 6).toString() + 'px';\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n gObj.notify(columnDragStart, { target: _this.draggable.currentStateTarget, column: _this.column, event: e.event });\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n var target = e.target;\n if (target) {\n var closest$$1 = closest(target, '.e-grid');\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (!closest$$1 || closest$$1.getAttribute('id') !== gObj.element.getAttribute('id')) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n if (gObj.allowReordering) {\n gObj.element.querySelector('.e-reorderuparrow').style.display = 'none';\n gObj.element.querySelector('.e-reorderdownarrow').style.display = 'none';\n }\n if (!gObj.groupSettings.allowReordering) {\n return;\n }\n }\n gObj.notify(columnDrag, { target: e.target, column: _this.column, event: e.event });\n }\n };\n this.dragStop = function (e) {\n var gObj = _this.parent;\n var cancel;\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n if ((!parentsUntil(e.target, 'e-headercell') && !parentsUntil(e.target, 'e-groupdroparea')) ||\n (!gObj.allowReordering && parentsUntil(e.target, 'e-headercell')) ||\n (!e.helper.getAttribute('e-mappinguid') && parentsUntil(e.target, 'e-groupdroparea'))) {\n remove(e.helper);\n cancel = true;\n }\n gObj.notify(columnDragStop, { target: e.target, event: e.event, column: _this.column, cancel: cancel });\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var uid = e.droppedElement.getAttribute('e-mappinguid');\n var closest$$1 = closest(e.target, '.e-grid');\n remove(e.droppedElement);\n if (closest$$1 && closest$$1.getAttribute('id') !== gObj.element.getAttribute('id') ||\n !(gObj.allowReordering || gObj.allowGrouping)) {\n return;\n }\n gObj.notify(headerDrop, { target: e.target, uid: uid, droppedElement: e.droppedElement });\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.ariaService = this.serviceLocator.getService('ariaService');\n this.widthService = this.serviceLocator.getService('widthService');\n if (this.parent.isDestroyed) {\n return;\n }\n if (!this.parent.enableColumnVirtualization\n && !this.parent.getFrozenLeftColumnsCount() && !this.parent.getFrozenRightColumnsCount()) {\n this.parent.on(columnVisibilityChanged, this.setVisible, this);\n }\n this.parent.on(columnPositionChanged, this.colPosRefresh, this);\n this.parent.on(initialEnd, this.renderCustomToolbar, this);\n if (this.parent.rowRenderingMode === 'Vertical') {\n this.parent.on(uiUpdate, this.updateCustomResponsiveToolbar, this);\n }\n }\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderPanel = function () {\n var div = this.parent.element.querySelector('.' + gridHeader);\n var isRendered = (div != null);\n div = isRendered ? div : this.parent.createElement('div', { className: 'e-gridheader' });\n var innerDiv = isRendered ? div.querySelector('.' + headerContent) :\n this.parent.createElement('div', { className: headerContent });\n this.toggleStackClass(div);\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (!isRendered) {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid header div\n *\n * @returns {void}\n */\n HeaderRender.prototype.renderTable = function () {\n var headerDiv = this.getPanel();\n headerDiv.appendChild(this.createHeaderTable());\n this.setTable(headerDiv.querySelector('.' + table));\n if (!this.parent.getFrozenColumns() && !this.parent.getFrozenRightColumnsCount() && !this.parent.getFrozenLeftColumnsCount()) {\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n }\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: this.parent.isFrozenGrid() } });\n };\n /**\n * Get the header content div element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getPanel = function () {\n return this.headerPanel;\n };\n /**\n * Set the header content div element of grid\n *\n * @param {Element} panel - specifies the panel element\n * @returns {void}\n */\n HeaderRender.prototype.setPanel = function (panel) {\n this.headerPanel = panel;\n };\n /**\n * Get the header table element of grid\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getTable = function () {\n return this.headerTable;\n };\n /**\n * Set the header table element of grid\n *\n * @param {Element} table - specifies the table element\n * @returns {void}\n */\n HeaderRender.prototype.setTable = function (table$$1) {\n this.headerTable = table$$1;\n };\n /**\n * Get the header colgroup element\n *\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.getColGroup = function () {\n return this.colgroup;\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n HeaderRender.prototype.setColGroup = function (colGroup$$1) {\n return this.colgroup = colGroup$$1;\n };\n /**\n * Get the header row element collection.\n *\n * @returns {Element[]} returns the element\n */\n HeaderRender.prototype.getRows = function () {\n var table$$1 = this.getTable();\n return table$$1.tHead.rows;\n };\n /**\n * The function is used to create header table elements\n *\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createHeaderTable = function () {\n var table$$1 = this.createTable();\n var innerDiv = this.getPanel().querySelector('.' + headerContent);\n innerDiv.appendChild(table$$1);\n return innerDiv;\n };\n /**\n * The function is used to create header table elements\n *\n * @param {Element} tableEle - specifies the table Element\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.createHeader = function (tableEle, tableName) {\n if (tableEle === void 0) { tableEle = null; }\n var gObj = this.parent;\n var isFrozen = gObj.isFrozenGrid();\n if (this.getTable() && !isFrozen) {\n remove(this.getTable());\n }\n var table$$1 = this.parent.createElement('table', { className: table, attrs: { cellspacing: '0.25px', role: 'grid' } });\n var tblName = tableName ? tableName : gObj.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n var findHeaderRow = this.createHeaderContent(tblName);\n var thead = findHeaderRow.thead;\n var tbody$$1 = this.parent.createElement(tbody, { className: this.parent.frozenRows ? '' : 'e-hide', attrs: { role: 'rowgroup' } });\n this.caption = this.parent.createElement('caption', { innerHTML: this.parent.element.id + '_header_table', className: 'e-hide' });\n var colGroup$$1 = this.parent.createElement(colGroup);\n var rowBody = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var bodyCell;\n var rows = this.rows = findHeaderRow.rows;\n for (var i = 0, len = rows.length; i < len; i++) {\n for (var j = 0, len_1 = rows[parseInt(i.toString(), 10)].cells.length; j < len_1; j++) {\n bodyCell = this.parent.createElement('td');\n rowBody.appendChild(bodyCell);\n }\n }\n if (gObj.allowFiltering || gObj.allowSorting || gObj.allowGrouping) {\n table$$1.classList.add('e-sortfilter');\n }\n if (isFrozen && gObj.allowResizing) {\n var movableContent$$1 = this.parent.getContent().querySelector('.' + movableContent).querySelector('.' + table);\n if (tableName === 'movable' && !isNullOrUndefined(movableContent$$1)) {\n table$$1.style.width = movableContent$$1.style.width;\n }\n }\n this.updateColGroup(colGroup$$1);\n tbody$$1.appendChild(rowBody);\n table$$1.appendChild(this.setColGroup(colGroup$$1));\n table$$1.appendChild(thead);\n table$$1.appendChild(tbody$$1);\n table$$1.appendChild(this.caption);\n this.ariaService.setOptions(table$$1, { colcount: gObj.getColumns().length.toString() });\n return table$$1;\n };\n /**\n * @param {Element} tableEle - specifies the column\n * @returns {Element} returns the element\n * @hidden\n */\n HeaderRender.prototype.createTable = function (tableEle) {\n if (tableEle === void 0) { tableEle = null; }\n return this.createHeader(tableEle);\n };\n HeaderRender.prototype.createHeaderContent = function (tableName) {\n var gObj = this.parent;\n var index = 1;\n var frozenMode = gObj.getFrozenMode();\n var columns = gObj.getColumns();\n var thead = this.parent.createElement('thead', { attrs: { 'role': 'rowgroup' } });\n var colHeader = this.parent.createElement('tr', { className: 'e-columnheader', attrs: { role: 'row' } });\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Header, gObj);\n rowRenderer.element = colHeader;\n var rows = [];\n var headerRow;\n this.colDepth = measureColumnDepth(gObj.columns);\n for (var i = 0, len = this.colDepth; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = this.generateRow(i);\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n if (frozenMode !== 'Right') {\n rows = this.ensureColumns(rows);\n }\n rows = this.getHeaderCells(rows, tableName);\n if (frozenMode === 'Right') {\n index = 0;\n rows = this.ensureColumns(rows);\n }\n var frzCols = this.parent.getFrozenColumns();\n if (this.parent.isRowDragable() && this.parent.isFrozenGrid() && rows[0].cells[parseInt(index.toString(), 10)]) {\n var colFreezeMode = rows[0].cells[parseInt(index.toString(), 10)].column.getFreezeTableName();\n if (tableName === 'movable' && this.getStackedLockColsCount.length) {\n for (var j = 0, len = rows.length; j < len; j++) {\n if (frozenMode === 'Right') {\n rows[parseInt(j.toString(), 10)].cells.pop();\n }\n else {\n rows[parseInt(j.toString(), 10)].cells.shift();\n }\n }\n }\n else if ((colFreezeMode === 'movable' || (frozenMode === leftRight &&\n colFreezeMode === frozenRight))) {\n if (frozenMode === 'Right') {\n rows[0].cells.pop();\n }\n else {\n rows[0].cells.shift();\n }\n }\n else if (!frzCols && colFreezeMode === frozenLeft) {\n rows[0].cells[0].column.freeze = colFreezeMode === frozenLeft ? 'Left' : 'Right';\n }\n else if (frozenMode === 'Right' && colFreezeMode === frozenRight) {\n rows[0].cells[rows[0].cells.length - 1].column.freeze = 'Right';\n }\n }\n for (var i = 0, len = this.colDepth; i < len; i++) {\n headerRow = rowRenderer.render(rows[parseInt(i.toString(), 10)], columns);\n if (this.parent.rowHeight && headerRow.querySelector('.e-headercell')) {\n headerRow.style.height = this.parent.rowHeight + 'px';\n }\n thead.appendChild(headerRow);\n }\n var findHeaderRow = {\n thead: thead,\n rows: rows\n };\n return findHeaderRow;\n };\n HeaderRender.prototype.updateColGroup = function (colGroup$$1) {\n var cols = this.parent.getColumns();\n var col;\n var indexes = this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && this.parent.getFrozenColumns()\n && this.parent.contentModule.isXaxis()) {\n cols = extend([], this.parent.getColumns());\n cols.splice(0, this.parent.getFrozenColumns());\n }\n colGroup$$1.id = this.parent.element.id + colGroup;\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n continue;\n }\n col = this.parent.createElement('col', { className: 'e-group-intent' });\n colGroup$$1.appendChild(col);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n col = this.parent.createElement('col', { className: 'e-detail-intent' });\n colGroup$$1.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup$$1.appendChild(col);\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n col = this.parent.createElement('col');\n if (cols[parseInt(i.toString(), 10)].visible === false) {\n setStyleAttribute(col, { 'display': 'none' });\n }\n colGroup$$1.appendChild(col);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n col = this.parent.createElement('col', { className: 'e-drag-intent' });\n colGroup$$1.appendChild(col);\n }\n return colGroup$$1;\n };\n HeaderRender.prototype.ensureColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gObj = this.parent;\n var indexes = this.parent.getColumnIndexesInView();\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gObj.allowGrouping) {\n for (var c = 0, len_2 = gObj.groupSettings.columns.length; c < len_2; c++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(c) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (gObj.detailTemplate || gObj.childGrid) {\n var args = {};\n this.parent.notify(detailIndentCellInfo, args);\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell(args, CellType.DetailHeader));\n }\n if (gObj.isRowDragable()) {\n rows[parseInt(i.toString(), 10)].cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n }\n return rows;\n };\n HeaderRender.prototype.getHeaderCells = function (rows, tableName) {\n var thead = this.parent.getHeaderTable() && this.parent.getHeaderTable().querySelector('thead');\n var cols = this.parent.enableColumnVirtualization ?\n this.parent.getColumns(this.parent.enablePersistence) : this.parent.columns;\n this.frzIdx = 0;\n this.notfrzIdx = 0;\n if (this.parent.lockcolPositionCount) {\n for (var i = 0; i < cols.length; i++) {\n this.lockColsRendered = false;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (cols.length - 1), thead, tableName, false);\n }\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.notfrzIdx = 0;\n this.lockColsRendered = true;\n rows = this.appendCells(cols[parseInt(i.toString(), 10)], rows, 0, i === 0, false, i === (len - 1), thead, tableName, false);\n }\n return rows;\n };\n HeaderRender.prototype.appendCells = function (cols, rows, index, isFirstObj, isFirstCol, isLastCol, isMovable, tableName, isStackLastCol) {\n var lastCol = isLastCol ? isStackLastCol ? 'e-laststackcell' : 'e-lastcell' : '';\n var isFrozen = this.parent.isFrozenGrid();\n var isLockColumn = !this.parent.lockcolPositionCount\n || (cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered);\n var isFrozenLockColumn = !this.parent.lockcolPositionCount || (cols.lockColumn && !this.lockColsRendered)\n || (!cols.lockColumn && this.lockColsRendered);\n var scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var left;\n if (isFrozen && scrollbar && this.parent.enableColumnVirtualization) {\n left = scrollbar.scrollLeft;\n }\n if (!cols.columns) {\n if (left && left > 0 && this.parent.contentModule.isXaxis()\n && this.parent.inViewIndexes[0] !== 0 && cols.getFreezeTableName() === 'movable') {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n else {\n if ((!isFrozen && isLockColumn) || (isFrozen && cols.getFreezeTableName() === tableName && isFrozenLockColumn)) {\n rows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, (isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')) + lastCol, index, this.parent.getColumnIndexByUid(cols.uid)));\n }\n }\n if (this.parent.lockcolPositionCount) {\n if ((this.frzIdx + this.notfrzIdx < this.parent.frozenColumns) &&\n ((cols.lockColumn && !this.lockColsRendered) || (!cols.lockColumn && this.lockColsRendered))) {\n this.frzIdx++;\n }\n else {\n this.notfrzIdx++;\n }\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.isFirstCol = false;\n var colSpan = this.getCellCnt(cols, 0);\n if (colSpan) {\n var stackedLockColsCount = this.getStackedLockColsCount(cols, 0);\n var isStackedLockColumn = this.parent.lockcolPositionCount === 0\n || (!this.lockColsRendered && stackedLockColsCount !== 0)\n || (this.lockColsRendered && (colSpan - stackedLockColsCount) !== 0);\n var isFrozenStack = isFrozen && this.ensureStackedFrozen(cols.columns, tableName, false);\n if ((!isFrozen && isStackedLockColumn) || isFrozenStack) {\n rows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols,\n colSpan: this.getColSpan(colSpan, stackedLockColsCount, cols.columns, tableName, isFrozen),\n className: isFirstObj ? '' : (isFirstCol ? 'e-firstcell' : '')\n }));\n }\n }\n if (this.parent.lockcolPositionCount && !this.lockColsRendered) {\n for (var i = 0; i < cols.columns.length; i++) {\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, i === 0, i === (cols.columns.length - 1) && isLastCol, isMovable, tableName, false);\n }\n }\n if (this.lockColsRendered) {\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n isFirstObj = isFirstObj && i === 0;\n var isFirstCol_1 = this.isFirstCol = cols.columns[parseInt(i.toString(), 10)].visible\n && !isFirstObj;\n var isLaststackedCol = i === (len - 1) && isLastCol;\n rows = this.appendCells(cols.columns[parseInt(i.toString(), 10)], rows, index + 1, isFirstObj, isFirstCol_1 && !isLaststackedCol, isLaststackedCol, isMovable, tableName, true);\n }\n }\n }\n return rows;\n };\n HeaderRender.prototype.ensureStackedFrozen = function (columns, tableName, isTrue) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n isTrue = this.ensureStackedFrozen(columns[parseInt(i.toString(), 10)].columns, tableName, isTrue);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName) {\n isTrue = true;\n break;\n }\n }\n return isTrue;\n };\n HeaderRender.prototype.getStackedLockColsCount = function (col, lockColsCount) {\n if (col.columns) {\n for (var i = 0; i < col.columns.length; i++) {\n lockColsCount = this.getStackedLockColsCount(col.columns[parseInt(i.toString(), 10)], lockColsCount);\n }\n }\n else if (col.lockColumn) {\n lockColsCount++;\n }\n return lockColsCount;\n };\n HeaderRender.prototype.getColSpan = function (colSpan, stackedLockColsCount, columns, tableName, isFrozen) {\n if (isFrozen) {\n colSpan = this.getFrozenColSpan(columns, tableName, 0);\n }\n else if (this.parent.lockcolPositionCount) {\n colSpan = !this.lockColsRendered ? stackedLockColsCount : colSpan - stackedLockColsCount;\n }\n return colSpan;\n };\n HeaderRender.prototype.getFrozenColSpan = function (columns, tableName, count) {\n var length = columns.length;\n for (var i = 0; i < length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n count = this.getFrozenColSpan(columns[parseInt(i.toString(), 10)].columns, tableName, count);\n }\n else if (columns[parseInt(i.toString(), 10)].getFreezeTableName() === tableName\n && columns[parseInt(i.toString(), 10)].visible) {\n count++;\n }\n }\n return count;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderRender.prototype.generateRow = function (index) {\n return new Row({});\n };\n HeaderRender.prototype.generateCell = function (column, cellType, rowSpan, className, rowIndex, colIndex) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'isTemplate': !isNullOrUndefined(column.headerTemplate),\n 'rowID': '',\n 'column': column,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'className': className,\n 'index': rowIndex,\n 'colIndex': colIndex\n };\n if (!opt.rowSpan || opt.rowSpan < 2) {\n delete opt.rowSpan;\n }\n return new Cell(opt);\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n */\n HeaderRender.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var frzCols = gObj.getFrozenColumns();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (frzCols) {\n var normalizedfrzCols = this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n if (idx < normalizedfrzCols) {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + movableHeader).querySelector(colGroup);\n setStyleAttribute(mTblColGrp.children[idx - normalizedfrzCols], { 'display': displayVal });\n }\n }\n else {\n setStyleAttribute(this.getColGroup().children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n HeaderRender.prototype.colPosRefresh = function () {\n this.refreshUI();\n };\n /**\n * Refresh the header of the Grid.\n *\n * @returns {void}\n */\n HeaderRender.prototype.refreshUI = function () {\n var frzCols = this.parent.isFrozenGrid();\n var isVFTable = this.parent.enableColumnVirtualization && frzCols;\n var headerDiv = this.getPanel();\n this.toggleStackClass(headerDiv);\n var table$$1 = this.freezeReorder ? this.headerPanel.querySelector('.' + movableHeader).querySelector('.' + table)\n : this.getTable();\n var tableName = this.parent.isFrozenGrid() ? this.parent.getFrozenLeftCount() ? 'frozen-left'\n : 'frozen-right' : undefined;\n if (isVFTable) {\n table$$1 = this.parent.contentModule.getVirtualFreezeHeader();\n tableName = this.parent.contentModule.isXaxis() ? 'movable' : tableName;\n }\n if (table$$1) {\n remove(table$$1);\n table$$1.removeChild(table$$1.firstChild);\n table$$1.removeChild(table$$1.childNodes[0]);\n var colGroup$$1 = this.parent.createElement(colGroup);\n var findHeaderRow = this.createHeaderContent(tableName);\n this.rows = findHeaderRow.rows;\n table$$1.insertBefore(findHeaderRow.thead, table$$1.firstChild);\n this.updateColGroup(colGroup$$1);\n table$$1.insertBefore(this.setColGroup(colGroup$$1), table$$1.firstChild);\n if (!isVFTable) {\n this.setTable(table$$1);\n }\n this.appendContent(table$$1);\n this.parent.notify(colGroupRefresh, {});\n this.widthService.setWidthToColumns();\n this.parent.updateDefaultCursor();\n if (!frzCols || (this.parent.enableColumnVirtualization && frzCols)) {\n this.initializeHeaderDrag();\n }\n var rows = [].slice.call(headerDiv.querySelectorAll('tr.e-columnheader'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row$$1 = rows_1[_i];\n var gCells = [].slice.call(row$$1.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n }\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: frzCols } });\n if (this.parent.enableColumnVirtualization && parentsUntil(table$$1, movableHeader)) {\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false, isXaxis: true } });\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap(rows, true);\n }\n }\n };\n HeaderRender.prototype.toggleStackClass = function (div) {\n var column = this.parent.columns;\n var stackedHdr = column.some(function (column) { return !isNullOrUndefined(column.columns); });\n if (stackedHdr) {\n div.classList.add('e-stackedheader');\n }\n else {\n div.classList.remove('e-stackedheader');\n }\n };\n HeaderRender.prototype.appendContent = function (table$$1) {\n this.getPanel().querySelector('.' + headerContent).appendChild(table$$1);\n };\n HeaderRender.prototype.getCellCnt = function (col, cnt) {\n if (col.columns) {\n for (var i = 0, len = col.columns.length; i < len; i++) {\n cnt = this.getCellCnt(col.columns[parseInt(i.toString(), 10)], cnt);\n }\n }\n else {\n if (col.visible) {\n cnt++;\n }\n }\n return cnt;\n };\n HeaderRender.prototype.initializeHeaderDrag = function () {\n var gObj = this.parent;\n if (!(this.parent.allowReordering || (this.parent.allowGrouping && this.parent.groupSettings.showDropArea))) {\n return;\n }\n this.draggable = new Draggable(gObj.getHeaderContent(), {\n dragTarget: '.e-headercell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n abort: '.e-rhandler',\n isReplaceDragEle: this.isReplaceDragEle\n });\n this.parent.on(destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.initializeHeaderDrop = function () {\n var gObj = this.parent;\n this.droppable = new Droppable(gObj.getHeaderContent(), {\n accept: '.e-dragclone',\n drop: this.drop\n });\n this.parent.on(destroy, this.droppableDestroy, this);\n };\n HeaderRender.prototype.droppableDestroy = function () {\n if (this.droppable && !this.droppable.isDestroyed) {\n this.droppable.destroy();\n }\n if (this.draggable && !this.draggable.isDestroyed) {\n this.draggable.destroy();\n }\n };\n HeaderRender.prototype.renderCustomToolbar = function () {\n var _this = this;\n var gObj = this.parent;\n if (gObj.rowRenderingMode === 'Vertical' && !gObj.toolbar\n && (gObj.allowSorting || (gObj.allowFiltering && gObj.filterSettings.type !== 'FilterBar'))) {\n var div = gObj.createElement('div', { className: 'e-res-toolbar e-toolbar' });\n var toolbarItems = gObj.createElement('div', { className: 'e-toolbar-items' });\n var toolbarLeft = gObj.createElement('div', { className: 'e-toolbar-left' });\n var count = this.parent.allowFiltering && this.parent.allowSorting ? 2 : 1;\n for (var i = 0; i < count; i++) {\n var toolbarItem = gObj.createElement('div', { className: 'e-toolbar-item e-gridresponsiveicons e-icons e-tbtn-align' });\n var cls = count === 1 ? this.parent.allowSorting ? 'sort'\n : 'filter' : i === 1 ? 'sort' : 'filter';\n var button = gObj.createElement('button', { className: 'e-tbar-btn e-control e-btn e-lib e-icon-btn' });\n var span = gObj.createElement('span', { className: 'e-btn-icon e-res' + cls + '-icon e-icons' });\n button.appendChild(span);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n btnObj.appendTo(button);\n button.onclick = function (e) {\n if (e.target.classList.contains('e-ressort-btn')\n || e.target.classList.contains('e-ressort-icon')) {\n _this.parent.showResponsiveCustomSort();\n }\n else {\n _this.parent.showResponsiveCustomFilter();\n }\n };\n toolbarItem.appendChild(button);\n toolbarLeft.appendChild(toolbarItem);\n }\n toolbarItems.appendChild(toolbarLeft);\n div.appendChild(toolbarItems);\n gObj.element.insertBefore(div, this.parent.element.querySelector('.' + gridHeader));\n }\n else {\n if (gObj.enableAdaptiveUI && !gObj.toolbar) {\n gObj.getContent().classList.add('e-responsive-header');\n }\n }\n };\n HeaderRender.prototype.updateCustomResponsiveToolbar = function (args) {\n var resToolbar = this.parent.element.querySelector('.e-responsive-toolbar');\n if (args.module === 'toolbar') {\n if (resToolbar) {\n remove(resToolbar);\n }\n else {\n this.renderCustomToolbar();\n }\n }\n };\n return HeaderRender;\n}());\n\n/**\n * CellRenderer class which responsible for building cell content.\n *\n * @hidden\n */\nvar CellRenderer = /** @__PURE__ @class */ (function () {\n function CellRenderer(parent, locator) {\n this.localizer = locator.getService('localization');\n this.formatter = locator.getService('valueFormatter');\n this.parent = parent;\n this.element = this.parent.createElement('TD', { className: rowCell, attrs: { role: 'gridcell', tabindex: '-1' } });\n this.rowChkBox = this.parent.createElement('input', { className: 'e-checkselect', attrs: { 'type': 'checkbox',\n 'aria-label': this.localizer.getConstant('CheckBoxLabel') } });\n }\n /**\n * Function to return the wrapper for the TD content\n *\n * @returns {string | Element} returns the string\n */\n CellRenderer.prototype.getGui = function () {\n return '';\n };\n /**\n * Function to format the cell value.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {string} returns the format\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.format = function (column, value, data) {\n if (!isNullOrUndefined(column.format)) {\n if (column.type === 'number' && isNaN(parseInt(value, 10))) {\n value = null;\n }\n value = this.formatter.toView(value, column.getFormatter());\n }\n return isNullOrUndefined(value) ? '' : value.toString();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CellRenderer.prototype.evaluate = function (node, cell, data, attributes$$1, fData, isEdit) {\n var _a;\n var result;\n if (cell.column.template) {\n var isReactCompiler = this.parent.isReact && typeof (cell.column.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var literals_1 = ['index'];\n var dummyData = extendObjWithFn({}, data, (_a = {}, _a[foreignKeyData] = fData, _a.column = cell.column, _a));\n var templateID = this.parent.element.id + cell.column.uid;\n var str = 'isStringTemplate';\n if (isReactCompiler || isReactChild) {\n var copied = { 'index': attributes$$1[literals_1[0]] };\n cell.column.getColumnTemplate()(extend(copied, dummyData), this.parent, 'columnTemplate', templateID, this.parent[\"\" + str], null, node);\n }\n else {\n result = cell.column.getColumnTemplate()(extend({ 'index': attributes$$1[literals_1[0]] }, dummyData), this.parent, 'template', templateID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n this.parent.notify('template-result', { template: result });\n result = null;\n node.setAttribute('aria-label', node.innerText + this.localizer.getConstant('TemplateCell') +\n this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n return false;\n }\n return true;\n };\n /**\n * Function to invoke the custom formatter available in the column object.\n *\n * @param {Column} column - specifies the column\n * @param {Object} value - specifies the value\n * @param {Object} data - specifies the data\n * @returns {Object} returns the object\n */\n CellRenderer.prototype.invokeFormatter = function (column, value, data) {\n if (!isNullOrUndefined(column.formatter)) {\n if (doesImplementInterface(column.formatter, 'getValue')) {\n var formatter = column.formatter;\n value = new formatter().getValue(column, data);\n }\n else if (typeof column.formatter === 'function') {\n value = column.formatter(column, data);\n }\n else {\n value = column.formatter.getValue(column, data);\n }\n }\n return value;\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isExpand - specifies the boolean for expand\n * @param {boolean} isEdit - specifies the boolean for edit\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.render = function (cell, data, attributes$$1, isExpand, isEdit) {\n return this.refreshCell(cell, data, attributes$$1, isEdit);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Element} td - specifies the element\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attribute\n * @returns {void}\n */\n CellRenderer.prototype.refreshTD = function (td, cell, data, attributes$$1) {\n var isEdit = this.parent.editSettings.mode === 'Batch' && td.classList.contains('e-editedbatchcell');\n if (this.parent.isReact) {\n td.innerHTML = '';\n var cellIndex = td.cellIndex;\n var parentRow = td.parentElement;\n remove(td);\n var newTD = this.refreshCell(cell, data, attributes$$1, isEdit);\n this.cloneAttributes(newTD, td);\n if (parentRow.cells.length !== cellIndex - 1) {\n parentRow.insertBefore(newTD, parentRow.cells[parseInt(cellIndex.toString(), 10)]);\n }\n else {\n parentRow.appendChild(newTD);\n }\n }\n else {\n var node = this.refreshCell(cell, data, attributes$$1, isEdit);\n td.innerHTML = '';\n td.setAttribute('aria-label', node.getAttribute('aria-label'));\n var elements = [].slice.call(node.childNodes);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n td.appendChild(elem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CellRenderer.prototype.cloneAttributes = function (target, source) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attrs = source.attributes;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var i = attrs.length;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var attr;\n while (i--) {\n attr = attrs[parseInt(i.toString(), 10)];\n target.setAttribute(attr.name, attr.value);\n }\n };\n CellRenderer.prototype.refreshCell = function (cell, data, attributes$$1, isEdit) {\n var _a;\n var node = this.element.cloneNode();\n var column = cell.column;\n var fData;\n if (cell.isForeignKey) {\n fData = cell.foreignKeyData[0] || (_a = {}, _a[column.foreignKeyValue] = column.format ? null : '', _a);\n }\n //Prepare innerHtml\n var innerHtml = this.getGui();\n var value = cell.isForeignKey ? this.getValue(column.foreignKeyValue, fData, column) :\n this.getValue(column.field, data, column);\n if ((column.type === 'date' || column.type === 'datetime') && !isNullOrUndefined(value)) {\n value = new Date(value);\n }\n value = this.format(column, value, data);\n innerHtml = value.toString();\n if (column.type === 'boolean' && !column.displayAsCheckBox) {\n var localeStr = (value !== 'true' && value !== 'false') ? null : value === 'true' ? 'True' : 'False';\n innerHtml = localeStr ? this.localizer.getConstant(localeStr) : innerHtml;\n }\n var fromFormatter = this.invokeFormatter(column, value, data);\n innerHtml = !isNullOrUndefined(column.formatter) ? isNullOrUndefined(fromFormatter) ? '' : fromFormatter.toString() : innerHtml;\n node.setAttribute('aria-label', innerHtml + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n if (this.evaluate(node, cell, data, attributes$$1, fData, isEdit) && column.type !== 'checkbox') {\n this.appendHtml(node, innerHtml, column.getDomSetter ? column.getDomSetter() : 'innerHTML');\n }\n else if (column.type === 'checkbox') {\n node.classList.add(gridChkBox);\n node.setAttribute('aria-label', this.localizer.getConstant('CheckBoxLabel'));\n if (this.parent.selectionSettings.persistSelection) {\n value = value === 'true';\n }\n else {\n value = false;\n }\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: value, label: ' ' });\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n this.rowChkBox.id = 'checkbox-' + cell.rowID;\n checkWrap.insertBefore(this.rowChkBox.cloneNode(), checkWrap.firstChild);\n node.appendChild(checkWrap);\n }\n if (this.parent.checkAllRows === 'Check' && this.parent.enableVirtualization) {\n cell.isSelected = true;\n }\n this.setAttributes(node, cell, attributes$$1);\n if (column.type === 'boolean' && column.displayAsCheckBox) {\n var checked = isNaN(parseInt(value.toString(), 10)) ? value === 'true' : parseInt(value.toString(), 10) > 0;\n var checkWrap = createCheckBox(this.parent.createElement, false, { checked: checked, label: ' ' });\n node.innerHTML = '';\n node.classList.add('e-gridchkbox-cell');\n checkWrap.classList.add('e-checkbox-disabled');\n if (this.parent.cssClass) {\n addClass([checkWrap], [this.parent.cssClass]);\n }\n node.appendChild(checkWrap);\n node.setAttribute('aria-label', checked + this.localizer.getConstant('ColumnHeader') + cell.column.headerText);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @param {string} property - specifies the element\n * @returns {Element} returns the element\n */\n CellRenderer.prototype.appendHtml = function (node, innerHtml, property) {\n if (property === void 0) { property = 'innerHTML'; }\n node[\"\" + property] = innerHtml;\n return node;\n };\n /**\n * @param {HTMLElement} node - specifies the node\n * @param {cell} cell - specifies the cell\n * @param {Object} attributes - specifies the attributes\n * @returns {void}\n * @hidden\n */\n CellRenderer.prototype.setAttributes = function (node, cell, attributes$$1) {\n var column = cell.column;\n this.buildAttributeFromCell(node, cell, column.type === 'checkbox');\n setStyleAndAttributes(node, attributes$$1);\n setStyleAndAttributes(node, cell.attributes);\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(node, { 'data-cell': column.headerText });\n }\n if (column.textAlign) {\n node.style.textAlign = column.textAlign;\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')\n && !(this.parent.allowTextWrap && (this.parent.textWrapSettings.wrapMode === 'Content'\n || this.parent.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n };\n CellRenderer.prototype.buildAttributeFromCell = function (node, cell, isCheckBoxType) {\n var attr = {};\n var prop = { 'colindex': dataColIndex };\n var classes = [];\n if (cell.colSpan) {\n attr.colSpan = cell.colSpan;\n }\n if (cell.rowSpan) {\n attr.rowSpan = cell.rowSpan;\n }\n if (cell.isTemplate) {\n classes.push('e-templatecell');\n }\n if (cell.isSelected) {\n classes.push.apply(classes, ['e-selectionbackground', 'e-active']);\n if (isCheckBoxType) {\n node.querySelector('.e-frame').classList.add('e-check');\n }\n }\n if (cell.isColumnSelected) {\n classes.push.apply(classes, ['e-columnselection']);\n }\n if (cell.cellType === CellType.Header) {\n attr[prop.colindex] = cell.colIndex;\n attr[ariaColIndex] = cell.colIndex + 1;\n }\n else if (!isNullOrUndefined(cell.index)) {\n attr[prop.colindex] = cell.index;\n attr[ariaColIndex] = cell.index + 1;\n }\n if (!cell.visible) {\n classes.push('e-hide');\n }\n attr.class = classes;\n setStyleAndAttributes(node, attr);\n };\n CellRenderer.prototype.getValue = function (field, data, column) {\n return column.valueAccessor(field, data, column);\n };\n return CellRenderer;\n}());\n\n/**\n * AriaService\n *\n * @hidden\n */\nvar AriaService = /** @__PURE__ @class */ (function () {\n function AriaService() {\n }\n AriaService.prototype.setOptions = function (target, options) {\n var props = Object.keys(options);\n for (var i = 0; i < props.length; i++) {\n setStateAndProperties(target, config[props[parseInt(i.toString(), 10)]], options[props[parseInt(i.toString(), 10)]]);\n }\n };\n AriaService.prototype.setExpand = function (target, expand) {\n setStateAndProperties(target, config.expand, expand);\n };\n AriaService.prototype.setSort = function (target, direction) {\n setStateAndProperties(target, config.sort, direction, typeof direction === 'boolean');\n };\n AriaService.prototype.setBusy = function (target, isBusy) {\n setStateAndProperties(target, config.busy, isBusy);\n setStateAndProperties(target, config.invalid, null, true);\n };\n AriaService.prototype.setGrabbed = function (target, isGrabbed, remove$$1) {\n setStateAndProperties(target, config.grabbed, isGrabbed, remove$$1);\n };\n AriaService.prototype.setDropTarget = function (target, isTarget) {\n setStateAndProperties(target, config.dropeffect, 'copy', !isTarget);\n };\n return AriaService;\n}());\n/**\n * @param {HTMLElement} target - specifies the target\n * @param {string} attribute - specifies the attribute\n * @param {ValueType} value - specifies the value\n * @param {boolean} remove - specifies the boolean for remove\n * @returns {void}\n * @hidden\n */\nfunction setStateAndProperties(target, attribute, value, remove$$1) {\n if (remove$$1 && target) {\n target.removeAttribute(attribute);\n return;\n }\n if (target) {\n target.setAttribute(attribute, value);\n }\n}\nvar config = {\n expand: 'aria-expanded',\n role: 'role',\n datarole: 'data-role',\n selected: 'aria-selected',\n multiselectable: 'aria-multiselectable',\n sort: 'aria-sort',\n busy: 'aria-busy',\n invalid: 'aria-invalid',\n grabbed: 'aria-grabbed',\n dropeffect: 'aria-dropeffect',\n haspopup: 'aria-haspopup',\n level: 'aria-level',\n colcount: 'aria-colcount',\n rowcount: 'aria-rowcount'\n};\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * HeaderCellRenderer class which responsible for building header cell content.\n *\n * @hidden\n */\nvar HeaderCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$4(HeaderCellRenderer, _super);\n function HeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TH', { className: 'e-headercell', attrs: { role: 'columnheader', tabindex: '-1' } });\n _this.ariaService = new AriaService();\n _this.hTxtEle = _this.parent.createElement('span', { className: 'e-headertext' });\n _this.sortEle = _this.parent.createElement('div', { className: 'e-sortfilterdiv e-icons', attrs: { 'aria-hidden': 'true' } });\n _this.gui = _this.parent.createElement('div');\n _this.chkAllBox = _this.parent.createElement('input', { className: 'e-checkselectall', attrs: { 'type': 'checkbox', 'aria-label': _this.localizer.getConstant('CheckBoxLabel') } });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string | Element} returns the element\n */\n HeaderCellRenderer.prototype.getGui = function () {\n return this.gui.cloneNode();\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the column\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the aattributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderCellRenderer.prototype.render = function (cell, data, attributes$$1) {\n var node = this.element.cloneNode();\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n /**\n * Function to refresh the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Element} node - specifies the noe\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.refresh = function (cell, node) {\n this.clean(node);\n var fltrMenuEle = this.parent.createElement('div', { className: 'e-filtermenudiv e-icons e-icon-filter', attrs: { 'aria-hidden': 'true' } });\n return this.prepareHeader(cell, node, fltrMenuEle);\n };\n HeaderCellRenderer.prototype.clean = function (node) {\n node.innerHTML = '';\n };\n /* tslint:disable-next-line:max-func-body-length */\n HeaderCellRenderer.prototype.prepareHeader = function (cell, node, fltrMenuEle) {\n var column = cell.column;\n var ariaAttr = {};\n var elementDesc = '';\n //Prepare innerHtml\n var innerDIV = this.getGui();\n var hValueAccer;\n attributes(innerDIV, {\n 'e-mappinguid': column.uid,\n 'class': 'e-headercelldiv'\n });\n if (!isNullOrUndefined(column.headerValueAccessor)) {\n hValueAccer = this.getValue(column.headerText, column);\n }\n if (column.type !== 'checkbox') {\n var value = column.headerText;\n if (!isNullOrUndefined(hValueAccer)) {\n value = hValueAccer;\n }\n var headerText = this.hTxtEle.cloneNode();\n headerText[column.getDomSetter()] = value;\n innerDIV.appendChild(headerText);\n }\n else {\n column.editType = 'booleanedit';\n var checkAllWrap = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.chkAllBox.id = 'checkbox-' + column.uid;\n checkAllWrap.insertBefore(this.chkAllBox.cloneNode(), checkAllWrap.firstChild);\n if (this.parent.cssClass) {\n addClass([checkAllWrap], [this.parent.cssClass]);\n }\n innerDIV.appendChild(checkAllWrap);\n innerDIV.classList.add('e-headerchkcelldiv');\n }\n this.buildAttributeFromCell(node, cell);\n this.appendHtml(node, innerDIV);\n node.appendChild(this.sortEle.cloneNode());\n if ((this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') &&\n (column.allowFiltering && !isNullOrUndefined(column.field)) &&\n !(this.parent.showColumnMenu && column.showColumnMenu)) {\n attributes(fltrMenuEle, {\n 'e-mappinguid': 'e-flmenu-' + column.uid\n });\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('FilterDescription') : this.localizer.getConstant('FilterDescription');\n node.classList.add('e-fltr-icon');\n var matchFlColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFlColumns.length) {\n var foreignColumn = this.parent.getForeignKeyColumns();\n for (var index = 0; index < this.parent.columns.length; index++) {\n for (var count = 0; count < this.parent.filterSettings.columns.length; count++) {\n if (this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field === column.field\n || (foreignColumn.length\n && column.foreignKeyValue === this.parent.filterSettings.columns[parseInt(count.toString(), 10)].field)) {\n fltrMenuEle.classList.add('e-filtered');\n matchFlColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.appendChild(fltrMenuEle.cloneNode());\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n if (column.customAttributes) {\n setStyleAndAttributes(node, column.customAttributes);\n }\n if (this.parent.allowSorting && column.allowSorting) {\n ariaAttr.sort = 'none';\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('SortDescription') : this.localizer.getConstant('SortDescription');\n }\n if ((this.parent.allowGrouping && column.allowGrouping) || this.parent.allowReordering && column.allowReordering) {\n ariaAttr.grabbed = false;\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('GroupDescription') : this.localizer.getConstant('GroupDescription');\n }\n if (this.parent.showColumnMenu) {\n elementDesc = elementDesc.length ? elementDesc + '. ' + this.localizer.getConstant('ColumnMenuDescription') : this.localizer.getConstant('ColumnMenuDescription');\n }\n node = this.extendPrepareHeader(column, node);\n var result;\n var gridObj = this.parent;\n var colIndex = gridObj.getColumnIndexByField(column.field);\n if (!isNullOrUndefined(column.headerTemplate)) {\n //need to pass the template id for blazor headertemplate\n var headerTempID = gridObj.element.id + column.uid + 'headerTemplate';\n var str = 'isStringTemplate';\n var col = column;\n var isReactCompiler = this.parent.isReact && typeof (column.headerTemplate) !== 'string';\n var isReactChild_1 = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild_1) {\n var copied = { 'index': colIndex };\n node.firstElementChild.innerHTML = '';\n column.getHeaderTemplate()(extend(copied, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n result = column.getHeaderTemplate()(extend({ 'index': colIndex }, col), gridObj, 'headerTemplate', headerTempID, this.parent[\"\" + str], undefined, undefined, this.parent['root']);\n node.firstElementChild.innerHTML = '';\n appendChildren(node.firstElementChild, result);\n }\n }\n this.ariaService.setOptions(node, ariaAttr);\n if (!isNullOrUndefined(column.headerTextAlign) || !isNullOrUndefined(column.textAlign)) {\n var alignment = column.headerTextAlign || column.textAlign;\n innerDIV.style.textAlign = alignment;\n if (alignment === 'Right' || alignment === 'Left') {\n node.classList.add(alignment === 'Right' ? 'e-rightalign' : 'e-leftalign');\n }\n else if (alignment === 'Center') {\n node.classList.add('e-centeralign');\n }\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if ((column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip'))\n && !(gridObj.allowTextWrap && (gridObj.textWrapSettings.wrapMode === 'Header'\n || gridObj.textWrapSettings.wrapMode === 'Both'))) {\n if (column.type !== 'checkbox') {\n node.classList.add('e-ellipsistooltip');\n }\n }\n if (elementDesc) {\n node.setAttribute('aria-description', elementDesc);\n }\n node.setAttribute('aria-rowspan', (!isNullOrUndefined(cell.rowSpan) ? cell.rowSpan : 1).toString());\n node.setAttribute('aria-colspan', '1');\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (((this.parent.isReact && this.parent.requireTemplateRef)\n || (isReactChild && this.parent.parentDetails.parentInstObj.requireTemplateRef))\n && !isNullOrUndefined(column.headerTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var thisRef_1 = this;\n thisRef_1.parent.renderTemplates(function () {\n thisRef_1.parent.trigger(headerCellInfo, { cell: cell, node: node });\n });\n }\n else {\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n }\n return node;\n };\n HeaderCellRenderer.prototype.getValue = function (field, column) {\n return column.headerValueAccessor(field, column);\n };\n HeaderCellRenderer.prototype.extendPrepareHeader = function (column, node) {\n if (this.parent.showColumnMenu && column.showColumnMenu && !isNullOrUndefined(column.field)) {\n var element = (this.parent.createElement('div', { className: 'e-icons e-columnmenu', attrs: { 'aria-hidden': 'true' } }));\n var matchFilteredColumns = [];\n if (this.parent.filterSettings.columns.length && this.parent.filterSettings.columns.length !== matchFilteredColumns.length) {\n for (var i = 0; i < this.parent.columns.length; i++) {\n for (var j = 0; j < this.parent.filterSettings.columns.length; j++) {\n if (this.parent.filterSettings.columns[parseInt(j.toString(), 10)].field === column.field) {\n element.classList.add('e-filtered');\n matchFilteredColumns.push(column.field);\n break;\n }\n }\n }\n }\n node.classList.add('e-fltr-icon');\n node.appendChild(element);\n }\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHtml\n * @returns {Element} returns the element\n */\n HeaderCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n return HeaderCellRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * StackedHeaderCellRenderer class which responsible for building stacked header cell content.\n *\n * @hidden\n */\nvar StackedHeaderCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$5(StackedHeaderCellRenderer, _super);\n function StackedHeaderCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', {\n className: 'e-headercell e-stackedheadercell', attrs: {\n role: 'columnheader',\n tabindex: '-1'\n }\n });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n StackedHeaderCellRenderer.prototype.render = function (cell, data, attributes$$1) {\n var node = this.element.cloneNode();\n var div = this.parent.createElement('div', {\n className: 'e-stackedheadercelldiv',\n attrs: { 'e-mappinguid': cell.column.uid }\n });\n var column = cell.column;\n node.appendChild(div);\n if (!isNullOrUndefined(column.headerTemplate)) {\n appendChildren(div, column.getHeaderTemplate()(column, this.parent, 'headerTemplate'));\n }\n else {\n this.appendHtml(div, column.headerText, column.getDomSetter());\n }\n if (cell.column.toolTip) {\n node.setAttribute('title', cell.column.toolTip);\n }\n if (column.clipMode === 'Clip' || (!column.clipMode && this.parent.clipMode === 'Clip')) {\n node.classList.add('e-gridclip');\n }\n else if (column.clipMode === 'EllipsisWithTooltip' || (!column.clipMode && this.parent.clipMode === 'EllipsisWithTooltip')) {\n node.classList.add('e-ellipsistooltip');\n }\n if (!isNullOrUndefined(cell.column.textAlign)) {\n div.style.textAlign = cell.column.textAlign;\n }\n if (cell.column.customAttributes) {\n setStyleAndAttributes(node, cell.column.customAttributes);\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-colspan', cell.colSpan.toString());\n node.setAttribute('aria-rowspan', '1');\n if (this.parent.allowResizing) {\n var handler = this.parent.createElement('div');\n handler.className = cell.column.allowResizing ? 'e-rhandler e-rcursor' : 'e-rsuppress';\n node.appendChild(handler);\n }\n if (cell.className) {\n node.classList.add(cell.className);\n }\n this.parent.trigger(headerCellInfo, { cell: cell, node: node });\n return node;\n };\n return StackedHeaderCellRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * IndentCellRenderer class which responsible for building group indent cell.\n *\n * @hidden\n */\nvar IndentCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$6(IndentCellRenderer, _super);\n function IndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-indentcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n IndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n setStyleAndAttributes(node, cell.attributes);\n return node;\n };\n return IndentCellRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * GroupCaptionCellRenderer class which responsible for building group caption cell.\n *\n * @hidden\n */\nvar GroupCaptionCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$7(GroupCaptionCellRenderer, _super);\n function GroupCaptionCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.cellUid = 0;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-groupcaption',\n attrs: { id: _this.parent.element.id + 'captioncell', role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the GroupedData\n * @returns {Element} returns the element\n */\n GroupCaptionCellRenderer.prototype.render = function (cell, data) {\n this.element.id = this.parent.element.id + 'captioncell' + this.cellUid++;\n var node = this.element.cloneNode();\n var gObj = this.parent;\n var column = cell.column;\n var domSetter = column.getDomSetter ? column.getDomSetter() : 'innerHTML';\n var result;\n var fKeyValue;\n var gTemplateValue;\n data.headerText = cell.column.headerText;\n if (cell.isForeignKey) {\n fKeyValue = this.format(cell.column, cell.column.valueAccessor('foreignKey', data, cell.column));\n }\n var value = cell.isForeignKey ? fKeyValue : cell.column.enableGroupByFormat ? data.key :\n this.format(cell.column, cell.column.valueAccessor('key', data, cell.column));\n for (var j = 0; j < gObj.aggregates.length; j++) {\n for (var i = 0; i < gObj.aggregates[parseInt(j.toString(), 10)].columns.length; i++) {\n if (gObj.getVisibleColumns()[0].field === gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .field && gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate) {\n if (gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.includes('$')) {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)]\n .groupCaptionTemplate.split('$')[0] + data[gObj.getVisibleColumns()[0].field][gObj\n .aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].type] +\n gObj.aggregates[parseInt(j.toString(), 10)].columns[parseInt(i.toString(), 10)].groupCaptionTemplate.split('}')[1];\n }\n else {\n gTemplateValue = gObj.aggregates[parseInt(j.toString(), 10)]\n .columns[parseInt(i.toString(), 10)].groupCaptionTemplate;\n }\n break;\n }\n }\n }\n if (!isNullOrUndefined(gObj.groupSettings.captionTemplate)) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.groupSettings.captionTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var tempID = gObj.element.id + 'captionTemplate';\n templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent, 'captionTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else if (this.parent.isVue) {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data, this.parent);\n }\n else {\n result = templateCompiler(gObj.groupSettings.captionTemplate)(data);\n }\n if (!isReactCompiler && !isReactChild) {\n appendChildren(node, result);\n }\n }\n else {\n if (gObj.groupSettings.enableLazyLoading) {\n node[\"\" + domSetter] = cell.column.headerText + ': ' + value + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n else {\n node[\"\" + domSetter] = cell.column.headerText + ': ' + value + ' - ' + data.count + ' ' +\n (data.count < 2 ? this.localizer.getConstant('Item') : this.localizer.getConstant('Items'))\n + (gTemplateValue ? ' ' + gTemplateValue : '');\n }\n }\n node.setAttribute('colspan', cell.colSpan.toString());\n node.setAttribute('aria-label', node.innerHTML + this.localizer.getConstant('GroupCaption'));\n node.setAttribute('title', node.textContent);\n return node;\n };\n return GroupCaptionCellRenderer;\n}(CellRenderer));\n/**\n * GroupCaptionEmptyCellRenderer class which responsible for building group caption empty cell.\n *\n * @hidden\n */\nvar GroupCaptionEmptyCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$7(GroupCaptionEmptyCellRenderer, _super);\n function GroupCaptionEmptyCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', { className: 'e-groupcaption' });\n return _this;\n }\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the Object\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {number} data.count - Defines the count\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupCaptionEmptyCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.innerHTML = ' ';\n node.setAttribute('colspan', cell.colSpan.toString());\n return node;\n };\n return GroupCaptionEmptyCellRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar ExpandCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$8(ExpandCellRenderer, _super);\n function ExpandCellRenderer() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Function to render the expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {string} data.field - Defines the field\n * @param {string} data.key - Defines the key\n * @param {Object} attr - specifies the attribute\n * @param {boolean} isExpand - specifies isexpand\n * @returns {Element} returns the element\n */\n ExpandCellRenderer.prototype.render = function (cell, data, attr, isExpand) {\n var node = this.element.cloneNode();\n node.setAttribute('ej-mappingname', data.field);\n node.setAttribute('ej-mappingvalue', data.key);\n node.setAttribute('aria-expanded', isExpand ? 'true' : 'false');\n node.setAttribute('tabindex', '-1');\n if (this.parent.infiniteScrollSettings && this.parent.infiniteScrollSettings.enableCache) {\n cell.cellType = CellType.Indent;\n node.className = isExpand ? 'e-recordplusexpand e-disablepointer' : 'e-recordpluscollapse e-disablepointer';\n }\n else {\n node.className = isExpand ? 'e-recordplusexpand' : 'e-recordpluscollapse';\n node.appendChild(this.parent.createElement('a', {\n className: isExpand ? 'e-icons e-gdiagonaldown e-icon-gdownarrow' : 'e-icons e-gnextforward e-icon-grightarrow',\n attrs: { href: 'javascript:void(0);', 'title': isExpand ? 'expanded' : 'collapsed' }\n }));\n }\n return node;\n };\n return ExpandCellRenderer;\n}(IndentCellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * HeaderIndentCellRenderer class which responsible for building header indent cell.\n *\n * @hidden\n */\nvar HeaderIndentCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$9(HeaderIndentCellRenderer, _super);\n function HeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-grouptopleftcell' });\n return _this;\n }\n /**\n * Function to render the indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n HeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-headercelldiv e-emptycell', innerHTML: '' }));\n return node;\n };\n return HeaderIndentCellRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar DetailHeaderIndentCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$10(DetailHeaderIndentCellRenderer, _super);\n function DetailHeaderIndentCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-detailheadercell' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DetailHeaderIndentCellRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(this.parent.createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return DetailHeaderIndentCellRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar DetailExpandCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$11(DetailExpandCellRenderer, _super);\n function DetailExpandCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-detailrowcollapse',\n attrs: { 'aria-expanded': 'false', role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @returns {Element} returns the element\n */\n DetailExpandCellRenderer.prototype.render = function (cell, data, attributes$$1) {\n var node = this.element.cloneNode();\n if (attributes$$1 && !isNullOrUndefined(attributes$$1['class'])) {\n node.className = '';\n node.className = attributes$$1['class'];\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonaldown e-icon-gdownarrow', attrs: {\n href: 'javascript:void(0);', 'title': this.localizer.getConstant('Expanded')\n } }));\n }\n else {\n node.appendChild(this.parent.createElement('a', { className: 'e-icons e-dtdiagonalright e-icon-grightarrow', attrs: {\n href: 'javascript:void(0);', 'title': this.localizer.getConstant('Collapsed')\n } }));\n }\n return node;\n };\n return DetailExpandCellRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * ExpandCellRenderer class which responsible for building group expand cell.\n *\n * @hidden\n */\nvar RowDragDropRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$12(RowDragDropRenderer, _super);\n function RowDragDropRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowdragdrop e-rowdragdropcell',\n attrs: { role: 'gridcell', tabindex: '-1' }\n });\n return _this;\n }\n /**\n * Function to render the detail expand cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropRenderer.prototype.render = function (cell, data) {\n var nodeElement = this.element.cloneNode();\n nodeElement.appendChild(this.parent.createElement('div', {\n className: 'e-icons e-rowcelldrag e-dtdiagonalright e-icon-rowdragicon',\n attrs: { 'aria-hidden': 'true' }\n }));\n if (cell.isSelected) {\n nodeElement.classList.add('e-selectionbackground');\n nodeElement.classList.add('e-active');\n }\n return nodeElement;\n };\n return RowDragDropRenderer;\n}(CellRenderer));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * DetailHeaderIndentCellRenderer class which responsible for building detail header indent cell.\n *\n * @hidden\n */\nvar RowDragDropHeaderRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$13(RowDragDropHeaderRenderer, _super);\n function RowDragDropHeaderRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-rowdragheader' });\n return _this;\n }\n /**\n * Function to render the detail indent cell\n *\n * @param {Cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @returns {Element} returns the element\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDragDropHeaderRenderer.prototype.render = function (cell, data) {\n var node = this.element.cloneNode();\n node.appendChild(createElement('div', { className: 'e-emptycell' }));\n return node;\n };\n return RowDragDropHeaderRenderer;\n}(CellRenderer));\n\n/**\n * Content module is used to render grid content\n *\n * @hidden\n */\nvar Render = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the serviceLocator\n */\n function Render(parent, locator) {\n this.emptyGrid = false;\n this.counter = 0;\n this.parent = parent;\n this.locator = locator;\n this.data = new Data(parent, locator);\n this.l10n = locator.getService('localization');\n this.ariaService = this.locator.getService('ariaService');\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize grid header, content and footer rendering\n *\n * @returns {void}\n */\n Render.prototype.render = function () {\n var gObj = this.parent;\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer.renderPanel();\n this.contentRenderer.renderPanel();\n if (gObj.getColumns().length) {\n this.isLayoutRendered = true;\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.emptyRow(false);\n }\n this.parent.scrollModule.setWidth();\n this.parent.scrollModule.setHeight();\n if (this.parent.height !== 'auto') {\n this.parent.scrollModule.setPadding();\n }\n this.refreshDataManager();\n };\n /**\n * Refresh the entire Grid.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n var _this = this;\n if (e === void 0) { e = { requestType: 'refresh' }; }\n var gObj = this.parent;\n gObj.notify(e.requestType + \"-begin\", e);\n gObj.trigger(actionBegin, e, function (args) {\n if (args === void 0) { args = { requestType: 'refresh' }; }\n if (args.cancel) {\n gObj.notify(cancelBegin, args);\n return;\n }\n if (args.requestType === 'delete' && gObj.allowPaging) {\n var dataLength = args.data.length;\n var count = gObj.pageSettings.totalRecordsCount - dataLength;\n var currentViewData = gObj.getCurrentViewRecords().length;\n // eslint-disable-next-line max-len\n if (!(currentViewData - dataLength) && count && ((gObj.pageSettings.currentPage - 1) * gObj.pageSettings.pageSize) === count) {\n gObj.prevPageMoving = true;\n gObj.setProperties({\n pageSettings: {\n totalRecordsCount: count, currentPage: Math.ceil(count / gObj.pageSettings.pageSize)\n }\n }, true);\n gObj.pagerModule.pagerObj.totalRecordsCount = count;\n }\n }\n if (args.requestType === 'reorder' && _this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else if ((args.requestType === 'paging' || args.requestType === 'columnstate' || args.requestType === 'reorder')\n && _this.parent.groupSettings.enableLazyLoading && _this.parent.groupSettings.columns.length\n && (_this.parent.enableVirtualization ? _this.parent.lazyLoadRender :\n _this.parent.contentModule).getGroupCache()[_this.parent.pageSettings.currentPage]) {\n _this.contentRenderer.refreshContentRows(args);\n }\n else {\n _this.refreshDataManager(args);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden\n */\n Render.prototype.resetTemplates = function () {\n var gObj = this.parent;\n var gridColumns = gObj.getColumns();\n if (gObj.detailTemplate) {\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n blazorTemplates[\"\" + detailTemplateID] = [];\n resetBlazorTemplate(detailTemplateID, 'DetailTemplate');\n }\n if (gObj.groupSettings.captionTemplate) {\n resetBlazorTemplate(gObj.element.id + 'captionTemplate', 'CaptionTemplate');\n }\n if (gObj.rowTemplate) {\n resetBlazorTemplate(gObj.element.id + 'rowTemplate', 'RowTemplate');\n }\n if (gObj.toolbarTemplate) {\n resetBlazorTemplate(gObj.element.id + 'toolbarTemplate', 'ToolbarTemplate');\n }\n if (gObj.pageSettings.template) {\n resetBlazorTemplate(gObj.element.id + '_template', 'pageSettings');\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].template) {\n blazorTemplates[gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid] = [];\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid, 'Template');\n }\n if (gridColumns[parseInt(i.toString(), 10)].headerTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'headerTemplate', 'HeaderTemplate');\n }\n if (gridColumns[parseInt(i.toString(), 10)].filterTemplate) {\n resetBlazorTemplate(gObj.element.id + gridColumns[parseInt(i.toString(), 10)].uid + 'filterTemplate', 'FilterTemplate');\n }\n }\n var guid = 'guid';\n for (var k = 0; k < gObj.aggregates.length; k++) {\n for (var j = 0; j < gObj.aggregates[parseInt(k.toString(), 10)].columns.length; j++) {\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].footerTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'footerTemplate';\n resetBlazorTemplate(tempID, 'FooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupFooterTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupFooterTemplate';\n resetBlazorTemplate(tempID, 'GroupFooterTemplate');\n }\n if (gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)].groupCaptionTemplate) {\n var tempID = gObj.element.id + gObj.aggregates[parseInt(k.toString(), 10)].columns[parseInt(j.toString(), 10)][\"\" + guid] + 'groupCaptionTemplate';\n resetBlazorTemplate(tempID, 'GroupCaptionTemplate');\n }\n }\n }\n };\n Render.prototype.refreshComplete = function (e) {\n this.parent.trigger(actionComplete, e);\n };\n /**\n * The function is used to refresh the dataManager\n *\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n */\n Render.prototype.refreshDataManager = function (args) {\n var _this = this;\n if (args === void 0) { args = {}; }\n var gObj = this.parent;\n var maskRow = (gObj.loadingIndicator.indicatorType === 'Shimmer' && args.requestType !== 'virtualscroll'\n && args.requestType !== 'infiniteScroll') || ((args.requestType === 'virtualscroll' || args.requestType === 'infiniteScroll')\n && gObj.enableVirtualMaskRow);\n if (args.requestType !== 'virtualscroll' && !args.isCaptionCollapse && !maskRow) {\n this.parent.showSpinner();\n }\n if (maskRow) {\n gObj.showMaskRow(args.requestType === 'virtualscroll' ? args.virtualInfo.sentinelInfo.axis\n : args.requestType === 'infiniteScroll' ? args.direction : undefined);\n }\n this.parent.notify(resetInfiniteBlocks, args);\n this.emptyGrid = false;\n var dataManager;\n var isFActon = this.isNeedForeignAction();\n this.ariaService.setBusy(this.parent.getContent().querySelector('.' + content), true);\n if (isFActon) {\n var deffered = new Deferred();\n dataManager = this.getFData(deffered, args);\n }\n if (!dataManager) {\n dataManager = this.data.getData(args, this.data.generateQuery().requiresCount());\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n dataManager = dataManager.then(function (e) {\n var query = _this.data.generateQuery().requiresCount();\n if (_this.emptyGrid) {\n var def = new Deferred();\n def.resolve({ result: [], count: 0 });\n return def.promise;\n }\n return _this.data.getData(args, query);\n });\n }\n if (this.parent.getForeignKeyColumns().length && (!isFActon || this.parent.searchSettings.key.length)) {\n var deffered_1 = new Deferred();\n dataManager = dataManager.then(function (e) {\n _this.parent.notify(getForeignKeyData, { dataManager: dataManager, result: e, promise: deffered_1, action: args });\n return deffered_1.promise;\n });\n }\n if (this.parent.groupSettings.disablePageWiseAggregates && this.parent.groupSettings.columns.length) {\n dataManager = dataManager.then(function (e) { return _this.validateGroupRecords(e); });\n }\n dataManager.then(function (e) { return _this.dataManagerSuccess(e, args); })\n .catch(function (e) { return _this.dataManagerFailure(e, args); });\n };\n Render.prototype.getFData = function (deferred, args) {\n this.parent.notify(getForeignKeyData, { isComplex: true, promise: deferred, action: args });\n return deferred.promise;\n };\n Render.prototype.isNeedForeignAction = function () {\n var gObj = this.parent;\n return !!((gObj.allowFiltering && gObj.filterSettings.columns.length) ||\n (gObj.searchSettings.key.length)) && this.foreignKey(this.parent.getForeignKeyColumns());\n };\n Render.prototype.foreignKey = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n var fbool = false;\n fbool = _this.parent.filterSettings.columns.some(function (value) {\n return col.uid === value.uid;\n });\n return !!(fbool || _this.parent.searchSettings.key.length);\n });\n };\n Render.prototype.sendBulkRequest = function (args) {\n var _this = this;\n args.requestType = 'batchsave';\n var promise = this.data.saveChanges(args.changes, this.parent.getPrimaryKeyFieldNames()[0], args.original);\n var query = this.data.generateQuery().requiresCount();\n if (this.data.dataManager.dataSource.offline) {\n this.refreshDataManager({ requestType: 'batchsave' });\n return;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n promise.then(function (e) {\n _this.data.getData(args, query)\n .then(function (e) { return _this.dmSuccess(e, args); })\n .catch(function (e) { return _this.dmFailure(e, args); });\n })\n .catch(function (e) { return _this.dmFailure(e, args); });\n }\n };\n Render.prototype.dmSuccess = function (e, args) {\n this.dataManagerSuccess(e, args);\n };\n Render.prototype.dmFailure = function (e, args) {\n this.dataManagerFailure(e, args);\n };\n /**\n * Render empty row to Grid which is used at the time to represent to no records.\n *\n * @returns {void}\n * @hidden\n */\n Render.prototype.renderEmptyRow = function () {\n this.emptyRow(true);\n };\n Render.prototype.emptyRow = function (isTrigger) {\n var gObj = this.parent;\n var tbody$$1 = this.contentRenderer.getTable().querySelector(tbody);\n if (!isNullOrUndefined(tbody$$1)) {\n remove(tbody$$1);\n }\n tbody$$1 = this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var spanCount = 0;\n if (gObj.detailTemplate || gObj.childGrid) {\n ++spanCount;\n }\n var tr = this.parent.createElement('tr', { className: 'e-emptyrow', attrs: { role: 'row' } });\n tr.appendChild(this.parent.createElement('td', {\n innerHTML: this.l10n.getConstant('EmptyRecord'),\n attrs: { colspan: (gObj.getVisibleColumns().length + spanCount + gObj.groupSettings.columns.length).toString() }\n }));\n tbody$$1.appendChild(tr);\n this.contentRenderer.renderEmpty(tbody$$1);\n if (isTrigger) {\n this.parent.trigger(dataBound, {});\n this.parent.notify(onEmpty, { rows: [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })] });\n }\n };\n Render.prototype.dynamicColumnChange = function () {\n if (this.parent.getCurrentViewRecords().length) {\n this.updateColumnType(this.parent.getCurrentViewRecords()[0]);\n }\n };\n Render.prototype.updateColumnType = function (record) {\n var columns = this.parent.getColumns();\n var value;\n var cFormat = 'customFormat';\n var equalTo = 'equalTo';\n var data = record && record.items ? record.items[0] : record;\n var fmtr = this.locator.getService('valueFormatter');\n for (var i = 0, len = columns.length; i < len; i++) {\n value = getObject(columns[parseInt(i.toString(), 10)].field || '', data);\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)][\"\" + cFormat])) {\n columns[parseInt(i.toString(), 10)].format = columns[parseInt(i.toString(), 10)][\"\" + cFormat];\n }\n if (!isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules)\n && !isNullOrUndefined(columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo])) {\n columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0] = this.parent.element.id + columns[parseInt(i.toString(), 10)].validationRules[\"\" + equalTo][0];\n }\n if (columns[parseInt(i.toString(), 10)].isForeignColumn() && columns[parseInt(i.toString(), 10)].columnData) {\n value = getObject(columns[parseInt(i.toString(), 10)].foreignKeyValue || '', columns[parseInt(i.toString(), 10)].columnData[0]);\n }\n if (!isNullOrUndefined(value)) {\n this.isColTypeDef = true;\n if (!columns[parseInt(i.toString(), 10)].type) {\n columns[parseInt(i.toString(), 10)].type = value.getDay ? (value.getHours() > 0 || value.getMinutes() > 0 ||\n value.getSeconds() > 0 || value.getMilliseconds() > 0 ? 'datetime' : 'date') : typeof (value);\n }\n }\n else {\n columns[parseInt(i.toString(), 10)].type = columns[parseInt(i.toString(), 10)].type || null;\n }\n var valueFormatter = new ValueFormatter();\n if (columns[parseInt(i.toString(), 10)].format && (columns[parseInt(i.toString(), 10)].format.skeleton\n || (columns[parseInt(i.toString(), 10)].format.format &&\n typeof columns[parseInt(i.toString(), 10)].format.format === 'string'))) {\n columns[parseInt(i.toString(), 10)].setFormatter(valueFormatter.getFormatFunction(extend({}, columns[parseInt(i.toString(), 10)].format)));\n columns[parseInt(i.toString(), 10)].setParser(valueFormatter.getParserFunction(columns[parseInt(i.toString(), 10)].format));\n }\n if (typeof (columns[parseInt(i.toString(), 10)].format) === 'string') {\n setFormatter(this.locator, columns[parseInt(i.toString(), 10)]);\n }\n else if (!columns[parseInt(i.toString(), 10)].format && columns[parseInt(i.toString(), 10)].type === 'number') {\n columns[parseInt(i.toString(), 10)].setParser(fmtr.getParserFunction({ format: 'n2' }));\n }\n }\n };\n /**\n * @param {ReturnType} e - specifies the return type\n * @param {NotifyArgs} args - specifies the Notifyargs\n * @returns {void}\n * @hidden\n */\n // tslint:disable-next-line:max-func-body-length\n Render.prototype.dataManagerSuccess = function (e, args) {\n var _this = this;\n var gObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.headerRenderer = this.renderer.getRenderer(RenderType.Header);\n e.actionArgs = args;\n var isInfiniteDelete = this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache &&\n !gObj.groupSettings.enableLazyLoading && (args.requestType === 'delete' || (args.requestType === 'save' &&\n this.parent.infiniteScrollModule.requestType === 'add' && !(gObj.sortSettings.columns.length ||\n gObj.filterSettings.columns.length || this.parent.groupSettings.columns.length || gObj.searchSettings.key)));\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(beforeDataBound, e, function (dataArgs) {\n if (dataArgs.cancel) {\n return;\n }\n dataArgs.result = isNullOrUndefined(dataArgs.result) ? [] : dataArgs.result;\n var len = Object.keys(dataArgs.result).length;\n if (_this.parent.isDestroyed) {\n return;\n }\n if ((!gObj.getColumns().length && !len) && !(gObj.columns.length && gObj.columns[0] instanceof Column)) {\n gObj.hideSpinner();\n return;\n }\n if (_this.isInfiniteEnd(args) && !len) {\n _this.parent.notify(infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n return;\n }\n _this.parent.isEdit = false;\n _this.parent.notify(editReset, {});\n _this.parent.notify(tooltipDestroy, {});\n if (args && args.requestType !== 'infiniteScroll') {\n _this.parent.notify(commandColumnDestroy, { type: 'refreshCommandColumn' });\n }\n _this.contentRenderer.prevCurrentView = _this.parent.currentViewData.slice();\n gObj.currentViewData = dataArgs.result;\n gObj.notify(refreshInfiniteCurrentViewData, { args: args, data: dataArgs.result });\n if (dataArgs.count && !gObj.allowPaging && (gObj.enableVirtualization || gObj.enableInfiniteScrolling)) {\n gObj.totalDataRecordsCount = dataArgs.count;\n }\n if (!len && dataArgs.count && gObj.allowPaging && args && args.requestType !== 'delete') {\n if (_this.parent.groupSettings.enableLazyLoading\n && (args.requestType === 'grouping' || args.requestType === 'ungrouping')) {\n _this.parent.notify(groupComplete, args);\n }\n gObj.prevPageMoving = true;\n gObj.pageSettings.totalRecordsCount = dataArgs.count;\n if (args.requestType !== 'paging') {\n gObj.pageSettings.currentPage = Math.ceil(dataArgs.count / gObj.pageSettings.pageSize);\n }\n gObj.dataBind();\n return;\n }\n if ((!gObj.getColumns().length && len || !_this.isLayoutRendered) && !isGroupAdaptive(gObj)) {\n gObj.removeMaskRow();\n _this.updatesOnInitialRender(dataArgs);\n }\n if (!_this.isColTypeDef && gObj.getCurrentViewRecords()) {\n if (_this.data.dataManager.dataSource.offline && gObj.dataSource && gObj.dataSource.length) {\n _this.updateColumnType(gObj.dataSource[0]);\n }\n else {\n _this.updateColumnType(gObj.getCurrentViewRecords()[0]);\n }\n }\n if (!_this.parent.isInitialLoad && _this.parent.groupSettings.disablePageWiseAggregates &&\n !_this.parent.groupSettings.columns.length) {\n dataArgs.result = _this.parent.dataSource instanceof Array ? _this.parent.dataSource : _this.parent.currentViewData;\n }\n if ((_this.parent.isReact || _this.parent.isVue) && !isNullOrUndefined(args) && args.requestType !== 'infiniteScroll' && !args.isFrozen) {\n clearReactVueTemplates(_this.parent, ['footerTemplate']);\n }\n if (_this.parent.isAngular && _this.parent.allowGrouping && _this.parent.groupSettings.captionTemplate\n && !(!isNullOrUndefined(args) && args.requestType === 'infiniteScroll')) {\n _this.parent.destroyTemplate(['groupSettings_captionTemplate']);\n }\n _this.parent.notify(dataReady, extend({ count: dataArgs.count, result: dataArgs.result, aggregates: dataArgs.aggregates }, args));\n if ((gObj.groupSettings.columns.length || (args && args.requestType === 'ungrouping'))\n && (args && args.requestType !== 'filtering')) {\n _this.headerRenderer.refreshUI();\n }\n if (len) {\n if (isGroupAdaptive(gObj)) {\n var content$$1 = 'content';\n args.scrollTop = { top: _this.contentRenderer[\"\" + content$$1].scrollTop };\n }\n if (!isInfiniteDelete) {\n if (_this.parent.enableImmutableMode) {\n _this.contentRenderer.immutableModeRendering(args);\n }\n else {\n _this.contentRenderer.refreshContentRows(args);\n }\n }\n else {\n _this.parent.notify(infiniteEditHandler, { e: args, result: e.result, count: e.count, agg: e.aggregates });\n }\n }\n else {\n if (args && args.isCaptionCollapse) {\n return;\n }\n if (!gObj.getColumns().length) {\n gObj.element.innerHTML = '';\n alert(_this.l10n.getConstant('EmptyDataSourceError')); //ToDO: change this alert as dialog\n return;\n }\n _this.contentRenderer.setRowElements([]);\n _this.contentRenderer.setRowObjects([]);\n _this.ariaService.setBusy(_this.parent.getContent().querySelector('.' + content), false);\n gObj.removeMaskRow();\n _this.renderEmptyRow();\n if (gObj.enableColumnVirtualization && !len) {\n _this.parent.notify(contentReady, { rows: gObj.getRowsObject(), args: {} });\n }\n if (args) {\n var action = (args.requestType || '').toLowerCase() + '-complete';\n _this.parent.notify(action, args);\n if (args.requestType === 'batchsave') {\n args.cancel = false;\n args.rows = [];\n args.isFrozen = _this.parent.getFrozenColumns() !== 0 && !args.isFrozen;\n _this.parent.trigger(actionComplete, args);\n }\n }\n _this.parent.hideSpinner();\n }\n _this.parent.notify(toolbarRefresh, {});\n _this.setRowCount(_this.parent.getCurrentViewRecords().length);\n if ('query' in e) {\n _this.parent.getDataModule().isQueryInvokedFromData = false;\n }\n });\n };\n /**\n * @param {object} e - specifies the object\n * @param {Object[]} e.result - specifies the result\n * @param {NotifyArgs} args - specifies the args\n * @returns {void}\n * @hidden\n */\n Render.prototype.dataManagerFailure = function (e, args) {\n this.ariaService.setOptions(this.parent.getContent().querySelector('.' + content), { busy: false, invalid: true });\n this.setRowCount(1);\n this.parent.trigger(actionFailure, { error: e });\n this.parent.hideSpinner();\n this.parent.removeMaskRow();\n if (args.requestType === 'save' || args.requestType === 'delete'\n || args.name === 'bulk-save') {\n return;\n }\n this.parent.currentViewData = [];\n this.renderEmptyRow();\n if (!this.parent.isInitialLoad) {\n this.parent.focusModule.setFirstFocusableTabIndex();\n }\n this.parent.log('actionfailure', { error: e });\n };\n Render.prototype.setRowCount = function (dataRowCount) {\n this.ariaService.setOptions(this.parent.getHeaderTable(), {\n rowcount: dataRowCount ? dataRowCount.toString() : '1'\n });\n };\n Render.prototype.isInfiniteEnd = function (args) {\n return this.parent.enableInfiniteScrolling && !this.parent.infiniteScrollSettings.enableCache && args.requestType === 'delete';\n };\n Render.prototype.updatesOnInitialRender = function (e) {\n this.isLayoutRendered = true;\n if (this.parent.columns.length < 1) {\n this.buildColumns(e.result[0]);\n }\n prepareColumns(this.parent.columns, null, this.parent);\n this.headerRenderer.renderTable();\n this.contentRenderer.renderTable();\n this.parent.isAutoGen = true;\n this.parent.notify(autoCol, {});\n };\n Render.prototype.iterateComplexColumns = function (obj, field, split) {\n var keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var childKeys = typeof obj[keys[parseInt(i.toString(), 10)]] === 'object'\n && obj[keys[parseInt(i.toString(), 10)]] && !(obj[keys[parseInt(i.toString(), 10)]] instanceof Date) ?\n Object.keys(obj[keys[parseInt(i.toString(), 10)]]) : [];\n if (childKeys.length) {\n this.iterateComplexColumns(obj[keys[parseInt(i.toString(), 10)]], field + (keys[parseInt(i.toString(), 10)] + '.'), split);\n }\n else {\n split[this.counter] = field + keys[parseInt(i.toString(), 10)];\n this.counter++;\n }\n }\n };\n Render.prototype.buildColumns = function (record) {\n var cols = [];\n var complexCols = {};\n this.iterateComplexColumns(record, '', complexCols);\n var columns = Object.keys(complexCols).filter(function (e) { return complexCols[\"\" + e] !== 'BlazId'; }).\n map(function (field) { return complexCols[\"\" + field]; });\n for (var i = 0, len = columns.length; i < len; i++) {\n cols[parseInt(i.toString(), 10)] = { 'field': columns[parseInt(i.toString(), 10)] };\n if (this.parent.enableColumnVirtualization) {\n cols[parseInt(i.toString(), 10)].width = !isNullOrUndefined(cols[parseInt(i.toString(), 10)].width) ?\n cols[parseInt(i.toString(), 10)].width : 200;\n }\n }\n this.parent.setProperties({ 'columns': cols }, true);\n };\n Render.prototype.instantiateRenderer = function () {\n this.renderer.addRenderer(RenderType.Header, new HeaderRender(this.parent, this.locator));\n this.renderer.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n var cellrender = this.locator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Header, new HeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Data, new CellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Indent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaption, new GroupCaptionCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.GroupCaptionEmpty, new GroupCaptionEmptyCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.Expand, new ExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.HeaderIndent, new HeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.StackedHeader, new StackedHeaderCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailHeader, new DetailHeaderIndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragHIcon, new RowDragDropHeaderRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailExpand, new DetailExpandCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.DetailFooterIntent, new IndentCellRenderer(this.parent, this.locator));\n cellrender.addCellRenderer(CellType.RowDragIcon, new RowDragDropRenderer(this.parent, this.locator));\n };\n Render.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on('refreshdataSource', this.dataManagerSuccess, this);\n this.parent.on(modelChanged, this.refresh, this);\n this.parent.on(refreshComplete, this.refreshComplete, this);\n this.parent.on(bulkSave, this.sendBulkRequest, this);\n this.parent.on(showEmptyGrid, function () { _this.emptyGrid = true; }, this);\n this.parent.on(autoCol, this.dynamicColumnChange, this);\n };\n /**\n * @param {ReturnType} e - specifies the Return type\n * @returns {Promise} returns the object\n * @hidden\n */\n Render.prototype.validateGroupRecords = function (e) {\n var _this = this;\n var index = e.result.length - 1;\n if (index < 0) {\n return Promise.resolve(e);\n }\n var group0 = e.result[0];\n var groupN = e.result[parseInt(index.toString(), 10)];\n var predicate = [];\n var addWhere = function (input) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n predicate.push(new Predicate('field', '==', groups[parseInt(i.toString(), 10)].field).and(_this.getPredicate('key', 'equal', groups[parseInt(i.toString(), 10)].key)));\n }\n input.where(Predicate.or(predicate));\n };\n var query = new Query();\n addWhere(query);\n var curDm = new DataManager(e.result);\n var curFilter = curDm.executeLocal(query);\n var newQuery = this.data.generateQuery(true);\n var rPredicate = [];\n if (this.data.isRemote()) {\n var groups = [group0, groupN];\n for (var i = 0; i < groups.length; i++) {\n rPredicate.push(this.getPredicate(groups[parseInt(i.toString(), 10)].field, 'equal', groups[parseInt(i.toString(), 10)].key));\n }\n newQuery.where(Predicate.or(rPredicate));\n }\n else {\n addWhere(newQuery);\n }\n var deferred = new Deferred();\n this.data.getData({}, newQuery).then(function (r) {\n _this.updateGroupInfo(curFilter, r.result);\n deferred.resolve(e);\n }).catch(function (e) { return deferred.reject(e); });\n return deferred.promise;\n };\n Render.prototype.getPredicate = function (key, operator, value) {\n if (value instanceof Date) {\n return getDatePredicate({ field: key, operator: operator, value: value });\n }\n return new Predicate(key, operator, value);\n };\n Render.prototype.updateGroupInfo = function (current, untouched) {\n var dm = new DataManager(untouched);\n var elements = current;\n for (var i = 0; i < elements.length; i++) {\n var uGroup = dm.executeLocal(new Query()\n .where(new Predicate('field', '==', elements[parseInt(i.toString(), 10)].field).and(this.getPredicate('key', 'equal', elements[parseInt(i.toString(), 10)].key))))[0];\n elements[parseInt(i.toString(), 10)].count = uGroup.count;\n var itemGroup = elements[parseInt(i.toString(), 10)].items;\n var uGroupItem = uGroup.items;\n if (itemGroup.GroupGuid) {\n elements[parseInt(i.toString(), 10)].items =\n this.updateGroupInfo(elements[parseInt(i.toString(), 10)].items, uGroup.items);\n }\n var rows = this.parent.aggregates;\n for (var j = 0; j < rows.length; j++) {\n var row$$1 = rows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row$$1.columns.length; k++) {\n var types = row$$1.columns[parseInt(k.toString(), 10)].type instanceof Array ?\n (row$$1.columns[parseInt(k.toString(), 10)].type) :\n [(row$$1.columns[parseInt(k.toString(), 10)].type)];\n for (var l = 0; l < types.length; l++) {\n var key = row$$1.columns[parseInt(k.toString(), 10)].field + ' - ' + types[parseInt(l.toString(), 10)].toLowerCase();\n var data = itemGroup.level ? uGroupItem.records : uGroup.items;\n var context = this.parent;\n if (types[parseInt(l.toString(), 10)] === 'Custom') {\n var data_1 = itemGroup.level ? uGroupItem : uGroup;\n var temp = row$$1.columns[parseInt(k.toString(), 10)]\n .customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = temp ? temp.call(context, data_1, row$$1.columns[parseInt(k.toString(), 10)]) : '';\n }\n else {\n elements[parseInt(i.toString(), 10)].aggregates[\"\" + key] = DataUtil.aggregates[types[parseInt(l.toString(), 10)].toLowerCase()](data, row$$1.columns[parseInt(k.toString(), 10)].field);\n }\n }\n }\n }\n }\n return current;\n };\n return Render;\n}());\n\n/**\n * CellRendererFactory\n *\n * @hidden\n */\nvar CellRendererFactory = /** @__PURE__ @class */ (function () {\n function CellRendererFactory() {\n this.cellRenderMap = {};\n }\n CellRendererFactory.prototype.addCellRenderer = function (name, type) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n this.cellRenderMap[\"\" + name] = type;\n }\n };\n CellRendererFactory.prototype.getCellRenderer = function (name) {\n name = typeof name === 'string' ? name : getEnumValue(CellType, name);\n if (isNullOrUndefined(this.cellRenderMap[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The cellRenderer \" + name + \" is not found\";\n }\n else {\n return this.cellRenderMap[\"\" + name];\n }\n };\n return CellRendererFactory;\n}());\n\n/**\n *\n * The `ResponsiveDialogRenderer` module is used to render the responsive dialogs.\n */\nvar ResponsiveDialogRenderer = /** @__PURE__ @class */ (function () {\n function ResponsiveDialogRenderer(parent, serviceLocator) {\n this.sortedCols = [];\n this.sortPredicate = [];\n /** @hidden */\n this.isCustomDialog = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ResponsiveDialogRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: filterDialogClose, handler: this.closeCustomDialog },\n { event: refreshCustomFilterOkBtn, handler: this.refreshCustomFilterOkBtn },\n { event: renderResponsiveCmenu, handler: this.renderResponsiveContextMenu },\n { event: filterCmenuSelect, handler: this.renderCustomFilterDiv },\n { event: customFilterClose, handler: this.customExFilterClose },\n { event: refreshCustomFilterClearBtn, handler: this.refreshCustomFilterClearBtn }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.onActionCompleteFn = this.editComplate.bind(this);\n this.parent.addEventListener(actionComplete, this.onActionCompleteFn);\n };\n ResponsiveDialogRenderer.prototype.customExFilterClose = function () {\n this.isCustomDlgRender = false;\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDiv = function () {\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var title = header.querySelector('.e-dlg-custom-header');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n this.isCustomDlgRender = true;\n this.parent.filterModule.filterModule.closeDialog();\n this.saveBtn.element.style.display = '';\n this.refreshCustomFilterOkBtn({ disabled: false });\n this.backBtn.element.style.display = 'none';\n closeBtn.style.display = '';\n title.innerHTML = this.parent.localeObj.getConstant('CustomFilter');\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n this.customExcelFilterParent = this.parent.createElement('div', { className: 'e-xl-customfilterdiv e-default-filter' });\n content.appendChild(this.customExcelFilterParent);\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContextMenu = function (args) {\n if (this.action === ResponsiveDialogAction.isFilter) {\n var content = this.customResponsiveDlg.element.querySelector('.e-dlg-content');\n var header = this.customResponsiveDlg.element.querySelector('.e-dlg-header-content');\n var closeBtn = header.querySelector('.e-dlg-closeicon-btn');\n var text = header.querySelector('.e-dlg-custom-header');\n if (args.isOpen) {\n content.firstChild.style.display = 'none';\n content.appendChild(args.target);\n closeBtn.style.display = 'none';\n this.saveBtn.element.style.display = 'none';\n this.filterClearBtn.element.style.display = 'none';\n text.innerHTML = args.header;\n var backBtn = this.parent.createElement('button');\n var span = this.parent.createElement('span', { className: 'e-btn-icon e-resfilterback e-icons' });\n backBtn.appendChild(span);\n this.backBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-res-back-btn' + ' ' + this.parent.cssClass : 'e-res-back-btn'\n });\n this.backBtn.appendTo(backBtn);\n text.parentElement.insertBefore(backBtn, text);\n }\n else if (this.backBtn && !this.isCustomDlgRender) {\n content.firstChild.style.display = '';\n remove(this.backBtn.element);\n closeBtn.style.display = '';\n this.saveBtn.element.style.display = '';\n if (this.isFiltered) {\n this.filterClearBtn.element.style.display = '';\n }\n text.innerHTML = this.getHeaderTitle({ action: ResponsiveDialogAction.isFilter }, args.col);\n }\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterClearBtn = function (args) {\n if (this.filterClearBtn) {\n this.isFiltered = args.isFiltered;\n this.filterClearBtn.element.style.display = args.isFiltered ? '' : 'none';\n }\n };\n ResponsiveDialogRenderer.prototype.refreshCustomFilterOkBtn = function (args) {\n if (this.saveBtn) {\n this.saveBtn.disabled = args.disabled;\n }\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveContent = function (col) {\n var _this = this;\n var gObj = this.parent;\n if (col) {\n this.filterParent = this.parent.createElement('div', { className: 'e-mainfilterdiv e-default-filter', id: col.uid + '-main-filter' });\n return this.filterParent;\n }\n else {\n var cols = gObj.getColumns();\n this.customColumnDiv = gObj.createElement('div', { className: 'columndiv', styles: 'width: 100%' });\n var sortBtnParent = gObj.createElement('div', { className: 'e-ressortbutton-parent' });\n var filteredCols = [];\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter) {\n for (var i = 0; i < gObj.filterSettings.columns.length; i++) {\n filteredCols.push(gObj.filterSettings.columns[parseInt(i.toString(), 10)].field);\n }\n }\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible || (!cols[parseInt(i.toString(), 10)].allowSorting && isSort)\n || (!cols[parseInt(i.toString(), 10)].allowFiltering && isFilter)) {\n continue;\n }\n var cDiv = gObj.createElement('div', { className: 'e-responsivecoldiv' });\n cDiv.setAttribute('data-e-mappingname', cols[parseInt(i.toString(), 10)].field);\n cDiv.setAttribute('data-e-mappinguid', cols[parseInt(i.toString(), 10)].uid);\n var span = gObj.createElement('span', { innerHTML: cols[parseInt(i.toString(), 10)].headerText, className: 'e-res-header-text' });\n cDiv.appendChild(span);\n this.customColumnDiv.appendChild(cDiv);\n if (isSort) {\n var fields = this.getSortedFieldsAndDirections('field');\n var index = fields.indexOf(cols[parseInt(i.toString(), 10)].field);\n var button = gObj.createElement('button', { id: gObj.element.id + cols[parseInt(i.toString(), 10)].field + 'sortbutton' });\n var clone = sortBtnParent.cloneNode();\n clone.appendChild(button);\n cDiv.appendChild(clone);\n var btnObj = new Button({\n cssClass: this.parent.cssClass ? 'e-ressortbutton' + ' ' + this.parent.cssClass : 'e-ressortbutton'\n });\n btnObj.appendTo(button);\n var buttonInnerText = void 0;\n if ((!isNullOrUndefined(this.parent.sortSettings.columns[parseInt(index.toString(), 10)]))) {\n buttonInnerText = (this.parent.sortSettings.columns[parseInt(index.toString(), 10)].direction === 'Ascending') ?\n this.parent.localeObj.getConstant('AscendingText') : this.parent.localeObj.getConstant('DescendingText');\n }\n button.innerHTML = index > -1 ? buttonInnerText : this.parent.localeObj.getConstant('NoneText');\n button.onclick = function (e) {\n _this.sortButtonClickHandler(e.target);\n };\n }\n if (isFilter && filteredCols.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n var divIcon = gObj.createElement('div', { className: 'e-icons e-res-icon e-filtersetdiv' });\n var iconSpan = gObj.createElement('span', { className: 'e-icons e-res-icon e-filterset' });\n iconSpan.setAttribute('colType', cols[parseInt(i.toString(), 10)].type);\n divIcon.appendChild(iconSpan);\n cDiv.appendChild(divIcon);\n }\n }\n EventHandler.add(this.customColumnDiv, 'click', this.customFilterColumnClickHandler, this);\n return this.customColumnDiv;\n }\n };\n ResponsiveDialogRenderer.prototype.getSortedFieldsAndDirections = function (name) {\n var fields = [];\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n fields.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)][\"\" + name]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.sortButtonClickHandler = function (target) {\n if (target) {\n var columndiv = parentsUntil(target, 'e-responsivecoldiv');\n var field = columndiv.getAttribute('data-e-mappingname');\n if (!this.parent.allowMultiSorting) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n this.resetSortButtons(target);\n }\n var txt = target.textContent;\n var directionTxt = txt === this.parent.localeObj.getConstant('NoneText') ? this.parent.localeObj.getConstant('AscendingText')\n : txt === this.parent.localeObj.getConstant('AscendingText') ? this.parent.localeObj.getConstant('DescendingText')\n : this.parent.localeObj.getConstant('NoneText');\n var direction = directionTxt === this.parent.localeObj.getConstant('AscendingText') ? 'Ascending'\n : directionTxt === this.parent.localeObj.getConstant('DescendingText') ? 'Descending' : 'None';\n target.innerHTML = directionTxt;\n this.setSortedCols(field, direction);\n }\n };\n ResponsiveDialogRenderer.prototype.resetSortButtons = function (target) {\n var buttons = [].slice.call(this.customColumnDiv.getElementsByClassName('e-ressortbutton'));\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[parseInt(i.toString(), 10)] !== target) {\n buttons[parseInt(i.toString(), 10)].innerHTML = 'None';\n }\n }\n };\n ResponsiveDialogRenderer.prototype.setSortedCols = function (field, direction) {\n var fields = this.getCurrentSortedFields();\n var index = fields.indexOf(field);\n if (this.parent.allowMultiSorting && index > -1) {\n this.sortedCols.splice(index, 1);\n this.sortPredicate.splice(index, 1);\n }\n this.isSortApplied = true;\n if (direction !== 'None') {\n this.sortedCols.push(field);\n this.sortPredicate.push({ field: field, direction: direction });\n }\n };\n ResponsiveDialogRenderer.prototype.getCurrentSortedFields = function () {\n var fields = [];\n for (var i = 0; i < this.sortedCols.length; i++) {\n fields.push(this.sortedCols[parseInt(i.toString(), 10)]);\n }\n return fields;\n };\n ResponsiveDialogRenderer.prototype.customFilterColumnClickHandler = function (e) {\n if (this.action !== ResponsiveDialogAction.isFilter) {\n return;\n }\n var gObj = this.parent;\n var target = e.target;\n if (gObj.filterSettings.type !== 'FilterBar') {\n if (target.classList.contains('e-responsivecoldiv') || target.parentElement.classList.contains('e-responsivecoldiv')) {\n var field = target.getAttribute('data-e-mappingname');\n if (!field) {\n field = target.parentElement.getAttribute('data-e-mappingname');\n }\n if (field) {\n var col = gObj.getColumnByField(field);\n this.isRowResponsive = true;\n this.showResponsiveDialog(col);\n }\n }\n else if (target.classList.contains('e-filterset') || target.parentElement.classList.contains('e-filtersetdiv')) {\n var colDiv = parentsUntil(target, 'e-responsivecoldiv');\n if (colDiv) {\n var field = colDiv.getAttribute('data-e-mappingname');\n var col = gObj.getColumnByField(field);\n if (col.filter.type === 'Menu' || (!col.filter.type && gObj.filterSettings.type === 'Menu')) {\n this.isDialogClose = true;\n }\n this.parent.filterModule.filterModule.clearCustomFilter(col);\n this.removeCustomDlgFilterEle(target);\n }\n }\n }\n };\n /**\n * Function to show the responsive dialog\n *\n * @param {Column} col - specifies the column\n * @returns {void}\n */\n ResponsiveDialogRenderer.prototype.showResponsiveDialog = function (col) {\n if (this.isCustomDialog && this.action === ResponsiveDialogAction.isFilter && !this.isRowResponsive) {\n this.renderCustomFilterDialog();\n }\n else {\n this.filteredCol = col;\n this.renderResponsiveDialog(col);\n if (this.parent.enableAdaptiveUI && col) {\n this.parent.filterModule.setFilterModel(col);\n this.parent.filterModule.filterModule.openDialog(this.parent.filterModule.createOptions(col, undefined));\n }\n if (this.action === ResponsiveDialogAction.isSort) {\n var args = {\n cancel: false, dialogObj: this.customResponsiveDlg, requestType: 'beforeOpenAptiveSortDialog'\n };\n this.parent.trigger(beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n }\n this.customResponsiveDlg.show(true);\n this.customResponsiveDlg.element.style.maxHeight = '100%';\n this.setTopToChildDialog(this.customResponsiveDlg.element);\n }\n };\n ResponsiveDialogRenderer.prototype.setTopToChildDialog = function (dialogEle) {\n var child = dialogEle.querySelector('.e-dialog');\n if (child) {\n var top_1 = dialogEle.querySelector('.e-dlg-header-content').getBoundingClientRect().height;\n child.style.top = top_1 + 'px';\n }\n };\n ResponsiveDialogRenderer.prototype.renderCustomFilterDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'customfilter',\n className: this.parent.cssClass ?\n 'e-customfilterdiv e-responsive-dialog ' + this.parent.cssClass : 'e-customfilterdiv e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customFilterDlg = this.getDialogOptions(col, true);\n var args = {\n cancel: false, dialogObj: this.customFilterDlg, requestType: 'beforeOpenAptiveFilterDialog'\n };\n this.parent.trigger(beforeOpenAdaptiveDialog, args);\n if (args.cancel) {\n return;\n }\n this.customFilterDlg.appendTo(outerDiv);\n this.customFilterDlg.show(true);\n this.customFilterDlg.element.style.maxHeight = '100%';\n };\n ResponsiveDialogRenderer.prototype.getDialogOptions = function (col, isCustomFilter, id) {\n var options = new Dialog({\n isModal: true,\n showCloseIcon: true,\n closeOnEscape: false,\n locale: this.parent.locale,\n target: this.parent.adaptiveDlgTarget ? this.parent.adaptiveDlgTarget : document.body,\n visible: false,\n enableRtl: this.parent.enableRtl,\n content: this.renderResponsiveContent(col),\n open: this.dialogOpen.bind(this),\n created: this.dialogCreated.bind(this),\n close: this.beforeDialogClose.bind(this),\n width: '100%',\n height: '100%',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n options[\"\" + isStringTemplate] = true;\n if (isCustomFilter) {\n options.header = this.renderResponsiveHeader(col, undefined, true);\n options.cssClass = 'e-customfilter';\n }\n else {\n options.header = this.renderResponsiveHeader(col);\n options.cssClass = this.parent.rowRenderingMode === 'Vertical' && this.action === ResponsiveDialogAction.isFilter\n ? 'e-res' + id + ' e-row-responsive-filter' : 'e-res' + id;\n }\n return options;\n };\n ResponsiveDialogRenderer.prototype.renderResponsiveDialog = function (col) {\n var gObj = this.parent;\n if (this.action === ResponsiveDialogAction.isFilter && gObj.filterSettings.type === 'FilterBar') {\n return;\n }\n var id = this.action === ResponsiveDialogAction.isFilter ? 'filter' : 'sort';\n var outerDiv = this.parent.createElement('div', {\n id: gObj.element.id + 'responsive' + id,\n className: this.parent.cssClass ?\n 'e-res' + id + 'div e-responsive-dialog ' + this.parent.cssClass : 'e-res' + id + 'div e-responsive-dialog'\n });\n this.parent.element.appendChild(outerDiv);\n this.customResponsiveDlg = this.getDialogOptions(col, false, id);\n this.customResponsiveDlg.appendTo(outerDiv);\n };\n ResponsiveDialogRenderer.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n ResponsiveDialogRenderer.prototype.dialogOpen = function () {\n if (this.action === ResponsiveDialogAction.isSort && this.parent.allowMultiSorting) {\n for (var i = 0; i < this.parent.sortSettings.columns.length; i++) {\n this.sortedCols.push(this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field);\n var sortField = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field;\n var sortDirection = this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction;\n this.sortPredicate.push({ field: sortField, direction: sortDirection });\n }\n }\n };\n ResponsiveDialogRenderer.prototype.beforeDialogClose = function (args) {\n this.isDialogClose = args.element && !args.element.querySelector('.e-xl-customfilterdiv')\n && args.element.classList.contains('e-resfilterdiv');\n if (this.action === ResponsiveDialogAction.isFilter) {\n if (args.element.classList.contains('e-resfilterdiv')) {\n this.parent.filterModule.filterModule.closeResponsiveDialog(this.isCustomDlgRender);\n }\n else if (args.element.classList.contains('e-customfilterdiv')) {\n this.closeCustomFilter();\n }\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.closeCustomDialog();\n }\n this.parent.off(enterKeyHandler, this.keyHandler);\n };\n ResponsiveDialogRenderer.prototype.sortColumn = function () {\n if (!this.isSortApplied) {\n this.closeCustomDialog();\n return;\n }\n if (this.sortPredicate.length) {\n this.parent.setProperties({ sortSettings: { columns: [] } }, true);\n }\n for (var i = 0; i < this.sortPredicate.length; i++) {\n this.parent.sortColumn(this.sortPredicate[parseInt(i.toString(), 10)].field, this.sortPredicate[parseInt(i.toString(), 10)].direction, this.parent.allowMultiSorting);\n }\n if (!this.sortPredicate.length) {\n this.parent.clearSorting();\n }\n this.closeCustomDialog();\n };\n ResponsiveDialogRenderer.prototype.getHeaderTitle = function (args, col) {\n var gObj = this.parent;\n var title;\n if (this.action === ResponsiveDialogAction.isEdit) {\n title = gObj.localeObj.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else if (this.action === ResponsiveDialogAction.isAdd) {\n title = gObj.localeObj.getConstant('AddFormTitle');\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n title = col ? col.headerText || col.field : gObj.localeObj.getConstant('FilterButton');\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n title = gObj.localeObj.getConstant('Sort');\n }\n return title;\n };\n ResponsiveDialogRenderer.prototype.getDialogName = function (action) {\n var name;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n name = 'dialogEdit_wrapper_title';\n }\n else if (action === ResponsiveDialogAction.isFilter) {\n name = 'responsive_filter_dialog_wrapper';\n }\n return name;\n };\n ResponsiveDialogRenderer.prototype.getButtonText = function (action) {\n var text;\n if (action === ResponsiveDialogAction.isAdd || action === ResponsiveDialogAction.isEdit) {\n text = 'Save';\n }\n else if (action === ResponsiveDialogAction.isFilter || this.action === ResponsiveDialogAction.isSort) {\n text = 'OKButton';\n }\n return text;\n };\n /**\n * Function to render the responsive header\n *\n * @param {Column} col - specifies the column\n * @param {ResponsiveDialogArgs} args - specifies the responsive dialog arguments\n * @param {boolean} isCustomFilter - specifies whether it is custom filter or not\n * @returns {HTMLElement | string} returns the html element or string\n */\n ResponsiveDialogRenderer.prototype.renderResponsiveHeader = function (col, args, isCustomFilter) {\n var _this = this;\n var gObj = this.parent;\n gObj.on(enterKeyHandler, this.keyHandler, this);\n var id = gObj.element.id + this.getDialogName(this.action);\n var header = gObj.createElement('div', { className: 'e-res-custom-element' });\n var titleDiv = gObj.createElement('div', { className: 'e-dlg-custom-header', id: id });\n titleDiv.innerHTML = this.getHeaderTitle(args, col);\n header.appendChild(titleDiv);\n var saveBtn = gObj.createElement('button');\n if (!isCustomFilter) {\n this.saveBtn = new Button({\n cssClass: this.parent.cssClass ?\n 'e-primary e-flat e-res-apply-btn' + ' ' + this.parent.cssClass : 'e-primary e-flat e-res-apply-btn'\n });\n saveBtn.innerHTML = gObj.localeObj.getConstant(this.getButtonText(this.action));\n this.saveBtn.appendTo(saveBtn);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n saveBtn.onclick = function (e) {\n _this.dialogHdrBtnClickHandler();\n };\n }\n var isSort = this.action === ResponsiveDialogAction.isSort;\n var isFilter = this.action === ResponsiveDialogAction.isFilter;\n if (isFilter || isSort) {\n var id_1 = isSort ? 'sort' : 'filter';\n var clearBtn = gObj.createElement('button');\n this.filterClearBtn = new Button({\n cssClass: this.parent.cssClass ? 'e-primary e-flat e-res-' + id_1 + '-clear-btn' + ' ' + this.parent.cssClass\n : 'e-primary e-flat e-res-' + id_1 + '-clear-btn'\n });\n if (isFilter) {\n var span = gObj.createElement('span', { className: 'e-btn-icon e-icon-filter-clear e-icons' });\n clearBtn.appendChild(span);\n }\n else {\n clearBtn.innerHTML = gObj.localeObj.getConstant('Clear');\n }\n header.appendChild(clearBtn);\n this.filterClearBtn.appendTo(clearBtn);\n clearBtn.onclick = function (e) {\n if ((parentsUntil(e.target, 'e-customfilter'))) {\n _this.parent.filterModule.clearFiltering();\n _this.removeCustomDlgFilterEle();\n }\n else {\n if (isFilter) {\n _this.filterClear();\n }\n else {\n _this.resetSortButtons();\n _this.sortedCols = [];\n _this.sortPredicate = [];\n _this.isSortApplied = true;\n }\n }\n };\n header.appendChild(clearBtn);\n }\n if (!isCustomFilter) {\n header.appendChild(saveBtn);\n }\n return header;\n };\n ResponsiveDialogRenderer.prototype.filterClear = function () {\n this.parent.filterModule.filterModule.clearCustomFilter(this.filteredCol);\n this.parent.filterModule.filterModule.closeResponsiveDialog();\n };\n ResponsiveDialogRenderer.prototype.dialogHdrBtnClickHandler = function () {\n if (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd) {\n this.parent.endEdit();\n }\n else if (this.action === ResponsiveDialogAction.isFilter) {\n this.parent.filterModule.filterModule.applyCustomFilter({ col: this.filteredCol, isCustomFilter: this.isCustomDlgRender });\n }\n else if (this.action === ResponsiveDialogAction.isSort) {\n this.sortColumn();\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomDialog = function () {\n if (this.isCustomDlgRender) {\n var mainfilterdiv = this.customResponsiveDlg.element.querySelector('.e-mainfilterdiv');\n remove(mainfilterdiv);\n return;\n }\n this.isRowResponsive = false;\n this.isCustomDlgRender = false;\n this.destroyCustomFilterDialog();\n };\n ResponsiveDialogRenderer.prototype.destroyCustomFilterDialog = function () {\n if (!this.customResponsiveDlg) {\n return;\n }\n var elem = document.getElementById(this.customResponsiveDlg.element.id);\n if (this.customResponsiveDlg && !this.customResponsiveDlg.isDestroyed && elem) {\n this.customResponsiveDlg.destroy();\n remove(elem);\n }\n this.closeCustomFilter();\n if (this.action === ResponsiveDialogAction.isSort) {\n this.sortPredicate = [];\n this.sortedCols = [];\n this.isSortApplied = false;\n }\n };\n ResponsiveDialogRenderer.prototype.closeCustomFilter = function () {\n if (!this.isDialogClose && this.customFilterDlg) {\n var customEle = document.getElementById(this.customFilterDlg.element.id);\n if (this.customFilterDlg && !this.customFilterDlg.isDestroyed && customEle) {\n this.customFilterDlg.destroy();\n remove(customEle);\n }\n }\n this.isCustomDialog = false;\n this.isDialogClose = false;\n };\n ResponsiveDialogRenderer.prototype.removeCustomDlgFilterEle = function (target) {\n if (target) {\n if (target.parentElement.classList.contains('e-filtersetdiv')) {\n remove(target.parentElement);\n }\n else {\n remove(target);\n }\n }\n else {\n var child = this.customColumnDiv.children;\n for (var i = 0; i < child.length; i++) {\n target = child[parseInt(i.toString(), 10)].querySelector('.e-filtersetdiv');\n if (target) {\n remove(target);\n i--;\n }\n }\n }\n };\n ResponsiveDialogRenderer.prototype.keyHandler = function (e) {\n if (e.keyCode === 13 && ((this.action === ResponsiveDialogAction.isFilter\n && e.target.classList.contains('e-searchinput'))\n || (this.action === ResponsiveDialogAction.isEdit || this.action === ResponsiveDialogAction.isAdd))) {\n this.dialogHdrBtnClickHandler();\n }\n };\n ResponsiveDialogRenderer.prototype.editComplate = function (args) {\n if (args.requestType === 'save' || args.requestType === 'cancel') {\n this.parent.off(enterKeyHandler, this.keyHandler);\n }\n };\n ResponsiveDialogRenderer.prototype.removeEventListener = function () {\n if (this.customColumnDiv) {\n EventHandler.remove(this.customColumnDiv, 'click', this.customFilterColumnClickHandler);\n }\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.parent.removeEventListener(actionComplete, this.onActionCompleteFn);\n };\n return ResponsiveDialogRenderer;\n}());\n\n/**\n * ServiceLocator\n *\n * @hidden\n */\nvar ServiceLocator = /** @__PURE__ @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n ServiceLocator.prototype.registerAdaptiveService = function (type, isAdaptiveUI, action) {\n if (isAdaptiveUI) {\n type.responsiveDialogRenderer = new ResponsiveDialogRenderer(type.parent, type.serviceLocator);\n type.responsiveDialogRenderer.action = action;\n }\n else {\n if (type.responsiveDialogRenderer) {\n type.responsiveDialogRenderer.removeEventListener();\n type.responsiveDialogRenderer = undefined;\n }\n }\n };\n return ServiceLocator;\n}());\n\n/**\n * RendererFactory\n *\n * @hidden\n */\nvar RendererFactory = /** @__PURE__ @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line no-throw-literal\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\n\n/**\n * ColumnWidthService\n *\n * @hidden\n */\nvar ColumnWidthService = /** @__PURE__ @class */ (function () {\n function ColumnWidthService(parent) {\n this.parent = parent;\n }\n ColumnWidthService.prototype.setWidthToColumns = function () {\n var i = 0;\n var indexes = this.parent.getColumnIndexesInView();\n var wFlag = true;\n var totalColumnsWidth = 0;\n if (this.parent.allowGrouping) {\n for (var len = this.parent.groupSettings.columns.length; i < len; i++) {\n if (this.parent.enableColumnVirtualization && indexes.indexOf(i) === -1) {\n wFlag = false;\n continue;\n }\n this.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), i);\n i++;\n }\n var columns = this.parent.getColumns();\n for (var j = 0; j < columns.length; j++) {\n this.setColumnWidth(columns[parseInt(j.toString(), 10)], wFlag && this.parent.enableColumnVirtualization ? undefined : j + i);\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n this.setColumnWidth(new Column({ width: '30px' }), columns.length);\n }\n totalColumnsWidth = this.getTableWidth(this.parent.getColumns());\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(totalColumnsWidth);\n }\n };\n ColumnWidthService.prototype.setMinwidthBycalculation = function (tWidth) {\n var difference = 0;\n var collection = this.parent.getColumns().filter(function (a) {\n return isNullOrUndefined(a.width) || a.width === 'auto';\n });\n if (collection.length) {\n if (!isNullOrUndefined(this.parent.width) && this.parent.width !== 'auto' &&\n typeof (this.parent.width) === 'string' && this.parent.width.indexOf('%') === -1) {\n difference = (typeof this.parent.width === 'string' ? parseInt(this.parent.width, 10) : this.parent.width) - tWidth;\n }\n else {\n difference = this.parent.element.getBoundingClientRect().width - tWidth;\n }\n var tmWidth = 0;\n for (var _i = 0, collection_1 = collection; _i < collection_1.length; _i++) {\n var cols = collection_1[_i];\n tmWidth += !isNullOrUndefined(cols.minWidth) ?\n ((typeof cols.minWidth === 'string' ? parseInt(cols.minWidth, 10) : cols.minWidth)) : 0;\n }\n for (var i = 0; i < collection.length; i++) {\n if (tWidth === 0 && this.parent.allowResizing && this.isWidthUndefined() && (i !== collection.length - 1)) {\n this.setUndefinedColumnWidth(collection);\n }\n var index = this.parent.getColumnIndexByField(collection[parseInt(i.toString(), 10)].field) + this.parent.getIndentCount();\n if (tWidth !== 0 && difference < tmWidth) {\n this.setWidth(collection[parseInt(i.toString(), 10)].minWidth, index);\n }\n else if (tWidth !== 0 && difference > tmWidth) {\n this.setWidth('', index, true);\n }\n }\n }\n };\n ColumnWidthService.prototype.setUndefinedColumnWidth = function (collection) {\n for (var k = 0; k < collection.length; k++) {\n if (k !== collection.length - 1) {\n collection[parseInt(k.toString(), 10)].width = 200;\n this.setWidth(200, this.parent.getColumnIndexByField(collection[parseInt(k.toString(), 10)].field));\n }\n }\n };\n ColumnWidthService.prototype.setColumnWidth = function (column, index, module) {\n if (this.parent.getColumns().length < 1) {\n return;\n }\n var columnIndex = isNullOrUndefined(index) ? this.parent.getNormalizedColumnIndex(column.uid) : index;\n var cWidth = this.getWidth(column);\n var tgridWidth = this.getTableWidth(this.parent.getColumns());\n if (cWidth !== null) {\n this.setWidth(cWidth, columnIndex);\n if (this.parent.width !== 'auto' && this.parent.width.toString().indexOf('%') === -1) {\n this.setMinwidthBycalculation(tgridWidth);\n }\n if ((this.parent.allowResizing && module === 'resize') || (this.parent.getFrozenColumns() && this.parent.allowResizing)) {\n this.setWidthToTable();\n }\n this.parent.notify(columnWidthChanged, { index: columnIndex, width: cWidth, column: column, module: module });\n }\n };\n ColumnWidthService.prototype.setWidth = function (width, index, clear) {\n if (this.parent.groupSettings.columns.length > index && ispercentageWidth(this.parent)) {\n var elementWidth = this.parent.element.offsetWidth;\n width = (30 / elementWidth * 100).toFixed(1) + '%';\n }\n var header = this.parent.getHeaderTable();\n var content$$1 = this.parent.getContentTable();\n var fWidth = formatUnit(width);\n var headerCol;\n var frzCols = this.parent.getFrozenColumns();\n var isDraggable = this.parent.isRowDragable();\n frzCols = frzCols && isDraggable ? frzCols + 1 : frzCols;\n var mHdr = this.parent.getHeaderContent().querySelector('.' + movableHeader);\n var mCont = this.parent.getContent().querySelector('.' + movableContent);\n var freezeLeft = this.parent.getFrozenLeftColumnsCount();\n var freezeRight = this.parent.getFrozenRightColumnsCount();\n var movableCount = this.parent.getMovableColumnsCount();\n var isColFrozen = freezeLeft !== 0 || freezeRight !== 0;\n if (frzCols && index >= frzCols) {\n if (!mHdr || !mHdr.querySelector(colGroup)) {\n return;\n }\n headerCol = mHdr\n .querySelector(colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mHdr.scrollLeft > 0) {\n var colGroup$$1 = mHdr.querySelector(colGroup);\n headerCol = colGroup$$1.children[(colGroup$$1.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n index = isDraggable ? index - 1 : index;\n target = index < freezeLeft ? header : mHdr;\n }\n else if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? header : mHdr;\n }\n else if (freezeLeft && freezeRight) {\n index = isDraggable ? index - 1 : index;\n var frHdr = this.parent.getFrozenRightHeader();\n target = index < freezeLeft ? header : index < (freezeLeft + movableCount) ? mHdr : frHdr;\n }\n headerCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n if (!headerCol) {\n return;\n }\n }\n else {\n headerCol = header.querySelector(colGroup).children[parseInt(index.toString(), 10)];\n }\n if (headerCol && !clear) {\n headerCol.style.width = fWidth;\n }\n else if (headerCol && clear) {\n headerCol.style.width = '';\n }\n var contentCol;\n if (frzCols && index >= frzCols) {\n contentCol = this.parent.getContent().querySelector('.' + movableContent)\n .querySelector(colGroup + ':not(.e-masked-colgroup)').children[index - frzCols];\n }\n else if (this.parent.enableColumnVirtualization && frzCols && this.parent.contentModule.isXaxis()\n && mCont.scrollLeft > 0) {\n var colGroup$$1 = this.parent.getContent().querySelector('.' + movableContent)\n .querySelector(colGroup);\n contentCol = colGroup$$1.children[(colGroup$$1.children.length - 1) - index];\n }\n else if (isColFrozen) {\n var target = void 0;\n if (freezeLeft && !freezeRight) {\n target = index < freezeLeft ? content$$1 : mCont;\n }\n if (!freezeLeft && freezeRight) {\n target = index >= movableCount ? content$$1 : mCont;\n }\n if (freezeLeft && freezeRight) {\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n target = index < freezeLeft ? content$$1 : index < (freezeLeft + movableCount) ? mCont : frCont;\n }\n contentCol = this.getColumnLevelFrozenColgroup(index, freezeLeft, movableCount, target);\n }\n else {\n contentCol = content$$1.querySelector(colGroup).children[parseInt(index.toString(), 10)];\n }\n if (contentCol && !clear) {\n if (contentCol.style.width !== headerCol.style.width && this.parent.isFrozenGrid() && this.parent['reorderModule'] &&\n this.parent['reorderModule'].element && this.parent['reorderModule'].destElement) {\n contentCol.style.display = this.parent.getColumnByIndex(index).visible ? '' : 'none';\n }\n contentCol.style.width = fWidth;\n }\n else if (contentCol && clear) {\n contentCol.style.width = '';\n }\n if (!this.parent.enableColumnVirtualization) {\n var edit = this.parent.element.querySelectorAll('.e-table.e-inline-edit');\n var editTableCol = [];\n for (var i = 0; i < edit.length; i++) {\n if (parentsUntil(edit[parseInt(i.toString(), 10)], 'e-grid').id === this.parent.element.id) {\n for (var j = 0; j < edit[parseInt(i.toString(), 10)].querySelector('colgroup').children.length; j++) {\n editTableCol.push(edit[parseInt(i.toString(), 10)].querySelector('colgroup').children[parseInt(j.toString(), 10)]);\n }\n }\n }\n if (edit.length && editTableCol.length) {\n editTableCol[parseInt(index.toString(), 10)].style.width = fWidth;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.refreshFrozenScrollbar();\n }\n };\n ColumnWidthService.prototype.getColumnLevelFrozenColgroup = function (index, left, movable, ele) {\n if (!ele || !ele.querySelector(colGroup)) {\n return null;\n }\n var columns = this.parent.getColumns();\n var isDrag = this.parent.isRowDragable();\n var frzMode = this.parent.getFrozenMode();\n var headerCol;\n var colGroup$$1 = [].slice.call(ele.querySelector(colGroup + ':not(.e-masked-colgroup)').children);\n if (frzMode === 'Right' && isDrag && index === (movable + this.parent.getFrozenRightColumnsCount())) {\n headerCol = colGroup$$1[colGroup$$1.length - 1];\n }\n else if (isDrag && index === -1) {\n headerCol = colGroup$$1[0];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Left') {\n headerCol = colGroup$$1[isDrag ? (index + 1) : index];\n }\n else if (columns[parseInt(index.toString(), 10)].freeze === 'Right') {\n headerCol = colGroup$$1[index - (left + movable)];\n }\n else {\n headerCol = colGroup$$1[index - left];\n }\n return headerCol;\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnWidthService.prototype.refreshFrozenScrollbar = function () {\n var args = { cancel: false };\n this.parent.notify(preventFrozenScrollRefresh, args);\n if (args.cancel) {\n return;\n }\n var scrollWidth = getScrollBarWidth();\n var frozenScrollbar = this.parent.element.querySelector('.e-frozenscrollbar');\n var movableScrollbar = this.parent.element.querySelector('.e-movablescrollbar');\n var frozencontent = this.parent.getContent().querySelector('.' + frozenContent);\n var movableContent$$1 = this.parent.getContent().querySelector('.' + movableContent);\n var frozenWidth = frozencontent.firstElementChild.getBoundingClientRect().width;\n var movableWidth = movableContent$$1.firstElementChild.getBoundingClientRect().width;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenWidth = frozenWidth + scrollWidth;\n }\n frozenScrollbar.style.width = frozenWidth + 'px';\n if (this.parent.getFrozenMode() === leftRight) {\n var frozenRightScrollbar = this.parent.element.querySelector('.e-frozen-right-scrollbar');\n var frozenRightWidth = this.parent.getContent().querySelector('.e-frozen-right-content')\n .firstElementChild.getBoundingClientRect().width;\n if (this.parent.height !== 'auto') {\n frozenRightWidth = frozenRightWidth + scrollWidth;\n }\n frozenRightScrollbar.style.width = frozenRightWidth + 'px';\n }\n else {\n if (this.parent.enableColumnVirtualization) {\n var placeHolder = this.parent.getMovableVirtualContent().querySelector('.e-virtualtrack');\n if (placeHolder) {\n movableWidth = placeHolder.scrollWidth;\n }\n }\n if (this.parent.getFrozenMode() !== 'Right' && this.parent.height !== 'auto') {\n movableWidth = movableWidth + scrollWidth;\n }\n }\n movableScrollbar.firstElementChild.style.width = movableWidth + 'px';\n };\n ColumnWidthService.prototype.getSiblingsHeight = function (element) {\n var previous = this.getHeightFromDirection(element, 'previous');\n var next = this.getHeightFromDirection(element, 'next');\n return previous + next;\n };\n ColumnWidthService.prototype.getHeightFromDirection = function (element, direction) {\n var sibling = element[direction + 'ElementSibling'];\n var result = 0;\n var classList$$1 = [gridHeader, gridFooter, 'e-groupdroparea', 'e-gridpager', 'e-toolbar', 'e-temp-toolbar'];\n while (sibling) {\n if (classList$$1.some(function (value) { return sibling.classList.contains(value); })) {\n result += sibling.offsetHeight;\n }\n sibling = sibling[direction + 'ElementSibling'];\n }\n return result;\n };\n ColumnWidthService.prototype.isWidthUndefined = function () {\n var isWidUndefCount = this.parent.getColumns().filter(function (col) {\n return isNullOrUndefined(col.width) && isNullOrUndefined(col.minWidth);\n }).length;\n return (this.parent.getColumns().length === isWidUndefCount);\n };\n ColumnWidthService.prototype.getWidth = function (column) {\n if (isNullOrUndefined(column.width) && this.parent.allowResizing\n && isNullOrUndefined(column.minWidth) && !this.isWidthUndefined()) {\n column.width = 200;\n }\n if (this.parent.isFrozenGrid() && isNullOrUndefined(column.width) &&\n (column.getFreezeTableName() === frozenLeft || column.getFreezeTableName() === frozenRight)) {\n column.width = 200;\n }\n if (!column.width) {\n return null;\n }\n var width = parseInt(column.width.toString(), 10);\n if (column.minWidth && width < parseInt(column.minWidth.toString(), 10)) {\n return column.minWidth;\n }\n else if ((column.maxWidth && width > parseInt(column.maxWidth.toString(), 10))) {\n return column.maxWidth;\n }\n else {\n return column.width;\n }\n };\n ColumnWidthService.prototype.getTableWidth = function (columns) {\n var tWidth = 0;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n var cWidth = this.getWidth(column);\n if (column.width === 'auto') {\n cWidth = 0;\n }\n if (column.visible !== false && cWidth !== null) {\n tWidth += parseInt(cWidth.toString(), 10);\n }\n }\n return tWidth;\n };\n ColumnWidthService.prototype.calcMovableOrFreezeColWidth = function (tableType) {\n var columns = this.parent.getColumns().slice();\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (tableType === 'movable') {\n if (right) {\n columns.splice(left + movable, columns.length);\n }\n if (left) {\n columns.splice(0, left);\n }\n }\n else if (tableType === 'freeze-left') {\n columns.splice(left, columns.length);\n }\n else if (tableType === 'freeze-right') {\n columns.splice(0, left + movable);\n }\n return formatUnit(this.getTableWidth(columns));\n };\n ColumnWidthService.prototype.setWidthToFrozenRightTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-right');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n var headerTbl = this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .querySelector('.' + table + ':not(.e-masked-table)');\n var cntTbl = this.parent.getContent().querySelector('.e-frozen-right-content')\n .querySelector('.' + table + ':not(.e-masked-table)');\n headerTbl.style.width = freezeWidth;\n cntTbl.style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToFrozenLeftTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze-left');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.getHeaderTable().style.width = freezeWidth;\n this.parent.getContentTable().style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableTable = function () {\n var movableWidth = '';\n var isColUndefined = this.parent.getColumns().filter(function (a) { return isNullOrUndefined(a.width); }).length >= 1;\n var isWidthAuto = this.parent.getColumns().filter(function (a) { return (a.width === 'auto'); }).length >= 1;\n var movableHeader$$1 = this.parent.getHeaderContent().querySelector('.' + movableHeader);\n var movableContent$$1 = this.parent.getContent().querySelector('.' + movableContent);\n if (typeof this.parent.width === 'number' && !isColUndefined && !isWidthAuto && !this.parent.resizeModule.resizeProcess) {\n movableWidth = formatUnit(this.parent.width - parseInt(this.calcMovableOrFreezeColWidth('freeze').split('px')[0], 10) - 5);\n }\n else if (!isColUndefined && !isWidthAuto) {\n movableWidth = this.calcMovableOrFreezeColWidth('movable');\n }\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n if (movableHeader$$1.firstElementChild) {\n if (movableHeader$$1.firstElementChild.classList.contains('e-masked-table')) {\n movableHeader$$1.childNodes[1].style.width = movableWidth;\n }\n else {\n movableHeader$$1.firstElementChild.style.width = movableWidth;\n }\n }\n if (movableContent$$1.firstElementChild.classList.contains('e-masked-table')) {\n movableContent$$1.childNodes[1].style.width = movableWidth;\n }\n else {\n movableContent$$1.firstElementChild.style.width = movableWidth;\n }\n };\n ColumnWidthService.prototype.setWidthToFrozenEditTable = function () {\n var freezeWidth = this.calcMovableOrFreezeColWidth('freeze');\n freezeWidth = this.isAutoResize() ? '100%' : freezeWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[0].style.width = freezeWidth;\n };\n ColumnWidthService.prototype.setWidthToMovableEditTable = function () {\n var movableWidth = this.calcMovableOrFreezeColWidth('movable');\n movableWidth = this.isAutoResize() ? '100%' : movableWidth;\n this.parent.element.querySelectorAll('.e-table.e-inline-edit')[1].style.width = movableWidth;\n };\n ColumnWidthService.prototype.setWidthToTable = function () {\n var tWidth = formatUnit(this.getTableWidth(this.parent.getColumns()));\n if (this.parent.isFrozenGrid()) {\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n this.setWidthToFrozenLeftTable();\n }\n this.setWidthToMovableTable();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.setWidthToFrozenRightTable();\n }\n }\n else {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.setColumnWidth(new Column({ width: '30px' }));\n }\n tWidth = this.isAutoResize() ? '100%' : tWidth;\n this.parent.getHeaderTable().style.width = tWidth;\n this.parent.getContentTable().style.width = tWidth;\n }\n var edit = this.parent.element.querySelector('.e-table.e-inline-edit');\n if (edit && this.parent.getFrozenColumns()) {\n this.setWidthToFrozenEditTable();\n this.setWidthToMovableEditTable();\n }\n else if (edit) {\n edit.style.width = tWidth;\n }\n };\n ColumnWidthService.prototype.isAutoResize = function () {\n return this.parent.allowResizing && this.parent.resizeSettings.mode === 'Auto';\n };\n return ColumnWidthService;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * FocusStrategy class\n *\n * @hidden\n */\nvar FocusStrategy = /** @__PURE__ @class */ (function () {\n function FocusStrategy(parent) {\n this.currentInfo = {};\n this.oneTime = true;\n this.swap = {};\n /** @hidden */\n this.isInfiniteScroll = false;\n this.forget = false;\n this.skipFocus = true;\n this.focusByClick = false;\n this.firstHeaderCellClick = false;\n this.prevIndexes = {};\n this.refMatrix = this.refreshMatrix(true);\n this.actions = ['downArrow', 'upArrow'];\n this.isVirtualScroll = false;\n this.parent = parent;\n this.rowModelGen = new RowModelGenerator(this.parent);\n this.addEventListener();\n }\n FocusStrategy.prototype.focusCheck = function (e) {\n var target = e.target;\n this.focusByClick = true;\n this.firstHeaderCellClick = true;\n this.skipFocus = target.classList.contains('e-grid');\n };\n FocusStrategy.prototype.onFocus = function (e) {\n if (this.parent.isDestroyed || Browser.isDevice || this.parent.enableVirtualization\n || this.parent.element.querySelector('.e-masked-table') || (!this.parent.isInitialLoad && e\n && e.target === this.parent.element && this.parent.element.querySelector('.e-spin-show'))) {\n return;\n }\n this.setActive(!this.parent.enableHeaderFocus && this.parent.frozenRows === 0, this.parent.isFrozenGrid());\n if (!this.parent.enableHeaderFocus && !this.parent.getCurrentViewRecords().length && ((this.parent.editSettings.mode !== 'Batch')\n || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule && !this.parent.editModule.getBatchChanges()[addedRecords].length))) {\n this.getContent().matrix.\n generate(this.rowModelGen.generateRows({ rows: [new Row({ isDataRow: true })] }), this.getContent().selector, false);\n }\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n if (this.skipFocus && !(e && e.target === this.parent.element)) {\n this.focus(e);\n this.skipFocus = false;\n }\n };\n FocusStrategy.prototype.passiveFocus = function (e) {\n if (this.parent.isDestroyed) {\n return;\n }\n var firstHeaderCell = this.parent.getHeaderContent().querySelector('.e-headercell');\n if (e.target === firstHeaderCell && e.relatedTarget && !parentsUntil(e.relatedTarget, 'e-grid')\n && !this.firstHeaderCellClick) {\n this.currentInfo.element = e.target;\n this.currentInfo.elementToFocus = e.target;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n this.firstHeaderCellClick = false;\n if (e.target && e.target.classList.contains('e-detailcell')) {\n this.currentInfo.skipAction = false;\n addClass([this.currentInfo.element], ['e-focused', 'e-focus']);\n }\n };\n FocusStrategy.prototype.onBlur = function (e) {\n // The below boolean condition for gantt team focus fix.\n var isGantt = parentsUntil(e.target, 'e-gantt') && e.target.classList.contains('e-rowcell')\n && (!isNullOrUndefined(e.target.nextElementSibling)\n && e.target.nextElementSibling.classList.contains('e-rowcell')) ? true : false;\n if ((this.parent.isEdit || e && (!e.relatedTarget || closest(e.relatedTarget, '.e-grid'))\n && !(this.parent.element.classList.contains('e-childgrid') && !this.parent.element.matches(':focus-within')))\n && !(!isGantt && isNullOrUndefined(e.relatedTarget) && parseInt(e.target.getAttribute('data-colindex'), 10) === 0\n && parseInt(e.target.getAttribute('index'), 10) === 0) && !(!isGantt && isNullOrUndefined(e.relatedTarget)\n && !closest(document.activeElement, '.e-grid') && !isNullOrUndefined(e['sourceCapabilities']))) {\n return;\n }\n this.removeFocus();\n this.skipFocus = true;\n this.currentInfo.skipAction = false;\n this.setLastContentCellTabIndex();\n this.setFirstFocusableTabIndex();\n this.firstHeaderCellClick = false;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.setFirstFocusableTabIndex = function () {\n var gObj = this.parent;\n gObj.element.tabIndex = -1;\n if (gObj.allowGrouping && gObj.groupSettings.showDropArea) {\n var groupModule = gObj.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n groupModule.element.tabIndex = -1;\n focusableGroupedItems[0].tabIndex = 0;\n }\n else {\n groupModule.element.tabIndex = 0;\n }\n return;\n }\n if (gObj.toolbar || gObj.toolbarTemplate) {\n var toolbarElement = gObj.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0 && focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input')) {\n toolbarElement.tabIndex = -1;\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').tabIndex = 0;\n }\n else {\n toolbarElement.tabIndex = 0;\n }\n return;\n }\n if (gObj.getColumns().length) {\n var firstHeaderCell = gObj.getHeaderContent().querySelector('.e-headercell');\n firstHeaderCell.tabIndex = 0;\n if (this.parent.isFrozenGrid() && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === leftRight)) {\n this.setActive(false, true);\n }\n else {\n this.setActive(false);\n }\n if (!isNullOrUndefined(this.active)) {\n var firstHeaderCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstHeaderCellIndex[0]][firstHeaderCellIndex[1]] === 0) {\n firstHeaderCellIndex = findCellIndex(this.active.matrix.matrix, firstHeaderCellIndex, true);\n }\n this.active.matrix.current = firstHeaderCellIndex;\n }\n return;\n }\n };\n FocusStrategy.prototype.setLastContentCellTabIndex = function () {\n var contentTable = this.parent.getContentTable();\n if (contentTable.rows[contentTable.rows.length - 1]) {\n var lastCell = contentTable.rows[contentTable.rows.length - 1].lastElementChild;\n lastCell.tabIndex = 0;\n }\n };\n FocusStrategy.prototype.onClick = function (e, force) {\n if (parentsUntil(e.target, 'e-filterbarcell') && (parentsUntil(e.target, 'e-multiselect') ||\n e.target.classList.contains('e-input-group-icon'))) {\n return;\n }\n var isContent = !isNullOrUndefined(closest(e.target, '.' + gridContent));\n var isHeader = !isNullOrUndefined(closest(e.target, '.' + gridHeader));\n isContent = isContent && isHeader ? !isContent : isContent;\n var isFrozen = !isNullOrUndefined(closest(e.target, '.' + frozenContent)) ||\n !isNullOrUndefined(closest(e.target, '.' + frozenHeader));\n var isFrozenRight = false;\n if (this.parent.getFrozenMode() === leftRight) {\n isFrozenRight = !isNullOrUndefined(closest(e.target, '.e-frozen-right-content')) ||\n !isNullOrUndefined(closest(e.target, '.e-frozen-right-header'));\n isFrozen = isFrozen && !isFrozenRight;\n }\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + gridHeader)) ||\n e.target.classList.contains(content) ||\n !isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (!isContent && isNullOrUndefined(closest(e.target, '.' + gridHeader))) {\n this.clearOutline();\n return;\n }\n var beforeArgs = { cancel: false, byKey: false, byClick: !isNullOrUndefined(e.target), clickArgs: e };\n this.parent.notify(beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel || closest(e.target, '.e-inline-edit')) {\n return;\n }\n this.setActive(isContent, isFrozen, isFrozenRight);\n if (this.getContent()) {\n var returnVal = this.getContent().onClick(e, force);\n if (returnVal === false) {\n return;\n }\n if (this.parent.isFrozenGrid() && isHeader && e.target === this.parent.getHeaderContent().firstChild\n && this.active.matrix.current[0] === -1 && this.active.matrix.current[1] === this.active.matrix.columns) {\n this.active.matrix.current = [0, 0];\n }\n this.focus();\n }\n };\n FocusStrategy.prototype.onKeyPress = function (e) {\n var isFrozenGrid = this.parent.isFrozenGrid();\n if (this.parent.allowPaging) {\n var pagerElement = this.parent.pagerModule.pagerObj.element;\n var focusablePagerElements = this.parent.pagerModule.pagerObj.getFocusablePagerElements(pagerElement, []);\n if (this.parent.childGrid && this.allowToPaging(e) && focusablePagerElements.length) {\n focusablePagerElements[0].tabIndex = 0;\n }\n if (this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n if (e.action === 'shiftTab' && focusablePagerElements.length && focusablePagerElements[0] === e.target) {\n this.setActive(true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(lastHeaderCellIndex) ? lastHeaderCellIndex :\n this.findBatchEditCell(lastHeaderCellIndex, false) : lastHeaderCellIndex;\n e.preventDefault();\n this.focus(e);\n return;\n }\n if (!(e.action === 'tab' && this.parent.element.classList.contains('e-childgrid')\n && ((!this.parent.pageSettings.pageSizes && focusablePagerElements.length\n && focusablePagerElements[focusablePagerElements.length - 1] === e.target)\n || (this.parent.pagerModule.pagerObj.getDropDownPage() === e.target)))) {\n this.parent.pagerModule.pagerObj.changePagerFocus(e);\n return;\n }\n else {\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n }\n }\n if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && (e.keyCode === 38 || (e.shiftKey && e.keyCode === 9))) {\n e.preventDefault();\n this.focus(e);\n return;\n }\n else if (this.parent.pagerModule.pagerObj.element.tabIndex === 0 && e.keyCode === 9) {\n e.preventDefault();\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n if (this.parent.pagerModule.pagerObj.checkFirstPagerFocus()) {\n var lastRow = this.getContent().matrix.rows;\n var lastColumn = this.getContent().matrix.columns;\n this.getContent().matrix.current = [lastRow, lastColumn];\n }\n }\n if (this.skipOn(e)) {\n return;\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent') && !isFrozenGrid) {\n var rows = [].slice.call(this.parent.getContentTable().rows);\n var lastCell = rows[rows.length - 1].lastElementChild;\n if (e.target === lastCell) {\n this.setActive(true);\n this.setLastContentCellActive();\n }\n }\n if (e.action === 'shiftTab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (e.target === this.parent.element) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n if (parentsUntil(e.target, 'e-toolbar')) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n }\n else if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n return;\n }\n }\n var focusFirstHeaderCell = false;\n if (e.action === 'tab' && e.target && (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea'))) {\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea\n && (e.target === this.parent.element || e.target.classList.contains('e-groupdroparea'))) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length > 0) {\n e.preventDefault();\n focusableGroupedItems[0].focus();\n return;\n }\n if (!e.target.classList.contains('e-groupdroparea')) {\n e.preventDefault();\n groupModule.element.focus();\n return;\n }\n }\n if ((this.parent.toolbar || this.parent.toolbarTemplate) && (e.target === this.parent.element\n || parentsUntil(e.target, 'e-groupdroparea')\n || e.target.classList.contains('e-toolbar'))) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n if (focusableToolbarItems.length > 0) {\n e.preventDefault();\n focusableToolbarItems[0].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n return;\n }\n if (!e.target.classList.contains('e-toolbar')) {\n e.preventDefault();\n toolbarElement.focus();\n return;\n }\n }\n if (e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')) {\n focusFirstHeaderCell = true;\n }\n }\n if (focusFirstHeaderCell) {\n if (isFrozenGrid && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === leftRight)) {\n this.setActive(false, true);\n }\n else if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.setActive(true);\n }\n else {\n this.setActive(false);\n }\n this.active.matrix.current = [0, -1];\n }\n this.activeKey = e.action;\n var beforeArgs = { cancel: false, byKey: true, byClick: false, keyArgs: e };\n this.parent.notify(beforeCellFocused, beforeArgs);\n if (beforeArgs.cancel) {\n return;\n }\n var bValue = this.getContent().matrix.current;\n var prevActiveName = this.getActiveName();\n var prevBatchValue = this.active && this.active.matrix.current ?\n [this.active.matrix.current[0], this.active.matrix.current[1]] : undefined;\n this.currentInfo.outline = true;\n var swapInfo = this.getContent().jump(e.action, bValue);\n this.swap = swapInfo;\n if (swapInfo.swap && !(isFrozenGrid && this.parent.editSettings.mode === 'Batch'\n && (e.action === 'tab' || e.action === 'shiftTab'))) {\n this.setActive(!swapInfo.toHeader, swapInfo.toFrozen, swapInfo.toFrozenRight);\n this.getContent().matrix.current = this.getContent().getNextCurrent(bValue, swapInfo, this.active, e.action);\n this.prevIndexes = {};\n }\n this.setActiveByKey(e.action, this.getContent());\n var returnVal = isFrozenGrid && this.parent.editSettings.mode === 'Batch' && e.target && (e.action === 'tab'\n || e.action === 'shiftTab') && (parentsUntil(e.target, 'e-gridheader')\n || parentsUntil(e.target, 'e-gridcontent')) ? undefined\n : this.content.lastIdxCell ? false : this.getContent().onKeyPress(e);\n if (e.target && parentsUntil(e.target, 'e-gridheader')) {\n if (!isFrozenGrid) {\n if (e.action === 'tab' && bValue.toString() === this.active.matrix.current.toString()) {\n var nextHeaderCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, true);\n var lastHeaderCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastHeaderCellIndex[0]][lastHeaderCellIndex[1]] === 0) {\n lastHeaderCellIndex = findCellIndex(this.active.matrix.matrix, lastHeaderCellIndex, false);\n }\n if (this.active.matrix.current.toString() === lastHeaderCellIndex.toString()) {\n returnVal = true;\n this.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n this.active.matrix.current = this.parent.editSettings.mode === 'Batch' ?\n this.isValidBatchEditCell(firstContentCellIndex) ? firstContentCellIndex :\n this.findBatchEditCell(firstContentCellIndex, true) : firstContentCellIndex;\n }\n else if (this.active.matrix.current.toString() !== nextHeaderCellIndex.toString()) {\n this.active.matrix.current = nextHeaderCellIndex;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n var previousCellIndex = findCellIndex(this.active.matrix.matrix, this.active.matrix.current, false);\n if (previousCellIndex.toString() === this.active.matrix.current.toString()) {\n this.focusOutFromHeader(e);\n return;\n }\n if (this.active.matrix.current.toString() !== previousCellIndex.toString() && !returnVal) {\n returnVal = true;\n this.active.matrix.current = previousCellIndex;\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString() && !swapInfo.swap\n && !(this.parent.editSettings.mode === 'Batch' && !(this.getActiveName() === prevActiveName))) {\n this.focusOutFromHeader(e);\n return;\n }\n }\n }\n if (e.target && parentsUntil(e.target, 'e-gridcontent')) {\n if (!isFrozenGrid) {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.active.matrix.current = this.findBatchEditCell(prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n if (e.action === 'shiftTab' && bValue.toString() === this.active.matrix.current.toString()) {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length === this.parent.columns.length) {\n this.focusOutFromHeader(e);\n return;\n }\n var firstContentCellIndex = [0, 0];\n if (this.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(this.active.matrix.matrix, [0, 0], true);\n }\n if (!returnVal && (firstContentCellIndex.toString() === this.active.matrix.current.toString()\n || (this.parent.editSettings.mode === 'Batch'\n && prevBatchValue.toString() === this.active.matrix.current.toString()))) {\n returnVal = true;\n this.setActive(false);\n this.setLastContentCellActive();\n }\n }\n }\n else {\n if (this.parent.editSettings.mode === 'Batch' && (e.action === 'tab' || e.action === 'shiftTab')) {\n this.setFrozenBatchEditCell(prevActiveName, prevBatchValue, e.action === 'tab' ? true : false);\n if (e.action === 'tab' && prevBatchValue.toString() === this.active.matrix.current.toString()\n && this.getActiveName() === prevActiveName) {\n this.parent.editModule.editModule.addBatchRow = true;\n }\n }\n }\n }\n if (returnVal === false) {\n this.clearIndicator();\n if (e.action === 'shiftTab' && bValue.toString() === [0, 0].toString()) {\n this.parent.element.tabIndex = -1;\n }\n if (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus() && this.allowToPaging(e)\n && bValue.toString() !== [0, 0].toString()) {\n e.preventDefault();\n if (e.keyCode === 40) {\n this.parent.pagerModule.pagerObj.setPagerContainerFocus();\n return;\n }\n else if (e.keyCode === 9) {\n this.parent.pagerModule.pagerObj.setPagerFocus();\n return;\n }\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n this.focusOutFromChildGrid(e);\n }\n return;\n }\n e.preventDefault();\n this.focus(e);\n };\n FocusStrategy.prototype.isValidBatchEditCell = function (cellIndex) {\n var cell = this.active.getTable().rows[cellIndex[0]].cells[cellIndex[1]];\n var tr = closest(cell, 'tr');\n var cellColIndex = parseInt(cell.getAttribute('data-colindex'), 10);\n var cellCol = this.parent.getColumns()[parseInt(cellColIndex.toString(), 10)];\n if (this.active.matrix.matrix[cellIndex[0]][cellIndex[1]] === 1\n && (tr.classList.contains('e-insertedrow') || !tr.classList.contains('e-row')\n || (!cellCol.isPrimaryKey && cellCol.allowEditing))) {\n return true;\n }\n return false;\n };\n FocusStrategy.prototype.findBatchEditCell = function (currentCellIndex, next, limitRow) {\n var cellIndex = currentCellIndex;\n var tempCellIndex = currentCellIndex;\n var cellIndexObtain = false;\n while (!cellIndexObtain) {\n var prevTempCellIndex = tempCellIndex;\n tempCellIndex = findCellIndex(this.active.matrix.matrix, tempCellIndex, next);\n if ((prevTempCellIndex.toString() === tempCellIndex.toString())\n || (limitRow && prevTempCellIndex[0] !== tempCellIndex[0])) {\n cellIndexObtain = true;\n continue;\n }\n if (this.isValidBatchEditCell(tempCellIndex)) {\n cellIndex = tempCellIndex;\n cellIndexObtain = true;\n }\n }\n return cellIndex;\n };\n FocusStrategy.prototype.setFrozenBatchEditCell = function (currentActiveName, currentCellIndex, next, nextRow) {\n var gObj = this.parent;\n var nextCell;\n var nextSection = false;\n if (nextRow !== undefined) {\n nextCell = [nextRow, next ? 0 : this.active.matrix.matrix[parseInt(nextRow.toString(), 10)].length - 1];\n }\n else {\n nextCell = next ? [currentCellIndex[0], currentCellIndex[1] + 1] : [currentCellIndex[0], currentCellIndex[1] - 1];\n }\n if (this.active.matrix.matrix[nextCell[0]] && this.active.matrix.matrix[nextCell[0]][nextCell[1]]) {\n if (this.isValidBatchEditCell(nextCell)) {\n this.active.matrix.current = nextCell;\n }\n else {\n var prevNextCell = nextCell;\n nextCell = this.findBatchEditCell(nextCell, next, true);\n if (prevNextCell.toString() === nextCell.toString()) {\n nextSection = true;\n }\n else {\n this.active.matrix.current = nextCell;\n }\n }\n }\n else {\n nextSection = true;\n }\n if (nextSection) {\n var activeName = this.getActiveName();\n var frozenMode = gObj.getFrozenMode();\n var rowIndex = nextCell[0];\n var rowDec = rowIndex - 1;\n var rowInc = rowIndex + 1;\n var notPrev = !next && rowDec === -1;\n var notNext = next && rowInc > this.active.matrix.matrix.length - 1;\n var returnCurrentActiveName = ((activeName === 'FrozenLeftHeader' || (activeName === 'Movableheader'\n && frozenMode === 'Right')) && notPrev) || ((activeName === 'FrozenRightContent' || (activeName === 'MovableContent'\n && frozenMode === 'Left')) && notNext);\n if (returnCurrentActiveName) {\n this.setActiveByName(currentActiveName);\n this.active.matrix.current = currentCellIndex;\n }\n else {\n var frozenLeftRightPrev = frozenMode === 'Left-Right' && !next;\n var frozenLeftRightNext = frozenMode === 'Left-Right' && next;\n var frozenLeftNotNext = frozenMode === 'Left' && notNext;\n var frozenLeftNext = frozenMode === 'Left' && next;\n var frozenRightPrev = frozenMode === 'Right' && !next;\n var frozenRightNotPrev = frozenMode === 'Right' && notPrev;\n var content$$1 = (activeName === 'Movableheader' && frozenLeftNotNext) || (activeName === 'FrozenRightHeader'\n && notNext) || (activeName === 'FrozenLeftContent' && !notPrev) || (activeName === 'MovableContent'\n && !frozenRightNotPrev) || activeName === 'FrozenRightContent';\n var frozenContent$$1 = ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && !frozenLeftRightNext) || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent')\n && frozenLeftRightNext);\n var frozenRightContent = ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent')\n && frozenLeftRightPrev) || ((activeName === 'Movableheader' || activeName === 'MovableContent')\n && frozenLeftRightNext);\n this.setActive(content$$1, frozenContent$$1, frozenRightContent);\n var nextIndex = (activeName === 'Movableheader' && frozenLeftNotNext)\n || (activeName === 'FrozenRightHeader' && notNext) ? 0\n : ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenLeftNext)\n || ((activeName === 'FrozenRightHeader' || activeName === 'FrozenRightContent') && next) ? rowInc\n : (activeName === 'FrozenLeftContent' && notPrev)\n || (activeName === 'MovableContent' && frozenRightNotPrev) ? this.active.matrix.matrix.length - 1\n : ((activeName === 'FrozenLeftHeader' || activeName === 'FrozenLeftContent') && !next)\n || ((activeName === 'Movableheader' || activeName === 'MovableContent') && frozenRightPrev) ? rowDec\n : rowIndex;\n this.setFrozenBatchEditCell(currentActiveName, currentCellIndex, next, nextIndex);\n }\n }\n };\n FocusStrategy.prototype.getActiveName = function () {\n var activeName;\n if (this.active) {\n var activeTable = this.active.getTable();\n activeName = parentsUntil(activeTable, 'e-frozen-left-header') ? 'FrozenLeftHeader' :\n parentsUntil(activeTable, 'e-movableheader') ? 'Movableheader' :\n parentsUntil(activeTable, 'e-frozen-right-header') ? 'FrozenRightHeader' :\n parentsUntil(activeTable, 'e-frozen-left-content') ? 'FrozenLeftContent' :\n parentsUntil(activeTable, 'e-movablecontent') ? 'MovableContent' :\n parentsUntil(activeTable, 'e-frozen-right-content') ? 'FrozenRightContent' :\n undefined;\n }\n return activeName;\n };\n FocusStrategy.prototype.setActiveByName = function (activeName) {\n var frozenMode = this.parent.getFrozenMode();\n switch (activeName) {\n case 'FrozenLeftHeader':\n this.setActive(false, true);\n break;\n case 'Movableheader':\n this.setActive(false);\n break;\n case 'FrozenRightHeader':\n this.setActive(false, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n case 'FrozenLeftContent':\n this.setActive(true, true);\n break;\n case 'MovableContent':\n this.setActive(true);\n break;\n case 'FrozenRightContent':\n this.setActive(true, frozenMode === 'Right' ? true : false, frozenMode === 'Right' ? false : true);\n break;\n }\n };\n FocusStrategy.prototype.setLastContentCellActive = function () {\n var lastContentCellIndex = [this.active.matrix.matrix.length - 1,\n this.active.matrix.matrix[this.active.matrix.matrix.length - 1].length - 1];\n if (this.active.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.active.matrix.matrix, lastContentCellIndex, false);\n }\n this.active.matrix.current = lastContentCellIndex;\n };\n FocusStrategy.prototype.focusOutFromChildGrid = function (e) {\n var parentTable = parentsUntil(this.parent.element, 'e-table');\n var parentGrid = parentsUntil(parentTable, 'e-grid').ej2_instances[0];\n var parentCell = parentsUntil(this.parent.element, 'e-detailcell');\n var uid = parentsUntil(this.parent.element, 'e-detailrow').getAttribute('data-uid');\n var parentRows = [].slice.call(parentGrid.getContentTable().rows);\n var parentRowIndex = parentRows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (e.action === 'tab' && parentRowIndex >= parentRows.length - 1) {\n return;\n }\n removeClass([this.parent.element], ['e-focus']);\n removeClass([parentCell], ['e-focused']);\n parentCell.tabIndex = -1;\n e.preventDefault();\n var nextFocusCell;\n parentGrid.focusModule.removeFocus();\n if (e.action === 'shiftTab') {\n var previousRow = parentRows[parentRowIndex - 1];\n var rowCells = previousRow.cells;\n for (var i = rowCells.length - 1; i >= 0; i--) {\n nextFocusCell = rowCells[parseInt(i.toString(), 10)];\n if (!nextFocusCell.classList.contains('e-hide')) {\n parentGrid.focusModule.active.matrix.current = [parentRowIndex - 1, i];\n break;\n }\n }\n }\n else {\n nextFocusCell = parentRows[parentRowIndex + 1].cells[0];\n parentGrid.focusModule.active.matrix.current = [parentRowIndex + 1, 0];\n }\n parentGrid.focusModule.currentInfo.element = nextFocusCell;\n parentGrid.focusModule.currentInfo.elementToFocus = nextFocusCell;\n addClass([nextFocusCell], ['e-focused', 'e-focus']);\n nextFocusCell.tabIndex = 0;\n nextFocusCell.focus();\n };\n FocusStrategy.prototype.focusOutFromHeader = function (e) {\n this.removeFocus();\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = this.parent.toolbarModule.getFocusableToolbarItems();\n e.preventDefault();\n if (focusableToolbarItems.length > 0) {\n focusableToolbarItems[focusableToolbarItems.length - 1].querySelector('.e-toolbar-item-focus,.e-btn,.e-input').focus();\n }\n else {\n toolbarElement.focus();\n }\n return;\n }\n if (this.parent.allowGrouping && this.parent.groupSettings.showDropArea) {\n var groupModule = this.parent.groupModule;\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n e.preventDefault();\n if (focusableGroupedItems.length > 0) {\n focusableGroupedItems[focusableGroupedItems.length - 1].focus();\n }\n else {\n groupModule.element.focus();\n }\n return;\n }\n if (this.parent.element.classList.contains('e-childgrid')) {\n e.preventDefault();\n this.parent.element.focus();\n }\n };\n FocusStrategy.prototype.allowToPaging = function (e) {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.allowAdding && e.keyCode !== 40) {\n return false;\n }\n return true;\n };\n FocusStrategy.prototype.skipOn = function (e) {\n var target = e.target;\n if (!target) {\n return false;\n }\n if (this.currentInfo.skipAction) {\n this.clearIndicator();\n return true;\n }\n if (['pageUp', 'pageDown', 'altDownArrow'].indexOf(e.action) > -1) {\n this.clearIndicator();\n return true;\n }\n if (this.parent.allowGrouping) {\n var focusableGroupedItems = this.parent.groupModule.getFocusableGroupedItems();\n if (parentsUntil(e.target, 'e-groupheadercell')\n && !((e.target === focusableGroupedItems[0] && e.action === 'shiftTab')\n || (e.target === focusableGroupedItems[focusableGroupedItems.length - 1] && e.action === 'tab'))) {\n return true;\n }\n }\n if (this.parent.toolbar || this.parent.toolbarTemplate) {\n var toolbarElement = this.parent.toolbarModule.element;\n var focusableToolbarItems = toolbarElement\n .querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)');\n if (parentsUntil(e.target, 'e-toolbar-item')\n && !(focusableToolbarItems.length > 0 && ((parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[0] && e.action === 'shiftTab')\n || (parentsUntil(e.target, 'e-toolbar-item') === focusableToolbarItems[focusableToolbarItems.length - 1] && e.action === 'tab')))) {\n return true;\n }\n }\n var th = closest(target, 'th') && !closest(target, 'th').tabIndex;\n if (e.target.classList.contains('e-filterbaroperator') && (e.keyCode === 13 || e.keyCode === 27)) {\n var inputTarget = closest(e.target, '.e-filterbarcell');\n inputTarget.querySelector('input').focus();\n }\n if (th && closest(document.activeElement, '.e-filterbarcell') !== null) {\n this.removeFocus();\n }\n var filterCell = closest(document.activeElement, '.e-filterbarcell') !== null;\n if (this.parent.enableHeaderFocus && filterCell) {\n var matrix = this.active.matrix;\n var current = matrix.current;\n filterCell = matrix.matrix[current[0]].lastIndexOf(1) !== current[1];\n }\n return (e.action === 'delete'\n || (this.parent.editSettings.mode !== 'Batch' && (this.parent.isEdit || ['insert', 'f2'].indexOf(e.action) > -1))\n || ((filterCell && this.parent.enableHeaderFocus) || (filterCell && e.action !== 'tab' && e.action !== 'shiftTab') ||\n closest(document.activeElement, '#' + this.parent.element.id + '_searchbar') !== null\n && ['enter', 'leftArrow', 'rightArrow',\n 'shiftLeft', 'shiftRight', 'ctrlPlusA'].indexOf(e.action) > -1)\n || (closest(target, '.' + gridContent) === null && closest(target, '.' + gridHeader) === null\n && !(e.target === this.parent.element || parentsUntil(e.target, 'e-toolbar')\n || parentsUntil(e.target, 'e-groupdroparea')))\n || (e.action === 'space' && (!target.classList.contains(gridChkBox) && closest(target, '.' + gridChkBox) === null\n && closest(target, '.e-headerchkcelldiv') === null))) || closest(target, '.e-filter-popup') !== null;\n };\n FocusStrategy.prototype.focusVirtualElement = function (e) {\n var _this = this;\n if (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) {\n var data = { virtualData: {}, isAdd: false, isCancel: false };\n this.parent.notify(getVirtualData, data);\n var isKeyFocus = this.actions.some(function (value) { return value === _this.activeKey; });\n var isSelected = this.parent.contentModule ?\n this.parent.contentModule.selectedRowIndex > -1 : false;\n if (data.isAdd || Object.keys(data.virtualData).length || isKeyFocus || data.isCancel || isSelected) {\n this.parent.notify(resetVirtualFocus, { isCancel: false });\n data.isCancel = false;\n this.parent.contentModule.selectedRowIndex = -1;\n if (isKeyFocus) {\n this.activeKey = this.empty;\n this.parent.notify('virtaul-key-handler', e);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n if (this.isVirtualScroll || this.isInfiniteScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.currentInfo.elementToFocus.focus({ preventScroll: true });\n }\n else {\n this.currentInfo.elementToFocus.focus();\n }\n }\n }\n this.isVirtualScroll = this.isInfiniteScroll = false;\n };\n FocusStrategy.prototype.getFocusedElement = function () {\n return this.currentInfo.elementToFocus;\n };\n FocusStrategy.prototype.getContent = function () {\n return this.active || this.content;\n };\n FocusStrategy.prototype.setActive = function (content$$1, isFrozen, isFrozenRight) {\n this.active = content$$1 ? isFrozen ? this.fContent : isFrozenRight ? this.frContent : this.content :\n isFrozen ? this.fHeader : isFrozenRight ? this.frHeader : this.header;\n };\n FocusStrategy.prototype.setFocusedElement = function (element, e) {\n var _this = this;\n this.currentInfo.elementToFocus = element;\n setTimeout(function () {\n if (!isNullOrUndefined(_this.currentInfo.elementToFocus)) {\n if (_this.parent.enableVirtualization || _this.parent.enableInfiniteScrolling) {\n _this.focusVirtualElement(e);\n }\n else {\n _this.currentInfo.elementToFocus.focus();\n }\n }\n }, 0);\n };\n FocusStrategy.prototype.focus = function (e) {\n this.parent.notify(virtaulCellFocus, e);\n this.removeFocus();\n this.addFocus(this.getContent().getFocusInfo(), e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FocusStrategy.prototype.removeFocus = function (e) {\n if (!this.currentInfo.element) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.currentInfo.element.tabIndex = -1;\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.addOutline = function () {\n var info = this.getContent().getFocusInfo();\n if (info.element) {\n addClass([info.element], ['e-focused']);\n addClass([info.elementToFocus], ['e-focus']);\n }\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusHeader = function () {\n this.setActive(false, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n /**\n * @returns {void}\n * @hidden */\n FocusStrategy.prototype.focusContent = function () {\n this.setActive(true, this.parent.isFrozenGrid());\n this.resetFocus();\n };\n FocusStrategy.prototype.resetFocus = function () {\n var current = this.getContent().matrix.get(0, -1, [0, 1], null, this.getContent().validator());\n this.getContent().matrix.select(current[0], current[1]);\n this.focus();\n };\n FocusStrategy.prototype.addFocus = function (info, e) {\n this.currentInfo = info;\n this.currentInfo.outline = info.outline && !isNullOrUndefined(e);\n if (this.isInfiniteScroll) {\n this.currentInfo.outline = true;\n }\n if (!info.element) {\n return;\n }\n var isFocused = info.elementToFocus.classList.contains('e-focus');\n if (isFocused) {\n return;\n }\n if (this.currentInfo.outline) {\n addClass([info.element], ['e-focused']);\n }\n addClass([info.elementToFocus], ['e-focus']);\n info.element.tabIndex = 0;\n if (!isFocused) {\n this.setFocusedElement(info.elementToFocus, e);\n }\n this.parent.notify(cellFocused, {\n element: info.elementToFocus,\n parent: info.element,\n indexes: this.getContent().matrix.current,\n byKey: !isNullOrUndefined(e),\n byClick: isNullOrUndefined(e),\n keyArgs: e,\n isJump: this.swap.swap,\n container: this.getContent().getInfo(e),\n outline: !isNullOrUndefined(e),\n swapInfo: this.swap\n });\n var _a = this.getContent().matrix.current, rowIndex = _a[0], cellIndex = _a[1];\n this.prevIndexes = { rowIndex: rowIndex, cellIndex: cellIndex };\n this.focusedColumnUid = this.parent.getColumnByIndex(cellIndex).uid;\n this.focusByClick = false;\n };\n FocusStrategy.prototype.refreshMatrix = function (content$$1) {\n var _this = this;\n return function (e) {\n if (content$$1 && (e.args && e.args.isFrozen) && !_this.fContent) {\n _this.fContent = new FixedContentFocus(_this.parent);\n }\n else if (content$$1 && !_this.frContent && (e.args && e.args.renderFrozenRightContent)) {\n _this.frContent = new FixedRightContentFocus(_this.parent);\n }\n else if (content$$1 && !_this.content) {\n _this.content = new ContentFocus(_this.parent);\n }\n if (!content$$1 && (e.args && e.args.isFrozen) && !_this.fHeader) {\n _this.fHeader = new FixedHeaderFocus(_this.parent);\n }\n else if (!content$$1 && (e.args && e.args.renderFrozenRightContent) && !_this.frHeader) {\n _this.frHeader = new FixedRightHeaderFocus(_this.parent);\n }\n else if (!content$$1 && !_this.header) {\n _this.header = new HeaderFocus(_this.parent);\n }\n var cFocus = content$$1 ? (e.args && e.args.isFrozen) ? _this.fContent : (e.args && e.args.renderFrozenRightContent)\n ? _this.frContent : _this.content : (e.args && e.args.isFrozen) ? _this.fHeader : (e.args && e.args.renderFrozenRightContent)\n ? _this.frHeader : _this.header;\n var rows = content$$1 ? e.rows.slice(_this.parent.frozenRows) : e.rows;\n var updateRow = content$$1 ? e.rows.slice(0, _this.parent.frozenRows) : e.rows;\n if (_this.parent.isCollapseStateEnabled() && content$$1) {\n rows = rows.filter(function (x) { return x.visible !== false; });\n }\n var isRowTemplate = !isNullOrUndefined(_this.parent.rowTemplate);\n var matrix = cFocus.matrix.generate(updateRow, cFocus.selector, isRowTemplate);\n if (e.name === 'batchAdd' && _this.parent.isFrozenGrid()) {\n var mRows = _this.parent.getMovableRowsObject().slice(_this.parent.frozenRows);\n var newMovableRows = mRows.map(function (row$$1) { return row$$1.clone(); });\n var newFrozenRows = rows.map(function (row$$1) { return row$$1.clone(); });\n _this.fContent.matrix.generate(newFrozenRows, _this.fContent.selector, isRowTemplate);\n _this.content.matrix.generate(newMovableRows, _this.content.selector, isRowTemplate);\n if (_this.parent.getFrozenMode() === leftRight) {\n var frRows = _this.parent.getFrozenRightRowsObject().slice(_this.parent.frozenRows);\n var newfrRows = frRows.map(function (row$$1) { return row$$1.clone(); });\n _this.frContent.matrix.generate(newfrRows, _this.frContent.selector, isRowTemplate);\n }\n }\n else {\n cFocus.matrix.generate(rows, cFocus.selector, isRowTemplate);\n }\n if (!(_this.parent.isFrozenGrid() && ((e.args && (e.args.requestType === 'sorting'\n || e.args.requestType === 'batchsave')) || e.name === 'batchAdd' || e.name === 'batchCancel'))) {\n cFocus.generateRows(updateRow, {\n matrix: matrix, handlerInstance: (e.args && e.args.isFrozen) ? _this.fHeader\n : (e.args && e.args.renderFrozenRightContent) ? _this.frHeader : _this.header\n });\n }\n if (!Browser.isDevice && e && e.args) {\n if (!_this.focusByClick && e.args.requestType === 'paging' && !_this.parent.pagerModule.pagerObj.checkPagerHasFocus()) {\n _this.skipFocus = false;\n _this.parent.element.focus();\n }\n if (e.args.requestType === 'grouping') {\n _this.skipFocus = true;\n }\n }\n if (e && e.args && e.args.requestType === 'virtualscroll') {\n if (_this.currentInfo.uid) {\n var index_1;\n var bool = e.rows.some(function (row$$1, i) {\n index_1 = i;\n return row$$1.uid === _this.currentInfo.uid;\n });\n if (bool) {\n _this.content.matrix.current[0] = index_1;\n _this.content.matrix.current[1] = _this.parent.getColumnIndexByUid(_this.focusedColumnUid) || 0;\n var focusElement = _this.getContent().getFocusInfo().elementToFocus;\n if (focusElement) {\n var cellPosition = focusElement.getBoundingClientRect();\n var gridPosition = _this.parent.element.getBoundingClientRect();\n if (cellPosition.top >= 0 && cellPosition.left >= 0 &&\n cellPosition.right <= Math.min(gridPosition.right, window.innerWidth ||\n document.documentElement.clientWidth) &&\n cellPosition.bottom <= Math.min(gridPosition.bottom, window.innerHeight ||\n document.documentElement.clientHeight)) {\n _this.isVirtualScroll = true;\n _this.focus();\n }\n }\n }\n }\n else if (e.args.focusElement && e.args.focusElement.classList.contains('e-filtertext')) {\n var focusElement = _this.parent.element.querySelector('#' + e.args.focusElement.id);\n if (focusElement) {\n focusElement.focus();\n }\n }\n }\n if (e && e.args && e.args.requestType === 'infiniteScroll') {\n _this.isInfiniteScroll = true;\n }\n };\n };\n FocusStrategy.prototype.addEventListener = function () {\n var _this = this;\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(this.parent.element, 'mousedown', this.focusCheck, this);\n EventHandler.add(this.parent.element, 'focus', this.onFocus, this);\n this.parent.element.addEventListener('focus', this.passiveHandler = function (e) { return _this.passiveFocus(e); }, true);\n EventHandler.add(this.parent.element, 'focusout', this.onBlur, this);\n this.evtHandlers = [{ event: keyPressed, handler: this.onKeyPress },\n { event: click, handler: this.onClick },\n { event: contentReady, handler: this.refMatrix },\n { event: partialRefresh, handler: this.refMatrix },\n { event: refreshExpandandCollapse, handler: this.refMatrix },\n { event: headerRefreshed, handler: this.refreshMatrix() },\n { event: closeEdit, handler: this.restoreFocus },\n { event: restoreFocus, handler: this.restoreFocus },\n { event: 'start-edit', handler: this.clearIndicator },\n { event: 'start-add', handler: this.clearIndicator },\n { event: 'sorting-complete', handler: this.restoreFocus },\n { event: 'filtering-complete', handler: this.filterfocus },\n { event: 'grouping-complete', handler: this.restoreFocusWithAction },\n { event: 'ungrouping-complete', handler: this.restoreFocusWithAction },\n { event: batchAdd, handler: this.refMatrix },\n { event: batchCancel, handler: this.refMatrix },\n { event: batchDelete, handler: this.refMatrix },\n { event: detailDataBound, handler: this.refMatrix },\n { event: onEmpty, handler: this.refMatrix },\n { event: cellFocused, handler: this.internalCellFocus }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FocusStrategy.prototype.filterfocus = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n this.restoreFocus();\n }\n };\n FocusStrategy.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, 'mousedown', this.focusCheck);\n EventHandler.remove(this.parent.element, 'focus', this.onFocus);\n EventHandler.remove(this.parent.element, 'focusout', this.onBlur);\n this.parent.element.removeEventListener('focus', this.passiveHandler, true);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FocusStrategy.prototype.destroy = function () {\n this.removeEventListener();\n };\n FocusStrategy.prototype.restoreFocus = function () {\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && (groupModule.groupSortFocus || groupModule.groupTextFocus)) {\n groupModule.groupSortFocus = false;\n groupModule.groupTextFocus = false;\n return;\n }\n this.firstHeaderCellClick = true;\n this.addFocus(this.getContent().getFocusInfo());\n };\n FocusStrategy.prototype.restoreFocusWithAction = function (e) {\n if (!this.parent.enableInfiniteScrolling) {\n var matrix = this.getContent().matrix;\n var current = matrix.current;\n switch (e.requestType) {\n case 'grouping':\n case 'ungrouping':\n current[1] = current.length &&\n !this.parent.groupSettings.showGroupedColumn && !isNullOrUndefined(matrix.matrix[current[0]]) ?\n matrix.matrix[current[0]].indexOf(1) : e.requestType === 'grouping' ? current[1] + 1 : current[1] - 1;\n break;\n }\n this.getContent().matrix.current = current;\n var groupModule = this.parent.groupModule;\n if (this.parent.allowGrouping && groupModule && groupModule.groupCancelFocus) {\n var focusableGroupedItems = groupModule.getFocusableGroupedItems();\n if (focusableGroupedItems.length) {\n if (focusableGroupedItems[0].parentElement.getAttribute('ej-mappingname') === e.columnName) {\n focusableGroupedItems[3].focus();\n }\n else {\n focusableGroupedItems[0].focus();\n }\n }\n else {\n groupModule.element.focus();\n }\n groupModule.groupCancelFocus = false;\n return;\n }\n this.addFocus(this.getContent().getFocusInfo());\n }\n };\n FocusStrategy.prototype.clearOutline = function () {\n this.getContent().matrix.current = this.getContent().matrix.get(0, -1, [0, 1], 'downArrow', this.getContent().validator());\n this.clearIndicator();\n };\n FocusStrategy.prototype.clearIndicator = function () {\n if (!this.currentInfo.element || !this.currentInfo.elementToFocus) {\n return;\n }\n removeClass([this.currentInfo.element, this.currentInfo.elementToFocus], ['e-focus', 'e-focused']);\n };\n FocusStrategy.prototype.getPrevIndexes = function () {\n var forget = this.forget;\n this.forget = false;\n return forget || !Object.keys(this.prevIndexes).length ? { rowIndex: null, cellIndex: null } : this.prevIndexes;\n };\n FocusStrategy.prototype.forgetPrevious = function () {\n this.forget = true;\n };\n FocusStrategy.prototype.setActiveByKey = function (action, active) {\n var _this = this;\n if (!this.parent.isFrozenGrid() && this.parent.frozenRows === 0) {\n return;\n }\n // eslint-disable-next-line prefer-const\n var info;\n var actions = {\n 'home': function () { return ({ toHeader: !info.isContent, toFrozen: true }); },\n 'end': function () { return ({ toHeader: !info.isContent, toFrozen: false }); },\n 'ctrlHome': function () { return ({ toHeader: true, toFrozen: _this.parent.isFrozenGrid() }); },\n 'ctrlEnd': function () { return ({ toHeader: false, toFrozen: false }); }\n };\n if (!(action in actions)) {\n return;\n }\n info = active.getInfo();\n var swap = actions[\"\" + action]();\n this.setActive(!swap.toHeader, swap.toFrozen);\n this.getContent().matrix.current = active.matrix.current;\n };\n FocusStrategy.prototype.internalCellFocus = function (e) {\n if (!(e.byKey && e.container.isContent && e.keyArgs.action === 'enter'\n && (e.parent.classList.contains('e-detailcell') ||\n e.parent.classList.contains('e-unboundcell')))) {\n return;\n }\n this.clearIndicator();\n var focusEle = this.getContent().getFocusable(this.getFocusedElement());\n this.setFocusedElement(focusEle);\n this.currentInfo.skipAction = true;\n };\n return FocusStrategy;\n}());\n/**\n * Create matrix from row collection which act as mental model for cell navigation\n *\n * @hidden\n */\nvar Matrix = /** @__PURE__ @class */ (function () {\n function Matrix() {\n this.matrix = [];\n this.current = [];\n }\n Matrix.prototype.set = function (rowIndex, columnIndex, allow) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.columns));\n this.matrix[parseInt(rowIndex.toString(), 10)] = this.matrix[parseInt(rowIndex.toString(), 10)] || [];\n this.matrix[parseInt(rowIndex.toString(), 10)][parseInt(columnIndex.toString(), 10)] = allow ? 1 : 0;\n };\n Matrix.prototype.get = function (rowIndex, columnIndex, navigator, action, validator) {\n var tmp = columnIndex;\n if (rowIndex + navigator[0] < 0) {\n return [rowIndex, columnIndex];\n }\n rowIndex = Math.max(0, Math.min(rowIndex + navigator[0], this.rows));\n var emptyTable = true;\n if (isNullOrUndefined(this.matrix[parseInt(rowIndex.toString(), 10)])) {\n return null;\n }\n columnIndex = Math.max(0, Math.min(columnIndex + navigator[1], this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n if (tmp + navigator[1] > this.matrix[parseInt(rowIndex.toString(), 10)].length - 1\n && validator(rowIndex, columnIndex, action)) {\n return [rowIndex, tmp];\n }\n var first = this.first(this.matrix[parseInt(rowIndex.toString(), 10)], columnIndex, navigator, true, action);\n columnIndex = first === null ? tmp : first;\n var val = getValue(rowIndex + \".\" + columnIndex, this.matrix);\n if (rowIndex === this.rows && (action === 'downArrow' || action === 'enter')) {\n navigator[0] = -1;\n }\n if (first === null) {\n for (var i = 0; i < this.rows; i++) {\n if (this.matrix[parseInt(i.toString(), 10)].some(function (v) { return v === 1; })) {\n emptyTable = false;\n break;\n }\n }\n if (emptyTable) {\n rowIndex = this.current.length ? this.current[0] : 0;\n return [rowIndex, columnIndex];\n }\n }\n return this.inValid(val) || !validator(rowIndex, columnIndex, action) ?\n this.get(rowIndex, tmp, navigator, action, validator) : [rowIndex, columnIndex];\n };\n Matrix.prototype.first = function (vector, index, navigator, moveTo, action) {\n if (((index < 0 || index === vector.length) && this.inValid(vector[parseInt(index.toString(), 10)])\n && (action !== 'upArrow' && action !== 'downArrow')) || !vector.some(function (v) { return v === 1; })) {\n return null;\n }\n return !this.inValid(vector[parseInt(index.toString(), 10)]) ? index :\n this.first(vector, (['upArrow', 'downArrow', 'shiftUp', 'shiftDown'].indexOf(action) !== -1) ? moveTo ? 0 : ++index : index + navigator[1], navigator, false, action);\n };\n Matrix.prototype.select = function (rowIndex, columnIndex) {\n rowIndex = Math.max(0, Math.min(rowIndex, this.rows));\n columnIndex = Math.max(0, Math.min(columnIndex, this.matrix[parseInt(rowIndex.toString(), 10)].length - 1));\n this.current = [rowIndex, columnIndex];\n };\n Matrix.prototype.generate = function (rows, selector, isRowTemplate) {\n this.rows = rows.length - 1;\n this.matrix = [];\n for (var i = 0; i < rows.length; i++) {\n var cells = rows[parseInt(i.toString(), 10)].cells.filter(function (c) { return c.isSpanned !== true; });\n this.columns = Math.max(cells.length - 1, this.columns | 0);\n var incrementNumber = 0;\n for (var j = 0; j < cells.length; j++) {\n if (cells[parseInt(j.toString(), 10)].column && cells[parseInt(j.toString(), 10)].column.columns) {\n incrementNumber = this.columnsCount(cells[parseInt(j.toString(), 10)].column.columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n this.set(i, j, rows[parseInt(i.toString(), 10)].visible === false ?\n false : selector(rows[parseInt(i.toString(), 10)], cells[parseInt(j.toString(), 10)], isRowTemplate));\n }\n this.columns = Math.max(incrementNumber - 1, this.columns | 0);\n }\n return this.matrix;\n };\n Matrix.prototype.columnsCount = function (rowColumns, currentColumnCount) {\n var columns = rowColumns;\n var incrementNumber = currentColumnCount;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.columnsCount(columns[parseInt(i.toString(), 10)].columns, incrementNumber);\n }\n else {\n incrementNumber++;\n }\n }\n return incrementNumber;\n };\n Matrix.prototype.inValid = function (value) {\n return value === 0 || value === undefined;\n };\n return Matrix;\n}());\n/**\n * @hidden\n */\nvar ContentFocus = /** @__PURE__ @class */ (function () {\n function ContentFocus(parent) {\n var _this = this;\n this.matrix = new Matrix();\n this.lastIdxCell = false;\n this.parent = parent;\n this.keyActions = {\n 'rightArrow': [0, 1],\n 'tab': [0, 1],\n 'leftArrow': [0, -1],\n 'shiftTab': [0, -1],\n 'upArrow': [-1, 0],\n 'downArrow': [1, 0],\n 'shiftUp': [-1, 0],\n 'shiftDown': [1, 0],\n 'shiftRight': [0, 1],\n 'shiftLeft': [0, -1],\n 'enter': [1, 0],\n 'shiftEnter': [-1, 0]\n };\n this.indexesByKey = function (action) {\n var opt = {\n 'home': [_this.matrix.current[0], -1, 0, 1],\n 'end': [_this.matrix.current[0], _this.matrix.columns + 1, 0, -1],\n 'ctrlHome': [0, -1, 0, 1],\n 'ctrlEnd': [_this.matrix.rows, _this.matrix.columns + 1, 0, -1]\n };\n return opt[\"\" + action] || null;\n };\n }\n ContentFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getContent().querySelector('.e-movablecontent .e-table') :\n this.parent.getContentTable());\n };\n ContentFocus.prototype.onKeyPress = function (e) {\n var navigator = this.keyActions[e.action];\n var current = this.getCurrentFromAction(e.action, navigator, e.action in this.keyActions, e);\n if (!current) {\n return;\n }\n if (((['tab', 'shiftTab'].indexOf(e.action) > -1 && this.matrix.current || []).toString() === current.toString())\n || (this.parent.allowPaging && !this.parent.pagerModule.pagerObj.checkPagerHasFocus()\n && this.matrix.current[0] === this.matrix.rows && ((this.parent.editSettings.mode === 'Batch'\n && this.parent.editSettings.allowAdding && e.keyCode === 40) || (e.keyCode === 40)))) {\n if (current.toString() === [this.matrix.rows, this.matrix.columns].toString() ||\n current.toString() === [0, 0].toString() || (this.matrix.current[0] === this.matrix.rows &&\n this.matrix.current.toString() === current.toString()) || (this.parent.allowGrouping &&\n this.parent.infiniteScrollSettings.enableCache && current.toString() === [0, 1].toString())) {\n return false;\n }\n else {\n current = this.editNextRow(current[0], current[1], e.action);\n }\n }\n this.matrix.select(current[0], current[1]);\n };\n ContentFocus.prototype.editNextRow = function (rowIndex, cellIndex, action) {\n var gObj = this.parent;\n var editNextRow = gObj.editSettings.allowNextRowEdit && (gObj.isEdit || gObj.isLastCellPrimaryKey);\n var visibleIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[0].field);\n var cell = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (action === 'tab' && editNextRow) {\n rowIndex++;\n var index = (this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-indentcell').length +\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].getElementsByClassName('e-detailrowcollapse').length);\n cellIndex = visibleIndex + index;\n }\n if (action === 'shiftTab' && editNextRow) {\n rowIndex--;\n cellIndex = gObj.getColumnIndexByField(gObj.getVisibleColumns()[gObj.getVisibleColumns().length - 1].field);\n }\n return !cell.classList.contains(rowCell) && !cell.classList.contains('e-headercell') &&\n !cell.classList.contains('e-groupcaption') && !cell.classList.contains('e-filterbarcell') ?\n this.editNextRow(rowIndex, cellIndex, action) : [rowIndex, cellIndex];\n };\n ContentFocus.prototype.getCurrentFromAction = function (action, navigator, isPresent, e) {\n if (navigator === void 0) { navigator = [0, 0]; }\n if (!isPresent && !this.indexesByKey(action) || (this.matrix.current.length === 0)) {\n return null;\n }\n if (!this.shouldFocusChange(e)) {\n return this.matrix.current;\n }\n // eslint-disable-next-line\n var _a = this.indexesByKey(action) || this.matrix.current.concat(navigator), rowIndex = _a[0], cellIndex = _a[1], rN = _a[2], cN = _a[3];\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && this.parent.aggregates.length && action === 'enter') {\n for (var i = rowIndex; i < this.matrix.matrix.length; i++) {\n var row$$1 = this.getTable().rows[i + 1];\n if (row$$1 && row$$1.cells[parseInt(cellIndex.toString(), 10)] && row$$1.cells[parseInt(cellIndex.toString(), 10)].classList.contains('e-rowcell')) {\n return [i + 1, cellIndex];\n }\n if (i === this.matrix.matrix.length - 1) {\n return [rowIndex, cellIndex];\n }\n }\n }\n if (action === 'ctrlEnd' || action === 'end') {\n var lastContentCellIndex = [this.matrix.matrix.length - 1,\n this.matrix.matrix[this.matrix.matrix.length - 1].length - 1];\n if (action === 'end') {\n lastContentCellIndex = [rowIndex, this.matrix.matrix[parseInt(rowIndex.toString(), 10)].length - 1];\n }\n if (this.matrix.matrix[lastContentCellIndex[0]][lastContentCellIndex[1]] === 0) {\n lastContentCellIndex = findCellIndex(this.matrix.matrix, lastContentCellIndex, false);\n }\n rowIndex = lastContentCellIndex[0];\n cellIndex = lastContentCellIndex[1] + 1;\n }\n var current = this.matrix.get(rowIndex, cellIndex, [rN, cN], action, this.validator());\n return current;\n };\n ContentFocus.prototype.onClick = function (e, force) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains(rowCell) ? target : closest(target, 'td'));\n target = target ? target : closest(e.target, 'td.e-detailrowcollapse')\n || closest(e.target, 'td.e-detailrowexpand');\n target = closest(e.target, 'td.e-detailcell') ?\n isNullOrUndefined(closest(closest(e.target, '.e-grid'), 'td.e-detailcell')) ? null : target : target;\n target = target && closest(target, 'table').classList.contains(table) ? target : null;\n if (!target) {\n return false;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var _b = this.matrix.current, oRowIndex = _b[0], oCellIndex = _b[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val) || (!force && oRowIndex === rowIndex && oCellIndex === cellIndex) ||\n (!parentsUntil(e.target, rowCell) && !parentsUntil(e.target, 'e-groupcaption')\n && !parentsUntil(e.target, 'e-recordpluscollapse') && !parentsUntil(e.target, 'e-recordplusexpand')\n && !parentsUntil(e.target, 'e-detailrowcollapse') && !parentsUntil(e.target, 'e-detailrowexpand')\n && !parentsUntil(e.target, 'e-templatecell'))) {\n return false;\n }\n this.matrix.select(rowIndex, cellIndex);\n };\n ContentFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n this.matrix.current = [rowIndex, cellIndex];\n info.element = !isNullOrUndefined(this.getTable().rows[parseInt(rowIndex.toString(), 10)]) ?\n this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)] : null;\n if (!info.element) {\n return info;\n }\n info.elementToFocus = !info.element.classList.contains('e-unboundcell') && !info.element.classList.contains('e-detailcell')\n ? this.getFocusable(info.element) : info.element;\n info.elementToFocus = info.element.classList.contains('e-detailcell') && info.element.querySelector('.e-childgrid')\n ? info.element.querySelector('.e-childgrid') : info.elementToFocus;\n info.outline = true;\n info.uid = info.element.parentElement.getAttribute('data-uid');\n return info;\n };\n ContentFocus.prototype.getFocusable = function (element) {\n var query = 'button, [href], input:not([type=\"hidden\"]), select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var isTemplate = !isNullOrUndefined(closest(element, '.e-templatecell'));\n if (this.parent.isEdit) {\n query = 'input:not([type=\"hidden\"]), select:not([aria-hidden=\"true\"]), textarea';\n }\n var child = [].slice.call(element.querySelectorAll(query));\n /* Select the first focusable child element\n * if no child found then select the cell itself.\n * if Grid is in editable state, check for editable control inside child.\n */\n return child.length ? isTemplate && child.length > 1 ? this.target ? this.target : element : child[0] : element;\n };\n ContentFocus.prototype.selector = function (row$$1, cell, isRowTemplate) {\n var types = [CellType.Expand, CellType.GroupCaption, CellType.CaptionSummary, CellType.GroupSummary];\n return ((row$$1.isDataRow && cell.visible && (cell.isDataCell || cell.isTemplate))\n || (row$$1.isDataRow && cell.cellType === CellType.DetailExpand && isNullOrUndefined(cell.visible))\n || (!row$$1.isDataRow && types.indexOf(cell.cellType) > -1\n && !((cell.cellType === CellType.GroupSummary || cell.cellType === CellType.CaptionSummary)\n && !(cell.isDataCell && cell.visible)))\n || (cell.column && cell.visible && cell.column.type === 'checkbox')\n || (cell.cellType === CellType.CommandColumn)\n || (row$$1.isDataRow && isRowTemplate))\n && !(row$$1.edit === 'delete' && row$$1.isDirty);\n };\n ContentFocus.prototype.nextRowFocusValidate = function (index) {\n var lastIndex = index;\n for (var i = index, len = this.matrix.rows; i <= len; i++) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index + 1;\n }\n else {\n return index;\n }\n }\n this.lastIdxCell = true;\n return lastIndex;\n };\n ContentFocus.prototype.previousRowFocusValidate = function (index) {\n var firstIndex = index;\n for (var i = index, len = 0; i >= len; i--) {\n if (this.matrix.matrix[parseInt(index.toString(), 10)].indexOf(1) === -1) {\n index = index - 1;\n if (index < 0) {\n this.lastIdxCell = true;\n return firstIndex;\n }\n }\n else {\n return index;\n }\n }\n return firstIndex;\n };\n ContentFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n ((action === 'leftArrow' || action === 'shiftTab') && current[1] === 0))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab' && this.parent.getFrozenMode() === 'Left'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || action === 'tab')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n this.lastIdxCell = false;\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var headerSwap = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n if (!this.parent.isFrozenGrid() && action === 'tab' &&\n current[1] === this.matrix.matrix[current[0]].lastIndexOf(1) && this.matrix.matrix.length - 1 !== current[0]) {\n this.matrix.current[0] = this.nextRowFocusValidate(this.matrix.current[0] + 1);\n this.matrix.current[1] = -1;\n frozenSwap = this.parent.isFrozenGrid();\n }\n if (!this.parent.isFrozenGrid() && action === 'shiftTab' &&\n current[0] !== 0 && this.matrix.matrix[current[0]].indexOf(1) === current[1]) {\n this.matrix.current[0] = this.previousRowFocusValidate(this.matrix.current[0] - 1);\n this.matrix.current[1] = this.matrix.matrix[current[0]].length;\n }\n var isHeaderFocus = false;\n var row$$1 = document.activeElement.parentElement;\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && row$$1.classList.contains(row)) {\n var rowIndex = parseInt(row$$1.getAttribute(dataRowIndex), 10);\n isHeaderFocus = rowIndex > 0;\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Right' && current[0] === 0\n && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n var info = {\n swap: !isHeaderFocus ? ((action === 'upArrow' || enterFrozen) && current[0] === 0) || frozenSwap || frSwap : false,\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n return info;\n };\n ContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === leftRight) {\n if (action === 'leftArrow' || action === 'shiftTab') {\n current[0] = previous[0];\n current[1] = this.matrix.matrix[current[0]].length;\n }\n if (this.parent.getFrozenMode() === leftRight && (action === 'rightArrow' || action === 'tab')) {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current[0] = previous[0] + 1;\n current[1] = -1;\n }\n }\n else if (action === 'rightArrow' || action === 'tab') {\n current[0] = previous[0];\n current[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current[0] = -1;\n current[1] = previous[1];\n }\n if (action === 'shiftTab' && this.parent.getFrozenMode() === 'Left') {\n current[0] = previous[0] - 1;\n current[1] = this.matrix.matrix[current[0]].length;\n }\n return current;\n };\n ContentFocus.prototype.generateRows = function (rows, optionals) {\n var _a;\n var matrix = optionals.matrix, handlerInstance = optionals.handlerInstance;\n var len = handlerInstance.matrix.matrix.length;\n var defaultLen = this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' ? len + 1 : len;\n handlerInstance.matrix.matrix = handlerInstance.matrix.matrix.slice(0, defaultLen); //Header matrix update.\n handlerInstance.matrix.rows = defaultLen;\n (_a = handlerInstance.matrix.matrix).push.apply(_a, matrix);\n handlerInstance.matrix.rows += matrix.length;\n };\n ContentFocus.prototype.getInfo = function (e) {\n var info = this.getFocusInfo();\n var _a = this.matrix.current, rIndex = _a[0], cIndex = _a[1];\n var isData = info.element.classList.contains(rowCell);\n var isSelectable = isData || (e && e.action !== 'enter' && (info.element.classList.contains('e-detailrowcollapse')\n || info.element.classList.contains('e-detailrowexpand')));\n // eslint-disable-next-line\n var _b = [Math.min(parseInt(info.element.parentElement.getAttribute(dataRowIndex), 10), rIndex),\n Math.min(parseInt(info.element.getAttribute(dataColIndex), 10), cIndex)], rowIndex = _b[0], cellIndex = _b[1];\n if (this.parent.allowGrouping && this.parent.groupSettings.enableLazyLoading && isData) {\n rowIndex = this.parent.getDataRows().indexOf(info.element.parentElement);\n }\n return { isContent: true, isDataCell: isData, indexes: [rowIndex, cellIndex], isSelectable: isSelectable };\n };\n ContentFocus.prototype.validator = function () {\n var table$$1 = this.getTable();\n return function (rowIndex, cellIndex, action) {\n if (!isNullOrUndefined(table$$1.rows[parseInt(rowIndex.toString(), 10)])) {\n var cell = void 0;\n cellIndex = table$$1.querySelector('.e-emptyrow') ? 0 : cellIndex;\n if (table$$1.rows[parseInt(rowIndex.toString(), 10)].cells[0].classList.contains('e-editcell')) {\n cell = table$$1.rows[parseInt(rowIndex.toString(), 10)].cells[0].querySelectorAll('td')[parseInt(cellIndex.toString(), 10)];\n }\n else {\n cell = table$$1.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n }\n var isCellWidth = cell.getBoundingClientRect().width !== 0;\n if (action === 'enter' || action === 'shiftEnter') {\n return isCellWidth && cell.classList.contains(rowCell);\n }\n if ((action === 'shiftUp' || action === 'shiftDown') && cell.classList.contains(rowCell)) {\n return isCellWidth;\n }\n else if (action !== 'shiftUp' && action !== 'shiftDown') {\n return isCellWidth;\n }\n }\n return false;\n };\n };\n ContentFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, _b = _a[0], rIndex = _b === void 0 ? -1 : _b, _c = _a[1], cIndex = _c === void 0 ? -1 : _c;\n if (rIndex < 0 || cIndex < 0) {\n return true;\n }\n var cell = getValue(rIndex + \".cells.\" + cIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'shiftEnter' ?\n cell.classList.contains(rowCell) && !cell.classList.contains('e-unboundcell')\n || cell.classList.contains('e-editedbatchcell') && !cell.classList.contains('e-detailcell') : true;\n };\n ContentFocus.prototype.getGridSeletion = function () {\n return this.parent.allowSelection && this.parent.selectionSettings.allowColumnSelection;\n };\n return ContentFocus;\n}());\n/**\n * @hidden\n */\nvar HeaderFocus = /** @__PURE__ @class */ (function (_super) {\n __extends$14(HeaderFocus, _super);\n function HeaderFocus(parent) {\n return _super.call(this, parent) || this;\n }\n HeaderFocus.prototype.getTable = function () {\n return (this.parent.isFrozenGrid() ?\n this.parent.getHeaderContent().querySelector('.e-movableheader .e-table') :\n this.parent.getHeaderTable());\n };\n HeaderFocus.prototype.onClick = function (e) {\n var target = e.target;\n this.target = target;\n target = (target.classList.contains('e-headercell') ? target : closest(target, 'th'));\n if (!target && this.parent.frozenRows !== 0) {\n target = (e.target.classList.contains(rowCell) ? e.target :\n closest(e.target, 'td'));\n }\n if (e.target.classList.contains('e-columnheader') ||\n e.target.querySelector('.e-stackedheadercell')) {\n return false;\n }\n if (!target) {\n return;\n }\n var _a = [target.parentElement.rowIndex, target.cellIndex], rowIndex = _a[0], cellIndex = _a[1];\n var val = getValue(rowIndex + \".\" + cellIndex, this.matrix.matrix);\n if (this.matrix.inValid(val)) {\n return false;\n }\n this.matrix.select(target.parentElement.rowIndex, target.cellIndex);\n };\n HeaderFocus.prototype.getFocusInfo = function () {\n var info = {};\n var _a = this.matrix.current, _b = _a[0], rowIndex = _b === void 0 ? 0 : _b, _c = _a[1], cellIndex = _c === void 0 ? 0 : _c;\n info.element = this.getTable().rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n if (!isNullOrUndefined(info.element)) {\n info.elementToFocus = this.getFocusable(info.element);\n info.outline = !info.element.classList.contains('e-filterbarcell');\n }\n return info;\n };\n HeaderFocus.prototype.selector = function (row$$1, cell) {\n return (cell.visible && (cell.column.field !== undefined || cell.isTemplate || !isNullOrUndefined(cell.column.template)\n || !isNullOrUndefined(cell.column.commands))) || cell.column.type === 'checkbox' || cell.cellType === CellType.StackedHeader;\n };\n HeaderFocus.prototype.jump = function (action, current) {\n var frozenSwap = (this.parent.getFrozenLeftCount() &&\n (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') && (current[1] === 0\n || current[1] === this.matrix.matrix[current[0]].indexOf(1))) || (this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var right = ((action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion())\n || action === 'tab') && (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)))\n || (current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === 'Right'\n && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var frSwap = this.parent.getFrozenMode() === leftRight && right;\n if (this.parent.getFrozenMode() === 'Right') {\n frozenSwap = right;\n }\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var isLastCell;\n var lastRow;\n var headerSwap = frozenSwap && !(this.parent.getFrozenMode() === 'Left' && action === 'tab'\n && current[0] === this.matrix.matrix.length - 1) || frSwap;\n var fMatrix = this.parent.focusModule.fHeader && this.parent.focusModule.fHeader.matrix.matrix;\n var isPresent = fMatrix && !isNullOrUndefined(fMatrix[current[0]]);\n if (this.parent.enableHeaderFocus && action === 'tab') {\n lastRow = this.matrix.matrix.length - 1 === current[0];\n isLastCell = current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n if (isLastCell) {\n if (!lastRow) {\n this.matrix.current[0] = this.matrix.current[0] + 1;\n }\n else {\n this.matrix.current[0] = 0;\n }\n this.matrix.current[1] = -1;\n }\n if (this.parent.isFrozenGrid() && lastRow && isLastCell) {\n frozenSwap = true;\n headerSwap = false;\n }\n }\n if (action === 'tab' && this.parent.getFrozenMode() === 'Left' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: ((action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && (frozenSwap || frSwap)) || (action === 'tab' && lastRow && isLastCell),\n toHeader: headerSwap,\n toFrozen: frozenSwap,\n toFrozenRight: frSwap\n };\n };\n HeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current1 = [];\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === leftRight) {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current1[0] = previous[0];\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === leftRight\n && (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab')) {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n }\n else if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current1[0] = previous[0];\n current1[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current1[0] = this.matrix.matrix.length;\n current1[1] = previous[1];\n }\n if (this.parent.getFrozenMode() === 'Left' && action === 'shiftTab') {\n current1[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current1[1] = this.matrix.matrix[current1[0]].length;\n }\n if (this.parent.getFrozenMode() === 'Right' && action === 'tab') {\n current1[0] = previous[0] + 1;\n current1[1] = -1;\n }\n return current1;\n };\n HeaderFocus.prototype.generateRows = function (rows) {\n var length = this.matrix.matrix.length;\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar') {\n this.matrix.rows = ++this.matrix.rows;\n var cells = rows[0].cells;\n var incrementNumber = 0;\n var headerTable = this.getHeaderType() === 'FixedHeaderFocus' && this.parent.getFrozenMode() !== 'Right' ? frozenLeft :\n this.getHeaderType() === 'FixedHeaderFocus' || this.getHeaderType() === 'FixedRightHeaderFocus' ? frozenRight : 'movable';\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].column && cells[parseInt(i.toString(), 10)].column.columns) {\n incrementNumber = this.checkFilterColumn(cells[parseInt(i.toString(), 10)].column.columns, length, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && cells[parseInt(i.toString(), 10)].column.freezeTable === headerTable)) {\n this.matrix.set(length, incrementNumber, cells[parseInt(i.toString(), 10)].visible && cells[parseInt(i.toString(), 10)].column.allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n }\n };\n HeaderFocus.prototype.checkFilterColumn = function (rowColumns, rowIndex, columnIndex, headerTable) {\n var columns = rowColumns;\n var incrementNumber = columnIndex;\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n incrementNumber = this.checkFilterColumn(columns[parseInt(i.toString(), 10)].columns, rowIndex, incrementNumber, headerTable);\n }\n else {\n if (!this.parent.isFrozenGrid() || (this.parent.isFrozenGrid()\n && columns[parseInt(i.toString(), 10)].freezeTable === headerTable)) {\n this.matrix.set(rowIndex, incrementNumber, columns[parseInt(i.toString(), 10)].visible && columns[parseInt(i.toString(), 10)].allowFiltering !== false);\n incrementNumber++;\n }\n }\n }\n return incrementNumber;\n };\n HeaderFocus.prototype.getInfo = function (e) {\n return extend(_super.prototype.getInfo.call(this, e), { isContent: false, isHeader: true });\n };\n HeaderFocus.prototype.validator = function () {\n return function () { return true; };\n };\n HeaderFocus.prototype.shouldFocusChange = function (e) {\n var _a = this.matrix.current, rowIndex = _a[0], columnIndex = _a[1];\n if (rowIndex < 0 || columnIndex < 0) {\n return true;\n }\n var cell = getValue(rowIndex + \".cells.\" + columnIndex, this.getTable().rows);\n if (!cell) {\n return true;\n }\n return e.action === 'enter' || e.action === 'altDownArrow' ? !cell.classList.contains('e-headercell') : true;\n };\n HeaderFocus.prototype.getHeaderType = function () {\n return 'HeaderFocus';\n };\n return HeaderFocus;\n}(ContentFocus));\nvar FixedContentFocus = /** @__PURE__ @class */ (function (_super) {\n __extends$14(FixedContentFocus, _super);\n function FixedContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozencontent .e-table');\n };\n FixedContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = ((action === 'upArrow' || enterFrozen) && current[0] === 0)\n || (action === 'shiftTab' && this.parent.getFrozenMode() !== 'Right'\n && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1));\n var fSwap = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var frSwap = action === 'shiftTab' && this.parent.getFrozenMode() === leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n if (this.parent.getFrozenMode() === 'Right') {\n var swap = toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n return { swap: swap, toHeader: toHeader, toFrozen: fSwap };\n }\n if (action === 'shiftTab' && current[0] === 0 && current[1] === this.matrix.matrix[current[0]].indexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return {\n swap: toHeader || ((action === 'tab' || action === 'rightArrow')\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1)),\n toHeader: toHeader,\n toFrozen: fSwap,\n toFrozenRight: frSwap\n };\n };\n FixedContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n }\n else {\n if (action === 'tab' && this.parent.enableHeaderFocus) {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'leftArrow' || action === 'shiftTab') {\n current2[0] = previous[0];\n current2[1] = this.matrix.matrix[previous[0]].length;\n }\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current2[0] = previous[0] + 1;\n current2[1] = -1;\n }\n return current2;\n };\n return FixedContentFocus;\n}(ContentFocus));\nvar FixedHeaderFocus = /** @__PURE__ @class */ (function (_super) {\n __extends$14(FixedHeaderFocus, _super);\n function FixedHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedHeaderFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var hMatrix = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = hMatrix && !isNullOrUndefined(hMatrix[current[0]]);\n if (this.parent.getFrozenMode() === 'Right') {\n var frSwap_1 = ((action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1)))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frSwap_1);\n var toFrozen = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frSwap_1, toFrozen: toFrozen };\n }\n var frSwap = current[0] > 0 && action === 'shiftTab' && this.parent.getFrozenMode() === leftRight\n && current[1] === this.matrix.matrix[current[0]].indexOf(1);\n return {\n swap: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1 || ((action === 'rightArrow' ||\n (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) && isPresent)\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toHeader: (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') &&\n (current[1] === this.matrix.columns || current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))\n || (action === 'shiftTab' && current[1] === this.matrix.matrix[current[0]].indexOf(1) && current[0] > 0),\n toFrozen: (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1,\n toFrozenRight: frSwap\n };\n };\n FixedHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozenheader .e-table'));\n };\n FixedHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (this.parent.getFrozenMode() === 'Right') {\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n else {\n if (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion()) || action === 'shiftTab') {\n current3[0] = previous[0];\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'tab' && this.parent.getFrozenMode() !== 'Right') {\n current3[0] = previous[0] + 1;\n current3[1] = -1;\n }\n return current3;\n };\n FixedHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedHeaderFocus';\n };\n return FixedHeaderFocus;\n}(HeaderFocus));\n/** @hidden */\nvar SearchBox = /** @__PURE__ @class */ (function () {\n function SearchBox(searchBox) {\n this.searchBox = searchBox;\n }\n SearchBox.prototype.searchFocus = function (args) {\n args.target.parentElement.classList.add('e-input-focus');\n if (args.target.classList.contains('e-input') && args.target.classList.contains('e-search') && args.target.value) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.add('e-clear-icon');\n sIcon.setAttribute('title', 'Clear');\n (sIcon).style.cursor = 'pointer';\n }\n };\n SearchBox.prototype.searchBlur = function (args) {\n var relatedTarget = args.relatedTarget ? args.relatedTarget : null;\n if (relatedTarget && relatedTarget.classList.contains('e-sicon')) {\n if (relatedTarget.classList.contains('e-clear-icon')) {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n }\n else {\n args.target.parentElement.classList.remove('e-input-focus');\n }\n if (args.target.classList.contains('e-search') && relatedTarget && !(relatedTarget.classList.contains('e-sicon e-clear-icon'))\n && !(relatedTarget.classList.contains('e-sicon'))) {\n var sIcon = args.target.parentElement.querySelector('.e-sicon');\n sIcon.classList.remove('e-clear-icon');\n sIcon.removeAttribute('title');\n sIcon.style.cursor = 'default';\n }\n };\n SearchBox.prototype.wireEvent = function () {\n if (this.searchBox) {\n EventHandler.add(this.searchBox, 'focus', this.searchFocus, this);\n EventHandler.add(this.searchBox, 'blur', this.searchBlur, this);\n }\n };\n SearchBox.prototype.unWireEvent = function () {\n if (this.searchBox) {\n EventHandler.remove(this.searchBox, 'focus', this.searchFocus);\n EventHandler.remove(this.searchBox, 'blur', this.searchBlur);\n }\n };\n return SearchBox;\n}());\nvar FixedRightContentFocus = /** @__PURE__ @class */ (function (_super) {\n __extends$14(FixedRightContentFocus, _super);\n function FixedRightContentFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightContentFocus.prototype.getTable = function () {\n return this.parent.getContent().querySelector('.e-frozen-right-content .e-table');\n };\n FixedRightContentFocus.prototype.jump = function (action, current) {\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'shiftEnter';\n var toHeader = (action === 'upArrow' || enterFrozen) && current[0] === 0;\n var toFrozenSwap = this.parent.getFrozenMode() === leftRight && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n return {\n swap: toHeader || ((action === 'shiftTab' || action === 'leftArrow') && current[1] === 0)\n || (action === 'tab' && current[0] < this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)),\n toHeader: toHeader,\n toFrozenRight: toHeader,\n toFrozen: toFrozenSwap\n };\n };\n FixedRightContentFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current2 = [];\n if (action === 'rightArrow' || action === 'tab') {\n current2[0] = previous[0];\n current2[1] = -1;\n }\n if (action === 'downArrow' || action === 'enter') {\n current2[0] = -1;\n current2[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current2[0] = previous[0] - 1;\n current2[1] = this.matrix.matrix[current2[0]].length;\n }\n return current2;\n };\n return FixedRightContentFocus;\n}(ContentFocus));\nvar FixedRightHeaderFocus = /** @__PURE__ @class */ (function (_super) {\n __extends$14(FixedRightHeaderFocus, _super);\n function FixedRightHeaderFocus() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FixedRightHeaderFocus.prototype.jump = function (action, current) {\n var headerMat = this.parent.focusModule.header && this.parent.focusModule.header.matrix.matrix;\n var isPresent = headerMat && !isNullOrUndefined(headerMat[current[0]]);\n var enterFrozen = this.parent.frozenRows !== 0 && action === 'enter';\n var frozenSwap = (action === 'leftArrow' || (action === 'shiftLeft' && this.getGridSeletion())\n || action === 'shiftTab') && (current[1] === 0 || current[1] === this.matrix.matrix[current[0]].indexOf(1))\n || (current[0] < this.matrix.matrix.length - 1 && action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1));\n var swap = ((action === 'downArrow' || enterFrozen || (action === 'tab'\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1))) && current[0] === this.matrix.matrix.length - 1) ||\n (isPresent && frozenSwap);\n var fSwap = action === 'tab' && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1);\n var frSwap = (action === 'downArrow' || enterFrozen) && current[0] === this.matrix.matrix.length - 1;\n if (action === 'tab' && current[0] === this.matrix.matrix.length - 1\n && current[1] === this.matrix.matrix[current[0]].lastIndexOf(1)) {\n this.matrix.current[0] = -1;\n }\n return { swap: swap, toHeader: frozenSwap, toFrozen: fSwap, toFrozenRight: frSwap };\n };\n FixedRightHeaderFocus.prototype.getTable = function () {\n return (this.parent.getHeaderContent().querySelector('.e-frozen-right-header .e-table'));\n };\n FixedRightHeaderFocus.prototype.getNextCurrent = function (previous, swap, active, action) {\n if (previous === void 0) { previous = []; }\n var current3 = [];\n if (action === 'rightArrow' || (action === 'shiftRight' && this.getGridSeletion()) || action === 'tab') {\n current3[0] = previous[0];\n current3[1] = -1;\n }\n if (action === 'upArrow' || action === 'shiftEnter') {\n current3[0] = this.matrix.matrix.length;\n current3[1] = previous[1];\n }\n if (action === 'shiftTab') {\n current3[0] = previous[0] === -1 ? this.matrix.matrix.length - 1 : previous[0] - 1;\n current3[1] = this.matrix.matrix[current3[0]].length;\n }\n return current3;\n };\n FixedRightHeaderFocus.prototype.getHeaderType = function () {\n return 'FixedRightHeaderFocus';\n };\n return FixedRightHeaderFocus;\n}(HeaderFocus));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Configures the paging behavior of the Grid.\n */\nvar PageSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$15(PageSettings, _super);\n function PageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(12)\n ], PageSettings.prototype, \"pageSize\", void 0);\n __decorate$2([\n Property(8)\n ], PageSettings.prototype, \"pageCount\", void 0);\n __decorate$2([\n Property(1)\n ], PageSettings.prototype, \"currentPage\", void 0);\n __decorate$2([\n Property()\n ], PageSettings.prototype, \"totalRecordsCount\", void 0);\n __decorate$2([\n Property(false)\n ], PageSettings.prototype, \"enableQueryString\", void 0);\n __decorate$2([\n Property(false)\n ], PageSettings.prototype, \"pageSizes\", void 0);\n __decorate$2([\n Property(null)\n ], PageSettings.prototype, \"template\", void 0);\n return PageSettings;\n}(ChildProperty));\n\nvar __extends$16 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Configures the column chooser behavior of the Grid.\n */\nvar ColumnChooserSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$16(ColumnChooserSettings, _super);\n function ColumnChooserSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property('startsWith')\n ], ColumnChooserSettings.prototype, \"operator\", void 0);\n __decorate$3([\n Property(false)\n ], ColumnChooserSettings.prototype, \"ignoreAccent\", void 0);\n return ColumnChooserSettings;\n}(ChildProperty));\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};\n/**\n * The `Selection` module is used to handle cell and row selection.\n */\nvar Selection = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid selection module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SelectionSettings} selectionSettings - specifies the selectionsettings\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Selection(parent, selectionSettings, locator) {\n //Internal letiables\n /**\n * @hidden\n */\n this.selectedRowIndexes = [];\n /**\n * @hidden\n */\n this.selectedRowCellIndexes = [];\n /**\n * @hidden\n */\n this.selectedRecords = [];\n /**\n * @hidden\n */\n this.preventFocus = false;\n /**\n * @hidden\n */\n this.selectedColumnsIndexes = [];\n this.checkBoxState = false;\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n this.enableSelectMultiTouch = false;\n this.clearRowCheck = false;\n this.selectRowCheck = false;\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.totalRecordsCount = 0;\n this.chkAllCollec = [];\n this.isCheckedOnAdd = false;\n this.persistSelectedData = [];\n this.deSelectedData = [];\n this.isHdrSelectAllClicked = false;\n this.needColumnSelection = false;\n this.isCancelDeSelect = false;\n this.isPreventCellSelect = false;\n this.disableUI = false;\n this.isPersisted = false;\n this.cmdKeyPressed = false;\n this.cellselected = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.initialRowSelection = false;\n this.isPrevRowSelection = false;\n this.isKeyAction = false;\n this.isRowDragSelected = false;\n this.isPartialSelection = false;\n this.rmtHdrChkbxClicked = false;\n /**\n * @hidden\n */\n this.autoFillRLselection = true;\n this.bottom = '0 0 2px 0';\n this.top = '2px 0 0 0';\n /* eslint-disable */\n this.right_bottom = '0 2px 2px 0';\n this.bottom_left = '0 0 2px 2px';\n this.top_right = '2px 2px 0 0';\n this.top_left = '2px 0 0 2px';\n this.top_bottom = '2px 0 2px 0';\n this.top_right_bottom = '2px 2px 2px 0';\n this.top_bottom_left = '2px 0 2px 2px';\n this.top_right_left = '2px 2px 0 2px';\n this.right_bottom_left = '0 2px 2px 2px';\n this.all_border = '2px';\n this.parent = parent;\n this.selectionSettings = selectionSettings;\n this.factory = locator.getService('rendererFactory');\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.wireEvents();\n }\n Selection.prototype.initializeSelection = function () {\n this.parent.log('selection_key_missing');\n this.render();\n };\n /**\n * The function used to trigger onActionBegin\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionBegin = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n };\n Selection.prototype.fDataUpdate = function (args) {\n if (!this.isMultiSelection && (!isNullOrUndefined(args.cellIndex) || !isNullOrUndefined(args.rowIndex))) {\n var rowObj = this.getRowObj(isNullOrUndefined(args.rowIndex) ? isNullOrUndefined(args.cellIndex) ?\n this.currentIndex : args.cellIndex.rowIndex : args.rowIndex);\n args.foreignKeyData = rowObj.foreignKeyData;\n }\n return args;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {Object} args - specifies the args\n * @param {string} type - specifies the type\n * @returns {void}\n * @hidden\n */\n Selection.prototype.onActionComplete = function (args, type) {\n this.parent.trigger(type, this.fDataUpdate(args));\n this.isMultiSelection = false;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Selection.prototype.getModuleName = function () {\n return 'selection';\n };\n /**\n * To destroy the selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.hidePopUp();\n this.clearSelection();\n this.removeEventListener();\n this.unWireEvents();\n EventHandler.remove(this.parent.getContent(), 'mousedown', this.mouseDownHandler);\n EventHandler.remove(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler);\n };\n Selection.prototype.isEditing = function () {\n return (this.parent.editSettings.mode === 'Normal' || (this.parent.editSettings.mode === 'Batch' && this.parent.editModule &&\n this.parent.editModule.formObj && !this.parent.editModule.formObj.validate())) &&\n this.parent.isEdit && !this.parent.isPersistSelection;\n };\n Selection.prototype.getSelectedMovableRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && this.parent.getContent().querySelector('.' + movableContent)) {\n return gObj.getMovableRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getSelectedFrozenRightRow = function (index) {\n var gObj = this.parent;\n if (gObj.isFrozenGrid() && gObj.getFrozenMode() === leftRight && gObj.getFrozenRightContent()) {\n return gObj.getFrozenRightRowByIndex(index);\n }\n return null;\n };\n Selection.prototype.getCurrentBatchRecordChanges = function () {\n var gObj = this.parent;\n if (gObj.editSettings.mode === 'Batch' && gObj.editModule) {\n var currentRecords = iterateExtend(this.parent.getCurrentViewRecords());\n currentRecords = gObj.editSettings.newRowPosition === 'Bottom' ?\n currentRecords.concat(this.parent.editModule.getBatchChanges()[addedRecords]) :\n this.parent.editModule.getBatchChanges()[addedRecords].concat(currentRecords);\n var deletedRecords$$1 = this.parent.editModule.getBatchChanges()[deletedRecords];\n var primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < (deletedRecords$$1.length); i++) {\n for (var j = 0; j < currentRecords.length; j++) {\n if (deletedRecords$$1[parseInt(i.toString(), 10)][\"\" + primaryKey] === currentRecords[parseInt(j.toString(), 10)][\"\" + primaryKey]) {\n currentRecords.splice(j, 1);\n break;\n }\n }\n }\n return currentRecords;\n }\n else {\n return gObj.getCurrentViewRecords();\n }\n };\n /**\n * Selects a row by the given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectRow = function (index, isToggle) {\n if (this.selectedRowIndexes.length && this.selectionSettings.enableSimpleMultiRowSelection) {\n this.addRowsToSelection([index]);\n return;\n }\n var gObj = this.parent;\n var selectedRow = gObj.getRowByIndex(index);\n var rowObj = selectedRow && gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid'));\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n return;\n }\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n var selectData;\n var isRemoved = false;\n if (gObj.enableVirtualization && index > -1) {\n var e = { selectedIndex: index, isAvailable: true };\n this.parent.notify(selectVirtualRow, e);\n var frozenData = gObj.isFrozenGrid() ? gObj.contentModule.getRowObjectByIndex(index)\n : null;\n if (selectedRow && (gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')) || frozenData)) {\n selectData = frozenData ? frozenData : gObj.getRowObjectFromUID(selectedRow.getAttribute('data-uid')).data;\n }\n else {\n if (e.isAvailable && !gObj.selectionSettings.persistSelection) {\n var prevSelectedData = this.parent.getSelectedRecords();\n if (prevSelectedData.length > 0) {\n this.clearRowSelection();\n }\n }\n return;\n }\n }\n else {\n selectData = this.getRowObj(index).data;\n }\n if (!this.isRowType() || !selectedRow || this.isEditing()) {\n // if (this.isEditing()) {\n // gObj.selectedRowIndex = index;\n // }\n return;\n }\n var isRowSelected = selectedRow.hasAttribute('aria-selected');\n this.activeTarget();\n isToggle = !isToggle ? isToggle :\n !this.selectedRowIndexes.length ? false :\n (this.selectedRowIndexes.length === 1 ? (this.isKeyAction && this.parent.isCheckBoxSelection ?\n false : index === this.selectedRowIndexes[0]) : false);\n this.isKeyAction = false;\n var args;\n var can = 'cancel';\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest, row: selectedRow,\n previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(rowSelecting, this.fDataUpdate(args), this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can));\n }\n else {\n this.rowSelectingCallBack(args, isToggle, index, selectData, isRemoved, isRowSelected, can)(args);\n }\n };\n Selection.prototype.rowSelectingCallBack = function (args, isToggle, index, selectData, isRemoved, isRowSelected, can) {\n var _this = this;\n return function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.index = index;\n _this.toggle = isToggle;\n _this.data = selectData;\n _this.removed = isRemoved;\n if (isRowSelected && _this.selectionSettings.persistSelection && !(_this.selectionSettings.checkboxMode === 'ResetOnRowClick')) {\n _this.clearSelectedRow(index);\n _this.selectRowCallBack();\n }\n else if (!isRowSelected && _this.selectionSettings.persistSelection &&\n _this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n _this.selectRowCallBack();\n }\n if (_this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n _this.clearSelection();\n }\n if (!_this.selectionSettings.persistSelection || _this.selectionSettings.checkboxMode === 'ResetOnRowClick' ||\n (!_this.parent.isCheckBoxSelection && _this.selectionSettings.persistSelection)) {\n _this.selectRowCheck = true;\n _this.clearRow();\n }\n };\n };\n Selection.prototype.selectRowCallBack = function () {\n var gObj = this.parent;\n var args;\n var index = this.index;\n var isToggle = this.toggle;\n var selectData = this.data;\n var isRemoved = this.removed;\n var selectedRow = gObj.getRowByIndex(index);\n var selectedMovableRow = this.getSelectedMovableRow(index);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(index);\n if (!isToggle && !isRemoved) {\n if (this.selectedRowIndexes.indexOf(index) <= -1) {\n this.updateRowSelection(selectedRow, index);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, index);\n }\n this.selectRowIndex(index);\n }\n if (!isToggle) {\n args = {\n data: selectData, rowIndex: index,\n row: selectedRow, previousRow: gObj.getRowByIndex(this.prevRowIndex),\n previousRowIndex: this.prevRowIndex, target: this.actualTarget, isInteracted: this.isInteracted,\n isHeaderCheckBoxClicked: this.isHeaderCheckboxClicked, rowIndexes: index\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(index);\n };\n Selection.prototype.selectMovableRow = function (selectedMovableRow, selectedFrozenRightRow, index) {\n if (this.parent.isFrozenGrid()) {\n this.updateRowSelection(selectedMovableRow, index);\n if (this.parent.getFrozenMode() === leftRight && selectedFrozenRightRow) {\n this.updateRowSelection(selectedFrozenRightRow, index);\n }\n }\n };\n Selection.prototype.addMovableArgs = function (targetObj, mRow, frRow) {\n if (this.parent.isFrozenGrid()) {\n var mObj = { mRow: mRow, previousMovRow: this.parent.getMovableRows()[this.prevRowIndex] };\n var frozenRightRow = 'frozenRightRow';\n var previousFrozenRightRow = 'previousFrozenRightRow';\n if (this.parent.getFrozenMode() === leftRight && frRow) {\n mObj[\"\" + frozenRightRow] = frRow;\n mObj[\"\" + previousFrozenRightRow] = this.parent.getFrozenRightDataRows()[this.prevRowIndex];\n }\n targetObj = __assign({}, targetObj, mObj);\n }\n return targetObj;\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Selection.prototype.selectRowsByRange = function (startIndex, endIndex) {\n this.selectRows(this.getCollectionFromIndexes(startIndex, endIndex));\n this.selectRowIndex(endIndex);\n };\n Selection.prototype.selectedDataUpdate = function (selectedData, foreignKeyData$$1, selectedRows, rowIndexes, selectableRowIndex) {\n for (var i = 0, len = rowIndexes.length; i < len; i++) {\n var currentRow = this.parent.getDataRows()[rowIndexes[parseInt(i.toString(), 10)]];\n if (this.parent.enableVirtualization) {\n currentRow = this.parent.getRowByIndex(rowIndexes[parseInt(i.toString(), 10)]);\n }\n var rowObj = this.getRowObj(currentRow);\n if (rowObj && rowObj.isDataRow && rowObj.isSelectable) {\n selectedData.push(rowObj.data);\n selectedRows.push(currentRow);\n foreignKeyData$$1.push(rowObj.foreignKeyData);\n }\n else {\n if (this.isPartialSelection && selectableRowIndex) {\n selectableRowIndex.splice(selectableRowIndex.indexOf(rowIndexes[parseInt(i.toString(), 10)]), 1);\n }\n }\n }\n };\n /**\n * Selects a collection of rows by index.\n *\n * @param {number[]} rowIndexes - Specifies an array of row indexes.\n * @returns {void}\n */\n Selection.prototype.selectRows = function (rowIndexes) {\n var _this = this;\n var gObj = this.parent;\n var selectableRowIndex = rowIndexes.slice();\n var rowIndex = !this.isSingleSel() ? rowIndexes[0] : rowIndexes[rowIndexes.length - 1];\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData$$1 = [];\n var selectedMovableRow = this.getSelectedMovableRow(rowIndex);\n var selectedFrozenRightRow = this.getSelectedFrozenRightRow(rowIndex);\n var can = 'cancel';\n var selectedData = [];\n if (!this.isRowType() || this.isEditing()) {\n return;\n }\n this.selectedDataUpdate(selectedData, foreignKeyData$$1, selectedRows, rowIndexes, selectableRowIndex);\n this.activeTarget();\n var args = {\n cancel: false,\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: this.actualTarget,\n prevRow: gObj.getRows()[this.prevRowIndex], previousRowIndex: this.prevRowIndex,\n isInteracted: this.isInteracted, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n data: selectedData, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData$$1\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(rowSelecting, this.fDataUpdate(args), function (args) {\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n _this.disableInteracted();\n return;\n }\n _this.clearRow();\n _this.selectRowIndex(selectableRowIndex.slice(-1)[0]);\n var selectRowFn = function (index, preventFocus) {\n _this.updateRowSelection(gObj.getRowByIndex(index), index, preventFocus);\n if (gObj.isFrozenGrid()) {\n var rightEle = _this.parent.getFrozenMode() === leftRight ? gObj.getFrozenRightRowByIndex(index)\n : undefined;\n _this.selectMovableRow(gObj.getMovableRowByIndex(index), rightEle, index);\n }\n _this.updateRowProps(rowIndex);\n };\n if (!_this.isSingleSel()) {\n for (var _i = 0, selectableRowIndex_1 = selectableRowIndex; _i < selectableRowIndex_1.length; _i++) {\n var rowIdx = selectableRowIndex_1[_i];\n selectRowFn(rowIdx, gObj.enableVirtualization ? true : false);\n }\n }\n else {\n selectRowFn(rowIndex);\n }\n args = {\n rowIndexes: selectableRowIndex, row: selectedRows, rowIndex: rowIndex, target: _this.actualTarget,\n prevRow: gObj.getRows()[_this.prevRowIndex], previousRowIndex: _this.prevRowIndex,\n data: _this.getSelectedRecords(), isInteracted: _this.isInteracted,\n isHeaderCheckboxClicked: _this.isHeaderCheckboxClicked, foreignKeyData: foreignKeyData$$1\n };\n args = _this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n if (_this.isRowSelected) {\n _this.onActionComplete(args, rowSelected);\n }\n _this.isInteracted = false;\n });\n };\n /**\n * Select rows with existing row selection by passing row indexes.\n *\n * @param {number} rowIndexes - Specifies the row indexes.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addRowsToSelection = function (rowIndexes) {\n var gObj = this.parent;\n var can = 'cancel';\n var target = this.target;\n this.isMultiSelection = true;\n var selectedRows = [];\n var foreignKeyData$$1 = [];\n var selectedData = [];\n var indexes = gObj.getSelectedRowIndexes().concat(rowIndexes);\n var selectedRow = !this.isSingleSel() ? gObj.getRowByIndex(rowIndexes[0]) :\n gObj.getRowByIndex(rowIndexes[rowIndexes.length - 1]);\n var selectedMovableRow = !this.isSingleSel() ? this.getSelectedMovableRow(rowIndexes[0]) :\n this.getSelectedMovableRow(rowIndexes[rowIndexes.length - 1]);\n var selectedFrozenRightRow = !this.isSingleSel() ? this.getSelectedFrozenRightRow(rowIndexes[0]) :\n this.getSelectedFrozenRightRow(rowIndexes[rowIndexes.length - 1]);\n if ((!this.isRowType() || this.isEditing()) && !this.selectionSettings.checkboxOnly) {\n return;\n }\n var args;\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (this.isMultiCtrlRequest && !checkboxColumn.length) {\n this.selectedDataUpdate(selectedData, foreignKeyData$$1, selectedRows, indexes);\n }\n for (var _i = 0, rowIndexes_1 = rowIndexes; _i < rowIndexes_1.length; _i++) {\n var rowIndex = rowIndexes_1[_i];\n var rowObj = this.getRowObj(rowIndex);\n var isUnSelected = this.selectedRowIndexes.indexOf(rowIndex) > -1;\n if (this.isPartialSelection && rowObj && rowObj.isDataRow && !rowObj.isSelectable) {\n continue;\n }\n this.selectRowIndex(rowIndex);\n if (isUnSelected && ((checkboxColumn.length ? true : this.selectionSettings.enableToggle) || this.isMultiCtrlRequest)) {\n this.isAddRowsToSelection = true;\n this.rowDeselect(rowDeselecting, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target);\n if (this.isCancelDeSelect) {\n return;\n }\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(rowIndex), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedRow), 1);\n this.selectRowIndex(this.selectedRowIndexes.length ? this.selectedRowIndexes[this.selectedRowIndexes.length - 1] : -1);\n selectedRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedRow, false, null, 'e-selectionbackground', 'e-active');\n if (selectedMovableRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedMovableRow), 1);\n selectedMovableRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedMovableRow, false, null, 'e-selectionbackground', 'e-active');\n }\n if (selectedFrozenRightRow) {\n this.selectedRecords.splice(this.selectedRecords.indexOf(selectedFrozenRightRow), 1);\n selectedFrozenRightRow.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedFrozenRightRow, false, null, 'e-selectionbackground', 'e-active');\n }\n this.rowDeselect(rowDeselected, [rowIndex], [rowObj.data], [selectedRow], [rowObj.foreignKeyData], target, [selectedMovableRow], undefined, [selectedFrozenRightRow]);\n this.isInteracted = false;\n this.isMultiSelection = false;\n this.isAddRowsToSelection = false;\n this.isHdrSelectAllClicked = false;\n }\n else {\n this.activeTarget();\n args = {\n cancel: false,\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n foreignKeyData: foreignKeyData$$1.length ? foreignKeyData$$1 : rowObj.foreignKeyData, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.parent.trigger(rowSelecting, this.fDataUpdate(args));\n if (!isNullOrUndefined(args) && args[\"\" + can] === true) {\n this.disableInteracted();\n return;\n }\n if (this.isSingleSel()) {\n this.clearRow();\n }\n this.updateRowSelection(selectedRow, rowIndex);\n this.selectMovableRow(selectedMovableRow, selectedFrozenRightRow, rowIndex);\n }\n if (!isUnSelected) {\n args = {\n data: selectedData.length ? selectedData : rowObj.data, rowIndex: rowIndex, row: selectedRows.length ? selectedRows :\n selectedRow, target: this.actualTarget, prevRow: gObj.getRows()[this.prevRowIndex],\n previousRowIndex: this.prevRowIndex, foreignKeyData: foreignKeyData$$1.length ? foreignKeyData$$1 : rowObj.foreignKeyData,\n isInteracted: this.isInteracted, isHeaderCheckboxClicked: this.isHeaderCheckboxClicked, rowIndexes: indexes\n };\n args = this.addMovableArgs(args, selectedMovableRow, selectedFrozenRightRow);\n this.onActionComplete(args, rowSelected);\n }\n this.isInteracted = false;\n this.updateRowProps(rowIndex);\n if (this.isSingleSel()) {\n break;\n }\n }\n };\n Selection.prototype.getCollectionFromIndexes = function (startIndex, endIndex) {\n var indexes = [];\n // eslint-disable-next-line prefer-const\n var _a = (startIndex <= endIndex) ?\n { i: startIndex, max: endIndex } : { i: endIndex, max: startIndex }, i = _a.i, max = _a.max;\n for (; i <= max; i++) {\n indexes.push(i);\n }\n if (startIndex > endIndex) {\n indexes.reverse();\n }\n return indexes;\n };\n Selection.prototype.clearRow = function () {\n this.clearRowCheck = true;\n this.clearRowSelection();\n };\n Selection.prototype.clearRowCallBack = function () {\n if (this.isCancelDeSelect && this.parent.checkAllRows !== 'Check') {\n return;\n }\n this.selectedRowIndexes = [];\n this.selectedRecords = [];\n this.selectRowIndex(-1);\n if (this.isSingleSel() && this.parent.isPersistSelection) {\n this.selectedRowState = {};\n }\n };\n Selection.prototype.clearSelectedRow = function (index) {\n if (this.toggle) {\n var selectedEle = this.parent.getRowByIndex(index);\n if (!this.disableUI) {\n selectedEle.removeAttribute('aria-selected');\n this.addRemoveClassesForRow(selectedEle, false, true, 'e-selectionbackground', 'e-active');\n }\n this.removed = true;\n this.updatePersistCollection(selectedEle, false);\n this.updateCheckBoxes(selectedEle);\n this.selectedRowIndexes.splice(this.selectedRowIndexes.indexOf(index), 1);\n this.selectedRecords.splice(this.selectedRecords.indexOf(this.parent.getRowByIndex(index)), 1);\n }\n };\n Selection.prototype.updateRowProps = function (startIndex) {\n this.prevRowIndex = startIndex;\n this.isRowSelected = this.selectedRowIndexes.length && true;\n };\n Selection.prototype.getPkValue = function (pkField, data) {\n return pkField ? isComplexField(pkField) ? getObject(pkField, data) : data[\"\" + pkField] : data[\"\" + pkField];\n };\n Selection.prototype.updatePersistCollection = function (selectedRow, chkState) {\n var _this = this;\n if ((this.parent.isPersistSelection || this.parent.selectionSettings.persistSelection &&\n this.parent.getPrimaryKeyFieldNames().length > 0) && !isNullOrUndefined(selectedRow)) {\n if (!this.parent.isPersistSelection) {\n this.ensureCheckboxFieldSelection();\n }\n var rowObj = this.getRowObj(selectedRow);\n var pKey_1 = rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (pKey_1 === null) {\n return;\n }\n rowObj.isSelected = chkState;\n if ((chkState && !this.isPartialSelection) || (this.isPartialSelection && rowObj.isSelectable && rowObj.isSelected)) {\n this.selectedRowState[\"\" + pKey_1] = chkState;\n delete (this.unSelectedRowState[\"\" + pKey_1]);\n if (!this.persistSelectedData.some(function (data) { return _this.getPkValue(_this.primaryKey, data) === pKey_1; })) {\n this.persistSelectedData.push(rowObj.data);\n }\n }\n else {\n this.updatePersistDelete(pKey_1);\n }\n }\n };\n Selection.prototype.updatePersistDelete = function (pKey, isPartialSelection) {\n var _this = this;\n delete (this.selectedRowState[\"\" + pKey]);\n if (this.rmtHdrChkbxClicked) {\n this.unSelectedRowState[\"\" + pKey] = true;\n }\n var index;\n var isPresent = this.persistSelectedData.some(function (data, i) {\n index = i;\n return _this.getPkValue(_this.primaryKey, data) === pKey;\n });\n if (isPresent) {\n this.persistSelectedData.splice(index, 1);\n if (isPartialSelection) {\n this.parent.partialSelectedRecords.splice(index, 1);\n }\n }\n };\n Selection.prototype.updateCheckBoxes = function (row$$1, chkState, rowIndex) {\n if (!isNullOrUndefined(row$$1)) {\n var chkBox = row$$1.querySelector('.e-checkselect');\n if (!isNullOrUndefined(chkBox)) {\n removeAddCboxClasses(chkBox.nextElementSibling, chkState);\n setChecked(chkBox, chkState);\n if (isNullOrUndefined(this.checkedTarget) || (!isNullOrUndefined(this.checkedTarget)\n && !this.checkedTarget.classList.contains('e-checkselectall'))) {\n this.setCheckAllState(rowIndex);\n }\n }\n }\n };\n Selection.prototype.updateRowSelection = function (selectedRow, startIndex, preventFocus) {\n if (!selectedRow) {\n return;\n }\n this.selectedRowIndexes.push(startIndex);\n var len = this.selectedRowIndexes.length;\n if (this.parent.isFrozenGrid() && len > 1) {\n if ((this.selectedRowIndexes[len - 2] === this.selectedRowIndexes[len - 1])) {\n this.selectedRowIndexes.pop();\n }\n }\n this.selectedRecords.push(selectedRow);\n selectedRow.setAttribute('aria-selected', 'true');\n this.updatePersistCollection(selectedRow, true);\n this.updateCheckBoxes(selectedRow, true);\n this.addRemoveClassesForRow(selectedRow, true, null, 'e-selectionbackground', 'e-active');\n if (!this.preventFocus) {\n var target = this.focus.getPrevIndexes().cellIndex ?\n selectedRow.cells[this.focus.getPrevIndexes().cellIndex] :\n selectedRow.querySelector('.e-selectionbackground:not(.e-hide):not(.e-detailrowcollapse):not(.e-detailrowexpand)');\n if (this.parent.contextMenuModule && this.mouseButton === 2) {\n target = this.parent.contextMenuModule.cell;\n }\n if (!target || preventFocus) {\n return;\n }\n this.focus.onClick({ target: target }, true);\n }\n };\n /**\n * Deselects the currently selected rows and cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearSelection = function () {\n this.checkSelectAllClicked = true;\n if (this.selectionSettings.persistSelection && this.persistSelectedData.length) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (!this.parent.isPersistSelection || (this.parent.isPersistSelection && !this.parent.isEdit) ||\n (!isNullOrUndefined(this.checkedTarget) && this.checkedTarget.classList.contains('e-checkselectall'))) {\n var span = this.parent.element.querySelector('.e-gridpopup').querySelector('span');\n if (span.classList.contains('e-rowselect')) {\n span.classList.remove('e-spanclicked');\n }\n if (this.parent.isPersistSelection) {\n this.persistSelectedData = [];\n this.selectedRowState = {};\n }\n this.clearRowSelection();\n this.clearCellSelection();\n this.clearColumnSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n this.enableSelectMultiTouch = false;\n this.isInteracted = false;\n this.checkSelectAllClicked = false;\n this.isHdrSelectAllClicked = false;\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Selection.prototype.clearRowSelection = function () {\n var _this = this;\n if (this.isRowSelected) {\n var gObj = this.parent;\n var rows_1 = this.parent.getDataRows();\n var data_1 = [];\n var row_1 = [];\n var mRow_1 = [];\n var fRightRow_1 = [];\n var rowIndex_1 = [];\n var foreignKeyData_1 = [];\n var target_1 = this.target;\n for (var i = 0, len = this.selectedRowIndexes.length; i < len; i++) {\n var currentRow = this.parent.editSettings.mode === 'Batch' ?\n this.parent.getRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]]\n : this.parent.getDataRows()[this.selectedRowIndexes[parseInt(i.toString(), 10)]];\n var rowObj = this.getRowObj(currentRow);\n if (rowObj) {\n data_1.push(rowObj.data);\n row_1.push(currentRow);\n rowIndex_1.push(this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n foreignKeyData_1.push(rowObj.foreignKeyData);\n }\n if (gObj.isFrozenGrid()) {\n var mRows = gObj.getMovableRows();\n if (mRows && mRows.length) {\n mRow_1.push(mRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n if (gObj.getFrozenMode() === leftRight) {\n var frRows = gObj.getFrozenRightRows();\n if (frRows && frRows.length) {\n fRightRow_1.push(frRows[this.selectedRowIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n }\n if (this.selectionSettings.persistSelection && this.selectionSettings.checkboxMode !== 'ResetOnRowClick') {\n this.isRowClicked = this.checkSelectAllClicked ? true : false;\n }\n this.rowDeselect(rowDeselecting, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, function () {\n if (_this.isCancelDeSelect && (_this.isRowClicked || _this.checkSelectAllClicked || (_this.isInteracted &&\n !_this.parent.isPersistSelection))) {\n if (_this.parent.isPersistSelection) {\n if (_this.getCheckAllStatus(_this.parent.element.querySelector('.e-checkselectall')) === 'Intermediate') {\n for (var i = 0; i < _this.selectedRecords.length; i++) {\n _this.updatePersistCollection(_this.selectedRecords[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n _this.parent.checkAllRows = 'Check';\n _this.updatePersistSelectedData(true);\n }\n }\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n return;\n }\n var element = [].slice.call(rows_1.filter(function (record) { return record.hasAttribute('aria-selected'); }));\n for (var j = 0; j < element.length; j++) {\n if (!_this.disableUI) {\n element[parseInt(j.toString(), 10)].removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(element[parseInt(j.toString(), 10)], false, true, 'e-selectionbackground', 'e-active');\n }\n // tslint:disable-next-line:align\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(element[parseInt(j.toString(), 10)], false);\n }\n _this.updateCheckBoxes(element[parseInt(j.toString(), 10)]);\n }\n for (var i = 0, len = _this.selectedRowIndexes.length; i < len; i++) {\n var movableRow = _this.getSelectedMovableRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (movableRow) {\n if (!_this.disableUI) {\n movableRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(movableRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(movableRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(movableRow, false);\n }\n }\n var frRow = _this.getSelectedFrozenRightRow(_this.selectedRowIndexes[parseInt(i.toString(), 10)]);\n if (frRow) {\n if (!_this.disableUI) {\n frRow.removeAttribute('aria-selected');\n _this.addRemoveClassesForRow(frRow, false, true, 'e-selectionbackground', 'e-active');\n }\n _this.updateCheckBoxes(frRow);\n if (!_this.isPrevRowSelection) {\n _this.updatePersistCollection(frRow, false);\n }\n }\n }\n _this.selectedRowIndexes = [];\n _this.selectedRecords = [];\n _this.isRowSelected = false;\n _this.selectRowIndex(-1);\n _this.isPrevRowSelection = false;\n _this.rowDeselect(rowDeselected, rowIndex_1, data_1, row_1, foreignKeyData_1, target_1, mRow_1, undefined, fRightRow_1);\n if (_this.clearRowCheck) {\n _this.clearRowCallBack();\n _this.clearRowCheck = false;\n if (_this.selectRowCheck) {\n _this.selectRowCallBack();\n _this.selectRowCheck = false;\n }\n }\n }, fRightRow_1);\n }\n else {\n if (this.clearRowCheck) {\n this.clearRowCallBack();\n this.clearRowCheck = false;\n if (this.selectRowCheck) {\n this.selectRowCallBack();\n this.selectRowCheck = false;\n }\n }\n }\n };\n Selection.prototype.rowDeselect = function (type, rowIndex, data, row$$1, foreignKeyData$$1, target, mRow, rowDeselectCallBack, frozenRightRow) {\n var _this = this;\n if ((this.selectionSettings.persistSelection && (this.isRowClicked || this.checkSelectAllClicked || (this.focus['activeKey'] &&\n this.focus.currentInfo.element.classList.contains('e-gridchkbox') && this.focus['activeKey'] === 'space'))) ||\n !this.selectionSettings.persistSelection) {\n var cancl_1 = 'cancel';\n var isSingleDeSel = rowIndex.length === 1 && this.deSelectedData.length === 1;\n var rowDeselectObj = {\n rowIndex: rowIndex[0], data: this.selectionSettings.persistSelection && (this.parent.checkAllRows === 'Uncheck' &&\n !isSingleDeSel) && this.selectionSettings.checkboxMode !== 'ResetOnRowClick' ? this.deSelectedData : data,\n foreignKeyData: foreignKeyData$$1, cancel: false, isInteracted: this.isInteracted,\n isHeaderCheckboxClicked: this.isHeaderCheckboxClicked\n };\n if (type === 'rowDeselected') {\n delete rowDeselectObj.cancel;\n }\n var rowInString = 'row';\n var target_2 = 'target';\n var rowidx = 'rowIndex';\n var rowidxex = 'rowIndexes';\n var dataTxt = 'data';\n var foreignKey = 'foreignKeyData';\n rowDeselectObj[\"\" + rowInString] = row$$1;\n rowDeselectObj[\"\" + target_2] = this.actualTarget;\n var isHeaderCheckBxClick = this.actualTarget && !isNullOrUndefined(closest(this.actualTarget, 'thead'));\n if (isHeaderCheckBxClick || rowIndex.length > 1) {\n rowDeselectObj[\"\" + rowidx] = rowIndex[0];\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n else if (rowIndex.length === 1) {\n rowDeselectObj[\"\" + dataTxt] = rowDeselectObj[\"\" + dataTxt][0];\n rowDeselectObj[\"\" + rowInString] = rowDeselectObj[\"\" + rowInString][0];\n rowDeselectObj[\"\" + foreignKey] = rowDeselectObj[\"\" + foreignKey][0];\n if (this.isAddRowsToSelection) {\n rowDeselectObj[\"\" + rowidxex] = rowIndex;\n }\n }\n this.parent.trigger(type, this.parent.isFrozenGrid() ? __assign({}, rowDeselectObj, { mRow: mRow, frozenRightRow: frozenRightRow }) : rowDeselectObj, function (args) {\n _this.isCancelDeSelect = args[\"\" + cancl_1];\n if (!_this.isCancelDeSelect || (!_this.isRowClicked && !_this.isInteracted && !_this.checkSelectAllClicked)) {\n _this.updatePersistCollection(row$$1[0], false);\n _this.updateCheckBoxes(row$$1[0], undefined, rowIndex[0]);\n if (mRow) {\n _this.updateCheckBoxes(mRow[0], undefined, rowIndex[0]);\n }\n if (frozenRightRow) {\n _this.updateCheckBoxes(frozenRightRow[0], undefined, rowIndex[0]);\n }\n }\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n });\n }\n else if (this.selectionSettings.persistSelection && !this.isInteracted) {\n if (rowDeselectCallBack !== undefined) {\n rowDeselectCallBack();\n }\n }\n };\n Selection.prototype.getRowObj = function (row$$1) {\n if (row$$1 === void 0) { row$$1 = this.currentIndex; }\n if (isNullOrUndefined(row$$1)) {\n return {};\n }\n if (typeof row$$1 === 'number') {\n row$$1 = this.parent.getRowByIndex(row$$1);\n }\n if (row$$1) {\n return this.parent.getRowObjectFromUID(row$$1.getAttribute('data-uid')) || {};\n }\n return {};\n };\n Selection.prototype.getSelectedMovableCell = function (cellIndex) {\n var gObj = this.parent;\n var col = gObj.getColumnByIndex(cellIndex.cellIndex);\n var frzCols = gObj.isFrozenGrid();\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n return gObj.getMovableCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n return null;\n }\n return null;\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Selection.prototype.selectCell = function (cellIndex, isToggle) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(cellIndex);\n var args;\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n this.currentIndex = cellIndex.rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (!this.isCellType() || !selectedCell || this.isEditing()) {\n return;\n }\n var isCellSelected = selectedCell.classList.contains('e-cellselectionbackground');\n isToggle = !isToggle ? isToggle : (!isUndefined(this.prevCIdxs) &&\n cellIndex.rowIndex === this.prevCIdxs.rowIndex && cellIndex.cellIndex === this.prevCIdxs.cellIndex &&\n isCellSelected);\n if (!isToggle) {\n args = {\n data: selectedData, cellIndex: cellIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ?\n this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined,\n cancel: false\n };\n var currentCell = 'currentCell';\n args[\"\" + currentCell] = selectedCell;\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(cellSelecting, this.fDataUpdate(args), this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData));\n this.cellselected = true;\n }\n else {\n this.successCallBack(args, isToggle, cellIndex, selectedCell, selectedData)(args);\n }\n };\n Selection.prototype.successCallBack = function (cellSelectingArgs, isToggle, cellIndex, selectedCell, selectedData) {\n var _this = this;\n return function (cellSelectingArgs) {\n var cncl = 'cancel';\n var currentCell = 'currentCell';\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n if (!isToggle) {\n cellSelectingArgs[\"\" + currentCell] = cellSelectingArgs[\"\" + currentCell] ? cellSelectingArgs[\"\" + currentCell] : selectedCell;\n }\n _this.clearCell();\n if (!isToggle) {\n _this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isToggle) {\n var args = {\n data: selectedData, cellIndex: cellIndex, currentCell: selectedCell,\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ?\n _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n _this.updateCellProps(cellIndex, cellIndex);\n _this.onActionComplete(args, cellSelected);\n }\n };\n };\n Selection.prototype.getCellIndex = function (rIdx, cIdx) {\n return (this.parent.getFrozenColumns() ? (cIdx >= this.parent.getFrozenColumns() ? this.parent.getMovableCellFromIndex(rIdx, cIdx)\n : this.parent.getCellFromIndex(rIdx, cIdx)) : this.parent.getCellFromIndex(rIdx, cIdx));\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Selection.prototype.selectCellsByRange = function (startIndex, endIndex) {\n var _this = this;\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(startIndex);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(startIndex.rowIndex, startIndex.cellIndex);\n }\n var min;\n var max;\n var stIndex = startIndex;\n var edIndex = endIndex = endIndex ? endIndex : startIndex;\n var cellIndexes;\n this.currentIndex = startIndex.rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var args = {\n data: selectedData, cellIndex: startIndex, currentCell: selectedCell,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n args[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.parent.trigger(cellSelecting, this.fDataUpdate(args), function (cellSelectingArgs) {\n if (!isNullOrUndefined(cellSelectingArgs) && cellSelectingArgs[\"\" + cncl] === true) {\n return;\n }\n _this.clearCell();\n if (startIndex.rowIndex > endIndex.rowIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex.rowIndex; i <= endIndex.rowIndex; i++) {\n if (_this.selectionSettings.cellSelectionMode.indexOf('Box') < 0) {\n min = i === startIndex.rowIndex ? (startIndex.cellIndex) : 0;\n max = i === endIndex.rowIndex ? (endIndex.cellIndex) : _this.getLastColIndex(i);\n }\n else {\n min = startIndex.cellIndex;\n max = endIndex.cellIndex;\n }\n cellIndexes = [];\n for (var j = min < max ? min : max, len = min > max ? min : max; j <= len; j++) {\n if (frzCols) {\n if (j < frzCols) {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(i, j);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(i, j);\n }\n if (!selectedCell) {\n continue;\n }\n cellIndexes.push(j);\n _this.updateCellSelection(selectedCell);\n _this.addAttribute(selectedCell);\n }\n _this.selectedRowCellIndexes.push({ rowIndex: i, cellIndexes: cellIndexes });\n }\n var cellSelectedArgs = {\n data: selectedData, cellIndex: edIndex, currentCell: gObj.getCellFromIndex(edIndex.rowIndex, edIndex.cellIndex),\n selectedRowCellIndex: _this.selectedRowCellIndexes,\n previousRowCell: _this.prevECIdxs ? _this.getCellIndex(_this.prevECIdxs.rowIndex, _this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + previousRowCellIndex] = _this.prevECIdxs;\n if (!_this.isDragged) {\n _this.onActionComplete(cellSelectedArgs, cellSelected);\n _this.cellselected = true;\n }\n _this.updateCellProps(stIndex, edIndex);\n });\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Selection.prototype.selectCells = function (rowCellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell = this.getSelectedMovableCell(rowCellIndexes[0]);\n var frzCols = gObj.getFrozenColumns();\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[0].rowIndex, rowCellIndexes[0].cellIndexes[0]);\n }\n this.currentIndex = rowCellIndexes[0].rowIndex;\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n var cellSelectArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n isShiftPressed: this.isMultiShiftRequest,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var previousRowCellIndex = 'previousRowCellIndex';\n cellSelectArgs[\"\" + previousRowCellIndex] = this.prevECIdxs;\n this.onActionBegin(cellSelectArgs, cellSelecting);\n for (var i = 0, len = rowCellIndexes.length; i < len; i++) {\n for (var j = 0, cellLen = rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes.length; j < cellLen; j++) {\n if (frzCols) {\n if (rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] < frzCols) {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n else {\n selectedCell = gObj.getMovableCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n }\n else {\n selectedCell = gObj.getCellFromIndex(rowCellIndexes[parseInt(i.toString(), 10)].rowIndex, rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]);\n }\n if (!selectedCell) {\n continue;\n }\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n this.addRowCellIndex({ rowIndex: rowCellIndexes[parseInt(i.toString(), 10)].rowIndex,\n cellIndex: rowCellIndexes[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)] });\n }\n }\n this.updateCellProps({ rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] }, { rowIndex: rowCellIndexes[0].rowIndex, cellIndex: rowCellIndexes[0].cellIndexes[0] });\n var cellSelectedArgs = {\n data: selectedData, cellIndex: rowCellIndexes[0].cellIndexes[0],\n currentCell: selectedCell, selectedRowCellIndex: this.selectedRowCellIndexes,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, cellSelected);\n };\n /**\n * Select cells with existing cell selection by passing row and column index.\n *\n * @param {IIndex} cellIndexes - Defines the collection of row and column index.\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addCellsToSelection = function (cellIndexes) {\n if (!this.isCellType()) {\n return;\n }\n var gObj = this.parent;\n var selectedCell;\n var index;\n this.currentIndex = cellIndexes[0].rowIndex;\n var cncl = 'cancel';\n var selectedData = this.getCurrentBatchRecordChanges()[this.currentIndex];\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n if (this.isSingleSel() || !this.isCellType() || this.isEditing()) {\n return;\n }\n this.hideAutoFill();\n var col = gObj.getColumnByIndex(cellIndexes[0].cellIndex);\n var rowObj;\n gridActionHandler(this.parent, function (tableName, rows) {\n rowObj = rows[cellIndexes[0].rowIndex];\n }, [\n !col.getFreezeTableName() || col.getFreezeTableName() === frozenLeft ? gObj.getRowsObject() : [],\n col.getFreezeTableName() === 'movable' ? gObj.getMovableRowsObject() : [],\n col.getFreezeTableName() === frozenRight ? gObj.getFrozenRightRowsObject() : []\n ]);\n if (gObj.groupSettings.columns.length > 0) {\n rowObj = gObj.getRowObjectFromUID(this.target.parentElement.getAttribute('data-uid'));\n }\n var foreignKeyData$$1 = [];\n for (var _i = 0, cellIndexes_1 = cellIndexes; _i < cellIndexes_1.length; _i++) {\n var cellIndex = cellIndexes_1[_i];\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === cellIndex.rowIndex) {\n index = i;\n break;\n }\n }\n selectedCell = this.getSelectedMovableCell(cellIndex);\n if (!selectedCell) {\n selectedCell = gObj.getCellFromIndex(cellIndex.rowIndex, this.getColIndex(cellIndex.rowIndex, cellIndex.cellIndex));\n }\n var idx = col.getFreezeTableName() === 'movable' ? cellIndex.cellIndex - left\n : col.getFreezeTableName() === frozenRight ? cellIndex.cellIndex - (left + movable) : cellIndex.cellIndex;\n if (gObj.groupSettings.columns.length > 0) {\n foreignKeyData$$1.push(rowObj.cells[idx + gObj.groupSettings.columns.length].foreignKeyData);\n }\n else {\n foreignKeyData$$1.push(rowObj.cells[parseInt(idx.toString(), 10)].foreignKeyData);\n }\n var args = {\n cancel: false, data: selectedData, cellIndex: cellIndexes[0],\n isShiftPressed: this.isMultiShiftRequest,\n currentCell: selectedCell, isCtrlPressed: this.isMultiCtrlRequest,\n previousRowCell: this.prevECIdxs ?\n gObj.getCellFromIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) : undefined\n };\n var prvRowCellIndex = 'previousRowCellIndex';\n args[\"\" + prvRowCellIndex] = this.prevECIdxs;\n var isUnSelected = index > -1;\n if (isUnSelected) {\n var selectedCellIdx = this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes;\n if (selectedCellIdx.indexOf(cellIndex.cellIndex) > -1) {\n this.cellDeselect(cellDeselecting, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData$$1);\n selectedCellIdx.splice(selectedCellIdx.indexOf(cellIndex.cellIndex), 1);\n if (selectedCellIdx.length === 0) {\n this.selectedRowCellIndexes.splice(index, 1);\n }\n selectedCell.classList.remove('e-cellselectionbackground');\n selectedCell.removeAttribute('aria-selected');\n this.cellDeselect(cellDeselected, [{ rowIndex: cellIndex.rowIndex, cellIndexes: [cellIndex.cellIndex] }], selectedData, [selectedCell], foreignKeyData$$1);\n }\n else {\n isUnSelected = false;\n this.onActionBegin(args, cellSelecting);\n this.addRowCellIndex({ rowIndex: cellIndex.rowIndex, cellIndex: cellIndex.cellIndex });\n this.updateCellSelection(selectedCell);\n this.addAttribute(selectedCell);\n }\n }\n else {\n this.onActionBegin(args, cellSelecting);\n if (!isNullOrUndefined(args) && args[\"\" + cncl] === true) {\n return;\n }\n this.updateCellSelection(selectedCell, cellIndex.rowIndex, cellIndex.cellIndex);\n }\n if (!isUnSelected) {\n var cellSelectedArgs = {\n data: selectedData, cellIndex: cellIndexes[0], currentCell: selectedCell,\n previousRowCell: this.prevECIdxs ? this.getCellIndex(this.prevECIdxs.rowIndex, this.prevECIdxs.cellIndex) :\n undefined, selectedRowCellIndex: this.selectedRowCellIndexes\n };\n cellSelectedArgs[\"\" + prvRowCellIndex] = this.prevECIdxs;\n this.onActionComplete(cellSelectedArgs, cellSelected);\n this.cellselected = true;\n }\n this.updateCellProps(cellIndex, cellIndex);\n }\n };\n Selection.prototype.getColIndex = function (rowIndex, index) {\n var frzCols = this.parent.isFrozenGrid();\n var col = this.parent.getColumnByIndex(index);\n var cells = getCellsByTableName(this.parent, col, rowIndex);\n if (cells) {\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(dataColIndex), 10);\n if (colIndex === index) {\n if (frzCols) {\n if (col.getFreezeTableName() === 'movable') {\n m += this.parent.getFrozenLeftCount();\n }\n else if (col.getFreezeTableName() === frozenRight) {\n m += (this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount());\n }\n }\n return m;\n }\n }\n }\n return -1;\n };\n Selection.prototype.getLastColIndex = function (rowIndex) {\n var cells = this.parent.getFrozenColumns() ? this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell')\n : this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll('td.e-rowcell');\n return parseInt(cells[cells.length - 1].getAttribute(dataColIndex), 10);\n };\n Selection.prototype.clearCell = function () {\n this.clearCellSelection();\n };\n Selection.prototype.cellDeselect = function (type, cellIndexes, data, cells, foreignKeyData$$1) {\n var cancl = 'cancel';\n if (cells[0] && cells[0].classList.contains(gridChkBox)) {\n this.updateCheckBoxes(closest(cells[0], 'tr'));\n }\n var args = {\n cells: cells, data: data, cellIndexes: cellIndexes, foreignKeyData: foreignKeyData$$1, cancel: false\n };\n this.parent.trigger(type, args);\n this.isPreventCellSelect = args[\"\" + cancl];\n };\n Selection.prototype.updateCellSelection = function (selectedCell, rowIndex, cellIndex) {\n if (!isNullOrUndefined(rowIndex)) {\n this.addRowCellIndex({ rowIndex: rowIndex, cellIndex: cellIndex });\n }\n selectedCell.classList.add('e-cellselectionbackground');\n if (selectedCell.classList.contains(gridChkBox)) {\n this.updateCheckBoxes(closest(selectedCell, 'tr'), true);\n }\n this.addAttribute(selectedCell);\n };\n Selection.prototype.addAttribute = function (cell) {\n this.target = cell;\n if (!isNullOrUndefined(cell)) {\n cell.setAttribute('aria-selected', 'true');\n if (!this.preventFocus) {\n this.focus.onClick({ target: cell }, true);\n }\n }\n };\n Selection.prototype.updateCellProps = function (startIndex, endIndex) {\n this.prevCIdxs = startIndex;\n this.prevECIdxs = endIndex;\n this.isCellSelected = this.selectedRowCellIndexes.length && true;\n };\n Selection.prototype.addRowCellIndex = function (rowCellIndex) {\n var isRowAvail;\n var index;\n for (var i = 0, len = this.selectedRowCellIndexes.length; i < len; i++) {\n if (this.selectedRowCellIndexes[parseInt(i.toString(), 10)].rowIndex === rowCellIndex.rowIndex) {\n isRowAvail = true;\n index = i;\n break;\n }\n }\n if (isRowAvail) {\n if (this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.indexOf(rowCellIndex.cellIndex) < 0) {\n this.selectedRowCellIndexes[parseInt(index.toString(), 10)].cellIndexes.push(rowCellIndex.cellIndex);\n }\n }\n else {\n this.selectedRowCellIndexes.push({ rowIndex: rowCellIndex.rowIndex, cellIndexes: [rowCellIndex.cellIndex] });\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Selection.prototype.clearCellSelection = function () {\n if (this.isCellSelected) {\n var gObj = this.parent;\n var selectedCells = this.getSelectedCellsElement();\n var rowCell$$1 = this.selectedRowCellIndexes;\n var data = [];\n var cells = [];\n var foreignKeyData$$1 = [];\n var currentViewData = this.getCurrentBatchRecordChanges();\n var frzCols = gObj.isFrozenGrid();\n this.hideAutoFill();\n for (var i = 0, len = rowCell$$1.length; i < len; i++) {\n data.push(currentViewData[rowCell$$1[parseInt(i.toString(), 10)].rowIndex]);\n var rowObj = this.getRowObj(rowCell$$1[parseInt(i.toString(), 10)].rowIndex);\n for (var j = 0, cLen = rowCell$$1[parseInt(i.toString(), 10)].cellIndexes.length; j < cLen; j++) {\n if (frzCols) {\n var col = gObj.getColumnByIndex(rowCell$$1[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]);\n cells.push(getCellByColAndRowIndex(this.parent, col, rowCell$$1[parseInt(i.toString(), 10)].rowIndex, rowCell$$1[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n else {\n if (rowObj.cells) {\n foreignKeyData$$1.push(rowObj.cells[rowCell$$1[parseInt(i.toString(), 10)]\n .cellIndexes[parseInt(j.toString(), 10)]].foreignKeyData);\n }\n cells.push(gObj.getCellFromIndex(rowCell$$1[parseInt(i.toString(), 10)].rowIndex, rowCell$$1[parseInt(i.toString(), 10)].cellIndexes[parseInt(j.toString(), 10)]));\n }\n }\n }\n this.cellDeselect(cellDeselecting, rowCell$$1, data, cells, foreignKeyData$$1);\n if (this.isPreventCellSelect === true) {\n return;\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n selectedCells[parseInt(i.toString(), 10)].classList.remove('e-cellselectionbackground');\n selectedCells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n if (this.bdrElement) {\n this.showHideBorders('none');\n }\n this.selectedRowCellIndexes = [];\n this.isCellSelected = false;\n if (!this.isDragged && this.cellselected) {\n this.cellDeselect(cellDeselected, rowCell$$1, data, cells, foreignKeyData$$1);\n }\n }\n };\n Selection.prototype.getSelectedCellsElement = function () {\n var gObj = this.parent;\n var rows = gObj.getDataRows();\n var mRows;\n if (gObj.isFrozenGrid()) {\n mRows = gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, mRows);\n if (gObj.getFrozenMode() === leftRight) {\n rows = gObj.addMovableRows(rows, gObj.getFrozenRightDataRows());\n }\n }\n var cells = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n cells = cells.concat([].slice.call(rows[parseInt(i.toString(), 10)].getElementsByClassName('e-cellselectionbackground')));\n }\n return cells;\n };\n Selection.prototype.mouseMoveHandler = function (e) {\n e.preventDefault();\n var gBRect = this.parent.element.getBoundingClientRect();\n var x1 = this.x;\n var y1 = this.y;\n var position = getPosition(e);\n var x2 = position.x - gBRect.left;\n var y2 = position.y - gBRect.top;\n var tmp;\n var target = closest(e.target, 'tr');\n this.isDragged = true;\n if (!this.isCellDrag) {\n if (!target) {\n target = closest(document.elementFromPoint(this.parent.element.offsetLeft + 2, e.clientY), 'tr');\n }\n if (x1 > x2) {\n tmp = x2;\n x2 = x1;\n x1 = tmp;\n }\n if (y1 > y2) {\n tmp = y2;\n y2 = y1;\n y1 = tmp;\n }\n this.element.style.left = x1 + 'px';\n this.element.style.top = y1 + 'px';\n this.element.style.width = x2 - x1 + 'px';\n this.element.style.height = y2 - y1 + 'px';\n }\n if (target && !e.ctrlKey && !e.shiftKey) {\n var rowIndex = parseInt(target.getAttribute(dataRowIndex), 10);\n if (!this.isCellDrag) {\n this.hideAutoFill();\n this.selectRowsByRange(this.startDIndex, rowIndex);\n this.isRowDragSelected = true;\n }\n else {\n var td = parentsUntil(e.target, rowCell);\n if (td) {\n this.startAFCell = this.startCell;\n this.endAFCell = parentsUntil(e.target, rowCell);\n this.selectLikeExcel(e, rowIndex, parseInt(td.getAttribute(dataColIndex), 10));\n }\n }\n }\n };\n Selection.prototype.selectLikeExcel = function (e, rowIndex, cellIndex) {\n if (!this.isAutoFillSel) {\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.drawBorders();\n }\n else { //Autofill\n this.showAFBorders();\n this.selectLikeAutoFill(e);\n }\n };\n Selection.prototype.drawBorders = function () {\n if (this.selectionSettings.cellSelectionMode === 'BoxWithBorder' && this.selectedRowCellIndexes.length && !this.parent.isEdit) {\n this.parent.element.classList.add('e-enabledboxbdr');\n if (!this.bdrElement) {\n this.createBorders();\n }\n this.positionBorders();\n }\n else {\n this.showHideBorders('none');\n }\n };\n Selection.prototype.isLastCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[cells.length - 1] === cell;\n };\n Selection.prototype.isLastRow = function (cell) {\n var rows = [].slice.call(closest(cell, tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[rows.length - 1];\n };\n Selection.prototype.isFirstRow = function (cell) {\n var rows = [].slice.call(closest(cell, tbody).querySelectorAll('.e-row:not(.e-hiddenrow)'));\n return cell.parentElement === rows[0];\n };\n Selection.prototype.isFirstCell = function (cell) {\n var cells = [].slice.call(cell.parentElement.querySelectorAll('.e-rowcell:not(.e-hide)'));\n return cells[0] === cell;\n };\n Selection.prototype.setBorders = function (parentEle, border, bdrStr) {\n var cells = [].slice.call(parentEle.getElementsByClassName('e-cellselectionbackground')).\n filter(function (ele) { return ele.style.display === ''; });\n if (cells.length) {\n var isFrozen = this.parent.isFrozenGrid();\n var start = cells[0];\n var end = cells[cells.length - 1];\n var stOff = start.getBoundingClientRect();\n var endOff = end.getBoundingClientRect();\n var parentOff = start.offsetParent.getBoundingClientRect();\n var rowHeight = this.isLastRow(end) && (bdrStr === '1' || bdrStr === '2' || bdrStr === '5') ? 2 : 0;\n var topOffSet = this.parent.frozenRows && (bdrStr === '1' || bdrStr === '2') &&\n this.isFirstRow(start) ? 1.5 : 0;\n var leftOffset = isFrozen && (bdrStr === '2' || bdrStr === '4') && this.isFirstCell(start) ? 1 : 0;\n var rightOffset = ((this.parent.getFrozenMode() === 'Right' && (bdrStr === '1' || bdrStr === '3'))\n || (this.parent.getFrozenMode() === leftRight && (bdrStr === '5' || bdrStr === '6')))\n && this.isFirstCell(start) ? 1 : 0;\n if (this.parent.enableRtl) {\n border.style.right = parentOff.right - stOff.right - leftOffset + 'px';\n border.style.width = stOff.right - endOff.left + leftOffset + 1 + 'px';\n }\n else {\n border.style.left = stOff.left - parentOff.left - leftOffset - rightOffset + 'px';\n border.style.width = endOff.right - stOff.left + leftOffset - rightOffset + 1 + 'px';\n }\n border.style.top = stOff.top - parentOff.top - topOffSet + 'px';\n border.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) - rowHeight + topOffSet + 'px' :\n endOff.height + topOffSet - rowHeight + 1 + 'px';\n this.selectDirection += bdrStr;\n }\n else {\n border.style.display = 'none';\n }\n };\n Selection.prototype.positionBorders = function () {\n this.updateStartEndCells();\n if (!this.startCell || !this.bdrElement || !this.selectedRowCellIndexes.length) {\n return;\n }\n this.selectDirection = '';\n this.showHideBorders('');\n this.setBorders(this.parent.getContentTable(), this.bdrElement, '1');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.contentModule.getMovableContent(), this.mcBdrElement, '2');\n if (this.parent.getFrozenMode() === leftRight) {\n this.setBorders(this.parent.contentModule.getFrozenRightContent(), this.frcBdrElement, '5');\n }\n }\n if (this.parent.frozenRows) {\n this.setBorders(this.parent.getHeaderTable(), this.fhBdrElement, '3');\n if (this.parent.isFrozenGrid()) {\n this.setBorders(this.parent.headerModule.getMovableHeader(), this.mhBdrElement, '4');\n if (this.parent.getFrozenMode() === leftRight) {\n this.setBorders(this.parent.headerModule.getFrozenRightHeader(), this.frhBdrElement, '6');\n }\n }\n }\n this.applyBorders(this.selectDirection);\n };\n /* eslint-enable */\n Selection.prototype.applyBothFrozenBorders = function (str) {\n var rtl = this.parent.enableRtl;\n switch (str.length) {\n case 6:\n {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = this.bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = this.top;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n break;\n case 4:\n {\n if (str.includes('1') && str.includes('2') && str.includes('3') && str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n }\n if (str.includes('2') && str.includes('4') && str.includes('5') && str.includes('6')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 3:\n {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mcBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.mhBdrElement.style.borderWidth = this.top_bottom;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n break;\n case 2:\n {\n if (str.includes('1')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('2')) {\n this.bdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n if (this.parent.frozenRows) {\n this.mhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('3')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.bdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('4')) {\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frhBdrElement.style.borderWidth = rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n if (str.includes('5')) {\n this.mcBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.frozenRows) {\n this.frhBdrElement.style.borderWidth = this.top_right_left;\n }\n }\n if (str.includes('6')) {\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right_bottom : this.top_bottom_left;\n this.frcBdrElement.style.borderWidth = this.right_bottom_left;\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n this.mcBdrElement.style.borderWidth = this.all_border;\n this.frcBdrElement.style.borderWidth = this.all_border;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n this.mhBdrElement.style.borderWidth = this.all_border;\n this.frhBdrElement.style.borderWidth = this.all_border;\n }\n break;\n }\n };\n Selection.prototype.applyBorders = function (str) {\n var rtl = this.parent.enableRtl;\n if (this.parent.getFrozenMode() === leftRight) {\n this.applyBothFrozenBorders(str);\n }\n else {\n switch (str.length) {\n case 4:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.mcBdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n }\n else {\n this.bdrElement.style.borderWidth = rtl ? this.right_bottom : this.bottom_left;\n this.mcBdrElement.style.borderWidth = rtl ? this.bottom_left : this.right_bottom;\n this.fhBdrElement.style.borderWidth = rtl ? this.top_right : this.top_left;\n this.mhBdrElement.style.borderWidth = rtl ? this.top_left : this.top_right;\n }\n }\n break;\n case 2:\n {\n if (this.parent.getFrozenMode() === 'Right') {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n }\n }\n else {\n this.bdrElement.style.borderWidth = str.includes('2') ? rtl ? this.top_right_bottom\n : this.top_bottom_left : this.right_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = str.includes('1') ? rtl ? this.top_bottom_left\n : this.top_right_bottom : this.right_bottom_left;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = str.includes('1') ? this.top_right_left\n : rtl ? this.top_right_bottom : this.top_bottom_left;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = str.includes('2') ? this.top_right_left\n : rtl ? this.top_bottom_left : this.top_right_bottom;\n }\n }\n }\n }\n break;\n default:\n this.bdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.borderWidth = this.all_border;\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.borderWidth = this.all_border;\n if (this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.borderWidth = this.all_border;\n }\n }\n break;\n }\n }\n };\n Selection.prototype.createBorders = function () {\n if (!this.bdrElement) {\n this.bdrElement = this.parent.getContentTable().parentElement.appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_bdr',\n styles: 'width: 2px; border-width: 0;'\n }));\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement = this.parent.contentModule.getMovableContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_mcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n if (this.parent.getFrozenMode() === leftRight) {\n this.frcBdrElement = this.parent.contentModule.getFrozenRightContent().appendChild(createElement('div', {\n className: 'e-xlsel', id: this.parent.element.id + '_frcbdr',\n styles: 'height: 2px; border-width: 0;'\n }));\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement = this.parent.getHeaderTable().parentElement.appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_fhbdr', styles: 'height: 2px;' }));\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement = this.parent.headerModule.getMovableHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_mhbdr', styles: 'height: 2px;' }));\n if (this.parent.getFrozenMode() === leftRight) {\n this.frhBdrElement = this.parent.headerModule.getFrozenRightHeader().appendChild(createElement('div', { className: 'e-xlsel', id: this.parent.element.id + '_frhbdr', styles: 'height: 2px;' }));\n }\n }\n }\n };\n Selection.prototype.showHideBorders = function (display) {\n if (this.bdrElement) {\n this.bdrElement.style.display = display;\n if (this.parent.isFrozenGrid()) {\n this.mcBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === leftRight) {\n this.frcBdrElement.style.display = display;\n }\n }\n if (this.parent.frozenRows) {\n this.fhBdrElement.style.display = display;\n }\n if (this.parent.frozenRows && this.parent.isFrozenGrid()) {\n this.mhBdrElement.style.display = display;\n if (this.parent.getFrozenMode() === leftRight) {\n this.frhBdrElement.style.display = display;\n }\n }\n }\n };\n Selection.prototype.drawAFBorders = function () {\n if (!this.bdrAFBottom) {\n this.createAFBorders();\n }\n this.positionAFBorders();\n };\n Selection.prototype.positionAFBorders = function () {\n if (!this.startCell || !this.bdrAFLeft) {\n return;\n }\n var stOff = this.startAFCell.getBoundingClientRect();\n var endOff = this.endAFCell.getBoundingClientRect();\n var top = endOff.top - stOff.top > 0 ? 1 : 0;\n var firstCellTop = endOff.top - stOff.top >= 0 && (parentsUntil(this.startAFCell, movableContent) ||\n parentsUntil(this.startAFCell, 'e-frozencontent')) && this.isFirstRow(this.startAFCell) ? 1.5 : 0;\n var firstCellLeft = (parentsUntil(this.startAFCell, movableContent) ||\n parentsUntil(this.startAFCell, movableHeader)) && this.isFirstCell(this.startAFCell) ? 1 : 0;\n var rowHeight = this.isLastRow(this.endAFCell) && (parentsUntil(this.endAFCell, movableContent) ||\n parentsUntil(this.endAFCell, 'e-frozencontent')) ? 2 : 0;\n var parentOff = this.startAFCell.offsetParent.getBoundingClientRect();\n var parentRect = this.parent.element.getBoundingClientRect();\n var sTop = this.startAFCell.offsetParent.parentElement.scrollTop;\n var sLeft = this.startAFCell.offsetParent.parentElement.scrollLeft;\n var scrollTop = sTop - this.startAFCell.offsetTop;\n var scrollLeft = sLeft - this.startAFCell.offsetLeft;\n var totalHeight = this.parent.element.clientHeight;\n var totalWidth = this.parent.element.clientWidth;\n scrollTop = scrollTop > 0 ? Math.floor(scrollTop) - 1 : 0;\n scrollLeft = scrollLeft > 0 ? scrollLeft : 0;\n var left = stOff.left - parentRect.left;\n if (!this.parent.enableRtl) {\n this.bdrAFLeft.style.left = left - firstCellLeft + scrollLeft - 1 + 'px';\n this.bdrAFRight.style.left = endOff.left - parentRect.left - 2 + endOff.width + 'px';\n this.bdrAFRight.style.width = totalWidth <= parseInt(this.bdrAFRight.style.left, 10) ? '0px' : '2px';\n this.bdrAFTop.style.left = left + scrollLeft - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFRight.style.left, 10) - parseInt(this.bdrAFLeft.style.left, 10)\n - firstCellLeft + 1 + 'px';\n if (totalWidth <= (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10))) {\n var leftRemove = (parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10)) - totalWidth;\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) - leftRemove + 'px';\n }\n }\n else {\n var scrolloffSet = (parentsUntil(this.startAFCell, movableContent) ||\n parentsUntil(this.startAFCell, movableHeader)) ? stOff.right -\n this.startAFCell.offsetParent.parentElement.getBoundingClientRect().width -\n parentRect.left : 0;\n this.bdrAFLeft.style.right = parentRect.right - endOff.right - 2 + endOff.width + 'px';\n this.bdrAFLeft.style.width = totalWidth <= parseInt(this.bdrAFLeft.style.right, 10) ? '0px' : '2px';\n this.bdrAFRight.style.right = parentRect.right - stOff.right - firstCellLeft + scrolloffSet - 1 + 'px';\n this.bdrAFTop.style.left = endOff.left - parentRect.left - 0.5 + 'px';\n this.bdrAFTop.style.width = parseInt(this.bdrAFLeft.style.right, 10) - parseInt(this.bdrAFRight.style.right, 10)\n - firstCellLeft + 1 + 'px';\n if (parseInt(this.bdrAFTop.style.left, 10) < 0) {\n this.bdrAFTop.style.width = parseInt(this.bdrAFTop.style.width, 10) + parseInt(this.bdrAFTop.style.left, 10) + 'px';\n this.bdrAFTop.style.left = '0px';\n }\n }\n this.bdrAFLeft.style.top = stOff.top - parentRect.top - firstCellTop + scrollTop + 'px';\n this.bdrAFLeft.style.height = endOff.top - stOff.top > 0 ?\n (endOff.top - parentOff.top + endOff.height + 1) - (stOff.top - parentOff.top) + firstCellTop - rowHeight - scrollTop + 'px' :\n endOff.height + firstCellTop - rowHeight - scrollTop + 'px';\n this.bdrAFRight.style.top = this.bdrAFLeft.style.top;\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n this.bdrAFTop.style.top = this.bdrAFRight.style.top;\n this.bdrAFBottom.style.left = this.bdrAFTop.style.left;\n this.bdrAFBottom.style.top = parseFloat(this.bdrAFLeft.style.top) + parseFloat(this.bdrAFLeft.style.height) - top - 1 + 'px';\n this.bdrAFBottom.style.width = totalHeight <= parseFloat(this.bdrAFBottom.style.top) ? '0px' : this.bdrAFTop.style.width;\n if (totalHeight <= (parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10))) {\n var topRemove = parseInt(this.bdrAFLeft.style.height, 10) + parseInt(this.bdrAFLeft.style.top, 10) - totalHeight;\n this.bdrAFLeft.style.height = parseInt(this.bdrAFLeft.style.height, 10) - topRemove + 'px';\n this.bdrAFRight.style.height = parseInt(this.bdrAFLeft.style.height, 10) + 'px';\n }\n };\n Selection.prototype.createAFBorders = function () {\n if (!this.bdrAFLeft) {\n this.bdrAFLeft = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafleft', styles: 'width: 2px;' }));\n this.bdrAFRight = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafright', styles: 'width: 2px;' }));\n this.bdrAFBottom = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdrafbottom', styles: 'height: 2px;' }));\n this.bdrAFTop = this.parent.element.appendChild(createElement('div', { className: 'e-xlselaf', id: this.parent.element.id + '_bdraftop', styles: 'height: 2px;' }));\n }\n };\n Selection.prototype.showAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = '';\n this.bdrAFRight.style.display = '';\n this.bdrAFBottom.style.display = '';\n this.bdrAFTop.style.display = '';\n }\n };\n Selection.prototype.hideAFBorders = function () {\n if (this.bdrAFLeft) {\n this.bdrAFLeft.style.display = 'none';\n this.bdrAFRight.style.display = 'none';\n this.bdrAFBottom.style.display = 'none';\n this.bdrAFTop.style.display = 'none';\n }\n };\n Selection.prototype.updateValue = function (rIdx, cIdx, cell) {\n var args = this.createBeforeAutoFill(rIdx, cIdx, cell);\n if (!args.cancel) {\n var col = this.parent.getColumnByIndex(cIdx);\n if (this.parent.editModule && cell) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.value));\n }\n else {\n this.parent.editModule.updateCell(rIdx, col.field, args.value);\n }\n }\n }\n };\n Selection.prototype.createBeforeAutoFill = function (rowIndex, colIndex, cell) {\n var col = this.parent.getColumnByIndex(colIndex);\n var args = {\n column: col,\n value: cell.innerText\n };\n this.parent.trigger(beforeAutoFill, args);\n return args;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.getAutoFillCells = function (rowIndex, startCellIdx) {\n var cls = '.e-cellselectionbackground';\n var cells = [].slice.call(this.parent.getDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls));\n if (this.parent.isFrozenGrid()) {\n cells = cells.concat([].slice.call(this.parent.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].querySelectorAll(cls)));\n if (this.parent.getFrozenMode() === leftRight) {\n cells = cells.concat([].slice.call(this.parent.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)]\n .querySelectorAll(cls)));\n }\n }\n return cells;\n };\n Selection.prototype.selectLikeAutoFill = function (e, isApply) {\n var startrowIdx = parseInt(parentsUntil(this.startAFCell, row).getAttribute(dataRowIndex), 10);\n var startCellIdx = parseInt(this.startAFCell.getAttribute(dataColIndex), 10);\n var endrowIdx = parseInt(parentsUntil(this.endAFCell, row).getAttribute(dataRowIndex), 10);\n var endCellIdx = parseInt(this.endAFCell.getAttribute(dataColIndex), 10);\n var rowLen = this.selectedRowCellIndexes.length - 1;\n var colLen = this.selectedRowCellIndexes[0].cellIndexes.length - 1;\n switch (true) { //direction\n case !isApply && this.endAFCell.classList.contains('e-cellselectionbackground') &&\n !!parentsUntil(e.target, rowCell):\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, startCellIdx);\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, startCellIdx + colLen);\n this.drawAFBorders();\n break;\n case this.autoFillRLselection && startCellIdx + colLen < endCellIdx && //right\n endCellIdx - startCellIdx - colLen + 1 > endrowIdx - startrowIdx - rowLen // right bottom\n && endCellIdx - startCellIdx - colLen + 1 > startrowIdx - endrowIdx: //right top\n this.endAFCell = this.parent.getCellFromIndex(startrowIdx + rowLen, endCellIdx);\n endrowIdx = parseInt(parentsUntil(this.endAFCell, row).getAttribute(dataRowIndex), 10);\n endCellIdx = parseInt(this.endAFCell.getAttribute(dataColIndex), 10);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var cellIdx = parseInt(this.endCell.getAttribute(dataColIndex), 10);\n for (var i = startrowIdx; i <= endrowIdx; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n var c = 0;\n for (var j = cellIdx + 1; j <= endCellIdx; j++) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: this.startCellIndex }, { rowIndex: endrowIdx, cellIndex: endCellIdx });\n }\n break;\n case this.autoFillRLselection && startCellIdx > endCellIdx && // left\n startCellIdx - endCellIdx + 1 > endrowIdx - startrowIdx - rowLen && //left top\n startCellIdx - endCellIdx + 1 > startrowIdx - endrowIdx: // left bottom\n this.startAFCell = this.parent.getCellFromIndex(startrowIdx, endCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n for (var i = startrowIdx; i <= startrowIdx + rowLen; i++) {\n var cells = this.getAutoFillCells(i, startCellIdx);\n cells.reverse();\n var c = 0;\n for (var j = this.startCellIndex - 1; j >= endCellIdx; j--) {\n if (c > colLen) {\n c = 0;\n }\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: startrowIdx, cellIndex: endCellIdx }, { rowIndex: startrowIdx + rowLen, cellIndex: this.startCellIndex + colLen });\n }\n break;\n case startrowIdx > endrowIdx: //up\n this.startAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx);\n this.endAFCell = this.endCell;\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(dataRowIndex), 10);\n var r = trIdx;\n for (var i = startrowIdx - 1; i >= endrowIdx; i--) {\n if (r === this.startIndex - 1) {\n r = trIdx;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n var c = 0;\n r--;\n for (var j = this.startCellIndex; j <= this.startCellIndex + colLen; j++) {\n this.updateValue(i, j, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: endrowIdx, cellIndex: startCellIdx + colLen }, { rowIndex: startrowIdx + rowLen, cellIndex: startCellIdx });\n }\n break;\n default: //down\n this.endAFCell = this.parent.getCellFromIndex(endrowIdx, startCellIdx + colLen);\n if (!isApply) {\n this.drawAFBorders();\n }\n else {\n var trIdx = parseInt(this.endCell.parentElement.getAttribute(dataRowIndex), 10);\n var r = this.startIndex;\n for (var i = trIdx + 1; i <= endrowIdx; i++) {\n if (r === trIdx + 1) {\n r = this.startIndex;\n }\n var cells = this.getAutoFillCells(r, startCellIdx);\n r++;\n var c = 0;\n for (var m = this.startCellIndex; m <= this.startCellIndex + colLen; m++) {\n this.updateValue(i, m, cells[parseInt(c.toString(), 10)]);\n c++;\n }\n }\n this.selectCellsByRange({ rowIndex: trIdx - rowLen, cellIndex: startCellIdx }, { rowIndex: endrowIdx, cellIndex: startCellIdx + colLen });\n }\n break;\n }\n };\n Selection.prototype.mouseUpHandler = function (e) {\n document.body.classList.remove('e-disableuserselect');\n if (this.element) {\n remove(this.element);\n }\n if (this.isDragged && this.selectedRowCellIndexes.length === 1 && this.selectedRowCellIndexes[0].cellIndexes.length === 1) {\n this.mUPTarget = parentsUntil(e.target, rowCell);\n }\n else {\n this.mUPTarget = null;\n }\n var closeRowCell = closest(e.target, '.e-rowcell');\n if (this.isDragged && !this.isAutoFillSel && this.selectionSettings.mode === 'Cell' &&\n closeRowCell && closeRowCell.classList.contains(rowCell)) {\n var rowIndex = parseInt(closeRowCell.parentElement.getAttribute(dataRowIndex), 10);\n var cellIndex = parseInt(closeRowCell.getAttribute(dataColIndex), 10);\n this.isDragged = false;\n this.clearCellSelection();\n this.selectCellsByRange({ rowIndex: this.startDIndex, cellIndex: this.startDCellIndex }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isDragged = false;\n this.updateAutoFillPosition();\n if (this.isAutoFillSel) {\n var lastCell = parentsUntil(e.target, rowCell);\n this.endAFCell = lastCell ? lastCell : this.endCell === this.endAFCell ? this.startAFCell : this.endAFCell;\n this.startAFCell = this.startCell;\n this.updateStartCellsIndex();\n this.selectLikeAutoFill(e, true);\n this.updateAutoFillPosition();\n this.hideAFBorders();\n this.positionBorders();\n this.isAutoFillSel = false;\n }\n EventHandler.remove(this.parent.getContent(), 'mousemove', this.mouseMoveHandler);\n if (this.parent.frozenRows) {\n EventHandler.remove(this.parent.getHeaderContent(), 'mousemove', this.mouseMoveHandler);\n }\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n };\n Selection.prototype.hideAutoFill = function () {\n if (this.autofill) {\n this.autofill.style.display = 'none';\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.updateAutoFillPosition = function () {\n if (this.parent.enableAutoFill && !this.parent.isEdit &&\n this.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()\n && this.selectedRowCellIndexes.length) {\n var index = parseInt(this.target.getAttribute(dataColIndex), 10);\n var rindex = parseInt(this.target.getAttribute('index'), 10);\n var rowIndex = this.selectedRowCellIndexes[this.selectedRowCellIndexes.length - 1].rowIndex;\n var cells = this.getAutoFillCells(rowIndex, index).filter(function (ele) { return ele.style.display === ''; });\n var col = this.parent.getColumnByIndex(index);\n var isFrozenCol = col.getFreezeTableName() === 'movable';\n var isFrozenRow = rindex < this.parent.frozenRows;\n var isFrozenRight = this.parent.getFrozenMode() === leftRight\n && col.getFreezeTableName() === frozenRight;\n if (!select('#' + this.parent.element.id + '_autofill', parentsUntil(this.target, table))) {\n if (select('#' + this.parent.element.id + '_autofill', this.parent.element)) {\n select('#' + this.parent.element.id + '_autofill', this.parent.element).remove();\n }\n this.autofill = createElement('div', { className: 'e-autofill', id: this.parent.element.id + '_autofill' });\n this.autofill.style.display = 'none';\n if (!isFrozenRow) {\n if (!isFrozenCol) {\n this.parent.getContentTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.contentModule.getMovableContent().appendChild(this.autofill);\n }\n }\n else {\n if (!isFrozenCol) {\n this.parent.getHeaderTable().parentElement.appendChild(this.autofill);\n }\n else {\n this.parent.headerModule.getMovableHeader().appendChild(this.autofill);\n }\n }\n if (isFrozenRight) {\n if (isFrozenRow) {\n this.parent.getFrozenRightHeader().appendChild(this.autofill);\n }\n else {\n this.parent.getFrozenRightContent().appendChild(this.autofill);\n }\n }\n }\n var cell = cells[cells.length - 1];\n if (cell && cell.offsetParent) {\n var clientRect = cell.getBoundingClientRect();\n var parentOff = cell.offsetParent.getBoundingClientRect();\n var colWidth = this.isLastCell(cell) ? 4 : 0;\n var rowHeight = this.isLastRow(cell) ? 3 : 0;\n if (!this.parent.enableRtl) {\n this.autofill.style.left = clientRect.left - parentOff.left + clientRect.width - 4 - colWidth + 'px';\n }\n else {\n this.autofill.style.right = parentOff.right - clientRect.right + clientRect.width - 4 - colWidth + 'px';\n }\n this.autofill.style.top = clientRect.top - parentOff.top + clientRect.height - 5 - rowHeight + 'px';\n }\n this.autofill.style.display = '';\n }\n else {\n this.hideAutoFill();\n }\n };\n Selection.prototype.mouseDownHandler = function (e) {\n this.mouseButton = e.button;\n var target = e.target;\n var gObj = this.parent;\n var isDrag;\n var gridElement = parentsUntil(target, 'e-grid');\n if (gridElement && gridElement.id !== gObj.element.id || parentsUntil(target, headerContent) && !this.parent.frozenRows ||\n parentsUntil(target, 'e-editedbatchcell') || parentsUntil(target, editedRow)) {\n return;\n }\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (parentsUntil(target, rowCell) && !e.shiftKey && !e.ctrlKey) {\n if (gObj.selectionSettings.cellSelectionMode.indexOf('Box') > -1 && !this.isRowType() && !this.isSingleSel()) {\n this.isCellDrag = true;\n isDrag = true;\n }\n else if (gObj.allowRowDragAndDrop && !gObj.isEdit && !this.parent.selectionSettings.checkboxOnly) {\n this.isRowDragSelected = false;\n if (!this.isRowType() || this.isSingleSel() || closest(target, 'td').classList.contains('e-selectionbackground')) {\n this.isDragged = false;\n return;\n }\n isDrag = true;\n this.element = this.parent.createElement('div', { className: 'e-griddragarea' });\n gObj.getContent().appendChild(this.element);\n }\n if (isDrag) {\n this.enableDrag(e, true);\n }\n }\n this.updateStartEndCells();\n if (target.classList.contains('e-autofill') || target.classList.contains('e-xlsel')) {\n this.isCellDrag = true;\n this.isAutoFillSel = true;\n this.enableDrag(e);\n }\n };\n Selection.prototype.updateStartEndCells = function () {\n var cells = [].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground'));\n this.startCell = cells[0];\n this.endCell = cells[cells.length - 1];\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, rowCell).getAttribute(dataColIndex), 10);\n }\n };\n Selection.prototype.updateStartCellsIndex = function () {\n if (this.startCell) {\n this.startIndex = parseInt(this.startCell.parentElement.getAttribute(dataRowIndex), 10);\n this.startCellIndex = parseInt(parentsUntil(this.startCell, rowCell).getAttribute(dataColIndex), 10);\n }\n };\n Selection.prototype.enableDrag = function (e, isUpdate) {\n var gObj = this.parent;\n if (isUpdate) {\n var tr = closest(e.target, 'tr');\n this.startDIndex = parseInt(tr.getAttribute(dataRowIndex), 10);\n this.startDCellIndex = parseInt(parentsUntil(e.target, rowCell).getAttribute(dataColIndex), 10);\n }\n document.body.classList.add('e-disableuserselect');\n var gBRect = gObj.element.getBoundingClientRect();\n var postion = getPosition(e);\n this.x = postion.x - gBRect.left;\n this.y = postion.y - gBRect.top;\n EventHandler.add(gObj.getContent(), 'mousemove', this.mouseMoveHandler, this);\n if (this.parent.frozenRows) {\n EventHandler.add(gObj.getHeaderContent(), 'mousemove', this.mouseMoveHandler, this);\n }\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n };\n Selection.prototype.clearSelAfterRefresh = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfiniteScroll) {\n this.clearSelection();\n }\n if ((e.requestType === 'virtualscroll' || isInfiniteScroll) && this.parent.isPersistSelection && this.isPartialSelection\n && this.isHdrSelectAllClicked) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n var indexes = [];\n this.selectedRowState = {};\n this.persistSelectedData = [];\n for (var i = 0; i < rowObj.length; i++) {\n indexes.push(rowObj[parseInt(i.toString(), 10)].index);\n var pkValue = this.getPkValue(this.primaryKey, rowObj[parseInt(i.toString(), 10)].data);\n this.selectedRowState[\"\" + pkValue] = true;\n this.persistSelectedData.push(rowObj[parseInt(i.toString(), 10)].data);\n }\n this.selectedRowIndexes = indexes;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: uiUpdate, handler: this.enableAfterRender },\n { event: initialEnd, handler: this.initializeSelection },\n { event: rowSelectionComplete, handler: this.onActionComplete },\n { event: cellSelectionComplete, handler: this.onActionComplete },\n { event: inBoundModelChanged, handler: this.onPropertyChanged },\n { event: cellFocused, handler: this.onCellFocused },\n { event: beforeFragAppend, handler: this.clearSelAfterRefresh },\n { event: columnPositionChanged, handler: this.columnPositionChanged },\n { event: contentReady, handler: this.initialEnd },\n { event: rowsRemoved, handler: this.rowsRemoved },\n { event: headerRefreshed, handler: this.refreshHeader },\n { event: destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.parent.addEventListener(actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunction);\n this.addEventListener_checkbox();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Selection.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunction);\n this.removeEventListener_checkbox();\n };\n Selection.prototype.wireEvents = function () {\n this.isMacOS = navigator.userAgent.indexOf('Mac OS') !== -1;\n if (this.isMacOS) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.parent.element, 'keyup', this.keyUpHandler, this);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.add(this.parent.element, 'keydown', this.keyDownHandler, this);\n }\n }\n };\n Selection.prototype.unWireEvents = function () {\n if (this.isMacOS) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.parent.element, 'keyup', this.keyUpHandler);\n }\n else {\n if (!this.parent.allowKeyboard) {\n EventHandler.remove(this.parent.element, 'keydown', this.keyDownHandler);\n }\n }\n };\n Selection.prototype.columnPositionChanged = function () {\n if (!this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.refreshHeader = function () {\n this.setCheckAllState();\n };\n Selection.prototype.rowsRemoved = function (e) {\n for (var i = 0; i < e.records.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, e.records[parseInt(i.toString(), 10)]);\n delete (this.selectedRowState[\"\" + pkValue]);\n --this.totalRecordsCount;\n }\n this.setCheckAllState();\n };\n Selection.prototype.beforeFragAppend = function (e) {\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection) {\n this.clearSelection();\n }\n };\n Selection.prototype.getCheckAllBox = function () {\n return this.parent.getHeaderContent().querySelector('.e-checkselectall');\n };\n Selection.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.initPerisistSelection();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Selection.prototype.render = function (e) {\n EventHandler.add(this.parent.getContent(), 'mousedown', this.mouseDownHandler, this);\n EventHandler.add(this.parent.getHeaderContent(), 'mousedown', this.mouseDownHandler, this);\n };\n Selection.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n if (!isNullOrUndefined(e.properties.type) && this.selectionSettings.type === 'Single') {\n if (this.selectedRowCellIndexes.length > 1) {\n this.clearCellSelection();\n this.prevCIdxs = undefined;\n }\n if (this.selectedRowIndexes.length > 1) {\n this.clearRowSelection();\n this.prevRowIndex = undefined;\n }\n if (this.selectedColumnsIndexes.length > 1) {\n this.clearColumnSelection();\n this.prevColIndex = undefined;\n }\n this.enableSelectMultiTouch = false;\n this.hidePopUp();\n }\n if (!isNullOrUndefined(e.properties.mode) ||\n !isNullOrUndefined(e.properties.cellSelectionMode)) {\n this.clearSelection();\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevColIndex = undefined;\n }\n this.isPersisted = true;\n this.checkBoxSelectionChanged();\n this.isPersisted = false;\n if (!this.parent.isCheckBoxSelection) {\n this.initPerisistSelection();\n }\n var checkboxColumn = this.parent.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length) {\n gObj.isCheckBoxSelection = !(this.selectionSettings.checkboxMode === 'ResetOnRowClick');\n }\n this.drawBorders();\n };\n Selection.prototype.hidePopUp = function () {\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-rowselect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.initialEnd = function (e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isLeftRightFrozen = this.parent.getFrozenMode() === leftRight;\n if ((!isFrozen || (isFrozen && (!isLeftRightFrozen && !e.args.isFrozen)\n || (isLeftRightFrozen && e.args.renderFrozenRightContent))) && !this.selectedRowIndexes.length) {\n this.parent.off(contentReady, this.initialEnd);\n this.selectRow(this.parent.selectedRowIndex);\n }\n };\n Selection.prototype.checkBoxSelectionChanged = function () {\n var gobj = this.parent;\n gobj.off(contentReady, this.checkBoxSelectionChanged);\n var checkboxColumn = gobj.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length > 0) {\n gobj.isCheckBoxSelection = true;\n this.chkField = checkboxColumn[0].field;\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n if (isNullOrUndefined(this.totalRecordsCount)) {\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.isSingleSel()) {\n gobj.selectionSettings.type = 'Multiple';\n gobj.dataBind();\n }\n else {\n this.initPerisistSelection();\n }\n }\n if (!gobj.isCheckBoxSelection && !this.isPersisted) {\n this.chkField = null;\n this.initPerisistSelection();\n }\n };\n Selection.prototype.initPerisistSelection = function () {\n var gobj = this.parent;\n if (this.parent.selectionSettings.persistSelection && this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = true;\n this.ensureCheckboxFieldSelection();\n }\n else if (this.parent.getPrimaryKeyFieldNames().length > 0) {\n gobj.isPersistSelection = false;\n this.ensureCheckboxFieldSelection();\n }\n else {\n gobj.isPersistSelection = false;\n this.selectedRowState = {};\n }\n };\n Selection.prototype.ensureCheckboxFieldSelection = function () {\n var gobj = this.parent;\n this.primaryKey = this.parent.getPrimaryKeyFieldNames()[0];\n if (!gobj.enableVirtualization && this.chkField\n && ((gobj.isPersistSelection && Object.keys(this.selectedRowState).length === 0) ||\n !gobj.isPersistSelection)) {\n var data = this.parent.getDataModule();\n var query = new Query().where(this.chkField, 'equal', true);\n if (!query.params) {\n query.params = this.parent.query.params;\n }\n var dataManager = data.getData({}, query);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n this.parent.showSpinner();\n dataManager.then(function (e) {\n proxy_1.dataSuccess(e.result);\n proxy_1.refreshPersistSelection();\n proxy_1.parent.hideSpinner();\n });\n }\n };\n Selection.prototype.dataSuccess = function (res) {\n for (var i = 0; i < res.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, res[parseInt(i.toString(), 10)]);\n if (isNullOrUndefined(this.selectedRowState[\"\" + pkValue]) && res[parseInt(i.toString(), 10)][this.chkField]) {\n this.selectedRowState[\"\" + pkValue] = res[parseInt(i.toString(), 10)][this.chkField];\n }\n }\n this.persistSelectedData = res;\n };\n Selection.prototype.setRowSelection = function (state) {\n if (!(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))) {\n if (state) {\n if (this.isPartialSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_1 = rowObj; _i < rowObj_1.length; _i++) {\n var row$$1 = rowObj_1[_i];\n this.selectedRowState[this.getPkValue(this.primaryKey, row$$1.data)] = true;\n }\n }\n else {\n var selectedData = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n if (this.parent.groupSettings.columns.length) {\n for (var _a = 0, _b = this.isPartialSelection ? selectedData : selectedData.records; _a < _b.length; _a++) {\n var data = _b[_a];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n else {\n for (var _c = 0, selectedData_1 = selectedData; _c < selectedData_1.length; _c++) {\n var data = selectedData_1[_c];\n this.selectedRowState[this.getPkValue(this.primaryKey, data)] = true;\n }\n }\n }\n }\n else {\n this.selectedRowState = {};\n }\n // (this.getData()).forEach(function (data) {\n // this.selectedRowState[data[this.primaryKey]] = true;\n // })\n }\n else {\n if (state) {\n var selectedStateKeys = Object.keys(this.selectedRowState);\n var unSelectedRowStateKeys = Object.keys(this.unSelectedRowState);\n for (var _d = 0, _e = this.parent.currentViewData; _d < _e.length; _d++) {\n var data = _e[_d];\n var key = data[this.primaryKey].toString();\n if (selectedStateKeys.indexOf(key) === -1 && unSelectedRowStateKeys.indexOf(key) === -1) {\n this.selectedRowState[data[this.primaryKey]] = true;\n }\n }\n }\n else {\n this.selectedRowState = {};\n this.unSelectedRowState = {};\n this.rmtHdrChkbxClicked = false;\n }\n }\n };\n Selection.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n Selection.prototype.refreshPersistSelection = function () {\n var rows = this.parent.getRows();\n if (this.parent.isCheckBoxSelection && this.parent.isFrozenGrid()) {\n var mtbody = this.parent.getMovableContentTbody();\n if (mtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getMovableRows();\n }\n if (this.parent.getFrozenMode() === leftRight) {\n var frtbody = this.parent.getFrozenRightContentTbody();\n if (frtbody.querySelector('.e-checkselect')) {\n rows = this.parent.getFrozenRightRows();\n }\n }\n }\n this.totalRecordsCount = this.parent.getCurrentViewRecords().length;\n if (this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (!isNullOrUndefined(rows) && rows.length > 0 && (this.parent.isPersistSelection || this.chkField)) {\n var indexes = [];\n for (var j = 0; j < rows.length; j++) {\n var rowObj = this.getRowObj(rows[parseInt(j.toString(), 10)]);\n var pKey = rowObj ? rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null : null;\n if (pKey === null) {\n return;\n }\n if (this.isPartialSelection && !rowObj.isSelectable) {\n continue;\n }\n var checkState = void 0;\n var chkBox = rows[parseInt(j.toString(), 10)].querySelector('.e-checkselect');\n if (this.selectedRowState[\"\" + pKey] || (this.parent.checkAllRows === 'Check' && this.selectedRowState[\"\" + pKey] &&\n this.totalRecordsCount === Object.keys(this.selectedRowState).length && this.chkAllCollec.indexOf(pKey) < 0)\n || (this.parent.checkAllRows === 'Uncheck' && this.chkAllCollec.indexOf(pKey) > 0 && !this.parent.selectedRowIndex)\n || (this.parent.checkAllRows === 'Intermediate' && !isNullOrUndefined(this.chkField) && rowObj.data[this.chkField])) {\n indexes.push(parseInt(rows[parseInt(j.toString(), 10)].getAttribute(dataRowIndex), 10));\n checkState = true;\n }\n else {\n checkState = false;\n if (this.checkedTarget !== chkBox && this.parent.isCheckBoxSelection && chkBox) {\n removeAddCboxClasses(chkBox.nextElementSibling, checkState);\n }\n }\n this.updatePersistCollection(rows[parseInt(j.toString(), 10)], checkState);\n }\n if (this.isSingleSel() && indexes.length > 0) {\n this.selectRow(indexes[0], true);\n }\n else {\n this.selectRows(indexes);\n }\n }\n if (this.parent.isCheckBoxSelection && this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n }\n };\n Selection.prototype.actionBegin = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n var editChkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n var row$$1 = closest(editChkBox, '.' + editedRow);\n if (row$$1) {\n if (this.parent.editSettings.mode === 'Dialog') {\n row$$1 = this.parent.element.querySelector('.e-dlgeditrow');\n }\n var rowObj = this.getRowObj(row$$1);\n if (!rowObj) {\n return;\n }\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = editChkBox.checked;\n }\n else {\n this.isCheckedOnAdd = editChkBox.checked;\n }\n }\n }\n if (this.parent.isPersistSelection && this.isPartialSelection) {\n if (e.requestType === 'paging' && (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.selectedRowIndexes = [];\n }\n if (e.requestType === 'filtering' || e.requestType === 'searching') {\n this.parent.partialSelectedRecords = [];\n this.parent.disableSelectedRecords = [];\n }\n }\n };\n Selection.prototype.actionComplete = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n if (e.action === 'add') {\n if (this.isCheckedOnAdd) {\n var rowObj = this.parent.getRowObjectFromUID(this.parent.getRows()[e.selectedRow].getAttribute('data-uid'));\n this.selectedRowState[this.getPkValue(this.primaryKey, rowObj.data)] = rowObj.isSelected = this.isCheckedOnAdd;\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n }\n this.refreshPersistSelection();\n }\n if (e.requestType === 'delete' && this.parent.isPersistSelection) {\n var records = e.data;\n var data = records.slice();\n for (var i = 0; i < data.length; i++) {\n var pkValue = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(pkValue)) {\n this.updatePersistDelete(pkValue, this.isPartialSelection);\n }\n }\n this.isHdrSelectAllClicked = false;\n this.setCheckAllState();\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n if (e.requestType === 'paging') {\n if (this.parent.isPersistSelection && this.isPartialSelection && this.isHdrSelectAllClicked) {\n var rows = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isSelectable) {\n indexes.push(rows[parseInt(i.toString(), 10)].index);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n }\n this.prevRowIndex = undefined;\n this.prevCIdxs = undefined;\n this.prevECIdxs = undefined;\n }\n };\n Selection.prototype.onDataBound = function () {\n if (!this.parent.enableVirtualization && this.parent.isPersistSelection) {\n if (this.selectedRecords.length) {\n this.isPrevRowSelection = true;\n }\n }\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && this.rmtHdrChkbxClicked) {\n if (this.parent.checkAllRows === 'Intermediate') {\n this.setRowSelection(true);\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n }\n }\n if (this.parent.enableVirtualization) {\n this.setCheckAllState();\n }\n if (this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n this.initialRowSelection = this.isRowType() && this.parent.element.querySelectorAll('.e-selectionbackground') &&\n this.parent.getSelectedRows().length ? true : false;\n if (this.parent.isCheckBoxSelection && !this.initialRowSelection) {\n var totalRecords = this.parent.getRowsObject();\n var indexes = [];\n for (var i = 0; i < totalRecords.length; i++) {\n if (totalRecords[parseInt(i.toString(), 10)].isSelected) {\n indexes.push(i);\n }\n }\n if (indexes.length) {\n this.selectRows(indexes);\n }\n this.initialRowSelection = true;\n }\n };\n Selection.prototype.updatePersistSelectedData = function (checkState) {\n if (this.parent.isPersistSelection) {\n var rows = this.parent.getRows();\n for (var i = 0; i < rows.length; i++) {\n this.updatePersistCollection(rows[parseInt(i.toString(), 10)], checkState);\n }\n if (this.parent.checkAllRows === 'Uncheck') {\n this.setRowSelection(false);\n this.persistSelectedData = (this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n ? this.persistSelectedData : [];\n }\n else if (this.parent.checkAllRows === 'Check') {\n this.setRowSelection(true);\n this.persistSelectedData = !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && !this.isPartialSelection ?\n this.parent.groupSettings.columns.length ? this.getData().records.slice() :\n this.getData().slice() : this.persistSelectedData;\n }\n }\n };\n Selection.prototype.checkSelectAllAction = function (checkState) {\n var cRenderer = this.getRenderer();\n var editForm = this.parent.element.querySelector('.e-gridform');\n this.checkedTarget = this.getCheckAllBox();\n if (checkState && this.getCurrentBatchRecordChanges().length) {\n this.parent.checkAllRows = 'Check';\n this.updatePersistSelectedData(checkState);\n this.selectRowsByRange(cRenderer.getVirtualRowIndex(0), cRenderer.getVirtualRowIndex(this.getCurrentBatchRecordChanges().length - 1));\n }\n else {\n this.parent.checkAllRows = 'Uncheck';\n this.updatePersistSelectedData(checkState);\n this.clearSelection();\n }\n this.chkAllCollec = [];\n if (!isNullOrUndefined(editForm)) {\n var editChkBox = editForm.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(editChkBox)) {\n removeAddCboxClasses(editChkBox.nextElementSibling, checkState);\n }\n }\n };\n Selection.prototype.checkSelectAll = function (checkBox) {\n var _this = this;\n var stateStr = this.getCheckAllStatus(checkBox);\n var state = stateStr === 'Check';\n this.isHeaderCheckboxClicked = true;\n if ((this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) && stateStr === 'Uncheck') {\n this.rmtHdrChkbxClicked = true;\n }\n else {\n this.rmtHdrChkbxClicked = false;\n }\n if (stateStr === 'Intermediate') {\n state = this.getCurrentBatchRecordChanges().some(function (data) {\n return _this.getPkValue(_this.primaryKey, data) in _this.selectedRowState;\n });\n }\n if (this.parent.isPersistSelection && this.parent.allowPaging) {\n this.totalRecordsCount = this.parent.pageSettings.totalRecordsCount;\n }\n this.checkSelectAllAction(!state);\n this.target = null;\n if (this.getCurrentBatchRecordChanges().length > 0) {\n this.setCheckAllState();\n this.updateSelectedRowIndexes();\n }\n this.triggerChkChangeEvent(checkBox, !state);\n };\n Selection.prototype.getCheckAllStatus = function (ele) {\n var classes = ele ? ele.nextElementSibling.classList :\n this.getCheckAllBox().nextElementSibling.classList;\n var status;\n if (classes.contains('e-check')) {\n status = 'Check';\n }\n else if (classes.contains('e-uncheck')) {\n status = 'Uncheck';\n }\n else if (classes.contains('e-stop')) {\n status = 'Intermediate';\n }\n else {\n status = 'None';\n }\n return status;\n };\n Selection.prototype.checkSelect = function (checkBox) {\n var target = closest(this.checkedTarget, '.' + rowCell);\n var gObj = this.parent;\n this.isMultiCtrlRequest = true;\n var rIndex = 0;\n this.isHeaderCheckboxClicked = false;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(addedRow).length > 0 &&\n this.parent.editSettings.newRowPosition === 'Top') {\n ++rIndex;\n }\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(dataColIndex), 10));\n this.moveIntoUncheckCollection(closest(target, '.' + row));\n this.setCheckAllState();\n this.isMultiCtrlRequest = false;\n this.triggerChkChangeEvent(checkBox, checkBox.nextElementSibling.classList.contains('e-check'));\n };\n Selection.prototype.moveIntoUncheckCollection = function (row$$1) {\n if (this.parent.checkAllRows === 'Check' || this.parent.checkAllRows === 'Uncheck') {\n var rowObj = this.getRowObj(row$$1);\n var pKey = rowObj && rowObj.data ? this.getPkValue(this.primaryKey, rowObj.data) : null;\n if (!pKey) {\n return;\n }\n if (this.chkAllCollec.indexOf(pKey) < 0) {\n this.chkAllCollec.push(pKey);\n }\n else {\n this.chkAllCollec.splice(this.chkAllCollec.indexOf(pKey), 1);\n }\n }\n };\n Selection.prototype.triggerChkChangeEvent = function (checkBox, checkState) {\n this.parent.trigger(checkBoxChange, {\n checked: checkState, selectedRowIndexes: this.parent.getSelectedRowIndexes(),\n target: checkBox\n });\n if (!this.parent.isEdit) {\n this.checkedTarget = null;\n }\n };\n Selection.prototype.updateSelectedRowIndexes = function () {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling) &&\n this.isPartialSelection && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && this.parent.selectionSettings.persistSelection) {\n if (this.parent.checkAllRows !== 'Uncheck') {\n var rowObj = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; });\n for (var _i = 0, rowObj_2 = rowObj; _i < rowObj_2.length; _i++) {\n var row$$1 = rowObj_2[_i];\n this.selectedRowIndexes.push(row$$1.index);\n }\n }\n }\n };\n Selection.prototype.updateSelectedRowIndex = function (index) {\n if (this.parent.isCheckBoxSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !(this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result))\n && !this.isPartialSelection) {\n if (this.parent.checkAllRows === 'Check') {\n this.selectedRowIndexes = [];\n var dataLength = this.getData().length;\n for (var data = 0; data < dataLength; data++) {\n this.selectedRowIndexes.push(data);\n }\n }\n else if (this.parent.checkAllRows === 'Uncheck') {\n this.selectedRowIndexes = [];\n }\n else {\n var row$$1 = this.parent.getRowByIndex(index);\n if (index && row$$1 && row$$1.getAttribute('aria-selected') === 'false') {\n var selectedVal = this.selectedRowIndexes.indexOf(index);\n this.selectedRowIndexes.splice(selectedVal, 1);\n }\n }\n }\n };\n Selection.prototype.isAllSelected = function (count) {\n if (this.isPartialSelection) {\n if (this.parent.allowPaging && this.parent.pageSettings.pageSize < this.parent.pageSettings.totalRecordsCount) {\n var data = this.parent.partialSelectedRecords;\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n else {\n return this.isSelectAllRowCount(count);\n }\n }\n else {\n var data = this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (!this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n }\n };\n Selection.prototype.someDataSelected = function () {\n var data = this.isPartialSelection ? this.parent.partialSelectedRecords : this.getData();\n for (var i = 0; i < data.length; i++) {\n var pKey = this.getPkValue(this.primaryKey, data[parseInt(i.toString(), 10)]);\n if (this.selectedRowState[\"\" + pKey]) {\n return false;\n }\n }\n return true;\n };\n Selection.prototype.setCheckAllState = function (index, isInteraction) {\n if (this.parent.isCheckBoxSelection || this.parent.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n var checkToSelectAll = false;\n var isFiltered = false;\n var checkedLen = Object.keys(this.selectedRowState).length;\n if (!this.parent.isPersistSelection) {\n checkedLen = this.selectedRowIndexes.length;\n this.totalRecordsCount = this.getCurrentBatchRecordChanges().length;\n }\n if (this.parent.isPersistSelection && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n && (this.parent.searchSettings.key.length\n || this.parent.filterSettings.columns.length)) {\n isFiltered = true;\n checkToSelectAll = this.isAllSelected(checkedLen);\n }\n var input = this.getCheckAllBox();\n if (input) {\n var spanEle = input.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n setChecked(input, false);\n input.indeterminate = false;\n if ((checkToSelectAll && isFiltered && this.getData().length) || (!isFiltered\n && ((checkedLen === this.totalRecordsCount && this.totalRecordsCount\n && !this.isPartialSelection && (!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))\n || this.parent.allowPaging)) ||\n (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling\n && this.isPartialSelection && (this.isSelectAllRowCount(checkedLen) || this.isHdrSelectAllClicked))\n || ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && ((!(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n this.getData().length && checkedLen === this.getData().length) || ((this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result)) &&\n !this.isPartialSelection && (checkedLen === this.parent.totalDataRecordsCount)) ||\n (this.isPartialSelection && (this.isHdrSelectAllClicked || this.isSelectAllRowCount(checkedLen)))))))) {\n addClass([spanEle], ['e-check']);\n setChecked(input, true);\n if (isInteraction) {\n this.getRenderer().setSelection(null, true, true);\n }\n this.parent.checkAllRows = 'Check';\n }\n else if (((!this.selectedRowIndexes.length && (!this.parent.enableVirtualization ||\n (!this.persistSelectedData.length && !isFiltered) || (isFiltered && this.someDataSelected())) ||\n checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) && !this.parent.allowPaging) ||\n (this.parent.allowPaging && (checkedLen === 0 || (checkedLen && isFiltered && this.someDataSelected())))) {\n addClass([spanEle], ['e-uncheck']);\n if (isInteraction) {\n this.getRenderer().setSelection(null, false, true);\n }\n this.parent.checkAllRows = 'Uncheck';\n if (checkedLen === 0 && this.getCurrentBatchRecordChanges().length === 0) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n else {\n addClass([spanEle], ['e-stop']);\n this.parent.checkAllRows = 'Intermediate';\n input.indeterminate = true;\n }\n if (this.isPartialSelection) {\n var rowCount = this.parent.getRowsObject().filter(function (e) { return e.isSelectable; }).length;\n if (rowCount === 0 && spanEle.parentElement.querySelector('.e-frame').classList.contains('e-uncheck')) {\n addClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n else {\n removeClass([spanEle.parentElement], ['e-checkbox-disabled']);\n }\n }\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && !this.parent.allowPaging && !(this.parent.getDataModule().isRemote()\n || (!isNullOrUndefined(this.parent.dataSource) && this.parent.dataSource.result))) {\n this.updateSelectedRowIndex(index);\n }\n }\n }\n };\n Selection.prototype.isSelectAllRowCount = function (count) {\n var rowCount = 0;\n var rowObj = this.parent.getRowsObject();\n if (this.parent.selectionSettings.persistSelection && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var dataLen = (this.parent.getDataModule().isRemote() || (!isNullOrUndefined(this.parent.dataSource)\n && this.parent.dataSource.result)) ?\n this.parent.totalDataRecordsCount : this.getData() && this.getData().length;\n if (dataLen === rowObj.length) {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n else {\n return false;\n }\n }\n else {\n if (this.parent.allowPaging && this.parent.selectionSettings.persistSelection) {\n rowCount = this.parent.partialSelectedRecords.length + this.parent.disableSelectedRecords.length;\n if (rowCount === this.totalRecordsCount) {\n return this.parent.partialSelectedRecords.length && count === this.parent.partialSelectedRecords.length;\n }\n else {\n return false;\n }\n }\n else {\n rowCount = rowObj.filter(function (e) { return e.isSelectable; }).length;\n return rowCount && count === rowCount;\n }\n }\n };\n Selection.prototype.keyDownHandler = function (e) {\n // Below are keyCode for command key in MAC OS. Safari/Chrome(91-Left command, 93-Right Command), Opera(17), FireFox(224)\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = true;\n }\n var targetHeadCell = parentsUntil(e.target, 'e-headercell');\n var targetRowCell = parentsUntil(e.target, rowCell);\n var isCheckBox = targetHeadCell ? targetHeadCell.children[0].classList.contains('e-headerchkcelldiv') :\n targetRowCell ? targetRowCell.classList.contains('e-gridchkbox') : false;\n if (isCheckBox && !this.parent.allowKeyboard && e.keyCode === 32) {\n e.preventDefault();\n }\n };\n Selection.prototype.keyUpHandler = function (e) {\n if ((((Browser.info.name === 'chrome') || (Browser.info.name === 'safari')) && (e.keyCode === 91 || e.keyCode === 93)) ||\n (Browser.info.name === 'opera' && e.keyCode === 17) || (Browser.info.name === 'mozilla' && e.keyCode === 224)) {\n this.cmdKeyPressed = false;\n }\n };\n Selection.prototype.clickHandler = function (e) {\n var target = e.target;\n this.actualTarget = target;\n if (this.selectionSettings.persistSelection) {\n this.deSelectedData = iterateExtend(this.persistSelectedData);\n }\n if (parentsUntil(target, row) || parentsUntil(target, 'e-headerchkcelldiv') ||\n (this.selectionSettings.allowColumnSelection && target.classList.contains('e-headercell'))) {\n this.isInteracted = true;\n }\n this.isMultiCtrlRequest = e.ctrlKey || this.enableSelectMultiTouch ||\n (this.isMacOS && this.cmdKeyPressed);\n if (!this.parent.allowKeyboard) {\n this.isMultiShiftRequest = false;\n this.isMultiCtrlRequest = false;\n }\n else {\n this.isMultiShiftRequest = e.shiftKey;\n }\n this.popUpClickHandler(e);\n var chkSelect = false;\n this.preventFocus = true;\n var checkBox;\n var checkWrap = parentsUntil(target, 'e-checkbox-wrapper');\n this.checkSelectAllClicked = checkWrap && checkWrap.getElementsByClassName('e-checkselectall') ||\n (this.selectionSettings.persistSelection && parentsUntil(target, row)) ? true : false;\n if (this.selectionSettings.persistSelection && this.isPartialSelection && parentsUntil(target, 'e-headerchkcelldiv')\n && !target.querySelector('.e-checkbox-disabled')) {\n this.isHdrSelectAllClicked = true;\n }\n if (checkWrap && checkWrap.querySelectorAll('.e-checkselect,.e-checkselectall').length > 0) {\n checkBox = checkWrap.querySelector('input[type=\"checkbox\"]');\n chkSelect = true;\n }\n this.drawBorders();\n this.updateAutoFillPosition();\n target = parentsUntil(target, rowCell);\n if (this.parent.isReact && (target && !target.parentElement && target.classList.contains('e-rowcell'))) {\n target = this.parent.getCellFromIndex(parseInt(target.getAttribute('index'), 10), parseInt(target.getAttribute('data-colindex'), 10));\n }\n if (((target && target.parentElement.classList.contains(row) && !this.parent.selectionSettings.checkboxOnly) || chkSelect)\n && !this.isRowDragSelected) {\n if (this.parent.isCheckBoxSelection) {\n this.isMultiCtrlRequest = true;\n }\n this.target = target;\n if (!isNullOrUndefined(checkBox)) {\n this.checkedTarget = checkBox;\n if (checkBox.classList.contains('e-checkselectall')) {\n this.checkSelectAll(checkBox);\n }\n else {\n this.checkSelect(checkBox);\n }\n }\n else {\n var gObj = this.parent;\n var rIndex = 0;\n if (isGroupAdaptive(gObj)) {\n var uid = target.parentElement.getAttribute('data-uid');\n rIndex = gObj.getRows().map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n }\n else {\n rIndex = parseInt(target.parentElement.getAttribute(dataRowIndex), 10);\n }\n if (this.parent.isPersistSelection && this.parent.element.getElementsByClassName(addedRow).length > 0) {\n ++rIndex;\n }\n if (!this.mUPTarget || !this.mUPTarget.isEqualNode(target)) {\n this.rowCellSelectionHandler(rIndex, parseInt(target.getAttribute(dataColIndex), 10));\n }\n this.parent.hoverFrozenRows(e);\n if (this.parent.isCheckBoxSelection) {\n this.moveIntoUncheckCollection(closest(target, '.' + row));\n this.setCheckAllState();\n }\n }\n if (!this.parent.isCheckBoxSelection && Browser.isDevice && !this.isSingleSel()) {\n this.showPopup(e);\n }\n }\n else if (e.target.classList.contains('e-headercell') &&\n !e.target.classList.contains('e-stackedheadercell')) {\n var uid = e.target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n this.headerSelectionHandler(this.parent.getColumnIndexByUid(uid));\n }\n this.isMultiCtrlRequest = false;\n this.isMultiShiftRequest = false;\n if (isNullOrUndefined(closest(e.target, '.e-unboundcell'))) {\n this.preventFocus = false;\n }\n };\n Selection.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-rowselect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSelectMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSelectMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Selection.prototype.showPopup = function (e) {\n if (!this.selectionSettings.enableSimpleMultiRowSelection) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-rowselect e-icons e-icon-rowselect' +\n (!this.isSingleSel() && (this.selectedRecords.length > (this.parent.getFrozenColumns() ? 2 : 1)\n || this.selectedRowCellIndexes.length > 1) ? ' e-spanclicked' : ''));\n }\n };\n Selection.prototype.rowCellSelectionHandler = function (rowIndex, cellIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n if (!this.isDragged) {\n this.selectRow(rowIndex, this.selectionSettings.enableToggle);\n }\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, this.selectionSettings.enableToggle);\n if (this.selectedRowCellIndexes.length) {\n this.updateAutoFillPosition();\n }\n this.drawBorders();\n }\n else if (this.isMultiShiftRequest) {\n if (this.parent.isCheckBoxSelection || (!this.parent.isCheckBoxSelection &&\n !closest(this.target, '.' + rowCell).classList.contains(gridChkBox))) {\n this.selectRowsByRange(isUndefined(this.prevRowIndex) ? rowIndex : this.prevRowIndex, rowIndex);\n }\n else {\n this.addRowsToSelection([rowIndex]);\n }\n this.selectCellsByRange(isUndefined(this.prevCIdxs) ? { rowIndex: rowIndex, cellIndex: cellIndex } : this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n this.updateAutoFillPosition();\n this.drawBorders();\n }\n else {\n this.addRowsToSelection([rowIndex]);\n this.addCellsToSelection([{ rowIndex: rowIndex, cellIndex: cellIndex }]);\n this.showHideBorders('none');\n }\n this.isDragged = false;\n };\n Selection.prototype.onCellFocused = function (e) {\n if (this.parent.frozenRows && e.container.isHeader && e.byKey) {\n if (e.keyArgs.action === 'upArrow') {\n if (this.parent.allowFiltering) {\n e.isJump = e.element.tagName === 'INPUT' ? true : false;\n }\n else {\n e.isJump = e.element.tagName === 'TH' ? true : false;\n }\n }\n else {\n if (e.keyArgs.action === 'downArrow') {\n var rIdx = Number(e.element.parentElement.getAttribute(dataRowIndex));\n e.isJump = rIdx === 0 ? true : false;\n }\n else {\n if (e.keyArgs.action === 'ctrlHome') {\n e.isJump = true;\n }\n }\n }\n }\n var clear = this.parent.isFrozenGrid() ? (((e.container.isHeader && e.element.tagName !== 'TD' && e.isJump &&\n !this.selectionSettings.allowColumnSelection) ||\n ((e.container.isContent || e.element.tagName === 'TD') && !(e.container.isSelectable || e.element.tagName === 'TD')))\n && !(e.byKey && e.keyArgs.action === 'space')) : ((e.container.isHeader && e.isJump) ||\n (e.container.isContent && !e.container.isSelectable)) && !(e.byKey && e.keyArgs.action === 'space')\n && !(e.element.classList.contains('e-detailrowexpand') || e.element.classList.contains('e-detailrowcollapse'));\n var headerAction = (e.container.isHeader && e.element.tagName !== 'TD' && !closest(e.element, '.' + rowCell))\n && !(e.byKey && e.keyArgs.action === 'space');\n if (!e.byKey || clear) {\n if (clear && !this.parent.isCheckBoxSelection) {\n this.clearSelection();\n }\n return;\n }\n var _a = e.container.isContent ? e.container.indexes : e.indexes, rowIndex = _a[0], cellIndex = _a[1];\n var prev = this.focus.getPrevIndexes();\n if (this.parent.frozenRows) {\n if (e.container.isHeader && (e.element.tagName === 'TD' || closest(e.element, '.' + rowCell))) {\n var thLen = this.parent.getHeaderTable().querySelector('thead').childElementCount;\n rowIndex -= thLen;\n prev.rowIndex = !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex - thLen : null;\n }\n else {\n rowIndex += this.parent.frozenRows;\n prev.rowIndex = prev.rowIndex === 0 || !isNullOrUndefined(prev.rowIndex) ? prev.rowIndex + this.parent.frozenRows : null;\n }\n }\n if (this.parent.isFrozenGrid()) {\n var cIdx = Number(e.element.getAttribute(dataColIndex));\n var selectedIndexes = this.parent.getSelectedRowCellIndexes();\n if (selectedIndexes.length && prev.cellIndex === 0) {\n prev.cellIndex = selectedIndexes[selectedIndexes.length - 1].cellIndexes[0];\n }\n prev.cellIndex = !isNullOrUndefined(prev.cellIndex) ? (prev.cellIndex === cellIndex ? cIdx : cIdx - 1) : null;\n cellIndex = cIdx;\n }\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n rowIndex = parseInt(e.element.parentElement.getAttribute('data-rowindex'), 10);\n }\n if ((headerAction || (['ctrlPlusA', 'escape'].indexOf(e.keyArgs.action) === -1 &&\n e.keyArgs.action !== 'space' && rowIndex === prev.rowIndex && cellIndex === prev.cellIndex)) &&\n !this.selectionSettings.allowColumnSelection) {\n return;\n }\n this.preventFocus = true;\n var columnIndex = this.getKeyColIndex(e);\n if (this.needColumnSelection) {\n cellIndex = columnIndex;\n }\n if (this.parent.element.classList.contains('e-gridcell-read') && (e.keyArgs.action === 'tab' || e.keyArgs.action === 'shiftTab'\n || e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML + ' column header ' + this.parent.getColumnByIndex(cellIndex).field;\n this.target.setAttribute('aria-label', targetLabel);\n }\n switch (e.keyArgs.action) {\n case 'downArrow':\n case 'upArrow':\n case 'enter':\n case 'shiftEnter':\n this.target = e.element;\n this.isKeyAction = true;\n this.applyDownUpKey(rowIndex, cellIndex);\n break;\n case 'rightArrow':\n case 'leftArrow':\n this.applyRightLeftKey(rowIndex, cellIndex);\n break;\n case 'shiftDown':\n case 'shiftUp':\n this.shiftDownKey(rowIndex, cellIndex);\n break;\n case 'shiftLeft':\n case 'shiftRight':\n this.applyShiftLeftRightKey(rowIndex, cellIndex);\n break;\n case 'home':\n case 'end':\n cellIndex = e.keyArgs.action === 'end' ? this.getLastColIndex(rowIndex) : 0;\n this.applyHomeEndKey(rowIndex, cellIndex);\n break;\n case 'ctrlHome':\n case 'ctrlEnd':\n this.applyCtrlHomeEndKey(rowIndex, cellIndex);\n break;\n case 'escape':\n this.clearSelection();\n break;\n case 'ctrlPlusA':\n this.ctrlPlusA();\n break;\n case 'space':\n this.applySpaceSelection(e.element);\n break;\n case 'tab':\n if (this.parent.editSettings.allowNextRowEdit) {\n this.selectRow(rowIndex);\n }\n break;\n }\n this.needColumnSelection = false;\n this.preventFocus = false;\n this.positionBorders();\n this.updateAutoFillPosition();\n };\n Selection.prototype.getKeyColIndex = function (e) {\n var uid;\n var index = null;\n var stackedHeader = e.element.querySelector('.e-stackedheadercelldiv');\n if (this.selectionSettings.allowColumnSelection && parentsUntil(e.element, 'e-columnheader')) {\n this.needColumnSelection = e.container.isHeader ? true : false;\n if (stackedHeader) {\n if (e.keyArgs.action === 'rightArrow' || e.keyArgs.action === 'leftArrow') {\n return index;\n }\n uid = stackedHeader.getAttribute('e-mappinguid');\n var innerColumn = this.getstackedColumns(this.parent.getColumnByUid(uid).columns);\n var lastIndex = this.parent.getColumnIndexByUid(innerColumn[innerColumn.length - 1].uid);\n var firstIndex = this.parent.getColumnIndexByUid(innerColumn[0].uid);\n index = this.prevColIndex >= lastIndex ? firstIndex : lastIndex;\n }\n else {\n index = this.parent.getColumnIndexByUid(e.element\n .querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n }\n }\n return index;\n };\n /**\n * Apply ctrl + A key selection\n *\n * @returns {void}\n * @hidden\n */\n Selection.prototype.ctrlPlusA = function () {\n if (this.isRowType() && !this.isSingleSel()) {\n this.selectRowsByRange(0, this.getCurrentBatchRecordChanges().length - 1);\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange({ rowIndex: 0, cellIndex: 0 }, { rowIndex: this.parent.getRows().length - 1, cellIndex: this.parent.getColumns().length - 1 });\n }\n };\n Selection.prototype.applySpaceSelection = function (target) {\n if (target.classList.contains('e-checkselectall')) {\n this.checkedTarget = target;\n this.checkSelectAll(this.checkedTarget);\n }\n else {\n if (target.classList.contains('e-checkselect')) {\n this.checkedTarget = target;\n this.checkSelect(this.checkedTarget);\n }\n }\n };\n Selection.prototype.applyDownUpKey = function (rowIndex, cellIndex) {\n var gObj = this.parent;\n if (this.parent.isCheckBoxSelection && this.parent.checkAllRows === 'Check' && !this.selectionSettings.persistSelection &&\n !this.selectionSettings.checkboxOnly) {\n this.checkSelectAllAction(false);\n this.checkedTarget = null;\n }\n if (this.isRowType() && !this.selectionSettings.checkboxOnly) {\n if (this.parent.frozenRows) {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n else {\n this.selectRow(rowIndex, true);\n this.applyUpDown(gObj.selectedRowIndex);\n }\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n };\n Selection.prototype.applyUpDown = function (rowIndex) {\n if (rowIndex < 0) {\n return;\n }\n if (!this.target) {\n this.target = this.parent.getRows()[0].children[this.parent.groupSettings.columns.length || 0];\n }\n var cIndex = parseInt(this.target.getAttribute(dataColIndex), 10);\n var frzCols = this.parent.getFrozenColumns();\n if (frzCols) {\n if (cIndex >= frzCols) {\n this.target =\n this.contentRenderer.getMovableRowByIndex(rowIndex).getElementsByClassName(rowCell)[cIndex - frzCols];\n }\n else {\n this.target = this.contentRenderer.getRowByIndex(rowIndex)\n .getElementsByClassName(rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n else {\n var row$$1 = this.contentRenderer.getRowByIndex(rowIndex);\n if (row$$1) {\n this.target = row$$1.getElementsByClassName(rowCell)[parseInt(cIndex.toString(), 10)];\n }\n }\n this.addAttribute(this.target);\n if (this.parent.element.classList.contains('e-gridcell-read')) {\n var targetLabel = this.target.getAttribute('aria-label');\n targetLabel = this.target.innerHTML;\n this.target.setAttribute('aria-label', targetLabel);\n }\n };\n Selection.prototype.applyRightLeftKey = function (rowIndex, cellIndex) {\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumn(cellIndex);\n }\n else if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n this.addAttribute(this.target);\n }\n };\n Selection.prototype.applyHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n else {\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n };\n /**\n * Apply shift+down key selection\n *\n * @param {number} rowIndex - specfies the rowIndex\n * @param {number} cellIndex - specifies the CellIndex\n * @returns {void}\n * @hidden\n */\n Selection.prototype.shiftDownKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.isRowType() && !this.isSingleSel()) {\n if (!isUndefined(this.prevRowIndex)) {\n this.selectRowsByRange(this.prevRowIndex, rowIndex);\n this.applyUpDown(rowIndex);\n }\n else if (this.isPartialSelection) {\n this.selectRow(rowIndex, true);\n }\n else {\n this.selectRow(0, true);\n }\n }\n if (this.isCellType() && !this.isSingleSel()) {\n this.selectCellsByRange(this.prevCIdxs || { rowIndex: 0, cellIndex: 0 }, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.applyShiftLeftRightKey = function (rowIndex, cellIndex) {\n this.isMultiShiftRequest = true;\n if (this.selectionSettings.allowColumnSelection && this.needColumnSelection) {\n this.selectColumnsByRange(this.prevColIndex, cellIndex);\n }\n else {\n this.selectCellsByRange(this.prevCIdxs, { rowIndex: rowIndex, cellIndex: cellIndex });\n }\n this.isMultiShiftRequest = false;\n };\n Selection.prototype.getstackedColumns = function (column) {\n var innerColumnIndexes = [];\n for (var i = 0, len = column.length; i < len; i++) {\n if (column[parseInt(i.toString(), 10)].columns) {\n this.getstackedColumns(column[parseInt(i.toString(), 10)].columns);\n }\n else {\n innerColumnIndexes.push(column[parseInt(i.toString(), 10)]);\n }\n }\n return innerColumnIndexes;\n };\n Selection.prototype.applyCtrlHomeEndKey = function (rowIndex, cellIndex) {\n if (this.isRowType()) {\n this.selectRow(rowIndex, true);\n this.addAttribute(this.parent.getCellFromIndex(rowIndex, cellIndex));\n }\n if (this.isCellType()) {\n this.selectCell({ rowIndex: rowIndex, cellIndex: cellIndex }, true);\n }\n };\n Selection.prototype.addRemoveClassesForRow = function (row$$1, isAdd, clearAll) {\n var args = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n args[_i - 3] = arguments[_i];\n }\n if (row$$1) {\n var cells = [].slice.call(row$$1.getElementsByClassName(rowCell));\n var detailIndentCell = row$$1.querySelector('.e-detailrowcollapse') || row$$1.querySelector('.e-detailrowexpand');\n var dragdropIndentCell = row$$1.querySelector('.e-rowdragdrop');\n if (detailIndentCell) {\n cells.push(detailIndentCell);\n }\n if (dragdropIndentCell) {\n cells.push(dragdropIndentCell);\n }\n addRemoveActiveClasses.apply(void 0, [cells, isAdd].concat(args));\n }\n this.getRenderer().setSelection(row$$1 ? row$$1.getAttribute('data-uid') : null, isAdd, clearAll);\n };\n Selection.prototype.isRowType = function () {\n return this.selectionSettings.mode === 'Row' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isCellType = function () {\n return this.selectionSettings.mode === 'Cell' || this.selectionSettings.mode === 'Both';\n };\n Selection.prototype.isSingleSel = function () {\n return this.selectionSettings.type === 'Single';\n };\n Selection.prototype.getRenderer = function () {\n if (isNullOrUndefined(this.contentRenderer)) {\n this.contentRenderer = this.factory.getRenderer(RenderType.Content);\n }\n return this.contentRenderer;\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} returns the Object\n */\n Selection.prototype.getSelectedRecords = function () {\n var selectedData = [];\n if (!this.selectionSettings.persistSelection && this.selectedRecords.length) {\n selectedData = this.parent.getRowsObject().filter(function (row$$1) { return row$$1.isSelected; })\n .map(function (m) { return m.data; });\n }\n else {\n selectedData = this.persistSelectedData;\n }\n return selectedData;\n };\n /**\n * Select the column by passing start column index\n *\n * @param {number} index - specifies the index\n * @returns {void}\n */\n Selection.prototype.selectColumn = function (index) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(index.toString(), 10)])) {\n return;\n }\n var column = gObj.getColumnByIndex(index);\n var selectedCol = gObj.getColumnHeaderByUid(column.uid);\n var isColSelected = selectedCol.classList.contains('e-columnselection');\n if ((!gObj.selectionSettings.allowColumnSelection)) {\n return;\n }\n var isMultiColumns = this.selectedColumnsIndexes.length > 1 &&\n this.selectedColumnsIndexes.indexOf(index) > -1;\n this.clearColDependency();\n if (!isColSelected || !this.selectionSettings.enableToggle || isMultiColumns) {\n var args = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(args, columnSelecting);\n if (args.cancel) {\n this.disableInteracted();\n return;\n }\n if (!(gObj.selectionSettings.enableToggle && index === this.prevColIndex && isColSelected) || isMultiColumns) {\n this.updateColSelection(selectedCol, index);\n }\n var selectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n column: column,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, columnSelected);\n }\n this.updateColProps(index);\n };\n /**\n * Select the columns by passing start and end column index\n *\n * @param {number} startIndex - specifies the start index\n * @param {number} endIndex - specifies the end index\n * @returns {void}\n */\n Selection.prototype.selectColumnsByRange = function (startIndex, endIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var indexes = [];\n if (gObj.selectionSettings.type === 'Single' || isNullOrUndefined(endIndex)) {\n indexes[0] = startIndex;\n }\n else {\n var min = startIndex < endIndex;\n for (var i = startIndex; min ? i <= endIndex : i >= endIndex; min ? i++ : i--) {\n indexes.push(i);\n }\n }\n this.selectColumns(indexes);\n };\n /**\n * Select the columns by passing column indexes\n *\n * @param {number[]} columnIndexes - specifies the columnIndexes\n * @returns {void}\n */\n Selection.prototype.selectColumns = function (columnIndexes) {\n var gObj = this.parent;\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n columnIndexes = [columnIndexes[0]];\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n this.clearColDependency();\n var selectingArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n for (var i = 0, len = columnIndexes.length; i < len; i++) {\n this.updateColSelection(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(columnIndexes[parseInt(i.toString(), 10)]).uid), columnIndexes[parseInt(i.toString(), 10)]);\n }\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: columnIndexes[0], headerCell: selectedCol,\n columnIndexes: columnIndexes,\n column: gObj.getColumnByIndex(columnIndexes[0]),\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, columnSelected);\n this.updateColProps(columnIndexes[0]);\n };\n /**\n * Select the column with existing column by passing column index\n *\n * @param {number} startIndex - specifies the start index\n * @returns {void}\n */\n Selection.prototype.selectColumnWithExisting = function (startIndex) {\n var gObj = this.parent;\n if (isNullOrUndefined(gObj.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var newCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(startIndex).uid);\n var selectedCol = this.getselectedCols();\n if (gObj.selectionSettings.type === 'Single') {\n this.clearColDependency();\n }\n if (!gObj.selectionSettings.allowColumnSelection) {\n return;\n }\n if (this.selectedColumnsIndexes.indexOf(startIndex) > -1) {\n this.clearColumnSelection(startIndex);\n }\n else {\n var selectingArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: gObj.getColumnByIndex(startIndex),\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex,\n isCtrlPressed: this.isMultiCtrlRequest, isShiftPressed: this.isMultiShiftRequest\n };\n this.onActionBegin(selectingArgs, columnSelecting);\n if (selectingArgs.cancel) {\n this.disableInteracted();\n return;\n }\n this.updateColSelection(newCol, startIndex);\n selectedCol = this.getselectedCols();\n var selectedArgs = {\n columnIndex: startIndex, headerCell: selectedCol,\n column: gObj.getColumnByIndex(startIndex),\n columnIndexes: this.selectedColumnsIndexes,\n target: this.actualTarget,\n isInteracted: this.isInteracted, previousColumnIndex: this.prevColIndex\n };\n this.onActionComplete(selectedArgs, columnSelected);\n }\n this.updateColProps(startIndex);\n };\n /**\n * Clear the column selection\n *\n * @param {number} clearIndex - specifies the clearIndex\n * @returns {void}\n */\n Selection.prototype.clearColumnSelection = function (clearIndex) {\n if (this.isColumnSelected) {\n var gObj = this.parent;\n if (!isNullOrUndefined(clearIndex) && this.selectedColumnsIndexes.indexOf(clearIndex) === -1) {\n return;\n }\n var index = !isNullOrUndefined(clearIndex) ? clearIndex :\n this.selectedColumnsIndexes[this.selectedColumnsIndexes.length - 1];\n var col = gObj.getColumnByIndex(index);\n var selectedCol = void 0;\n var column = gObj.getColumnByIndex(index);\n if (col.getFreezeTableName() === frozenRight) {\n selectedCol = gObj.getFrozenRightColumnHeaderByIndex(index);\n }\n else if (col.getFreezeTableName() === 'movable') {\n selectedCol = gObj.getMovableColumnHeaderByIndex(index);\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(column.uid);\n }\n var deselectedArgs = {\n columnIndex: index, headerCell: selectedCol,\n columnIndexes: this.selectedColumnsIndexes,\n column: column,\n cancel: false, target: this.actualTarget,\n isInteracted: this.isInteracted\n };\n var isCanceled = this.columnDeselect(deselectedArgs, columnDeselecting);\n if (isCanceled) {\n this.disableInteracted();\n return;\n }\n var selectedHeader = !isNullOrUndefined(clearIndex) ? [selectedCol] :\n [].slice.call(gObj.getHeaderContent().getElementsByClassName('e-columnselection'));\n var selectedCells = this.getSelectedColumnCells(clearIndex);\n for (var i = 0, len = selectedHeader.length; i < len; i++) {\n addRemoveActiveClasses([selectedHeader[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n for (var i = 0, len = selectedCells.length; i < len; i++) {\n addRemoveActiveClasses([selectedCells[parseInt(i.toString(), 10)]], false, 'e-columnselection');\n }\n if (!isNullOrUndefined(clearIndex)) {\n this.selectedColumnsIndexes.splice(this.selectedColumnsIndexes.indexOf(clearIndex), 1);\n this.parent.getColumns()[parseInt(clearIndex.toString(), 10)].isSelected = false;\n }\n else {\n this.columnDeselect(deselectedArgs, columnDeselected);\n this.selectedColumnsIndexes = [];\n this.isColumnSelected = false;\n this.parent.getColumns().filter(function (col) { return col.isSelected = false; });\n }\n }\n };\n Selection.prototype.getselectedCols = function () {\n var gObj = this.parent;\n var selectedCol;\n if (this.selectedColumnsIndexes.length > 1) {\n selectedCol = [];\n for (var i = 0; i < this.selectedColumnsIndexes.length; i++) {\n (selectedCol).push(gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[parseInt(i.toString(), 10)]).uid));\n }\n }\n else {\n selectedCol = gObj.getColumnHeaderByUid(gObj.getColumnByIndex(this.selectedColumnsIndexes[0]).uid);\n }\n return selectedCol;\n };\n Selection.prototype.getSelectedColumnCells = function (clearIndex) {\n var gObj = this.parent;\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows = isRowTemplate ? gObj.getRows() : gObj.getDataRows();\n var movableRows;\n var frRows;\n if (gObj.isFrozenGrid() && gObj.getContent().querySelector('.' + movableContent)) {\n movableRows = isRowTemplate ? gObj.getMovableRows() : gObj.getMovableDataRows();\n rows = gObj.addMovableRows(rows, movableRows);\n if (gObj.getFrozenMode() === leftRight) {\n frRows = isRowTemplate ? gObj.getFrozenRightRows() : gObj.getFrozenRightDataRows();\n rows = gObj.addMovableRows(rows, frRows);\n }\n }\n var seletedcells = [];\n var selectionString = !isNullOrUndefined(clearIndex) ? '[data-colindex=\"' + clearIndex + '\"]' : '.e-columnselection';\n for (var i = 0, len = rows.length; i < len; i++) {\n seletedcells = seletedcells.concat([].slice.call(rows[parseInt(i.toString(), 10)].querySelectorAll(selectionString)));\n }\n return seletedcells;\n };\n Selection.prototype.columnDeselect = function (args, event) {\n if (event === 'columnDeselected') {\n delete args.cancel;\n }\n this.onActionComplete(args, event);\n return args.cancel;\n };\n Selection.prototype.updateColProps = function (startIndex) {\n this.prevColIndex = startIndex;\n this.isColumnSelected = this.selectedColumnsIndexes.length && true;\n };\n Selection.prototype.clearColDependency = function () {\n this.clearColumnSelection();\n this.selectedColumnsIndexes = [];\n };\n Selection.prototype.updateColSelection = function (selectedCol, startIndex) {\n if (isNullOrUndefined(this.parent.getColumns()[parseInt(startIndex.toString(), 10)])) {\n return;\n }\n var left = this.parent.getFrozenLeftCount();\n var movable = this.parent.getMovableColumnsCount();\n var col = this.parent.getColumnByIndex(startIndex);\n var isRowTemplate = !isNullOrUndefined(this.parent.rowTemplate);\n var rows;\n this.selectedColumnsIndexes.push(startIndex);\n this.parent.getColumns()[parseInt(startIndex.toString(), 10)].isSelected = true;\n if (col.getFreezeTableName() === frozenRight) {\n startIndex = startIndex - (left + movable);\n rows = isRowTemplate ? this.parent.getFrozenRightRows() : this.parent.getFrozenRightDataRows();\n }\n else if (col.getFreezeTableName() === 'movable') {\n startIndex = startIndex - left;\n rows = isRowTemplate ? this.parent.getMovableRows() : this.parent.getMovableDataRows();\n }\n else {\n startIndex = startIndex + this.parent.getIndentCount();\n rows = isRowTemplate ? this.parent.getRows() : this.parent.getDataRows();\n }\n addRemoveActiveClasses([selectedCol], true, 'e-columnselection');\n for (var j = 0, len = rows.length; j < len; j++) {\n if (rows[parseInt(j.toString(), 10)].classList.contains(row)) {\n if ((rows[parseInt(j.toString(), 10)].classList.contains(editedRow)\n || rows[parseInt(j.toString(), 10)].classList.contains(addedRow))\n && this.parent.editSettings.mode === 'Normal'\n && !isNullOrUndefined(rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].querySelector('tr').childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n else if (!isNullOrUndefined(rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)])) {\n addRemoveActiveClasses([rows[parseInt(j.toString(), 10)].childNodes[parseInt(startIndex.toString(), 10)]], true, 'e-columnselection');\n }\n }\n }\n };\n Selection.prototype.headerSelectionHandler = function (colIndex) {\n if ((!this.isMultiCtrlRequest && !this.isMultiShiftRequest) || this.isSingleSel()) {\n this.selectColumn(colIndex);\n }\n else if (this.isMultiShiftRequest) {\n this.selectColumnsByRange(isUndefined(this.prevColIndex) ? colIndex : this.prevColIndex, colIndex);\n }\n else {\n this.selectColumnWithExisting(colIndex);\n }\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.addEventListener_checkbox = function () {\n var _this = this;\n this.parent.on(dataReady, this.dataReady, this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(dataBound, this.onDataBoundFunction);\n this.parent.on(refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.on(contentReady, this.checkBoxSelectionChanged, this);\n this.parent.on(beforeRefreshOnDataChange, this.initPerisistSelection, this);\n this.parent.on(onEmpty, this.setCheckAllForEmptyGrid, this);\n this.actionCompleteFunc = this.actionCompleteHandler.bind(this);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.on(click, this.clickHandler, this);\n this.resizeEndFn = function () {\n _this.updateAutoFillPosition();\n _this.drawBorders();\n };\n this.resizeEndFn.bind(this);\n this.parent.addEventListener(resizeStop, this.resizeEndFn);\n };\n // eslint-disable-next-line camelcase\n Selection.prototype.removeEventListener_checkbox = function () {\n this.parent.off(dataReady, this.dataReady);\n this.parent.removeEventListener(dataBound, this.onDataBoundFunction);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.off(refreshInfinitePersistSelection, this.onDataBoundFunction);\n this.parent.off(onEmpty, this.setCheckAllForEmptyGrid);\n this.parent.off(click, this.clickHandler);\n this.parent.off(beforeRefreshOnDataChange, this.initPerisistSelection);\n };\n Selection.prototype.setCheckAllForEmptyGrid = function () {\n var checkAllBox = this.getCheckAllBox();\n if (checkAllBox) {\n this.parent.isCheckBoxSelection = true;\n var spanEle = checkAllBox.nextElementSibling;\n removeClass([spanEle], ['e-check', 'e-stop', 'e-uncheck']);\n }\n };\n Selection.prototype.dataReady = function (e) {\n this.isHeaderCheckboxClicked = false;\n var isInfinitecroll = this.parent.enableInfiniteScrolling && e.requestType === 'infiniteScroll';\n if (e.requestType !== 'virtualscroll' && !this.parent.isPersistSelection && !isInfinitecroll) {\n this.disableUI = !this.parent.enableImmutableMode;\n this.clearSelection();\n this.setCheckAllState();\n this.disableUI = false;\n }\n };\n Selection.prototype.actionCompleteHandler = function (e) {\n if (e.requestType === 'save' && this.parent.isPersistSelection) {\n this.refreshPersistSelection();\n }\n };\n Selection.prototype.selectRowIndex = function (index) {\n this.parent.isSelectedRowIndexUpdating = true;\n if (isNullOrUndefined(this.parent.selectedRowIndex) || this.parent.selectedRowIndex === -1) {\n this.parent.selectedRowIndex = index;\n }\n else {\n this.parent.selectedRowIndex = -1;\n }\n };\n Selection.prototype.disableInteracted = function () {\n this.isInteracted = false;\n };\n Selection.prototype.activeTarget = function () {\n this.actualTarget = this.isInteracted ? this.actualTarget : null;\n };\n return Selection;\n}());\n\n/**\n * The `Search` module is used to handle search action.\n */\nvar Search = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Grid search module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Search(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * Searches Grid records by given key.\n *\n * > You can customize the default search action by using [`searchSettings`](grid/#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Search.prototype.search = function (searchString) {\n var gObj = this.parent;\n searchString = isNullOrUndefined(searchString) ? '' : searchString;\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.search, arg1: searchString });\n return;\n }\n if (searchString !== gObj.searchSettings.key) {\n gObj.searchSettings.key = searchString.toString();\n gObj.dataBind();\n }\n else if (this.refreshSearch) {\n gObj.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(searchComplete, this.onSearchComplete, this);\n this.parent.on(destroy, this.destroy, this);\n this.actionCompleteFunc = this.onActionComplete.bind(this);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.on(cancelBegin, this.cancelBeginEvent, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Search.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(searchComplete, this.onSearchComplete);\n this.parent.off(destroy, this.destroy);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunc);\n this.parent.off(cancelBegin, this.cancelBeginEvent);\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Search.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (!isNullOrUndefined(e.properties.key)) {\n this.parent.notify(modelChanged, {\n requestType: 'searching', type: actionBegin, searchString: this.parent.searchSettings.key\n });\n }\n else {\n this.parent.notify(modelChanged, {\n requestType: 'searching', type: actionBegin\n });\n }\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onSearchComplete = function (e) {\n this.parent.trigger(actionComplete, extend(e, {\n searchString: this.parent.searchSettings.key, requestType: 'searching', type: actionComplete\n }));\n };\n /**\n * The function used to store the requestType\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Search.prototype.onActionComplete = function (e) {\n this.refreshSearch = e.requestType !== 'searching';\n };\n Search.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'searching') {\n this.parent.setProperties({ searchSettings: { key: '' } }, true);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Search.prototype.getModuleName = function () {\n return 'search';\n };\n return Search;\n}());\n\n/**\n * The `ShowHide` module is used to control column visibility.\n */\nvar ShowHide = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the show hide module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function ShowHide(parent) {\n this.colName = [];\n this.isShowHide = false;\n this.parent = parent;\n this.addEventListener();\n }\n ShowHide.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: batchCancel, handler: this.batchChanges },\n { event: batchCnfrmDlgCancel, handler: this.resetColumnState }\n ];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ShowHide.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ShowHide.prototype.batchChanges = function () {\n if (this.isShowHide) {\n this.isShowHide = false;\n this.setVisible(this.colName, this.changedCol);\n this.changedCol = this.colName = [];\n }\n };\n /**\n * Shows a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to show.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.show = function (columnName, showBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, showBy);\n this.parent.notify(tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = true;\n }\n this.setVisible(columns);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} columnName - Defines a single or collection of column names to hide.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n ShowHide.prototype.hide = function (columnName, hideBy) {\n var keys = this.getToggleFields(columnName);\n var columns = this.getColumns(keys, hideBy);\n this.parent.notify(tooltipDestroy, { module: 'edit' });\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].visible = false;\n }\n this.setVisible(columns);\n };\n ShowHide.prototype.getToggleFields = function (key) {\n var finalized = [];\n if (typeof key === 'string') {\n finalized = [key];\n }\n else {\n finalized = key;\n }\n return finalized;\n };\n ShowHide.prototype.getColumns = function (keys, getKeyBy) {\n var _this = this;\n var columns = iterateArrayOrObject(keys, function (key) {\n return iterateArrayOrObject(_this.parent.columnModel, function (item) {\n if (item[\"\" + getKeyBy] === key) {\n return item;\n }\n return undefined;\n })[0];\n });\n return columns;\n };\n ShowHide.prototype.batchActionPrevent = function (columns, changedStateColumns) {\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n if (isActionPrevent(this.parent)) {\n this.colName = columns;\n this.changedCol = changedStateColumns;\n this.parent.closeEdit();\n return false;\n }\n return true;\n };\n ShowHide.prototype.resetColumnState = function () {\n if (this.isShowHide) {\n for (var i = 0; i < this.colName.length; i++) {\n this.colName[parseInt(i.toString(), 10)].visible = !this.colName[parseInt(i.toString(), 10)].visible;\n }\n }\n };\n /**\n * Shows or hides columns by given column collection.\n *\n * @private\n * @param {Column[]} columns - Specifies the columns.\n * @param {Column[]} changedStateColumns - specifies the changedStateColumns\n * @returns {void}\n */\n ShowHide.prototype.setVisible = function (columns, changedStateColumns) {\n var _this = this;\n if (changedStateColumns === void 0) { changedStateColumns = []; }\n this.isShowHide = true;\n if (!this.batchActionPrevent(columns, changedStateColumns)) {\n return;\n }\n changedStateColumns = (changedStateColumns.length > 0) ? changedStateColumns : columns;\n var args = {\n requestType: 'columnstate',\n cancel: false,\n columns: changedStateColumns\n };\n var cancel = 'cancel';\n if (this.parent.enableInfiniteScrolling && this.parent.allowGrouping\n && this.parent.groupModule.groupSettings.columns.length > 0) {\n this.parent.contentModule.visibleRows = [];\n }\n this.parent.trigger(actionBegin, args, function (showHideArgs) {\n var currentViewCols = _this.parent.getColumns();\n columns = isNullOrUndefined(columns) ? currentViewCols : columns;\n if (showHideArgs[\"\" + cancel]) {\n _this.parent.notify(resetColumns, { showHideArgs: showHideArgs });\n if (columns.length > 0) {\n columns[0].visible = true;\n }\n return;\n }\n if (isGroupAdaptive(_this.parent)) {\n _this.parent.contentModule.emptyVcRows();\n }\n if (_this.parent.allowSelection && _this.parent.getSelectedRecords().length &&\n !_this.parent.selectionSettings.persistSelection) {\n _this.parent.clearSelection();\n }\n if (_this.parent.enableColumnVirtualization) {\n var colsInCurrentView = columns.filter(function (col1) { return (currentViewCols.some(function (col2) { return col1.field === col2.field; })); });\n if (colsInCurrentView.length) {\n _this.parent.notify(columnVisibilityChanged, columns);\n }\n }\n else {\n _this.parent.notify(columnVisibilityChanged, columns);\n }\n var params = {\n requestType: 'columnstate',\n columns: changedStateColumns\n };\n _this.parent.trigger(actionComplete, params);\n if (_this.parent.columnQueryMode !== 'All') {\n _this.parent.refresh();\n }\n });\n };\n return ShowHide;\n}());\n\n/**\n * The `Scroll` module is used to handle scrolling behaviour.\n */\nvar Scroll = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Scroll(parent) {\n //To maintain scroll state on grid actions.\n this.previousValues = { top: 0, left: 0 };\n this.oneTimeReady = true;\n this.parent = parent;\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * @param {boolean} uiupdate - specifies the uiupdate\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setWidth = function (uiupdate) {\n this.parent.element.style.width = formatUnit(this.parent.width);\n if (uiupdate) {\n this.widthService.setWidthToColumns();\n }\n if (this.parent.toolbarModule && this.parent.toolbarModule.toolbar &&\n this.parent.toolbarModule.toolbar.element) {\n this.parent.toolbarModule.toolbar.refreshOverflow();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setHeight = function () {\n var mHdrHeight = 0;\n var content$$1 = this.parent.getContent().querySelector('.' + content);\n var height = this.parent.height;\n if (this.parent.isFrozenGrid() && this.parent.height !== 'auto' && this.parent.height.toString().indexOf('%') < 0) {\n height = parseInt(height, 10) - Scroll.getScrollBarWidth();\n }\n if (!this.parent.enableVirtualization && this.parent.frozenRows && this.parent.height !== 'auto') {\n var tbody$$1 = this.parent.getHeaderContent()\n .querySelector(tbody + ':not(.e-masked-tbody)');\n mHdrHeight = tbody$$1 ? tbody$$1.offsetHeight : 0;\n if (tbody$$1 && mHdrHeight) {\n var add = tbody$$1.getElementsByClassName(addedRow).length;\n var height_1 = add * this.parent.getRowHeight();\n mHdrHeight -= height_1;\n }\n else if (!this.parent.isInitialLoad && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && this.parent.getHeaderContent().querySelector('.e-masked-table')) {\n height = parseInt(height, 10) - (this.parent.frozenRows * this.parent.getRowHeight());\n }\n content$$1.style.height = formatUnit(height - mHdrHeight);\n }\n else {\n content$$1.style.height = formatUnit(height);\n }\n this.ensureOverflow(content$$1);\n if (this.parent.isFrozenGrid()) {\n this.refresh();\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.setPadding = function () {\n var content$$1 = this.parent.getHeaderContent();\n var scrollWidth = Scroll.getScrollBarWidth() - this.getThreshold();\n var cssProps = this.getCssProperties();\n var padding = this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === leftRight ? '0.5px' : '1px';\n content$$1.querySelector('.' + headerContent).style[cssProps.border] = scrollWidth > 0 ? padding : '0px';\n content$$1.style[cssProps.padding] = scrollWidth > 0 ? scrollWidth + 'px' : '0px';\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removePadding = function (rtl) {\n var cssProps = this.getCssProperties(rtl);\n var hDiv = this.parent.getHeaderContent().querySelector('.' + headerContent);\n hDiv.style[cssProps.border] = '';\n hDiv.parentElement.style[cssProps.padding] = '';\n var footerDiv = this.parent.getFooterContent();\n if (footerDiv && footerDiv.classList.contains('e-footerpadding')) {\n footerDiv.classList.remove('e-footerpadding');\n }\n };\n /**\n * Refresh makes the Grid adoptable with the height of parent container.\n *\n * > The [`height`](grid/#height/) must be set to 100%.\n *\n * @returns {void}\n */\n Scroll.prototype.refresh = function () {\n if (this.parent.height !== '100%') {\n return;\n }\n var content$$1 = this.parent.getContent();\n this.parent.element.style.height = '100%';\n var height = this.widthService.getSiblingsHeight(content$$1);\n content$$1.style.height = 'calc(100% - ' + height + 'px)'; //Set the height to the '.' + literals.gridContent;\n if (this.parent.isFrozenGrid()) {\n content$$1.firstElementChild.style.height = 'calc(100% - ' + getScrollBarWidth() + 'px)';\n }\n };\n Scroll.prototype.getThreshold = function () {\n /* Some browsers places the scroller outside the content,\n * hence the padding should be adjusted.*/\n var appName = Browser.info.name;\n if (appName === 'mozilla') {\n return 0.5;\n }\n return 1;\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(onEmpty, this.wireEvents, this);\n this.parent.on(contentReady, this.wireEvents, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(textWrapRefresh, this.wireEvents, this);\n this.parent.on(headerRefreshed, this.setScrollLeft, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(onEmpty, this.wireEvents);\n this.parent.off(contentReady, this.wireEvents);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(textWrapRefresh, this.wireEvents);\n this.parent.off(headerRefreshed, this.setScrollLeft);\n this.unwireEvents();\n };\n Scroll.prototype.unwireEvents = function () {\n var frzCols = this.parent.isFrozenGrid();\n var mCont;\n var mHdr;\n if (this.content) {\n mCont = this.content.querySelector('.' + movableContent);\n }\n if (this.header) {\n mHdr = this.header.querySelector('.' + movableHeader);\n }\n var mScrollBar = this.parent.getContent() ? this.parent.getContent().querySelector('.e-movablescrollbar') : null;\n if (this.parent.frozenRows && ((this.header && !frzCols) || (frzCols && mHdr))) {\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.parent.isFrozenGrid()) {\n if (mScrollBar) {\n EventHandler.remove(mScrollBar, 'scroll', this.onCustomScrollbarScroll);\n }\n if (mCont) {\n EventHandler.remove(mCont, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mCont, 'touchstart pointerdown', this.setPageXY);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.remove(mCont, 'touchmove pointermove', this.onTouchScroll);\n }\n }\n if (mHdr) {\n EventHandler.remove(mHdr, 'scroll', this.onCustomScrollbarScroll);\n EventHandler.remove(mHdr, 'touchstart pointerdown', this.setPageXY);\n EventHandler.remove(mHdr, 'touchmove pointermove', this.onTouchScroll);\n }\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onFrozenContentScroll);\n }\n }\n else {\n if (this.content) {\n EventHandler.remove(this.content, 'scroll', this.onContentScroll);\n }\n if (this.header) {\n EventHandler.remove(this.header, 'scroll', this.onContentScroll);\n }\n }\n if (this.parent.aggregates.length && this.parent.getFooterContent()) {\n EventHandler.remove(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll);\n }\n };\n Scroll.prototype.setScrollLeft = function () {\n if (this.parent.isFrozenGrid()) {\n this.parent.headerModule.getMovableHeader().scrollLeft = this.previousValues.left;\n }\n else {\n this.parent.getHeaderContent().querySelector('.' + headerContent).scrollLeft = this.previousValues.left;\n }\n };\n Scroll.prototype.onFrozenContentScroll = function () {\n var _this = this;\n return function (e) {\n if (_this.content.querySelector(tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, e);\n }\n _this.previousValues.top = e.target.scrollTop;\n };\n };\n Scroll.prototype.onContentScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n var isHeader = element.classList.contains(headerContent);\n return function (e) {\n if (_this.content.querySelector(tbody) === null || _this.parent.isPreventScrollEvent) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (!isNullOrUndefined(_this.parent.infiniteScrollModule) && _this.parent.enableInfiniteScrolling) {\n _this.parent.notify(infiniteScrollHandler, { target: e.target, isLeft: _this.previousValues.left !== left });\n }\n if (_this.parent.groupSettings.columns.length && _this.parent.groupSettings.enableLazyLoading) {\n var isDown = _this.previousValues.top < _this.parent.getContent().firstElementChild.scrollTop;\n _this.parent.notify(lazyLoadScrollHandler, { scrollDown: isDown });\n }\n _this.parent.notify(virtualScrollEdit, {});\n var isFooter = target.classList.contains('e-summarycontent');\n if (_this.previousValues.left === left) {\n _this.previousValues.top = !isHeader ? _this.previousValues.top : target.scrollTop;\n return;\n }\n _this.parent.notify(closeFilterDialog, e);\n element.scrollLeft = left;\n if (isFooter) {\n _this.header.scrollLeft = left;\n }\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n };\n };\n Scroll.prototype.onCustomScrollbarScroll = function (mCont, mHdr) {\n var _this = this;\n var content$$1 = mCont;\n var header = mHdr;\n return function (e) {\n if (_this.content.querySelector(tbody) === null) {\n return;\n }\n var target = e.target;\n var left = target.scrollLeft;\n if (_this.previousValues.left === left) {\n return;\n }\n content$$1.scrollLeft = left;\n header.scrollLeft = left;\n _this.previousValues.left = left;\n _this.parent.notify(scroll, { left: left });\n if (_this.parent.isDestroyed) {\n return;\n }\n };\n };\n Scroll.prototype.onTouchScroll = function (scrollTarget) {\n var _this = this;\n var element = scrollTarget;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n var isFrozen = _this.parent.isFrozenGrid();\n var pageXY = _this.getPointXY(e);\n var left = element.scrollLeft + (_this.pageXY.x - pageXY.x);\n var mHdr = isFrozen ?\n _this.parent.getHeaderContent().querySelector('.' + movableHeader) :\n _this.parent.getHeaderContent().querySelector('.' + headerContent);\n var mCont = isFrozen ?\n _this.parent.getContent().querySelector('.' + movableContent) :\n _this.parent.getContent().querySelector('.' + content);\n if (_this.previousValues.left === left || (left < 0 || (mHdr.scrollWidth - mHdr.clientWidth) < left)) {\n return;\n }\n e.preventDefault();\n mHdr.scrollLeft = left;\n mCont.scrollLeft = left;\n if (isFrozen) {\n var scrollBar = _this.parent.getContent().querySelector('.e-movablescrollbar');\n scrollBar.scrollLeft = left;\n }\n _this.pageXY.x = pageXY.x;\n _this.previousValues.left = left;\n };\n };\n Scroll.prototype.setPageXY = function () {\n var _this = this;\n return function (e) {\n if (e.pointerType === 'mouse') {\n return;\n }\n _this.pageXY = _this.getPointXY(e);\n };\n };\n Scroll.prototype.getPointXY = function (e) {\n var pageXY = { x: 0, y: 0 };\n if (e.touches && e.touches.length) {\n pageXY.x = e.touches[0].pageX;\n pageXY.y = e.touches[0].pageY;\n }\n else {\n pageXY.x = e.pageX;\n pageXY.y = e.pageY;\n }\n return pageXY;\n };\n Scroll.prototype.getScrollbleParent = function (node) {\n if (node === null) {\n return null;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var parent = isNullOrUndefined(node.tagName) ? node.scrollingElement : node;\n var overflowY = document.defaultView.getComputedStyle(parent, null).overflowY;\n if (parent.scrollHeight > parent.clientHeight && overflowY !== 'hidden'\n && overflowY !== 'visible' || node.tagName === 'HTML' || node.tagName === 'BODY') {\n return node;\n }\n else {\n return this.getScrollbleParent(node.parentNode);\n }\n };\n /**\n * @param {boolean} isAdd - specifies whether adding/removing the event\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.addStickyListener = function (isAdd) {\n this.parentElement = this.getScrollbleParent(this.parent.element.parentElement);\n if (isAdd && this.parentElement) {\n this.eventElement = this.parentElement.tagName === 'HTML' || this.parentElement.tagName === 'BODY' ? document :\n this.parentElement;\n EventHandler.add(this.eventElement, 'scroll', this.makeStickyHeader, this);\n }\n else if (this.eventElement) {\n EventHandler.remove(this.eventElement, 'scroll', this.makeStickyHeader);\n this.eventElement = null;\n }\n };\n Scroll.prototype.wireEvents = function () {\n var _this = this;\n if (this.oneTimeReady) {\n var frzCols = this.parent.isFrozenGrid();\n this.content = this.parent.getContent().querySelector('.' + content);\n this.header = this.parent.getHeaderContent().querySelector('.' + headerContent);\n var mCont = this.content.querySelector('.' + movableContent);\n var mHdr = this.header.querySelector('.' + movableHeader);\n var mScrollBar = this.parent.getContent().querySelector('.e-movablescrollbar');\n if (this.parent.frozenRows) {\n EventHandler.add(frzCols ? mHdr : this.header, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(frzCols ? mHdr : this.header, 'touchmove pointermove', this.onTouchScroll(frzCols ? mCont : this.content), this);\n }\n if (this.parent.isFrozenGrid()) {\n EventHandler.add(mScrollBar, 'scroll', this.onCustomScrollbarScroll(mCont, mHdr), this);\n EventHandler.add(mCont, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mHdr), this);\n EventHandler.add(mHdr, 'scroll', this.onCustomScrollbarScroll(mScrollBar, mCont), this);\n EventHandler.add(this.content, 'scroll', this.onFrozenContentScroll(), this);\n EventHandler.add(mHdr, 'touchstart pointerdown', this.setPageXY(), this);\n EventHandler.add(mHdr, 'touchmove pointermove', this.onTouchScroll(mCont), this);\n EventHandler.add(mCont, 'touchstart pointerdown', this.setPageXY(), this);\n if (!(/macintosh|ipad/.test(Browser.userAgent.toLowerCase()) && Browser.isDevice)) {\n EventHandler.add(mCont, 'touchmove pointermove', this.onTouchScroll(mHdr), this);\n }\n }\n else {\n EventHandler.add(this.content, 'scroll', this.onContentScroll(this.header), this);\n EventHandler.add(this.header, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.aggregates.length) {\n EventHandler.add(this.parent.getFooterContent().firstChild, 'scroll', this.onContentScroll(this.content), this);\n }\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(true);\n }\n this.refresh();\n this.oneTimeReady = false;\n }\n var table$$1 = this.parent.getContentTable();\n var sLeft;\n var sHeight;\n var clientHeight;\n getUpdateUsingRaf(function () {\n sLeft = _this.header.scrollLeft;\n sHeight = table$$1.scrollHeight;\n clientHeight = _this.parent.getContent().clientHeight;\n }, function () {\n var args = { cancel: false };\n _this.parent.notify(checkScrollReset, args);\n if (!_this.parent.enableVirtualization && !_this.parent.enableInfiniteScrolling) {\n if (sHeight < clientHeight) {\n addClass(table$$1.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.isFrozenGrid()) {\n addClass(_this.parent.getContent().querySelector('.' + movableContent).querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n if (_this.parent.getFrozenRightColumnsCount()) {\n addClass(_this.parent.getContent().querySelector('.e-frozen-right-content').querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n }\n }\n }\n if (!args.cancel) {\n if ((_this.parent.frozenRows > 0 || _this.parent.isFrozenGrid()) && _this.header.querySelector('.' + movableHeader)) {\n _this.header.querySelector('.' + movableHeader).scrollLeft = _this.previousValues.left;\n }\n else {\n _this.header.scrollLeft = _this.previousValues.left;\n }\n _this.content.scrollLeft = _this.previousValues.left;\n _this.content.scrollTop = _this.previousValues.top;\n }\n }\n if (!_this.parent.enableColumnVirtualization) {\n _this.content.scrollLeft = sLeft;\n }\n if (_this.parent.isFrozenGrid() && _this.header.querySelector('.' + movableHeader)) {\n _this.header.querySelector('.' + movableHeader).scrollLeft =\n _this.content.querySelector('.' + movableContent).scrollLeft;\n }\n });\n this.parent.isPreventScrollEvent = false;\n };\n /**\n * @param {boolean} rtl - specifies the rtl\n * @returns {ScrollCss} returns the ScrollCss\n * @hidden\n */\n Scroll.prototype.getCssProperties = function (rtl) {\n var css = {};\n var enableRtl = isNullOrUndefined(rtl) ? this.parent.enableRtl : rtl;\n css.border = enableRtl ? 'borderLeftWidth' : 'borderRightWidth';\n css.padding = enableRtl ? 'paddingLeft' : 'paddingRight';\n return css;\n };\n Scroll.prototype.ensureOverflow = function (content$$1) {\n content$$1.style.overflowY = this.parent.height === 'auto' ? 'auto' : 'scroll';\n };\n Scroll.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.setPadding();\n this.oneTimeReady = true;\n if (this.parent.height === 'auto') {\n this.removePadding();\n }\n this.wireEvents();\n this.setHeight();\n var width = 'width';\n this.setWidth(!isNullOrUndefined(e.properties[\"\" + width]));\n };\n Scroll.prototype.makeStickyHeader = function () {\n if (this.parent.enableStickyHeader && this.parent.element && this.parent.getContent()) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n if (contentRect) {\n var headerEle = this.parent.getHeaderContent();\n var toolbarEle = this.parent.element.querySelector('.e-toolbar');\n var groupHeaderEle = this.parent.element.querySelector('.e-groupdroparea');\n var height = headerEle.offsetHeight + (toolbarEle ? toolbarEle.offsetHeight : 0) +\n (groupHeaderEle ? groupHeaderEle.offsetHeight : 0);\n var parentTop = this.parentElement.getClientRects()[0].top;\n var top_1 = contentRect.top - (parentTop < 0 ? 0 : parentTop);\n var left = contentRect.left;\n var colMenuEle = document.body.querySelector('#' + this.parent.element.id + '_columnmenu');\n if (top_1 < height && contentRect.bottom > 0) {\n headerEle.classList.add('e-sticky');\n var elemTop = 0;\n if (groupHeaderEle && this.parent.groupSettings.showDropArea) {\n this.setSticky(groupHeaderEle, elemTop, contentRect.width, left, true);\n elemTop += groupHeaderEle.getClientRects()[0].height;\n }\n if (toolbarEle) {\n this.setSticky(toolbarEle, elemTop, contentRect.width, left, true);\n elemTop += toolbarEle.getClientRects()[0].height;\n }\n this.setSticky(headerEle, elemTop, contentRect.width, left, true);\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'fixed';\n colMenuEle.style.top = height + 'px';\n }\n }\n else {\n if (headerEle.classList.contains('e-sticky')) {\n this.setSticky(headerEle, null, null, null, false);\n if (toolbarEle) {\n this.setSticky(toolbarEle, null, null, null, false);\n }\n if (groupHeaderEle) {\n this.setSticky(groupHeaderEle, null, null, null, false);\n }\n var ccDlg = this.parent.element.querySelector('.e-ccdlg');\n if (ccDlg) {\n ccDlg.classList.remove('e-sticky');\n }\n if (!isNullOrUndefined(colMenuEle)) {\n colMenuEle.style.position = 'absolute';\n var topStyle = contentRect.top - parentTop;\n colMenuEle.style.top = topStyle + 'px';\n }\n }\n }\n this.parent.notify(stickyScrollComplete, {});\n }\n }\n };\n Scroll.prototype.setSticky = function (ele, top, width, left, isAdd) {\n if (isAdd) {\n ele.style.width = width + 'px';\n ele.classList.add('e-sticky');\n }\n else {\n ele.classList.remove('e-sticky');\n }\n ele.style.top = top != null ? top + 'px' : '';\n ele.style.left = left !== null ? parseInt(ele.style.left, 10) !== left ? left + 'px' : ele.style.left : '';\n };\n /**\n * @returns {void}\n * @hidden\n */\n Scroll.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.removeEventListener();\n //Remove Dom event\n var cont = this.parent.getContent().querySelector('.' + content);\n EventHandler.remove(cont, 'scroll', this.onContentScroll);\n if (this.parent.enableStickyHeader) {\n this.addStickyListener(false);\n }\n //Remove padding\n this.removePadding();\n removeClass([this.parent.getHeaderContent().querySelector('.' + headerContent)], headerContent);\n removeClass([cont], content);\n //Remove height\n cont.style.height = '';\n //Remove width\n this.parent.element.style.width = '';\n };\n /**\n * Function to get the scrollbar width of the browser.\n *\n * @returns {number} return the width\n * @hidden\n */\n Scroll.getScrollBarWidth = function () {\n return getScrollBarWidth();\n };\n return Scroll;\n}());\n\nvar __extends$17 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\n/**\n * Configures the Grid's aggregate column.\n */\nvar AggregateColumn = /** @__PURE__ @class */ (function (_super) {\n __extends$17(AggregateColumn, _super);\n function AggregateColumn() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.templateFn = {};\n return _this;\n }\n /**\n * @param {Function} value - specifies the value\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setFormatter = function (value) {\n this.formatFn = value;\n };\n /**\n * @returns {Function} returns the Function\n * @hidden\n */\n AggregateColumn.prototype.getFormatter = function () {\n return this.formatFn;\n };\n /**\n * @param {Object} helper - specifies the helper\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setTemplate = function (helper) {\n if (helper === void 0) { helper = {}; }\n if (this.footerTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.Summary)] = { fn: compile(this.footerTemplate, helper),\n property: 'footerTemplate' };\n }\n if (this.groupFooterTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.GroupSummary)] = { fn: compile(this.groupFooterTemplate, helper),\n property: 'groupFooterTemplate' };\n }\n if (this.groupCaptionTemplate !== undefined) {\n this.templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = { fn: compile(this.groupCaptionTemplate, helper),\n property: 'groupCaptionTemplate' };\n }\n };\n /**\n * @param {CellType} type - specifies the cell type\n * @returns {Object} returns the object\n * @hidden\n */\n AggregateColumn.prototype.getTemplate = function (type) {\n return this.templateFn[getEnumValue(CellType, type)];\n };\n /**\n * @param {Object} prop - returns the Object\n * @returns {void}\n * @hidden\n */\n AggregateColumn.prototype.setPropertiesSilent = function (prop) {\n this.setProperties(prop, true);\n };\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"type\", void 0);\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"field\", void 0);\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"columnName\", void 0);\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"format\", void 0);\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"footerTemplate\", void 0);\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"groupFooterTemplate\", void 0);\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"groupCaptionTemplate\", void 0);\n __decorate$4([\n Property()\n ], AggregateColumn.prototype, \"customAggregate\", void 0);\n return AggregateColumn;\n}(ChildProperty));\n/**\n * Configures the aggregate rows.\n */\nvar AggregateRow = /** @__PURE__ @class */ (function (_super) {\n __extends$17(AggregateRow, _super);\n function AggregateRow() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Collection([], AggregateColumn)\n ], AggregateRow.prototype, \"columns\", void 0);\n return AggregateRow;\n}(ChildProperty));\n\n/**\n * The `Clipboard` module is used to handle clipboard copy action.\n */\nvar Clipboard = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid clipboard module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Clipboard(parent, serviceLocator) {\n this.copyContent = '';\n this.isSelect = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(keyPressed, this.keyDownHandler, this);\n this.parent.on(click, this.clickHandler, this);\n EventHandler.add(this.parent.element, 'keydown', this.pasteHandler, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(keyPressed, this.keyDownHandler);\n this.parent.off(contentReady, this.initialEnd);\n this.parent.off(click, this.clickHandler);\n EventHandler.remove(this.parent.element, 'keydown', this.pasteHandler);\n };\n Clipboard.prototype.clickHandler = function (e) {\n var target = e.target;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n target = parentsUntil(target, 'e-rowcell');\n };\n Clipboard.prototype.pasteHandler = function (e) {\n var _this = this;\n var grid = this.parent;\n var isMacLike = /(Mac)/i.test(navigator.platform);\n if (e.keyCode === 67 && isMacLike && e.metaKey && !grid.isEdit) {\n this.copy();\n }\n if (e.keyCode === 86 && (e.ctrlKey || (isMacLike && e.metaKey)) && !grid.isEdit) {\n var target = closest(document.activeElement, '.' + rowCell);\n if (!target || !grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n this.activeElement = document.activeElement;\n this.clipBoardTextArea.value = '';\n var x_1 = window.scrollX;\n var y_1 = window.scrollY;\n this.clipBoardTextArea.focus();\n setTimeout(function () {\n _this.activeElement.focus();\n window.scrollTo(x_1, y_1);\n _this.paste(_this.clipBoardTextArea.value, _this.parent.getSelectedRowCellIndexes()[0].rowIndex, _this.parent.getSelectedRowCellIndexes()[0].cellIndexes[0]);\n }, 10);\n }\n };\n /**\n * Paste data from clipboard to selected cells.\n *\n * @param {boolean} data - Specifies the date for paste.\n * @param {boolean} rowIndex - Specifies the row index.\n * @param {boolean} colIndex - Specifies the column index.\n * @returns {void}\n */\n Clipboard.prototype.paste = function (data, rowIndex, colIndex) {\n var grid = this.parent;\n var cIdx = colIndex;\n var rIdx = rowIndex;\n var col;\n var value;\n var isAvail;\n if (!grid.editSettings.allowEditing || grid.editSettings.mode !== 'Batch' ||\n grid.selectionSettings.mode !== 'Cell' || grid.selectionSettings.cellSelectionMode === 'Flow') {\n return;\n }\n var rows = data.split('\\n');\n var cols;\n var dataRows = grid.getDataRows();\n var mRows;\n var frRows;\n var isFrozen = this.parent.isFrozenGrid();\n if (isFrozen) {\n mRows = grid.getMovableDataRows();\n if (grid.getFrozenRightColumnsCount()) {\n frRows = grid.getFrozenRightDataRows();\n }\n }\n for (var r = 0; r < rows.length; r++) {\n cols = rows[parseInt(r.toString(), 10)].split('\\t');\n cIdx = colIndex;\n if ((r === rows.length - 1 && rows[parseInt(r.toString(), 10)] === '') || isUndefined(grid.getRowByIndex(rIdx))) {\n cIdx++;\n break;\n }\n for (var c = 0; c < cols.length; c++) {\n isAvail = grid.getCellFromIndex(rIdx, cIdx);\n if (isFrozen) {\n var fTr = dataRows[parseInt(rIdx.toString(), 10)];\n var mTr = mRows[parseInt(rIdx.toString(), 10)];\n isAvail = !fTr.querySelector('[data-colindex=\"' + cIdx + '\"]') ?\n mTr.querySelector('[data-colindex=\"' + cIdx + '\"]') : true;\n if (frRows && !isAvail) {\n var frTr = frRows[parseInt(rIdx.toString(), 10)];\n isAvail = frTr.querySelector('[data-colindex=\"' + cIdx + '\"]');\n }\n }\n if (!isAvail) {\n cIdx++;\n break;\n }\n col = grid.getColumnByIndex(cIdx);\n value = col.getParser() ? col.getParser()(cols[parseInt(c.toString(), 10)]) : cols[parseInt(c.toString(), 10)];\n if (col.allowEditing && !col.isPrimaryKey && !col.template) {\n var args = {\n column: col,\n data: value,\n rowIndex: rIdx\n };\n this.parent.trigger(beforePaste, args);\n rIdx = args.rowIndex;\n if (!args.cancel) {\n if (grid.editModule) {\n if (col.type === 'number') {\n this.parent.editModule.updateCell(rIdx, col.field, parseFloat(args.data));\n }\n else {\n grid.editModule.updateCell(rIdx, col.field, args.data);\n }\n }\n }\n }\n cIdx++;\n }\n rIdx++;\n }\n grid.selectionModule.selectCellsByRange({ rowIndex: rowIndex, cellIndex: colIndex }, { rowIndex: rIdx - 1, cellIndex: cIdx - 1 });\n var cell = this.parent.getCellFromIndex(rIdx - 1, cIdx - 1);\n if (cell) {\n classList(cell, ['e-focus', 'e-focused'], []);\n }\n };\n Clipboard.prototype.initialEnd = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.parent.off(contentReady, this.initialEnd);\n this.clipBoardTextArea = this.parent.createElement('textarea', {\n className: 'e-clipboard',\n styles: 'opacity: 0',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('ClipBoard') }\n });\n this.parent.element.appendChild(this.clipBoardTextArea);\n };\n Clipboard.prototype.keyDownHandler = function (e) {\n if (e.action === 'ctrlPlusC') {\n this.copy();\n }\n else if (e.action === 'ctrlShiftPlusH') {\n this.copy(true);\n }\n };\n Clipboard.prototype.setCopyData = function (withHeader) {\n if (window.getSelection().toString() === '') {\n var isFrozen = this.parent.isFrozenGrid();\n this.clipBoardTextArea.value = this.copyContent = '';\n var mRows = void 0;\n var frRows = void 0;\n var rows = this.parent.getRows();\n if (isFrozen) {\n mRows = this.parent.getMovableDataRows();\n if (this.parent.getFrozenMode() === leftRight || this.parent.getFrozenMode() === 'Right') {\n frRows = this.parent.getFrozenRightRows();\n }\n }\n if (this.parent.selectionSettings.mode !== 'Cell') {\n var selectedIndexes = this.parent.getSelectedRowIndexes().sort(function (a, b) { return a - b; });\n if (withHeader) {\n var headerTextArray = [];\n for (var i = 0; i < this.parent.getVisibleColumns().length; i++) {\n headerTextArray[parseInt(i.toString(), 10)] = this.parent\n .getVisibleColumns()[parseInt(i.toString(), 10)].headerText;\n }\n this.getCopyData(headerTextArray, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < selectedIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (isFrozen) {\n movableCols.push.apply(movableCols, [].slice.call(mRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n if (this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenMode() === leftRight) {\n rightCols.push.apply(rightCols, [].slice.call(frRows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n if (this.parent.getFrozenMode() === 'Left' || this.parent.getFrozenMode() === leftRight ||\n (this.parent.isFrozenGrid() && !this.parent.getFrozenMode())) {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n }\n else {\n leftCols.push.apply(leftCols, [].slice.call(rows[selectedIndexes[parseInt(i.toString(), 10)]].\n querySelectorAll('.e-rowcell:not(.e-hide)')));\n }\n var cells = leftCols.concat(movableCols).concat(rightCols);\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n var obj = this.checkBoxSelection();\n if (obj.status) {\n if (withHeader) {\n var headers = [];\n for (var i = 0; i < obj.colIndexes.length; i++) {\n headers.push(this.parent.getColumnHeaderByIndex(obj.colIndexes[parseInt(i.toString(), 10)]));\n }\n this.getCopyData(headers, false, '\\t', withHeader);\n this.copyContent += '\\n';\n }\n for (var i = 0; i < obj.rowIndexes.length; i++) {\n if (i > 0) {\n this.copyContent += '\\n';\n }\n var cells = [].slice.call(rows[obj.rowIndexes[parseInt(i.toString(), 10)]].\n getElementsByClassName('e-cellselectionbackground'));\n if (isFrozen) {\n cells.push.apply(cells, [].slice.call(mRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n if (frRows) {\n cells.push.apply(cells, [].slice.call(frRows[obj.rowIndexes[parseInt(i.toString(), 10)]]\n .getElementsByClassName('e-cellselectionbackground')));\n }\n }\n this.getCopyData(cells, false, '\\t', withHeader);\n }\n }\n else {\n this.getCopyData([].slice.call(this.parent.element.getElementsByClassName('e-cellselectionbackground')), true, '\\n', withHeader);\n }\n }\n var args = {\n data: this.copyContent,\n cancel: false\n };\n this.parent.trigger(beforeCopy, args);\n if (args.cancel) {\n return;\n }\n this.clipBoardTextArea.value = this.copyContent = args.data;\n if (!Browser.userAgent.match(/ipad|ipod|iphone/i)) {\n this.clipBoardTextArea.select();\n }\n else {\n this.clipBoardTextArea.setSelectionRange(0, this.clipBoardTextArea.value.length);\n }\n this.isSelect = true;\n }\n };\n Clipboard.prototype.getCopyData = function (cells, isCell, splitKey, withHeader) {\n var isElement = typeof cells[0] !== 'string';\n for (var j = 0; j < cells.length; j++) {\n if (withHeader && isCell) {\n var colIdx = parseInt(cells[parseInt(j.toString(), 10)].getAttribute(dataColIndex), 10);\n this.copyContent += this.parent.getColumns()[parseInt(colIdx.toString(), 10)].headerText + '\\n';\n }\n if (isElement) {\n if (!cells[parseInt(j.toString(), 10)].classList.contains('e-hide')) {\n this.copyContent += cells[parseInt(j.toString(), 10)].innerText;\n }\n }\n else {\n this.copyContent += cells[parseInt(j.toString(), 10)];\n }\n if (j < cells.length - 1) {\n this.copyContent += splitKey;\n }\n }\n };\n /**\n * Copy selected rows or cells data into clipboard.\n *\n * @returns {void}\n * @param {boolean} withHeader - Specifies whether the column header data need to be copied or not.\n */\n Clipboard.prototype.copy = function (withHeader) {\n if (document.queryCommandSupported('copy')) {\n this.setCopyData(withHeader);\n document.execCommand('copy');\n this.clipBoardTextArea.blur();\n }\n if (this.isSelect) {\n window.getSelection().removeAllRanges();\n this.isSelect = false;\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Clipboard.prototype.getModuleName = function () {\n return 'clipboard';\n };\n /**\n * To destroy the clipboard\n *\n * @returns {void}\n * @hidden\n */\n Clipboard.prototype.destroy = function () {\n this.removeEventListener();\n if (this.clipBoardTextArea) {\n remove(this.clipBoardTextArea);\n }\n };\n Clipboard.prototype.checkBoxSelection = function () {\n var gridObj = this.parent;\n var obj = { status: false };\n if (gridObj.selectionSettings.mode === 'Cell') {\n var rowCellIndxes = gridObj.getSelectedRowCellIndexes();\n var str = void 0;\n var rowIndexes = [];\n var i = void 0;\n for (i = 0; i < rowCellIndxes.length; i++) {\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n rowIndexes.push(rowCellIndxes[parseInt(i.toString(), 10)].rowIndex);\n }\n if (rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.length) {\n if (!str) {\n str = JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort());\n }\n if (str !== JSON.stringify(rowCellIndxes[parseInt(i.toString(), 10)].cellIndexes.sort())) {\n break;\n }\n }\n }\n rowIndexes.sort(function (a, b) { return a - b; });\n if (i === rowCellIndxes.length && rowIndexes[rowIndexes.length - 1] - rowIndexes[0] === rowIndexes.length - 1) {\n obj = { status: true, rowIndexes: rowIndexes, colIndexes: rowCellIndxes[0].cellIndexes };\n }\n }\n return obj;\n };\n return Clipboard;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n/**\n * Represents the field name and direction of sort column.\n */\nvar SortDescriptor = /** @__PURE__ @class */ (function (_super) {\n __extends$1(SortDescriptor, _super);\n function SortDescriptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property()\n ], SortDescriptor.prototype, \"field\", void 0);\n __decorate$1([\n Property()\n ], SortDescriptor.prototype, \"direction\", void 0);\n __decorate$1([\n Property(false)\n ], SortDescriptor.prototype, \"isFromGroup\", void 0);\n return SortDescriptor;\n}(ChildProperty));\n/**\n * Configures the sorting behavior of Grid.\n */\nvar SortSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(SortSettings, _super);\n function SortSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Collection([], SortDescriptor)\n ], SortSettings.prototype, \"columns\", void 0);\n __decorate$1([\n Property(true)\n ], SortSettings.prototype, \"allowUnsort\", void 0);\n return SortSettings;\n}(ChildProperty));\n/**\n * Represents the predicate for the filter column.\n */\nvar Predicate$1 = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Predicate$$1, _super);\n function Predicate$$1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"field\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"operator\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"value\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"matchCase\", void 0);\n __decorate$1([\n Property(false)\n ], Predicate$$1.prototype, \"ignoreAccent\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"predicate\", void 0);\n __decorate$1([\n Property({})\n ], Predicate$$1.prototype, \"actualFilterValue\", void 0);\n __decorate$1([\n Property({})\n ], Predicate$$1.prototype, \"actualOperator\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"type\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"ejpredicate\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"uid\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"isForeignKey\", void 0);\n __decorate$1([\n Property()\n ], Predicate$$1.prototype, \"condition\", void 0);\n return Predicate$$1;\n}(ChildProperty));\n/**\n * Configures the infinite scroll behavior of Grid.\n */\nvar InfiniteScrollSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(InfiniteScrollSettings, _super);\n function InfiniteScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property(false)\n ], InfiniteScrollSettings.prototype, \"enableCache\", void 0);\n __decorate$1([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"maxBlocks\", void 0);\n __decorate$1([\n Property(3)\n ], InfiniteScrollSettings.prototype, \"initialBlocks\", void 0);\n return InfiniteScrollSettings;\n}(ChildProperty));\n/**\n * Configures the filtering behavior of the Grid.\n */\nvar FilterSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(FilterSettings, _super);\n function FilterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Collection([], Predicate$1)\n ], FilterSettings.prototype, \"columns\", void 0);\n __decorate$1([\n Property('FilterBar')\n ], FilterSettings.prototype, \"type\", void 0);\n __decorate$1([\n Property()\n ], FilterSettings.prototype, \"mode\", void 0);\n __decorate$1([\n Property(true)\n ], FilterSettings.prototype, \"showFilterBarStatus\", void 0);\n __decorate$1([\n Property(1500)\n ], FilterSettings.prototype, \"immediateModeDelay\", void 0);\n __decorate$1([\n Property()\n ], FilterSettings.prototype, \"operators\", void 0);\n __decorate$1([\n Property(false)\n ], FilterSettings.prototype, \"ignoreAccent\", void 0);\n __decorate$1([\n Property(false)\n ], FilterSettings.prototype, \"enableCaseSensitivity\", void 0);\n __decorate$1([\n Property(false)\n ], FilterSettings.prototype, \"showFilterBarOperator\", void 0);\n return FilterSettings;\n}(ChildProperty));\n/**\n * Configures the selection behavior of the Grid.\n */\nvar SelectionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(SelectionSettings, _super);\n function SelectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('Row')\n ], SelectionSettings.prototype, \"mode\", void 0);\n __decorate$1([\n Property('Flow')\n ], SelectionSettings.prototype, \"cellSelectionMode\", void 0);\n __decorate$1([\n Property('Single')\n ], SelectionSettings.prototype, \"type\", void 0);\n __decorate$1([\n Property(false)\n ], SelectionSettings.prototype, \"checkboxOnly\", void 0);\n __decorate$1([\n Property(false)\n ], SelectionSettings.prototype, \"persistSelection\", void 0);\n __decorate$1([\n Property('Default')\n ], SelectionSettings.prototype, \"checkboxMode\", void 0);\n __decorate$1([\n Property(false)\n ], SelectionSettings.prototype, \"enableSimpleMultiRowSelection\", void 0);\n __decorate$1([\n Property(true)\n ], SelectionSettings.prototype, \"enableToggle\", void 0);\n __decorate$1([\n Property(false)\n ], SelectionSettings.prototype, \"allowColumnSelection\", void 0);\n return SelectionSettings;\n}(ChildProperty));\n/**\n * Configures the search behavior of the Grid.\n */\nvar SearchSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(SearchSettings, _super);\n function SearchSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property([])\n ], SearchSettings.prototype, \"fields\", void 0);\n __decorate$1([\n Property('')\n ], SearchSettings.prototype, \"key\", void 0);\n __decorate$1([\n Property('contains')\n ], SearchSettings.prototype, \"operator\", void 0);\n __decorate$1([\n Property(true)\n ], SearchSettings.prototype, \"ignoreCase\", void 0);\n __decorate$1([\n Property(false)\n ], SearchSettings.prototype, \"ignoreAccent\", void 0);\n return SearchSettings;\n}(ChildProperty));\n/**\n * Configures the row drop settings of the Grid.\n */\nvar RowDropSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(RowDropSettings, _super);\n function RowDropSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property()\n ], RowDropSettings.prototype, \"targetID\", void 0);\n return RowDropSettings;\n}(ChildProperty));\n/**\n * Configures the text wrap settings of the Grid.\n */\nvar TextWrapSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(TextWrapSettings, _super);\n function TextWrapSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('Both')\n ], TextWrapSettings.prototype, \"wrapMode\", void 0);\n return TextWrapSettings;\n}(ChildProperty));\n/**\n * Configures the resize behavior of the Grid.\n */\nvar ResizeSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(ResizeSettings, _super);\n function ResizeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('Normal')\n ], ResizeSettings.prototype, \"mode\", void 0);\n return ResizeSettings;\n}(ChildProperty));\n/**\n * Configures the group behavior of the Grid.\n */\nvar GroupSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(GroupSettings, _super);\n function GroupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property(true)\n ], GroupSettings.prototype, \"showDropArea\", void 0);\n __decorate$1([\n Property(false)\n ], GroupSettings.prototype, \"allowReordering\", void 0);\n __decorate$1([\n Property(false)\n ], GroupSettings.prototype, \"showToggleButton\", void 0);\n __decorate$1([\n Property(false)\n ], GroupSettings.prototype, \"showGroupedColumn\", void 0);\n __decorate$1([\n Property(true)\n ], GroupSettings.prototype, \"showUngroupButton\", void 0);\n __decorate$1([\n Property(false)\n ], GroupSettings.prototype, \"disablePageWiseAggregates\", void 0);\n __decorate$1([\n Property([])\n ], GroupSettings.prototype, \"columns\", void 0);\n __decorate$1([\n Property()\n ], GroupSettings.prototype, \"captionTemplate\", void 0);\n __decorate$1([\n Property(false)\n ], GroupSettings.prototype, \"enableLazyLoading\", void 0);\n return GroupSettings;\n}(ChildProperty));\n/**\n * Configures the edit behavior of the Grid.\n */\nvar EditSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(EditSettings, _super);\n function EditSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property(false)\n ], EditSettings.prototype, \"allowAdding\", void 0);\n __decorate$1([\n Property(false)\n ], EditSettings.prototype, \"allowEditing\", void 0);\n __decorate$1([\n Property(false)\n ], EditSettings.prototype, \"allowDeleting\", void 0);\n __decorate$1([\n Property('Normal')\n ], EditSettings.prototype, \"mode\", void 0);\n __decorate$1([\n Property(true)\n ], EditSettings.prototype, \"allowEditOnDblClick\", void 0);\n __decorate$1([\n Property(true)\n ], EditSettings.prototype, \"showConfirmDialog\", void 0);\n __decorate$1([\n Property(false)\n ], EditSettings.prototype, \"showDeleteConfirmDialog\", void 0);\n __decorate$1([\n Property('')\n ], EditSettings.prototype, \"template\", void 0);\n __decorate$1([\n Property('')\n ], EditSettings.prototype, \"headerTemplate\", void 0);\n __decorate$1([\n Property('')\n ], EditSettings.prototype, \"footerTemplate\", void 0);\n __decorate$1([\n Property('Top')\n ], EditSettings.prototype, \"newRowPosition\", void 0);\n __decorate$1([\n Property({})\n ], EditSettings.prototype, \"dialog\", void 0);\n __decorate$1([\n Property(false)\n ], EditSettings.prototype, \"allowNextRowEdit\", void 0);\n return EditSettings;\n}(ChildProperty));\n/**\n * Configures the Loading Indicator of the Grid.\n */\nvar LoadingIndicator = /** @__PURE__ @class */ (function (_super) {\n __extends$1(LoadingIndicator, _super);\n function LoadingIndicator() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('Spinner')\n ], LoadingIndicator.prototype, \"indicatorType\", void 0);\n return LoadingIndicator;\n}(ChildProperty));\n/**\n * Represents the Grid component.\n * ```html\n *
\n * \n * ```\n */\nvar Grid = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Grid, _super);\n /**\n * Constructor for creating the component\n *\n * @param {GridModel} options - specifies the options\n * @param {string | HTMLElement} element - specifies the element\n * @hidden\n */\n function Grid(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPreventScrollEvent = false;\n _this.inViewIndexes = [];\n _this.keyA = false;\n _this.frozenRightCount = 0;\n _this.frozenLeftCount = 0;\n _this.tablesCount = 1;\n _this.movableCount = 0;\n _this.visibleFrozenLeft = 0;\n _this.visibleFrozenRight = 0;\n _this.visibleMovable = 0;\n _this.frozenLeftColumns = [];\n _this.frozenRightColumns = [];\n _this.movableColumns = [];\n _this.media = {};\n _this.isFreezeRefresh = false;\n /** @hidden */\n _this.tableIndex = 0;\n _this.componentRefresh = Component.prototype.refresh;\n /** @hidden */\n _this.isVirtualAdaptive = false;\n /** @hidden */\n /**\n * * If `requireTemplateRef` is set to false in the load event, then the template element can't be accessed in grid queryCellInfo, and rowDataBound events.\n * * By default, React's grid queryCellInfo and rowDataBound events allow access to the template element.\n * * Avoid accessing the template elements in the grid queryCellInfo and rowDataBound events to improve rendering performance by setting this value as false.\n *\n * @default true\n */\n _this.requireTemplateRef = true;\n /** @hidden */\n _this.vRows = [];\n /** @hidden */\n _this.vcRows = [];\n /** @hidden */\n _this.vGroupOffsets = {};\n /** @hidden */\n _this.rowUid = 0;\n /**\n * Gets the currently visible records of the Grid.\n */\n _this.currentViewData = [];\n /** @hidden */\n _this.isManualRefresh = false;\n /** @hidden */\n _this.isAutoFitColumns = false;\n /** @hidden */\n _this.enableDeepCompare = false;\n /** @hidden */\n _this.totalDataRecordsCount = 0;\n /** @hidden */\n _this.disableSelectedRecords = [];\n /** @hidden */\n _this.partialSelectedRecords = [];\n /** @hidden */\n _this.islazyloadRequest = false;\n /** @hidden */\n _this.lockcolPositionCount = 0;\n /** @hidden */\n _this.prevPageMoving = false;\n /** @hidden */\n _this.pageTemplateChange = false;\n /** @hidden */\n _this.isAutoGen = false;\n _this.mediaBindInstance = {};\n /** @hidden */\n _this.commandDelIndex = undefined;\n /** @hidden */\n _this.asyncTimeOut = 50;\n /** @hidden */\n _this.isExportGrid = false;\n // enable/disable logger for MVC & Core\n _this.enableLogger = true;\n _this.needsID = true;\n Grid_1.Inject(Selection);\n setValue('mergePersistData', _this.mergePersistGridData, _this);\n return _this;\n }\n Grid_1 = Grid;\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n */\n Grid.prototype.getPersistData = function () {\n var keyEntity = ['pageSettings', 'sortSettings',\n 'filterSettings', 'groupSettings', 'columns', 'searchSettings', 'selectedRowIndex', 'scrollPosition'];\n var ignoreOnPersist = {\n pageSettings: ['template', 'pageSizes', 'enableQueryString', 'totalRecordsCount', 'pageCount'],\n filterSettings: ['type', 'mode', 'showFilterBarStatus', 'immediateModeDelay', 'ignoreAccent'],\n groupSettings: ['showDropArea', 'showToggleButton', 'showGroupedColumn', 'showUngroupButton',\n 'disablePageWiseAggregates', 'hideCaptionCount'],\n searchSettings: ['fields', 'operator', 'ignoreCase'],\n sortSettings: [], columns: [], selectedRowIndex: [], scrollPosition: []\n };\n for (var i = 0; i < keyEntity.length; i++) {\n var currentObject = this[keyEntity[parseInt(i.toString(), 10)]];\n for (var _i = 0, _a = ignoreOnPersist[keyEntity[parseInt(i.toString(), 10)]]; _i < _a.length; _i++) {\n var val = _a[_i];\n delete currentObject[\"\" + val];\n }\n }\n var temp = this.pageSettings.template;\n var settings = Object.assign({ template: undefined }, this.pageSettings);\n this.setProperties({ pageSettings: settings }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n delete this.groupSettings['properties']['captionTemplate'];\n }\n this.pageTemplateChange = !isNullOrUndefined(this.pagerTemplate);\n var persistData = this.addOnPersist(keyEntity);\n settings.template = temp;\n this.setProperties({ pageSettings: settings }, true);\n return persistData;\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} Returns the module Declaration\n * @hidden\n */\n Grid.prototype.requiredModules = function () {\n this.setFrozenCount();\n this.enableInfiniteAggrgate();\n var modules = [];\n if (this.isDestroyed) {\n return modules;\n }\n if (this.allowFiltering) {\n modules.push({\n member: 'filter',\n args: [this, this.filterSettings, this.serviceLocator]\n });\n }\n if (this.allowExcelExport) {\n modules.push({\n member: 'ExcelExport',\n args: [this, this.serviceLocator]\n });\n }\n if (this.allowPdfExport) {\n modules.push({\n member: 'PdfExport',\n args: [this]\n });\n }\n if (this.allowSorting) {\n modules.push({\n member: 'sort',\n args: [this, this.sortSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.allowPaging) {\n modules.push({\n member: 'pager',\n args: [this, this.pageSettings]\n });\n }\n if (this.allowSelection) {\n modules.push({\n member: 'selection',\n args: [this, this.selectionSettings, this.serviceLocator]\n });\n }\n modules.push({\n member: 'resize',\n args: [this]\n });\n if (this.allowReordering) {\n modules.push({\n member: 'reorder',\n args: [this]\n });\n }\n if (this.allowRowDragAndDrop) {\n modules.push({\n member: 'rowDragAndDrop',\n args: [this]\n });\n }\n if (this.allowGrouping) {\n modules.push({\n member: 'group',\n args: [this, this.groupSettings, this.sortedColumns, this.serviceLocator]\n });\n }\n if (this.aggregates.length) {\n modules.push({ member: 'aggregate', args: [this, this.serviceLocator] });\n }\n if (this.isDetail()) {\n modules.push({\n member: 'detailRow',\n args: [this, this.serviceLocator]\n });\n }\n if (this.toolbar || this.toolbarTemplate) {\n modules.push({\n member: 'toolbar',\n args: [this, this.serviceLocator]\n });\n }\n if (this.enableVirtualization || this.enableColumnVirtualization) {\n modules.push({\n member: 'virtualscroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.getFrozenColumns() || this.frozenRows || this.frozenRightCount || this.frozenLeftCount) {\n modules.push({ member: 'freeze', args: [this, this.serviceLocator] });\n }\n if (this.isCommandColumn(this.columns)) {\n modules.push({\n member: 'commandColumn',\n args: [this, this.serviceLocator]\n });\n }\n if (this.editSettings.allowAdding || this.editSettings.allowDeleting || this.editSettings.allowEditing) {\n modules.push({\n member: 'edit',\n args: [this, this.serviceLocator]\n });\n }\n this.extendRequiredModules(modules);\n return modules;\n };\n Grid.prototype.extendRequiredModules = function (modules) {\n if (this.enableInfiniteScrolling) {\n modules.push({\n member: 'infiniteScroll',\n args: [this, this.serviceLocator]\n });\n }\n if (this.groupSettings.enableLazyLoading) {\n modules.push({\n member: 'lazyLoadGroup',\n args: [this, this.serviceLocator]\n });\n }\n if (this.contextMenuItems) {\n modules.push({\n member: 'contextMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnMenu) {\n modules.push({\n member: 'columnMenu',\n args: [this, this.serviceLocator]\n });\n }\n if (this.showColumnChooser) {\n modules.push({\n member: 'columnChooser',\n args: [this, this.serviceLocator]\n });\n }\n if (this.isForeignKeyEnabled(this.columns)) {\n modules.push({ member: 'foreignKey', args: [this, this.serviceLocator] });\n }\n if (this.enableLogger) {\n modules.push({ member: 'logger', args: [this] });\n }\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.preRender = function () {\n this.serviceLocator = new ServiceLocator;\n this.initProperties();\n this.initializeServices();\n };\n Grid.prototype.initProperties = function () {\n this.isInitial = true;\n this.sortedColumns = [];\n this.inViewIndexes = [];\n this.mediaCol = [];\n this.isInitialLoad = false;\n this.allowServerDataBinding = false;\n this.ignoreCollectionWatch = true;\n this.mergeCells = {};\n this.isEdit = false;\n this.checkAllRows = 'None';\n this.isCheckBoxSelection = false;\n this.isPersistSelection = false;\n this.componentRefresh = Component.prototype.refresh;\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.defaultLocale = {\n EmptyRecord: 'No records to display',\n True: 'true',\n False: 'false',\n InvalidFilterMessage: 'Invalid Filter Data',\n GroupDropArea: 'Drag a column header here to group its column',\n UnGroup: 'Click here to ungroup',\n UnGroupButton: 'Click here to ungroup',\n GroupDisable: 'Grouping is disabled for this column',\n FilterbarTitle: '\\'s filter bar cell',\n EmptyDataSourceError: 'DataSource must not be empty at initial load since columns are generated from dataSource in AutoGenerate Column Grid',\n // Toolbar Items\n Add: 'Add',\n Edit: 'Edit',\n Cancel: 'Cancel',\n Update: 'Update',\n Delete: 'Delete',\n Print: 'Print',\n Pdfexport: 'PDF Export',\n Excelexport: 'Excel Export',\n Wordexport: 'Word Export',\n Csvexport: 'CSV Export',\n Search: 'Search',\n Columnchooser: 'Columns',\n Save: 'Save',\n Item: 'item',\n Items: 'items',\n EditOperationAlert: 'No records selected for edit operation',\n DeleteOperationAlert: 'No records selected for delete operation',\n SaveButton: 'Save',\n OKButton: 'OK',\n CancelButton: 'Cancel',\n EditFormTitle: 'Details of ',\n AddFormTitle: 'Add New Record',\n BatchSaveConfirm: 'Are you sure you want to save changes?',\n BatchSaveLostChanges: 'Unsaved changes will be lost. Are you sure you want to continue?',\n ConfirmDelete: 'Are you sure you want to Delete Record?',\n CancelEdit: 'Are you sure you want to Cancel the changes?',\n ChooseColumns: 'Choose Column',\n SearchColumns: 'search columns',\n Matchs: 'No matches found',\n FilterButton: 'Filter',\n ClearButton: 'Clear',\n StartsWith: 'Starts With',\n EndsWith: 'Ends With',\n Contains: 'Contains',\n Equal: 'Equal',\n NotEqual: 'Not Equal',\n LessThan: 'Less Than',\n LessThanOrEqual: 'Less Than Or Equal',\n GreaterThan: 'Greater Than',\n GreaterThanOrEqual: 'Greater Than Or Equal',\n ChooseDate: 'Choose a Date',\n EnterValue: 'Enter the value',\n Copy: 'Copy',\n Group: 'Group by this column',\n Ungroup: 'Ungroup by this column',\n GroupButton: 'Group button',\n UnGroupAria: 'ungroup button',\n GroupSeperator: 'Separator for the grouped columns',\n UnGroupIcon: 'ungroup the grouped column ',\n GroupedSortIcon: 'sort the grouped column ',\n GroupedDrag: 'Drag the grouped column',\n GroupCaption: ' is groupcaption cell',\n CheckBoxLabel: 'checkbox',\n autoFitAll: 'Autofit all columns',\n autoFit: 'Autofit this column',\n AutoFitAll: 'Autofit all columns',\n AutoFit: 'Autofit this column',\n Export: 'Export',\n FirstPage: 'First Page',\n LastPage: 'Last Page',\n PreviousPage: 'Previous Page',\n NextPage: 'Next Page',\n SortAscending: 'Sort Ascending',\n SortDescending: 'Sort Descending',\n EditRecord: 'Edit Record',\n DeleteRecord: 'Delete Record',\n FilterMenu: 'Filter',\n SelectAll: 'Select All',\n AddCurrentSelection: 'Add current selection to filter',\n Blanks: 'Blanks',\n FilterTrue: 'True',\n FilterFalse: 'False',\n NoResult: 'No matches found',\n ClearFilter: 'Clear Filter',\n Clear: 'Clear',\n NumberFilter: 'Number Filters',\n TextFilter: 'Text Filters',\n DateFilter: 'Date Filters',\n DateTimeFilter: 'DateTime Filters',\n MatchCase: 'Match Case',\n Between: 'Between',\n CustomFilter: 'Custom Filter',\n CustomFilterPlaceHolder: 'Enter the value',\n CustomFilterDatePlaceHolder: 'Choose a date',\n AND: 'AND',\n OR: 'OR',\n ShowRowsWhere: 'Show rows where:',\n FilterMenuDialogARIA: 'Filter menu dialog',\n ExcelFilterDialogARIA: 'Excel filter dialog',\n DialogEditARIA: 'Edit dialog',\n ColumnChooserDialogARIA: 'Column chooser',\n ColumnMenuDialogARIA: 'Column menu dialog',\n CustomFilterDialogARIA: 'Customer filter dialog',\n SortAtoZ: 'Sort A to Z',\n SortZtoA: 'Sort Z to A',\n SortByOldest: 'Sort by Oldest',\n SortByNewest: 'Sort by Newest',\n SortSmallestToLargest: 'Sort Smallest to Largest',\n SortLargestToSmallest: 'Sort Largest to Smallest',\n Sort: 'Sort',\n FilterDescription: 'Press Alt Down to open filter Menu',\n SortDescription: 'Press Enter to sort',\n ColumnMenuDescription: 'Press Alt Down to open Column Menu',\n GroupDescription: 'Press Ctrl space to group',\n ColumnHeader: ' column header ',\n TemplateCell: ' is template cell',\n CommandColumnAria: 'is Command column column header ',\n DialogEdit: 'Dialog edit',\n ClipBoard: 'clipboard',\n AscendingText: 'Ascending',\n DescendingText: 'Descending',\n NoneText: 'None',\n Expanded: 'Expanded',\n Collapsed: 'Collapsed'\n };\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftRight: 'shift+rightarrow',\n shiftLeft: 'shift+leftarrow',\n home: 'home',\n end: 'end',\n escape: 'escape',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n ctrlAltPageUp: 'ctrl+alt+pageup',\n ctrlAltPageDown: 'ctrl+alt+pagedown',\n altPageUp: 'alt+pageup',\n altPageDown: 'alt+pagedown',\n altDownArrow: 'alt+downarrow',\n altUpArrow: 'alt+uparrow',\n ctrlDownArrow: 'ctrl+downarrow',\n ctrlUpArrow: 'ctrl+uparrow',\n ctrlPlusA: 'ctrl+A',\n ctrlPlusP: 'ctrl+P',\n insert: 'insert',\n delete: 'delete',\n f2: 'f2',\n enter: 'enter',\n ctrlEnter: 'ctrl+enter',\n shiftEnter: 'shift+enter',\n tab: 'tab',\n shiftTab: 'shift+tab',\n space: 'space',\n ctrlPlusC: 'ctrl+C',\n ctrlShiftPlusH: 'ctrl+shift+H',\n ctrlSpace: 'ctrl+space',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow'\n };\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.render = function () {\n this.log(['module_missing', 'promise_enabled', 'locale_missing', 'check_datasource_columns']);\n this.ariaService.setOptions(this.element, { datarole: 'grid' });\n createSpinner({ target: this.element, cssClass: this.cssClass ? this.cssClass : null }, this.createElement);\n this.renderModule = new Render(this, this.serviceLocator);\n this.searchModule = new Search(this);\n this.scrollModule = new Scroll(this);\n this.notify(initialLoad, {});\n if (this.getDataModule().dataManager.dataSource.offline === true || this.getDataModule().dataManager.dataSource.url === undefined) {\n this.isVirtualAdaptive = true;\n }\n if (this.isReact) {\n var args = { requireTemplateRef: this.requireTemplateRef };\n this.trigger(load, args);\n if (!args.requireTemplateRef) {\n this.requireTemplateRef = args.requireTemplateRef;\n }\n }\n else {\n this.trigger(load);\n }\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n if (this.enablePersistence) {\n this.notify(columnsPrepared, {});\n }\n this.getMediaColumns();\n setColumnIndex(this.columns);\n this.checkLockColumns(this.columns);\n this.getColumns();\n this.processModel();\n this.gridRender();\n this.wireEvents();\n this.addListener();\n this.updateDefaultCursor();\n this.updateStackedFilter();\n if (this.loadingIndicator.indicatorType === 'Spinner') {\n this.showSpinner();\n }\n this.notify(initialEnd, {});\n if (this.loadingIndicator.indicatorType === 'Shimmer') {\n this.refreshMaskRow();\n }\n if (this.refreshing) {\n this.trigger('created');\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.showSpinner = function () {\n if (!this.isExportGrid) {\n showSpinner(this.element);\n }\n };\n /**\n * By default, grid shows the spinner for all its actions. You can use this method to show spinner at your needed time.\n *\n * @returns {void}\n */\n Grid.prototype.hideSpinner = function () {\n if (!this.isExportGrid) {\n hideSpinner(this.element);\n }\n };\n Grid.prototype.showMaskRow = function (axisDirection, dialogElement) {\n var gridHeader$$1 = this.getHeaderContent().firstChild;\n var gridContent$$1 = this.getContent().firstChild;\n var gridFooter$$1 = this.getFooterContent();\n if (dialogElement) {\n var dialogHolder = dialogElement.querySelector('.e-checkboxlist');\n var maskRowCount = Math.floor(dialogHolder.getBoundingClientRect().height / this.getRowHeight());\n var maskTemplate = '
'\n + '
'\n + this.getShimmerTemplate() + this.getShimmerTemplate() + '
';\n dialogHolder.innerHTML = '';\n for (var i = 0; i < maskRowCount; i++) {\n dialogHolder.innerHTML += maskTemplate;\n var maskSpan = [].slice.call(dialogHolder\n .querySelectorAll('.e-mask:not(.e-mask-checkbox-filter-intent):not(.e-mask-checkbox-filter-span-intent)'));\n maskSpan[0].classList.add('e-mask-checkbox-filter-intent');\n maskSpan[1].classList.add('e-mask-checkbox-filter-span-intent');\n }\n return;\n }\n if ((!this.enableRtl && !this.getHeaderContent().style.paddingRight)\n || (this.enableRtl && !this.getHeaderContent().style.paddingLeft)) {\n gridContent$$1.style.overflowY = 'hidden';\n }\n if (!this.isInitialLoad && !this.getColumns().length) {\n var contentHeight = gridContent$$1.getBoundingClientRect().height;\n var maskTableHeight = contentHeight === 0 ? this.allowPaging ? this.pageSettings.pageSize * this.getRowHeight()\n : window.innerHeight : contentHeight;\n var contentRowCount = Math.ceil(maskTableHeight / this.getRowHeight());\n if (this.rowRenderingMode !== 'Vertical') {\n this.headerMaskTable = this.createEmptyMaskTable(gridHeader$$1, 1);\n }\n this.contentMaskTable = this.createEmptyMaskTable(gridContent$$1, contentRowCount);\n return;\n }\n this.maskRowContentScroll = this.enableVirtualization && axisDirection ? true : false;\n if (!this.contentMaskTable && !(this.isFrozenGrid() && this.enableColumnVirtualization && axisDirection === 'X')) {\n var content$$1 = gridContent$$1;\n if (this.isFrozenGrid()) {\n if (!this.isInitialLoad && !this.enableVirtualization && this.frozenRows && this.height !== 'auto') {\n var contentHeight = content$$1.getBoundingClientRect().height - (this.frozenRows * this.getRowHeight());\n content$$1.style.height = contentHeight + 'px';\n }\n content$$1 = content$$1.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content$$1 = content$$1.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content$$1.querySelector('tbody'))) {\n this.contentMaskTable = this.createMaskTable(content$$1, this.getContentMaskColumns(), axisDirection);\n }\n }\n if (!this.headerMaskTable && (this.isFrozenGrid() || (this.enableColumnVirtualization && axisDirection === 'X'))\n && !((this.isFrozenGrid() && ((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableColumnVirtualization && axisDirection === 'X')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))))) {\n var content$$1 = gridHeader$$1;\n if (this.isFrozenGrid()) {\n content$$1 = content$$1.querySelector('.e-frozen-left-header, .e-frozen-right-header');\n }\n else if (this.enableColumnVirtualization && axisDirection === 'X') {\n content$$1 = content$$1.querySelector('.e-virtualtable');\n }\n this.headerMaskTable = this.createMaskTable(content$$1, this.getContentMaskColumns(), axisDirection);\n }\n if (!this.movableHeaderMaskTable && this.isFrozenGrid() && !((this.enableVirtualization && axisDirection === 'Y')\n || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n var content$$1 = gridHeader$$1.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content$$1 = content$$1.querySelector('.e-virtualtable');\n }\n this.movableHeaderMaskTable = this.createMaskTable(content$$1, this.getMovableContentMaskColumns(), axisDirection);\n }\n if (!this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right'\n && !((this.enableVirtualization && axisDirection === 'Y') || (this.enableInfiniteScrolling && axisDirection === 'down'))) {\n this.rightHeaderMaskTable = this.createMaskTable(gridHeader$$1\n .querySelector('.e-frozen-right-header'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (!this.movableContentMaskTable && this.isFrozenGrid()) {\n var content$$1 = gridContent$$1.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content$$1 = content$$1.querySelector('.e-virtualtable');\n }\n if (!isNullOrUndefined(content$$1.querySelector('tbody'))) {\n this.movableContentMaskTable = this.createMaskTable(content$$1, this.getMovableContentMaskColumns(), axisDirection);\n }\n }\n if (!this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.rightContentMaskTable = this.createMaskTable(gridContent$$1\n .querySelector('.e-frozen-right-content'), this.getRightContentMaskColumns(), axisDirection);\n }\n if (gridFooter$$1 && gridFooter$$1.querySelector('.e-summaryrow')) {\n var gridFooterContent = gridFooter$$1.firstChild;\n if (!this.footerContentMaskTable) {\n var footerContent = gridFooterContent;\n if (this.isFrozenGrid()) {\n footerContent = footerContent.querySelector('.e-frozen-left-footercontent, .e-frozen-right-footercontent');\n }\n this.footerContentMaskTable = this.createMaskTable(footerContent);\n }\n if (this.isFrozenGrid()) {\n if (!this.movableFooterContentMaskTable) {\n this.movableFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-movablefootercontent'));\n }\n if (this.getFrozenMode() === 'Left-Right' && !this.rightFooterContentMaskTable) {\n this.rightFooterContentMaskTable = this.createMaskTable(gridFooterContent\n .querySelector('.e-frozen-right-footercontent'));\n }\n }\n }\n if (!(this.enableVirtualization && axisDirection)) {\n EventHandler.add(gridContent$$1, 'scroll', this.translateMaskRow, this);\n }\n };\n Grid.prototype.getContentMaskColumns = function () {\n var columns = this.getColumns();\n if (this.isFrozenGrid()) {\n if (this.getFrozenMode() === 'Left' || this.getFrozenMode() === 'Left-Right') {\n columns = this.frozenColumns ? columns.slice(0, this.frozenColumns) : this.getFrozenLeftColumns();\n }\n else if (this.getFrozenMode() === 'Right') {\n columns = this.getFrozenRightColumns();\n }\n }\n return columns;\n };\n Grid.prototype.getMovableContentMaskColumns = function () {\n var gridColumns = this.getColumns();\n var columns = this.frozenColumns ? gridColumns.slice(this.frozenColumns, gridColumns.length)\n : this.getMovableColumns();\n return columns;\n };\n Grid.prototype.getRightContentMaskColumns = function () {\n return this.getFrozenRightColumns();\n };\n Grid.prototype.createEmptyMaskTable = function (maskElement, rowCount) {\n var table$$1 = this.createElement('table', { className: 'e-table e-masked-table' });\n var tbody$$1 = this.createElement('tbody', { className: 'e-masked-tbody' });\n var row$$1 = this.createElement('tr', { className: 'e-masked-row e-row', attrs: {\n style: 'height: ' + this.getRowHeight() + 'px;'\n } });\n var cell = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n cell.innerHTML = this.getShimmerTemplate();\n row$$1.appendChild(cell);\n for (var i = 0; i < rowCount; i++) {\n tbody$$1.appendChild(row$$1.cloneNode(true));\n }\n table$$1.appendChild(tbody$$1);\n maskElement.appendChild(table$$1);\n return table$$1;\n };\n Grid.prototype.createMaskTable = function (element, columns, axisDirection) {\n var parentElement = element;\n var header = closest(parentElement, '.e-gridheader') ? true : false;\n var content$$1 = closest(parentElement, '.e-gridcontent') ? true : false;\n var footer = closest(parentElement, '.e-gridfooter') ? true : false;\n var gridContent$$1 = this.getContent().firstChild;\n var gridContentScrollHeight = gridContent$$1.scrollHeight;\n var table$$1 = parentElement.querySelector('table');\n if (this.isFrozenGrid()) {\n if (content$$1) {\n parentElement.style.overflow = 'hidden';\n }\n parentElement.style.position = 'relative';\n }\n var maskTable = table$$1.cloneNode();\n maskTable.removeAttribute('role');\n maskTable.removeAttribute('id');\n maskTable.removeAttribute('aria-multiselectable');\n maskTable.removeAttribute('aria-colcount');\n maskTable.removeAttribute('aria-rowcount');\n maskTable.style.position = 'absolute';\n maskTable.style.zIndex = '1';\n maskTable.style.width = table$$1.getBoundingClientRect().width + 'px';\n if (header && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.transform = 'translate(0px,'\n + table$$1.querySelector('thead').getBoundingClientRect().height + 'px)';\n }\n maskTable.setAttribute('class', 'e-table e-masked-table');\n var maskColgroup = table$$1.querySelector('colgroup').cloneNode(true);\n maskColgroup.removeAttribute('id');\n maskColgroup.setAttribute('class', 'e-masked-colgroup');\n maskTable.appendChild(maskColgroup);\n if (header && this.enableColumnVirtualization && axisDirection === 'X') {\n var row$$1 = this.createMaskRow(maskColgroup, columns);\n var thead = table$$1.querySelector('thead');\n var rows = [].slice.call(thead.querySelectorAll('tr'));\n var maskTHead = thead.cloneNode();\n maskTHead.removeAttribute('role');\n maskTHead.setAttribute('class', 'e-masked-thead');\n var rowCount = rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTHead.appendChild(row$$1.cloneNode(true));\n maskTHead.childNodes[parseInt(i.toString(), 10)].style\n .height = rows[parseInt(i.toString(), 10)].getBoundingClientRect().height + 'px';\n }\n maskTable.appendChild(maskTHead);\n }\n var maskTBody = table$$1.querySelector('tbody').cloneNode();\n maskTBody.removeAttribute('role');\n maskTBody.setAttribute('class', 'e-masked-tbody');\n var tbody$$1 = table$$1.querySelector('tbody');\n if (content$$1 || (header && this.isFrozenGrid())) {\n var rowCountElement = gridContent$$1;\n var rowCount = header && this.isFrozenGrid() ? this.frozenRows\n : Math.ceil(rowCountElement.getBoundingClientRect().height / this.getRowHeight());\n if (tbody$$1.querySelector('.e-emptyrow') || !tbody$$1.childNodes.length || (content$$1 && this.childGrid)) {\n var row$$1 = this.createMaskRow(maskColgroup, columns);\n var altRow = row$$1.cloneNode(true);\n altRow.classList.add('e-altrow');\n for (var i = 0; i < rowCount; i++) {\n var altNumber = content$$1 && this.isFrozenGrid() && this.frozenRows ? this.frozenRows + 1 : 1;\n maskTBody.appendChild((i + altNumber) % 2 === 0 ? altRow.cloneNode(true) : row$$1.cloneNode(true));\n }\n }\n else {\n var rowsQuery = 'tr:not([style*=\"display:none\"]):not([style*=\"display: none\"])';\n var rows = [].slice.call(tbody$$1.querySelectorAll(rowsQuery));\n var addEditRow = tbody$$1.querySelector('.e-addedrow, .e-editedrow');\n var addEditRowIndex = void 0;\n if (addEditRow) {\n addEditRowIndex = rows.indexOf(addEditRow);\n if (addEditRow.classList.contains('e-addedrow')) {\n rows.splice(addEditRowIndex, 2);\n }\n else {\n rows.splice(addEditRowIndex, 1);\n }\n }\n rowCount = (header && this.isFrozenGrid()) || (this.enableVirtualization && axisDirection) ? rows.length\n : rowCount <= rows.length ? rowCount : rows.length;\n for (var i = 0; i < rowCount; i++) {\n maskTBody.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n if (addEditRow && addEditRow.classList.contains('e-editedrow') && addEditRowIndex < rowCount) {\n var addEditMaskRow = maskTBody.childNodes[parseInt(addEditRowIndex.toString(), 10)];\n addEditMaskRow.style.height = this.getRowHeight() + 'px';\n addEditMaskRow.classList.add('e-row');\n if (addEditRow.classList.contains('e-altrow')) {\n addEditMaskRow.classList.add('e-altrow');\n }\n }\n }\n }\n maskTable.appendChild(maskTBody);\n if (footer) {\n var tfoot = table$$1.querySelector('tfoot');\n var maskTFoot = tfoot.cloneNode();\n maskTFoot.setAttribute('class', 'e-masked-tfoot');\n var rows = [].slice.call(tfoot.querySelectorAll('tr'));\n for (var i = 0; i < rows.length; i++) {\n maskTFoot.appendChild(this.applyMaskRow(rows[parseInt(i.toString(), 10)].cloneNode(true), rows[parseInt(i.toString(), 10)].getBoundingClientRect().height));\n }\n maskTable.appendChild(maskTFoot);\n }\n parentElement.insertBefore(maskTable, parentElement.firstChild);\n if (header && this.isFrozenGrid() && tbody$$1\n .getBoundingClientRect().height < maskTable.querySelector('tbody').getBoundingClientRect().height) {\n var maskTableHolderHeight = maskTable.querySelector('tbody')\n .getBoundingClientRect().height - tbody$$1.getBoundingClientRect().height;\n var maskTableHolder = this.createElement('div', { className: 'e-masked-table-holder', attrs: {\n style: 'height: ' + maskTableHolderHeight + 'px;'\n } });\n parentElement.appendChild(maskTableHolder);\n }\n else if (header && this.isFrozenGrid() && !(this.enableColumnVirtualization && axisDirection === 'X')) {\n maskTable.style.height = parentElement\n .getBoundingClientRect().height - table$$1.querySelector('thead').getBoundingClientRect().height + 'px';\n }\n if (content$$1 && !(this.enableVirtualization && axisDirection)) {\n var minScrollTop = gridContentScrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = gridContent$$1.scrollTop <= minScrollTop ? gridContent$$1.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(parentElement, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n return maskTable;\n };\n Grid.prototype.applyMaskRow = function (row$$1, rowHeight) {\n var maskRow = row$$1;\n maskRow.removeAttribute('role');\n maskRow.removeAttribute('aria-rowindex');\n maskRow.removeAttribute('data-rowindex');\n maskRow.removeAttribute('data-uid');\n maskRow.classList.add('e-masked-row');\n maskRow.style.height = rowHeight + 'px';\n var maskCells = [].slice.call(maskRow.childNodes);\n for (var i = 0; i < maskCells.length; i++) {\n var maskCell = maskCells[parseInt(i.toString(), 10)];\n var displayAsCheckBoxCell = maskCell.firstChild && maskCell.firstChild.classList\n && maskCell.firstChild.classList.contains('e-checkbox-wrapper');\n maskCell.removeAttribute('role');\n maskCell.removeAttribute('tabindex');\n maskCell.removeAttribute('aria-label');\n maskCell.removeAttribute('data-colindex');\n maskCell.removeAttribute('aria-colindex');\n maskCell.removeAttribute('index');\n maskCell.removeAttribute('ej-mappingname');\n maskCell.removeAttribute('ej-mappingvalue');\n maskCell.removeAttribute('e-mappinguid');\n maskCell.removeAttribute('aria-expanded');\n maskCell.classList.add('e-masked-cell');\n maskCell.innerHTML = this.getShimmerTemplate();\n if (maskCell.classList.contains('e-recordplusexpand') || maskCell.classList.contains('e-recordpluscollapse')) {\n maskCell.firstChild.classList.add('e-mask-group-intent');\n }\n else if (maskCell.classList.contains('e-gridchkbox') || displayAsCheckBoxCell) {\n maskCell.firstChild.classList.add('e-mask-checkbox-intent');\n }\n else if (maskCell.classList.contains('e-rowdragdrop')) {\n maskCell.firstChild.classList.add('e-mask-drag-intent');\n }\n else if (maskCell.classList.contains('e-indentcell')) {\n maskCell.innerHTML = '';\n }\n }\n return maskRow;\n };\n Grid.prototype.createMaskRow = function (refColgroup, refColumns) {\n var colgroup = refColgroup;\n var columns = refColumns;\n var row$$1 = this.createElement('tr', { className: 'e-masked-row e-row' });\n if (this.rowRenderingMode !== 'Vertical') {\n row$$1.style.height = this.getRowHeight() + 'px';\n }\n var td = this.createElement('td', { className: 'e-masked-cell e-rowcell' });\n for (var i = 0, colIndex = 0; i < colgroup.childNodes.length; i++) {\n var col = colgroup.childNodes[parseInt(i.toString(), 10)];\n var localTD = td.cloneNode();\n localTD.innerHTML = this.getShimmerTemplate();\n if (!(col.classList.contains('e-group-intent') || col.classList.contains('e-detail-intent')\n || col.classList.contains('e-drag-intent'))) {\n if (this.rowRenderingMode === 'Vertical' && columns[parseInt(colIndex.toString(), 10)]) {\n localTD.setAttribute('data-cell', columns[parseInt(colIndex.toString(), 10)].headerText ?\n columns[parseInt(colIndex.toString(), 10)].headerText : columns[parseInt(colIndex.toString(), 10)].field);\n }\n if (col.style.display === 'none') {\n localTD.classList.add('e-hide');\n }\n else {\n localTD.style.textAlign = columns[parseInt(colIndex.toString(), 10)]\n && columns[parseInt(colIndex.toString(), 10)].textAlign ?\n columns[parseInt(colIndex.toString(), 10)].textAlign.toLowerCase()\n : this.enableRtl ? 'right' : 'left';\n if (columns[parseInt(colIndex.toString(), 10)] && (columns[parseInt(colIndex.toString(), 10)].type === 'checkbox'\n || columns[parseInt(colIndex.toString(), 10)].displayAsCheckBox)) {\n localTD.firstChild.classList.add('e-mask-checkbox-intent');\n }\n }\n colIndex++;\n }\n else {\n if (col.classList.contains('e-group-intent')) {\n localTD.firstChild.classList.add('e-mask-group-intent');\n }\n else if (col.classList.contains('e-detail-intent')) {\n localTD.firstChild.classList.add('e-mask-detail-intent');\n }\n else if (col.classList.contains('e-drag-intent')) {\n localTD.firstChild.classList.add('e-mask-drag-intent');\n }\n }\n row$$1.appendChild(localTD);\n }\n return row$$1;\n };\n Grid.prototype.getShimmerTemplate = function () {\n if (this.maskRowContentScroll) {\n return '';\n }\n return '';\n };\n Grid.prototype.addShimmerEffect = function () {\n this.maskRowContentScroll = false;\n var maskSpan = [].slice.call(this.element.querySelectorAll('.e-mask:not(.e-shimmer-wave)'));\n for (var i = 0; i < maskSpan.length; i++) {\n if (maskSpan[parseInt(i.toString(), 10)]) {\n maskSpan[parseInt(i.toString(), 10)].classList.add('e-shimmer-wave');\n }\n }\n };\n Grid.prototype.translateMaskRow = function (e) {\n var target = e.target;\n var maskTables = target.querySelectorAll('.e-masked-table');\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n var minScrollTop = target.scrollHeight - maskTable.getBoundingClientRect().height;\n minScrollTop = minScrollTop < 0 ? 0 : minScrollTop;\n var scrollTop = target.scrollTop <= minScrollTop ? target.scrollTop : minScrollTop;\n if (this.enableVirtualization) {\n scrollTop -= getTransformValues(closest(maskTable, '.e-virtualtable')).height;\n }\n maskTable.style.transform = 'translate(0px,' + scrollTop + 'px)';\n }\n }\n };\n Grid.prototype.removeMaskRow = function () {\n var gridContent$$1 = this.getContent().firstChild;\n EventHandler.remove(gridContent$$1, 'scroll', this.translateMaskRow);\n var maskTables = [this.headerMaskTable, this.movableHeaderMaskTable, this.rightHeaderMaskTable,\n this.contentMaskTable, this.movableContentMaskTable, this.rightContentMaskTable, this.footerContentMaskTable,\n this.movableFooterContentMaskTable, this.rightFooterContentMaskTable];\n for (var i = 0; i < maskTables.length; i++) {\n var maskTable = maskTables[parseInt(i.toString(), 10)];\n if (maskTable) {\n if (this.isFrozenGrid() && !closest(maskTable, '.e-gridfooter')) {\n var parent_1 = maskTable.parentElement;\n parent_1.style.overflow = '';\n parent_1.style.position = '';\n if (closest(maskTable, '.e-frozen-left-header') || closest(maskTable, '.e-movableheader')\n || closest(maskTable, '.e-frozen-right-header')) {\n var maskTableHolder = parent_1.querySelector('.e-masked-table-holder');\n if (maskTableHolder) {\n remove(maskTableHolder);\n }\n }\n }\n remove(maskTable);\n }\n }\n this.headerMaskTable = null;\n this.movableHeaderMaskTable = null;\n this.rightHeaderMaskTable = null;\n this.contentMaskTable = null;\n this.movableContentMaskTable = null;\n this.rightContentMaskTable = null;\n this.footerContentMaskTable = null;\n this.movableFooterContentMaskTable = null;\n this.rightFooterContentMaskTable = null;\n };\n Grid.prototype.refreshMaskRow = function () {\n var gridHeader$$1 = this.getHeaderContent().firstChild;\n var gridContent$$1 = this.getContent().firstChild;\n if (!this.isInitialLoad && !this.getColumns().length) {\n return;\n }\n if (this.contentMaskTable) {\n var content$$1 = gridContent$$1;\n if (this.isFrozenGrid()) {\n content$$1 = content$$1.querySelector('.e-frozen-left-content, .e-frozen-right-content');\n }\n else if (this.enableVirtualization) {\n content$$1 = content$$1.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content$$1);\n }\n if (this.headerMaskTable && this.isFrozenGrid()) {\n this.refreshMaskRowColgroupWidth(gridHeader$$1.querySelector('.e-frozen-left-header, .e-frozen-right-header'));\n }\n if (this.movableHeaderMaskTable && this.isFrozenGrid()) {\n var content$$1 = gridHeader$$1.querySelector('.e-movableheader');\n if (this.enableColumnVirtualization) {\n content$$1 = content$$1.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content$$1);\n }\n if (this.rightHeaderMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridHeader$$1.querySelector('.e-frozen-right-header'));\n }\n if (this.movableContentMaskTable && this.isFrozenGrid()) {\n var content$$1 = gridContent$$1.querySelector('.e-movablecontent');\n if (this.enableColumnVirtualization) {\n content$$1 = content$$1.querySelector('.e-virtualtable');\n }\n this.refreshMaskRowColgroupWidth(content$$1);\n }\n if (this.rightContentMaskTable && this.isFrozenGrid() && this.getFrozenMode() === 'Left-Right') {\n this.refreshMaskRowColgroupWidth(gridContent$$1.querySelector('.e-frozen-right-content'));\n }\n };\n Grid.prototype.refreshMaskRowColgroupWidth = function (content$$1) {\n var table$$1 = content$$1.querySelector('table:not(.e-masked-table)');\n var colgroup = table$$1.querySelector(colGroup).cloneNode(true);\n var maskTable = content$$1.querySelector('.e-masked-table');\n colgroup.removeAttribute('id');\n colgroup.setAttribute('class', 'e-masked-colgroup');\n for (var i = 0; i < colgroup.childNodes.length; i++) {\n colgroup.childNodes[parseInt(i.toString(), 10)].removeAttribute('class');\n }\n remove(maskTable.querySelector('.e-masked-colgroup'));\n maskTable.insertBefore(colgroup, maskTable.firstChild);\n maskTable.style.width = table$$1.getBoundingClientRect().width + 'px';\n };\n Grid.prototype.updateStackedFilter = function () {\n if (this.allowFiltering && this.filterSettings.type === 'FilterBar' &&\n this.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.getHeaderContent().classList.add('e-stackedfilter');\n }\n else {\n this.getHeaderContent().classList.remove('e-stackedfilter');\n }\n };\n Grid.prototype.getMediaColumns = function () {\n if (!this.enableColumnVirtualization) {\n var gcol = this.getColumns();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n if (!isNullOrUndefined(gcol)) {\n for (var index = 0; index < gcol.length; index++) {\n if (!isNullOrUndefined(gcol[parseInt(index.toString(), 10)].hideAtMedia)\n && (isNullOrUndefined(gcol[parseInt(index.toString(), 10)].visible)\n || gcol[parseInt(index.toString(), 10)].visible)) {\n this.pushMediaColumn(gcol[parseInt(index.toString(), 10)], index);\n }\n }\n }\n }\n };\n Grid.prototype.pushMediaColumn = function (col, index) {\n this.mediaCol.push(col);\n this.media[col.uid] = window.matchMedia(col.hideAtMedia);\n this.mediaQueryUpdate(index, this.media[col.uid]);\n this.mediaBindInstance[parseInt(index.toString(), 10)] = this.mediaQueryUpdate.bind(this, index);\n this.media[col.uid].addListener(this.mediaBindInstance[parseInt(index.toString(), 10)]);\n };\n /**\n * @param {Column} col - specifies the column\n * @returns {void}\n * @hidden\n */\n Grid.prototype.updateMediaColumns = function (col) {\n if (!this.enableColumnVirtualization) {\n var index = this.getColumnIndexByUid(col.uid);\n for (var i = 0; i < this.mediaCol.length; i++) {\n if (col.uid === this.mediaCol[parseInt(i.toString(), 10)].uid) {\n this.mediaCol.splice(i, 1);\n return;\n }\n }\n this.pushMediaColumn(col, index);\n }\n };\n /**\n * @param {number} columnIndex - specifies the column index\n * @param {MediaQueryList} e - specifies the MediaQueryList\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mediaQueryUpdate = function (columnIndex, e) {\n var col = this.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (this.mediaCol.some(function (mediaColumn) { return mediaColumn.uid === col.uid; })) {\n col.visible = e.matches;\n if (this.isInitialLoad) {\n this.invokedFromMedia = true;\n if (col.visible) {\n this.showHider.show(col.headerText, 'headerText');\n }\n else {\n this.showHider.hide(col.headerText, 'headerText');\n }\n }\n }\n };\n Grid.prototype.refreshMediaCol = function () {\n this.isInitialLoad = true;\n var footerContent = this.element.querySelector('.' + gridFooter);\n if (this.aggregates.length && this.element.scrollHeight > this.height && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n var checkboxColumn = this.getColumns().filter(function (col) { return col.type === 'checkbox'; });\n if (checkboxColumn.length && this.selectionSettings.checkboxMode === 'ResetOnRowClick') {\n this.isCheckBoxSelection = false;\n }\n if (this.rowRenderingMode === 'Vertical') {\n if (this.enableHover) {\n this.setProperties({ enableAdaptiveUI: true, enableHover: false }, true);\n removeClass([this.element], 'e-gridhover');\n }\n }\n if (this.enableAdaptiveUI && this.scrollModule) {\n this.scrollModule.refresh();\n }\n };\n Grid.prototype.removeMediaListener = function () {\n for (var i = 0; i < this.mediaCol.length; i++) {\n this.media[this.mediaCol[parseInt(i.toString(), 10)].uid]\n .removeListener(this.mediaBindInstance[this.mediaCol[parseInt(i.toString(), 10)].index]);\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Grid.prototype.eventInitializer = function () {\n //eventInitializer\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @function destroy\n * @returns {void}\n */\n Grid.prototype.destroy = function () {\n var gridElement = this.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + gridHeader) &&\n gridElement.querySelector('.' + gridContent) ? true : false;\n if (hasGridChild) {\n this.unwireEvents();\n }\n this.removeListener();\n this.removeMediaListener();\n this.notify(destroy, {});\n this.destroyDependentModules();\n if (this.isReact || this.isVue) {\n this.destroyTemplate(['template']);\n }\n if (hasGridChild) {\n _super.prototype.destroy.call(this);\n }\n this.toolTipObj.destroy();\n if (this.isReact && !Browser.isIE) {\n this.element.innerHTML = '';\n }\n var modules = ['renderModule', 'headerModule', 'contentModule', 'valueFormatterService',\n 'serviceLocator', 'ariaService', 'keyboardModule', 'widthService', 'searchModule', 'showHider',\n 'scrollModule', 'printModule', 'clipboardModule', 'focusModule'];\n for (var i = 0; i < modules.length; i++) {\n if (this[modules[parseInt(i.toString(), 10)]]) {\n this[modules[parseInt(i.toString(), 10)]] = null;\n }\n }\n this.element.innerHTML = '';\n classList(this.element, [], ['e-rtl', 'e-gridhover', 'e-responsive', 'e-default', 'e-device', 'e-grid-min-height']);\n this.isFreezeRefresh = false;\n };\n Grid.prototype.destroyDependentModules = function () {\n var gridElement = this.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.scrollModule.destroy();\n this.keyboardModule.destroy();\n this.focusModule.destroy();\n this.clipboardModule.destroy();\n this.printModule.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Grid.prototype.getModuleName = function () {\n return 'grid';\n };\n Grid.prototype.enableBoxSelection = function () {\n if (this.enableAutoFill) {\n this.selectionSettings.cellSelectionMode = 'BoxWithBorder';\n this.element.classList.add('e-afenabled');\n }\n else {\n this.element.classList.remove('e-afenabled');\n }\n };\n Grid.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {GridModel} newProp - Defines new properties\n * @param {GridModel} oldProp - Defines old properties\n * @returns {void}\n * @hidden\n */\n Grid.prototype.onPropertyChanged = function (newProp, oldProp) {\n var requireRefresh = false;\n var requireGridRefresh = false;\n var freezeRefresh$$1 = false;\n var checkCursor;\n var args = { requestType: 'refresh' };\n if (this.isDestroyed) {\n return;\n }\n this.log('module_missing');\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n var properties = Object.keys(newProp);\n if (properties.indexOf('columns') > -1) {\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n }\n this.updateColumnObject();\n requireGridRefresh = true;\n }\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'allowPaging':\n this.notify(uiUpdate, { module: 'pager', enable: this.allowPaging });\n requireRefresh = true;\n break;\n case 'pageSettings':\n if (this.pageTemplateChange) {\n this.pageTemplateChange = false;\n this.notify(inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n break;\n }\n this.notify(inBoundModelChanged, { module: 'pager', properties: newProp.pageSettings });\n if (isNullOrUndefined(newProp.pageSettings.currentPage) && isNullOrUndefined(newProp.pageSettings.pageSize)\n && isNullOrUndefined(newProp.pageSettings.totalRecordsCount)\n || !isNullOrUndefined(oldProp.pageSettings) &&\n ((newProp.pageSettings.currentPage !== oldProp.pageSettings.currentPage)\n && !this.enableColumnVirtualization && !this.enableVirtualization\n && this.pageSettings.totalRecordsCount <= this.pageSettings.pageSize)) {\n requireRefresh = true;\n }\n break;\n case 'allowSorting':\n this.notify(uiUpdate, { module: 'sort', enable: this.allowSorting });\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'allowFiltering':\n this.updateStackedFilter();\n this.notify(uiUpdate, { module: 'filter', enable: this.allowFiltering });\n requireRefresh = true;\n if (this.filterSettings.type !== 'FilterBar') {\n this.refreshHeader();\n }\n break;\n case 'height':\n case 'width':\n this.notify(uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'allowReordering':\n this.headerModule.refreshUI();\n checkCursor = true;\n break;\n case 'allowRowDragAndDrop':\n this.notify(uiUpdate, { module: 'rowDragAndDrop', enable: this.allowRowDragAndDrop });\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'allowSelection':\n this.notify(uiUpdate, { module: 'selection', enable: this.allowSelection });\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enableAutoFill':\n if (this.selectionModule) {\n this.enableBoxSelection();\n this.selectionModule.updateAutoFillPosition();\n }\n break;\n case 'rowTemplate':\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n requireRefresh = true;\n break;\n case 'detailTemplate':\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n requireRefresh = true;\n break;\n case 'allowGrouping':\n this.notify(uiUpdate, { module: 'group', enable: this.allowGrouping });\n this.headerModule.refreshUI();\n requireRefresh = true;\n checkCursor = true;\n break;\n case 'enableInfiniteScrolling':\n case 'childGrid':\n requireRefresh = true;\n break;\n case 'toolbar':\n this.notify(uiUpdate, { module: 'toolbar' });\n break;\n case 'groupSettings':\n this.notify(inBoundModelChanged, {\n module: 'group', properties: newProp.groupSettings,\n oldProperties: oldProp.groupSettings\n });\n break;\n case 'aggregates':\n if (!this.aggregates.length && this.allowGrouping && this.groupSettings.columns.length) {\n requireRefresh = true;\n }\n this.notify(uiUpdate, { module: 'aggregate', properties: newProp });\n break;\n case 'frozenColumns':\n case 'frozenRows':\n case 'enableVirtualization':\n case 'currencyCode':\n case 'locale':\n this.log('frozen_rows_columns');\n freezeRefresh$$1 = true;\n requireGridRefresh = true;\n break;\n case 'query':\n if (!this.getDataModule().isQueryInvokedFromData) {\n requireRefresh = true;\n }\n this.getDataModule().isQueryInvokedFromData = false;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, requireGridRefresh);\n }\n }\n if (checkCursor) {\n this.updateDefaultCursor();\n }\n if (requireGridRefresh) {\n if (freezeRefresh$$1 || this.getFrozenColumns() || this.frozenRows) {\n this.freezeRefresh();\n }\n else {\n this.refresh();\n }\n }\n else if (requireRefresh) {\n this.notify(modelChanged, args);\n requireRefresh = false;\n this.maintainSelection(newProp.selectedRowIndex);\n }\n };\n Grid.prototype.extendedPropertyChange = function (prop, newProp, requireGridRefresh) {\n switch (prop) {\n case 'enableRtl':\n this.updateRTL();\n if (this.allowPaging) {\n this.element.querySelector('.e-gridpager').ej2_instances[0].enableRtl = newProp.enableRtl;\n this.element.querySelector('.e-gridpager').ej2_instances[0].dataBind();\n }\n if (this.height !== 'auto') {\n this.scrollModule.removePadding(!newProp.enableRtl);\n this.scrollModule.setPadding();\n }\n if (this.toolbar && this.toolbarModule) {\n this.toolbarModule.getToolbar().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.toolbarModule.getToolbar().ej2_instances[0].dataBind();\n }\n if (this.contextMenuItems && this.contextMenuModule) {\n this.contextMenuModule.getContextMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.contextMenuModule.getContextMenu().ej2_instances[0].dataBind();\n }\n if (this.showColumnMenu && this.columnMenuModule) {\n this.columnMenuModule.getColumnMenu().ej2_instances[0].enableRtl = newProp.enableRtl;\n this.columnMenuModule.getColumnMenu().ej2_instances[0].dataBind();\n }\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n this.refreshHeader();\n }\n this.notify(rtlUpdated, {});\n break;\n case 'enableAltRow':\n this.renderModule.refresh();\n break;\n case 'allowResizing':\n this.headerModule.refreshUI();\n this.updateResizeLines();\n break;\n case 'rowHeight':\n if (this.rowHeight) {\n addClass([this.element], 'e-grid-min-height');\n }\n else {\n removeClass([this.element], 'e-grid-min-height');\n }\n this.renderModule.refresh();\n this.headerModule.refreshUI();\n break;\n case 'gridLines':\n this.updateGridLines();\n break;\n case 'showColumnMenu':\n this.headerModule.refreshUI();\n this.notify(uiUpdate, { module: 'columnMenu', enable: true });\n break;\n case 'columnMenuItems':\n this.notify(uiUpdate, { module: 'columnMenu', enable: this.columnMenuItems });\n break;\n case 'contextMenuItems':\n this.notify(uiUpdate, { module: 'contextMenu', enable: this.contextMenuItems });\n break;\n case 'showColumnChooser':\n this.notify(uiUpdate, { module: 'columnChooser', enable: this.showColumnChooser });\n break;\n case 'filterSettings':\n this.updateStackedFilter();\n this.notify(inBoundModelChanged, { module: 'filter', properties: newProp.filterSettings });\n break;\n case 'searchSettings':\n this.notify(inBoundModelChanged, { module: 'search', properties: newProp.searchSettings });\n break;\n case 'sortSettings':\n this.notify(inBoundModelChanged, { module: 'sort' });\n break;\n case 'selectionSettings':\n this.notify(inBoundModelChanged, { module: 'selection', properties: newProp.selectionSettings });\n break;\n case 'editSettings':\n this.notify(inBoundModelChanged, { module: 'edit', properties: newProp.editSettings });\n break;\n case 'allowTextWrap':\n case 'textWrapSettings':\n if (this.allowTextWrap) {\n this.applyTextWrap();\n }\n else {\n this.removeTextWrap();\n }\n this.notify(freezeRender, { case: 'textwrap', isModeChg: (prop === 'textWrapSettings') });\n break;\n case 'dataSource':\n // eslint-disable-next-line no-case-declarations\n var pending_1 = this.getDataModule().getState();\n if (Object.getPrototypeOf(newProp).deepWatch) {\n var pKeyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0, props = Object.keys(newProp.dataSource); i < props.length; i++) {\n this.setRowData(getValue(pKeyField, this.dataSource[props[parseInt(i.toString(), 10)]]), this.dataSource[props[parseInt(i.toString(), 10)]]);\n }\n }\n else if (pending_1.isPending) {\n var gResult = !isNullOrUndefined(this.dataSource) ? this.dataSource.result : [];\n var names = (pending_1.group || []);\n for (var i = 0; i < names.length; i++) {\n gResult = DataUtil.group(gResult, names[parseInt(i.toString(), 10)], pending_1.aggregates || []);\n }\n this.dataSource = {\n result: gResult, count: this.dataSource.count,\n aggregates: this.dataSource.aggregates\n };\n this.getDataModule().setState({});\n pending_1.resolver(this.dataSource);\n }\n else {\n this.getDataModule().setState({ isDataChanged: false });\n this.notify(dataSourceModified, {});\n if (!requireGridRefresh) {\n this.renderModule.refresh();\n if (this.isCheckBoxSelection) {\n this.notify(beforeRefreshOnDataChange, {});\n }\n }\n }\n this.scrollRefresh();\n break;\n case 'enableHover':\n // eslint-disable-next-line no-case-declarations\n var action = newProp.enableHover ? addClass : removeClass;\n action([this.element], 'e-gridhover');\n break;\n case 'selectedRowIndex':\n if (!this.isSelectedRowIndexUpdating) {\n this.selectRow(newProp.selectedRowIndex);\n }\n this.isSelectedRowIndexUpdating = false;\n break;\n case 'resizeSettings':\n this.widthService.setWidthToTable();\n break;\n case 'enableAdaptiveUI':\n this.notify(setFullScreenDialog, {});\n break;\n case 'rowRenderingMode':\n this.enableVerticalRendering();\n this.notify(rowModeChange, {});\n this.refresh();\n break;\n case 'enableStickyHeader':\n this.scrollModule.addStickyListener(newProp.enableStickyHeader);\n break;\n }\n };\n Grid.prototype.maintainSelection = function (index) {\n var _this = this;\n if (index !== -1) {\n var fn_1 = function () {\n _this.selectRow(index);\n _this.off(contentReady, fn_1);\n };\n this.on(contentReady, fn_1, this);\n }\n };\n /**\n * @param {Object} prop - Defines the property\n * @param {boolean} muteOnChange - Defines the mute on change\n * @returns {void}\n * @private\n */\n Grid.prototype.setProperties = function (prop, muteOnChange) {\n _super.prototype.setProperties.call(this, prop, muteOnChange);\n var filterSettings = 'filterSettings';\n if (prop[\"\" + filterSettings] && this.filterModule && muteOnChange) {\n this.filterModule.refreshFilter();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setTablesCount = function () {\n var frozenCols = this.getFrozenColumns();\n var frozenLeft$$1 = this.getFrozenLeftColumnsCount();\n var frozenRight$$1 = this.getFrozenRightColumnsCount();\n if (frozenCols && !frozenLeft$$1 && !frozenRight$$1) {\n this.tablesCount = 2;\n }\n else if (!frozenCols && (frozenLeft$$1 || frozenRight$$1)) {\n if ((frozenLeft$$1 && !frozenRight$$1) || (frozenRight$$1 && !frozenLeft$$1)) {\n this.tablesCount = 2;\n }\n else if (frozenLeft$$1 && frozenRight$$1) {\n this.tablesCount = 3;\n }\n }\n };\n /**\n * @hidden\n * @returns {number} - Returns the tables count\n */\n Grid.prototype.getTablesCount = function () {\n return this.tablesCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateDefaultCursor = function () {\n var headerCells = [].slice.call(this.getHeaderContent().querySelectorAll('.e-headercell:not(.e-stackedheadercell)'));\n var stdHdrCell = [].slice.call(this.getHeaderContent().getElementsByClassName('e-stackedheadercell'));\n var cols = this.getColumns();\n if (this.enableColumnVirtualization && this.getFrozenColumns()) {\n var cells = this.contentModule.getHeaderCells();\n headerCells = cells.length ? cells : headerCells;\n }\n for (var i = 0; i < headerCells.length; i++) {\n var cell = headerCells[parseInt(i.toString(), 10)];\n if (this.allowGrouping || this.allowReordering || this.allowSorting) {\n if (!cols[parseInt(i.toString(), 10)].allowReordering || !cols[parseInt(i.toString(), 10)].allowSorting\n || !cols[parseInt(i.toString(), 10)].allowGrouping) {\n cell.classList.add('e-defaultcursor');\n }\n else {\n cell.classList.add('e-mousepointer');\n }\n }\n }\n for (var count = 0; count < stdHdrCell.length; count++) {\n if (this.allowReordering) {\n stdHdrCell[parseInt(count.toString(), 10)].classList.add('e-mousepointer');\n }\n }\n };\n Grid.prototype.updateColumnModel = function (columns, isRecursion) {\n for (var i = 0, len = columns.length; i < len; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.updateColumnModel(columns[parseInt(i.toString(), 10)].columns, true);\n }\n else {\n this.columnModel.push(columns[parseInt(i.toString(), 10)]);\n }\n }\n if (isNullOrUndefined(isRecursion) || !isRecursion) {\n this.updateColumnLevelFrozen();\n this.updateFrozenColumns();\n this.updateLockableColumns();\n }\n };\n Grid.prototype.updateColumnLevelFrozen = function () {\n var cols = this.columnModel;\n var leftCols = [];\n var rightCols = [];\n var movableCols = [];\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (col.freeze === 'Left') {\n col.freezeTable = frozenLeft;\n leftCols.push(col);\n }\n else if (col.freeze === 'Right') {\n col.freezeTable = frozenRight;\n rightCols.push(col);\n }\n else {\n col.freezeTable = 'movable';\n movableCols.push(col);\n }\n }\n this.columnModel = leftCols.concat(movableCols).concat(rightCols);\n }\n };\n Grid.prototype.updateFrozenColumns = function () {\n if (this.frozenLeftCount || this.frozenRightCount) {\n return;\n }\n var cols = this.columnModel;\n var directFrozenCount = this.frozenColumns;\n var totalFrozenCount = this.getFrozenColumns();\n var count = 0;\n for (var i = 0, len = cols.length; i < len; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var col = cols[parseInt(i.toString(), 10)];\n if (directFrozenCount) {\n if (i < directFrozenCount) {\n col.freezeTable = frozenLeft;\n }\n else {\n col.freezeTable = 'movable';\n }\n }\n if (col.isFrozen && i >= directFrozenCount) {\n col.freezeTable = frozenLeft;\n cols.splice(this.frozenColumns + count, 0, cols.splice(i, 1)[0]);\n count++;\n }\n else if (totalFrozenCount && !directFrozenCount) {\n col.freezeTable = 'movable';\n }\n if (!totalFrozenCount && !directFrozenCount && !isNullOrUndefined(col.freezeTable)) {\n col.freezeTable = undefined;\n }\n }\n };\n Grid.prototype.getFrozenLeftCount = function () {\n return this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n };\n Grid.prototype.isFrozenGrid = function () {\n return this.getFrozenColumns() !== 0 || this.getFrozenLeftColumnsCount() !== 0 || this.getFrozenRightColumnsCount() !== 0;\n };\n Grid.prototype.getFrozenMode = function () {\n return this.frozenName;\n };\n Grid.prototype.updateLockableColumns = function () {\n var cols = this.columnModel;\n var frozenCount = 0;\n var movableCount = 0;\n var frozenColumns = this.getFrozenColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].lockColumn) {\n if (i < frozenColumns) {\n cols.splice(frozenCount, 0, cols.splice(i, 1)[0]);\n frozenCount++;\n }\n else {\n cols.splice(frozenColumns + movableCount, 0, cols.splice(i, 1)[0]);\n movableCount++;\n }\n }\n }\n };\n Grid.prototype.checkLockColumns = function (cols) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n this.checkLockColumns(cols[parseInt(i.toString(), 10)].columns);\n }\n else if (cols[parseInt(i.toString(), 10)].lockColumn) {\n this.lockcolPositionCount++;\n }\n }\n };\n /**\n * Gets the columns from the Grid.\n *\n * @param {boolean} isRefresh - Defines the boolean whether to refresh\n * @returns {Column[]} - returns the column\n */\n Grid.prototype.getColumns = function (isRefresh) {\n var _this = this;\n var inview = this.inViewIndexes.map(function (v) { return v - _this.groupSettings.columns.length; }).filter(function (v) { return v > -1; });\n var vLen = inview.length;\n if (!this.enableColumnVirtualization || isNullOrUndefined(this.columnModel) || this.columnModel.length === 0 || isRefresh) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n var columns = vLen === 0 ? this.columnModel :\n this.columnModel.slice(inview[0], inview[vLen - 1] + 1);\n if (this.contentModule && this.enableColumnVirtualization && this.isFrozenGrid() && inview.length\n && inview[0] > 0) {\n var frozenCols = this.contentModule.ensureFrozenCols(columns);\n columns = frozenCols;\n }\n return columns;\n };\n /**\n * @private\n * @param {string} stackedHeader - Defines the stacked header\n * @param {Column[]} col - Defines the column\n * @returns {Column} Returns the Column\n */\n Grid.prototype.getStackedHeaderColumnByHeaderText = function (stackedHeader, col) {\n for (var i = 0; i < col.length; i++) {\n var individualColumn = col[parseInt(i.toString(), 10)];\n if (individualColumn.field === stackedHeader || individualColumn.headerText === stackedHeader) {\n this.stackedColumn = individualColumn;\n break;\n }\n else if (individualColumn.columns) {\n this.getStackedHeaderColumnByHeaderText(stackedHeader, individualColumn.columns);\n }\n }\n return this.stackedColumn;\n };\n /**\n * @private\n * @returns {number[]} Returns the column indexes\n */\n Grid.prototype.getColumnIndexesInView = function () {\n return this.inViewIndexes;\n };\n /**\n * @private\n * @returns {Query} - returns the query\n */\n Grid.prototype.getQuery = function () {\n return this.query;\n };\n /**\n * @private\n * @returns {object} - returns the locale constants\n */\n Grid.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * @param {number[]} indexes - specifies the indexes\n * @returns {void}\n * @private\n */\n Grid.prototype.setColumnIndexesInView = function (indexes) {\n this.inViewIndexes = indexes;\n };\n /**\n * Gets the visible columns from the Grid.\n *\n * @returns {Column[]} returns the column\n */\n Grid.prototype.getVisibleColumns = function () {\n return this.getCurrentVisibleColumns();\n };\n /**\n * Gets the header div of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getHeaderContent = function () {\n return this.headerModule.getPanel();\n };\n /**\n * Sets the header div of the Grid to replace the old header.\n *\n * @param {Element} element - Specifies the Grid header.\n * @returns {void}\n */\n Grid.prototype.setGridHeaderContent = function (element) {\n this.headerModule.setPanel(element);\n };\n /**\n * Gets the content table of the Grid.\n *\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getContentTable = function () {\n return this.contentModule.getTable();\n };\n /**\n * Sets the content table of the Grid to replace the old content table.\n *\n * @param {Element} element - Specifies the Grid content table.\n * @returns {void}\n */\n Grid.prototype.setGridContentTable = function (element) {\n this.contentModule.setTable(element);\n };\n /**\n * Gets the content div of the Grid.\n *\n * @returns {Element} Returns the element\n */\n Grid.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Sets the content div of the Grid to replace the old Grid content.\n *\n * @param {Element} element - Specifies the Grid content.\n * @returns {void}\n */\n Grid.prototype.setGridContent = function (element) {\n this.contentModule.setPanel(element);\n };\n /**\n * Gets the header table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getHeaderTable = function () {\n return this.headerModule.getTable();\n };\n /**\n * Sets the header table of the Grid to replace the old one.\n *\n * @param {Element} element - Specifies the Grid header table.\n * @returns {void}\n */\n Grid.prototype.setGridHeaderTable = function (element) {\n this.headerModule.setTable(element);\n };\n /**\n * Gets the footer div of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContent = function () {\n this.footerElement = this.element.getElementsByClassName(gridFooter)[0];\n return this.footerElement;\n };\n /**\n * Gets the footer table element of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getFooterContentTable = function () {\n this.footerElement = this.element.getElementsByClassName(gridFooter)[0];\n return this.footerElement.firstChild.firstChild;\n };\n /**\n * Gets the pager of the Grid.\n *\n * @returns {Element} returns the element\n */\n Grid.prototype.getPager = function () {\n return this.gridPager; //get element from pager\n };\n /**\n * Sets the pager of the Grid to replace the old pager.\n *\n * @param {Element} element - Specifies the Grid pager.\n * @returns {void}\n */\n Grid.prototype.setGridPager = function (element) {\n this.gridPager = element;\n };\n /**\n * Gets a row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getRowByIndex = function (index) {\n if (this.enableVirtualization && this.groupSettings.enableLazyLoading) {\n return this.lazyLoadRender.getRowByIndex(index);\n }\n else {\n return this.contentModule.getRowByIndex(index);\n }\n };\n /**\n * Gets a movable tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableRowByIndex = function (index) {\n return this.contentModule.getMovableRowByIndex(index);\n };\n /**\n * Gets a frozen tables row by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRowByIndex = function (index) {\n return this.getFrozenDataRows()[parseInt(index.toString(), 10)];\n };\n /**\n * Gets all the data rows of the Grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getRows = function () {\n return this.contentModule.getRowElements();\n };\n /**\n * Gets a frozen right tables row element by index.\n *\n * @param {number} index - Specifies the row index.\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenRightRowByIndex = function (index) {\n return this.contentModule.getFrozenRightRowByIndex(index);\n };\n /**\n * Get a row information based on cell\n *\n * @param {Element | EventTarget} target - specifies the element\n * @returns {RowInfo} returns the row info\n */\n Grid.prototype.getRowInfo = function (target) {\n var ele = target;\n var args = { target: target };\n if (!isNullOrUndefined(target) && isNullOrUndefined(parentsUntil(ele, 'e-detailrowcollapse')\n && isNullOrUndefined(parentsUntil(ele, 'e-recordplusexpand')))) {\n var cell = closest(ele, '.' + rowCell);\n if (!cell) {\n var row$$1 = closest(ele, '.' + row);\n if (!isNullOrUndefined(row$$1) && !row$$1.classList.contains('e-addedrow')) {\n var rowObj = this.getRowObjectFromUID(row$$1.getAttribute('data-uid'));\n var rowIndex = parseInt(row$$1.getAttribute(dataRowIndex), 10);\n args = { row: row$$1, rowData: rowObj.data, rowIndex: rowIndex };\n }\n return args;\n }\n var cellIndex = parseInt(cell.getAttribute(dataColIndex), 10);\n if (!isNullOrUndefined(cell) && !isNaN(cellIndex)) {\n var row_1 = closest(cell, '.' + row);\n var rowIndex = parseInt(row_1.getAttribute(dataRowIndex), 10);\n var frzCols = this.getFrozenColumns();\n var tableName = this.columnModel[parseInt(cellIndex.toString(), 10)].getFreezeTableName();\n var rows = this.contentModule.getRows();\n var index = cellIndex + this.getIndentCount();\n if (this.isFrozenGrid()) {\n if (tableName === frozenLeft) {\n rows = this.contentModule.getRows();\n }\n else if (tableName === 'movable') {\n index = cellIndex - frzCols - this.frozenLeftCount;\n rows = this.contentModule.getMovableRows();\n }\n else if (tableName === frozenRight) {\n index = cellIndex - (this.frozenLeftCount + this.movableCount);\n rows = this.contentModule.getFrozenRightRows();\n }\n }\n var rowsObject = rows.filter(function (r) { return r.uid === row_1.getAttribute('data-uid'); });\n var rowData = {};\n var column = void 0;\n if (Object.keys(rowsObject).length) {\n rowData = rowsObject[0].data;\n column = rowsObject[0].cells[parseInt(index.toString(), 10)].column;\n }\n args = { cell: cell, cellIndex: cellIndex, row: row_1, rowIndex: rowIndex, rowData: rowData, column: column, target: target };\n }\n }\n return args;\n };\n /**\n * Gets the Grid's movable content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getMovableRows = function () {\n return this.contentModule.getMovableRowElements();\n };\n /**\n * Gets the Grid's frozen right content rows from frozen grid.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenRightRows = function () {\n return this.contentModule.getFrozenRightRowElements();\n };\n /**\n * Gets all the Grid's data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getDataRows = function () {\n return this.getAllDataRows();\n };\n /**\n * @param {boolean} includeAdd - specifies includeAdd\n * @returns {Element[]} returns the element\n * @hidden\n */\n Grid.prototype.getAllDataRows = function (includeAdd) {\n if (isNullOrUndefined(this.getContentTable().querySelector(tbody))) {\n return [];\n }\n var tbody$$1 = this.isFrozenGrid() ? this.getFrozenLeftContentTbody()\n : this.getContentTable().querySelector(tbody);\n var rows = [].slice.call(tbody$$1.children);\n if (this.frozenRows) {\n var hdrTbody = this.isFrozenGrid() ? this.getHeaderContent().querySelector('.' + frozenHeader).querySelector(tbody)\n : this.getHeaderTable().querySelector(tbody);\n var freezeRows = [].slice.call(hdrTbody.children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * @param {HTMLElement[]} fRows - Defines the frozen Rows\n * @param {HTMLElement[]} mrows - Defines the movable Rows\n * @returns {HTMLElement[]} Returns the element\n * @hidden\n */\n Grid.prototype.addMovableRows = function (fRows, mrows) {\n for (var i = 0, len = mrows.length; i < len; i++) {\n fRows.push(mrows[parseInt(i.toString(), 10)]);\n }\n return fRows;\n };\n Grid.prototype.generateDataRows = function (rows, includAdd) {\n var dRows = [];\n for (var i = 0, len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(row)\n && (!rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow') || includAdd)) {\n if (this.isCollapseStateEnabled()) {\n dRows[parseInt(rows[parseInt(i.toString(), 10)].getAttribute('data-rowindex'), 10)] = rows[parseInt(i.toString(), 10)];\n }\n else {\n dRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n return dRows;\n };\n /**\n * Gets all the Grid's movable table data rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getMovableDataRows = function () {\n return this.getAllMovableDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllMovableDataRows = function (includeAdd) {\n if (!this.isFrozenGrid()) {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.' + movableContent).querySelector(tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + movableHeader).querySelector(tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen table data rows.\n *\n * @returns {Element[]} returns the element\n */\n Grid.prototype.getFrozenDataRows = function () {\n return this.getAllFrozenDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenDataRows = function (includeAdd) {\n var rows = [].slice.call(this.getContent().querySelector('.' + frozenContent).querySelector(tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.' + frozenHeader).querySelector(tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Gets all the Grid's frozen right table data rows.\n *\n * @returns {Element[]} Returns the Element\n */\n Grid.prototype.getFrozenRightDataRows = function () {\n return this.getAllFrozenRightDataRows();\n };\n /**\n * @param {boolean} includeAdd Defines the include add in boolean\n * @returns {Element[]} Returns the element\n * @hidden\n */\n Grid.prototype.getAllFrozenRightDataRows = function (includeAdd) {\n if (this.getFrozenMode() !== 'Right' && this.getFrozenMode() !== 'Left-Right') {\n return [];\n }\n var rows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(tbody).children);\n if (this.frozenRows) {\n var freezeRows = [].slice.call(this.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(tbody).children);\n rows = this.addMovableRows(freezeRows, rows);\n }\n var dataRows = this.generateDataRows(rows, includeAdd);\n return dataRows;\n };\n /**\n * Updates particular cell value based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {string } field - Specifies the field name which you want to update.\n * @param {string | number | boolean | Date} value - To update new value for the particular cell.\n * @returns {void}\n */\n Grid.prototype.setCellValue = function (key, field, value) {\n var cells = 'cells';\n var rowData = 'data';\n var rowIdx = 'index';\n var rowuID = 'uid';\n var isRight = this.getFrozenMode() === 'Right';\n var pkName = this.getPrimaryKeyFieldNames()[0];\n var cell = new CellRenderer(this, this.serviceLocator);\n var fieldIdx = this.getColumnIndexByField(field);\n var col = this.getColumnByField(field);\n var rowObjects = col.getFreezeTableName() === 'movable' ? this.contentModule.getMovableRows() :\n col.getFreezeTableName() === 'frozen-right' ? this.getFrozenRightRowsObject() : this.contentModule.getRows();\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var tr = selectedRow ? this.element.querySelector('[data-uid=' + selectedRow[\"\" + rowuID] + ']') : null;\n if (!isNullOrUndefined(tr)) {\n setValue(field, value, selectedRow[\"\" + rowData]);\n var left = this.getFrozenLeftColumnsCount() || this.getFrozenColumns();\n var movable = this.getMovableColumnsCount();\n if (this.isRowDragable() && !isRight) {\n left++;\n }\n var frIdx = left + movable;\n var td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n if (!isNullOrUndefined(td)) {\n var Idx = col.getFreezeTableName() === 'movable' ? left : col.getFreezeTableName() === 'frozen-right' ? frIdx : 0;\n if (this.groupSettings.columns.length) {\n fieldIdx = fieldIdx + this.groupSettings.columns.length;\n }\n if (this.childGrid || this.detailTemplate) {\n fieldIdx++;\n }\n if (this.isRowDragable() && !isRight) {\n fieldIdx++;\n }\n var sRow = selectedRow[\"\" + cells][fieldIdx - Idx];\n cell.refreshTD(td, sRow, selectedRow[\"\" + rowData], { index: selectedRow[\"\" + rowIdx] });\n if (this.isReact) {\n td = this.enableVirtualization ? tr.children[parseInt(fieldIdx.toString(), 10)]\n : this.getCellFromIndex(selectedRow[\"\" + rowIdx], fieldIdx);\n }\n if (this.aggregates.length > 0) {\n this.notify(refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(groupAggregates, {});\n }\n }\n /* tslint:disable:no-string-literal */\n if (!isNullOrUndefined(selectedRow) && !isNullOrUndefined(selectedRow['changes'])) {\n selectedRow['changes'][\"\" + field] = value;\n }\n /* tslint:disable:no-string-literal */\n this.trigger(queryCellInfo, {\n cell: td, column: col, data: selectedRow[\"\" + rowData]\n });\n }\n }\n else {\n return;\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @param {boolean} renderTemplates - Defines renderTemplates need to invoke\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Grid.prototype.refreshReactColumnTemplateByUid = function (columnUid, renderTemplates) {\n var _this = this;\n if (this.isReact) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.clearTemplate(['columnTemplate'], undefined, function () {\n var cells = 'cells';\n var rowIdx = 'index';\n var isChildGrid = _this.childGrid && _this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = isChildGrid ? _this.getContentTable().querySelectorAll('.e-row') :\n _this.getDataRows();\n var indent = _this.getIndentCount();\n var childIndent = 0;\n var isChildRow = false;\n for (var j = 0; j < rows.length; j++) {\n var rowsObj = _this.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid')) {\n var gridObj = parentsUntil(rows[parseInt(j.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(j.toString(), 10)].getAttribute('data-uid'));\n childIndent = gridObj.getIndentCount();\n isChildRow = true;\n }\n if (rowsObj && rowsObj.isDataRow && !isNullOrUndefined(rowsObj.index) && !rows[parseInt(j.toString(), 10)].classList.contains('e-editedrow')) {\n for (var i = 0; i < rowsObj[\"\" + cells].length; i++) {\n var cell = rowsObj[\"\" + cells][parseInt(i.toString(), 10)];\n if (cell.isTemplate) {\n var cellRenderer = new CellRenderer(_this, _this.serviceLocator);\n var td = isChildGrid ? rows[parseInt(j.toString(), 10)]\n .children[cell.index + (isChildRow ? childIndent : indent)] : _this.getCellFromIndex(j, i - indent);\n cellRenderer.refreshTD(td, cell, rowsObj.data, { index: rowsObj[\"\" + rowIdx] });\n }\n }\n }\n isChildRow = false;\n }\n if (renderTemplates) {\n _this.renderTemplates();\n }\n });\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshGroupCaptionFooterTemplate = function () {\n var isChildGrid = this.childGrid && this.element.querySelectorAll('.e-childgrid').length ? true : false;\n var rows = this.getContentTable().querySelectorAll('.e-groupcaptionrow, .e-groupfooterrow');\n for (var i = 0; i < rows.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var gridObj = this;\n var rowsObj = this.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n if (isChildGrid && !rowsObj && parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid')) {\n gridObj = parentsUntil(rows[parseInt(i.toString(), 10)], 'e-childgrid').ej2_instances[0];\n rowsObj = gridObj.getRowObjectFromUID(rows[parseInt(i.toString(), 10)].getAttribute('data-uid'));\n }\n if (rowsObj) {\n var cells = rowsObj.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: rowsObj.data, dataUid: rowsObj.uid };\n gridObj.notify(refreshAggregateCell, args);\n }\n }\n };\n /**\n * @param {string} columnUid - Defines column uid\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshReactHeaderTemplateByUid = function (columnUid) {\n if (this.isReact) {\n var cells = 'cells';\n var rowsObj = this.headerModule.rows;\n var cellIndex = this.getNormalizedColumnIndex(columnUid);\n for (var j = 0; j < rowsObj.length; j++) {\n var cell = rowsObj[parseInt(j.toString(), 10)][\"\" + cells][parseInt(cellIndex.toString(), 10)];\n if (cell && cell.column.uid === columnUid) {\n var headerCellRenderer = new HeaderCellRenderer(this, this.serviceLocator);\n var td = parentsUntil(this.element.querySelectorAll('[e-mappinguid=' + columnUid + ']')[0], 'e-templatecell');\n headerCellRenderer.refresh(cell, td);\n }\n }\n }\n };\n /**\n * Updates and refresh the particular row values based on the given primary key value.\n * > Primary key column must be specified using `columns.isPrimaryKey` property.\n *\n * @param {string| number} key - Specifies the PrimaryKey value of dataSource.\n * @param {Object} rowData - To update new data for the particular row.\n * @returns {void}\n */\n Grid.prototype.setRowData = function (key, rowData) {\n var rowuID = 'uid';\n var rowObjects = this.contentModule.getRows();\n var pkName = this.getPrimaryKeyFieldNames()[0];\n if (this.groupSettings.columns.length > 0 && this.aggregates.length > 0) {\n rowObjects = rowObjects.filter(function (row$$1) { return row$$1.isDataRow; });\n }\n var selectedRow = rowObjects.filter(function (r) {\n return getValue(pkName, r.data) === key;\n })[0];\n var selectRowEle = selectedRow ? [].slice.call(this.element.querySelectorAll('[data-uid=' + selectedRow[\"\" + rowuID] + ']')) : undefined;\n if (!isNullOrUndefined(selectedRow) && selectRowEle.length) {\n selectedRow.changes = rowData;\n if (this.isFrozenGrid()) {\n var currentTbl = parentsUntil(selectRowEle[0], 'e-table');\n var currentTblName = currentTbl.parentElement.matches('.e-frozen-left-header,.e-frozen-left-content') ? 'left'\n : currentTbl.parentElement.matches('.e-frozen-right-header,.e-frozen-right-content') ? 'right' : 'movable';\n var mTr = this.getMovableRowsObject()[selectedRow.index];\n this.setFrozenRowData(mTr, rowData);\n if (currentTblName === 'left') {\n var lTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(lTr, rowData);\n }\n if (currentTblName === 'right' || this.frozenRightColumns.length > 0) {\n var rTr = this.getFrozenRightRowsObject()[selectedRow.index];\n this.setFrozenRowData(rTr, rowData);\n }\n }\n else if (this.frozenRows) {\n var fRowTr = this.getRowsObject()[selectedRow.index];\n this.setFrozenRowData(fRowTr, rowData);\n }\n else {\n this.setFrozenRowData(selectedRow, rowData);\n }\n if (this.aggregates.length > 0) {\n this.notify(refreshFooterRenderer, {});\n if (this.groupSettings.columns.length > 0) {\n this.notify(groupAggregates, {});\n }\n }\n }\n else {\n return;\n }\n };\n Grid.prototype.setFrozenRowData = function (fTr, rowData) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this);\n fTr.changes = rowData;\n refreshForeignData(fTr, this.getForeignKeyColumns(), fTr.changes);\n rowRenderer.refresh(fTr, this.getColumns(), true);\n };\n /**\n * Gets a cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getCellFromIndex = function (rowIndex, columnIndex) {\n var col = this.getColumnByIndex(columnIndex);\n return getCellByColAndRowIndex(this, col, rowIndex, columnIndex);\n };\n /**\n * Gets a movable table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableCellFromIndex = function (rowIndex, columnIndex) {\n if (this.frozenName === 'Left-Right' && columnIndex >= this.movableCount) {\n return undefined;\n }\n var index = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)] &&\n this.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(rowCell)[columnIndex - index];\n };\n /**\n * Gets a frozen right table cell by row and column index.\n *\n * @param {number} rowIndex - Specifies the row index.\n * @param {number} columnIndex - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightCellFromIndex = function (rowIndex, columnIndex) {\n var index = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n var rows = this.getFrozenRightDataRows();\n return rows[parseInt(rowIndex.toString(), 10)] && rows[parseInt(rowIndex.toString(), 10)]\n .getElementsByClassName(rowCell)[columnIndex - index];\n };\n /**\n * Gets a column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getColumnHeaderByIndex = function (index) {\n return this.getHeaderTable().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * Gets a movable column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getMovableColumnHeaderByIndex = function (index) {\n var left = this.getFrozenColumns() || this.getFrozenLeftColumnsCount();\n return this.getMovableVirtualHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen right column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenRightColumnHeaderByIndex = function (index) {\n var left = this.getFrozenLeftColumnsCount() + this.getMovableColumnsCount();\n return this.getFrozenRightHeader().getElementsByClassName('e-headercell')[index - left];\n };\n /**\n * Gets a frozen left column header by column index.\n *\n * @param {number} index - Specifies the column index.\n * @returns {Element} Returns the Element\n */\n Grid.prototype.getFrozenLeftColumnHeaderByIndex = function (index) {\n return this.getFrozenVirtualHeader().getElementsByClassName('e-headercell')[parseInt(index.toString(), 10)];\n };\n /**\n * @param {string} uid - Defines the uid\n * @param {boolean} isMovable - Defines isMovable\n * @param {boolean} isFrozenRight - Defines isFrozenRight\n * @returns {Row} Returns the row object\n * @hidden\n */\n Grid.prototype.getRowObjectFromUID = function (uid, isMovable, isFrozenRight) {\n var rows = this.contentModule.getRows();\n var row$$1 = this.rowObject(rows, uid);\n if (this.isFrozenGrid()) {\n if (!row$$1 || isMovable || isFrozenRight) {\n row$$1 = this.rowObject(this.contentModule.getMovableRows(), uid);\n if ((!row$$1 && this.getFrozenMode() === 'Left-Right') || isFrozenRight) {\n row$$1 = this.rowObject(this.contentModule.getFrozenRightRows(), uid);\n }\n return row$$1;\n }\n }\n if (isNullOrUndefined(row$$1) && this.enableVirtualization && this.groupSettings.columns.length > 0) {\n row$$1 = this.rowObject(this.vRows, uid);\n return row$$1;\n }\n return row$$1;\n };\n Grid.prototype.rowObject = function (rows, uid) {\n if (rows) {\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row$$1 = rows_1[_i];\n if (row$$1.uid === uid) {\n return row$$1;\n }\n }\n }\n return null;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getRowsObject = function () {\n return this.contentModule.getRows();\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getMovableRowsObject = function () {\n var rows = [];\n if (this.isFrozenGrid()) {\n rows = this.contentModule.getMovableRows();\n }\n return rows;\n };\n /**\n * @hidden\n * @returns {Row[]} Returns the Row object\n */\n Grid.prototype.getFrozenRightRowsObject = function () {\n var rows = [];\n if (this.getFrozenMode() === 'Right' || this.getFrozenMode() === 'Left-Right') {\n rows = this.contentModule.getFrozenRightRows();\n }\n return rows;\n };\n /**\n * Gets a column header by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByField = function (field) {\n var column = this.getColumnByField(field);\n return column ? this.getColumnHeaderByUid(column.uid) : undefined;\n };\n /**\n * Gets a column header by UID.\n *\n * @param {string} uid - Specifies the column uid.\n * @returns {Element} - Returns the element\n */\n Grid.prototype.getColumnHeaderByUid = function (uid) {\n var element = this.getHeaderContent().querySelector('[e-mappinguid=' + uid + ']');\n return element ? element.parentElement : undefined;\n };\n /**\n * @hidden\n * @param {number} index - Defines the index\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByIndex = function (index) {\n var column;\n this.getColumns().some(function (col, i) {\n column = col;\n return i === index;\n });\n return column;\n };\n /**\n * Gets a Column by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets a column index by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {number} Returns the index by field\n */\n Grid.prototype.getColumnIndexByField = function (field) {\n var cols = this.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * Gets a column by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {Column} Returns the column\n */\n Grid.prototype.getColumnByUid = function (uid) {\n return iterateArrayOrObject(this.getColumns().concat(this.getStackedColumns(this.columns)), function (item) {\n if (item.uid === uid) {\n return item;\n }\n return undefined;\n })[0];\n };\n /**\n * @param {Column[]} columns - Defines the columns\n * @param {Column[]} stackedColumn - Defines the stacked columns\n * @returns {Column[]} Returns the columns\n * @hidden\n */\n Grid.prototype.getStackedColumns = function (columns, stackedColumn) {\n if (stackedColumn === void 0) { stackedColumn = []; }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (column.columns) {\n stackedColumn.push(column);\n this.getStackedColumns(column.columns, stackedColumn);\n }\n }\n return stackedColumn;\n };\n /**\n * Gets a column index by UID.\n *\n * @param {string} uid - Specifies the column UID.\n * @returns {number} Returns the column by index\n */\n Grid.prototype.getColumnIndexByUid = function (uid) {\n var index = iterateArrayOrObject(this.getColumns(), function (item, index) {\n if (item.uid === uid) {\n return index;\n }\n return undefined;\n })[0];\n return !isNullOrUndefined(index) ? index : -1;\n };\n /**\n * Gets UID by column name.\n *\n * @param {string} field - Specifies the column name.\n * @returns {string} Returns the column by field\n */\n Grid.prototype.getUidByColumnField = function (field) {\n return iterateArrayOrObject(this.getColumns(), function (item) {\n if (item.field === field) {\n return item.uid;\n }\n return undefined;\n })[0];\n };\n /**\n * Gets column index by column uid value.\n *\n * @private\n * @param {string} uid - Specifies the column uid.\n * @returns {number} Returns the column by field\n */\n Grid.prototype.getNormalizedColumnIndex = function (uid) {\n var index = this.getColumnIndexByUid(uid);\n return index + this.getIndentCount();\n };\n /**\n * Gets indent cell count.\n *\n * @private\n * @returns {number} Returns the indent count\n */\n Grid.prototype.getIndentCount = function () {\n var index = 0;\n if (this.allowGrouping) {\n index += this.groupSettings.columns.length;\n }\n if (this.isDetail()) {\n index++;\n }\n if (this.isRowDragable() && isNullOrUndefined(this.rowDropSettings.targetID)) {\n index++;\n }\n /**\n * TODO: index normalization based on the stacked header, grouping and detailTemplate\n * and frozen should be handled here\n */\n return index;\n };\n /**\n * Gets the collection of column fields.\n *\n * @returns {string[]} Returns the Field names\n */\n Grid.prototype.getColumnFieldNames = function () {\n var columnNames = [];\n var column;\n for (var i = 0, len = this.getColumns().length; i < len; i++) {\n column = this.getColumns()[parseInt(i.toString(), 10)];\n if (column.visible) {\n columnNames.push(column.field);\n }\n }\n return columnNames;\n };\n /**\n * Gets a compiled row template.\n *\n * @returns {Function} Returns the row TEmplate\n * @private\n */\n Grid.prototype.getRowTemplate = function () {\n return this.rowTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function} Returns the Detail template\n */\n Grid.prototype.getDetailTemplate = function () {\n return this.detailTemplateFn;\n };\n /**\n * Gets a compiled detail row template.\n *\n * @private\n * @returns {Function}Returns the Edit template\n */\n Grid.prototype.getEditTemplate = function () {\n return this.editTemplateFn;\n };\n /**\n * Gets a compiled dialog edit header template.\n *\n * @private\n * @returns {Function} returns template function\n */\n Grid.prototype.getEditHeaderTemplate = function () {\n return this.editHeaderTemplateFn;\n };\n /**\n * Gets a compiled dialog edit footer template.\n *\n * @private\n * @returns {Function} Returns the Footer template\n */\n Grid.prototype.getEditFooterTemplate = function () {\n return this.editFooterTemplateFn;\n };\n /**\n * Get the names of the primary key columns of the Grid.\n *\n * @returns {string[]} Returns the field names\n */\n Grid.prototype.getPrimaryKeyFieldNames = function () {\n var keys = [];\n for (var k = 0; k < this.columnModel.length; k++) {\n if (this.columnModel[parseInt(k.toString(), 10)].isPrimaryKey) {\n keys.push(this.columnModel[parseInt(k.toString(), 10)].field);\n }\n }\n return keys;\n };\n /**\n * Refreshes the Grid header and content.\n *\n * @returns {void}\n */\n Grid.prototype.refresh = function () {\n if (!this.isDestroyed) {\n this.isManualRefresh = true;\n this.headerModule.refreshUI();\n this.updateStackedFilter();\n this.renderModule.refresh();\n }\n };\n /**\n * Refreshes the Grid header.\n *\n * @returns {void}\n */\n Grid.prototype.refreshHeader = function () {\n this.headerModule.refreshUI();\n };\n /**\n * Gets the collection of selected rows.\n *\n * @returns {Element[]} Returns the element\n */\n Grid.prototype.getSelectedRows = function () {\n return this.selectionModule ? this.selectionModule.selectedRecords : [];\n };\n /**\n * Gets the collection of selected row indexes.\n *\n * @returns {number[]} Returns the Selected row indexes\n */\n Grid.prototype.getSelectedRowIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowIndexes : [];\n };\n /**\n * Gets the collection of selected row and cell indexes.\n *\n * @returns {number[]} Returns the Selected row cell indexes\n */\n Grid.prototype.getSelectedRowCellIndexes = function () {\n return this.selectionModule ? this.selectionModule.selectedRowCellIndexes : [];\n };\n /**\n * Gets the collection of selected records.\n *\n * @returns {Object[]} Returns the selected records\n * @isGenericType true\n */\n Grid.prototype.getSelectedRecords = function () {\n return this.selectionModule ? this.selectionModule.getSelectedRecords() : [];\n };\n /**\n * Gets the collection of selected columns uid.\n *\n * @returns {string[]} Returns the selected column uid\n * @isGenericType true\n */\n Grid.prototype.getSelectedColumnsUid = function () {\n var _this = this;\n var uid = [];\n if (this.selectionModule) {\n this.selectionModule.selectedColumnsIndexes.filter(function (i) { return uid.push(_this.getColumns()[parseInt(i.toString(), 10)].uid); });\n }\n return uid;\n };\n /**\n * Gets the data module.\n *\n * @returns {Data} Returns the data\n */\n Grid.prototype.getDataModule = function () {\n return this.renderModule.data;\n };\n /**\n * Shows a column by its column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} showBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n Grid.prototype.showColumns = function (keys, showBy) {\n showBy = showBy ? showBy : 'headerText';\n this.showHider.show(keys, showBy);\n };\n /**\n * Hides a column by column name.\n *\n * @param {string|string[]} keys - Defines a single or collection of column names.\n * @param {string} hideBy - Defines the column key either as field name or header text.\n * @returns {void}\n */\n Grid.prototype.hideColumns = function (keys, hideBy) {\n hideBy = hideBy ? hideBy : 'headerText';\n this.showHider.hide(keys, hideBy);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen column\n */\n Grid.prototype.getFrozenColumns = function () {\n return this.frozenColumns + this.getFrozenCount(this.columns, 0, 0);\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Right column count\n */\n Grid.prototype.getFrozenRightColumnsCount = function () {\n return this.frozenRightCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the Frozen Left column\n */\n Grid.prototype.getFrozenLeftColumnsCount = function () {\n return this.frozenLeftCount;\n };\n /**\n * @hidden\n * @returns {number} Returns the movable column count\n */\n Grid.prototype.getMovableColumnsCount = function () {\n return this.movableCount;\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setFrozenCount = function () {\n this.frozenLeftCount = this.frozenRightCount = this.movableCount = 0;\n this.visibleFrozenLeft = this.visibleFrozenRight = this.visibleMovable = 0;\n this.frozenLeftColumns = [];\n this.frozenRightColumns = [];\n this.movableColumns = [];\n this.splitFrozenCount(this.columns);\n if (this.frozenColumns && (this.frozenLeftCount || this.frozenRightCount)) {\n this.setProperties({ frozenColumns: 0 }, true);\n }\n this.setTablesCount();\n if (this.frozenLeftCount && !this.frozenRightCount) {\n this.frozenName = 'Left';\n }\n else if (this.frozenRightCount && !this.frozenLeftCount) {\n this.frozenName = 'Right';\n }\n else if (this.frozenLeftCount && this.frozenRightCount) {\n this.frozenName = 'Left-Right';\n }\n else if (this.frozenColumns || this.frozenRows) {\n this.frozenName = 'Left';\n }\n else {\n this.frozenName = undefined;\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen left count\n */\n Grid.prototype.getVisibleFrozenLeftCount = function () {\n return this.visibleFrozenLeft;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible Frozen Right count\n */\n Grid.prototype.getVisibleFrozenRightCount = function () {\n return this.visibleFrozenRight;\n };\n /**\n * @hidden\n * @returns {number} Returns the visible movable count\n */\n Grid.prototype.getVisibleMovableCount = function () {\n return this.visibleMovable;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenRightColumns = function () {\n return this.frozenRightColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getFrozenLeftColumns = function () {\n return this.frozenLeftColumns;\n };\n /**\n * @hidden\n * @returns {Column[]} Returns the column\n */\n Grid.prototype.getMovableColumns = function () {\n return this.movableColumns;\n };\n Grid.prototype.splitFrozenCount = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.splitFrozenCount(columns[parseInt(i.toString(), 10)].columns);\n }\n else {\n if (columns[parseInt(i.toString(), 10)].freeze === 'Right') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenRight++;\n }\n this.frozenRightColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenRightCount++;\n }\n else if (columns[parseInt(i.toString(), 10)].freeze === 'Left') {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleFrozenLeft++;\n }\n this.frozenLeftColumns.push(columns[parseInt(i.toString(), 10)]);\n this.frozenLeftCount++;\n }\n else {\n if (columns[parseInt(i.toString(), 10)].visible !== false) {\n this.visibleMovable++;\n }\n this.movableColumns.push(columns[parseInt(i.toString(), 10)]);\n this.movableCount++;\n }\n }\n }\n };\n /**\n * @hidden\n * @returns {number} Returns the visible frozen columns count\n */\n Grid.prototype.getVisibleFrozenColumns = function () {\n return this.getVisibleFrozenColumnsCount() + this.getVisibleFrozenCount(this.columns, 0);\n };\n /**\n * Get the current Filter operator and field.\n *\n * @returns {FilterUI} Returns the filter UI\n */\n Grid.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n Grid.prototype.getVisibleFrozenColumnsCount = function () {\n var visibleFrozenColumns = 0;\n var columns = this.columnModel;\n for (var i = 0; i < this.frozenColumns; i++) {\n if (columns[parseInt(i.toString(), 10)].visible) {\n visibleFrozenColumns++;\n }\n }\n if (this.frozenLeftCount || this.frozenRightCount) {\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].visible && (columns[parseInt(i.toString(), 10)].freeze === 'Left'\n || columns[parseInt(i.toString(), 10)].freeze === 'Right')) {\n visibleFrozenColumns++;\n }\n }\n }\n return visibleFrozenColumns;\n };\n Grid.prototype.getVisibleFrozenCount = function (cols, cnt) {\n if (!this.frozenLeftCount && !this.frozenRightCount) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getVisibleFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && cols[parseInt(i.toString(), 10)].visible) {\n cnt++;\n }\n }\n }\n }\n return cnt;\n };\n Grid.prototype.getFrozenCount = function (cols, cnt, index) {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].columns) {\n cnt = this.getFrozenCount(cols[parseInt(i.toString(), 10)].columns, cnt, index);\n }\n else {\n if (cols[parseInt(i.toString(), 10)].isFrozen && index > this.frozenColumns - 1) {\n cnt++;\n }\n index++;\n }\n }\n return cnt;\n };\n /**\n * Navigates to the specified target page.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Grid.prototype.goToPage = function (pageNo) {\n if (this.pagerModule) {\n this.pagerModule.goToPage(pageNo);\n }\n };\n /**\n * Defines the text of external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Grid.prototype.updateExternalMessage = function (message) {\n if (this.pagerModule) {\n this.pagerModule.updateExternalMessage(message);\n }\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to be sorted.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previous sorted columns are to be maintained.\n * @returns {void}\n */\n Grid.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n if (this.sortModule) {\n this.sortModule.sortColumn(columnName, direction, isMultiSort);\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearSorting = function () {\n if (this.sortModule) {\n this.sortModule.clearSorting();\n }\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeSortColumn = function (field) {\n if (this.sortModule) {\n this.sortModule.removeSortColumn(field);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.clearGridActions = function () {\n this.setProperties({ sortSettings: { columns: [] } }, true);\n this.setProperties({ filterSettings: { columns: [] } }, true);\n this.setProperties({ searchSettings: { key: '' } }, true);\n if (this.allowGrouping) {\n this.setProperties({ groupSettings: { columns: [] } }, false);\n }\n else {\n this.freezeRefresh();\n }\n };\n /**\n * Filters grid row by column name with the given options.\n *\n * @param {string} fieldName - Defines the field name of the column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query and another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, the grid filters the records with exact match. if false, it filters case\n * insensitive records (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true,\n * then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Grid.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n if (this.filterModule) {\n this.filterModule.filterByColumn(fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator);\n }\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - Defines the Fields\n * @returns {void}\n */\n Grid.prototype.clearFiltering = function (fields) {\n if (this.filterModule) {\n this.filterModule.clearFiltering(fields);\n }\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n if (this.filterModule) {\n this.filterModule.removeFilteredColsByField(field, isClearFilterBar);\n }\n };\n /**\n * Selects a row by given index.\n *\n * @param {number} index - Defines the row index.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Grid.prototype.selectRow = function (index, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectRow(index, isToggle);\n }\n };\n /**\n * Selects a collection of rows by indexes.\n *\n * @param {number[]} rowIndexes - Specifies the row indexes.\n * @returns {void}\n */\n Grid.prototype.selectRows = function (rowIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectRows(rowIndexes);\n }\n };\n /**\n * Deselects the current selected rows and cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearSelection();\n }\n };\n /**\n * Selects a cell by the given index.\n *\n * @param {IIndex} cellIndex - Defines the row and column indexes.\n * @param {boolean} isToggle - If set to true, then it toggles the selection.\n * @returns {void}\n */\n Grid.prototype.selectCell = function (cellIndex, isToggle) {\n if (this.selectionModule) {\n this.selectionModule.selectCell(cellIndex, isToggle);\n }\n };\n /**\n * Selects a range of cells from start and end indexes.\n *\n * @param {IIndex} startIndex - Specifies the row and column's start index.\n * @param {IIndex} endIndex - Specifies the row and column's end index.\n * @returns {void}\n */\n Grid.prototype.selectCellsByRange = function (startIndex, endIndex) {\n this.selectionModule.selectCellsByRange(startIndex, endIndex);\n };\n /**\n * Searches Grid records using the given key.\n * You can customize the default search option by using the\n * [`searchSettings`](./#searchsettings/).\n *\n * @param {string} searchString - Defines the key.\n * @returns {void}\n */\n Grid.prototype.search = function (searchString) {\n if (this.searchModule) {\n this.searchModule.search(searchString);\n }\n };\n /**\n * By default, prints all the pages of the Grid and hides the pager.\n * > You can customize print options using the\n * [`printMode`](./#printmode).\n *\n * @returns {void}\n */\n Grid.prototype.print = function () {\n if (this.printModule) {\n this.printModule.print();\n }\n };\n /**\n * Delete a record with Given options. If fieldname and data is not given then grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field, 'Name of the column'.\n * @param {Object} data - Defines the JSON data of the record to be deleted.\n * @returns {void}\n */\n Grid.prototype.deleteRecord = function (fieldname, data) {\n if (this.editModule) {\n this.editModule.deleteRecord(fieldname, data);\n }\n };\n /**\n * Starts edit the selected row. At least one row must be selected before invoking this method.\n * `editSettings.allowEditing` should be true.\n * {% codeBlock src='grid/startEdit/index.md' %}{% endcodeBlock %}\n *\n * @returns {void}\n */\n Grid.prototype.startEdit = function () {\n if (this.editModule) {\n this.editModule.startEdit();\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Grid.prototype.endEdit = function () {\n if (this.editModule) {\n this.editModule.endEdit();\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Grid.prototype.closeEdit = function () {\n if (this.editModule) {\n this.editModule.closeEdit();\n }\n };\n /**\n * Adds a new record to the Grid. Without passing parameters, it adds empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Grid.prototype.addRecord = function (data, index) {\n if (this.editModule) {\n this.editModule.addRecord(data, index);\n }\n };\n /**\n * Delete any visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Grid.prototype.deleteRow = function (tr) {\n if (this.editModule) {\n this.editModule.deleteRow(tr);\n }\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Grid.prototype.editCell = function (index, field) {\n if (this.editModule) {\n this.editModule.editCell(index, field);\n }\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n * {% codeBlock src='grid/saveCell/index.md' %}{% endcodeBlock %}\n */\n Grid.prototype.saveCell = function () {\n if (this.editModule) {\n this.editModule.saveCell();\n }\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Grid.prototype.updateCell = function (rowIndex, field, value) {\n if (this.editModule) {\n this.editModule.updateCell(rowIndex, field, value);\n }\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * {% codeBlock src='grid/updateRow/index.md' %}{% endcodeBlock %}\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Grid.prototype.updateRow = function (index, data) {\n if (this.editModule) {\n this.editModule.updateRow(index, data);\n }\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} Returns the batch changes\n */\n Grid.prototype.getBatchChanges = function () {\n if (this.editModule) {\n return this.editModule.getBatchChanges();\n }\n return {};\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n */\n Grid.prototype.enableToolbarItems = function (items, isEnable) {\n if (this.toolbarModule) {\n this.toolbarModule.enableItems(items, isEnable);\n }\n };\n /**\n * Copy the selected rows or cells data into clipboard.\n *\n * @param {boolean} withHeader - Specifies whether the column header text needs to be copied along with rows or cells.\n * @returns {void}\n */\n Grid.prototype.copy = function (withHeader) {\n if (this.clipboardModule) {\n this.clipboardModule.copy(withHeader);\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.recalcIndentWidth = function () {\n var _this = this;\n if (!this.getHeaderTable().querySelector('.e-emptycell')) {\n return;\n }\n if ((!this.groupSettings.columns.length && !this.isDetail() && !this.isRowDragable()) ||\n this.getHeaderTable().querySelector('.e-emptycell').getAttribute('indentRefreshed') ||\n !this.getContentTable()) {\n return;\n }\n var indentWidth = this.getHeaderTable().querySelector('.e-emptycell').parentElement.offsetWidth;\n var headerCol = [].slice.call(this.getHeaderTable().querySelector(colGroup).childNodes);\n var contentCol = [].slice.call(this.getContentTable().querySelector(colGroup).childNodes);\n var perPixel = indentWidth / 30;\n var i = this.getFrozenMode() === 'Right' ? this.frozenRightCount : 0;\n var parentOffset = this.element.offsetWidth;\n var applyWidth = function (index, width) {\n if (ispercentageWidth(_this)) {\n var newWidth = (width / parentOffset * 100).toFixed(1) + '%';\n headerCol[parseInt(index.toString(), 10)].style.width = newWidth;\n contentCol[parseInt(index.toString(), 10)].style.width = newWidth;\n }\n else {\n headerCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n contentCol[parseInt(index.toString(), 10)].style.width = width + 'px';\n }\n _this.notify(columnWidthChanged, { index: index, width: width });\n };\n if (perPixel >= 1) {\n indentWidth = (30 / perPixel);\n }\n if (indentWidth < 1) {\n indentWidth = 1;\n }\n if (this.enableColumnVirtualization || this.isAutoGen || (this.columns.length === this.groupSettings.columns.length)) {\n indentWidth = 30;\n }\n while (i < this.groupSettings.columns.length) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isDetail()) {\n applyWidth(i, indentWidth);\n i++;\n }\n if (this.isRowDragable()) {\n applyWidth(i, indentWidth);\n }\n this.isAutoGen = false;\n this.getHeaderTable().querySelector('.e-emptycell').setAttribute('indentRefreshed', 'true');\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.resetIndentWidth = function () {\n if (ispercentageWidth(this)) {\n this.getHeaderTable().querySelector('.e-emptycell').removeAttribute('indentRefreshed');\n this.widthService.setWidthToColumns();\n this.recalcIndentWidth();\n }\n if ((this.width === 'auto' || typeof (this.width) === 'string' && this.width.indexOf('%') !== -1)\n && this.getColumns().filter(function (col) { return (!col.width || col.width === 'auto') && col.minWidth; }).length > 0) {\n var tgridWidth = this.widthService.getTableWidth(this.getColumns());\n this.widthService.setMinwidthBycalculation(tgridWidth);\n }\n if (this.isFrozenGrid() && this.widthService) {\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.allowTextWrap && this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(refreshHandlers, {});\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns isRowDragable\n */\n Grid.prototype.isRowDragable = function () {\n return this.allowRowDragAndDrop && !this.rowDropSettings.targetID;\n };\n /**\n * Changes the Grid column positions by field names.\n *\n * @param {string} fromFName - Defines the origin field name.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Grid.prototype.reorderColumns = function (fromFName, toFName) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumns(fromFName, toFName);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByIndex multiple times,\n * then you won't get the same results every time.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Grid.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByIndex(fromIndex, toIndex);\n }\n };\n /**\n * Changes the Grid column positions by field index. If you invoke reorderColumnByTargetIndex multiple times,\n * then you will get the same results every time.\n *\n * @param {string} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Grid.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (this.reorderModule) {\n this.reorderModule.reorderColumnByTargetIndex(fieldName, toIndex);\n }\n };\n /**\n * Changes the Grid Row position with given indexes.\n *\n * @param {number} fromIndexes - Defines the origin Indexes.\n * @param {number} toIndex - Defines the destination Index.\n * @returns {void}\n */\n Grid.prototype.reorderRows = function (fromIndexes, toIndex) {\n if (this.rowDragAndDropModule) {\n this.rowDragAndDropModule.reorderRows(fromIndexes, toIndex);\n }\n };\n /**\n * @param {ReturnType} e - Defines the Return type\n * @returns {void}\n * @hidden\n */\n Grid.prototype.refreshDataSource = function (e) {\n this.notify('refreshdataSource', e);\n };\n /**\n * @param {boolean} enable -Defines the enable\n * @returns {void}\n * @hidden\n */\n Grid.prototype.disableRowDD = function (enable) {\n var headerTable = this.getHeaderTable();\n var contentTable = this.getContentTable();\n var headerRows = headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell');\n var rows = this.getRows();\n var disValue = enable ? 'none' : '';\n setStyleAttribute(headerTable.querySelector(colGroup).childNodes[0], { 'display': disValue });\n setStyleAttribute(contentTable.querySelector(colGroup).childNodes[0], { 'display': disValue });\n for (var i = 0; i < this.getRows().length; i++) {\n var ele = rows[parseInt(i.toString(), 10)].firstElementChild;\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n for (var j = 0; j < headerTable.querySelectorAll('th.e-rowdragheader, th.e-mastercell').length; j++) {\n var ele = headerRows[parseInt(j.toString(), 10)];\n if (enable) {\n addClass([ele], 'e-hide');\n }\n else {\n removeClass([ele], ['e-hide']);\n }\n }\n };\n /**\n * Changes the column width to automatically fit its content to ensure that the width shows the content without wrapping/hiding.\n * > * This method ignores the hidden columns.\n * > * Uses the `autoFitColumns` method in the `dataBound` event to resize at initial rendering.\n *\n * @param {string |string[]} fieldNames - Defines the column names.\n * @returns {void}\n *\n *\n * ```typescript\n *
\n * \n * ```\n *\n */\n Grid.prototype.autoFitColumns = function (fieldNames) {\n if (this.resizeModule) {\n this.resizeModule.autoFitColumns(fieldNames);\n }\n };\n /**\n * @param {number} x - Defines the number\n * @param {number} y - Defines the number\n * @param {Element} target - Defines the Element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createColumnchooser = function (x, y, target) {\n if (this.columnChooserModule) {\n this.columnChooserModule.renderColumnChooser(x, y, target);\n }\n };\n Grid.prototype.initializeServices = function () {\n this.serviceLocator.register('widthService', this.widthService = new ColumnWidthService(this));\n this.serviceLocator.register('cellRendererFactory', new CellRendererFactory);\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('localization', this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale));\n this.serviceLocator.register('valueFormatter', this.valueFormatterService = new ValueFormatter(this.locale));\n this.serviceLocator.register('showHideService', this.showHider = new ShowHide(this));\n this.serviceLocator.register('ariaService', this.ariaService = new AriaService());\n this.serviceLocator.register('focus', this.focusModule = new FocusStrategy(this));\n };\n Grid.prototype.processModel = function () {\n var gCols = this.groupSettings.columns;\n var sCols = this.sortSettings.columns;\n var flag;\n var j;\n if (this.allowGrouping) {\n var _loop_1 = function (i, len) {\n j = 0;\n for (var sLen = sCols.length; j < sLen; j++) {\n if (sCols[parseInt(j.toString(), 10)].field === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n break;\n }\n }\n if (!flag) {\n sCols.push({ field: gCols[parseInt(i.toString(), 10)], direction: 'Ascending', isFromGroup: true });\n }\n else {\n if (this_1.allowSorting) {\n this_1.sortedColumns.push(sCols[parseInt(j.toString(), 10)].field);\n }\n else {\n sCols[parseInt(j.toString(), 10)].direction = 'Ascending';\n }\n }\n if (!this_1.groupSettings.showGroupedColumn) {\n var column = this_1.enableColumnVirtualization ?\n this_1.columns.filter(function (c) { return c.field === gCols[parseInt(i.toString(), 10)]; })[0]\n : this_1.getColumnByField(gCols[parseInt(i.toString(), 10)]);\n if (column) {\n column.visible = false;\n }\n else {\n this_1.log('initial_action', { moduleName: 'group', columnName: gCols[parseInt(i.toString(), 10)] });\n }\n }\n };\n var this_1 = this;\n for (var i = 0, len = gCols.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n if (!gCols.length) {\n for (var i = 0; i < sCols.length; i++) {\n this.sortedColumns.push(sCols[parseInt(i.toString(), 10)].field);\n }\n }\n this.rowTemplateFn = templateCompiler(this.rowTemplate);\n this.detailTemplateFn = templateCompiler(this.detailTemplate);\n this.editTemplateFn = templateCompiler(this.editSettings.template);\n this.editHeaderTemplateFn = templateCompiler(this.editSettings.headerTemplate);\n this.editFooterTemplateFn = templateCompiler(this.editSettings.footerTemplate);\n if (!isNullOrUndefined(this.parentDetails)) {\n var value = isNullOrUndefined(this.parentDetails.parentKeyFieldValue) ? 'undefined' :\n this.parentDetails.parentKeyFieldValue;\n this.query.where(this.queryString, 'equal', value, true);\n }\n this.initForeignColumn();\n };\n Grid.prototype.initForeignColumn = function () {\n if (this.isForeignKeyEnabled(this.getColumns())) {\n this.notify(initForeignKeyColumn, this.getForeignKeyColumns());\n }\n };\n Grid.prototype.enableVerticalRendering = function () {\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n else {\n this.element.classList.remove('e-row-responsive');\n }\n };\n Grid.prototype.gridRender = function () {\n this.updateRTL();\n if (this.rowRenderingMode === 'Vertical') {\n this.element.classList.add('e-row-responsive');\n }\n if (this.enableHover) {\n this.element.classList.add('e-gridhover');\n }\n if (Browser.isDevice) {\n this.element.classList.add('e-device');\n }\n if (this.rowHeight) {\n this.element.classList.add('e-grid-min-height');\n }\n if (this.cssClass) {\n this.element.classList.add(this.cssClass);\n }\n // If the below if statement is removed, then drag and drop between grids will not work in firefox browser.\n if (this.allowRowDragAndDrop && this.rowDropSettings.targetID && Browser.info.name === 'mozilla') {\n this.element.classList.add('e-disableuserselect');\n }\n classList(this.element, ['e-responsive', 'e-default'], []);\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.headerModule = rendererFactory.getRenderer(RenderType.Header);\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.printModule = new Print(this, this.scrollModule);\n this.clipboardModule = new Clipboard(this, this.serviceLocator);\n this.renderModule.render();\n this.eventInitializer();\n this.createGridPopUpElement();\n this.widthService.setWidthToColumns();\n this.updateGridLines();\n this.applyTextWrap();\n this.createTooltip(); //for clip mode ellipsis\n this.enableBoxSelection();\n };\n Grid.prototype.dataReady = function () {\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n if (this.height !== 'auto') {\n this.scrollModule.setPadding();\n }\n };\n Grid.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Grid.prototype.createGridPopUpElement = function () {\n var popup = this.createElement('div', { className: 'e-gridpopup', styles: 'display:none;' });\n var content$$1 = this.createElement('div', { className: content, attrs: { tabIndex: '-1' } });\n append([content$$1, this.createElement('div', { className: 'e-uptail e-tail' })], popup);\n content$$1.appendChild(this.createElement('span'));\n append([content$$1, this.createElement('div', { className: 'e-downtail e-tail' })], popup);\n this.element.appendChild(popup);\n };\n Grid.prototype.updateGridLines = function () {\n classList(this.element, [], ['e-verticallines', 'e-horizontallines', 'e-hidelines', 'e-bothlines']);\n switch (this.gridLines) {\n case 'Horizontal':\n this.element.classList.add('e-horizontallines');\n break;\n case 'Vertical':\n this.element.classList.add('e-verticallines');\n break;\n case 'None':\n this.element.classList.add('e-hidelines');\n break;\n case 'Both':\n this.element.classList.add('e-bothlines');\n break;\n }\n this.updateResizeLines();\n };\n Grid.prototype.updateResizeLines = function () {\n if (this.allowResizing &&\n !(this.gridLines === 'Vertical' || this.gridLines === 'Both')) {\n this.element.classList.add('e-resize-lines');\n }\n else {\n this.element.classList.remove('e-resize-lines');\n }\n };\n /**\n * The function is used to apply text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyTextWrap = function () {\n if (this.allowTextWrap) {\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n switch (this.textWrapSettings.wrapMode) {\n case 'Header':\n wrap(this.element, false);\n wrap(this.getContent(), false);\n wrap(headerRows, true);\n break;\n case 'Content':\n wrap(this.getContent(), true);\n wrap(this.element, false);\n wrap(headerRows, false);\n break;\n default:\n wrap(this.element, true);\n wrap(this.getContent(), false);\n wrap(headerRows, false);\n }\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(refreshHandlers, {});\n }\n }\n };\n /**\n * The function is used to remove text wrap\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.removeTextWrap = function () {\n wrap(this.element, false);\n var headerRows = [].slice.call(this.element.getElementsByClassName('e-columnheader'));\n wrap(headerRows, false);\n wrap(this.getContent(), false);\n if (this.textWrapSettings.wrapMode !== 'Content') {\n this.notify(refreshHandlers, {});\n }\n };\n /**\n * The function is used to add Tooltip to the grid cell that has ellipsiswithtooltip clip mode.\n *\n * @returns {void}\n * @hidden\n */\n Grid.prototype.createTooltip = function () {\n this.toolTipObj = new Tooltip({\n opensOn: 'custom',\n content: '',\n cssClass: this.cssClass ? this.cssClass : null\n }, this.element);\n };\n /** @hidden\n * @returns {void}\n */\n Grid.prototype.freezeRefresh = function () {\n this.isFreezeRefresh = true;\n if (this.enableVirtualization || this.enableInfiniteScrolling) {\n this.pageSettings.currentPage = 1;\n }\n this.componentRefresh();\n };\n Grid.prototype.getTooltipStatus = function (element) {\n var headerTable = this.getHeaderTable();\n var headerDivTag = 'e-gridheader';\n var htable = this.createTable(headerTable, headerDivTag, 'header');\n var ctable = this.createTable(headerTable, headerDivTag, 'content');\n var table$$1 = element.classList.contains('e-headercell') ? htable : ctable;\n var ele = element.classList.contains('e-headercell') ? 'th' : 'tr';\n table$$1.querySelector(ele).className = element.className;\n table$$1.querySelector(ele).innerHTML = element.innerHTML;\n var width = table$$1.querySelector(ele).getBoundingClientRect().width;\n document.body.removeChild(htable);\n document.body.removeChild(ctable);\n if (width > element.getBoundingClientRect().width) {\n return true;\n }\n return false;\n };\n Grid.prototype.mouseMoveHandler = function (e) {\n if (this.isEllipsisTooltip()) {\n var element = parentsUntil(e.target, 'e-ellipsistooltip');\n if (this.prevElement !== element || e.type === 'mouseout') {\n this.toolTipObj.close();\n }\n var tagName = e.target.tagName;\n var elemNames = ['A', 'BUTTON', 'INPUT'];\n if (element && e.type !== 'mouseout' && !(Browser.isDevice && elemNames.indexOf(tagName) !== -1)) {\n if (element.getAttribute('aria-describedby')) {\n return;\n }\n if (this.getTooltipStatus(element)) {\n var contentDiv = this.createElement('div');\n if (element.getElementsByClassName('e-headertext').length) {\n contentDiv.innerHTML = element.getElementsByClassName('e-headertext')[0].innerText;\n this.toolTipObj.content = contentDiv;\n }\n else {\n contentDiv.innerHTML = element.innerText;\n this.toolTipObj.content = contentDiv;\n }\n this.prevElement = element;\n var col = this.getColumns()[parseInt(element.getAttribute(dataColIndex), 10)];\n if (col.disableHtmlEncode) {\n this.toolTipObj.enableHtmlParse = false;\n }\n this.toolTipObj['open'](element);\n }\n }\n }\n this.hoverFrozenRows(e);\n };\n /**\n * @param {MouseEvent} e - Defines the mouse event\n * @returns {void}\n * @hidden\n */\n Grid.prototype.hoverFrozenRows = function (e) {\n if (this.isFrozenGrid()) {\n var row$$1 = parentsUntil(e.target, row);\n if ([].slice.call(this.element.getElementsByClassName('e-frozenhover')).length && e.type === 'mouseout') {\n var rows = [].slice.call(this.element.getElementsByClassName('e-frozenhover'));\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n else if (row$$1) {\n var rows = [].slice.call(this.element.querySelectorAll('tr[data-rowindex=\"' + row$$1.getAttribute(dataRowIndex) + '\"]'));\n rows.splice(rows.indexOf(row$$1), 1);\n for (var i = 0; i < rows.length; i++) {\n if (row$$1.getAttribute('aria-selected') !== 'true' && rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.add('e-frozenhover');\n }\n else if (rows[parseInt(i.toString(), 10)]) {\n rows[parseInt(i.toString(), 10)].classList.remove('e-frozenhover');\n }\n }\n }\n }\n };\n Grid.prototype.isEllipsisTooltip = function () {\n var cols = this.getColumns();\n if (this.clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].clipMode === 'EllipsisWithTooltip') {\n return true;\n }\n }\n return false;\n };\n Grid.prototype.scrollHandler = function () {\n if (this.isEllipsisTooltip()) {\n this.toolTipObj.close();\n }\n };\n /**\n * To create table for ellipsiswithtooltip\n *\n * @param {Element} table - Defines the table\n * @param {string} tag - Defines the tag\n * @param {string} type - Defines the type\n * @returns {HTMLDivElement} Returns the HTML div ELement\n * @hidden\n */\n Grid.prototype.createTable = function (table$$1, tag, type) {\n var myTableDiv = this.createElement('div');\n myTableDiv.className = this.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table$$1.className;\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var ele = (type === 'header') ? 'th' : 'td';\n var myTr = this.createElement('tr', { attrs: { role: 'row' } });\n var mytd = this.createElement(ele);\n myTr.appendChild(mytd);\n myTable.appendChild(myTr);\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n return myTableDiv;\n };\n Grid.prototype.onKeyPressed = function (e) {\n if (e.action === 'tab' || e.action === 'shiftTab') {\n this.toolTipObj.close();\n }\n };\n /**\n * Binding events to the element while component creation.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'touchend', this.mouseClickHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n EventHandler.add(this.element, 'dblclick', this.dblClickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.add(window, 'resize', this.resetIndentWidth, this);\n if (this.allowKeyboard) {\n this.element.tabIndex = this.element.tabIndex === -1 ? 0 : this.element.tabIndex;\n }\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n EventHandler.add(this.getContent().firstElementChild, 'scroll', this.scrollHandler, this);\n EventHandler.add(this.element, 'mousemove', this.mouseMoveHandler, this);\n EventHandler.add(this.element, 'mouseout', this.mouseMoveHandler, this);\n EventHandler.add(this.getContent(), 'touchstart', this.tapEvent, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy.\n *\n * @hidden\n * @returns {void}\n */\n Grid.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.mouseClickHandler);\n EventHandler.remove(this.element, 'touchend', this.mouseClickHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'dblclick', this.dblClickHandler);\n EventHandler.remove(this.getContent().firstElementChild, 'scroll', this.scrollHandler);\n EventHandler.remove(this.element, 'mousemove', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'mouseout', this.mouseMoveHandler);\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(this.getContent(), 'touchstart', this.tapEvent);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n EventHandler.remove(window, 'resize', this.resetIndentWidth);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.on(dataReady, this.dataReady, this);\n this.on(contentReady, this.recalcIndentWidth, this);\n this.on(headerRefreshed, this.recalcIndentWidth, this);\n this.dataBoundFunction = this.refreshMediaCol.bind(this);\n this.addEventListener(dataBound, this.dataBoundFunction);\n this.on(keyPressed, this.onKeyPressed, this);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n this.off(dataReady, this.dataReady);\n this.off(contentReady, this.recalcIndentWidth);\n this.off(headerRefreshed, this.recalcIndentWidth);\n this.removeEventListener(dataBound, this.dataBoundFunction);\n this.off(keyPressed, this.onKeyPressed);\n };\n /**\n * Get current visible data of grid.\n *\n * @returns {Object[]} Returns the current view records\n * @isGenericType true\n */\n Grid.prototype.getCurrentViewRecords = function () {\n if (isGroupAdaptive(this)) {\n return isNullOrUndefined(this.currentViewData.records) ?\n this.currentViewData : this.currentViewData.records;\n }\n if (this.groupSettings.enableLazyLoading) {\n return this.currentViewData;\n }\n return (this.allowGrouping && this.groupSettings.columns.length && this.currentViewData.length\n && this.currentViewData.records) ? this.currentViewData.records\n : this.currentViewData;\n };\n Grid.prototype.mouseClickHandler = function (e) {\n if (this.isChildGrid(e) || (parentsUntil(e.target, 'e-gridpopup') && e.touches) ||\n this.element.getElementsByClassName('e-cloneproperties').length || this.checkEdit(e)) {\n return;\n }\n if (((!this.allowRowDragAndDrop && (parentsUntil(e.target, gridContent) ||\n e.target.tagName === 'TD')) || (!(this.allowGrouping || this.allowReordering) &&\n parentsUntil(e.target, 'e-gridheader'))) && e.touches) {\n return;\n }\n if (parentsUntil(e.target, 'e-gridheader') && this.allowRowDragAndDrop &&\n !(parentsUntil(e.target, 'e-filterbarcell')) && (e.target &&\n ['A', 'BUTTON', 'INPUT'].indexOf(e.target.tagName) === -1)) {\n e.preventDefault();\n }\n var args = this.getRowInfo(e.target);\n var cancel = 'cancel';\n args[\"\" + cancel] = false;\n var isDataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n isDataRow = rowObj ? rowObj.isDataRow : false;\n }\n if (isDataRow) {\n this.trigger(recordClick, args);\n }\n this.notify(click, e);\n };\n Grid.prototype.checkEdit = function (e) {\n var tr = parentsUntil(e.target, row);\n var isEdit = this.editSettings.mode !== 'Batch' &&\n this.isEdit && tr && (tr.classList.contains(editedRow) || tr.classList.contains(addedRow));\n return !parentsUntil(e.target, 'e-unboundcelldiv') && (isEdit || (parentsUntil(e.target, rowCell) &&\n parentsUntil(e.target, rowCell).classList.contains('e-editedbatchcell')));\n };\n Grid.prototype.dblClickHandler = function (e) {\n var grid = parentsUntil(e.target, 'e-grid');\n if (isNullOrUndefined(grid) || grid.id !== this.element.id || closest(e.target, '.e-unboundcelldiv')) {\n return;\n }\n var dataRow = false;\n var tr = closest(e.target, 'tr');\n if (tr && tr.getAttribute('data-uid')) {\n var rowObj = this.getRowObjectFromUID(tr.getAttribute('data-uid'));\n dataRow = rowObj ? rowObj.isDataRow : false;\n }\n var args = this.getRowInfo(e.target);\n args.target = e.target;\n if (dataRow) {\n this.trigger(recordDoubleClick, args);\n }\n this.notify(dblclick, e);\n };\n Grid.prototype.focusOutHandler = function (e) {\n if (this.isChildGrid(e)) {\n return;\n }\n if (!parentsUntil(e.target, 'e-grid')) {\n this.element.querySelector('.e-gridpopup').style.display = 'None';\n }\n var filterClear = this.element.querySelector('.e-cancel:not(.e-hide)');\n if (filterClear && !filterClear.parentElement.classList.contains('e-tbar-btn')) {\n filterClear.classList.add('e-hide');\n }\n var relatedTarget = e.relatedTarget;\n var ariaOwns = relatedTarget ? relatedTarget.getAttribute('aria-owns') : null;\n if ((!relatedTarget || (!parentsUntil(relatedTarget, 'e-grid') &&\n (!isNullOrUndefined(ariaOwns) &&\n (ariaOwns)) !== e.target.getAttribute('aria-owns')))\n && !this.keyPress && this.isEdit && !Browser.isDevice) {\n if (this.editSettings.mode === 'Batch' && !((parentsUntil(relatedTarget, 'e-ddl') || parentsUntil(relatedTarget, 'e-ddt')) &&\n parentsUntil(relatedTarget, 'e-input-group')) && !isNullOrUndefined(parentsUntil(relatedTarget, 'e-input-group'))) {\n this.editModule.saveCell();\n this.notify(editNextValCell, {});\n }\n if (this.editSettings.mode === 'Normal') {\n this.editModule.editFormValidate();\n }\n }\n this.keyPress = false;\n };\n Grid.prototype.isChildGrid = function (e) {\n var gridElement = parentsUntil(e.target, 'e-grid');\n if ((gridElement && gridElement.id !== this.element.id) || (parentsUntil(e.target, 'e-unboundcelldiv') &&\n isNullOrUndefined(gridElement))) {\n return true;\n }\n return false;\n };\n /**\n * @param {Object} persistedData - Defines the persisted data\n * @returns {void}\n * @hidden\n */\n Grid.prototype.mergePersistGridData = function (persistedData) {\n var data = this.getLocalData();\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n if (this.enableVirtualization && dataObj.pageSettings) {\n dataObj.pageSettings.currentPage = 1;\n }\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof this[\"\" + key] === 'object') && !isNullOrUndefined(this[\"\" + key])) {\n if (Array.isArray(this[\"\" + key]) && key === 'columns') {\n setColumnIndex(this[\"\" + key]);\n this.mergeColumns(dataObj[\"\" + key], this[\"\" + key]);\n this[\"\" + key] = dataObj[\"\" + key];\n }\n else {\n extend(this[\"\" + key], dataObj[\"\" + key]);\n }\n }\n else {\n this[\"\" + key] = dataObj[\"\" + key];\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n Grid.prototype.mergeColumns = function (storedColumn, columns) {\n var storedColumns = storedColumn;\n var _loop_2 = function (i) {\n var localCol = columns.filter(function (tCol) { return tCol.index === storedColumns[parseInt(i.toString(), 10)].index; })[0];\n if (!isNullOrUndefined(localCol)) {\n if (localCol.columns && localCol.columns.length) {\n this_2.mergeColumns(storedColumns[parseInt(i.toString(), 10)].columns, localCol.columns);\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n else {\n storedColumns[parseInt(i.toString(), 10)] = extend(localCol, storedColumns[parseInt(i.toString(), 10)], {}, true);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_2(i);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns the isDetail\n */\n Grid.prototype.isDetail = function () {\n return !isNullOrUndefined(this.detailTemplate) || !isNullOrUndefined(this.childGrid);\n };\n Grid.prototype.isCommandColumn = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isCommandColumn(col.columns);\n }\n return !!(col.commands || col.commandsTemplate);\n });\n };\n Grid.prototype.isForeignKeyEnabled = function (columns) {\n var _this = this;\n return columns.some(function (col) {\n if (col.columns) {\n return _this.isForeignKeyEnabled(col.columns);\n }\n return !!(col.dataSource && col.foreignKeyValue);\n });\n };\n Grid.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.trigger('keyPressed', presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Grid.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) { //alt j\n if (this.keyA) { //alt A J\n this.notify(groupCollapse, { target: e.target, collapse: false });\n this.keyA = false;\n }\n else {\n if (this.focusModule && this.focusModule.currentInfo && this.focusModule.currentInfo.element) {\n removeClass([this.focusModule.currentInfo.element, this.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.focusModule.currentInfo.element.tabIndex = -1;\n }\n if (!this.element.classList.contains('e-childgrid')) {\n this.element.focus();\n }\n }\n }\n if (e.keyCode === 87) { //alt w\n var focusModule = this.focusModule;\n if (focusModule) {\n if (!this.currentViewData.length) {\n return;\n }\n focusModule.focusContent();\n focusModule.addOutline();\n }\n }\n if (e.keyCode === 65) { //alt A\n this.keyA = true;\n }\n if (e.keyCode === 72 && this.keyA) { //alt A H\n this.notify(groupCollapse, { target: e.target, collapse: true });\n this.keyA = false;\n }\n }\n if (e.keyCode === 13) {\n this.notify(enterKeyHandler, e);\n }\n };\n Grid.prototype.keyActionHandler = function (e) {\n if (this.isChildGrid(e) ||\n (this.isEdit && e.action !== 'escape' && e.action !== 'enter' && e.action !== 'shiftEnter'\n && e.action !== 'tab' && e.action !== 'shiftTab')) {\n return;\n }\n else {\n this.keyPress = true;\n }\n if (this.allowKeyboard) {\n if (e.action === 'ctrlPlusP') {\n e.preventDefault();\n this.print();\n }\n this.notify(keyPressed, e);\n }\n };\n /**\n * @param {Function[]} modules - Defines the modules\n * @returns {void}\n * @hidden\n */\n Grid.prototype.setInjectedModules = function (modules) {\n this.injectedModules = modules;\n };\n Grid.prototype.updateColumnObject = function () {\n prepareColumns(this.columns, this.enableColumnVirtualization, this);\n setColumnIndex(this.columns);\n this.initForeignColumn();\n this.notify(autoCol, {});\n };\n /**\n * Gets the foreign columns from Grid.\n *\n * @returns {Column[]} Returns Foreign key column\n */\n Grid.prototype.getForeignKeyColumns = function () {\n return this.getColumns().filter(function (col) {\n return col.isForeignColumn();\n });\n };\n /**\n * @hidden\n * @returns {number} Returns row height\n */\n Grid.prototype.getRowHeight = function () {\n return this.rowHeight ? this.rowHeight : getRowHeight(this.element);\n };\n /**\n * Refreshes the Grid column changes.\n *\n * @returns {void}\n */\n Grid.prototype.refreshColumns = function () {\n this.setFrozenCount();\n var fCnt = this.getContent().querySelector('.e-frozen-left-content');\n var frCnt = this.getContent().querySelector('.e-frozen-right-content');\n var isColFrozen = !this.frozenRightCount && !this.frozenLeftCount;\n var isFrozen = this.getFrozenColumns() !== 0;\n if (!isFrozen && ((!fCnt && this.frozenLeftCount) || (!frCnt && this.frozenRightCount) || (fCnt && !this.frozenLeftCount)\n || (frCnt && !this.frozenRightCount))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else if (isColFrozen && ((this.getFrozenColumns() === 1 && !fCnt) || (this.getFrozenColumns() === 0 && fCnt))) {\n this.tableIndex = 0;\n this.tablesCount = 1;\n if (this.enableColumnVirtualization) {\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n }\n this.freezeRefresh();\n }\n else {\n this.isPreventScrollEvent = true;\n this.updateColumnObject();\n this.checkLockColumns(this.getColumns());\n this.refresh();\n if (this.isFrozenGrid()) {\n var mTbl = this.contentModule.getMovableContent().querySelector('.' + table);\n remove(mTbl.querySelector(colGroup));\n var colGroup$$1 = ((this.getHeaderContent()\n .querySelector('.' + movableHeader).querySelector(colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup$$1, mTbl.querySelector(tbody));\n if (this.getFrozenMode() === 'Left-Right') {\n var frTbl = this.contentModule.getFrozenRightContent().querySelector('.' + table);\n remove(frTbl.querySelector(colGroup));\n var colGrp = ((this.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(colGroup)).cloneNode(true));\n frTbl.insertBefore(colGrp, frTbl.querySelector(tbody));\n }\n }\n }\n if (this.isFrozenGrid()) {\n var left = this.getContent().querySelector('.e-movablescrollbar').scrollLeft;\n this.headerModule.getMovableHeader().scrollLeft = left;\n this.contentModule.getMovableContent().scrollLeft = left;\n }\n };\n /**\n * Export Grid data to Excel file(.xlsx).\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns the excelexport\n */\n Grid.prototype.excelExport = function (excelExportProperties, isMultipleExport, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, false, isBlob) : null;\n };\n /**\n * Export Grid data to CSV file.\n *\n * @param {ExcelExportProperties} excelExportProperties - Defines the export properties of the Grid.\n * @param {boolean} isMultipleExport - Define to enable multiple export.\n * @param {Workbook} workbook - Defines the Workbook if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns csv export\n */\n Grid.prototype.csvExport = function (excelExportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, isBlob) {\n return this.excelExportModule ?\n this.excelExportModule.Map(this, excelExportProperties, isMultipleExport, workbook, true, isBlob) : null;\n };\n /**\n * Export Grid data to PDF document.\n *\n * @param {pdfExportProperties} pdfExportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Define to enable multiple export.\n * @param {pdfDoc} pdfDoc - Defined the Pdf Document if multiple export is enabled.\n * @param {boolean} isBlob - If 'isBlob' set to true, then it will be returned as blob data.\n * @returns {Promise} Returns pdfexport\n */\n Grid.prototype.pdfExport = function (pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n return this.pdfExportModule ? this.pdfExportModule.Map(this, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) : null;\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Grid.prototype.groupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.groupColumn(columnName);\n }\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupExpandAll = function () {\n if (this.groupModule) {\n this.groupModule.expandAll();\n }\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.groupCollapseAll = function () {\n if (this.groupModule) {\n this.groupModule.collapseAll();\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n // public expandCollapseRows(target: Element): void {\n // if (this.groupModule) {\n // this.groupModule.expandCollapseRows(target);\n // }\n // }\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.clearGrouping = function () {\n if (this.groupModule) {\n this.groupModule.clearGrouping();\n }\n };\n /**\n * Ungroups a column by column name.\n *\n * {% codeBlock src='grid/ungroupColumn/index.md' %}{% endcodeBlock %}\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * @returns {void}\n */\n Grid.prototype.ungroupColumn = function (columnName) {\n if (this.groupModule) {\n this.groupModule.ungroupColumn(columnName);\n }\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} x - Defines the X axis.\n * @param {number} y - Defines the Y axis.\n * @returns {void}\n */\n Grid.prototype.openColumnChooser = function (x, y) {\n if (this.columnChooserModule) {\n this.columnChooserModule.openColumnChooser(x, y);\n }\n };\n Grid.prototype.scrollRefresh = function () {\n var _this = this;\n var refresh = function () {\n _this.scrollModule.refresh();\n _this.off(contentReady, refresh);\n };\n this.on(contentReady, refresh, this);\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n // public detailCollapse(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.collapse(target);\n // }\n // }\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailCollapseAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.collapseAll();\n }\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n // public detailExpand(target: number | Element): void {\n // if (this.detailRowModule) {\n // this.detailRowModule.expand(target);\n // }\n // }\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n Grid.prototype.detailExpandAll = function () {\n if (this.detailRowModule) {\n this.detailRowModule.expandAll();\n }\n };\n /**\n * Deselects the currently selected cells.\n *\n * @returns {void}\n */\n Grid.prototype.clearCellSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearCellSelection();\n }\n };\n /**\n * Deselects the currently selected rows.\n *\n * @returns {void}\n */\n Grid.prototype.clearRowSelection = function () {\n if (this.selectionModule) {\n this.selectionModule.clearRowSelection();\n }\n };\n /**\n * Selects a collection of cells by row and column indexes.\n *\n * @param {ISelectedCell[]} rowCellIndexes - Specifies the row and column indexes.\n * @returns {void}\n */\n Grid.prototype.selectCells = function (rowCellIndexes) {\n if (this.selectionModule) {\n this.selectionModule.selectCells(rowCellIndexes);\n }\n };\n /**\n * Selects a range of rows from start and end row indexes.\n *\n * @param {number} startIndex - Specifies the start row index.\n * @param {number} endIndex - Specifies the end row index.\n * @returns {void}\n */\n Grid.prototype.selectRowsByRange = function (startIndex, endIndex) {\n if (this.selectionModule) {\n this.selectionModule.selectRowsByRange(startIndex, endIndex);\n }\n };\n /**\n * @hidden\n * @returns {boolean} Returns whether context menu is open or not\n */\n Grid.prototype.isContextMenuOpen = function () {\n return this.contextMenuModule && this.contextMenuModule.isOpen;\n };\n /**\n * @param {Function} module - Defines the module\n * @returns {boolean} return the injected modules\n * @hidden\n */\n Grid.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - specifies the index\n */\n // eslint-disable-next-line\n Grid.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * @param {string | string[]} type - Defines the type\n * @param {Object} args - Defines the arguments\n * @returns {void}\n * @hidden\n * @private\n */\n Grid.prototype.log = function (type, args) {\n // eslint-disable-next-line\n this.loggerModule ? this.loggerModule.log(type, args) : (function () { return 0; })();\n };\n /**\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\n Grid.prototype.applyBiggerTheme = function (element) {\n if (this.element.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n };\n /**\n * @hidden\n * @returns {Object} Returns the previous row data\n */\n Grid.prototype.getPreviousRowData = function () {\n var previousRowData = this.getRowsObject()[this.getRows().length - 1].data;\n return previousRowData;\n };\n /**\n * Hides the scrollbar placeholder of Grid content when grid content is not overflown.\n *\n * @returns {void}\n */\n Grid.prototype.hideScroll = function () {\n var content$$1 = this.getContent().querySelector('.' + content);\n var scrollBar = this.getContent().querySelector('.e-scrollbar');\n if (content$$1.scrollHeight <= content$$1.clientHeight) {\n this.scrollModule.removePadding();\n content$$1.style.overflowY = 'auto';\n }\n if (this.isFrozenGrid() && scrollBar) {\n var mvblScrollBar = this.getContent().querySelector('.e-movablescrollbar');\n var mvblChild = this.getContent().querySelector('.e-movablechild');\n scrollBar.style.display = 'flex';\n if (mvblScrollBar.offsetWidth >= mvblChild.offsetWidth) {\n scrollBar.style.display = 'none';\n this.notify(frozenHeight, 0);\n }\n }\n };\n /**\n * Get row index by primary key or row data.\n *\n * @param {string | Object} value - Defines the primary key value.\n * @returns {number} Returns the index\n */\n Grid.prototype.getRowIndexByPrimaryKey = function (value) {\n var pkName = this.getPrimaryKeyFieldNames()[0];\n value = typeof value === 'object' ? value[\"\" + pkName] : value;\n var rows = this.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDetailRow || rows[parseInt(i.toString(), 10)].isCaptionRow) {\n continue;\n }\n var pKvalue = rows[parseInt(i.toString(), 10)].data[\"\" + pkName];\n if (pkName.split('.').length > 1) {\n pKvalue = performComplexDataOperation(pkName, rows[parseInt(i.toString(), 10)].data);\n }\n if (pKvalue === value) {\n return rows[parseInt(i.toString(), 10)].index;\n }\n }\n return -1;\n };\n /**\n * @param {string} field - Defines the field name\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByFieldFromAllCols = function (field) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (field === gCols[parseInt(i.toString(), 10)].field || (gCols[parseInt(i.toString(), 10)].isForeignColumn() &&\n field === gCols[parseInt(i.toString(), 10)].foreignKeyValue)) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * @param {string} uid - Defines the uid\n * @returns {Column} returns the column\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n Grid.prototype.grabColumnByUidFromAllCols = function (uid) {\n var column;\n this.columnModel = [];\n this.updateColumnModel(this.columns);\n var gCols = this.columnModel;\n for (var i = 0; i < gCols.length; i++) {\n if (uid === gCols[parseInt(i.toString(), 10)].uid) {\n column = gCols[parseInt(i.toString(), 10)];\n }\n }\n return column;\n };\n /**\n * Get all filtered records from the Grid and it returns array of objects for the local dataSource, returns a promise object if the Grid has remote data.\n *\n * @returns {Object[] | Promise} Returns the filtered records\n */\n Grid.prototype.getFilteredRecords = function () {\n if (this.allowFiltering && this.filterSettings.columns.length) {\n var query = this.renderModule.data.generateQuery(true);\n if (this.dataSource && this.renderModule.data.isRemote() && this.dataSource instanceof DataManager) {\n return this.renderModule.data.getData(this.dataSource, query);\n }\n else {\n if (this.dataSource instanceof DataManager) {\n return this.dataSource.executeLocal(query);\n }\n else {\n return new DataManager(this.dataSource, query).executeLocal(query);\n }\n }\n }\n return [];\n };\n Grid.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n /**\n * @param {TouchEventArgs} e - Defines the TouchEventArgs\n * @returns {void}\n * @hidden\n */\n // Need to have all columns while filtering with ColumnVirtualization.\n // eslint-disable-next-line\n Grid.prototype.tapEvent = function (e) {\n if (this.getUserAgent()) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.dblClickHandler(e);\n this.notify(doubleTap, e);\n }\n }\n };\n /**\n * @param {string} prefix - specifies the prefix\n * @returns {string} returns the row uid\n * @hidden\n */\n Grid.prototype.getRowUid = function (prefix) {\n return \"\" + prefix + this.rowUid++;\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualContent = function () {\n return this.getContent().querySelector('.' + movableContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualContent = function () {\n return this.getContent().querySelector('.' + frozenContent);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getMovableVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + movableHeader);\n };\n /**\n * @hidden\n * @returns {Element} returns the element\n */\n Grid.prototype.getFrozenVirtualHeader = function () {\n return this.getHeaderContent().querySelector('.' + frozenHeader);\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {Element} returns the element\n * @hidden\n */\n Grid.prototype.getRowElementByUID = function (uid) {\n var rowEle;\n var rows = [];\n if (this.isFrozenGrid()) {\n var fRows = [].slice.call(this.getFrozenVirtualContent().querySelector(tbody).children);\n var mRows = [].slice.call(this.getMovableVirtualContent().querySelector(tbody).children);\n var frozenRigtRows = [];\n if (this.tablesCount === 3) {\n frozenRigtRows = [].slice.call(this.getContent().querySelector('.e-frozen-right-content').querySelector(tbody).children);\n }\n if (this.frozenRows) {\n rows = [].slice.call(this.getFrozenVirtualHeader().querySelector(tbody).children);\n rows = rows.concat([].slice.call(this.getMovableVirtualHeader().querySelector(tbody).children));\n if (this.tablesCount === 3) {\n var frHdr = this.getHeaderContent().querySelector('.e-frozen-right-header');\n rows = rows.concat([].slice.call(frHdr.querySelector(tbody).children)).concat(frozenRigtRows);\n }\n rows = rows.concat(fRows).concat(mRows);\n }\n else {\n rows = fRows.concat(mRows).concat(frozenRigtRows);\n }\n }\n else {\n var cntRows = [].slice.call(this.getContent().querySelector(tbody).children);\n if (this.frozenRows) {\n rows = [].slice.call(this.getHeaderContent().querySelector(tbody).children);\n rows = rows.concat(cntRows);\n }\n else {\n rows = cntRows;\n }\n }\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row$$1 = rows_2[_i];\n if (row$$1.getAttribute('data-uid') === uid) {\n rowEle = row$$1;\n break;\n }\n }\n return rowEle;\n };\n /**\n * Gets the hidden columns from the Grid.\n *\n * @returns {Column[]} Returns the Column\n */\n Grid.prototype.getHiddenColumns = function () {\n var cols = [];\n for (var _i = 0, _a = this.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible === false) {\n cols.push(col);\n }\n }\n return cols;\n };\n /**\n * calculatePageSizeByParentHeight\n *\n * @param {number | string } containerHeight - specifies the container height\n * @returns {number} returns the page size\n */\n Grid.prototype.calculatePageSizeByParentHeight = function (containerHeight) {\n if (this.allowPaging) {\n if ((this.allowTextWrap && this.textWrapSettings.wrapMode === 'Header') || (!this.allowTextWrap)) {\n var pagesize = 0;\n if (containerHeight.indexOf('%') !== -1) {\n containerHeight = parseInt(containerHeight, 10) / 100 * this.element.clientHeight;\n }\n var nonContentHeight = this.getNoncontentHeight() + this.getRowHeight();\n if (containerHeight > nonContentHeight) {\n var contentHeight = 0;\n contentHeight = containerHeight - this.getNoncontentHeight();\n pagesize = (contentHeight / this.getRowHeight());\n }\n if (pagesize > 0) {\n return Math.floor(pagesize);\n }\n }\n }\n return 0;\n };\n Grid.prototype.getNoncontentHeight = function () {\n var height = 0;\n if (!isNullOrUndefined(this.getHeaderContent().clientHeight)) {\n height += this.getHeaderContent().clientHeight;\n }\n if (this.toolbar && !isNullOrUndefined(this.element.querySelector('.e-toolbar').clientHeight)) {\n height += this.element.querySelector('.e-toolbar').clientHeight;\n }\n if (this.allowPaging && !isNullOrUndefined(this.element.querySelector('.e-gridpager').clientHeight)) {\n height += this.element.querySelector('.e-gridpager').clientHeight;\n }\n if (this.showColumnChooser && !isNullOrUndefined(this.element.querySelector('.e-columnheader').clientHeight)) {\n height += this.element.querySelector('.e-columnheader').clientHeight;\n }\n if (this.allowGrouping && this.groupSettings.showDropArea && !isNullOrUndefined(this.element.querySelector('.e-groupdroparea').clientHeight)) {\n height += this.element.querySelector('.e-groupdroparea').clientHeight;\n }\n if (this.aggregates.length > 0 && !isNullOrUndefined(this.element.querySelector('.e-summaryrow').clientHeight)) {\n for (var i = 0; i < this.element.getElementsByClassName('e-summaryrow').length; i++) {\n height += this.element.getElementsByClassName('e-summaryrow')[parseInt(i.toString(), 10)].clientHeight;\n }\n }\n return height;\n };\n /**\n *To perform aggregate operation on a column.\n *\n * @param {AggregateColumnModel} summaryCol - Pass Aggregate Column details.\n * @param {Object} summaryData - Pass JSON Array for which its field values to be calculated.\n * @returns {number} returns the summary values\n */\n Grid.prototype.getSummaryValues = function (summaryCol, summaryData) {\n return DataUtil.aggregates[summaryCol.type.toLowerCase()](summaryData, summaryCol.field);\n };\n /**\n * Sends a Post request to export Grid to Excel file in server side.\n *\n * @param {string} url - Pass Url for server side excel export action.\n * @returns {void}\n */\n Grid.prototype.serverExcelExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to Pdf file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n * @returns {void}\n */\n Grid.prototype.serverPdfExport = function (url) {\n this.isExcel = false;\n this.exportGrid(url);\n };\n /**\n * Sends a Post request to export Grid to CSV file in server side.\n *\n * @param {string} url - Pass Url for server side pdf export action.\n * @returns {void}\n */\n Grid.prototype.serverCsvExport = function (url) {\n this.isExcel = true;\n this.exportGrid(url);\n };\n /**\n * @param {string} url - Defines exporting url\n * @returns {void}\n * @hidden\n */\n Grid.prototype.exportGrid = function (url) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var grid = this;\n var query = grid.getDataModule().generateQuery(true);\n var state = new UrlAdaptor().processQuery(new DataManager({ url: '' }), query);\n var queries = JSON.parse(state.data);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var gridModel = JSON.parse(this.addOnPersist(['allowGrouping', 'allowPaging', 'pageSettings', 'sortSettings', 'allowPdfExport', 'allowExcelExport', 'aggregates',\n 'filterSettings', 'groupSettings', 'columns', 'locale', 'searchSettings']));\n var include = ['field', 'headerText', 'type', 'format', 'visible', 'foreignKeyValue', 'foreignKeyField',\n 'template', 'index', 'width', 'textAlign', 'headerTextAlign', 'columns'];\n gridModel.filterSettings.columns = queries.where;\n gridModel.searchSettings.fields = queries.search && queries.search[0]['fields'] || [];\n gridModel.sortSettings.columns = queries.sorted;\n gridModel.columns = this.setHeaderText(gridModel.columns, include);\n var form = this.createElement('form', { id: 'ExportForm', styles: 'display:none;' });\n var gridInput = this.createElement('input', { id: 'gridInput', attrs: { name: 'gridModel' } });\n gridInput.value = JSON.stringify(gridModel);\n form.method = 'POST';\n form.action = url;\n form.appendChild(gridInput);\n document.body.appendChild(form);\n form.submit();\n form.remove();\n };\n /**\n * @param {Column[]} columns - Defines array of columns\n * @param {string[]} include - Defines array of sting\n * @returns {Column[]} returns array of columns\n * @hidden\n */\n Grid.prototype.setHeaderText = function (columns, include) {\n for (var i = 0; i < columns.length; i++) {\n var column = this.getColumnByUid(columns[parseInt(i.toString(), 10)].uid);\n columns[parseInt(i.toString(), 10)].headerText = column.headerText;\n if (!isNullOrUndefined(column.template)) {\n columns[parseInt(i.toString(), 10)].template = 'true';\n }\n if (columns[parseInt(i.toString(), 10)].format) {\n columns[parseInt(i.toString(), 10)].format = getNumberFormat(this.getFormat(columns[parseInt(i.toString(), 10)].format), columns[parseInt(i.toString(), 10)].type, this.isExcel, this.currencyCode);\n }\n if (columns[parseInt(i.toString(), 10)].columns) {\n this.setHeaderText(columns[parseInt(i.toString(), 10)].columns, include);\n }\n var keys = Object.keys(columns[parseInt(i.toString(), 10)]);\n for (var j = 0; j < keys.length; j++) {\n if (include.indexOf(keys[parseInt(j.toString(), 10)]) < 0) {\n delete columns[parseInt(i.toString(), 10)][keys[parseInt(j.toString(), 10)]];\n }\n }\n }\n return columns;\n };\n Grid.prototype.getFormat = function (format) {\n return typeof (format) === 'object' ? !isNullOrUndefined(format.format) ?\n format.format : format.skeleton : format;\n };\n /**\n * @hidden\n * @returns {boolean} returns the isCollapseStateEnabled\n */\n Grid.prototype.isCollapseStateEnabled = function () {\n var isExpanded = 'isExpanded';\n return this[\"\" + isExpanded] === false;\n };\n /**\n * @param {number} key - Defines the primary key value.\n * @param {Object} rowData - Defines the rowData\n * @returns {void}\n */\n Grid.prototype.updateRowValue = function (key, rowData) {\n var args = {\n requestType: 'save', data: rowData\n };\n this.showSpinner();\n this.notify(updateData, args);\n this.refresh();\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.setForeignKeyData = function () {\n this.dataBind();\n var colpending = this.getDataModule().getForeignKeyDataState();\n if (colpending.isPending) {\n this.getDataModule().setForeignKeyDataState({});\n colpending.resolver();\n }\n else {\n this.getDataModule().setForeignKeyDataState({ isDataChanged: false });\n if (this.contentModule || this.headerModule) {\n this.renderModule.render();\n }\n }\n };\n /**\n * @param {string} field - specifies the field\n * @returns {void}\n * @hidden\n */\n Grid.prototype.resetFilterDlgPosition = function (field) {\n var header = this.getColumnHeaderByField(field);\n if (header) {\n var target = header.querySelector('.e-filtermenudiv');\n var filterDlg = this.element.querySelector('.e-filter-popup');\n if (target && filterDlg) {\n var gClient = this.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n if (filterDlg) {\n if ((filterDlg.offsetWidth + fClient.right) > gClient.right) {\n filterDlg.style.left = ((fClient.right - filterDlg.offsetWidth) - gClient.left).toString() + 'px';\n }\n else {\n filterDlg.style.left = (fClient.right - gClient.left).toString() + 'px';\n }\n }\n }\n }\n };\n /**\n * @param {any} callBack - specifies the callBack method\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line\n Grid.prototype.renderTemplates = function (callBack) {\n var isReactChild = this.parentDetails && this.parentDetails.parentInstObj && this.parentDetails.parentInstObj.isReact;\n if (isReactChild && this['portals']) {\n this.parentDetails.parentInstObj['portals'] = this.parentDetails.parentInstObj['portals']\n .concat(this['portals']);\n this.parentDetails.parentInstObj.renderTemplates(callBack);\n this['portals'] = undefined;\n }\n else {\n var portals = 'portals';\n this.notify('reactTemplateRender', this[\"\" + portals]);\n this.renderReactTemplates(callBack);\n }\n };\n /**\n * Apply the changes to the Grid without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchUpdate = function (changes) {\n this.processRowChanges(changes);\n };\n /**\n * Apply the changes to the Grid in one batch after 50ms without refreshing the rows.\n *\n * @param {BatchChanges} changes - Defines changes to be updated.\n * @returns {void}\n */\n Grid.prototype.batchAsyncUpdate = function (changes) {\n this.processBulkRowChanges(changes);\n };\n Grid.prototype.processBulkRowChanges = function (changes) {\n var _this = this;\n if (!this.dataToBeUpdated) {\n this.dataToBeUpdated = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n setTimeout(function () {\n _this.processRowChanges(_this.dataToBeUpdated);\n _this.dataToBeUpdated = null;\n }, this.asyncTimeOut);\n }\n else {\n var loopstring = [addedRecords, changedRecords, deletedRecords];\n var keyField = this.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < loopstring.length; i++) {\n if (changes[loopstring[parseInt(i.toString(), 10)]]) {\n compareChanges(this, changes, loopstring[parseInt(i.toString(), 10)], keyField);\n }\n }\n }\n };\n Grid.prototype.processRowChanges = function (changes) {\n var _this = this;\n var keyField = this.getPrimaryKeyFieldNames()[0];\n changes = Object.assign({ addedRecords: [], changedRecords: [], deletedRecords: [] }, changes);\n var promise = this.getDataModule().saveChanges(changes, keyField, {}, this.getDataModule().generateQuery().requiresCount());\n if (this.getDataModule().isRemote()) {\n promise.then(function () {\n _this.setNewData();\n });\n }\n else {\n this.setNewData();\n }\n };\n Grid.prototype.setNewData = function () {\n var _this = this;\n var oldValues = JSON.parse(JSON.stringify(this.getCurrentViewRecords()));\n var getData = this.getDataModule().getData({}, this.getDataModule().generateQuery().requiresCount());\n getData.then(function (e) {\n _this.bulkRefresh(e.result, oldValues, e.count);\n });\n };\n Grid.prototype.deleteRowElement = function (row$$1) {\n var tr = this.getRowElementByUID(row$$1.uid);\n var index = parseInt(tr.getAttribute(dataRowIndex), 10);\n remove(tr);\n if (this.getFrozenColumns()) {\n var mtr = this.getMovableRows()[parseInt(index.toString(), 10)];\n remove(mtr);\n }\n };\n Grid.prototype.bulkRefresh = function (result, oldValues, count) {\n var _this = this;\n var rowObj = this.getRowsObject();\n var keyField = this.getPrimaryKeyFieldNames()[0];\n var _loop_3 = function (i) {\n if (!result.filter(function (e) { return e[\"\" + keyField] === rowObj[parseInt(i.toString(), 10)].data[\"\" + keyField]; }).length) {\n this_3.deleteRowElement(rowObj[parseInt(i.toString(), 10)]);\n rowObj.splice(i, 1);\n i--;\n }\n out_i_1 = i;\n };\n var this_3 = this, out_i_1;\n for (var i = 0; i < rowObj.length; i++) {\n _loop_3(i);\n i = out_i_1;\n }\n var _loop_4 = function (i) {\n var isRowExist;\n oldValues.filter(function (e) {\n if (e[\"\" + keyField] === result[parseInt(i.toString(), 10)][\"\" + keyField]) {\n if (e !== result[parseInt(i.toString(), 10)]) {\n _this.setRowData(result[parseInt(i.toString(), 10)][\"\" + keyField], result[parseInt(i.toString(), 10)]);\n }\n isRowExist = true;\n }\n });\n if (!isRowExist) {\n this_4.renderRowElement(result[parseInt(i.toString(), 10)], i);\n }\n };\n var this_4 = this;\n for (var i = 0; i < result.length; i++) {\n _loop_4(i);\n }\n this.currentViewData = result;\n var rows = [].slice.call(this.getContentTable().getElementsByClassName(row));\n resetRowIndex(this, this.getRowsObject(), rows);\n setRowElements(this);\n if (this.allowPaging) {\n this.notify(inBoundModelChanged, { module: 'pager', properties: { totalRecordsCount: count } });\n }\n };\n Grid.prototype.renderRowElement = function (data, index) {\n var row$$1 = new RowRenderer(this.serviceLocator, null, this);\n var model = new RowModelGenerator(this);\n var modelData = model.generateRows([data]);\n var tr = row$$1.render(modelData[0], this.getColumns());\n var mTr;\n var mTbody;\n this.addRowObject(modelData[0], index);\n var tbody$$1 = this.getContentTable().querySelector(tbody);\n if (tbody$$1.querySelector('.e-emptyrow')) {\n var emptyRow = tbody$$1.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (this.getFrozenColumns()) {\n var moveTbody = this.getContent().querySelector('.' + movableContent).querySelector(tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n }\n }\n if (this.getFrozenColumns()) {\n mTr = renderMovable(tr, this.getFrozenColumns(), this);\n if (this.frozenRows && index < this.frozenRows) {\n mTbody = this.getHeaderContent().querySelector('.' + movableHeader).querySelector(tbody);\n }\n else {\n mTbody = this.getContent().querySelector('.' + movableContent).querySelector(tbody);\n }\n mTbody.appendChild(mTr);\n if (this.height === 'auto') {\n this.notify(frozenHeight, {});\n }\n }\n if (this.frozenRows && index < this.frozenRows) {\n tbody$$1 = this.getHeaderContent().querySelector(tbody);\n }\n else {\n tbody$$1 = this.getContent().querySelector(tbody);\n }\n tbody$$1 = this.getContent().querySelector(tbody);\n tbody$$1.appendChild(tr);\n };\n Grid.prototype.addRowObject = function (row$$1, index) {\n var frzCols = this.getFrozenColumns();\n if (frzCols) {\n var mRows = this.getMovableRowsObject();\n var mRow = row$$1.clone();\n mRow.cells = mRow.cells.slice(frzCols);\n row$$1.cells = row$$1.cells.slice(0, frzCols);\n mRows.splice(index, 1, mRow);\n }\n this.getRowsObject().splice(index, 1, row$$1);\n };\n /**\n * @hidden\n * @returns {void}\n */\n Grid.prototype.updateVisibleExpandCollapseRows = function () {\n var rows = this.getRowsObject();\n for (var i = 0, len = rows.length; i < len; i++) {\n if ((rows[parseInt(i.toString(), 10)].isDataRow || rows[parseInt(i.toString(), 10)].isAggregateRow)\n && this.getRowElementByUID(rows[parseInt(i.toString(), 10)].uid).style.display === 'none') {\n rows[parseInt(i.toString(), 10)].visible = false;\n }\n else {\n rows[parseInt(i.toString(), 10)].visible = true;\n }\n }\n };\n /**\n * @param {string | number} height - specifies the height\n * @returns {number | string} - specifies the height number\n * @hidden\n */\n Grid.prototype.getHeight = function (height) {\n if (!Number.isInteger(height) && height.indexOf('%') !== -1) {\n height = parseInt(height, 10) / 100 * this.element.clientHeight;\n }\n else if (!Number.isInteger(height) && this.height !== 'auto') {\n height = parseInt(height, 10);\n }\n else {\n height = this.height;\n }\n return height;\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right content\n */\n Grid.prototype.getFrozenRightContent = function () {\n return this.getContent().querySelector('.e-frozen-right-content');\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header\n */\n Grid.prototype.getFrozenRightHeader = function () {\n return this.getHeaderContent().querySelector('.e-frozen-right-header');\n };\n /**\n * @hidden\n * @returns {Element} - returns movable header tbody\n */\n Grid.prototype.getMovableHeaderTbody = function () {\n return this.getMovableVirtualHeader().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns movable content tbody\n */\n Grid.prototype.getMovableContentTbody = function () {\n return this.getMovableVirtualContent().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen header tbody\n */\n Grid.prototype.getFrozenHeaderTbody = function () {\n return this.getFrozenVirtualHeader().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen left content tbody\n */\n Grid.prototype.getFrozenLeftContentTbody = function () {\n return this.getFrozenVirtualContent().querySelector(tbody);\n };\n /**\n * @hidden\n * @returns {Element} - returns frozen right header tbody\n */\n Grid.prototype.getFrozenRightHeaderTbody = function () {\n return this.getFrozenRightHeader().querySelector(tbody);\n };\n /**\n * @returns {Element} returns frozen right content tbody\n * @hidden\n */\n Grid.prototype.getFrozenRightContentTbody = function () {\n var cnt = this.getFrozenRightContent();\n var tbody$$1;\n if (cnt) {\n tbody$$1 = this.getFrozenRightContent().querySelector(tbody);\n }\n return tbody$$1;\n };\n /**\n * @param {boolean} isCustom - Defines custom filter dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomFilter = function (isCustom) {\n if (this.filterModule) {\n this.filterModule.showCustomFilter(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * @param {boolean} isCustom - Defines custom sort dialog open\n * @returns {void}\n * @hidden\n */\n Grid.prototype.showResponsiveCustomSort = function (isCustom) {\n if (this.sortModule) {\n this.sortModule.showCustomSort(isCustom || this.rowRenderingMode === 'Vertical');\n }\n };\n /**\n * To manually show the vertical row mode filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveFilterDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomFilter(true);\n }\n };\n /**\n * To manually show the vertical row sort filter dialog\n *\n * @returns {void}\n */\n Grid.prototype.showAdaptiveSortDialog = function () {\n if (this.enableAdaptiveUI) {\n this.showResponsiveCustomSort(true);\n }\n };\n /**\n * @param {boolean} isColVirtualization - Defines column virtualization\n * @returns {Column[]} returns array of column models\n * @hidden\n */\n Grid.prototype.getCurrentVisibleColumns = function (isColVirtualization) {\n var cols = [];\n var gridCols = isColVirtualization ? this.getColumns() : this.columnModel;\n for (var _i = 0, gridCols_1 = gridCols; _i < gridCols_1.length; _i++) {\n var col = gridCols_1[_i];\n if (col.visible) {\n cols.push(col);\n }\n }\n return cols;\n };\n Grid.prototype.enableInfiniteAggrgate = function () {\n if (this.enableInfiniteScrolling && this.groupSettings.columns.length && !this.groupSettings.disablePageWiseAggregates\n && !this.groupSettings.enableLazyLoading) {\n this.setProperties({ groupSettings: { disablePageWiseAggregates: true } }, true);\n }\n };\n var Grid_1;\n __decorate$1([\n Property()\n ], Grid.prototype, \"parentDetails\", void 0);\n __decorate$1([\n Property([])\n ], Grid.prototype, \"columns\", void 0);\n __decorate$1([\n Property(true)\n ], Grid.prototype, \"enableAltRow\", void 0);\n __decorate$1([\n Property(true)\n ], Grid.prototype, \"enableHover\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableAutoFill\", void 0);\n __decorate$1([\n Property(true)\n ], Grid.prototype, \"allowKeyboard\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableStickyHeader\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowTextWrap\", void 0);\n __decorate$1([\n Complex({}, TextWrapSettings)\n ], Grid.prototype, \"textWrapSettings\", void 0);\n __decorate$1([\n Complex({}, ResizeSettings)\n ], Grid.prototype, \"resizeSettings\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowPaging\", void 0);\n __decorate$1([\n Complex({}, PageSettings)\n ], Grid.prototype, \"pageSettings\", void 0);\n __decorate$1([\n Complex({}, LoadingIndicator)\n ], Grid.prototype, \"loadingIndicator\", void 0);\n __decorate$1([\n Property(true)\n ], Grid.prototype, \"enableVirtualMaskRow\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableVirtualization\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableColumnVirtualization\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableInfiniteScrolling\", void 0);\n __decorate$1([\n Complex({}, SearchSettings)\n ], Grid.prototype, \"searchSettings\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowSorting\", void 0);\n __decorate$1([\n Property('Ellipsis')\n ], Grid.prototype, \"clipMode\", void 0);\n __decorate$1([\n Property(true)\n ], Grid.prototype, \"allowMultiSorting\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowExcelExport\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowPdfExport\", void 0);\n __decorate$1([\n Complex({}, SortSettings)\n ], Grid.prototype, \"sortSettings\", void 0);\n __decorate$1([\n Complex({}, InfiniteScrollSettings)\n ], Grid.prototype, \"infiniteScrollSettings\", void 0);\n __decorate$1([\n Property(true)\n ], Grid.prototype, \"allowSelection\", void 0);\n __decorate$1([\n Property(-1)\n ], Grid.prototype, \"selectedRowIndex\", void 0);\n __decorate$1([\n Complex({}, SelectionSettings)\n ], Grid.prototype, \"selectionSettings\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowFiltering\", void 0);\n __decorate$1([\n Property('Horizontal')\n ], Grid.prototype, \"rowRenderingMode\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableAdaptiveUI\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowReordering\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowResizing\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowRowDragAndDrop\", void 0);\n __decorate$1([\n Complex({}, RowDropSettings)\n ], Grid.prototype, \"rowDropSettings\", void 0);\n __decorate$1([\n Complex({}, FilterSettings)\n ], Grid.prototype, \"filterSettings\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"allowGrouping\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableImmutableMode\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"showColumnMenu\", void 0);\n __decorate$1([\n Complex({}, GroupSettings)\n ], Grid.prototype, \"groupSettings\", void 0);\n __decorate$1([\n Complex({}, EditSettings)\n ], Grid.prototype, \"editSettings\", void 0);\n __decorate$1([\n Collection([], AggregateRow)\n ], Grid.prototype, \"aggregates\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"showColumnChooser\", void 0);\n __decorate$1([\n Complex({}, ColumnChooserSettings)\n ], Grid.prototype, \"columnChooserSettings\", void 0);\n __decorate$1([\n Property(false)\n ], Grid.prototype, \"enableHeaderFocus\", void 0);\n __decorate$1([\n Property('auto')\n ], Grid.prototype, \"height\", void 0);\n __decorate$1([\n Property('auto')\n ], Grid.prototype, \"width\", void 0);\n __decorate$1([\n Property('Default')\n ], Grid.prototype, \"gridLines\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"rowTemplate\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"detailTemplate\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"childGrid\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"queryString\", void 0);\n __decorate$1([\n Property('AllPages')\n ], Grid.prototype, \"printMode\", void 0);\n __decorate$1([\n Property('Expanded')\n ], Grid.prototype, \"hierarchyPrintMode\", void 0);\n __decorate$1([\n Property([])\n ], Grid.prototype, \"dataSource\", void 0);\n __decorate$1([\n Property(null)\n ], Grid.prototype, \"rowHeight\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"query\", void 0);\n __decorate$1([\n Property('USD')\n ], Grid.prototype, \"currencyCode\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"toolbar\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"contextMenuItems\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"columnMenuItems\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"toolbarTemplate\", void 0);\n __decorate$1([\n Property()\n ], Grid.prototype, \"pagerTemplate\", void 0);\n __decorate$1([\n Property(0)\n ], Grid.prototype, \"frozenRows\", void 0);\n __decorate$1([\n Property(0)\n ], Grid.prototype, \"frozenColumns\", void 0);\n __decorate$1([\n Property('')\n ], Grid.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property('All')\n ], Grid.prototype, \"columnQueryMode\", void 0);\n __decorate$1([\n Property({})\n ], Grid.prototype, \"currentAction\", void 0);\n __decorate$1([\n Property('20.4.54')\n ], Grid.prototype, \"ej2StatePersistenceVersion\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"destroyed\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"load\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowDataBound\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"queryCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"headerCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"actionBegin\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"actionComplete\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"actionFailure\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"dataBound\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"recordDoubleClick\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"recordClick\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowSelecting\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowSelected\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowDeselecting\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowDeselected\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"cellSelecting\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"cellSelected\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"cellDeselecting\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"cellDeselected\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnSelecting\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnSelected\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnDeselecting\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnDeselected\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnDragStart\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnDrag\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnDrop\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"printComplete\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforePrint\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"pdfQueryCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"pdfHeaderQueryCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"pdfAggregateQueryCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"excelAggregateQueryCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"exportDetailDataBound\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"excelQueryCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"excelHeaderQueryCellInfo\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeExcelExport\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"excelExportComplete\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforePdfExport\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"pdfExportComplete\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowDragStartHelper\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"detailDataBound\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowDragStart\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowDrag\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"rowDrop\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"toolbarClick\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeOpenColumnChooser\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeOpenAdaptiveDialog\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"batchAdd\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"batchDelete\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"batchCancel\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeBatchAdd\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeBatchDelete\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeBatchSave\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beginEdit\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"commandClick\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"cellEdit\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"cellSave\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"cellSaved\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"resizeStart\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"resizing\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"keyPressed\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeDataBound\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"contextMenuOpen\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"contextMenuClick\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnMenuOpen\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnMenuClick\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"checkBoxChange\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeCopy\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforePaste\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"beforeAutoFill\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"columnDataStateChange\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"dataStateChange\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"dataSourceChanged\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"exportGroupCaption\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"lazyLoadGroupExpand\", void 0);\n __decorate$1([\n Event()\n ], Grid.prototype, \"lazyLoadGroupCollapse\", void 0);\n Grid = Grid_1 = __decorate$1([\n NotifyPropertyChanges\n ], Grid);\n return Grid;\n}(Component));\n\n/**\n * @returns {string[]} returns the cloned property\n * @hidden\n */\nfunction getCloneProperties() {\n return ['aggregates', 'allowGrouping', 'allowFiltering', 'allowMultiSorting', 'allowReordering', 'allowSorting',\n 'allowTextWrap', 'childGrid', 'columns', 'currentViewData', 'dataSource', 'detailTemplate', 'enableAltRow',\n 'enableColumnVirtualization', 'filterSettings', 'gridLines',\n 'groupSettings', 'height', 'locale', 'pageSettings', 'printMode', 'query', 'queryString', 'enableRtl',\n 'rowHeight', 'rowTemplate', 'sortSettings', 'textWrapSettings', 'allowPaging', 'hierarchyPrintMode', 'searchSettings',\n 'queryCellInfo', 'beforeDataBound'];\n}\n/**\n *\n * The `Print` module is used to handle print action.\n */\nvar Print = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {Scroll} scrollModule - specifies the scroll module\n * @hidden\n */\n function Print(parent, scrollModule) {\n this.isAsyncPrint = false;\n this.defered = new Deferred();\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(contentReady, this.isContentReady(), this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.parent.addEventListener(actionBegin, this.actionBeginFunction);\n this.parent.on(onEmpty, this.onEmpty.bind(this));\n this.parent.on(hierarchyPrint, this.hierarchyPrint, this);\n this.scrollModule = scrollModule;\n }\n Print.prototype.isContentReady = function () {\n var _this = this;\n if (this.isPrintGrid() && (this.parent.hierarchyPrintMode === 'None' || !this.parent.childGrid)) {\n return this.contentReady;\n }\n return function () {\n _this.defered.promise.then(function () {\n _this.contentReady();\n });\n if (_this.isPrintGrid()) {\n _this.hierarchyPrint();\n }\n };\n };\n Print.prototype.hierarchyPrint = function () {\n this.removeColGroup(this.parent);\n var printGridObj = window.printGridObj;\n if (printGridObj && !printGridObj.element.querySelector('[aria-busy=true')) {\n printGridObj.printModule.defered.resolve();\n }\n };\n /**\n * By default, prints all the Grid pages and hides the pager.\n * > You can customize print options using the\n * [`printMode`](grid/#printmode-string/).\n *\n * @returns {void}\n */\n Print.prototype.print = function () {\n this.renderPrintGrid();\n };\n Print.prototype.onEmpty = function () {\n if (this.isPrintGrid()) {\n this.contentReady();\n }\n };\n Print.prototype.actionBegin = function () {\n if (this.isPrintGrid()) {\n this.isAsyncPrint = true;\n }\n };\n Print.prototype.renderPrintGrid = function () {\n var gObj = this.parent;\n var element = createElement('div', {\n id: this.parent.element.id + '_print', className: gObj.element.className + ' e-print-grid'\n });\n element.classList.remove('e-gridhover');\n document.body.appendChild(element);\n var printGrid = new Grid(getPrintGridModel(gObj, gObj.hierarchyPrintMode));\n for (var i = 0; i < printGrid.columns.length; i++) {\n printGrid.columns[parseInt(i.toString(), 10)] = extend({}, printGrid.columns[parseInt(i.toString(), 10)]);\n if (gObj.isFrozenGrid() && !gObj.getFrozenColumns()) {\n printGrid.columns[parseInt(i.toString(), 10)].freeze = undefined;\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.isAngular) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n printGrid.viewContainerRef = this.parent.viewContainerRef;\n }\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n printGrid.load = function () { };\n printGrid.query = gObj.getQuery().clone();\n window.printGridObj = printGrid;\n printGrid.isPrinting = true;\n var modules = printGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n printGrid.setInjectedModules(injectedModues);\n }\n gObj.notify(printGridInit, { element: element, printgrid: printGrid });\n this.parent.log('exporting_begin', this.getModuleName());\n printGrid.registeredTemplate = this.parent.registeredTemplate;\n printGrid.isVue = this.parent.isVue;\n printGrid.appendTo(element);\n if (!gObj.isVue3) {\n printGrid.trigger = gObj.trigger;\n }\n };\n Print.prototype.contentReady = function () {\n if (this.isPrintGrid()) {\n var gObj = this.parent;\n if (this.isAsyncPrint) {\n this.printGrid();\n return;\n }\n var args = {\n requestType: 'print',\n element: gObj.element,\n selectedRows: gObj.getContentTable().querySelectorAll('tr[aria-selected=\"true\"]'),\n cancel: false,\n hierarchyPrintMode: gObj.hierarchyPrintMode\n };\n if (!this.isAsyncPrint) {\n gObj.trigger(beforePrint, args);\n }\n if (args.cancel) {\n detach(gObj.element);\n return;\n }\n if (!this.isAsyncPrint) {\n this.printGrid();\n }\n }\n };\n Print.prototype.printGrid = function () {\n var gObj = this.parent;\n // Height adjustment on print grid\n if (gObj.height !== 'auto') { // if scroller enabled\n var cssProps = this.scrollModule.getCssProperties();\n var contentDiv = gObj.element.querySelector('.' + content);\n var headerDiv = gObj.element.querySelector('.' + gridHeader);\n contentDiv.style.height = 'auto';\n contentDiv.style.overflowY = 'auto';\n headerDiv.style[cssProps.padding] = '';\n headerDiv.firstElementChild.style[cssProps.border] = '';\n }\n // Grid alignment adjustment on grouping\n if (gObj.allowGrouping) {\n if (!gObj.groupSettings.columns.length) {\n gObj.element.querySelector('.e-groupdroparea').style.display = 'none';\n }\n else {\n this.removeColGroup(gObj);\n }\n }\n // hide horizontal scroll\n for (var _i = 0, _a = [].slice.call(gObj.element.getElementsByClassName(content)); _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.overflowX = 'hidden';\n }\n // Hide the waiting popup\n var waitingPop = [].slice.call(gObj.element.getElementsByClassName('e-spin-show'));\n for (var _b = 0, _c = [].slice.call(waitingPop); _b < _c.length; _b++) {\n var element = _c[_b];\n classList(element, ['e-spin-hide'], ['e-spin-show']);\n }\n this.printGridElement(gObj);\n gObj.isPrinting = false;\n delete window.printGridObj;\n var args = {\n element: gObj.element\n };\n gObj.trigger(printComplete, args);\n gObj.destroy();\n this.parent.log('exporting_complete', this.getModuleName());\n };\n Print.prototype.printGridElement = function (gObj) {\n classList(gObj.element, ['e-print-grid-layout'], ['e-print-grid']);\n if (gObj.isPrinting) {\n detach(gObj.element);\n }\n this.printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWind.moveTo(0, 0);\n this.printWind.resizeTo(screen.availWidth, screen.availHeight);\n this.printWind = print(gObj.element, this.printWind);\n };\n Print.prototype.removeColGroup = function (gObj) {\n var depth = gObj.groupSettings.columns.length;\n var element = gObj.element;\n var id = '#' + gObj.element.id;\n if (!depth) {\n return;\n }\n var groupCaption = selectAll('.e-groupcaption', element);\n var colSpan = groupCaption[depth - 1].getAttribute('colspan');\n for (var i = 0; i < groupCaption.length; i++) {\n groupCaption[parseInt(i.toString(), 10)].setAttribute('colspan', colSpan);\n }\n var colGroups = selectAll(\"colgroup\" + id + \"colgroup\", element);\n var contentColGroups = selectAll('.e-content colgroup', element);\n this.hideColGroup(colGroups, depth);\n this.hideColGroup(contentColGroups, depth);\n };\n Print.prototype.hideColGroup = function (colGroups, depth) {\n for (var i = 0; i < colGroups.length; i++) {\n for (var j = 0; j < depth; j++) {\n colGroups[parseInt(i.toString(), 10)].children[parseInt(j.toString(), 10)].style.display = 'none';\n }\n }\n };\n /**\n * To destroy the print\n *\n * @returns {boolean} returns the isPrintGrid or not\n * @hidden\n */\n Print.prototype.isPrintGrid = function () {\n return this.parent.element.id.indexOf('_print') > 0 && this.parent.isPrinting;\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n Print.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(contentReady, this.contentReady.bind(this));\n this.parent.removeEventListener(actionBegin, this.actionBeginFunction);\n this.parent.off(onEmpty, this.onEmpty.bind(this));\n this.parent.off(hierarchyPrint, this.hierarchyPrint);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'print';\n };\n Print.printGridProp = getCloneProperties().concat([beforePrint, printComplete, load]);\n return Print;\n}());\n\n//https://typescript.codeplex.com/discussions/401501\n/**\n * Function to check whether target object implement specific interface\n *\n * @param {Object} target - specifies the target\n * @param {string} checkFor - specifies the checkfors\n * @returns {boolean} returns the boolean\n * @hidden\n */\nfunction doesImplementInterface(target, checkFor) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return target.prototype && checkFor in target.prototype;\n}\n/**\n * Function to get value from provided data\n *\n * @param {string} field - specifies the field\n * @param {Object} data - specifies the data\n * @param {ColumnModel} column - specifies the column\n * @returns {Object} returns the object\n * @hidden\n */\n// eslint-disable-next-line\nfunction valueAccessor(field, data, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, data);\n}\n/**\n * Defines the method used to apply custom header cell values from external function and display this on each header cell rendered.\n *\n * @param {string} field - specifies the field\n * @param {ColumnModel} column - specifies the column\n * @returns {object} headerValueAccessor\n * @hidden\n */\nfunction headerValueAccessor(field, column) {\n return (isNullOrUndefined(field) || field === '') ? '' : DataUtil.getObject(field, column);\n}\n/**\n * The function used to update Dom using requestAnimationFrame.\n *\n * @param {Function} updateFunction - Function that contains the actual action\n * @param {object} callBack - defines the callback\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nfunction getUpdateUsingRaf(updateFunction, callBack) {\n requestAnimationFrame(function () {\n try {\n callBack(null, updateFunction());\n }\n catch (e) {\n callBack(e);\n }\n });\n}\n/**\n * @hidden\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @returns {boolean} Returns isExportColumns\n */\nfunction isExportColumns(exportProperties) {\n return !isNullOrUndefined(exportProperties) &&\n !isNullOrUndefined(exportProperties.columns) && exportProperties.columns.length > 0;\n}\n/**\n * @param {PdfExportProperties | ExcelExportProperties} exportProperties - Defines the export properties\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nfunction updateColumnTypeForExportColumns(exportProperties, gObj) {\n var exportColumns = exportProperties.columns;\n var gridColumns = gObj.columns;\n for (var i = 0; i < exportColumns.length; i++) {\n if (gridColumns.length - 1 >= i) {\n if (gridColumns[parseInt(i.toString(), 10)].columns) {\n for (var j = 0; j < gridColumns[parseInt(i.toString(), 10)].columns.length; j++) {\n exportColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)]\n .type = gridColumns[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].type;\n }\n }\n else {\n exportColumns[parseInt(i.toString(), 10)].type = gridColumns[parseInt(i.toString(), 10)].type;\n }\n }\n }\n}\n/**\n * @hidden\n * @param {IGrid} grid - Defines the grid\n * @returns {void}\n */\nfunction updatecloneRow(grid) {\n var nRows = [];\n var actualRows = grid.vRows;\n for (var i = 0; i < actualRows.length; i++) {\n if (actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n }\n else if (!actualRows[parseInt(i.toString(), 10)].isDataRow) {\n nRows.push(actualRows[parseInt(i.toString(), 10)]);\n if (!actualRows[parseInt(i.toString(), 10)].isExpand && actualRows[parseInt(i.toString(), 10)].isCaptionRow) {\n i += getCollapsedRowsCount(actualRows[parseInt(i.toString(), 10)], grid);\n }\n }\n }\n grid.vcRows = nRows;\n}\nvar count = 0;\n/**\n * @hidden\n * @param {Row} val - Defines the value\n * @param {IGrid} grid - Defines the grid\n * @returns {number} Returns the collapsed row count\n */\nfunction getCollapsedRowsCount(val, grid) {\n count = 0;\n var gSummary = 'gSummary';\n var total = 'count';\n var gLen = grid.groupSettings.columns.length;\n var records = 'records';\n var items = 'items';\n var value = val[\"\" + gSummary];\n var dataRowCnt = 0;\n var agrCnt = 'aggregatesCount';\n if (value === val.data[\"\" + total]) {\n if (grid.groupSettings.columns.length && !isNullOrUndefined(val[\"\" + agrCnt]) && val[\"\" + agrCnt]) {\n if (grid.groupSettings.columns.length !== 1) {\n count += (val.indent !== 0 && (value) < 2) ? (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent) * val[\"\" + agrCnt])) :\n (val[\"\" + gSummary] * ((gLen - val.indent) + (gLen - val.indent - 1) * val[\"\" + agrCnt])) + val[\"\" + agrCnt];\n }\n else if (grid.groupSettings.columns.length === 1) {\n count += (val[\"\" + gSummary] * (gLen - val.indent)) + val[\"\" + agrCnt];\n }\n }\n else if (grid.groupSettings.columns.length) {\n if (grid.groupSettings.columns.length !== 1) {\n count += val[\"\" + gSummary] * (grid.groupSettings.columns.length - val.indent);\n }\n else {\n count += val[\"\" + gSummary];\n }\n }\n return count;\n }\n else {\n for (var i = 0, len = val.data[\"\" + items].length; i < len; i++) {\n var gLevel = val.data[\"\" + items][parseInt(i.toString(), 10)];\n count += gLevel[\"\" + items].length + ((gLen !== grid.columns.length) &&\n !isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) ? gLevel[\"\" + items][\"\" + records].length : 0);\n dataRowCnt += (!isNullOrUndefined(gLevel[\"\" + items][\"\" + records]) && !isNullOrUndefined(val[\"\" + agrCnt])) ? gLevel[\"\" + items][\"\" + records].length :\n gLevel[\"\" + items].length;\n if (gLevel[\"\" + items].GroupGuid && gLevel[\"\" + items].childLevels !== 0) {\n recursive(gLevel);\n }\n }\n count += val.data[\"\" + items].length;\n if (!isNullOrUndefined(val[\"\" + agrCnt])) {\n if (val[\"\" + agrCnt] && count && dataRowCnt !== 0) {\n count += ((count - dataRowCnt) * val[\"\" + agrCnt]) + val[\"\" + agrCnt];\n }\n }\n }\n return count;\n}\n/**\n * @param {Object[]} row - Defines the row\n * @returns {void}\n * @hidden\n */\nfunction recursive(row$$1) {\n var items = 'items';\n var rCount = 'count';\n for (var j = 0, length_1 = row$$1[\"\" + items].length; j < length_1; j++) {\n var nLevel = row$$1[\"\" + items][parseInt(j.toString(), 10)];\n count += nLevel[\"\" + rCount];\n if (nLevel[\"\" + items].childLevels !== 0) {\n recursive(nLevel);\n }\n }\n}\n/**\n * @param {Object[]} collection - Defines the array\n * @param {Object} predicate - Defines the predicate\n * @returns {Object} Returns the object\n * @hidden\n */\nfunction iterateArrayOrObject(collection, predicate) {\n var result = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n var pred = predicate(collection[parseInt(i.toString(), 10)], i);\n if (!isNullOrUndefined(pred)) {\n result.push(pred);\n }\n }\n return result;\n}\n/**\n * @param {Object[]} array - Defines the array\n * @returns {Object} Returns the object\n * @hidden\n */\nfunction iterateExtend(array) {\n var obj = [];\n for (var i = 0; i < array.length; i++) {\n obj.push(extend({}, getActualProperties(array[parseInt(i.toString(), 10)]), {}, true));\n }\n return obj;\n}\n/**\n * @param {string} template - Defines the template\n * @returns {Function} Returns the function\n * @hidden\n */\nfunction templateCompiler(template) {\n if (template) {\n try {\n var validSelector = template[0] !== '<';\n if (validSelector && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n/**\n * @param {Element} node - Defines the column\n * @param {Object} customAttributes - Defines the index\n * @returns {void}\n * @hidden\n */\nfunction setStyleAndAttributes(node, customAttributes) {\n var copyAttr = {};\n var literals = ['style', 'class'];\n //Dont touch the original object - make a copy\n extend(copyAttr, customAttributes, {});\n if ('style' in copyAttr) {\n setStyleAttribute(node, copyAttr[literals[0]]);\n delete copyAttr[literals[0]];\n }\n if ('class' in copyAttr) {\n addClass([node], copyAttr[literals[1]]);\n delete copyAttr[literals[1]];\n }\n attributes(node, copyAttr);\n}\n/**\n * @param {Object} copied - Defines the column\n * @param {Object} first - Defines the inndex\n * @param {Object} second - Defines the second object\n * @param {string[]} exclude - Defines the exclude\n * @returns {Object} Returns the object\n * @hidden\n */\nfunction extend$1(copied, first, second, exclude) {\n var moved = extend(copied, first, second);\n var values = Object.keys(moved);\n for (var i = 0; i < values.length; i++) {\n if (exclude && exclude.indexOf(values[parseInt(i.toString(), 10)]) !== -1) {\n delete moved[values[parseInt(i.toString(), 10)]];\n }\n }\n return moved;\n}\n/**\n * @param {Column[]} columnModel - Defines the column\n * @param {number} ind - Defines the inndex\n * @returns {number} - Returns the columnindex\n * @hidden\n */\nfunction setColumnIndex(columnModel, ind) {\n if (ind === void 0) { ind = 0; }\n for (var i = 0, len = columnModel.length; i < len; i++) {\n if (columnModel[parseInt(i.toString(), 10)].columns) {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n ind = setColumnIndex(columnModel[parseInt(i.toString(), 10)].columns, ind);\n }\n else {\n columnModel[parseInt(i.toString(), 10)].index = isNullOrUndefined(columnModel[parseInt(i.toString(), 10)].index) ? ind\n : columnModel[parseInt(i.toString(), 10)].index;\n ind++;\n }\n }\n return ind;\n}\n/**\n * @param {Column[] | string[] | ColumnModel[]} columns - Defines the column\n * @param {boolean} autoWidth - Defines the autowidth\n * @param {IGrid} gObj - Defines the class name\n * @returns {Column} - Returns the columns\n * @hidden\n */\nfunction prepareColumns(columns, autoWidth, gObj) {\n for (var c = 0, len = columns.length; c < len; c++) {\n var column = void 0;\n if (typeof columns[parseInt(c.toString(), 10)] === 'string') {\n column = new Column({ field: columns[parseInt(c.toString(), 10)] }, gObj);\n }\n else if (!(columns[parseInt(c.toString(), 10)] instanceof Column) || columns[parseInt(c.toString(), 10)].columns) {\n if (!columns[parseInt(c.toString(), 10)].columns) {\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n else {\n columns[parseInt(c.toString(), 10)].columns = prepareColumns(columns[parseInt(c.toString(), 10)].columns, null, gObj);\n column = new Column(columns[parseInt(c.toString(), 10)], gObj);\n }\n }\n else {\n column = columns[parseInt(c.toString(), 10)];\n }\n if (column.type && column.type.toLowerCase() === 'checkbox') {\n column.allowReordering = false;\n }\n column.headerText = isNullOrUndefined(column.headerText) ? column.foreignKeyValue || column.field || '' : column.headerText;\n column.foreignKeyField = column.foreignKeyField || column.field;\n column.valueAccessor = (typeof column.valueAccessor === 'string' ? getValue(column.valueAccessor, window)\n : column.valueAccessor) || valueAccessor;\n column.width = autoWidth && isNullOrUndefined(column.width) ? 200 : column.width;\n if (isNullOrUndefined(column.visible)) {\n column.visible = true;\n }\n columns[parseInt(c.toString(), 10)] = column;\n }\n return columns;\n}\n/**\n * @param {HTMLElement} popUp - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the moouse event\n * @param {string} className - Defines the class name\n * @returns {void}\n * @hidden\n */\nfunction setCssInGridPopUp(popUp, e, className) {\n var popUpSpan = popUp.querySelector('span');\n var position = popUp.parentElement.getBoundingClientRect();\n var targetPosition = e.target.getBoundingClientRect();\n popUpSpan.className = className;\n popUp.style.display = '';\n var isBottomTail = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY) > popUp.offsetHeight + 10;\n popUp.style.top = targetPosition.top - position.top +\n (isBottomTail ? -(popUp.offsetHeight + 10) : popUp.offsetHeight + 10) + 'px'; //10px for tail element\n popUp.style.left = getPopupLeftPosition(popUp, e, targetPosition, position.left) + 'px';\n if (isBottomTail) {\n popUp.querySelector('.e-downtail').style.display = '';\n popUp.querySelector('.e-uptail').style.display = 'none';\n }\n else {\n popUp.querySelector('.e-downtail').style.display = 'none';\n popUp.querySelector('.e-uptail').style.display = '';\n }\n}\n/**\n * @param {HTMLElement} popup - Defines the popup element\n * @param {MouseEvent | TouchEvent} e - Defines the mouse event\n * @param {Object} targetPosition - Defines the target position\n * @param {number} targetPosition.top - Defines the top position\n * @param {number} targetPosition.left - Defines the left position\n * @param {number} targetPosition.right - Defines the right position\n * @param {number} left - Defines the left position\n * @returns {number} Returns the popup left position\n * @hidden\n */\nfunction getPopupLeftPosition(popup, e, targetPosition, left) {\n var width = popup.offsetWidth / 2;\n var x = getPosition(e).x;\n if (x - targetPosition.left < width) {\n return targetPosition.left - left;\n }\n else if (targetPosition.right - x < width) {\n return targetPosition.right - left - width * 2;\n }\n else {\n return x - left - width;\n }\n}\n/**\n * @param {Object} obj - Defines the object\n * @returns {Object} Returns the Properties\n * @hidden\n */\nfunction getActualProperties(obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the string selector\n * @param {boolean} isID - Defines the isID\n * @returns {Element} Returns the element\n * @hidden\n */\nfunction parentsUntil(elem, selector, isID) {\n var parent = elem;\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n break;\n }\n parent = parent.parentElement;\n }\n return parent;\n}\n/**\n * @param {Element} element - Defines the element\n * @param {Element} elements - Defines the element\n * @returns {number} Returns the element index\n * @hidden\n */\nfunction getElementIndex(element, elements) {\n var index = -1;\n for (var i = 0, len = elements.length; i < len; i++) {\n if (elements[parseInt(i.toString(), 10)].isEqualNode(element)) {\n index = i;\n break;\n }\n }\n return index;\n}\n/**\n * @param {Object} value - Defines the value\n * @param {Object} collection - defines the collection\n * @returns {number} Returns the array\n * @hidden\n */\nfunction inArray(value, collection) {\n for (var i = 0, len = collection.length; i < len; i++) {\n if (collection[parseInt(i.toString(), 10)] === value) {\n return i;\n }\n }\n return -1;\n}\n/**\n * @param {Object} collection - Defines the collection\n * @returns {Object} Returns the object\n * @hidden\n */\nfunction getActualPropFromColl(collection) {\n var coll = [];\n for (var i = 0, len = collection.length; i < len; i++) {\n // eslint-disable-next-line no-prototype-builtins\n if (collection[parseInt(i.toString(), 10)].hasOwnProperty('properties')) {\n coll.push(collection[parseInt(i.toString(), 10)].properties);\n }\n else {\n coll.push(collection[parseInt(i.toString(), 10)]);\n }\n }\n return coll;\n}\n/**\n * @param {Element} target - Defines the target element\n * @param {string} selector - Defines the selector\n * @returns {void}\n * @hidden\n */\nfunction removeElement(target, selector) {\n var elements = [].slice.call(target.querySelectorAll(selector));\n for (var i = 0; i < elements.length; i++) {\n remove(elements[parseInt(i.toString(), 10)]);\n }\n}\n/**\n * @param {MouseEvent | TouchEvent} e Defines the mouse event\n * @returns {IPosition} Returns the position\n * @hidden\n */\nfunction getPosition(e) {\n var position = {};\n position.x = (isNullOrUndefined(e.clientX) ? e.changedTouches[0].clientX :\n e.clientX);\n position.y = (isNullOrUndefined(e.clientY) ? e.changedTouches[0].clientY :\n e.clientY);\n return position;\n}\nvar uid = 0;\n/**\n * @param {string} prefix - Defines the prefix string\n * @returns {string} Returns the uid\n * @hidden\n */\nfunction getUid(prefix) {\n return prefix + uid++;\n}\n/**\n * @param {Element | DocumentFragment} elem - Defines the element\n * @param {Element[] | NodeList} children - Defines the Element\n * @returns {Element} Returns the element\n * @hidden\n */\nfunction appendChildren(elem, children) {\n for (var i = 0, len = children.length; i < len; i++) {\n if (len === children.length) {\n elem.appendChild(children[parseInt(i.toString(), 10)]);\n }\n else {\n elem.appendChild(children[0]);\n }\n }\n return elem;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {string} selector - Defines the selector\n * @param {boolean} isID - Defines isID\n * @returns {Element} Return the element\n * @hidden\n */\nfunction parents(elem, selector, isID) {\n var parent = elem;\n var parents = [];\n while (parent) {\n if (isID ? parent.id === selector : parent.classList.contains(selector)) {\n parents.push(parent);\n }\n parent = parent.parentElement;\n }\n return parents;\n}\n/**\n * @param {AggregateType | string} type - Defines the type\n * @param {Object} data - Defines the data\n * @param {AggregateColumnModel} column - Defines the column\n * @param {Object} context - Defines the context\n * @returns {Object} Returns the calculated aggragate\n * @hidden\n */\nfunction calculateAggregate(type, data, column, context) {\n if (type === 'Custom') {\n var temp = column.customAggregate;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n return temp ? temp.call(context, data, column) : '';\n }\n return (column.field in data || data instanceof Array) ? DataUtil.aggregates[type.toLowerCase()](data, column.field) : null;\n}\n/** @hidden */\nvar scrollWidth = null;\n/** @hidden\n * @returns {number} - Returns the scrollbarwidth\n */\nfunction getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n var divNode = document.createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n value = (divNode.offsetWidth - divNode.clientWidth) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/** @hidden */\nvar rowHeight;\n/**\n * @param {HTMLElement} element - Defines the element\n * @returns {number} Returns the roww height\n * @hidden\n */\nfunction getRowHeight(element) {\n if (rowHeight !== undefined) {\n return rowHeight;\n }\n var table$$1 = createElement('table', { className: table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table$$1.innerHTML = 'A';\n element.appendChild(table$$1);\n var rect = table$$1.querySelector('td').getBoundingClientRect();\n element.removeChild(table$$1);\n rowHeight = Math.ceil(rect.height);\n return rowHeight;\n}\n/** @hidden */\nvar actualRowHeight;\n/**\n * @param {HTMLElement} element - Defines the HTMl element\n * @returns {number} Returns the row height\n * @hidden\n */\nfunction getActualRowHeight(element) {\n if (actualRowHeight !== undefined) {\n return rowHeight;\n }\n var table$$1 = createElement('table', { className: table, styles: 'visibility: hidden', attrs: { role: 'grid' } });\n table$$1.innerHTML = 'A';\n element.appendChild(table$$1);\n var rect = table$$1.querySelector('tr').getBoundingClientRect();\n element.removeChild(table$$1);\n return rect.height;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {boolean} - Returns is complex field\n * @hidden\n */\nfunction isComplexField(field) {\n return field.split('.').length > 1;\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the get complex field ID\n * @hidden\n */\nfunction getComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/\\./g, '___');\n}\n/**\n * @param {string} field - Defines the field\n * @returns {string} - Returns the set complex field ID\n * @hidden\n */\nfunction setComplexFieldID(field) {\n if (field === void 0) { field = ''; }\n return field.replace(/___/g, '.');\n}\n/**\n * @param {Column} col - Defines the column\n * @param {string} type - Defines the type\n * @param {Element} elem - Defines th element\n * @returns {boolean} Returns is Editable\n * @hidden\n */\nfunction isEditable(col, type, elem) {\n var row$$1 = parentsUntil(elem, row);\n var isOldRow = !row$$1 ? true : row$$1 && !row$$1.classList.contains('e-insertedrow');\n if (type === 'beginEdit' && isOldRow) {\n if (col.isIdentity || col.isPrimaryKey || !col.allowEditing) {\n return false;\n }\n return true;\n }\n else if (type === 'add' && col.isIdentity) {\n return false;\n }\n else {\n if (isOldRow && !col.allowEditing && !col.isIdentity && !col.isPrimaryKey) {\n return false;\n }\n return true;\n }\n}\n/**\n * @param {IGrid} inst - Defines the IGrid\n * @returns {boolean} Returns is action prevent in boolean\n * @hidden\n */\nfunction isActionPrevent(inst) {\n var dlg = select('#' + inst.element.id + 'EditConfirm', inst.element);\n return inst.editSettings.mode === 'Batch' &&\n (selectAll('.e-updatedtd', inst.element).length) && inst.editSettings.showConfirmDialog &&\n (dlg ? dlg.classList.contains('e-popup-close') : true);\n}\n/**\n * @param {any} elem - Defines the element\n * @param {boolean} action - Defines the boolean for action\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nfunction wrap(elem, action) {\n var clName = 'e-wrap';\n elem = elem instanceof Array ? elem : [elem];\n for (var i = 0; i < elem.length; i++) {\n if (action) {\n elem[parseInt(i.toString(), 10)].classList.add(clName);\n }\n else {\n elem[parseInt(i.toString(), 10)].classList.remove(clName);\n }\n }\n}\n/**\n * @param {ServiceLocator} serviceLocator - Defines the service locator\n * @param {Column} column - Defines the column\n * @returns {void}\n * @hidden\n */\nfunction setFormatter(serviceLocator, column) {\n var fmtr = serviceLocator.getService('valueFormatter');\n var format = 'format';\n var args;\n if (column.type === 'date' || column.type === 'datetime') {\n args = { type: column.type, skeleton: column.format };\n if ((typeof (column.format) === 'string') && column.format !== 'yMd') {\n args[\"\" + format] = column.format;\n }\n }\n switch (column.type) {\n case 'date':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'datetime':\n column.setFormatter(fmtr.getFormatFunction(args));\n column.setParser(fmtr.getParserFunction(args));\n break;\n case 'number':\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n column.setParser(fmtr.getParserFunction({ format: column.format }));\n break;\n }\n}\n/**\n * @param {Element} cells - Defines the cell element\n * @param {boolean} add - Defines the add\n * @param {string} args - Defines the args\n * @returns {void}\n * @hidden\n */\nfunction addRemoveActiveClasses(cells, add) {\n var args = [];\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n for (var i = 0, len = cells.length; i < len; i++) {\n if (add) {\n classList(cells[parseInt(i.toString(), 10)], args.slice(), []);\n cells[parseInt(i.toString(), 10)].setAttribute('aria-selected', 'true');\n }\n else {\n classList(cells[parseInt(i.toString(), 10)], [], args.slice());\n cells[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n }\n }\n}\n/**\n * @param {string} result - Defines th string\n * @returns {string} Returns the distinct staing values\n * @hidden\n */\nfunction distinctStringValues(result) {\n var temp = {};\n var res = [];\n for (var i = 0; i < result.length; i++) {\n if (!(result[parseInt(i.toString(), 10)] in temp)) {\n res.push(result[parseInt(i.toString(), 10)].toString());\n temp[result[parseInt(i.toString(), 10)]] = 1;\n }\n }\n return res;\n}\n/**\n * @param {Element} target - Defines the target\n * @param {Dialog} dialogObj - Defines the dialog\n * @returns {void}\n * @hidden\n */\nfunction getFilterMenuPostion(target, dialogObj) {\n var elementVisible = dialogObj.element.style.display;\n dialogObj.element.style.display = 'block';\n var dlgWidth = dialogObj.width;\n var newpos = calculateRelativeBasedPosition(target, dialogObj.element);\n dialogObj.element.style.display = elementVisible;\n dialogObj.element.style.top = (newpos.top + target.getBoundingClientRect().height) - 5 + 'px';\n var leftPos = ((newpos.left - dlgWidth) + target.clientWidth);\n if (leftPos < 1) {\n dialogObj.element.style.left = (dlgWidth + leftPos) - 16 + 'px'; // right calculation\n }\n else {\n dialogObj.element.style.left = leftPos + -4 + 'px';\n }\n}\n/**\n * @param {Object} args - Defines the args\n * @param {Popup} args.popup - Defines the args for popup\n * @param {Dialog} dialogObj - Defines the dialog obj\n * @returns {void}\n * @hidden\n */\nfunction getZIndexCalcualtion(args, dialogObj) {\n args.popup.element.style.zIndex = (dialogObj.zIndex + 1).toString();\n}\n/**\n * @param {Element} elem - Defines the element\n * @returns {void}\n * @hidden\n */\nfunction toogleCheckbox(elem) {\n var span = elem.querySelector('.e-frame');\n var input = span.previousSibling;\n if (span.classList.contains('e-check')) {\n input.checked = false;\n classList(span, ['e-uncheck'], ['e-check']);\n }\n else {\n input.checked = true;\n classList(span, ['e-check'], ['e-uncheck']);\n }\n}\n/**\n * @param {HTMLInputElement} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nfunction setChecked(elem, checked) {\n elem.checked = checked;\n}\n/**\n * @param {string} uid - Defines the string\n * @param {Element} elem - Defines the Element\n * @param {string} className - Defines the classname\n * @returns {Element} Returns the box wrap\n * @hidden\n */\nfunction createCboxWithWrap(uid, elem, className) {\n var div = createElement('div', { className: className });\n div.appendChild(elem);\n div.setAttribute('uid', uid);\n return div;\n}\n/**\n * @param {Element} elem - Defines the element\n * @param {boolean} checked - Defines is checked\n * @returns {void}\n * @hidden\n */\nfunction removeAddCboxClasses(elem, checked) {\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n if (checked) {\n elem.classList.add('e-check');\n }\n else {\n elem.classList.add('e-uncheck');\n }\n}\n/**\n * Refresh the Row model's foreign data.\n *\n * @param {IRow} row - Grid Row model object.\n * @param {Column[]} columns - Foreign columns array.\n * @param {Object} data - Updated Row data.\n * @returns {void}\n * @hidden\n */\nfunction refreshForeignData(row$$1, columns, data) {\n for (var i = 0; i < columns.length; i++) {\n setValue(columns[parseInt(i.toString(), 10)].field, getForeignData(columns[parseInt(i.toString(), 10)], data), row$$1.foreignKeyData);\n }\n var cells = row$$1.cells;\n for (var i = 0; i < cells.length; i++) {\n if (cells[parseInt(i.toString(), 10)].isForeignKey) {\n setValue('foreignKeyData', getValue(cells[parseInt(i.toString(), 10)].column.field, row$$1.foreignKeyData), cells[parseInt(i.toString(), 10)]);\n }\n }\n}\n/**\n * Get the foreign data for the corresponding cell value.\n *\n * @param {Column} column - Foreign Key column\n * @param {Object} data - Row data.\n * @param {string | number} lValue - cell value.\n * @param {Object} foreignKeyData - foreign data source.\n * @returns {Object} Returns the object\n * @hidden\n */\nfunction getForeignData(column, data, lValue, foreignKeyData) {\n var fField = column.foreignKeyField;\n var key = (!isNullOrUndefined(lValue) ? lValue : valueAccessor(column.field, data, column));\n key = isNullOrUndefined(key) ? '' : key;\n var query = new Query();\n var fdata = foreignKeyData || ((column.dataSource instanceof DataManager) && column.dataSource.dataSource.json.length ?\n column.dataSource.dataSource.json : column.columnData);\n if (key.getDay) {\n query.where(getDatePredicate({ field: fField, operator: 'equal', value: key, matchCase: false }));\n }\n else {\n query.where(fField, '==', key, false);\n }\n return new DataManager(fdata).executeLocal(query);\n}\n/**\n * To use to get the column's object by the foreign key value.\n *\n * @param {string} foreignKeyValue - Defines ForeignKeyValue.\n * @param {Column[]} columns - Array of column object.\n * @returns {Column} Returns the element\n * @hidden\n */\nfunction getColumnByForeignKeyValue(foreignKeyValue, columns) {\n var column;\n return columns.some(function (col) {\n column = col;\n return col.foreignKeyValue === foreignKeyValue;\n }) && column;\n}\n/**\n * @param {PredicateModel} filterObject - Defines the filterObject\n * @param {string} type - Defines the type\n * @returns {Predicate} Returns the Predicate\n * @hidden\n */\nfunction getDatePredicate(filterObject, type) {\n var datePredicate;\n var prevDate;\n var nextDate;\n var prevObj = extend({}, getActualProperties(filterObject));\n var nextObj = extend({}, getActualProperties(filterObject));\n if (isNullOrUndefined(filterObject.value) || filterObject.value === '') {\n datePredicate = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n return datePredicate;\n }\n var value = new Date(filterObject.value);\n if (filterObject.operator === 'equal' || filterObject.operator === 'notequal') {\n if (type === 'datetime') {\n prevDate = new Date(value.setSeconds(value.getSeconds() - 1));\n nextDate = new Date(value.setSeconds(value.getSeconds() + 2));\n filterObject.value = new Date(value.setSeconds(nextDate.getSeconds() - 1));\n }\n else {\n prevDate = new Date(value.setHours(0) - 1);\n nextDate = new Date(value.setHours(24));\n }\n prevObj.value = prevDate;\n nextObj.value = nextDate;\n if (filterObject.operator === 'equal') {\n prevObj.operator = 'greaterthan';\n nextObj.operator = 'lessthan';\n }\n else if (filterObject.operator === 'notequal') {\n prevObj.operator = 'lessthanorequal';\n nextObj.operator = 'greaterthanorequal';\n }\n var predicateSt = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n var predicateEnd = new Predicate(nextObj.field, nextObj.operator, nextObj.value, false);\n datePredicate = filterObject.operator === 'equal' ? predicateSt.and(predicateEnd) : predicateSt.or(predicateEnd);\n }\n else {\n if (type === 'date' && (filterObject.operator === 'lessthanorequal' || filterObject.operator === 'greaterthan')) {\n prevObj.value = new Date(value.setHours(24) - 1);\n }\n if (typeof (prevObj.value) === 'string') {\n prevObj.value = new Date(prevObj.value);\n }\n var predicates = new Predicate(prevObj.field, prevObj.operator, prevObj.value, false);\n datePredicate = predicates;\n }\n if (filterObject.setProperties) {\n filterObject.setProperties({ ejpredicate: datePredicate }, true);\n }\n else {\n filterObject.ejpredicate = datePredicate;\n }\n return datePredicate;\n}\n/**\n * @param {Element} ele - Defines the element\n * @param {number} frzCols - Defines the frozen columns\n * @param {IGrid} gObj - Defines the IGrid\n * @returns {Element} Returns the element\n * @hidden\n */\nfunction renderMovable(ele, frzCols, gObj) {\n frzCols = frzCols && gObj && gObj.isRowDragable() ? frzCols + 1 : frzCols;\n var mEle = ele.cloneNode(true);\n for (var i = 0; i < frzCols; i++) {\n mEle.removeChild(mEle.children[0]);\n }\n for (var i = frzCols, len = ele.childElementCount; i < len; i++) {\n ele.removeChild(ele.children[ele.childElementCount - 1]);\n }\n return mEle;\n}\n/**\n * @param {IGrid} grid - Defines the IGrid\n * @returns {boolean} Returns true if group adaptive is true\n * @hidden\n */\nfunction isGroupAdaptive(grid) {\n return grid.enableVirtualization && grid.groupSettings.columns.length > 0 && grid.isVirtualAdaptive &&\n !grid.groupSettings.enableLazyLoading;\n}\n/**\n * @param {string} field - Defines the Field\n * @param {Object} object - Defines the objec\n * @returns {any} Returns the object\n * @hidden\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nfunction getObject(field, object) {\n if (field === void 0) { field = ''; }\n if (field) {\n var value = object;\n var splits = field.split('.');\n for (var i = 0; i < splits.length && !isNullOrUndefined(value); i++) {\n value = value[splits[parseInt(i.toString(), 10)]];\n }\n return value;\n }\n}\n/**\n * @param {string | Object} format - defines the format\n * @param {string} colType - Defines the coltype\n * @returns {string} Returns the custom Data format\n * @hidden\n */\nfunction getCustomDateFormat(format, colType) {\n var intl = new Internationalization();\n var formatvalue;\n var formatter = 'format';\n var type = 'type';\n if (colType === 'date') {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'date', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n else {\n formatvalue = typeof (format) === 'object' ?\n intl.getDatePattern({ type: format[\"\" + type] ? format[\"\" + type] : 'dateTime', format: format[\"\" + formatter] }, false) :\n intl.getDatePattern({ type: 'dateTime', skeleton: format }, false);\n }\n return formatvalue;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {Object} Returns the object\n * @hidden\n */\nfunction getExpandedState(gObj, hierarchyPrintMode) {\n var rows = gObj.getRowsObject();\n var obj = {};\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row$$1 = rows_1[_i];\n if (row$$1.isExpand && !row$$1.isDetailRow) {\n var index = gObj.allowPaging && gObj.printMode === 'AllPages' ? row$$1.index +\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : row$$1.index;\n obj[parseInt(index.toString(), 10)] = {};\n obj[parseInt(index.toString(), 10)].isExpand = true;\n obj[parseInt(index.toString(), 10)].gridModel = getPrintGridModel(row$$1.childGrid, hierarchyPrintMode);\n obj[parseInt(index.toString(), 10)].gridModel.query = gObj.childGrid.query;\n }\n }\n return obj;\n}\n/**\n * @param {IGrid} gObj - Defines the grid objct\n * @param {HierarchyGridPrintMode} hierarchyPrintMode - Defines the hierarchyPrintMode\n * @returns {IGrid} Returns the IGrid\n * @hidden\n */\nfunction getPrintGridModel(gObj, hierarchyPrintMode) {\n if (hierarchyPrintMode === void 0) { hierarchyPrintMode = 'Expanded'; }\n var printGridModel = {};\n if (!gObj) {\n return printGridModel;\n }\n var isFrozen = gObj.isFrozenGrid() && !gObj.getFrozenColumns();\n for (var _i = 0, _a = Print.printGridProp; _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'columns') {\n printGridModel[\"\" + key] = getActualPropFromColl(isFrozen ? gObj.getColumns() : gObj[\"\" + key]);\n }\n else if (key === 'allowPaging') {\n printGridModel[\"\" + key] = gObj.printMode === 'CurrentPage';\n }\n else {\n printGridModel[\"\" + key] = getActualProperties(gObj[\"\" + key]);\n }\n }\n printGridModel['enableHover'] = false;\n if (gObj.childGrid && hierarchyPrintMode !== 'None') {\n printGridModel.expandedRows = getExpandedState(gObj, hierarchyPrintMode);\n }\n return printGridModel;\n}\n/**\n * @param {Object} copied - Defines the copied object\n * @param {Object} first - Defines the first object\n * @param {Object} second - Defines the second object\n * @param {boolean} deep - Defines the deep\n * @returns {Object} Returns the extended object\n * @hidden\n */\nfunction extendObjWithFn(copied, first, second, deep) {\n var res = copied || {};\n var len = arguments.length;\n if (deep) {\n len = len - 1;\n }\n for (var i = 1; i < len; i++) {\n // eslint-disable-next-line prefer-rest-params\n if (!arguments[parseInt(i.toString(), 10)]) {\n continue;\n }\n // eslint-disable-next-line prefer-rest-params\n var obj1 = arguments[parseInt(i.toString(), 10)];\n var keys = Object.keys(Object.getPrototypeOf(obj1)).length ?\n Object.keys(obj1).concat(getPrototypesOfObj(obj1)) : Object.keys(obj1);\n for (var i_1 = 0; i_1 < keys.length; i_1++) {\n var source = res[keys[parseInt(i_1.toString(), 10)]];\n var cpy = obj1[keys[parseInt(i_1.toString(), 10)]];\n var cln = void 0;\n if (deep && (isObject(cpy) || Array.isArray(cpy))) {\n if (isObject(cpy)) {\n cln = source ? source : {};\n res[keys[parseInt(i_1.toString(), 10)]] = extend({}, cln, cpy, deep);\n }\n else {\n cln = source ? source : [];\n res[keys[parseInt(i_1.toString(), 10)]] = extend([], cln, cpy, deep);\n }\n }\n else {\n res[keys[parseInt(i_1.toString(), 10)]] = cpy;\n }\n }\n }\n return res;\n}\n/**\n * @param {Object} obj - Defines the obj\n * @returns {string[]} Returns the string\n * @hidden\n */\nfunction getPrototypesOfObj(obj) {\n var keys = [];\n while (Object.getPrototypeOf(obj) && Object.keys(Object.getPrototypeOf(obj)).length) {\n keys = keys.concat(Object.keys(Object.getPrototypeOf(obj)));\n obj = Object.getPrototypeOf(obj);\n }\n return keys;\n}\n/**\n * @param {Column[]} column - Defines the Column\n * @returns {number} Returns the column Depth\n * @hidden\n */\nfunction measureColumnDepth(column) {\n var max = 0;\n for (var i = 0; i < column.length; i++) {\n var depth = checkDepth(column[parseInt(i.toString(), 10)], 0);\n if (max < depth) {\n max = depth;\n }\n }\n return max + 1;\n}\n/**\n * @param {Column} col - Defines the Column\n * @param {number} index - Defines the index\n * @returns {number} Returns the depth\n * @hidden\n */\nfunction checkDepth(col, index) {\n var max = index;\n var indices = [];\n if (col.columns) {\n index++;\n for (var i = 0; i < col.columns.length; i++) {\n indices[parseInt(i.toString(), 10)] = checkDepth(col.columns[parseInt(i.toString(), 10)], index);\n }\n for (var j = 0; j < indices.length; j++) {\n if (max < indices[parseInt(j.toString(), 10)]) {\n max = indices[parseInt(j.toString(), 10)];\n }\n }\n index = max;\n }\n return index;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {PredicateModel[]} filteredCols - Defines the PredicateModel\n * @returns {void}\n * @hidden\n */\nfunction refreshFilteredColsUid(gObj, filteredCols) {\n for (var i = 0; i < filteredCols.length; i++) {\n filteredCols[parseInt(i.toString(), 10)].uid = filteredCols[parseInt(i.toString(), 10)].isForeignKey ?\n getColumnByForeignKeyValue(filteredCols[parseInt(i.toString(), 10)].field, gObj.getForeignKeyColumns()).uid\n : gObj.enableColumnVirtualization ? getColumnModelByFieldName(gObj, filteredCols[parseInt(i.toString(), 10)].field).uid\n : gObj.getColumnByField(filteredCols[parseInt(i.toString(), 10)].field).uid;\n }\n}\n/** @hidden */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar Global;\n(function (Global) {\n // eslint-disable-next-line prefer-const\n Global.timer = null;\n})(Global || (Global = {}));\n/**\n * @param {Element} element - Defines the element\n * @returns {Object} Returns the transform values\n * @hidden\n */\nfunction getTransformValues(element) {\n var style = document.defaultView.getComputedStyle(element, null);\n var transformV = style.getPropertyValue('transform');\n var replacedTv = transformV.replace(/,/g, '');\n var translateX = parseFloat((replacedTv).split(' ')[4]);\n var translateY = parseFloat((replacedTv).split(' ')[5]);\n return { width: translateX, height: translateY };\n}\n/**\n * @param {Element} rootElement - Defines the root Element\n * @param {Element} element - Defines the element\n * @returns {void}\n * @hidden\n */\nfunction applyBiggerTheme(rootElement, element) {\n if (rootElement.classList.contains('e-bigger')) {\n element.classList.add('e-bigger');\n }\n}\n/**\n * @param {HTMLElement} mTD - Defines the movable TD\n * @param {HTMLElement} fTD - Defines the Frozen TD\n * @returns {void}\n * @hidden\n */\nfunction alignFrozenEditForm(mTD, fTD) {\n if (mTD && fTD) {\n var mHeight = closest(mTD, '.' + row).getBoundingClientRect().height;\n var fHeight = closest(fTD, '.' + row).getBoundingClientRect().height;\n if (mHeight > fHeight) {\n fTD.style.height = mHeight + 'px';\n }\n else {\n mTD.style.height = fHeight + 'px';\n }\n }\n}\n/**\n * @param {Element} row - Defines row element\n * @param {IGrid} gridObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nfunction ensureLastRow(row$$1, gridObj) {\n var cntOffset = gridObj.getContent().firstElementChild.offsetHeight;\n return row$$1 && row$$1.getBoundingClientRect().top > cntOffset;\n}\n/**\n * @param {Element} row - Defines row element\n * @param {number} rowTop - Defines row top number\n * @returns {boolean} Returns first row is true\n * @hidden\n */\nfunction ensureFirstRow(row$$1, rowTop) {\n return row$$1 && row$$1.getBoundingClientRect().top < rowTop;\n}\n/**\n * @param {number} index - Defines index\n * @param {IGrid} gObj - Defines grid object\n * @returns {boolean} Returns isRowEnteredInGrid\n * @hidden\n */\nfunction isRowEnteredInGrid(index, gObj) {\n var rowHeight = gObj.getRowHeight();\n var startIndex = gObj.getContent().firstElementChild.scrollTop / rowHeight;\n var endIndex = startIndex + (gObj.getContent().firstElementChild.offsetHeight / rowHeight);\n return index < endIndex && index > startIndex;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} data - Defines the query\n * @returns {number} Returns the edited data index\n * @hidden\n */\nfunction getEditedDataIndex(gObj, data) {\n var keyField = gObj.getPrimaryKeyFieldNames()[0];\n var dataIndex;\n gObj.getCurrentViewRecords().filter(function (e, index) {\n if (e[\"\" + keyField] === data[\"\" + keyField]) {\n dataIndex = index;\n }\n });\n return dataIndex;\n}\n/**\n * @param {Object} args - Defines the argument\n * @param {Query} query - Defines the query\n * @returns {FilterStateObj} Returns the filter state object\n * @hidden\n */\nfunction eventPromise(args, query) {\n var state = getStateEventArgument(query);\n var def = new Deferred();\n state.dataSource = def.resolve;\n state.action = args;\n return { state: state, deffered: def };\n}\n/**\n * @param {Query} query - Defines the query\n * @returns {Object} Returns the state event argument\n * @hidden\n */\nfunction getStateEventArgument(query) {\n var adaptr = new UrlAdaptor();\n var dm = new DataManager({ url: '', adaptor: new UrlAdaptor });\n var state = adaptr.processQuery(dm, query);\n var data = JSON.parse(state.data);\n return data;\n}\n/**\n * @param {IGrid} gObj - Defines the Igrid\n * @returns {boolean} Returns the ispercentageWidth\n * @hidden\n */\nfunction ispercentageWidth(gObj) {\n var columns = gObj.getVisibleColumns();\n var percentageCol = 0;\n var undefinedWidthCol = 0;\n for (var i = 0; i < columns.length; i++) {\n if (isUndefined(columns[parseInt(i.toString(), 10)].width)) {\n undefinedWidthCol++;\n }\n else if (columns[parseInt(i.toString(), 10)].width.toString().indexOf('%') !== -1) {\n percentageCol++;\n }\n }\n return (gObj.width === 'auto' || typeof (gObj.width) === 'string' && gObj.width.indexOf('%') !== -1) &&\n !gObj.groupSettings.showGroupedColumn && gObj.groupSettings.columns.length\n && percentageCol && !undefinedWidthCol;\n}\n/**\n * @param {IGrid} gObj - Defines the IGrid\n * @param {Row[]} rows - Defines the row\n * @param {HTMLTableRowElement[]} rowElms - Row elements\n * @param {number} index - Row index\n * @param {number} startRowIndex - Start Row Index\n * @returns {void}\n * @hidden\n */\nfunction resetRowIndex(gObj, rows, rowElms, index, startRowIndex) {\n var startIndex = index ? index : 0;\n for (var i = startRowIndex ? startRowIndex : 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].isDataRow) {\n rows[parseInt(i.toString(), 10)].index = startIndex;\n rows[parseInt(i.toString(), 10)].isAltRow = gObj.enableAltRow ? startIndex % 2 !== 0 : false;\n rowElms[parseInt(i.toString(), 10)].setAttribute(dataRowIndex, startIndex.toString());\n rowElms[parseInt(i.toString(), 10)].setAttribute(ariaRowIndex, (startIndex + 1).toString());\n if (rows[parseInt(i.toString(), 10)].isAltRow) {\n rowElms[parseInt(i.toString(), 10)].classList.add('e-altrow');\n }\n else {\n rowElms[parseInt(i.toString(), 10)].classList.remove('e-altrow');\n }\n for (var j = 0; j < rowElms[parseInt(i.toString(), 10)].cells.length; j++) {\n rowElms[parseInt(i.toString(), 10)].cells[parseInt(j.toString(), 10)].setAttribute('index', startIndex.toString());\n }\n startIndex++;\n }\n }\n if (!rows.length) {\n gObj.renderModule.emptyRow(true);\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Object} changes - Defines the changes\n * @param {string} type - Defines the type\n * @param {string} keyField - Defines the keyfield\n * @returns {void}\n * @hidden\n */\nfunction compareChanges(gObj, changes, type, keyField) {\n var newArray = gObj.dataToBeUpdated[\"\" + type].concat(changes[\"\" + type]).reduce(function (r, o) {\n r[o[\"\" + keyField]] = r[o[\"\" + keyField]] === undefined ? o : Object.assign(r[o[\"\" + keyField]], o);\n return r;\n }, {});\n gObj.dataToBeUpdated[\"\" + type] = Object.keys(newArray).map(function (k) { return newArray[\"\" + k]; });\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {void}\n * @hidden\n */\nfunction setRowElements(gObj) {\n if (gObj.isFrozenGrid()) {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-movableheader .e-row, .e-movablecontent .e-row'));\n var cls = gObj.getFrozenMode() === leftRight ? '.e-frozen-left-header .e-row, .e-frozen-left-content .e-row'\n : '.e-frozenheader .e-row, .e-frozencontent .e-row';\n (gObj).contentModule.freezeRowElements =\n [].slice.call(gObj.element.querySelectorAll(cls));\n if (gObj.getFrozenMode() === leftRight) {\n gObj.contentModule.frozenRightRowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-frozen-right-header .e-row, .e-frozen-right-content .e-row'));\n }\n }\n else {\n (gObj).contentModule.rowElements =\n [].slice.call(gObj.element.querySelectorAll('.e-row:not(.e-addedrow)'));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @param {Cell} cells - Defines the callback function\n * @param {freezeTable} tableName - Defines the row\n * @returns {Cell[]} Returns the cell\n * @hidden\n */\nfunction splitFrozenRowObjectCells(gObj, cells, tableName) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n var right = gObj.getFrozenRightColumnsCount();\n var frozenMode = gObj.getFrozenMode();\n var drag = gObj.isRowDragable() ? 1 : 0;\n var rightIndex = frozenMode === 'Right' ? left + movable : left + movable + drag;\n var mvblIndex = frozenMode === 'Right' ? left : left + drag;\n var mvblEndIdx = frozenMode === 'Right' ? cells.length - right - drag\n : right ? cells.length - right : cells.length;\n if (tableName === frozenLeft) {\n cells = cells.slice(0, left ? left + drag : cells.length);\n }\n else if (tableName === frozenRight) {\n cells = cells.slice(rightIndex, cells.length);\n }\n else if (tableName === 'movable') {\n cells = cells.slice(mvblIndex, mvblEndIdx);\n }\n return cells;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object.\n * @param {boolean} visibleOnly - Defines to return only visible columns.\n * @returns {Column[], Column[], Column[]} Returns all frozenLeft, movable and frozenRight Columns as object.\n * @hidden\n */\nfunction getExactFrozenMovableColumn(gObj, visibleOnly) {\n var columnModel = gObj.getColumns();\n var movableColumns = [];\n var frozenLeftColumns = [];\n var frozenRightColumns = [];\n for (var i = 0; i < columnModel.length; i++) {\n if (isNullOrUndefined(visibleOnly) || !visibleOnly || visibleOnly === columnModel[i].visible) {\n if (columnModel[i].freeze === 'Left' || columnModel[i].freezeTable === 'frozen-left') {\n frozenLeftColumns.push(columnModel[i]);\n }\n else if (columnModel[i].freeze === 'Right' || columnModel[i].freezeTable === 'frozen-right') {\n frozenRightColumns.push(columnModel[i]);\n }\n else {\n movableColumns.push(columnModel[i]);\n }\n }\n }\n return { frozenLeft: frozenLeftColumns, movable: movableColumns, frozenRight: frozenRightColumns };\n}\n// eslint-disable-next-line\n/** @hidden */\nfunction gridActionHandler(gObj, callBack, rows, force, rowObj) {\n if (rows[0].length || force) {\n if (rowObj) {\n callBack(frozenLeft, rows[0], rowObj[0]);\n }\n else {\n callBack(frozenLeft, rows[0]);\n }\n }\n if (gObj.isFrozenGrid() && (rows[1].length || force)) {\n if (rowObj) {\n callBack('movable', rows[1], rowObj[1]);\n }\n else {\n callBack('movable', rows[1]);\n }\n }\n if ((gObj.getFrozenMode() === leftRight || gObj.getFrozenMode() === 'Right') && (rows[2].length || force)) {\n if (rowObj) {\n callBack(frozenRight, rows[2], rowObj[2]);\n }\n else {\n callBack(frozenRight, rows[2]);\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Row} Returns the row\n * @hidden\n */\nfunction getGridRowObjects(gObj) {\n return [gObj.getFrozenMode() !== 'Right' ? gObj.getRowsObject() : [], gObj.getMovableRowsObject(), gObj.getFrozenRightRowsObject()];\n}\n/**\n * @param {IGrid} gObj - Defines the grid\n * @returns {Element} Returns the element\n * @hidden\n */\nfunction getGridRowElements(gObj) {\n return [\n gObj.getFrozenMode() !== 'Right' ? gObj.getAllDataRows(true) : [],\n gObj.getAllMovableDataRows(true), gObj.getAllFrozenRightDataRows(true)\n ];\n}\n/**\n * @param {Element} row - Defines the row\n * @param {number} start - Defines the start index\n * @param {number} end - Defines the end index\n * @returns {void}\n * @hidden\n */\nfunction sliceElements(row$$1, start, end) {\n var cells = row$$1.children;\n var len = cells.length;\n var k = 0;\n for (var i = 0; i < len; i++, k++) {\n if (i >= start && i < end) {\n continue;\n }\n row$$1.removeChild(row$$1.children[parseInt(k.toString(), 10)]);\n k--;\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid Object\n * @param {Column} col - Defines the column\n * @param {number} rowIndex - Defines the rowindex\n * @returns {Element} Returns the element\n * @hidden\n */\nfunction getCellsByTableName(gObj, col, rowIndex) {\n if (col.getFreezeTableName() === 'movable') {\n return [].slice.call(gObj.getMovableDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(rowCell));\n }\n else if (col.getFreezeTableName() === frozenRight) {\n return [].slice.call(gObj.getFrozenRightDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(rowCell));\n }\n else {\n return [].slice.call(gObj.getDataRows()[parseInt(rowIndex.toString(), 10)].getElementsByClassName(rowCell));\n }\n}\n/**\n * @param {IGrid} gObj - Defines the column\n * @param {Column} col - Defines the index\n * @param {number} rowIndex - Defines the rules\n * @param {number} index - Defines the movable column rules\n * @returns {Element} Returns the Element\n * @hidden\n */\nfunction getCellByColAndRowIndex(gObj, col, rowIndex, index) {\n var left = gObj.getFrozenLeftCount();\n var movable = gObj.getMovableColumnsCount();\n index = col.getFreezeTableName() === 'movable' ? index - left : col.getFreezeTableName() === frozenRight\n ? index - (left + movable) : index;\n return getCellsByTableName(gObj, col, rowIndex)[parseInt(index.toString(), 10)];\n}\n/**\n * @param {Column} col - Defines the column\n * @param {number} index - Defines the index\n * @param {Object} rules - Defines the rules\n * @param {Object} mRules - Defines the movable column rules\n * @param {Object} frRules - Defines the Frozen rules\n * @param {number} len - Defines the length\n * @param {boolean} isCustom - Defines custom form validation\n * @returns {void}\n * @hidden\n */\nfunction setValidationRuels(col, index, rules, mRules, frRules, len, isCustom) {\n if (isCustom) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else {\n if (col.getFreezeTableName() === frozenLeft\n || (!index && col.getFreezeTableName() === frozenRight) || len === 1) {\n rules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === 'movable' || !col.getFreezeTableName()) {\n mRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n else if (col.getFreezeTableName() === frozenRight) {\n frRules[getComplexFieldID(col.field)] = col.validationRules;\n }\n }\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nfunction getMovableTbody(gObj) {\n var tbody$$1;\n if (gObj.isFrozenGrid()) {\n tbody$$1 = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getMovableHeaderTbody()\n : gObj.getMovableContentTbody();\n }\n return tbody$$1;\n}\n/**\n * @param {IGrid} gObj - Defines the grid object\n * @returns {Element} Returns the Element\n * @hidden\n */\nfunction getFrozenRightTbody(gObj) {\n var tbody$$1;\n if (gObj.getFrozenMode() === leftRight) {\n tbody$$1 = gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top' ? gObj.getFrozenRightHeaderTbody()\n : gObj.getFrozenRightContentTbody();\n }\n return tbody$$1;\n}\n/**\n * @param {Element} tbody - Table body\n * @param {Element} mTbody - Movanle table body\n * @param {Element} frTbody - Frozen right table body\n * @param {Element[]} tr - Table rows\n * @param {Element[]} mTr - Movable table rows\n * @param {Element[]} frTr - Frozen right table rows\n * @param {Function} callBack - Callback function\n * @returns {void}\n * @hidden\n */\nfunction setRowsInTbody(tbody$$1, mTbody, frTbody, tr, mTr, frTr, callBack) {\n if (tbody$$1 && tr) {\n callBack(tbody$$1, tr);\n }\n if (mTbody && mTr) {\n callBack(mTbody, mTr);\n }\n if (frTbody && frTr) {\n callBack(frTbody, frTr);\n }\n}\n/**\n * @param {string} numberFormat - Format\n * @param {string} type - Value type\n * @param {boolean} isExcel - Boolean property\n * @param {string} currencyCode - Currency code property from grid instance.\n * @returns {string} returns formated value\n * @hidden\n */\nfunction getNumberFormat(numberFormat, type, isExcel, currencyCode) {\n var format;\n var intl = new Internationalization();\n if (type === 'number') {\n try {\n format = intl.getNumberPattern({ format: numberFormat, currency: currencyCode, useGrouping: true }, true);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n else if (type === 'date' || type === 'time' || type === 'datetime') {\n try {\n format = intl.getDatePattern({ skeleton: numberFormat, type: type }, isExcel);\n if (isNullOrUndefined(format)) {\n // eslint-disable-next-line\n throw 'error';\n }\n }\n catch (error) {\n try {\n format = intl.getDatePattern({ format: numberFormat, type: type }, isExcel);\n }\n catch (error) {\n format = numberFormat;\n }\n }\n }\n else {\n format = numberFormat;\n }\n if (type !== 'number') {\n var patternRegex = /G|H|c|'| a|yy|y|EEEE|E/g;\n var mtch_1 = { 'G': '', 'H': 'h', 'c': 'd', '\\'': '\"', ' a': ' AM/PM', 'yy': 'yy', 'y': 'yyyy', 'EEEE': 'dddd', 'E': 'ddd' };\n format = format.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return mtch_1[\"\" + pattern];\n });\n }\n return format;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @returns {void}\n * @hidden\n */\nfunction addBiggerDialog(gObj) {\n if (gObj.enableAdaptiveUI) {\n var dialogs = document.getElementsByClassName('e-responsive-dialog');\n for (var i = 0; i < dialogs.length; i++) {\n dialogs[parseInt(i.toString(), 10)].classList.add('e-bigger');\n }\n }\n}\n/**\n * @param {string} value - specifies the trr\n * @param {Object} mapObject - specifies the idx\n * @returns {Object | string} returns object or string\n * @hidden\n */\nfunction performComplexDataOperation(value, mapObject) {\n var returnObj;\n var length = value.split('.').length;\n var splits = value.split('.');\n var duplicateMap = mapObject;\n for (var i = 0; i < length; i++) {\n returnObj = duplicateMap[splits[parseInt(i.toString(), 10)]];\n duplicateMap = returnObj;\n }\n return returnObj;\n}\n/**\n * @param {Object} tr - specifies the trr\n * @param {number} idx - specifies the idx\n * @param {string} displayVal - specifies the displayval\n * @param {Row} rows - specifies the rows\n * @param {IGrid} parent - Grid instance\n * @param {boolean} isContent - check for content renderer\n * @returns {void}\n * @hidden\n */\nfunction setDisplayValue(tr, idx, displayVal, rows, parent, isContent) {\n var trs = Object.keys(tr);\n for (var i = 0; i < trs.length; i++) {\n var td = tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)];\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell').length && td) {\n setStyleAttribute(tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isContent && parent.isRowDragable()) {\n var index = parent.getFrozenColumns() ? idx : idx + 1;\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(index.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n else {\n rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible = displayVal === '' ? true : false;\n if (rows[trs[parseInt(i.toString(), 10)]].cells[parseInt(idx.toString(), 10)].visible === false) {\n tr[trs[parseInt(i.toString(), 10)]].querySelectorAll('td.e-rowcell')[parseInt(idx.toString(), 10)].classList.add('e-hide');\n }\n }\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nfunction addRemoveEventListener(parent, evt, isOn, module) {\n for (var _i = 0, evt_1 = evt; _i < evt_1.length; _i++) {\n var inst = evt_1[_i];\n if (isOn) {\n parent.on(inst.event, inst.handler, module);\n }\n else {\n parent.off(inst.event, inst.handler);\n }\n }\n}\n// eslint-disable-next-line\n/** @hidden */\nfunction createEditElement(parent, column, classNames, attr) {\n var complexFieldName = getComplexFieldID(column.field);\n attr = Object.assign(attr, {\n id: parent.element.id + complexFieldName,\n name: complexFieldName, 'e-mappinguid': column.uid\n });\n return parent.createElement('input', {\n className: classNames, attrs: attr\n });\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} uid - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nfunction getColumnModelByUid(gObj, uid) {\n var column;\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.uid === uid) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {IGrid} gObj - Grid instance\n * @param {string} field - Defines column's uid\n * @returns {Column} returns column model\n * @hidden\n */\nfunction getColumnModelByFieldName(gObj, field) {\n var column;\n if (!gObj.columnModel) {\n gObj.getColumns();\n }\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field === field) {\n column = col;\n break;\n }\n }\n return column;\n}\n/**\n * @param {string} id - Defines component id\n * @param {string[]} evts - Defines events\n * @param {object} handlers - Defines event handlers\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nfunction registerEventHandlers(id, evts, handlers, instance) {\n instance.eventHandlers[\"\" + id] = {};\n for (var i = 0; i < evts.length; i++) {\n instance.eventHandlers[\"\" + id][evts[parseInt(i.toString(), 10)]] = handlers[evts[parseInt(i.toString(), 10)]];\n }\n}\n/**\n * @param {any} component - Defines component instance\n * @param {string[]} evts - Defines events\n * @param {any} instance - Defines class instance\n * @returns {void}\n * @hidden\n */\n// eslint-disable-next-line\nfunction removeEventHandlers(component, evts, instance) {\n for (var i = 0; i < evts.length; i++) {\n if (component.isDestroyed) {\n break;\n }\n component.removeEventListener(evts[parseInt(i.toString(), 10)], instance.eventHandlers[component.element.id][evts[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {IGrid | IXLFilter} parent - Defines parent instance\n * @param {string[]} templates - Defines the templates name which are needs to clear\n * @returns {void}\n * @hidden\n */\nfunction clearReactVueTemplates(parent, templates) {\n parent.destroyTemplate(templates);\n if (parent.isReact) {\n parent.renderTemplates();\n }\n}\n/**\n *\n * @param { Element } row - Defines row element\n * @returns { number } row index\n */\nfunction getRowIndexFromElement(row$$1) {\n return parseInt(row$$1.getAttribute(dataRowIndex), 10);\n}\n/**\n *\n * @param { string[] } fields - Defines grouped fields\n * @param { values } values - Defines caption keys\n * @param { any } instance - Defines dynamic class instance\n * @returns { Predicate } returns filter predicate\n */\n// eslint-disable-next-line\nfunction generateExpandPredicates(fields, values, instance) {\n var filterCols = [];\n for (var i = 0; i < fields.length; i++) {\n var column = instance.parent.getColumnByField(fields[parseInt(i.toString(), 10)]);\n var value = values[parseInt(i.toString(), 10)] === 'null' ? null : values[parseInt(i.toString(), 10)];\n var pred = {\n field: fields[parseInt(i.toString(), 10)], predicate: 'or', uid: column.uid, operator: 'equal', type: column.type,\n matchCase: instance.allowCaseSensitive, ignoreAccent: instance.parent.filterSettings.ignoreAccent\n };\n if (value === '' || isNullOrUndefined(value)) {\n filterCols = filterCols.concat(CheckBoxFilterBase.generateNullValuePredicates(pred));\n }\n else {\n filterCols.push(extend$1({}, { value: value }, pred));\n }\n }\n return CheckBoxFilterBase.getPredicate(filterCols);\n}\n/**\n *\n * @param { Predicate } pred - Defines filter predicate\n * @returns { Predicate[] } Returns formed predicate\n */\nfunction getPredicates(pred) {\n var predicateList = [];\n for (var _i = 0, _a = Object.keys(pred); _i < _a.length; _i++) {\n var prop = _a[_i];\n predicateList.push(pred[\"\" + prop]);\n }\n return predicateList;\n}\n/**\n *\n * @param { number } index - Defines group caption indent\n * @param { Row[] } rowsObject - Defines rows object\n * @returns { { fields: string[], keys: string[] } } Returns grouped keys and values\n */\nfunction getGroupKeysAndFields(index, rowsObject) {\n var fields = [];\n var keys = [];\n for (var i = index; i >= 0; i--) {\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow\n && fields.indexOf(rowsObject[parseInt(i.toString(), 10)].data.field) === -1\n && (rowsObject[parseInt(i.toString(), 10)].indent < rowsObject[parseInt(index.toString(), 10)].indent || i === index)) {\n fields.push(rowsObject[parseInt(i.toString(), 10)].data.field);\n keys.push(rowsObject[parseInt(i.toString(), 10)].data.key);\n if (rowsObject[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n }\n }\n return { fields: fields, keys: keys };\n}\n// eslint-disable-next-line\n/**\n *\n * @param { number[][] } checkActiveMatrix - Defines matrix to check\n * @param { number[] } checkCellIndex - Defines index to check\n * @param { boolean } next - Defines select next or previous index\n * @returns { number[] } - Returns next active current index\n */\nfunction findCellIndex(checkActiveMatrix, checkCellIndex, next) {\n var activeMatrix = checkActiveMatrix;\n var cellIndex = checkCellIndex;\n var currentCellIndexPass = false;\n if (next) {\n for (var i = cellIndex[0]; i < activeMatrix.length; i++) {\n var rowCell$$1 = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = 0; j < rowCell$$1.length; j++) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n else {\n for (var i = cellIndex[0]; i >= 0; i--) {\n var rowCell$$1 = activeMatrix[parseInt(i.toString(), 10)];\n for (var j = rowCell$$1.length - 1; j >= 0; j--) {\n if (currentCellIndexPass && activeMatrix[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)] === 1) {\n cellIndex = [i, j];\n return cellIndex;\n }\n if (!currentCellIndexPass && cellIndex.toString() === [i, j].toString()) {\n currentCellIndexPass = true;\n }\n }\n }\n }\n return cellIndex;\n}\n/**\n *\n * @param { string } string - Defines string need to capitalized first letter\n * @returns { string } - Returns capitalized first letter string\n */\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/* tslint:disable-next-line:max-line-length */\n/**\n * @hidden\n * `CheckBoxFilterBase` module is used to handle filtering action.\n */\nvar CheckBoxFilterBase = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IXLFilter} parent - specifies the IXLFilter\n * @hidden\n */\n function CheckBoxFilterBase(parent) {\n this.existingPredicate = {};\n this.foreignKeyQuery = new Query();\n /** @hidden */\n this.filterState = true;\n this.values = {};\n this.renderEmpty = false;\n this.isCheckboxFilterTemplate = false;\n this.parent = parent;\n this.id = this.parent.element.id;\n this.valueFormatter = new ValueFormatter(this.parent.locale);\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { type: 'checkbox' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden', attrs: { 'type': 'checkbox' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.destroy = function () {\n this.closeDialog();\n };\n CheckBoxFilterBase.prototype.wireEvents = function () {\n EventHandler.add(this.dlg, 'click', this.clickHandler, this);\n EventHandler.add(this.dlg, 'keyup', this.keyupHandler, this);\n this.searchHandler = debounce(this.searchBoxKeyUp, 200);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.add(elem, 'keyup', this.searchHandler, this);\n }\n };\n CheckBoxFilterBase.prototype.unWireEvents = function () {\n EventHandler.remove(this.dlg, 'click', this.clickHandler);\n EventHandler.remove(this.dlg, 'keyup', this.keyupHandler);\n var elem = this.dialogObj.element.querySelector('.e-searchinput');\n if (elem) {\n EventHandler.remove(elem, 'keyup', this.searchHandler);\n }\n };\n CheckBoxFilterBase.prototype.foreignKeyFilter = function (args, fColl, mPredicate) {\n var _this = this;\n var fPredicate = {};\n var filterCollection = [];\n var query = this.foreignKeyQuery.clone();\n this.options.column.dataSource.\n executeQuery(query.where(mPredicate)).then(function (e) {\n _this.options.column.columnData = e.result;\n _this.parent.notify(generateQuery, { predicate: fPredicate, column: _this.options.column });\n args.ejpredicate = fPredicate.predicate.predicates;\n var fpred = fPredicate.predicate.predicates;\n for (var i = 0; i < fpred.length; i++) {\n filterCollection.push({\n field: fpred[parseInt(i.toString(), 10)].field,\n predicate: 'or',\n matchCase: fpred[parseInt(i.toString(), 10)].ignoreCase,\n ignoreAccent: fpred[parseInt(i.toString(), 10)].ignoreAccent,\n operator: fpred[parseInt(i.toString(), 10)].operator,\n value: fpred[parseInt(i.toString(), 10)].value,\n type: _this.options.type\n });\n }\n args.filterCollection = filterCollection.length ? filterCollection :\n fColl.filter(function (col) { return col.field = _this.options.field; });\n _this.options.handler(args);\n });\n };\n CheckBoxFilterBase.prototype.foreignFilter = function (args, value) {\n var operator = this.options.isRemote ?\n (this.options.column.type === 'string' ? 'contains' : 'equal') : (this.options.column.type ? 'contains' : 'equal');\n var initalPredicate = new Predicate(this.options.column.foreignKeyValue, operator, value, true, this.options.ignoreAccent);\n this.foreignKeyFilter(args, [args.filterCollection], initalPredicate);\n };\n CheckBoxFilterBase.prototype.searchBoxClick = function (e) {\n var target = e.target;\n if (target.classList.contains('e-searchclear')) {\n this.sInput.value = target.classList.contains('e-chkcancel-icon') ? '' : this.sInput.value;\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n this.sInput.focus();\n }\n };\n CheckBoxFilterBase.prototype.searchBoxKeyUp = function (e) {\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n if (this.isCheckboxFilterTemplate) {\n this.parent.notify('refreshCheckbox', { event: e });\n }\n else {\n this.refreshCheckboxes();\n }\n this.updateSearchIcon();\n };\n CheckBoxFilterBase.prototype.updateSearchIcon = function () {\n if (this.sInput.value.length) {\n classList(this.sIcon, ['e-chkcancel-icon'], ['e-search-icon']);\n }\n else {\n classList(this.sIcon, ['e-search-icon'], ['e-chkcancel-icon']);\n }\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - Defines localization key\n * @returns {string} - returns localization label\n */\n CheckBoxFilterBase.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n CheckBoxFilterBase.prototype.updateDataSource = function () {\n var dataSource = this.options.dataSource;\n var str = 'object';\n if (!(dataSource instanceof DataManager)) {\n for (var i = 0; i < dataSource.length; i++) {\n // eslint-disable-next-line valid-typeof\n if (typeof dataSource !== str) {\n var obj = {};\n obj[this.options.field] = dataSource[parseInt(i.toString(), 10)];\n dataSource[parseInt(i.toString(), 10)] = obj;\n }\n }\n }\n };\n CheckBoxFilterBase.prototype.updateModel = function (options) {\n this.options = options;\n this.existingPredicate = options.actualPredicate || {};\n this.options.dataSource = options.dataSource;\n this.options.dataManager = options.dataManager ? options.dataManager : options.dataSource;\n this.updateDataSource();\n this.options.type = options.type;\n this.options.format = options.format || '';\n this.options.ignoreAccent = options.ignoreAccent || false;\n this.options.filteredColumns = options.filteredColumns || this.parent.filterSettings.columns;\n this.options.query = options.query || new Query();\n this.options.allowCaseSensitive = options.allowCaseSensitive || false;\n this.options.uid = options.column.uid;\n this.options.disableHtmlEncode = options.column.disableHtmlEncode || false;\n this.values = {};\n this.localeObj = options.localeObj;\n this.isFiltered = options.filteredColumns.length;\n };\n CheckBoxFilterBase.prototype.getAndSetChkElem = function (options) {\n this.dlg = this.parent.createElement('div', {\n id: this.id + this.options.type + '_excelDlg',\n attrs: { uid: this.options.column.uid },\n className: 'e-checkboxfilter e-filter-popup'\n });\n this.sBox = this.parent.createElement('div', { className: 'e-searchcontainer' });\n if (!options.hideSearchbox) {\n this.sInput = this.parent.createElement('input', {\n id: this.id + '_SearchBox',\n className: 'e-searchinput'\n });\n this.sIcon = this.parent.createElement('span', {\n className: 'e-searchclear e-search-icon e-icons e-input-group-icon', attrs: {\n type: 'text', title: this.getLocalizedLabel('Search')\n }\n });\n this.searchBox = this.parent.createElement('span', { className: 'e-searchbox e-fields' });\n this.searchBox.appendChild(this.sInput);\n this.sBox.appendChild(this.searchBox);\n var inputargs = {\n element: this.sInput, floatLabelType: 'Never', properties: {\n placeholder: this.getLocalizedLabel('Search'),\n cssClass: this.parent.cssClass\n }\n };\n Input.createInput(inputargs, this.parent.createElement);\n this.searchBox.querySelector('.e-input-group').appendChild(this.sIcon);\n }\n this.spinner = this.parent.createElement('div', { className: 'e-spinner' }); //for spinner\n this.cBox = this.parent.createElement('div', {\n id: this.id + this.options.type + '_CheckBoxList',\n className: 'e-checkboxlist e-fields'\n });\n this.spinner.appendChild(this.cBox);\n this.sBox.appendChild(this.spinner);\n return this.sBox;\n };\n CheckBoxFilterBase.prototype.showDialog = function (options) {\n var args = {\n requestType: filterBeforeOpen,\n columnName: this.options.field, columnType: this.options.type, cancel: false\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(cBoxFltrBegin, args);\n if (args.cancel) {\n options.cancel = args.cancel;\n return;\n }\n this.dialogObj = new Dialog({\n visible: false, content: this.sBox,\n close: this.closeDialog.bind(this),\n enableRtl: this.parent.enableRtl,\n width: (!isNullOrUndefined(parentsUntil(options.target, 'e-bigger')))\n || this.parent.element.classList.contains('e-device') ? 260 : 255,\n target: this.parent.element, animationSettings: { effect: 'None' },\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: {\n content: this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true\n }\n },\n {\n click: this.btnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.getLocalizedLabel(this.isExcel ? 'CancelButton' : 'ClearButton') }\n }],\n created: this.dialogCreated.bind(this),\n open: this.dialogOpen.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveFilter(options);\n this.dlg.setAttribute('aria-label', this.getLocalizedLabel('ExcelFilterDialogARIA'));\n if (options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-responsive-dialog > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlg);\n }\n else {\n this.parent.element.appendChild(this.dlg);\n }\n this.dialogObj.appendTo(this.dlg);\n this.dialogObj.element.style.maxHeight = options.isResponsiveFilter ? 'none' : this.options.height + 'px';\n this.dialogObj.show();\n var content = this.dialogObj.element.querySelector('.e-dlg-content');\n content.appendChild(this.sBox);\n this.wireEvents();\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n this.parent.showMaskRow(undefined, this.dialogObj.element);\n }\n else {\n createSpinner({ target: this.spinner, cssClass: this.parent.cssClass ? this.parent.cssClass : null }, this.parent.createElement);\n showSpinner(this.spinner);\n }\n this.getAllData();\n };\n CheckBoxFilterBase.prototype.renderResponsiveFilter = function (options) {\n if (options.isResponsiveFilter) {\n this.dialogObj.buttons = [{}];\n this.dialogObj.position = { X: '', Y: '' };\n this.dialogObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dialogObj.width = '100%';\n }\n };\n CheckBoxFilterBase.prototype.dialogCreated = function (e) {\n if (this.options.isResponsiveFilter) {\n this.dialogObj.element.style.left = '0px';\n }\n else {\n if (!Browser.isDevice) {\n getFilterMenuPostion(this.options.target, this.dialogObj);\n }\n else {\n this.dialogObj.position = { X: 'center', Y: 'center' };\n }\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(filterDialogCreated, e);\n }\n };\n CheckBoxFilterBase.prototype.openDialog = function (options) {\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n };\n CheckBoxFilterBase.prototype.closeDialog = function () {\n if (this.dialogObj && !this.dialogObj.isDestroyed) {\n this.isBlanks = false;\n var filterTemplateCol = this.options.columns.filter(function (col) { return col.getFilterItemTemplate(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var registeredTemplate = this.parent.registeredTemplate;\n if (filterTemplateCol.length && !isNullOrUndefined(registeredTemplate) && registeredTemplate.filterItemTemplate) {\n this.parent.destroyTemplate(['filterItemTemplate']);\n }\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterItemTemplate']);\n }\n this.parent.notify(filterMenuClose, { field: this.options.field });\n this.dialogObj.destroy();\n this.unWireEvents();\n remove(this.dlg);\n this.dlg = null;\n this.parent.notify(filterDialogClose, {});\n }\n };\n /**\n * @param {Column} col - Defines column details\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.clearFilter = function (col) {\n // eslint-disable-next-line max-len\n var args = { instance: this, handler: this.clearFilter, cancel: false };\n this.parent.notify(fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n this.options.handler({ action: 'clear-filter', field: col ? col.field : this.options.field });\n };\n CheckBoxFilterBase.prototype.btnClick = function (e) {\n if (this.filterState) {\n if ((e.target.tagName.toLowerCase() === 'input' && e.target.classList.contains('e-searchinput')) ||\n e.keyCode === 13) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else {\n var text = e.target.firstChild.textContent.toLowerCase();\n if (this.getLocalizedLabel(this.isExcel ? 'OKButton' : 'FilterButton').toLowerCase() === text) {\n if (!this.isCheckboxFilterTemplate) {\n this.fltrBtnHandler();\n }\n }\n else if (this.getLocalizedLabel('ClearButton').toLowerCase() === text) {\n this.clearFilter();\n }\n }\n this.closeDialog();\n }\n else if (!(e.target.tagName.toLowerCase() === 'input')) {\n this.clearFilter();\n this.closeDialog();\n }\n if (this.options.column.showColumnMenu) {\n this.parent.notify(afterFilterColumnMenuClose, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n CheckBoxFilterBase.prototype.fltrBtnHandler = function () {\n var _this = this;\n var checked = [].slice.call(this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)'));\n var check = checked;\n var optr = 'equal';\n var ddlValue = this.dialogObj.element.querySelector('.e-dropdownlist');\n if (ddlValue) {\n this.options.operator = optr = ddlValue.ej2_instances[0].value;\n }\n this.isMenuNotEqual = this.options.operator === 'notequal';\n var searchInput;\n if (!this.options.hideSearchbox) {\n searchInput = this.searchBox.querySelector('.e-searchinput');\n }\n var caseSen = this.options.allowCaseSensitive;\n var defaults = {\n field: this.options.field, predicate: this.isMenuNotEqual ? 'and' : 'or', uid: this.options.uid,\n operator: optr, type: this.options.type, matchCase: caseSen, ignoreAccent: this.options.ignoreAccent\n };\n var isNotEqual = this.itemsCnt !== checked.length && this.itemsCnt - checked.length < checked.length;\n if (isNotEqual && searchInput && searchInput.value === '') {\n optr = this.isMenuNotEqual ? 'equal' : 'notequal';\n checked = [].slice.call(this.cBox.querySelectorAll('.e-uncheck:not(.e-selectall)'));\n defaults.predicate = this.isMenuNotEqual ? 'or' : 'and';\n defaults.operator = optr;\n }\n var value;\n var val;\n var length;\n var fObj;\n var coll = [];\n if (checked.length !== this.itemsCnt || (searchInput && searchInput.value && searchInput.value !== '')) {\n for (var i = 0; i < checked.length; i++) {\n value = this.values[parentsUntil(checked[parseInt(i.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n fObj = extend({}, { value: value }, defaults);\n if (value && !value.toString().length) {\n fObj.operator = isNotEqual ? 'notequal' : 'equal';\n }\n if (value === '' || isNullOrUndefined(value)) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n }\n else {\n coll.push(fObj);\n }\n var args = {\n instance: this, handler: this.fltrBtnHandler, arg1: fObj.field, arg2: fObj.predicate, arg3: fObj.operator,\n arg4: fObj.matchCase, arg5: fObj.ignoreAccent, arg6: fObj.value, cancel: false\n };\n this.parent.notify(fltrPrevent, args);\n if (args.cancel) {\n return;\n }\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && check.length) {\n length = check.length - 1;\n val = this.values[parentsUntil(check[parseInt(length.toString(), 10)], 'e-ftrchk').getAttribute('uid')];\n if (isNullOrUndefined(val) && isNotEqual) {\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: 'equal',\n predicate: 'and', value: null\n });\n }\n }\n if (this.cBox.querySelector('.e-add-current') && this.cBox.querySelector('.e-add-current').classList.contains('e-check')) {\n var existingPredicate_1 = this.existingPredicate[this.options.field];\n if (existingPredicate_1) {\n var _loop_1 = function (j) {\n if (!coll.some(function (data) {\n return data\n .value === existingPredicate_1[parseInt(j.toString(), 10)].value;\n })) {\n coll.push(existingPredicate_1[parseInt(j.toString(), 10)]);\n }\n };\n for (var j = 0; j < existingPredicate_1.length; j++) {\n _loop_1(j);\n }\n }\n else {\n return;\n }\n }\n this.initiateFilter(coll);\n }\n else {\n var isClearFilter = this.options.filteredColumns.some(function (value) {\n return _this.options.field === value.field;\n });\n if (isClearFilter) {\n this.clearFilter();\n }\n }\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.generateNullValuePredicates = function (defaults) {\n var coll = [];\n if (defaults.type === 'string') {\n coll.push({\n field: defaults.field, ignoreAccent: defaults.ignoreAccent, matchCase: defaults.matchCase,\n operator: defaults.operator, predicate: defaults.predicate, value: ''\n });\n }\n coll.push({\n field: defaults.field,\n matchCase: defaults.matchCase, operator: defaults.operator, predicate: defaults.predicate, value: null\n });\n coll.push({\n field: defaults.field, matchCase: defaults.matchCase, operator: defaults.operator,\n predicate: defaults.predicate, value: undefined\n });\n return coll;\n };\n // eslint-disable-next-line\n /** @hidden */\n CheckBoxFilterBase.prototype.initiateFilter = function (fColl) {\n var firstVal = fColl[0];\n var predicate;\n if (!isNullOrUndefined(firstVal)) {\n predicate = firstVal.ejpredicate ? firstVal.ejpredicate :\n new Predicate(firstVal.field, firstVal.operator, firstVal.value, !firstVal.matchCase, firstVal.ignoreAccent);\n for (var j = 1; j < fColl.length; j++) {\n predicate = fColl[parseInt(j.toString(), 10)].ejpredicate !== undefined ?\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].ejpredicate) :\n predicate[fColl[parseInt(j.toString(), 10)].predicate](fColl[parseInt(j.toString(), 10)].field, fColl[parseInt(j.toString(), 10)].operator, fColl[parseInt(j.toString(), 10)].value, !fColl[parseInt(j.toString(), 10)].matchCase, fColl[parseInt(j.toString(), 10)].ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: Predicate.or(predicate)\n };\n this.options.handler(args);\n }\n };\n CheckBoxFilterBase.prototype.isForeignColumn = function (col) {\n return col.isForeignColumn ? col.isForeignColumn() : false;\n };\n CheckBoxFilterBase.prototype.refreshCheckboxes = function () {\n var _this = this;\n var val = this.sInput.value;\n var column = this.options.column;\n var query = this.isForeignColumn(column) ? this.foreignKeyQuery.clone() : this.options.query.clone();\n var foreignQuery = this.options.query.clone();\n var pred = query.queries.filter(function (e) { return e && e.fn === 'onWhere'; })[0];\n query.queries = [];\n foreignQuery.queries = [];\n var parsed = (this.options.type !== 'string' && parseFloat(val)) ? parseFloat(val) : val;\n var operator = this.options.isRemote ?\n (this.options.type === 'string' ? 'contains' : 'equal') : (this.options.type ? 'contains' : 'equal');\n var matchCase = true;\n var ignoreAccent = this.options.ignoreAccent;\n var field = this.isForeignColumn(column) ? column.foreignKeyValue : column.field;\n parsed = (parsed === '' || parsed === undefined) ? undefined : parsed;\n var coll = [];\n var defaults = {\n field: field, predicate: 'or', uid: this.options.uid,\n operator: 'equal', type: this.options.type, matchCase: matchCase, ignoreAccent: ignoreAccent\n };\n var predicte;\n var moduleName = this.options.dataManager.adaptor.getModuleName;\n if (this.options.type === 'boolean') {\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1) {\n parsed = 'false';\n }\n if (parsed !== undefined &&\n this.getLocalizedLabel('FilterTrue').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? true : 'true';\n }\n else if (parsed !== undefined &&\n this.getLocalizedLabel('FilterFalse').toLowerCase().indexOf(parsed.toLowerCase()) !== -1 && moduleName) {\n // eslint-disable-next-line no-constant-condition\n parsed = (moduleName() === 'ODataAdaptor' || 'ODataV4Adaptor') ? false : 'false';\n }\n operator = 'equal';\n }\n if ((this.options.type === 'date' || this.options.type === 'datetime') && this.options.format) {\n var intl = new Internationalization();\n var format = typeof (this.options.format) === 'string' ? this.options.format :\n this.options.format.format;\n if (format) {\n parsed = intl.parseDate(val, { format: format }) || new Date(val);\n }\n else {\n parsed = new Date(val);\n }\n }\n this.addDistinct(query);\n var args = {\n requestType: filterSearchBegin,\n filterModel: this, columnName: field, column: column,\n operator: operator, matchCase: matchCase, ignoreAccent: ignoreAccent, filterChoiceCount: null,\n query: query, value: parsed\n };\n this.parent.trigger(actionBegin, args, function (filterargs) {\n // eslint-disable-next-line no-self-assign\n filterargs.operator = filterargs.operator;\n predicte = new Predicate(field, filterargs.operator, args.value, filterargs.matchCase, filterargs.ignoreAccent);\n if (_this.options.type === 'date' || _this.options.type === 'datetime') {\n operator = 'equal';\n var filterObj = {\n field: field, operator: operator, value: parsed, matchCase: matchCase,\n ignoreAccent: ignoreAccent\n };\n if (!isNullOrUndefined(parsed)) {\n predicte = getDatePredicate(filterObj, _this.options.type);\n }\n }\n if (val && typeof val === 'string' && _this.isBlanks &&\n _this.getLocalizedLabel('Blanks').toLowerCase().indexOf(val.toLowerCase()) >= 0) {\n coll = coll.concat(CheckBoxFilterBase.generateNullValuePredicates(defaults));\n var emptyValPredicte = CheckBoxFilterBase.generatePredicate(coll);\n emptyValPredicte.predicates.push(predicte);\n query.where(emptyValPredicte);\n }\n else if (val.length) {\n predicte = !isNullOrUndefined(pred) ? predicte.and(pred.e) : predicte;\n query.where(predicte);\n }\n else if (!isNullOrUndefined(pred)) {\n query.where(pred.e);\n }\n filterargs.filterChoiceCount = !isNullOrUndefined(filterargs.filterChoiceCount) ? filterargs.filterChoiceCount : 1000;\n var fPredicate = {};\n showSpinner(_this.spinner);\n _this.renderEmpty = false;\n if (_this.isForeignColumn(column) && val.length) {\n var colData = ('result' in column.dataSource) ? new DataManager(column.dataSource.result) :\n column.dataSource;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n colData.executeQuery(query).then(function (e) {\n var columnData = _this.options.column.columnData;\n _this.options.column.columnData = e.result;\n _this.parent.notify(generateQuery, { predicate: fPredicate, column: column });\n if (fPredicate.predicate.predicates.length) {\n foreignQuery.where(fPredicate.predicate);\n }\n else {\n _this.renderEmpty = true;\n }\n _this.options.column.columnData = columnData;\n foreignQuery.take(filterargs.filterChoiceCount);\n _this.search(filterargs, foreignQuery);\n });\n }\n else {\n query.take(filterargs.filterChoiceCount);\n _this.search(filterargs, query);\n }\n });\n };\n CheckBoxFilterBase.prototype.search = function (args, query) {\n if (this.parent.dataSource && 'result' in this.parent.dataSource) {\n this.filterEvent(args, query);\n }\n else {\n this.processSearch(query);\n }\n };\n CheckBoxFilterBase.prototype.getPredicateFromCols = function (columns) {\n var predicates = CheckBoxFilterBase.getPredicate(columns);\n var predicateList = [];\n var fPredicate = {};\n var isGrid = this.parent.getForeignKeyColumns !== undefined;\n var foreignColumn = isGrid ? this.parent.getForeignKeyColumns() : [];\n for (var _i = 0, _a = Object.keys(predicates); _i < _a.length; _i++) {\n var prop = _a[_i];\n var col = void 0;\n if (isGrid && !this.parent.getColumnByField(prop)) {\n col = getColumnByForeignKeyValue(prop, foreignColumn);\n }\n if (col) {\n this.parent.notify(generateQuery, { predicate: fPredicate, column: col });\n if (fPredicate.predicate.predicates.length) {\n predicateList.push(Predicate.or(fPredicate.predicate.predicates));\n }\n }\n else {\n predicateList.push(predicates[\"\" + prop]);\n }\n }\n return predicateList.length && Predicate.and(predicateList);\n };\n CheckBoxFilterBase.prototype.getQuery = function () {\n return this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n };\n CheckBoxFilterBase.prototype.getAllData = function () {\n var _this = this;\n this.customQuery = false;\n var query = this.getQuery();\n query.requiresCount(); //consider take query\n this.addDistinct(query);\n var args = {\n requestType: filterChoiceRequest, query: query, filterChoiceCount: null\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(actionBegin, args, function (args) {\n args.filterChoiceCount = !isNullOrUndefined(args.filterChoiceCount) ? args.filterChoiceCount : 1000;\n query.take(args.filterChoiceCount);\n if (!args.query.distincts.length) {\n _this.customQuery = true;\n _this.queryGenerate(query);\n }\n if (_this.parent.dataSource && 'result' in _this.parent.dataSource) {\n _this.filterEvent(args, query);\n }\n else {\n _this.processDataOperation(query, true);\n }\n });\n };\n CheckBoxFilterBase.prototype.addDistinct = function (query) {\n var filteredColumn = DataUtil.distinct(this.options.filteredColumns, 'field');\n if (filteredColumn.indexOf(this.options.column.field) <= -1) {\n filteredColumn = filteredColumn.concat(this.options.column.field);\n }\n query.distinct(filteredColumn);\n return query;\n };\n CheckBoxFilterBase.prototype.filterEvent = function (args, query) {\n var _this = this;\n var defObj = eventPromise(args, query);\n this.parent.trigger(dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n _this.dataSuccess(e);\n });\n };\n CheckBoxFilterBase.prototype.processDataOperation = function (query, isInitial) {\n var _this = this;\n this.options.dataSource = this.options.dataSource instanceof DataManager ?\n this.options.dataSource : new DataManager(this.options.dataSource);\n var allPromise = [];\n var runArray = [];\n if (this.isForeignColumn(this.options.column) && isInitial) {\n var colData = ('result' in this.options.column.dataSource) ?\n new DataManager(this.options.column.dataSource.result) :\n this.options.column.dataSource;\n this.foreignKeyQuery.params = query.params;\n allPromise.push(colData.executeQuery(this.foreignKeyQuery));\n runArray.push(function (data) { return _this.foreignKeyData = data; });\n }\n allPromise.push(this.options.dataSource.executeQuery(query));\n runArray.push(this.dataSuccess.bind(this));\n var i = 0;\n Promise.all(allPromise).then(function (e) {\n for (var j = 0; j < e.length; j++) {\n runArray[i++](e[parseInt(j.toString(), 10)].result);\n }\n });\n };\n CheckBoxFilterBase.prototype.dataSuccess = function (e) {\n this.fullData = e;\n var args1 = { dataSource: this.fullData, executeQuery: true, field: this.options.field };\n this.parent.notify(beforeCheckboxRenderer, args1);\n if (args1.executeQuery) {\n var query = new Query();\n if (!this.customQuery) {\n this.queryGenerate(query);\n }\n // query.select(this.options.field);\n var result = new DataManager(args1.dataSource).executeLocal(query);\n var col = this.options.column;\n this.filteredData = CheckBoxFilterBase.getDistinct(result, this.options.field, col, this.foreignKeyData).records || [];\n }\n var data = args1.executeQuery ? this.filteredData : args1.dataSource;\n this.processDataSource(null, true, data, args1);\n if (this.sInput) {\n this.sInput.focus();\n }\n var args = {\n requestType: filterAfterOpen,\n columnName: this.options.field, columnType: this.options.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(cBoxFltrComplete, args);\n if (this.isCheckboxFilterTemplate) {\n hideSpinner(this.spinner);\n }\n };\n CheckBoxFilterBase.prototype.queryGenerate = function (query) {\n if (this.parent.searchSettings && this.parent.searchSettings.key.length) {\n var sSettings = this.parent.searchSettings;\n var fields = sSettings.fields.length ? sSettings.fields : this.options.columns.map(function (f) { return f.field; });\n query.search(sSettings.key, fields, sSettings.operator, sSettings.ignoreCase, sSettings.ignoreAccent);\n }\n if ((this.options.filteredColumns.length)) {\n var cols = [];\n for (var i = 0; i < this.options.filteredColumns.length; i++) {\n var filterColumn = this.options.filteredColumns[parseInt(i.toString(), 10)];\n if (this.options.uid) {\n filterColumn.uid = filterColumn.uid || this.parent.getColumnByField(filterColumn.field).uid;\n if (filterColumn.uid !== this.options.uid) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n else {\n if (filterColumn.field !== this.options.field) {\n cols.push(this.options.filteredColumns[parseInt(i.toString(), 10)]);\n }\n }\n }\n var predicate = this.getPredicateFromCols(cols);\n if (predicate) {\n query.where(predicate);\n }\n }\n };\n CheckBoxFilterBase.prototype.processDataSource = function (query, isInitial, dataSource, args) {\n showSpinner(this.spinner);\n // query = query ? query : this.options.query.clone();\n // query.requiresCount();\n // let result: Object = new DataManager(dataSource as JSON[]).executeLocal(query);\n // let res: { result: Object[] } = result as { result: Object[] };\n this.updateResult();\n var args1 = { dataSource: this.fullData, isCheckboxFilterTemplate: false, column: this.options.column,\n element: this.cBox, type: this.options.type, format: this.options.type, btnObj: this.options.isResponsiveFilter ? null :\n this.dialogObj.btnObj[0], searchBox: this.searchBox };\n this.parent.notify(beforeCheckboxfilterRenderer, args1);\n this.isCheckboxFilterTemplate = args1.isCheckboxFilterTemplate;\n if (!this.isCheckboxFilterTemplate) {\n this.createFilterItems(dataSource, isInitial, args);\n }\n };\n CheckBoxFilterBase.prototype.processSearch = function (query) {\n this.processDataOperation(query);\n };\n CheckBoxFilterBase.prototype.updateResult = function () {\n this.result = {};\n var predicate = this.getPredicateFromCols(this.options.filteredColumns);\n var query = new Query();\n if (predicate) {\n query.where(predicate);\n }\n this.parent.notify(beforeCheckboxRendererQuery, { query: query });\n var result = new DataManager(this.fullData).executeLocal(query);\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n this.result[getObject(this.options.field, res)] = true;\n }\n };\n CheckBoxFilterBase.prototype.clickHandler = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.parent.loadingIndicator) && this.parent.loadingIndicator.indicatorType === 'Shimmer'\n && parentsUntil(target, 'e-mask-ftrchk')) {\n return;\n }\n var elem = parentsUntil(target, 'e-checkbox-wrapper');\n if (parentsUntil(target, 'e-searchbox')) {\n this.searchBoxClick(e);\n }\n if (elem && !this.isCheckboxFilterTemplate) {\n var selectAll$$1 = elem.querySelector('.e-selectall');\n if (selectAll$$1) {\n this.updateAllCBoxes(!selectAll$$1.classList.contains('e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n this.updateIndeterminatenBtn();\n elem.querySelector('.e-chk-hidden').focus();\n }\n this.setFocus(parentsUntil(elem, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.keyupHandler = function (e) {\n this.setFocus(parentsUntil(e.target, 'e-ftrchk'));\n };\n CheckBoxFilterBase.prototype.setFocus = function (elem) {\n var prevElem = this.dlg.querySelector('.e-chkfocus');\n if (prevElem) {\n prevElem.classList.remove('e-chkfocus');\n }\n if (elem) {\n elem.classList.add('e-chkfocus');\n }\n };\n CheckBoxFilterBase.prototype.updateAllCBoxes = function (checked) {\n var cBoxes = [].slice.call(this.cBox.querySelectorAll('.e-frame:not(.e-add-current)'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n setChecked(cBox.previousSibling, checked);\n }\n };\n CheckBoxFilterBase.prototype.dialogOpen = function () {\n if (this.parent.element.classList.contains('e-device')) {\n this.dialogObj.element.querySelector('.e-input-group').classList.remove('e-input-focus');\n if (!this.options.isResponsiveFilter) {\n this.dialogObj.element.querySelector('.e-btn').focus();\n }\n }\n };\n CheckBoxFilterBase.prototype.createCheckbox = function (value, checked, data) {\n var elem = checked ? this.cBoxTrue.cloneNode(true) :\n this.cBoxFalse.cloneNode(true);\n setChecked(elem.querySelector('input'), checked);\n var label = elem.querySelector('.e-label');\n var dummyData = extendObjWithFn({}, data, { column: this.options.column, parent: this.parent });\n var innerText = this.options.disableHtmlEncode ? 'textContent' : 'innerHTML';\n label[\"\" + innerText] = !isNullOrUndefined(value) && value.toString().length ? value :\n this.getLocalizedLabel('Blanks');\n if (label.innerHTML === this.getLocalizedLabel('Blanks')) {\n this.isBlanks = true;\n }\n if (typeof value === 'boolean') {\n label.innerHTML = value === true ? this.getLocalizedLabel('FilterTrue') : this.getLocalizedLabel('FilterFalse');\n }\n addClass([label], ['e-checkboxfiltertext']);\n if (this.options.template && data[this.options.column.field] !== this.getLocalizedLabel('SelectAll')\n && data[this.options.column.field] !== this.getLocalizedLabel('AddCurrentSelection')) {\n label.innerHTML = '';\n var isReactCompiler = this.parent.isReact && this.options.column.filter\n && typeof (this.options.column.filter.itemTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.options.template(dummyData, this.parent, 'filterItemTemplate', null, null, null, label);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(label, this.options.template(dummyData, this.parent, 'filterItemTemplate'));\n }\n }\n return elem;\n };\n CheckBoxFilterBase.prototype.updateIndeterminatenBtn = function () {\n var cnt = this.cBox.children.length - 1;\n var className = [];\n var disabled = false;\n var elem = this.cBox.querySelector('.e-selectall');\n var selected = this.cBox.querySelectorAll('.e-check:not(.e-selectall):not(.e-add-current)').length;\n if (this.cBox.querySelector('.e-add-current')) {\n cnt -= 1;\n }\n var btn;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n btn.disabled = false;\n }\n var input = elem.previousSibling;\n setChecked(input, false);\n input.indeterminate = false;\n if (cnt === selected) {\n className = ['e-check'];\n setChecked(input, true);\n }\n else if (selected) {\n className = ['e-stop'];\n input.indeterminate = true;\n }\n else {\n className = ['e-uncheck'];\n disabled = true;\n if (btn) {\n btn.disabled = true;\n }\n }\n if (btn) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n this.parent.notify(refreshCustomFilterOkBtn, { disabled: disabled });\n };\n CheckBoxFilterBase.prototype.createFilterItems = function (data, isInitial, args1) {\n var _a, _b;\n var cBoxes = this.parent.createElement('div');\n var btn;\n var disabled = false;\n if (!this.options.isResponsiveFilter) {\n btn = this.dialogObj.btnObj[0];\n }\n var nullCounter = -1;\n var key = 'ejValue';\n if (!args1.executeQuery) {\n key = args1.field;\n }\n for (var i = 0; i < data.length; i++) {\n var val = getValue(key, data[parseInt(i.toString(), 10)]);\n if (val === '' || isNullOrUndefined(val)) {\n nullCounter = nullCounter + 1;\n }\n }\n this.itemsCnt = nullCounter !== -1 ? data.length - nullCounter : data.length;\n if (data.length && !this.renderEmpty) {\n var selectAllValue = this.getLocalizedLabel('SelectAll');\n var innerDiv = this.cBox.querySelector('.e-checkfltrnmdiv');\n if (innerDiv) {\n innerDiv.classList.remove('e-checkfltrnmdiv');\n }\n var checkBox = this.createCheckbox(selectAllValue, false, (_a = {}, _a[this.options.field] = selectAllValue, _a));\n if (this.parent.cssClass) {\n addClass([checkBox], [this.parent.cssClass]);\n }\n var selectAll$$1 = createCboxWithWrap(getUid('cbox'), checkBox, 'e-ftrchk');\n selectAll$$1.querySelector('.e-frame').classList.add('e-selectall');\n cBoxes.appendChild(selectAll$$1);\n var predicate = new Predicate('field', 'equal', this.options.field);\n if (this.options.foreignKeyValue) {\n predicate = predicate.or('field', 'equal', this.options.foreignKeyValue);\n }\n var isColFiltered = new DataManager(this.options.filteredColumns).executeLocal(new Query().where(predicate)).length;\n if (this.sInput.value) {\n var predicateCheckBox = this.createCheckbox(this.getLocalizedLabel('AddCurrentSelection'), false, (_b = {}, _b[this.options.field] = this.getLocalizedLabel('AddCurrentSelection'), _b));\n if (this.parent.cssClass) {\n addClass([predicateCheckBox], [this.parent.cssClass]);\n }\n var predicateElement = createCboxWithWrap(getUid('cbox'), predicateCheckBox, 'e-ftrchk');\n predicateElement.querySelector('.e-frame').classList.add('e-add-current');\n cBoxes.appendChild(predicateElement);\n }\n var isRndere = void 0;\n for (var i = 0; i < data.length; i++) {\n var uid = getUid('cbox');\n this.values[\"\" + uid] = getValue(key, data[parseInt(i.toString(), 10)]);\n var value = getValue(this.options.field, data[parseInt(i.toString(), 10)]);\n if (this.options.formatFn) {\n value = this.valueFormatter.toView(value, this.options.formatFn);\n }\n var args_1 = { value: value, column: this.options.column, data: data[parseInt(i.toString(), 10)] };\n this.parent.notify(filterCboxValue, args_1);\n value = args_1.value;\n if ((value === '' || isNullOrUndefined(value))) {\n if (isRndere) {\n continue;\n }\n isRndere = true;\n }\n var checkbox = this.createCheckbox(value, this.getCheckedState(isColFiltered, this.values[\"\" + uid]), getValue('dataObj', data[parseInt(i.toString(), 10)]));\n cBoxes.appendChild(createCboxWithWrap(uid, checkbox, 'e-ftrchk'));\n }\n this.cBox.innerHTML = '';\n appendChildren(this.cBox, [].slice.call(cBoxes.children));\n this.updateIndeterminatenBtn();\n if (btn) {\n btn.disabled = false;\n }\n disabled = false;\n }\n else {\n cBoxes.appendChild(this.parent.createElement('span', { innerHTML: this.getLocalizedLabel('NoResult') }));\n this.cBox.innerHTML = '';\n this.cBox.appendChild(this.parent.createElement('div', { className: 'e-checkfltrnmdiv' }));\n appendChildren(this.cBox.children[0], [].slice.call(cBoxes.children));\n if (btn) {\n btn.disabled = true;\n }\n disabled = true;\n }\n if (btn && data.length) {\n this.filterState = !btn.disabled;\n btn.dataBind();\n }\n var args = { requestType: filterChoiceRequest, dataSource: this.renderEmpty ? [] : data };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.notify(cBoxFltrComplete, args);\n this.parent.notify(refreshCustomFilterOkBtn, { disabled: disabled });\n hideSpinner(this.spinner);\n };\n CheckBoxFilterBase.prototype.getCheckedState = function (isColFiltered, value) {\n if (!this.isFiltered || !isColFiltered) {\n return true;\n }\n else {\n var checkState = this.sInput.value ? true : this.result[\"\" + value];\n return this.options.operator === 'notequal' ? !checkState : checkState;\n }\n };\n CheckBoxFilterBase.getDistinct = function (json, field, column, foreignKeyData$$1) {\n var len = json.length;\n var result = [];\n var value;\n var ejValue = 'ejValue';\n var lookup = {};\n var isForeignKey = column && column.isForeignColumn ? column.isForeignColumn() : false;\n while (len--) {\n value = json[parseInt(len.toString(), 10)];\n value = getObject(field, value); //local remote diff, check with mdu\n if (!(value in lookup)) {\n var obj = {};\n obj[\"\" + ejValue] = value;\n lookup[\"\" + value] = true;\n if (isForeignKey) {\n var foreignDataObj = getForeignData(column, {}, value, foreignKeyData$$1)[0];\n setValue(foreignKeyData, foreignDataObj, json[parseInt(len.toString(), 10)]);\n value = getValue(column.foreignKeyValue, foreignDataObj);\n }\n setValue(field, isNullOrUndefined(value) ? null : value, obj);\n setValue('dataObj', json[parseInt(len.toString(), 10)], obj);\n result.push(obj);\n }\n }\n return DataUtil.group(DataUtil.sort(result, field, DataUtil.fnAscending), 'ejValue');\n };\n CheckBoxFilterBase.getPredicate = function (columns) {\n var cols = DataUtil.distinct(columns, 'field', true) || [];\n var collection = [];\n var pred = {};\n for (var i = 0; i < cols.length; i++) {\n collection = new DataManager(columns).executeLocal(new Query().where('field', 'equal', cols[parseInt(i.toString(), 10)].field));\n if (collection.length !== 0) {\n pred[cols[parseInt(i.toString(), 10)].field] = CheckBoxFilterBase.generatePredicate(collection);\n }\n }\n return pred;\n };\n CheckBoxFilterBase.generatePredicate = function (cols) {\n var len = cols ? cols.length : 0;\n var predicate;\n var operate = 'or';\n var first = CheckBoxFilterBase.updateDateFilter(cols[0]);\n first.ignoreAccent = !isNullOrUndefined(first.ignoreAccent) ? first.ignoreAccent : false;\n if (first.type === 'date' || first.type === 'datetime') {\n predicate = getDatePredicate(first, first.type);\n }\n else {\n predicate = first.ejpredicate ? first.ejpredicate :\n new Predicate(first.field, first.operator, first.value, !CheckBoxFilterBase.getCaseValue(first), first.ignoreAccent);\n }\n for (var p = 1; p < len; p++) {\n cols[parseInt(p.toString(), 10)] = CheckBoxFilterBase.updateDateFilter(cols[parseInt(p.toString(), 10)]);\n if (len > 2 && p > 1 && cols[parseInt(p.toString(), 10)].predicate === 'or') {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime') {\n predicate.predicates.push(getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type));\n }\n else {\n predicate.predicates.push(new Predicate(cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent));\n }\n }\n else {\n if (cols[parseInt(p.toString(), 10)].type === 'date' || cols[parseInt(p.toString(), 10)].type === 'datetime') {\n if (cols[parseInt(p.toString(), 10)].predicate === 'and' && cols[parseInt(p.toString(), 10)].operator === 'equal') {\n predicate = predicate[\"\" + operate](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n else {\n predicate = predicate[(cols[parseInt(p.toString(), 10)].predicate)](getDatePredicate(cols[parseInt(p.toString(), 10)], cols[parseInt(p.toString(), 10)].type), cols[parseInt(p.toString(), 10)].type, cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n else {\n predicate = cols[parseInt(p.toString(), 10)].ejpredicate ?\n predicate[cols[parseInt(p.toString(), 10)]\n .predicate](cols[parseInt(p.toString(), 10)].ejpredicate) :\n predicate[(cols[parseInt(p.toString(), 10)].predicate)](cols[parseInt(p.toString(), 10)].field, cols[parseInt(p.toString(), 10)].operator, cols[parseInt(p.toString(), 10)].value, !CheckBoxFilterBase.getCaseValue(cols[parseInt(p.toString(), 10)]), cols[parseInt(p.toString(), 10)].ignoreAccent);\n }\n }\n }\n return predicate || null;\n };\n CheckBoxFilterBase.getCaseValue = function (filter) {\n if (isNullOrUndefined(filter.matchCase)) {\n if (filter.type === 'string' || isNullOrUndefined(filter.type) && typeof (filter.value) === 'string') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return filter.matchCase;\n }\n };\n CheckBoxFilterBase.updateDateFilter = function (filter) {\n if ((filter.type === 'date' || filter.type === 'datetime' || filter.value instanceof Date)) {\n filter.type = filter.type || 'date';\n }\n return filter;\n };\n return CheckBoxFilterBase;\n}());\n\nvar __extends$18 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilterBase = /** @__PURE__ @class */ (function (_super) {\n __extends$18(ExcelFilterBase, _super);\n /**\n * Constructor for excel filtering module\n *\n * @param {IXLFilter} parent - parent details\n * @param {Object} customFltrOperators - operator details\n * @hidden\n */\n function ExcelFilterBase(parent, customFltrOperators) {\n var _this = _super.call(this, parent) || this;\n _this.childRefs = [];\n _this.eventHandlers = {};\n _this.isDevice = false;\n _this.customFilterOperators = customFltrOperators;\n _this.isExcel = true;\n return _this;\n }\n ExcelFilterBase.prototype.getCMenuDS = function (type, operator) {\n var options = {\n number: ['Equal', 'NotEqual', '', 'LessThan', 'LessThanOrEqual', 'GreaterThan',\n 'GreaterThanOrEqual', 'Between', '', 'CustomFilter'],\n string: ['Equal', 'NotEqual', '', 'StartsWith', 'EndsWith', '', 'Contains', '', 'CustomFilter']\n };\n options.date = options.number;\n options.datetime = options.number;\n var model = [];\n for (var i = 0; i < options[\"\" + type].length; i++) {\n if (options[\"\" + type][parseInt(i.toString(), 10)].length) {\n if (operator) {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...',\n iconCss: 'e-icons e-icon-check ' + (operator === options[\"\" + type][parseInt(i.toString(), 10)].toLowerCase() ? '' : 'e-emptyicon')\n });\n }\n else {\n model.push({\n text: this.getLocalizedLabel(options[\"\" + type][parseInt(i.toString(), 10)]) + '...'\n });\n }\n }\n else {\n model.push({ separator: true });\n }\n }\n return model;\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilterBase.prototype.destroy = function () {\n if (this.dlg) {\n this.unwireExEvents();\n _super.prototype.closeDialog.call(this);\n }\n if (!this.isDevice && this.menuObj) {\n var li = this.menuObj.element.querySelector('li.e-focused');\n if (!(li && parentsUntil(li, 'e-excel-menu'))) {\n this.destroyCMenu();\n }\n }\n if (this.dlgObj && !this.dlgObj.isDestroyed) {\n this.removeDialog();\n }\n };\n ExcelFilterBase.prototype.createMenu = function (type, isFiltered, isCheckIcon, eleOptions) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n this.menu = this.parent.createElement('div', { className: 'e-contextmenu-wrapper' });\n if (this.parent.enableRtl) {\n this.menu.classList.add('e-rtl');\n }\n else {\n this.menu.classList.remove('e-rtl');\n }\n if (this.parent.cssClass) {\n this.menu.classList.add(this.parent.cssClass);\n }\n var ul = this.parent.createElement('ul');\n var icon = isFiltered ? 'e-excl-filter-icon e-filtered' : 'e-excl-filter-icon';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.parent.allowSorting && this.parent.getModuleName() === 'grid'\n && !this.options.isResponsiveFilter) {\n var hdrele = this.parent.getColumnHeaderByUid(eleOptions.uid).getAttribute('aria-sort');\n var colIsSort = this.parent.getColumnByField(eleOptions.field).allowSorting;\n var isAsc = (!colIsSort || hdrele === 'ascending') ? 'e-disabled e-excel-ascending' : 'e-excel-ascending';\n var isDesc = (!colIsSort || hdrele === 'descending') ? 'e-disabled e-excel-descending' : 'e-excel-descending';\n var ascName = (type === 'string') ? this.getLocalizedLabel('SortAtoZ') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByOldest') : this.getLocalizedLabel('SortSmallestToLargest');\n var descName = (type === 'string') ? this.getLocalizedLabel('SortZtoA') : (type === 'datetime' || type === 'date') ?\n this.getLocalizedLabel('SortByNewest') : this.getLocalizedLabel('SortLargestToSmallest');\n ul.appendChild(this.createMenuElem(ascName, isAsc, 'e-sortascending'));\n ul.appendChild(this.createMenuElem(descName, isDesc, 'e-sortdescending'));\n var separator = this.parent.createElement('li', { className: 'e-separator e-menu-item e-excel-separator' });\n ul.appendChild(separator);\n }\n if (!this.options.isResponsiveFilter) {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel('ClearFilter'), isFiltered ? '' : 'e-disabled', icon));\n }\n if (type !== 'boolean') {\n ul.appendChild(this.createMenuElem(this.getLocalizedLabel(options[\"\" + type]), 'e-submenu', isCheckIcon && this.ensureTextFilter() ? 'e-icon-check' : icon + ' e-emptyicon', true));\n }\n this.menu.appendChild(ul);\n this.parent.notify(beforeFltrcMenuOpen, { element: this.menu });\n this.parent.notify(refreshCustomFilterClearBtn, { isFiltered: isFiltered });\n };\n ExcelFilterBase.prototype.createMenuElem = function (val, className, iconName, isSubMenu) {\n var li = this.parent.createElement('li', { className: className + ' e-menu-item' });\n li.innerHTML = val;\n li.insertBefore(this.parent.createElement('span', { className: 'e-menu-icon e-icons ' + iconName, attrs: { 'aria-hidden': 'true' } }), li.firstChild);\n if (isSubMenu) {\n li.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n }\n return li;\n };\n ExcelFilterBase.prototype.wireExEvents = function () {\n EventHandler.add(this.dlg, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.dlg, 'click', this.clickExHandler, this);\n };\n ExcelFilterBase.prototype.unwireExEvents = function () {\n EventHandler.remove(this.dlg, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.dlg, 'click', this.clickExHandler);\n };\n ExcelFilterBase.prototype.clickExHandler = function (e) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var menuItem = parentsUntil(e.target, 'e-menu-item');\n if (menuItem) {\n if (this.getLocalizedLabel('ClearFilter') === menuItem.innerText.trim()) {\n this.clearFilter();\n this.closeDialog();\n }\n else if (this.options.isResponsiveFilter\n && this.getLocalizedLabel(options[this.options.type]) === menuItem.innerText.trim()) {\n this.hoverHandler(e);\n }\n }\n };\n ExcelFilterBase.prototype.destroyCMenu = function () {\n this.isCMenuOpen = false;\n if (this.menuObj && !this.menuObj.isDestroyed) {\n this.menuObj.destroy();\n remove(this.cmenu);\n this.parent.notify(renderResponsiveCmenu, { target: null, header: '', isOpen: false, col: this.options.column });\n }\n };\n ExcelFilterBase.prototype.hoverHandler = function (e) {\n if (this.options.isResponsiveFilter && e.type === 'mouseover') {\n return;\n }\n var target = e.target.querySelector('.e-contextmenu');\n var li = parentsUntil(e.target, 'e-menu-item');\n var focused = this.menu.querySelector('.e-focused');\n var isSubMenu;\n if (focused) {\n focused.classList.remove('e-focused');\n }\n if (li) {\n li.classList.add('e-focused');\n isSubMenu = li.classList.contains('e-submenu');\n }\n if (target) {\n return;\n }\n if (!isSubMenu) {\n var submenu = this.menu.querySelector('.e-submenu');\n if (!isNullOrUndefined(submenu)) {\n submenu.classList.remove('e-selected');\n }\n this.destroyCMenu();\n }\n var selectedMenu = this.ensureTextFilter();\n if (!this.isCMenuOpen && isSubMenu) {\n li.classList.add('e-selected');\n this.isCMenuOpen = true;\n var menuOptions = {\n items: this.getCMenuDS(this.options.type, selectedMenu ? selectedMenu.replace(/\\s/g, '') : undefined),\n select: this.selectHandler.bind(this),\n onClose: this.destroyCMenu.bind(this),\n enableRtl: this.parent.enableRtl,\n beforeClose: this.preventClose.bind(this),\n cssClass: this.options.isResponsiveFilter && this.parent.cssClass ?\n 'e-res-contextmenu-wrapper' + ' ' + this.parent.cssClass : this.options.isResponsiveFilter ?\n 'e-res-contextmenu-wrapper' : this.parent.cssClass ? this.parent.cssClass : ''\n };\n this.parent.element.appendChild(this.cmenu);\n this.menuObj = new ContextMenu(menuOptions, this.cmenu);\n var client = this.menu.querySelector('.e-submenu').getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n if (this.options.isResponsiveFilter) {\n var options = { string: 'TextFilter', date: 'DateFilter', datetime: 'DateTimeFilter', number: 'NumberFilter' };\n var content$$1 = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content$$1.offsetHeight + 4;\n this.menuObj.element.style.height = 'calc(100% - ' + height + 'px)';\n this.menuObj['open'](height, 0, document.body);\n var header = this.getLocalizedLabel(options[this.options.type]);\n this.parent.notify(renderResponsiveCmenu, {\n target: this.menuObj.element.parentElement, header: header, isOpen: true\n });\n }\n else {\n if (Browser.isDevice) {\n this.isDevice = true;\n var contextRect = this.getContextBounds();\n pos.top = (window.innerHeight - contextRect.height) / 2;\n pos.left = (window.innerWidth - contextRect.width) / 2;\n this.closeDialog();\n this.isDevice = false;\n }\n else {\n pos.top = Browser.isIE ? window.pageYOffset + client.top : window.scrollY + client.top;\n pos.left = this.getCMenuYPosition(this.dlg);\n }\n this.menuObj['open'](pos.top, pos.left, e.target);\n }\n applyBiggerTheme(this.parent.element, this.menuObj.element.parentElement);\n }\n };\n ExcelFilterBase.prototype.ensureTextFilter = function () {\n var selectedMenu;\n var predicates = this.existingPredicate[this.options.field];\n if (predicates && predicates.length === 2) {\n if (predicates[0].operator === 'greaterthanorequal' && predicates[1].operator === 'lessthanorequal') {\n selectedMenu = 'between';\n }\n else {\n selectedMenu = 'customfilter';\n }\n }\n else {\n if (predicates && predicates.length === 1) {\n this.optrData = this.customFilterOperators[this.options.type + 'Operator'];\n selectedMenu = predicates[0].operator;\n }\n }\n return selectedMenu;\n };\n ExcelFilterBase.prototype.preventClose = function (args) {\n if (this.options && this.options.isResponsiveFilter && args.event) {\n var target = args.event.target;\n var isFilterBack = target.classList.contains('e-resfilterback')\n || target.classList.contains('e-res-back-btn') || target.classList.contains('e-menu-item');\n args.cancel = !isFilterBack;\n }\n else {\n if (args.event instanceof MouseEvent && args.event.target.classList.contains('e-submenu')) {\n args.cancel = true;\n }\n }\n };\n ExcelFilterBase.prototype.getContextBounds = function () {\n this.menuObj.element.style.display = 'block';\n return this.menuObj.element.getBoundingClientRect();\n };\n ExcelFilterBase.prototype.getCMenuYPosition = function (target) {\n var contextWidth = this.getContextBounds().width;\n var targetPosition = target.getBoundingClientRect();\n var leftPos = targetPosition.right + contextWidth - this.parent.element.clientWidth;\n var targetBorder = target.offsetWidth - target.clientWidth;\n targetBorder = targetBorder ? targetBorder + 1 : 0;\n return (leftPos < 1) ? (targetPosition.right + 1 - targetBorder) : (targetPosition.left - contextWidth - 1 + targetBorder);\n };\n ExcelFilterBase.prototype.openDialog = function (options) {\n var _this = this;\n this.updateModel(options);\n this.getAndSetChkElem(options);\n this.showDialog(options);\n if (options.cancel) {\n return;\n }\n this.dialogObj.dataBind();\n var filterLength = (this.existingPredicate[options.field] && this.existingPredicate[options.field].length) ||\n this.options.filteredColumns.filter(function (col) {\n return _this.options.field === col.field;\n }).length;\n this.createMenu(options.type, filterLength > 0, (filterLength === 1 || filterLength === 2), options);\n this.dlg.insertBefore(this.menu, this.dlg.firstChild);\n this.dlg.classList.add('e-excelfilter');\n if (this.parent.enableRtl) {\n this.dlg.classList.add('e-rtl');\n }\n this.dlg.classList.remove('e-checkboxfilter');\n this.cmenu = this.parent.createElement('ul', { className: 'e-excel-menu' });\n if (options.column.showColumnMenu) {\n this.parent.notify(filterDialogCreated, {});\n }\n this.wireExEvents();\n };\n ExcelFilterBase.prototype.closeDialog = function () {\n this.destroy();\n };\n ExcelFilterBase.prototype.selectHandler = function (e) {\n if (e.item) {\n this.parent.notify(filterCmenuSelect, {});\n this.menuItem = e.item;\n this.renderDialogue(e);\n }\n };\n /**\n * @hidden\n * @param {MenuEventArgs} e - event args\n * @returns {void}\n */\n ExcelFilterBase.prototype.renderDialogue = function (e) {\n var _this = this;\n var target = e ? e.element : undefined;\n var column = this.options.field;\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var mainDiv = this.parent.createElement('div', {\n className: 'e-xlfl-maindiv',\n id: isComplex ? complexFieldName + '-xlflmenu' : column + '-xlflmenu'\n });\n this.dlgDiv = this.parent.createElement('div', {\n className: 'e-xlflmenu',\n id: isComplex ? complexFieldName + '-xlfldlg' : column + '-xlfldlg'\n });\n if (this.options.isResponsiveFilter) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n header: this.getLocalizedLabel('CustomFilter'),\n isModal: true,\n overlayClick: this.removeDialog.bind(this),\n showCloseIcon: true,\n closeOnEscape: false,\n target: document.body,\n // target: this.parent.element,\n visible: false,\n enableRtl: this.parent.enableRtl,\n open: function () {\n var row$$1 = _this.dlgObj.element.querySelector('table.e-xlfl-table>tr');\n if (_this.options.column.filterTemplate) {\n var templateField_1 = isComplexField(_this.options.column.field) ?\n getComplexFieldID(_this.options.column.field) : _this.options.column.field;\n var isReactCompiler = _this.parent.isReact && typeof (_this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = _this.parent.parentDetails && _this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n _this.parent.renderTemplates(function () {\n row$$1.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n });\n }\n else {\n row$$1.querySelector('#' + templateField_1 + '-xlfl-frstvalue').focus();\n }\n }\n else {\n //(row.cells[1].querySelector('input:not([type=hidden])') as HTMLElement).focus();\n }\n },\n close: this.removeDialog.bind(this),\n created: this.createdDialog.bind(this, target, column),\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.getLocalizedLabel('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-xlfl-okbtn' + ' ' + this.parent.cssClass : 'e-xlfl-okbtn'\n }\n },\n {\n click: this.removeDialog.bind(this),\n buttonModel: { content: this.getLocalizedLabel('CancelButton'),\n cssClass: this.parent.cssClass ? 'e-xlfl-cancelbtn' + ' ' + this.parent.cssClass : 'e-xlfl-cancelbtn' }\n }],\n content: mainDiv,\n width: 430,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgDiv.setAttribute('aria-label', this.getLocalizedLabel('CustomFilterDialogARIA'));\n this.childRefs.push(this.dlgObj);\n this.dlgObj.appendTo(this.dlgDiv);\n };\n ExcelFilterBase.prototype.renderResponsiveDialog = function () {\n if (this.options.isResponsiveFilter) {\n var rowResponsiveDlg = document.querySelector('.e-row-responsive-filter');\n if (rowResponsiveDlg) {\n rowResponsiveDlg.classList.remove('e-row-responsive-filter');\n }\n this.dlgObj.buttons = [{}];\n this.dlgObj.header = undefined;\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-xl-customfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.showCloseIcon = false;\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n ExcelFilterBase.prototype.removeDialog = function () {\n this.parent.notify(customFilterClose, {});\n if ((this.parent.isReact || this.parent.isVue) && this.parent.destroyTemplate !== undefined) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n this.removeObjects(this.childRefs);\n remove(this.dlgDiv);\n this.parent.notify(filterDialogClose, {});\n };\n ExcelFilterBase.prototype.createdDialog = function (target, column) {\n this.renderCustomFilter(target, column);\n this.dlgObj.element.style.left = '0px';\n if (!this.options.isResponsiveFilter) {\n this.dlgObj.element.style.top = '0px';\n }\n else {\n var content$$1 = document.querySelector('.e-responsive-dialog > .e-dlg-header-content');\n var height = content$$1.offsetHeight + 4;\n this.dlgObj.element.style.top = height + 'px';\n }\n if (!this.options.isResponsiveFilter && Browser.isDevice && window.innerWidth < 440) {\n this.dlgObj.element.style.width = '90%';\n }\n this.parent.notify(beforeCustomFilterOpen, { column: column, dialog: this.dialogObj });\n this.dlgObj.show();\n applyBiggerTheme(this.parent.element, this.dlgObj.element.parentElement);\n };\n ExcelFilterBase.prototype.renderCustomFilter = function (target, column) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-xlfl-maindiv');\n var dlgFields = this.parent.createElement('div', { innerHTML: this.getLocalizedLabel('ShowRowsWhere'), className: 'e-xlfl-dlgfields' });\n dlgConetntEle.appendChild(dlgFields);\n //column name\n var fieldSet = this.parent.createElement('div', { innerHTML: this.options.displayName, className: 'e-xlfl-fieldset' });\n dlgConetntEle.appendChild(fieldSet);\n this.renderFilterUI(column, dlgConetntEle);\n };\n /**\n * @hidden\n * @param {string} col - Defines column details\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterBtnClick = function (col) {\n var isComplex = !isNullOrUndefined(col) && isComplexField(col);\n var complexFieldName = !isNullOrUndefined(col) && getComplexFieldID(col);\n var colValue = isComplex ? complexFieldName : col;\n var fValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstvalue').ej2_instances[0];\n var fOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-frstoptr').ej2_instances[0];\n var sValue = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndvalue').ej2_instances[0];\n var sOperator = this.dlgDiv.querySelector('#' + colValue + '-xlfl-secndoptr').ej2_instances[0];\n var checkBoxValue;\n if (this.options.type === 'string') {\n var checkBox = this.dlgDiv.querySelector('#' + colValue + '-xlflmtcase').ej2_instances[0];\n checkBoxValue = checkBox.checked;\n }\n var andRadio = this.dlgDiv.querySelector('#' + colValue + 'e-xlfl-frstpredicate').ej2_instances[0];\n var predicate = (andRadio.checked ? 'and' : 'or');\n if (sValue.value === null) {\n predicate = 'or';\n }\n this.filterByColumn(this.options.field, fOperator.value, fValue.value, predicate, checkBoxValue, this.options.ignoreAccent, sOperator.value, sValue.value);\n this.removeDialog();\n };\n /**\n * @hidden\n * Filters grid row by column name with given options.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} firstOperator - Defines the first operator by how to filter records.\n * @param {string | number | Date | boolean} firstValue - Defines the first value which is used to filter records.\n * @param {string} predicate - Defines the relationship between one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If ignore case set to true, then filter records with exact match or else\n * filter records with case insensitive(uppercase and lowercase letters treated as same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then ignores the diacritic characters or accents when filtering.\n * @param {string} secondOperator - Defines the second operator by how to filter records.\n * @param {string | number | Date | boolean} secondValue - Defines the first value which is used to filter records.\n * @returns {void}\n */\n ExcelFilterBase.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n var col = this.parent.getColumnByField ? this.parent.getColumnByField(fieldName) : this.options.column;\n var field = this.isForeignColumn(col) ? col.foreignKeyValue : fieldName;\n var fColl = [];\n var mPredicate;\n var arg = {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: firstOperator, arg3: firstValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: secondOperator, arg8: secondValue, cancel: false\n };\n this.parent.notify(fltrPrevent, arg);\n if (arg.cancel) {\n return;\n }\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: firstOperator,\n value: arg.arg3,\n type: this.options.type\n });\n mPredicate = new Predicate(field, firstOperator.toLowerCase(), arg.arg3, !matchCase, ignoreAccent);\n if (!isNullOrUndefined(secondValue) && !isNullOrUndefined(secondOperator)) {\n fColl.push({\n field: field,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: secondOperator,\n value: arg.arg8,\n type: this.options.type\n });\n mPredicate = mPredicate[\"\" + predicate](field, secondOperator.toLowerCase(), secondValue, !matchCase, ignoreAccent);\n }\n var args = {\n action: 'filtering', filterCollection: fColl, field: this.options.field,\n ejpredicate: mPredicate, actualPredicate: fColl\n };\n if (this.isForeignColumn(col)) {\n this.foreignKeyFilter(args, fColl, mPredicate);\n }\n else {\n this.options.handler(args);\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderOperatorUI = function (column, table$$1, elementID, predicates, isFirst) {\n var fieldElement = this.parent.createElement('tr', { className: 'e-xlfl-fields', attrs: { role: 'row' } });\n table$$1.appendChild(fieldElement);\n var xlfloptr = this.parent.createElement('td', { className: 'e-xlfl-optr' });\n fieldElement.appendChild(xlfloptr);\n var optrDiv = this.parent.createElement('div', { className: 'e-xlfl-optrdiv' });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var optrInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementID : column + elementID });\n optrDiv.appendChild(optrInput);\n xlfloptr.appendChild(optrDiv);\n var optr = this.options.type + 'Operator';\n var dropDatasource = this.customFilterOperators[\"\" + optr];\n this.optrData = dropDatasource;\n var selectedValue = this.dropSelectedVal(this.options.column, predicates, isFirst);\n //Trailing three dots are sliced.\n var menuText = '';\n if (this.menuItem) {\n menuText = this.menuItem.text.slice(0, -3);\n if (menuText !== this.getLocalizedLabel('CustomFilter')) {\n selectedValue = isFirst ? menuText : undefined;\n }\n if (menuText === this.getLocalizedLabel('Between')) {\n selectedValue = this.getLocalizedLabel(isFirst ? 'GreaterThanOrEqual' : 'LessThanOrEqual');\n }\n }\n var col = this.options.column;\n var dropOptr = new DropDownList(extend$1({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n text: selectedValue,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.filter.params));\n this.childRefs.push(dropOptr);\n var evt = { 'open': this.dropDownOpen.bind(this), 'change': this.dropDownValueChange.bind(this) };\n registerEventHandlers(optrInput.id, [open, change], evt, this);\n dropOptr.addEventListener(open, this.eventHandlers[optrInput.id][open]);\n dropOptr.addEventListener(change, this.eventHandlers[optrInput.id][change]);\n dropOptr.appendTo(optrInput);\n var operator = this.getSelectedValue(selectedValue);\n return { fieldElement: fieldElement, operator: operator };\n };\n ExcelFilterBase.prototype.removeHandlersFromComponent = function (component) {\n if (component.element.classList.contains('e-dropdownlist')) {\n removeEventHandlers(component, [open, change], this);\n }\n else if (component.element.classList.contains('e-autocomplete')) {\n removeEventHandlers(component, [actionComplete, focus], this);\n }\n };\n ExcelFilterBase.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n ExcelFilterBase.prototype.dropDownValueChange = function (args) {\n if (args.element.id.includes('-xlfl-frstoptr')) {\n this.firstOperator = args.value.toString();\n }\n else {\n this.secondOperator = args.value.toString();\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns filter UI\n */\n ExcelFilterBase.prototype.getFilterUIInfo = function () {\n return { firstOperator: this.firstOperator, secondOperator: this.secondOperator, field: this.options.field };\n };\n ExcelFilterBase.prototype.getSelectedValue = function (text) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('text', 'equal', text));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].value : '';\n };\n ExcelFilterBase.prototype.dropSelectedVal = function (col, predicates, isFirst) {\n var operator;\n if (predicates && predicates.length > 0) {\n operator = predicates.length === 2 ?\n (isFirst ? predicates[0].operator : predicates[1].operator) :\n (isFirst ? predicates[0].operator : undefined);\n }\n else if (isFirst && col.type === 'string' && !col.filter.operator) {\n operator = 'startswith';\n }\n else {\n operator = isFirst ? col.filter.operator || 'equal' : undefined;\n }\n return this.getSelectedText(operator);\n };\n ExcelFilterBase.prototype.getSelectedText = function (operator) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', operator));\n return !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n };\n ExcelFilterBase.prototype.renderFilterUI = function (column, dlgConetntEle) {\n var predicates = this.existingPredicate[\"\" + column];\n var table$$1 = this.parent.createElement('table', { className: 'e-xlfl-table', attrs: { role: 'grid' } });\n dlgConetntEle.appendChild(table$$1);\n var colGroup$$1 = this.parent.createElement(colGroup);\n colGroup$$1.innerHTML = '';\n table$$1.appendChild(colGroup$$1);\n //Renders first dropdown\n var optr = this.renderOperatorUI(column, table$$1, '-xlfl-frstoptr', predicates, true);\n this.firstOperator = optr.operator;\n //Renders first value\n this.renderFlValueUI(column, optr, '-xlfl-frstvalue', predicates, true);\n var predicate = this.parent.createElement('tr', { className: 'e-xlfl-predicate', attrs: { role: 'row' } });\n table$$1.appendChild(predicate);\n //Renders first radion button\n this.renderRadioButton(column, predicate, predicates);\n //Renders second dropdown\n optr = this.renderOperatorUI(column, table$$1, '-xlfl-secndoptr', predicates, false);\n this.secondOperator = optr.operator;\n //Renders second text box\n this.renderFlValueUI(column, optr, '-xlfl-secndvalue', predicates, false);\n };\n ExcelFilterBase.prototype.renderRadioButton = function (column, tr, predicates) {\n var td = this.parent.createElement('td', { className: 'e-xlfl-radio', attrs: { 'colSpan': '2' } });\n tr.appendChild(td);\n var radioDiv = this.parent\n .createElement('div', { className: 'e-xlfl-radiodiv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var frstpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-frstpredicate' : column + 'e-xlfl-frstpredicate', attrs: { 'type': 'radio' } });\n var secndpredicate = this.parent.createElement('input', { id: isComplex ? complexFieldName + 'e-xlfl-secndpredicate' : column + 'e-xlfl-secndpredicate', attrs: { 'type': 'radio' } });\n //appends into div\n radioDiv.appendChild(frstpredicate);\n radioDiv.appendChild(secndpredicate);\n td.appendChild(radioDiv);\n if (this.options.type === 'string') {\n this.renderMatchCase(column, tr, td, '-xlflmtcase', predicates);\n }\n // Initialize AND RadioButton component.\n var andRadio = new RadioButton({\n label: this.getLocalizedLabel('AND'),\n name: 'default', checked: true,\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(andRadio);\n // Initialize OR RadioButton component.\n var orRadio = new RadioButton({\n label: this.getLocalizedLabel('OR'),\n name: 'default',\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(orRadio);\n var flValue = predicates && predicates.length === 2 ? predicates[1].predicate : 'and';\n if (flValue === 'and') {\n andRadio.checked = true;\n orRadio.checked = false;\n }\n else {\n orRadio.checked = true;\n andRadio.checked = false;\n }\n // Render initialized RadioButton.\n andRadio.appendTo(frstpredicate);\n orRadio.appendTo(secndpredicate);\n andRadio.element.nextElementSibling.classList.add('e-xlfl-radio-and');\n orRadio.element.nextElementSibling.classList.add('e-xlfl-radio-or');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelFilterBase.prototype.removeObjects = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var obj = elements_1[_i];\n if (obj && !obj.isDestroyed) {\n this.removeHandlersFromComponent(obj);\n obj.destroy();\n }\n }\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderFlValueUI = function (column, optr, elementId, predicates, isFirst) {\n var value = this.parent.createElement('td', { className: 'e-xlfl-value' });\n optr.fieldElement.appendChild(value);\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var valueDiv = this.parent.createElement('div', { className: 'e-xlfl-valuediv' });\n var isFilteredCol = this.options.filteredColumns.some(function (col) { return column === col.field; });\n var fltrPredicates = this.options.filteredColumns.filter(function (col) { return col.field === column; });\n if (this.options.column.filterTemplate) {\n var data = {};\n var columnObj = this.options.column;\n if (isFilteredCol && elementId) {\n data = this.getExcelFilterData(elementId, data, columnObj, predicates, fltrPredicates);\n }\n var isReactCompiler = this.parent.isReact && typeof (this.options.column.filterTemplate) !== 'string';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + columnObj.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n }\n else {\n var element = this.options.column.getFilterTemplate()(data, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, element);\n }\n if (isReactCompiler || isReactChild) {\n this.parent.renderTemplates(function () {\n valueDiv.querySelector('input').id = isComplex ? complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n });\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (this.parent.isAngular ? valueDiv.children[0] : valueDiv.querySelector('input')).id = isComplex ?\n complexFieldName + elementId : column + elementId;\n value.appendChild(valueDiv);\n }\n }\n else {\n var valueInput = this.parent\n .createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId });\n valueDiv.appendChild(valueInput);\n value.appendChild(valueDiv);\n var flValue = void 0;\n var predicate = void 0;\n if (predicates && predicates.length > 0) {\n predicate = predicates.length === 2 ?\n (isFirst ? predicates[0] : predicates[1]) :\n (isFirst ? predicates[0] : undefined);\n flValue = (predicate && predicate.operator === optr.operator) ? predicate.value : undefined;\n if (isNullOrUndefined(flValue)) {\n flValue = undefined;\n }\n }\n var types = {\n 'string': this.renderAutoComplete.bind(this),\n 'number': this.renderNumericTextBox.bind(this),\n 'date': this.renderDate.bind(this),\n 'datetime': this.renderDateTime.bind(this)\n };\n types[this.options.type](this.options, column, valueInput, flValue, this.parent.enableRtl);\n }\n };\n ExcelFilterBase.prototype.getExcelFilterData = function (elementId, data, columnObj, predicates, fltrPredicates) {\n var predIndex = elementId === '-xlfl-frstvalue' ? 0 : 1;\n if (elementId === '-xlfl-frstvalue' || fltrPredicates.length > 1) {\n data = { column: predicates instanceof Array ? predicates[parseInt(predIndex.toString(), 10)] : predicates };\n var indx = this.options.column.columnData && fltrPredicates.length > 1 ?\n (this.options.column.columnData.length === 1 ? 0 : 1) : predIndex;\n data[this.options.field] = columnObj.foreignKeyValue ?\n this.options.column.columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue] :\n fltrPredicates[parseInt(indx.toString(), 10)].value;\n if (this.options.foreignKeyValue) {\n data[this.options.foreignKeyValue] = this.options.column\n .columnData[parseInt(indx.toString(), 10)][columnObj.foreignKeyValue];\n }\n }\n return data;\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderMatchCase = function (column, tr, matchCase, elementId, predicates) {\n var matchCaseDiv = this.parent.createElement('div', { className: 'e-xlfl-matchcasediv', attrs: { 'style': 'display: inline-block' } });\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var matchCaseInput = this.parent.createElement('input', { id: isComplex ? complexFieldName + elementId : column + elementId, attrs: { 'type': 'checkbox' } });\n matchCaseDiv.appendChild(matchCaseInput);\n matchCase.appendChild(matchCaseDiv);\n var flValue = predicates && predicates.length > 0 ?\n (predicates && predicates.length === 2 ? predicates[1].matchCase : predicates[0].matchCase) :\n false;\n // Initialize Match Case check box.\n var checkbox = new CheckBox({\n label: this.getLocalizedLabel('MatchCase'),\n enableRtl: this.parent.enableRtl, checked: flValue,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.childRefs.push(checkbox);\n // Render initialized CheckBox.\n checkbox.appendTo(matchCaseInput);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDate = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type) || options.format;\n var datePicker = new DatePicker(extend$1({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(datePicker);\n datePicker.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderDateTime = function (options, column, inputValue, fValue, isRtl) {\n var format = getCustomDateFormat(options.format, options.type);\n var dateTimePicker = new DateTimePicker(extend$1({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: this.getLocalizedLabel('CustomFilterDatePlaceHolder'),\n width: '100%',\n enableRtl: isRtl,\n value: new Date(fValue),\n locale: this.parent.locale\n }, options.column.filter.params));\n this.childRefs.push(dateTimePicker);\n dateTimePicker.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.completeAction = function (e) {\n e.result = distinctStringValues(e.result);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderNumericTextBox = function (options, column, inputValue, fValue, isRtl) {\n var numericTextBox = new NumericTextBox(extend$1({\n format: options.format,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n value: fValue,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, options.column.filter.params));\n this.childRefs.push(numericTextBox);\n numericTextBox.appendTo(inputValue);\n };\n // eslint-disable-next-line max-len\n ExcelFilterBase.prototype.renderAutoComplete = function (options, column, inputValue, fValue, isRtl) {\n var colObj = this.options.column;\n var isForeignColumn = this.isForeignColumn(colObj);\n var dataSource = isForeignColumn ? colObj.dataSource : options.dataSource;\n var fields = { value: isForeignColumn ? colObj.foreignKeyValue : column };\n var actObj = new AutoComplete(extend$1({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n query: this.getQuery(),\n sortOrder: 'Ascending',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: this.getLocalizedLabel('CustomFilterPlaceHolder'),\n enableRtl: isRtl,\n text: fValue\n }, colObj.filter.params));\n if (dataSource && 'result' in dataSource) {\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, this.getQuery());\n this.parent.trigger(dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n actObj.dataSource = new DataManager(e);\n });\n }\n this.childRefs.push(actObj);\n var evt = { 'actionComplete': this.acActionComplete(actObj, column), 'focus': this.acFocus(actObj, column, options, inputValue) };\n registerEventHandlers(inputValue.id, [actionComplete, focus], evt, this);\n actObj.addEventListener(focus, this.eventHandlers[inputValue.id][focus]);\n actObj.addEventListener(actionComplete, this.eventHandlers[inputValue.id][actionComplete]);\n actObj.appendTo(inputValue);\n };\n ExcelFilterBase.prototype.acActionComplete = function (actObj, column) {\n return function (e) {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObject) {\n return isComplex ? performComplexDataOperation(actObj.fields.value, mapObject)\n : mapObject[actObj.fields.value];\n }).indexOf(isComplex ? performComplexDataOperation(actObj.fields.value, obj) :\n obj[actObj.fields.value]) === index;\n });\n };\n };\n ExcelFilterBase.prototype.acFocus = function (actObj, column, options, inputValue) {\n var _this = this;\n return function () {\n var isComplex = !isNullOrUndefined(column) && isComplexField(column);\n var complexFieldName = !isNullOrUndefined(column) && getComplexFieldID(column);\n var columnvalue = isComplex ? complexFieldName : column;\n actObj.filterType = _this.dlgDiv.querySelector('#' + columnvalue +\n (inputValue.id === (columnvalue + '-xlfl-frstvalue') ?\n '-xlfl-frstoptr' :\n '-xlfl-secndoptr')).ej2_instances[0].value;\n actObj.ignoreCase = options.type === 'string' ?\n !_this.dlgDiv.querySelector('#' + columnvalue + '-xlflmtcase').ej2_instances[0].checked :\n true;\n actObj.filterType = !isNullOrUndefined(actObj.filterType) ? actObj.filterType :\n 'equal';\n };\n };\n return ExcelFilterBase;\n}(CheckBoxFilterBase));\n\n/**\n * Common export\n */\n\n/**\n * Base export\n */\n\n/**\n *\n * The `Sort` module is used to handle sorting action.\n */\nvar Sort = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Grid sorting module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {SortSettings} sortSettings - specifies the SortSettings\n * @param {string[]} sortedColumns - specifies the string\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function Sort(parent, sortSettings, sortedColumns, locator) {\n this.contentRefresh = true;\n this.isModelChanged = true;\n this.aria = new AriaService();\n this.currentTarget = null;\n this.parent = parent;\n this.sortSettings = sortSettings;\n this.sortedColumns = sortedColumns;\n this.serviceLocator = locator;\n this.focus = locator.getService('focus');\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * The function used to update sortSettings\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.updateModel = function () {\n var sortedColumn = { field: this.columnName, direction: this.direction };\n var index;\n var gCols = this.parent.groupSettings.columns;\n var flag = false;\n if (!this.isMultiSort) {\n if (!gCols.length) {\n this.sortSettings.columns = [sortedColumn];\n }\n else {\n var sortedCols = [];\n for (var i = 0, len = gCols.length; i < len; i++) {\n index = this.getSortedColsIndexByField(gCols[parseInt(i.toString(), 10)], sortedCols);\n if (this.columnName === gCols[parseInt(i.toString(), 10)]) {\n flag = true;\n sortedCols.push(sortedColumn);\n }\n else {\n var sCol = this.getSortColumnFromField(gCols[parseInt(i.toString(), 10)]);\n sortedCols.push({ field: sCol.field, direction: sCol.direction, isFromGroup: sCol.isFromGroup });\n }\n }\n if (!flag) {\n sortedCols.push(sortedColumn);\n }\n this.sortSettings.columns = sortedCols;\n }\n }\n else {\n index = this.getSortedColsIndexByField(this.columnName);\n if (index > -1) {\n this.sortSettings.columns.splice(index, 1);\n }\n this.sortSettings.columns.push(sortedColumn);\n // eslint-disable-next-line no-self-assign\n this.sortSettings.columns = this.sortSettings.columns;\n }\n this.parent.dataBind();\n this.lastSortedCol = this.columnName;\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting', type: actionComplete\n } : { requestType: 'sorting', type: actionComplete };\n this.isRemove = false;\n this.parent.trigger(actionComplete, extend(e, args));\n };\n /**\n * Sorts a column with the given options.\n *\n * @param {string} columnName - Defines the column name to sort.\n * @param {SortDirection} direction - Defines the direction of sorting field.\n * @param {boolean} isMultiSort - Specifies whether the previously sorted columns are to be maintained.\n * @returns {void}\n */\n Sort.prototype.sortColumn = function (columnName, direction, isMultiSort) {\n var gObj = this.parent;\n if (this.parent.getColumnByField(columnName).allowSorting === false || this.parent.isContextMenuOpen()) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: columnName });\n return;\n }\n if (!gObj.allowMultiSorting) {\n isMultiSort = gObj.allowMultiSorting;\n }\n if (this.isActionPrevent()) {\n gObj.notify(preventBatch, {\n instance: this, handler: this.sortColumn,\n arg1: columnName, arg2: direction, arg3: isMultiSort\n });\n return;\n }\n this.backupSettings();\n this.columnName = columnName;\n this.direction = direction;\n this.isMultiSort = isMultiSort;\n this.removeSortIcons();\n this.updateSortedCols(columnName, isMultiSort);\n this.updateModel();\n };\n Sort.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isSort);\n }\n };\n Sort.prototype.backupSettings = function () {\n this.lastSortedCols = iterateExtend(this.sortSettings.columns);\n this.lastCols = this.sortedColumns;\n };\n Sort.prototype.restoreSettings = function () {\n this.isModelChanged = false;\n this.isMultiSort = true;\n this.parent.setProperties({ sortSettings: { columns: this.lastSortedCols } }, true);\n //this.parent.sortSettings.columns = this.lastSortedCols;\n this.sortedColumns = this.lastCols;\n this.isModelChanged = true;\n };\n Sort.prototype.updateSortedCols = function (columnName, isMultiSort) {\n if (!isMultiSort) {\n if (this.parent.allowGrouping) {\n for (var i = 0, len = this.sortedColumns.length; i < len; i++) {\n if (this.parent.groupSettings.columns.indexOf(this.sortedColumns[parseInt(i.toString(), 10)]) < 0) {\n this.sortedColumns.splice(i, 1);\n len--;\n i--;\n }\n }\n }\n else {\n this.sortedColumns.splice(0, this.sortedColumns.length);\n }\n }\n if (this.sortedColumns.indexOf(columnName) < 0) {\n this.sortedColumns.push(columnName);\n }\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Sort.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.contentRefresh) {\n var args = this.sortSettings.columns.length ? {\n columnName: this.columnName, direction: this.direction, requestType: 'sorting',\n type: actionBegin, target: this.currentTarget, cancel: false\n } : {\n requestType: 'sorting', type: actionBegin, cancel: false,\n target: this.currentTarget\n };\n this.parent.notify(modelChanged, args);\n }\n this.refreshSortSettings();\n this.removeSortIcons();\n this.addSortIcons();\n };\n Sort.prototype.refreshSortSettings = function () {\n this.sortedColumns.length = 0;\n var sortColumns = this.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (!sortColumns[parseInt(i.toString(), 10)].isFromGroup) {\n this.sortedColumns.push(sortColumns[parseInt(i.toString(), 10)].field);\n }\n }\n };\n /**\n * Clears all the sorted columns of the Grid.\n *\n * @returns {void}\n */\n Sort.prototype.clearSorting = function () {\n var cols = getActualPropFromColl(this.sortSettings.columns);\n if (this.isActionPrevent()) {\n this.parent.notify(preventBatch, { instance: this, handler: this.clearSorting });\n return;\n }\n for (var i = 0, len = cols.length; i < len; i++) {\n this.removeSortColumn(cols[parseInt(i.toString(), 10)].field);\n }\n };\n Sort.prototype.isActionPrevent = function () {\n return isActionPrevent(this.parent);\n };\n /**\n * Remove sorted column by field name.\n *\n * @param {string} field - Defines the column field name to remove sort.\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeSortColumn = function (field) {\n var gObj = this.parent;\n var cols = this.sortSettings.columns;\n if (cols.length === 0 && this.sortedColumns.indexOf(field) < 0) {\n return;\n }\n if (this.isActionPrevent()) {\n this.parent.notify(preventBatch, { instance: this, handler: this.removeSortColumn, arg1: field });\n return;\n }\n this.backupSettings();\n this.removeSortIcons();\n var args = { requestType: 'sorting', type: actionBegin, target: this.currentTarget };\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n if (gObj.allowGrouping && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1) {\n continue;\n }\n this.sortedColumns.splice(this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field), 1);\n cols.splice(i, 1);\n this.isRemove = true;\n if (this.isModelChanged) {\n this.parent.notify(modelChanged, args);\n }\n break;\n }\n }\n if (!args.cancel) {\n this.addSortIcons();\n }\n };\n Sort.prototype.getSortedColsIndexByField = function (field, sortedColumns) {\n var cols = sortedColumns ? sortedColumns : this.sortSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n return i;\n }\n }\n return -1;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Sort.prototype.getModuleName = function () {\n return 'sort';\n };\n Sort.prototype.initialEnd = function () {\n this.parent.off(contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.sortSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.isMultiSort = this.sortSettings.columns.length > 1;\n for (var _i = 0, _a = gObj.sortSettings.columns.slice(); _i < _a.length; _i++) {\n var col = _a[_i];\n if (this.sortedColumns.indexOf(col.field) > -1) {\n this.sortColumn(col.field, col.direction, true);\n }\n }\n this.isMultiSort = false;\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: setFullScreenDialog, handler: this.setFullScreenDialog },\n { event: contentReady, handler: this.initialEnd },\n { event: sortComplete, handler: this.onActionComplete },\n { event: inBoundModelChanged, handler: this.onPropertyChanged },\n { event: click, handler: this.clickHandler },\n { event: headerRefreshed, handler: this.refreshSortIcons },\n { event: keyPressed, handler: this.keyPressed },\n { event: cancelBegin, handler: this.cancelBeginEvent },\n { event: destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Sort.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the sorting\n *\n * @returns {void}\n * @hidden\n */\n Sort.prototype.destroy = function () {\n this.isModelChanged = false;\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n if (this.parent.element.querySelector('.e-gridpopup').getElementsByClassName('e-sortdirect').length) {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowSorting)) {\n this.clearSorting();\n }\n this.isModelChanged = true;\n this.removeEventListener();\n };\n Sort.prototype.cancelBeginEvent = function (e) {\n if (e.requestType === 'sorting') {\n this.restoreSettings();\n this.refreshSortIcons();\n this.isMultiSort = true;\n }\n };\n Sort.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n this.currentTarget = null;\n this.popUpClickHandler(e);\n var target = closest(e.target, '.e-headercell');\n if (target && !e.target.classList.contains('e-grptogglebtn') &&\n !(target.classList.contains('e-resized')) &&\n !e.target.classList.contains('e-rhandler') &&\n !e.target.classList.contains('e-columnmenu') &&\n !e.target.classList.contains('e-filtermenudiv') &&\n !parentsUntil(e.target, 'e-stackedheadercell') &&\n !(gObj.allowSelection && gObj.selectionSettings.allowColumnSelection &&\n e.target.classList.contains('e-headercell'))) {\n var gObj_1 = this.parent;\n var colObj = gObj_1.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n if (colObj.type !== 'checkbox') {\n this.initiateSort(target, e, colObj);\n if (Browser.isDevice) {\n this.showPopUp(e);\n }\n }\n }\n if (target) {\n target.classList.remove('e-resized');\n }\n if (parentsUntil(e.target, 'e-excel-ascending') ||\n parentsUntil(e.target, 'e-excel-descending')) {\n var colUid = closest(e.target, '.e-filter-popup').getAttribute('uid');\n var direction = isNullOrUndefined(parentsUntil(e.target, 'e-excel-descending')) ?\n 'Ascending' : 'Descending';\n this.sortColumn(gObj.getColumnByUid(colUid).field, direction, false);\n }\n };\n Sort.prototype.keyPressed = function (e) {\n var ele = e.target;\n if (!this.parent.isEdit && (e.action === 'enter' || e.action === 'ctrlEnter' || e.action === 'shiftEnter')\n && closest(ele, '.e-headercell')) {\n var target = this.focus.getFocusedElement();\n if (isNullOrUndefined(target) || !target.classList.contains('e-headercell')\n || !target.querySelector('.e-headercelldiv')) {\n return;\n }\n var col = this.parent.getColumnByUid(target.querySelector('.e-headercelldiv').getAttribute('e-mappinguid'));\n this.initiateSort(target, e, col);\n }\n };\n Sort.prototype.initiateSort = function (target, e, column) {\n var gObj = this.parent;\n var field = column.field;\n this.currentTarget = e.target;\n var direction = !target.getElementsByClassName('e-ascending').length ? 'Ascending' :\n 'Descending';\n this.isMultiSort = e.ctrlKey || this.enableSortMultiTouch ||\n (navigator.userAgent.indexOf('Mac OS') !== -1 && e.metaKey);\n if (e.shiftKey || (this.sortSettings.allowUnsort && target.getElementsByClassName('e-descending').length)\n && !(gObj.groupSettings.columns.indexOf(field) > -1)) {\n this.removeSortColumn(field);\n }\n else {\n this.sortColumn(field, direction, this.isMultiSort);\n }\n };\n Sort.prototype.showPopUp = function (e) {\n var target = closest(e.target, '.e-headercell');\n if (this.parent.allowMultiSorting && (!isNullOrUndefined(target) || this.parent.isContextMenuOpen())) {\n setCssInGridPopUp(this.parent.element.querySelector('.e-gridpopup'), e, 'e-sortdirect e-icons e-icon-sortdirect' + (this.sortedColumns.length > 1 ? ' e-spanclicked' : ''));\n }\n };\n Sort.prototype.popUpClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.e-headercell') || e.target.classList.contains(rowCell) ||\n closest(target, '.e-gridpopup')) {\n if (target.classList.contains('e-sortdirect')) {\n if (!target.classList.contains('e-spanclicked')) {\n target.classList.add('e-spanclicked');\n this.enableSortMultiTouch = true;\n }\n else {\n target.classList.remove('e-spanclicked');\n this.enableSortMultiTouch = false;\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n }\n }\n else {\n this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n }\n };\n Sort.prototype.addSortIcons = function () {\n var gObj = this.parent;\n var header;\n var filterElement;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = 0, len = cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1 || isNullOrUndefined(header)) {\n continue;\n }\n this.aria.setSort(header, (cols[parseInt(i.toString(), 10)].direction).toLowerCase());\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').insertBefore(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }), header.querySelector('.e-headertext'));\n }\n filterElement = header.querySelector('.e-sortfilterdiv');\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(filterElement, ['e-ascending', 'e-icon-ascending'], []);\n }\n else {\n classList(filterElement, ['e-descending', 'e-icon-descending'], []);\n }\n }\n };\n Sort.prototype.removeSortIcons = function (position) {\n var gObj = this.parent;\n var header;\n var cols = this.sortSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var i = position ? position : 0, len = !isNullOrUndefined(position) ? position + 1 : cols.length; i < len; i++) {\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (isNullOrUndefined(header) || (gObj.allowGrouping\n && gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1\n && !header.querySelector('.e-sortfilterdiv'))) {\n continue;\n }\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n this.aria.setSort(header, 'none');\n classList(header.querySelector('.e-sortfilterdiv'), [], ['e-descending', 'e-icon-descending', 'e-ascending', 'e-icon-ascending']);\n if (header.querySelector('.e-sortnumber')) {\n header.querySelector('.e-headercelldiv').removeChild(header.querySelector('.e-sortnumber'));\n }\n }\n };\n Sort.prototype.getSortColumnFromField = function (field) {\n for (var i = 0, len = this.sortSettings.columns.length; i < len; i++) {\n if (this.sortSettings.columns[parseInt(i.toString(), 10)].field === field) {\n return this.sortSettings.columns[parseInt(i.toString(), 10)];\n }\n }\n return false;\n };\n Sort.prototype.updateAriaAttr = function () {\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n for (var _i = 0, _a = this.sortedColumns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (fieldNames.indexOf(col) === -1) {\n continue;\n }\n var header = this.parent.getColumnHeaderByField(col);\n this.aria.setSort(header, this.getSortColumnFromField(col).direction);\n }\n };\n Sort.prototype.refreshSortIcons = function (params) {\n if (params === void 0) { params = { args: { isFrozen: false } }; }\n if (!params.args.isFrozen) {\n this.removeSortIcons();\n this.isMultiSort = true;\n this.removeSortIcons();\n this.addSortIcons();\n this.isMultiSort = false;\n this.updateAriaAttr();\n }\n };\n /**\n * To show the responsive custom sort dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Sort.prototype.showCustomSort = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog();\n };\n return Sort;\n}());\n\n/**\n * `NumericContainer` module handles rendering and refreshing numeric container.\n */\nvar NumericContainer = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for numericContainer module\n *\n * @param {Pager} pagerModule - specifies the pagerModule\n * @hidden\n */\n function NumericContainer(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render numericContainer\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.render = function () {\n this.pagerElement = this.pagerModule.element;\n this.renderNumericContainer();\n this.refreshNumericLinks();\n this.wireEvents();\n };\n /**\n * Refreshes the numeric container of Pager.\n *\n * @returns {void}\n */\n NumericContainer.prototype.refresh = function () {\n this.pagerModule.updateTotalPages();\n if (this.links.length) {\n this.updateLinksHtml();\n }\n this.refreshAriaAttrLabel();\n this.updateStyles();\n };\n /**\n * The function is used to refresh refreshNumericLinks\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.refreshNumericLinks = function () {\n var link;\n var pagerObj = this.pagerModule;\n var div = pagerObj.element.querySelector('.e-numericcontainer');\n var frag = document.createDocumentFragment();\n div.innerHTML = '';\n for (var i = 1; i <= pagerObj.pageCount; i++) {\n link = createElement('a', {\n className: 'e-link e-numericitem e-spacing e-pager-default',\n attrs: { role: 'link', tabindex: '-1', 'aria-label': pagerObj.getLocalizedLabel('Page') + i + pagerObj.getLocalizedLabel('Of') +\n pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'), href: 'javascript:void(0);', name: 'Goto page' + i }\n });\n if (pagerObj.currentPage === i) {\n classList(link, ['e-currentitem', 'e-active'], ['e-pager-default']);\n link.setAttribute('aria-selected', 'true');\n link.setAttribute('aria-current', 'page');\n }\n frag.appendChild(link);\n }\n div.appendChild(frag);\n this.links = [].slice.call(div.childNodes);\n };\n /**\n * Binding events to the element while component creation\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.wireEvents = function () {\n EventHandler.add(this.pagerElement, 'click', this.clickHandler, this);\n };\n /**\n * Unbinding events from the element while component destroy\n *\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.unwireEvents = function () {\n EventHandler.remove(this.pagerModule.element, 'click', this.clickHandler);\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n NumericContainer.prototype.destroy = function () {\n this.unwireEvents();\n };\n NumericContainer.prototype.refreshAriaAttrLabel = function () {\n var pagerObj = this.pagerModule;\n var numericContainer = pagerObj.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (links[parseInt(i.toString(), 10)].hasAttribute('aria-label') && links[parseInt(i.toString(), 10)].hasAttribute('index')) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-label', pagerObj.getLocalizedLabel('Page') + links[parseInt(i.toString(), 10)].getAttribute('index')\n + pagerObj.getLocalizedLabel('Of') + pagerObj.totalPages + pagerObj.getLocalizedLabel('Pages'));\n }\n }\n };\n NumericContainer.prototype.renderNumericContainer = function () {\n this.element = createElement('div', {\n className: 'e-pagercontainer', attrs: { 'role': 'navigation' }\n });\n this.renderFirstNPrev(this.element);\n this.renderPrevPagerSet(this.element);\n this.element.appendChild(createElement('div', { className: 'e-numericcontainer' }));\n this.renderNextPagerSet(this.element);\n this.renderNextNLast(this.element);\n this.pagerModule.element.appendChild(this.element);\n };\n NumericContainer.prototype.renderFirstNPrev = function (pagerContainer) {\n this.first = createElement('div', {\n className: 'e-first e-icons e-icon-first',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('firstPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.prev = createElement('div', {\n className: 'e-prev e-icons e-icon-prev',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.first, this.prev], pagerContainer);\n };\n NumericContainer.prototype.renderPrevPagerSet = function (pagerContainer) {\n var prevPager = createElement('div');\n this.PP = createElement('a', {\n className: 'e-link e-pp e-spacing', innerHTML: '...',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('previousPagerTooltip'), role: 'link',\n 'aria-label': this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n tabindex: '-1',\n name: this.pagerModule.getLocalizedLabel('previousPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n prevPager.appendChild(this.PP);\n pagerContainer.appendChild(prevPager);\n };\n NumericContainer.prototype.renderNextPagerSet = function (pagerContainer) {\n var nextPager = createElement('div');\n this.NP = createElement('a', {\n className: 'e-link e-np e-spacing',\n innerHTML: '...', attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPagerTooltip'), role: 'link',\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n tabindex: '-1',\n name: this.pagerModule.getLocalizedLabel('nextPagerTooltip'),\n href: 'javascript:void(0);'\n }\n });\n nextPager.appendChild(this.NP);\n pagerContainer.appendChild(nextPager);\n };\n NumericContainer.prototype.renderNextNLast = function (pagerContainer) {\n this.next = createElement('div', {\n className: 'e-next e-icons e-icon-next',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('nextPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n this.last = createElement('div', {\n className: 'e-last e-icons e-icon-last',\n attrs: {\n title: this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n 'aria-label': this.pagerModule.getLocalizedLabel('lastPageTooltip'),\n tabindex: '-1', role: 'button'\n }\n });\n append([this.next, this.last], pagerContainer);\n };\n NumericContainer.prototype.clickHandler = function (e) {\n var pagerObj = this.pagerModule;\n var target = e.target;\n pagerObj.previousPageNo = pagerObj.currentPage;\n if (!target.classList.contains('e-disable') && !isNullOrUndefined(target.getAttribute('index'))) {\n pagerObj.currentPage = parseInt(target.getAttribute('index'), 10);\n pagerObj.dataBind();\n }\n return false;\n };\n NumericContainer.prototype.updateLinksHtml = function () {\n var pagerObj = this.pagerModule;\n var currentPageSet;\n var pageNo;\n pagerObj.currentPage = pagerObj.totalPages === 1 ? 1 : pagerObj.currentPage;\n if (pagerObj.currentPage > pagerObj.totalPages && pagerObj.totalPages) {\n pagerObj.currentPage = pagerObj.totalPages;\n }\n currentPageSet = parseInt((pagerObj.currentPage / pagerObj.pageCount).toString(), 10);\n if (pagerObj.currentPage % pagerObj.pageCount === 0 && currentPageSet > 0) {\n currentPageSet = currentPageSet - 1;\n }\n for (var i = 0; i < pagerObj.pageCount; i++) {\n pageNo = (currentPageSet * pagerObj.pageCount) + 1 + i;\n if (pageNo <= pagerObj.totalPages) {\n this.links[parseInt(i.toString(), 10)].style.display = '';\n this.links[parseInt(i.toString(), 10)].setAttribute('index', pageNo.toString());\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n if (pagerObj.currentPage !== pageNo) {\n this.links[parseInt(i.toString(), 10)].classList.add('e-pager-default');\n }\n else {\n this.links[parseInt(i.toString(), 10)].classList.remove('e-pager-default');\n }\n }\n else {\n this.links[parseInt(i.toString(), 10)].innerHTML = !pagerObj.customText ? pageNo.toString() : pagerObj.customText + pageNo;\n this.links[parseInt(i.toString(), 10)].style.display = 'none';\n }\n classList(this.links[parseInt(i.toString(), 10)], [], ['e-currentitem', 'e-active']);\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-selected');\n this.links[parseInt(i.toString(), 10)].removeAttribute('aria-current');\n this.links[parseInt(i.toString(), 10)].setAttribute('role', 'link');\n }\n this.first.setAttribute('index', '1');\n this.last.setAttribute('index', pagerObj.totalPages.toString());\n this.prev.setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.next.setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.pagerElement.querySelector('.e-mfirst').setAttribute('index', '1');\n this.pagerElement.querySelector('.e-mlast').setAttribute('index', pagerObj.totalPages.toString());\n this.pagerElement.querySelector('.e-mprev').setAttribute('index', (pagerObj.currentPage - 1).toString());\n this.pagerElement.querySelector('.e-mnext').setAttribute('index', (pagerObj.currentPage + 1).toString());\n this.PP.setAttribute('index', (parseInt(this.links[0].getAttribute('index'), 10) - pagerObj.pageCount).toString());\n this.NP.setAttribute('index', (parseInt(this.links[this.links.length - 1].getAttribute('index'), 10) + 1).toString());\n };\n NumericContainer.prototype.updateStyles = function () {\n this.updateFirstNPrevStyles();\n this.updatePrevPagerSetStyles();\n this.updateNextPagerSetStyles();\n this.updateNextNLastStyles();\n if (this.links.length) {\n classList(this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount], ['e-currentitem', 'e-active'], []);\n this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount].setAttribute('aria-selected', 'true');\n this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount].setAttribute('aria-current', 'page');\n this.links[(this.pagerModule.currentPage - 1) % this.pagerModule.pageCount].removeAttribute('role');\n }\n };\n NumericContainer.prototype.updateFirstNPrevStyles = function () {\n var firstPage = ['e-firstpage', 'e-pager-default'];\n var firstPageDisabled = ['e-firstpagedisabled', 'e-disable'];\n var prevPage = ['e-prevpage', 'e-pager-default'];\n var prevPageDisabled = ['e-prevpagedisabled', 'e-disable'];\n if (this.pagerModule.totalPages > 0 && this.pagerModule.currentPage > 1) {\n classList(this.prev, prevPage, prevPageDisabled);\n classList(this.first, firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPage, firstPageDisabled);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPage, prevPageDisabled);\n }\n else {\n classList(this.prev, prevPageDisabled, prevPage);\n classList(this.first, firstPageDisabled, firstPage);\n classList(this.pagerElement.querySelector('.e-mprev'), prevPageDisabled, prevPage);\n classList(this.pagerElement.querySelector('.e-mfirst'), firstPageDisabled, firstPage);\n }\n };\n NumericContainer.prototype.updatePrevPagerSetStyles = function () {\n if (this.pagerModule.currentPage > this.pagerModule.pageCount) {\n classList(this.PP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n else {\n classList(this.PP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n };\n NumericContainer.prototype.updateNextPagerSetStyles = function () {\n var pagerObj = this.pagerModule;\n var firstPage = this.links[0].innerHTML.replace(pagerObj.customText, '');\n if (!firstPage.length || !this.links.length || (parseInt(firstPage, 10) + pagerObj.pageCount > pagerObj.totalPages)) {\n classList(this.NP, ['e-nextprevitemdisabled', 'e-disable'], ['e-numericitem', 'e-pager-default']);\n }\n else {\n classList(this.NP, ['e-numericitem', 'e-pager-default'], ['e-nextprevitemdisabled', 'e-disable']);\n }\n };\n NumericContainer.prototype.updateNextNLastStyles = function () {\n var lastPage = ['e-lastpage', 'e-pager-default'];\n var lastPageDisabled = ['e-lastpagedisabled', 'e-disable'];\n var nextPage = ['e-nextpage', 'e-pager-default'];\n var nextPageDisabled = ['e-nextpagedisabled', 'e-disable'];\n var pagerObj = this.pagerModule;\n if (pagerObj.currentPage === pagerObj.totalPages || pagerObj.totalRecordsCount === 0) {\n classList(this.last, lastPageDisabled, lastPage);\n classList(this.next, nextPageDisabled, nextPage);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPageDisabled, lastPage);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPageDisabled, nextPage);\n }\n else {\n classList(this.last, lastPage, lastPageDisabled);\n classList(this.next, nextPage, nextPageDisabled);\n classList(this.pagerElement.querySelector('.e-mlast'), lastPage, lastPageDisabled);\n classList(this.pagerElement.querySelector('.e-mnext'), nextPage, nextPageDisabled);\n }\n };\n return NumericContainer;\n}());\n\n/**\n * `PagerMessage` module is used to display pager information.\n */\nvar PagerMessage = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pager Module\n * @hidden\n */\n function PagerMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * The function is used to render pager message\n *\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.render = function () {\n var div = createElement('div', { className: 'e-parentmsgbar', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('Information') } });\n this.pageNoMsgElem = createElement('span', { className: 'e-pagenomsg', styles: 'textalign:right' });\n this.pageCountMsgElem = createElement('span', { className: 'e-pagecountmsg', styles: 'textalign:right' });\n append([this.pageNoMsgElem, this.pageCountMsgElem], div);\n this.pagerModule.element.appendChild(div);\n this.refresh();\n };\n /**\n * Refreshes the pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.refresh = function () {\n var pagerObj = this.pagerModule;\n this.pageNoMsgElem.textContent = this.format(pagerObj.getLocalizedLabel('currentPageInfo'), [pagerObj.totalRecordsCount === 0 ? 0 :\n pagerObj.currentPage, pagerObj.totalPages || 0, pagerObj.totalRecordsCount || 0]) + ' ';\n this.pageCountMsgElem.textContent = this.format(pagerObj.getLocalizedLabel(pagerObj.totalRecordsCount <= 1 ? 'totalItemInfo' : 'totalItemsInfo'), [pagerObj.totalRecordsCount || 0, pagerObj.totalRecordsCount ? (pagerObj.pageSize * (pagerObj.currentPage - 1)) + 1 : 0,\n pagerObj.pageSize * pagerObj.currentPage > pagerObj.totalRecordsCount ? pagerObj.totalRecordsCount :\n pagerObj.pageSize * pagerObj.currentPage]);\n this.pageNoMsgElem.parentElement.setAttribute('aria-label', this.pageNoMsgElem.textContent + this.pageCountMsgElem.textContent);\n };\n /**\n * Hides the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.hideMessage = function () {\n if (this.pageNoMsgElem) {\n this.pageNoMsgElem.style.display = 'none';\n }\n if (this.pageCountMsgElem) {\n this.pageCountMsgElem.style.display = 'none';\n }\n };\n /**\n * Shows the Pager information.\n *\n * @returns {void}\n */\n PagerMessage.prototype.showMessage = function () {\n if (!this.pageNoMsgElem) {\n this.render();\n }\n this.pageNoMsgElem.style.display = '';\n this.pageCountMsgElem.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n PagerMessage.prototype.destroy = function () {\n //destroy\n };\n PagerMessage.prototype.format = function (str, args) {\n var regx;\n for (var i = 0; i < args.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n regx = new RegExp('\\\\{' + (i) + '\\\\}', 'gm');\n str = str.replace(regx, args[parseInt(i.toString(), 10)].toString());\n }\n return str;\n };\n return PagerMessage;\n}());\n\nvar __extends$19 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Represents the `Pager` component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Pager = /** @__PURE__ @class */ (function (_super) {\n __extends$19(Pager, _super);\n /**\n * Constructor for creating the component.\n *\n * @param {PagerModel} options - specifies the options\n * @param {string} element - specifies the element\n * @param {string} parent - specifies the pager parent\n * @hidden\n */\n function Pager(options, element, parent) {\n var _this = _super.call(this, options, element) || this;\n /** @hidden */\n _this.hasParent = false;\n _this.pageRefresh = 'pager-refresh';\n _this.firstPagerFocus = false;\n _this.parent = parent;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} returns the modules declaration\n * @hidden\n */\n Pager.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableExternalMessage) {\n modules.push({\n member: 'externalMessage',\n args: [this]\n });\n }\n if (this.checkpagesizes()) {\n modules.push({\n member: 'pagerdropdown',\n args: [this]\n });\n }\n return modules;\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @hidden\n */\n Pager.prototype.preRender = function () {\n //preRender\n this.defaultConstants = {\n currentPageInfo: '{0} of {1} pages',\n totalItemsInfo: '({0} items)',\n totalItemInfo: '({0} item)',\n firstPageTooltip: 'Go to first page',\n lastPageTooltip: 'Go to last page',\n nextPageTooltip: 'Go to next page',\n previousPageTooltip: 'Go to previous page',\n nextPagerTooltip: 'Go to next pager items',\n previousPagerTooltip: 'Go to previous pager items',\n pagerDropDown: 'Items per page',\n pagerAllDropDown: 'Items',\n CurrentPageInfo: '{0} of {1} pages',\n TotalItemsInfo: '({0} items)',\n FirstPageTooltip: 'Go to first page',\n LastPageTooltip: 'Go to last page',\n NextPageTooltip: 'Go to next page',\n PreviousPageTooltip: 'Go to previous page',\n NextPagerTooltip: 'Go to next pager items',\n PreviousPagerTooltip: 'Go to previous pager items',\n PagerDropDown: 'Items per page',\n PagerAllDropDown: 'Items',\n All: 'All',\n Container: 'Pager Container',\n Information: 'Pager Information',\n ExternalMsg: 'Pager external message',\n Page: 'Page ',\n Of: ' of ',\n Pages: ' Pages'\n };\n this.containerModule = new NumericContainer(this);\n this.pagerMessageModule = new PagerMessage(this);\n };\n /**\n * To Initialize the component rendering\n *\n * @returns {void}\n */\n Pager.prototype.render = function () {\n this.element.setAttribute('data-role', 'pager');\n this.element.setAttribute('tabindex', '-1');\n this.initLocalization();\n this.element.setAttribute('aria-label', this.getLocalizedLabel('Container'));\n if (this.cssClass) {\n addClass([this.element], [this.cssClass]);\n }\n if (!this.hasParent) {\n this.element.setAttribute('tabindex', '0');\n }\n if (this.template) {\n if (this.isReactTemplate()) {\n this.on(this.pageRefresh, this.pagerTemplate, this);\n this.notify(this.pageRefresh, {});\n }\n else {\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n this.totalRecordsCount = this.totalRecordsCount || 0;\n this.renderFirstPrevDivForDevice();\n this.containerModule.render();\n if (this.enablePagerMessage) {\n this.pagerMessageModule.render();\n }\n this.renderNextLastDivForDevice();\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.render();\n }\n this.addAriaLabel();\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n this.refresh();\n this.trigger('created', { 'currentPage': this.currentPage, 'totalRecordsCount': this.totalRecordsCount });\n }\n this.wireEvents();\n this.addListener();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} returns the persist data\n * @hidden\n */\n Pager.prototype.getPersistData = function () {\n var keyEntity = ['currentPage', 'pageSize'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To destroy the Pager component.\n *\n * @method destroy\n * @returns {void}\n */\n Pager.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.isReactTemplate()) {\n this.off(this.pageRefresh, this.pagerTemplate);\n if (!this.hasParent) {\n this.destroyTemplate(['template']);\n }\n }\n this.removeListener();\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n this.containerModule.destroy();\n this.pagerMessageModule.destroy();\n if (!this.isReactTemplate()) {\n this.element.innerHTML = '';\n }\n };\n /**\n * Destroys the given template reference.\n *\n * @param {string[]} propertyNames - Defines the collection of template name.\n * @param {any} index - Defines the index\n */\n // eslint-disable-next-line\n Pager.prototype.destroyTemplate = function (propertyNames, index) {\n this.clearTemplate(propertyNames, index);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Pager.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PagerModel} newProp - specifies the new property\n * @param {PagerModel} oldProp - specifies the old propety\n * @returns {void}\n * @hidden\n */\n Pager.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n if ((newProp.pageSize === this.getLocalizedLabel('All')) && oldProp.pageSize === this.totalRecordsCount) {\n this.pageSize = this.totalRecordsCount;\n return;\n }\n if (newProp.pageCount !== oldProp.pageCount) {\n this.containerModule.refreshNumericLinks();\n this.containerModule.refresh();\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'currentPage':\n if (this.checkGoToPage(newProp.currentPage, oldProp.currentPage)) {\n this.currentPageChanged(newProp, oldProp);\n }\n break;\n case 'pageSize':\n case 'totalRecordsCount':\n case 'customText':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n if (oldProp.pageSize !== newProp.pageSize) {\n this.currentPage = 1;\n }\n this.pagerdropdownModule.setDropDownValue('value', this.pageSize);\n }\n if (newProp.pageSize !== oldProp.pageSize) {\n this.pageSize = newProp.pageSize;\n this.currentPageChanged(newProp, oldProp);\n }\n else {\n this.refresh();\n }\n break;\n case 'pageSizes':\n if (this.checkpagesizes() && this.pagerdropdownModule) {\n this.pagerdropdownModule.destroy();\n this.pagerdropdownModule.render();\n }\n this.refresh();\n break;\n case 'template':\n this.templateFn = this.compile(this.template);\n this.refresh();\n break;\n case 'locale':\n this.initLocalization();\n this.refresh();\n break;\n case 'enableExternalMessage':\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.render();\n }\n break;\n case 'externalMessage':\n if (this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'enablePagerMessage':\n if (this.enablePagerMessage) {\n this.pagerMessageModule.showMessage();\n }\n else {\n this.pagerMessageModule.hideMessage();\n }\n break;\n }\n }\n };\n Pager.prototype.wireEvents = function () {\n if (!this.hasParent) {\n EventHandler.add(this.element, 'keydown', this.keyPressHandler, this);\n EventHandler.add(document.body, 'keydown', this.keyDownHandler, this);\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Pager.prototype.unwireEvents = function () {\n if (!this.hasParent) {\n EventHandler.remove(this.element, 'keydown', this.keyPressHandler);\n EventHandler.remove(document.body, 'keydown', this.keyDownHandler);\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Pager.prototype.onFocusIn = function (e) {\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n if (isNullOrUndefined(focusedTabIndexElement)) {\n var target = e.target;\n var dropDownPage = this.getDropDownPage();\n if (!this.hasParent) {\n this.element.tabIndex = -1;\n }\n if (target === this.element && !this.hasParent) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n this.addFocus(focusablePagerElements[0], true);\n return;\n }\n if (target === this.element) {\n this.element.tabIndex = 0;\n return;\n }\n if (target !== dropDownPage && !target.classList.contains('e-disable')) {\n this.addFocus(target, true);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.onFocusOut = function (e) {\n var focusedElement = this.getFocusedElement();\n var dropDownPage = this.getDropDownPage();\n if (!isNullOrUndefined(focusedElement)) {\n this.removeFocus(focusedElement, true);\n }\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n this.removeFocus(dropDownPage, true);\n }\n this.setTabIndexForFocusLastElement();\n if (!this.hasParent) {\n this.element.tabIndex = 0;\n }\n if (this.hasParent) {\n this.element.tabIndex = -1;\n }\n };\n Pager.prototype.keyDownHandler = function (e) {\n if (e.altKey) {\n if (e.keyCode === 74) {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n }\n }\n };\n Pager.prototype.keyPressHandler = function (e) {\n var presskey = extend(e, { cancel: false });\n this.notify(keyPressed, presskey);\n if (presskey.cancel === true) {\n e.stopImmediatePropagation();\n }\n };\n Pager.prototype.addListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.on(keyPressed, this.onKeyPress, this);\n }\n };\n Pager.prototype.removeListener = function () {\n if (this.isDestroyed) {\n return;\n }\n if (!this.hasParent) {\n this.off(keyPressed, this.onKeyPress);\n }\n };\n Pager.prototype.onKeyPress = function (e) {\n if (!this.hasParent) {\n if (this.checkPagerHasFocus()) {\n this.changePagerFocus(e);\n }\n else {\n e.preventDefault();\n this.setPagerFocus();\n }\n }\n };\n /**\n * @returns {boolean} - Return the true value if pager has focus\n * @hidden */\n Pager.prototype.checkPagerHasFocus = function () {\n return this.getFocusedTabindexElement() ? true : false;\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerContainerFocus = function () {\n this.element.focus();\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.setPagerFocus = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n if (focusablePagerElements.length > 0) {\n focusablePagerElements[0].focus();\n }\n };\n Pager.prototype.setPagerFocusForActiveElement = function () {\n var currentActivePage = this.getActiveElement();\n if (currentActivePage) {\n currentActivePage.focus();\n }\n };\n Pager.prototype.setTabIndexForFocusLastElement = function () {\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && !isNullOrUndefined(dropDownPage.offsetParent)) {\n dropDownPage.tabIndex = 0;\n }\n else if (focusablePagerElements.length > 0) {\n focusablePagerElements[focusablePagerElements.length - 1].tabIndex = 0;\n }\n };\n /**\n * @param {KeyboardEventArgs} e - Keyboard Event Args\n * @returns {void}\n * @hidden */\n Pager.prototype.changePagerFocus = function (e) {\n if (e.shiftKey && e.keyCode === 9) {\n this.changeFocusByShiftTab(e);\n }\n else if (e.keyCode === 9) {\n this.changeFocusByTab(e);\n }\n else if (e.keyCode === 13 || e.keyCode === 32) {\n this.navigateToPageByEnterOrSpace(e);\n }\n else if (e.keyCode === 37 || e.keyCode === 39 || e.keyCode === 35 || e.keyCode === 36) {\n this.navigateToPageByKey(e);\n }\n };\n Pager.prototype.getFocusedTabindexElement = function () {\n var focusedTabIndexElement;\n var tabindexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n for (var i = 0; i < tabindexElements.length; i++) {\n var element = tabindexElements[parseInt(i.toString(), 10)];\n if (element && (element.classList.contains('e-focused') || element.classList.contains('e-input-focus'))) {\n focusedTabIndexElement = element;\n break;\n }\n }\n return focusedTabIndexElement;\n };\n Pager.prototype.changeFocusByTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (focusablePagerElements.length > 0) {\n if (this.pageSizes && dropDownPage && currentItemPagerFocus === focusablePagerElements[focusablePagerElements.length - 1]) {\n dropDownPage.tabIndex = 0;\n }\n else {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var incrementNumber = i + 1;\n if (incrementNumber < focusablePagerElements.length) {\n e.preventDefault();\n focusablePagerElements[parseInt(incrementNumber.toString(), 10)].focus();\n }\n break;\n }\n }\n }\n }\n };\n Pager.prototype.changeFocusByShiftTab = function (e) {\n var currentItemPagerFocus = this.getFocusedTabindexElement();\n var focusablePagerElements = this.getFocusablePagerElements(this.element, []);\n var dropDownPage = this.getDropDownPage();\n if (this.pageSizes && dropDownPage && dropDownPage.classList.contains('e-input-focus')) {\n dropDownPage.tabIndex = -1;\n this.addFocus(focusablePagerElements[focusablePagerElements.length - 1], true);\n }\n else if (focusablePagerElements.length > 0) {\n for (var i = 0; i < focusablePagerElements.length; i++) {\n if (currentItemPagerFocus === focusablePagerElements[parseInt(i.toString(), 10)]) {\n var decrementNumber = i - 1;\n if (decrementNumber >= 0) {\n e.preventDefault();\n focusablePagerElements[parseInt(decrementNumber.toString(), 10)].focus();\n }\n else if (this.hasParent) {\n var rows = this.parent.getRows();\n var lastRow = rows[rows.length - 1];\n var lastCell = lastRow.lastChild;\n e.preventDefault();\n lastCell.focus();\n this.firstPagerFocus = true;\n }\n break;\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden */\n Pager.prototype.checkFirstPagerFocus = function () {\n if (this.firstPagerFocus) {\n this.firstPagerFocus = false;\n return true;\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Pager.prototype.navigateToPageByEnterOrSpace = function (e) {\n var currentItemPagerFocus = this.getFocusedElement();\n if (currentItemPagerFocus) {\n this.goToPage(parseInt(currentItemPagerFocus.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n var selectedClass = this.getClass(currentItemPagerFocus);\n var classElement = this.getElementByClass(selectedClass);\n if ((selectedClass === 'e-first' || selectedClass === 'e-prev' || selectedClass === 'e-next'\n || selectedClass === 'e-last' || selectedClass === 'e-pp' || selectedClass === 'e-np')\n && classElement && !classElement.classList.contains('e-disable')) {\n classElement.focus();\n }\n else if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.navigateToPageByKey = function (e) {\n var actionClass = e.keyCode === 37 ? '.e-prev' : e.keyCode === 39 ? '.e-next'\n : e.keyCode === 35 ? '.e-last' : e.keyCode === 36 ? '.e-first' : '';\n var pagingItem = this.element.querySelector(actionClass);\n var currentItemPagerFocus = this.getFocusedElement();\n if (!isNullOrUndefined(pagingItem) && pagingItem.hasAttribute('index')\n && !isNaN(parseInt(pagingItem.getAttribute('index'), 10))) {\n this.goToPage(parseInt(pagingItem.getAttribute('index'), 10));\n var currentActivePage = this.getActiveElement();\n if (this.checkFocusInAdaptiveMode(currentItemPagerFocus)) {\n this.changeFocusInAdaptiveMode(currentItemPagerFocus);\n }\n else {\n if (currentActivePage) {\n currentActivePage.focus();\n }\n }\n }\n };\n Pager.prototype.checkFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n return selectedClass === 'e-mfirst' || selectedClass === 'e-mprev' || selectedClass === 'e-mnext'\n || selectedClass === 'e-mlast' ? true : false;\n };\n Pager.prototype.changeFocusInAdaptiveMode = function (element) {\n var selectedClass = this.getClass(element);\n var classElement = this.getElementByClass(selectedClass);\n if (classElement && classElement.classList.contains('e-disable')) {\n if (selectedClass === 'e-mnext' || selectedClass === 'e-mlast') {\n var mPrev = this.element.querySelector('.e-mprev');\n mPrev.focus();\n }\n else {\n this.setPagerFocus();\n }\n }\n };\n Pager.prototype.removeTabindexLastElements = function () {\n var tabIndexElements = this.element.querySelectorAll('[tabindex]:not([tabindex=\"-1\"])');\n if (tabIndexElements.length > 1) {\n for (var i = 1; i < tabIndexElements.length; i++) {\n var element = tabIndexElements[parseInt(i.toString(), 10)];\n if (element) {\n element.tabIndex = -1;\n }\n }\n }\n };\n Pager.prototype.getActiveElement = function () {\n return this.element.querySelector('.e-active');\n };\n /**\n * @returns {Element} - Returns DropDown Page\n * @hidden */\n Pager.prototype.getDropDownPage = function () {\n var dropDownPageHolder = this.element.querySelector('.e-pagerdropdown');\n var dropDownPage;\n if (dropDownPageHolder) {\n dropDownPage = dropDownPageHolder.children[0];\n }\n return dropDownPage;\n };\n Pager.prototype.getFocusedElement = function () {\n return this.element.querySelector('.e-focused');\n };\n Pager.prototype.getClass = function (element) {\n var currentClass;\n var classList$$1 = ['e-mfirst', 'e-mprev', 'e-first', 'e-prev', 'e-pp',\n 'e-np', 'e-next', 'e-last', 'e-mnext', 'e-mlast'];\n for (var i = 0; i < classList$$1.length; i++) {\n if (element && element.classList.contains(classList$$1[parseInt(i.toString(), 10)])) {\n currentClass = classList$$1[parseInt(i.toString(), 10)];\n return currentClass;\n }\n }\n return currentClass;\n };\n Pager.prototype.getElementByClass = function (className) {\n return this.element.querySelector('.' + className);\n };\n /**\n * @param {Element} element - Pager element\n * @param {Element[]} previousElements - Iterating pager element\n * @returns {Element[]} - Returns focusable pager element\n * @hidden */\n Pager.prototype.getFocusablePagerElements = function (element, previousElements) {\n var target = element;\n var targetChildrens = target.children;\n var pagerElements = previousElements;\n for (var i = 0; i < targetChildrens.length; i++) {\n var element_1 = targetChildrens[parseInt(i.toString(), 10)];\n if (element_1.children.length > 0 && !element_1.classList.contains('e-pagesizes')) {\n pagerElements = this.getFocusablePagerElements(element_1, pagerElements);\n }\n else {\n var tabindexElement = targetChildrens[parseInt(i.toString(), 10)];\n if (tabindexElement.hasAttribute('tabindex') && !element_1.classList.contains('e-disable')\n && element_1.style.display !== 'none'\n && !isNullOrUndefined(element_1.offsetParent)) {\n pagerElements.push(tabindexElement);\n }\n }\n }\n return pagerElements;\n };\n Pager.prototype.addFocus = function (element, addFocusClass) {\n if (addFocusClass) {\n addClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = 0;\n };\n Pager.prototype.removeFocus = function (element, removeFocusClass) {\n if (removeFocusClass) {\n removeClass([element], ['e-focused', 'e-focus']);\n }\n element.tabIndex = -1;\n };\n /**\n * Gets the localized label by locale keyword.\n *\n * @param {string} key - specifies the key\n * @returns {string} returns the localized label\n */\n Pager.prototype.getLocalizedLabel = function (key) {\n return this.localeObj.getConstant(key);\n };\n /**\n * Navigate to target page by given number.\n *\n * @param {number} pageNo - Defines page number.\n * @returns {void}\n */\n Pager.prototype.goToPage = function (pageNo) {\n if (this.checkGoToPage(pageNo)) {\n this.currentPage = pageNo;\n this.dataBind();\n }\n };\n /**\n * @param {number} pageSize - specifies the pagesize\n * @returns {void}\n * @hidden\n */\n Pager.prototype.setPageSize = function (pageSize) {\n this.pageSize = pageSize;\n this.dataBind();\n };\n Pager.prototype.checkpagesizes = function () {\n if (this.pageSizes === true || this.pageSizes.length) {\n return true;\n }\n return false;\n };\n Pager.prototype.checkGoToPage = function (newPageNo, oldPageNo) {\n if (newPageNo !== this.currentPage) {\n this.previousPageNo = this.currentPage;\n }\n if (!isNullOrUndefined(oldPageNo)) {\n this.previousPageNo = oldPageNo;\n }\n if (this.previousPageNo !== newPageNo && (newPageNo >= 1 && newPageNo <= this.totalPages)) {\n return true;\n }\n return false;\n };\n Pager.prototype.currentPageChanged = function (newProp, oldProp) {\n if (this.enableQueryString) {\n this.updateQueryString(this.currentPage);\n }\n if (newProp.currentPage !== oldProp.currentPage || newProp.pageSize !== oldProp.pageSize) {\n var args = {\n currentPage: this.currentPage,\n newProp: newProp, oldProp: oldProp, cancel: false\n };\n this.trigger('click', args);\n if (!args.cancel) {\n this.refresh();\n }\n }\n };\n Pager.prototype.pagerTemplate = function () {\n if (this.isReactTemplate() && this.hasParent) {\n return;\n }\n var result;\n this.element.classList.add('e-pagertemplate');\n this.compile(this.template);\n var data = {\n currentPage: this.currentPage, pageSize: this.pageSize, pageCount: this.pageCount,\n totalRecordsCount: this.totalRecordsCount, totalPages: this.totalPages\n };\n var tempId = this.element.parentElement.id + '_template';\n if (this.isReactTemplate() && !this.isVue) {\n this.getPagerTemplate()(data, this, 'template', tempId, null, null, this.element);\n this.renderReactTemplates();\n }\n else {\n result = this.isVue ? this.getPagerTemplate()(data, this, 'template') : this.getPagerTemplate()(data);\n appendChildren(this.element, result);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Pager.prototype.updateTotalPages = function () {\n this.totalPages = this.isAllPage ? 1 : (this.totalRecordsCount % this.pageSize === 0) ? (this.totalRecordsCount / this.pageSize) :\n (parseInt((this.totalRecordsCount / this.pageSize).toString(), 10) + 1);\n };\n /**\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.getPagerTemplate = function () {\n return this.templateFn;\n };\n /**\n * @param {string} template - specifies the template\n * @returns {Function} returns the function\n * @hidden\n */\n Pager.prototype.compile = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n this.templateFn = compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n this.templateFn = compile(template);\n }\n }\n return undefined;\n };\n /**\n * Refreshes page count, pager information and external message.\n *\n * @returns {void}\n */\n Pager.prototype.refresh = function () {\n if (this.template) {\n if (this.isReactTemplate()) {\n this.updateTotalPages();\n this.notify(this.pageRefresh, {});\n }\n else {\n this.element.innerHTML = '';\n this.updateTotalPages();\n this.pagerTemplate();\n }\n }\n else {\n this.updateRTL();\n var focusedTabIndexElement = this.getFocusedTabindexElement();\n this.containerModule.refresh();\n this.removeTabindexLastElements();\n if (focusedTabIndexElement && focusedTabIndexElement.classList.contains('e-disable')) {\n if (this.checkFocusInAdaptiveMode(focusedTabIndexElement)) {\n this.changeFocusInAdaptiveMode(focusedTabIndexElement);\n }\n else {\n this.setPagerFocusForActiveElement();\n }\n }\n if (this.enablePagerMessage) {\n this.pagerMessageModule.refresh();\n }\n if (this.pagerdropdownModule) {\n this.pagerdropdownModule.refresh();\n }\n if (this.enableExternalMessage && this.externalMessageModule) {\n this.externalMessageModule.refresh();\n }\n this.setTabIndexForFocusLastElement();\n }\n };\n Pager.prototype.updateRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n Pager.prototype.initLocalization = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultConstants, this.locale);\n };\n Pager.prototype.updateQueryString = function (value) {\n var updatedUrl = this.getUpdatedURL(window.location.href, 'page', value.toString());\n window.history.pushState({ path: updatedUrl }, '', updatedUrl);\n };\n Pager.prototype.getUpdatedURL = function (uri, key, value) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regx = new RegExp('([?|&])' + key + '=.*?(&|#|$)', 'i');\n if (uri.match(regx)) {\n return uri.replace(regx, '$1' + key + '=' + value + '$2');\n }\n else {\n var hash = '';\n if (uri.indexOf('#') !== -1) {\n hash = uri.replace(/.*#/, '#');\n uri = uri.replace(/#.*/, '');\n }\n return uri + (uri.indexOf('?') !== -1 ? '&' : '?') + key + '=' + value + hash;\n }\n };\n Pager.prototype.renderFirstPrevDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mfirst e-icons e-icon-first',\n attrs: { title: this.getLocalizedLabel('firstPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mprev e-icons e-icon-prev',\n attrs: { title: this.getLocalizedLabel('previousPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.renderNextLastDivForDevice = function () {\n this.element.appendChild(createElement('div', {\n className: 'e-mnext e-icons e-icon-next',\n attrs: { title: this.getLocalizedLabel('nextPageTooltip'), tabindex: '-1' }\n }));\n this.element.appendChild(createElement('div', {\n className: 'e-mlast e-icons e-icon-last',\n attrs: { title: this.getLocalizedLabel('lastPageTooltip'), tabindex: '-1' }\n }));\n };\n Pager.prototype.addAriaLabel = function () {\n var classList$$1 = ['.e-mfirst', '.e-mprev', '.e-mnext', '.e-mlast'];\n if (!Browser.isDevice) {\n for (var i = 0; i < classList$$1.length; i++) {\n var element = this.element.querySelector(classList$$1[parseInt(i.toString(), 10)]);\n element.setAttribute('aria-label', element.getAttribute('title'));\n }\n }\n };\n Pager.prototype.isReactTemplate = function () {\n return (this.isReact || this.isVue) && this.template && typeof (this.template) !== 'string';\n };\n __decorate$5([\n Property(false)\n ], Pager.prototype, \"enableQueryString\", void 0);\n __decorate$5([\n Property(false)\n ], Pager.prototype, \"enableExternalMessage\", void 0);\n __decorate$5([\n Property(true)\n ], Pager.prototype, \"enablePagerMessage\", void 0);\n __decorate$5([\n Property(12)\n ], Pager.prototype, \"pageSize\", void 0);\n __decorate$5([\n Property(10)\n ], Pager.prototype, \"pageCount\", void 0);\n __decorate$5([\n Property(1)\n ], Pager.prototype, \"currentPage\", void 0);\n __decorate$5([\n Property()\n ], Pager.prototype, \"totalRecordsCount\", void 0);\n __decorate$5([\n Property()\n ], Pager.prototype, \"externalMessage\", void 0);\n __decorate$5([\n Property(false)\n ], Pager.prototype, \"pageSizes\", void 0);\n __decorate$5([\n Property()\n ], Pager.prototype, \"template\", void 0);\n __decorate$5([\n Property('')\n ], Pager.prototype, \"customText\", void 0);\n __decorate$5([\n Event()\n ], Pager.prototype, \"click\", void 0);\n __decorate$5([\n Property('')\n ], Pager.prototype, \"cssClass\", void 0);\n __decorate$5([\n Event()\n ], Pager.prototype, \"dropDownChanged\", void 0);\n __decorate$5([\n Event()\n ], Pager.prototype, \"created\", void 0);\n Pager = __decorate$5([\n NotifyPropertyChanges\n ], Pager);\n return Pager;\n}(Component));\n\n/**\n * `PagerDropDown` module handles selected pageSize from DropDownList.\n */\nvar PagerDropDown = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for pager module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function PagerDropDown(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n * @hidden\n */\n PagerDropDown.prototype.getModuleName = function () {\n return 'pagerdropdown';\n };\n /**\n * The function is used to render pager dropdown\n *\n * @returns {void}\n * @hidden\n */\n PagerDropDown.prototype.render = function () {\n var pagerObj = this.pagerModule;\n this.pagerDropDownDiv = createElement('div', { className: 'e-pagesizes' });\n var dropDownDiv = createElement('div', { className: 'e-pagerdropdown' });\n var defaultTextDiv = createElement('div', { className: 'e-pagerconstant' });\n var input = createElement('input', { attrs: { type: 'text', tabindex: '-1' } });\n this.pagerCons = createElement('span', {\n className: 'e-constant', innerHTML: this.pagerModule.getLocalizedLabel('pagerDropDown')\n });\n dropDownDiv.appendChild(input);\n defaultTextDiv.appendChild(this.pagerCons);\n this.pagerDropDownDiv.appendChild(dropDownDiv);\n this.pagerDropDownDiv.appendChild(defaultTextDiv);\n this.pagerModule.element.appendChild(this.pagerDropDownDiv);\n var pageSizesModule = this.pagerModule.pageSizes;\n var pageSizesArray = (pageSizesModule.length ? this.convertValue(pageSizesModule) :\n [this.pagerModule.getLocalizedLabel('All'), '5', '10', '12', '20']);\n var defaultValue = this.pagerModule.pageSize;\n this.dropDownListObject = new DropDownList({\n dataSource: pageSizesArray,\n value: defaultValue.toString(),\n change: this.onChange.bind(this),\n placeholder: this.pagerModule.getLocalizedLabel('pagerDropDown'),\n cssClass: this.pagerModule.cssClass ? 'e-alldrop' + ' ' + this.pagerModule.cssClass : 'e-alldrop'\n });\n this.dropDownListObject.appendTo(input);\n if (pageSizesModule.length) {\n this.dropDownListObject.element.value = this.pagerModule.pageSize.toString();\n }\n pagerObj.pageSize = defaultValue;\n pagerObj.dataBind();\n pagerObj.trigger('dropDownChanged', { pageSize: defaultValue });\n this.addEventListener();\n };\n /**\n * For internal use only - Get the pagesize.\n *\n * @param {ChangeEventArgs} e - specifies the changeeventargs\n * @returns {void}\n * @private\n * @hidden\n */\n PagerDropDown.prototype.onChange = function (e) {\n if (this.dropDownListObject.value === this.pagerModule.getLocalizedLabel('All')) {\n this.pagerModule.pageSize = this.pagerModule.totalRecordsCount;\n this.pagerModule.isAllPage = true;\n this.refresh();\n e.value = this.pagerModule.pageSize;\n if (document.getElementsByClassName('e-popup-open e-alldrop').length) {\n document.getElementsByClassName('e-popup-open e-alldrop')[0].style.display = 'none';\n }\n }\n else {\n this.pagerModule.pageSize = parseInt(this.dropDownListObject.value, 10);\n this.pagerModule.isAllPage = false;\n if (this.pagerCons.innerHTML !== this.pagerModule.getLocalizedLabel('pagerDropDown')) {\n this.refresh();\n }\n }\n this.pagerModule.dataBind();\n this.pagerModule.trigger('dropDownChanged', { pageSize: this.pagerModule.isAllPage ? this.pagerModule.totalRecordsCount :\n parseInt(this.dropDownListObject.value, 10) });\n };\n PagerDropDown.prototype.refresh = function () {\n if (this.pagerCons) {\n if (this.isPageSizeAll(this.pagerModule.pageSize)) {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerAllDropDown');\n }\n else {\n this.pagerCons.innerHTML = this.pagerModule.getLocalizedLabel('pagerDropDown');\n }\n }\n };\n PagerDropDown.prototype.beforeValueChange = function (prop) {\n if (typeof prop.newProp.value === 'number') {\n var val = prop.newProp.value.toString();\n prop.newProp.value = val;\n }\n };\n PagerDropDown.prototype.convertValue = function (pageSizeValue) {\n var item = pageSizeValue;\n for (var i = 0; i < item.length; i++) {\n item[parseInt(i.toString(), 10)] = parseInt(item[parseInt(i.toString(), 10)], 10) ?\n item[parseInt(i.toString(), 10)].toString() : (this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) !== '')\n ? this.pagerModule.getLocalizedLabel(item[parseInt(i.toString(), 10)]) : item[parseInt(i.toString(), 10)];\n }\n return item;\n };\n PagerDropDown.prototype.isPageSizeAll = function (value) {\n var pageSizeNum = typeof (value) === 'string' && value !== this.pagerModule.getLocalizedLabel('All') ?\n parseInt(value, 10) : value;\n if (pageSizeNum === this.pagerModule.totalRecordsCount || value === this.pagerModule.getLocalizedLabel('All')) {\n return true;\n }\n else {\n return false;\n }\n };\n PagerDropDown.prototype.setDropDownValue = function (prop, value) {\n if (this.dropDownListObject) {\n this.pagerModule.isAllPage = this.isPageSizeAll(value);\n this.dropDownListObject[\"\" + prop] = this.pagerModule.isAllPage ? this.pagerModule.getLocalizedLabel('All') : value;\n }\n };\n PagerDropDown.prototype.addEventListener = function () {\n this.dropDownListObject.on('beforeValueChange', this.beforeValueChange, this);\n };\n PagerDropDown.prototype.removeEventListener = function () {\n this.dropDownListObject.off('beforeValueChange', this.beforeValueChange);\n };\n /**\n * To destroy the Pagerdropdown\n *\n * @param {string} args - specifies the arguments\n * @param {string} args.requestType - specfies the request type\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n PagerDropDown.prototype.destroy = function (args) {\n if (this.dropDownListObject && !this.dropDownListObject.isDestroyed) {\n this.removeEventListener();\n this.dropDownListObject.destroy();\n remove(this.pagerDropDownDiv);\n }\n };\n return PagerDropDown;\n}());\n\n/**\n * `ExternalMessage` module is used to display user provided message.\n */\nvar ExternalMessage = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for externalMessage module\n *\n * @param {Pager} pagerModule - specifies the pagermodule\n * @hidden\n */\n function ExternalMessage(pagerModule) {\n this.pagerModule = pagerModule;\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExternalMessage.prototype.getModuleName = function () {\n return 'externalMessage';\n };\n /**\n * The function is used to render pager externalMessage\n *\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.render = function () {\n this.element = createElement('div', { className: 'e-pagerexternalmsg', attrs: { 'aria-label': this.pagerModule.getLocalizedLabel('ExternalMsg') } });\n this.pagerModule.element.appendChild(this.element);\n this.refresh();\n };\n /**\n * Refreshes the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.refresh = function () {\n if (this.pagerModule.externalMessage && this.pagerModule.externalMessage.toString().length) {\n this.showMessage();\n this.element.innerHTML = this.pagerModule.externalMessage;\n }\n else {\n this.hideMessage();\n }\n };\n /**\n * Hides the external message of Pager.\n *\n * @returns {void}\n */\n ExternalMessage.prototype.hideMessage = function () {\n if (!isNullOrUndefined(this.element)) {\n this.element.style.display = 'none';\n }\n };\n /**\n * Shows the external message of the Pager.\n *\n * @returns {void}s\n */\n ExternalMessage.prototype.showMessage = function () {\n this.element.style.display = '';\n };\n /**\n * To destroy the PagerMessage\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ExternalMessage.prototype.destroy = function () {\n remove(this.element);\n };\n return ExternalMessage;\n}());\n\n/**\n * The `Page` module is used to render pager and handle paging action.\n */\nvar Page = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid paging module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PageSettingsModel} pageSettings - specifies the PageSettingsModel\n * @hidden\n */\n function Page(parent, pageSettings) {\n this.isInitialRender = true;\n this.isCancel = false;\n Pager.Inject(ExternalMessage, PagerDropDown);\n this.parent = parent;\n this.pageSettings = pageSettings;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Page.prototype.getModuleName = function () {\n return 'pager';\n };\n /**\n * The function used to render pager from grid pageSettings\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.render = function () {\n var gObj = this.parent;\n this.pagerDestroy();\n if (!isNullOrUndefined(this.parent.pagerTemplate)) {\n this.pageSettings.template = this.parent.pagerTemplate;\n this.parent.pageTemplateChange = true;\n }\n this.element = this.parent.createElement('div', { className: 'e-gridpager' });\n var pagerObj = extend$1({}, extend({}, getActualProperties(this.pageSettings)), {\n click: this.clickHandler.bind(this),\n dropDownChanged: this.onSelect.bind(this),\n enableRtl: gObj.enableRtl, locale: gObj.locale,\n created: this.addAriaAttr.bind(this)\n }, ['parentObj', 'propName']);\n pagerObj.cssClass = this.parent.cssClass ? this.parent.cssClass : '';\n this.pagerObj = new Pager(pagerObj, undefined, this.parent);\n this.pagerObj.hasParent = true;\n this.pagerObj.on(pagerRefresh, this.renderReactPagerTemplate, this);\n this.pagerObj.allowServerDataBinding = false;\n };\n Page.prototype.onSelect = function (e) {\n this.pageSettings.pageSize = e.pageSize;\n if (!this.isInitialLoad) {\n this.pageSettings.currentPage = 1;\n }\n };\n Page.prototype.addAriaAttr = function () {\n if (!(this.pageSettings.template)) {\n var numericContainerNew = this.parent.createElement('div', { className: 'e-numericcontainer' });\n var pagerContainer = this.element.querySelector('.e-pagercontainer');\n var frag = document.createDocumentFragment();\n var numericContainer = this.element.querySelector('.e-numericcontainer');\n var links = numericContainer.querySelectorAll('a');\n for (var i = 0; i < links.length; i++) {\n if (this.parent.getContentTable()) {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n else {\n links[parseInt(i.toString(), 10)].setAttribute('aria-owns', this.parent.element.getAttribute('id') + '_content_table');\n }\n var numericContainerDiv = this.parent.createElement('div');\n numericContainerDiv.appendChild(links[parseInt(i.toString(), 10)]);\n frag.appendChild(numericContainerDiv);\n }\n numericContainerNew.appendChild(frag);\n pagerContainer.replaceChild(numericContainerNew, numericContainer);\n var classList$$1 = ['.e-mfirst', '.e-mprev', '.e-first', '.e-prev', '.e-next', '.e-last', '.e-mnext', '.e-mlast'];\n for (var j = 0; j < classList$$1.length; j++) {\n var element = this.element.querySelector(classList$$1[parseInt(j.toString(), 10)]);\n if (this.parent.getContentTable()) {\n element.setAttribute('aria-owns', this.parent.getContentTable().id);\n }\n }\n }\n };\n Page.prototype.dataReady = function (e) {\n this.updateModel(e);\n };\n /**\n * Refreshes the page count, pager information, and external message.\n *\n * @returns {void}\n */\n Page.prototype.refresh = function () {\n this.pagerObj.refresh();\n };\n /**\n * Navigates to the target page according to the given number.\n *\n * @param {number} pageNo - Defines the page number to navigate.\n * @returns {void}\n */\n Page.prototype.goToPage = function (pageNo) {\n this.pagerObj.goToPage(pageNo);\n };\n /**\n * @param {number} pageSize - specifies the page size\n * @returns {void}\n * @hidden\n */\n Page.prototype.setPageSize = function (pageSize) {\n this.pagerObj.setPageSize(pageSize);\n };\n /**\n * The function used to update pageSettings model\n *\n * @param {NotifyArgs} e - specfies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.updateModel = function (e) {\n this.parent.pageSettings.totalRecordsCount = e.count;\n if (this.pagerObj.isAllPage && ((e.action === 'add' && e.requestType === 'save') || (e.requestType === 'batchsave'))) {\n this.pagerObj.setProperties({ pageSize: e.count }, true);\n }\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onActionComplete = function (e) {\n this.parent.trigger(actionComplete, extend(e, {\n currentPage: this.parent.pageSettings.currentPage, requestType: 'paging',\n type: actionComplete\n }));\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Page.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var newProp = e.properties;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n this.pagerObj[\"\" + prop] = newProp[\"\" + prop];\n }\n this.pagerObj.dataBind();\n };\n Page.prototype.clickHandler = function (e) {\n var gObj = this.parent;\n if (this.isForceCancel || isActionPrevent(gObj) && !gObj.prevPageMoving && !this.isCancel) {\n if (!this.isForceCancel) {\n if (!isNullOrUndefined(e.newProp) && !isNullOrUndefined(e.newProp.pageSize)) {\n gObj.notify(preventBatch, { instance: this, handler: this.setPageSize, arg1: e.newProp.pageSize });\n this.pagerObj.pageSize = e.oldProp.pageSize;\n gObj.pageSettings.pageSize = e.newProp.pageSize;\n }\n else if (e.currentPage) {\n gObj.notify(preventBatch, { instance: this, handler: this.goToPage, arg1: e.currentPage });\n this.pagerObj.currentPage = gObj.pageSettings.currentPage === this.pagerObj.currentPage ?\n this.pagerObj.previousPageNo : gObj.pageSettings.currentPage;\n }\n this.isForceCancel = true;\n this.pagerObj.dataBind();\n }\n else {\n this.isForceCancel = false;\n }\n e.cancel = true;\n return;\n }\n gObj.pageSettings.pageSize = this.pagerObj.pageSize;\n gObj.prevPageMoving = false;\n var prevPage = this.pageSettings.currentPage;\n var args = {\n cancel: false, requestType: 'paging', previousPage: prevPage,\n currentPage: e.currentPage, pageSize: gObj.pageSettings.pageSize, type: actionBegin\n };\n if (!this.isCancel) {\n this.pageSettings.currentPage = e.currentPage;\n this.parent.notify(modelChanged, args);\n }\n if (args.cancel) {\n e.cancel = true;\n this.pageSettings.currentPage = prevPage;\n this.pagerObj.currentPage = prevPage;\n this.isCancel = true;\n return;\n }\n this.isCancel = false;\n this.parent.requestTypeAction = 'paging';\n };\n Page.prototype.keyPressHandler = function (e) {\n if (e.action in keyActions) {\n e.preventDefault();\n this.element.querySelector(keyActions[e.action]).click();\n }\n };\n /**\n * Defines the text of the external message.\n *\n * @param {string} message - Defines the message to update.\n * @returns {void}\n */\n Page.prototype.updateExternalMessage = function (message) {\n if (!this.pagerObj.enableExternalMessage) {\n this.pagerObj.enableExternalMessage = true;\n this.pagerObj.dataBind();\n }\n this.pagerObj.externalMessage = message;\n this.pagerObj.dataBind();\n };\n Page.prototype.appendToElement = function () {\n this.isInitialLoad = true;\n this.parent.element.appendChild(this.element);\n this.parent.setGridPager(this.element);\n this.pagerObj.isReact = this.parent.isReact;\n this.pagerObj.isVue = this.parent.isVue;\n this.pagerObj.appendTo(this.element);\n this.isInitialLoad = false;\n };\n Page.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n this.appendToElement();\n if (this.isReactTemplate()) {\n this.pagerObj.updateTotalPages();\n this.created();\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.addEventListener = function () {\n this.handlers = {\n load: this.render,\n end: this.appendToElement,\n ready: this.dataReady,\n complete: this.onActionComplete,\n updateLayout: this.enableAfterRender,\n inboundChange: this.onPropertyChanged,\n keyPress: this.keyPressHandler,\n created: this.created\n };\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.addEventListener(create, this.handlers.created.bind(this));\n }\n this.evtHandlers = [{ event: initialLoad, handler: this.handlers.load },\n { event: initialEnd, handler: this.handlers.end },\n { event: dataReady, handler: this.handlers.ready },\n { event: pageComplete, handler: this.handlers.complete },\n { event: uiUpdate, handler: this.handlers.updateLayout },\n { event: inBoundModelChanged, handler: this.handlers.inboundChange },\n { event: keyPressed, handler: this.handlers.keyPress },\n { event: destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n Page.prototype.created = function () {\n if (this.isInitialRender && this.isReactTemplate()) {\n this.isInitialRender = false;\n this.renderReactPagerTemplate();\n }\n };\n Page.prototype.isReactTemplate = function () {\n return (this.parent.isReact || this.parent.isVue) && this.pagerObj.template && typeof (this.pagerObj.template) !== 'string';\n };\n Page.prototype.renderReactPagerTemplate = function () {\n if (!this.isInitialRender && this.isReactTemplate()) {\n var result = void 0;\n this.parent.destroyTemplate(['pagerTemplate']);\n this.element.classList.add('e-pagertemplate');\n this.pagerObj.compile(this.pagerObj.template);\n var page = this.parent.pageSettings;\n var data = {\n currentPage: page.currentPage, pageSize: page.pageSize, pageCount: page.pageCount,\n totalRecordsCount: page.totalRecordsCount, totalPages: this.pagerObj.totalPages\n };\n var tempId = this.parent.id + '_pagertemplate';\n if (this.parent.isReact) {\n this.pagerObj.templateFn(data, this.parent, 'pagerTemplate', tempId, null, null, this.pagerObj.element);\n this.parent.renderTemplates();\n }\n else {\n result = this.pagerObj.templateFn(data, this.parent, 'pagerTemplate');\n appendChildren(this.pagerObj.element, result);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Page.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.removeEventListener(create, this.handlers.created);\n }\n this.parent.off(pagerRefresh, this.renderReactPagerTemplate);\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * To destroy the pager\n *\n * @returns {void}\n * @hidden\n */\n Page.prototype.destroy = function () {\n this.removeEventListener();\n if (this.isReactTemplate()) {\n this.parent.destroyTemplate(['pagerTemplate']);\n }\n this.pagerObj.destroy();\n };\n Page.prototype.pagerDestroy = function () {\n if (this.pagerObj && !this.pagerObj.isDestroyed) {\n this.pagerObj.destroy();\n remove(this.element);\n }\n };\n return Page;\n}());\n/**\n * @hidden\n */\nvar keyActions = {\n pageUp: '.e-prev',\n pageDown: '.e-next',\n ctrlAltPageDown: '.e-last',\n ctrlAltPageUp: '.e-first',\n altPageUp: '.e-pp',\n altPageDown: '.e-np'\n};\n\nvar __extends$20 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * FilterCellRenderer class which responsible for building filter cell.\n *\n * @hidden\n */\nvar FilterCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$20(FilterCellRenderer, _super);\n function FilterCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent.createElement('TH', { className: 'e-filterbarcell' });\n return _this;\n }\n /**\n * Function to return the wrapper for the TH content.\n *\n * @returns {string} returns the gui\n */\n FilterCellRenderer.prototype.getGui = function () {\n return this.parent.createElement('div');\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {Cell} cell\n * @param {Object} data\n */\n /* tslint:disable-next-line:max-func-body-length */\n FilterCellRenderer.prototype.render = function (cell, data) {\n var tr = this.parent.element.querySelector('.e-filterbar');\n var node = this.element.cloneNode();\n var innerDIV = this.getGui();\n var input;\n var column = cell.column;\n tr.appendChild(node);\n node.setAttribute('e-mappinguid', column.uid);\n if (column.filterTemplate) {\n var fltrData = {};\n if (data) {\n fltrData[column.field] = data[column.field];\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n if (column.visible) {\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n var element = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(node, element);\n }\n }\n else {\n node.classList.add('e-hide');\n }\n }\n else {\n if (column.type !== 'checkbox') {\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n node.classList.add('e-fltrtemp');\n attributes(innerDIV, {\n 'class': 'e-fltrtempdiv'\n });\n if (isNullOrUndefined(column.filterBarTemplate.create)) {\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filterUi_input e-filtertext e-fltrTemp',\n attrs: { type: 'search', title: column.headerText }\n });\n innerDIV.appendChild(input);\n }\n else {\n var args = { column: column, node: Element };\n var temp = column.filterBarTemplate.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n input = temp(args);\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n attributes(innerDIV, {\n class: 'e-filterUi_input e-filtertext e-fltrTemp',\n title: column.headerText,\n id: column.field + '_filterBarcell'\n });\n innerDIV.appendChild(input);\n }\n }\n else {\n attributes(innerDIV, {\n 'class': 'e-filterdiv e-fltrinputdiv'\n });\n input = this.parent.createElement('input', {\n id: column.field + '_filterBarcell', className: 'e-filtertext',\n attrs: {\n type: 'search', title: column.headerText + cell.attributes.title,\n value: data[cell.column.field] ? data[cell.column.field] : '', role: 'search'\n }\n });\n innerDIV.appendChild(input);\n var args = {\n element: input, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true, cssClass: this.parent.cssClass\n }\n };\n Input.createInput(args, this.parent.createElement);\n }\n //TODO: apply intial filtering\n if (column.allowFiltering === false || column.field === '' || isNullOrUndefined(column.field)) {\n input.setAttribute('disabled', 'true');\n input.classList.add('e-disable');\n }\n if (!column.visible) {\n node.classList.add('e-hide');\n }\n this.appendHtml(node, innerDIV);\n // render's the dropdownlist component if showFilterBarOperator sets to true\n if (this.parent.filterSettings.showFilterBarOperator && this.parent.filterSettings.type === 'FilterBar' &&\n !this.parent.isPrinting && isNullOrUndefined(column.filterTemplate) && isNullOrUndefined(column.filterBarTemplate)) {\n this.operatorIconRender(innerDIV, column, cell);\n }\n if ((isNullOrUndefined(column.allowFiltering) || column.allowFiltering) && !isNullOrUndefined(column.filterBarTemplate)) {\n var templateWrite = column.filterBarTemplate.write;\n var args = { element: input, column: column };\n if (typeof templateWrite === 'string') {\n templateWrite = getValue(templateWrite, window);\n }\n templateWrite.call(this, args);\n }\n }\n }\n return node;\n };\n /**\n * Function to specifies how the result content to be placed in the cell.\n *\n * @param {Element} node - specifies the node\n * @param {string|Element} innerHtml - specifies the innerHTML\n * @returns {Element} retruns the element\n */\n FilterCellRenderer.prototype.appendHtml = function (node, innerHtml) {\n node.appendChild(innerHtml);\n return node;\n };\n FilterCellRenderer.prototype.operatorIconRender = function (innerDIV, column, cell) {\n var gObj = this.parent;\n var operators;\n var fbicon = this.parent.createElement('input', {\n className: ' e-filterbaroperator e-icons e-icon-filter',\n id: cell.column.uid\n });\n innerDIV.querySelector('span').appendChild(fbicon);\n if (column.filter && column.filter.operator) {\n operators = column.filter.operator;\n }\n else if (gObj.filterSettings.columns.length) {\n for (var i = 0, a = gObj.filterSettings.columns; i < a.length; i++) {\n var col = a[parseInt(i.toString(), 10)];\n if (col.field === column.field) {\n operators = col.operator;\n }\n else {\n operators = 'equal';\n }\n }\n }\n else {\n operators = 'equal';\n }\n if (!isNullOrUndefined(gObj.filterModule.operators[column.field])) {\n operators = gObj.filterModule.operators[column.field];\n }\n this.dropOptr = new DropDownList({\n fields: { text: 'text', value: 'value' },\n popupHeight: 'auto',\n value: operators,\n width: '0px',\n enabled: column.allowFiltering,\n popupWidth: 'auto',\n enableRtl: this.parent.enableRtl,\n change: this.internalEvent.bind(this),\n beforeOpen: function () {\n var operator = gObj.filterModule.customOperators;\n this.dataSource = operator[gObj.getColumnByUid(this.element.id).type + 'Operator'];\n for (var i = 0; i < this.dataSource.length; i++) {\n if (column.filter && column.filter.operator && isNullOrUndefined(gObj.filterModule.operators[column.field]) &&\n this.dataSource[parseInt(i.toString(), 10)].value === column.filter.operator) {\n this.value = column.filter.operator;\n }\n }\n },\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n });\n this.dropOptr.appendTo(fbicon);\n var spanElmt = closest(this.dropOptr.element, 'span');\n spanElmt.classList.add('e-filterbardropdown');\n spanElmt.removeAttribute('tabindex');\n };\n FilterCellRenderer.prototype.internalEvent = function (e) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(e.element.getAttribute('id'));\n e.column = col;\n gObj.filterModule.operators[col.field] = e.value;\n gObj.notify(getFilterBarOperator, e);\n };\n return FilterCellRenderer;\n}(CellRenderer));\n\n/**\n * `filter operators` render boolean column.\n *\n * @hidden\n */\nvar FlMenuOptrUI = /** @__PURE__ @class */ (function () {\n function FlMenuOptrUI(parent, customFltrOperators, serviceLocator, filterSettings) {\n this.ddOpen = this.dropDownOpen.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n this.customFilterOperators = customFltrOperators;\n if (this.parent) {\n this.parent.on(filterMenuClose, this.destroyDropDownList, this);\n this.parent.on(destroy, this.destroyDropDownList, this);\n }\n }\n /**\n * @param {Element} dlgConetntEle - specifies the content element\n * @param {Element} target - specifies the target\n * @param {Column} column - specifies the column\n * @param {Dialog} dlgObj - specifies the dialog\n * @param {Object[]} operator - specifies the operator list\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line max-len\n FlMenuOptrUI.prototype.renderOperatorUI = function (dlgConetntEle, target, column, dlgObj, operator) {\n this.dialogObj = dlgObj;\n var optr = column.type + 'Operator';\n this.optrData = this.customOptr = !isNullOrUndefined(operator) ? operator :\n (!isNullOrUndefined(this.parent.filterSettings.operators) && !isNullOrUndefined(this.parent.filterSettings.operators[\"\" + optr])) ?\n this.parent.filterSettings.operators[\"\" + optr] : this.customFilterOperators[\"\" + optr];\n var dropDatasource = this.customOptr;\n var selectedValue = this.dropSelectedVal(column, optr);\n var optrDiv = this.parent.createElement('div', { className: 'e-flm_optrdiv' });\n dlgConetntEle.appendChild(optrDiv);\n var optrInput = this.parent.createElement('input', { id: column.uid + '-floptr' });\n optrDiv.appendChild(optrInput);\n this.dropOptr = new DropDownList({\n dataSource: dropDatasource,\n fields: { text: 'text', value: 'value' },\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n enableRtl: this.parent.enableRtl,\n text: selectedValue\n });\n this.dropOptr.addEventListener(open, this.ddOpen);\n this.dropOptr.appendTo('#' + column.uid + '-floptr');\n };\n FlMenuOptrUI.prototype.renderResponsiveDropDownList = function (args) {\n args.popup.element.style.width = '100%';\n };\n FlMenuOptrUI.prototype.dropDownOpen = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n if (this.parent.enableAdaptiveUI) {\n this.renderResponsiveDropDownList(args);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FlMenuOptrUI.prototype.dropSelectedVal = function (col, optr) {\n var selValue = '';\n var columns = this.parent.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.field === column.field || (col.isForeignColumn() && col.foreignKeyValue === column.field)) {\n var selectedField = new DataManager(this.optrData).executeLocal(new Query().where('value', 'equal', column.operator));\n selValue = !isNullOrUndefined(selectedField[0]) ? selectedField[0].text : '';\n }\n }\n if (selValue === '') { // rewuired or not\n if (col.filter.operator) {\n var optrLen = Object.keys(this.optrData).length;\n for (var i = 0; i < optrLen; i++) {\n if (this.optrData[parseInt(i.toString(), 10)].value === col.filter.operator) {\n selValue = this.optrData[parseInt(i.toString(), 10)].text;\n }\n }\n }\n else {\n selValue = this.optrData[0].text;\n }\n }\n return selValue;\n };\n /**\n * @returns {string} returns the operator\n * @hidden\n */\n FlMenuOptrUI.prototype.getFlOperator = function () {\n return this.dropOptr.value;\n };\n FlMenuOptrUI.prototype.destroyDropDownList = function () {\n if (this.dropOptr.isDestroyed) {\n return;\n }\n this.dropOptr.removeEventListener(open, this.ddOpen);\n this.dropOptr.destroy();\n this.parent.off(filterMenuClose, this.destroyDropDownList);\n this.parent.off(destroy, this.destroyDropDownList);\n };\n return FlMenuOptrUI;\n}());\n\n/**\n * `string filterui` render string column.\n *\n * @hidden\n */\nvar StringFilterUI = /** @__PURE__ @class */ (function () {\n function StringFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(filterMenuClose, this.destroy, this);\n this.parent.on(destroy, this.destroy, this);\n }\n }\n StringFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'strui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.dialogObj = args.dialogObj;\n this.processDataOperation(args);\n };\n StringFilterUI.prototype.processDataOperation = function (args) {\n var _this = this;\n if (args.column.isForeignColumn()) {\n this.parent.getDataModule().dataManager.executeQuery(this.parent.getDataModule().generateQuery(true))\n .then(function (result) { _this.getAutoCompleteOptions(args, result); });\n return;\n }\n this.getAutoCompleteOptions(args);\n };\n StringFilterUI.prototype.getAutoCompleteOptions = function (args, result) {\n var isForeignColumn = args.column.isForeignColumn();\n var foreignColumnQuery;\n if (isForeignColumn) {\n var filteredData = CheckBoxFilterBase.getDistinct(result.result, args.column.field)\n .records || [];\n var filterQuery = void 0;\n for (var i = 0; i < filteredData.length; i++) {\n if (filterQuery) {\n filterQuery = filterQuery.or(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n else {\n filterQuery = new Predicate(args.column.field, 'contains', filteredData[parseInt(i.toString(), 10)][args.column.field], this.parent\n .filterSettings.enableCaseSensitivity, this.parent.filterSettings.ignoreAccent);\n }\n }\n foreignColumnQuery = new Query().where(filterQuery);\n foreignColumnQuery.params = this.parent.query.params;\n }\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = { value: isForeignColumn ? args.column.foreignKeyValue : args.column.field };\n var autoComplete = new AutoComplete(extend({\n dataSource: dataSource instanceof DataManager ? dataSource : new DataManager(dataSource),\n fields: fields,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n query: isForeignColumn ? foreignColumnQuery : this.parent.getDataModule().generateQuery(true, true),\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n autofill: true,\n placeholder: args.localizeText.getConstant('EnterValue'),\n actionBegin: function () {\n if (this.query.queries.length && this.query.queries[0].fn === 'onWhere') {\n for (var i = 0; i < this.query.queries[0].e.predicates.length; i++) {\n if (this.properties.fields.value === this.query.queries[0].e.predicates[\"\" + i].field) {\n this.query.queries[0].e.predicates.splice(i, 1);\n i = i - 1;\n }\n }\n if (!this.query.queries[0].e.predicates.length) {\n this.query.queries.splice(0, 1);\n }\n }\n }\n }, args.column.filter.params));\n this.acFocus = this.focus(autoComplete, args);\n this.acComplete = this.actionComplete(autoComplete);\n this.acOpen = this.openPopup.bind(this);\n autoComplete.addEventListener(focus, this.acFocus);\n autoComplete.addEventListener(open, this.acOpen);\n autoComplete.addEventListener(actionComplete, this.acComplete);\n if (dataSource && 'result' in dataSource) {\n var query = this.parent.getQuery ? this.parent.getQuery().clone() : new Query();\n var defObj = eventPromise({ requestType: 'stringfilterrequest' }, query);\n this.parent.trigger(dataStateChange, defObj.state);\n var def = defObj.deffered;\n def.promise.then(function (e) {\n autoComplete.dataSource = new DataManager(e);\n });\n }\n this.actObj = autoComplete;\n this.actObj.appendTo(this.instance);\n if (isForeignColumn) {\n this.parent.filterModule.filterModule.afterRenderFilterUI();\n }\n };\n StringFilterUI.prototype.write = function (args) {\n if (args.filteredValue !== '' && !isNullOrUndefined(args.filteredValue)) {\n var struiObj = document.querySelector('#strui-' + args.column.uid).ej2_instances[0];\n struiObj.value = args.filteredValue;\n }\n };\n StringFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var actuiObj = document.querySelector('#strui-' + column.uid).ej2_instances[0];\n if (Browser.isDevice) {\n actuiObj.hidePopup();\n actuiObj.focusOut();\n }\n var filterValue = actuiObj.value;\n if (isNullOrUndefined(filterValue) || filterValue === '') {\n filterValue = null;\n }\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', this.parent.filterSettings.enableCaseSensitivity);\n };\n StringFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n StringFilterUI.prototype.focus = function (actObj, args) {\n return function () {\n actObj.filterType = args.getOptrInstance.getFlOperator();\n };\n };\n StringFilterUI.prototype.actionComplete = function (actObj) {\n return function (e) {\n e.result = e.result.filter(function (obj, index, arr) {\n return arr.map(function (mapObj) {\n return (getValue(actObj.fields.value, mapObj));\n }).indexOf(getValue((actObj.fields.value), obj)) === index;\n });\n };\n };\n StringFilterUI.prototype.destroy = function () {\n if (!this.actObj || this.actObj.isDestroyed) {\n return;\n }\n this.actObj.removeEventListener(focus, this.acFocus);\n this.actObj.removeEventListener(open, this.acOpen);\n this.actObj.removeEventListener(actionComplete, this.acComplete);\n this.actObj.destroy();\n this.parent.off(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n };\n return StringFilterUI;\n}());\n\n/**\n * `numberfilterui` render number column.\n *\n * @hidden\n */\nvar NumberFilterUI = /** @__PURE__ @class */ (function () {\n function NumberFilterUI(parent, serviceLocator, filterSettings) {\n this.filterSettings = filterSettings;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent) {\n this.parent.on(filterMenuClose, this.destroy, this);\n this.parent.on(destroy, this.destroy, this);\n }\n }\n NumberFilterUI.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumberFilterUI.prototype.create = function (args) {\n this.instance = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'numberui-' + args.column.uid });\n args.target.appendChild(this.instance);\n this.numericTxtObj = new NumericTextBox(extend({\n format: typeof (args.column.format) === 'string' || isUndefined(args.column.format) ? args.column.format :\n args.column.format.format,\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('EnterValue'),\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.numericTxtObj.appendTo(this.instance);\n };\n NumberFilterUI.prototype.write = function (args) {\n var numberuiObj = document.querySelector('#numberui-' + args.column.uid).ej2_instances[0];\n numberuiObj.element.addEventListener('keydown', this.keyEventHandler);\n numberuiObj.value = args.filteredValue;\n };\n NumberFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var numberuiObj = document.querySelector('#numberui-' + column.uid).ej2_instances[0];\n var filterValue = numberuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n NumberFilterUI.prototype.destroy = function () {\n if (!this.numericTxtObj || this.numericTxtObj.isDestroyed) {\n return;\n }\n this.numericTxtObj.destroy();\n this.parent.off(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n };\n return NumberFilterUI;\n}());\n\n/**\n * `boolfilterui` render boolean column.\n *\n * @hidden\n */\nvar BooleanFilterUI = /** @__PURE__ @class */ (function () {\n function BooleanFilterUI(parent, serviceLocator, filterSettings) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.filterSettings = filterSettings;\n if (this.parent) {\n this.parent.on(filterMenuClose, this.destroy, this);\n this.parent.on(destroy, this.destroy, this);\n }\n }\n BooleanFilterUI.prototype.create = function (args) {\n var isForeignColumn = args.column.isForeignColumn();\n var dataSource = isForeignColumn ? args.column.dataSource : this.parent.dataSource;\n var fields = isForeignColumn ? args.column.foreignKeyValue : args.column.field;\n this.elem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'bool-ui-' + args.column.uid });\n args.target.appendChild(this.elem);\n this.dialogObj = args.dialogObj;\n this.dropInstance = new DropDownList(extend({\n dataSource: dataSource instanceof DataManager ?\n dataSource : new DataManager(dataSource),\n query: new Query().select(fields),\n fields: { text: fields, value: fields },\n placeholder: args.localizeText.getConstant('SelectValue'),\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n this.ddOpen = this.openPopup.bind(this);\n this.ddComplete = this.actionComplete(fields);\n this.dropInstance.addEventListener(open, this.ddOpen);\n this.dropInstance.addEventListener(actionComplete, this.ddComplete);\n this.dropInstance.appendTo(this.elem);\n };\n BooleanFilterUI.prototype.write = function (args) {\n var drpuiObj = document.querySelector('#bool-ui-' + args.column.uid).ej2_instances[0];\n if (!isNullOrUndefined(args.filteredValue)) {\n drpuiObj.value = args.filteredValue;\n }\n };\n BooleanFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var drpuiObj = document.querySelector('#bool-ui-' + column.uid).ej2_instances[0];\n var filterValue = drpuiObj.value;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', false);\n };\n BooleanFilterUI.prototype.openPopup = function (args) {\n getZIndexCalcualtion(args, this.dialogObj);\n };\n BooleanFilterUI.prototype.actionComplete = function (fields) {\n return function (e) {\n e.result = DataUtil.distinct(e.result, fields, true);\n };\n };\n BooleanFilterUI.prototype.destroy = function () {\n if (!this.dropInstance || this.dropInstance.isDestroyed) {\n return;\n }\n this.dropInstance.removeEventListener(open, this.ddOpen);\n this.dropInstance.removeEventListener(actionComplete, this.ddComplete);\n this.dropInstance.destroy();\n this.parent.off(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n };\n return BooleanFilterUI;\n}());\n\n/**\n * `datefilterui` render date column.\n *\n * @hidden\n */\nvar DateFilterUI = /** @__PURE__ @class */ (function () {\n function DateFilterUI(parent, serviceLocator, filterSettings) {\n this.dpOpen = this.openPopup.bind(this);\n this.parent = parent;\n this.locator = serviceLocator;\n this.fltrSettings = filterSettings;\n if (this.parent) {\n this.parent.on(filterMenuClose, this.destroy, this);\n this.parent.on(destroy, this.destroy, this);\n }\n }\n DateFilterUI.prototype.create = function (args) {\n var format = getCustomDateFormat(args.column.format, args.column.type);\n this.dialogObj = args.dialogObj;\n this.inputElem = this.parent.createElement('input', { className: 'e-flmenu-input', id: 'dateui-' + args.column.uid });\n args.target.appendChild(this.inputElem);\n if (args.column.type === 'date') {\n this.datePickerObj = new DatePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n else if (args.column.type === 'datetime') {\n this.datePickerObj = new DateTimePicker(extend({\n format: format,\n cssClass: this.parent.cssClass ? 'e-popup-flmenu' + ' ' + this.parent.cssClass : 'e-popup-flmenu',\n placeholder: args.localizeText.getConstant('ChooseDate'),\n width: '100%',\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl\n }, args.column.filter.params));\n }\n this.datePickerObj.addEventListener(open, this.dpOpen);\n this.datePickerObj.appendTo(this.inputElem);\n };\n DateFilterUI.prototype.write = function (args) {\n var dateuiObj = document.querySelector('#dateui-' + args.column.uid).ej2_instances[0];\n dateuiObj.value = !isNullOrUndefined(args.filteredValue) ? new Date(args.filteredValue) : null;\n };\n DateFilterUI.prototype.read = function (element, column, filterOptr, filterObj) {\n var dateuiObj = document.querySelector('#dateui-' + column.uid).ej2_instances[0];\n var filterValue = dateuiObj.value;\n filterValue = isNullOrUndefined(filterValue) ? null : filterValue;\n filterObj.filterByColumn(column.field, filterOptr, filterValue, 'and', true);\n };\n DateFilterUI.prototype.openPopup = function (args) {\n args.popup.element.style.zIndex = (this.dialogObj.zIndex + 1).toString();\n };\n DateFilterUI.prototype.destroy = function () {\n this.parent.off(filterMenuClose, this.destroy);\n this.parent.off(destroy, this.destroy);\n if (isNullOrUndefined(this.datePickerObj) || this.datePickerObj.isDestroyed) {\n return;\n }\n this.datePickerObj.removeEventListener(open, this.dpOpen);\n this.datePickerObj.destroy();\n };\n return DateFilterUI;\n}());\n\n/**\n * `filter menu` render boolean column.\n *\n * @hidden\n */\nvar FilterMenuRenderer = /** @__PURE__ @class */ (function () {\n function FilterMenuRenderer(parent, filterSettings, serviceLocator, customFltrOperators, fltrObj) {\n this.isDialogOpen = false;\n this.maxHeight = '350px';\n this.isMenuCheck = false;\n this.colTypes = {\n 'string': StringFilterUI, 'number': NumberFilterUI, 'date': DateFilterUI, 'boolean': BooleanFilterUI, 'datetime': DateFilterUI\n };\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.customFilterOperators = customFltrOperators;\n this.filterObj = fltrObj;\n this.flMuiObj = new FlMenuOptrUI(this.parent, this.customFilterOperators, this.serviceLocator);\n this.l10n = this.serviceLocator.getService('localization');\n this.menuFilterBase = new CheckBoxFilterBase(parent);\n }\n FilterMenuRenderer.prototype.clearCustomFilter = function (col) {\n this.clearBtnClick(col);\n };\n FilterMenuRenderer.prototype.applyCustomFilter = function (args) {\n this.filterBtnClick(args.col);\n };\n FilterMenuRenderer.prototype.openDialog = function (args) {\n this.options = args;\n this.col = this.parent.getColumnByField(args.field);\n if (isNullOrUndefined(this.col.filter) || (isNullOrUndefined(this.col.filter.type) || this.col.filter.type === 'Menu')) { ///\n this.renderDlgContent(args.target, this.col);\n }\n };\n FilterMenuRenderer.prototype.closeDialog = function (target) {\n if (!this.dlgObj) {\n return;\n }\n if (this.parent.isReact || this.parent.isVue) {\n clearReactVueTemplates(this.parent, ['filterTemplate']);\n }\n var elem = document.getElementById(this.dlgObj.element.id);\n if (this.dlgObj && !this.dlgObj.isDestroyed && elem) {\n var argument = { cancel: false, column: this.col, target: target, element: elem };\n this.parent.notify(filterMenuClose, argument);\n if (argument.cancel) {\n return;\n }\n this.isDialogOpen = false;\n if (this.isMenuCheck) {\n this.menuFilterBase.unWireEvents();\n this.parent.off(cBoxFltrComplete, this.actionComplete);\n this.isMenuCheck = false;\n }\n this.dlgObj.destroy();\n remove(elem);\n }\n this.parent.notify(filterDialogClose, {});\n };\n FilterMenuRenderer.prototype.renderDlgContent = function (target, column) {\n var args = {\n requestType: filterBeforeOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.parent.trigger(actionBegin, args);\n var mainDiv = this.parent.createElement('div', { className: 'e-flmenu-maindiv', id: column.uid + '-flmenu' });\n this.dlgDiv = this.parent.createElement('div', { className: 'e-flmenu', id: column.uid + '-flmdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('FilterMenuDialogARIA'));\n if (this.parent.enableAdaptiveUI) {\n var responsiveCnt = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n responsiveCnt.appendChild(this.dlgDiv);\n }\n else {\n this.parent.element.appendChild(this.dlgDiv);\n }\n this.dlgObj = new Dialog({\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n created: this.dialogCreated.bind(this, target, column),\n position: this.parent.element.classList.contains('e-device') ? { X: 'center', Y: 'center' } : { X: '', Y: '' },\n target: this.parent.element.classList.contains('e-device') ? document.body : this.parent.element,\n buttons: [{\n click: this.filterBtnClick.bind(this, column),\n buttonModel: {\n content: this.l10n.getConstant('FilterButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-flmenu-okbtn' + ' ' + this.parent.cssClass : 'e-flmenu-okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this, column),\n buttonModel: { content: this.l10n.getConstant('ClearButton'),\n cssClass: this.parent.cssClass ? 'e-flmenu-cancelbtn' + ' ' + this.parent.cssClass : 'e-flmenu-cancelbtn' }\n }],\n content: mainDiv,\n width: (!isNullOrUndefined(parentsUntil(target, 'e-bigger'))) || this.parent.element.classList.contains('e-device') ? 260 : 250,\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? 'e-filter-popup' + ' ' + this.parent.cssClass : 'e-filter-popup'\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dlgObj.appendTo(this.dlgDiv);\n };\n FilterMenuRenderer.prototype.renderResponsiveDialog = function () {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.dlgObj.position = { X: '', Y: '' };\n this.dlgObj.target = document.querySelector('.e-resfilter > .e-dlg-content > .e-mainfilterdiv');\n this.dlgObj.width = '100%';\n this.dlgObj.isModal = false;\n this.dlgObj.buttons = [{}];\n }\n };\n FilterMenuRenderer.prototype.dialogCreated = function (target, column) {\n if (!Browser.isDevice && target) {\n getFilterMenuPostion(target, this.dlgObj);\n }\n this.currentDialogCreatedColumn = column;\n this.renderFilterUI(target, column);\n if (!(column.isForeignColumn() && !(!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)))) {\n this.afterRenderFilterUI();\n }\n };\n /**\n * Function to notify filterDialogCreated and trigger actionComplete\n *\n * @returns {void}\n * @hidden\n */\n FilterMenuRenderer.prototype.afterRenderFilterUI = function () {\n var column = this.currentDialogCreatedColumn;\n if (column.showColumnMenu) {\n this.parent.notify(filterDialogCreated, {});\n }\n if (this.parent.enableAdaptiveUI) {\n this.dlgObj.element.style.left = '0px';\n this.dlgObj.element.style.maxHeight = 'none';\n }\n else {\n this.dlgObj.element.style.maxHeight = this.maxHeight;\n }\n this.dlgObj.show();\n if (!column.filterTemplate) {\n this.writeMethod(column, this.dlgObj.element.querySelector('#' + column.uid + '-flmenu'));\n }\n var args = {\n requestType: filterAfterOpen,\n columnName: column.field, columnType: column.type\n };\n var filterModel = 'filterModel';\n args[\"\" + filterModel] = this;\n this.isDialogOpen = true;\n if (!this.isMenuCheck) {\n this.parent.trigger(actionComplete, args);\n }\n };\n FilterMenuRenderer.prototype.renderFilterUI = function (target, col) {\n var dlgConetntEle = this.dlgObj.element.querySelector('.e-flmenu-maindiv');\n this.parent.log('column_type_missing', { column: col });\n this.renderOperatorUI(dlgConetntEle, target, col);\n this.renderFlValueUI(dlgConetntEle, target, col);\n };\n FilterMenuRenderer.prototype.renderOperatorUI = function (dlgConetntEle, target, column) {\n this.flMuiObj.renderOperatorUI(dlgConetntEle, target, column, this.dlgObj, this.filterObj.menuOperator);\n };\n FilterMenuRenderer.prototype.renderFlValueUI = function (dlgConetntEle, target, column) {\n var valueDiv = this.parent.createElement('div', { className: 'e-flmenu-valuediv' });\n var fObj = this.filterObj;\n dlgConetntEle.appendChild(valueDiv);\n var instanceofFilterUI = new this.colTypes[column.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (column.filterTemplate) {\n var fltrData = {};\n var valueInString = 'value';\n fltrData[column.field] = fltrData[\"\" + valueInString] = fObj.values[column.field];\n if (column.foreignKeyValue) {\n fltrData[column.foreignKeyValue] = fObj.values[column.field];\n fltrData[column.field] = undefined;\n }\n var col = 'column';\n fltrData[\"\" + col] = column;\n var isReactCompiler = this.parent.isReact && typeof (column.filterTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var tempID = this.parent.element.id + column.uid + 'filterTemplate';\n if (isReactCompiler || isReactChild) {\n column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID, null, null, valueDiv);\n this.parent.renderTemplates();\n }\n else {\n var compElement = column.getFilterTemplate()(fltrData, this.parent, 'filterTemplate', tempID);\n appendChildren(valueDiv, compElement);\n }\n if (this.isMenuCheck) {\n this.menuFilterBase.cBox = this.dlgObj.element.querySelector('.e-checkboxlist.e-fields');\n this.menuFilterBase.wireEvents();\n this.parent.on(cBoxFltrComplete, this.actionComplete, this);\n this.menuFilterBase.getAllData();\n }\n }\n else {\n if (!isNullOrUndefined(column.filter) && !isNullOrUndefined(column.filter.ui)\n && !isNullOrUndefined(column.filter.ui.create)) {\n var temp = column.filter.ui.create;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, dialogObj: this.dlgObj\n });\n }\n else {\n instanceofFilterUI.create({\n column: column, target: valueDiv,\n getOptrInstance: this.flMuiObj, localizeText: this.l10n, dialogObj: this.dlgObj\n });\n }\n }\n };\n FilterMenuRenderer.prototype.writeMethod = function (col, dlgContentEle) {\n var flValue;\n var target = dlgContentEle.querySelector('.e-flmenu-valinput');\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var column = columns_1[_i];\n if (col.uid === column.uid) {\n flValue = column.value;\n }\n }\n if (!isNullOrUndefined(col.filter) && !isNullOrUndefined(col.filter.ui)\n && !isNullOrUndefined(col.filter.ui.write)) {\n var temp = col.filter.ui.write;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n temp({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n else {\n instanceofFilterUI.write({ column: col, target: target, parent: this.parent, filteredValue: flValue });\n }\n };\n FilterMenuRenderer.prototype.filterBtnClick = function (col) {\n var flValue;\n var targ = this.dlgObj.element.querySelector('.e-flmenu-valuediv input');\n var flOptrValue = this.flMuiObj.getFlOperator();\n var instanceofFilterUI = new this.colTypes[col.type](this.parent, this.serviceLocator, this.parent.filterSettings);\n if (col.filterTemplate) {\n var element = this.dlgDiv.querySelector('.e-flmenu-valuediv');\n var fltrValue = void 0;\n if (element.children[0].value) {\n fltrValue = element.children[0].value;\n }\n else {\n if (!isNullOrUndefined(element.children[0].ej2_instances)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n fltrValue = (this.parent.isAngular ? element.children[0] :\n element.querySelector('input')).ej2_instances[0].value;\n }\n else {\n var eControl = element.querySelector('.e-control');\n fltrValue = col.type === 'boolean' ? eControl.checked :\n !isNullOrUndefined(eControl.ej2_instances) ?\n eControl.ej2_instances[0].value :\n eControl.value;\n }\n }\n this.filterObj.filterByColumn(col.field, flOptrValue, fltrValue);\n }\n else {\n if (!isNullOrUndefined(col.filter) &&\n !isNullOrUndefined(col.filter.ui) && !isNullOrUndefined(col.filter.ui.read)) {\n var temp = col.filter.ui.read;\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n }\n // eslint-disable-next-line\n flValue = temp({ element: targ, column: col, operator: flOptrValue, fltrObj: this.filterObj });\n }\n else {\n instanceofFilterUI.read(targ, col, flOptrValue, this.filterObj);\n }\n }\n this.closeDialog();\n if (this.parent.showColumnMenu) {\n this.parent.notify(afterFilterColumnMenuClose, {});\n }\n };\n FilterMenuRenderer.prototype.closeResponsiveDialog = function () {\n this.closeDialog();\n };\n FilterMenuRenderer.prototype.clearBtnClick = function (column) {\n this.filterObj.removeFilteredColsByField(column.field);\n this.closeDialog();\n var iconClass = this.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var col = this.parent.element.querySelector('[e-mappinguid=\"' + column.uid + '\"]').parentElement;\n var flIcon = col.querySelector(iconClass);\n if (flIcon) {\n flIcon.classList.remove('e-filtered');\n }\n };\n FilterMenuRenderer.prototype.destroy = function () {\n this.closeDialog();\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n FilterMenuRenderer.prototype.getFilterUIInfo = function () {\n return { field: this.col.field, operator: this.flMuiObj.getFlOperator() };\n };\n FilterMenuRenderer.prototype.renderCheckBoxMenu = function () {\n this.isMenuCheck = true;\n this.menuFilterBase.updateModel(this.options);\n this.menuFilterBase.getAndSetChkElem(this.options);\n this.dlgObj.buttons = [{\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: {\n content: this.menuFilterBase.getLocalizedLabel('FilterButton'),\n cssClass: 'e-primary', isPrimary: true\n }\n },\n {\n click: this.menuFilterBase.btnClick.bind(this.menuFilterBase),\n buttonModel: { cssClass: 'e-flat', content: this.menuFilterBase.getLocalizedLabel('ClearButton') }\n }];\n this.menuFilterBase.dialogObj = this.dlgObj;\n this.menuFilterBase.dlg = this.dlgObj.element;\n this.menuFilterBase.dlg.classList.add('e-menucheckbox');\n this.menuFilterBase.dlg.classList.remove('e-checkboxfilter');\n this.maxHeight = '800px';\n return this.menuFilterBase.sBox.innerHTML;\n };\n FilterMenuRenderer.prototype.actionComplete = function (args) {\n if (this.isMenuCheck) {\n this.parent.trigger(actionComplete, args);\n }\n };\n return FilterMenuRenderer;\n}());\n\n/**\n * @hidden\n * `CheckBoxFilter` module is used to handle filtering action.\n */\nvar CheckBoxFilter = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for checkbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function CheckBoxFilter(parent, filterSettings, serviceLocator) {\n this.parent = parent;\n this.isresetFocus = true;\n this.checkBoxBase = new CheckBoxFilterBase(parent);\n this.addEventListener();\n }\n /**\n * To destroy the check box filter.\n *\n * @returns {void}\n * @hidden\n */\n CheckBoxFilter.prototype.destroy = function () {\n this.removeEventListener();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.openDialog = function (options) {\n this.checkBoxBase.openDialog(options);\n this.parent.log('column_type_missing', { column: options.column });\n };\n CheckBoxFilter.prototype.closeDialog = function () {\n this.destroy();\n if (this.isresetFocus) {\n this.parent.notify(restoreFocus, {});\n }\n };\n CheckBoxFilter.prototype.closeResponsiveDialog = function () {\n this.checkBoxBase.closeDialog();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the module name\n * @private\n */\n CheckBoxFilter.prototype.getModuleName = function () {\n return 'checkboxFilter';\n };\n CheckBoxFilter.prototype.actionBegin = function (args) {\n this.parent.trigger(actionBegin, args);\n };\n CheckBoxFilter.prototype.actionComplete = function (args) {\n this.parent.trigger(actionComplete, args);\n };\n CheckBoxFilter.prototype.actionPrevent = function (args) {\n if (isActionPrevent(this.parent)) {\n this.parent.notify(preventBatch, args);\n args.cancel = true;\n }\n };\n CheckBoxFilter.prototype.clearCustomFilter = function (col) {\n this.checkBoxBase.clearFilter(col);\n };\n CheckBoxFilter.prototype.applyCustomFilter = function () {\n this.checkBoxBase.fltrBtnHandler();\n this.checkBoxBase.closeDialog();\n };\n CheckBoxFilter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(cBoxFltrBegin, this.actionBegin, this);\n this.parent.on(cBoxFltrComplete, this.actionComplete, this);\n this.parent.on(fltrPrevent, this.actionPrevent, this);\n };\n CheckBoxFilter.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(cBoxFltrBegin, this.actionBegin);\n this.parent.off(cBoxFltrComplete, this.actionComplete);\n this.parent.off(fltrPrevent, this.actionPrevent);\n };\n return CheckBoxFilter;\n}());\n\nvar __extends$21 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * @hidden\n * `ExcelFilter` module is used to handle filtering action.\n */\nvar ExcelFilter = /** @__PURE__ @class */ (function (_super) {\n __extends$21(ExcelFilter, _super);\n /**\n * Constructor for excelbox filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the Filtersettings\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @param {object} customFltrOperators - specifies the customFltrOperators\n * @hidden\n */\n function ExcelFilter(parent, filterSettings, serviceLocator, customFltrOperators) {\n var _this = _super.call(this, parent, filterSettings, serviceLocator) || this;\n _this.parent = parent;\n _this.isresetFocus = true;\n _this.excelFilterBase = new ExcelFilterBase(parent, customFltrOperators);\n return _this;\n }\n /**\n * To destroy the excel filter.\n *\n * @returns {void}\n * @hidden\n */\n ExcelFilter.prototype.destroy = function () {\n this.excelFilterBase.closeDialog();\n };\n ExcelFilter.prototype.openDialog = function (options) {\n this.excelFilterBase.openDialog(options);\n };\n ExcelFilter.prototype.closeDialog = function () {\n this.excelFilterBase.closeDialog();\n if (this.isresetFocus) {\n this.parent.notify(restoreFocus, {});\n }\n };\n ExcelFilter.prototype.clearCustomFilter = function (col) {\n this.excelFilterBase.clearFilter(col);\n };\n ExcelFilter.prototype.closeResponsiveDialog = function (isCustomFilter) {\n if (isCustomFilter) {\n this.excelFilterBase.removeDialog();\n }\n else {\n this.closeDialog();\n }\n };\n ExcelFilter.prototype.applyCustomFilter = function (args) {\n if (!args.isCustomFilter) {\n this.excelFilterBase.fltrBtnHandler();\n this.excelFilterBase.closeDialog();\n }\n else {\n this.excelFilterBase.filterBtnClick(args.col.field);\n }\n };\n ExcelFilter.prototype.filterByColumn = function (fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue) {\n this.excelFilterBase.filterByColumn(fieldName, firstOperator, firstValue, predicate, matchCase, ignoreAccent, secondOperator, secondValue);\n };\n /**\n * @returns {FilterUI} returns the filterUI\n * @hidden\n */\n ExcelFilter.prototype.getFilterUIInfo = function () {\n return this.excelFilterBase.getFilterUIInfo();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n ExcelFilter.prototype.getModuleName = function () {\n return 'excelFilter';\n };\n return ExcelFilter;\n}(CheckBoxFilter));\n\n/**\n *\n * The `Filter` module is used to handle filtering action.\n */\nvar Filter = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Grid filtering module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {FilterSettings} filterSettings - specifies the filterSettings\n * @param {ServiceLocator} serviceLocator - specifes the serviceLocator\n * @hidden\n */\n function Filter(parent, filterSettings, serviceLocator) {\n this.predicate = 'and';\n this.contentRefresh = true;\n this.filterByMethod = true;\n this.refresh = true;\n this.values = {};\n this.operators = {};\n this.cellText = {};\n this.nextFlMenuOpen = '';\n this.type = { 'Menu': FilterMenuRenderer, 'CheckBox': CheckBoxFilter, 'Excel': ExcelFilter };\n /** @hidden */\n this.filterOperators = {\n contains: 'contains', endsWith: 'endswith', equal: 'equal', greaterThan: 'greaterthan', greaterThanOrEqual: 'greaterthanorequal',\n lessThan: 'lessthan', lessThanOrEqual: 'lessthanorequal', notEqual: 'notequal', startsWith: 'startswith'\n };\n this.fltrDlgDetails = { field: '', isOpen: false };\n /** @hidden */\n this.skipNumberInput = ['=', ' ', '!'];\n this.skipStringInput = ['>', '<', '='];\n this.actualPredicate = {};\n this.parent = parent;\n this.filterSettings = filterSettings;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.setFullScreenDialog();\n }\n /**\n * To render filter bar when filtering enabled.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.render = function (e) {\n if (DataUtil.getObject('args.isFrozen', e) || (this.parent.getFrozenMode() === leftRight &&\n DataUtil.getObject('args.renderFrozenRightContent', e))) {\n return;\n }\n var gObj = this.parent;\n this.l10n = this.serviceLocator.getService('localization');\n this.getLocalizedCustomOperators();\n if (this.parent.filterSettings.type === 'FilterBar') {\n if (gObj.columns.length) {\n var fltrElem = this.parent.element.querySelector('.e-filterbar');\n if (fltrElem) {\n remove(fltrElem);\n }\n var rowRenderer = new RowRenderer(this.serviceLocator, CellType.Filter, gObj);\n var cellrender = this.serviceLocator.getService('cellRendererFactory');\n cellrender.addCellRenderer(CellType.Filter, new FilterCellRenderer(this.parent, this.serviceLocator));\n this.valueFormatter = this.serviceLocator.getService('valueFormatter');\n rowRenderer.element = this.parent.createElement('tr', { className: 'e-filterbar', attrs: { role: 'row' } });\n var row$$1 = this.generateRow();\n row$$1.data = this.values;\n if (gObj.getFrozenMode() === 'Right') {\n var thead = gObj.getFrozenRightHeader().querySelector('thead');\n thead.appendChild(rowRenderer.element);\n }\n else {\n this.parent.getHeaderContent().querySelector('thead:not(.e-masked-thead)').appendChild(rowRenderer.element);\n }\n var rowdrag = this.parent.element.querySelector('.e-rowdragheader');\n this.element = rowRenderer.render(row$$1, gObj.getColumns(), null, null, rowRenderer.element);\n var detail = this.element.querySelector('.e-detailheadercell');\n if (detail) {\n detail.className = 'e-filterbarcell e-mastercell';\n }\n if (rowdrag) {\n rowdrag.className = 'e-dragheadercell e-mastercell';\n }\n var gCells = [].slice.call(this.element.getElementsByClassName('e-grouptopleftcell'));\n if (gCells.length) {\n gCells[gCells.length - 1].classList.add('e-lastgrouptopleftcell');\n }\n this.wireEvents();\n this.parent.notify(freezeRender, { case: 'filter' });\n }\n }\n };\n /**\n * To show the responsive custom filter dialog\n *\n * @param {boolean} enable - specifes dialog open\n * @returns {void}\n * @hidden\n */\n Filter.prototype.showCustomFilter = function (enable) {\n this.responsiveDialogRenderer.isCustomDialog = enable;\n this.responsiveDialogRenderer.showResponsiveDialog(this.column);\n };\n /**\n * To create the filter module.\n *\n * @param {Column} col - specifies the filtering column name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.setFilterModel = function (col) {\n var type = col.filter.type || this.parent.filterSettings.type;\n this.filterModule = new this.type[\"\" + type](this.parent, this.parent.filterSettings, this.serviceLocator, this.customOperators, this);\n };\n /**\n * To destroy the filter bar.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.destroy();\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.parent.refreshing && (this.parent.isDestroyed || !this.parent.allowFiltering)) {\n this.filterSettings.columns = [];\n }\n this.updateFilterMsg();\n this.removeEventListener();\n this.unWireEvents();\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n var dropdownlist = [].slice.call(this.element.getElementsByClassName('e-filterbaroperator'));\n for (var i = 0; i < dropdownlist.length; i++) {\n if (dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0]) {\n dropdownlist[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n if (this.element) {\n if (this.element.parentElement) {\n remove(this.element);\n }\n var filterBarElement = this.parent.getHeaderContent().querySelector('.e-filterbar');\n if (this.parent.isFrozenGrid() && filterBarElement) {\n remove(filterBarElement);\n }\n }\n };\n Filter.prototype.setFullScreenDialog = function () {\n if (this.serviceLocator) {\n this.serviceLocator.registerAdaptiveService(this, this.parent.enableAdaptiveUI, ResponsiveDialogAction.isFilter);\n }\n };\n Filter.prototype.generateRow = function () {\n var options = {};\n var row$$1 = new Row(options);\n row$$1.cells = this.generateCells();\n return row$$1;\n };\n Filter.prototype.generateCells = function () {\n //TODO: generate dummy column for group, detail, stacked row here for filtering;\n var cells = [];\n if (this.parent.allowGrouping) {\n for (var c = 0, len = this.parent.groupSettings.columns.length; c < len; c++) {\n cells.push(this.generateCell({}, CellType.HeaderIndent));\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n cells.push(this.generateCell({}, CellType.DetailHeader));\n }\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() !== 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n for (var _i = 0, _a = this.parent.getColumns(); _i < _a.length; _i++) {\n var dummy = _a[_i];\n cells.push(this.generateCell(dummy));\n }\n if (this.parent.getFrozenMode() === 'Right') {\n cells.push(this.generateCell({}, CellType.RowDragHIcon));\n }\n return cells;\n };\n Filter.prototype.generateCell = function (column, cellType) {\n var opt = {\n 'visible': column.visible,\n 'isDataCell': false,\n 'rowId': '',\n 'column': column,\n 'cellType': cellType ? cellType : CellType.Filter,\n 'attributes': { title: this.l10n.getConstant('FilterbarTitle') }\n };\n return new Cell(opt);\n };\n /**\n * To update filterSettings when applying filter.\n *\n * @returns {void}\n * @hidden\n */\n Filter.prototype.updateModel = function () {\n var col = this.column.isForeignColumn() ? this.parent.getColumnByUid(this.column.uid) :\n this.parent.getColumnByField(this.fieldName);\n this.filterObjIndex = this.getFilteredColsIndexByField(col);\n this.prevFilterObject = this.filterSettings.columns[this.filterObjIndex];\n var arrayVal = Array.isArray(this.value) ? this.value : [this.value];\n var moduleName = this.parent.dataSource.adaptor && this.parent.dataSource.adaptor.getModuleName ? this.parent.dataSource.adaptor.getModuleName() : undefined;\n for (var i = 0, len = arrayVal.length; i < len; i++) {\n var field = col.isForeignColumn() ? col.foreignKeyValue : this.fieldName;\n var isMenuNotEqual = this.operator === 'notequal';\n this.currentFilterObject = {\n field: field, uid: col.uid, isForeignKey: col.isForeignColumn(), operator: this.operator,\n value: arrayVal[parseInt(i.toString(), 10)], predicate: this.predicate,\n matchCase: this.matchCase, ignoreAccent: this.ignoreAccent, actualFilterValue: {}, actualOperator: {}\n };\n var index = this.getFilteredColsIndexByField(col);\n if (index > -1 && !Array.isArray(this.value)) {\n this.filterSettings.columns[parseInt(index.toString(), 10)] = this.currentFilterObject;\n }\n else {\n this.filterSettings.columns.push(this.currentFilterObject);\n }\n if (!this.column.isForeignColumn() && isNullOrUndefined(this.value) && (this.operator === 'equal' ||\n this.operator === 'notequal') && (moduleName !== 'ODataAdaptor' && moduleName !== 'ODataV4Adaptor')) {\n for (var i_1 = 0; i_1 < this.filterSettings.columns.length; i_1++) {\n if (this.filterSettings.columns[\"\" + i_1].field === field &&\n (this.filterSettings.columns[\"\" + i_1].operator === 'equal' || this.filterSettings.columns[\"\" + i_1].operator === 'notequal')\n && isNullOrUndefined(this.filterSettings.columns[\"\" + i_1].value)) {\n this.filterSettings.columns.splice(i_1, 1);\n i_1 = i_1 - 1;\n }\n }\n if (col.type === 'string') {\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: ''\n });\n }\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: undefined\n });\n this.filterSettings.columns.push({\n field: field, ignoreAccent: this.ignoreAccent, matchCase: this.matchCase,\n operator: this.operator, predicate: isMenuNotEqual ? 'and' : 'or', value: null\n });\n }\n }\n // eslint-disable-next-line no-self-assign\n this.filterSettings.columns = this.filterSettings.columns;\n this.parent.dataBind();\n };\n Filter.prototype.getFilteredColsIndexByField = function (col) {\n var cols = this.filterSettings.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].uid === col.uid || (col.isForeignColumn()\n && this.parent.getColumnByUid(col.uid).field === col.foreignKeyValue)) {\n return i;\n }\n }\n return -1;\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Filter.prototype.onActionComplete = function (e) {\n var args = !this.isRemove ? {\n currentFilterObject: this.currentFilterObject,\n /* tslint:disable:no-string-literal */\n currentFilteringColumn: !isNullOrUndefined(this.column) ? this.column.field : undefined,\n /* tslint:enable:no-string-literal */\n columns: this.filterSettings.columns, requestType: 'filtering', type: actionComplete\n } : {\n requestType: 'filtering', type: actionComplete\n };\n this.parent.trigger(actionComplete, extend(e, args));\n this.isRemove = false;\n };\n Filter.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate, this);\n };\n Filter.prototype.unWireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), 'keyup', this.keyUpHandlerImmediate);\n };\n Filter.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.parent.getHeaderTable().classList.add('e-sortfilter');\n this.render();\n }\n };\n Filter.prototype.refreshFilterValue = function () {\n this.parent.removeEventListener(beforeDataBound, this.refreshFilterValueFn);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.columns.length &&\n !this.parent.getCurrentViewRecords().length) {\n this.initialEnd();\n }\n };\n Filter.prototype.initialEnd = function () {\n this.parent.off(contentReady, this.initialEnd);\n if (this.parent.getColumns().length && this.filterSettings.columns.length) {\n var gObj = this.parent;\n this.contentRefresh = false;\n this.initialLoad = true;\n for (var _i = 0, _a = gObj.filterSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.filterByColumn(col.field, col.operator, col.value, col.predicate, col.matchCase, col.ignoreAccent, col.actualFilterValue, col.actualOperator);\n }\n this.initialLoad = false;\n this.updateFilterMsg();\n this.contentRefresh = true;\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(setFullScreenDialog, this.setFullScreenDialog, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(filterComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(keyPressed, this.keyUpHandler, this);\n this.parent.on(columnPositionChanged, this.columnPositionChanged, this);\n this.parent.on(headerRefreshed, this.render, this);\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(filterMenuClose, this.filterMenuClose, this);\n this.docClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.docClickHandler, this);\n EventHandler.add(this.parent.element, 'mousedown', this.refreshClearIcon, this);\n this.parent.on(filterOpen, this.columnMenuFilter, this);\n this.parent.on(click, this.filterIconClickHandler, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n this.parent.on(closeFilterDialog, this.clickHandler, this);\n this.parent.on(destroy, this.destroy, this);\n this.refreshFilterValueFn = this.refreshFilterValue.bind(this);\n this.parent.addEventListener(beforeDataBound, this.refreshFilterValueFn);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeEventListener = function () {\n EventHandler.remove(document, 'click', this.docClickHandler);\n EventHandler.remove(this.parent.element, 'mousedown', this.refreshClearIcon);\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(setFullScreenDialog, this.setFullScreenDialog);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(filterComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(keyPressed, this.keyUpHandler);\n this.parent.off(columnPositionChanged, this.columnPositionChanged);\n this.parent.off(headerRefreshed, this.render);\n this.parent.off(filterOpen, this.columnMenuFilter);\n this.parent.off(filterMenuClose, this.filterMenuClose);\n this.parent.off(click, this.filterIconClickHandler);\n this.parent.off(closeFilterDialog, this.clickHandler);\n this.parent.off(destroy, this.destroy);\n };\n Filter.prototype.refreshClearIcon = function (e) {\n if (this.parent.allowFiltering && this.parent.filterSettings.type === 'FilterBar' &&\n e.target.closest('th') && e.target.closest('th').classList.contains('e-filterbarcell') &&\n e.target.classList.contains('e-clear-icon')) {\n var targetText = e.target.previousElementSibling;\n Input.setValue(null, targetText, 'Never', true);\n if (this.filterSettings.mode === 'Immediate') {\n this.removeFilteredColsByField(targetText.id.slice(0, -14)); //Length of _filterBarcell = 14\n }\n }\n };\n Filter.prototype.filterMenuClose = function () {\n this.fltrDlgDetails.isOpen = false;\n };\n /**\n * Filters the Grid row by fieldName, filterOperator, and filterValue.\n *\n * @param {string} fieldName - Defines the field name of the filter column.\n * @param {string} filterOperator - Defines the operator to filter records.\n * @param {string | number | Date | boolean} filterValue - Defines the value which is used to filter records.\n * @param {string} predicate - Defines the relationship of one filter query with another by using AND or OR predicate.\n * @param {boolean} matchCase - If match case is set to true, then the filter records\n * the exact match or
filters records that are case insensitive (uppercase and lowercase letters treated the same).\n * @param {boolean} ignoreAccent - If ignoreAccent set to true, then filter ignores the diacritic characters or accents while filtering.\n * @param {string} actualFilterValue - Defines the actual filter value for the filter column.\n * @param {string} actualOperator - Defines the actual filter operator for the filter column.\n * @returns {void}\n */\n Filter.prototype.filterByColumn = function (fieldName, filterOperator, filterValue, predicate, matchCase, ignoreAccent, actualFilterValue, actualOperator) {\n var _this = this;\n var gObj = this.parent;\n var filterCell;\n this.column = gObj.grabColumnByFieldFromAllCols(fieldName);\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator\n && isNullOrUndefined(this.column.filterBarTemplate) && isNullOrUndefined(this.column.filterTemplate)) {\n filterOperator = this.getOperatorName(fieldName);\n }\n if (!this.column) {\n return;\n }\n if (this.filterSettings.type === 'FilterBar') {\n filterCell = gObj.getHeaderContent().querySelector('[id=\\'' + this.column.field + '_filterBarcell\\']');\n }\n if (!isNullOrUndefined(this.column.allowFiltering) && !this.column.allowFiltering) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: this.column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, {\n instance: this, handler: this.filterByColumn, arg1: fieldName, arg2: filterOperator, arg3: filterValue, arg4: predicate,\n arg5: matchCase, arg6: ignoreAccent, arg7: actualFilterValue, arg8: actualOperator\n });\n return;\n }\n this.predicate = predicate ? predicate : Array.isArray(filterValue) ? 'or' : 'and';\n this.value = filterValue;\n this.matchCase = matchCase || false;\n this.ignoreAccent = this.ignoreAccent = !isNullOrUndefined(ignoreAccent) ? ignoreAccent : this.parent.filterSettings.ignoreAccent;\n this.fieldName = fieldName;\n this.operator = filterOperator;\n filterValue = !isNullOrUndefined(filterValue) ? filterValue.toString() : filterValue;\n if (filterValue === '') {\n filterValue = null;\n }\n if (this.column.type === 'number' || this.column.type === 'date') {\n this.matchCase = true;\n }\n gObj.getColumnHeaderByField(this.column.isForeignColumn() ? this.column.field : fieldName).setAttribute('aria-filtered', 'true');\n if (filterCell && this.filterSettings.type === 'FilterBar') {\n if ((filterValue && filterValue.length < 1) || (!this.filterByMethod &&\n this.checkForSkipInput(this.column, filterValue))) {\n this.filterStatusMsg = (filterValue && filterValue.length < 1) ? '' : this.l10n.getConstant('InvalidFilterMessage');\n this.updateFilterMsg();\n return;\n }\n if (filterCell.value !== filterValue) {\n filterCell.value = filterValue;\n }\n }\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n if (this.initialLoad && this.filterSettings.type === 'FilterBar') {\n filterCell.value = this.values[this.column.field];\n }\n }\n else {\n this.values[this.column.field] = filterValue; //this line should be above updateModel\n }\n var predObj = {\n field: this.fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: this.operator,\n value: this.value,\n type: this.column.type\n };\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === _this.fieldName);\n });\n if (filterColumn.length > 1 && !isNullOrUndefined(this.actualPredicate[this.fieldName])) {\n this.actualPredicate[this.fieldName].push(predObj);\n }\n else {\n this.actualPredicate[this.fieldName] = [predObj];\n }\n if (this.checkAlreadyColFiltered(this.column.field)) {\n return;\n }\n this.updateModel();\n };\n Filter.prototype.applyColumnFormat = function (filterValue) {\n var _this = this;\n var getFlvalue = (this.column.type === 'date' || this.column.type === 'datetime') ?\n new Date(filterValue) : parseFloat(filterValue);\n if ((this.column.type === 'date' || this.column.type === 'datetime') && filterValue &&\n Array.isArray(this.value) && filterValue.split(',').length > 1) {\n this.values[this.column.field] = ((filterValue).split(',')).map(function (val) {\n if (val === '') {\n val = null;\n }\n return _this.setFormatForFlColumn(new Date(val), _this.column);\n });\n }\n else {\n this.values[this.column.field] = this.setFormatForFlColumn(getFlvalue, this.column);\n }\n };\n // To skip the second time request to server while applying initial filtering - EJ2-44361\n Filter.prototype.skipUid = function (col) {\n var flag = true;\n var colLen = Object.keys((col));\n for (var i = 0; i < colLen.length; i++) {\n var key = Object.keys(col[colLen[parseInt(i.toString(), 10)]]);\n if (key.length === 1 && key[0] === 'uid') {\n flag = false;\n }\n }\n return flag;\n };\n Filter.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var col = 'columns';\n // eslint-disable-next-line no-case-declarations\n var args = {\n currentFilterObject: this.currentFilterObject, currentFilteringColumn: this.column ?\n this.column.field : undefined, action: 'filter', columns: this.filterSettings.columns,\n requestType: 'filtering', type: actionBegin, cancel: false\n };\n if (this.contentRefresh && this.skipUid(e.properties[\"\" + col])) {\n this.parent.notify(modelChanged, args);\n if (args.cancel) {\n if (isNullOrUndefined(this.prevFilterObject)) {\n this.filterSettings.columns.splice(this.filterSettings.columns.length - 1, 1);\n }\n else {\n this.filterSettings.columns[this.filterObjIndex] = this.prevFilterObject;\n }\n return;\n }\n this.updateFilterIcon();\n this.refreshFilterSettings();\n this.updateFilterMsg();\n this.updateFilter();\n }\n break;\n case 'showFilterBarStatus':\n if (e.properties[\"\" + prop]) {\n this.updateFilterMsg();\n }\n else if (this.parent.allowPaging) {\n this.parent.updateExternalMessage('');\n }\n break;\n case 'showFilterBarOperator':\n case 'type':\n this.parent.refreshHeader();\n this.refreshFilterSettings();\n break;\n }\n }\n };\n Filter.prototype.refreshFilterSettings = function () {\n if (this.filterSettings.type === 'FilterBar') {\n for (var i = 0; i < this.filterSettings.columns.length; i++) {\n this.column = this.parent.grabColumnByUidFromAllCols(this.filterSettings.columns[parseInt(i.toString(), 10)].uid);\n var filterValue = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n filterValue = !isNullOrUndefined(filterValue) && filterValue.toString();\n if (!isNullOrUndefined(this.column.format)) {\n this.applyColumnFormat(filterValue);\n }\n else {\n var key = this.filterSettings.columns[parseInt(i.toString(), 10)].field;\n this.values[\"\" + key] = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n var filterElement = this.getFilterBarElement(this.column.field);\n if (filterElement) {\n if (this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field] !== ''\n && !isNullOrUndefined(this.cellText[this.filterSettings.columns[parseInt(i.toString(), 10)].field])) {\n filterElement.value = this.cellText[this.column.field];\n }\n else {\n filterElement.value = this.filterSettings.columns[parseInt(i.toString(), 10)].value;\n }\n }\n }\n if (this.filterSettings.columns.length === 0) {\n var col = this.parent.getColumns();\n for (var i = 0; i < col.length; i++) {\n var filterElement = this.getFilterBarElement(col[parseInt(i.toString(), 10)].field);\n if (filterElement && filterElement.value !== '') {\n filterElement.value = '';\n delete this.values[col[parseInt(i.toString(), 10)].field];\n }\n }\n }\n }\n };\n Filter.prototype.updateFilterIcon = function () {\n if (this.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrIconElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrIconElement.length; i < len; i++) {\n fltrIconElement[parseInt(i.toString(), 10)].removeAttribute('aria-filtered');\n fltrIconElement[parseInt(i.toString(), 10)].classList.remove('e-filtered');\n }\n }\n };\n Filter.prototype.getFilterBarElement = function (col) {\n var selector = '[id=\\'' + col + '_filterBarcell\\']';\n var filterElement;\n if (selector && !isNullOrUndefined(this.element)) {\n filterElement = this.element.querySelector(selector);\n }\n return filterElement;\n };\n /**\n * @private\n * @returns {void}\n */\n Filter.prototype.refreshFilter = function () {\n this.refreshFilterSettings();\n this.updateFilterMsg();\n };\n /**\n * Clears all the filtered rows of the Grid.\n *\n * @param {string[]} fields - returns the fields\n * @returns {void}\n */\n Filter.prototype.clearFiltering = function (fields) {\n var _this = this;\n var cols = getActualPropFromColl(this.filterSettings.columns);\n if (!isNullOrUndefined(fields)) {\n this.refresh = false;\n fields.forEach(function (field) { _this.removeFilteredColsByField(field, false); });\n this.parent.setProperties({ filterSettings: { columns: this.filterSettings.columns } }, true);\n this.parent.renderModule.refresh();\n this.refresh = true;\n return;\n }\n if (isActionPrevent(this.parent)) {\n this.parent.notify(preventBatch, { instance: this, handler: this.clearFiltering });\n return;\n }\n for (var i = 0; i < cols.length; i++) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredcols = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n this.refresh = false;\n for (var i = 0, len = filteredcols.length; i < len; i++) {\n this.removeFilteredColsByField(this.parent.getColumnByUid(filteredcols[parseInt(i.toString(), 10)]).field, false);\n }\n this.refresh = true;\n if (filteredcols.length) {\n this.parent.renderModule.refresh();\n }\n if (this.parent.filterSettings.columns.length === 0 && this.parent.element.querySelector('.e-filtered')) {\n var fltrElement = [].slice.call(this.parent.element.getElementsByClassName('e-filtered'));\n for (var i = 0, len = fltrElement.length; i < len; i++) {\n fltrElement[0].removeAttribute('aria-filtered');\n fltrElement[0].classList.remove('e-filtered');\n }\n }\n this.isRemove = true;\n this.filterStatusMsg = '';\n this.updateFilterMsg();\n };\n Filter.prototype.checkAlreadyColFiltered = function (field) {\n var columns = this.filterSettings.columns;\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n if (col.field === field && col.value === this.value &&\n col.operator === this.operator && col.predicate === this.predicate) {\n return true;\n }\n }\n return false;\n };\n Filter.prototype.columnMenuFilter = function (args) {\n this.column = args.col;\n var ele = closest(args.target, '#' + args.id);\n if (args.isClose && !ele) {\n this.filterModule.closeDialog();\n }\n else if (ele) {\n this.filterDialogOpen(this.column, args.target);\n }\n };\n Filter.prototype.filterDialogOpen = function (col, target, left, top) {\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.setFilterModel(col);\n this.filterModule.openDialog(this.createOptions(col, target, left, top));\n };\n /**\n * Create filter dialog options\n *\n * @param {Column} col - Filtering column detail.\n * @param {Element} target - Filter dialog target.\n * @param {number} left - Filter dialog left position.\n * @param {number} top - Filter dialog top position.\n * @returns {Object} returns the created dialog options\n * @hidden\n */\n Filter.prototype.createOptions = function (col, target, left, top) {\n var gObj = this.parent;\n var dataSource = col.filter.dataSource || gObj.dataSource && 'result' in gObj.dataSource ? gObj.dataSource :\n gObj.getDataModule().dataManager;\n var type = col.filter.type || this.parent.filterSettings.type;\n var options = {\n type: col.type, field: col.field, displayName: col.headerText,\n dataSource: dataSource, format: col.format, height: 800, columns: gObj.getColumns(),\n filteredColumns: gObj.filterSettings.columns, target: target, dataManager: gObj.getDataModule().dataManager,\n formatFn: col.getFormatter(), ignoreAccent: gObj.filterSettings.ignoreAccent,\n parserFn: col.getParser(), query: gObj.query, template: col.getFilterItemTemplate(),\n hideSearchbox: isNullOrUndefined(col.filter.hideSearchbox) ? false : col.filter.hideSearchbox,\n handler: this.filterHandler.bind(this), localizedStrings: gObj.getLocaleConstants(),\n position: { X: left, Y: top }, column: col, foreignKeyValue: col.foreignKeyValue,\n actualPredicate: this.actualPredicate, localeObj: gObj.localeObj,\n isRemote: gObj.getDataModule().isRemote(), allowCaseSensitive: this.filterSettings.enableCaseSensitivity,\n isResponsiveFilter: this.parent.enableAdaptiveUI,\n operator: this.actualPredicate[col.field] && type === 'Menu' ? this.actualPredicate[col.field][0].operator : 'equal'\n };\n return options;\n };\n /**\n * Removes filtered column by field name.\n *\n * @param {string} field - Defines column field name to remove filter.\n * @param {boolean} isClearFilterBar - Specifies whether the filter bar value needs to be cleared.\n * @returns {void}\n * @hidden\n */\n Filter.prototype.removeFilteredColsByField = function (field, isClearFilterBar) {\n var fCell;\n var cols = this.filterSettings.columns;\n if (isActionPrevent(this.parent)) {\n var args = { instance: this, handler: this.removeFilteredColsByField, arg1: field, arg2: isClearFilterBar };\n this.parent.notify(preventBatch, args);\n return;\n }\n var colUid = cols.map(function (f) { return f.uid; });\n var filteredColsUid = colUid.filter(function (item, pos) { return colUid.indexOf(item) === pos; });\n var _loop_1 = function (i, len) {\n cols[parseInt(i.toString(), 10)].uid = cols[parseInt(i.toString(), 10)].uid\n || this_1.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field).uid;\n var len_1 = cols.length;\n var column = this_1.parent.grabColumnByUidFromAllCols(filteredColsUid[parseInt(i.toString(), 10)]);\n if (column.field === field || (column.field === column.foreignKeyValue && column.isForeignColumn())) {\n var currentPred = this_1.filterSettings.columns.filter(function (e) {\n return e.uid === column.uid;\n })[0];\n if (this_1.filterSettings.type === 'FilterBar' && !isClearFilterBar) {\n var selector = '[id=\\'' + column.field + '_filterBarcell\\']';\n fCell = this_1.parent.getHeaderContent().querySelector(selector);\n if (fCell) {\n fCell.value = '';\n delete this_1.values[\"\" + field];\n }\n }\n while (len_1--) {\n if (cols[parseInt(len_1.toString(), 10)].uid === column.uid) {\n cols.splice(len_1, 1);\n }\n }\n var fltrElement = this_1.parent.getColumnHeaderByField(column.field);\n fltrElement.removeAttribute('aria-filtered');\n if (this_1.filterSettings.type !== 'FilterBar' || this_1.parent.showColumnMenu) {\n var iconClass = this_1.parent.showColumnMenu && column.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n fltrElement.querySelector(iconClass).classList.remove('e-filtered');\n }\n this_1.isRemove = true;\n if (this_1.actualPredicate[\"\" + field]) {\n delete this_1.actualPredicate[\"\" + field];\n }\n if (this_1.values[\"\" + field]) {\n delete this_1.values[\"\" + field];\n }\n if (this_1.refresh) {\n this_1.parent.notify(modelChanged, {\n requestType: 'filtering', type: actionBegin, currentFilterObject: currentPred,\n currentFilterColumn: column, action: 'clearFilter'\n });\n }\n return \"break\";\n }\n };\n var this_1 = this;\n for (var i = 0, len = filteredColsUid.length; i < len; i++) {\n var state_1 = _loop_1(i, len);\n if (state_1 === \"break\")\n break;\n }\n this.updateFilterMsg();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Filter.prototype.getModuleName = function () {\n return 'filter';\n };\n Filter.prototype.keyUpHandlerImmediate = function (e) {\n if (e.keyCode !== 13) {\n this.keyUpHandler(e);\n }\n };\n Filter.prototype.keyUpHandler = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (target && matches(target, '.e-filterbar input')) {\n var closeHeaderEle = closest(target, 'th.e-filterbarcell');\n this.column = gObj.getColumnByUid(closeHeaderEle.getAttribute('e-mappinguid'));\n if (!this.column) {\n return;\n }\n if (e.action === 'altDownArrow' && this.parent.filterSettings.showFilterBarOperator) {\n var dropDownListInput = closest(target, 'span').querySelector('.e-filterbaroperator');\n dropDownListInput.ej2_instances[0].showPopup();\n dropDownListInput.focus();\n }\n if ((this.filterSettings.mode === 'Immediate' || (e.keyCode === 13 &&\n !e.target.classList.contains('e-filterbaroperator')))\n && e.keyCode !== 9 && !this.column.filterTemplate) {\n this.value = target.value.trim();\n this.processFilter(e);\n }\n }\n if (e.action === 'altDownArrow' && this.filterSettings.type !== 'FilterBar') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openMenuByField(column.field);\n this.parent.focusModule.clearIndicator();\n }\n }\n if (e.action === 'escape' && this.filterSettings.type === 'Menu' && this.filterModule) {\n this.filterModule.closeDialog();\n gObj.notify(restoreFocus, {});\n }\n };\n Filter.prototype.updateCrossIcon = function (element) {\n if (element.value.length) {\n element.nextElementSibling.classList.remove('e-hide');\n }\n };\n Filter.prototype.updateFilterMsg = function () {\n if (this.filterSettings.type === 'FilterBar') {\n var gObj = this.parent;\n var getFormatFlValue = void 0;\n var columns = this.filterSettings.columns;\n var column = void 0;\n if (!this.filterSettings.showFilterBarStatus) {\n return;\n }\n if (columns.length > 0 && this.filterStatusMsg !== this.l10n.getConstant('InvalidFilterMessage')) {\n this.filterStatusMsg = '';\n for (var index = 0; index < columns.length; index++) {\n column = gObj.grabColumnByUidFromAllCols(columns[parseInt(index.toString(), 10)].uid)\n || gObj.grabColumnByFieldFromAllCols(columns[parseInt(index.toString(), 10)].field);\n if (index) {\n this.filterStatusMsg += ' && ';\n }\n if (!isNullOrUndefined(column.format)) {\n var flValue = (column.type === 'date' || column.type === 'datetime') ?\n this.valueFormatter.fromView(this.values[column.field], column.getParser(), column.type) :\n this.values[column.field];\n if (!(column.type === 'date' || column.type === 'datetime')) {\n var formater = this.serviceLocator.getService('valueFormatter');\n getFormatFlValue = formater.toView(flValue, column.getParser()).toString();\n }\n else {\n getFormatFlValue = this.setFormatForFlColumn(flValue, column);\n }\n this.filterStatusMsg += column.headerText + ': ' + getFormatFlValue;\n }\n else {\n this.filterStatusMsg += column.headerText + ': ' + this.values[column.field];\n }\n }\n }\n if (gObj.allowPaging) {\n gObj.updateExternalMessage(this.filterStatusMsg);\n }\n //TODO: virtual paging\n this.filterStatusMsg = '';\n }\n };\n Filter.prototype.setFormatForFlColumn = function (value, column) {\n var formater = this.serviceLocator.getService('valueFormatter');\n return formater.toView(value, column.getFormatter()).toString();\n };\n Filter.prototype.checkForSkipInput = function (column, value) {\n var isSkip;\n if (column.type === 'number') {\n if (DataUtil.operatorSymbols[\"\" + value] || this.skipNumberInput.indexOf(value) > -1) {\n isSkip = true;\n }\n }\n else if (column.type === 'string') {\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n if (this.skipStringInput.indexOf(val) > -1) {\n isSkip = true;\n }\n }\n }\n return isSkip;\n };\n Filter.prototype.processFilter = function (e) {\n this.stopTimer();\n this.startTimer(e);\n };\n Filter.prototype.startTimer = function (e) {\n var _this = this;\n this.timer = window.setInterval(function () { _this.onTimerTick(); }, e.keyCode === 13 ? 0 : this.filterSettings.immediateModeDelay);\n };\n Filter.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Filter.prototype.onTimerTick = function () {\n var selector = '[id=\\'' + this.column.field + '_filterBarcell\\']';\n var filterElement = this.element.querySelector(selector);\n if (!filterElement && this.parent.isFrozenGrid()) {\n filterElement = this.parent.getHeaderContent().querySelector(selector);\n }\n var filterValue;\n this.cellText[this.column.field] = filterElement.value;\n this.stopTimer();\n if (!isNullOrUndefined(this.column.filterBarTemplate)) {\n var templateRead = this.column.filterBarTemplate.read;\n if (typeof templateRead === 'string') {\n templateRead = getValue(templateRead, window);\n }\n if (!isNullOrUndefined(templateRead)) {\n this.value = templateRead.call(this, filterElement);\n }\n }\n else {\n filterValue = JSON.parse(JSON.stringify(filterElement.value));\n }\n if (isNullOrUndefined(this.value) || this.value === '') {\n this.removeFilteredColsByField(this.column.field);\n return;\n }\n this.validateFilterValue(this.value);\n this.filterByMethod = false;\n this.filterByColumn(this.column.field, this.operator, this.value, this.predicate, this.filterSettings.enableCaseSensitivity, this.ignoreAccent);\n this.filterByMethod = true;\n filterElement.value = filterValue;\n this.updateFilterMsg();\n };\n Filter.prototype.validateFilterValue = function (value) {\n var skipInput;\n var index;\n this.matchCase = this.filterSettings.enableCaseSensitivity;\n switch (this.column.type) {\n case 'number':\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n skipInput = ['>', '<', '=', '!'];\n for (var i = 0; i < value.length; i++) {\n if (skipInput.indexOf(value[parseInt(i.toString(), 10)]) > -1) {\n index = i;\n break;\n }\n }\n this.getOperator(value.substring(index));\n if (index !== 0) {\n this.value = value.substring(0, index);\n }\n if (this.value !== '' && value.length >= 1) {\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n }\n if (isNaN(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n break;\n case 'date':\n case 'datetime':\n this.operator = this.filterOperators.equal;\n if (this.value !== '' && !(this.value instanceof Date)) {\n this.getOperator(value);\n this.value = this.valueFormatter.fromView(this.value, this.column.getParser(), this.column.type);\n if (isNullOrUndefined(this.value)) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n }\n break;\n case 'string':\n this.matchCase = false;\n if (value.charAt(0) === '*') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(value.length - 1) === '%') {\n this.value = this.value.slice(0, -1);\n this.operator = this.filterOperators.startsWith;\n }\n else if (value.charAt(0) === '%') {\n this.value = this.value.slice(1);\n this.operator = this.filterOperators.endsWith;\n }\n else {\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.startsWith;\n }\n }\n break;\n case 'boolean':\n if (value.toLowerCase() === 'true' || value === '1') {\n this.value = true;\n }\n else if (value.toLowerCase() === 'false' || value === '0') {\n this.value = false;\n }\n else if (value.length) {\n this.filterStatusMsg = this.l10n.getConstant('InvalidFilterMessage');\n }\n this.operator = this.filterOperators.equal;\n break;\n default:\n if (this.column.filter.operator) {\n this.operator = this.column.filter.operator;\n }\n else {\n this.operator = this.filterOperators.equal;\n }\n }\n };\n Filter.prototype.getOperator = function (value) {\n var singleOp = value.charAt(0);\n var multipleOp = value.slice(0, 2);\n var operators = extend({ '=': this.filterOperators.equal, '!': this.filterOperators.notEqual }, DataUtil.operatorSymbols);\n // eslint-disable-next-line no-prototype-builtins\n if (operators.hasOwnProperty(singleOp) || operators.hasOwnProperty(multipleOp)) {\n this.operator = operators[\"\" + singleOp];\n this.value = value.substring(1);\n if (!this.operator) {\n this.operator = operators[\"\" + multipleOp];\n this.value = value.substring(2);\n }\n }\n if (this.operator === this.filterOperators.lessThan || this.operator === this.filterOperators.greaterThan) {\n if (this.value.charAt(0) === '=') {\n this.operator = this.operator + 'orequal';\n this.value = this.value.substring(1);\n }\n }\n };\n Filter.prototype.columnPositionChanged = function () {\n if (this.parent.filterSettings.type !== 'FilterBar') {\n return;\n }\n };\n Filter.prototype.getLocalizedCustomOperators = function () {\n var numOptr = [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'greaterthan', text: this.l10n.getConstant('GreaterThan') },\n { value: 'greaterthanorequal', text: this.l10n.getConstant('GreaterThanOrEqual') },\n { value: 'lessthan', text: this.l10n.getConstant('LessThan') },\n { value: 'lessthanorequal', text: this.l10n.getConstant('LessThanOrEqual') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ];\n this.customOperators = {\n stringOperator: [\n { value: 'startswith', text: this.l10n.getConstant('StartsWith') },\n { value: 'endswith', text: this.l10n.getConstant('EndsWith') },\n { value: 'contains', text: this.l10n.getConstant('Contains') },\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ],\n numberOperator: numOptr,\n dateOperator: numOptr,\n datetimeOperator: numOptr,\n booleanOperator: [\n { value: 'equal', text: this.l10n.getConstant('Equal') },\n { value: 'notequal', text: this.l10n.getConstant('NotEqual') }\n ]\n };\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n Filter.prototype.openMenuByField = function (field) {\n var gObj = this.parent;\n if (gObj.enableAdaptiveUI) {\n this.showCustomFilter(false);\n return;\n }\n var column = gObj.getColumnByField(field);\n var header = gObj.getColumnHeaderByField(field);\n var target = header.querySelector('.e-filtermenudiv');\n if (!target) {\n return;\n }\n var gClient = gObj.element.getBoundingClientRect();\n var fClient = target.getBoundingClientRect();\n this.filterDialogOpen(column, target, fClient.right - gClient.left, fClient.bottom - gClient.top);\n };\n Filter.prototype.filterIconClickHandler = function (e) {\n var target = e.target;\n if (target.classList.contains('e-filtermenudiv') && (this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel')) {\n var gObj = this.parent;\n var col = gObj.getColumnByUid(parentsUntil(target, 'e-headercell').firstElementChild.getAttribute('e-mappinguid'));\n this.column = col;\n if (this.fltrDlgDetails.field === col.field && this.fltrDlgDetails.isOpen) {\n return;\n }\n if (this.filterModule) {\n this.filterModule.closeDialog();\n }\n this.fltrDlgDetails = { field: col.field, isOpen: true };\n this.openMenuByField(col.field);\n }\n };\n Filter.prototype.clickHandler = function (e) {\n if (this.filterSettings.type === 'FilterBar' && this.filterSettings.showFilterBarOperator) {\n if (parentsUntil(e.target, 'e-filterbarcell') &&\n e.target.classList.contains('e-input-group-icon')) {\n var filterOperatorElement = closest(e.target, 'div').\n querySelector('.e-filterbaroperator');\n if (filterOperatorElement) {\n filterOperatorElement.focus();\n }\n else {\n e.target.focus();\n }\n }\n if (e.target.classList.contains('e-list-item')) {\n var inputId = document.querySelector('.e-popup-open').getAttribute('id').replace('_popup', '');\n if (inputId.indexOf('grid-column') !== -1) {\n closest(document.getElementById(inputId), 'div').querySelector('.e-filtertext').focus();\n }\n }\n }\n if (this.filterSettings.mode === 'Immediate' || this.parent.filterSettings.type === 'Menu' ||\n this.parent.filterSettings.type === 'CheckBox' || this.parent.filterSettings.type === 'Excel') {\n var target = e.target;\n var datepickerEle = target.classList.contains('e-day'); // due to datepicker popup cause\n var dialog = parentsUntil(this.parent.element, 'e-dialog');\n var hasDialog = false;\n var popupEle = parentsUntil(target, 'e-popup');\n var hasDialogClosed = this.parent.element.querySelector('.e-filter-popup');\n if (dialog && popupEle) {\n hasDialog = dialog.id === popupEle.id;\n }\n if ((hasDialogClosed && (parentsUntil(target, 'e-excel-ascending') ||\n parentsUntil(target, 'e-excel-descending')))) {\n this.filterModule.closeDialog(target);\n }\n if (parentsUntil(target, 'e-filter-popup') || target.classList.contains('e-filtermenudiv')) {\n return;\n }\n else if (this.filterModule && (!parentsUntil(target, 'e-popup-wrapper')\n && (!closest(target, '.e-filter-item.e-menu-item'))) && !datepickerEle) {\n if ((hasDialog && (!parentsUntil(target, 'e-filter-popup'))\n && (!parentsUntil(target, 'e-popup-flmenu'))) || (!popupEle && hasDialogClosed)) {\n this.filterModule.isresetFocus = parentsUntil(target, 'e-grid') &&\n parentsUntil(target, 'e-grid').id === this.parent.element.id;\n this.filterModule.closeDialog(target);\n }\n }\n }\n };\n Filter.prototype.filterHandler = function (args) {\n this.actualPredicate[args.field] = args.actualPredicate;\n var dataManager = new DataManager(this.filterSettings.columns);\n var query = new Query().where('field', this.filterOperators.equal, args.field);\n var result = dataManager.executeLocal(query);\n for (var i = 0; i < result.length; i++) {\n var index = -1;\n for (var j = 0; j < this.filterSettings.columns.length; j++) {\n if (result[parseInt(i.toString(), 10)].field === this.filterSettings.columns[parseInt(j.toString(), 10)].field) {\n index = j;\n break;\n }\n }\n if (index !== -1) {\n this.filterSettings.columns.splice(index, 1);\n }\n }\n if (this.values[args.field]) {\n delete this.values[args.field];\n }\n var col = this.parent.getColumnByField(args.field);\n var iconClass = this.parent.showColumnMenu && col.showColumnMenu ? '.e-columnmenu' : '.e-icon-filter';\n var filterIconElement = this.parent.getColumnHeaderByField(args.field).querySelector(iconClass);\n if (args.action === 'filtering') {\n this.filterSettings.columns = this.filterSettings.columns.concat(args.filterCollection);\n if (this.filterSettings.columns.length && filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n }\n else {\n if (filterIconElement) {\n filterIconElement.classList.remove('e-filtered');\n }\n args.requestType = 'filtering';\n this.parent.renderModule.refresh(args); //hot-fix onpropertychanged not working for object { array }\n }\n this.parent.dataBind();\n };\n Filter.prototype.updateFilter = function () {\n var cols = this.filterSettings.columns;\n this.actualPredicate = {};\n for (var i = 0; i < cols.length; i++) {\n this.column = this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field) ||\n getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns());\n var fieldName = cols[parseInt(i.toString(), 10)].field;\n if (!this.parent.getColumnByField(cols[parseInt(i.toString(), 10)].field)) {\n fieldName = getColumnByForeignKeyValue(cols[parseInt(i.toString(), 10)].field, this.parent.getForeignKeyColumns()).field;\n }\n this.refreshFilterIcon(fieldName, cols[parseInt(i.toString(), 10)].operator, cols[parseInt(i.toString(), 10)].value, cols[parseInt(i.toString(), 10)].type, cols[parseInt(i.toString(), 10)].predicate, cols[parseInt(i.toString(), 10)].matchCase, cols[parseInt(i.toString(), 10)].ignoreAccent, cols[parseInt(i.toString(), 10)].uid);\n }\n };\n Filter.prototype.refreshFilterIcon = function (fieldName, operator, value, type, predicate, matchCase, ignoreAccent, uid) {\n var obj = {\n field: fieldName,\n predicate: predicate,\n matchCase: matchCase,\n ignoreAccent: ignoreAccent,\n operator: operator,\n value: value,\n type: type\n };\n if (this.actualPredicate[\"\" + fieldName]) {\n this.actualPredicate[\"\" + fieldName].push(obj);\n }\n else {\n this.actualPredicate[\"\" + fieldName] = [obj];\n }\n var field = uid ? this.parent.grabColumnByUidFromAllCols(uid).field : fieldName;\n this.addFilteredClass(field);\n };\n Filter.prototype.addFilteredClass = function (fieldName) {\n var filterIconElement;\n var col = this.parent.getColumnByField(fieldName);\n if (this.parent.showColumnMenu && col.showColumnMenu) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-columnmenu');\n }\n else if (col) {\n filterIconElement = this.parent.getColumnHeaderByField(fieldName).querySelector('.e-icon-filter');\n }\n if (filterIconElement) {\n filterIconElement.classList.add('e-filtered');\n }\n };\n /**\n * @hidden\n * @returns {FilterUI} returns the FilterUI\n */\n Filter.prototype.getFilterUIInfo = function () {\n return this.filterModule ? this.filterModule.getFilterUIInfo() : {};\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {string} returns the operator name\n * @hidden\n */\n Filter.prototype.getOperatorName = function (field) {\n return document.getElementById(this.parent.getColumnByField(field).uid).ej2_instances[0].value;\n };\n /**\n * Renders checkbox items in Menu filter dialog.\n *\n * @returns {void}\n */\n Filter.prototype.renderCheckboxOnFilterMenu = function () {\n return this.filterModule.renderCheckBoxMenu();\n };\n return Filter;\n}());\n\nvar resizeClassList = {\n root: 'e-rhandler',\n suppress: 'e-rsuppress',\n icon: 'e-ricon',\n helper: 'e-rhelper',\n header: 'th.e-headercell',\n cursor: 'e-rcursor'\n};\n/**\n * `Resize` module is used to handle Resize to fit for columns.\n *\n * @hidden\n * @private\n */\nvar Resize = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid resize module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Resize(parent) {\n this.tapped = false;\n this.isDblClk = true;\n /** @hidden */\n this.resizeProcess = false;\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.widthService = new ColumnWidthService(parent);\n this.addEventListener();\n }\n /**\n * Resize by field names.\n *\n * @param {string|string[]} fName - Defines the field name.\n * @returns {void}\n */\n Resize.prototype.autoFitColumns = function (fName) {\n var columnName = (fName === undefined || fName === null || fName.length <= 0) ?\n this.parent.getColumns().map(function (x) { return x.field; }) : (typeof fName === 'string') ? [fName] : fName;\n this.parent.isAutoFitColumns = true;\n this.findColumn(columnName);\n };\n Resize.prototype.autoFit = function () {\n var newarray = this.parent.getColumns().filter(function (c) { return c.autoFit === true; })\n .map(function (c) { return c.field || c.headerText; });\n if (newarray.length > 0) {\n this.autoFitColumns(newarray);\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n this.widthService.setWidthToTable();\n }\n };\n Resize.prototype.resizeColumn = function (fName, index, id) {\n var gObj = this.parent;\n var tWidth = 0;\n var headerTable;\n var contentTable;\n var footerTable;\n var headerDivTag = 'e-gridheader';\n var contentDivTag = gridContent;\n var footerDivTag = gridFooter;\n var indentWidth = 0;\n var uid = id ? id : this.parent.getUidByColumnField(fName);\n var columnIndex = this.parent.getNormalizedColumnIndex(uid);\n var headerTextClone;\n var contentTextClone;\n var footerTextClone;\n var columnIndexByField = this.parent.getColumnIndexByField(fName);\n var left = gObj.getFrozenColumns() || gObj.getFrozenLeftColumnsCount();\n var movable = gObj.getMovableColumnsCount();\n if (!isNullOrUndefined(gObj.getFooterContent())) {\n footerTable = gObj.getFooterContentTable();\n }\n if (gObj.isFrozenGrid()) {\n var col = gObj.getColumnByField(fName);\n if (col.getFreezeTableName() === frozenLeft) {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === 'movable') {\n headerTable = gObj.getHeaderContent().querySelector('.' + movableHeader).children[0];\n contentTable = gObj.getContent().querySelector('.' + movableContent).children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - left) + 1) + \")\");\n }\n }\n else if (col.getFreezeTableName() === frozenRight) {\n headerTable = gObj.getHeaderContent().querySelector('.e-frozen-right-header').children[0];\n contentTable = gObj.getContent().querySelector('.e-frozen-right-content').children[0];\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n if (footerTable) {\n footerTable = gObj.getFooterContent().querySelector('.e-movablefootercontent').children[0];\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + ((columnIndex - (left + movable)) + 1) + \")\");\n }\n }\n }\n else {\n headerTable = gObj.getHeaderTable();\n contentTable = gObj.getContentTable();\n headerTextClone = headerTable.querySelector('[e-mappinguid=\"' + uid + '\"]').parentElement.cloneNode(true);\n contentTextClone = contentTable.querySelectorAll(\"td.e-rowcell:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption):not(.e-detailcell)\");\n if (footerTable) {\n footerTextClone = footerTable.querySelectorAll(\"td:nth-child(\" + (columnIndex + 1) + \"):not(.e-groupcaption)\");\n }\n }\n var indentWidthClone = [].slice.call(headerTable.querySelector('tr').getElementsByClassName('e-grouptopleftcell'));\n if (indentWidthClone.length > 0) {\n for (var i = 0; i < indentWidthClone.length; i++) {\n indentWidth += indentWidthClone[parseInt(i.toString(), 10)].offsetWidth;\n }\n }\n var detailsElement = contentTable.querySelector('.e-detailrowcollapse') ||\n contentTable.querySelector('.e-detailrowexpand');\n if ((this.parent.detailTemplate || this.parent.childGrid) && detailsElement) {\n indentWidth += detailsElement.offsetWidth;\n }\n var headerText = [headerTextClone];\n var contentText = [];\n var footerText = [];\n if (footerTable) {\n for (var i = 0; i < footerTextClone.length; i++) {\n footerText[parseInt(i.toString(), 10)] = footerTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n }\n for (var i = 0; i < contentTextClone.length; i++) {\n contentText[parseInt(i.toString(), 10)] = contentTextClone[parseInt(i.toString(), 10)].cloneNode(true);\n }\n var wHeader = this.createTable(headerTable, headerText, headerDivTag);\n var wFooter = null;\n var wContent = null;\n if (gObj.getCurrentViewRecords().length) {\n wContent = this.createTable(contentTable, contentText, contentDivTag);\n }\n if (footerText.length) {\n wFooter = this.createTable(footerTable, footerText, footerDivTag);\n }\n var columnbyindex = gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)];\n var width = columnbyindex.width = formatUnit(Math.max(wHeader, wContent, wFooter));\n var colMaxWidth = columnbyindex.maxWidth && parseFloat(columnbyindex.maxWidth.toString());\n if (parseInt(width, 10) > colMaxWidth) {\n columnbyindex.width = colMaxWidth;\n }\n this.widthService.setColumnWidth(gObj.getColumns()[parseInt(columnIndexByField.toString(), 10)]);\n var result = gObj.getColumns().some(function (x) { return x.width === null\n || x.width === undefined || x.width.length <= 0; });\n if (result === false) {\n var element = void 0;\n if (this.parent.isAutoFitColumns && gObj.isFrozenGrid()) {\n var frozenMovableColumns = getExactFrozenMovableColumn(this.parent);\n if (columnbyindex.freezeTable === 'frozen-left') {\n element = frozenMovableColumns.frozenLeft;\n }\n else if (columnbyindex.freezeTable === 'movable') {\n element = frozenMovableColumns.movable;\n }\n else {\n element = frozenMovableColumns.frozenRight;\n }\n }\n else {\n element = gObj.getColumns();\n }\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].visible) {\n tWidth = tWidth + parseFloat(element[parseInt(i.toString(), 10)].width);\n }\n }\n }\n var calcTableWidth = tWidth + indentWidth;\n if (tWidth > 0 && !gObj.isFrozenGrid()) {\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }));\n }\n if (this.parent.resizeSettings.mode === 'Auto') {\n calcTableWidth = '100%';\n }\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n if (!isNullOrUndefined(footerTable)) {\n footerTable.style.width = formatUnit(calcTableWidth);\n }\n }\n if (gObj.isFrozenGrid()) {\n if (this.parent.isAutoFitColumns) {\n headerTable.style.width = formatUnit(calcTableWidth);\n contentTable.style.width = formatUnit(calcTableWidth);\n }\n this.widthService.refreshFrozenScrollbar();\n }\n var tableWidth = headerTable.offsetWidth;\n var contentwidth = (gObj.getContent().scrollWidth);\n if (contentwidth > tableWidth) {\n headerTable.classList.add('e-tableborder');\n contentTable.classList.add('e-tableborder');\n }\n else {\n headerTable.classList.remove('e-tableborder');\n contentTable.classList.remove('e-tableborder');\n }\n if (!isNullOrUndefined(footerTable)) {\n footerTable.classList.add('e-tableborder');\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.widthService = null;\n this.unwireEvents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n Resize.prototype.findColumn = function (fName) {\n for (var i = 0; i < fName.length; i++) {\n var fieldName = fName[parseInt(i.toString(), 10)];\n var columnIndex = this.parent.getColumnIndexByField(fieldName);\n var column = this.parent.getColumns()[parseInt(columnIndex.toString(), 10)];\n if (columnIndex > -1 && !isNullOrUndefined(column) && column.visible === true) {\n this.resizeColumn(fieldName, columnIndex);\n }\n }\n if (this.parent.allowTextWrap) {\n this.parent.notify(freezeRender, { case: 'refreshHeight', isModeChg: true });\n }\n };\n /**\n * To create table for autofit\n *\n * @param {Element} table - specifies the table\n * @param {Element[]} text - specifies the text\n * @param {string} tag - specifies the tag name\n * @returns {number} returns the number\n * @hidden\n */\n Resize.prototype.createTable = function (table$$1, text, tag) {\n var myTableDiv = this.parent.createElement('div');\n myTableDiv.className = this.parent.element.className;\n myTableDiv.style.cssText = 'display: inline-block;visibility:hidden;position:absolute';\n var mySubDiv = this.parent.createElement('div');\n mySubDiv.className = tag;\n var myTable = this.parent.createElement('table', { attrs: { role: 'grid' } });\n myTable.className = table$$1.className;\n myTable.classList.add('e-resizetable');\n myTable.style.cssText = 'table-layout: auto;width: auto';\n var myTr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n for (var i = 0; i < text.length; i++) {\n var tr = myTr.cloneNode();\n tr.className = table$$1.querySelector('tr').className;\n tr.appendChild(text[parseInt(i.toString(), 10)]);\n myTable.appendChild(tr);\n }\n mySubDiv.appendChild(myTable);\n myTableDiv.appendChild(mySubDiv);\n document.body.appendChild(myTableDiv);\n var offsetWidthValue = myTable.getBoundingClientRect().width;\n document.body.removeChild(myTableDiv);\n return Math.ceil(offsetWidthValue);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(headerRefreshed, this.refreshHeight, this);\n this.parent.on(initialEnd, this.wireEvents, this);\n this.parent.on(contentReady, this.autoFit, this);\n this.parent.on(refreshHandlers, this.refreshHeight, this);\n this.parent.on(destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(headerRefreshed, this.refreshHeight);\n this.parent.off(initialEnd, this.wireEvents);\n this.parent.off(refreshHandlers, this.refreshHeight);\n this.parent.off(destroy, this.destroy);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Resize.prototype.render = function () {\n this.unwireEvents();\n this.wireEvents();\n this.setHandlerHeight();\n };\n Resize.prototype.refreshHeight = function () {\n if (this.parent.getHeaderTable()) {\n var element = this.getResizeHandlers();\n for (var i = 0; i < element.length; i++) {\n if (element[parseInt(i.toString(), 10)].parentElement.offsetHeight > 0) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n }\n this.setHandlerHeight();\n }\n };\n Resize.prototype.wireEvents = function () {\n EventHandler.add(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart, this);\n EventHandler.add(this.parent.getHeaderContent(), dblclick, this.callAutoFit, this);\n };\n Resize.prototype.unwireEvents = function () {\n EventHandler.remove(this.parent.getHeaderContent(), Browser.touchStartEvent, this.touchResizeStart);\n EventHandler.remove(this.parent.getHeaderContent(), dblclick, this.callAutoFit);\n };\n Resize.prototype.getResizeHandlers = function () {\n return this.parent.isFrozenGrid() ?\n [].slice.call(this.parent.getHeaderContent().getElementsByClassName(resizeClassList.root))\n : [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.root));\n };\n Resize.prototype.setHandlerHeight = function () {\n var element = [].slice.call(this.parent.getHeaderTable().getElementsByClassName(resizeClassList.suppress));\n for (var i = 0; i < element.length; i++) {\n element[parseInt(i.toString(), 10)].style.height = element[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.callAutoFit = function (e) {\n if (e.target.classList.contains('e-rhandler')) {\n var col = this.getTargetColumn(e);\n if (col.columns) {\n return;\n }\n this.resizeColumn(col.field, this.parent.getNormalizedColumnIndex(col.uid), col.uid);\n var header = closest(e.target, resizeClassList.header);\n header.classList.add('e-resized');\n }\n };\n Resize.prototype.touchResizeStart = function (e) {\n if (!Global.timer) {\n Global.timer = setTimeout(function () {\n Global.timer = null;\n }, 300);\n return this.resizeStart(e);\n }\n else {\n clearTimeout(Global.timer);\n Global.timer = null;\n this.callAutoFit(e);\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.target.classList.contains('e-rhandler')) {\n if (!this.helper) {\n if (this.getScrollBarWidth() === 0) {\n this.resizeProcess = true;\n if (this.parent.allowGrouping) {\n for (var i = 0; i < this.parent.groupSettings.columns.length; i++) {\n this.widthService.setColumnWidth(new Column({ width: '30px' }), i);\n }\n }\n for (var _i = 0, _a = this.refreshColumnWidth(); _i < _a.length; _i++) {\n var col = _a[_i];\n this.widthService.setColumnWidth(col);\n }\n this.widthService.setWidthToTable();\n this.resizeProcess = false;\n }\n this.refreshStackedColumnWidth();\n this.element = e.target;\n if (this.parent.getVisibleFrozenColumns()) {\n var mtbody = this.parent.getMovableContentTbody();\n var ftbody = this.parent.getFrozenLeftContentTbody();\n var frtbody = this.parent.getFrozenRightContentTbody();\n var mtr = [].slice.call(mtbody.childNodes);\n var ftr = [].slice.call(ftbody.childNodes);\n var frTr = [];\n if (this.parent.getFrozenMode() === leftRight && frtbody) {\n frTr = [].slice.call(frtbody.childNodes);\n }\n var _loop_1 = function (i) {\n gridActionHandler(this_1.parent, function (tableName, row$$1) {\n if (_this.parent.rowHeight) {\n row$$1[parseInt(i.toString(), 10)].style.height = _this.parent.rowHeight + 'px';\n }\n else {\n row$$1[parseInt(i.toString(), 10)].style.removeProperty('height');\n }\n }, [ftr, mtr, frTr]);\n };\n var this_1 = this;\n for (var i = 0; i < mtr.length; i++) {\n _loop_1(i);\n }\n }\n this.parentElementWidth = this.parent.element.getBoundingClientRect().width;\n this.appendHelper();\n this.column = this.getTargetColumn(e);\n this.pageX = this.getPointX(e);\n if (this.column.getFreezeTableName() === frozenRight) {\n if (this.parent.enableRtl) {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n else {\n this.minMove = parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n }\n else if (this.parent.enableRtl) {\n this.minMove = parseFloat(this.column.width.toString())\n - (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0);\n }\n else {\n this.minMove = (this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 0)\n - parseFloat(isNullOrUndefined(this.column.width) ? '' : this.column.width.toString());\n }\n this.minMove += this.pageX;\n }\n if (Browser.isDevice && !this.helper.classList.contains(resizeClassList.icon)) {\n this.helper.classList.add(resizeClassList.icon);\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n var args = { e: e, column: this.column };\n this.parent.trigger(resizeStart, args, function (args) {\n if (args.cancel || _this.parent.isEdit) {\n _this.cancelResizeAction();\n return;\n }\n EventHandler.add(document, Browser.touchEndEvent, _this.resizeEnd, _this);\n EventHandler.add(_this.parent.element, Browser.touchMoveEvent, _this.resizing, _this);\n _this.updateCursor('add');\n });\n }\n }\n };\n Resize.prototype.cancelResizeAction = function (removeEvents) {\n if (removeEvents) {\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n }\n if (Browser.isDevice) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n }\n detach(this.helper);\n this.refresh();\n };\n Resize.prototype.getWidth = function (width, minWidth, maxWidth) {\n if (minWidth && width < minWidth) {\n return minWidth;\n }\n else if ((maxWidth && width > maxWidth)) {\n return maxWidth;\n }\n else {\n return width;\n }\n };\n Resize.prototype.updateResizeEleHeight = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = this.element.parentElement.offsetHeight + 'px';\n }\n };\n Resize.prototype.getColData = function (column, mousemove) {\n return {\n width: parseFloat(isNullOrUndefined(this.widthService.getWidth(column)) || this.widthService.getWidth(column) === 'auto' ? '0'\n : this.widthService.getWidth(column).toString()) + mousemove,\n minWidth: column.minWidth ? parseFloat(column.minWidth.toString()) : null,\n maxWidth: column.maxWidth ? parseFloat(column.maxWidth.toString()) : null\n };\n };\n Resize.prototype.resizing = function (e) {\n if (isNullOrUndefined(this.column)) {\n return;\n }\n var offsetWidth = 0;\n if (isNullOrUndefined(this.column)) {\n offsetWidth = parentsUntil(this.element, 'th').offsetWidth;\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.setHelperHeight();\n }\n var pageX = this.getPointX(e);\n var mousemove = this.parent.enableRtl ? -(pageX - this.pageX) : (pageX - this.pageX);\n if (this.column.getFreezeTableName() === frozenRight) {\n mousemove = this.parent.enableRtl ? (pageX - this.pageX) : (this.pageX - pageX);\n }\n var colData = this.getColData(this.column, mousemove);\n if (!colData.width) {\n colData.width = closest(this.element, 'th').offsetWidth;\n }\n var width = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n this.parent.log('resize_min_max', { column: this.column, width: width });\n if (this.column.getFreezeTableName() === frozenRight) {\n if ((this.parent.enableRtl && this.minMove >= pageX) || (!this.parent.enableRtl && this.minMove <= pageX)) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n }\n if ((this.column.getFreezeTableName() !== frozenRight\n && ((!this.parent.enableRtl && this.minMove >= pageX) || (this.parent.enableRtl && this.minMove <= pageX)))\n || (this.column.getFreezeTableName() === frozenRight && ((this.parent.enableRtl && this.minMove >= pageX)\n || (!this.parent.enableRtl && this.minMove <= pageX)))) {\n width = this.column.minWidth ? parseFloat(this.column.minWidth.toString()) : 10;\n this.pageX = pageX = this.minMove;\n }\n if (width !== parseFloat(isNullOrUndefined(this.column.width) || this.column.width === 'auto' ?\n offsetWidth.toString() : this.column.width.toString())) {\n this.pageX = pageX;\n this.column.width = formatUnit(width);\n var args = {\n e: e,\n column: this.column\n };\n this.parent.trigger(onResize, args);\n if (args.cancel) {\n this.cancelResizeAction(true);\n return;\n }\n var columns = [this.column];\n var finalColumns = [this.column];\n if (this.column.columns) {\n columns = this.getSubColumns(this.column, []);\n columns = this.calulateColumnsWidth(columns, false, mousemove);\n finalColumns = this.calulateColumnsWidth(columns, true, mousemove);\n }\n this.resizeProcess = true;\n for (var _i = 0, finalColumns_1 = finalColumns; _i < finalColumns_1.length; _i++) {\n var col = finalColumns_1[_i];\n this.widthService.setColumnWidth(col, null, 'resize');\n }\n this.resizeProcess = false;\n this.updateHelper();\n }\n this.isDblClk = false;\n };\n Resize.prototype.calulateColumnsWidth = function (columns, isUpdate, mousemove) {\n var finalColumns = [];\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n var totalWidth = 0;\n for (var i = 0; i < columns.length; i++) {\n totalWidth += parseFloat(columns[parseInt(i.toString(), 10)].width.toString());\n }\n var colData = this.getColData(col, (parseFloat(col.width)) * mousemove / totalWidth);\n var colWidth = this.getWidth(colData.width, colData.minWidth, colData.maxWidth);\n if ((colWidth !== parseFloat(col.width.toString()))) {\n if (isUpdate) {\n col.width = formatUnit(colWidth < 1 ? 1 : colWidth);\n }\n finalColumns.push(col);\n }\n }\n return finalColumns;\n };\n Resize.prototype.getSubColumns = function (column, subColumns) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false && col.allowResizing) {\n if (col.columns) {\n this.getSubColumns(col, subColumns);\n }\n else {\n subColumns.push(col);\n }\n }\n }\n return subColumns;\n };\n Resize.prototype.resizeEnd = function (e) {\n if (!this.helper || this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(this.parent.element, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeEnd);\n this.updateCursor('remove');\n detach(this.helper);\n var args = { e: e, column: this.column };\n var content$$1 = this.parent.getContent().querySelector('.' + content);\n var cTable = content$$1.querySelector('.' + movableContent) ? content$$1.querySelector('.' + movableContent) : content$$1;\n if (cTable.scrollHeight > cTable.clientHeight) {\n this.parent.scrollModule.setPadding();\n cTable.style.overflowY = 'scroll';\n }\n this.parent.trigger(resizeStop, args);\n closest(this.element, '.e-headercell').classList.add('e-resized');\n if (parentsUntil(this.element, 'e-frozenheader')) {\n this.isFrozenColResized = true;\n }\n else {\n this.isFrozenColResized = false;\n }\n if (this.parent.isFrozenGrid()) {\n this.parent.notify(freezeRender, { case: 'textwrap' });\n }\n if (this.parent.allowTextWrap) {\n this.updateResizeEleHeight();\n this.parent.notify(textWrapRefresh, { case: 'textwrap' });\n }\n this.refresh();\n this.doubleTapEvent(e);\n this.isDblClk = true;\n };\n Resize.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Resize.prototype.refreshColumnWidth = function () {\n var columns = this.parent.getColumns();\n for (var _i = 0, _a = [].slice.apply(this.parent.getHeaderContent().querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, columns_2 = columns; _b < columns_2.length; _b++) {\n var column = columns_2[_b];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === column.uid && column.visible) {\n column.width = ele.getBoundingClientRect().width;\n break;\n }\n }\n }\n return columns;\n };\n Resize.prototype.refreshStackedColumnWidth = function () {\n for (var _i = 0, _a = this.parent.getStackedColumns(this.parent.columns); _i < _a.length; _i++) {\n var stackedColumn = _a[_i];\n stackedColumn.width = this.getStackedWidth(stackedColumn, 0);\n }\n };\n Resize.prototype.getStackedWidth = function (column, width) {\n for (var _i = 0, _a = column.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.visible !== false) {\n if (col.columns) {\n this.getStackedWidth(col, width);\n }\n else {\n width += col.width;\n }\n }\n }\n return width;\n };\n Resize.prototype.getTargetColumn = function (e) {\n var cell = closest(e.target, resizeClassList.header);\n cell = cell.querySelector('.e-headercelldiv') || cell.querySelector('.e-stackedheadercelldiv');\n var uid = cell.getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n };\n Resize.prototype.updateCursor = function (action) {\n var headerRows = [].slice.call(this.parent.getHeaderContent().querySelectorAll('th'));\n headerRows.push(this.parent.element);\n for (var _i = 0, headerRows_1 = headerRows; _i < headerRows_1.length; _i++) {\n var row$$1 = headerRows_1[_i];\n row$$1.classList[\"\" + action](resizeClassList.cursor);\n }\n };\n Resize.prototype.refresh = function () {\n this.column = null;\n this.pageX = null;\n this.element = null;\n this.helper = null;\n };\n Resize.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: resizeClassList.helper\n });\n this.parent.element.appendChild(this.helper);\n this.setHelperHeight();\n };\n Resize.prototype.setHelperHeight = function () {\n var isFrozen = this.parent.isFrozenGrid();\n var height = isFrozen ? this.parent.getContent().querySelector('.' + content).offsetHeight\n : this.parent.getContent().offsetHeight - this.getScrollBarWidth();\n var rect = closest(this.element, resizeClassList.header);\n var tr = [].slice.call(this.parent.getHeaderContent().querySelectorAll('tr'));\n var right = this.parent.getFrozenRightColumnsCount();\n if (isFrozen) {\n if (parentsUntil(rect, movableHeader)) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.' + movableHeader).querySelectorAll('tr'));\n }\n else if (right && parentsUntil(rect, 'e-frozen-right-header')) {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelectorAll('tr'));\n }\n else {\n tr = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelectorAll('tr'));\n }\n }\n for (var i = tr.indexOf(rect.parentElement); i < tr.length && i > -1; i++) {\n height += tr[parseInt(i.toString(), 10)].offsetHeight;\n }\n var pos = this.calcPos(rect);\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n pos.left += (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1);\n }\n else {\n pos.left += (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2);\n }\n this.helper.style.cssText = 'height: ' + height + 'px; top: ' + pos.top + 'px; left:' + Math.floor(pos.left) + 'px;';\n if (this.parent.enableVirtualization) {\n this.helper.classList.add('e-virtual-rhandler');\n }\n };\n Resize.prototype.getScrollBarWidth = function (height) {\n var ele = this.parent.getContent().firstChild;\n return (ele.scrollHeight > ele.clientHeight && height) ||\n ele.scrollWidth > ele.clientWidth ? getScrollBarWidth() : 0;\n };\n Resize.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains(resizeClassList.root) || cls.contains(resizeClassList.icon)) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n detach(this.helper);\n this.refresh();\n }\n };\n Resize.prototype.updateHelper = function () {\n var rect = closest(this.element, resizeClassList.header);\n var left;\n if (parentsUntil(rect, 'e-frozen-right-header')) {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? rect.offsetWidth - 2 : 0 - 1));\n }\n else {\n left = Math.floor(this.calcPos(rect).left + (this.parent.enableRtl ? 0 - 1 : rect.offsetWidth - 2));\n }\n var borderWidth = 2; // to maintain the helper inside of grid element.\n if (left > this.parentElementWidth) {\n left = this.parentElementWidth - borderWidth;\n }\n if (this.parent.isFrozenGrid()) {\n var table$$1 = closest(rect, '.' + table);\n var fLeft = table$$1.offsetLeft;\n if (left < fLeft) {\n left = fLeft;\n }\n }\n this.helper.style.left = left + 'px';\n };\n Resize.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = parentsUntil(elem, 'e-grid') || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n };\n Resize.prototype.doubleTapEvent = function (e) {\n var _this = this;\n if (this.getUserAgent() && this.isDblClk) {\n if (!this.tapped) {\n this.tapped = setTimeout(function () {\n _this.tapped = null;\n }, 300);\n }\n else {\n clearTimeout(this.tapped);\n this.callAutoFit(e);\n this.tapped = null;\n }\n }\n };\n Resize.prototype.getUserAgent = function () {\n var userAgent = Browser.userAgent.toLowerCase();\n return /iphone|ipod|ipad/.test(userAgent);\n };\n Resize.prototype.timeoutHandler = function () {\n this.tapped = null;\n };\n return Resize;\n}());\n\n/**\n *\n * The `Reorder` module is used for reordering columns.\n */\nvar Reorder = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid reorder module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function Reorder(parent) {\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(headerDrop, this.headerDrop, this);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(reorderComplete, this.onActionComplete, this);\n this.parent.on(columnDrag, this.drag, this);\n this.parent.on(columnDragStart, this.dragStart, this);\n this.parent.on(columnDragStop, this.dragStop, this);\n this.parent.on(headerDrop, this.headerDrop, this);\n this.parent.on(headerRefreshed, this.createReorderElement, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(destroy, this.destroy, this);\n }\n Reorder.prototype.chkDropPosition = function (srcElem, destElem) {\n var col = this.parent.getColumnByUid(destElem.firstElementChild.getAttribute('e-mappinguid'));\n var bool = col ? !col.lockColumn : true;\n return ((srcElem.parentElement.isEqualNode(destElem.parentElement) || this.parent.enableColumnVirtualization)\n || (this.parent.isFrozenGrid()\n && Array.prototype.indexOf.call(closest(srcElem, 'thead').children, srcElem.parentElement)\n === Array.prototype.indexOf.call(closest(destElem, 'thead').children, destElem.parentElement)))\n && this.targetParentContainerIndex(srcElem, destElem) > -1 && bool;\n };\n Reorder.prototype.chkDropAllCols = function (srcElem, destElem) {\n var isFound;\n var headers = this.getHeaderCells();\n var header;\n while (!isFound && headers.length > 0) {\n header = headers.pop();\n isFound = srcElem !== header && this.targetParentContainerIndex(srcElem, destElem) > -1;\n }\n return isFound;\n };\n Reorder.prototype.findColParent = function (col, cols, parent) {\n // eslint-disable-next-line no-self-assign\n parent = parent;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (col === cols[parseInt(i.toString(), 10)]) {\n return true;\n }\n else if (cols[parseInt(i.toString(), 10)].columns) {\n var cnt = parent.length;\n parent.push(cols[parseInt(i.toString(), 10)]);\n if (!this.findColParent(col, cols[parseInt(i.toString(), 10)].columns, parent)) {\n parent.splice(cnt, parent.length - cnt);\n }\n else {\n return true;\n }\n }\n }\n return false;\n };\n Reorder.prototype.getColumnsModel = function (cols, isNotStackedHeader) {\n var columnModel = [];\n var subCols = [];\n if (!this.parent.getFrozenColumns() && this.parent.isFrozenGrid()) {\n return this.parent.getColumns();\n }\n else {\n for (var i = 0, len = cols.length; i < len; i++) {\n if (cols[parseInt(i.toString(), 10)].visible) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n else if (isNotStackedHeader) {\n columnModel.push(cols[parseInt(i.toString(), 10)]);\n }\n if (cols[parseInt(i.toString(), 10)].columns) {\n subCols = subCols.concat(cols[parseInt(i.toString(), 10)].columns);\n }\n }\n if (subCols.length) {\n columnModel = columnModel.concat(this.getColumnsModel(subCols));\n }\n }\n return columnModel;\n };\n Reorder.prototype.headerDrop = function (e) {\n var gObj = this.parent;\n var dropElement = this.element.querySelector('.e-headercelldiv') || this.element.querySelector('.e-stackedheadercelldiv');\n var uId = dropElement.getAttribute('e-mappinguid');\n var column = gObj.getColumnByUid(uId);\n if (!closest(e.target, 'th') || (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column });\n return;\n }\n var destElem = closest(e.target, '.e-headercell');\n var destElemDiv = destElem.querySelector('.e-headercelldiv') || destElem.querySelector('.e-stackedheadercelldiv');\n var destElemUid = destElemDiv.getAttribute('e-mappinguid');\n if (!isNullOrUndefined(destElemUid)) {\n var destColumn = gObj.getColumnByUid(destElemUid);\n if (isNullOrUndefined(destColumn) || !destColumn.allowReordering || destColumn.lockColumn) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: column, destColumn: destColumn });\n return;\n }\n }\n if (destElem && !(!this.chkDropPosition(this.element, destElem) || !this.chkDropAllCols(this.element, destElem))) {\n if (this.parent.enableColumnVirtualization) {\n var columns = this.parent.columns;\n var sourceUid_1 = this.element.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n var col = this.parent.columns.filter(function (col) { return col.uid === sourceUid_1; });\n var colMatchIndex_1 = null;\n var column_1 = col[0];\n var destUid_1 = destElem.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n columns.some(function (col, index) {\n if (col.uid === destUid_1) {\n colMatchIndex_1 = index;\n return col.uid === destUid_1;\n }\n return false;\n });\n if (!isNullOrUndefined(colMatchIndex_1)) {\n this.moveColumns(colMatchIndex_1, column_1);\n }\n }\n else {\n var newIndex = this.targetParentContainerIndex(this.element, destElem);\n var uid = this.element.firstElementChild.getAttribute('e-mappinguid');\n this.destElement = destElem;\n this.parent.notify(setReorderDestinationElement, { ele: destElem });\n if (uid) {\n this.moveColumns(newIndex, this.parent.getColumnByUid(uid));\n }\n else {\n var headers = this.getHeaderCells();\n var oldIdx = getElementIndex(this.element, headers);\n var columns = this.getColumnsModel(this.parent.columns);\n this.moveColumns(newIndex, columns[parseInt(oldIdx.toString(), 10)]);\n }\n }\n }\n };\n Reorder.prototype.isActionPrevent = function (gObj) {\n return isActionPrevent(gObj);\n };\n Reorder.prototype.moveColumns = function (destIndex, column, reorderByColumn, preventRefresh) {\n var gObj = this.parent;\n if (this.isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.moveColumns, arg1: destIndex, arg2: column });\n return;\n }\n var isFrozen = !gObj.getFrozenColumns() && gObj.isFrozenGrid();\n var parent = this.getColParent(column, this.parent.columns);\n var cols = parent ? parent.columns : isFrozen ? this.parent.getColumns() : this.parent.columns;\n var srcIdx = inArray(column, cols);\n if (((this.parent.isFrozenGrid() && parent) || this.parent.lockcolPositionCount) && !reorderByColumn &&\n !this.parent.enableColumnVirtualization) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === column.field) {\n srcIdx = i;\n break;\n }\n }\n var col = this.parent.getColumnByUid(this.destElement.firstElementChild.getAttribute('e-mappinguid'));\n if (col) {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].field === col.field) {\n destIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].headerText === this.destElement.innerText.trim()) {\n destIndex = i;\n }\n }\n }\n }\n if (!gObj.allowReordering || srcIdx === destIndex || srcIdx === -1 || destIndex === -1) {\n return;\n }\n cols.splice(destIndex, 0, cols.splice(srcIdx, 1)[0]);\n var args = { column: column, destIndex: destIndex, columns: cols, parent: parent, cancel: false };\n gObj.notify(refreshFrozenColumns, args);\n if (args.cancel) {\n return;\n }\n gObj.getColumns(true);\n gObj.notify(columnPositionChanged, { fromIndex: destIndex, toIndex: srcIdx });\n if (preventRefresh !== false) {\n gObj.notify(modelChanged, {\n type: actionBegin, requestType: 'reorder', fromIndex: destIndex, toIndex: srcIdx, toColumnUid: column.uid\n });\n }\n };\n Reorder.prototype.targetParentContainerIndex = function (srcElem, destElem) {\n var cols = !this.parent.getFrozenColumns() && this.parent.isFrozenGrid() ? this.parent.getColumns() :\n this.parent.columns;\n var headers = this.getHeaderCells();\n var stackedHdrColumn = this.parent.getStackedColumns(cols);\n var stackedCols = [];\n if (stackedHdrColumn.length) {\n stackedCols = this.getAllStackedheaderParentColumns(headers);\n }\n var flatColumns = stackedHdrColumn.length && stackedCols.length ?\n this.getColumnsModel(stackedCols) : this.getColumnsModel(cols, true);\n var parent = this.getColParent(flatColumns[getElementIndex(srcElem, headers)], cols);\n cols = parent ? parent.columns : cols;\n return inArray(flatColumns[getElementIndex(destElem, headers)], cols);\n };\n Reorder.prototype.getAllStackedheaderParentColumns = function (headers) {\n var stackedCols = [];\n for (var i = 0; i < headers.length; i++) {\n if (headers[i].classList.contains('e-hide')) {\n headers.splice(i, 1);\n i--;\n }\n else if (headers[i].closest('thead').firstChild === headers[i].parentElement) {\n stackedCols.push(this.parent.getColumnByUid(headers[i].firstElementChild.getAttribute('e-mappinguid')));\n }\n }\n return stackedCols;\n };\n Reorder.prototype.getHeaderCells = function () {\n var frozenColumns = this.parent.getFrozenColumns();\n if (frozenColumns || this.parent.isFrozenGrid() || this.parent.lockcolPositionCount) {\n var fTh = void 0;\n var mTh = void 0;\n var fHeaders = [];\n var fRows = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-columnheader'));\n if (frozenColumns || this.parent.isFrozenGrid()) {\n var mRows = [].slice.call(this.parent.getHeaderContent()\n .querySelector('.' + movableHeader).getElementsByClassName('e-columnheader'));\n for (var i = 0; i < fRows.length; i++) {\n fTh = [].slice.call(fRows[parseInt(i.toString(), 10)].getElementsByClassName('e-headercell'));\n mTh = [].slice.call(mRows[parseInt(i.toString(), 10)].getElementsByClassName('e-headercell'));\n var isAvail = void 0;\n for (var k = 0; k < fTh.length; k++) {\n for (var j = 0; j < mTh.length; j++) {\n if (mTh[parseInt(j.toString(), 10)].innerText === fTh[parseInt(k.toString(), 10)].innerText && parseInt(mTh[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10) ===\n parseInt(fTh[parseInt(k.toString(), 10)].getAttribute('data-colindex'), 10)) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([fTh[parseInt(k.toString(), 10)]]);\n }\n }\n for (var j = 0; j < mTh.length; j++) {\n fHeaders.push(mTh[parseInt(j.toString(), 10)]);\n }\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n var frRows = [].slice.call(this.parent.getHeaderContent().querySelector('.e-frozen-right-header')\n .getElementsByClassName('e-columnheader'));\n var frTh = [].slice.call(frRows[0].getElementsByClassName('e-headercell'));\n for (var i = 0; i < frTh.length; i++) {\n fHeaders.push(frTh[parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n for (var i = 0; i < fRows.length; i++) {\n mTh = [].slice.call(fRows[parseInt(i.toString(), 10)].getElementsByClassName('e-headercell'));\n for (var k = 0; k < mTh.length; k++) {\n var isAvail = void 0;\n for (var j = k + 1; j < mTh.length; j++) {\n if (mTh[parseInt(j.toString(), 10)].innerText === mTh[parseInt(k.toString(), 10)].innerText && parseInt(mTh[parseInt(j.toString(), 10)].getAttribute('data-colindex'), 10) ===\n parseInt(mTh[parseInt(k.toString(), 10)].getAttribute('data-colindex'), 10)) {\n isAvail = true;\n break;\n }\n }\n if (!isAvail) {\n fHeaders = fHeaders.concat([mTh[parseInt(k.toString(), 10)]]);\n }\n }\n }\n }\n return fHeaders;\n }\n else {\n return [].slice.call(this.parent.element.getElementsByClassName('e-headercell'));\n }\n };\n Reorder.prototype.getColParent = function (column, columns) {\n var parents$$1 = [];\n this.findColParent(column, columns, parents$$1);\n return parents$$1[parents$$1.length - 1];\n };\n Reorder.prototype.reorderSingleColumn = function (fromFName, toFName) {\n var fColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === fromFName; })[0]\n : this.parent.getColumnByField(fromFName);\n var toColumn = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (col) { return col.field === toFName; })[0]\n : this.parent.getColumnByField(toFName);\n if ((!isNullOrUndefined(fColumn) && (!fColumn.allowReordering || fColumn.lockColumn)) ||\n (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || fColumn.lockColumn))) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), column: fColumn, destColumn: toColumn });\n return;\n }\n var column = toColumn;\n var parent = this.getColParent(column, this.parent.columns);\n var columns = parent ? parent.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, fColumn, true);\n }\n };\n Reorder.prototype.reorderMultipleColumns = function (fromFNames, toFName) {\n var toIndex = this.parent.getColumnIndexByField(toFName);\n var toColumn = this.parent.getColumnByField(toFName);\n if (toIndex < 0 || (!isNullOrUndefined(toColumn) && (!toColumn.allowReordering || toColumn.lockColumn))) {\n return;\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]);\n if (!isNullOrUndefined(column) && (!column.allowReordering || column.lockColumn)) {\n return;\n }\n }\n for (var i = 0; i < fromFNames.length; i++) {\n var column = this.parent.getColumnByIndex(toIndex);\n var parent_1 = this.getColParent(column, this.parent.columns);\n var columns = parent_1 ? parent_1.columns : this.parent.columns;\n var destIndex = inArray(column, columns);\n if (destIndex > -1) {\n this.moveColumns(destIndex, this.parent.getColumnByField(fromFNames[parseInt(i.toString(), 10)]), true, true);\n }\n if (this.parent.getColumnIndexByField(fromFNames[i + 1]) >= destIndex) {\n toIndex++; //R to L\n }\n }\n };\n Reorder.prototype.moveTargetColumn = function (column, toIndex) {\n if (toIndex > -1) {\n this.moveColumns(toIndex, column, true);\n }\n };\n Reorder.prototype.reorderSingleColumnByTarget = function (fieldName, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByField(fieldName), toIndex);\n };\n Reorder.prototype.reorderMultipleColumnByTarget = function (fieldName, toIndex) {\n for (var i = 0; i < fieldName.length; i++) {\n this.reorderSingleColumnByTarget(fieldName[parseInt(i.toString(), 10)], toIndex);\n }\n };\n /**\n * Changes the position of the Grid columns by field names.\n *\n * @param {string | string[]} fromFName - Defines the origin field names.\n * @param {string} toFName - Defines the destination field name.\n * @returns {void}\n */\n Reorder.prototype.reorderColumns = function (fromFName, toFName) {\n if (typeof fromFName === 'string') {\n this.reorderSingleColumn(fromFName, toFName);\n this.fromCol = fromFName;\n }\n else {\n this.reorderMultipleColumns(fromFName, toFName);\n this.fromCol = fromFName[0];\n }\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {number} fromIndex - Defines the origin field index.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByIndex = function (fromIndex, toIndex) {\n this.moveTargetColumn(this.parent.getColumnByIndex(fromIndex), toIndex);\n };\n /**\n * Changes the position of the Grid columns by field index.\n *\n * @param {string | string[]} fieldName - Defines the field name.\n * @param {number} toIndex - Defines the destination field index.\n * @returns {void}\n */\n Reorder.prototype.reorderColumnByTargetIndex = function (fieldName, toIndex) {\n if (typeof fieldName === 'string') {\n this.reorderSingleColumnByTarget(fieldName, toIndex);\n }\n else {\n this.reorderMultipleColumnByTarget(fieldName, toIndex);\n }\n };\n Reorder.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.createReorderElement();\n }\n };\n Reorder.prototype.createReorderElement = function (e) {\n if (e && e.args.isXaxis) {\n this.setDisplay('none');\n }\n var header = this.parent.element.querySelector('.' + headerContent);\n this.upArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderuparrow e-reorderuparrow', attrs: { style: 'display:none' } }));\n this.downArrow = header.appendChild(this.parent\n .createElement('div', { className: 'e-icons e-icon-reorderdownarrow e-reorderdownarrow', attrs: { style: 'display:none' } }));\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specified the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.onActionComplete = function (e) {\n this.parent.trigger(actionComplete, extend(e, { type: actionComplete }));\n var target = this.fromCol && this.parent.getColumnHeaderByField(this.fromCol);\n if (target) {\n this.parent.focusModule.onClick({ target: target }, true);\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Reorder.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + gridHeader) &&\n !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n if (this.upArrow.parentNode) {\n remove(this.upArrow);\n }\n if (this.downArrow.parentNode) {\n remove(this.downArrow);\n }\n this.parent.off(headerDrop, this.headerDrop);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(reorderComplete, this.onActionComplete);\n this.parent.off(columnDrag, this.drag);\n this.parent.off(columnDragStart, this.dragStart);\n this.parent.off(columnDragStop, this.dragStop);\n this.parent.off(headerRefreshed, this.createReorderElement);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(destroy, this.destroy);\n //call ejdrag and drop destroy\n };\n Reorder.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlLeftArrow':\n case 'ctrlRightArrow':\n // eslint-disable-next-line no-case-declarations\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n var visibleCols = gObj.getVisibleColumns();\n var index = visibleCols.indexOf(column);\n var toCol = e.action === 'ctrlLeftArrow' ? visibleCols[index - 1] : visibleCols[index + 1];\n if (toCol && toCol.field && column.field) {\n this.reorderColumns(column.field, toCol.field);\n }\n }\n break;\n }\n };\n Reorder.prototype.drag = function (e) {\n var gObj = this.parent;\n var target = e.target;\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var closest$$1 = closest(target, '.e-headercell:not(.e-stackedHeaderCell)');\n var cloneElement = gObj.element.querySelector('.e-cloneproperties');\n var content$$1 = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n var isLeft = this.x > getPosition(e.event).x + content$$1.scrollLeft;\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n this.setDisplay('none');\n this.stopTimer();\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n this.updateScrollPostion(e.event);\n if (closest$$1 && !closest$$1.isEqualNode(this.element)) {\n target = closest$$1;\n //consider stacked, detail header cell\n if (!(!this.chkDropPosition(this.element, target) || !this.chkDropAllCols(this.element, target))) {\n this.updateArrowPosition(target, isLeft);\n classList(target, ['e-allowDrop', 'e-reorderindicate'], []);\n }\n else if (!(gObj.allowGrouping && parentsUntil(e.target, 'e-groupdroparea'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n gObj.trigger(columnDrag, { target: target, draggableType: 'headercell', column: e.column });\n };\n Reorder.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var x = getPosition(e).x;\n var cliRect = this.parent.element.getBoundingClientRect();\n var cliRectBaseRight = cliRect.right;\n if (this.parent.isFrozenGrid()) {\n this.updateFrozenScrollPosition(x, cliRect);\n }\n else {\n var cliRectBaseLeft = cliRect.left;\n var scrollElem_1 = this.parent.getContent().firstElementChild;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem_1, false); }, 50);\n }\n }\n };\n Reorder.prototype.updateFrozenScrollPosition = function (x, cliRect) {\n var _this = this;\n var scrollElem = this.parent.getContent().querySelector('.' + movableContent);\n var mhdrCliRect = this.parent.element.querySelector('.' + movableHeader).getBoundingClientRect();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var cliRectBaseRight = right ? mhdrCliRect.right : cliRect.right;\n var cliRectBaseLeft = left ? mhdrCliRect.left : cliRect.left;\n if (x > cliRectBaseLeft && x < cliRectBaseLeft + 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, true); }, 50);\n }\n else if (x < cliRectBaseRight && x > cliRectBaseRight - 35) {\n this.timer = window.setInterval(function () { _this.setScrollLeft(scrollElem, false); }, 50);\n }\n };\n Reorder.prototype.setScrollLeft = function (scrollElem, isLeft) {\n var scrollLeft = scrollElem.scrollLeft;\n scrollElem.scrollLeft = scrollElem.scrollLeft + (isLeft ? -5 : 5);\n if (scrollLeft !== scrollElem.scrollLeft) {\n this.setDisplay('none');\n }\n };\n Reorder.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n Reorder.prototype.updateArrowPosition = function (target, isLeft) {\n var cliRect = target.getBoundingClientRect();\n var cliRectBase = this.parent.element.getBoundingClientRect();\n if ((isLeft && cliRect.left < cliRectBase.left) || (!isLeft && cliRect.right > cliRectBase.right)) {\n return;\n }\n if (this.parent.isFrozenGrid() && target.classList.contains('e-headercell')) {\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var dropEle = this.element.querySelector('.e-headercelldiv');\n var dropCol = dropEle ? this.parent.getColumnByUid(dropEle.getAttribute('data-uid')) : null;\n var col = this.parent.getColumnByUid(target.firstElementChild.getAttribute('e-mappinguid'));\n var fhdrWidth = Math.round(this.parent.getFrozenVirtualHeader().getBoundingClientRect().right);\n var mhdrRight = Math.round(this.parent.getMovableVirtualHeader().getBoundingClientRect().right);\n if (col) {\n if (left && !right && this.parent.getNormalizedColumnIndex(col.uid) >= left\n && ((isLeft && Math.round(cliRect.left) < fhdrWidth) || (!isLeft && mhdrRight < cliRect.right))) {\n return;\n }\n if (!left && right && dropCol && dropCol.getFreezeTableName() !== col.getFreezeTableName()\n && (!isLeft && Math.round(cliRect.right) < fhdrWidth)) {\n return;\n }\n }\n }\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n this.upArrow.style.top = isSticky ? cliRect.top + cliRect.height + 'px' : cliRect.top + cliRect.height - cliRectBase.top + 'px';\n this.downArrow.style.top = isSticky ? cliRect.top - 7 + 'px' : cliRect.top - cliRectBase.top - 7 + 'px';\n this.upArrow.style.left = this.downArrow.style.left = isSticky ? (isLeft ? cliRect.left : cliRect.right) - 4 + 'px' :\n (isLeft ? cliRect.left : cliRect.right) - cliRectBase.left - 4 + 'px';\n this.setDisplay('');\n };\n Reorder.prototype.dragStart = function (e) {\n var gObj = this.parent;\n var target = e.target;\n this.element = target.classList.contains('e-headercell') ? target :\n parentsUntil(target, 'e-headercell');\n if (!e.column.allowReordering || e.column.lockColumn) {\n return;\n }\n var content$$1 = gObj.isFrozenGrid() ? gObj.getMovableVirtualContent() : gObj.getContent().firstElementChild;\n this.x = getPosition(e.event).x + content$$1.scrollLeft;\n gObj.trigger(columnDragStart, {\n target: target, draggableType: 'headercell', column: e.column\n });\n };\n Reorder.prototype.dragStop = function (e) {\n var gObj = this.parent;\n this.setDisplay('none');\n this.stopTimer();\n if (!e.cancel) {\n gObj.trigger(columnDrop, { target: e.target, draggableType: 'headercell', column: e.column });\n }\n removeClass([].slice.call(gObj.getHeaderTable().getElementsByClassName('e-reorderindicate')), ['e-reorderindicate']);\n };\n Reorder.prototype.setDisplay = function (display) {\n this.upArrow.style.display = display;\n this.downArrow.style.display = display;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} return the module name\n * @private\n */\n Reorder.prototype.getModuleName = function () {\n return 'reorder';\n };\n return Reorder;\n}());\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * Reorder module is used to handle row reordering.\n *\n * @hidden\n */\nvar RowDD = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid print module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function RowDD(parent) {\n var _this = this;\n this.selectedRows = [];\n this.isOverflowBorder = true;\n this.selectedRowColls = [];\n this.isRefresh = true;\n this.isReplaceDragEle = true;\n this.istargetGrid = false;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = _this.draggable.currentStateTarget;\n var visualElement = _this.parent.createElement('div', {\n className: 'e-cloneproperties e-draganddrop e-grid e-dragclone',\n styles: 'height:\"auto\", z-index:2, width:' + gObj.element.offsetWidth\n });\n var table$$1 = _this.parent.createElement('table', { styles: 'width:' + gObj.element.offsetWidth, attrs: { role: 'grid' } });\n var tbody$$1 = _this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n if (document.getElementsByClassName('e-griddragarea').length ||\n (gObj.rowDropSettings.targetID && ((!target.classList.contains('e-selectionbackground')\n && gObj.selectionSettings.type !== 'Single') || !parentsUntil(target, 'e-rowcell'))) ||\n (!gObj.rowDropSettings.targetID && !parentsUntil(target, 'e-rowdragdrop'))) {\n return false;\n }\n if (gObj.rowDropSettings.targetID &&\n gObj.selectionSettings.mode === 'Row' && gObj.selectionSettings.type === 'Single') {\n gObj.selectRow(parseInt(_this.draggable.currentStateTarget.parentElement.getAttribute(dataRowIndex), 10));\n }\n _this.startedRow = closest(target, 'tr').cloneNode(true);\n var frzCols = _this.parent.isFrozenGrid();\n if (frzCols) {\n var rowIndex = parseInt(closest(target, 'tr').getAttribute(dataRowIndex), 10);\n _this.startedRow.innerHTML = '';\n _this.startedRow.innerHTML += gObj.getRowByIndex(rowIndex).innerHTML;\n _this.startedRow.innerHTML += gObj.getMovableRowByIndex(rowIndex).innerHTML;\n if (gObj.getFrozenMode() === leftRight) {\n _this.startedRow.innerHTML += gObj.getFrozenRightRowByIndex(rowIndex).innerHTML;\n }\n }\n _this.processArgs(target);\n var args = {\n selectedRow: _this.rows, dragelement: target,\n cloneElement: visualElement, cancel: false, data: _this.rowData\n };\n var selectedRows = gObj.getSelectedRows();\n gObj.trigger(rowDragStartHelper, args);\n var cancel = 'cancel';\n if (args[\"\" + cancel]) {\n return false;\n }\n removeElement(_this.startedRow, '.e-indentcell');\n removeElement(_this.startedRow, '.e-detailrowcollapse');\n removeElement(_this.startedRow, '.e-detailrowexpand');\n _this.removeCell(_this.startedRow, gridChkBox);\n var exp = new RegExp('e-active', 'g'); //high contrast issue\n _this.startedRow.innerHTML = _this.startedRow.innerHTML.replace(exp, '');\n tbody$$1.appendChild(_this.startedRow);\n if (gObj.getSelectedRowIndexes().length > 1 && _this.startedRow.hasAttribute('aria-selected')) {\n var index = gObj.getFrozenMode() === leftRight ? 3 : 2;\n var dropCountEle = _this.parent.createElement('span', {\n className: 'e-dropitemscount', innerHTML: frzCols ? '' + selectedRows.length / index : '' + selectedRows.length\n });\n visualElement.appendChild(dropCountEle);\n }\n var ele = closest(target, 'tr').querySelector('.e-icon-rowdragicon');\n if (ele) {\n ele.classList.add('e-dragstartrow');\n }\n table$$1.appendChild(tbody$$1);\n visualElement.appendChild(table$$1);\n gObj.element.appendChild(visualElement);\n return visualElement;\n };\n this.dragStart = function (e) {\n var gObj = _this.parent;\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n parentGrid.appendChild(e.dragElement);\n gObj.element.appendChild(gObj.createElement('div', { className: 'e-drag-ref' }));\n }\n document.body.classList.add('e-prevent-select');\n if (document.getElementsByClassName('e-griddragarea').length) {\n return;\n }\n var target = e.target;\n var spanCssEle = _this.parent.element.querySelector('.e-dropitemscount');\n if (_this.parent.getSelectedRecords().length > 1 && spanCssEle) {\n spanCssEle.style.left = _this.parent.element.querySelector('.e-cloneproperties table')\n .offsetWidth - 5 + 'px';\n }\n _this.processArgs(target);\n gObj.trigger(rowDragStart, {\n rows: _this.rows, target: e.target,\n draggableType: 'rows', fromIndex: parseInt(_this.rows[0].getAttribute(dataRowIndex), 10),\n data: (Object.keys(_this.rowData[0]).length > 0) ? _this.rowData : _this.currentViewData()\n });\n _this.dragStartData = _this.rowData;\n var dropElem = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElem && dropElem.ej2_instances &&\n dropElem.ej2_instances[0].getModuleName() === 'grid') {\n dropElem.ej2_instances[0].getContent().classList.add('e-allowRowDrop');\n }\n };\n this.drag = function (e) {\n var gObj = _this.parent;\n _this.isDropGrid = _this.parent;\n _this.istargetGrid = false;\n if (_this.parent.rowDropSettings.targetID) {\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n _this.isDropGrid = dropElement.ej2_instances[0];\n if (parentsUntil(e.target, 'e-grid')) {\n _this.istargetGrid = _this.parent.rowDropSettings.targetID === parentsUntil(e.target, 'e-grid').id;\n }\n }\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n if (gObj.element.classList.contains('e-childgrid')) {\n var parentGrid = _this.getParentGrid(gObj.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var target = _this.getElementFromPosition(cloneElement, e.event);\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur', 'e-movecur', 'e-grabcur']);\n _this.isOverflowBorder = true;\n _this.hoverState = gObj.enableHover;\n var trElement = parentsUntil(target, 'e-grid') ? closest(e.target, 'tr') : null;\n if (!e.target) {\n return;\n }\n _this.processArgs(target);\n var args = {\n rows: _this.rows, target: target, draggableType: 'rows',\n data: _this.rowData, originalEvent: e, cancel: false\n };\n gObj.trigger(rowDrag, args);\n _this.stopTimer();\n if (args.cancel) {\n return;\n }\n gObj.element.classList.add('e-rowdrag');\n _this.dragTarget = trElement && (parentsUntil(target, 'e-grid').id === cloneElement.parentElement.id ||\n parentsUntil(target, 'e-grid').id) ? _this.isDropGrid.element.querySelector('.e-emptyrow') ? 0 :\n parseInt(trElement.getAttribute('data-rowindex'), 10) : parseInt(_this.startedRow.getAttribute('data-rowindex'), 10);\n if (gObj.rowDropSettings.targetID) {\n var dragParentElement = document.querySelector('.e-drag-ref');\n if (!parentsUntil(target, 'e-grid') ||\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id || (dragParentElement\n && parentsUntil(dragParentElement.parentElement, 'e-grid').id === parentsUntil(target, 'e-grid').id)) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-grabcur'], ['e-notallowedcur']);\n }\n }\n else {\n var elem = parentsUntil(target, 'e-grid');\n if (elem && elem.id === cloneElement.parentElement.id) {\n classList(cloneElement, ['e-movecur'], ['e-defaultcur']);\n }\n else {\n classList(cloneElement, ['e-notallowedcur'], ['e-movecur']);\n }\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n if ((!_this.isDropGrid.groupSettings.columns.length || e.target.classList.contains('e-selectionbackground')) &&\n !_this.isDropGrid.element.querySelector('.e-emptyrow')) {\n if (parentsUntil(target, 'e-grid') && parentsUntil(target, 'e-grid').id === _this.isDropGrid.element.id) {\n _this.updateScrollPostion(e.event);\n }\n if (((_this.isOverflowBorder || _this.parent.frozenRows > _this.dragTarget) &&\n (parseInt(_this.startedRow.getAttribute(dataRowIndex), 10) !== _this.dragTarget || _this.istargetGrid))\n || (_this.istargetGrid && trElement && _this.isDropGrid.getRowByIndex(_this.isDropGrid.getCurrentViewRecords().length - 1).\n getAttribute('data-uid') === trElement.getAttribute('data-uid'))) {\n _this.moveDragRows(e, _this.startedRow, trElement);\n }\n else {\n var islastRowIndex = void 0;\n if (_this.parent.enableVirtualization) {\n islastRowIndex = trElement && parseInt(trElement.getAttribute(dataRowIndex), 10) ===\n _this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n var lastRowUid = _this.parent.getRowByIndex(_this.parent.getCurrentViewRecords().length - 1).\n getAttribute('data-uid');\n islastRowIndex = trElement && lastRowUid === trElement.getAttribute('data-uid') && lastRowUid !==\n _this.startedRow.getAttribute('data-uid');\n }\n if (islastRowIndex && !_this.parent.rowDropSettings.targetID) {\n var bottomborder = _this.parent.createElement('div', { className: 'e-lastrow-dragborder' });\n var gridcontentEle = _this.parent.getContent();\n bottomborder.style.width = _this.parent.element.offsetWidth - _this.getScrollWidth() + 'px';\n if (_this.parent.enableVirtualization) {\n bottomborder.style.zIndex = '1';\n }\n if (!gridcontentEle.getElementsByClassName('e-lastrow-dragborder').length) {\n gridcontentEle.classList.add('e-grid-relative');\n gridcontentEle.appendChild(bottomborder);\n bottomborder.style.bottom = _this.getScrollWidth() + 'px';\n }\n }\n _this.removeBorder(trElement);\n }\n }\n if (target && target.classList.contains(content)\n && !_this.isDropGrid.element.querySelector('.e-emptyrow') && _this.istargetGrid) {\n _this.removeBorder(trElement);\n var rowIndex = _this.isDropGrid.getCurrentViewRecords().length - 1;\n var selector = '.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse';\n var rowElement = [];\n rowElement = [].slice.call(_this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(selector));\n if (_this.isDropGrid.isFrozenGrid()) {\n rowElement = _this.borderRowElement(rowIndex, selector);\n }\n if (rowElement.length > 0) {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n }\n };\n this.dragStop = function (e) {\n document.body.classList.remove('e-prevent-select');\n if (isActionPrevent(_this.parent)) {\n _this.parent.notify(preventBatch, {\n instance: _this, handler: _this.processDragStop, arg1: e\n });\n }\n else {\n _this.processDragStop(e);\n }\n };\n this.processDragStop = function (e) {\n var gObj = _this.parent;\n if (_this.parent.isDestroyed) {\n return;\n }\n var targetEle = _this.getElementFromPosition(e.helper, e.event);\n var target = targetEle && !targetEle.classList.contains('e-dlg-overlay') ?\n targetEle : e.target;\n gObj.element.classList.remove('e-rowdrag');\n var dropElement = document.getElementById(gObj.rowDropSettings.targetID);\n if (gObj.rowDropSettings.targetID && dropElement && dropElement.ej2_instances &&\n dropElement.ej2_instances[0].getModuleName() === 'grid') {\n dropElement.ej2_instances[0].getContent().classList.remove('e-allowRowDrop');\n }\n if (parentsUntil(_this.isDropGrid.element, 'e-grid')) {\n _this.stopTimer();\n _this.isDropGrid.enableHover = _this.hoverState;\n _this.isDropGrid.getContent().classList.remove('e-grid-relative');\n _this.removeBorder(targetEle);\n var stRow = _this.isDropGrid.element.querySelector('.e-dragstartrow');\n if (stRow) {\n stRow.classList.remove('e-dragstartrow');\n }\n }\n _this.processArgs(target);\n var args = {\n target: target, draggableType: 'rows',\n cancel: false,\n fromIndex: parseInt(_this.rows[0].getAttribute(dataRowIndex), 10),\n dropIndex: _this.dragTarget, rows: _this.rows,\n data: (Object.keys(_this.dragStartData[0]).length > 0) ? _this.dragStartData : _this.currentViewData()\n };\n gObj.trigger(rowDrop, args, function () {\n if (!(parentsUntil(target, row) || parentsUntil(target, 'e-emptyrow')\n || parentsUntil(target, gridContent)) || args.cancel) {\n _this.dragTarget = null;\n remove(e.helper);\n return;\n }\n _this.isRefresh = false;\n var selectedIndexes = _this.parent.getSelectedRowIndexes();\n if (gObj.isRowDragable()) {\n if (!_this.parent.rowDropSettings.targetID &&\n _this.startedRow.querySelector('td.e-selectionbackground') && selectedIndexes.length > 1 &&\n selectedIndexes.length !== _this.parent.getCurrentViewRecords().length) {\n _this.reorderRows(selectedIndexes, args.dropIndex);\n }\n else {\n _this.reorderRows([parseInt(_this.startedRow.getAttribute(dataRowIndex), 10)], _this.dragTarget);\n }\n _this.dragTarget = null;\n if (!gObj.rowDropSettings.targetID) {\n if (e.helper.classList.contains('e-cloneproperties') && document.querySelector('.' + e.helper.classList[0])) {\n remove(e.helper);\n }\n if (gObj.enableVirtualization) {\n gObj.refresh();\n }\n else {\n _this.rowOrder(args);\n }\n }\n }\n _this.isRefresh = true;\n });\n };\n this.removeCell = function (targetRow, className) {\n return [].slice.call(targetRow.querySelectorAll('td')).filter(function (cell) {\n if (cell.classList.contains(className)) {\n targetRow.deleteCell(cell.cellIndex);\n }\n });\n };\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initializeDrag, this);\n this.parent.on(columnDrop, this.columnDrop, this);\n this.parent.on(rowDragAndDropComplete, this.onActionComplete, this);\n this.onDataBoundFn = this.onDataBound.bind(this);\n this.parent.addEventListener(dataBound, this.onDataBoundFn);\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(destroy, this.destroy, this);\n }\n RowDD.prototype.getParentGrid = function (childGrid) {\n var parentGrid = childGrid;\n var parentGridObtained = false;\n while (!parentGridObtained) {\n if (parentGrid.ej2_instances[0].parentDetails) {\n parentGrid = document.getElementById(parentGrid.ej2_instances[0].parentDetails.parentID);\n }\n if (!parentGrid.classList.contains('e-childgrid')) {\n parentGridObtained = true;\n }\n }\n return parentGrid;\n };\n RowDD.prototype.refreshRow = function (args, tbody$$1, mtbody, frTbody, target, mTarget, frTarget) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isLeftRight = gObj.getFrozenMode() === leftRight;\n var tbodyMovableHeader;\n var tbodyMovableContent;\n var frHdr;\n var frCnt;\n var tbodyContent = gObj.getContentTable().querySelector(tbody);\n var tbodyHeader = gObj.getHeaderTable().querySelector(tbody);\n if (frzCols) {\n tbodyMovableHeader = gObj.getMovableHeaderTbody();\n tbodyMovableContent = gObj.getMovableContentTbody();\n if (isLeftRight) {\n frHdr = gObj.getFrozenRightHeaderTbody();\n frCnt = gObj.getFrozenRightContentTbody();\n }\n }\n var index = gObj.getFrozenMode() === leftRight ? 3 : 2;\n for (var i = 0, len = args.rows.length; i < len; i++) {\n if (frzCols) {\n if (i % index === 0) {\n tbody$$1.insertBefore(args.rows[parseInt(i.toString(), 10)], target);\n }\n else if (i % index === 1) {\n mtbody.insertBefore(args.rows[parseInt(i.toString(), 10)], mTarget);\n }\n else {\n frTbody.insertBefore(args.rows[parseInt(i.toString(), 10)], frTarget);\n }\n }\n else {\n tbody$$1.insertBefore(args.rows[parseInt(i.toString(), 10)], target);\n }\n }\n var tr = [].slice.call(tbody$$1.getElementsByClassName(row));\n var mtr;\n var frTr;\n if (frzCols) {\n mtr = [].slice.call(mtbody.getElementsByClassName(row));\n if (isLeftRight) {\n frTr = [].slice.call(frTbody.getElementsByClassName(row));\n }\n }\n this.refreshData(tr, mtr, frTr);\n if (this.parent.frozenRows) {\n var _loop_1 = function (i, len) {\n if (i < this_1.parent.frozenRows) {\n setRowsInTbody(tbodyHeader, tbodyMovableHeader, frHdr, tr, mtr, frTr, function (tbody$$1, rows) {\n tbody$$1.appendChild(rows[parseInt(i.toString(), 10)]);\n });\n }\n else {\n setRowsInTbody(tbodyContent, tbodyMovableContent, frCnt, tr, mtr, frTr, function (tbody$$1, rows) {\n tbody$$1.appendChild(rows[parseInt(i.toString(), 10)]);\n });\n }\n };\n var this_1 = this;\n for (var i = 0, len = tr.length; i < len; i++) {\n _loop_1(i, len);\n }\n }\n };\n RowDD.prototype.updateFrozenRowreOrder = function (args) {\n var gObj = this.parent;\n var tbodyMovH;\n var tbodyMovC;\n var tbodyFrH;\n var tbodyFrC;\n var frzCols = this.parent.isFrozenGrid();\n var isLeftRight = gObj.getFrozenMode() === leftRight;\n var tbodyC = gObj.getContentTable().querySelector(tbody);\n var tbodyH = gObj.getHeaderTable().querySelector(tbody);\n if (frzCols) {\n tbodyMovH = gObj.getMovableHeaderTbody();\n tbodyMovC = gObj.getMovableContentTbody();\n if (isLeftRight) {\n tbodyFrH = gObj.getFrozenRightHeaderTbody();\n tbodyFrC = gObj.getFrozenRightContentTbody();\n }\n }\n var tr = [].slice.call(tbodyH.getElementsByClassName(row)).concat([].slice.call(tbodyC.getElementsByClassName(row)));\n var mtr;\n var frTr;\n if (frzCols) {\n mtr = [].slice.call(tbodyMovH.getElementsByClassName(row))\n .concat([].slice.call(tbodyMovC.getElementsByClassName(row)));\n if (isLeftRight) {\n frTr = [].slice.call(tbodyFrH.getElementsByClassName(row))\n .concat([].slice.call(tbodyFrC.getElementsByClassName(row)));\n }\n }\n var tbody$$1 = gObj.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var mtbody = gObj.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var frTbody = gObj.createElement(tbody, { attrs: { role: 'rowgroup' } });\n this.parent.clearSelection();\n var targetRows = this.refreshRowTarget(args);\n for (var i = 0, len = tr.length; i < len; i++) {\n tbody$$1.appendChild(tr[parseInt(i.toString(), 10)]);\n if (frzCols) {\n mtbody.appendChild(mtr[parseInt(i.toString(), 10)]);\n if (isLeftRight) {\n frTbody.appendChild(frTr[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.refreshRow(args, tbody$$1, mtbody, frTbody, targetRows.target, targetRows.mTarget, targetRows.frTarget);\n };\n RowDD.prototype.refreshRowTarget = function (args) {\n var gObj = this.parent;\n var mTr;\n var frTr;\n var targetIdx = parseInt(args.target.parentElement.getAttribute(dataRowIndex), 10);\n if (args.fromIndex < args.dropIndex || args.fromIndex === args.dropIndex) {\n targetIdx = targetIdx + 1;\n }\n var tr = gObj.getRowByIndex(targetIdx);\n if (gObj.isFrozenGrid()) {\n mTr = gObj.getMovableRowByIndex(targetIdx);\n if (gObj.getFrozenMode() === leftRight) {\n frTr = gObj.getFrozenRightRowByIndex(targetIdx);\n }\n }\n var rows = {\n target: tr, mTarget: mTr, frTarget: frTr\n };\n return rows;\n };\n RowDD.prototype.updateFrozenColumnreOrder = function (args) {\n var gObj = this.parent;\n var mtbody;\n var frTbody;\n var frzCols = this.parent.isFrozenGrid();\n var tbody$$1 = gObj.getContentTable().querySelector(tbody);\n if (frzCols) {\n mtbody = gObj.getMovableContentTbody();\n if (gObj.getFrozenMode() === leftRight) {\n frTbody = gObj.getFrozenRightContentTbody();\n }\n }\n this.parent.clearSelection();\n var targetRows = this.refreshRowTarget(args);\n this.refreshRow(args, tbody$$1, mtbody, frTbody, targetRows.target, targetRows.mTarget, targetRows.frTarget);\n };\n RowDD.prototype.refreshData = function (tr, mtr, frTr) {\n var rowObj = {};\n var movobj = {};\n var frObj = {};\n var recordobj = {};\n var rowObjects = this.parent.getRowsObject();\n var movbObject = this.parent.getMovableRowsObject();\n var frRightObject = this.parent.getFrozenRightRowsObject();\n var currentViewData = this.parent.getCurrentViewRecords();\n for (var i = 0, len = tr.length; i < len; i++) {\n var index = parseInt(tr[parseInt(i.toString(), 10)].getAttribute(dataRowIndex), 10);\n rowObj[parseInt(i.toString(), 10)] = rowObjects[parseInt(index.toString(), 10)];\n recordobj[parseInt(i.toString(), 10)] = currentViewData[parseInt(index.toString(), 10)];\n if (this.parent.isFrozenGrid()) {\n movobj[parseInt(i.toString(), 10)] = movbObject[parseInt(index.toString(), 10)];\n if (frTr) {\n frObj[parseInt(i.toString(), 10)] = frRightObject[parseInt(index.toString(), 10)];\n }\n }\n }\n var rows = this.parent.getRows();\n var movbRows;\n var frRightRows;\n if (this.parent.isFrozenGrid()) {\n movbRows = this.parent.getMovableRows();\n if (frTr) {\n frRightRows = this.parent.getFrozenRightRows();\n }\n }\n for (var i = 0, len = tr.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)] = tr[parseInt(i.toString(), 10)];\n rowObjects[parseInt(i.toString(), 10)] = rowObj[parseInt(i.toString(), 10)];\n currentViewData[parseInt(i.toString(), 10)] = recordobj[parseInt(i.toString(), 10)];\n if (this.parent.isFrozenGrid()) {\n movbRows[parseInt(i.toString(), 10)] = mtr[parseInt(i.toString(), 10)];\n movbObject[parseInt(i.toString(), 10)] = movobj[parseInt(i.toString(), 10)];\n if (frTr) {\n frRightRows[parseInt(i.toString(), 10)] = frTr[parseInt(i.toString(), 10)];\n frRightObject[parseInt(i.toString(), 10)] = frObj[parseInt(i.toString(), 10)];\n }\n }\n }\n resetRowIndex(this.parent, rowObjects, tr);\n if (this.parent.isFrozenGrid()) {\n resetRowIndex(this.parent, movbObject, mtr);\n if (frTr) {\n resetRowIndex(this.parent, frRightObject, frTr);\n }\n }\n };\n RowDD.prototype.rowOrder = function (args) {\n if (args.dropIndex === args.fromIndex || isNaN(args.dropIndex)) {\n return;\n }\n if (this.parent.isDetail()) {\n this.parent.detailCollapseAll();\n var rows = [].slice.call(this.parent.getContentTable().querySelector(tbody).children);\n var rowObjects = this.parent.getRowsObject();\n rows.filter(function (row$$1) {\n if (row$$1.classList.contains('e-detailrow')) {\n row$$1.remove();\n }\n });\n for (var i = 0, len = rowObjects.length; i < len; i++) {\n if (!rowObjects[parseInt(i.toString(), 10)]) {\n break;\n }\n if (rowObjects[parseInt(i.toString(), 10)].isDetailRow) {\n this.parent.getRowsObject().splice(i, 1);\n i--;\n }\n }\n }\n if (args.target.classList.contains('e-rowcelldrag') || args.target.classList.contains('e-dtdiagonalright')\n || args.target.classList.contains('e-dtdiagonaldown')) {\n args.target = args.target.parentElement;\n }\n if (!args.target.classList.contains('e-rowcell') && parentsUntil(args.target, 'e-rowcell')) {\n args.target = parentsUntil(args.target, 'e-rowcell');\n }\n if (this.parent.frozenRows) {\n this.updateFrozenRowreOrder(args);\n }\n else {\n this.updateFrozenColumnreOrder(args);\n }\n if (this.selectedRowColls.length > 0) {\n this.parent.selectRows(this.selectedRowColls);\n var indexes = [];\n if (this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length) {\n for (var i = 0, len = args.rows.length; i < len; i++) {\n indexes.push(parseInt(args.rows[parseInt(i.toString(), 10)].getAttribute(dataRowIndex), 10));\n }\n this.selectedRowColls = indexes;\n }\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.currentViewData = function () {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var currentVdata = [];\n var fromIdx = parseInt(this.startedRow.getAttribute(dataRowIndex), 10);\n for (var i = 0, n = selectedIndexes.length; i < n; i++) {\n var currentV = 'currentViewData';\n currentVdata[parseInt(i.toString(), 10)] = this.parent[\"\" + currentV][selectedIndexes[parseInt(i.toString(), 10)]];\n }\n if (!this.parent.rowDropSettings.targetID && selectedIndexes.length === 0) {\n currentVdata[0] = this.parent.currentViewData[parseInt(fromIdx.toString(), 10)];\n }\n return currentVdata;\n };\n RowDD.prototype.saveChange = function (changeRecords, query) {\n var _this = this;\n this.parent.getDataModule().saveChanges(changeRecords, this.parent.getPrimaryKeyFieldNames()[0], {}, query)\n .then(function () {\n _this.parent.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }).catch(function (e) {\n var error = 'error';\n var message = 'message';\n if (!isNullOrUndefined(e[\"\" + error]) && !isNullOrUndefined(e[\"\" + error][\"\" + message])) {\n e[\"\" + error] = e[\"\" + error][\"\" + message];\n }\n _this.parent.trigger(actionFailure, e);\n });\n };\n RowDD.prototype.reorderRows = function (fromIndexes, toIndex) {\n var selectedIndexes = this.parent.getSelectedRowIndexes();\n var selectedRecords = [];\n var draggedRecords = [];\n var currentViewData = this.parent.renderModule.data.dataManager.dataSource.json;\n var skip = this.parent.allowPaging ?\n (this.parent.pageSettings.currentPage * this.parent.pageSettings.pageSize) - this.parent.pageSettings.pageSize : 0;\n var dropIdx = toIndex + skip;\n var actualIdx = fromIndexes[0] + skip;\n for (var i = 0, len = fromIndexes.length; i < len; i++) {\n draggedRecords[parseInt(i.toString(), 10)] = currentViewData[fromIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = selectedIndexes.length; i < len; i++) {\n selectedRecords[parseInt(i.toString(), 10)] = currentViewData[selectedIndexes[parseInt(i.toString(), 10)] + skip];\n }\n for (var i = 0, len = draggedRecords.length; i < len; i++) {\n if (i !== 0) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) ===\n JSON.stringify(draggedRecords[parseInt(i.toString(), 10)])) {\n actualIdx = j;\n break;\n }\n }\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) === JSON\n .stringify(draggedRecords[i - 1])) {\n if (actualIdx > j) {\n dropIdx = j + 1;\n }\n break;\n }\n }\n }\n this.reorderRow(actualIdx - skip, dropIdx - skip);\n }\n if (this.isRefresh) {\n this.parent.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }\n for (var i = 0, len = selectedRecords.length; i < len; i++) {\n for (var j = 0, len1 = currentViewData.length; j < len1; j++) {\n if (JSON.stringify(this.parent.renderModule.data.dataManager.dataSource.json[parseInt(j.toString(), 10)]) === JSON\n .stringify(selectedRecords[parseInt(i.toString(), 10)])) {\n selectedIndexes[parseInt(i.toString(), 10)] = j - skip;\n break;\n }\n }\n }\n this.selectedRowColls = selectedIndexes;\n };\n RowDD.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n /**\n * To trigger action complete event.\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.onActionComplete = function (e) {\n this.parent.trigger(actionComplete, extend(e, { type: actionComplete, requestType: 'rowdraganddrop' }));\n };\n RowDD.prototype.initializeDrag = function () {\n var gObj = this.parent;\n this.draggable = new Draggable(gObj.element, {\n dragTarget: '.e-rowcelldrag, .e-rowdragdrop, .e-rowcell',\n distance: 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop,\n isReplaceDragEle: this.isReplaceDragEle,\n isPreventSelect: false\n });\n };\n RowDD.prototype.updateScrollPostion = function (e) {\n var _this = this;\n var y = getPosition(e).y;\n var cliRect = this.isDropGrid.getContent().getBoundingClientRect();\n var rowHeight = this.isDropGrid.getRowHeight() - 15;\n var scrollElem = this.isDropGrid.getContent().firstElementChild;\n var virtualScrollbtm = this.parent.enableVirtualization ? 20 : 0;\n if (cliRect.top >= y) {\n var scrollPixel_1 = -(this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_1); }, 200);\n }\n else if (cliRect.top + this.isDropGrid.getContent().clientHeight - rowHeight - 33 - virtualScrollbtm <= y) {\n var scrollPixel_2 = (this.isDropGrid.getRowHeight());\n this.isOverflowBorder = false;\n this.timer = window.setInterval(function () { _this.setScrollDown(scrollElem, scrollPixel_2); }, 200);\n }\n };\n RowDD.prototype.setScrollDown = function (scrollElem, scrollPixel) {\n scrollElem.scrollTop = scrollElem.scrollTop + scrollPixel;\n };\n RowDD.prototype.moveDragRows = function (e, startedRow, targetRow) {\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n if (this.parent.element.classList.contains('e-childgrid')) {\n var parentGrid = this.getParentGrid(this.parent.element);\n cloneElement = parentGrid.querySelector('.e-cloneproperties');\n }\n var element = closest(e.target, 'tr');\n if (parentsUntil(element, 'e-grid') &&\n (parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id || this.istargetGrid)) {\n var targetElement = element ?\n element : this.startedRow;\n this.setBorder(targetElement, e.event, startedRow, targetRow);\n }\n };\n RowDD.prototype.setBorder = function (element, event, startedRow, targetRow) {\n var node = this.parent.element;\n if (this.istargetGrid) {\n node = this.isDropGrid.element;\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n this.removeFirstRowBorder(element);\n this.removeLastRowBorder(element);\n if (parentsUntil(element, 'e-grid') && element.classList.contains(row) && ((!this.parent.rowDropSettings.targetID &&\n parentsUntil(cloneElement.parentElement, 'e-grid').id === parentsUntil(element, 'e-grid').id) || this.istargetGrid)) {\n removeClass(node.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'), ['e-dragborder']);\n var rowElement = [];\n var targetRowIndex = parseInt(targetRow.getAttribute(dataRowIndex), 10);\n if (targetRow && targetRowIndex === 0) {\n var div = this.parent.createElement('div', { className: 'e-firstrow-dragborder' });\n var gridheaderEle = this.isDropGrid.getHeaderContent();\n gridheaderEle.classList.add('e-grid-relative');\n div.style.width = node.offsetWidth - this.getScrollWidth() + 'px';\n if (!gridheaderEle.getElementsByClassName('e-firstrow-dragborder').length) {\n gridheaderEle.appendChild(div);\n }\n }\n else if (this.parent.rowDropSettings.targetID && targetRow) {\n element = this.isDropGrid.getRowByIndex(targetRowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else if (targetRow && parseInt(startedRow.getAttribute(dataRowIndex), 10) > targetRowIndex) {\n element = this.parent.getRowByIndex(targetRowIndex - 1);\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n else {\n rowElement = [].slice.call(element.querySelectorAll('.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse'));\n }\n var frzCols = this.parent.isFrozenGrid();\n if (targetRow && targetRowIndex !== 0 && frzCols) {\n var rowIndex = parseInt(element.getAttribute(dataRowIndex), 10);\n var selector = '.e-rowcell,.e-rowdragdrop,.e-detailrowcollapse';\n rowElement = this.borderRowElement(rowIndex, selector);\n }\n if (rowElement.length > 0) {\n addRemoveActiveClasses(rowElement, true, 'e-dragborder');\n }\n }\n };\n RowDD.prototype.borderRowElement = function (rowIndex, selector) {\n var lastRow = [];\n lastRow = [].slice.call(this.isDropGrid.getRowByIndex(rowIndex).querySelectorAll(selector)).\n concat([].slice.call(this.isDropGrid.getMovableRowByIndex(rowIndex).querySelectorAll(selector)));\n if (this.isDropGrid.getFrozenMode() === leftRight) {\n lastRow = lastRow.concat([].slice.call(this.isDropGrid.getFrozenRightRowByIndex(rowIndex).querySelectorAll(selector)));\n }\n return lastRow;\n };\n RowDD.prototype.getScrollWidth = function () {\n var scrollElem = this.parent.getContent().firstElementChild;\n return scrollElem.scrollWidth > scrollElem.offsetWidth ? Scroll.getScrollBarWidth() : 0;\n };\n RowDD.prototype.removeFirstRowBorder = function (element) {\n if (this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder').length > 0 && element &&\n element.rowIndex !== 0) {\n remove(this.isDropGrid.element.getElementsByClassName('e-firstrow-dragborder')[0]);\n }\n };\n RowDD.prototype.removeLastRowBorder = function (element) {\n var islastRowIndex;\n if (this.parent.enableVirtualization) {\n islastRowIndex = element && parseInt(element.getAttribute(dataRowIndex), 10) !==\n this.parent.renderModule.data.dataManager.dataSource.json.length - 1;\n }\n else {\n islastRowIndex = element &&\n this.parent.getRowByIndex(this.parent.getCurrentViewRecords().length - 1).getAttribute('data-uid') !==\n element.getAttribute('data-uid');\n }\n if (this.parent.element.getElementsByClassName('e-lastrow-dragborder').length > 0 && element && islastRowIndex) {\n remove(this.parent.element.getElementsByClassName('e-lastrow-dragborder')[0]);\n }\n };\n RowDD.prototype.removeBorder = function (element) {\n this.removeFirstRowBorder(element);\n if (!this.parent.rowDropSettings.targetID) {\n this.removeLastRowBorder(element);\n }\n element = (this.isDropGrid.isFrozenGrid() ? this.isDropGrid.getMovableRows() : this.isDropGrid.getRows()).filter(function (row$$1) {\n return row$$1.querySelector('td.e-dragborder');\n })[0];\n if (element) {\n var rowElement = [].slice.call(element.getElementsByClassName('e-dragborder'));\n if (this.parent.isFrozenGrid()) {\n var rowIndex = parseInt(element.getAttribute(dataRowIndex), 10);\n var selector = '.e-dragborder';\n rowElement = this.borderRowElement(rowIndex, selector);\n }\n addRemoveActiveClasses(rowElement, false, 'e-dragborder');\n }\n };\n RowDD.prototype.getElementFromPosition = function (element, event) {\n var position = getPosition(event);\n element.style.display = 'none';\n var target = document.elementFromPoint(position.x, position.y);\n element.style.display = '';\n return target;\n };\n RowDD.prototype.onDataBound = function () {\n if (this.selectedRowColls.length > 0 && (this.parent.enableVirtualization || this.parent.allowRowDragAndDrop)) {\n this.parent.selectRows(this.selectedRowColls);\n this.selectedRowColls = [];\n }\n };\n RowDD.prototype.getTargetIdx = function (targetRow) {\n return targetRow ? parseInt(targetRow.getAttribute(dataRowIndex), 10) : 0;\n };\n RowDD.prototype.singleRowDrop = function (e) {\n var targetRow = closest(e.target, 'tr');\n var srcControl = e.droppedElement.parentElement.ej2_instances[0];\n var currentIndex = targetRow ? targetRow.rowIndex : srcControl.currentViewData.length - 1;\n this.reorderRow(this.startedRowIndex, currentIndex);\n };\n RowDD.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') !== 'grouping' &&\n (parentsUntil(e.target, row) || parentsUntil(e.target, 'e-emptyrow') || parentsUntil(e.target, gridContent))) {\n var targetRow = closest(e.target, 'tr');\n var srcControl = void 0;\n var currentIndex = void 0;\n var dragParentElement = document.querySelector('.e-drag-ref');\n if ((e.droppedElement.querySelector('tr').getAttribute('single-dragrow') !== 'true' &&\n (e.droppedElement.parentElement.id === gObj.element.id || (dragParentElement\n && dragParentElement.parentElement.id === gObj.element.id)))\n || (e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true' &&\n e.droppedElement.parentElement.id !== gObj.element.id)) {\n return;\n }\n if (e.droppedElement.parentElement.id !== gObj.element.id) {\n if (dragParentElement) {\n srcControl = dragParentElement.parentElement.ej2_instances[0];\n remove(dragParentElement);\n }\n else {\n srcControl = e.droppedElement.parentElement.ej2_instances[0];\n }\n }\n else if (this.isSingleRowDragDrop || e.droppedElement.querySelector('tr').getAttribute('single-dragrow') === 'true') {\n this.singleRowDrop(e);\n return;\n }\n if (srcControl.element.id !== gObj.element.id && srcControl.rowDropSettings.targetID !== gObj.element.id) {\n return;\n }\n var records = srcControl.getSelectedRecords();\n var targetIndex = currentIndex = this.getTargetIdx(targetRow);\n if (isNaN(targetIndex)) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n targetIndex = currentIndex = 0;\n }\n if (gObj.allowPaging) {\n targetIndex = targetIndex + (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize;\n }\n //Todo: drag and drop mapper & BatchChanges\n gObj.notify(rowsAdded, { toIndex: targetIndex, records: records });\n gObj.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n var selectedRows = srcControl.getSelectedRowIndexes();\n var skip = srcControl.allowPaging ?\n (srcControl.pageSettings.currentPage * srcControl.pageSettings.pageSize) - srcControl.pageSettings.pageSize : 0;\n this.selectedRows = [];\n for (var i = 0, len = records.length; i < len; i++) {\n this.selectedRows.push(skip + selectedRows[parseInt(i.toString(), 10)]);\n }\n srcControl.notify(rowsRemoved, { indexes: this.selectedRows, records: records });\n srcControl.notify(modelChanged, {\n type: actionBegin, requestType: 'rowdraganddrop'\n });\n }\n };\n RowDD.prototype.reorderRow = function (fromIndexes, toIndex) {\n var gObj = this.parent;\n if (!gObj.sortSettings.columns.length && !gObj.groupSettings.columns.length && !gObj.filterSettings.columns.length) {\n //Todo: drag and drop mapper & BatchChanges\n var skip = gObj.allowPaging ?\n (gObj.pageSettings.currentPage * gObj.pageSettings.pageSize) - gObj.pageSettings.pageSize : 0;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n toIndex = toIndex + skip;\n this.selectedRows = gObj.getSelectedRowIndexes();\n gObj.notify(rowPositionChanged, {\n fromIndex: fromIndexes + skip,\n toIndex: toIndex\n });\n }\n };\n RowDD.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.initializeDrag();\n }\n };\n /**\n * To destroy the print\n *\n * @returns {void}\n * @hidden\n */\n RowDD.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + gridHeader) &&\n !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.draggable.destroy();\n this.parent.off(initialEnd, this.initializeDrag);\n this.parent.off(columnDrop, this.columnDrop);\n this.parent.off(rowDragAndDropComplete, this.onActionComplete);\n this.parent.removeEventListener(dataBound, this.onDataBoundFn);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(destroy, this.destroy);\n //destory ejdrag and drop\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n RowDD.prototype.getModuleName = function () {\n return 'rowDragAndDrop';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RowDD.prototype.processArgs = function (target) {\n var gObj = this.parent;\n var dragIdx = parseInt(this.startedRow.getAttribute(dataRowIndex), 10);\n if ((gObj.getSelectedRecords().length > 0 && this.startedRow.cells[0].classList.contains('e-selectionbackground') === false)\n || gObj.getSelectedRecords().length === 0) {\n if (this.parent.enableVirtualization) {\n this.rows = [this.startedRow];\n }\n else {\n this.rows = [this.parent.getRowByIndex(dragIdx)];\n if (gObj.isFrozenGrid()) {\n this.rows = [gObj.getRowByIndex(dragIdx), gObj.getMovableRowByIndex(dragIdx)];\n if (gObj.getFrozenMode() === leftRight) {\n this.rows = [\n gObj.getRowByIndex(dragIdx), gObj.getMovableRowByIndex(dragIdx), gObj.getFrozenRightRowByIndex(dragIdx)\n ];\n }\n }\n }\n this.rowData = [this.parent.getRowInfo((this.startedRow).querySelector('.' + rowCell)).rowData];\n }\n else {\n this.rows = gObj.getSelectedRows();\n this.rowData = gObj.getSelectedRecords();\n }\n };\n return RowDD;\n}());\n\n// eslint-disable-next-line valid-jsdoc\n/**\n *\n * The `Group` module is used to handle group action.\n */\nvar Group = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Grid group module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {GroupSettingsModel} groupSettings - specifies the GroupSettingsModel\n * @param {string[]} sortedColumns - specifies the sortedColumns\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function Group(parent, groupSettings, sortedColumns, serviceLocator) {\n var _this = this;\n //Internal variables\n this.sortRequired = true;\n /** @hidden */\n this.groupSortFocus = false;\n /** @hidden */\n this.groupTextFocus = false;\n /** @hidden */\n this.groupCancelFocus = false;\n this.isAppliedGroup = false;\n this.isAppliedUnGroup = false;\n this.isAppliedCaptionRowBorder = false;\n this.reorderingColumns = [];\n this.visualElement = createElement('div', {\n className: 'e-cloneproperties e-dragclone e-gdclone',\n styles: 'line-height:23px', attrs: { action: 'grouping' }\n });\n this.helper = function (e) {\n var gObj = _this.parent;\n var target = e.sender.target;\n var element = target.classList.contains('e-groupheadercell') ? target :\n parentsUntil(target, 'e-groupheadercell');\n if (!element || (!target.classList.contains('e-drag') && _this.groupSettings.allowReordering)) {\n return false;\n }\n _this.column = gObj.getColumnByField(element.firstElementChild.getAttribute('ej-mappingname'));\n _this.visualElement.textContent = element.textContent;\n _this.visualElement.style.width = element.offsetWidth + 2 + 'px';\n _this.visualElement.style.height = element.offsetHeight + 2 + 'px';\n _this.visualElement.setAttribute('e-mappinguid', _this.column.uid);\n gObj.element.appendChild(_this.visualElement);\n return _this.visualElement;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n this.dragStart = function (e) {\n _this.parent.element.classList.add('e-ungroupdrag');\n };\n this.drag = function (e) {\n if (_this.groupSettings.allowReordering) {\n _this.animateDropper(e);\n }\n var target = e.target;\n var cloneElement = _this.parent.element.querySelector('.e-cloneproperties');\n _this.parent.trigger(columnDrag, { target: target, draggableType: 'headercell', column: _this.column });\n if (!_this.groupSettings.allowReordering) {\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!(parentsUntil(target, gridContent) || parentsUntil(target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n }\n };\n this.dragStop = function (e) {\n _this.parent.element.classList.remove('e-ungroupdrag');\n var preventDrop = !(parentsUntil(e.target, gridContent) || parentsUntil(e.target, 'e-gridheader'));\n if (_this.groupSettings.allowReordering && preventDrop) {\n remove(e.helper);\n if (parentsUntil(e.target, 'e-groupdroparea')) {\n _this.rearrangeGroup();\n }\n else if (!(parentsUntil(e.target, 'e-grid'))) {\n var field = _this.parent.getColumnByUid(e.helper.getAttribute('e-mappinguid')).field;\n if (_this.groupSettings.columns.indexOf(field) !== -1) {\n _this.ungroupColumn(field);\n }\n }\n return;\n }\n else if (preventDrop) {\n remove(e.helper);\n return;\n }\n };\n this.animateDropper = function (e) {\n var uid = _this.parent.element.querySelector('.e-cloneproperties').getAttribute('e-mappinguid');\n var dragField = _this.parent.getColumnByUid(uid).field;\n var parent = parentsUntil(e.target, 'e-groupdroparea');\n var dropTarget = parentsUntil(e.target, 'e-group-animator');\n var grouped = [].slice.call(_this.element.getElementsByClassName('e-groupheadercell'))\n .map(function (e) { return e.querySelector('div').getAttribute('ej-mappingname'); });\n var cols = JSON.parse(JSON.stringify(grouped));\n if (dropTarget || parent) {\n if (dropTarget) {\n var dropField = dropTarget.querySelector('div[ej-mappingname]').getAttribute('ej-mappingname');\n var dropIndex = +(dropTarget.getAttribute('index'));\n if (dropField !== dragField) {\n var dragIndex = cols.indexOf(dragField);\n if (dragIndex !== -1) {\n cols.splice(dragIndex, 1);\n }\n var flag = dropIndex !== -1 && dragIndex === dropIndex;\n cols.splice(dropIndex + (flag ? 1 : 0), 0, dragField);\n }\n }\n else if (parent && cols.indexOf(dragField) === -1) {\n cols.push(dragField);\n }\n _this.element.innerHTML = '';\n if (cols.length && !_this.element.classList.contains('e-grouped')) {\n _this.element.classList.add('e-grouped');\n }\n _this.reorderingColumns = cols;\n for (var c = 0; c < cols.length; c++) {\n _this.addColToGroupDrop(cols[parseInt(c.toString(), 10)]);\n }\n }\n else {\n _this.addLabel();\n _this.removeColFromGroupDrop(dragField);\n }\n };\n this.drop = function (e) {\n var gObj = _this.parent;\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n _this.element.classList.remove('e-hover');\n remove(e.droppedElement);\n _this.aria.setDropTarget(_this.parent.element.querySelector('.e-groupdroparea'), false);\n _this.aria.setGrabbed(_this.parent.getHeaderTable().querySelector('[aria-grabbed=true]'), false);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n _this.parent.log('action_disabled_column', { moduleName: _this.getModuleName(), columnName: column.headerText });\n return;\n }\n _this.groupColumn(column.field);\n };\n this.contentRefresh = true;\n this.aria = new AriaService();\n this.parent = parent;\n this.groupSettings = groupSettings;\n this.serviceLocator = serviceLocator;\n this.sortedColumns = sortedColumns;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n this.groupGenerator = new GroupModelGenerator(this.parent);\n }\n Group.prototype.addLabel = function () {\n if (!this.element.getElementsByClassName('e-group-animator').length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n };\n Group.prototype.rearrangeGroup = function () {\n this.sortRequired = false;\n this.updateModel();\n };\n Group.prototype.columnDrag = function (e) {\n if (this.groupSettings.allowReordering && e.column.allowGrouping) {\n this.animateDropper(e);\n }\n var cloneElement = this.parent.element.querySelector('.e-cloneproperties');\n classList(cloneElement, ['e-defaultcur'], ['e-notallowedcur']);\n if (!parentsUntil(e.target, 'e-groupdroparea') &&\n !(this.parent.allowReordering && parentsUntil(e.target, 'e-headercell'))) {\n classList(cloneElement, ['e-notallowedcur'], ['e-defaultcur']);\n }\n if (e.target.classList.contains('e-groupdroparea')) {\n this.element.classList.add('e-hover');\n }\n else {\n this.element.classList.remove('e-hover');\n }\n };\n Group.prototype.columnDragStart = function (e) {\n if (e.target.classList.contains('e-stackedheadercell')) {\n return;\n }\n var dropArea = this.parent.element.querySelector('.e-groupdroparea');\n this.aria.setDropTarget(dropArea, e.column.allowGrouping);\n var element = e.target.classList.contains('e-headercell') ? e.target : parentsUntil(e.target, 'e-headercell');\n this.aria.setGrabbed(element, true, !e.column.allowGrouping);\n };\n Group.prototype.columnDrop = function (e) {\n var gObj = this.parent;\n if (e.droppedElement.getAttribute('action') === 'grouping') {\n var column = gObj.getColumnByUid(e.droppedElement.getAttribute('e-mappinguid'));\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n parentsUntil(gObj.getColumnHeaderByUid(column.uid), 'e-grid').getAttribute('id') !==\n gObj.element.getAttribute('id')) {\n return;\n }\n this.ungroupColumn(column.field);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(uiUpdate, this.enableAfterRender, this);\n this.parent.on(groupComplete, this.onActionComplete, this);\n this.parent.on(ungroupComplete, this.onActionComplete, this);\n this.parent.on(inBoundModelChanged, this.onPropertyChanged, this);\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(columnDrag, this.columnDrag, this);\n this.parent.on(columnDragStart, this.columnDragStart, this);\n this.parent.on(headerDrop, this.columnDrop, this);\n this.parent.on(columnDrop, this.columnDrop, this);\n this.parent.on(headerRefreshed, this.refreshSortIcons, this);\n this.parent.on(sortComplete, this.refreshSortIcons, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(contentReady, this.initialEnd, this);\n this.parent.on(onEmpty, this.initialEnd, this);\n this.parent.on(initialEnd, this.render, this);\n this.parent.on(groupAggregates, this.onGroupAggregates, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on('group-expand-collapse', this.updateExpand, this);\n this.parent.on('persist-data-changed', this.initialEnd, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Group.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.render);\n this.parent.off(uiUpdate, this.enableAfterRender);\n this.parent.off(groupComplete, this.onActionComplete);\n this.parent.off(ungroupComplete, this.onActionComplete);\n this.parent.off(inBoundModelChanged, this.onPropertyChanged);\n this.parent.off(click, this.clickHandler);\n this.parent.off(columnDrag, this.columnDrag);\n this.parent.off(columnDragStart, this.columnDragStart);\n this.parent.off(columnDrop, this.columnDrop);\n this.parent.off(headerDrop, this.columnDrop);\n this.parent.off(headerRefreshed, this.refreshSortIcons);\n this.parent.off(sortComplete, this.refreshSortIcons);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(groupAggregates, this.onGroupAggregates);\n this.parent.off(destroy, this.destroy);\n this.parent.off('group-expand-collapse', this.updateExpand);\n };\n Group.prototype.initialEnd = function () {\n var gObj = this.parent;\n this.parent.off(contentReady, this.initialEnd);\n this.parent.off(onEmpty, this.initialEnd);\n if (this.parent.getColumns().length && this.groupSettings.columns.length) {\n this.contentRefresh = false;\n for (var _i = 0, _a = gObj.groupSettings.columns; _i < _a.length; _i++) {\n var col = _a[_i];\n this.groupColumn(col);\n }\n this.contentRefresh = true;\n }\n };\n Group.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.target && parentsUntil(e.target, 'e-groupheadercell') && (e.action === 'tab' || e.action === 'shiftTab')) {\n var focusableGroupedItems = this.getFocusableGroupedItems();\n if ((e.action === 'tab' && e.target === focusableGroupedItems[focusableGroupedItems.length - 1])\n || (e.action === 'shiftTab' && e.target === focusableGroupedItems[0])) {\n return;\n }\n for (var i = 0; i < focusableGroupedItems.length; i++) {\n if (e.target === focusableGroupedItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n focusableGroupedItems[parseInt(index.toString(), 10)].focus();\n return;\n }\n }\n }\n if (e.action !== 'ctrlSpace' && (!this.groupSettings.columns.length ||\n ['altDownArrow', 'altUpArrow', 'ctrlDownArrow', 'ctrlUpArrow', 'enter'].indexOf(e.action) === -1)) {\n return;\n }\n e.preventDefault();\n switch (e.action) {\n case 'altDownArrow':\n case 'altUpArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var rows = gObj.getContentTable().querySelector(tbody).children;\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var grpRow = void 0;\n for (var i = dataRow.rowIndex; i >= 0; i--) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains(row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-detailrow')) {\n grpRow = rows[parseInt(i.toString(), 10)];\n break;\n }\n }\n this.expandCollapseRows(grpRow.querySelector(e.action === 'altUpArrow' ?\n '.e-recordplusexpand' : '.e-recordpluscollapse'));\n }\n break;\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'enter':\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n this.applySortFromTarget(e.target);\n break;\n }\n else if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n this.unGroupFromTarget(e.target);\n break;\n }\n if (this.parent.isEdit || (closest(e.target, '#' + this.parent.element.id + '_searchbar') !== null) ||\n parentsUntil(e.target, 'e-pager') || parentsUntil(e.target, 'e-toolbar')) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n // eslint-disable-next-line no-case-declarations\n var row$$1 = element ? element.parentElement.querySelector('[class^=\"e-record\"]') : null;\n if (!row$$1) {\n break;\n }\n if (element.children.length && (element.children[0].classList.contains('e-icon-grightarrow') ||\n element.children[0].classList.contains('e-icon-gdownarrow'))) {\n this.expandCollapseRows(row$$1);\n }\n break;\n case 'ctrlSpace':\n // eslint-disable-next-line no-case-declarations\n var elem = gObj.focusModule.currentInfo.element;\n if (elem && elem.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(elem.firstElementChild.getAttribute('e-mappinguid'));\n if (column.field && gObj.groupSettings.columns.indexOf(column.field) < 0) {\n this.groupColumn(column.field);\n }\n else {\n this.ungroupColumn(column.field);\n }\n }\n break;\n }\n };\n /**\n * @returns {Element[]} - Return the focusable grouping items\n * @hidden */\n Group.prototype.getFocusableGroupedItems = function () {\n var focusableGroupedItems = [];\n if (this.groupSettings.columns.length) {\n var focusableGroupedHeaderItems = this.element.querySelectorAll('.e-groupheadercell');\n for (var i = 0; i < focusableGroupedHeaderItems.length; i++) {\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-grouptext'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-groupsort'));\n focusableGroupedItems.push(focusableGroupedHeaderItems[parseInt(i.toString(), 10)].querySelector('.e-ungroupbutton'));\n }\n }\n return focusableGroupedItems;\n };\n Group.prototype.wireEvent = function () {\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Group.prototype.unWireEvent = function () {\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Group.prototype.onFocusIn = function (e) {\n if (this.parent.focusModule.currentInfo && this.parent.focusModule.currentInfo.element) {\n removeClass([this.parent.focusModule.currentInfo.element, this.parent.focusModule.currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n this.parent.focusModule.currentInfo.element.tabIndex = -1;\n }\n this.addOrRemoveFocus(e);\n };\n Group.prototype.onFocusOut = function (e) {\n this.addOrRemoveFocus(e);\n };\n Group.prototype.addOrRemoveFocus = function (e) {\n if (e.target.classList.contains('e-groupdroparea') || e.target.classList.contains('e-grouptext')\n || e.target.classList.contains('e-groupsort')\n || e.target.classList.contains('e-ungroupbutton')) {\n var target = e.target.classList.contains('e-grouptext') ?\n e.target.parentElement.parentElement : e.target;\n if (e.type === 'focusin') {\n addClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = 0;\n }\n else {\n removeClass([target], ['e-focused', 'e-focus']);\n e.target.tabIndex = -1;\n }\n }\n };\n Group.prototype.clickHandler = function (e) {\n if (e.target.classList.contains('e-grouptext')) {\n this.groupTextFocus = true;\n }\n if (e.target.classList.contains('e-groupsort')) {\n this.groupSortFocus = true;\n }\n if (e.target.classList.contains('e-ungroupbutton')) {\n this.groupCancelFocus = true;\n }\n var trgtEle = parentsUntil(e.target, 'e-recordplusexpand') ||\n parentsUntil(e.target, 'e-recordpluscollapse');\n if (trgtEle && (trgtEle.children[0].classList.contains('e-icon-gdownarrow') || trgtEle.children[0].classList.contains('e-icon-grightarrow'))) {\n this.expandCollapseRows(e.target);\n }\n this.applySortFromTarget(e.target);\n this.unGroupFromTarget(e.target);\n this.toogleGroupFromHeader(e.target);\n };\n Group.prototype.unGroupFromTarget = function (target) {\n if (target.classList.contains('e-ungroupbutton')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n };\n Group.prototype.toogleGroupFromHeader = function (target) {\n if (this.groupSettings.showToggleButton) {\n if (target.classList.contains('e-grptogglebtn')) {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n else {\n this.groupColumn(this.parent.getColumnByUid(target.parentElement.getAttribute('e-mappinguid')).field);\n }\n }\n else {\n if (target.classList.contains('e-toggleungroup')) {\n this.ungroupColumn(target.parentElement.getAttribute('ej-mappingname'));\n }\n }\n }\n };\n Group.prototype.applySortFromTarget = function (target) {\n var gObj = this.parent;\n var gHeader = closest(target, '.e-groupheadercell');\n if (gObj.allowSorting && gHeader && !target.classList.contains('e-ungroupbutton') &&\n !target.classList.contains('e-toggleungroup')) {\n var field = gHeader.firstElementChild.getAttribute('ej-mappingname');\n if (gObj.getColumnHeaderByField(field).getElementsByClassName('e-ascending').length) {\n gObj.sortColumn(field, 'Descending', true);\n }\n else {\n gObj.sortColumn(field, 'Ascending', true);\n }\n }\n };\n /**\n * Expands or collapses grouped rows by target element.\n *\n * @param {Element} target - Defines the target element of the grouped row.\n * @returns {void}\n */\n Group.prototype.expandCollapseRows = function (target) {\n var trgt = parentsUntil(target, 'e-recordplusexpand') ||\n parentsUntil(target, 'e-recordpluscollapse');\n if (trgt) {\n var rowNodes = this.parent.getContentTable().querySelector(tbody).children;\n var isHide = void 0;\n var dataManager = void 0;\n var query = void 0;\n var gObj = this.parent;\n var indent = trgt.parentElement.getElementsByClassName('e-indentcell').length;\n var uid = trgt.parentElement.getAttribute('data-uid');\n var captionRow = gObj.getRowObjectFromUID(uid);\n var expand = false;\n if (trgt.classList.contains('e-recordpluscollapse')) {\n addClass([trgt], 'e-recordplusexpand');\n removeClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n trgt.firstElementChild.setAttribute('title', 'expanded');\n expand = true;\n captionRow.isExpand = true;\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, expand, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n if ((this.parent.filterSettings.columns.length || this.parent.sortSettings.columns.length ||\n this.parent.searchSettings.key.length) && this.parent.getContent().firstElementChild.scrollTop === 0) {\n this.parent.contentModule.isTop = true;\n }\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionExpand(trgt.parentElement);\n }\n }\n else {\n isHide = true;\n captionRow.isExpand = false;\n removeClass([trgt], 'e-recordplusexpand');\n addClass([trgt], 'e-recordpluscollapse');\n trgt.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n trgt.firstElementChild.setAttribute('title', 'collapsed');\n if (isGroupAdaptive(gObj)) {\n this.updateVirtualRows(gObj, target, !isHide, query, dataManager);\n }\n if (this.parent.groupSettings.enableLazyLoading) {\n (this.parent.enableVirtualization ? this.parent.lazyLoadRender :\n this.parent.contentModule).captionCollapse(trgt.parentElement);\n }\n }\n this.aria.setExpand(trgt, expand);\n if (!isGroupAdaptive(gObj) && !this.parent.groupSettings.enableLazyLoading) {\n var rowObjs = gObj.getRowsObject();\n var startIdx = rowObjs.indexOf(captionRow);\n var rowsState = {};\n var cacheStartIdx = gObj.enableInfiniteScrolling && gObj.infiniteScrollSettings &&\n gObj.infiniteScrollSettings.enableCache && rowObjs.length !== rowNodes.length ?\n Array.from(rowNodes).indexOf(trgt.parentElement) : undefined;\n for (var i = startIdx; i < rowObjs.length; i++) {\n if (i > startIdx && rowObjs[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDetailRow) {\n var visible = rowObjs[i - 1].isExpand && rowObjs[i - 1].visible;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = visible ? '' : 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = visible ? '' : 'none';\n }\n }\n else if (rowsState[rowObjs[parseInt(i.toString(), 10)].parentUid] === false) {\n rowObjs[parseInt(i.toString(), 10)].visible = false;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = 'none';\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = 'none';\n }\n }\n else {\n if (!(rowObjs[parseInt(i.toString(), 10)].isDataRow || rowObjs[parseInt(i.toString(), 10)].isCaptionRow\n || rowObjs[parseInt(i.toString(), 10)].isDetailRow || rowObjs[parseInt(i.toString(), 10)].isAggregateRow)) {\n var visible = rowObjs[parseInt(i.toString(), 10)].cells\n .some(function (cell) { return cell.isDataCell && cell.visible; });\n if (visible === rowObjs[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n }\n rowObjs[parseInt(i.toString(), 10)].visible = true;\n if (cacheStartIdx && cacheStartIdx > 0 && cacheStartIdx < rowNodes.length) {\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].style.display = '';\n rowNodes[parseInt(cacheStartIdx.toString(), 10)].classList.remove('e-hide');\n }\n else if (isNullOrUndefined(cacheStartIdx)) {\n rowNodes[parseInt(i.toString(), 10)].style.display = '';\n rowNodes[parseInt(i.toString(), 10)].classList.remove('e-hide');\n }\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowsState[rowObjs[parseInt(i.toString(), 10)].uid] = rowObjs[parseInt(i.toString(), 10)].isExpand\n && rowObjs[parseInt(i.toString(), 10)].visible;\n }\n if (!isNullOrUndefined(cacheStartIdx)) {\n cacheStartIdx++;\n }\n }\n this.lastCaptionRowBorder();\n this.parent.notify(refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n }\n if (!this.parent.enableInfiniteScrolling || !this.parent.groupSettings.enableLazyLoading) {\n this.parent.notify(captionActionComplete, { isCollapse: isHide, parentUid: uid });\n }\n }\n };\n Group.prototype.lastCaptionRowBorder = function () {\n var table$$1 = this.parent.getContentTable();\n var clientHeight = this.parent.getContent().clientHeight;\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n if (table$$1.scrollHeight < clientHeight || this.isAppliedCaptionRowBorder) {\n if (this.isAppliedCaptionRowBorder) {\n var borderCells = table$$1.querySelectorAll('.e-lastrowcell');\n for (var i = 0, len = borderCells.length; i < len; i++) {\n removeClass([borderCells[i]], 'e-lastrowcell');\n }\n this.isAppliedCaptionRowBorder = false;\n }\n var rowNodes = this.parent.getContentTable().querySelector(tbody).children;\n var lastRow = rowNodes[rowNodes.length - 1];\n if (lastRow.style.display !== 'none' && !lastRow.classList.contains('e-groupcaptionrow')) {\n if (table$$1.scrollHeight < clientHeight) {\n addClass(table$$1.querySelectorAll('tr:last-child td'), 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n }\n }\n else {\n for (var i = rowNodes.length - 1, len = 0; i > len; i--) {\n if (rowNodes[i].style.display !== 'none' && rowNodes[i].classList.contains('e-groupcaptionrow')) {\n if (rowNodes[i].querySelector('.e-recordpluscollapse')) {\n addClass(rowNodes[i].childNodes, 'e-lastrowcell');\n this.isAppliedCaptionRowBorder = true;\n break;\n }\n }\n }\n }\n }\n }\n };\n Group.prototype.updateVirtualRows = function (gObj, target, isExpand, query, dataManager) {\n var rObj = gObj.getRowObjectFromUID(target.closest('tr').getAttribute('data-uid'));\n rObj.isExpand = isExpand;\n updatecloneRow(gObj);\n this.parent.notify(refreshVirtualMaxPage, {});\n query = gObj.getDataModule().generateQuery(false);\n query.queries = gObj.getDataModule().aggregateQuery(gObj.getQuery().clone()).queries;\n var args = { requestType: 'virtualscroll', rowObject: rObj };\n if (gObj.contentModule) {\n args.virtualInfo = gObj.contentModule.prevInfo;\n }\n dataManager = gObj.getDataModule().getData(args, query.requiresCount());\n dataManager.then(function (e) { return gObj.renderModule.dataManagerSuccess(e, args); });\n };\n Group.prototype.expandCollapse = function (isExpand) {\n if (!this.parent.groupSettings.columns.length) {\n return;\n }\n if (!isExpand) {\n this.parent.notify(initialCollapse, isExpand);\n }\n var rowNodes = this.parent.getContentTable().querySelector(tbody).children;\n var rowObjs = this.parent.getRowsObject();\n var row$$1;\n for (var i = 0, len = rowNodes.length; i < len; i++) {\n if (rowNodes[parseInt(i.toString(), 10)].querySelectorAll('.e-recordplusexpand, .e-recordpluscollapse').length) {\n row$$1 = rowNodes[parseInt(i.toString(), 10)].querySelector(isExpand ? '.e-recordpluscollapse' : '.e-recordplusexpand');\n if (row$$1) {\n if (isExpand) {\n row$$1.className = 'e-recordplusexpand';\n row$$1.firstElementChild.className = 'e-icons e-gdiagonaldown e-icon-gdownarrow';\n row$$1.setAttribute('aria-expanded', 'true');\n row$$1.firstElementChild.setAttribute('title', 'expanded');\n }\n else {\n row$$1.className = 'e-recordpluscollapse';\n row$$1.firstElementChild.className = 'e-icons e-gnextforward e-icon-grightarrow';\n row$$1.setAttribute('aria-expanded', 'false');\n row$$1.firstElementChild.setAttribute('title', 'collapsed');\n }\n }\n if (!(rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordplusexpand') ||\n rowNodes[parseInt(i.toString(), 10)].firstElementChild.classList.contains('e-recordpluscollapse'))) {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n }\n else {\n rowNodes[parseInt(i.toString(), 10)].style.display = isExpand ? '' : 'none';\n }\n if (rowObjs[parseInt(i.toString(), 10)].isCaptionRow) {\n rowObjs[parseInt(i.toString(), 10)].isExpand = isExpand ? true : false;\n }\n }\n this.parent.updateVisibleExpandCollapseRows();\n this.lastCaptionRowBorder();\n this.parent.notify(refreshExpandandCollapse, { rows: this.parent.getRowsObject() });\n };\n /**\n * Expands all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.expandAll = function () {\n this.expandCollapse(true);\n };\n /**\n * Collapses all the grouped rows of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.collapseAll = function () {\n this.expandCollapse(false);\n };\n /**\n * The function is used to render grouping\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderGroupDropArea();\n this.initDragAndDrop();\n this.refreshToggleBtn();\n this.wireEvent();\n };\n Group.prototype.renderGroupDropArea = function () {\n var groupElem = this.parent.element.querySelector('.e-groupdroparea');\n if (groupElem) {\n remove(groupElem);\n }\n this.element = this.parent.createElement('div', { className: 'e-groupdroparea', attrs: { 'tabindex': '-1' } });\n if (this.groupSettings.allowReordering) {\n this.element.classList.add('e-group-animate');\n }\n this.updateGroupDropArea();\n this.parent.element.insertBefore(this.element, this.parent.element.firstChild);\n if (!this.groupSettings.showDropArea) {\n this.element.style.display = 'none';\n }\n };\n Group.prototype.updateGroupDropArea = function (clear) {\n if (this.groupSettings.showDropArea && !this.groupSettings.columns.length) {\n var dragLabel = this.l10n.getConstant('GroupDropArea');\n this.element.innerHTML = dragLabel;\n this.element.classList.remove('e-grouped');\n }\n else {\n if ((this.element.innerHTML === this.l10n.getConstant('GroupDropArea') && (this.groupSettings.columns.length === 1\n || !this.isAppliedGroup && !this.isAppliedUnGroup)) || clear) {\n this.element.innerHTML = '';\n }\n this.element.classList.add('e-grouped');\n }\n };\n Group.prototype.initDragAndDrop = function () {\n this.initializeGHeaderDrop();\n this.initializeGHeaderDrag();\n };\n Group.prototype.initializeGHeaderDrag = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drag = new Draggable(this.element, {\n dragTarget: this.groupSettings.allowReordering ? '.e-drag' : '.e-groupheadercell',\n distance: this.groupSettings.allowReordering ? -10 : 5,\n helper: this.helper,\n dragStart: this.dragStart,\n drag: this.drag,\n dragStop: this.dragStop\n });\n };\n Group.prototype.initializeGHeaderDrop = function () {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var drop = new Droppable(this.element, {\n accept: '.e-dragclone',\n drop: this.drop\n });\n };\n /**\n * Groups a column by column name.\n *\n * @param {string} columnName - Defines the column name to group.\n * @returns {void}\n */\n Group.prototype.groupColumn = function (columnName) {\n var gObj = this.parent;\n var column = gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false ||\n (this.contentRefresh && this.groupSettings.columns.indexOf(columnName) > -1)) {\n this.parent.log('action_disabled_column', { moduleName: this.getModuleName(), columnName: column.headerText });\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.groupColumn, arg1: columnName });\n return;\n }\n column.visible = gObj.groupSettings.showGroupedColumn;\n this.colName = columnName;\n this.isAppliedGroup = true;\n if (this.contentRefresh) {\n this.updateModel();\n }\n else {\n this.addColToGroupDrop(columnName);\n }\n this.updateGroupDropArea();\n this.isAppliedGroup = false;\n };\n /**\n * Ungroups a column by column name.\n *\n * @param {string} columnName - Defines the column name to ungroup.\n * @returns {void}\n */\n Group.prototype.ungroupColumn = function (columnName) {\n var gObj = this.parent;\n var column = this.parent.enableColumnVirtualization ?\n this.parent.columns.filter(function (c) { return c.field === columnName; })[0] : gObj.getColumnByField(columnName);\n if (isNullOrUndefined(column) || column.allowGrouping === false || this.groupSettings.columns.indexOf(columnName) < 0) {\n return;\n }\n if (isActionPrevent(gObj)) {\n gObj.notify(preventBatch, { instance: this, handler: this.ungroupColumn, arg1: columnName });\n return;\n }\n column.visible = true;\n this.colName = column.field;\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns.splice(columns.indexOf(this.colName), 1);\n if (this.sortedColumns.indexOf(columnName) < 0) {\n for (var i = 0, len = gObj.sortSettings.columns.length; i < len; i++) {\n if (columnName === gObj.sortSettings.columns[parseInt(i.toString(), 10)].field) {\n gObj.sortSettings.columns.splice(i, 1);\n break;\n }\n }\n }\n if (this.groupSettings.allowReordering) {\n this.reorderingColumns = columns;\n }\n this.groupSettings.columns = columns;\n if (gObj.allowGrouping) {\n this.isAppliedUnGroup = true;\n this.parent.dataBind();\n }\n };\n /**\n * The function used to update groupSettings\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.updateModel = function () {\n var columns = JSON.parse(JSON.stringify(this.groupSettings.columns));\n columns = this.reorderingColumns.length ? JSON.parse(JSON.stringify(this.reorderingColumns)) : columns;\n if (this.sortRequired) {\n if (columns.indexOf(this.colName) === -1) {\n columns.push(this.colName);\n }\n this.groupAddSortingQuery(this.colName);\n }\n this.sortRequired = true;\n this.parent.groupSettings.columns = columns;\n this.parent.dataBind();\n };\n /**\n * The function used to trigger onActionComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Group.prototype.onActionComplete = function (e) {\n if (e.requestType === 'grouping') {\n this.addColToGroupDrop(this.colName);\n }\n else {\n this.removeColFromGroupDrop(this.colName);\n }\n var args = this.groupSettings.columns.indexOf(this.colName) > -1 ? {\n columnName: this.colName, requestType: 'grouping', type: actionComplete\n } : { requestType: 'ungrouping', type: actionComplete };\n this.parent.trigger(actionComplete, extend(e, args));\n this.colName = null;\n };\n Group.prototype.groupAddSortingQuery = function (colName) {\n var i = 0;\n while (i < this.parent.sortSettings.columns.length) {\n if (this.parent.sortSettings.columns[parseInt(i.toString(), 10)].field === colName) {\n break;\n }\n i++;\n }\n if (this.parent.sortSettings.columns.length === i) {\n this.parent.sortSettings.columns.push({ field: colName, direction: 'Ascending', isFromGroup: true });\n }\n else if (!this.parent.allowSorting) {\n this.parent.sortSettings.columns[parseInt(i.toString(), 10)].direction = 'Ascending';\n }\n };\n Group.prototype.createElement = function (field) {\n var gObj = this.parent;\n var direction = 'Ascending';\n var animator = this.parent.createElement('div', { className: 'e-grid-icon e-group-animator' });\n var groupedColumn = this.parent.createElement('div', { className: 'e-grid-icon e-groupheadercell' });\n var childDiv = this.parent.createElement('div', { attrs: { 'ej-mappingname': field } });\n if (isComplexField(field)) {\n childDiv.setAttribute('ej-complexname', getComplexFieldID(field));\n }\n var column = this.parent.getColumnByField(field);\n //Todo headerTemplateID for grouped column, disableHtmlEncode\n var headerCell = gObj.getColumnHeaderByUid(column.uid);\n // if (!isNullOrUndefined(column.headerTemplate)) {\n // if (column.headerTemplate.indexOf('#') !== -1) {\n // childDiv.innerHTML = document.querySelector(column.headerTemplate).innerHTML.trim();\n // } else {\n // childDiv.innerHTML = column.headerTemplate;\n // }\n // childDiv.firstElementChild.classList.add('e-grouptext');\n // } else {\n if (this.groupSettings.allowReordering) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-drag e-icons e-icon-drag', innerHTML: ' ',\n attrs: { title: 'Drag', tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedDrag') }\n }));\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-grouptext', innerHTML: column.headerText,\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedSortIcon') + column.headerText }\n }));\n // }\n if (this.groupSettings.showToggleButton) {\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-togglegroupbutton e-icons e-icon-ungroup e-toggleungroup', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupAria') }\n }));\n }\n if (headerCell.querySelectorAll('.e-ascending,.e-descending').length) {\n direction = headerCell.querySelector('.e-ascending') ? 'Ascending' : 'Descending';\n }\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-groupsort e-icons ' +\n ('e-' + direction.toLowerCase() + ' e-icon-' + direction.toLowerCase()), innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupedSortIcon') + column.headerText, role: 'button' }\n }));\n childDiv.appendChild(this.parent.createElement('span', {\n className: 'e-ungroupbutton e-icons e-icon-hide', innerHTML: ' ',\n attrs: { title: this.l10n.getConstant('UnGroup'),\n tabindex: '-1', 'aria-label': this.l10n.getConstant('UnGroupIcon') + column.headerText, role: 'button' },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n }));\n groupedColumn.appendChild(childDiv);\n if (this.groupSettings.allowReordering) {\n animator.appendChild(groupedColumn);\n animator.appendChild(this.createSeparator());\n groupedColumn = animator;\n }\n return groupedColumn;\n };\n Group.prototype.addColToGroupDrop = function (field) {\n var groupElem = isComplexField(field) ? this.parent.element.querySelector('.e-groupdroparea div[ej-complexname=' +\n getComplexFieldID(field) + ']') : this.parent.element.querySelector('.e-groupdroparea div[ej-mappingname=' + field + ']');\n if (this.groupSettings.allowReordering && groupElem) {\n return;\n }\n var column = this.parent.getColumnByField(field);\n if (isNullOrUndefined(column)) {\n return;\n }\n var groupedColumn = this.createElement(field);\n if (this.groupSettings.allowReordering) {\n var index = this.element.getElementsByClassName('e-group-animator').length;\n groupedColumn.setAttribute('index', index.toString());\n }\n this.element.appendChild(groupedColumn);\n var focusModule = this.parent.focusModule;\n focusModule.setActive(true);\n var firstContentCellIndex = [0, 0];\n if (focusModule.active.matrix.matrix[firstContentCellIndex[0]][firstContentCellIndex[1]] === 0) {\n firstContentCellIndex = findCellIndex(focusModule.active.matrix.matrix, firstContentCellIndex, true);\n }\n focusModule.active.matrix.current = firstContentCellIndex;\n focusModule.active.getTable().rows[focusModule.active.matrix.current[0]].cells[focusModule.active.matrix.current[1]].focus();\n //Todo: rtl\n };\n Group.prototype.createSeparator = function () {\n return this.parent.createElement('span', {\n className: 'e-nextgroup e-icons e-icon-next', innerHTML: ' ',\n attrs: { tabindex: '-1', 'aria-label': this.l10n.getConstant('GroupSeperator') },\n styles: this.groupSettings.showUngroupButton ? '' : 'display:none'\n });\n };\n Group.prototype.refreshToggleBtn = function (isRemove) {\n if (this.groupSettings.showToggleButton) {\n var headers = [].slice.call(this.parent.getHeaderTable().getElementsByClassName('e-headercelldiv'));\n for (var i = 0, len = headers.length; i < len; i++) {\n if (!((headers[parseInt(i.toString(), 10)].classList.contains('e-emptycell')) || (headers[parseInt(i.toString(), 10)].classList.contains('e-headerchkcelldiv')))) {\n var column = this.parent.getColumnByUid(headers[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (!this.parent.showColumnMenu || (this.parent.showColumnMenu && !column.showColumnMenu)) {\n if (headers[parseInt(i.toString(), 10)].getElementsByClassName('e-grptogglebtn').length) {\n remove(headers[parseInt(i.toString(), 10)].querySelectorAll('.e-grptogglebtn')[0]);\n }\n if (!isRemove) {\n headers[parseInt(i.toString(), 10)].appendChild(this.parent.createElement('span', {\n className: 'e-grptogglebtn e-icons ' + (this.groupSettings.columns.indexOf(column.field) > -1 ?\n 'e-toggleungroup e-icon-ungroup' : 'e-togglegroup e-icon-group'), attrs: { tabindex: '-1',\n 'aria-label': isNullOrUndefined(this.l10n) ? this.parent.localeObj.getConstant('GroupButton')\n : this.l10n.getConstant('GroupButton') }\n }));\n }\n }\n }\n }\n }\n };\n Group.prototype.removeColFromGroupDrop = function (field) {\n if (!isNullOrUndefined(this.getGHeaderCell(field))) {\n var elem = this.getGHeaderCell(field);\n if (this.groupSettings.allowReordering) {\n var parent_1 = parentsUntil(elem, 'e-group-animator');\n remove(parent_1);\n }\n else {\n remove(elem);\n }\n this.updateGroupDropArea();\n }\n this.isAppliedUnGroup = false;\n };\n Group.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'columns':\n // eslint-disable-next-line no-case-declarations\n var args = void 0;\n if (this.contentRefresh) {\n if (!this.isAppliedUnGroup) {\n if (!this.isAppliedGroup) {\n this.updateGroupDropArea(true);\n for (var j = 0; j < this.parent.sortSettings.columns.length; j++) {\n if (this.parent.sortSettings.columns[parseInt(j.toString(), 10)].isFromGroup) {\n this.parent.sortSettings.columns.splice(j, 1);\n j--;\n }\n }\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.colName = this.groupSettings.columns[parseInt(i.toString(), 10)];\n var col = this.parent.getColumnByField(this.colName);\n col.visible = this.parent.groupSettings.showGroupedColumn;\n this.groupAddSortingQuery(this.colName);\n if (i < this.groupSettings.columns.length - 1) {\n this.addColToGroupDrop(this.groupSettings.columns[parseInt(i.toString(), 10)]);\n }\n }\n }\n args = {\n columnName: this.colName, requestType: e.properties[\"\" + prop].length ? 'grouping' : 'ungrouping',\n type: actionBegin\n };\n }\n else {\n args = { columnName: this.colName, requestType: 'ungrouping', type: actionBegin };\n }\n if (!this.groupSettings.showGroupedColumn) {\n var columns = e.oldProperties[\"\" + prop];\n for (var i = 0; i < columns.length; i++) {\n if (e.properties[\"\" + prop].indexOf(columns[parseInt(i.toString(), 10)]) === -1) {\n this.parent.getColumnByField(columns[parseInt(i.toString(), 10)]).visible = true;\n }\n }\n }\n this.parent.notify(modelChanged, args);\n }\n break;\n case 'showDropArea':\n this.updateGroupDropArea();\n if (this.groupSettings.showDropArea) {\n this.element.style.display = '';\n this.parent.headerModule.refreshUI();\n }\n else {\n this.element.style.display = 'none';\n }\n break;\n case 'showGroupedColumn':\n this.updateGroupedColumn(this.groupSettings.showGroupedColumn);\n this.parent.notify(modelChanged, { requestType: 'refresh' });\n break;\n case 'showUngroupButton':\n this.updateButtonVisibility(this.groupSettings.showUngroupButton, 'e-ungroupbutton');\n break;\n case 'showToggleButton':\n this.updateButtonVisibility(this.groupSettings.showToggleButton, 'e-togglegroupbutton ');\n this.parent.refreshHeader();\n break;\n case 'enableLazyLoading':\n this.parent.freezeRefresh();\n break;\n }\n }\n };\n Group.prototype.updateGroupedColumn = function (isVisible) {\n for (var i = 0; i < this.groupSettings.columns.length; i++) {\n this.parent.getColumnByField(this.groupSettings.columns[parseInt(i.toString(), 10)]).visible = isVisible;\n }\n };\n Group.prototype.updateButtonVisibility = function (isVisible, className) {\n var gHeader = [].slice.call(this.element.getElementsByClassName(className));\n for (var i = 0; i < gHeader.length; i++) {\n gHeader[parseInt(i.toString(), 10)].style.display = isVisible ? '' : 'none';\n }\n };\n Group.prototype.enableAfterRender = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n /**\n * To destroy the reorder\n *\n * @returns {void}\n * @hidden\n */\n Group.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.parent.isDestroyed || !this.parent.allowGrouping) && !this.parent.refreshing) {\n this.clearGrouping();\n }\n this.unWireEvent();\n this.removeEventListener();\n this.refreshToggleBtn(true);\n if (this.element.parentNode) {\n remove(this.element);\n }\n //call ejdrag and drop destroy\n };\n /**\n * Clears all the grouped columns of the Grid.\n *\n * @returns {void}\n */\n Group.prototype.clearGrouping = function () {\n var cols = JSON.parse(JSON.stringify(this.groupSettings.columns));\n this.contentRefresh = false;\n for (var i = 0, len = cols.length; i < len; i++) {\n if (i === (len - 1)) {\n this.contentRefresh = true;\n }\n this.ungroupColumn(cols[parseInt(i.toString(), 10)]);\n }\n this.contentRefresh = true;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Group.prototype.getModuleName = function () {\n return 'group';\n };\n Group.prototype.refreshSortIcons = function () {\n var gObj = this.parent;\n var header;\n var cols = gObj.sortSettings.columns;\n var gCols = gObj.groupSettings.columns;\n var fieldNames = this.parent.getColumns().map(function (c) { return c.field; });\n this.refreshToggleBtn();\n for (var i = 0, len = cols.length; i < len; i++) {\n if (fieldNames.indexOf(cols[parseInt(i.toString(), 10)].field) === -1) {\n continue;\n }\n header = gObj.getColumnHeaderByField(cols[parseInt(i.toString(), 10)].field);\n if (!gObj.allowSorting && (this.sortedColumns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1 ||\n this.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) > -1)) {\n classList(header.querySelector('.e-sortfilterdiv'), ['e-ascending', 'e-icon-ascending'], []);\n if (cols.length > 1) {\n header.querySelector('.e-headercelldiv').appendChild(this.parent.createElement('span', { className: 'e-sortnumber', innerHTML: (i + 1).toString() }));\n }\n }\n else if (this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field) && this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).getElementsByClassName('e-groupsort').length) {\n if (cols[parseInt(i.toString(), 10)].direction === 'Ascending') {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-ascending', 'e-icon-ascending'], ['e-descending', 'e-icon-descending']);\n }\n else {\n classList(this.getGHeaderCell(cols[parseInt(i.toString(), 10)].field).querySelector('.e-groupsort'), ['e-descending', 'e-icon-descending'], ['e-ascending', 'e-icon-ascending']);\n }\n }\n }\n for (var i = 0, len = gCols.length; i < len; i++) {\n if (fieldNames.indexOf(gCols[parseInt(i.toString(), 10)]) === -1) {\n continue;\n }\n gObj.getColumnHeaderByField(gCols[parseInt(i.toString(), 10)]).setAttribute('aria-grouped', 'true');\n }\n };\n Group.prototype.getGHeaderCell = function (field) {\n if (this.element && this.element.querySelector('[ej-mappingname=\"' + field + '\"]')) {\n return this.element.querySelector('[ej-mappingname=\"' + field + '\"]').parentElement;\n }\n return null;\n };\n Group.prototype.onGroupAggregates = function (editedData) {\n if (this.parent.groupSettings.enableLazyLoading) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.updateLazyLoadGroupAggregates(editedData);\n }\n return;\n }\n var aggregates = this.iterateGroupAggregates(editedData);\n var rowData = this.groupGenerator.generateRows(aggregates, {});\n var summaryRows = this.parent.getRowsObject().filter(function (row$$1) { return !row$$1.isDataRow; });\n var updateSummaryRows = rowData.filter(function (data) { return !data.isDataRow; });\n if (this.parent.isReact || this.parent.isVue) {\n this.parent.destroyTemplate(['groupFooterTemplate', 'groupCaptionTemplate', 'footerTemplate']);\n }\n for (var i = 0; i < updateSummaryRows.length; i++) {\n var row$$1 = updateSummaryRows[parseInt(i.toString(), 10)];\n var cells = row$$1.cells.filter(function (cell) { return cell.isDataCell; });\n var args = { cells: cells, data: row$$1.data, dataUid: summaryRows[parseInt(i.toString(), 10)] ? summaryRows[parseInt(i.toString(), 10)].uid : '' };\n this.parent.notify(refreshAggregateCell, args);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregates = function (data, remoteResult) {\n var _this = this;\n var groupCaptionTemplates = this.getGroupAggregateTemplates(true);\n var groupFooterTemplates = this.getGroupAggregateTemplates(false);\n if (!groupCaptionTemplates.length && !groupFooterTemplates.length) {\n return;\n }\n var gObj = this.parent;\n var isRemote = gObj.getDataModule().isRemote();\n var updatedData = data[0];\n var editedRow$$1 = data.row;\n var groupedCols = gObj.groupSettings.columns;\n var groupLazyLoadRenderer = gObj.contentModule;\n var groupCache = groupLazyLoadRenderer.getGroupCache();\n var currentPageGroupCache = groupCache[gObj.pageSettings.currentPage];\n var result = remoteResult ? remoteResult : [];\n var _loop_1 = function (i) {\n var groupField = groupedCols[parseInt(i.toString(), 10)];\n var groupKey = updatedData[\"\" + groupField];\n var groupCaptionRowObject = this_1.getGroupCaptionRowObject(editedRow$$1, groupedCols.length - i);\n if (isRemote && result.length) {\n if (i !== 0) {\n var prevGroupField = groupedCols[i - 1];\n var prevGroupKey_1 = updatedData[\"\" + prevGroupField];\n result = result.find(function (data) {\n return data.key === prevGroupKey_1;\n }).items;\n }\n this_1.updateLazyLoadGroupAggregatesRow(result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n else {\n var query = gObj.renderModule.data.generateQuery();\n if (i !== 0) {\n var currentLevelCaptionRowObjects = currentPageGroupCache.filter(function (data) {\n return data.isCaptionRow && data.parentUid === groupCaptionRowObject.parentUid;\n });\n var index = currentLevelCaptionRowObjects.indexOf(groupCaptionRowObject);\n var fields = gObj.groupSettings.columns.slice(0, i).reverse();\n var keys = fields.map(function (data) {\n return updatedData[\"\" + data];\n });\n var pred = generateExpandPredicates(fields, keys, groupLazyLoadRenderer);\n var predicateList = getPredicates(pred);\n var lazyLoad = { level: i, skip: index, take: 1, where: predicateList };\n query.lazyLoad.push({ key: 'onDemandGroupInfo', value: lazyLoad });\n }\n gObj.renderModule.data.getData({}, query).then(function (e) {\n if (isRemote) {\n _this.updateLazyLoadGroupAggregates(data, e.result);\n }\n else {\n _this.updateLazyLoadGroupAggregatesRow(e.result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates);\n }\n if (i === groupedCols.length - 1 || isRemote) {\n _this.destroyRefreshGroupCaptionFooterTemplate();\n }\n }).catch(function (e) { return gObj.renderModule.dataManagerFailure(e, { requestType: 'grouping' }); });\n if (isRemote) {\n return \"break\";\n }\n }\n };\n var this_1 = this;\n for (var i = 0; i < groupedCols.length; i++) {\n var state_1 = _loop_1(i);\n if (state_1 === \"break\")\n break;\n }\n };\n Group.prototype.destroyRefreshGroupCaptionFooterTemplate = function () {\n var gObj = this.parent;\n if (gObj.isAngular || gObj.isReact || gObj.isVue) {\n gObj.destroyTemplate(['groupCaptionTemplate', 'groupFooterTemplate']);\n }\n gObj.refreshGroupCaptionFooterTemplate();\n gObj.removeMaskRow();\n gObj.hideSpinner();\n };\n Group.prototype.updateLazyLoadGroupAggregatesRow = function (result, groupKey, groupCaptionRowObject, currentPageGroupCache, groupCaptionTemplates, groupFooterTemplates) {\n var updatedGroupCaptionData = result.find(function (data) {\n return data.key === groupKey;\n });\n if (groupCaptionTemplates.length) {\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupCaptionRowObject, groupCaptionTemplates);\n }\n if (groupFooterTemplates.length) {\n var groupFooterRowObject = currentPageGroupCache.find(function (data) {\n return data.isAggregateRow && data.parentUid === groupCaptionRowObject.uid;\n });\n this.updateLazyLoadGroupAggregatesCell(updatedGroupCaptionData, groupFooterRowObject, groupFooterTemplates);\n }\n };\n Group.prototype.updateLazyLoadGroupAggregatesCell = function (updatedGroupCaptionData, captionFooterRowObject, captionFooterTemplates) {\n var prevCaptionFooterData = captionFooterRowObject.data;\n var updatedGroupCaptionDataAggregates = updatedGroupCaptionData.aggregates;\n if (captionFooterRowObject.isCaptionRow) {\n prevCaptionFooterData.aggregates = updatedGroupCaptionDataAggregates;\n }\n for (var i = 0; i < captionFooterTemplates.length; i++) {\n var template = captionFooterTemplates[parseInt(i.toString(), 10)];\n var key = template.field + ' - ' + template.type;\n var fieldData = prevCaptionFooterData[template.field];\n fieldData[\"\" + key] = updatedGroupCaptionDataAggregates[\"\" + key];\n fieldData[capitalizeFirstLetter(template.type)] = updatedGroupCaptionDataAggregates[\"\" + key];\n if (fieldData[template.type]) {\n fieldData[template.type] = updatedGroupCaptionDataAggregates[\"\" + key];\n }\n }\n };\n Group.prototype.getGroupCaptionRowObject = function (element, groupCaptionIndex) {\n var gObj = this.parent;\n var uid = element.getAttribute('data-uid');\n var parentCaptionRowObject = gObj.getRowObjectFromUID(uid);\n for (var i = 0; i < groupCaptionIndex; i++) {\n parentCaptionRowObject = gObj.getRowObjectFromUID(parentCaptionRowObject.parentUid);\n }\n return parentCaptionRowObject;\n };\n /**\n * @param { boolean } groupCaptionTemplate - Defines template either group caption or footer\n * @returns { Object[] } - Returns template array\n * @hidden\n */\n Group.prototype.getGroupAggregateTemplates = function (groupCaptionTemplate) {\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row$$1 = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row$$1.columns.length; k++) {\n if ((groupCaptionTemplate && row$$1.columns[parseInt(k.toString(), 10)].groupCaptionTemplate)\n || (!groupCaptionTemplate && row$$1.columns[parseInt(k.toString(), 10)].groupFooterTemplate)) {\n var aggr = {};\n var type = row$$1.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row$$1.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n }\n return aggregates;\n };\n Group.prototype.iterateGroupAggregates = function (editedData) {\n var updatedData = editedData instanceof Array ? editedData : [];\n var rows = this.parent.getRowsObject();\n var initData = this.parent.getCurrentViewRecords();\n var deletedCols = [];\n var changeds = rows.map(function (row$$1) {\n if (row$$1.edit === 'delete') {\n deletedCols.push(row$$1.data);\n }\n return row$$1.changes instanceof Object ? row$$1.changes : row$$1.data;\n });\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n changeds = updatedData.length === 0 ? changeds : updatedData;\n var mergeData = initData.map(function (item) {\n var pKeyVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = changeds.some(function (cItem) {\n value = cItem;\n return pKeyVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n var eData = editedData;\n if (!(eData.type && eData.type === 'cancel') && deletedCols.length > 0) {\n for (var i = 0; i < deletedCols.length; i++) {\n var index = mergeData.indexOf(deletedCols[parseInt(i.toString(), 10)]);\n mergeData.splice(index, 1);\n }\n }\n var aggregates = [];\n var aggregateRows = this.parent.aggregates;\n for (var j = 0; j < aggregateRows.length; j++) {\n var row$$1 = aggregateRows[parseInt(j.toString(), 10)];\n for (var k = 0; k < row$$1.columns.length; k++) {\n var aggr = {};\n var type = row$$1.columns[parseInt(k.toString(), 10)].type.toString();\n aggr = { type: type.toLowerCase(), field: row$$1.columns[parseInt(k.toString(), 10)].field };\n aggregates.push(aggr);\n }\n }\n var result;\n var aggrds;\n var groupedCols = this.parent.groupSettings.columns;\n for (var l = 0; l < groupedCols.length; l++) {\n aggrds = result ? result : mergeData;\n result = DataUtil.group(aggrds, groupedCols[parseInt(l.toString(), 10)], aggregates, null, null);\n }\n return result;\n };\n Group.prototype.updateExpand = function (args) {\n var uid = args.uid;\n var isExpand = args.isExpand;\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n var row$$1 = rows[parseInt(i.toString(), 10)];\n if (row$$1.uid === uid || isNullOrUndefined(uid)) {\n row$$1.isExpand = isExpand;\n var _loop_2 = function (j) {\n var childRow = rows[parseInt(j.toString(), 10)];\n var closestParent = void 0;\n if (childRow.parentUid !== row$$1.uid) {\n closestParent = rows.filter(function (x) { return x.uid === childRow.parentUid; })[0];\n }\n if (childRow.parentUid === row$$1.uid) {\n childRow.visible = row$$1.isExpand;\n }\n else if (!isNullOrUndefined(closestParent) && childRow.parentUid === closestParent.uid) {\n if (closestParent.isExpand && closestParent.visible === true) {\n childRow.visible = true;\n }\n else if (closestParent.isExpand && closestParent.visible === false) {\n childRow.visible = false;\n }\n }\n if (isNullOrUndefined(uid)) {\n return \"break\";\n }\n };\n for (var j = i + 1; j < rows.length; j++) {\n var state_2 = _loop_2(j);\n if (state_2 === \"break\")\n break;\n }\n }\n }\n this.parent.notify(contentReady, { rows: rows, args: { isFrozen: false, rows: rows } });\n };\n return Group;\n}());\n\n/**\n * The `DetailRow` module is used to handle detail template and hierarchy Grid operations.\n */\nvar DetailRow = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid detail template module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifes the serviceLocator\n * @hidden\n */\n function DetailRow(parent, locator) {\n //Internal variables\n this.aria = new AriaService();\n this.childRefs = [];\n this.parent = parent;\n if (this.parent.isDestroyed) {\n return;\n }\n this.focus = locator.getService('focus');\n this.parent.on(click, this.clickHandler, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(expandChildGrid, this.expand, this);\n this.parent.on(columnVisibilityChanged, this.refreshColSpan, this);\n this.parent.on(destroy, this.destroyChildGrids, this);\n this.parent.on(destroyChildGrid, this.destroyChildGrids, this);\n this.serviceLocator = locator;\n }\n DetailRow.prototype.clickHandler = function (e) {\n this.toogleExpandcollapse(closest(e.target, 'td'));\n };\n DetailRow.prototype.toogleExpandcollapse = function (target) {\n this.l10n = this.serviceLocator.getService('localization');\n var gObj = this.parent;\n var table$$1 = this.parent.getContentTable();\n var lastrowIdx = this.parent.getCurrentViewRecords().length - 1;\n var parent = 'parentDetails';\n var childGrid;\n var isExpanded = target && target.classList.contains('e-detailrowcollapse');\n if (!(target && (target.classList.contains('e-detailrowcollapse') || target.classList.contains('e-detailrowexpand')))\n || (target && target.classList.contains('e-masked-cell'))) {\n return;\n }\n var tr = target.parentElement;\n var uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(uid);\n var needToRefresh = false;\n var nextRow = this.parent.getContentTable().querySelector(tbody).children[tr.rowIndex + 1];\n if (target.classList.contains('e-detailrowcollapse')) {\n var data = rowObj.data;\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = '';\n gObj.notify(detailStateChange, { data: data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n needToRefresh = true;\n }\n else if (gObj.getDetailTemplate() || gObj.childGrid) {\n var rowId = getUid('grid-row');\n var detailRow = this.parent.createElement('tr', { className: 'e-detailrow', attrs: { 'data-uid': rowId, role: 'row' } });\n var detailCell = this.parent.createElement('td', { className: 'e-detailcell' });\n var colSpan = this.parent.getVisibleColumns().length;\n if (this.parent.allowRowDragAndDrop) {\n colSpan++;\n }\n detailCell.setAttribute('colspan', colSpan.toString());\n var row$$1 = new Row({\n isDataRow: true,\n isExpand: true,\n uid: rowId,\n isDetailRow: true,\n cells: [new Cell({ cellType: CellType.Indent }), new Cell({ isDataCell: true, visible: true })]\n });\n row$$1.parentUid = rowObj.uid;\n for (var i = 0, len = gObj.groupSettings.columns.length; i < len; i++) {\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n row$$1.cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n detailRow.appendChild(this.parent.createElement('td', { className: 'e-detailindentcell' }));\n detailRow.appendChild(detailCell);\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n if (gObj.detailTemplate) {\n var isReactCompiler = this.parent.isReact && typeof (gObj.detailTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var detailTemplateID = gObj.element.id + 'detailTemplate';\n if (isReactCompiler || isReactChild) {\n gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID, null, null, detailCell);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(detailCell, gObj.getDetailTemplate()(data, gObj, 'detailTemplate', detailTemplateID, undefined, undefined, undefined, this.parent['root']));\n }\n }\n else {\n childGrid = new Grid(this.getGridModel(gObj, rowObj, gObj.printMode));\n this.childRefs.push(childGrid);\n if (childGrid.query) {\n childGrid.query = childGrid.query.clone();\n }\n childGrid[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: gObj.childGrid.queryString && isComplexField(gObj.childGrid.queryString) ?\n getObject(gObj.childGrid.queryString, data) : data[gObj.childGrid.queryString],\n parentRowData: data\n };\n if (gObj.isReact) {\n childGrid.parentDetails.parentInstObj = gObj;\n }\n else if (gObj.parentDetails && gObj.parentDetails.parentInstObj && gObj.parentDetails.parentInstObj.isReact) {\n childGrid.parentDetails.parentInstObj = gObj.parentDetails.parentInstObj;\n }\n childGrid.isLegacyTemplate = gObj.isReact\n || gObj.isLegacyTemplate;\n if (gObj.isPrinting) {\n childGrid.isPrinting = true;\n childGrid.on(contentReady, this.promiseResolve(childGrid), this);\n childGrid.on(onEmpty, this.promiseResolve(childGrid), this);\n }\n rowObj.childGrid = childGrid;\n var modules = childGrid.getInjectedModules();\n var injectedModues = gObj.getInjectedModules();\n if (!modules || modules.length !== injectedModues.length) {\n childGrid.setInjectedModules(injectedModues);\n }\n var gridElem = this.parent.createElement('div', {\n id: 'child' + parents(tr, 'e-grid').length +\n '_grid' + tr.rowIndex + getUid(''), className: 'e-childgrid'\n });\n detailCell.appendChild(gridElem);\n childGrid.appendTo(gridElem);\n }\n detailRow.appendChild(detailCell);\n if (tr.nextSibling) {\n tr.parentNode.insertBefore(detailRow, tr.nextSibling);\n }\n else {\n tr.parentNode.appendChild(detailRow);\n }\n var rowElems = gObj.getRows();\n var rowObjs = gObj.getRowsObject();\n rowElems.splice(rowElems.indexOf(tr) + 1, 0, detailRow);\n rowObjs.splice(rowObjs.indexOf(rowObj) + 1, 0, row$$1);\n gObj.trigger(detailDataBound, { detailElement: detailCell, data: data, childGrid: childGrid });\n gObj.notify(detailDataBound, { rows: rowObjs });\n }\n classList(target, ['e-detailrowexpand'], ['e-detailrowcollapse']);\n classList(target.firstElementChild, ['e-dtdiagonaldown', 'e-icon-gdownarrow'], ['e-dtdiagonalright', 'e-icon-grightarrow']);\n rowObj.isExpand = true;\n if (target.classList.contains('e-lastrowcell') && this.parent.getContent().clientHeight > table$$1.scrollHeight) {\n removeClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n var detailrowIdx = table$$1.querySelector(tbody).getElementsByClassName('e-detailrow').length - 1;\n addClass(table$$1.querySelector(tbody).getElementsByClassName('e-detailrow')[parseInt(detailrowIdx.toString(), 10)].childNodes, ['e-lastrowcell']);\n this.lastrowcell = true;\n }\n this.aria.setExpand(target, true);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Expanded'));\n }\n else {\n if (this.isDetailRow(nextRow)) {\n nextRow.style.display = 'none';\n gObj.notify(detailStateChange, { data: rowObj.data,\n childGrid: gObj.childGrid, detailElement: target, isExpanded: isExpanded });\n }\n classList(target, ['e-detailrowcollapse'], ['e-detailrowexpand']);\n classList(target.firstElementChild, ['e-dtdiagonalright', 'e-icon-grightarrow'], ['e-dtdiagonaldown', 'e-icon-gdownarrow']);\n if (parseInt(tr.getAttribute(dataRowIndex), 10) === lastrowIdx && this.lastrowcell) {\n addClass(target.parentElement.querySelectorAll('td'), 'e-lastrowcell');\n this.lastrowcell = false;\n }\n rowObj.isExpand = false;\n needToRefresh = true;\n this.aria.setExpand(target, false);\n target.firstElementChild.setAttribute('title', this.l10n.getConstant('Collapsed'));\n }\n if (!isNullOrUndefined(gObj.detailTemplate) || (gObj.childGrid && needToRefresh)) {\n gObj.updateVisibleExpandCollapseRows();\n gObj.notify(refreshExpandandCollapse, { rows: gObj.getRowsObject() });\n }\n if (this.parent.allowTextWrap && this.parent.height === 'auto') {\n if (this.parent.getContentTable().scrollHeight > this.parent.getContent().clientHeight) {\n this.parent.scrollModule.setPadding();\n }\n else {\n this.parent.scrollModule.removePadding();\n }\n }\n };\n /**\n * @hidden\n * @param {IGrid} gObj - specifies the grid Object\n * @param {Row}rowObj - specifies the row object\n * @param {string} printMode - specifies the printmode\n * @returns {Object} returns the object\n */\n DetailRow.prototype.getGridModel = function (gObj, rowObj, printMode) {\n var gridModel;\n if (gObj.isPrinting && rowObj.isExpand && gObj.expandedRows &&\n gObj.expandedRows[rowObj.index] && gObj.expandedRows[rowObj.index].gridModel) {\n gObj.expandedRows[rowObj.index].gridModel.hierarchyPrintMode = gObj.childGrid.hierarchyPrintMode;\n gridModel = gObj.expandedRows[rowObj.index].gridModel;\n }\n else {\n if (gObj.isPrinting && gObj.childGrid.allowPaging) {\n gObj.childGrid.allowPaging = printMode === 'CurrentPage';\n }\n gridModel = extend({}, {}, gObj.childGrid, true);\n }\n return gridModel;\n };\n DetailRow.prototype.promiseResolve = function (grid) {\n var _this = this;\n return function () {\n grid.off(contentReady, _this.promiseResolve);\n grid.off(onEmpty, _this.promiseResolve);\n grid.notify(hierarchyPrint, {});\n };\n };\n DetailRow.prototype.isDetailRow = function (row$$1) {\n return row$$1 && row$$1.classList.contains('e-detailrow');\n };\n DetailRow.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (this.parent.isDestroyed || !gridElement || (!gridElement.querySelector('.' + gridHeader) &&\n !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.parent.off(click, this.clickHandler);\n this.parent.off(destroy, this.destroy);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(expandChildGrid, this.expand);\n this.parent.off(columnVisibilityChanged, this.refreshColSpan);\n this.parent.off(destroy, this.destroyChildGrids);\n this.parent.off(destroyChildGrid, this.destroyChildGrids);\n };\n DetailRow.prototype.getTDfromIndex = function (index, className) {\n var tr = !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n if (tr && tr.querySelector(className)) {\n return tr.querySelector(className);\n }\n return null;\n };\n /**\n * Expands a detail row with the given target.\n *\n * @param {Element} target - Defines the collapsed element to expand.\n * @returns {void}\n */\n DetailRow.prototype.expand = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowcollapse');\n }\n if (target && target.classList.contains('e-detailrowcollapse')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Collapses a detail row with the given target.\n *\n * @param {Element} target - Defines the expanded element to collapse.\n * @returns {void}\n */\n DetailRow.prototype.collapse = function (target) {\n if (!isNaN(target)) {\n target = this.getTDfromIndex(target, '.e-detailrowexpand');\n }\n if (target && target.classList.contains('e-detailrowexpand')) {\n this.toogleExpandcollapse(target);\n }\n };\n /**\n * Expands all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.expandAll = function () {\n this.expandCollapse(true);\n this.parent.trigger(actionComplete, { requestType: 'expandAllComplete', type: actionComplete, moduleObj: this });\n };\n /**\n * Collapses all the detail rows of the Grid.\n *\n * @returns {void}\n */\n DetailRow.prototype.collapseAll = function () {\n this.expandCollapse(false);\n this.parent.trigger(actionComplete, { requestType: 'collapseAllComplete', type: actionComplete, moduleObj: this });\n };\n DetailRow.prototype.expandCollapse = function (isExpand) {\n var td;\n var rows = this.parent.getDataRows();\n for (var i = 0, len = rows.length; i < len; i++) {\n td = rows[parseInt(i.toString(), 10)].querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (isExpand) {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n };\n DetailRow.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n switch (e.action) {\n case 'ctrlDownArrow':\n this.expandAll();\n break;\n case 'ctrlUpArrow':\n this.collapseAll();\n break;\n case 'altUpArrow':\n case 'altDownArrow':\n // eslint-disable-next-line no-case-declarations\n var selected = gObj.allowSelection ? gObj.getSelectedRowIndexes() : [];\n if (selected.length) {\n var dataRow = gObj.getDataRows()[selected[selected.length - 1]];\n var td = dataRow.querySelector('.e-detailrowcollapse, .e-detailrowexpand');\n if (e.action === 'altDownArrow') {\n this.expand(td);\n }\n else {\n this.collapse(td);\n }\n }\n break;\n case 'enter':\n if (this.parent.isEdit) {\n return;\n }\n // eslint-disable-next-line no-case-declarations\n var element = this.focus.getFocusedElement();\n if (element && (element.classList.contains('e-icon-grightarrow') || element.classList.contains('e-icon-gdownarrow'))) {\n element = element.parentElement;\n }\n if (element && !element.classList.contains('e-detailrowcollapse') &&\n !element.classList.contains('e-detailrowexpand')) {\n break;\n }\n this.toogleExpandcollapse(element);\n break;\n }\n };\n DetailRow.prototype.refreshColSpan = function () {\n var detailrows = this.parent.contentModule.getTable().querySelectorAll('tr.e-detailrow');\n var colSpan = this.parent.getVisibleColumns().length;\n for (var i = 0; i < detailrows.length; i++) {\n detailrows[parseInt(i.toString(), 10)].querySelector('.e-detailcell').setAttribute('colspan', colSpan + '');\n }\n };\n DetailRow.prototype.destroyChildGrids = function () {\n var rows = this.parent.getRowsObject();\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].childGrid = null;\n }\n for (var i = 0; i < this.childRefs.length; i++) {\n if (!this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.childRefs = [];\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n DetailRow.prototype.getModuleName = function () {\n return 'detailRow';\n };\n return DetailRow;\n}());\n\n/**\n *\n * The `Toolbar` module is used to handle ToolBar actions.\n */\nvar Toolbar$1 = /** @__PURE__ @class */ (function () {\n function Toolbar$$1(parent, serviceLocator) {\n this.predefinedItems = {};\n this.isSearched = false;\n this.items = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print', 'Search',\n 'ColumnChooser', 'PdfExport', 'ExcelExport', 'CsvExport', 'WordExport'];\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n Toolbar$$1.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n var preItems = ['Add', 'Edit', 'Update', 'Delete', 'Cancel', 'Print',\n 'PdfExport', 'ExcelExport', 'WordExport', 'CsvExport'];\n var isAdaptive = this.parent.enableAdaptiveUI;\n var excludingItems = ['Edit', 'Delete', 'Update', 'Cancel'];\n for (var _i = 0, preItems_1 = preItems; _i < preItems_1.length; _i++) {\n var item = preItems_1[_i];\n var itemStr = item.toLowerCase();\n var localeName = itemStr[0].toUpperCase() + itemStr.slice(1);\n this.predefinedItems[\"\" + item] = {\n id: this.gridID + '_' + itemStr, prefixIcon: 'e-' + itemStr,\n text: this.l10n.getConstant(localeName), tooltipText: this.l10n.getConstant(localeName)\n };\n if (isAdaptive) {\n this.predefinedItems[\"\" + item].text = '';\n this.predefinedItems[\"\" + item].visible = excludingItems.indexOf(item) === -1;\n }\n }\n this.predefinedItems.Search = {\n id: this.gridID + '_search',\n tooltipText: this.l10n.getConstant('Search'), align: 'Right', cssClass: 'e-search-wrapper',\n type: 'Input'\n };\n this.predefinedItems.ColumnChooser = {\n id: this.gridID + '_' + 'columnchooser', cssClass: 'e-cc e-ccdiv e-cc-toolbar', suffixIcon: 'e-' + 'columnchooser-btn',\n text: isAdaptive ? '' : this.l10n.getConstant('Columnchooser'),\n tooltipText: this.l10n.getConstant('Columnchooser'), align: 'Right'\n };\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n this.predefinedItems.responsiveFilter = {\n id: this.gridID + '_' + 'responsivefilter', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resfilter-icon', tooltipText: this.l10n.getConstant('FilterButton')\n };\n }\n if (this.parent.allowSorting) {\n this.predefinedItems.responsiveSort = {\n id: this.gridID + '_' + 'responsivesort', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'ressort-icon', tooltipText: this.l10n.getConstant('Sort')\n };\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n this.predefinedItems.responsiveBack = {\n id: this.gridID + '_' + 'responsiveback', cssClass: 'e-gridresponsiveicons e-icons',\n suffixIcon: 'e-' + 'resback-icon', visible: false\n };\n }\n this.createToolbar();\n };\n /**\n * Gets the toolbar of the Grid.\n *\n * @returns {Element} returns the element\n * @hidden\n */\n Toolbar$$1.prototype.getToolbar = function () {\n return this.toolbar.element;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n */\n Toolbar$$1.prototype.destroy = function () {\n if (this.toolbar && !this.toolbar.isDestroyed) {\n if (!this.toolbar.element) {\n this.parent.destroyTemplate(['toolbarTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n this.toolbar.off('render-react-toolbar-template', this.addReactToolbarPortals);\n this.toolbar.destroy();\n }\n this.unWireEvent();\n this.removeEventListener();\n if (this.element.parentNode) {\n remove(this.element);\n }\n }\n };\n Toolbar$$1.prototype.bindSearchEvents = function () {\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n this.wireEvent();\n this.refreshToolbarItems();\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n };\n Toolbar$$1.prototype.toolbarCreated = function (isNormal) {\n if (this.element.querySelector('.e-search-wrapper')) {\n if (!this.parent.enableAdaptiveUI || isNormal) {\n var classList$$1 = this.parent.cssClass ? 'e-input-group e-search ' + this.parent.cssClass\n : 'e-input-group e-search';\n this.element.querySelector('.e-search-wrapper').innerHTML = '
\\\n \\\n \\\n \\\n
';\n }\n else {\n this.element.querySelector('.e-search-wrapper').innerHTML = '\\\n \\\n
';\n }\n }\n this.bindSearchEvents();\n };\n Toolbar$$1.prototype.createToolbar = function () {\n var items = this.getItems();\n this.toolbar = new Toolbar({\n items: items,\n clicked: this.toolbarClickHandler.bind(this),\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n created: this.toolbarCreated.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n });\n this.toolbar.isReact = this.parent.isReact;\n this.toolbar.on('render-react-toolbar-template', this.addReactToolbarPortals, this);\n var isStringTemplate = 'isStringTemplate';\n this.toolbar[\"\" + isStringTemplate] = true;\n var viewStr = 'viewContainerRef';\n var registerTemp = 'registeredTemplate';\n if (this.parent[\"\" + viewStr]) {\n this.toolbar[\"\" + registerTemp] = {};\n this.toolbar[\"\" + viewStr] = this.parent[\"\" + viewStr];\n }\n this.element = this.parent.createElement('div', { id: this.gridID + '_toolbarItems' });\n if (this.parent.enableAdaptiveUI) {\n this.element.classList.add('e-res-toolbar');\n }\n if (this.parent.toolbarTemplate) {\n if (typeof (this.parent.toolbarTemplate) === 'string') {\n this.toolbar.appendTo(this.parent.toolbarTemplate);\n this.element = this.toolbar.element;\n }\n else {\n var isReactCompiler = this.parent.isReact && typeof (this.parent.toolbarTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n var ID = this.parent.element.id + 'toolbarTemplate';\n if (isReactCompiler || isReactChild) {\n templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate', ID, null, null, this.element);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(this.element, templateCompiler(this.parent.toolbarTemplate)({}, this.parent, 'toolbarTemplate'));\n }\n }\n this.element.classList.add('e-temp-toolbar');\n }\n else {\n this.toolbar.appendTo(this.element);\n }\n this.parent.element.insertBefore(this.element, this.parent.getHeaderContent());\n var tlbrLeftElement = this.element.querySelector('.e-toolbar-left');\n var tlbrCenterElement = this.element.querySelector('.e-toolbar-center');\n var tlbrRightElement = this.element.querySelector('.e-toolbar-right');\n var tlbrItems = this.element.querySelector('.e-toolbar-items');\n var tlbrElement = this.element;\n var tlbrLeftWidth = tlbrLeftElement ? tlbrLeftElement.clientWidth : 0;\n var tlbrCenterWidth = tlbrCenterElement ? tlbrCenterElement.clientWidth : 0;\n var tlbrRightWidth = tlbrRightElement ? tlbrRightElement.clientWidth : 0;\n var tlbrItemsWidth = tlbrItems ? tlbrItems.clientWidth : 0;\n var tlbrWidth = tlbrElement ? tlbrElement.clientWidth : 0;\n if (tlbrLeftWidth > tlbrWidth || tlbrCenterWidth > tlbrWidth || tlbrRightWidth > tlbrWidth || tlbrItemsWidth > tlbrWidth) {\n this.toolbar.refreshOverflow();\n }\n };\n Toolbar$$1.prototype.addReactToolbarPortals = function (args) {\n if (this.parent.isReact && args) {\n this.parent.portals = this.parent.portals.concat(args);\n this.parent.renderTemplates();\n }\n };\n Toolbar$$1.prototype.renderResponsiveSearch = function (isRender) {\n if (isRender) {\n this.toolbarCreated(true);\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isSearch);\n this.searchElement = select('#' + this.gridID + '_searchbar', this.element);\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.add('e-responsive-right');\n if (this.parent.searchSettings) {\n this.updateSearchBox();\n }\n this.searchBoxObj.searchFocus({ target: this.searchElement });\n this.searchElement.focus();\n }\n else {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n Toolbar$$1.prototype.refreshResponsiveToolbarItems = function (action) {\n if (action === ResponsiveToolbarAction.isInitial) {\n var id = this.parent.element.id;\n var items = [id + '_edit', id + '_delete'];\n var selectedRecords = this.parent.getSelectedRowIndexes();\n var excludingItems = [id + '_responsiveback', id + '_update', id + '_cancel'];\n for (var _i = 0, _a = this.toolbar.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var toolbarEle = item.template.length ? this.toolbar.element.querySelector(item.template) : this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n if (selectedRecords.length) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n else {\n if (excludingItems.indexOf(item.id) === -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n if (this.searchElement) {\n var right = parentsUntil(this.searchElement, 'e-toolbar-right');\n right.classList.remove('e-responsive-right');\n this.toolbarCreated(false);\n this.unWireEvent();\n this.searchElement = undefined;\n }\n }\n if (action === ResponsiveToolbarAction.isSearch) {\n var items = [this.parent.element.id + '_responsiveback', this.parent.element.id + '_search'];\n for (var _b = 0, _c = this.toolbar.items; _b < _c.length; _b++) {\n var item = _c[_b];\n var toolbarEle = this.toolbar.element.querySelector('#' + item.id);\n if (toolbarEle) {\n if (items.indexOf(item.id) > -1) {\n toolbarEle.parentElement.classList.remove('e-hidden');\n }\n else {\n toolbarEle.parentElement.classList.add('e-hidden');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar$$1.prototype.refreshToolbarItems = function (args) {\n var gObj = this.parent;\n var enableItems = [];\n var disableItems = [];\n var edit = gObj.editSettings;\n var hasData = gObj.currentViewData && gObj.currentViewData.length;\n if (edit.allowAdding) {\n enableItems.push(this.gridID + '_add');\n }\n else {\n disableItems.push(this.gridID + '_add');\n }\n if (edit.allowEditing && hasData) {\n enableItems.push(this.gridID + '_edit');\n }\n else {\n disableItems.push(this.gridID + '_edit');\n }\n if (edit.allowDeleting && hasData) {\n enableItems.push(this.gridID + '_delete');\n }\n else {\n disableItems.push(this.gridID + '_delete');\n }\n if (gObj.editSettings.mode === 'Batch') {\n if (gObj.element.getElementsByClassName('e-updatedtd').length && (edit.allowAdding || edit.allowEditing)) {\n enableItems.push(this.gridID + '_update');\n enableItems.push(this.gridID + '_cancel');\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n else {\n if (gObj.isEdit && (edit.allowAdding || edit.allowEditing)) {\n enableItems = [this.gridID + '_update', this.gridID + '_cancel'];\n disableItems = [this.gridID + '_add', this.gridID + '_edit', this.gridID + '_delete'];\n }\n else {\n disableItems.push(this.gridID + '_update');\n disableItems.push(this.gridID + '_cancel');\n }\n }\n this.enableItems(enableItems, true);\n this.enableItems(disableItems, false);\n };\n Toolbar$$1.prototype.getItems = function () {\n var items = [];\n var toolbarItems = this.parent.toolbar || [];\n if (typeof (this.parent.toolbar) === 'string') {\n return [];\n }\n if (this.parent.rowRenderingMode === 'Vertical') {\n if (this.parent.allowFiltering && this.parent.filterSettings.type !== 'FilterBar') {\n items.push(this.getItemObject('responsiveFilter'));\n }\n if (this.parent.allowSorting) {\n items.push(this.getItemObject('responsiveSort'));\n }\n }\n for (var _i = 0, toolbarItems_1 = toolbarItems; _i < toolbarItems_1.length; _i++) {\n var item = toolbarItems_1[_i];\n switch (typeof item) {\n case 'number':\n items.push(this.getItemObject(this.items[item]));\n break;\n case 'string':\n items.push(this.getItemObject(item));\n break;\n default:\n items.push(this.getItem(item));\n }\n }\n if (this.parent.enableAdaptiveUI && this.parent.toolbar && this.parent.toolbar.indexOf('Search') > -1) {\n items.push(this.getItemObject('responsiveBack'));\n }\n return items;\n };\n Toolbar$$1.prototype.getItem = function (itemObject) {\n var item = this.predefinedItems[itemObject.text];\n return item ? extend(item, item, itemObject) : itemObject;\n };\n Toolbar$$1.prototype.getItemObject = function (itemName) {\n return this.predefinedItems[\"\" + itemName] || { text: itemName, id: this.gridID + '_' + itemName };\n };\n /**\n * Enables or disables ToolBar items.\n *\n * @param {string[]} items - Defines the collection of itemID of ToolBar items.\n * @param {boolean} isEnable - Defines the items to be enabled or disabled.\n * @returns {void}\n * @hidden\n */\n Toolbar$$1.prototype.enableItems = function (items, isEnable) {\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n var element = select('#' + item, this.element);\n if (element) {\n this.toolbar.enableItems(element.parentElement, isEnable);\n }\n }\n };\n Toolbar$$1.prototype.toolbarClickHandler = function (args) {\n var _this = this;\n var gObj = this.parent;\n var gID = this.gridID;\n extend(args, { cancel: false });\n var newArgs = args;\n var originalEvent = args.originalEvent;\n gObj.trigger(toolbarClick, newArgs, function (toolbarargs) {\n toolbarargs.originalEvent = toolbarargs.originalEvent ? toolbarargs.originalEvent : originalEvent;\n if (!toolbarargs.cancel) {\n switch (!isNullOrUndefined(toolbarargs.item) && toolbarargs.item.id) {\n case gID + '_print':\n gObj.print();\n break;\n case gID + '_edit':\n gObj.startEdit();\n break;\n case gID + '_update':\n gObj.endEdit();\n break;\n case gID + '_cancel':\n gObj.closeEdit();\n break;\n case gID + '_add':\n gObj.addRecord();\n break;\n case gID + '_delete':\n gObj.deleteRecord();\n break;\n case gID + '_search':\n if (toolbarargs.originalEvent.target.id === gID + '_searchbutton' && _this.searchElement) {\n _this.search();\n }\n else if (gObj.enableAdaptiveUI && !_this.searchElement\n && (toolbarargs.originalEvent.target.classList.contains('e-search-wrapper')\n || toolbarargs.originalEvent.target.id === gID + '_searchbutton')) {\n _this.renderResponsiveSearch(true);\n }\n else if (toolbarargs.originalEvent.target.classList.contains('e-clear-icon') && toolbarargs.originalEvent.target.id === gID + '_clearbutton' && _this.searchElement) {\n _this.searchElement.value = '';\n _this.sIcon.classList.remove('e-clear-icon');\n _this.sIcon.removeAttribute('title');\n _this.sIcon.style.cursor = 'default';\n if (_this.isSearched) {\n _this.parent.search(_this.searchElement.value);\n _this.isSearched = false;\n }\n }\n break;\n case gID + '_columnchooser':\n /* eslint-disable */\n var tarElement = _this.parent.element.querySelector('.e-ccdiv');\n var y = tarElement.getBoundingClientRect().top;\n var x = tarElement.getBoundingClientRect().left;\n var targetEle = toolbarargs.originalEvent.target;\n /* eslint-enable */\n y = tarElement.getBoundingClientRect().top + tarElement.offsetTop;\n gObj.createColumnchooser(x, y, targetEle);\n break;\n case gID + '_responsivefilter':\n gObj.showResponsiveCustomFilter();\n break;\n case gID + '_responsivesort':\n gObj.showResponsiveCustomSort();\n break;\n case gID + '_responsiveback':\n _this.renderResponsiveSearch(false);\n break;\n }\n }\n });\n };\n Toolbar$$1.prototype.modelChanged = function (e) {\n if (e.module === 'edit') {\n this.refreshToolbarItems();\n }\n };\n Toolbar$$1.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName() || !this.parent.toolbar) {\n return;\n }\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar$$1.prototype.keyUpHandler = function (e) {\n if (e.keyCode === 13) {\n this.search();\n }\n if (this.searchElement) {\n this.sIcon = this.searchElement.parentElement.querySelector('.e-sicon');\n if (this.searchElement.value.length && !isNullOrUndefined(this.sIcon)) {\n this.sIcon.classList.add('e-clear-icon');\n this.sIcon.setAttribute('title', 'Clear');\n this.sIcon.style.cursor = 'pointer';\n }\n else {\n this.sIcon.classList.remove('e-clear-icon');\n this.sIcon.removeAttribute('title');\n this.sIcon.style.cursor = 'default';\n }\n }\n };\n Toolbar$$1.prototype.search = function () {\n this.isSearched = true;\n this.parent.search(this.searchElement.value);\n };\n Toolbar$$1.prototype.updateSearchBox = function () {\n if (this.searchElement) {\n this.searchElement.value = this.parent.searchSettings.key;\n }\n };\n Toolbar$$1.prototype.wireEvent = function () {\n if (this.searchElement) {\n this.searchBoxObj = new SearchBox(this.searchElement);\n EventHandler.add(this.searchElement, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n }\n EventHandler.add(this.element, 'focusin', this.onFocusIn, this);\n EventHandler.add(this.element, 'focusout', this.onFocusOut, this);\n };\n Toolbar$$1.prototype.unWireEvent = function () {\n if (this.searchElement) {\n EventHandler.remove(this.searchElement, 'keyup', this.keyUpHandler);\n this.searchBoxObj.unWireEvent();\n }\n EventHandler.remove(this.element, 'focusin', this.onFocusIn);\n EventHandler.remove(this.element, 'focusout', this.onFocusOut);\n };\n Toolbar$$1.prototype.onFocusIn = function (e) {\n var currentInfo = this.parent.focusModule.currentInfo;\n if (currentInfo && currentInfo.element) {\n removeClass([currentInfo.element, currentInfo.elementToFocus], ['e-focused', 'e-focus']);\n currentInfo.element.tabIndex = -1;\n }\n e.target.tabIndex = 0;\n };\n Toolbar$$1.prototype.onFocusOut = function (e) {\n e.target.tabIndex = -1;\n };\n Toolbar$$1.prototype.setFocusToolbarItem = function (element) {\n var elementToFocus = element.querySelector('.e-btn,.e-input,.e-toolbar-item-focus');\n if (!elementToFocus && this.parent.enableAdaptiveUI && !this.searchElement\n && element.classList.contains('e-search-wrapper')) {\n elementToFocus = element.querySelector('#' + this.gridID + '_searchbutton');\n }\n elementToFocus.focus();\n };\n Toolbar$$1.prototype.getFocusableToolbarItems = function () {\n var getFocusToolbarElements = [].slice.call(this.element.querySelectorAll('.e-toolbar-item:not(.e-overlay):not(.e-hidden)'));\n var getFocusToolbarItems = [];\n for (var i = 0; i < getFocusToolbarElements.length; i++) {\n if (!isNullOrUndefined(getFocusToolbarElements[i].querySelector('.e-btn,.e-input,.e-toolbar-item-focus'))) {\n getFocusToolbarItems.push(getFocusToolbarElements[i]);\n }\n }\n return getFocusToolbarItems;\n };\n Toolbar$$1.prototype.keyPressedHandler = function (e) {\n if (e.target && parentsUntil(e.target, 'e-toolbar-item')) {\n var targetParent = parentsUntil(e.target, 'e-toolbar-item');\n var focusableToolbarItems = this.getFocusableToolbarItems();\n if (e.action === 'tab' || e.action === 'shiftTab') {\n if ((e.action === 'tab' && targetParent === focusableToolbarItems[focusableToolbarItems.length - 1])\n || (e.action === 'shiftTab' && targetParent === focusableToolbarItems[0])) {\n return;\n }\n for (var i = 0; i < focusableToolbarItems.length; i++) {\n if (targetParent === focusableToolbarItems[parseInt(i.toString(), 10)]) {\n e.preventDefault();\n var index = e.action === 'tab' ? i + 1 : i - 1;\n this.setFocusToolbarItem(focusableToolbarItems[parseInt(index.toString(), 10)]);\n return;\n }\n }\n }\n if (e.action === 'enter') {\n if (this.parent.enableAdaptiveUI && !this.searchElement\n && e.target.id === this.gridID + '_searchbutton') {\n this.renderResponsiveSearch(true);\n }\n }\n }\n };\n Toolbar$$1.prototype.reRenderToolbar = function () {\n if (this.element) {\n remove(this.element);\n }\n this.render();\n };\n Toolbar$$1.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: setFullScreenDialog, handler: this.reRenderToolbar },\n { event: initialEnd, handler: this.render },\n { event: uiUpdate, handler: this.onPropertyChanged },\n { event: inBoundModelChanged, handler: this.updateSearchBox.bind(this) },\n { event: modelChanged, handler: this.refreshToolbarItems },\n { event: toolbarRefresh, handler: this.refreshToolbarItems },\n { event: inBoundModelChanged, handler: this.modelChanged },\n { event: dataBound, handler: this.refreshToolbarItems },\n { event: click, handler: this.removeResponsiveSearch },\n { event: rowModeChange, handler: this.reRenderToolbar },\n { event: destroy, handler: this.destroy },\n { event: keyPressed, handler: this.keyPressedHandler }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.rowSelectedFunction = this.rowSelected.bind(this);\n this.rowDeSelectedFunction = this.rowSelected.bind(this);\n this.parent.addEventListener(rowSelected, this.rowSelectedFunction);\n this.parent.addEventListener(rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar$$1.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(rowSelected, this.rowSelectedFunction);\n this.parent.removeEventListener(rowDeselected, this.rowDeSelectedFunction);\n };\n Toolbar$$1.prototype.removeResponsiveSearch = function (e) {\n var target = e.target;\n var isSearch = target.classList.contains('e-search-icon') || target.classList.contains('e-search-wrapper');\n if (this.parent.enableAdaptiveUI && !isSearch && this.searchElement\n && !parentsUntil(e.target, 'e-res-toolbar')) {\n this.renderResponsiveSearch(false);\n }\n };\n Toolbar$$1.prototype.rowSelected = function () {\n if (this.parent.enableAdaptiveUI) {\n this.refreshResponsiveToolbarItems(ResponsiveToolbarAction.isInitial);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n Toolbar$$1.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar$$1;\n}());\n\nvar __extends$22 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Footer module is used to render grid content\n *\n * @hidden\n */\nvar FooterRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$22(FooterRenderer, _super);\n function FooterRenderer(gridModule, serviceLocator) {\n var _this = _super.call(this, gridModule, serviceLocator) || this;\n _this.aggregates = {};\n _this.parent = gridModule;\n _this.locator = serviceLocator;\n _this.modelGenerator = new SummaryModelGenerator(_this.parent);\n _this.addEventListener();\n return _this;\n }\n /**\n * The function is used to render grid footer div\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderPanel = function () {\n var div = this.parent.createElement('div', { className: gridFooter });\n var innerDiv = this.parent.createElement('div', { className: 'e-summarycontent' });\n var movableContent$$1 = innerDiv;\n if (this.parent.isFrozenGrid()) {\n var fDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-left-footercontent' });\n var mDiv = this.parent.createElement('div', { className: 'e-movablefootercontent' });\n var frDiv = this.parent.createElement('div', { className: 'e-frozenfootercontent e-frozen-right-footercontent' });\n if (this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()) {\n innerDiv.appendChild(fDiv);\n this.frozenContent = fDiv;\n }\n innerDiv.appendChild(mDiv);\n this.movableContent = mDiv;\n movableContent$$1 = mDiv;\n if (this.parent.getFrozenRightColumnsCount()) {\n innerDiv.appendChild(frDiv);\n this.frozenRightContent = frDiv;\n }\n }\n if (Browser.isDevice) {\n movableContent$$1.style.overflowX = 'scroll';\n }\n div.appendChild(innerDiv);\n this.setPanel(div);\n if (this.parent.getPager() != null) {\n this.parent.element.insertBefore(div, this.parent.getPager());\n }\n else {\n this.parent.element.appendChild(div);\n }\n };\n /**\n * The function is used to render grid footer table\n *\n * @returns {void}\n */\n FooterRenderer.prototype.renderTable = function () {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var innerDiv = this.createContentTable('_footer_table');\n var table$$1 = innerDiv.querySelector('.' + table);\n var tFoot = this.parent.createElement('tfoot');\n table$$1.appendChild(tFoot);\n if (this.parent.isFrozenGrid()) {\n var freezeTable = table$$1.cloneNode(true);\n var frTable = table$$1.cloneNode(true);\n if (frzCols) {\n this.frozenContent.appendChild(freezeTable);\n this.freezeTable = freezeTable;\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n remove(frTable.querySelector(colGroup));\n var hdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCol = (hdr.querySelector(colGroup).cloneNode(true));\n frTable.insertBefore(frCol, frTable.querySelector(tbody));\n this.frozenRightContent.appendChild(frTable);\n this.frTable = frTable;\n }\n this.movableContent.appendChild(table$$1);\n remove(table$$1.querySelector(colGroup));\n var colGroup$$1 = ((this.parent.getHeaderContent().querySelector('.' + movableHeader).querySelector(colGroup)).cloneNode(true));\n table$$1.insertBefore(colGroup$$1, table$$1.querySelector(tbody));\n this.setColGroup(colGroup$$1);\n }\n this.setTable(table$$1);\n };\n FooterRenderer.prototype.renderSummaryContent = function (e, table$$1, cStart, cEnd) {\n var input = this.parent.dataSource instanceof Array ? !this.parent.getDataModule().isRemote() &&\n this.parent.parentDetails ? this.getData() : this.parent.dataSource : this.parent.currentViewData;\n var summaries = this.modelGenerator.getData();\n var dummies = isNullOrUndefined(cStart) ? this.modelGenerator.getColumns() :\n this.modelGenerator.getColumns(cStart, cEnd);\n // eslint-disable-next-line max-len\n var rows = isNullOrUndefined(cStart) ? this.modelGenerator.generateRows(input, e || this.aggregates) :\n this.modelGenerator.generateRows(input, e || this.aggregates, cStart, cEnd);\n var fragment = document.createDocumentFragment();\n var rowrenderer = new RowRenderer(this.locator, null, this.parent);\n rowrenderer.element = this.parent.createElement('TR', { className: 'e-summaryrow', attrs: { role: 'row' } });\n for (var srow = 0, len = summaries.length; srow < len; srow++) {\n var row$$1 = rows[parseInt(srow.toString(), 10)];\n if (!row$$1) {\n continue;\n }\n var tr = rowrenderer.render(row$$1, dummies);\n fragment.appendChild(tr);\n }\n table$$1.tFoot.appendChild(fragment);\n this.aggregates = !isNullOrUndefined(e) ? e : this.aggregates;\n };\n FooterRenderer.prototype.refresh = function (e) {\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (this.parent.isFrozenGrid()) {\n remove(this.getPanel());\n this.renderPanel();\n this.renderTable();\n if (frzCols) {\n this.freezeTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.freezeTable, 0, frzCols);\n }\n }\n this.getTable().tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.getTable(), frzCols, right ? frzCols + movable : undefined);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.frTable.tFoot.innerHTML = '';\n this.renderSummaryContent(e, this.frTable, frzCols + movable, frzCols + movable + right);\n var movableLastCell = [].slice.call(this.getTable().getElementsByClassName('e-lastsummarycell'));\n if (movableLastCell.length) {\n for (var i = 0; i < movableLastCell.length; i++) {\n movableLastCell[parseInt(i.toString(), 10)].style.borderRight = '0px';\n }\n }\n }\n // check freeze content have no row case\n if (this.parent.isFrozenGrid()) {\n var movableCnt = [].slice.call(this.parent.element.querySelector('.e-movablefootercontent')\n .getElementsByClassName('e-summaryrow'));\n var frozenCnt = void 0;\n if (frzCols) {\n frozenCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-left-footercontent')\n .getElementsByClassName('e-summaryrow'));\n this.refreshHeight(frozenCnt, movableCnt);\n var frozenDiv = this.frozenContent;\n if (!frozenDiv.offsetHeight) {\n frozenDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (right) {\n var frCnt = [].slice.call(this.parent.element.querySelector('.e-frozen-right-footercontent')\n .getElementsByClassName('e-summaryrow'));\n this.refreshHeight(frCnt, movableCnt);\n if (frozenCnt) {\n this.refreshHeight(frCnt, frozenCnt);\n }\n var frDiv = this.frTable;\n if (!frDiv.offsetHeight) {\n frDiv.style.height = this.getTable().offsetHeight + 'px';\n }\n }\n if (this.parent.allowResizing) {\n this.updateFooterTableWidth(this.getTable());\n }\n }\n if (isNullOrUndefined(e) && this.parent.isAutoFitColumns) {\n this.parent.autoFitColumns();\n }\n this.onScroll();\n };\n FooterRenderer.prototype.refreshHeight = function (frozenCnt, movableCnt) {\n for (var i = 0; i < frozenCnt.length; i++) {\n var frozenHeight$$1 = frozenCnt[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n var movableHeight = movableCnt[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n if (frozenHeight$$1 < movableHeight) {\n frozenCnt[parseInt(i.toString(), 10)].classList.remove('e-hide');\n frozenCnt[parseInt(i.toString(), 10)].style.height = movableHeight + 'px';\n }\n else if (frozenHeight$$1 > movableHeight) {\n movableCnt[parseInt(i.toString(), 10)].classList.remove('e-hide');\n movableCnt[parseInt(i.toString(), 10)].style.height = frozenHeight$$1 + 'px';\n }\n }\n };\n FooterRenderer.prototype.refreshCol = function () {\n // frozen table\n var mheaderCol;\n var fheaderCol = mheaderCol = this.parent.element.querySelector('.' + gridHeader).querySelector(colGroup).cloneNode(true);\n if (this.parent.getFrozenColumns()) {\n // eslint-disable-next-line max-len\n var isXaxis = this.parent.enableColumnVirtualization && this.parent.contentModule.isXaxis();\n if (isXaxis) {\n mheaderCol = this.parent.getMovableVirtualHeader().querySelector(colGroup).cloneNode(true);\n }\n else {\n mheaderCol = renderMovable(fheaderCol, this.parent.getFrozenColumns(), this.parent);\n this.freezeTable.replaceChild(fheaderCol, this.freezeTable.querySelector(colGroup));\n }\n }\n this.getTable().replaceChild(mheaderCol, this.getColGroup());\n this.setColGroup(mheaderCol);\n };\n FooterRenderer.prototype.onWidthChange = function (args) {\n this.getColFromIndex(args.index).style.width = formatUnit(args.width);\n if (this.parent.allowResizing && args.module === 'resize') {\n this.updateFooterTableWidth(this.getTable());\n }\n };\n FooterRenderer.prototype.onScroll = function (e) {\n if (e === void 0) { e = {\n left: this.parent.isFrozenGrid() ? this.parent.getContent().querySelector('.' + movableContent).scrollLeft :\n this.parent.getContent().firstChild.scrollLeft\n }; }\n this.getTable().parentElement.scrollLeft = e.left;\n };\n FooterRenderer.prototype.getColFromIndex = function (index) {\n var left = this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenColumns();\n var movable = this.parent.getMovableColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var isDrag = this.parent.isRowDragable() && !(this.parent.getFrozenMode() === 'Right') ? 1 : 0;\n if (left && index < (left + isDrag)) {\n return this.freezeTable.querySelector(colGroup).children[parseInt(index.toString(), 10)];\n }\n else if (right && (index >= (left + movable + isDrag))) {\n return this.frTable.querySelector(colGroup).children[index - (left ? (left + movable + isDrag) :\n (left + movable))];\n }\n return this.getColGroup().children[index - (left ? (left + isDrag) : left)];\n };\n FooterRenderer.prototype.columnVisibilityChanged = function () {\n this.refresh();\n };\n FooterRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: colGroupRefresh, handler: this.refreshCol },\n { event: columnWidthChanged, handler: this.onWidthChange },\n { event: scroll, handler: this.onScroll },\n { event: columnVisibilityChanged, handler: this.columnVisibilityChanged },\n { event: refreshFooterRenderer, handler: this.refreshFooterRenderer }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n FooterRenderer.prototype.removeEventListener = function () {\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n FooterRenderer.prototype.updateFooterTableWidth = function (tFoot) {\n var tHead = this.parent.getHeaderTable();\n if (tHead && tFoot) {\n tFoot.style.width = tHead.style.width;\n }\n };\n FooterRenderer.prototype.refreshFooterRenderer = function (editedData) {\n var aggregates = this.onAggregates(editedData);\n this.refresh(aggregates);\n };\n FooterRenderer.prototype.getIndexByKey = function (data, ds) {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < ds.length; i++) {\n if (ds[parseInt(i.toString(), 10)][\"\" + key] === data[\"\" + key]) {\n return i;\n }\n }\n return -1;\n };\n FooterRenderer.prototype.getData = function () {\n return this.parent.getDataModule().dataManager.executeLocal(this.parent.getDataModule().generateQuery(true));\n };\n FooterRenderer.prototype.onAggregates = function (editedData) {\n editedData = editedData instanceof Array ? editedData : [];\n var field = this.parent.getPrimaryKeyFieldNames()[0];\n var dataSource = [];\n var isModified = false;\n var batchChanges = {};\n var gridData = 'dataSource';\n var isFiltered = false;\n if (!this.parent.renderModule.data.isRemote() && this.parent.allowFiltering && this.parent.filterSettings.columns.length) {\n isFiltered = true;\n }\n var currentViewData = this.parent.dataSource instanceof Array ?\n (isFiltered ? this.parent.getFilteredRecords() : this.parent.dataSource) : (this.parent.dataSource[\"\" + gridData].json.length ?\n this.parent.dataSource[\"\" + gridData].json : this.parent.getCurrentViewRecords());\n if (this.parent.parentDetails && !this.parent.getDataModule().isRemote()) {\n currentViewData = this.getData();\n }\n if (this.parent.editModule) {\n batchChanges = this.parent.editModule.getBatchChanges();\n }\n if (Object.keys(batchChanges).length) {\n for (var i = 0; i < currentViewData.length; i++) {\n isModified = false;\n // eslint-disable-next-line max-len\n if (batchChanges[changedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[changedRecords]) > -1) {\n isModified = true;\n // eslint-disable-next-line max-len\n dataSource.push(batchChanges[changedRecords][this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[changedRecords])]);\n }\n // eslint-disable-next-line max-len\n if (batchChanges[deletedRecords].length && this.getIndexByKey(currentViewData[parseInt(i.toString(), 10)], batchChanges[deletedRecords]) > -1) {\n isModified = true;\n }\n else if (!isModified) {\n dataSource.push(currentViewData[parseInt(i.toString(), 10)]);\n }\n }\n if (batchChanges[addedRecords].length) {\n for (var i = 0; i < batchChanges[addedRecords].length; i++) {\n dataSource.push(batchChanges[addedRecords][parseInt(i.toString(), 10)]);\n }\n }\n }\n else {\n if (editedData.length) {\n var data = iterateExtend(currentViewData);\n dataSource = data.map(function (item) {\n var idVal = DataUtil.getObject(field, item);\n var value;\n var hasVal = editedData.some(function (cItem) {\n value = cItem;\n return idVal === DataUtil.getObject(field, cItem);\n });\n return hasVal ? value : item;\n });\n }\n else {\n dataSource = currentViewData;\n }\n }\n var eData = editedData;\n if ((eData.type && eData.type === 'cancel')) {\n dataSource = currentViewData;\n }\n var aggregate = {};\n var agrVal;\n var aggregateRows = this.parent.aggregates;\n for (var i = 0; i < aggregateRows.length; i++) {\n for (var j = 0; j < aggregateRows[parseInt(i.toString(), 10)].columns.length; j++) {\n var data = [];\n var type = aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)].type.toString();\n data = dataSource;\n agrVal = calculateAggregate(type, data, aggregateRows[parseInt(i.toString(), 10)]\n .columns[parseInt(j.toString(), 10)], this.parent);\n aggregate[aggregateRows[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)].field + ' - ' + type.toLowerCase()] = agrVal;\n }\n }\n var result = {\n result: dataSource,\n count: dataSource.length,\n aggregates: aggregate\n };\n return result;\n };\n return FooterRenderer;\n}(ContentRender));\n\nvar __extends$23 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * SummaryCellRenderer class which responsible for building summary cell content.\n *\n * @hidden\n */\nvar SummaryCellRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$23(SummaryCellRenderer, _super);\n function SummaryCellRenderer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.element = _this.parent\n .createElement('TD', { className: 'e-summarycell', attrs: { role: 'gridcell', tabindex: '-1' } });\n return _this;\n }\n SummaryCellRenderer.prototype.getValue = function (field, data, column) {\n var key = !isNullOrUndefined(column.type) ?\n column.field + ' - ' + (typeof column.type === 'string' ? column.type.toLowerCase() : '') : column.columnName;\n return data[column.columnName] ? data[column.columnName][\"\" + key] : '';\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n SummaryCellRenderer.prototype.evaluate = function (node, cell, data, attributes$$1) {\n var column = cell.column;\n this.parent.on(refreshAggregateCell, this.refreshWithAggregate(node, cell), this);\n if (!(column.footerTemplate || column.groupFooterTemplate || column.groupCaptionTemplate)) {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.style.display = 'none';\n }\n return true;\n }\n else {\n if (this.parent.rowRenderingMode === 'Vertical') {\n node.classList.add('e-lastsummarycell');\n }\n }\n var tempObj = column.getTemplate(cell.cellType);\n var tempID = '';\n var gColumn = this.parent.getColumnByField(data[column.columnName].field);\n if (!isNullOrUndefined(gColumn)) {\n data[column.columnName].headerText = gColumn.headerText;\n if (gColumn.isForeignColumn()) {\n var fData = gColumn.columnData.filter(function (e) {\n return e[gColumn.foreignKeyField] === data[column.columnName].key;\n })[0];\n if (fData) {\n data[column.columnName].foreignKey = fData[gColumn.foreignKeyValue];\n }\n }\n }\n var isReactCompiler = this.parent.isReact && (column.footerTemplate ?\n typeof (column.footerTemplate) !== 'string' : column.groupFooterTemplate ? typeof (column.groupFooterTemplate) !== 'string'\n : column.groupCaptionTemplate ? typeof (column.groupCaptionTemplate) !== 'string' : false);\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n var prop = data[column.columnName];\n if (tempObj.property === 'groupCaptionTemplate' || tempObj.property === 'groupFooterTemplate') {\n var groupKey = 'groupKey';\n var key = 'key';\n prop[\"\" + groupKey] = prop[\"\" + key];\n }\n tempObj.fn(prop, this.parent, tempObj.property, tempID, null, null, node);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node, tempObj.fn(data[column.columnName], this.parent, tempObj.property, tempID));\n }\n return false;\n };\n SummaryCellRenderer.prototype.refreshWithAggregate = function (node, cell) {\n var _this = this;\n var cellNode = cell;\n return function (args) {\n var cell = cellNode;\n var field = cell.column.columnName ? cell.column.columnName : null;\n var curCell = (!isNullOrUndefined(field) ? args.cells.filter(function (cell) {\n return cell.column.columnName === field;\n })[0] : null);\n if (node.parentElement && node.parentElement.getAttribute('data-uid') === args.dataUid && field &&\n field === curCell.column.columnName) {\n _this.refreshTD(node, curCell, args.data);\n }\n };\n };\n return SummaryCellRenderer;\n}(CellRenderer));\n\n/**\n * Summary Action controller.\n */\nvar Aggregate = /** @__PURE__ @class */ (function () {\n function Aggregate(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Aggregate.prototype.getModuleName = function () {\n return 'aggregate';\n };\n Aggregate.prototype.initiateRender = function () {\n var _this = this;\n var cellFac = this.locator.getService('cellRendererFactory');\n var instance = new SummaryCellRenderer(this.parent, this.locator);\n var type = [CellType.Summary, CellType.CaptionSummary, CellType.GroupSummary];\n for (var i = 0; i < type.length; i++) {\n cellFac.addCellRenderer(type[parseInt(i.toString(), 10)], instance);\n }\n this.footerRenderer = new FooterRenderer(this.parent, this.locator);\n this.footerRenderer.renderPanel();\n this.footerRenderer.renderTable();\n var footerContent = this.footerRenderer.getPanel();\n if (this.parent.element.scrollHeight >= this.parent.getHeight(this.parent.height)\n && footerContent) {\n addClass([footerContent], ['e-footerpadding']);\n }\n this.locator.register('footerRenderer', this.footerRenderer);\n var fn = function () {\n _this.prepareSummaryInfo();\n _this.parent.off(dataReady, fn);\n };\n this.parent.on(dataReady, fn, this);\n this.parent.on(dataReady, this.footerRenderer.refresh, this.footerRenderer);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Aggregate.prototype.prepareSummaryInfo = function () {\n var _this = this;\n summaryIterator(this.parent.aggregates, function (column) {\n var cFormat = getValue('customFormat', column);\n if (!isNullOrUndefined(cFormat)) {\n column.setPropertiesSilent({ format: cFormat });\n }\n if (typeof (column.format) === 'object') {\n var valueFormatter = new ValueFormatter();\n column.setFormatter(valueFormatter.getFormatFunction(extend({}, column.format)));\n }\n else if (typeof (column.format) === 'string') {\n var fmtr = _this.locator.getService('valueFormatter');\n column.setFormatter(fmtr.getFormatFunction({ format: column.format }));\n }\n column.setPropertiesSilent({ columnName: column.columnName || column.field });\n });\n };\n Aggregate.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (isNullOrUndefined(this.footerRenderer)) {\n this.initiateRender();\n }\n this.prepareSummaryInfo();\n this.footerRenderer.refresh();\n var cModel = new CaptionSummaryModelGenerator(this.parent);\n var gModel = new GroupSummaryModelGenerator(this.parent);\n if (gModel.getData().length !== 0 || !cModel.isEmpty()) {\n this.parent.notify(modelChanged, {});\n }\n };\n Aggregate.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initiateRender, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n this.parent.on(refreshAggregates, this.refresh, this);\n this.parent.on(destroy, this.destroy, this);\n };\n Aggregate.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.footerRenderer.removeEventListener();\n this.parent.off(initialEnd, this.initiateRender);\n this.parent.off(dataReady, this.footerRenderer.refresh);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n this.parent.off(refreshAggregates, this.refresh);\n this.parent.off(destroy, this.destroy);\n if (this.parent.element.querySelector('.' + gridFooter)) {\n remove(this.parent.element.querySelector('.' + gridFooter));\n }\n };\n Aggregate.prototype.destroy = function () {\n this.removeEventListener();\n };\n Aggregate.prototype.refresh = function (data, element) {\n var editedData = data instanceof Array ? data : [data];\n this.parent.notify(refreshFooterRenderer, editedData);\n if (element) {\n editedData.row = element;\n }\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editedData);\n }\n };\n return Aggregate;\n}());\n/**\n * @param {AggregateRowModel[]} aggregates - specifies the AggregateRowModel\n * @param {Function} callback - specifies the Function\n * @returns {void}\n * @private\n */\nfunction summaryIterator(aggregates, callback) {\n for (var i = 0; i < aggregates.length; i++) {\n for (var j = 0; j < aggregates[parseInt(i.toString(), 10)].columns.length; j++) {\n callback(aggregates[parseInt(i.toString(), 10)].columns[parseInt(j.toString(), 10)], aggregates[parseInt(i.toString(), 10)]);\n }\n }\n}\n\n/**\n * InterSectionObserver - class watch whether it enters the viewport.\n *\n * @hidden\n */\nvar InterSectionObserver = /** @__PURE__ @class */ (function () {\n function InterSectionObserver(element, options, movableEle) {\n var _this = this;\n this.fromWheel = false;\n this.touchMove = false;\n this.options = {};\n this.sentinelInfo = {\n 'up': {\n check: function (rect, info) {\n var top = rect.top - _this.containerRect.top;\n info.entered = top >= 0;\n return top + (_this.options.pageHeight / 2) >= 0;\n },\n axis: 'Y'\n },\n 'down': {\n check: function (rect, info) {\n var bottom = rect.bottom;\n info.entered = rect.bottom <= _this.containerRect.bottom;\n return ((bottom - _this.containerRect.top) - (_this.options.pageHeight / 2)) <= _this.options.pageHeight / 2;\n }, axis: 'Y'\n },\n 'right': {\n check: function (rect, info) {\n var right = rect.right;\n if (_this.movableEle) {\n info.entered = right < _this.movableContainerRect.right;\n return right - _this.movableContainerRect.width <= _this.movableContainerRect.right;\n }\n info.entered = right < _this.containerRect.right;\n return right - _this.containerRect.width <= _this.containerRect.right;\n }, axis: 'X'\n },\n 'left': {\n check: function (rect, info) {\n var left = rect.left;\n info.entered = left > 0;\n if (_this.movableEle) {\n return left + _this.movableContainerRect.width >= _this.movableContainerRect.left;\n }\n return left + _this.containerRect.width >= _this.containerRect.left;\n }, axis: 'X'\n }\n };\n this.element = element;\n this.options = options;\n this.movableEle = movableEle;\n }\n InterSectionObserver.prototype.observe = function (callback, onEnterCallback) {\n var _this = this;\n this.containerRect = this.options.container.getBoundingClientRect();\n EventHandler.add(this.options.container, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.container, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n if (this.options.movableContainer) {\n this.movableContainerRect = this.options.movableContainer.getBoundingClientRect();\n EventHandler.add(this.options.scrollbar, 'wheel', function () { return _this.fromWheel = true; }, this);\n EventHandler.add(this.options.scrollbar, 'scroll', this.virtualScrollHandler(callback, onEnterCallback), this);\n }\n };\n InterSectionObserver.prototype.check = function (direction) {\n var info = this.sentinelInfo[\"\" + direction];\n if (this.movableContainerRect && (direction === 'left' || direction === 'right')) {\n return info.check(this.movableEle.getBoundingClientRect(), info);\n }\n return info.check(this.element.getBoundingClientRect(), info);\n };\n InterSectionObserver.prototype.virtualScrollHandler = function (callback, onEnterCallback) {\n var _this = this;\n var delay = Browser.info.name === 'chrome' ? 200 : 100;\n var debounced100 = debounce(callback, delay);\n var debounced50 = debounce(callback, 50);\n this.options.prevTop = this.options.prevLeft = 0;\n return function (e) {\n var top = _this.options.movableContainer ? _this.options.container.scrollTop : e.target.scrollTop;\n var left = _this.options.movableContainer ? _this.options.scrollbar.scrollLeft : e.target.scrollLeft;\n var direction = _this.options.prevTop < top ? 'down' : 'up';\n direction = _this.options.prevLeft === left ? direction : _this.options.prevLeft < left ? 'right' : 'left';\n _this.options.prevTop = top;\n _this.options.prevLeft = left;\n var current = _this.sentinelInfo[\"\" + direction];\n if (_this.options.axes.indexOf(current.axis) === -1) {\n return;\n }\n var check = _this.check(direction);\n if (current.entered) {\n if (_this.movableEle && (direction === 'right' || direction === 'left')) {\n onEnterCallback(_this.movableEle, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n else {\n onEnterCallback(_this.element, current, direction, { top: top, left: left }, _this.fromWheel, check);\n }\n }\n if (check) {\n var fn = debounced100;\n //this.fromWheel ? this.options.debounceEvent ? debounced100 : callback : debounced100;\n if (current.axis === 'X') {\n fn = debounced50;\n }\n fn({ direction: direction, sentinel: current, offset: { top: top, left: left },\n focusElement: document.activeElement });\n }\n _this.fromWheel = false;\n };\n };\n InterSectionObserver.prototype.setPageHeight = function (value) {\n this.options.pageHeight = value;\n };\n return InterSectionObserver;\n}());\n\n/**\n * Content module is used to render grid content\n */\nvar VirtualRowModelGenerator = /** @__PURE__ @class */ (function () {\n function VirtualRowModelGenerator(parent) {\n this.cOffsets = {};\n this.cache = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n this.rowCache = {};\n this.data = {};\n this.groups = {};\n this.currentInfo = {};\n this.parent = parent;\n this.model = this.parent.pageSettings;\n this.rowModelGenerator = this.parent.allowGrouping ? new GroupModelGenerator(this.parent) : new RowModelGenerator(this.parent);\n }\n VirtualRowModelGenerator.prototype.generateRows = function (data, e) {\n var isFrozen = this.parent.isFrozenGrid();\n var isManualRefresh = false;\n var info = e.virtualInfo = e.virtualInfo || this.getData();\n var xAxis = info.sentinelInfo && info.sentinelInfo.axis === 'X';\n var page = !xAxis && info.loadNext && !info.loadSelf ? info.nextInfo.page : info.page;\n var result = [];\n var indexes = this.getBlockIndexes(page);\n var loadedBlocks = [];\n if (this.currentInfo.blockIndexes) {\n indexes = info.blockIndexes = e.virtualInfo.blockIndexes = this.includePrevPage ? this.currentInfo.blockIndexes.slice(1)\n : this.currentInfo.blockIndexes.slice(0, this.currentInfo.blockIndexes.length - 1);\n isManualRefresh = true;\n }\n if ((isFrozen && (this.parent.getFrozenMode() !== leftRight && !e.renderMovableContent)\n || this.parent.getFrozenMode() === leftRight && !e.renderMovableContent && !e.renderFrozenRightContent) || !isFrozen) {\n this.checkAndResetCache(e.requestType);\n }\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n var dataRows = this.parent.vcRows.filter(function (row$$1) { return row$$1.isDataRow; });\n if ((this.parent.isManualRefresh && dataRows.length === data['records'].length) || !this.parent.isManualRefresh) {\n return result = this.parent.vcRows;\n }\n }\n if (this.parent.enableColumnVirtualization) {\n for (var i = 0; i < info.blockIndexes.length; i++) {\n if (this.isBlockAvailable(info.blockIndexes[parseInt(i.toString(), 10)])) {\n this.cache[info.blockIndexes[parseInt(i.toString(), 10)]] =\n this.rowModelGenerator.refreshRows(this.cache[info.blockIndexes[parseInt(i.toString(), 10)]]);\n }\n if ((e.renderMovableContent && this.isMovableBlockAvailable(info.blockIndexes[parseInt(i.toString(), 10)]))\n || (e.renderFrozenRightContent && this.isFrozenRightBlockAvailable(info.blockIndexes[parseInt(i.toString(), 10)]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n cache[info.blockIndexes[parseInt(i.toString(), 10)]] =\n this.rowModelGenerator.refreshRows(cache[info.blockIndexes[parseInt(i.toString(), 10)]]);\n }\n }\n }\n var values = info.blockIndexes;\n for (var i = 0; i < values.length; i++) {\n if (!this.isBlockAvailable(values[parseInt(i.toString(), 10)])) {\n var startIdx = !isNullOrUndefined(this.startIndex) ? this.startIndex :\n this.getStartIndex(values[parseInt(i.toString(), 10)], data);\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: startIdx\n });\n if (isGroupAdaptive(this.parent) && !this.parent.vcRows.length) {\n this.parent.vRows = rows;\n this.parent.vcRows = rows;\n this.parent.notify(refreshVirtualMaxPage, {});\n }\n var median = void 0;\n if (isGroupAdaptive(this.parent)) {\n this.getGroupVirtualRecordsByIndex(rows);\n }\n else {\n if (isManualRefresh) {\n this.setBlockForManualRefresh(this.cache, indexes, rows);\n }\n else {\n median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if (!this.isBlockAvailable(indexes[0])) {\n this.cache[indexes[0]] = rows.slice(0, median);\n }\n if (!this.isBlockAvailable(indexes[1])) {\n this.cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n }\n if (this.parent.groupSettings.columns.length && !xAxis && this.cache[values[parseInt(i.toString(), 10)]] &&\n !this.parent.groupSettings.enableLazyLoading) {\n this.cache[values[parseInt(i.toString(), 10)]] =\n this.updateGroupRow(this.cache[values[parseInt(i.toString(), 10)]], values[parseInt(i.toString(), 10)]);\n }\n if ((e.renderMovableContent && !this.isMovableBlockAvailable(values[parseInt(i.toString(), 10)]))\n || (e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(values[parseInt(i.toString(), 10)]))) {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n var startIdx = !isNullOrUndefined(this.startIndex) ? this.startIndex :\n this.getStartIndex(values[parseInt(i.toString(), 10)], data);\n var rows = this.rowModelGenerator.generateRows(data, {\n virtualInfo: info, startIndex: startIdx\n });\n if (isManualRefresh) {\n this.setBlockForManualRefresh(cache, indexes, rows);\n }\n else {\n var median = ~~Math.max(rows.length, this.model.pageSize) / 2;\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[0]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[0]))) {\n cache[indexes[0]] = rows.slice(0, median);\n }\n if ((e.renderFrozenRightContent && !this.isFrozenRightBlockAvailable(indexes[1]))\n || (e.renderMovableContent && !this.isMovableBlockAvailable(indexes[1]))) {\n cache[indexes[1]] = rows.slice(median);\n }\n }\n }\n if (!e.renderMovableContent && !e.renderFrozenRightContent && this.cache[values[parseInt(i.toString(), 10)]]) {\n result.push.apply(result, this.cache[values[parseInt(i.toString(), 10)]]);\n }\n else {\n var cache = e.renderMovableContent\n ? this.movableCache : this.frozenRightCache;\n if (cache[values[parseInt(i.toString(), 10)]]) {\n result.push.apply(result, cache[values[parseInt(i.toString(), 10)]]);\n }\n }\n if (this.isBlockAvailable(values[parseInt(i.toString(), 10)])) {\n loadedBlocks.push(values[parseInt(i.toString(), 10)]);\n }\n }\n info.blockIndexes = loadedBlocks;\n var grouping = 'records';\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n this.parent.currentViewData[\"\" + grouping] = result.map(function (m) { return m.data; });\n }\n else if (isFrozen) {\n if ((e.renderMovableContent && (this.parent.getFrozenMode() === 'Left'\n || this.parent.getFrozenMode() === 'Right' || this.parent.getFrozenColumns())) || e.renderFrozenRightContent) {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n }\n else {\n this.parent.currentViewData = result.map(function (m) { return m.data; });\n }\n if (isGroupAdaptive(this.parent) && this.parent.vcRows.length) {\n if (['save', 'delete'].some(function (value) { return e.requestType === value; })) {\n return result = this.parent.vcRows;\n }\n }\n return result;\n };\n VirtualRowModelGenerator.prototype.setBlockForManualRefresh = function (cache, blocks, rows) {\n var size = this.model.pageSize / 2;\n if (this.includePrevPage) {\n cache[blocks[0] - 1] = rows.slice(0, size);\n cache[blocks[0]] = rows.slice(size, size * 2);\n cache[blocks[1]] = rows.slice(size * 2, size * 3);\n cache[blocks[2]] = rows.slice(size * 3, size * 4);\n }\n else {\n cache[blocks[0]] = rows.slice(0, size);\n cache[blocks[1]] = rows.slice(size, size * 2);\n cache[blocks[2]] = rows.slice(size * 2, size * 3);\n cache[blocks[2] + 1] = rows.slice(size * 3, size * 4);\n }\n };\n VirtualRowModelGenerator.prototype.getBlockIndexes = function (page) {\n return [page + (page - 1), page * 2];\n };\n VirtualRowModelGenerator.prototype.getPage = function (block) {\n return block % 2 === 0 ? block / 2 : (block + 1) / 2;\n };\n VirtualRowModelGenerator.prototype.isBlockAvailable = function (value) {\n return value in this.cache;\n };\n VirtualRowModelGenerator.prototype.isMovableBlockAvailable = function (value) {\n return value in this.movableCache;\n };\n VirtualRowModelGenerator.prototype.isFrozenRightBlockAvailable = function (value) {\n return value in this.frozenRightCache;\n };\n VirtualRowModelGenerator.prototype.getData = function () {\n return {\n page: this.model.currentPage,\n blockIndexes: this.getBlockIndexes(this.model.currentPage),\n direction: 'down',\n columnIndexes: this.parent.getColumnIndexesInView()\n };\n };\n VirtualRowModelGenerator.prototype.getStartIndex = function (blk, data, full) {\n if (full === void 0) { full = true; }\n var page = this.getPage(blk);\n var even = blk % 2 === 0;\n var index = (page - 1) * this.model.pageSize;\n return full || !even ? index : index + ~~(this.model.pageSize / 2);\n };\n VirtualRowModelGenerator.prototype.getColumnIndexes = function (content$$1) {\n var _this = this;\n if (content$$1 === void 0) { content$$1 = this.parent.getHeaderContent().querySelector('.' + headerContent); }\n if (this.parent.isFrozenGrid()) {\n content$$1 = content$$1.querySelector('.' + movableHeader);\n }\n var indexes = [];\n var sLeft = content$$1.scrollLeft | 0;\n var keys = Object.keys(this.cOffsets);\n var cWidth = content$$1.getBoundingClientRect().width;\n sLeft = Math.min(this.cOffsets[keys.length - 1] - cWidth, sLeft);\n var calWidth = Browser.isDevice ? 2 * cWidth : cWidth / 2;\n var left = sLeft + cWidth + (sLeft === 0 ? calWidth : 0);\n keys.some(function (offset) {\n var iOffset = Number(offset);\n var offsetVal = _this.cOffsets[\"\" + offset];\n var border = sLeft - calWidth <= offsetVal && left + calWidth >= offsetVal;\n if (border) {\n indexes.push(iOffset);\n }\n return left + calWidth < offsetVal;\n });\n this.addFrozenIndex(indexes);\n return indexes;\n };\n VirtualRowModelGenerator.prototype.addFrozenIndex = function (indexes) {\n if (this.parent.getFrozenColumns() && this.parent.enableColumnVirtualization && indexes[0] === 0) {\n for (var i = 0; i < this.parent.getFrozenColumns(); i++) {\n indexes.push(indexes[indexes.length - 1] + 1);\n }\n }\n };\n VirtualRowModelGenerator.prototype.checkAndResetCache = function (action) {\n var actions = ['paging', 'refresh', 'sorting', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder',\n 'save', 'delete'];\n if (this.parent.getFrozenColumns() && this.parent.frozenRows && this.parent.enableColumnVirtualization && action === 'reorder') {\n actions.splice(actions.indexOf(action), 1);\n }\n var clear = actions.some(function (value) { return action === value; });\n if (clear) {\n this.cache = {};\n this.data = {};\n this.groups = {};\n this.movableCache = {};\n this.frozenRightCache = {};\n }\n return clear;\n };\n VirtualRowModelGenerator.prototype.refreshColOffsets = function () {\n var _this = this;\n var col = 0;\n this.cOffsets = {};\n var gLen = this.parent.groupSettings.columns.length;\n var cols = this.parent.columns;\n var cLen = cols.length;\n var isVisible = function (column) { return column.visible &&\n (!_this.parent.groupSettings.showGroupedColumn ? _this.parent.groupSettings.columns.indexOf(column.field) < 0 : column.visible); };\n var c = this.parent.groupSettings.columns;\n for (var i = 0; i < c.length; i++) {\n this.cOffsets[parseInt(i.toString(), 10)] = (this.cOffsets[i - 1] | 0) + 30;\n }\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(cLen)).map(function () { return col++; });\n for (var j = 0; j < blocks.length; j++) {\n blocks[parseInt(j.toString(), 10)] = blocks[parseInt(j.toString(), 10)] + gLen;\n this.cOffsets[blocks[parseInt(j.toString(), 10)]] =\n (this.cOffsets[blocks[parseInt(j.toString(), 10)] - 1] | 0) + (isVisible(cols[parseInt(j.toString(), 10)]) ?\n parseInt(cols[parseInt(j.toString(), 10)].width, 10) : 0);\n }\n };\n VirtualRowModelGenerator.prototype.updateGroupRow = function (current, block) {\n var currentFirst = current[0];\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n if (Number(keys[parseInt(i.toString(), 10)]) < block) {\n rows = rows.concat(this.cache[keys[parseInt(i.toString(), 10)]]);\n }\n }\n if ((currentFirst && currentFirst.isDataRow) || block % 2 === 0) {\n return current;\n }\n return this.iterateGroup(current, rows);\n };\n VirtualRowModelGenerator.prototype.iterateGroup = function (current, rows) {\n var currentFirst = current[0];\n var offset = 0;\n if (currentFirst && currentFirst.isDataRow) {\n return current;\n }\n var isPresent = current.some(function (row$$1) {\n return rows.some(function (oRow, index) {\n var res = oRow && oRow.data.field !== undefined\n && oRow.data.field === row$$1.data.field &&\n oRow.data.key === row$$1.data.key;\n if (res) {\n offset = index;\n }\n return res;\n });\n });\n if (isPresent) {\n current.shift();\n current = this.iterateGroup(current, rows.slice(offset));\n }\n return current;\n };\n VirtualRowModelGenerator.prototype.getRows = function () {\n var rows = [];\n var keys = Object.keys(this.cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(this.cache[keys[parseInt(i.toString(), 10)]]);\n }\n return rows;\n };\n VirtualRowModelGenerator.prototype.generateCells = function (foreignKeyData$$1) {\n var cells = [];\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n cells.push(this.rowModelGenerator.generateCell(cols[parseInt(i.toString(), 10)], null, null, null, null, foreignKeyData$$1));\n }\n return cells;\n };\n VirtualRowModelGenerator.prototype.getGroupVirtualRecordsByIndex = function (rows) {\n var blocks = this.parent.contentModule.getGroupedTotalBlocks();\n var blockSize = this.parent.contentModule.getBlockSize();\n for (var i = 1; i <= blocks; i++) {\n var count = 0;\n this.cache[parseInt(i.toString(), 10)] = [];\n for (var j = ((i - 1) * blockSize); j < rows.length; j++) {\n if (count === blockSize) {\n break;\n }\n this.cache[parseInt(i.toString(), 10)].push(rows[parseInt(j.toString(), 10)]);\n if (rows[parseInt(j.toString(), 10)].isDataRow) {\n count++;\n }\n }\n }\n };\n return VirtualRowModelGenerator;\n}());\n\nvar __extends$24 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * VirtualContentRenderer\n *\n * @hidden\n */\nvar VirtualContentRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$24(VirtualContentRenderer, _super);\n function VirtualContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.prevHeight = 0;\n /** @hidden */\n _this.startIndex = 0;\n _this.preStartIndex = 0;\n _this.preventEvent = false;\n _this.actions = ['filtering', 'searching', 'grouping', 'ungrouping'];\n /** @hidden */\n _this.offsets = {};\n _this.tmpOffsets = {};\n /** @hidden */\n _this.virtualEle = new VirtualElementHandler();\n _this.offsetKeys = [];\n _this.isFocused = false;\n _this.isSelection = false;\n _this.isBottom = false;\n /** @hidden */\n _this.isTop = false;\n _this.rndrCount = 0;\n _this.empty = undefined;\n _this.isCancel = false;\n _this.requestTypes = ['beginEdit', 'cancel', 'delete', 'add', 'save'];\n _this.isNormaledit = _this.parent.editSettings.mode === 'Normal';\n /** @hidden */\n _this.virtualData = {};\n _this.emptyRowData = {};\n _this.vfColIndex = [];\n _this.frzIdx = 1;\n _this.isContextMenuOpen = false;\n _this.isSelectionScroll = false;\n _this.validationCheck = false;\n _this.locator = locator;\n _this.eventListener('on');\n _this.parent.on(columnVisibilityChanged, _this.setVisible, _this);\n _this.vgenerator = _this.generator;\n return _this;\n }\n VirtualContentRenderer.prototype.renderTable = function () {\n this.header = this.locator.getService('rendererFactory').getRenderer(RenderType.Header);\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.content = this.getPanel().querySelector('.' + content);\n this.virtualEle.renderWrapper(this.parent.height);\n this.virtualEle.renderPlaceHolder();\n this.virtualEle.wrapper.style.position = 'absolute';\n var debounceEvent = (this.parent.dataSource instanceof DataManager && !this.parent.dataSource.dataSource.offline);\n var opt = {\n container: this.content, pageHeight: this.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: this.parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y']\n };\n this.observer = new InterSectionObserver(this.virtualEle.wrapper, opt);\n };\n VirtualContentRenderer.prototype.renderEmpty = function (tbody$$1) {\n this.getTable().appendChild(tbody$$1);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector(tbody).innerHTML = '';\n }\n this.virtualEle.adjustTable(0, 0);\n };\n VirtualContentRenderer.prototype.getReorderedFrozenRows = function (args) {\n var blockIndex = args.virtualInfo.blockIndexes;\n var colsIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var recordslength = this.parent.getCurrentViewRecords().length;\n var firstRecords = this.parent.renderModule.data.dataManager.dataSource.json.slice(0, recordslength);\n var virtualRows = this.vgenerator.generateRows(firstRecords, args);\n args.virtualInfo.blockIndexes = blockIndex;\n args.virtualInfo.columnIndexes = colsIndex;\n args.virtualInfo.page = page;\n return virtualRows.splice(0, this.parent.frozenRows);\n };\n VirtualContentRenderer.prototype.scrollListener = function (scrollArgs) {\n this.scrollAfterEdit();\n if (this.parent.enablePersistence) {\n this.parent.scrollPosition = scrollArgs.offset;\n }\n if (this.preventEvent || this.parent.isDestroyed) {\n this.preventEvent = false;\n return;\n }\n if (this.parent.islazyloadRequest && scrollArgs.direction === 'down') {\n this.parent.removeMaskRow();\n this.parent.islazyloadRequest = false;\n return;\n }\n if (isNullOrUndefined(document.activeElement)) {\n this.isFocused = false;\n }\n else {\n this.isFocused = this.content === closest(document.activeElement, '.' + content) || this.content === document.activeElement;\n }\n var info = scrollArgs.sentinel;\n var viewInfo = this.currentInfo = this.getInfoFromView(scrollArgs.direction, info, scrollArgs.offset);\n if (isGroupAdaptive(this.parent)) {\n if (viewInfo.blockIndexes && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString()) {\n this.parent.removeMaskRow();\n return;\n }\n else {\n viewInfo.event = 'refresh-virtual-block';\n if (!isNullOrUndefined(viewInfo.offsets)) {\n viewInfo.offsets.top = this.content.scrollTop;\n }\n this.parent.pageSettings.currentPage = viewInfo.page;\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n }\n this.parent.notify(viewInfo.event, { requestType: 'virtualscroll', virtualInfo: viewInfo, focusElement: scrollArgs.focusElement });\n return;\n }\n }\n if (this.prevInfo && ((info.axis === 'Y' && this.prevInfo.blockIndexes.toString() === viewInfo.blockIndexes.toString())\n || (info.axis === 'X' && this.prevInfo.columnIndexes.toString() === viewInfo.columnIndexes.toString()))) {\n this.parent.removeMaskRow();\n if (Browser.isIE) {\n this.parent.hideSpinner();\n }\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n if (info.axis === 'Y') {\n this.restoreEdit();\n }\n if (this.parent.groupSettings.enableLazyLoading && this.prevInfo.blockIndexes[0] === 1 && viewInfo.blockIndexes[0] === 1 &&\n scrollArgs.direction === 'up') {\n this.virtualEle.adjustTable(0, viewInfo.offsets.top < this.offsets[1] ? 0 : this.getBlockHeight());\n }\n return;\n }\n this.parent.setColumnIndexesInView(this.parent.enableColumnVirtualization ? viewInfo.columnIndexes : []);\n this.parent.pageSettings.currentPage = viewInfo.loadNext && !viewInfo.loadSelf ? viewInfo.nextInfo.page : viewInfo.page;\n this.requestType = 'virtualscroll';\n if (this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow(info.axis);\n this.parent.addShimmerEffect();\n }\n this.parent.islazyloadRequest = false;\n this.parent.notify(viewInfo.event, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n if (this.parent.enableColumnVirtualization && !this.parent.getContentTable().querySelector('tr.e-row')) {\n this.parent.removeMaskRow();\n this.appendContent(undefined, undefined, {\n requestType: 'virtualscroll', virtualInfo: viewInfo,\n focusElement: scrollArgs.focusElement\n });\n this.prevInfo = viewInfo;\n }\n };\n VirtualContentRenderer.prototype.block = function (blk) {\n return this.vgenerator.isBlockAvailable(blk);\n };\n VirtualContentRenderer.prototype.getInfoFromView = function (direction, info, e) {\n var isBlockAdded = false;\n var tempBlocks = [];\n var infoType = { direction: direction, sentinelInfo: info, offsets: e,\n startIndex: this.preStartIndex, endIndex: this.preEndIndex };\n infoType.page = this.getPageFromTop(e.top, infoType);\n infoType.blockIndexes = tempBlocks = this.vgenerator.getBlockIndexes(infoType.page);\n infoType.loadSelf = !this.vgenerator.isBlockAvailable(tempBlocks[infoType.block]);\n var blocks = this.ensureBlocks(infoType);\n if (this.activeKey === 'upArrow' && infoType.blockIndexes.toString() !== blocks.toString()) {\n // To avoid dupilcate row index problem in key focus support\n var newBlock = blocks[blocks.length - 1];\n if (infoType.blockIndexes.indexOf(newBlock) === -1) {\n isBlockAdded = true;\n }\n }\n infoType.blockIndexes = blocks;\n infoType.loadNext = !blocks.filter(function (val) { return tempBlocks.indexOf(val) === -1; })\n .every(this.block.bind(this));\n infoType.event = (infoType.loadNext || infoType.loadSelf) ? modelChanged : refreshVirtualBlock;\n infoType.nextInfo = infoType.loadNext ? { page: Math.max(1, infoType.page + (direction === 'down' ? 1 : -1)) } : {};\n if (isBlockAdded) {\n infoType.blockIndexes = [infoType.blockIndexes[0] - 1, infoType.blockIndexes[0], infoType.blockIndexes[0] + 1];\n }\n if (this.activeKey === 'downArrow') {\n var firstBlock = Math.ceil(this.rowIndex / this.getBlockSize());\n if (firstBlock !== 1 && (infoType.blockIndexes[1] !== firstBlock || infoType.blockIndexes.length < 3)) {\n infoType.blockIndexes = [firstBlock - 1, firstBlock, firstBlock + 1];\n }\n }\n infoType.columnIndexes = info.axis === 'X' ? this.vgenerator.getColumnIndexes() : this.parent.getColumnIndexesInView();\n if (this.parent.enableColumnVirtualization && info.axis === 'X') {\n infoType.event = refreshVirtualBlock;\n }\n return infoType;\n };\n VirtualContentRenderer.prototype.setKeyboardNavIndex = function () {\n this.blazorDataLoad = true;\n if (this.activeKey === 'downArrow' || this.activeKey === 'upArrow') {\n this.blzRowIndex = this.activeKey === 'downArrow' ? this.rowIndex + 1 : this.rowIndex - 1;\n document.activeElement.blur();\n }\n };\n VirtualContentRenderer.prototype.ensureBlocks = function (info) {\n var _this = this;\n var index = info.blockIndexes[info.block];\n var mIdx;\n var old = index;\n var max = Math.max;\n var indexes = info.direction === 'down' ? [max(index, 1), ++index, ++index] : [max(index - 1, 1), index, index + 1];\n this.prevInfo = this.prevInfo || this.vgenerator.getData();\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid()) {\n // To avoid frozen content white space issue\n if (info.sentinelInfo.axis === 'X' || (info.sentinelInfo.axis === 'Y' && (info.page === this.prevInfo.page))) {\n indexes = this.prevInfo.blockIndexes;\n }\n }\n indexes = indexes.filter(function (val, ind) { return indexes.indexOf(val) === ind; });\n if (this.prevInfo.blockIndexes.toString() === indexes.toString()) {\n return indexes;\n }\n if (info.loadSelf || (info.direction === 'down' && this.isEndBlock(old))) {\n indexes = this.vgenerator.getBlockIndexes(info.page);\n }\n indexes.some(function (val, ind) {\n var result = val === (isGroupAdaptive(_this.parent) ? _this.getGroupedTotalBlocks() : _this.getTotalBlocks());\n if (result) {\n mIdx = ind;\n }\n return result;\n });\n if (mIdx !== undefined) {\n indexes = indexes.slice(0, mIdx + 1);\n if (info.block === 0 && indexes.length === 1 && this.vgenerator.isBlockAvailable(indexes[0] - 1)) {\n indexes = [indexes[0] - 1, indexes[0]];\n }\n }\n return indexes;\n };\n // tslint:disable-next-line:max-func-body-length\n VirtualContentRenderer.prototype.appendContent = function (target, newChild, e) {\n var _this = this;\n // currentInfo value will be used if there are multiple dom updates happened due to mousewheel\n var isFrozen = this.parent.isFrozenGrid();\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n var colVFtable = this.parent.enableColumnVirtualization && isFrozen;\n this.checkFirstBlockColIndexes(e);\n var info = e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'Y' && this.currentInfo.page &&\n this.currentInfo.page !== e.virtualInfo.page ? this.currentInfo : e.virtualInfo;\n this.prevInfo = this.prevInfo || e.virtualInfo;\n var cBlock = (info.columnIndexes[0]) - 1;\n if (colVFtable && info.columnIndexes[0] === frzCols) {\n cBlock = (info.columnIndexes[0] - frzCols) - 1;\n }\n var cOffset = this.getColumnOffset(cBlock);\n var width;\n var blocks = info.blockIndexes;\n if (this.parent.groupSettings.columns.length) {\n this.refreshOffsets();\n }\n if (this.parent.height === '100%') {\n this.parent.element.style.height = '100%';\n }\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.content.getBoundingClientRect().height :\n this.parent.element.getBoundingClientRect().height;\n if (!this.requestTypes.some(function (value) { return value === _this.requestType; })) {\n var translate = this.getTranslateY(this.content.scrollTop, vHeight, info);\n if (this.parent.groupSettings.enableLazyLoading && info && this.prevInfo && this.prevInfo.blockIndexes[0] === 1 &&\n info.blockIndexes[0] === 1 && info.direction === 'up') {\n this.virtualEle.adjustTable(0, this.content.scrollTop < this.offsets[1] ? 0 : this.getBlockHeight());\n }\n else {\n this.virtualEle.adjustTable(colVFtable ? 0 : cOffset, translate);\n }\n if (colVFtable) {\n this.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.adjustTable(colVFtable ? 0 : cOffset, 0);\n if (colVFtable) {\n this.header.virtualEle.adjustMovableTable(cOffset, 0);\n }\n }\n if (this.parent.enableColumnVirtualization) {\n var cIndex = info.columnIndexes;\n width = this.getColumnOffset(cIndex[cIndex.length - 1]) - this.getColumnOffset(cIndex[0] - 1) + '';\n if (colVFtable) {\n this.header.virtualEle.setMovableWrapperWidth(width);\n }\n else {\n this.header.virtualEle.setWrapperWidth(width);\n }\n }\n if (colVFtable) {\n this.virtualEle.setMovableWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n else {\n this.virtualEle.setWrapperWidth(width, Browser.isIE || Browser.info.name === 'edge');\n }\n if (this.parent.enableColumnVirtualization && isNullOrUndefined(target) && isNullOrUndefined(newChild)) {\n return;\n }\n if (!isNullOrUndefined(target) && !isNullOrUndefined(target.parentNode)) {\n remove(target);\n }\n var tbody$$1;\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n tbody$$1 = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(tbody);\n }\n else if (!e.renderMovableContent) {\n tbody$$1 = this.parent.getFrozenVirtualContent().querySelector(tbody);\n }\n else if (e.renderMovableContent) {\n tbody$$1 = this.parent.getMovableVirtualContent().querySelector(tbody);\n }\n }\n else {\n tbody$$1 = this.parent.element.querySelector('.' + content).querySelector(tbody);\n }\n if (tbody$$1) {\n remove(tbody$$1);\n target = null;\n }\n var isReact = this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate);\n if (!isReact) {\n target = this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n target.appendChild(newChild);\n }\n else {\n target = newChild;\n }\n if (this.parent.frozenRows && e.requestType === 'virtualscroll' && this.parent.pageSettings.currentPage === 1) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n target.children[0].remove();\n }\n }\n if (isFrozen) {\n if (e.renderFrozenRightContent) {\n this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + table).appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n this.parent.notify(freezeRender, { case: 'refreshHeight' });\n }\n else if (!e.renderMovableContent) {\n this.parent.getFrozenVirtualContent().querySelector('.' + table).appendChild(target);\n }\n else if (e.renderMovableContent) {\n this.parent.getMovableVirtualContent().querySelector('.' + table).appendChild(target);\n if (this.parent.getFrozenMode() !== leftRight) {\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n this.parent.notify(freezeRender, { case: 'refreshHeight' });\n }\n }\n if (this.vfColIndex.length) {\n e.virtualInfo.columnIndexes = info.columnIndexes = extend([], this.vfColIndex);\n this.vfColIndex = e.renderMovableContent ? [] : this.vfColIndex;\n }\n }\n else {\n this.getTable().appendChild(target);\n this.requestType = this.requestType === 'virtualscroll' ? this.empty : this.requestType;\n }\n if (this.parent.groupSettings.columns.length) {\n if (!isGroupAdaptive(this.parent) && info.direction === 'up') {\n var blk = this.offsets[this.getTotalBlocks()] - this.prevHeight;\n if (!this.parent.groupSettings.enableLazyLoading) {\n this.preventEvent = true;\n }\n var sTop = this.content.scrollTop;\n this.content.scrollTop = sTop + blk;\n }\n this.setVirtualHeight();\n if (!this.parent.groupSettings.enableLazyLoading) {\n this.observer.setPageHeight(this.getOffset(blocks[blocks.length - 1]) - this.getOffset(blocks[0] - 1));\n }\n }\n this.prevInfo = info;\n if (this.isFocused && this.activeKey !== 'downArrow' && this.activeKey !== 'upArrow') {\n this.content.focus();\n }\n var lastPage = Math.ceil(this.getTotalBlocks() / 2);\n if (this.isBottom) {\n this.isBottom = false;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 1];\n }\n if ((this.parent.pageSettings.currentPage === lastPage) && blocks.length === 1) {\n this.isBottom = true;\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 2];\n }\n if (this.parent.isFrozenGrid() && (this.parent.pageSettings.currentPage === lastPage - 1) && info.direction === 'up') {\n this.parent.getContent().firstElementChild.scrollTop = this.offsets[this.offsetKeys.length - 3];\n }\n if (this.isTop) {\n this.parent.getContent().firstElementChild.scrollTop = 0;\n this.isTop = false;\n }\n if (e.requestType === 'virtualscroll' && e.virtualInfo.sentinelInfo.axis === 'X') {\n this.parent.notify(autoCol, {});\n }\n this.focusCell(e);\n this.restoreEdit(e);\n this.restoreAdd(e);\n this.ensureSelectedRowPosition();\n this.validationScrollLeft(e, isFrozen);\n if (!this.initialRowTop) {\n var gridTop = this.parent.element.getBoundingClientRect().top;\n if (this.parent.getRowByIndex(0)) {\n this.initialRowTop = this.parent.getRowByIndex(0).getBoundingClientRect().top - gridTop;\n }\n }\n var tableName = e.tableName;\n var isLoaded = this.parent.getFrozenMode() === 'Left-Right' ? tableName === 'frozen-right' : tableName === 'movable';\n if (!isFrozen || isLoaded) {\n this.vgenerator.startIndex = null;\n this.vgenerator.currentInfo = {};\n this.vgenerator.includePrevPage = null;\n }\n };\n VirtualContentRenderer.prototype.validationScrollLeft = function (e, isFrozen) {\n var left = this.parent.getFrozenColumns();\n var table$$1 = this.parent.getFrozenMode();\n var trigger = !isFrozen || e && (left || table$$1 === 'Left' || table$$1 === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if (this.validationCheck && trigger) {\n if (this.validationCol) {\n var offset = this.vgenerator.cOffsets[(this.validationCol.index - this.parent.getVisibleFrozenColumns()) - 1];\n this.validationCol = null;\n if (this.parent.isFrozenGrid()) {\n this.movableContent.scrollLeft = offset;\n }\n else {\n this.content.scrollLeft = offset;\n }\n }\n else {\n this.validationCheck = false;\n this.parent.editModule.editFormValidate();\n }\n }\n };\n VirtualContentRenderer.prototype.ensureSelectedRowPosition = function () {\n if (!this.isSelection && this.isSelectionScroll && !isNullOrUndefined(this.selectRowIndex)) {\n this.isSelectionScroll = false;\n var row$$1 = this.parent.getRowByIndex(this.selectRowIndex);\n if (row$$1 && !this.isRowInView(row$$1)) {\n this.rowSelected({ rowIndex: this.selectRowIndex, row: row$$1 }, true);\n }\n }\n };\n VirtualContentRenderer.prototype.checkFirstBlockColIndexes = function (e) {\n if (this.parent.enableColumnVirtualization && this.parent.isFrozenGrid() && e.virtualInfo.columnIndexes[0] === 0) {\n var indexes = [];\n var frozenCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount();\n if (!e.renderMovableContent && e.virtualInfo.columnIndexes.length > frozenCols) {\n this.vfColIndex = e.virtualInfo.columnIndexes;\n for (var i = 0; i < frozenCols; i++) {\n indexes.push(i);\n }\n e.virtualInfo.columnIndexes = indexes;\n }\n else if (e.renderMovableContent) {\n if (!this.vfColIndex.length) {\n this.vfColIndex = extend([], e.virtualInfo.columnIndexes);\n }\n e.virtualInfo.columnIndexes = extend([], this.vfColIndex);\n e.virtualInfo.columnIndexes.splice(0, frozenCols);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.focusCell = function (e) {\n if (this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n return;\n }\n var row$$1 = this.parent.getRowByIndex(this.rowIndex);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = row$$1.cells[this.cellIndex];\n cell.focus({ preventScroll: true });\n if (!this.parent.selectionSettings.checkboxOnly) {\n this.parent.selectRow(parseInt(row$$1.getAttribute(dataRowIndex), 10));\n }\n this.activeKey = this.empty;\n };\n VirtualContentRenderer.prototype.restoreEdit = function (e) {\n if (this.isNormaledit) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table$$1 = this.parent.getFrozenMode();\n var trigger = e && (left || table$$1 === 'Left' || table$$1 === 'Right' ? e.renderMovableContent\n : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.parent.editSettings.allowEditing\n && this.parent.editModule && !isNullOrUndefined(this.editedRowIndex)) {\n var row$$1 = this.getRowByIndex(this.editedRowIndex);\n var content$$1 = this.content;\n var keys = Object.keys(this.virtualData);\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n if (isFrozen && isXaxis) {\n row$$1 = this.parent.getMovableRowByIndex(this.editedRowIndex);\n content$$1 = this.movableContent;\n }\n if (keys.length && row$$1 && !content$$1.querySelector('.' + editedRow)) {\n var top_1 = row$$1.getBoundingClientRect().top;\n if (isXaxis || (top_1 < this.content.offsetHeight && top_1 > this.parent.getRowHeight())) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row$$1);\n }\n }\n if (row$$1 && this.content.querySelector('.' + editedRow) && !keys.length) {\n var rowData = extend({}, this.getRowObjectByIndex(this.editedRowIndex));\n this.virtualData = this.getVirtualEditedData(rowData);\n }\n }\n this.restoreAdd(e);\n }\n };\n VirtualContentRenderer.prototype.getVirtualEditedData = function (rowData) {\n var editForms = [].slice.call(this.parent.element.getElementsByClassName('e-gridform'));\n var isFormDestroyed = this.parent.editModule && this.parent.editModule.formObj\n && this.parent.editModule.formObj.isDestroyed;\n if (!isFormDestroyed) {\n for (var i = 0; i < editForms.length; i++) {\n rowData = this.parent.editModule.getCurrentEditedData(editForms[parseInt(i.toString(), 10)], rowData);\n }\n }\n return rowData;\n };\n VirtualContentRenderer.prototype.restoreAdd = function (e) {\n var left = this.parent.getFrozenColumns();\n var isFrozen = e && this.parent.isFrozenGrid();\n var table$$1 = this.parent.getFrozenMode();\n var isXaxis = e && e.virtualInfo && e.virtualInfo.sentinelInfo && e.virtualInfo.sentinelInfo.axis === 'X';\n var startAdd = isXaxis && isFrozen ? !(this.parent.getMovableVirtualHeader().querySelector('.' + addedRow)\n || this.parent.getMovableVirtualContent().querySelector('.' + addedRow)) : !this.parent.element.querySelector('.' + addedRow);\n var trigger = e && (left || table$$1 === 'Left' || table$$1 === 'Right' ? e.renderMovableContent : e.renderFrozenRightContent);\n if ((!isFrozen || (isFrozen && trigger)) && this.isNormaledit && this.isAdd && startAdd) {\n var isTop = this.parent.editSettings.newRowPosition === 'Top' && this.content.scrollTop < this.parent.getRowHeight();\n var isBottom = this.parent.editSettings.newRowPosition === 'Bottom'\n && this.parent.pageSettings.currentPage === this.maxPage;\n if (isTop || isBottom) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n VirtualContentRenderer.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count)) {\n this.count = e.count;\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n this.vgenerator.checkAndResetCache(e.requestType);\n if (['refresh', 'filtering', 'searching', 'grouping', 'ungrouping', 'reorder', undefined]\n .some(function (value) { return e.requestType === value; })) {\n this.refreshOffsets();\n }\n this.setVirtualHeight();\n this.resetScrollPosition(e.requestType);\n };\n /**\n * @param {number} height - specifies the height\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.setVirtualHeight = function (height) {\n var width = this.parent.enableColumnVirtualization ?\n this.getColumnOffset(this.parent.columns.length + this.parent.groupSettings.columns.length - 1) + 'px' : '100%';\n if (this.parent.isFrozenGrid()) {\n var virtualHeightTemp = (this.parent.pageSettings.currentPage === 1 && Object.keys(this.offsets).length <= 2) ?\n this.offsets[1] : this.offsets[this.getTotalBlocks() - 2];\n var scrollableElementHeight = this.content.clientHeight;\n virtualHeightTemp = virtualHeightTemp > scrollableElementHeight ? virtualHeightTemp : 0;\n // To overcome the white space issue in last page (instead of position absolute)\n this.virtualEle.setVirtualHeight(virtualHeightTemp, width);\n }\n else {\n var virtualHeight = (this.offsets[isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() :\n this.getTotalBlocks()]);\n this.virtualEle.setVirtualHeight(virtualHeight, width);\n }\n if (this.parent.enableColumnVirtualization) {\n this.header.virtualEle.setVirtualHeight(1, width);\n if (this.parent.isFrozenGrid()) {\n this.virtualEle.setMovableVirtualHeight(1, width);\n this.header.virtualEle.setMovableVirtualHeight(1, width);\n }\n }\n };\n VirtualContentRenderer.prototype.getPageFromTop = function (sTop, info) {\n var _this = this;\n var total = (isGroupAdaptive(this.parent)) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n var page = 0;\n this.offsetKeys.some(function (offset) {\n var iOffset = Number(offset);\n var border = sTop <= _this.offsets[\"\" + offset] || (iOffset === total && sTop > _this.offsets[\"\" + offset]);\n if (border) {\n if (_this.offsetKeys.length % 2 !== 0 && iOffset.toString() === _this.offsetKeys[_this.offsetKeys.length - 2]\n && sTop <= _this.offsets[_this.offsetKeys.length - 1]) {\n iOffset = iOffset + 1;\n }\n info.block = iOffset % 2 === 0 ? 1 : 0;\n page = Math.max(1, Math.min(_this.vgenerator.getPage(iOffset), _this.maxPage));\n }\n return border;\n });\n return page;\n };\n VirtualContentRenderer.prototype.getTranslateY = function (sTop, cHeight, info, isOnenter) {\n if (info === undefined) {\n info = { page: this.getPageFromTop(sTop, {}) };\n info.blockIndexes = this.vgenerator.getBlockIndexes(info.page);\n }\n var block = (info.blockIndexes[0] || 1) - 1;\n var translate = this.getOffset(block);\n var endTranslate = this.getOffset(info.blockIndexes[info.blockIndexes.length - 1]);\n if (isOnenter) {\n info = this.prevInfo;\n }\n var result = translate > sTop ?\n this.getOffset(block - 1) : endTranslate < (sTop + cHeight) ? this.getOffset(block + 1) : translate;\n var blockHeight = this.offsets[info.blockIndexes[info.blockIndexes.length - 1]] -\n this.tmpOffsets[info.blockIndexes[0]];\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n if (result + blockHeight > this.offsets[parseInt(totalBlocks.toString(), 10)]) {\n result -= (result + blockHeight) - this.offsets[parseInt(totalBlocks.toString(), 10)];\n }\n return result;\n };\n VirtualContentRenderer.prototype.getOffset = function (block) {\n return Math.min(this.offsets[parseInt(block.toString(), 10)] | 0, this.offsets[this.maxBlock] | 0);\n };\n VirtualContentRenderer.prototype.onEntered = function () {\n var _this = this;\n return function (element, current, direction, e, isWheel, check) {\n if (Browser.isIE && !isWheel && check && !_this.preventEvent && !_this.parent.enableVirtualMaskRow) {\n _this.parent.showSpinner();\n }\n if (_this.parent.enableVirtualMaskRow && !_this.preventEvent) {\n var firstOffSetKey = parseInt(_this.offsetKeys[0], 10);\n var lastOffSetKey = parseInt(_this.offsetKeys[_this.offsetKeys.length - 1], 10);\n var blockIndex = _this.currentInfo.blockIndexes;\n if (!((blockIndex && blockIndex[0] === firstOffSetKey && direction === 'up') ||\n (blockIndex && blockIndex[blockIndex.length - 1] === lastOffSetKey && direction === 'down'))) {\n setTimeout(function () {\n _this.parent.showMaskRow(current.axis);\n }, 0);\n }\n }\n var colVFtable = _this.parent.enableColumnVirtualization && _this.parent.isFrozenGrid();\n _this.prevInfo = _this.prevInfo || _this.vgenerator.getData();\n var xAxis = current.axis === 'X';\n var top = _this.prevInfo.offsets ? _this.prevInfo.offsets.top : null;\n var height = _this.content.getBoundingClientRect().height;\n var x = _this.getColumnOffset(xAxis ? _this.vgenerator.getColumnIndexes()[0] - 1 : _this.prevInfo.columnIndexes[0] - 1);\n if (xAxis && !colVFtable) {\n var idx = Object.keys(_this.vgenerator.cOffsets).length - _this.prevInfo.columnIndexes.length;\n var maxLeft = _this.vgenerator.cOffsets[idx - 1];\n x = x > maxLeft ? maxLeft : x; //TODO: This fix horizontal scrollbar jumping issue in column virtualization.\n }\n var y = _this.getTranslateY(e.top, height, xAxis && top === e.top ? _this.prevInfo : undefined, true);\n _this.virtualEle.adjustTable(colVFtable ? 0 : x, Math.min(y, _this.offsets[_this.maxBlock]));\n if (colVFtable) {\n _this.virtualEle.adjustMovableTable(x, 0);\n }\n if (_this.parent.enableColumnVirtualization) {\n _this.header.virtualEle.adjustTable(colVFtable ? 0 : x, 0);\n if (colVFtable) {\n _this.header.virtualEle.adjustMovableTable(x, 0);\n }\n }\n };\n };\n VirtualContentRenderer.prototype.dataBound = function () {\n this.parent.notify(refreshVirtualFrozenHeight, {});\n if (this.isSelection && this.activeKey !== 'upArrow' && this.activeKey !== 'downArrow') {\n this.parent.selectRow(this.selectedRowIndex);\n }\n else {\n this.activeKey = this.empty;\n }\n };\n VirtualContentRenderer.prototype.rowSelected = function (args, isSelection) {\n if ((this.isSelection || isSelection) && !this.isLastBlockRow(args.rowIndex)) {\n var transform = getTransformValues(this.content.firstElementChild);\n var gridTop = this.parent.element.getBoundingClientRect().top;\n var rowTop = args.row.getBoundingClientRect().top - gridTop;\n var height = this.content.getBoundingClientRect().height;\n var isBottom = height < rowTop;\n var remainHeight = isBottom ? rowTop - height : this.initialRowTop - rowTop;\n var translateY = isBottom ? transform.height - remainHeight : transform.height + remainHeight;\n this.virtualEle.adjustTable(transform.width, translateY);\n var lastRowTop = this.content.querySelector('tbody').lastElementChild.getBoundingClientRect().top - gridTop;\n if (lastRowTop < height) {\n translateY = translateY + (height - (args.row.getBoundingClientRect().top - gridTop));\n this.virtualEle.adjustTable(transform.width, translateY - (this.parent.getRowHeight() / 2));\n }\n }\n this.isSelection = false;\n };\n VirtualContentRenderer.prototype.isLastBlockRow = function (index) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var startIdx = (this.maxPage * this.parent.pageSettings.pageSize) - visibleRowCount;\n return index >= startIdx;\n };\n VirtualContentRenderer.prototype.refreshMaxPage = function () {\n if (this.parent.groupSettings.columns.length && this.parent.vcRows.length) {\n this.maxPage = Math.ceil(this.parent.vcRows.length / this.parent.pageSettings.pageSize);\n }\n };\n VirtualContentRenderer.prototype.setVirtualPageQuery = function (args) {\n var row$$1 = this.parent.getContent().querySelector('.e-row');\n if (row$$1 && this.parent.isManualRefresh && this.currentInfo.blockIndexes && this.currentInfo.blockIndexes.length === 3) {\n this.vgenerator.startIndex = parseInt(row$$1.getAttribute('data-rowindex'), 10);\n this.vgenerator.currentInfo = extend({}, this.currentInfo);\n this.vgenerator.currentInfo.blockIndexes = this.currentInfo.blockIndexes.slice();\n var includePrevPage = this.vgenerator.includePrevPage = this.currentInfo.blockIndexes[0] % 2 === 0;\n if (includePrevPage) {\n this.vgenerator.startIndex = this.vgenerator.startIndex - this.getBlockSize();\n this.vgenerator.currentInfo.blockIndexes.unshift(this.currentInfo.blockIndexes[0] - 1);\n }\n else {\n this.vgenerator.currentInfo.blockIndexes.push(this.currentInfo.blockIndexes[this.currentInfo.blockIndexes.length - 1] + 1);\n }\n var skip = (this.vgenerator.currentInfo.blockIndexes[0] - 1) * this.getBlockSize();\n var take = this.vgenerator.currentInfo.blockIndexes.length * this.getBlockSize();\n args.query.skip(skip);\n args.query.take(take);\n args.skipPage = true;\n }\n };\n VirtualContentRenderer.prototype.eventListener = function (action) {\n var _this = this;\n this.parent[\"\" + action](dataReady, this.onDataReady, this);\n this.parent.addEventListener(dataBound, this.dataBound.bind(this));\n this.parent.addEventListener(actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(rowSelected, this.rowSelected.bind(this));\n this.parent[\"\" + action](refreshVirtualBlock, this.refreshContentRows, this);\n this.parent[\"\" + action](refreshVirtualLazyLoadCache, this.refreshVirtualLazyLoadCache, this);\n this.parent[\"\" + action](selectVirtualRow, this.selectVirtualRow, this);\n this.parent[\"\" + action](virtaulCellFocus, this.virtualCellFocus, this);\n this.parent[\"\" + action](virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent[\"\" + action](virtualScrollAddActionBegin, this.addActionBegin, this);\n this.parent[\"\" + action](virtualScrollEdit, this.restoreEdit, this);\n this.parent[\"\" + action](virtualScrollEditSuccess, this.editSuccess, this);\n this.parent[\"\" + action](refreshVirtualCache, this.refreshCache, this);\n this.parent[\"\" + action](editReset, this.resetIsedit, this);\n this.parent[\"\" + action](getVirtualData, this.getVirtualData, this);\n this.parent[\"\" + action](virtualScrollEditCancel, this.editCancel, this);\n this.parent[\"\" + action](refreshVirtualMaxPage, this.refreshMaxPage, this);\n this.parent[\"\" + action](setVirtualPageQuery, this.setVirtualPageQuery, this);\n this.parent[\"\" + action](selectRowOnContextOpen, this.selectRowOnContextOpen, this);\n this.parent[\"\" + action](resetVirtualFocus, this.resetVirtualFocus, this);\n this.parent[\"\" + action](refreshVirtualEditFormCells, this.refreshCells, this);\n this.parent[\"\" + action](scrollToEdit, this.scrollToEdit, this);\n var event = this.actions;\n for (var i = 0; i < event.length; i++) {\n this.parent[\"\" + action](event[parseInt(i.toString(), 10)] + \"-begin\", this.onActionBegin, this);\n }\n var fn = function () {\n _this.observer.observe(function (scrollArgs) { return _this.scrollListener(scrollArgs); }, _this.onEntered());\n var gObj = _this.parent;\n if (gObj.enablePersistence && gObj.scrollPosition) {\n _this.content.scrollTop = gObj.scrollPosition.top;\n var scrollValues = { direction: 'down', sentinel: _this.observer.sentinelInfo.down,\n offset: gObj.scrollPosition, focusElement: gObj.element };\n _this.scrollListener(scrollValues);\n if (gObj.enableColumnVirtualization) {\n _this.content.scrollLeft = gObj.scrollPosition.left;\n }\n }\n _this.parent.off(contentReady, fn);\n };\n this.parent.on(contentReady, fn, this);\n };\n VirtualContentRenderer.prototype.refreshVirtualLazyLoadCache = function (e) {\n var blockIndex = this.currentInfo.blockIndexes;\n if (isNullOrUndefined(this.currentInfo.blockIndexes)) {\n blockIndex = [1, 2];\n }\n var block;\n var index;\n var cache;\n for (var i = 0; i < blockIndex.length; i++) {\n var rows = this.vgenerator.cache[blockIndex[parseInt(i.toString(), 10)]];\n for (var j = 0; j < rows.length; j++) {\n if (rows[parseInt(j.toString(), 10)].uid === e.uid) {\n block = blockIndex[parseInt(i.toString(), 10)];\n index = j;\n cache = rows;\n break;\n }\n }\n }\n if (e.count) {\n this.vgenerator.cache[parseInt(block.toString(), 10)].splice(index + 1, e.count);\n }\n else if (e.rows && e.rows.length) {\n this.vgenerator.cache[parseInt(block.toString(), 10)] = ([].slice.call(cache.slice(0, index + 1)).concat([].slice.call(e.rows))).concat([].slice.call(cache.slice(index + 1, cache.length)));\n }\n this.refreshOffsets();\n };\n VirtualContentRenderer.prototype.scrollToEdit = function (col) {\n var isFrozen = this.parent.isFrozenGrid();\n var allowScroll = true;\n this.validationCheck = true;\n if (this.isAdd && this.content.scrollTop > 0) {\n allowScroll = false;\n var keys = Object.keys(this.offsets);\n this.content.scrollTop = this.parent.editSettings.newRowPosition === 'Top' ? 0 : this.offsets[keys.length - 1];\n }\n var row$$1 = this.parent.getRowByIndex(this.editedRowIndex);\n if (!row$$1 && !isNullOrUndefined(this.editedRowIndex)) {\n if (!row$$1 || !this.isRowInView(row$$1)) {\n var rowIndex = this.parent.getRowHeight();\n var scrollTop = this.editedRowIndex * rowIndex;\n if (!isNullOrUndefined(scrollTop)) {\n allowScroll = false;\n this.content.scrollTop = scrollTop;\n }\n }\n }\n if (col && allowScroll) {\n var offset = this.vgenerator.cOffsets[(col.index - this.parent.getVisibleFrozenColumns()) - 1];\n if (!this.parent.enableColumnVirtualization) {\n var header = this.parent.getHeaderContent().querySelector('.e-headercelldiv[e-mappinguid=\"' + col.uid + '\"]');\n offset = isFrozen ? header.parentElement.offsetLeft\n - this.parent.getFrozenVirtualHeader().offsetWidth\n : header.parentElement.offsetLeft;\n }\n if (isFrozen) {\n this.parent.getMovableVirtualContent().scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n else {\n this.content.scrollLeft = this.parent.enableRtl ? -Math.abs(offset) : offset;\n }\n }\n if (col && !allowScroll) {\n this.validationCol = col;\n }\n };\n VirtualContentRenderer.prototype.refreshCells = function (rowObj) {\n rowObj.cells = this.vgenerator.generateCells(rowObj.foreignKeyData);\n };\n VirtualContentRenderer.prototype.resetVirtualFocus = function (e) {\n this.isCancel = e.isCancel;\n };\n /**\n * @param {Object} data - specifies the data\n * @param {Object} data.virtualData -specifies the data\n * @param {boolean} data.isAdd - specifies isAdd\n * @param {boolean} data.isCancel - specifies boolean in cancel\n * @param {boolean} data.isScroll - specifies boolean for scroll\n * @returns {void}\n * @hidden\n */\n VirtualContentRenderer.prototype.getVirtualData = function (data) {\n if (this.isNormaledit) {\n var error = this.parent.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n var keys = Object.keys(this.virtualData);\n data.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n if (error) {\n return;\n }\n this.virtualData = keys.length ? this.virtualData : data.virtualData;\n this.getVirtualEditedData(this.virtualData);\n data.virtualData = this.virtualData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n }\n };\n VirtualContentRenderer.prototype.selectRowOnContextOpen = function (args) {\n this.isContextMenuOpen = args.isOpen;\n };\n VirtualContentRenderer.prototype.editCancel = function (args) {\n var dataIndex = getEditedDataIndex(this.parent, args.data);\n if (!isNullOrUndefined(dataIndex)) {\n args.data = this.parent.getCurrentViewRecords()[parseInt(dataIndex.toString(), 10)];\n }\n };\n VirtualContentRenderer.prototype.editSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewData(args.data);\n }\n this.isAdd = false;\n }\n };\n VirtualContentRenderer.prototype.updateCurrentViewData = function (data) {\n var dataIndex = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(dataIndex)) {\n this.parent.getCurrentViewRecords()[parseInt(dataIndex.toString(), 10)] = data;\n }\n };\n VirtualContentRenderer.prototype.actionBegin = function (args) {\n if (args.requestType !== 'virtualscroll') {\n this.requestType = args.requestType;\n }\n if (!args.cancel) {\n this.parent.notify(refreshVirtualFrozenRows, args);\n }\n };\n VirtualContentRenderer.prototype.virtualCellFocus = function (e) {\n // To decide the action (select or scroll), when using arrow keys for cell focus\n var ele = document.activeElement;\n if (!ele.classList.contains(rowCell) && ele instanceof HTMLInputElement) {\n ele = ele.closest('.e-rowcell');\n }\n if (ele && ele.classList.contains(rowCell)\n && e && (e.action === 'upArrow' || e.action === 'downArrow')) {\n var rowIndex = parseInt(ele.parentElement.getAttribute(dataRowIndex), 10);\n if (e && (e.action === 'downArrow' || e.action === 'upArrow')) {\n var scrollEle = this.parent.getContent().firstElementChild;\n if (e.action === 'downArrow') {\n rowIndex += 1;\n }\n else {\n rowIndex -= 1;\n }\n this.rowIndex = rowIndex;\n this.cellIndex = parseInt(ele.getAttribute(dataColIndex), 10);\n var row$$1 = this.parent.getRowByIndex(rowIndex);\n var page = this.parent.pageSettings.currentPage;\n var visibleRowCount = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n var emptyRow = false;\n if (isNullOrUndefined(row$$1)) {\n emptyRow = true;\n if ((e.action === 'downArrow' && page === this.maxPage - 1) || (e.action === 'upArrow' && page === 1)) {\n emptyRow = false;\n }\n }\n if (emptyRow || (ensureLastRow(row$$1, this.parent) && e.action === 'downArrow')\n || (ensureFirstRow(row$$1, this.parent.getRowHeight() * 2) && e.action === 'upArrow')) {\n this.activeKey = e.action;\n scrollEle.scrollTop = e.action === 'downArrow' ?\n (rowIndex - visibleRowCount) * this.parent.getRowHeight() : rowIndex * this.parent.getRowHeight();\n }\n else {\n this.activeKey = this.empty;\n }\n if (!this.parent.selectionSettings.checkboxOnly) {\n this.parent.selectRow(rowIndex);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.editActionBegin = function (e) {\n this.editedRowIndex = e.index;\n var rowData = extend({}, this.getRowObjectByIndex(e.index));\n var keys = Object.keys(this.virtualData);\n e.data = keys.length ? this.virtualData : rowData;\n e.isScroll = keys.length !== 0 && this.currentInfo.sentinelInfo && this.currentInfo.sentinelInfo.axis === 'X';\n };\n VirtualContentRenderer.prototype.getEditedRowObject = function () {\n var rowObjects = this.parent.vcRows;\n var editedrow;\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].index === this.editedRowIndex) {\n editedrow = rowObjects[parseInt(i.toString(), 10)];\n }\n }\n return editedrow;\n };\n VirtualContentRenderer.prototype.refreshCache = function (args) {\n var block = Math.ceil((this.editedRowIndex + 1) / this.getBlockSize());\n var index = this.editedRowIndex - ((block - 1) * this.getBlockSize());\n if (this.parent.groupSettings.columns.length) {\n this.getEditedRowObject().data = args.data;\n }\n else {\n this.vgenerator.cache[parseInt(block.toString(), 10)][parseInt(index.toString(), 10)].data = args.data;\n if (this.vgenerator.movableCache[parseInt(block.toString(), 10)]) {\n this.vgenerator.movableCache[parseInt(block.toString(), 10)][parseInt(index.toString(), 10)].data = args.data;\n }\n if (this.vgenerator.frozenRightCache[parseInt(block.toString(), 10)]) {\n this.vgenerator.frozenRightCache[parseInt(block.toString(), 10)][parseInt(index.toString(), 10)].data = args.data;\n }\n }\n };\n VirtualContentRenderer.prototype.actionComplete = function (args) {\n if (!this.parent.enableVirtualization) {\n return;\n }\n var editRequestTypes = ['delete', 'save', 'cancel'];\n var dataActionRequestTypes = ['sorting', 'filtering', 'grouping', 'refresh', 'searching', 'ungrouping', 'reorder'];\n if (editRequestTypes.some(function (value) { return value === args.requestType; })) {\n this.refreshOffsets();\n if (this.parent.isFrozenGrid()) {\n this.vgenerator.refreshColOffsets();\n this.parent.contentModule.virtualRenderer.virtualEle.setVirtualHeight();\n }\n else {\n this.refreshVirtualElement();\n }\n }\n if (this.isNormaledit && (dataActionRequestTypes.some(function (value) { return value === args.requestType; })\n || editRequestTypes.some(function (value) { return value === args.requestType; }))) {\n this.isCancel = true;\n this.isAdd = false;\n this.editedRowIndex = this.empty;\n this.virtualData = {};\n if (this.parent.editModule) {\n this.parent.editModule.editModule.previousData = undefined;\n }\n }\n if (this.parent.enableColumnVirtualization && args.requestType === 'filterafteropen'\n && this.currentInfo.columnIndexes && this.currentInfo.columnIndexes[0] > 0) {\n this.parent.resetFilterDlgPosition(args.columnName);\n }\n };\n VirtualContentRenderer.prototype.resetIsedit = function () {\n if (this.parent.enableVirtualization && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && Object.keys(this.virtualData).length)\n || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n VirtualContentRenderer.prototype.scrollAfterEdit = function () {\n if (this.parent.editModule && this.parent.editSettings.allowEditing && this.isNormaledit) {\n if (this.parent.element.querySelector('.e-gridform')) {\n var editForm = this.parent.element.querySelector('.' + editedRow);\n var addForm = this.parent.element.querySelector('.' + addedRow);\n if (editForm || addForm) {\n var rowData = editForm ? extend({}, this.getRowObjectByIndex(this.editedRowIndex))\n : extend({}, this.emptyRowData);\n var keys = Object.keys(this.virtualData);\n this.virtualData = keys.length ? this.getVirtualEditedData(this.virtualData) : this.getVirtualEditedData(rowData);\n }\n }\n }\n };\n VirtualContentRenderer.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.columnModel.filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n VirtualContentRenderer.prototype.addActionBegin = function (args) {\n if (this.isNormaledit) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n this.isAdd = true;\n var page = this.parent.pageSettings.currentPage;\n if (!this.parent.frozenRows && this.content.scrollTop > 0 && this.parent.editSettings.newRowPosition === 'Top') {\n this.isAdd = true;\n this.onActionBegin();\n args.startEdit = false;\n this.content.scrollTop = 0;\n }\n if (page < this.maxPage - 1 && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.isAdd = true;\n this.parent.setProperties({ pageSettings: { currentPage: this.maxPage - 1 } }, true);\n args.startEdit = false;\n this.content.scrollTop = this.offsets[this.offsetKeys.length];\n }\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Object} returns the object\n * @hidden\n */\n VirtualContentRenderer.prototype.getRowObjectByIndex = function (index) {\n var data = this.getRowCollection(index, false, true);\n return data;\n };\n VirtualContentRenderer.prototype.getBlockSize = function () {\n return this.parent.pageSettings.pageSize >> 1;\n };\n VirtualContentRenderer.prototype.getBlockHeight = function () {\n return this.getBlockSize() * this.parent.getRowHeight();\n };\n VirtualContentRenderer.prototype.isEndBlock = function (index) {\n var totalBlocks = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n return index >= totalBlocks || index === totalBlocks - 1;\n };\n VirtualContentRenderer.prototype.getGroupedTotalBlocks = function () {\n var rows = this.parent.vcRows;\n return Math.floor((rows.length / this.getBlockSize()) < 1 ? 1 : rows.length / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getTotalBlocks = function () {\n return Math.ceil(this.count / this.getBlockSize());\n };\n VirtualContentRenderer.prototype.getColumnOffset = function (block) {\n return this.vgenerator.cOffsets[parseInt(block.toString(), 10)] | 0;\n };\n VirtualContentRenderer.prototype.getModelGenerator = function () {\n return new VirtualRowModelGenerator(this.parent);\n };\n VirtualContentRenderer.prototype.resetScrollPosition = function (action) {\n if (this.actions.some(function (value) { return value === action; })) {\n this.preventEvent = this.content.scrollTop !== 0;\n this.content.scrollTop = 0;\n }\n if (action !== 'virtualscroll') {\n this.isAdd = false;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n VirtualContentRenderer.prototype.onActionBegin = function (e) {\n //Update property silently..\n this.parent.setProperties({ pageSettings: { currentPage: 1 } }, true);\n };\n VirtualContentRenderer.prototype.getRows = function () {\n return this.vgenerator.getRows();\n };\n VirtualContentRenderer.prototype.getRowByIndex = function (index) {\n var row$$1;\n if (isGroupAdaptive(this.parent)) {\n row$$1 = !isNullOrUndefined(index) ? this.parent.getDataRows()[parseInt(index.toString(), 10)] : undefined;\n }\n else if (this.prevInfo) {\n row$$1 = this.getRowCollection(index, false);\n }\n return row$$1;\n };\n VirtualContentRenderer.prototype.getMovableVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, true);\n };\n VirtualContentRenderer.prototype.getFrozenRightVirtualRowByIndex = function (index) {\n return this.getRowCollection(index, false, false, true);\n };\n VirtualContentRenderer.prototype.getRowCollection = function (index, isMovable, isRowObject, isFrozenRight) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n var rowCollection = isMovable ? this.parent.getMovableDataRows() : this.parent.getDataRows();\n rowCollection = isFrozenRight ? this.parent.getFrozenRightDataRows() : rowCollection;\n var collection = isRowObject ? this.parent.getCurrentViewRecords() : rowCollection;\n if (isRowObject && this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n startIdx = parseInt(this.parent.getRows()[0].getAttribute(dataRowIndex), 10);\n collection = collection.filter(function (m) { return isNullOrUndefined(m.items); });\n }\n var selectedRow = collection[index - startIdx];\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage > 1) {\n if (!isRowObject) {\n selectedRow = index <= this.parent.frozenRows ? rowCollection[parseInt(index.toString(), 10)]\n : rowCollection[(index - startIdx) + this.parent.frozenRows];\n }\n else {\n selectedRow = index <= this.parent.frozenRows ? this.parent.getRowsObject()[parseInt(index.toString(), 10)].data\n : selectedRow;\n }\n }\n return selectedRow;\n };\n VirtualContentRenderer.prototype.getVirtualRowIndex = function (index) {\n var prev = this.prevInfo.blockIndexes;\n var startIdx = (prev[0] - 1) * this.getBlockSize();\n return startIdx + index;\n };\n /**\n * @returns {void}\n * @hidden */\n VirtualContentRenderer.prototype.refreshOffsets = function () {\n var gObj = this.parent;\n var row$$1 = 0;\n var bSize = this.getBlockSize();\n var total = isGroupAdaptive(this.parent) ? this.getGroupedTotalBlocks() : this.getTotalBlocks();\n this.prevHeight = this.offsets[parseInt(total.toString(), 10)];\n this.maxBlock = total % 2 === 0 ? total - 2 : total - 1;\n this.offsets = {};\n //Row offset update\n // eslint-disable-next-line prefer-spread\n var blocks = Array.apply(null, Array(total)).map(function () { return ++row$$1; });\n for (var i = 0; i < blocks.length; i++) {\n var tmp = (this.vgenerator.cache[blocks[parseInt(i.toString(), 10)]] || []).length;\n var rem = !isGroupAdaptive(this.parent) ? this.count % bSize : (gObj.vcRows.length % bSize);\n var size = !isGroupAdaptive(this.parent) && blocks[parseInt(i.toString(), 10)] in this.vgenerator.cache ?\n tmp * this.parent.getRowHeight() : rem && blocks[parseInt(i.toString(), 10)] === total ? rem * this.parent.getRowHeight() :\n this.getBlockHeight();\n // let size: number = this.parent.groupSettings.columns.length && block in this.vgenerator.cache ?\n // tmp * getRowHeight() : this.getBlockHeight();\n this.offsets[blocks[parseInt(i.toString(), 10)]] = (this.offsets[blocks[parseInt(i.toString(), 10)] - 1] | 0) + size;\n this.tmpOffsets[blocks[parseInt(i.toString(), 10)]] = this.offsets[blocks[parseInt(i.toString(), 10)] - 1] | 0;\n }\n this.offsetKeys = Object.keys(this.offsets);\n if (isGroupAdaptive(this.parent)) {\n this.parent.vGroupOffsets = this.offsets;\n }\n //Column offset update\n if (this.parent.enableColumnVirtualization) {\n this.vgenerator.refreshColOffsets();\n }\n };\n VirtualContentRenderer.prototype.refreshVirtualElement = function () {\n this.vgenerator.refreshColOffsets();\n this.setVirtualHeight();\n };\n VirtualContentRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var frozenCols = this.parent.getFrozenColumns();\n var fcntColGrp;\n var mcntColGrp;\n if (frozenCols) {\n fcntColGrp = [].slice.call(this.parent.getFrozenVirtualContent().querySelectorAll('col'));\n mcntColGrp = [].slice.call(this.parent.getMovableVirtualContent().querySelectorAll('col'));\n }\n var rows = [];\n rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var isRefresh = true;\n if (!gObj.groupSettings.columns.length && testRow) {\n isRefresh = false;\n }\n var tr = gObj.getDataRows();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n var idx = gObj.getNormalizedColumnIndex(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n var colGrp = void 0;\n if (fcntColGrp && mcntColGrp) {\n if (idx >= frozenCols) {\n colGrp = mcntColGrp;\n tr = this.parent.getMovableRows();\n idx = idx - frozenCols;\n }\n else {\n colGrp = fcntColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(colGrp[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n if (!isRefresh) {\n var width = void 0;\n if (column.width) {\n if (column.visible) {\n width = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n width = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n }\n if (width > gObj.width) {\n this.setDisplayNone(tr, idx, displayVal, rows);\n if (this.parent.enableColumnVirtualization) {\n this.virtualEle.setWrapperWidth(width + '');\n }\n this.refreshVirtualElement();\n }\n else {\n isRefresh = true;\n }\n }\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n if (isRefresh || frozenCols) {\n this.refreshContentRows({ requestType: 'refresh' });\n }\n else {\n this.parent.notify(partialRefresh, { rows: rows, args: { isFrozen: false, rows: rows } });\n }\n };\n VirtualContentRenderer.prototype.selectVirtualRow = function (args) {\n var _this = this;\n args.isAvailable = args.selectedIndex < this.count;\n if (args.isAvailable && !this.isContextMenuOpen && this.activeKey !== 'upArrow'\n && this.activeKey !== 'downArrow' && !this.isSelection && !this.requestTypes.some(function (value) { return value === _this.requestType; })\n && !this.parent.selectionModule.isInteracted) {\n var selectedRow = this.parent.getRowByIndex(args.selectedIndex);\n var rowHeight = this.parent.getRowHeight();\n if (!selectedRow || !this.isRowInView(selectedRow)) {\n this.isSelection = true;\n this.selectedRowIndex = args.selectedIndex;\n var scrollTop = (args.selectedIndex + 1) * rowHeight;\n if (!isNullOrUndefined(scrollTop)) {\n var direction = this.content.scrollTop < scrollTop ? 'down' : 'up';\n this.selectRowIndex = args.selectedIndex;\n this.content.scrollTop = scrollTop;\n this.isSelectionScroll = this.observer.check(direction);\n }\n }\n }\n if (this.parent.isFrozenGrid() && this.requestType) {\n if (this.parent.getTablesCount() === this.frzIdx) {\n this.requestType = this.empty;\n this.frzIdx = 1;\n }\n else {\n this.frzIdx++;\n }\n }\n else {\n this.requestType = this.empty;\n }\n };\n VirtualContentRenderer.prototype.isRowInView = function (row$$1) {\n var top = row$$1.getBoundingClientRect().top;\n var bottom = row$$1.getBoundingClientRect().bottom;\n return (top >= this.content.getBoundingClientRect().top && bottom <= this.content.getBoundingClientRect().bottom);\n };\n return VirtualContentRenderer;\n}(ContentRender));\n/**\n * @hidden\n */\nvar VirtualHeaderRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$24(VirtualHeaderRenderer, _super);\n function VirtualHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.virtualEle = new VirtualElementHandler();\n _this.isMovable = false;\n _this.gen = new VirtualRowModelGenerator(_this.parent);\n _this.parent.on(columnVisibilityChanged, _this.setVisible, _this);\n _this.parent.on(refreshVirtualBlock, function (e) { return e.virtualInfo.sentinelInfo.axis === 'X' ? _this.refreshUI() : null; }, _this);\n return _this;\n }\n VirtualHeaderRenderer.prototype.renderTable = function () {\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + headerContent)));\n _super.prototype.renderTable.call(this);\n this.virtualEle.table = this.getTable();\n this.virtualEle.content = this.getPanel().querySelector('.' + headerContent);\n this.virtualEle.content.style.position = 'relative';\n this.virtualEle.renderWrapper();\n this.virtualEle.renderPlaceHolder('absolute');\n };\n VirtualHeaderRenderer.prototype.appendContent = function (table$$1) {\n if (!this.isMovable) {\n this.virtualEle.wrapper.appendChild(table$$1);\n }\n else {\n this.virtualEle.movableWrapper.appendChild(table$$1);\n this.isMovable = false;\n }\n };\n VirtualHeaderRenderer.prototype.refreshUI = function () {\n this.isMovable = this.parent.isFrozenGrid();\n this.setFrozenTable(this.parent.getMovableVirtualContent());\n this.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.gen.getColumnIndexes(this.getPanel().querySelector('.' + headerContent)));\n _super.prototype.refreshUI.call(this);\n this.setFrozenTable(this.parent.getFrozenVirtualContent());\n };\n VirtualHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var needFullRefresh;\n var frozenCols = this.parent.getFrozenColumns();\n var fhdrColGrp;\n var mhdrColGrp;\n if (frozenCols) {\n fhdrColGrp = [].slice.call(this.parent.getFrozenVirtualHeader().querySelectorAll('col'));\n mhdrColGrp = [].slice.call(this.parent.getMovableVirtualHeader().querySelectorAll('col'));\n }\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n var colGrp = void 0;\n if (fhdrColGrp && mhdrColGrp) {\n if (idx >= frozenCols) {\n colGrp = mhdrColGrp;\n idx = idx - frozenCols;\n }\n else {\n colGrp = fhdrColGrp;\n }\n }\n else {\n colGrp = this.getColGroup().children;\n }\n setStyleAttribute(colGrp[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (gObj.enableColumnVirtualization && !gObj.groupSettings.columns.length) {\n var tablewidth = void 0;\n if (column.visible) {\n tablewidth = this.virtualEle.wrapper.offsetWidth + parseInt(column.width.toString(), 10);\n }\n else {\n tablewidth = this.virtualEle.wrapper.offsetWidth - parseInt(column.width.toString(), 10);\n }\n if (tablewidth > gObj.width) {\n this.setDisplayNone(column, displayVal);\n this.virtualEle.setWrapperWidth(tablewidth + '');\n this.gen.refreshColOffsets();\n }\n else {\n needFullRefresh = true;\n }\n }\n else {\n needFullRefresh = true;\n }\n if (needFullRefresh && !frozenCols) {\n this.refreshUI();\n }\n }\n if (frozenCols) {\n this.parent.notify(columnPositionChanged, {});\n }\n };\n VirtualHeaderRenderer.prototype.setFrozenTable = function (content$$1) {\n if (this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization\n && this.parent.contentModule.isXaxis()) {\n this.parent.contentModule\n .setTable(content$$1.querySelector('.' + table + ':not(.e-masked-table)'));\n }\n };\n VirtualHeaderRenderer.prototype.setDisplayNone = function (col, displayVal) {\n var frozenCols = this.parent.isFrozenGrid();\n var table$$1 = this.getTable();\n if (frozenCols && col.getFreezeTableName() === 'movable') {\n table$$1 = this.parent.getMovableVirtualHeader().querySelector('.' + table);\n }\n for (var _i = 0, _a = [].slice.apply(table$$1.querySelectorAll('th.e-headercell')); _i < _a.length; _i++) {\n var ele = _a[_i];\n if (ele.querySelector('[e-mappinguid]') &&\n ele.querySelector('[e-mappinguid]').getAttribute('e-mappinguid') === col.uid) {\n setStyleAttribute(ele, { 'display': displayVal });\n if (displayVal === '') {\n removeClass([ele], 'e-hide');\n }\n break;\n }\n }\n };\n return VirtualHeaderRenderer;\n}(HeaderRender));\n/**\n * @hidden\n */\nvar VirtualElementHandler = /** @__PURE__ @class */ (function () {\n function VirtualElementHandler() {\n }\n VirtualElementHandler.prototype.renderWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.wrapper.appendChild(this.table);\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderPlaceHolder = function (position) {\n if (position === void 0) { position = 'relative'; }\n this.placeholder = createElement('div', { className: 'e-virtualtrack', styles: \"position:\" + position });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderFrozenWrapper = function (height) {\n this.wrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) + \"; display: flex\" });\n this.content.appendChild(this.wrapper);\n };\n VirtualElementHandler.prototype.renderFrozenPlaceHolder = function () {\n this.placeholder = createElement('div', { className: 'e-virtualtrack' });\n this.content.appendChild(this.placeholder);\n };\n VirtualElementHandler.prototype.renderMovableWrapper = function (height) {\n this.movableWrapper = createElement('div', { className: 'e-virtualtable', styles: \"min-height:\" + formatUnit(height) });\n this.movableContent.appendChild(this.movableWrapper);\n };\n VirtualElementHandler.prototype.renderMovablePlaceHolder = function () {\n this.movablePlaceholder = createElement('div', { className: 'e-virtualtrack' });\n this.movableContent.appendChild(this.movablePlaceholder);\n };\n VirtualElementHandler.prototype.adjustTable = function (xValue, yValue) {\n this.wrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.adjustMovableTable = function (xValue, yValue) {\n this.movableWrapper.style.transform = \"translate(\" + xValue + \"px, \" + yValue + \"px)\";\n };\n VirtualElementHandler.prototype.setMovableWrapperWidth = function (width, full) {\n this.movableWrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setMovableVirtualHeight = function (height, width) {\n this.movablePlaceholder.style.height = height + \"px\";\n this.movablePlaceholder.style.width = width;\n };\n VirtualElementHandler.prototype.setWrapperWidth = function (width, full) {\n this.wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n VirtualElementHandler.prototype.setVirtualHeight = function (height, width) {\n this.placeholder.style.height = !isNullOrUndefined(height) ? height + \"px\" : '0px';\n this.placeholder.style.width = width;\n };\n VirtualElementHandler.prototype.setFreezeWrapperWidth = function (wrapper, width, full) {\n wrapper.style.width = width ? width + \"px\" : full ? '100%' : '';\n };\n return VirtualElementHandler;\n}());\n\n/**\n * Virtual Scrolling class\n */\nvar VirtualScroll = /** @__PURE__ @class */ (function () {\n function VirtualScroll(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n VirtualScroll.prototype.getModuleName = function () {\n return 'virtualscroll';\n };\n VirtualScroll.prototype.instantiateRenderer = function () {\n this.parent.log(['limitation', 'virtual_height'], 'virtualization');\n var renderer = this.locator.getService('rendererFactory');\n if (!this.parent.isFrozenGrid()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualHeaderRenderer(this.parent, this.locator));\n }\n renderer.addRenderer(RenderType.Content, new VirtualContentRenderer(this.parent, this.locator));\n }\n this.ensurePageSize();\n };\n VirtualScroll.prototype.ensurePageSize = function () {\n var rowHeight = this.parent.getRowHeight();\n var vHeight = this.parent.height.toString().indexOf('%') < 0 ? this.parent.height :\n this.parent.element.getBoundingClientRect().height;\n this.blockSize = ~~(vHeight / rowHeight);\n var height = this.blockSize * 2;\n var size = this.parent.pageSettings.pageSize;\n this.parent.setProperties({ pageSettings: { pageSize: size < height ? height : size } }, true);\n };\n VirtualScroll.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(columnWidthChanged, this.refreshVirtualElement, this);\n this.parent.on(createVirtualValidationForm, this.createVirtualValidationForm, this);\n this.parent.on(validateVirtualForm, this.virtualEditFormValidation, this);\n this.parent.on(destroy, this.destroy, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(columnWidthChanged, this.refreshVirtualElement);\n this.parent.off(createVirtualValidationForm, this.createVirtualValidationForm);\n this.parent.off(validateVirtualForm, this.virtualEditFormValidation);\n this.parent.off(destroy, this.destroy);\n };\n VirtualScroll.prototype.getCurrentEditedData = function (prevData) {\n var data = {\n virtualData: extend({}, {}, prevData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(getVirtualData, data);\n return data.virtualData;\n };\n VirtualScroll.prototype.createVirtualValidationForm = function (e) {\n var gObj = this.parent;\n if (gObj.enableVirtualization && gObj.editSettings.mode === 'Normal') {\n var cols = gObj.columns;\n var rowRenderer = new RowRenderer(this.locator, null, this.parent);\n var rowObj = extend({}, {}, gObj.getRowObjectFromUID(e.uid), true);\n gObj.notify(refreshVirtualEditFormCells, rowObj);\n var args = e.argsCreator(this.getCurrentEditedData(e.prevData), {}, false);\n args.isCustomFormValidation = true;\n args.row = rowRenderer.render(rowObj, cols);\n e.renderer.update(args);\n var rules = {};\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], 0, rules, {}, {}, cols.length, true);\n }\n }\n args.form.classList.add('e-virtual-validation');\n gObj.editModule.virtualFormObj = gObj.editModule.createFormObj(args.form, rules);\n }\n };\n VirtualScroll.prototype.virtualEditFormValidation = function (args) {\n var gObj = this.parent;\n var error = gObj.element.querySelector('.e-griderror:not([style*=\"display: none\"])');\n if (gObj.editModule.virtualFormObj) {\n if (error && error.style.display !== 'none') {\n var errorDomRect = error.getBoundingClientRect();\n var forms = gObj.element.querySelectorAll('.e-gridform');\n var form = forms[0];\n var contentLeft = gObj.getContent().getBoundingClientRect().left;\n if (forms.length > 1) {\n form = gObj.getFrozenMode() !== 'Right' ? forms[1] : forms[0];\n contentLeft = gObj.getMovableVirtualContent().getBoundingClientRect().left;\n }\n if (errorDomRect.left < contentLeft || errorDomRect.right > gObj.element.offsetWidth) {\n var tooltip = form.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx }, true);\n }\n }\n else if (gObj.editModule.virtualFormObj && (!error || error.style.display === 'none')) {\n var existingErrors = gObj.editModule.virtualFormObj.element.querySelectorAll('.e-tooltip-wrap:not([style*=\"display: none\"])');\n for (var i = 0; i < existingErrors.length; i++) {\n remove(existingErrors[parseInt(i.toString(), 10)]);\n }\n this.setEditedDataToValidationForm(gObj.editModule.virtualFormObj.element, this.getCurrentEditedData(args.prevData));\n args.isValid = gObj.editModule.virtualFormObj.validate();\n if (!args.isValid) {\n var tooltip = gObj.editModule.virtualFormObj.element.querySelector('.e-tooltip-wrap:not([style*=\"display: none\"])');\n this.scrollToEdit(tooltip, { editIdx: args.editIdx, addIdx: args.addIdx });\n }\n }\n }\n };\n VirtualScroll.prototype.scrollToEdit = function (tooltip, args, isRenderer) {\n var gObj = this.parent;\n if (tooltip) {\n var cols = gObj.columnModel;\n var field = setComplexFieldID(tooltip.id).split('_')[0];\n var col = gObj.getColumnByField(field);\n var scrollTop = this.parent.getContent().firstElementChild.scrollTop;\n var row = gObj.getRowByIndex(args.editIdx);\n if (isRenderer || !col || (!isNullOrUndefined(args.addIdx) && scrollTop > 0) || (!isNullOrUndefined(args.editIdx) && !row)) {\n var validationCol = void 0;\n for (var i = 0; i < cols.length && !col; i++) {\n if (cols[parseInt(i.toString(), 10)].field === field) {\n validationCol = cols[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (isRenderer) {\n validationCol = col;\n }\n this.parent.notify(scrollToEdit, validationCol);\n }\n }\n };\n VirtualScroll.prototype.setEditedDataToValidationForm = function (form, editedData) {\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col = getColumnModelByUid(this.parent, inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n var value = getValue(col.field, editedData);\n value = isNullOrUndefined(value) ? '' : value;\n inputs[parseInt(i.toString(), 10)].value = value;\n }\n };\n VirtualScroll.prototype.refreshVirtualElement = function (args) {\n if (this.parent.enableColumnVirtualization && args.module === 'resize') {\n var renderer = this.locator.getService('rendererFactory');\n renderer.getRenderer(RenderType.Content).refreshVirtualElement();\n }\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return VirtualScroll;\n}());\n\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar InlineEditRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - returns the IGrid\n */\n function InlineEditRender(parent) {\n this.parent = parent;\n }\n InlineEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n var tbody$$1;\n var mTbody = getMovableTbody(this.parent);\n var frTbody = getFrozenRightTbody(this.parent);\n var isFrozenGrid = this.parent.isFrozenGrid();\n var isVirtualFrozen = isFrozenGrid && this.parent.enableColumnVirtualization && args.isScroll;\n if (this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top') {\n tbody$$1 = isVirtualFrozen ? this.parent.getMovableHeaderTbody() : this.parent.getHeaderTable().querySelector(tbody);\n }\n else {\n tbody$$1 = isVirtualFrozen ? this.parent.getMovableContentTbody() : this.parent.getContentTable().querySelector(tbody);\n }\n args.row = this.parent.createElement('tr', { className: 'e-row e-addedrow', attrs: { role: 'row' } });\n if (tbody$$1.querySelector('.e-emptyrow')) {\n var emptyRow = tbody$$1.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n if (isFrozenGrid && !isVirtualFrozen) {\n var moveTbody = this.parent.getContent().querySelector('.' + movableContent).querySelector(tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (this.parent.getFrozenMode() === leftRight) {\n var frTbody_1 = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(tbody);\n (frTbody_1.firstElementChild).parentNode.removeChild(frTbody_1.firstElementChild);\n }\n }\n }\n if (this.parent.editSettings.newRowPosition === 'Top') {\n tbody$$1.insertBefore(args.row, tbody$$1.firstChild);\n }\n else {\n tbody$$1.appendChild(args.row);\n }\n args.row.appendChild(this.getEditElement(elements, false, undefined, args, true));\n this.parent.editModule.checkLastRow(args.row, args);\n if (isFrozenGrid && !isVirtualFrozen) {\n var mEle = this.renderMovableform(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mEle, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mEle);\n }\n args.row.querySelector('.e-normaledit').setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.querySelector('.e-normaledit').setAttribute('colspan', '' + (this.parent.getVisibleColumns().length - this.parent.getVisibleFrozenColumns()));\n if (frTbody) {\n var frEle = this.renderFrozenRightForm(args.row, args);\n if (this.parent.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frEle, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frEle);\n }\n var colSpan = this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount();\n args.row.querySelector('.e-normaledit').setAttribute('colspan', colSpan + '');\n frEle.querySelector('.e-normaledit').setAttribute('colspan', '' + this.parent.getFrozenRightColumnsCount());\n }\n if (this.parent.height === 'auto') {\n this.parent.notify(frozenHeight, {});\n }\n }\n };\n InlineEditRender.prototype.renderFrozenRightForm = function (ele, args) {\n var frEle = ele.cloneNode(true);\n var form = args.frozenRightForm = frEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return frEle;\n }\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(colGroup).innerHTML;\n return frEle;\n };\n InlineEditRender.prototype.renderMovableform = function (ele, args) {\n var mEle = ele.cloneNode(true);\n var form = args.movableForm = mEle.querySelector('form');\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, args.rowData, false);\n return mEle;\n }\n this.renderMovable(ele, mEle);\n mEle.querySelector(colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + movableHeader).querySelector(colGroup).innerHTML;\n return mEle;\n };\n InlineEditRender.prototype.updateFreezeEdit = function (row$$1, td) {\n td = td.concat([].slice.call(this.getFreezeRow(row$$1).querySelectorAll('td.e-rowcell')));\n if (this.parent.getFrozenMode() === leftRight) {\n td = td.concat([].slice.call(this.getFreezeRightRow(row$$1).querySelectorAll('td.e-rowcell')));\n }\n return td;\n };\n InlineEditRender.prototype.getFreezeRightRow = function (row$$1) {\n var idx = parseInt(row$$1.getAttribute(dataRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var frHdr = this.parent.getFrozenRightHeaderTbody();\n var frCont = this.parent.getFrozenRightContentTbody();\n if (fCont.contains(row$$1) || fHdr.contains(row$$1)) {\n return this.parent.getFrozenRightRowByIndex(idx);\n }\n else if (frCont.contains(row$$1) || frHdr.contains(row$$1)) {\n return this.parent.getRowByIndex(idx);\n }\n return row$$1;\n };\n InlineEditRender.prototype.getFreezeRow = function (row$$1) {\n if (this.parent.isFrozenGrid()) {\n var idx = parseInt(row$$1.getAttribute(dataRowIndex), 10);\n var fCont = this.parent.getFrozenLeftContentTbody();\n var mCont = this.parent.getMovableContentTbody();\n var fHdr = this.parent.getFrozenHeaderTbody();\n var mHdr = this.parent.getMovableHeaderTbody();\n if (fCont.contains(row$$1) || fHdr.contains(row$$1)) {\n return this.parent.getMovableRowByIndex(idx);\n }\n else if (mCont.contains(row$$1) || mHdr.contains(row$$1)) {\n return this.parent.getRowByIndex(idx);\n }\n }\n return row$$1;\n };\n InlineEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n var isCustomFormValidation = args.isCustomFormValidation;\n var isScroll = args.isScroll;\n if (!isScroll && (closest(args.row, '.' + movableContent) || closest(args.row, '.' + movableHeader))) {\n args.row = this.getFreezeRow(args.row);\n }\n if (closest(args.row, '.e-frozen-right-content') || closest(args.row, '.e-frozen-right-header')) {\n args.row = this.getFreezeRightRow(args.row);\n }\n var isVirtualFrozen = this.parent.isFrozenGrid() && this.parent.enableColumnVirtualization && isScroll;\n var tdElement = [].slice.call(args.row.querySelectorAll('td.e-rowcell'));\n args.row.innerHTML = '';\n if (!isVirtualFrozen && !isCustomFormValidation) {\n tdElement = this.updateFreezeEdit(args.row, tdElement);\n }\n args.row.appendChild(this.getEditElement(elements, true, tdElement, args, true));\n args.row.classList.add(editedRow);\n this.parent.editModule.checkLastRow(args.row, args);\n if (!isVirtualFrozen && !isCustomFormValidation) {\n this.refreshFreezeEdit(args.row, args);\n }\n };\n InlineEditRender.prototype.refreshFreezeEdit = function (row$$1, args) {\n var td = row$$1.firstChild;\n if (this.parent.getVisibleFrozenColumns() && this.parent.editSettings.template) {\n td.querySelector(colGroup).innerHTML = this.parent.getHeaderContent().querySelector('.' + frozenHeader).\n querySelector(colGroup).innerHTML;\n }\n var fCls;\n var cont;\n var idx = parseInt(row$$1.getAttribute(dataRowIndex), 10);\n if (this.parent.isFrozenGrid()) {\n if (idx < this.parent.frozenRows) {\n cont = this.parent.getHeaderContent();\n fCls = '.' + frozenHeader;\n }\n else {\n cont = this.parent.getContent();\n fCls = '.' + frozenContent;\n }\n var mTd = td.cloneNode(true);\n var frTd = td.cloneNode(true);\n var form = args.movableForm = mTd.querySelector('form');\n if (this.parent.editSettings.template) {\n this.refreshEditForm(form, args.rowData);\n }\n var fRows = void 0;\n var frRows = void 0;\n if (cont.querySelector(fCls).contains(row$$1)) {\n fRows = this.parent.getMovableRowByIndex(idx);\n this.updateFrozenCont(fRows, td, mTd);\n if (this.parent.getFrozenMode() === leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, td, frTd);\n }\n }\n else {\n fRows = this.parent.getRowByIndex(idx);\n this.updateFrozenCont(fRows, mTd, td);\n if (this.parent.getFrozenMode() === leftRight) {\n args.frozenRightForm = frTd.querySelector('form');\n this.refreshEditForm(args.frozenRightForm, args.rowData);\n frRows = this.parent.getFrozenRightRowByIndex(idx);\n this.updateFrozenRightCont(frRows, frTd, td);\n }\n }\n fRows.appendChild(mTd);\n fRows.classList.add(editedRow);\n if (this.parent.getFrozenMode() === leftRight) {\n frRows.appendChild(frTd);\n frRows.classList.add(editedRow);\n alignFrozenEditForm(args.frozenRightForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n alignFrozenEditForm(args.movableForm.querySelector('td:not(.e-hide)'), args.form.querySelector('td:not(.e-hide)'));\n }\n };\n InlineEditRender.prototype.refreshEditForm = function (form, data) {\n if (this.parent.editSettings.template) {\n form.innerHTML = '';\n this.appendChildren(form, data, false);\n }\n };\n InlineEditRender.prototype.updateFrozenRightCont = function (row$$1, ele, frEle) {\n row$$1.innerHTML = '';\n this.renderRightFrozen(ele, frEle);\n frEle.querySelector(colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.e-frozen-right-header').querySelector(colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() - this.parent.getFrozenRightColumnsCount() + '');\n frEle.setAttribute('colspan', this.parent.getFrozenRightColumnsCount() + '');\n };\n InlineEditRender.prototype.updateFrozenCont = function (row$$1, ele, mEle) {\n row$$1.innerHTML = '';\n this.renderMovable(ele, mEle);\n mEle.querySelector(colGroup).innerHTML = this.parent.getHeaderContent()\n .querySelector('.' + movableHeader).querySelector(colGroup).innerHTML;\n ele.setAttribute('colspan', this.parent.getVisibleFrozenColumns() + '');\n mEle.setAttribute('colspan', this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - this.parent.getVisibleFrozenColumns() + '');\n };\n InlineEditRender.prototype.renderRightFrozen = function (ele, frEle) {\n frEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[parseInt(i.toString(), 10)].getFreezeTableName() === frozenRight) {\n var index = k - this.parent.getMovableColumnsCount();\n frEle.querySelector('tr').appendChild(ele.querySelector('tr').removeChild(ele.querySelector('tr').children[parseInt(index.toString(), 10)]));\n k--;\n }\n }\n };\n InlineEditRender.prototype.renderMovable = function (ele, mEle) {\n mEle.querySelector('tr').innerHTML = '';\n var cols = this.parent.getColumns();\n var k = this.parent.isRowDragable() ? 1 : 0;\n for (var i = 0; i < cols.length; i++, k++) {\n if (cols[parseInt(i.toString(), 10)].getFreezeTableName() === 'movable') {\n mEle.querySelector('tr').appendChild(ele.querySelector('tr')\n .removeChild(ele.querySelector('tr').children[parseInt(k.toString(), 10)]));\n k--;\n }\n }\n };\n // eslint-disable-next-line max-len\n InlineEditRender.prototype.getEditElement = function (elements, isEdit, tdElement, args, isFrozen) {\n var gObj = this.parent;\n var gLen = 0;\n var isDetail = !isNullOrUndefined(gObj.detailTemplate) || !isNullOrUndefined(gObj.childGrid) ? 1 : 0;\n if (gObj.allowGrouping) {\n gLen = gObj.groupSettings.columns.length;\n }\n var td = this.parent.createElement('td', {\n className: 'e-editcell e-normaledit',\n attrs: {\n colspan: (gObj.getCurrentVisibleColumns(this.parent.enableColumnVirtualization).length - gObj.getVisibleFrozenColumns()\n + this.parent.getIndentCount()).toString()\n }\n });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n this.appendChildren(form, args.rowData, isFrozen);\n td.appendChild(form);\n return td;\n }\n var table$$1 = this.parent.createElement('table', { className: 'e-table e-inline-edit', attrs: { cellspacing: '0.25', role: 'grid' } });\n table$$1.appendChild(gObj.getContentTable().querySelector(colGroup).cloneNode(true));\n var tbody$$1 = this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var tr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var i = 0;\n if (isDetail) {\n tr.insertBefore(this.parent.createElement('td', { className: 'e-detailrowcollapse' }), tr.firstChild);\n }\n if (gObj.isRowDragable()) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-dragindentcell' }));\n }\n while (i < gLen) {\n tr.appendChild(this.parent.createElement('td', { className: 'e-indentcell' }));\n i++;\n }\n var m = 0;\n i = 0;\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n var cols = args.isCustomFormValidation ? this.parent.columnModel : gObj.getColumns();\n while ((isEdit && m < tdElement.length && i < cols.length) || i < cols.length) {\n var span = isEdit ? tdElement[parseInt(m.toString(), 10)].getAttribute('colspan') : null;\n var col = cols[parseInt(i.toString(), 10)];\n if ((isVirtualFrozen && col.getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n i++;\n continue;\n }\n var td_1 = this.parent.createElement('td', {\n className: rowCell, attrs: { style: 'text-align:' + (col.textAlign ? col.textAlign : ''), 'colspan': span ? span : '' }\n });\n if (col.visible) {\n td_1.appendChild(elements[col.uid]);\n if (this.parent.rowRenderingMode === 'Vertical') {\n setStyleAndAttributes(td_1, { 'data-cell': col.headerText });\n if (i === 0) {\n td_1.classList.add('e-responsive-editcell');\n }\n }\n if (col.editType === 'booleanedit') {\n td_1.classList.add('e-boolcell');\n }\n else if (col.commands || col.commandsTemplate) {\n addClass([td_1], 'e-unboundcell');\n }\n }\n else {\n td_1.classList.add('e-hide');\n }\n tr.appendChild(td_1);\n i = span ? i + parseInt(span, 10) : i + 1;\n m++;\n }\n tbody$$1.appendChild(tr);\n table$$1.appendChild(tbody$$1);\n form.appendChild(table$$1);\n td.appendChild(form);\n return td;\n };\n InlineEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n InlineEditRender.prototype.appendChildren = function (form, data, isFrozen) {\n var dummyData = extend({}, data, { isAdd: !this.isEdit, isFrozen: isFrozen }, true);\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n if (this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string') {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n // eslint-disable-next-line\n \n };\n return InlineEditRender;\n}());\n\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar BatchEditRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n */\n function BatchEditRender(parent) {\n this.parent = parent;\n }\n BatchEditRender.prototype.update = function (elements, args) {\n if (this.parent.isReact && args.columnObject && args.columnObject.template) {\n var parentRow = args.cell.parentElement;\n var newTd = args.cell.cloneNode(true);\n parentRow.insertBefore(newTd, args.cell);\n newTd.focus();\n args.cell.remove();\n args.cell = newTd;\n }\n args.cell.innerHTML = '';\n args.cell.appendChild(this.getEditElement(elements, args));\n args.cell.classList.add('e-editedbatchcell');\n classList(args.row, [editedRow, 'e-batchrow'], []);\n };\n BatchEditRender.prototype.getEditElement = function (elements, args) {\n var gObj = this.parent;\n var form = this.parent\n .createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n form.appendChild(elements[args.columnObject.uid]);\n if (args.columnObject.editType === 'booleanedit') {\n args.cell.classList.add('e-boolcell');\n }\n if (!args.columnObject.editType) {\n args.cell.classList.add('e-inputbox');\n }\n return form;\n };\n BatchEditRender.prototype.removeEventListener = function () {\n //To destroy the renderer\n };\n return BatchEditRender;\n}());\n\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar DialogEditRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function DialogEditRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(dialogDestroy, this.destroy, this);\n this.parent.on(destroy, this.destroy, this);\n }\n DialogEditRender.prototype.setLocaleObj = function () {\n this.l10n = this.serviceLocator.getService('localization');\n };\n DialogEditRender.prototype.addNew = function (elements, args) {\n this.isEdit = false;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.update = function (elements, args) {\n this.isEdit = true;\n this.createDialog(elements, args);\n };\n DialogEditRender.prototype.createDialogHeader = function (args) {\n var gObj = this.parent;\n var header;\n if (this.parent.enableAdaptiveUI) {\n var responsiveDlgRenderer = new ResponsiveDialogRenderer(this.parent, this.serviceLocator);\n responsiveDlgRenderer.action = this.isEdit ? ResponsiveDialogAction.isEdit : ResponsiveDialogAction.isAdd;\n return responsiveDlgRenderer.renderResponsiveHeader(undefined, args);\n }\n else {\n if (gObj.editSettings.headerTemplate) {\n header = this.getDialogEditTemplateElement('HeaderTemplate', args);\n }\n else if (this.isEdit) {\n header = this.l10n.getConstant('EditFormTitle') + args.primaryKeyValue[0];\n }\n else {\n header = this.l10n.getConstant('AddFormTitle');\n }\n }\n return header;\n };\n DialogEditRender.prototype.createDialog = function (elements, args) {\n var gObj = this.parent;\n this.dialog = this.parent.createElement('div', { id: gObj.element.id + '_dialogEdit_wrapper', styles: 'width: auto' });\n if (gObj.enableAdaptiveUI) {\n this.dialog.classList.add('e-responsive-dialog');\n }\n gObj.element.appendChild(this.dialog);\n this.setLocaleObj();\n this.dialog.setAttribute('aria-label', this.l10n.getConstant('DialogEdit'));\n // let position: PositionDataModel = this.parent.element.getBoundingClientRect().height < 400 ?\n // { X: 'center', Y: 'top' } : { X: 'center', Y: 'center' };\n this.dialogObj = new Dialog(extend({\n header: this.createDialogHeader(args), isModal: true, visible: true,\n cssClass: this.parent.cssClass ? 'e-edit-dialog' + ' ' + this.parent.cssClass : 'e-edit-dialog',\n content: this.getEditElement(elements, args),\n showCloseIcon: true,\n allowDragging: true,\n // position: position,\n close: this.dialogClose.bind(this),\n created: this.dialogCreated.bind(this),\n closeOnEscape: true, width: gObj.editSettings.template ? 'auto' : '330px',\n target: args.target ? args.target : document.body, animationSettings: { effect: 'None' },\n footerTemplate: gObj.editSettings.footerTemplate ? this.getDialogEditTemplateElement('FooterTemplate', args) : null,\n buttons: [{\n click: this.btnClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('SaveButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n { click: this.btnClick.bind(this),\n buttonModel: {\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton')\n } }]\n }, gObj.editSettings.dialog ? (gObj.editSettings.dialog.params || {}) : {}));\n args.dialog = this.dialogObj;\n var isStringTemplate = 'isStringTemplate';\n this.dialogObj[\"\" + isStringTemplate] = true;\n this.renderResponsiveDialog();\n this.dialogObj.appendTo(this.dialog);\n applyBiggerTheme(this.parent.element, this.dialogObj.element.parentElement);\n if (gObj.enableAdaptiveUI) {\n this.dialogObj.show(true);\n }\n };\n DialogEditRender.prototype.dialogCreated = function () {\n addBiggerDialog(this.parent);\n };\n DialogEditRender.prototype.renderResponsiveDialog = function () {\n var _this = this;\n if (this.parent.enableAdaptiveUI) {\n if (this.parent.adaptiveDlgTarget) {\n this.dialogObj.target = this.parent.adaptiveDlgTarget;\n }\n this.dialogObj.buttons = [{}];\n this.dialogObj.showCloseIcon = true;\n this.dialogObj.visible = false;\n this.dialogObj.width = '100%';\n this.dialogObj.open = function () {\n _this.dialogObj.element.style.maxHeight = '100%';\n };\n }\n };\n DialogEditRender.prototype.btnClick = function (e) {\n if (this.l10n.getConstant('CancelButton').toLowerCase() === e.target.innerText.trim().toLowerCase()) {\n this.dialogClose();\n }\n else {\n this.parent.endEdit();\n }\n };\n DialogEditRender.prototype.dialogClose = function () {\n this.parent.closeEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DialogEditRender.prototype.destroy = function (args) {\n var dialogEditTemplates = ['template', 'headerTemplate', 'footerTemplate'];\n for (var i = 0; i < dialogEditTemplates.length; i++) {\n if (this.parent.editSettings[dialogEditTemplates[parseInt(i.toString(), 10)]]) {\n var templateName = dialogEditTemplates[parseInt(i.toString(), 10)].charAt(0).toUpperCase()\n + dialogEditTemplates[parseInt(i.toString(), 10)].slice(1);\n var editTemplateID = this.parent.element.id + 'editSettings' + templateName;\n updateBlazorTemplate(editTemplateID, templateName, this.parent.editSettings);\n }\n }\n this.parent.notify(destroyForm, {});\n this.parent.isEdit = false;\n this.parent.notify(toolbarRefresh, {});\n if (this.dialog && !this.dialogObj.isDestroyed) {\n this.dialogObj.destroy();\n remove(this.dialog);\n }\n };\n DialogEditRender.prototype.getDialogEditTemplateElement = function (dialogTemp, args) {\n var tempDiv = this.parent.createElement('div', { className: 'e-dialog' + dialogTemp });\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var templateID = this.parent.element.id + 'editSettings' + dialogTemp;\n appendChildren(tempDiv, (dialogTemp === 'HeaderTemplate' ? this.parent.getEditHeaderTemplate() :\n this.parent.getEditFooterTemplate())(dummyData, this.parent, 'editSettings' + dialogTemp, templateID));\n updateBlazorTemplate(templateID, dialogTemp, this.parent.editSettings);\n return tempDiv;\n };\n DialogEditRender.prototype.getEditElement = function (elements, args) {\n var _this = this;\n var gObj = this.parent;\n var div = this.parent.createElement('div', { className: this.isEdit ? editedRow : 'e-insertedrow' });\n var form = args.form =\n this.parent.createElement('form', { id: gObj.element.id + 'EditForm', className: 'e-gridform' });\n if (this.parent.editSettings.template) {\n var editTemplateID = this.parent.element.id + 'editSettingsTemplate';\n var dummyData = extend({}, args.rowData, { isAdd: !this.isEdit }, true);\n var isReactCompiler = this.parent.isReact && typeof (this.parent.editSettings.template) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID, null, null, form);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(form, this.parent.getEditTemplate()(dummyData, this.parent, 'editSettingsTemplate', editTemplateID));\n }\n var setRules = function () {\n var columns = _this.parent.getColumns();\n for (var i = 0; i < columns.length; i++) {\n if (columns[parseInt(i.toString(), 10)].validationRules) {\n _this.parent.editModule.formObj.rules[columns[parseInt(i.toString(), 10)].field] =\n columns[parseInt(i.toString(), 10)].validationRules;\n }\n }\n };\n updateBlazorTemplate(editTemplateID, 'Template', this.parent.editSettings, true, setRules);\n div.appendChild(form);\n return div;\n }\n var table$$1 = this.parent.createElement('table', { className: table, attrs: { cellspacing: '6px', role: 'grid' } });\n var tbody$$1 = this.parent.createElement(tbody, { attrs: { role: 'rowgroup' } });\n var cols = gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editModule.checkColumnIsGrouped(cols[parseInt(i.toString(), 10)]) || cols[parseInt(i.toString(), 10)].commands\n || cols[parseInt(i.toString(), 10)].commandsTemplate || cols[parseInt(i.toString(), 10)].type === 'checkbox') {\n continue;\n }\n var tr = this.parent.createElement('tr', { attrs: { role: 'row' } });\n var dataCell = this.parent.createElement('td', {\n className: rowCell, attrs: {\n style: 'text-align:' + (this.parent.enableRtl ? 'right' : 'left') + ';width:190px'\n }\n });\n elements[cols[parseInt(i.toString(), 10)].uid].classList.remove('e-input');\n dataCell.appendChild(elements[cols[parseInt(i.toString(), 10)].uid]);\n tr.appendChild(dataCell);\n tbody$$1.appendChild(tr);\n }\n table$$1.appendChild(tbody$$1);\n form.appendChild(table$$1);\n div.appendChild(form);\n return div;\n };\n DialogEditRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(dialogDestroy, this.destroy);\n this.parent.off(destroy, this.destroy);\n };\n return DialogEditRender;\n}());\n\n/**\n * Edit render module is used to render grid edit row.\n *\n * @hidden\n */\nvar EditRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IGrid} parent -specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n */\n function EditRender(parent, serviceLocator) {\n //Internal variables\n this.editType = {\n 'Inline': InlineEditRender,\n 'Normal': InlineEditRender, 'Batch': BatchEditRender, 'Dialog': DialogEditRender\n };\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = new this.editType[this.parent.editSettings.mode](parent, serviceLocator);\n this.focus = serviceLocator.getService('focus');\n }\n EditRender.prototype.addNew = function (args) {\n this.renderer.addNew(this.getEditElements(args), args);\n this.convertWidget(args);\n };\n EditRender.prototype.update = function (args) {\n this.renderer.update(this.getEditElements(args), args);\n var isCustomFormValidation = args.isCustomFormValidation;\n if (!isCustomFormValidation) {\n this.parent.notify(beforeStartEdit, args);\n this.convertWidget(args);\n }\n };\n EditRender.prototype.convertWidget = function (args) {\n var gObj = this.parent;\n var isFocused;\n var cell;\n var value;\n var fForm;\n var frForm;\n var frzCols = gObj.isFrozenGrid();\n var index = gObj.getFrozenMode() === 'Right' && gObj.editSettings.mode === 'Normal' ? 1 : 0;\n var form = gObj.editSettings.mode === 'Dialog' ?\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document) :\n gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var isVirtualFrozen = frzCols && this.parent.enableColumnVirtualization && args.isScroll;\n if (frzCols && gObj.editSettings.mode === 'Normal') {\n var rowIndex = parseInt(args.row.getAttribute(dataRowIndex), 10);\n if (gObj.frozenRows && ((args.requestType === 'add' && gObj.editSettings.newRowPosition === 'Top')\n || rowIndex < gObj.frozenRows)) {\n fForm = gObj.element.querySelector('.' + movableHeader).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n else {\n fForm = gObj.element.querySelector('.' + movableContent).querySelector('.e-gridform');\n if (this.parent.getFrozenMode() === leftRight) {\n frForm = args.frozenRightForm;\n }\n }\n }\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n if (isVirtualFrozen && col.getFreezeTableName() !== 'movable') {\n continue;\n }\n if (this.parent.editSettings.template && !isNullOrUndefined(col.field)) {\n var cellArgs = extend({}, args);\n cellArgs.element = form.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n if (isNullOrUndefined(cellArgs.element) && frzCols) {\n cellArgs.element = fForm.querySelector('[name=' + getComplexFieldID(col.field) + ']');\n }\n if (typeof col.edit.write === 'string') {\n getObject(col.edit.write, window)(cellArgs);\n }\n else {\n col.edit.write(cellArgs);\n }\n continue;\n }\n if (this.parent.editModule.checkColumnIsGrouped(col) || col.commands) {\n continue;\n }\n // eslint-disable-next-line\n value = (col.valueAccessor(col.field, args.rowData, col));\n if (fForm && col.getFreezeTableName() === 'movable' && gObj.editSettings.mode === 'Normal') {\n cell = fForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else if (frForm && col.getFreezeTableName() === frozenRight && gObj.editSettings.mode === 'Normal') {\n cell = frForm.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n else {\n cell = form.querySelector('[e-mappinguid=' + col.uid + ']');\n }\n var temp = col.edit.write;\n if (!isNullOrUndefined(cell)) {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n temp({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n else {\n col.edit.write({\n rowData: args.rowData, element: cell, column: col, requestType: args.requestType, row: args.row,\n foreignKeyData: col.isForeignColumn() && getObject(col.field, args.foreignKeyData)\n });\n }\n if (!isFocused && !cell.getAttribute('disabled') && !parentsUntil(cell, 'e-checkbox-disabled')) {\n this.focusElement(cell, args.type);\n isFocused = true;\n }\n }\n }\n if (frzCols && !this.parent.allowTextWrap && ((args.requestType === 'add') || args.requestType === 'beginEdit')\n && this.parent.editSettings.mode !== 'Dialog' && !isNullOrUndefined(form) && !isNullOrUndefined(fForm)) {\n var mTdElement = (fForm.querySelector('tr').children[0]);\n var fTdElement = (form.querySelector('tr').children[0]);\n if (fTdElement.offsetHeight > mTdElement.offsetHeight) {\n mTdElement.style.height = fTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = fTdElement.offsetHeight + 'px';\n }\n }\n else {\n fTdElement.style.height = mTdElement.offsetHeight + 'px';\n if (frForm) {\n var frTdElement = fForm.querySelector('tr').children[0];\n frTdElement.style.height = mTdElement.offsetHeight + 'px';\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n EditRender.prototype.focusElement = function (elem, type) {\n var chkBox = this.parent.element.querySelector('.e-edit-checkselect');\n if (!isNullOrUndefined(chkBox) && chkBox.nextElementSibling) {\n chkBox.nextElementSibling.classList.add('e-focus');\n }\n if (this.parent.editSettings.mode === 'Batch') {\n this.focus.onClick({ target: closest(elem, 'td') }, true);\n }\n else {\n var isFocus = this.parent.enableVirtualization && this.parent.editSettings.mode === 'Normal' ? false : true;\n if (isFocus || (this.parent.enableVirtualization && this.parent.editSettings.newRowPosition === 'Bottom'\n && parentsUntil(elem, addedRow))) {\n elem.focus();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n elem.focus({ preventScroll: true });\n }\n }\n if (elem.classList.contains('e-defaultcell')) {\n elem.setSelectionRange(elem.value.length, elem.value.length);\n }\n };\n EditRender.prototype.getEditElements = function (args) {\n var gObj = this.parent;\n var elements = {};\n var cols = gObj.editSettings.mode !== 'Batch' ? gObj.getColumns() : [gObj.getColumnByField(args.columnName)];\n if (args.isCustomFormValidation) {\n cols = this.parent.columnModel;\n }\n if (this.parent.editSettings.template) {\n return {};\n }\n var isVirtualFrozen = gObj.isFrozenGrid() && gObj.enableColumnVirtualization && args.isScroll;\n for (var i = 0, len = cols.length; i < len; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (this.parent.editModule.checkColumnIsGrouped(col) || (isVirtualFrozen && cols[parseInt(i.toString(), 10)].getFreezeTableName() !== 'movable')\n || (args.isCustomFormValidation && (col.commands || col.commandsTemplate || !col.field))) {\n continue;\n }\n if (col.commands || col.commandsTemplate) {\n var cellRendererFact = this.serviceLocator.getService('cellRendererFactory');\n var model = new RowModelGenerator(this.parent);\n var cellRenderer = cellRendererFact.getCellRenderer(CellType.CommandColumn);\n var cells = model.generateRows(args.rowData)[0].cells;\n var cell = cells.filter(function (cell) { return cell.rowID; });\n var td = cellRenderer.render(cell[parseInt(i.toString(), 10)], args.rowData, { 'index': args.row ? args.row.getAttribute(dataRowIndex) : 0 }, this.parent.enableVirtualization);\n var div = td.firstElementChild;\n div.setAttribute('textAlign', td.getAttribute('textAlign'));\n elements[col.uid] = div;\n continue;\n }\n var value = (col.valueAccessor(col.field, args.rowData, col));\n var tArgs = { column: col, value: value, type: args.requestType, data: args.rowData };\n var temp = col.edit.create;\n var input = void 0;\n if (col.editTemplate) {\n input = this.parent.createElement('span', { attrs: { 'e-mappinguid': col.uid } });\n var tempID = this.parent.element.id + col.uid + 'editTemplate';\n var tempData = extendObjWithFn({}, args.rowData, { column: col });\n var isReactCompiler = this.parent.isReact && typeof (col.editTemplate) !== 'string';\n var isReactChild = this.parent.parentDetails && this.parent.parentDetails.parentInstObj &&\n this.parent.parentDetails.parentInstObj.isReact;\n if (isReactCompiler || isReactChild) {\n col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID, null, null, input);\n this.parent.renderTemplates();\n }\n else {\n var template = col.getEditTemplate()(extend({ 'index': args.rowIndex }, tempData), this.parent, 'editTemplate', tempID);\n appendChildren(input, template);\n }\n }\n else {\n if (typeof temp === 'string') {\n temp = getObject(temp, window);\n input = temp(tArgs);\n }\n else {\n input = col.edit.create(tArgs);\n }\n if (typeof input === 'string') {\n var div = this.parent.createElement('div');\n div.innerHTML = input;\n input = div.firstChild;\n }\n var isInput = input.tagName !== 'input' && input.querySelectorAll('input').length;\n var complexFieldName = getComplexFieldID(col.field);\n attributes(isInput ? input.querySelector('input') : input, {\n name: complexFieldName, 'e-mappinguid': col.uid,\n id: gObj.element.id + complexFieldName\n });\n classList(input, ['e-input', 'e-field'], []);\n if (col.textAlign === 'Right') {\n input.classList.add('e-ralign');\n }\n if ((col.isPrimaryKey || col.isIdentity) && args.requestType === 'beginEdit' ||\n (col.isIdentity && args.requestType === 'add')) { // already disabled in cell plugins\n input.setAttribute('disabled', '');\n }\n }\n elements[col.uid] = input;\n }\n return elements;\n };\n EditRender.prototype.destroy = function () {\n this.renderer.removeEventListener();\n };\n return EditRender;\n}());\n\n/**\n * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar EditCellBase = /** @__PURE__ @class */ (function () {\n function EditCellBase(parent) {\n this.parent = parent;\n }\n EditCellBase.prototype.create = function (args) {\n return createEditElement(this.parent, args.column, 'e-field', { type: 'text' });\n };\n EditCellBase.prototype.read = function (element) {\n return element.ej2_instances[0].value;\n };\n EditCellBase.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n if (this.removeEventHandler) {\n this.removeEventHandler();\n }\n this.obj.destroy();\n }\n };\n return EditCellBase;\n}());\n\nvar __extends$25 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `BooleanEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar BooleanEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$25(BooleanEditCell, _super);\n function BooleanEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n BooleanEditCell.prototype.create = function (args) {\n var col = args.column;\n var classNames = 'e-field e-boolcell';\n if (col.type === 'checkbox') {\n classNames = 'e-field e-boolcell e-edit-checkselect';\n }\n this.removeEventHandler = this.removeEventListener;\n return createEditElement(this.parent, args.column, classNames, { type: 'checkbox', value: args.value });\n };\n BooleanEditCell.prototype.read = function (element) {\n return element.checked;\n };\n BooleanEditCell.prototype.write = function (args) {\n var selectChkBox;\n var chkState;\n if (!isNullOrUndefined(args.row)) {\n selectChkBox = args.row.querySelector('.e-edit-checkselect');\n }\n if (getObject(args.column.field, args.rowData)) {\n chkState = JSON.parse(getObject(args.column.field, args.rowData).toString().toLowerCase());\n }\n if (!isNullOrUndefined(selectChkBox) && args.column.type === 'checkbox') {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row$$1 = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n chkState = row$$1 ? row$$1.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(rowCell)), chkState].concat(this.activeClasses));\n }\n this.obj = new CheckBox(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: chkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.addEventListener();\n this.obj.appendTo(args.element);\n };\n BooleanEditCell.prototype.addEventListener = function () {\n this.cbChange = this.checkBoxChange.bind(this);\n this.obj.addEventListener(change, this.cbChange);\n };\n BooleanEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(change, this.cbChange);\n };\n BooleanEditCell.prototype.checkBoxChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var add = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n add = true;\n this.editRow.setAttribute('aria-selected', add.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(rowCell)), add].concat(this.activeClasses));\n }\n };\n return BooleanEditCell;\n}(EditCellBase));\n\nvar __extends$26 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `DropDownEditCell` is used to handle dropdown cell type editing.\n *\n * @hidden\n */\nvar DropDownEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$26(DropDownEditCell, _super);\n function DropDownEditCell(parent) {\n var _this = \n //constructor\n _super.call(this) || this;\n _this.parent = parent;\n _this.flag = false;\n _this.removeEventHandler = _this.removeEventListener;\n return _this;\n }\n DropDownEditCell.prototype.write = function (args) {\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.column = args.column;\n var pred = new Predicate(args.column.field, 'notequal', null, true, false);\n var params = {};\n if (args.column.edit.params) {\n var keys = Object.keys(args.column.edit.params);\n for (var i = 0; i < keys.length; i++) {\n params[keys[parseInt(i.toString(), 10)]] = keys[parseInt(i.toString(), 10)] === 'query' ?\n args.column.edit.params[keys[parseInt(i.toString(), 10)]].clone() :\n args.column.edit.params[keys[parseInt(i.toString(), 10)]];\n }\n }\n this.obj = new DropDownList(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().where(pred).select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n sortOrder: 'Ascending',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null,\n close: this.dropDownClose.bind(this)\n }, params));\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = args.column.isForeignColumn() ? [args.foreignKeyData[0]] : [args.rowData];\n }\n this.addEventListener();\n this.obj.query.params = this.parent.query.params;\n this.obj.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n DropDownEditCell.prototype.dropDownClose = function (args) {\n if (args.event && args.event.action === 'escape') {\n this.parent.editModule.editCellDialogClose = true;\n }\n };\n DropDownEditCell.prototype.addEventListener = function () {\n this.ddCreated = this.dropdownCreated.bind(this);\n this.ddOpen = this.dropDownOpen.bind(this);\n this.ddBeforeOpen = this.dropdownBeforeOpen.bind(this);\n this.ddComplete = this.ddActionComplete.bind(this);\n this.obj.addEventListener(create, this.ddCreated);\n this.obj.addEventListener(open, this.ddOpen);\n this.obj.addEventListener(beforeOpen, this.ddBeforeOpen);\n this.obj.addEventListener(actionComplete, this.ddComplete);\n };\n DropDownEditCell.prototype.removeEventListener = function () {\n if (this.obj.isDestroyed) {\n return;\n }\n this.obj.removeEventListener(create, this.ddCreated);\n this.obj.removeEventListener(open, this.ddOpen);\n this.obj.removeEventListener(beforeOpen, this.ddBeforeOpen);\n this.obj.removeEventListener(actionComplete, this.ddComplete);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownEditCell.prototype.dropdownCreated = function (e) {\n this.flag = true;\n };\n DropDownEditCell.prototype.dropdownBeforeOpen = function () {\n if (this.parent.enableVirtualization) {\n this.obj.dataSource = !this.column.isForeignColumn() ? (this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource))\n : this.column.dataSource instanceof DataManager ?\n this.column.dataSource : new DataManager(this.column.dataSource);\n }\n };\n DropDownEditCell.prototype.ddActionComplete = function (e) {\n e.result = DataUtil.distinct(e.result, this.obj.fields.value, true);\n if (this.flag && this.column.dataSource && !(this.column.edit.params &&\n this.column.edit.params.ddEditedData)) {\n if ('result' in this.column.dataSource) {\n this.column.dataSource.result = e.result;\n }\n else if (this.column.dataSource instanceof DataManager) {\n this.column.dataSource.dataSource.json = e.result;\n }\n }\n this.flag = false;\n };\n DropDownEditCell.prototype.dropDownOpen = function (args) {\n var dlgElement = parentsUntil(this.obj.element, 'e-dialog');\n if (this.parent.editSettings.mode === 'Dialog' && !isNullOrUndefined(dlgElement)) {\n var dlgObj = select('#' + dlgElement.id, document).ej2_instances[0];\n args.popup.element.style.zIndex = (dlgObj.zIndex + 1).toString();\n }\n };\n return DropDownEditCell;\n}(EditCellBase));\n\n/**\n * `NumericEditCell` is used to handle numeric cell type editing.\n *\n * @hidden\n */\nvar NumericEditCell = /** @__PURE__ @class */ (function () {\n function NumericEditCell(parent) {\n this.parent = parent;\n }\n NumericEditCell.prototype.keyEventHandler = function (args) {\n if (args.keyCode === 13 || args.keyCode === 9) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent('change', false, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.dispatchEvent(evt);\n }\n };\n NumericEditCell.prototype.create = function (args) {\n this.instances = new Internationalization(this.parent.locale);\n return createEditElement(this.parent, args.column, 'e-field', {});\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericEditCell.prototype.read = function (element) {\n return this.obj.value;\n };\n NumericEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new NumericTextBox(extend({\n value: parseFloat(getObject(args.column.field, args.rowData)),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText,\n enabled: isEditable(args.column, args.requestType, args.element),\n floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n locale: this.parent.locale,\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, col.edit.params));\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n this.obj.appendTo(args.element);\n this.obj.element.addEventListener('keydown', this.keyEventHandler);\n };\n NumericEditCell.prototype.destroy = function () {\n if (this.obj && !this.obj.isDestroyed) {\n this.obj.element.removeEventListener('keydown', this.keyEventHandler);\n this.obj.destroy();\n }\n };\n return NumericEditCell;\n}());\n\nvar __extends$27 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `DefaultEditCell` is used to handle default cell type editing.\n *\n * @hidden\n */\nvar DefaultEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$27(DefaultEditCell, _super);\n function DefaultEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DefaultEditCell.prototype.create = function (args) {\n var attr = {\n type: 'text', value: !isNullOrUndefined(args.value) ? args.value : '', style: 'text-align:' + args.column.textAlign\n };\n return createEditElement(this.parent, args.column, 'e-field e-input e-defaultcell', attr);\n };\n DefaultEditCell.prototype.read = function (element) {\n return element.value;\n };\n DefaultEditCell.prototype.write = function (args) {\n var col = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new TextBox(extend({\n element: args.element, floatLabelType: this.parent.editSettings.mode !== 'Dialog' ? 'Never' : 'Always',\n enableRtl: this.parent.enableRtl, enabled: isEditable(args.column, args.requestType, args.element),\n placeholder: isInline ? '' : args.column.headerText,\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, col.edit.params));\n this.obj.appendTo(args.element);\n };\n return DefaultEditCell;\n}(EditCellBase));\n\n/**\n * `NormalEdit` module is used to handle normal('inline, dialog, external') editing actions.\n *\n * @hidden\n */\nvar NormalEdit = /** @__PURE__ @class */ (function () {\n function NormalEdit(parent, serviceLocator, renderer) {\n this.args = {};\n this.currentVirtualData = {};\n this.parent = parent;\n this.renderer = renderer;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n NormalEdit.prototype.clickHandler = function (e) {\n var target = e.target;\n var gObj = this.parent;\n if ((((parentsUntil(target, gridContent) &&\n parentsUntil(parentsUntil(target, gridContent), 'e-grid').id === gObj.element.id)) || (gObj.frozenRows\n && parentsUntil(target, headerContent))) && !parentsUntil(target, 'e-unboundcelldiv')) {\n this.rowIndex = parentsUntil(target, rowCell)\n ? parseInt(target.parentElement.getAttribute(dataRowIndex), 10) : -1;\n if (gObj.isEdit) {\n gObj.editModule.endEdit();\n }\n }\n };\n NormalEdit.prototype.dblClickHandler = function (e) {\n if (parentsUntil(e.target, rowCell) && this.parent.editSettings.allowEditOnDblClick) {\n this.parent.editModule.startEdit(parentsUntil(e.target, row));\n }\n };\n /**\n * The function used to trigger editComplete\n *\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.editComplete = function (e) {\n this.parent.isEdit = false;\n var action = 'action';\n switch (e.requestType) {\n case 'save':\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection)) {\n if (e[\"\" + action] !== 'edit') {\n this.parent.selectRow(0);\n }\n }\n this.parent.trigger(actionComplete, extend(e, {\n requestType: 'save',\n type: actionComplete\n }));\n break;\n case 'delete':\n this.parent.trigger(actionComplete, extend(e, {\n requestType: 'delete',\n type: actionComplete\n }));\n if (!this.parent.isCheckBoxSelection) {\n this.parent.selectRow(this.editRowIndex);\n }\n break;\n }\n };\n NormalEdit.prototype.getEditArgs = function (editedData, rowObj, isScroll) {\n var primaryKeys = this.parent.getPrimaryKeyFieldNames();\n var primaryKeyValues = [];\n for (var i = 0; i < primaryKeys.length; i++) {\n primaryKeyValues.push(getObject(primaryKeys[parseInt(i.toString(), 10)], editedData));\n }\n var args = {\n primaryKey: primaryKeys, primaryKeyValue: primaryKeyValues, requestType: 'beginEdit',\n rowData: editedData, rowIndex: this.rowIndex, type: 'edit', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData, target: undefined, isScroll: isScroll\n };\n return args;\n };\n NormalEdit.prototype.startEdit = function (tr) {\n var _this = this;\n var gObj = this.parent;\n this.rowIndex = this.editRowIndex = parseInt(tr.getAttribute(dataRowIndex), 10);\n if (gObj.enableVirtualization || gObj.enableInfiniteScrolling) {\n var selector = '.e-row[data-rowindex=\"' + this.rowIndex + '\"]';\n var virtualRow = this.parent.element.querySelector(selector);\n if (!virtualRow) {\n return;\n }\n }\n var e = { data: undefined, index: this.rowIndex, isScroll: false };\n this.parent.notify(virtualScrollEditActionBegin, e);\n if (isGroupAdaptive(gObj)) {\n var rObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n this.previousData = rObj.data;\n }\n else if (!this.previousData && (this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n this.previousData = e.data;\n }\n else if (!this.parent.enableVirtualization) {\n this.previousData = extend({}, {}, gObj.getCurrentViewRecords()[this.rowIndex], true);\n }\n var editedData = extend({}, {}, e.data || this.previousData, true);\n this.uid = tr.getAttribute('data-uid');\n var rowObj = gObj.getRowObjectFromUID(this.uid);\n var args = this.getEditArgs(editedData, rowObj, e.isScroll);\n args.row = tr;\n if (!args.isScroll) {\n this.parent.notify(createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(beginEdit, args, function (begineditargs) {\n begineditargs.type = 'actionBegin';\n gObj.trigger(actionBegin, begineditargs, function (editargs) {\n if (!editargs.cancel) {\n _this.inlineEditHandler(editargs, tr);\n }\n });\n });\n }\n else {\n this.inlineEditHandler(args, tr);\n }\n };\n NormalEdit.prototype.inlineEditHandler = function (editargs, tr) {\n var gObj = this.parent;\n gObj.isEdit = true;\n editargs.row = editargs.row ? editargs.row : tr;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n if (gObj.editSettings.mode === 'Dialog' && gObj.selectionModule) {\n gObj.selectionModule.preventFocus = true;\n editargs.row.classList.add('e-dlgeditrow');\n }\n this.renderer.update(editargs);\n this.uid = tr.getAttribute('data-uid');\n gObj.editModule.applyFormValidation();\n editargs.type = 'actionComplete';\n gObj.trigger(actionComplete, editargs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, editargs.form.ej2_instances[0].rules);\n }\n this.args = editargs;\n if (this.parent.allowTextWrap) {\n this.parent.notify(freezeRender, { case: 'textwrap' });\n }\n };\n NormalEdit.prototype.updateRow = function (index, data) {\n var _this = this;\n var gObj = this.parent;\n this.editRowIndex = index;\n var args = {\n requestType: 'save', action: 'edit', type: actionBegin, data: data, cancel: false,\n previousData: gObj.getCurrentViewRecords()[parseInt(index.toString(), 10)],\n row: gObj.getRowByIndex(index)\n };\n gObj.showSpinner();\n if (gObj.enableInfiniteScrolling) {\n this.uid = args.row.getAttribute('data-uid');\n var index_1 = parseInt(args.row.getAttribute('data-rowindex'), 10);\n this.parent.notify(refreshInfiniteEditrowindex, { index: index_1 });\n }\n gObj.notify(updateData, args);\n if (args.promise) {\n args.promise.then(function () { return gObj.refresh(); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n if (!gObj.enableInfiniteScrolling) {\n gObj.refresh();\n }\n }\n };\n NormalEdit.prototype.editFormValidate = function () {\n var gObj = this.parent;\n var isValid = gObj.editModule.editFormValidate();\n var validationArgs = {\n prevData: this.previousData, isValid: true, editIdx: this.editRowIndex, addIdx: this.addedRowIndex\n };\n gObj.notify(validateVirtualForm, validationArgs);\n return (isValid && validationArgs.isValid);\n };\n NormalEdit.prototype.endEdit = function () {\n var _this = this;\n var gObj = this.parent;\n if (!this.parent.isEdit || !this.editFormValidate()) {\n return;\n }\n var editedData = extend({}, {}, this.previousData, true);\n var args = extend(this.args, {\n requestType: 'save', type: actionBegin, data: editedData, cancel: false,\n previousData: this.previousData, selectedRow: gObj.selectedRowIndex, foreignKeyData: {}\n });\n var index = gObj.getFrozenMode() === 'Right' ? 1 : 0;\n var isDlg = gObj.editSettings.mode === 'Dialog';\n var dlgWrapper = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n var dlgForm = isDlg ? dlgWrapper.querySelector('.e-gridform') : gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var data = {\n virtualData: extend({}, {}, this.previousData, true), isAdd: false, isScroll: false, endEdit: true\n };\n this.parent.notify(getVirtualData, data);\n if ((this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)\n && this.parent.editSettings.mode === 'Normal' && Object.keys(data.virtualData).length) {\n if (this.parent.isEdit) {\n this.currentVirtualData = editedData = args.data = data.virtualData;\n }\n }\n else {\n editedData = gObj.editModule.getCurrentEditedData(dlgForm, editedData);\n }\n if (gObj.isFrozenGrid() && gObj.editSettings.mode === 'Normal') {\n var mhdrFrm = gObj.getMovableVirtualHeader().querySelector('.e-gridform');\n var mCntFrm = gObj.getMovableVirtualContent().querySelector('.e-gridform');\n var mvblEle = [mhdrFrm || mCntFrm];\n var frHdrFrm = void 0;\n var frCntFrm = void 0;\n var frEle = [];\n if (gObj.getFrozenMode() === leftRight) {\n frHdrFrm = gObj.getFrozenRightHeader().querySelector('.e-gridform');\n frCntFrm = gObj.getFrozenRightContent().querySelector('.e-gridform');\n frEle = [frHdrFrm || frCntFrm];\n }\n gridActionHandler(this.parent, function (tableName, elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var ele = elements_1[_i];\n if (ele) {\n editedData = gObj.editModule.getCurrentEditedData(ele, editedData);\n }\n }\n }, [[], mvblEle, frEle]);\n }\n var eleLength = [].slice.call(gObj.element.getElementsByClassName(editedRow)).length;\n if (!data.isAdd && Object.keys(this.currentVirtualData).length && !eleLength) {\n eleLength = 1;\n }\n if (isDlg ? dlgWrapper.getElementsByClassName(editedRow).length : eleLength) {\n args.action = 'edit';\n gObj.trigger(actionBegin, args, function (endEditArgs) {\n if (endEditArgs.cancel) {\n return;\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Spinner') {\n gObj.showSpinner();\n }\n if (_this.parent.loadingIndicator.indicatorType === 'Shimmer') {\n _this.parent.showMaskRow();\n }\n gObj.notify(updateData, endEditArgs);\n });\n }\n else {\n args.action = 'add';\n args.selectedRow = 0;\n args.index = this.addedRowIndex;\n gObj.notify(virtualScrollEditSuccess, {});\n gObj.notify(modelChanged, args);\n this.addedRowIndex = null;\n if (args.cancel) {\n return;\n }\n }\n gObj.editModule.resetMovableContentValidation();\n };\n NormalEdit.prototype.destroyElements = function () {\n var gObj = this.parent;\n gObj.editModule.destroyWidgets();\n gObj.editModule.destroyForm();\n this.parent.notify(dialogDestroy, {});\n };\n NormalEdit.prototype.editHandler = function (args) {\n var _this = this;\n if (args.promise) {\n args.promise.then(function (e) { return _this.edSucc(e, args); }).catch(function (e) { return _this.edFail(e); });\n }\n else {\n this.editSuccess(args.data, args);\n }\n };\n NormalEdit.prototype.edSucc = function (e, args) {\n this.editSuccess(e, args);\n };\n NormalEdit.prototype.edFail = function (e) {\n this.editFailure(e);\n };\n NormalEdit.prototype.updateCurrentViewData = function (data) {\n if (!this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n this.parent.getCurrentViewRecords()[this.editRowIndex] = data;\n }\n };\n NormalEdit.prototype.requestSuccess = function (args) {\n if (this.parent.editModule.formObj && !this.parent.editModule.formObj.isDestroyed) {\n this.destroyElements();\n this.stopEditStatus();\n if (this.parent.editSettings.mode === 'Dialog' && args.action !== 'add' &&\n this.parent.selectionModule) {\n this.parent.element.querySelector('.e-dlgeditrow').classList.remove('e-dlgeditrow');\n }\n }\n };\n NormalEdit.prototype.editSuccess = function (e, args) {\n if (!isNullOrUndefined(e) && !(e instanceof Array)) {\n var rowData = 'rowData';\n args.data = extend({}, extend({}, args[\"\" + rowData], args.data), e);\n }\n this.requestSuccess(args);\n this.parent.trigger(beforeDataBound, args);\n args.type = actionComplete;\n this.parent.isEdit = false;\n this.refreshRow(args.data);\n this.parent.notify(virtualScrollEditSuccess, args);\n this.parent.editModule.checkLastRow(args.row);\n this.parent.editModule.isLastRow = false;\n this.updateCurrentViewData(args.data);\n this.blazorTemplate();\n this.editRowIndex = null;\n if (this.parent.aggregates.length) {\n this.parent.aggregateModule.refresh(args.data, this.parent.groupSettings.enableLazyLoading ? args.row : undefined);\n }\n this.parent.trigger(actionComplete, args);\n if (!(this.parent.isCheckBoxSelection || this.parent.selectionSettings.type === 'Multiple')\n || (!this.parent.isPersistSelection) && !this.parent.selectionSettings.checkboxOnly) {\n if (this.parent.editSettings.mode !== 'Dialog') {\n this.parent.selectRow(this.rowIndex > -1 ? this.rowIndex : this.editRowIndex);\n }\n }\n if (this.parent.aggregates.length && this.parent.groupSettings.enableLazyLoading && this.parent.groupSettings.columns.length\n && (this.parent.groupModule.getGroupAggregateTemplates(true).length\n || this.parent.groupModule.getGroupAggregateTemplates(false).length)) {\n return;\n }\n this.parent.removeMaskRow();\n this.parent.hideSpinner();\n };\n NormalEdit.prototype.closeForm = function () {\n if (!this.cloneRow && this.parent.isEdit) {\n this.stopEditStatus();\n }\n if (this.cloneRow) {\n this.cloneRow.remove();\n this.cloneRow = null;\n this.originalRow.classList.remove('e-hiddenrow');\n }\n if (this.parent.isFrozenGrid() && this.cloneFrozen) {\n this.cloneFrozen.remove();\n this.frozen.classList.remove('e-hiddenrow');\n }\n };\n NormalEdit.prototype.blazorTemplate = function () {\n var cols = this.parent.getColumns();\n if (this.parent.editSettings.template && this.parent.editSettings.mode === 'Normal') {\n updateBlazorTemplate(this.parent.element.id + 'editSettingsTemplate', 'Template', this.parent.editSettings);\n }\n for (var i = 0; i < cols.length; i++) {\n var col = cols[parseInt(i.toString(), 10)];\n if (col.template) {\n updateBlazorTemplate(this.parent.element.id + col.uid, 'Template', col, false);\n }\n if (col.editTemplate) {\n updateBlazorTemplate(this.parent.element.id + col.uid + 'editTemplate', 'EditTemplate', col);\n }\n }\n };\n NormalEdit.prototype.editFailure = function (e) {\n this.parent.removeMaskRow();\n this.parent.trigger(actionFailure, ({ error: e }));\n this.parent.hideSpinner();\n this.parent.log('actionfailure', { error: e });\n };\n NormalEdit.prototype.needRefresh = function () {\n var refresh = true;\n var editedRow$$1 = this.parent.element.querySelector('.e-gridform');\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && this.parent.editSettings.mode === 'Normal' && !editedRow$$1) {\n refresh = false;\n }\n return refresh;\n };\n NormalEdit.prototype.refreshRow = function (data) {\n var frzCols = this.parent.isFrozenGrid();\n var row$$1 = new RowRenderer(this.serviceLocator, null, this.parent);\n var rowObj = this.parent.getRowObjectFromUID(this.uid);\n if (rowObj) {\n rowObj.changes = data;\n this.parent.notify(refreshVirtualCache, { data: data });\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (this.needRefresh()) {\n row$$1.refresh(rowObj, this.parent.getColumns(), true);\n }\n var tr = [].slice.call(this.parent.element.querySelectorAll('[data-rowindex=\"' + rowObj.index + '\"]'));\n if (frzCols && tr.length) {\n for (var i = 0; i < tr.length; i++) {\n var rowUid = tr[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (rowUid !== this.uid) {\n rowObj = this.parent.getRowObjectFromUID(rowUid);\n rowObj.changes = data;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n row$$1.refresh(rowObj, this.parent.getColumns(), true);\n this.parent.editModule.checkLastRow(tr[parseInt(i.toString(), 10)]);\n }\n }\n }\n }\n };\n NormalEdit.prototype.closeEdit = function () {\n var _this = this;\n if (!this.parent.isEdit) {\n return;\n }\n var gObj = this.parent;\n var args = extend(this.args, {\n requestType: 'cancel', type: actionBegin, cancel: false, data: this.previousData, selectedRow: gObj.selectedRowIndex\n });\n gObj.notify(virtualScrollEditCancel, args);\n this.blazorTemplate();\n gObj.trigger(actionBegin, args, function (closeEditArgs) {\n if (closeEditArgs.cancel) {\n return;\n }\n if (_this.parent.editSettings.mode === 'Dialog') {\n _this.parent.notify(dialogDestroy, {});\n }\n gObj.isEdit = false;\n _this.stopEditStatus();\n closeEditArgs.type = actionComplete;\n if (gObj.editSettings.mode !== 'Dialog') {\n _this.refreshRow(closeEditArgs.data);\n }\n var isLazyLoad = gObj.groupSettings.enableLazyLoading && gObj.groupSettings.columns.length\n && !gObj.getContentTable().querySelector('tr.e-emptyrow');\n if (!gObj.getContentTable().querySelector('tr.e-emptyrow') &&\n !gObj.getContentTable().querySelector('tr.e-row') && !isLazyLoad) {\n gObj.renderModule.emptyRow();\n }\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.selectRow(_this.rowIndex);\n }\n gObj.editModule.resetMovableContentValidation();\n gObj.trigger(actionComplete, closeEditArgs);\n });\n };\n NormalEdit.prototype.addRecord = function (data, index) {\n var _this = this;\n var gObj = this.parent;\n this.addedRowIndex = index = !isNullOrUndefined(index) ? index : 0;\n if (data) {\n gObj.notify(modelChanged, {\n requestType: 'save', type: actionBegin, data: data, selectedRow: 0, action: 'add', index: index\n });\n return;\n }\n if (gObj.isEdit) {\n return;\n }\n this.previousData = {};\n this.uid = '';\n var cols = gObj.getColumns();\n var rowData = { virtualData: {}, isScroll: false };\n this.parent.notify(getVirtualData, rowData);\n for (var i = 0; i < cols.length; i++) {\n if (rowData.isScroll && cols[parseInt(i.toString(), 10)].getFreezeTableName() !== 'movable') {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].field) {\n DataUtil.setValue(cols[parseInt(i.toString(), 10)].field, cols[parseInt(i.toString(), 10)].defaultValue, this.previousData);\n }\n }\n var args = {\n cancel: false, foreignKeyData: {},\n requestType: 'add', data: this.previousData, type: actionBegin, index: index,\n rowData: this.previousData, target: undefined, isScroll: rowData.isScroll\n };\n if ((this.parent.enableVirtualization || this.parent.infiniteScrollSettings.enableCache)\n && Object.keys(rowData.virtualData).length) {\n args.data = args.rowData = rowData.virtualData;\n }\n if (!args.isScroll) {\n this.parent.notify(createVirtualValidationForm, { uid: this.uid, prevData: this.previousData, argsCreator: this.getEditArgs.bind(this), renderer: this.renderer });\n gObj.trigger(actionBegin, args, function (addArgs) {\n if (addArgs.cancel) {\n return;\n }\n _this.inlineAddHandler(addArgs);\n });\n }\n else {\n this.inlineAddHandler(args);\n }\n };\n NormalEdit.prototype.inlineAddHandler = function (addArgs) {\n var gObj = this.parent;\n gObj.isEdit = true;\n if (gObj.editSettings.mode !== 'Dialog') {\n gObj.clearSelection();\n }\n this.renderer.addNew(addArgs);\n gObj.editModule.applyFormValidation();\n addArgs.type = actionComplete;\n addArgs.row = gObj.element.querySelector('.' + addedRow);\n gObj.trigger(actionComplete, addArgs);\n if (gObj.editSettings.template) {\n gObj.editModule.applyFormValidation(undefined, addArgs.form.ej2_instances[0].rules);\n }\n this.args = addArgs;\n };\n NormalEdit.prototype.deleteRecord = function (fieldname, data) {\n this.editRowIndex = this.parent.selectedRowIndex;\n if (data) {\n data = (data instanceof Array) ? data : [data];\n var gObj = this.parent;\n var dataLen = Object.keys(data).length;\n fieldname = fieldname || this.parent.getPrimaryKeyFieldNames()[0];\n var _loop_1 = function (i) {\n var _a;\n var tmpRecord;\n var contained = gObj.currentViewData.some(function (record) {\n tmpRecord = record;\n return data[parseInt(i.toString(), 10)] === getObject(fieldname, record) || data[parseInt(i.toString(), 10)] === record;\n });\n data[parseInt(i.toString(), 10)] = contained ? tmpRecord : data[parseInt(i.toString(), 10)][\"\" + fieldname] ?\n data[parseInt(i.toString(), 10)] : (_a = {}, _a[fieldname] = data[parseInt(i.toString(), 10)], _a);\n };\n for (var i = 0; i < dataLen; i++) {\n _loop_1(i);\n }\n }\n var args = {\n requestType: 'delete', type: actionBegin, foreignKeyData: {},\n data: data ? data : this.parent.getSelectedRecords(), tr: this.parent.getSelectedRows(), cancel: false\n };\n if (!isNullOrUndefined(this.parent.commandDelIndex)) {\n args.data[0] =\n this.parent.getRowObjectFromUID(this.parent.getRowByIndex(this.parent.commandDelIndex).getAttribute('data-uid')).data;\n }\n if (this.parent.enableVirtualization && args.data.length > 1) {\n var uid = this.parent.getSelectedRows()[0].getAttribute('data-uid');\n args.data = [this.parent.getRowObjectFromUID(uid).data];\n }\n this.parent.notify(modelChanged, args);\n };\n NormalEdit.prototype.stopEditStatus = function () {\n var gObj = this.parent;\n var addElements = [].slice.call(gObj.element.getElementsByClassName(addedRow));\n var editElements = [].slice.call(gObj.element.getElementsByClassName(editedRow));\n for (var i = 0; i < addElements.length; i++) {\n remove(addElements[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < editElements.length; i++) {\n editElements[parseInt(i.toString(), 10)].classList.remove(editedRow);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: crudAction, handler: this.editHandler },\n { event: doubleTap, handler: this.dblClickHandler },\n { event: click, handler: this.clickHandler },\n { event: recordAdded, handler: this.requestSuccess },\n { event: dblclick, handler: this.dblClickHandler },\n { event: deleteComplete, handler: this.editComplete },\n { event: saveComplete, handler: this.editComplete },\n { event: rowModeChange, handler: this.closeEdit },\n { event: closeInline, handler: this.closeForm }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n /**\n * @returns {void}\n * @hidden\n */\n NormalEdit.prototype.destroy = function () {\n this.removeEventListener();\n this.renderer.destroy();\n };\n return NormalEdit;\n}());\n\nvar __extends$28 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `InlineEdit` module is used to handle inline editing actions.\n *\n * @hidden\n */\nvar InlineEdit = /** @__PURE__ @class */ (function (_super) {\n __extends$28(InlineEdit, _super);\n function InlineEdit(parent, serviceLocator, renderer) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n InlineEdit.prototype.closeEdit = function () {\n _super.prototype.closeEdit.call(this);\n };\n InlineEdit.prototype.addRecord = function (data, index) {\n _super.prototype.addRecord.call(this, data, index);\n };\n InlineEdit.prototype.endEdit = function () {\n _super.prototype.endEdit.call(this);\n };\n InlineEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n InlineEdit.prototype.deleteRecord = function (fieldname, data) {\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n InlineEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return InlineEdit;\n}(NormalEdit));\n\n/**\n * `BatchEdit` module is used to handle batch editing actions.\n *\n * @hidden\n */\nvar BatchEdit = /** @__PURE__ @class */ (function () {\n function BatchEdit(parent, serviceLocator, renderer) {\n this.cellDetails = {};\n this.originalCell = {};\n this.cloneCell = {};\n this.editNext = false;\n this.preventSaveCell = false;\n this.initialRender = true;\n this.validationColObj = [];\n /** @hidden */\n this.addBatchRow = false;\n this.prevEditedBatchCell = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.renderer = renderer;\n this.focus = serviceLocator.getService('focus');\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.evtHandlers = [{ event: click, handler: this.clickHandler },\n { event: dblclick, handler: this.dblClickHandler },\n { event: beforeCellFocused, handler: this.onBeforeCellFocused },\n { event: cellFocused, handler: this.onCellFocused },\n { event: doubleTap, handler: this.dblClickHandler },\n { event: keyPressed, handler: this.keyDownHandler },\n { event: editNextValCell, handler: this.editNextValCell },\n { event: closeBatch, handler: this.closeForm },\n { event: destroy, handler: this.destroy }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.batchCancelFunction = this.batchCancel.bind(this);\n this.parent.addEventListener(dataBound, this.dataBoundFunction);\n this.parent.addEventListener(batchCancel, this.batchCancelFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n this.parent.removeEventListener(dataBound, this.dataBoundFunction);\n this.parent.removeEventListener(batchCancel, this.batchCancelFunction);\n };\n BatchEdit.prototype.batchCancel = function () {\n this.parent.focusModule.restoreFocus();\n };\n BatchEdit.prototype.dataBound = function () {\n this.parent.notify(toolbarRefresh, {});\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.destroy = function () {\n this.removeEventListener();\n };\n BatchEdit.prototype.clickHandler = function (e) {\n if (!parentsUntil(e.target, this.parent.element.id + '_add', true)) {\n if (this.parent.isEdit && closest(this.form, 'td') !== closest(e.target, 'td')) {\n this.saveCell();\n this.editNextValCell();\n }\n if (parentsUntil(e.target, rowCell) && !this.parent.isEdit) {\n this.setCellIdx(e.target);\n }\n }\n };\n BatchEdit.prototype.dblClickHandler = function (e) {\n var target = parentsUntil(e.target, rowCell);\n var tr = parentsUntil(e.target, row);\n var rowIndex = tr && parseInt(tr.getAttribute(dataRowIndex), 10);\n var colIndex = target && parseInt(target.getAttribute(dataColIndex), 10);\n if (!isNullOrUndefined(target) && !isNullOrUndefined(rowIndex) && !isNaN(colIndex)\n && !target.parentElement.classList.contains(editedRow)) {\n this.editCell(rowIndex, this.parent.getColumns()[parseInt(colIndex.toString(), 10)].field, this.isAddRow(rowIndex));\n }\n };\n BatchEdit.prototype.onBeforeCellFocused = function (e) {\n if (this.parent.isEdit && this.validateFormObj() &&\n (e.byClick || (['tab', 'shiftTab', 'enter', 'shiftEnter'].indexOf(e.keyArgs.action) > -1))) {\n e.cancel = true;\n if (e.byClick) {\n e.clickArgs.preventDefault();\n }\n else {\n e.keyArgs.preventDefault();\n }\n }\n };\n BatchEdit.prototype.onCellFocused = function (e) {\n var frzCols = this.parent.getFrozenLeftCount();\n var frzRightCols = this.parent.getFrozenRightColumnsCount();\n var mCont = this.parent.getContent().querySelector('.' + movableContent);\n var mHdr = this.parent.getHeaderContent().querySelector('.' + movableHeader);\n var clear = (!e.container.isContent || !e.container.isDataCell) && !(this.parent.frozenRows && e.container.isHeader);\n if (this.parent.focusModule.active) {\n this.prevEditedBatchCell = this.parent.focusModule.active.matrix.current.toString() === this.prevEditedBatchCellMatrix()\n .toString();\n this.crtRowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(closest(e.element, 'tr'));\n }\n if (!e.byKey || clear || (this.parent.isFrozenGrid() && e.element && closest(e.element, '.e-gridheader')\n && closest(e.element, 'thead'))) {\n if ((this.parent.isEdit && clear) || (this.parent.isFrozenGrid() && this.parent.isEdit && e.byKey)) {\n this.saveCell();\n }\n return;\n }\n var _a = e.container.indexes, rowIndex = _a[0], cellIndex = _a[1];\n if (frzCols && (mCont.contains(e.element) || (this.parent.frozenRows && mHdr.contains(e.element)))) {\n cellIndex += frzCols;\n }\n if (frzRightCols) {\n var frHdr = this.parent.getHeaderContent().querySelector('.e-frozen-right-header');\n var frCont = this.parent.getContent().querySelector('.e-frozen-right-content');\n if (frCont.contains(e.element) || (this.parent.frozenRows && frHdr.contains(e.element))) {\n cellIndex += (frzCols + this.parent.getMovableColumnsCount());\n }\n }\n if (this.parent.frozenRows && e.container.isContent) {\n rowIndex += this.parent.frozenRows;\n }\n var isEdit = this.parent.isEdit;\n if (!this.parent.element.getElementsByClassName('e-popup-open').length) {\n isEdit = isEdit && !this.validateFormObj();\n switch (e.keyArgs.action) {\n case 'tab':\n case 'shiftTab':\n // eslint-disable-next-line no-case-declarations\n var indent = this.parent.isRowDragable() && this.parent.isDetail() ? 2 :\n this.parent.isRowDragable() || this.parent.isDetail() ? 1 : 0;\n // eslint-disable-next-line no-case-declarations\n var col = this.parent.getColumns()[cellIndex - indent];\n if (col && !this.parent.isEdit) {\n this.editCell(rowIndex, col.field);\n }\n if (isEdit || this.parent.isLastCellPrimaryKey) {\n this.editCellFromIndex(rowIndex, cellIndex);\n }\n break;\n case 'enter':\n case 'shiftEnter':\n e.keyArgs.preventDefault();\n // eslint-disable-next-line no-case-declarations\n var args = { cancel: false, keyArgs: e.keyArgs };\n this.parent.notify('beforeFocusCellEdit', args);\n if (!args.cancel && isEdit) {\n this.editCell(rowIndex, this.cellDetails.column.field);\n }\n break;\n case 'f2':\n this.editCellFromIndex(rowIndex, cellIndex);\n this.focus.focus();\n break;\n }\n }\n };\n BatchEdit.prototype.isAddRow = function (index) {\n return this.parent.getDataRows()[parseInt(index.toString(), 10)].classList.contains('e-insertedrow');\n };\n BatchEdit.prototype.editCellFromIndex = function (rowIdx, cellIdx) {\n this.cellDetails.rowIndex = rowIdx;\n this.cellDetails.cellIndex = cellIdx;\n this.editCell(rowIdx, this.parent.getColumns()[parseInt(cellIdx.toString(), 10)].field, this.isAddRow(rowIdx));\n };\n BatchEdit.prototype.closeEdit = function () {\n var _this = this;\n var gObj = this.parent;\n var rows = this.parent.getRowsObject();\n var argument = { cancel: false, batchChanges: this.getBatchChanges() };\n gObj.notify(beforeBatchCancel, argument);\n if (argument.cancel) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell(true);\n }\n this.isAdded = false;\n gObj.clearSelection();\n var allRows = getGridRowObjects(this.parent);\n var _loop_1 = function (i) {\n var isInsert = false;\n var isDirty = rows[parseInt(i.toString(), 10)].isDirty;\n gridActionHandler(this_1.parent, function (tableName, rows) {\n isInsert = _this.removeBatchElementChanges(rows[parseInt(i.toString(), 10)], isDirty);\n if (isInsert) {\n rows.splice(i, 1);\n }\n }, allRows);\n if (isInsert) {\n i--;\n }\n out_i_1 = i;\n };\n var this_1 = this, out_i_1;\n for (var i = 0; i < rows.length; i++) {\n _loop_1(i);\n i = out_i_1;\n }\n if (!gObj.getContentTable().querySelector('tr.e-row')) {\n gObj.renderModule.renderEmptyRow();\n }\n var args = {\n requestType: 'batchCancel', rows: this.parent.getRowsObject()\n };\n if (!this.parent.isFrozenGrid()) {\n gObj.notify(batchCancel, {\n rows: this.parent.getRowsObject().length ? this.parent.getRowsObject() :\n [new Row({ isDataRow: true, cells: [new Cell({ isDataCell: true, visible: true })] })]\n });\n }\n else {\n if (this.parent.getRowsObject().length) {\n gObj.notify(batchCancel, { rows: this.parent.getRowsObject(),\n args: { isFrozen: true } });\n }\n if (this.parent.getMovableRowsObject().length) {\n gObj.notify(batchCancel, { rows: this.parent.getMovableRowsObject() });\n }\n if (this.parent.getFrozenRightRowsObject().length) {\n gObj.notify(batchCancel, { rows: this.parent.getFrozenRightRowsObject(),\n args: { renderFrozenRightContent: true } });\n }\n }\n gObj.selectRow(this.cellDetails.rowIndex);\n this.refreshRowIdx();\n gObj.editModule.resetMovableContentValidation();\n gObj.notify(toolbarRefresh, {});\n this.parent.notify(tooltipDestroy, {});\n args = { requestType: 'batchCancel', rows: this.parent.getRowsObject() };\n gObj.trigger(batchCancel, args);\n };\n BatchEdit.prototype.removeBatchElementChanges = function (row$$1, isDirty) {\n var gObj = this.parent;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var isInstertedRemoved = false;\n if (isDirty) {\n row$$1.isDirty = isDirty;\n var tr = gObj.getRowElementByUID(row$$1.uid);\n if (tr) {\n if (tr.classList.contains('e-insertedrow')) {\n remove(tr);\n isInstertedRemoved = true;\n }\n else {\n refreshForeignData(row$$1, this.parent.getForeignKeyColumns(), row$$1.data);\n delete row$$1.changes;\n delete row$$1.edit;\n row$$1.isDirty = false;\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n rowRenderer.refresh(row$$1, gObj.getColumns(), false);\n }\n if (this.parent.aggregates.length > 0) {\n var type = 'type';\n var editType = [];\n editType[\"\" + type] = 'cancel';\n this.parent.notify(refreshFooterRenderer, editType);\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, editType);\n }\n }\n }\n }\n return isInstertedRemoved;\n };\n BatchEdit.prototype.removeHideAndSelection = function (tr) {\n if (tr.classList.contains('e-hiddenrow')) {\n tr.removeAttribute('aria-selected');\n var tdElements = [].slice.call(tr.getElementsByClassName('e-selectionbackground'));\n for (var i = 0; i < tdElements.length; i++) {\n removeClass([tdElements[parseInt(i.toString(), 10)]], ['e-selectionbackground', 'e-active']);\n }\n }\n classList(tr, [], ['e-hiddenrow', 'e-updatedtd']);\n };\n BatchEdit.prototype.deleteRecord = function (fieldname, data) {\n this.saveCell();\n if (this.validateFormObj()) {\n this.saveCell(true);\n }\n this.isAdded = false;\n this.bulkDelete(fieldname, data);\n if (this.parent.aggregates.length > 0) {\n this.parent.notify(refreshFooterRenderer, {});\n if (this.parent.groupSettings.columns.length > 0) {\n this.parent.notify(groupAggregates, {});\n }\n }\n };\n BatchEdit.prototype.addRecord = function (data) {\n this.bulkAddRow(data);\n };\n BatchEdit.prototype.endEdit = function () {\n if (this.parent.isEdit && this.validateFormObj()) {\n return;\n }\n this.batchSave();\n };\n BatchEdit.prototype.closeForm = function () {\n for (var i = 0; i < Object.keys(this.originalCell).length; i++) {\n for (var j = 0; j < Object.keys(this.cloneCell).length; j++) {\n if (Object.keys(this.originalCell)[parseInt(i.toString(), 10)] === Object\n .keys(this.cloneCell)[parseInt(j.toString(), 10)]) {\n this.cloneCell[Object.keys(this.cloneCell)[parseInt(j.toString(), 10)]].replaceWith(this.originalCell[Object\n .keys(this.originalCell)[parseInt(i.toString(), 10)]]);\n if (this.originalCell[Object.keys(this.originalCell)[parseInt(i.toString(), 10)]].classList.contains('e-selectionbackground')) {\n this.originalCell[Object.keys(this.originalCell)[parseInt(i.toString(), 10)]]\n .classList.remove('e-selectionbackground', 'e-cellselectionbackground', 'e-active');\n }\n }\n }\n }\n this.cloneCell = {};\n this.originalCell = {};\n };\n BatchEdit.prototype.validateFormObj = function () {\n return this.parent.editModule.formObj && !this.parent.editModule.formObj.validate();\n };\n BatchEdit.prototype.batchSave = function () {\n var gObj = this.parent;\n var deletedRecords$$1 = 'deletedRecords';\n if (gObj.isCheckBoxSelection) {\n var checkAllBox = gObj.element.querySelector('.e-checkselectall').parentElement;\n if (checkAllBox.classList.contains('e-checkbox-disabled') &&\n gObj.pageSettings.totalRecordsCount > gObj.currentViewData.length) {\n removeClass([checkAllBox], ['e-checkbox-disabled']);\n }\n }\n this.saveCell();\n if (gObj.isEdit || this.editNextValCell() || gObj.isEdit) {\n return;\n }\n var changes = this.getBatchChanges();\n if (this.parent.selectionSettings.type === 'Multiple' && changes[\"\" + deletedRecords$$1].length &&\n this.parent.selectionSettings.persistSelection) {\n changes[\"\" + deletedRecords$$1] = this.removeSelectedData;\n this.removeSelectedData = [];\n }\n var original = {\n changedRecords: this.parent.getRowsObject()\n .filter(function (row$$1) { return row$$1.isDirty && ['add', 'delete'].indexOf(row$$1.edit) === -1; })\n .map(function (row$$1) { return row$$1.data; })\n };\n var args = { batchChanges: changes, cancel: false };\n gObj.trigger(beforeBatchSave, args, function (beforeBatchSaveArgs) {\n if (beforeBatchSaveArgs.cancel) {\n return;\n }\n gObj.showSpinner();\n gObj.notify(bulkSave, { changes: changes, original: original });\n });\n gObj.editModule.resetMovableContentValidation();\n };\n BatchEdit.prototype.getBatchChanges = function () {\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var rows = this.parent.getRowsObject();\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row$$1 = rows_1[_i];\n if (row$$1.isDirty) {\n switch (row$$1.edit) {\n case 'add':\n changes.addedRecords.push(row$$1.changes);\n break;\n case 'delete':\n changes.deletedRecords.push(row$$1.data);\n break;\n default:\n changes.changedRecords.push(row$$1.changes);\n }\n }\n }\n return changes;\n };\n /**\n * @param {string} uid - specifes the uid\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.removeRowObjectFromUID = function (uid) {\n var rows = this.parent.getRowsObject();\n var i = 0;\n for (var len = rows.length; i < len; i++) {\n if (rows[parseInt(i.toString(), 10)].uid === uid) {\n break;\n }\n }\n gridActionHandler(this.parent, function (tableName, rows) {\n rows.splice(i, 1);\n }, getGridRowObjects(this.parent));\n };\n /**\n * @param {Row} row - specifies the row object\n * @param {freezeTable} newTableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addRowObject = function (row$$1, newTableName) {\n var gObj = this.parent;\n var isTop = gObj.editSettings.newRowPosition === 'Top';\n gridActionHandler(this.parent, function (tableName, rows) {\n var rowClone = row$$1.clone();\n if (gObj.isFrozenGrid()) {\n if (newTableName === tableName) {\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }\n }\n else {\n if (isTop) {\n rows.unshift(rowClone);\n }\n else {\n rows.push(rowClone);\n }\n }\n }, getGridRowObjects(this.parent), true);\n };\n // tslint:disable-next-line:max-func-body-length\n BatchEdit.prototype.bulkDelete = function (fieldname, data) {\n var _this = this;\n this.removeSelectedData = [];\n var gObj = this.parent;\n var index = gObj.selectedRowIndex;\n var selectedRows = gObj.getSelectedRows();\n var args = {\n primaryKey: this.parent.getPrimaryKeyFieldNames(),\n rowIndex: index,\n rowData: data ? data : gObj.getSelectedRecords()[0],\n cancel: false\n };\n if (data) {\n args.row = gObj.editModule.deleteRowUid ? gObj.getRowElementByUID(gObj.editModule.deleteRowUid)\n : gObj.getRows()[gObj.getCurrentViewRecords().indexOf(data)];\n }\n else {\n args.row = data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n }\n if (!args.row) {\n return;\n }\n // tslint:disable-next-line:max-func-body-length\n gObj.trigger(beforeBatchDelete, args, function (beforeBatchDeleteArgs) {\n if (beforeBatchDeleteArgs.cancel) {\n return;\n }\n _this.removeSelectedData = gObj.getSelectedRecords();\n gObj.clearSelection();\n beforeBatchDeleteArgs.row = beforeBatchDeleteArgs.row ?\n beforeBatchDeleteArgs.row : data ? gObj.getRows()[parseInt(index.toString(), 10)] : selectedRows[0];\n if (_this.parent.isFrozenGrid()) {\n if (data) {\n index = parseInt(beforeBatchDeleteArgs.row.getAttribute(dataRowIndex), 10);\n selectedRows = [];\n selectedRows.push(gObj.getRowByIndex(index));\n selectedRows.push(gObj.getMovableRowByIndex(index));\n if (gObj.getFrozenMode() === leftRight) {\n selectedRows.push(gObj.getFrozenRightRowByIndex(index));\n }\n }\n for (var i = 0; i < selectedRows.length; i++) {\n var uid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getMovableDataRows().length >= gObj.frozenRows) {\n gObj.getMovableHeaderTbody().appendChild(gObj.getMovableRowByIndex(gObj.frozenRows - 1));\n gObj.getFrozenHeaderTbody().appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n if (gObj.getFrozenMode() === leftRight) {\n gObj.getFrozenRightHeaderTbody().appendChild(gObj.getFrozenRightRowByIndex(gObj.frozenRows - 1));\n }\n }\n if (gObj.frozenRows && index < gObj.frozenRows && gObj.getDataRows().length >= gObj.frozenRows) {\n gObj.getHeaderTable().querySelector(tbody).appendChild(gObj.getRowByIndex(gObj.frozenRows - 1));\n }\n }\n delete selectedRows[parseInt(i.toString(), 10)];\n }\n }\n else if (!_this.parent.isFrozenGrid() && (selectedRows.length === 1 || data)) {\n var uid = beforeBatchDeleteArgs.row.getAttribute('data-uid');\n uid = data && _this.parent.editModule.deleteRowUid ? uid = _this.parent.editModule.deleteRowUid : uid;\n if (beforeBatchDeleteArgs.row.classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uid);\n remove(beforeBatchDeleteArgs.row);\n }\n else {\n var rowObj = gObj.getRowObjectFromUID(uid);\n rowObj.isDirty = true;\n rowObj.edit = 'delete';\n classList(beforeBatchDeleteArgs.row, ['e-hiddenrow', 'e-updatedtd'], []);\n }\n delete beforeBatchDeleteArgs.row;\n }\n else {\n for (var i = 0; i < selectedRows.length; i++) {\n var uniqueid = selectedRows[parseInt(i.toString(), 10)].getAttribute('data-uid');\n if (selectedRows[parseInt(i.toString(), 10)].classList.contains('e-insertedrow')) {\n _this.removeRowObjectFromUID(uniqueid);\n remove(selectedRows[parseInt(i.toString(), 10)]);\n }\n else {\n classList(selectedRows[parseInt(i.toString(), 10)], ['e-hiddenrow', 'e-updatedtd'], []);\n var selectedRow = gObj.getRowObjectFromUID(uniqueid);\n selectedRow.isDirty = true;\n selectedRow.edit = 'delete';\n delete selectedRows[parseInt(i.toString(), 10)];\n }\n }\n }\n _this.refreshRowIdx();\n if (data) {\n gObj.editModule.deleteRowUid = undefined;\n if (gObj.getSelectedRows().length) {\n index = parseInt(gObj.getSelectedRows()[0].getAttribute(dataRowIndex), 10);\n }\n }\n if (!gObj.isCheckBoxSelection) {\n gObj.selectRow(index);\n }\n gObj.trigger(batchDelete, beforeBatchDeleteArgs);\n gObj.notify(batchDelete, { rows: _this.parent.getRowsObject() });\n gObj.notify(toolbarRefresh, {});\n });\n };\n BatchEdit.prototype.refreshRowIdx = function () {\n var gObj = this.parent;\n var rows = gObj.getAllDataRows(true);\n var dataRows = getGridRowElements(this.parent);\n var dataObjects = getGridRowObjects(this.parent);\n var _loop_2 = function (i, j, len) {\n if (rows[parseInt(i.toString(), 10)].classList.contains(row) && !rows[parseInt(i.toString(), 10)].classList.contains('e-hiddenrow')) {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[parseInt(i.toString(), 10)].setAttribute(dataRowIndex, j.toString());\n rowElements[parseInt(i.toString(), 10)].setAttribute(ariaRowIndex, (j + 1).toString());\n rowObjects[parseInt(i.toString(), 10)].index = j;\n }, dataRows, null, dataObjects);\n j++;\n }\n else {\n gridActionHandler(this_2.parent, function (tableName, rowElements, rowObjects) {\n rowElements[parseInt(i.toString(), 10)].removeAttribute(dataRowIndex);\n rowElements[parseInt(i.toString(), 10)].removeAttribute(ariaRowIndex);\n rowObjects[parseInt(i.toString(), 10)].index = -1;\n }, dataRows, null, dataObjects);\n }\n out_j_1 = j;\n };\n var this_2 = this, out_j_1;\n for (var i = 0, j = 0, len = rows.length; i < len; i++) {\n _loop_2(i, j, len);\n j = out_j_1;\n }\n };\n BatchEdit.prototype.getIndexFromData = function (data) {\n return inArray(data, this.parent.getCurrentViewRecords());\n };\n BatchEdit.prototype.bulkAddRow = function (data) {\n var _this = this;\n var gObj = this.parent;\n if (!gObj.editSettings.allowAdding) {\n return;\n }\n if (gObj.isEdit) {\n this.saveCell();\n this.parent.notify(editNextValCell, {});\n }\n if (gObj.isEdit) {\n return;\n }\n if (this.initialRender) {\n var visibleColumns = gObj.getVisibleColumns();\n for (var i = 0; i < visibleColumns.length; i++) {\n if (visibleColumns[parseInt(i.toString(), 10)].validationRules &&\n visibleColumns[parseInt(i.toString(), 10)].validationRules['required']) {\n var obj = { field: (visibleColumns[parseInt(i.toString(), 10)]['field']).slice(), cellIdx: i };\n this.validationColObj.push(obj);\n }\n }\n this.initialRender = false;\n }\n this.parent.element.classList.add('e-editing');\n var defaultData = data ? data : this.getDefaultData();\n var args = {\n defaultData: defaultData,\n primaryKey: gObj.getPrimaryKeyFieldNames(),\n cancel: false\n };\n gObj.trigger(beforeBatchAdd, args, function (beforeBatchAddArgs) {\n if (beforeBatchAddArgs.cancel) {\n return;\n }\n _this.isAdded = true;\n gObj.clearSelection();\n if (gObj.isFrozenGrid()) {\n var movableCnt = _this.parent.getMovableColumnsCount();\n var leftCnt = _this.parent.getFrozenLeftCount();\n var rightCnt = _this.parent.getFrozenRightColumnsCount();\n var tbody$$1 = gObj.getContentTable().querySelector(tbody);\n var totCount = movableCnt + leftCnt + rightCnt;\n var tableTanName = void 0;\n var selectedRowAdd = [];\n var selectedRowAddCells = [];\n var col = void 0;\n var index = void 0;\n var tr = void 0;\n var mTr = void 0;\n var frTr = void 0;\n for (var i = 0; i < totCount;) {\n var row$$1 = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n if (leftCnt > 0) {\n leftCnt = 0;\n tableTanName = 'frozen-left';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n else if (movableCnt > 0) {\n movableCnt = 0;\n tableTanName = 'movable';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n else {\n rightCnt = 0;\n tableTanName = 'frozen-right';\n totCount = leftCnt + rightCnt + movableCnt;\n }\n for (var i_1 = 0; i_1 < modelData.length; i_1++) {\n modelData[parseInt(i_1.toString(), 10)]\n .cells = splitFrozenRowObjectCells(_this.parent, modelData[parseInt(i_1.toString(), 10)].cells, tableTanName);\n }\n if (tableTanName === 'frozen-left') {\n tr = row$$1.render(modelData[0], gObj.getColumns());\n tr.classList.add('e-insertedrow');\n }\n else if (tableTanName === 'movable') {\n mTr = row$$1.render(modelData[0], gObj.getColumns());\n mTr.classList.add('e-insertedrow');\n }\n else {\n frTr = row$$1.render(modelData[0], gObj.getColumns());\n frTr.classList.add('e-insertedrow');\n }\n for (var i_2 = 0; i_2 < _this.parent.groupSettings.columns.length; i_2++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n if (tbody$$1.querySelector('.e-emptyrow')) {\n var emptyRow = tbody$$1.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (tableTanName === 'frozen-left') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody$$1 = gObj.getHeaderTable().querySelector(tbody);\n }\n else {\n tbody$$1 = gObj.getContentTable().querySelector(tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody$$1.insertBefore(tr, tbody$$1.firstChild);\n addClass([].slice.call(tr.getElementsByClassName(rowCell)), ['e-updatedtd']);\n }\n else {\n tbody$$1.appendChild(tr);\n addClass([].slice.call(tr.getElementsByClassName(rowCell)), ['e-updatedtd']);\n }\n }\n if (tableTanName === 'movable' || tableTanName === 'frozen-right') {\n _this.renderFrozenAddRow(mTr, frTr, tableTanName);\n }\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0], tableTanName);\n }\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[addedRecords].length)) {\n _this.parent.notify(refreshFooterRenderer, {});\n }\n if (tr) {\n alignFrozenEditForm(mTr.querySelector('td:not(.e-hide)'), tr.querySelector('td:not(.e-hide)'));\n selectedRowAdd.push(tr);\n selectedRowAddCells.push(tr.cells);\n }\n selectedRowAdd.push(mTr);\n selectedRowAddCells.push(mTr.cells);\n if (frTr) {\n selectedRowAdd.push(frTr);\n selectedRowAddCells.push(frTr.cells);\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: selectedRowAdd,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey, cell: selectedRowAddCells\n };\n gObj.trigger(batchAdd, args1);\n }\n else {\n var row$$1 = new RowRenderer(_this.serviceLocator, null, _this.parent);\n var model = new RowModelGenerator(_this.parent);\n var modelData = model.generateRows([beforeBatchAddArgs.defaultData]);\n var tr = row$$1.render(modelData[0], gObj.getColumns());\n var col = void 0;\n var index = void 0;\n for (var i = 0; i < _this.parent.groupSettings.columns.length; i++) {\n tr.insertBefore(_this.parent.createElement('td', { className: 'e-indentcell' }), tr.firstChild);\n modelData[0].cells.unshift(new Cell({ cellType: CellType.Indent }));\n }\n var tbody$$1 = gObj.getContentTable().querySelector(tbody);\n tr.classList.add('e-insertedrow');\n if (tbody$$1.querySelector('.e-emptyrow')) {\n var emptyRow = tbody$$1.querySelector('.e-emptyrow');\n emptyRow.parentNode.removeChild(emptyRow);\n _this.removeFrozenTbody();\n }\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n tbody$$1 = gObj.getHeaderTable().querySelector(tbody);\n }\n else {\n tbody$$1 = gObj.getContentTable().querySelector(tbody);\n }\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n tbody$$1.insertBefore(tr, tbody$$1.firstChild);\n }\n else {\n tbody$$1.appendChild(tr);\n }\n addClass([].slice.call(tr.getElementsByClassName(rowCell)), ['e-updatedtd']);\n modelData[0].isDirty = true;\n modelData[0].changes = extend({}, {}, modelData[0].data, true);\n modelData[0].edit = 'add';\n _this.addRowObject(modelData[0]);\n _this.refreshRowIdx();\n _this.focus.forgetPrevious();\n gObj.notify(batchAdd, { rows: _this.parent.getRowsObject(), args: { isFrozen: _this.parent.isFrozenGrid() } });\n var changes = _this.getBatchChanges();\n var btmIdx = _this.getBottomIndex();\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n gObj.selectRow(0);\n }\n else {\n gObj.selectRow(btmIdx);\n }\n if (!data) {\n index = _this.findNextEditableCell(0, true);\n col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (_this.parent.editSettings.newRowPosition === 'Top') {\n _this.editCell(0, col.field, true);\n }\n else {\n _this.editCell(btmIdx, col.field, true);\n }\n }\n if (_this.parent.aggregates.length > 0 && (data || changes[addedRecords].length)) {\n _this.parent.notify(refreshFooterRenderer, {});\n }\n var args1 = {\n defaultData: beforeBatchAddArgs.defaultData, row: tr,\n columnObject: col, columnIndex: index, primaryKey: beforeBatchAddArgs.primaryKey,\n cell: !isNullOrUndefined(index) ? tr.cells[parseInt(index.toString(), 10)] : undefined\n };\n gObj.trigger(batchAdd, args1);\n }\n });\n };\n BatchEdit.prototype.renderFrozenAddRow = function (mTr, frTr, tableName$$1) {\n var gObj = this.parent;\n var mTbody;\n var frTbody;\n if (tableName$$1 === 'movable') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n mTbody = this.parent.getMovableHeaderTbody();\n }\n else {\n mTbody = this.parent.getContent().querySelector('.e-movablecontent').querySelector(tbody);\n }\n if (gObj.editSettings.newRowPosition === 'Top') {\n mTbody.insertBefore(mTr, mTbody.firstChild);\n }\n else {\n mTbody.appendChild(mTr);\n }\n addClass([].slice.call(mTr.getElementsByClassName(rowCell)), ['e-updatedtd']);\n }\n if (tableName$$1 === 'frozen-right') {\n if (gObj.frozenRows && gObj.editSettings.newRowPosition === 'Top') {\n frTbody = this.parent.getFrozenRightHeaderTbody();\n }\n else {\n frTbody = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector(tbody);\n }\n if (gObj.editSettings.newRowPosition === 'Top') {\n frTbody.insertBefore(frTr, frTbody.firstChild);\n }\n else {\n frTbody.appendChild(frTr);\n }\n addClass([].slice.call(frTr.getElementsByClassName(rowCell)), ['e-updatedtd']);\n alignFrozenEditForm(frTr.querySelector('td:not(.e-hide)'), mTr.querySelector('td:not(.e-hide)'));\n }\n if (gObj.height === 'auto') {\n gObj.notify(frozenHeight, {});\n }\n };\n BatchEdit.prototype.removeFrozenTbody = function () {\n var gObj = this.parent;\n if (gObj.isFrozenGrid()) {\n var moveTbody = gObj.getContent().querySelector('.' + movableContent).querySelector(tbody);\n (moveTbody.firstElementChild).parentNode.removeChild(moveTbody.firstElementChild);\n if (gObj.getFrozenMode() === leftRight) {\n var frTbody = gObj.getContent().querySelector('.e-frozen-right-content').querySelector(tbody);\n (frTbody.firstElementChild).parentNode.removeChild(frTbody.firstElementChild);\n }\n }\n };\n BatchEdit.prototype.renderMovable = function (ele, rightEle) {\n var mEle = ele.cloneNode(true);\n var movable = this.parent.getMovableColumnsCount();\n var left = this.parent.getFrozenLeftCount();\n var right = this.parent.getFrozenRightColumnsCount();\n sliceElements(ele, 0, left);\n sliceElements(mEle, left, right ? mEle.children.length - right : mEle.children.length);\n sliceElements(rightEle, left + movable, rightEle.children.length);\n return mEle;\n };\n BatchEdit.prototype.findNextEditableCell = function (columnIndex, isAdd, isValOnly) {\n var cols = this.parent.getColumns();\n var endIndex = cols.length;\n var validation;\n for (var i = columnIndex; i < endIndex; i++) {\n validation = isValOnly ? isNullOrUndefined(cols[parseInt(i.toString(), 10)].validationRules) : false;\n if (!isAdd && this.checkNPCell(cols[parseInt(i.toString(), 10)])) {\n return i;\n }\n else if (isAdd && (!cols[parseInt(i.toString(), 10)].template || cols[parseInt(i.toString(), 10)].field)\n && cols[parseInt(i.toString(), 10)].visible && !(cols[parseInt(i.toString(), 10)].isIdentity\n && cols[parseInt(i.toString(), 10)].isPrimaryKey) && !validation) {\n return i;\n }\n }\n return -1;\n };\n BatchEdit.prototype.checkNPCell = function (col) {\n return !col.template && col.visible && !col.isPrimaryKey && !col.isIdentity && col.allowEditing;\n };\n BatchEdit.prototype.getDefaultData = function () {\n var gObj = this.parent;\n var data = {};\n var dValues = { 'number': 0, 'string': null, 'boolean': false, 'date': null, 'datetime': null };\n for (var _i = 0, _a = (gObj.columnModel); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.field) {\n setValue(col.field, Object.keys(col).indexOf('defaultValue') >= 0 ? col.defaultValue : dValues[col.type], data);\n }\n }\n return data;\n };\n BatchEdit.prototype.setCellIdx = function (target) {\n var gLen = 0;\n if (this.parent.allowGrouping) {\n gLen = this.parent.groupSettings.columns.length;\n }\n this.cellDetails.cellIndex = target.cellIndex - gLen;\n this.cellDetails.rowIndex = parseInt(target.getAttribute('index'), 10);\n };\n BatchEdit.prototype.editCell = function (index, field, isAdd) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n this.index = index;\n this.field = field;\n this.isAdd = isAdd;\n var checkEdit = gObj.isEdit && !(this.cellDetails.column.field === field\n && (this.cellDetails.rowIndex === index && this.parent.getDataRows().length - 1 !== index && this.prevEditedBatchCell));\n if (gObj.editSettings.allowEditing) {\n if (!checkEdit && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[this.crtRowIndex].classList.contains('e-insertedrow')))) {\n this.editCellExtend(index, field, isAdd);\n }\n else if (checkEdit) {\n this.editNext = true;\n this.saveCell();\n }\n }\n };\n BatchEdit.prototype.editCellExtend = function (index, field, isAdd) {\n var _this = this;\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var keys = gObj.getPrimaryKeyFieldNames();\n if (gObj.isEdit) {\n return;\n }\n var row$$1;\n var mRowData;\n var rowData = extend({}, {}, this.getDataByIndex(index), true);\n if (col.getFreezeTableName() === 'movable' || col.getFreezeTableName() === frozenRight) {\n row$$1 = col.getFreezeTableName() === 'movable' ? gObj.getMovableDataRows()[parseInt(index.toString(), 10)] : gObj.getFrozenRightDataRows()[parseInt(index.toString(), 10)];\n mRowData = this.parent.getRowObjectFromUID(row$$1.getAttribute('data-uid'));\n rowData = mRowData.changes ? extend({}, {}, mRowData.changes, true) : rowData;\n }\n else {\n row$$1 = gObj.getDataRows()[parseInt(index.toString(), 10)];\n rowData = extend({}, {}, this.getDataByIndex(index), true);\n }\n if ((keys[0] === col.field && !row$$1.classList.contains('e-insertedrow')) || col.columns ||\n (col.isPrimaryKey && col.isIdentity) || col.commands) {\n this.parent.isLastCellPrimaryKey = true;\n return;\n }\n this.parent.isLastCellPrimaryKey = false;\n this.parent.element.classList.add('e-editing');\n var rowObj = gObj.getRowObjectFromUID(row$$1.getAttribute('data-uid'));\n var cells = [].slice.apply(row$$1.cells);\n var args = {\n columnName: col.field, isForeignKey: !isNullOrUndefined(col.foreignKeyValue),\n primaryKey: keys, rowData: rowData,\n validationRules: extend({}, col.validationRules ? col.validationRules : {}),\n value: getObject(col.field, rowData),\n type: !isAdd ? 'edit' : 'add', cancel: false,\n foreignKeyData: rowObj && rowObj.foreignKeyData\n };\n args.cell = cells[this.getColIndex(cells, this.getCellIdx(col.uid))];\n args.row = row$$1;\n args.columnObject = col;\n if (!args.cell) {\n return;\n }\n gObj.trigger(cellEdit, args, function (cellEditArgs) {\n if (cellEditArgs.cancel) {\n return;\n }\n cellEditArgs.cell = cellEditArgs.cell ? cellEditArgs.cell : cells[_this.getColIndex(cells, _this.getCellIdx(col.uid))];\n cellEditArgs.row = cellEditArgs.row ? cellEditArgs.row : row$$1;\n cellEditArgs.columnObject = cellEditArgs.columnObject ? cellEditArgs.columnObject : col;\n cellEditArgs.columnObject.index = isNullOrUndefined(cellEditArgs.columnObject.index) ? 0 : cellEditArgs.columnObject.index;\n _this.cellDetails = {\n rowData: rowData, column: col, value: cellEditArgs.value, isForeignKey: cellEditArgs.isForeignKey, rowIndex: index,\n cellIndex: parseInt(cellEditArgs.cell.getAttribute(dataColIndex), 10),\n foreignKeyData: cellEditArgs.foreignKeyData\n };\n if (cellEditArgs.cell.classList.contains('e-updatedtd')) {\n _this.isColored = true;\n cellEditArgs.cell.classList.remove('e-updatedtd');\n }\n gObj.isEdit = true;\n gObj.clearSelection();\n if (!gObj.isCheckBoxSelection || !gObj.isPersistSelection) {\n gObj.selectRow(_this.cellDetails.rowIndex, true);\n }\n _this.renderer.update(cellEditArgs);\n _this.parent.notify(batchEditFormRendered, cellEditArgs);\n _this.form = select('#' + gObj.element.id + 'EditForm', gObj.element);\n gObj.editModule.applyFormValidation([col]);\n _this.parent.element.querySelector('.e-gridpopup').style.display = 'none';\n });\n };\n BatchEdit.prototype.updateCell = function (rowIndex, field, value) {\n var gObj = this.parent;\n var col = gObj.getColumnByField(field);\n var index = gObj.getColumnIndexByField(field);\n if (col && !col.isPrimaryKey && col.allowEditing) {\n var td = getCellByColAndRowIndex(this.parent, col, rowIndex, index);\n var rowObj = col.getFreezeTableName() === 'movable' ? this.parent.getMovableRowsObject()[parseInt(rowIndex.toString(), 10)] :\n col.getFreezeTableName() === frozenRight ? gObj.getFrozenRightRowsObject()[parseInt(rowIndex.toString(), 10)]\n : gObj.getRowObjectFromUID(td.parentElement.getAttribute('data-uid'));\n this.refreshTD(td, col, rowObj, value);\n this.parent.trigger(queryCellInfo, {\n cell: this.newReactTd || td, column: col, data: rowObj.changes\n });\n }\n };\n BatchEdit.prototype.setChanges = function (rowObj, field, value) {\n var currentRowObj;\n if (!this.parent.isFrozenGrid()) {\n if (!rowObj.changes) {\n rowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n DataUtil.setValue(field, value, rowObj.changes);\n }\n if (rowObj.data[\"\" + field] !== value) {\n var type = this.parent.getColumnByField(field).type;\n if ((type === 'date' || type === 'datetime')) {\n if (new Date(rowObj.data[\"\" + field]).toString() !== new Date(value).toString()) {\n rowObj.isDirty = true;\n }\n }\n else {\n rowObj.isDirty = true;\n }\n }\n }\n else {\n var rowEle = this.parent.getRowElementByUID(rowObj.uid);\n var rowIndex = parseInt(rowEle.getAttribute(dataRowIndex), 10);\n currentRowObj = this.parent.getRowsObject()[parseInt(rowIndex.toString(), 10)];\n if (!currentRowObj.changes) {\n currentRowObj.changes = extend({}, {}, rowObj.data, true);\n }\n if (!isNullOrUndefined(field)) {\n setValue(field, value, currentRowObj.changes);\n }\n var movableRowObject = this.parent.getMovableRowsObject()[parseInt(rowIndex.toString(), 10)];\n movableRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[\"\" + field] !== value) {\n movableRowObject.isDirty = true;\n currentRowObj.isDirty = true;\n }\n if (this.parent.getFrozenMode() === leftRight) {\n var frRowObject = this.parent.getFrozenRightRowsObject()[parseInt(rowIndex.toString(), 10)];\n frRowObject.changes = extend({}, {}, currentRowObj.changes, true);\n if (rowObj.data[\"\" + field] !== value) {\n frRowObject.isDirty = true;\n }\n }\n }\n };\n BatchEdit.prototype.updateRow = function (index, data) {\n var keys = Object.keys(data);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var col = keys_1[_i];\n this.updateCell(index, col, data[\"\" + col]);\n }\n };\n BatchEdit.prototype.getCellIdx = function (uid) {\n var cIdx = this.parent.getColumnIndexByUid(uid) + this.parent.groupSettings.columns.length;\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n return cIdx;\n };\n BatchEdit.prototype.refreshTD = function (td, column, rowObj, value) {\n var cell = new CellRenderer(this.parent, this.serviceLocator);\n var rowcell;\n value = column.type === 'number' && !isNullOrUndefined(value) ? parseFloat(value) : value;\n this.setChanges(rowObj, column.field, value);\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n frzCols = frzCols && this.parent.isRowDragable() ? frzCols + 1 : frzCols;\n refreshForeignData(rowObj, this.parent.getForeignKeyColumns(), rowObj.changes);\n if (frzCols && column.getFreezeTableName() === 'movable' && this.parent.getColumns().length === rowObj.cells.length) {\n rowcell = rowObj.cells.slice(frzCols, rowObj.cells.length);\n }\n else {\n rowcell = rowObj.cells;\n }\n var parentElement;\n var cellIndex;\n if (this.parent.isReact) {\n parentElement = td.parentElement;\n cellIndex = td.cellIndex;\n }\n var index = 0;\n if (frzCols) {\n index = column.getFreezeTableName() === 'movable' && this.parent.getFrozenMode() !== 'Right'\n ? frzCols : column.getFreezeTableName() === frozenRight\n ? this.parent.getFrozenLeftColumnsCount() + this.parent.getMovableColumnsCount() : index;\n }\n cell.refreshTD(td, rowcell[this.getCellIdx(column.uid) - index], rowObj.changes, { 'index': this.getCellIdx(column.uid) });\n if (this.parent.isReact) {\n this.newReactTd = parentElement.cells[parseInt(cellIndex.toString(), 10)];\n parentElement.cells[parseInt(cellIndex.toString(), 10)].classList.add('e-updatedtd');\n }\n else {\n td.classList.add('e-updatedtd');\n }\n td.classList.add('e-updatedtd');\n this.parent.notify(toolbarRefresh, {});\n };\n BatchEdit.prototype.getColIndex = function (cells, index) {\n var cIdx = 0;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns) {\n cIdx = this.parent.groupSettings.columns.length;\n }\n if (!isNullOrUndefined(this.parent.detailTemplate) || !isNullOrUndefined(this.parent.childGrid)) {\n cIdx++;\n }\n if (this.parent.isRowDragable()) {\n cIdx++;\n }\n for (var m = 0; m < cells.length; m++) {\n var colIndex = parseInt(cells[parseInt(m.toString(), 10)].getAttribute(dataColIndex), 10);\n if (colIndex === index - cIdx) {\n return m;\n }\n }\n return -1;\n };\n BatchEdit.prototype.editNextValCell = function () {\n var gObj = this.parent;\n var insertedRows = gObj.element.querySelectorAll('.e-insertedrow');\n var isSingleInsert = insertedRows.length === 1 ? true : (gObj.getFrozenColumns() > 0 ||\n gObj.getFrozenRightColumnsCount() > 0 || gObj.getFrozenLeftColumnsCount() > 0) && (insertedRows.length === 2 ||\n insertedRows.length === 3) ? true : false;\n if (isSingleInsert && this.isAdded && !gObj.isEdit) {\n var btmIdx = this.getBottomIndex();\n for (var i = this.cellDetails.cellIndex; i < gObj.getColumns().length; i++) {\n if (gObj.isEdit) {\n return;\n }\n var index = this.findNextEditableCell(this.cellDetails.cellIndex + 1, true, true);\n var col = gObj.getColumns()[parseInt(index.toString(), 10)];\n if (col) {\n if (this.parent.editSettings.newRowPosition === 'Bottom') {\n this.editCell(btmIdx, col.field, true);\n }\n else {\n var args = { index: 0, column: col };\n this.parent.notify(nextCellIndex, args);\n this.editCell(args.index, col.field, true);\n }\n this.saveCell();\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit && !gObj.isFrozenGrid()) {\n var editRowIdx = 0;\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[deletedRecords].length;\n }\n for (var i = 0; i < insertedRows.length; i++, editRowIdx++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (insertedRows[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (this.validateFormObj()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n else if (!isSingleInsert && this.isAdded && !gObj.isEdit && gObj.isFrozenGrid()) {\n var fLeftInsertedRow = gObj.getFrozenLeftContentTbody() ? gObj.getFrozenLeftContentTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n var fRightInsertedRow = gObj.getFrozenRightContentTbody() ? gObj.getFrozenRightContentTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n var mInsertedRow = gObj.getMovableContentTbody().querySelectorAll('.e-insertedrow');\n var editRowIdx = 0;\n var fLeftCount = gObj.getVisibleFrozenLeftCount() ? gObj.getVisibleFrozenLeftCount() :\n gObj.getFrozenColumns();\n var fRightCount = gObj.getVisibleFrozenRightCount();\n var mColumnCount = gObj.getVisibleMovableCount();\n if (gObj.editSettings.newRowPosition === 'Bottom') {\n var changes = this.getBatchChanges();\n editRowIdx = gObj.getCurrentViewRecords().length - changes[deletedRecords].length;\n }\n else if (gObj.editSettings.newRowPosition === 'Top' && gObj.frozenRows) {\n fLeftInsertedRow = gObj.getFrozenHeaderTbody() ? gObj.getFrozenHeaderTbody()\n .querySelectorAll('.e-insertedrow') : undefined;\n fRightInsertedRow = gObj.getFrozenRightHeader() ? gObj.getFrozenRightHeader()\n .querySelectorAll('.e-insertedrow') : undefined;\n mInsertedRow = gObj.getMovableHeaderTbody().querySelectorAll('.e-insertedrow');\n }\n for (var i = 0; i < mInsertedRow.length; i++, editRowIdx++) {\n if (!gObj.isEdit) {\n for (var j = 0; j < this.validationColObj.length; j++) {\n if (gObj.isEdit) {\n break;\n }\n else if (fLeftCount && this.validationColObj[parseInt(j.toString(), 10)].cellIdx < fLeftCount) {\n if (fLeftInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n else if (fRightCount && mColumnCount <= this.validationColObj[parseInt(j.toString(), 10)].cellIdx) {\n if (fRightInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx - (mColumnCount + fLeftCount)].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n else if (mInsertedRow[parseInt(i.toString(), 10)].querySelectorAll('td')[this.validationColObj[parseInt(j.toString(), 10)].cellIdx - fLeftCount].innerText === '') {\n this.editCell(editRowIdx, this.validationColObj[parseInt(j.toString(), 10)].field);\n if (gObj.editModule.formObj.validate()) {\n this.saveCell();\n }\n }\n }\n }\n else {\n break;\n }\n }\n if (!gObj.isEdit) {\n this.isAdded = false;\n }\n }\n };\n BatchEdit.prototype.escapeCellEdit = function () {\n var args = this.generateCellArgs();\n args.value = args.previousValue;\n if (args.value || !this.cellDetails.column.validationRules) {\n this.successCallBack(args, args.cell.parentElement, args.column, true)(args);\n }\n };\n BatchEdit.prototype.generateCellArgs = function () {\n var gObj = this.parent;\n this.parent.element.classList.remove('e-editing');\n var column = this.cellDetails.column;\n var obj = {};\n obj[column.field] = getObject(column.field, this.cellDetails.rowData);\n var editedData = gObj.editModule.getCurrentEditedData(this.form, obj);\n var cloneEditedData = extend({}, editedData);\n editedData = extend({}, editedData, this.cellDetails.rowData);\n var value = getObject(column.field, cloneEditedData);\n if (!isNullOrUndefined(column.field) && !isUndefined(value)) {\n setValue(column.field, value, editedData);\n }\n var args = {\n columnName: column.field,\n value: getObject(column.field, editedData),\n rowData: this.cellDetails.rowData,\n column: column,\n previousValue: this.cellDetails.value,\n isForeignKey: this.cellDetails.isForeignKey,\n cancel: false\n };\n args.cell = this.form.parentElement;\n args.columnObject = column;\n return args;\n };\n BatchEdit.prototype.saveCell = function (isForceSave) {\n if (this.preventSaveCell || !this.form) {\n return;\n }\n var gObj = this.parent;\n if (!isForceSave && (!gObj.isEdit || this.validateFormObj())) {\n return;\n }\n this.preventSaveCell = true;\n var args = this.generateCellArgs();\n var tr = args.cell.parentElement;\n var col = args.column;\n if (!isForceSave) {\n gObj.trigger(cellSave, args, this.successCallBack(args, tr, col));\n gObj.notify(batchForm, { formObj: this.form });\n }\n else {\n this.successCallBack(args, tr, col)(args);\n }\n };\n BatchEdit.prototype.successCallBack = function (cellSaveArgs, tr, column, isEscapeCellEdit) {\n var _this = this;\n return function (cellSaveArgs) {\n var gObj = _this.parent;\n cellSaveArgs.cell = cellSaveArgs.cell ? cellSaveArgs.cell : _this.form.parentElement;\n cellSaveArgs.columnObject = cellSaveArgs.columnObject ? cellSaveArgs.columnObject : column;\n cellSaveArgs.columnObject.index = isNullOrUndefined(cellSaveArgs.columnObject.index) ? 0 : cellSaveArgs.columnObject.index;\n if (cellSaveArgs.cancel) {\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field) {\n return;\n }\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n return;\n }\n gObj.editModule.destroyWidgets([column]);\n gObj.isEdit = false;\n gObj.editModule.destroyForm();\n _this.parent.notify(tooltipDestroy, {});\n var rowObj = parentsUntil(cellSaveArgs.cell, movableContent)\n || parentsUntil(cellSaveArgs.cell, movableHeader) ? gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), true)\n : gObj.getRowObjectFromUID(tr.getAttribute('data-uid'));\n if (gObj.getFrozenMode() === leftRight && (parentsUntil(cellSaveArgs.cell, 'e-frozen-right-header')\n || parentsUntil(cellSaveArgs.cell, 'e-frozen-right-content'))) {\n rowObj = gObj.getRowObjectFromUID(tr.getAttribute('data-uid'), false, true);\n }\n _this.refreshTD(cellSaveArgs.cell, column, rowObj, cellSaveArgs.value);\n if (_this.parent.isReact) {\n cellSaveArgs.cell = _this.newReactTd;\n }\n removeClass([tr], [editedRow, 'e-batchrow']);\n removeClass([cellSaveArgs.cell], ['e-editedbatchcell', 'e-boolcell']);\n if (!isNullOrUndefined(cellSaveArgs.value) && cellSaveArgs.value.toString() ===\n (!isNullOrUndefined(_this.cellDetails.value) ? _this.cellDetails.value : '').toString() && !_this.isColored\n || (isNullOrUndefined(cellSaveArgs.value) && isNullOrUndefined(rowObj.data[column.field]) &&\n isNullOrUndefined(_this.cellDetails.value) && !cellSaveArgs.cell.parentElement.classList.contains('e-insertedrow'))) {\n cellSaveArgs.cell.classList.remove('e-updatedtd');\n }\n if (isNullOrUndefined(isEscapeCellEdit)) {\n gObj.trigger(cellSaved, cellSaveArgs);\n }\n gObj.notify(toolbarRefresh, {});\n _this.isColored = false;\n if (_this.parent.aggregates.length > 0) {\n _this.parent.notify(refreshFooterRenderer, {});\n if (_this.parent.groupSettings.columns.length > 0 && !_this.isAddRow(_this.cellDetails.rowIndex)) {\n _this.parent.notify(groupAggregates, {});\n }\n }\n _this.preventSaveCell = false;\n if (_this.editNext) {\n _this.editNext = false;\n if (_this.cellDetails.rowIndex === _this.index && _this.cellDetails.column.field === _this.field && _this.prevEditedBatchCell) {\n return;\n }\n var col = gObj.getColumnByField(_this.field);\n if (col && (col.allowEditing || (!col.allowEditing && gObj.focusModule.active\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex]\n && gObj.focusModule.active.getTable().rows[_this.crtRowIndex].classList.contains('e-insertedrow')))) {\n _this.editCellExtend(_this.index, _this.field, _this.isAdd);\n }\n }\n if (isEscapeCellEdit) {\n gObj.notify(restoreFocus, {});\n }\n };\n };\n BatchEdit.prototype.prevEditedBatchCellMatrix = function () {\n var editedBatchCellMatrix = [];\n var gObj = this.parent;\n var editedBatchCell = gObj.focusModule.active ? gObj.focusModule.active.getTable().querySelector('.e-editedbatchcell')\n : undefined;\n if (editedBatchCell) {\n var tr = editedBatchCell.parentElement;\n var rowIndex = [].slice.call(this.parent.focusModule.active.getTable().rows).indexOf(tr);\n var cellIndex = [].slice.call(tr.cells).indexOf(editedBatchCell);\n editedBatchCellMatrix = [rowIndex, cellIndex];\n }\n return editedBatchCellMatrix;\n };\n BatchEdit.prototype.getDataByIndex = function (index) {\n var row$$1 = this.parent.getRowObjectFromUID(this.parent.getDataRows()[parseInt(index.toString(), 10)].getAttribute('data-uid'));\n return row$$1.changes ? row$$1.changes : row$$1.data;\n };\n BatchEdit.prototype.keyDownHandler = function (e) {\n if (this.addBatchRow || ((e.action === 'tab' || e.action === 'shiftTab') && this.parent.isEdit)) {\n var gObj = this.parent;\n var btmIdx = this.getBottomIndex();\n var rowcell = parentsUntil(e.target, rowCell);\n if (this.addBatchRow || rowcell) {\n var cell = rowcell ? rowcell.querySelector('.e-field') : undefined;\n if (this.addBatchRow || cell) {\n var visibleColumns = this.parent.getVisibleColumns();\n var columnIndex = e.action === 'tab' ? visibleColumns.length - 1 : 0;\n if (this.addBatchRow\n || visibleColumns[parseInt(columnIndex.toString(), 10)].field === cell.getAttribute('id').slice(this.parent.element.id.length)) {\n if (this.cellDetails.rowIndex === btmIdx && e.action === 'tab') {\n if (gObj.editSettings.newRowPosition === 'Top') {\n gObj.editSettings.newRowPosition = 'Bottom';\n this.addRecord();\n gObj.editSettings.newRowPosition = 'Top';\n }\n else {\n this.addRecord();\n }\n this.addBatchRow = false;\n }\n else {\n this.saveCell();\n }\n }\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n BatchEdit.prototype.addCancelWhilePaging = function () {\n if (this.validateFormObj()) {\n this.parent.notify(destroyForm, {});\n this.parent.isEdit = false;\n this.isColored = false;\n }\n };\n BatchEdit.prototype.getBottomIndex = function () {\n var changes = this.getBatchChanges();\n return this.parent.getCurrentViewRecords().length + changes[addedRecords].length -\n changes[deletedRecords].length - 1;\n };\n return BatchEdit;\n}());\n\nvar __extends$29 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `DialogEdit` module is used to handle dialog editing actions.\n *\n * @hidden\n */\nvar DialogEdit = /** @__PURE__ @class */ (function (_super) {\n __extends$29(DialogEdit, _super);\n function DialogEdit(parent, serviceLocator, renderer) {\n var _this = \n //constructor\n _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.renderer = renderer;\n return _this;\n }\n DialogEdit.prototype.closeEdit = function () {\n //closeEdit\n _super.prototype.closeEdit.call(this);\n };\n DialogEdit.prototype.addRecord = function (data, index) {\n //addRecord\n _super.prototype.addRecord.call(this, data, index);\n };\n DialogEdit.prototype.endEdit = function () {\n //endEdit\n _super.prototype.endEdit.call(this);\n };\n DialogEdit.prototype.updateRow = function (index, data) {\n _super.prototype.updateRow.call(this, index, data);\n };\n DialogEdit.prototype.deleteRecord = function (fieldname, data) {\n //deleteRecord\n _super.prototype.deleteRecord.call(this, fieldname, data);\n };\n DialogEdit.prototype.startEdit = function (tr) {\n _super.prototype.startEdit.call(this, tr);\n };\n return DialogEdit;\n}(NormalEdit));\n\nvar __extends$30 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `DatePickerEditCell` is used to handle datepicker cell type editing.\n *\n * @hidden\n */\nvar DatePickerEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$30(DatePickerEditCell, _super);\n function DatePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n DatePickerEditCell.prototype.write = function (args) {\n this.edit = this.parent.editModule;\n if (args.column.editType === 'datepickeredit') {\n this.obj = new DatePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n else if (args.column.editType === 'datetimepickeredit') {\n this.obj = new DateTimePicker(extend(dateanddatetimerender(args, this.parent.editSettings.mode, this.parent.enableRtl, this.parent.cssClass, this), args.column.edit.params));\n }\n this.obj.appendTo(args.element);\n };\n return DatePickerEditCell;\n}(EditCellBase));\n// eslint-disable-next-line\nfunction dateanddatetimerender(args, mode, rtl, css, datePickerEditCell) {\n var isInline = mode !== 'Dialog';\n var format = getCustomDateFormat(args.column.format, args.column.type);\n var value = getObject(args.column.field, args.rowData);\n value = value ? new Date(value) : null;\n return {\n floatLabelType: isInline ? 'Never' : 'Always',\n value: value,\n format: format,\n placeholder: isInline ?\n '' : args.column.headerText, enableRtl: rtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: css ? css : null,\n close: datePickerClose.bind(datePickerEditCell)\n };\n}\n// eslint-disable-next-line\nfunction datePickerClose(args) {\n if (args.event && args.event.action === 'escape') {\n this.edit.editCellDialogClose = true;\n }\n}\n\n/**\n * `TemplateEditCell` is used to handle template cell.\n *\n * @hidden\n */\nvar TemplateEditCell = /** @__PURE__ @class */ (function () {\n function TemplateEditCell(parent) {\n this.parent = parent;\n }\n TemplateEditCell.prototype.read = function (element, value) {\n return value;\n };\n TemplateEditCell.prototype.write = function () {\n //\n };\n TemplateEditCell.prototype.destroy = function () {\n //\n };\n return TemplateEditCell;\n}());\n\n/**\n * The `Edit` module is used to handle editing actions.\n */\nvar Edit = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid editing module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the servicelocator\n * @hidden\n */\n function Edit(parent, serviceLocator) {\n this.editType = { 'Inline': InlineEdit, 'Normal': InlineEdit, 'Batch': BatchEdit, 'Dialog': DialogEdit };\n this.isValidationApplied = false;\n /* @hidden */\n this.editCellDialogClose = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.l10n = this.serviceLocator.getService('localization');\n this.addEventListener();\n this.updateEditObj();\n this.createAlertDlg();\n this.createConfirmDlg();\n }\n Edit.prototype.updateColTypeObj = function () {\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (this.parent.editSettings.template || cols[parseInt(i.toString(), 10)].editTemplate) {\n var templteCell = 'templateedit';\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[\"\" + templteCell](this.parent), cols[parseInt(i.toString(), 10)].edit || {});\n }\n else {\n cols[parseInt(i.toString(), 10)].edit = extend(new Edit.editCellType[cols[parseInt(i.toString(), 10)].editType\n && Edit.editCellType[cols[parseInt(i.toString(), 10)].editType] ?\n cols[parseInt(i.toString(), 10)].editType : 'defaultedit'](this.parent, this.serviceLocator), cols[parseInt(i.toString(), 10)].edit || {});\n }\n }\n this.parent.log('primary_column_missing');\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n Edit.prototype.getModuleName = function () {\n return 'edit';\n };\n /**\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onPropertyChanged = function (e) {\n if (e.module !== this.getModuleName()) {\n return;\n }\n var gObj = this.parent;\n for (var _i = 0, _a = Object.keys(e.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowAdding':\n case 'allowDeleting':\n case 'allowEditing':\n if (gObj.editSettings.allowAdding || gObj.editSettings.allowEditing || gObj.editSettings.allowDeleting) {\n this.initialEnd();\n }\n break;\n case 'mode':\n this.updateEditObj();\n gObj.isEdit = false;\n gObj.refresh();\n break;\n }\n }\n };\n Edit.prototype.updateEditObj = function () {\n if (this.editModule) {\n this.editModule.destroy();\n }\n this.renderer = new EditRender(this.parent, this.serviceLocator);\n this.editModule = new this.editType[this.parent.editSettings.mode](this.parent, this.serviceLocator, this.renderer);\n };\n Edit.prototype.initialEnd = function () {\n this.updateColTypeObj();\n };\n /**\n * Edits any bound record in the Grid by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row to be edited.\n * @returns {void}\n */\n Edit.prototype.startEdit = function (tr) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowEditing || gObj.isEdit || gObj.editSettings.mode === 'Batch') {\n return;\n }\n this.parent.element.classList.add('e-editing');\n if (!gObj.getSelectedRows().length) {\n if (!tr) {\n this.showDialog('EditOperationAlert', this.alertDObj);\n return;\n }\n }\n else if (!tr) {\n tr = gObj.getSelectedRows()[0];\n }\n this.isLastRow = tr.rowIndex === this.parent.getContent().querySelector('tr:last-child').rowIndex;\n if (tr.style.display === 'none') {\n return;\n }\n this.editModule.startEdit(tr);\n this.refreshToolbar();\n gObj.element.querySelector('.e-gridpopup').style.display = 'none';\n this.parent.notify('start-edit', {});\n };\n /**\n * @param {Element} tr - specifies the tr element\n * @param {object} args - specifies the object\n * @param {Element} args.row -specfifes the row\n * @param {string} args.requestType - specifies the request type\n * @returns {void}\n * @hidden\n */\n Edit.prototype.checkLastRow = function (tr, args) {\n var checkLastRow = this.isLastRow;\n if (this.parent.height !== 'auto' && this.parent.editSettings.newRowPosition === 'Bottom' && args && args.requestType === 'add' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight) {\n addClass([].slice.call(tr.getElementsByClassName(rowCell)), 'e-lastrowadded');\n }\n else if (checkLastRow && tr && tr.classList) {\n addClass([].slice.call(tr.getElementsByClassName(rowCell)), 'e-lastrowcell');\n }\n };\n /**\n * Cancels edited state.\n *\n * @returns {void}\n */\n Edit.prototype.closeEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog\n && this.parent.element.getElementsByClassName('e-updatedtd').length) {\n this.showDialog('CancelEdit', this.dialogObj);\n return;\n }\n this.parent.element.classList.remove('e-editing');\n this.editModule.closeEdit();\n this.refreshToolbar();\n this.parent.notify(closeEdit, {});\n };\n Edit.prototype.refreshToolbar = function () {\n this.parent.notify(toolbarRefresh, {});\n };\n /**\n * To adds a new row at the top with the given data. When data is not passed, it will add empty rows.\n * > `editSettings.allowEditing` should be true.\n *\n * @param {Object} data - Defines the new add record data.\n * @param {number} index - Defines the row index to be added\n * @returns {void}\n */\n Edit.prototype.addRecord = function (data, index) {\n if (!this.parent.editSettings.allowAdding) {\n return;\n }\n var args = { startEdit: true };\n if (!data) {\n this.parent.notify(virtualScrollAddActionBegin, args);\n }\n if (args.startEdit) {\n this.parent.element.classList.add('e-editing');\n this.editModule.addRecord(data, index);\n this.refreshToolbar();\n this.parent.notify('start-add', {});\n }\n };\n /**\n * Deletes a record with the given options. If fieldname and data are not given, the Grid will delete the selected record.\n * > `editSettings.allowDeleting` should be true.\n *\n * @param {string} fieldname - Defines the primary key field name of the column.\n * @param {Object} data - Defines the JSON data record to be deleted.\n * @returns {void}\n */\n Edit.prototype.deleteRecord = function (fieldname, data) {\n var gObj = this.parent;\n if (!gObj.editSettings.allowDeleting) {\n return;\n }\n if (!data) {\n if (!gObj.getSelectedRecords().length && isNullOrUndefined(gObj.commandDelIndex)) {\n this.showDialog('DeleteOperationAlert', this.alertDObj);\n return;\n }\n }\n if (gObj.editSettings.showDeleteConfirmDialog) {\n this.showDialog('ConfirmDelete', this.dialogObj);\n return;\n }\n this.editModule.deleteRecord(fieldname, data);\n };\n /**\n * Deletes a visible row by TR element.\n *\n * @param {HTMLTableRowElement} tr - Defines the table row element.\n * @returns {void}\n */\n Edit.prototype.deleteRow = function (tr) {\n this.deleteRowUid = tr.getAttribute('data-uid');\n var rowObj = this.parent.getRowObjectFromUID(this.deleteRowUid);\n if (!isNullOrUndefined(rowObj)) {\n this.deleteRecord(null, rowObj.data);\n }\n };\n /**\n * If Grid is in editable state, you can save a record by invoking endEdit.\n *\n * @returns {void}\n */\n Edit.prototype.endEdit = function () {\n if (this.parent.editSettings.mode === 'Batch' && this.parent.editSettings.showConfirmDialog &&\n (isNullOrUndefined(this.formObj) || this.formObj.validate())) {\n this.parent.editModule.saveCell();\n this.parent.notify(editNextValCell, {});\n if (isNullOrUndefined(this.formObj) || this.formObj.validate()) {\n this.showDialog('BatchSaveConfirm', this.dialogObj);\n return;\n }\n }\n this.endEditing();\n };\n /**\n * To update the specified cell by given value without changing into edited state.\n *\n * @param {number} rowIndex Defines the row index.\n * @param {string} field Defines the column field.\n * @param {string | number | boolean | Date} value - Defines the value to be changed.\n * @returns {void}\n */\n Edit.prototype.updateCell = function (rowIndex, field, value) {\n this.editModule.updateCell(rowIndex, field, value);\n };\n /**\n * To update the specified row by given values without changing into edited state.\n *\n * @param {number} index Defines the row index.\n * @param {Object} data Defines the data object to be updated.\n * @returns {void}\n */\n Edit.prototype.updateRow = function (index, data) {\n this.editModule.updateRow(index, data);\n };\n /**\n * Resets added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchCancel = function () {\n this.closeEdit();\n };\n /**\n * Bulk saves added, edited, and deleted records in the batch mode.\n *\n * @returns {void}\n */\n Edit.prototype.batchSave = function () {\n this.endEdit();\n };\n /**\n * Changes a particular cell into edited state based on the row index and field name provided in the `batch` mode.\n *\n * @param {number} index - Defines row index to edit a particular cell.\n * @param {string} field - Defines the field name of the column to perform batch edit.\n * @returns {void}\n */\n Edit.prototype.editCell = function (index, field) {\n this.editModule.editCell(index, field);\n };\n /**\n * Checks the status of validation at the time of editing. If validation is passed, it returns true.\n *\n * @returns {boolean} returns whether the form is validated\n */\n Edit.prototype.editFormValidate = function () {\n var form1 = this.formObj ? this.formObj.validate() : true;\n var form2 = this.mFormObj ? this.mFormObj.validate() : true;\n var form3 = this.frFormObj ? this.frFormObj.validate() : true;\n return form1 && form2 && form3;\n };\n /**\n * Gets the added, edited,and deleted data before bulk save to the DataSource in batch mode.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getBatchChanges = function () {\n return this.editModule.getBatchChanges ? this.editModule.getBatchChanges() : {};\n };\n /**\n * Gets the current value of the edited component.\n *\n * @returns {Object} returns the Object\n */\n Edit.prototype.getCurrentEditCellData = function () {\n var obj = this.getCurrentEditedData(this.formObj.element, {});\n return obj[Object.keys(obj)[0]];\n };\n /**\n * Saves the cell that is currently edited. It does not save the value to the DataSource.\n *\n * @returns {void}\n */\n Edit.prototype.saveCell = function () {\n this.editModule.saveCell();\n };\n Edit.prototype.endEditing = function () {\n this.parent.element.classList.remove('e-editing');\n this.editModule.endEdit();\n this.refreshToolbar();\n };\n Edit.prototype.showDialog = function (content$$1, obj) {\n obj.content = '
' + this.l10n.getConstant(content$$1) + '
';\n obj.dataBind();\n obj.show();\n };\n Edit.prototype.getValueFromType = function (col, value) {\n var val = value;\n switch (col.type) {\n case 'number':\n val = !isNaN(parseFloat(value)) ? parseFloat(value) : null;\n break;\n case 'boolean':\n if (col.editType !== 'booleanedit') {\n val = value === this.l10n.getConstant('True') || value === true ? true : false;\n }\n break;\n case 'date':\n case 'datetime':\n if (col.editType !== 'datepickeredit' && col.editType !== 'datetimepickeredit'\n && value && value.length) {\n val = new Date(value);\n }\n else if (value === '') {\n val = null;\n }\n break;\n }\n return val;\n };\n Edit.prototype.destroyToolTip = function () {\n var elements = [].slice.call(this.parent.element.getElementsByClassName('e-griderror'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n this.parent.getContent().firstElementChild.style.position = 'relative';\n };\n Edit.prototype.createConfirmDlg = function () {\n this.dialogObj = this.dlgWidget([\n {\n click: this.dlgOk.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-primary' + ' ' + this.parent.cssClass : 'e-primary',\n isPrimary: true }\n },\n {\n click: this.dlgCancel.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n content: this.l10n.getConstant('CancelButton') }\n }\n ], 'EditConfirm');\n };\n Edit.prototype.createAlertDlg = function () {\n this.alertDObj = this.dlgWidget([\n {\n click: this.alertClick.bind(this),\n buttonModel: { content: this.l10n.getConstant('OKButton'),\n cssClass: this.parent.cssClass ? 'e-flat' + ' ' + this.parent.cssClass : 'e-flat',\n isPrimary: true }\n }\n ], 'EditAlert');\n };\n Edit.prototype.alertClick = function () {\n this.alertDObj.hide();\n };\n Edit.prototype.dlgWidget = function (btnOptions, name) {\n var div = this.parent.createElement('div', { id: this.parent.element.id + name });\n this.parent.element.appendChild(div);\n var options = {\n showCloseIcon: false,\n isModal: true,\n visible: false,\n closeOnEscape: true,\n target: this.parent.element,\n width: '320px',\n animationSettings: { effect: 'None' },\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n };\n options.buttons = btnOptions;\n var obj = new Dialog(options);\n var isStringTemplate = 'isStringTemplate';\n obj[\"\" + isStringTemplate] = true;\n obj.appendTo(div);\n return obj;\n };\n Edit.prototype.dlgCancel = function () {\n this.parent.focusModule.clearIndicator();\n this.parent.focusModule.restoreFocus();\n this.dialogObj.hide();\n this.parent.notify('cancelcnfrmDlg', {});\n };\n Edit.prototype.dlgOk = function () {\n switch (this.dialogObj.element.querySelector('.e-dlg-content').firstElementChild.innerText) {\n case this.l10n.getConstant('ConfirmDelete'):\n this.editModule.deleteRecord();\n break;\n case this.l10n.getConstant('CancelEdit'):\n this.editModule.closeEdit();\n break;\n case this.l10n.getConstant('BatchSaveConfirm'):\n this.endEditing();\n break;\n case this.l10n.getConstant('BatchSaveLostChanges'):\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.addCancelWhilePaging();\n }\n this.executeAction();\n break;\n }\n this.dlgCancel();\n };\n Edit.prototype.destroyEditComponents = function () {\n if (this.parent.isEdit) {\n this.destroyWidgets();\n this.destroyForm();\n }\n this.destroy();\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.eventDetails = [{ event: inBoundModelChanged, handler: this.onPropertyChanged },\n { event: initialEnd, handler: this.initialEnd },\n { event: keyPressed, handler: this.keyPressHandler },\n { event: autoCol, handler: this.updateColTypeObj },\n { event: tooltipDestroy, handler: this.destroyToolTip },\n { event: preventBatch, handler: this.preventBatch },\n { event: destroyForm, handler: this.destroyForm },\n { event: destroy, handler: this.destroyEditComponents }];\n addRemoveEventListener(this.parent, this.eventDetails, true, this);\n this.actionBeginFunction = this.onActionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.onDataBoundFunction = this.onDataBound.bind(this);\n this.parent.addEventListener(actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunction);\n this.parent.addEventListener(dataBound, this.onDataBoundFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventDetails, false);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(dataBound, this.onDataBoundFunction);\n };\n Edit.prototype.onDataBound = function () {\n this.resetMovableContentValidation();\n };\n Edit.prototype.actionComplete = function (e) {\n var actions = ['add', 'beginEdit', 'save', 'delete', 'cancel'];\n if (actions.indexOf(e.requestType) < 0) {\n this.parent.isEdit = false;\n }\n if (e.requestType === 'batchsave') {\n this.parent.focusModule.restoreFocus();\n }\n this.refreshToolbar();\n };\n /**\n * @param {Element} form - specifies the element\n * @param {Object} editedData - specifies the edited data\n * @returns {Object} returns the object\n * @hidden\n */\n Edit.prototype.getCurrentEditedData = function (form, editedData) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n var elements = [].slice.call(form.elements);\n for (var k = 0; k < elements.length; k++) {\n if (((elements[parseInt(k.toString(), 10)].hasAttribute('name') && (elements[parseInt(k.toString(), 10)].className !== 'e-multi-hidden')) ||\n elements[parseInt(k.toString(), 10)].classList.contains('e-multiselect')) && !(elements[parseInt(k.toString(), 10)].type === 'hidden' &&\n (parentsUntil(elements[parseInt(k.toString(), 10)], 'e-switch-wrapper') || parentsUntil(elements[parseInt(k.toString(), 10)], 'e-checkbox-wrapper')))) {\n var field = (elements[parseInt(k.toString(), 10)].hasAttribute('name')) ? setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('name')) :\n setComplexFieldID(elements[parseInt(k.toString(), 10)].getAttribute('id'));\n var column = gObj.getColumnByField(field) || { field: field, type: elements[parseInt(k.toString(), 10)].getAttribute('type') };\n var value = void 0;\n if (column.type === 'checkbox' || column.type === 'boolean') {\n value = elements[parseInt(k.toString(), 10)].checked;\n }\n else if (elements[parseInt(k.toString(), 10)].value) {\n value = elements[parseInt(k.toString(), 10)].value;\n if (elements[parseInt(k.toString(), 10)].ej2_instances &&\n elements[parseInt(k.toString(), 10)].ej2_instances.length &&\n !isNullOrUndefined(elements[parseInt(k.toString(), 10)].ej2_instances[0].value)) {\n elements[parseInt(k.toString(), 10)].blur();\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n }\n else if (elements[parseInt(k.toString(), 10)].ej2_instances) {\n value = elements[parseInt(k.toString(), 10)]\n .ej2_instances[0].value;\n }\n if (column.edit && typeof column.edit.read === 'string') {\n value = getValue(column.edit.read, window)(elements[parseInt(k.toString(), 10)], value);\n }\n else if (column.edit && column.edit.read) {\n value = column.edit.read(elements[parseInt(k.toString(), 10)], value);\n }\n value = gObj.editModule.getValueFromType(column, value);\n if (elements[parseInt(k.toString(), 10)].type === 'radio') {\n if (elements[parseInt(k.toString(), 10)].checked) {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n else {\n DataUtil.setValue(column.field, value, editedData);\n }\n }\n }\n return editedData;\n }\n var col = gObj.columnModel.filter(function (col) { return col.editTemplate; });\n for (var j = 0; j < col.length; j++) {\n if (form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]) {\n var inputElements = [].slice.call(form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]);\n inputElements = inputElements.length ? inputElements : [form[getComplexFieldID(col[parseInt(j.toString(), 10)].field)]];\n var temp = inputElements.filter(function (e) {\n return !isNullOrUndefined((e.ej2_instances));\n });\n if (temp.length === 0) {\n temp = inputElements.filter(function (e) { return e.hasAttribute('name'); });\n }\n for (var k = 0; k < temp.length; k++) {\n var value = this.getValue(col[parseInt(j.toString(), 10)], temp[parseInt(k.toString(), 10)], editedData);\n DataUtil.setValue(col[parseInt(j.toString(), 10)].field, value, editedData);\n }\n }\n }\n var inputs = [].slice.call(form.getElementsByClassName('e-field'));\n for (var i = 0, len = inputs.length; i < len; i++) {\n var col_1 = gObj.getColumnByUid(inputs[parseInt(i.toString(), 10)].getAttribute('e-mappinguid'));\n if (col_1 && col_1.field) {\n var value = this.getValue(col_1, inputs[parseInt(i.toString(), 10)], editedData);\n DataUtil.setValue(col_1.field, value, editedData);\n }\n }\n return editedData;\n };\n Edit.prototype.getValue = function (col, input, editedData) {\n var value = input.ej2_instances ?\n input.ej2_instances[0].value : input.value;\n var gObj = this.parent;\n var temp = col.edit.read;\n if (col.type === 'checkbox' || col.type === 'boolean') {\n value = input.checked;\n }\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n value = gObj.editModule.getValueFromType(col, (temp)(input, value));\n }\n else {\n value = gObj.editModule.getValueFromType(col, col.edit.read(input, value));\n }\n if (isNullOrUndefined(editedData[col.field]) && value === '') {\n value = editedData[col.field];\n }\n return value;\n };\n /**\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n Edit.prototype.onActionBegin = function (e) {\n if (e.requestType === 'columnstate' && this.parent.isEdit\n && this.parent.editSettings.mode !== 'Batch') {\n this.closeEdit();\n }\n else {\n var editRow = this.parent.element.querySelector('.' + editedRow);\n var addRow = this.parent.element.querySelector('.' + addedRow);\n if (editRow && this.parent.frozenRows && e.requestType === 'virtualscroll'\n && parseInt(parentsUntil(editRow, row).getAttribute(dataRowIndex), 10) < this.parent.frozenRows) {\n return;\n }\n var restrictedRequestTypes = ['filterafteropen', 'filterbeforeopen', 'filterchoicerequest', 'save', 'infiniteScroll', 'virtualscroll'];\n var isRestrict = restrictedRequestTypes.indexOf(e.requestType) === -1;\n var isDestroyVirtualForm = this.parent.enableVirtualization && this.formObj\n && !this.formObj.isDestroyed && (editRow || addRow || e.requestType === 'cancel') && isRestrict;\n if ((!this.parent.enableVirtualization && this.parent.editSettings.mode !== 'Batch' && this.formObj && !this.formObj.isDestroyed\n && isRestrict && !e.cancel) || isDestroyVirtualForm) {\n this.destroyWidgets();\n this.destroyForm();\n }\n }\n };\n /**\n * @param {Column[]} cols - specfies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyWidgets = function (cols) {\n var gObj = this.parent;\n if (gObj.editSettings.template) {\n this.parent.destroyTemplate(['editSettingsTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n cols = cols ? cols : this.parent.getCurrentVisibleColumns(this.parent.enableColumnVirtualization);\n if (cols.some(function (column) { return !isNullOrUndefined(column.editTemplate); })) {\n this.parent.destroyTemplate(['editTemplate']);\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n for (var _i = 0, cols_1 = cols; _i < cols_1.length; _i++) {\n var col = cols_1[_i];\n var temp = col.edit.destroy;\n if (col.edit.destroy) {\n if (typeof temp === 'string') {\n temp = getValue(temp, window);\n temp();\n }\n else {\n col.edit.destroy();\n }\n }\n }\n var elements = [].slice.call(this.formObj.element.elements);\n for (var i = 0; i < elements.length; i++) {\n if (elements[parseInt(i.toString(), 10)].hasAttribute('name')) {\n if (elements[parseInt(i.toString(), 10)].ej2_instances &&\n elements[parseInt(i.toString(), 10)].ej2_instances.length &&\n !elements[parseInt(i.toString(), 10)].ej2_instances[0].isDestroyed) {\n elements[parseInt(i.toString(), 10)].ej2_instances[0].destroy();\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroyForm = function () {\n this.destroyToolTip();\n var formObjects = [this.formObj, this.mFormObj, this.frFormObj, this.virtualFormObj];\n for (var i = 0; i < formObjects.length; i++) {\n if (formObjects[parseInt(i.toString(), 10)] && formObjects[parseInt(i.toString(), 10)].element\n && !formObjects[parseInt(i.toString(), 10)].isDestroyed) {\n formObjects[parseInt(i.toString(), 10)].destroy();\n }\n }\n this.destroyToolTip();\n };\n /**\n * To destroy the editing.\n *\n * @returns {void}\n * @hidden\n */\n Edit.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement) {\n return;\n }\n var hasGridChild = gridElement.querySelector('.' + gridHeader) &&\n gridElement.querySelector('.' + gridContent) ? true : false;\n if (hasGridChild) {\n this.destroyForm();\n }\n this.removeEventListener();\n var elem = this.dialogObj.element;\n if (elem.childElementCount > 0) {\n this.dialogObj.destroy();\n remove(elem);\n }\n elem = this.alertDObj.element;\n if (elem.childElementCount > 0) {\n this.alertDObj.destroy();\n remove(elem);\n }\n if (!hasGridChild) {\n return;\n }\n if (this.editModule) {\n this.editModule.destroy();\n }\n };\n Edit.prototype.keyPressHandler = function (e) {\n switch (e.action) {\n case 'insert':\n this.addRecord();\n break;\n case 'delete':\n if ((e.target.tagName !== 'INPUT' || e.target.classList.contains('e-checkselect'))\n && !document.querySelector('.e-popup-open.e-edit-dialog')) {\n this.deleteRecord();\n }\n break;\n case 'f2':\n this.startEdit();\n break;\n case 'enter':\n if (!parentsUntil(e.target, 'e-unboundcelldiv') && this.parent.editSettings.mode !== 'Batch' &&\n (parentsUntil(e.target, gridContent) || (this.parent.frozenRows\n && parentsUntil(e.target, headerContent)))\n && !document.getElementsByClassName('e-popup-open').length) {\n e.preventDefault();\n this.endEdit();\n }\n break;\n case 'escape':\n if (this.parent.isEdit && !this.editCellDialogClose) {\n if (this.parent.editSettings.mode === 'Batch') {\n this.editModule.escapeCellEdit();\n }\n else {\n this.curretRowFocus(e);\n }\n }\n if (this.editCellDialogClose) {\n this.editCellDialogClose = false;\n }\n break;\n case 'tab':\n case 'shiftTab':\n this.curretRowFocus(e);\n break;\n }\n };\n Edit.prototype.curretRowFocus = function (e) {\n if (this.parent.isEdit && this.parent.editSettings.mode !== 'Batch') {\n var editedRow$$1 = parentsUntil(e.target, 'e-editedrow') || parentsUntil(e.target, 'e-addedrow');\n if (editedRow$$1) {\n var selector = editedRow$$1.classList.contains('e-addedrow') ? 'e-addedrow' : 'e-editedrow';\n var focusableEditCells = [].slice.call(editedRow$$1.querySelectorAll('.e-input:not(.e-disabled)'));\n var commandColCell = [].slice.call(editedRow$$1.querySelectorAll('.e-unboundcell'));\n if (commandColCell) {\n for (var i = 0; i < commandColCell.length; i++) {\n focusableEditCells = focusableEditCells.concat([].slice\n .call(commandColCell[parseInt(i.toString(), 10)].querySelectorAll('.e-btn:not(.e-hide)')));\n }\n }\n if (this.parent.isFrozenGrid()) {\n if (!isNullOrUndefined(this.parent.frozenRows) && (!isNullOrUndefined(parentsUntil(e.target, 'e-frozenheader')) ||\n !isNullOrUndefined(parentsUntil(e.target, 'e-movableheader')))) {\n var movableHeditedRow = this.parent.getHeaderContent().querySelector('.e-movableheader ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(movableHeditedRow.querySelectorAll('.e-input:not(.e-disabled)')));\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n var rightHEditRow = this.parent.getHeaderContent().querySelector('.e-frozen-right-header ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(rightHEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n }\n }\n else {\n var movableEditRow = this.parent.getContent().querySelector('.e-movablecontent ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(movableEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n var rightFrEditRow = this.parent.getContent().querySelector('.e-frozen-right-content ' + '.' + selector);\n focusableEditCells.push.apply(focusableEditCells, [].slice.call(rightFrEditRow.querySelectorAll('.e-input:not(.e-disabled)')));\n }\n }\n }\n var rowCell$$1 = parentsUntil(e.target, 'e-rowcell');\n if ((rowCell$$1 === parentsUntil(focusableEditCells[focusableEditCells.length - 1], 'e-rowcell')\n && e.action === 'tab' && !rowCell$$1.classList.contains('e-unboundcell'))\n || (rowCell$$1 === parentsUntil(focusableEditCells[0], 'e-rowcell') && e.action === 'shiftTab')\n || e.action === 'escape') {\n var uid = editedRow$$1.getAttribute('data-uid');\n var rows = this.parent.getRows();\n if (this.parent.getFrozenMode() === 'Left-Right' || this.parent.getFrozenMode() === 'Right') {\n rows = this.parent.getFrozenRightRows();\n }\n if (this.parent.getFrozenColumns() || this.parent.getFrozenMode() === 'Left') {\n rows = this.parent.getMovableRows();\n }\n var rowIndex = rows.map(function (m) { return m.getAttribute('data-uid'); }).indexOf(uid);\n if (this.parent.frozenRows && parentsUntil(editedRow$$1, 'e-content')) {\n rowIndex = rowIndex - this.parent.frozenRows;\n }\n if (editedRow$$1.classList.contains('e-addedrow')) {\n rowIndex = 0;\n }\n if (e.action === 'escape') {\n this.closeEdit();\n }\n else {\n this.endEdit();\n }\n if (this.parent.focusModule.active) {\n this.parent.focusModule.active.matrix.current = [rowIndex, 0];\n }\n }\n }\n }\n };\n Edit.prototype.preventBatch = function (args) {\n this.preventObj = args;\n this.showDialog('BatchSaveLostChanges', this.dialogObj);\n };\n Edit.prototype.executeAction = function () {\n this.preventObj.handler.call(this.preventObj.instance, this.preventObj.arg1, this.preventObj.arg2, this.preventObj.arg3, this.preventObj.arg4, this.preventObj.arg5, this.preventObj.arg6, this.preventObj.arg7, this.preventObj.arg8);\n };\n /**\n * @param {Column[]} cols - specifies the column\n * @returns {void}\n * @hidden\n */\n Edit.prototype.applyFormValidation = function (cols, newRule) {\n var gObj = this.parent;\n var frzCols = gObj.isFrozenGrid();\n var isInline = this.parent.editSettings.mode === 'Normal';\n var idx = this.parent.getFrozenMode() === 'Right' && isInline ? 1 : 0;\n var form = this.parent.editSettings.mode !== 'Dialog' ?\n gObj.element.getElementsByClassName('e-gridform')[parseInt(idx.toString(), 10)] :\n select('#' + gObj.element.id + '_dialogEdit_wrapper .e-gridform', document);\n var index = this.parent.getFrozenMode() === 'Right' && isInline ? 0 : 1;\n var mForm = gObj.element.getElementsByClassName('e-gridform')[parseInt(index.toString(), 10)];\n var rules = {};\n var mRules = {};\n var frRules = {};\n cols = cols ? cols : gObj.getColumns();\n for (var i = 0; i < cols.length; i++) {\n if (!cols[parseInt(i.toString(), 10)].visible && (gObj.editSettings.mode !== 'Dialog' || (gObj.groupSettings.columns.indexOf(cols[parseInt(i.toString(), 10)].field) === -1\n && gObj.editSettings.mode === 'Dialog'))) {\n continue;\n }\n if (cols[parseInt(i.toString(), 10)].validationRules && isNullOrUndefined(newRule)) {\n setValidationRuels(cols[parseInt(i.toString(), 10)], index, rules, mRules, frRules, cols.length);\n }\n }\n if (frzCols && this.parent.editSettings.mode !== 'Dialog') {\n this.parent.editModule.mFormObj = this.createFormObj(mForm, mRules);\n if (this.parent.getFrozenMode() === leftRight) {\n var frForm = gObj.element.getElementsByClassName('e-gridform')[2];\n this.parent.editModule.frFormObj = this.createFormObj(frForm, frRules);\n }\n }\n else {\n rules = extend(rules, mRules, frRules);\n }\n this.parent.editModule.formObj = this.createFormObj(form, newRule ? newRule : rules);\n };\n /**\n * @param {HTMLFormElement} form - Defined Form element\n * @param {Object} rules - Defines form rules\n * @returns {FormValidator} Returns formvalidator instance\n * @hidden\n */\n Edit.prototype.createFormObj = function (form, rules) {\n var _this = this;\n return new FormValidator(form, {\n rules: rules,\n locale: this.parent.locale,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n customPlacement: function (inputElement, error) {\n var uid = inputElement.getAttribute('e-mappinguid');\n var args = {\n column: _this.parent.getColumnByUid(uid),\n error: error,\n inputElement: inputElement,\n value: inputElement.value\n };\n _this.valErrorPlacement(inputElement, error);\n _this.parent.notify(valCustomPlacement, args);\n }\n });\n };\n Edit.prototype.valErrorPlacement = function (inputElement, error) {\n if (this.parent.isEdit) {\n var id = error.getAttribute('for');\n var elem = this.getElemTable(inputElement).querySelector('#' + id + '_Error');\n if (!elem) {\n this.createTooltip(inputElement, error, id, '');\n }\n else {\n elem.querySelector('.e-tip-content').innerHTML = error.outerHTML;\n }\n }\n };\n Edit.prototype.getElemTable = function (inputElement) {\n var isFHdr;\n var gObj = this.parent;\n var table$$1;\n if (gObj.editSettings.mode !== 'Dialog') {\n isFHdr = (gObj.frozenRows && gObj.frozenRows\n > (parseInt(closest(inputElement, '.' + row).getAttribute(dataRowIndex), 10) || 0));\n var field = inputElement.name;\n var col = void 0;\n if (field) {\n col = getColumnModelByFieldName(this.parent, setComplexFieldID(field));\n }\n if (col && gObj.isFrozenGrid()) {\n if (col.getFreezeTableName() === 'frozen-left') {\n table$$1 = isFHdr ? gObj.getFrozenVirtualHeader().querySelector('table')\n : gObj.getFrozenVirtualContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'frozen-right') {\n table$$1 = isFHdr ? gObj.getFrozenRightHeader().querySelector('table')\n : gObj.getFrozenRightContent().querySelector('table');\n }\n else if (col.getFreezeTableName() === 'movable') {\n table$$1 = isFHdr ? gObj.getMovableVirtualHeader().querySelector('table')\n : gObj.getMovableVirtualContent().querySelector('table');\n }\n }\n else {\n table$$1 = isFHdr ? gObj.getHeaderTable() : gObj.getContentTable();\n }\n }\n else {\n table$$1 = select('#' + gObj.element.id + '_dialogEdit_wrapper', document);\n }\n return table$$1;\n };\n Edit.prototype.resetElemPosition = function (elem, args) {\n var td = parentsUntil(args.element, rowCell);\n if (td) {\n var tdRight = td.getBoundingClientRect().right;\n var elemRight = elem.getBoundingClientRect().right;\n if (elemRight > tdRight) {\n var offSet = elemRight - tdRight;\n elem.style.left = (elem.offsetLeft - offSet) + 'px';\n }\n }\n };\n Edit.prototype.validationComplete = function (args) {\n if (this.parent.isEdit) {\n var elem = this.getElemTable(args.element).querySelector('#' + args.inputName + '_Error');\n if (elem) {\n if (args.status === 'failure') {\n elem.style.display = '';\n this.resetElemPosition(elem, args);\n }\n else {\n elem.style.display = 'none';\n }\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n Edit.prototype.resetMovableContentValidation = function () {\n if (this.isValidationApplied && this.parent.getMovableVirtualContent() &&\n !(this.parent.enableVirtualization || this.parent.enableInfiniteScrolling)) {\n var elem = this.parent.getContent().querySelector('.' + movableContent);\n elem.style.overflowX = 'auto';\n elem.style.overflowY = 'hidden';\n this.isValidationApplied = false;\n }\n };\n Edit.prototype.createTooltip = function (element, error, name, display) {\n var column = this.parent.getColumnByField(name);\n var formObj = this.parent.getFrozenMode() === leftRight && this.parent.editSettings.mode === 'Normal'\n && column.getFreezeTableName() === frozenRight ? this.frFormObj.element : this.formObj.element;\n var customForm = parentsUntil(element, 'e-virtual-validation');\n if (customForm) {\n formObj = this.virtualFormObj.element;\n }\n var gcontent = this.parent.getContent().firstElementChild;\n var frzCols = this.parent.getFrozenColumns() || this.parent.getFrozenLeftColumnsCount()\n || this.parent.getFrozenRightColumnsCount();\n if (frzCols) {\n gcontent = this.parent.getMovableVirtualContent();\n }\n var isScroll = gcontent.scrollHeight > gcontent.clientHeight || gcontent.scrollWidth > gcontent.clientWidth;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n var td = closest(element, '.' + rowCell);\n var row$$1 = closest(element, '.' + row);\n var fCont = this.parent.getContent().querySelector('.' + frozenContent);\n var isFHdr;\n var isFHdrLastRow = false;\n var validationForBottomRowPos;\n var isBatchModeLastRow = false;\n var isSpace = this.parent.editSettings.newRowPosition === 'Bottom' &&\n this.parent.getContent().firstElementChild.offsetHeight > this.parent.getContentTable().scrollHeight;\n var viewPortRowCount = Math.round(this.parent.getContent().clientHeight / this.parent.getRowHeight()) - 1;\n var rows = !fCont ? [].slice.call(this.parent.getContent().getElementsByClassName(row))\n : [].slice.call(this.parent.getFrozenVirtualContent().getElementsByClassName(row));\n if (this.parent.editSettings.mode === 'Batch') {\n if (viewPortRowCount > 1 && rows.length >= viewPortRowCount && !isSpace\n && rows[rows.length - 1].getAttribute(dataRowIndex) === row$$1.getAttribute(dataRowIndex)) {\n isBatchModeLastRow = true;\n }\n }\n if (isInline) {\n if (this.parent.frozenRows) {\n var fHeraderRows = frzCols ? this.parent.getFrozenVirtualHeader().querySelector(tbody).children\n : this.parent.getHeaderTable().querySelector(tbody).children;\n isFHdr = fHeraderRows.length > (parseInt(row$$1.getAttribute(dataRowIndex), 10) || 0);\n isFHdrLastRow = isFHdr && parseInt(row$$1.getAttribute(dataRowIndex), 10) === fHeraderRows.length - 1;\n }\n if (isFHdrLastRow || (viewPortRowCount > 1 && rows.length >= viewPortRowCount\n && ((this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) || (td.classList.contains('e-lastrowcell')\n && !row$$1.classList.contains(addedRow)))) || isBatchModeLastRow) {\n validationForBottomRowPos = true;\n }\n }\n var table$$1 = isInline ?\n (isFHdr ? this.parent.getHeaderTable() : this.parent.getContentTable()) :\n select('#' + this.parent.element.id + '_dialogEdit_wrapper .e-dlg-content', document);\n var client = table$$1.getBoundingClientRect();\n var left = isInline ?\n this.parent.element.getBoundingClientRect().left : client.left;\n var input = closest(element, 'td');\n var inputClient = input ? input.getBoundingClientRect() : element.parentElement.getBoundingClientRect();\n var div = this.parent.createElement('div', {\n className: 'e-tooltip-wrap e-lib e-control e-popup e-griderror',\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n ((isFHdr ? inputClient.top + inputClient.height : inputClient.bottom - client.top\n - (frzCols ? fCont.scrollTop : 0)) + table$$1.scrollTop + 9) + 'px;left:' +\n (inputClient.left - left + table$$1.scrollLeft + inputClient.width / 2) + 'px;' +\n 'max-width:' + inputClient.width + 'px;text-align:center;'\n });\n if (this.parent.cssClass) {\n div.classList.add(this.parent.cssClass);\n }\n if (isInline && client.left < left) {\n div.style.left = parseInt(div.style.left, 10) - client.left + left + 'px';\n }\n var content$$1 = this.parent.createElement('div', { className: 'e-tip-content' });\n content$$1.appendChild(error);\n var arrow;\n if (validationForBottomRowPos) {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-bottom' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-bottom' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-bottom' }));\n }\n else {\n arrow = this.parent.createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(this.parent.createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n }\n div.appendChild(content$$1);\n div.appendChild(arrow);\n if (!customForm && (frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n var getEditCell = this.parent.editSettings.mode === 'Normal' ?\n closest(element, '.e-editcell') : closest(element, '.' + table);\n getEditCell.style.position = 'relative';\n div.style.position = 'absolute';\n if (this.parent.editSettings.mode === 'Batch' ||\n (closest(element, '.' + frozenContent) || closest(element, '.' + frozenHeader))\n || (this.parent.frozenRows && !frzCols)) {\n formObj.appendChild(div);\n }\n else {\n this.mFormObj.element.appendChild(div);\n }\n }\n else {\n if (customForm) {\n this.virtualFormObj.element.appendChild(div);\n }\n else {\n this.formObj.element.appendChild(div);\n }\n }\n if (!validationForBottomRowPos && isInline && gcontent.getBoundingClientRect().bottom < inputClient.bottom + inputClient.height) {\n var contentDiv = this.parent.getContent().querySelector('.e-content');\n if (frzCols && this.parent.currentViewData.length === 0 && contentDiv.scrollTop === 0) {\n contentDiv.scrollTop = div.offsetHeight + arrow.scrollHeight;\n }\n else {\n gcontent.scrollTop = gcontent.scrollTop + div.offsetHeight + arrow.scrollHeight;\n }\n }\n var lineHeight = parseInt(document.defaultView.getComputedStyle(div, null).getPropertyValue('font-size'), 10);\n if (div.getBoundingClientRect().width < inputClient.width &&\n div.querySelector('label').getBoundingClientRect().height / (lineHeight * 1.2) >= 2) {\n div.style.width = div.style.maxWidth;\n }\n if ((frzCols || this.parent.frozenRows) && this.parent.editSettings.mode !== 'Dialog') {\n div.style.left = input.offsetLeft + (input.offsetWidth / 2 - div.offsetWidth / 2) + 'px';\n }\n else {\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n }\n if (isInline && !isScroll && !this.parent.allowPaging || frzCols || this.parent.frozenRows) {\n gcontent.style.position = 'static';\n var pos = calculateRelativeBasedPosition(input, div);\n div.style.top = pos.top + inputClient.height + 9 + 'px';\n }\n if (closest(element, '.' + movableContent) && !this.parent.enableVirtualization && !this.parent.enableInfiniteScrolling) {\n var elem = this.parent.getContent().querySelector('.' + movableContent);\n elem.style.overflowX = 'visible';\n elem.style.overflowY = 'visible';\n this.isValidationApplied = true;\n }\n if (validationForBottomRowPos) {\n if (isScroll && !frzCols && this.parent.height !== 'auto' && !this.parent.frozenRows\n && !this.parent.enableVirtualization) {\n var scrollWidth = gcontent.scrollWidth > gcontent.offsetWidth ? getScrollBarWidth() : 0;\n var gHeight = this.parent.height.toString().indexOf('%') === -1 ?\n parseInt(this.parent.height, 10) : gcontent.offsetHeight;\n div.style.bottom = (gHeight - gcontent.querySelector('table').offsetHeight\n - scrollWidth) + inputClient.height + 9 + 'px';\n }\n else {\n div.style.bottom = inputClient.height + 9 + 'px';\n }\n if (rows.length < viewPortRowCount && this.parent.editSettings.newRowPosition === 'Bottom' && (this.editModule.args\n && this.editModule.args.requestType === 'add')) {\n var rowsCount = this.parent.frozenRows ? this.parent.frozenRows + (rows.length - 1) : rows.length - 1;\n var rowsHeight = rowsCount * this.parent.getRowHeight();\n var position = this.parent.getContent().clientHeight - rowsHeight;\n div.style.bottom = position + 9 + 'px';\n }\n div.style.top = null;\n }\n };\n /**\n * @param {Column} col - specfies the column\n * @returns {boolean} returns the whether column is grouped\n * @hidden\n */\n Edit.prototype.checkColumnIsGrouped = function (col) {\n return !col.visible && !(this.parent.groupSettings.columns.indexOf(col.field) > -1);\n };\n /**\n * @param {object} editors -specfies the editors\n * @returns {void}\n * @hidden\n */\n Edit.AddEditors = function (editors) {\n Edit.editCellType = extend(Edit.editCellType, editors);\n };\n Edit.editCellType = {\n 'dropdownedit': DropDownEditCell, 'numericedit': NumericEditCell,\n 'datepickeredit': DatePickerEditCell, 'datetimepickeredit': DatePickerEditCell,\n 'booleanedit': BooleanEditCell, 'defaultedit': DefaultEditCell,\n 'templateedit': TemplateEditCell\n };\n return Edit;\n}());\n\n/**\n * The `ColumnChooser` module is used to show or hide columns dynamically.\n */\nvar ColumnChooser = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid ColumnChooser module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the serviceLocator\n * @hidden\n */\n function ColumnChooser(parent, serviceLocator) {\n this.showColumn = [];\n this.hideColumn = [];\n this.changedColumns = [];\n this.unchangedColumns = [];\n this.isDlgOpen = false;\n this.initialOpenDlg = true;\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.isInitialOpen = false;\n this.isCustomizeOpenCC = false;\n this.searchOperator = 'startswith';\n this.prevShowedCols = [];\n this.hideDialogFunction = this.hideDialog.bind(this);\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n this.cBoxTrue = createCheckBox(this.parent.createElement, false, { checked: true, label: ' ' });\n this.cBoxFalse = createCheckBox(this.parent.createElement, false, { checked: false, label: ' ' });\n this.cBoxTrue.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { type: 'checkbox', 'aria-checked': 'true' }\n }), this.cBoxTrue.firstChild);\n this.cBoxFalse.insertBefore(this.parent.createElement('input', {\n className: 'e-chk-hidden e-cc e-cc-chbox', attrs: { 'type': 'checkbox', 'aria-checked': 'false' }\n }), this.cBoxFalse.firstChild);\n this.cBoxFalse.querySelector('.e-frame').classList.add('e-uncheck');\n if (this.parent.enableRtl) {\n addClass([this.cBoxTrue, this.cBoxFalse], ['e-rtl']);\n }\n if (this.parent.cssClass) {\n addClass([this.cBoxTrue, this.cBoxFalse], [this.parent.cssClass]);\n }\n }\n ColumnChooser.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.removeEventListener();\n this.unWireEvents();\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.element && !this.dlgObj.isDestroyed) {\n this.dlgObj.destroy();\n }\n };\n ColumnChooser.prototype.rtlUpdate = function () {\n if (this.parent.enableRtl) {\n addClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n else {\n removeClass([].slice.call(this.innerDiv.getElementsByClassName('e-checkbox-wrapper')), ['e-rtl']);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.add(document, 'click', this.clickHandler, this);\n this.parent.on(uiUpdate, this.enableAfterRenderEle, this);\n this.parent.on(initialEnd, this.render, this);\n this.parent.addEventListener(dataBound, this.hideDialogFunction);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(rtlUpdated, this.rtlUpdate, this);\n this.parent.on(resetColumns, this.onResetColumns, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n EventHandler.remove(document, 'click', this.clickHandler);\n this.parent.off(initialEnd, this.render);\n this.parent.off(destroy, this.destroy);\n this.parent.off(uiUpdate, this.enableAfterRenderEle);\n this.parent.off(rtlUpdated, this.rtlUpdate);\n this.parent.off(resetColumns, this.onResetColumns);\n this.parent.removeEventListener(dataBound, this.hideDialogFunction);\n };\n ColumnChooser.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.renderDlgContent();\n this.getShowHideService = this.serviceLocator.getService('showHideService');\n };\n ColumnChooser.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n if (!this.isCustomizeOpenCC) {\n if (!isNullOrUndefined(closest(targetElement, '.e-cc')) || !isNullOrUndefined(closest(targetElement, '.e-cc-toolbar'))) {\n if (targetElement.classList.contains('e-columnchooser-btn') || targetElement.classList.contains('e-cc-toolbar')) {\n if ((this.initialOpenDlg && this.dlgObj.visible) || !this.isDlgOpen) {\n this.isDlgOpen = true;\n return;\n }\n }\n else if (targetElement.classList.contains('e-cc-cancel')) {\n targetElement.parentElement.querySelector('.e-ccsearch').value = '';\n this.columnChooserSearch('');\n this.removeCancelIcon();\n this.refreshCheckboxButton();\n }\n }\n else {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible && !targetElement.classList.contains('e-toolbar-items')) {\n this.dlgObj.hide();\n this.clearActions();\n this.refreshCheckboxState();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n }\n if (this.parent.detailTemplate || this.parent.childGrid) {\n this.targetdlg = e.target;\n }\n }\n if (this.isCustomizeOpenCC && e.target.classList.contains('e-cc-cancel')) {\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n ColumnChooser.prototype.hideDialog = function () {\n if (!isNullOrUndefined(this.dlgObj) && this.dlgObj.visible) {\n this.dlgObj.hide();\n // this.unWireEvents();\n this.isDlgOpen = false;\n }\n };\n /**\n * To render columnChooser when showColumnChooser enabled.\n *\n * @param {number} x - specifies the position x\n * @param {number} y - specifies the position y\n * @param {Element} target - specifies the target\n * @returns {void}\n * @hidden\n */\n ColumnChooser.prototype.renderColumnChooser = function (x, y, target) {\n if (!this.dlgObj.visible && (this.parent.detailTemplate || this.parent.childGrid)) {\n this.hideOpenedDialog();\n }\n if (!this.dlgObj.visible) {\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (target) {\n this.targetdlg = target;\n }\n this.refreshCheckboxState();\n this.dlgObj.dataBind();\n this.dlgObj.element.style.maxHeight = '430px';\n var elementVisible = this.dlgObj.element.style.display;\n this.dlgObj.element.style.display = 'block';\n var isSticky = this.parent.getHeaderContent().classList.contains('e-sticky');\n var toolbarItem = closest(target, '.e-toolbar-item');\n var newpos = void 0;\n if (isSticky) {\n newpos = toolbarItem.getBoundingClientRect();\n this.dlgObj.element.classList.add('e-sticky');\n }\n else {\n this.dlgObj.element.classList.remove('e-sticky');\n newpos = calculateRelativeBasedPosition(toolbarItem, this.dlgObj.element);\n }\n this.dlgObj.element.style.display = elementVisible;\n this.dlgObj.element.style.top = newpos.top + closest(target, '.e-cc-toolbar').getBoundingClientRect().height + 'px';\n var dlgWidth = 250;\n if (!isNullOrUndefined(closest(target, '.e-bigger'))) {\n this.dlgObj.width = 258;\n }\n if (Browser.isDevice) {\n this.dlgObj.target = document.body;\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n this.dlgObj.open = this.mOpenDlg.bind(this);\n }\n else {\n if (this.parent.enableRtl) {\n this.dlgObj.element.style.left = target.offsetLeft + 'px';\n }\n else {\n this.dlgObj.element.style.left = ((newpos.left - dlgWidth) + closest(target, '.e-cc-toolbar').clientWidth) + 2 + 'px';\n }\n }\n this.removeCancelIcon();\n this.dlgObj.show();\n this.parent.notify(columnChooserOpened, { dialog: this.dlgObj });\n }\n else {\n // this.unWireEvents();\n this.hideDialog();\n this.addcancelIcon();\n this.clearActions();\n this.refreshCheckboxState();\n }\n this.rtlUpdate();\n };\n /**\n * Column chooser can be displayed on screen by given position(X and Y axis).\n *\n * @param {number} X - Defines the X axis.\n * @param {number} Y - Defines the Y axis.\n * @return {void}\n */\n ColumnChooser.prototype.openColumnChooser = function (X, Y) {\n this.isCustomizeOpenCC = true;\n if (this.dlgObj.visible) {\n this.hideDialog();\n return;\n }\n var args = this.beforeOpenColumnChooserEvent();\n if (args.cancel) {\n return;\n }\n if (!this.isInitialOpen) {\n this.dlgObj.content = this.renderChooserList();\n this.updateIntermediateBtn();\n }\n else {\n this.refreshCheckboxState();\n }\n this.dlgObj.dataBind();\n this.dlgObj.position = { X: 'center', Y: 'center' };\n if (isNullOrUndefined(X)) {\n this.dlgObj.position = { X: 'center', Y: 'center' };\n this.dlgObj.refreshPosition();\n }\n else {\n this.dlgObj.element.style.top = '';\n this.dlgObj.element.style.left = '';\n this.dlgObj.element.style.top = Y + 'px';\n this.dlgObj.element.style.left = X + 'px';\n }\n this.dlgObj.beforeOpen = this.customDialogOpen.bind(this);\n this.dlgObj.show();\n this.isInitialOpen = true;\n this.dlgObj.beforeClose = this.customDialogClose.bind(this);\n };\n ColumnChooser.prototype.enableAfterRenderEle = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n this.render();\n }\n };\n ColumnChooser.prototype.keyUpHandler = function (e) {\n if (e.key === 'Escape') {\n this.hideDialog();\n }\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n };\n ColumnChooser.prototype.setFocus = function (elem) {\n var prevElem = this.dlgDiv.querySelector('.e-colfocus');\n if (prevElem) {\n prevElem.classList.remove('e-colfocus');\n }\n if (elem) {\n elem.classList.add('e-colfocus');\n }\n };\n ColumnChooser.prototype.customDialogOpen = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.add(searchElement, 'keyup', this.columnChooserManualSearch, this);\n };\n ColumnChooser.prototype.customDialogClose = function () {\n var searchElement = this.dlgObj.content.querySelector('input.e-ccsearch');\n EventHandler.remove(searchElement, 'keyup', this.columnChooserManualSearch);\n };\n ColumnChooser.prototype.getColumns = function () {\n var columns = this.parent.getColumns().filter(function (column) { return (column.type !== 'checkbox'\n && column.showInColumnChooser === true) || (column.type === 'checkbox' && column.field !== undefined); });\n return columns;\n };\n ColumnChooser.prototype.renderDlgContent = function () {\n this.dlgDiv = this.parent.createElement('div', { className: 'e-ccdlg e-cc', id: this.parent.element.id + '_ccdlg' });\n this.dlgDiv.setAttribute('aria-label', this.l10n.getConstant('ColumnChooserDialogARIA'));\n this.parent.element.appendChild(this.dlgDiv);\n this.dlgObj = new Dialog({\n header: this.l10n.getConstant('ChooseColumns'),\n showCloseIcon: false,\n closeOnEscape: false,\n locale: this.parent.locale,\n visible: false,\n enableRtl: this.parent.enableRtl,\n target: document.getElementById(this.parent.element.id),\n buttons: [{\n click: this.confirmDlgBtnClick.bind(this),\n buttonModel: {\n content: this.l10n.getConstant('OKButton'), isPrimary: true,\n cssClass: this.parent.cssClass ? 'e-cc e-cc_okbtn' + ' ' + this.parent.cssClass : 'e-cc e-cc_okbtn'\n }\n },\n {\n click: this.clearBtnClick.bind(this),\n buttonModel: { cssClass: this.parent.cssClass ?\n 'e-flat e-cc e-cc-cnbtn' + ' ' + this.parent.cssClass : 'e-flat e-cc e-cc-cnbtn',\n content: this.l10n.getConstant('CancelButton') }\n }],\n content: this.renderChooserList(),\n width: 250,\n cssClass: this.parent.cssClass ? 'e-cc' + ' ' + this.parent.cssClass : 'e-cc',\n animationSettings: { effect: 'None' }\n });\n var isStringTemplate = 'isStringTemplate';\n this.dlgObj[\"\" + isStringTemplate] = true;\n this.dlgObj.appendTo(this.dlgDiv);\n this.wireEvents();\n };\n ColumnChooser.prototype.renderChooserList = function () {\n this.mainDiv = this.parent.createElement('div', { className: 'e-main-div e-cc' });\n var searchDiv = this.parent.createElement('div', { className: 'e-cc-searchdiv e-cc e-input-group' });\n var ccsearchele = this.parent.createElement('input', {\n className: 'e-ccsearch e-cc e-input',\n attrs: { placeholder: this.l10n.getConstant('Search'), cssClass: this.parent.cssClass }\n });\n var ccsearchicon = this.parent.createElement('span', {\n className: 'e-ccsearch-icon e-icons e-cc e-input-group-icon',\n attrs: { title: this.l10n.getConstant('Search') }\n });\n var conDiv = this.parent.createElement('div', { className: 'e-cc-contentdiv' });\n this.innerDiv = this.parent.createElement('div', { className: 'e-innerdiv e-cc' });\n searchDiv.appendChild(ccsearchele);\n searchDiv.appendChild(ccsearchicon);\n this.searchBoxObj = new SearchBox(ccsearchele);\n var innerDivContent = this.refreshCheckboxList(this.parent.getColumns());\n this.innerDiv.appendChild(innerDivContent);\n conDiv.appendChild(this.innerDiv);\n this.mainDiv.appendChild(searchDiv);\n this.mainDiv.appendChild(conDiv);\n return this.mainDiv;\n };\n ColumnChooser.prototype.confirmDlgBtnClick = function (args) {\n this.stateChangeColumns = [];\n this.changedStateColumns = [];\n this.changedColumns = (this.changedColumns.length > 0) ? this.changedColumns : this.unchangedColumns;\n this.changedColumnState(this.changedColumns);\n var uncheckedLength = this.ulElement.querySelector('.e-uncheck') &&\n this.ulElement.querySelectorAll('.e-uncheck:not(.e-selectall)').length;\n if (!isNullOrUndefined(args)) {\n if (uncheckedLength < this.parent.getColumns().length) {\n if (this.hideColumn.length) {\n this.columnStateChange(this.hideColumn, false);\n }\n if (this.showColumn.length) {\n this.columnStateChange(this.showColumn, true);\n }\n this.getShowHideService.setVisible(this.stateChangeColumns, this.changedStateColumns);\n this.clearActions();\n this.parent.notify(tooltipDestroy, { module: 'edit' });\n if (this.parent.getCurrentViewRecords().length === 0) {\n var emptyRowCell = this.parent.element.querySelector('.e-emptyrow').querySelector('td');\n emptyRowCell.setAttribute('colSpan', this.parent.getVisibleColumns().length.toString());\n }\n }\n }\n };\n ColumnChooser.prototype.onResetColumns = function (e) {\n if (e.requestType === 'columnstate') {\n this.resetColumnState();\n return;\n }\n };\n ColumnChooser.prototype.resetColumnState = function () {\n this.showColumn = [];\n this.hideColumn = [];\n this.hideDialog();\n };\n ColumnChooser.prototype.changedColumnState = function (changedColumns) {\n for (var index = 0; index < changedColumns.length; index++) {\n var colUid = changedColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n this.changedStateColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.columnStateChange = function (stateColumns, state) {\n for (var index = 0; index < stateColumns.length; index++) {\n var colUid = stateColumns[parseInt(index.toString(), 10)];\n var currentCol = this.parent.getColumnByUid(colUid);\n if (currentCol.type !== 'checkbox') {\n currentCol.visible = state;\n }\n this.stateChangeColumns.push(currentCol);\n }\n };\n ColumnChooser.prototype.clearActions = function () {\n this.resetColumnState();\n this.addcancelIcon();\n };\n ColumnChooser.prototype.clearBtnClick = function () {\n this.clearActions();\n this.parent.notify(columnChooserCancelBtnClick, { dialog: this.dlgObj });\n };\n ColumnChooser.prototype.checkstatecolumn = function (isChecked, coluid, selectAll$$1) {\n if (selectAll$$1 === void 0) { selectAll$$1 = false; }\n var currentCol = this.parent.getColumnByUid(coluid);\n if (isChecked) {\n if (this.hideColumn.indexOf(coluid) !== -1) {\n this.hideColumn.splice(this.hideColumn.indexOf(coluid), 1);\n }\n if (this.showColumn.indexOf(coluid) === -1 && !(currentCol && currentCol.visible)) {\n this.showColumn.push(coluid);\n }\n }\n else {\n if (this.showColumn.indexOf(coluid) !== -1) {\n this.showColumn.splice(this.showColumn.indexOf(coluid), 1);\n }\n if (this.hideColumn.indexOf(coluid) === -1 && (currentCol && currentCol.visible)) {\n this.hideColumn.push(coluid);\n }\n }\n if (selectAll$$1) {\n if (!isChecked) {\n this.changedColumns.push(coluid);\n }\n else {\n this.unchangedColumns.push(coluid);\n }\n }\n else if (this.changedColumns.indexOf(coluid) !== -1) {\n this.changedColumns.splice(this.changedColumns.indexOf(coluid), 1);\n }\n else {\n this.changedColumns.push(coluid);\n }\n };\n ColumnChooser.prototype.columnChooserSearch = function (searchVal) {\n var clearSearch = false;\n var fltrCol;\n var okButton;\n var buttonEle = this.dlgDiv.querySelector('.e-footer-content');\n var selectedCbox = this.ulElement.querySelector('.e-check') &&\n this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n this.isInitialOpen = true;\n if (buttonEle) {\n okButton = buttonEle.querySelector('.e-btn').ej2_instances[0];\n }\n if (searchVal === '') {\n this.removeCancelIcon();\n fltrCol = this.getColumns();\n clearSearch = true;\n }\n else {\n fltrCol = new DataManager(this.getColumns()).executeLocal(new Query()\n .where('headerText', this.searchOperator, searchVal, true, this.parent.columnChooserSettings.ignoreAccent));\n }\n if (fltrCol.length) {\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.classList.remove('e-ccnmdiv');\n this.innerDiv.appendChild(this.refreshCheckboxList(fltrCol));\n if (!clearSearch) {\n this.addcancelIcon();\n this.refreshCheckboxButton();\n }\n else {\n if (okButton && selectedCbox) {\n okButton.disabled = false;\n }\n }\n }\n else {\n var nMatchele = this.parent.createElement('span', { className: 'e-cc e-nmatch' });\n nMatchele.innerHTML = this.l10n.getConstant('Matchs');\n this.innerDiv.innerHTML = ' ';\n this.innerDiv.appendChild(nMatchele);\n this.innerDiv.classList.add('e-ccnmdiv');\n if (okButton) {\n okButton.disabled = true;\n }\n }\n this.flag = true;\n this.stopTimer();\n };\n ColumnChooser.prototype.wireEvents = function () {\n EventHandler.add(this.dlgObj.element, 'click', this.checkBoxClickHandler, this);\n EventHandler.add(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch, this);\n EventHandler.add(this.dlgObj.element, 'keyup', this.keyUpHandler, this);\n this.searchBoxObj.wireEvent();\n };\n ColumnChooser.prototype.unWireEvents = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n if (this.dlgObj.element) {\n EventHandler.remove(this.dlgObj.element, 'click', this.checkBoxClickHandler);\n EventHandler.remove(this.dlgObj.element, 'keyup', this.keyUpHandler);\n }\n EventHandler.remove(this.searchBoxObj.searchBox, 'keyup', this.columnChooserManualSearch);\n this.searchBoxObj.unWireEvent();\n };\n ColumnChooser.prototype.checkBoxClickHandler = function (e) {\n var checkstate;\n var elem = parentsUntil(e.target, 'e-checkbox-wrapper');\n if (elem) {\n var selectAll$$1 = elem.querySelector('.e-selectall');\n if (selectAll$$1) {\n this.updateSelectAll(!elem.querySelector('.e-check'));\n }\n else {\n toogleCheckbox(elem.parentElement);\n }\n elem.querySelector('.e-chk-hidden').focus();\n if (elem.querySelector('.e-check')) {\n checkstate = true;\n elem.firstChild.setAttribute('aria-checked', 'true');\n }\n else if (elem.querySelector('.e-uncheck')) {\n checkstate = false;\n elem.firstChild.setAttribute('aria-checked', 'false');\n }\n else {\n return;\n }\n this.updateIntermediateBtn();\n var columnUid = parentsUntil(elem, 'e-ccheck').getAttribute('uid');\n var column = this.parent.getColumns();\n if (columnUid === 'grid-selectAll') {\n this.changedColumns = [];\n this.unchangedColumns = [];\n for (var i = 0; i < column.length; i++) {\n if (column[parseInt(i.toString(), 10)].showInColumnChooser) {\n this.checkstatecolumn(checkstate, column[parseInt(i.toString(), 10)].uid, true);\n }\n }\n }\n else {\n this.checkstatecolumn(checkstate, columnUid);\n }\n this.refreshCheckboxButton();\n this.setFocus(parentsUntil(e.target, 'e-cclist'));\n }\n };\n ColumnChooser.prototype.updateIntermediateBtn = function () {\n var cnt = this.ulElement.children.length - 1;\n var className = [];\n var elem = this.ulElement.children[0].querySelector('.e-frame');\n var selected = this.ulElement.querySelectorAll('.e-check:not(.e-selectall)').length;\n var btn = this.dlgObj.btnObj[0];\n var inputElem = elem.parentElement.querySelector('input');\n btn.disabled = false;\n if (cnt === selected) {\n className = ['e-check'];\n inputElem.setAttribute('aria-checked', 'true');\n }\n else if (selected) {\n className = ['e-stop'];\n inputElem.setAttribute('aria-checked', 'mixed');\n }\n else {\n className = ['e-uncheck'];\n inputElem.setAttribute('aria-checked', 'false');\n btn.disabled = true;\n }\n btn.dataBind();\n removeClass([elem], ['e-check', 'e-stop', 'e-uncheck']);\n addClass([elem], className);\n };\n ColumnChooser.prototype.updateSelectAll = function (checked) {\n var cBoxes = [].slice.call(this.ulElement.getElementsByClassName('e-frame'));\n for (var _i = 0, cBoxes_1 = cBoxes; _i < cBoxes_1.length; _i++) {\n var cBox = cBoxes_1[_i];\n removeAddCboxClasses(cBox, checked);\n var cBoxInput = cBox.parentElement.querySelector('input');\n if (cBox.classList.contains('e-check')) {\n cBoxInput.setAttribute('aria-checked', 'true');\n }\n else if (cBox.classList.contains('e-uncheck')) {\n cBoxInput.setAttribute('aria-checked', 'false');\n }\n }\n };\n ColumnChooser.prototype.refreshCheckboxButton = function () {\n var visibleCols = this.parent.getVisibleColumns();\n for (var i = 0; i < visibleCols.length; i++) {\n var columnUID = visibleCols[parseInt(i.toString(), 10)].uid;\n if (this.prevShowedCols.indexOf(columnUID) === -1) {\n this.prevShowedCols.push(columnUID);\n }\n }\n for (var i = 0; i < this.hideColumn.length; i++) {\n var index = this.prevShowedCols.indexOf(this.hideColumn[parseInt(i.toString(), 10)]);\n if (index !== -1) {\n this.prevShowedCols.splice(index, 1);\n }\n }\n var selected = this.showColumn.length !== 0 ? 1 : this.prevShowedCols.length;\n var btn = this.dlgDiv.querySelector('.e-footer-content').querySelector('.e-btn').ej2_instances[0];\n btn.disabled = false;\n var srchShowCols = [];\n var searchData = [].slice.call(this.parent.element.getElementsByClassName('e-cc-chbox'));\n for (var i = 0, itemsLen = searchData.length; i < itemsLen; i++) {\n var element = searchData[parseInt(i.toString(), 10)];\n var columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n srchShowCols.push(columnUID);\n }\n var hideCols = this.showColumn.filter(function (column) { return srchShowCols.indexOf(column) !== -1; });\n if (selected === 0 && hideCols.length === 0) {\n btn.disabled = true;\n }\n btn.dataBind();\n };\n ColumnChooser.prototype.refreshCheckboxList = function (gdCol) {\n this.ulElement = this.parent.createElement('ul', { className: 'e-ccul-ele e-cc' });\n var selectAllValue = this.l10n.getConstant('SelectAll');\n var cclist = this.parent.createElement('li', { className: 'e-cclist e-cc e-cc-selectall' });\n var selectAll$$1 = this.createCheckBox(selectAllValue, false, 'grid-selectAll');\n if (gdCol.length) {\n selectAll$$1.querySelector('.e-checkbox-wrapper').firstElementChild.classList.add('e-selectall');\n selectAll$$1.querySelector('.e-frame').classList.add('e-selectall');\n this.checkState(selectAll$$1.querySelector('.e-icons'), true);\n cclist.appendChild(selectAll$$1);\n this.ulElement.appendChild(cclist);\n }\n if (this.parent.cssClass) {\n addClass([selectAll$$1], [this.parent.cssClass]);\n }\n for (var i = 0; i < gdCol.length; i++) {\n var columns = gdCol[parseInt(i.toString(), 10)];\n this.renderCheckbox(columns);\n }\n return this.ulElement;\n };\n ColumnChooser.prototype.refreshCheckboxState = function () {\n this.dlgObj.element.querySelector('.e-cc.e-input').value = '';\n this.columnChooserSearch('');\n var gridObject = this.parent;\n var currentCheckBoxColls = this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)');\n for (var i = 0, itemLen = currentCheckBoxColls.length; i < itemLen; i++) {\n var element = currentCheckBoxColls[parseInt(i.toString(), 10)];\n var columnUID = void 0;\n if (this.parent.childGrid || this.parent.detailTemplate) {\n columnUID = parentsUntil(this.dlgObj.element.querySelectorAll('.e-cc-chbox:not(.e-selectall)')[parseInt(i.toString(), 10)], 'e-ccheck').getAttribute('uid');\n }\n else {\n columnUID = parentsUntil(element, 'e-ccheck').getAttribute('uid');\n }\n var column = gridObject.getColumnByUid(columnUID);\n var uncheck = [].slice.call(element.parentElement.getElementsByClassName('e-uncheck'));\n if (column.visible && !uncheck.length) {\n element.checked = true;\n this.checkState(element.parentElement.querySelector('.e-icons'), true);\n }\n else {\n element.checked = false;\n this.checkState(element.parentElement.querySelector('.e-icons'), false);\n }\n }\n };\n ColumnChooser.prototype.checkState = function (element, state) {\n if (state) {\n classList(element, ['e-check'], ['e-uncheck']);\n }\n else {\n classList(element, ['e-uncheck'], ['e-check']);\n }\n };\n ColumnChooser.prototype.createCheckBox = function (label, checked, uid) {\n var cbox = checked ? this.cBoxTrue.cloneNode(true) : this.cBoxFalse.cloneNode(true);\n cbox.querySelector('.e-label').innerHTML = label;\n return createCboxWithWrap(uid, cbox, 'e-ccheck');\n };\n ColumnChooser.prototype.renderCheckbox = function (column) {\n var cclist;\n var hideColState;\n var showColState;\n if (column.showInColumnChooser) {\n cclist = this.parent.createElement('li', { className: 'e-cclist e-cc', styles: 'list-style:None', id: 'e-ccli_' + column.uid });\n hideColState = this.hideColumn.indexOf(column.uid) === -1 ? false : true;\n showColState = this.showColumn.indexOf(column.uid) === -1 ? false : true;\n var cccheckboxlist = this.createCheckBox(column.headerText, (column.visible && !hideColState) || showColState, column.uid);\n cclist.appendChild(cccheckboxlist);\n if (this.parent.cssClass) {\n addClass([cccheckboxlist], [this.parent.cssClass]);\n }\n this.ulElement.appendChild(cclist);\n }\n if (this.isInitialOpen) {\n this.updateIntermediateBtn();\n }\n };\n ColumnChooser.prototype.columnChooserManualSearch = function (e) {\n this.addcancelIcon();\n this.searchValue = e.target.value;\n this.stopTimer();\n this.startTimer(e);\n };\n ColumnChooser.prototype.startTimer = function (e) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var interval = !proxy.flag && e.keyCode !== 13 ? 500 : 0;\n this.timer = window.setInterval(function () { proxy.columnChooserSearch(proxy.searchValue); }, interval);\n };\n ColumnChooser.prototype.stopTimer = function () {\n window.clearInterval(this.timer);\n };\n ColumnChooser.prototype.addcancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.add('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc-cancel').setAttribute('title', this.l10n.getConstant('Clear'));\n };\n ColumnChooser.prototype.removeCancelIcon = function () {\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').classList.remove('e-cc-cancel');\n this.dlgDiv.querySelector('.e-cc.e-ccsearch-icon').setAttribute('title', this.l10n.getConstant('Search'));\n };\n ColumnChooser.prototype.mOpenDlg = function () {\n if (Browser.isDevice) {\n this.dlgObj.element.querySelector('.e-cc-searchdiv').classList.remove('e-input-focus');\n this.dlgObj.element.querySelectorAll('.e-cc-chbox')[0].focus();\n }\n };\n // internally use\n ColumnChooser.prototype.getModuleName = function () {\n return 'columnChooser';\n };\n ColumnChooser.prototype.hideOpenedDialog = function () {\n var openCC = [].slice.call(document.getElementsByClassName('e-ccdlg')).filter(function (dlgEle) {\n return dlgEle.classList.contains('e-popup-open');\n });\n for (var i = 0, dlgLen = openCC.length; i < dlgLen; i++) {\n if (openCC[parseInt(i.toString(), 10)].classList.contains('e-dialog') || this.parent.element.id + '_ccdlg' !== openCC[parseInt(i.toString(), 10)].id) {\n openCC[parseInt(i.toString(), 10)].ej2_instances[0].hide();\n }\n }\n };\n ColumnChooser.prototype.beforeOpenColumnChooserEvent = function () {\n var args1 = {\n requestType: 'beforeOpenColumnChooser', element: this.parent.element,\n columns: this.getColumns(), cancel: false,\n searchOperator: this.parent.columnChooserSettings.operator\n };\n this.parent.trigger(beforeOpenColumnChooser, args1);\n this.searchOperator = args1.searchOperator;\n return args1;\n };\n return ColumnChooser;\n}());\n\n/**\n * @hidden\n * `ExportHelper` for `PdfExport` & `ExcelExport`\n */\nvar ExportHelper = /** @__PURE__ @class */ (function () {\n function ExportHelper(parent, foreignKeyData) {\n this.hideColumnInclude = false;\n this.foreignKeyData = {};\n this.parent = parent;\n if (!parent.parentDetails && foreignKeyData) {\n this.foreignKeyData = foreignKeyData;\n }\n }\n ExportHelper.getQuery = function (parent, data) {\n var query = data.generateQuery(true).requiresCount();\n if (data.isRemote()) {\n if (parent.groupSettings.enableLazyLoading && parent.groupSettings.columns.length) {\n query.lazyLoad = [];\n }\n else {\n query.take(parent.pageSettings.totalRecordsCount);\n }\n }\n return query;\n };\n ExportHelper.prototype.getFData = function (value, column) {\n var foreignKeyData = getForeignData(column, {}, value, this.foreignKeyData[column.field])[0];\n return foreignKeyData;\n };\n ExportHelper.prototype.getGridRowModel = function (columns, dataSource, gObj, startIndex) {\n if (startIndex === void 0) { startIndex = 0; }\n var rows = [];\n var length = dataSource.length;\n if (length) {\n for (var i = 0; i < length; i++, startIndex++) {\n var options = { isExpand: false };\n options.data = dataSource[parseInt(i.toString(), 10)];\n options.index = startIndex;\n if (gObj.childGrid) {\n if (gObj.hierarchyPrintMode === 'All') {\n options.isExpand = true;\n }\n else if (gObj.hierarchyPrintMode === 'Expanded' &&\n this.parent.expandedRows && this.parent.expandedRows[parseInt(startIndex.toString(), 10)]) {\n options.isExpand = gObj.expandedRows[parseInt(startIndex.toString(), 10)].isExpand;\n }\n }\n var row = new Row(options);\n row.cells = this.generateCells(columns, gObj);\n rows.push(row);\n }\n this.processColumns(rows);\n }\n return rows;\n };\n ExportHelper.prototype.generateCells = function (columns, gObj) {\n var cells = [];\n if (gObj.childGridLevel) {\n var len = gObj.childGridLevel;\n for (var i = 0; len > i; i++) {\n cells.push(this.generateCell({}, CellType.Indent));\n }\n }\n for (var _i = 0, columns_1 = columns; _i < columns_1.length; _i++) {\n var col = columns_1[_i];\n cells.push(this.generateCell(col, CellType.Data));\n }\n return cells;\n };\n ExportHelper.prototype.getColumnData = function (gridObj) {\n var _this = this;\n var columnPromise = [];\n var promise;\n var fColumns = gridObj.getForeignKeyColumns();\n if (fColumns.length) {\n for (var i = 0; i < fColumns.length; i++) {\n var colData = ('result' in fColumns[parseInt(i.toString(), 10)].dataSource) ?\n new DataManager(fColumns[parseInt(i.toString(), 10)].dataSource.result) :\n fColumns[parseInt(i.toString(), 10)].dataSource;\n columnPromise.push(colData.executeQuery(new Query()));\n }\n promise = Promise.all(columnPromise).then(function (e) {\n for (var j = 0; j < fColumns.length; j++) {\n _this.foreignKeyData[fColumns[parseInt(j.toString(), 10)].field] = e[parseInt(j.toString(), 10)].result;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n });\n }\n return promise;\n };\n ExportHelper.prototype.getHeaders = function (columns, isHideColumnInclude) {\n if (isHideColumnInclude) {\n this.hideColumnInclude = true;\n }\n else {\n this.hideColumnInclude = false;\n }\n this.colDepth = measureColumnDepth(columns);\n var rows = [];\n for (var i = 0; i < this.colDepth; i++) {\n rows[parseInt(i.toString(), 10)] = new Row({});\n rows[parseInt(i.toString(), 10)].cells = [];\n }\n rows = this.processColumns(rows);\n rows = this.processHeaderCells(rows, columns);\n return { rows: rows, columns: this.generateActualColumns(columns) };\n };\n ExportHelper.prototype.getConvertedWidth = function (input) {\n var value = parseFloat(input);\n return (input.indexOf('%') !== -1) ? (this.parent.element.getBoundingClientRect().width * value / 100) : value;\n };\n ExportHelper.prototype.generateActualColumns = function (columns, actualColumns) {\n if (actualColumns === void 0) { actualColumns = []; }\n for (var _i = 0, columns_2 = columns; _i < columns_2.length; _i++) {\n var column = columns_2[_i];\n if (column.commands) {\n continue;\n }\n if (!column.columns) {\n if (column.visible || this.hideColumnInclude) {\n actualColumns.push(column);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n var colSpan = this.getCellCount(column, 0);\n if (colSpan !== 0) {\n this.generateActualColumns(column.columns, actualColumns);\n }\n }\n }\n }\n return actualColumns;\n };\n ExportHelper.prototype.processHeaderCells = function (rows, cols) {\n var columns = cols;\n for (var i = 0; i < columns.length; i++) {\n if (!columns[parseInt(i.toString(), 10)].commands) {\n rows = this.appendGridCells(columns[parseInt(i.toString(), 10)], rows, 0);\n }\n }\n return rows;\n };\n ExportHelper.prototype.appendGridCells = function (cols, gridRows, index) {\n if (!cols.columns && (cols.visible !== false || this.hideColumnInclude) && !cols.commands) {\n gridRows[parseInt(index.toString(), 10)].cells.push(this.generateCell(cols, CellType.Header, this.colDepth - index, index));\n }\n else if (cols.columns) {\n var colSpan = this.getCellCount(cols, 0);\n if (colSpan) {\n gridRows[parseInt(index.toString(), 10)].cells.push(new Cell({\n cellType: CellType.StackedHeader, column: cols, colSpan: colSpan\n }));\n }\n var isIgnoreFirstCell = void 0;\n for (var i = 0, len = cols.columns.length; i < len; i++) {\n if (cols.columns[parseInt(i.toString(), 10)].visible && !isIgnoreFirstCell) {\n isIgnoreFirstCell = true;\n }\n gridRows = this.appendGridCells(cols.columns[parseInt(i.toString(), 10)], gridRows, index + 1);\n }\n }\n return gridRows;\n };\n ExportHelper.prototype.generateCell = function (gridColumn, cellType, rowSpan, rowIndex) {\n var option = {\n 'visible': gridColumn.visible,\n 'isDataCell': cellType === CellType.Data,\n 'column': gridColumn,\n 'cellType': cellType,\n 'rowSpan': rowSpan,\n 'index': rowIndex\n };\n if (!option.rowSpan || option.rowSpan < 2) {\n delete option.rowSpan;\n }\n return new Cell(option);\n };\n ExportHelper.prototype.processColumns = function (rows) {\n //TODO: generate dummy column for group, detail, stacked row here; ensureColumns here\n var gridObj = this.parent;\n var columnIndexes = [];\n if (gridObj.enableColumnVirtualization) {\n columnIndexes = gridObj.getColumnIndexesInView();\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n if (gridObj.allowGrouping) {\n for (var j = 0, len_1 = gridObj.groupSettings.columns.length - 1; j < len_1; j++) {\n if (gridObj.enableColumnVirtualization && columnIndexes.indexOf(j) === -1) {\n continue;\n }\n rows[parseInt(i.toString(), 10)].cells.splice(0, 0, this.generateCell({}, CellType.HeaderIndent));\n }\n }\n }\n return rows;\n };\n ExportHelper.prototype.getCellCount = function (column, count) {\n if (column.columns) {\n for (var i = 0; i < column.columns.length; i++) {\n count = this.getCellCount(column.columns[parseInt(i.toString(), 10)], count);\n }\n }\n else {\n if (column.visible || this.hideColumnInclude) {\n count++;\n }\n }\n return count;\n };\n ExportHelper.prototype.checkAndExport = function (gridPool, globalResolve) {\n var bool = Object.keys(gridPool).some(function (key) {\n return !gridPool[\"\" + key];\n });\n if (!bool) {\n globalResolve();\n }\n };\n ExportHelper.prototype.failureHandler = function (gridPool, childGridObj, resolve) {\n var _this = this;\n return function () {\n gridPool[childGridObj.id] = true;\n _this.checkAndExport(gridPool, resolve);\n };\n };\n ExportHelper.prototype.createChildGrid = function (gObj, row, exportType, gridPool) {\n var childGridObj = new Grid(this.parent.detailRowModule.getGridModel(gObj, row, exportType));\n gObj.isPrinting = false;\n var parent = 'parentDetails';\n childGridObj[\"\" + parent] = {\n parentID: gObj.element.id,\n parentPrimaryKeys: gObj.getPrimaryKeyFieldNames(),\n parentKeyField: gObj.childGrid.queryString,\n parentKeyFieldValue: getValue(childGridObj.queryString, row.data),\n parentRowData: row.data\n };\n var exportId = getUid('child-grid');\n var element = createElement('div', {\n id: exportId, styles: 'display: none'\n });\n document.body.appendChild(element);\n childGridObj.id = exportId;\n gridPool[\"\" + exportId] = false;\n childGridObj.isExportGrid = true;\n return { childGrid: childGridObj, element: element };\n };\n ExportHelper.prototype.getGridExportColumns = function (columns) {\n var actualGridColumns = [];\n for (var i = 0, gridColumns = columns; i < gridColumns.length; i++) {\n if (gridColumns[parseInt(i.toString(), 10)].type !== 'checkbox') {\n actualGridColumns.push(gridColumns[parseInt(i.toString(), 10)]);\n }\n }\n return actualGridColumns;\n };\n /**\n * Gets the foreignkey data.\n *\n * @returns {ForeignKeyFormat} returns the foreignkey data\n * @hidden\n */\n ExportHelper.prototype.getForeignKeyData = function () {\n return this.foreignKeyData;\n };\n return ExportHelper;\n}());\n/**\n * @hidden\n * `ExportValueFormatter` for `PdfExport` & `ExcelExport`\n */\nvar ExportValueFormatter = /** @__PURE__ @class */ (function () {\n function ExportValueFormatter(culture) {\n this.valueFormatter = new ValueFormatter(culture);\n this.internationalization = new Internationalization(culture);\n }\n ExportValueFormatter.prototype.returnFormattedValue = function (args, customFormat) {\n if (!isNullOrUndefined(args.value) && args.value) {\n return this.valueFormatter.getFormatFunction(customFormat)(args.value);\n }\n else {\n return '';\n }\n };\n /**\n * Used to format the exporting cell value\n *\n * @param {ExportHelperArgs} args - Specifies cell details.\n * @returns {string} returns formated value\n * @hidden\n */\n ExportValueFormatter.prototype.formatCellValue = function (args) {\n if (args.isForeignKey) {\n args.value = getValue(args.column.foreignKeyValue, getForeignData(args.column, {}, args.value)[0]);\n }\n if (args.column.type === 'number' && args.column.format !== undefined && args.column.format !== '') {\n if (typeof args.column.format === 'string') {\n args.column.format = { format: args.column.format };\n }\n return args.value || args.value === 0 ?\n this.internationalization.getNumberFormat(args.column.format)(args.value) : '';\n }\n else if (args.column.type === 'boolean' && args.value !== '') {\n return args.value ? 'true' : 'false';\n /* tslint:disable-next-line:max-line-length */\n }\n else if ((args.column.type === 'date' || args.column.type === 'datetime' || args.column.type === 'time') && args.column.format !== undefined) {\n if (typeof args.value === 'string') {\n args.value = new Date(args.value);\n }\n if (typeof args.column.format === 'string') {\n var format = void 0;\n var cFormat = args.column.format;\n if (args.column.type === 'date') {\n format = { type: 'date', skeleton: cFormat };\n }\n else if (args.column.type === 'time') {\n format = { type: 'time', skeleton: cFormat };\n }\n else {\n format = { type: 'dateTime', skeleton: cFormat };\n }\n return this.returnFormattedValue(args, format);\n }\n else {\n if (args.column.format instanceof Object && args.column.format.type === undefined) {\n return (args.value.toString());\n }\n else {\n var customFormat = void 0;\n if (args.column.type === 'date') {\n customFormat = {\n type: args.column.format.type,\n format: args.column.format.format, skeleton: args.column.format.skeleton\n };\n }\n else if (args.column.type === 'time') {\n customFormat = { type: 'time', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n else {\n customFormat = { type: 'dateTime', format: args.column.format.format, skeleton: args.column.format.skeleton };\n }\n return this.returnFormattedValue(args, customFormat);\n }\n }\n }\n else {\n if ((!isNullOrUndefined(args.column.type) && !isNullOrUndefined(args.value)) || !isNullOrUndefined(args.value)) {\n return (args.value).toString();\n }\n else {\n return '';\n }\n }\n };\n return ExportValueFormatter;\n}());\n\n/**\n * @hidden\n * `ExcelExport` module is used to handle the Excel export action.\n */\nvar ExcelExport = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid Excel Export module.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} locator - specifies the ServiceLocator\n * @hidden\n */\n function ExcelExport(parent, locator) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.isCsvExport = false;\n this.isChild = false;\n this.isElementIdChanged = false;\n this.gridPool = {};\n this.sheet = {};\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.locator = locator;\n this.l10n = this.locator.getService('localization');\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n ExcelExport.prototype.getModuleName = function () {\n return 'ExcelExport';\n };\n ExcelExport.prototype.init = function (gObj) {\n if (gObj.element !== null && gObj.element.id === '') {\n gObj.element.id = new Date().toISOString();\n this.isElementIdChanged = true;\n }\n this.parent = gObj;\n if (this.parent.isDestroyed) {\n return;\n }\n this.isExporting = undefined;\n this.book = {};\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.rowLength = 1;\n this.footer = undefined;\n this.expType = 'AppendToSheet';\n this.includeHiddenColumn = false;\n this.exportValueFormatter = new ExportValueFormatter(gObj.locale);\n gObj.id = getUid('main-grid');\n this.gridPool[gObj.id] = false;\n };\n /**\n * Export Grid to Excel file.\n *\n * @param {IGrid} grid - Defines the grid.\n * @param {exportProperties} exportProperties - Defines the export properties of the Grid.\n * @param {isMultipleExport} isMultipleExport - Defines is multiple Grid's are exported.\n * @param {Workbook} workbook - Defined the Workbook if multiple Grid is exported.\n * @param {boolean} isCsv - true if export to CSV.\n * @param {boolean} isBlob - true if isBlob is enabled.\n * @returns {Promise} - Returns the map for export.\n */\n // eslint-disable-next-line\n ExcelExport.prototype.Map = function (grid, exportProperties, isMultipleExport, workbook, isCsv, isBlob) {\n var gObj = grid;\n var cancel = 'cancel';\n var isBlb = 'isBlob';\n var Child = 'isChild';\n var csv = 'isCsv';\n var workbk = 'workbook';\n var isMultiEx = 'isMultipleExport';\n this.gridPool = {};\n if (grid.childGrid && !(!isNullOrUndefined(exportProperties) && exportProperties.hierarchyExportMode === 'None')) {\n grid.expandedRows = getPrintGridModel(grid).expandedRows;\n }\n var args = {\n requestType: 'beforeExcelExport', gridObject: gObj, cancel: false,\n isMultipleExport: isMultipleExport, workbook: workbook, isCsv: isCsv, isBlob: isBlob, isChild: this.isChild\n };\n gObj.trigger(beforeExcelExport, args);\n if (args[\"\" + cancel]) {\n return new Promise(function (resolve) {\n return resolve();\n });\n }\n this.parent.log('exporting_begin', this.getModuleName());\n this.data = new Data(gObj);\n this.isExporting = true;\n this.isBlob = args[\"\" + isBlb];\n this.isChild = args[\"\" + Child];\n if (args[\"\" + csv]) {\n this.isCsvExport = args[\"\" + csv];\n }\n else {\n this.isCsvExport = false;\n }\n if (isExportColumns(exportProperties)) {\n updateColumnTypeForExportColumns(exportProperties, gObj);\n }\n return this.processRecords(gObj, exportProperties, args[\"\" + isMultiEx], args[\"\" + workbk]);\n };\n ExcelExport.prototype.exportingSuccess = function (resolve) {\n this.isExporting = false;\n this.parent.trigger(excelExportComplete, this.isBlob ? { promise: this.blobPromise } : {});\n this.parent.log('exporting_complete', this.getModuleName());\n resolve(this.book);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n ExcelExport.prototype.processRecords = function (gObj, exportProperties, isMultipleExport, workbook) {\n var _this = this;\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.dataSource)) {\n exportProperties.dataSource = exportProperties.dataSource instanceof DataManager ?\n exportProperties.dataSource : new DataManager(exportProperties.dataSource);\n var query_1 = exportProperties.query ? exportProperties.query : new Query();\n if (isNullOrUndefined(query_1.isCountRequired) || gObj.aggregates) {\n query_1.isCountRequired = true;\n }\n return new Promise(function (resolve) {\n var dataManager = exportProperties.dataSource.executeQuery(query_1);\n dataManager.then(function (r) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, r).then(function () {\n _this.exportingSuccess(resolve);\n });\n });\n });\n }\n else if (!isNullOrUndefined(exportProperties) && exportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, _this.parent.getCurrentViewRecords());\n _this.exportingSuccess(resolve);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(gObj, this.data)));\n allPromise_1.push(this.helper.getColumnData(gObj));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(gObj);\n _this.processInnerRecords(gObj, exportProperties, isMultipleExport, workbook, e[0]).then(function () {\n _this.exportingSuccess(resolve);\n });\n }).catch(function (e) {\n reject(_this.book);\n _this.parent.trigger(actionFailure, e);\n });\n });\n }\n };\n ExcelExport.prototype.processInnerRecords = function (gObj, exportProperties, \n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isMultipleExport, workbook, r) {\n var _this = this;\n this.groupedColLength = gObj.groupSettings.columns.length;\n var blankRows = 5;\n var separator;\n var rows = [];\n var colDepth = measureColumnDepth(gObj.columns);\n var isExportPropertiesPresent = !isNullOrUndefined(exportProperties);\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.multipleExport)) {\n this.expType = (!isNullOrUndefined(exportProperties.multipleExport.type) ? exportProperties.multipleExport.type : 'AppendToSheet');\n if (!isNullOrUndefined(exportProperties.multipleExport.blankRows)) {\n blankRows = exportProperties.multipleExport.blankRows;\n }\n }\n if (isNullOrUndefined(workbook)) {\n this.workSheet = [];\n this.rows = [];\n this.columns = [];\n this.styles = [];\n this.sheet.images = [];\n }\n else if (this.expType === 'NewSheet') {\n this.workSheet = workbook.worksheets;\n this.rows = [];\n this.columns = [];\n this.sheet.images = [];\n this.styles = workbook.styles;\n }\n else {\n this.workSheet = [];\n this.rows = workbook.worksheets[0].rows;\n this.columns = workbook.worksheets[0].columns;\n this.styles = workbook.styles;\n this.sheet.images = workbook.worksheets[0].images;\n this.rowLength = (this.rows[this.rows.length - 1].index + blankRows);\n this.rowLength++;\n }\n if (isExportPropertiesPresent) {\n if (!isNullOrUndefined(isMultipleExport)) {\n if (!isNullOrUndefined(exportProperties.header) && (isMultipleExport || this.expType === 'NewSheet')) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n if (this.expType === 'AppendToSheet') {\n if (!isMultipleExport) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n else {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n else {\n if (!isNullOrUndefined(exportProperties.header)) {\n this.processExcelHeader(JSON.parse(JSON.stringify(exportProperties.header)));\n }\n if (!isNullOrUndefined(exportProperties.footer)) {\n this.footer = JSON.parse(JSON.stringify(exportProperties.footer));\n }\n }\n }\n this.includeHiddenColumn = (isExportPropertiesPresent ? exportProperties.includeHiddenColumn : false);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n gObj.childGridLevel = 0;\n rows = _this.processGridExport(gObj, exportProperties, r);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n var organisedRows = [];\n _this.organiseRows(rows, rows[0].index, organisedRows);\n _this.rows = _this.rows.concat(organisedRows);\n //footer template add\n if (!isNullOrUndefined(_this.footer)) {\n if ((_this.expType === 'AppendToSheet' && !isMultipleExport) || (_this.expType === 'NewSheet')) {\n _this.processExcelFooter(_this.footer);\n }\n }\n if (_this.columns.length > 0) {\n _this.sheet.columns = _this.columns;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.sheet.rows = _this.rows;\n _this.sheet.enableRtl = _this.parent.enableRtl;\n if (_this.parent.allowFiltering && gObj.getVisibleColumns().length && isExportPropertiesPresent &&\n exportProperties.enableFilter) {\n var headerRowLen = exportProperties.header ? exportProperties.header.headerRows ||\n exportProperties.header.rows.length : 0;\n var autoFilters = {\n row: colDepth + headerRowLen, column: _this.groupedColLength ? _this.groupedColLength + 1 :\n _this.sheet.columns[0].index, lastRow: _this.sheet.rows.length, lastColumn: _this.sheet.columns.length\n };\n _this.sheet.autoFilters = autoFilters;\n }\n _this.workSheet.push(_this.sheet);\n _this.book.worksheets = _this.workSheet;\n _this.book.styles = _this.styles;\n gObj.notify('finalPageSetup', _this.book);\n if (!isMultipleExport) {\n if (_this.isCsvExport) {\n if (isExportPropertiesPresent && !isNullOrUndefined(exportProperties.separator)\n && exportProperties.separator !== ',') {\n separator = exportProperties.separator;\n }\n var book = new Workbook(_this.book, 'csv', gObj.locale, gObj.currencyCode, separator);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.csv');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('text/csv');\n }\n }\n else {\n var book = new Workbook(_this.book, 'xlsx', gObj.locale, gObj.currencyCode);\n if (!_this.isBlob) {\n if (isExportPropertiesPresent && exportProperties.fileName) {\n book.save(exportProperties.fileName);\n }\n else {\n book.save('Export.xlsx');\n }\n }\n else {\n _this.blobPromise = book.saveAsBlob('application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');\n }\n }\n if (_this.isElementIdChanged) {\n gObj.element.id = '';\n }\n delete gObj.expandedRows;\n }\n return workbook;\n });\n };\n ExcelExport.prototype.organiseRows = function (rows, initialIndex, organisedRows) {\n if (!rows.length) {\n return initialIndex;\n }\n for (var i = 0; i < rows.length; i++) {\n var row = rows[parseInt(i.toString(), 10)];\n var childRows = row.childRows;\n if (childRows) {\n row.index = initialIndex++;\n delete row.childRows;\n organisedRows.push(row);\n initialIndex = this.organiseRows(childRows, initialIndex, organisedRows);\n }\n else {\n row.index = initialIndex++;\n organisedRows.push(row);\n }\n }\n return initialIndex;\n };\n ExcelExport.prototype.processGridExport = function (gObj, exportProperties, r) {\n var excelRows = [];\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(exportProperties) && !isNullOrUndefined(exportProperties.theme)) {\n this.theme = exportProperties.theme;\n }\n if (gObj.childGrid && !isNullOrUndefined(exportProperties)) {\n gObj.hierarchyPrintMode = exportProperties.hierarchyExportMode || 'Expanded';\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var gColumns = isExportColumns(exportProperties) ?\n prepareColumns(exportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n var headerRow = helper.getHeaders(gColumns, this.includeHiddenColumn);\n var groupIndent = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n excelRows = this.processHeaderContent(gObj, headerRow, groupIndent, excelRows);\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length &&\n isNullOrUndefined(exportProperties.dataSource)) {\n if (exportProperties.exportType === 'CurrentPage' && (!gObj.groupSettings.enableLazyLoading\n || gObj.getDataModule().isRemote())) {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, gObj.currentViewData, excelRows, helper);\n }\n else if (gObj.groupSettings.enableLazyLoading && !gObj.getDataModule().isRemote()) {\n var groupData = void 0;\n if (!isNullOrUndefined(exportProperties) && Object.keys(exportProperties).length) {\n var isAllPage = exportProperties.exportType === 'CurrentPage'\n ? false : true;\n var groupQuery = gObj.getDataModule().generateQuery(isAllPage);\n var lazyloadData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n groupQuery.lazyLoad = [];\n var fName = 'fn';\n if (!isAllPage) {\n for (var i = 0; i < groupQuery.queries.length; i++) {\n if (groupQuery.queries[parseInt(i.toString(), 10)]['' + fName] === 'onPage') {\n groupQuery.queries[parseInt(i.toString(), 10)].e.pageSize = lazyloadData.reduce(function (acc, curr) { return acc + curr['count']; }, 0);\n }\n }\n }\n if (exportProperties.hierarchyExportMode === 'All') {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n }\n else if (exportProperties.hierarchyExportMode === 'Expanded' || exportProperties.hierarchyExportMode === 'None' ||\n isNullOrUndefined(exportProperties.hierarchyExportMode)) {\n groupData = gObj.getDataModule().dataManager.executeLocal(groupQuery);\n var lazQuery = this.parent.contentModule.lazyLoadQuery;\n for (var i = 0; i < lazQuery.length; i++) {\n var query = lazQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n for (var j = 0; j < groupData.length; j++) {\n var data = groupData[parseInt(j.toString(), 10)];\n if (data['key'] === where['value']) {\n lazyloadData[parseInt(i.toString(), 10)] = groupData[parseInt(j.toString(), 10)];\n }\n }\n }\n groupData = lazyloadData;\n }\n }\n else {\n groupData = gObj.currentViewData;\n }\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, groupData, excelRows, helper);\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n }\n else {\n excelRows = this.processRecordContent(gObj, r, headerRow, exportProperties, undefined, excelRows, helper);\n }\n gObj.notify(exportDataBound, { excelRows: excelRows, type: 'excel' });\n return excelRows;\n };\n ExcelExport.prototype.processRecordContent = function (gObj, returnType, headerRow, exportProperties, currentViewRecords, excelRow, helper) {\n var record;\n if (!isNullOrUndefined(currentViewRecords) && currentViewRecords.length) {\n record = currentViewRecords;\n }\n else {\n record = returnType.result;\n }\n if (!isNullOrUndefined(record.level)) {\n this.processGroupedRows(gObj, record, headerRow, record.level, 0, exportProperties, excelRow, helper);\n }\n else {\n this.processRecordRows(gObj, record, headerRow, 0, 0, exportProperties, excelRow, helper);\n }\n if (!isNullOrUndefined(returnType.aggregates) && Object.keys(returnType.aggregates).length > 0) {\n if (!isNullOrUndefined(currentViewRecords) && !this.parent.groupSettings.enableLazyLoading) {\n this.processAggregates(gObj, returnType.result, excelRow, currentViewRecords);\n }\n else {\n var result = returnType.result.GroupGuid ?\n returnType.result.records : returnType.result;\n this.processAggregates(gObj, result, excelRow);\n }\n }\n return excelRow;\n };\n ExcelExport.prototype.processGroupedRows = function (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n gObj, dataSource, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n var cells = [];\n var index = 1;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var cell = {};\n cell.index = (index + level) - 1;\n var col = gObj.getColumnByField(item.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: item.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(item.field).headerText +\n ': ' + (!col.enableGroupByFormat ? this.exportValueFormatter.formatCellValue(args) : item.key) + ' - ';\n if (item.count > 1) {\n value += item.count + ' items';\n }\n else {\n value += item.count + ' item';\n }\n var cArgs = { captionText: value, type: this.isCsvExport ? 'CSV' : 'Excel', data: item };\n this.parent.trigger(exportGroupCaption, cArgs);\n cell.value = cArgs.captionText;\n cell.style = this.getCaptionThemeStyle(this.theme);\n if (!isNullOrUndefined(cArgs.style)) {\n cell.style = this.mergeOptions(cell.style, cArgs.style);\n }\n var captionModelGen = new CaptionSummaryModelGenerator(gObj);\n var groupCaptionSummaryRows = captionModelGen.generateRows(item);\n this.fillAggregates(gObj, groupCaptionSummaryRows, (dataSource.level + dataSource.childLevels) - 1, excelRows, this.rowLength);\n cells.push(cell);\n if (excelRows[excelRows.length - 1].cells.length > 0) {\n var lIndex = dataSource.level + dataSource.childLevels + groupCaptionSummaryRows[0].cells.length;\n var hIndex = 0;\n for (var _a = 0, _b = excelRows[excelRows.length - 1].cells; _a < _b.length; _a++) {\n var tCell = _b[_a];\n if (tCell.index < lIndex) {\n lIndex = tCell.index;\n }\n if (tCell.index > hIndex) {\n hIndex = tCell.index;\n }\n if (cells[cells.length - 1].index !== tCell.index) {\n cells.push(tCell);\n }\n }\n if ((lIndex - cell.index) > 1) {\n cell.colSpan = lIndex - cell.index;\n }\n while (hIndex < (headerRow.columns.length + level + dataSource.childLevels)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var sCell = {};\n sCell.index = (hIndex + 1);\n sCell.style = this.getCaptionThemeStyle(this.theme);\n cells.push(sCell);\n hIndex++;\n }\n }\n else {\n var span = 0;\n //Calculation for column span when group caption dont have aggregates\n for (var _c = 0, _d = headerRow.columns; _c < _d.length; _c++) {\n var col_1 = _d[_c];\n if (col_1.visible) {\n span++;\n }\n }\n cell.colSpan = (dataSource.childLevels + span);\n }\n excelRows[excelRows.length - 1].cells = cells;\n this.rowLength++;\n if (this.groupedColLength < 8 && level > 1) {\n var grouping = { outlineLevel: level - 1, isCollapsed: true };\n excelRows[excelRows.length - 1].grouping = grouping;\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n this.processGroupedRows(gObj, item.items, headerRow, item.items.level, startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1) + dataSource.childLevels, true);\n }\n else {\n startIndex = this.processRecordRows(gObj, item.items, headerRow, (level - 1), startIndex, excelExportProperties, excelRows, helper);\n this.processAggregates(gObj, item, excelRows, undefined, (level - 1), true);\n }\n }\n };\n ExcelExport.prototype.processRecordRows = function (gObj, record, headerRow, level, startIndex, excelExportProperties, excelRows, helper) {\n var index = 1;\n var cells = [];\n var columns = headerRow.columns;\n var rows = helper.getGridRowModel(columns, record, gObj, startIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n cells = [];\n startIndex++;\n index = 1;\n var templateRowHeight = void 0;\n for (var c = 0, len = row.cells.length; c < len; c++) {\n var gCell = row.cells[parseInt(c.toString(), 10)];\n if (gCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var fkData = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n fkData = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, fkData);\n }\n if (!isNullOrUndefined(value)) {\n var cell = {};\n var idx = index + level + gObj.childGridLevel;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelCellArgs = {\n data: row.data, column: column, foreignKeyData: fkData,\n value: value, style: undefined, colSpan: 1, cell: cell\n };\n gObj.trigger(excelQueryCellInfo, excelCellArgs);\n if (!isNullOrUndefined(excelCellArgs.image) && !isNullOrUndefined(excelCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelCellArgs, idx);\n if (excelCellArgs.image.height && excelCellArgs.value !== '') {\n templateRowHeight += 30;\n }\n }\n if (!isNullOrUndefined(excelCellArgs.hyperLink)) {\n excelCellArgs.cell.hyperlink = { target: excelCellArgs.hyperLink.target };\n excelCellArgs.value = excelCellArgs.hyperLink.displayText || excelCellArgs.value;\n }\n cell = excelCellArgs.cell;\n cell.index = idx;\n cell.value = excelCellArgs.value;\n if (excelCellArgs.data === '' && gObj.childGridLevel && index === 1) {\n var style = {};\n style.hAlign = 'left';\n excelCellArgs = { style: style };\n cell.colSpan = gObj.getVisibleColumns().length;\n cell.value = this.l10n.getConstant('EmptyRecord');\n }\n if (excelCellArgs.colSpan > 1) {\n cell.colSpan = excelCellArgs.colSpan;\n }\n if (!isNullOrUndefined(excelCellArgs.style)) {\n var styleIndex = this.getColumnStyle(gObj, index + level);\n cell.style = this.mergeOptions(this.styles[parseInt(styleIndex.toString(), 10)], excelCellArgs.style);\n }\n else {\n cell.style = { name: gObj.element.id + 'column' + (index + level) };\n }\n cells.push(cell);\n }\n index++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n if (this.groupedColLength && this.groupedColLength < 8 && (level + 1) > 0) {\n excelRow.grouping = { outlineLevel: (level + 1), isCollapsed: true };\n excelRows.push(excelRow);\n }\n else {\n excelRows.push(excelRow);\n }\n if ((row.isExpand || this.isChild) && !isNullOrUndefined(gObj.childGrid)) {\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(excelExportProperties) && excelExportProperties.exportType) ?\n excelExportProperties.exportType : 'AllPages';\n var returnVal = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnVal.childGrid;\n var element = returnVal.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n childGridObj.childGridLevel = gObj.childGridLevel + 1;\n var args = { childGrid: childGridObj, row: row, exportProperties: excelExportProperties };\n this.parent.trigger(exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(excelRow, childGridObj, excelExportProperties, row);\n childGridObj.appendTo(element);\n }\n gObj.notify(exportRowDataBound, { rowObj: row, type: 'excel', excelRows: excelRows });\n }\n return startIndex;\n };\n ExcelExport.prototype.setImage = function (args, idx) {\n if (isNullOrUndefined(this.sheet.images)) {\n this.sheet.images = [];\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var excelImage = {\n image: args.image.base64, row: this.rowLength, column: idx,\n lastRow: this.rowLength, lastColumn: idx\n };\n if (args.image.width && args.image.height) {\n excelImage.width = args.image.width;\n excelImage.height = args.image.height;\n }\n this.sheet.images.push(excelImage);\n this.columns[idx - 1].width = args.image.width || this.columns[idx - 1].width;\n return args.image.height || 50;\n };\n ExcelExport.prototype.childGridCell = function (excelRow, childGridObj, excelExportProps, gRow) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n if (result.result.length === 0) {\n result.result = [''];\n }\n excelRow.childRows = _this.processGridExport(childGridObj, excelExportProps, result);\n var intent = _this.parent.groupSettings.columns.length;\n var rows = excelRow.childRows;\n for (var i = 0; i < rows.length; i++) {\n rows[parseInt(i.toString(), 10)].grouping = { outlineLevel: intent + childGridObj\n .childGridLevel, isCollapsed: !gRow.isExpand, isHidden: !gRow.isExpand };\n }\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return excelRow;\n };\n };\n ExcelExport.prototype.processAggregates = function (gObj, rec, excelRows, currentViewRecords, indent, byGroup) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var columns = summaryModel.getColumns();\n columns = columns.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n var data = undefined;\n if (!isNullOrUndefined(currentViewRecords)) {\n data = currentViewRecords;\n }\n else {\n data = rec;\n }\n if (indent === undefined) {\n indent = 0;\n }\n if (gObj.groupSettings.columns.length > 0 && byGroup) {\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n var groupSummaryRows = groupSummaryModel.generateRows(data, { level: data.level });\n if (groupSummaryRows.length > 0) {\n excelRows = this.fillAggregates(gObj, groupSummaryRows, indent, excelRows);\n }\n }\n else {\n indent = gObj.groupSettings.columns.length > 0 && !byGroup ? gObj.groupSettings.columns.length : indent;\n var sRows = summaryModel.generateRows(data, rec.aggregates, null, null, columns);\n if (sRows.length > 0 && !byGroup) {\n indent = gObj.groupSettings.columns.length ? indent - 1 : indent;\n excelRows = this.fillAggregates(gObj, sRows, indent, excelRows);\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.fillAggregates = function (gObj, rows, indent, excelRows, customIndex) {\n for (var _i = 0, rows_2 = rows; _i < rows_2.length; _i++) {\n var row = rows_2[_i];\n var cells = [];\n var isEmpty = true;\n var index = 0;\n for (var _a = 0, _b = row.cells; _a < _b.length; _a++) {\n var cell = _b[_a];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var eCell = {};\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if ((cell.visible || this.includeHiddenColumn)) {\n index++;\n if (cell.isDataCell) {\n isEmpty = false;\n var footerTemplate = !isNullOrUndefined(cell.column.footerTemplate);\n var groupFooterTemplate = !isNullOrUndefined(cell.column.groupFooterTemplate);\n var groupCaptionTemplate = !isNullOrUndefined(cell.column.groupCaptionTemplate);\n eCell.index = index + indent + gObj.childGridLevel;\n if (footerTemplate) {\n eCell.value = this.getAggreateValue(CellType.Summary, cell.column.footerTemplate, cell, row);\n }\n else if (groupFooterTemplate) {\n eCell.value = this.getAggreateValue(CellType.GroupSummary, cell.column.groupFooterTemplate, cell, row);\n }\n else if (groupCaptionTemplate) {\n eCell.value = this.getAggreateValue(CellType.CaptionSummary, cell.column.groupCaptionTemplate, cell, row);\n }\n else {\n for (var _c = 0, _d = Object.keys(row.data[cell.column.field]); _c < _d.length; _c++) {\n var key = _d[_c];\n if (key === cell.column.type) {\n if (!isNullOrUndefined(row.data[cell.column.field].Sum)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - sum\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Average)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - average\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Max)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - max\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Min)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - min\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Count)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - count\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].TrueCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - truecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].FalseCount)) {\n eCell.value = row.data[cell.column.field][cell.column.field + \" - falsecount\"];\n }\n else if (!isNullOrUndefined(row.data[cell.column.field].Custom)) {\n eCell.value = row.data[cell.column.field].Custom;\n }\n }\n }\n }\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n this.aggregateStyle(cell.column, eCell.style, cell.column.field);\n var gridCellStyle = cell.attributes.style;\n if (gridCellStyle.textAlign) {\n eCell.style.hAlign = gridCellStyle.textAlign.toLowerCase();\n }\n var args = {\n row: row,\n type: footerTemplate ? 'Footer' : groupFooterTemplate ? 'GroupFooter' : 'GroupCaption',\n style: eCell\n };\n this.parent.trigger(excelAggregateQueryCellInfo, args);\n cells.push(eCell);\n }\n else {\n if (customIndex === undefined) {\n eCell.index = index + indent + gObj.childGridLevel;\n eCell.style = this.getCaptionThemeStyle(this.theme); //{ name: gObj.element.id + 'column' + index };\n cells.push(eCell);\n }\n }\n }\n }\n if (!isNullOrUndefined(customIndex)) {\n excelRows.push({ index: customIndex, cells: cells });\n }\n else {\n var row_1 = {};\n if (this.groupedColLength < 8 && this.groupedColLength > 0) {\n var dummyOutlineLevel = 'outlineLevel';\n var dummyGrouping = 'grouping';\n var level = excelRows[excelRows.length - 1][\"\" + dummyGrouping][\"\" + dummyOutlineLevel];\n var grouping = { outlineLevel: level, isCollapsed: true };\n row_1 = { index: this.rowLength++, cells: cells, grouping: grouping };\n }\n else {\n row_1 = { index: this.rowLength++, cells: cells };\n }\n if (!isEmpty) {\n excelRows.push(row_1);\n }\n }\n }\n return excelRows;\n };\n ExcelExport.prototype.aggregateStyle = function (col, style, field) {\n var column = this.parent.getColumnByField(field);\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n }\n if (!isNullOrUndefined(column) && isNullOrUndefined(style.type)) {\n style.type = column.type.toLowerCase();\n }\n };\n ExcelExport.prototype.getAggreateValue = function (cellType, template, cell, row) {\n var templateFn = {};\n templateFn[getEnumValue(CellType, cell.cellType)] = compile(template);\n var txt;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n return !isNullOrUndefined(txt[0]) ? txt[0].textContent : '';\n };\n ExcelExport.prototype.mergeOptions = function (JSON1, JSON2) {\n var result = {};\n var attrname = Object.keys(JSON1);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON1[attrname[parseInt(index.toString(), 10)]];\n }\n }\n attrname = Object.keys(JSON2);\n for (var index = 0; index < attrname.length; index++) {\n if (attrname[parseInt(index.toString(), 10)] !== 'name') {\n result[attrname[parseInt(index.toString(), 10)]] = JSON2[attrname[parseInt(index.toString(), 10)]];\n }\n }\n return result;\n };\n ExcelExport.prototype.getColumnStyle = function (gObj, columnIndex) {\n var index = 0;\n for (var _i = 0, _a = this.styles; _i < _a.length; _i++) {\n var style = _a[_i];\n if (style.name === gObj.element.id + 'column' + columnIndex) {\n return index;\n }\n index++;\n }\n return undefined;\n };\n ExcelExport.prototype.headerRotation = function (args) {\n var degree = args.style.rotation;\n if (degree <= 90 && degree >= 0) {\n args.style.hAlign = 'Left';\n }\n else if (degree > 90 && degree <= 180) {\n args.style.hAlign = 'Right';\n }\n else {\n degree = 180;\n args.style.hAlign = 'Right';\n }\n args.style.rotation = degree;\n };\n ExcelExport.prototype.processHeaderContent = function (gObj, headerRow, indent, excelRows) {\n var rowIndex = 1;\n var gridRows = headerRow.rows;\n // Column collection with respect to the records in the grid\n var gridColumns = headerRow.columns;\n var spannedCells = [];\n if (indent > 0) {\n var index = 0;\n while (index !== indent) {\n this.columns.push({ index: index + 1, width: 30 });\n index++;\n }\n }\n for (var col = 0; col < gridColumns.length; col++) {\n this.parseStyles(gObj, gridColumns[parseInt(col.toString(), 10)], this.getRecordThemeStyle(this.theme), indent + col + 1);\n }\n var templateRowHeight;\n for (var row = 0; row < gridRows.length; row++) {\n var currentCellIndex = 1 + indent;\n var cells = [];\n for (var column = 0; column < gridRows[parseInt(row.toString(), 10)].cells.length; column++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var style = {};\n var cell = {};\n var gridCell = gridRows[parseInt(row.toString(), 10)].cells[parseInt(column.toString(), 10)];\n if (gridCell.cellType === CellType.HeaderIndent || gridCell.cellType === CellType.DetailHeader) {\n continue;\n }\n var result = { contains: true, index: 1 };\n while (result.contains) {\n result = this.getIndex(spannedCells, rowIndex, currentCellIndex);\n currentCellIndex = result.index;\n if (!result.contains) {\n cell.index = result.index + gObj.childGridLevel;\n break;\n }\n }\n if (!isNullOrUndefined(gridCell.rowSpan) && gridCell.rowSpan !== 1) {\n cell.rowSpan = gridCell.rowSpan;\n for (var i = rowIndex; i < gridCell.rowSpan + rowIndex; i++) {\n var spannedCell = { rowIndex: 0, columnIndex: 0 };\n spannedCell.rowIndex = i;\n spannedCell.columnIndex = currentCellIndex;\n spannedCells.push(spannedCell);\n }\n }\n if (!isNullOrUndefined(gridCell.colSpan) && gridCell.colSpan !== 1) {\n cell.colSpan = gridCell.colSpan;\n currentCellIndex = currentCellIndex + cell.colSpan - 1;\n }\n cell.value = gridCell.column.headerText;\n style = this.getHeaderThemeStyle(this.theme);\n if (!isNullOrUndefined(gridCell.column.textAlign)) {\n style.hAlign = gridCell.column.textAlign.toLowerCase();\n }\n if (!isNullOrUndefined(gridCell.column.headerTextAlign)) {\n style.hAlign = gridCell.column.headerTextAlign.toLowerCase();\n }\n var excelHeaderCellArgs = { cell: cell, gridCell: gridCell, style: style };\n gObj.trigger(excelHeaderQueryCellInfo, excelHeaderCellArgs);\n if (excelHeaderCellArgs.style.rotation) {\n this.headerRotation(excelHeaderCellArgs);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.image) && !isNullOrUndefined(excelHeaderCellArgs.image.base64)) {\n templateRowHeight = this.setImage(excelHeaderCellArgs, currentCellIndex);\n }\n if (!isNullOrUndefined(excelHeaderCellArgs.hyperLink)) {\n excelHeaderCellArgs.cell.hyperlink = { target: excelHeaderCellArgs.hyperLink.target };\n cell.value = excelHeaderCellArgs.hyperLink.displayText || cell.value;\n }\n cell.style = excelHeaderCellArgs.style;\n cells.push(cell);\n currentCellIndex++;\n }\n var excelRow = { index: this.rowLength++, cells: cells };\n if (!isNullOrUndefined(templateRowHeight)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n excelRow.height = templateRowHeight;\n }\n excelRows.push(excelRow);\n }\n return excelRows;\n };\n ExcelExport.prototype.getHeaderThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 12;\n style.borders = { color: '#E0E0E0' };\n style.bold = true;\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.header)) {\n style = this.updateThemeStyle(theme.header, style);\n }\n return style;\n };\n ExcelExport.prototype.updateThemeStyle = function (themestyle, style) {\n return extend(style, themestyle);\n };\n ExcelExport.prototype.getCaptionThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.backColor = '#F6F6F6';\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.caption)) {\n style = this.updateThemeStyle(theme.caption, style);\n }\n return style;\n };\n ExcelExport.prototype.getRecordThemeStyle = function (theme) {\n var style = {};\n style.fontSize = 13;\n style.borders = { color: '#E0E0E0' };\n if (!isNullOrUndefined(theme) && !isNullOrUndefined(theme.record)) {\n style = this.updateThemeStyle(theme.record, style);\n }\n return style;\n };\n ExcelExport.prototype.processExcelHeader = function (header) {\n if (!isNullOrUndefined(header.rows) && (this.expType === 'NewSheet' || this.rowLength === 1)) {\n var noRows = void 0;\n if (header.headerRows === undefined) {\n this.rowLength = header.rows.length;\n }\n else {\n this.rowLength = header.headerRows;\n }\n if (this.rowLength < header.rows.length) {\n noRows = this.rowLength;\n }\n else {\n noRows = header.rows.length;\n }\n this.rowLength++;\n for (var row = 0; row < noRows; row++) {\n var json = header.rows[parseInt(row.toString(), 10)];\n //Row index\n if (!(json.index !== null && !isNullOrUndefined(json.index))) {\n json.index = (row + 1);\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.updatedCellIndex = function (json) {\n var cellsLength = json.cells.length;\n for (var cellId = 0; cellId < cellsLength; cellId++) {\n var jsonCell = json.cells[parseInt(cellId.toString(), 10)];\n //cell index\n if (!(jsonCell.index !== null && !isNullOrUndefined(jsonCell.index))) {\n jsonCell.index = (cellId + 1);\n }\n }\n this.rows.push(json);\n };\n ExcelExport.prototype.processExcelFooter = function (footer) {\n if (!isNullOrUndefined(footer.rows)) {\n var noRows = void 0;\n if (footer.footerRows === undefined) {\n this.rowLength += footer.rows.length;\n }\n else {\n if (footer.footerRows > footer.rows.length) {\n this.rowLength += (footer.footerRows - footer.rows.length);\n noRows = footer.rows.length;\n }\n else {\n noRows = footer.footerRows;\n }\n }\n for (var row = 0; row < noRows; row++) {\n var json = footer.rows[parseInt(row.toString(), 10)];\n //Row index\n if (json.index === null || json.index === undefined) {\n json.index = this.rowLength++;\n }\n else {\n json.index += this.rowLength;\n }\n this.updatedCellIndex(json);\n }\n }\n };\n ExcelExport.prototype.getIndex = function (spannedCells, rowIndex, columnIndex) {\n for (var _i = 0, spannedCells_1 = spannedCells; _i < spannedCells_1.length; _i++) {\n var spannedCell = spannedCells_1[_i];\n if ((spannedCell.rowIndex === rowIndex) && (spannedCell.columnIndex === columnIndex)) {\n columnIndex = columnIndex + 1;\n return { contains: true, index: columnIndex };\n }\n }\n return { contains: false, index: columnIndex };\n };\n ExcelExport.prototype.parseStyles = function (gObj, col, style, index) {\n if (!isNullOrUndefined(col.format)) {\n if (typeof col.format === 'object') {\n var format = col.format;\n style.numberFormat = !isNullOrUndefined(format.format) ? format.format : format.skeleton;\n if (!isNullOrUndefined(format.type)) {\n style.type = format.type.toLowerCase();\n }\n }\n else {\n style.numberFormat = col.format;\n style.type = col.type;\n }\n }\n if (!isNullOrUndefined(col.textAlign)) {\n style.hAlign = col.textAlign.toLowerCase();\n }\n if (Object.keys(style).length > 0) {\n style.name = gObj.element.id + 'column' + index;\n this.styles.push(style);\n }\n if (!isNullOrUndefined(col.width) && col.width !== 'auto') {\n this.columns.push({ index: index + gObj.childGridLevel, width: typeof col.width === 'number' ?\n col.width : this.helper.getConvertedWidth(col.width) });\n }\n };\n ExcelExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return ExcelExport;\n}());\n\n/**\n * `PDF Export` module is used to handle the exportToPDF action.\n *\n * @hidden\n */\nvar PdfExport = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid PDF Export module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @hidden\n */\n function PdfExport(parent) {\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.customDataSource = false;\n this.isGrouping = false;\n this.headerOnPages = [];\n this.drawPosition = { xPosition: 0, yPosition: 0 };\n this.parent = parent;\n this.helper = new ExportHelper(parent);\n this.gridPool = {};\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n PdfExport.prototype.getModuleName = function () {\n return 'PdfExport';\n };\n PdfExport.prototype.init = function (parent) {\n this.exportValueFormatter = new ExportValueFormatter(parent.locale);\n this.pdfDocument = undefined;\n this.hideColumnInclude = false;\n this.currentViewData = false;\n this.parent = parent;\n this.isGrouping = false;\n this.isExporting = true;\n parent.id = getUid('main-grid');\n this.gridPool[parent.id] = false;\n this.pdfPageSettings = new PdfPageSettings();\n };\n PdfExport.prototype.exportWithData = function (parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject) {\n var _this = this;\n this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n this.pdfDocument = pdfDoc;\n }\n else {\n this.pdfDocument = new PdfDocument();\n }\n this.processExport(parent, returnType, pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(actionFailure, e);\n });\n };\n /**\n * Used to map the input data\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {PdfExportProperties} pdfExportProperties - specifies the PdfExportProperties\n * @param {boolean} isMultipleExport - specifies the isMultipleExport\n * @param {Object} pdfDoc - specifies the pdfDoc\n * @param {boolean} isBlob - speciies whether it is Blob or not\n * @returns {void}\n */\n PdfExport.prototype.Map = function (parent, pdfExportProperties, isMultipleExport, pdfDoc, isBlob) {\n var _this = this;\n this.data = new Data(this.parent);\n this.isBlob = isBlob;\n this.gridPool = {};\n var query = new Query();\n if (parent.childGrid && !(!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.hierarchyExportMode === 'None')) {\n parent.expandedRows = getPrintGridModel(parent).expandedRows;\n }\n var args = {\n requestType: 'beforePdfExport', cancel: false,\n headerPageNumbers: [], gridDrawPosition: { xPosition: 0, yPosition: 0 }, generateQuery: false\n };\n var gridObject = 'gridObject';\n args[\"\" + gridObject] = parent;\n var can = 'cancel';\n var generateQuery$$1 = 'generateQuery';\n var header = 'headerPageNumbers';\n var drawPos = 'gridDrawPosition';\n parent.trigger(beforePdfExport, args);\n if (args[\"\" + can] === true) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n return resolve();\n });\n }\n if (isExportColumns(pdfExportProperties)) {\n updateColumnTypeForExportColumns(pdfExportProperties, parent);\n }\n if (args[\"\" + generateQuery$$1]) {\n query = ExportHelper.getQuery(parent, this.data);\n }\n this.headerOnPages = args[\"\" + header];\n this.drawPosition = args[\"\" + drawPos];\n this.parent.log('exporting_begin', this.getModuleName());\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.dataSource)\n && pdfExportProperties.dataSource instanceof DataManager) {\n return new Promise(function (resolve, reject) {\n pdfExportProperties.dataSource.executeQuery(query).then(function (returnType) {\n _this.exportWithData(parent, pdfDoc, resolve, returnType, pdfExportProperties, isMultipleExport, reject);\n });\n });\n }\n else if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType === 'CurrentPage') {\n return new Promise(function (resolve, reject) {\n _this.exportWithData(parent, pdfDoc, resolve, _this.parent.getCurrentViewRecords(), pdfExportProperties, isMultipleExport, reject);\n });\n }\n else {\n var allPromise_1 = [];\n allPromise_1.push(this.data.getData({}, ExportHelper.getQuery(parent, this.data)));\n allPromise_1.push(this.helper.getColumnData(parent));\n return new Promise(function (resolve, reject) {\n Promise.all(allPromise_1).then(function (e) {\n _this.init(parent);\n if (!isNullOrUndefined(pdfDoc)) {\n _this.pdfDocument = pdfDoc;\n }\n else {\n _this.pdfDocument = new PdfDocument();\n }\n _this.processExport(parent, e[0], pdfExportProperties, isMultipleExport).then(function () {\n _this.isExporting = false;\n parent.trigger(pdfExportComplete, _this.isBlob ? { promise: _this.blobPromise } : {});\n _this.parent.log('exporting_complete', _this.getModuleName());\n resolve(_this.pdfDocument);\n }).catch(function (e) {\n reject(_this.pdfDocument);\n _this.parent.trigger(actionFailure, e);\n });\n });\n });\n }\n };\n PdfExport.prototype.processExport = function (gObj, returnType, pdfExportProperties, isMultipleExport) {\n var _this = this;\n var section = this.pdfDocument.sections.add();\n var pdfGrid;\n this.processSectionExportProperties(section, pdfExportProperties);\n var pdfPage = section.pages.add();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return new Promise(function (resolve, reject) {\n pdfGrid = _this.processGridExport(gObj, returnType, pdfExportProperties);\n _this.globalResolve = resolve;\n _this.gridPool[gObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n }).then(function () {\n // draw the grid\n var xPosition = 'xPosition';\n var yPosition = 'yPosition';\n pdfGrid.draw(pdfPage, _this.drawPosition[\"\" + xPosition], _this.drawPosition[\"\" + yPosition]);\n _this.drawHeader(pdfExportProperties);\n if (!isMultipleExport) {\n // save the PDF\n if (!_this.isBlob) {\n if (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.fileName) {\n _this.pdfDocument.save(pdfExportProperties.fileName);\n }\n else {\n _this.pdfDocument.save('Export.pdf');\n }\n }\n else {\n _this.blobPromise = _this.pdfDocument.save();\n }\n _this.pdfDocument.destroy();\n delete gObj.expandedRows;\n }\n return _this.pdfDocument;\n });\n };\n PdfExport.prototype.processSectionExportProperties = function (section, pdfExportProperties) {\n if (!isNullOrUndefined(pdfExportProperties) && (!isNullOrUndefined(pdfExportProperties.pageOrientation)\n || !isNullOrUndefined(pdfExportProperties.pageSize))) {\n this.pdfPageSettings.orientation = (pdfExportProperties.pageOrientation === 'Landscape') ?\n PdfPageOrientation.Landscape : PdfPageOrientation.Portrait;\n this.pdfPageSettings.size = this.getPageSize(pdfExportProperties.pageSize);\n section.setPageSettings(this.pdfPageSettings);\n }\n return section;\n };\n PdfExport.prototype.processGridExport = function (gObj, returnType, pdfExportProperties) {\n var allowHorizontalOverflow = true;\n var isFrozen = this.parent.isFrozenGrid() && !this.parent.getFrozenColumns();\n if (!isNullOrUndefined(pdfExportProperties)) {\n this.gridTheme = pdfExportProperties.theme;\n allowHorizontalOverflow = isNullOrUndefined(pdfExportProperties.allowHorizontalOverflow) ?\n true : pdfExportProperties.allowHorizontalOverflow;\n }\n var helper = new ExportHelper(gObj, this.helper.getForeignKeyData());\n var dataSource = this.processExportProperties(pdfExportProperties, returnType.result);\n var columns = isExportColumns(pdfExportProperties) ?\n prepareColumns(pdfExportProperties.columns, gObj.enableColumnVirtualization) :\n helper.getGridExportColumns(isFrozen ? gObj.getColumns() : gObj.columns);\n columns = columns.filter(function (columns) { return isNullOrUndefined(columns.commands); });\n var isGrouping = false;\n if (gObj.groupSettings.columns.length) {\n isGrouping = true;\n }\n if (gObj.childGrid && !isNullOrUndefined(pdfExportProperties)) {\n gObj.hierarchyPrintMode = pdfExportProperties.hierarchyExportMode || 'Expanded';\n }\n // create a grid\n var pdfGrid = new PdfGrid();\n // get header theme style\n var headerThemeStyle = this.getHeaderThemeStyle();\n var border = headerThemeStyle.border;\n var headerFont = headerThemeStyle.font;\n var headerBrush = headerThemeStyle.brush;\n var returnValue = helper.getHeaders(columns, this.hideColumnInclude);\n // Column collection with respect to the records in the grid\n var gridColumns = returnValue.columns;\n // process grid header content\n pdfGrid = this.processGridHeaders(gObj.groupSettings.columns.length, pdfGrid, returnValue.rows, gridColumns, border, headerFont, headerBrush, gObj, allowHorizontalOverflow, columns);\n // set alignment, width and type of the values of the column\n this.setColumnProperties(gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow);\n var captionThemeStyle = this.getSummaryCaptionThemeStyle();\n if (!isNullOrUndefined(dataSource) && dataSource.length) {\n if (isGrouping) {\n if (!isNullOrUndefined(captionThemeStyle.border)) {\n border = captionThemeStyle.border;\n }\n this.processGroupedRecords(pdfGrid, dataSource, gridColumns, gObj, border, 0, captionThemeStyle.font, captionThemeStyle.\n brush, captionThemeStyle.backgroundBrush, returnType, pdfExportProperties, helper, 0);\n }\n else {\n this.processRecord(border, gridColumns, gObj, dataSource, pdfGrid, 0, pdfExportProperties, helper, 0);\n }\n if (!isNullOrUndefined(returnType.aggregates)) {\n var summaryModel = new SummaryModelGenerator(gObj);\n var sRows = void 0;\n var column = summaryModel.getColumns();\n column = column.filter(function (col) { return isNullOrUndefined(col.commands) && col.type !== 'checkbox'; });\n if (gObj.aggregates.length && this.parent !== gObj) {\n gObj.aggregateModule.prepareSummaryInfo();\n }\n if (this.customDataSource) {\n sRows = summaryModel.generateRows(dataSource, returnType.aggregates);\n }\n else if (this.currentViewData) {\n sRows = summaryModel.generateRows(this.parent.getCurrentViewRecords(), returnType.aggregates);\n }\n else if (isGrouping) {\n sRows = summaryModel.generateRows(dataSource.records, returnType.aggregates);\n }\n else {\n sRows = summaryModel.generateRows(returnType.result, returnType.aggregates, null, null, column);\n }\n this.processAggregates(sRows, pdfGrid, border, captionThemeStyle.font, captionThemeStyle.brush, captionThemeStyle.backgroundBrush, false, null, null, null, isGrouping ? false : true);\n }\n }\n else {\n var row = pdfGrid.rows.addRow();\n row.style.setBorder(border);\n }\n return pdfGrid;\n };\n PdfExport.prototype.getSummaryCaptionThemeStyle = function () {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.caption)) {\n var fontSize = !isNullOrUndefined(this.gridTheme.caption.fontSize) ? this.gridTheme.caption.fontSize : 9.75;\n var fontFamily = !isNullOrUndefined(this.gridTheme.caption.fontName) ?\n this.getFontFamily(this.gridTheme.caption.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.caption);\n var pdfColor = new PdfColor(0, 0, 0);\n if (!isNullOrUndefined(this.gridTheme.caption.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.caption.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var borderCaption = this.gridTheme.caption.border ? this.getBorderStyle(this.gridTheme.caption.border) : null;\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.caption.font)) {\n font = this.gridTheme.caption.font;\n }\n return { font: font, brush: new PdfSolidBrush(pdfColor), backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)),\n border: borderCaption };\n }\n else {\n //Material theme\n return { font: new PdfStandardFont(PdfFontFamily.Helvetica, 9.75), brush: new PdfSolidBrush(new PdfColor(0, 0, 0)),\n backgroundBrush: new PdfSolidBrush(new PdfColor(246, 246, 246)) };\n }\n };\n PdfExport.prototype.getGridPdfFont = function (args) {\n var fontFamily = 'fontFamily';\n var fontSize = 'fontSize';\n var fontStyle = 'fontStyle';\n var isTrueType = 'isTrueType';\n var style = 0;\n if (args.header && args.header.font) {\n var headerFont = args.header.font[\"\" + fontFamily];\n var headerSize = args.header.font[\"\" + fontSize];\n var headerStyle = args.header.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + headerStyle]) ? 0 : PdfFontStyle[\"\" + headerStyle]);\n if (args.header.font[\"\" + isTrueType]) {\n args.header.font = new PdfTrueTypeFont(headerFont, headerSize, style);\n }\n else {\n var fontFamily_1 = !isNullOrUndefined(headerFont) ?\n this.getFontFamily(headerFont) : PdfFontFamily.Helvetica;\n args.header.font = new PdfStandardFont(fontFamily_1, headerSize, style);\n }\n }\n if (args.caption && args.caption.font) {\n var captionFont = args.caption.font[\"\" + fontFamily];\n var captionSize = args.caption.font[\"\" + fontSize];\n var captionStyle = args.caption.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + captionStyle]) ? 0 : PdfFontStyle[\"\" + captionStyle]);\n if (args.caption.font[\"\" + isTrueType]) {\n args.caption.font = new PdfTrueTypeFont(captionFont, captionSize, style);\n }\n else {\n var fontFamily_2 = !isNullOrUndefined(captionFont) ?\n this.getFontFamily(captionFont) : PdfFontFamily.Helvetica;\n args.caption.font = new PdfStandardFont(fontFamily_2, captionSize, style);\n }\n }\n if (args.record && args.record.font) {\n var recordFont = args.record.font[\"\" + fontFamily];\n var recordSize = args.record.font[\"\" + fontSize];\n var recordStyle = args.record.font[\"\" + fontStyle];\n style = (isNullOrUndefined(PdfFontStyle[\"\" + recordStyle]) ? 0 : PdfFontStyle[\"\" + recordStyle]);\n if (args.record.font[\"\" + isTrueType]) {\n args.record.font = new PdfTrueTypeFont(recordFont, recordSize, style);\n }\n else {\n var fontFamily_3 = !isNullOrUndefined(recordFont) ?\n this.getFontFamily(recordFont) : PdfFontFamily.Helvetica;\n args.record.font = new PdfStandardFont(fontFamily_3, recordSize, style);\n }\n }\n };\n PdfExport.prototype.getHeaderThemeStyle = function () {\n var border = new PdfBorders();\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.header)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.header.fontName) ?\n this.getFontFamily(this.gridTheme.header.fontName) : PdfFontFamily.Helvetica;\n var fontStyle = this.getFontStyle(this.gridTheme.header);\n var fontSize = !isNullOrUndefined(this.gridTheme.header.fontSize) ? this.gridTheme.header.fontSize : 10.5;\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.header.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.header.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.header.font)) {\n font = this.gridTheme.header.font;\n }\n return { border: this.getBorderStyle(this.gridTheme.header.border), font: font, brush: new PdfSolidBrush(pdfColor) };\n }\n else {\n //Material theme\n border.all = new PdfPen(new PdfColor(234, 234, 234));\n return { border: border, font: new PdfStandardFont(PdfFontFamily.Helvetica, 10.5),\n brush: new PdfSolidBrush(new PdfColor(102, 102, 102)) };\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.processGroupedRecords = function (pdfGrid, dataSource, gridColumns, gObj, border, level, font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index) {\n var _this = this;\n var groupIndex = level;\n var _loop_1 = function (dataSourceItems) {\n var row = pdfGrid.rows.addRow();\n var col = gObj.getColumnByField(dataSourceItems.field);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var args = {\n value: dataSourceItems.key,\n column: col,\n style: undefined,\n isForeignKey: col.isForeignColumn()\n };\n var value = gObj.getColumnByField(dataSourceItems.field).headerText + ': ' + (!col.enableGroupByFormat ? this_1.exportValueFormatter.formatCellValue(args) : dataSourceItems.key) + ' - ' + dataSourceItems.count + (dataSource.count > 1 ? ' items' : ' item');\n var cArgs = { captionText: value, type: 'PDF', data: dataSourceItems, style: undefined };\n this_1.parent.trigger(exportGroupCaption, cArgs, function (cArgs) {\n row.cells.getCell(groupIndex).value = cArgs.captionText;\n row.cells.getCell(groupIndex).style.stringFormat = new PdfStringFormat(PdfTextAlignment.Left);\n row.style.setBorder(border);\n row.style.setFont(font);\n row.style.setTextBrush(brush);\n row.style.setBackgroundBrush(backgroundBrush);\n if (!isNullOrUndefined(cArgs.style)) {\n _this.processCellStyle(row.cells.getCell(groupIndex), cArgs);\n }\n var sRows;\n var captionSummaryModel = new CaptionSummaryModelGenerator(gObj);\n if (!isNullOrUndefined(dataSourceItems.items.records)) {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n }\n else {\n sRows = captionSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n }\n if (!isNullOrUndefined(sRows) && sRows.length === 0) {\n row.cells.getCell(groupIndex + 1).columnSpan = pdfGrid.columns.count - (groupIndex + 1);\n }\n if (!isNullOrUndefined(dataSource.childLevels) && dataSource.childLevels > 0) {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n _this.processGroupedRecords(pdfGrid, dataSourceItems.items, gridColumns, gObj, border, (groupIndex + 1), font, brush, backgroundBrush, returnType, pdfExportProperties, helper, index);\n index = _this.rowIndex;\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items.records, dataSourceItems);\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false);\n }\n else {\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, true, row, groupIndex, null, null, gObj);\n index = _this.processRecord(border, gridColumns, gObj, dataSourceItems.items, pdfGrid, (groupIndex + 1), pdfExportProperties, helper, index);\n var groupSummaryModel = new GroupSummaryModelGenerator(gObj);\n sRows = groupSummaryModel.generateRows(dataSourceItems.items, dataSourceItems);\n var isGroupedFooter = true;\n _this.processAggregates(sRows, pdfGrid, border, font, brush, backgroundBrush, false, null, null, isGroupedFooter, null, gObj);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var dataSourceItems = dataSource_1[_i];\n _loop_1(dataSourceItems);\n }\n };\n PdfExport.prototype.processGridHeaders = function (childLevels, pdfGrid, rows, gridColumn, border, headerFont, headerBrush, grid, allowHorizontalOverflow, eCols) {\n var _this = this;\n var columnCount = gridColumn.length + childLevels;\n var depth = measureColumnDepth(eCols);\n var cols = eCols;\n var index = 0;\n var rowNumber = [];\n for (var i = 0; i < rows.length; i++) {\n rowNumber[parseInt(i.toString(), 10)] = 0;\n }\n if (grid.groupSettings.columns.length) {\n index = grid.groupSettings.columns.length - 1;\n columnCount = columnCount - 1;\n }\n pdfGrid.columns.add(columnCount);\n pdfGrid.headers.add(rows.length);\n var applyTextAndSpan = function (rowIdx, colIdx, col, rowSpan, colSpan) {\n var gridHeader = pdfGrid.headers.getHeader(rowIdx);\n var pdfCell = gridHeader.cells.getCell(colIdx);\n var cell = rows[parseInt(rowIdx.toString(), 10)].cells[grid.groupSettings.columns.length ?\n colIdx : rowNumber[parseInt(rowIdx.toString(), 10)]];\n rowNumber[parseInt(rowIdx.toString(), 10)] = rowNumber[parseInt(rowIdx.toString(), 10)] + 1;\n if (!isNullOrUndefined(col.headerTextAlign)) {\n pdfCell.style.stringFormat = _this.getHorizontalAlignment(col.headerTextAlign);\n }\n if (rowSpan > 0) {\n pdfCell.rowSpan = rowSpan;\n pdfCell.style.stringFormat = _this.getVerticalAlignment('Bottom', pdfCell.style.stringFormat, col.textAlign);\n }\n if (colSpan > 0) {\n pdfCell.columnSpan = colSpan;\n }\n gridHeader.style.setBorder(border);\n gridHeader.style.setFont(headerFont);\n gridHeader.style.setTextBrush(headerBrush);\n pdfCell.value = col.headerText;\n if (!isNullOrUndefined(cell) && (cell.cellType === CellType.HeaderIndent || cell.cellType === CellType.DetailHeader)) {\n pdfCell.value = '';\n pdfCell.width = 20;\n }\n var args = {\n cell: pdfCell,\n gridCell: cell,\n style: pdfCell.style\n };\n _this.parent.trigger(pdfHeaderQueryCellInfo, args);\n var evtArgs = args;\n var setCellBorder = args.style.borders;\n var setCellFont = args.style.font;\n var setHeaderBrush = args.style.textBrush;\n if (!isNullOrUndefined(setCellBorder)) {\n gridHeader.style.setBorder(setCellBorder);\n }\n if (!isNullOrUndefined(setCellFont)) {\n gridHeader.style.setFont(setCellFont);\n }\n if (!isNullOrUndefined(setHeaderBrush)) {\n gridHeader.style.setTextBrush(setHeaderBrush);\n }\n if (!isNullOrUndefined(evtArgs.style.verticalAlignment)) {\n pdfCell.style.stringFormat = _this.getVerticalAlignment(evtArgs.style.verticalAlignment, pdfCell.style.stringFormat);\n }\n if (!isNullOrUndefined(evtArgs.image)) {\n pdfCell.value = new PdfBitmap(evtArgs.image.base64);\n }\n if (!isNullOrUndefined(evtArgs.hyperLink)) {\n pdfCell.value = _this.setHyperLink(evtArgs);\n }\n };\n var recuHeader = function (cols, depth, spanCnt, colIndex, rowIndex, isRoot) {\n var cidx = 0;\n for (var i = 0; i < cols.length; i++) {\n if (isRoot) {\n cidx = cidx + spanCnt + (i === 0 ? 0 : -1);\n colIndex = cidx;\n spanCnt = 0;\n }\n if (!isRoot && !cols[parseInt(i.toString(), 10)].visible) {\n colIndex = colIndex - 1;\n }\n if (cols[parseInt(i.toString(), 10)].columns && cols[parseInt(i.toString(), 10)].columns.length) {\n var newSpanCnt = recuHeader(cols[parseInt(i.toString(), 10)]\n .columns, depth - 1, 0, i + colIndex, rowIndex + 1, false);\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], 0, newSpanCnt);\n spanCnt = spanCnt + newSpanCnt;\n colIndex = colIndex + newSpanCnt - 1;\n }\n else if (cols[parseInt(i.toString(), 10)].visible || _this.hideColumnInclude) {\n spanCnt++;\n applyTextAndSpan(rowIndex, i + colIndex + index, cols[parseInt(i.toString(), 10)], depth, 0);\n }\n }\n return spanCnt;\n };\n recuHeader(cols, depth, 0, 0, 0, true);\n if (pdfGrid.columns.count >= 6 && allowHorizontalOverflow) {\n pdfGrid.style.allowHorizontalOverflow = true;\n }\n return pdfGrid;\n };\n PdfExport.prototype.processExportProperties = function (pdfExportProperties, dataSource) {\n if (!isNullOrUndefined(pdfExportProperties)) {\n if (!isNullOrUndefined(pdfExportProperties.theme)) {\n this.gridTheme = pdfExportProperties.theme;\n }\n var clientSize = this.pdfPageSettings.size;\n this.drawHeader(pdfExportProperties);\n if (!isNullOrUndefined(pdfExportProperties.footer)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footer = pdfExportProperties.footer;\n var position = new PointF(0, ((clientSize.width - 80) - (footer.fromBottom * 0.75)));\n var size = new SizeF((clientSize.width - 80), (footer.height * 0.75));\n var bounds = new RectangleF(position, size);\n this.pdfDocument.template.bottom = this.drawPageTemplate(new PdfPageTemplateElement(bounds), footer);\n }\n if (!isNullOrUndefined(pdfExportProperties.includeHiddenColumn) && !this.isGrouping) {\n this.hideColumnInclude = pdfExportProperties.includeHiddenColumn;\n }\n if (!isNullOrUndefined(pdfExportProperties.dataSource)) {\n if (!(pdfExportProperties.dataSource instanceof DataManager)) {\n dataSource = pdfExportProperties.dataSource;\n }\n this.customDataSource = true;\n this.currentViewData = false;\n }\n else if (!isNullOrUndefined(pdfExportProperties.exportType)) {\n if (pdfExportProperties.exportType === 'CurrentPage') {\n dataSource = this.parent.currentViewData;\n this.currentViewData = true;\n this.customDataSource = false;\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n }\n else {\n this.currentViewData = false;\n this.customDataSource = false;\n }\n return dataSource;\n };\n PdfExport.prototype.drawHeader = function (pdfExportProperties) {\n var _this = this;\n var clientSize = this.pdfPageSettings.size;\n if (!isNullOrUndefined(pdfExportProperties) && !isNullOrUndefined(pdfExportProperties.header)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var header = pdfExportProperties.header;\n var position = new PointF(0, header.fromTop);\n var size = new SizeF((clientSize.width - 80), (header.height * 0.75));\n var bounds = new RectangleF(position, size);\n if (!this.headerOnPages.length) {\n this.pdfDocument.template.top = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n }\n else {\n var headerTemplate_1 = this.drawPageTemplate(new PdfPageTemplateElement(bounds), header);\n this.headerOnPages.filter(function (index) {\n if (index - 1 >= 0 && index - 1 <= _this.pdfDocument.pages.count - 1) {\n _this.pdfDocument.pages.getPageByIndex(index - 1).graphics\n .drawPdfTemplate(headerTemplate_1.template, new PointF(0, 0));\n }\n });\n }\n }\n };\n PdfExport.prototype.drawPageTemplate = function (template, element) {\n for (var _i = 0, _a = element.contents; _i < _a.length; _i++) {\n var content = _a[_i];\n this.processContentValidation(content);\n switch (content.type) {\n case 'Text':\n if (content.value === '' || content.value === undefined || content.value === null || typeof content.value !== 'string') {\n throw new Error('please enter the valid input value in text content...');\n }\n this.drawText(template, content);\n break;\n case 'PageNumber':\n this.drawPageNumber(template, content);\n break;\n case 'Image':\n if (content.src === undefined || content.src === null || content.src === '') {\n throw new Error('please enter the valid base64 string in image content...');\n }\n this.drawImage(template, content);\n break;\n case 'Line':\n this.drawLine(template, content);\n break;\n default:\n throw new Error('Please set valid content type...');\n }\n }\n return template;\n };\n PdfExport.prototype.processContentValidation = function (content) {\n if (content.type === undefined || content.type === null) {\n throw new Error('please set valid content type...');\n }\n else {\n if (content.type === 'Line') {\n if (content.points === undefined || content.points === null) {\n throw new Error('please enter valid points in ' + content.type + ' content...');\n }\n else {\n if (content.points.x1 === undefined || content.points.x1 === null || typeof content.points.x1 !== 'number') {\n throw new Error('please enter valid x1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y1 === undefined || content.points.y1 === null || typeof content.points.y1 !== 'number') {\n throw new Error('please enter valid y1 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.x2 === undefined || content.points.x2 === null || typeof content.points.x2 !== 'number') {\n throw new Error('please enter valid x2 co-ordinate in ' + content.type + ' points...');\n }\n if (content.points.y2 === undefined || content.points.y2 === null || typeof content.points.y2 !== 'number') {\n throw new Error('please enter valid y2 co-ordinate in ' + content.type + ' points...');\n }\n }\n }\n else {\n if (content.position === undefined || content.position === null) {\n throw new Error('please enter valid position in ' + content.type + ' content...');\n }\n else {\n if (content.position.x === undefined || content.position.x === null || typeof content.position.x !== 'number') {\n throw new Error('please enter valid x co-ordinate in ' + content.type + ' position...');\n }\n if (content.position.y === undefined || content.position.y === null || typeof content.position.y !== 'number') {\n throw new Error('please enter valid y co-ordinate in ' + content.type + ' position...');\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawText = function (pageTemplate, content) {\n var font = this.getFont(content);\n var brush = this.getBrushFromContent(content);\n var pen = null;\n if (!isNullOrUndefined(content.style.textPenColor)) {\n var penColor = this.hexToRgb(content.style.textPenColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n if (brush == null && pen == null) {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var value = content.value.toString();\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var format = new PdfStringFormat();\n if (!isNullOrUndefined(content.style.stringFormat)) {\n format.alignment = content.style.stringFormat.alignment;\n }\n var result = this.setContentFormat(content, format);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, result.size.width, result.size.height, result.format);\n }\n else {\n pageTemplate.graphics.drawString(value, font, pen, brush, x, y, format);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawPageNumber = function (documentHeader, content) {\n var font = this.getFont(content);\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n else {\n brush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var pageNumber = new PdfPageNumberField(font, brush);\n pageNumber.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n var compositeField;\n var format;\n if (!isNullOrUndefined(content.format)) {\n var total = '$total';\n var current = '$current';\n if (content.format.indexOf(total) !== -1 && content.format.indexOf(current) !== -1) {\n var pageCount = new PdfPageCountField(font);\n pageCount.numberStyle = this.getPageNumberStyle(content.pageNumberType);\n if (content.format.indexOf(total) > content.format.indexOf(current)) {\n format = content.format.replace(current, '0');\n format = format.replace(total, '1');\n }\n else {\n format = content.format.replace(current, '1');\n format = format.replace(total, '0');\n }\n compositeField = new PdfCompositeField(font, brush, format, pageNumber, pageCount);\n }\n else if (content.format.indexOf(current) !== -1 && content.format.indexOf(total) === -1) {\n format = content.format.replace(current, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n else {\n var pageCount = new PdfPageCountField(font);\n format = content.format.replace(total, '0');\n compositeField = new PdfCompositeField(font, brush, format, pageCount);\n }\n }\n else {\n format = '{0}';\n compositeField = new PdfCompositeField(font, brush, format, pageNumber);\n }\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var result = this.setContentFormat(content, compositeField.stringFormat);\n if (result !== null && !isNullOrUndefined(result.format) && !isNullOrUndefined(result.size)) {\n compositeField.stringFormat = result.format;\n compositeField.bounds = new RectangleF(x, y, result.size.width, result.size.height);\n }\n compositeField.draw(documentHeader.graphics, x, y);\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawImage = function (documentHeader, content) {\n var x = content.position.x * 0.75;\n var y = content.position.y * 0.75;\n var width = (!isNullOrUndefined(content.size)) ? (content.size.width * 0.75) : undefined;\n var height = (!isNullOrUndefined(content.size)) ? (content.size.height * 0.75) : undefined;\n var image = new PdfBitmap(content.src);\n if (!isNullOrUndefined(width)) {\n documentHeader.graphics.drawImage(image, x, y, width, height);\n }\n else {\n documentHeader.graphics.drawImage(image, x, y);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.drawLine = function (documentHeader, content) {\n var x1 = content.points.x1 * 0.75;\n var y1 = content.points.y1 * 0.75;\n var x2 = content.points.x2 * 0.75;\n var y2 = content.points.y2 * 0.75;\n var pen = this.getPenFromContent(content);\n if (!isNullOrUndefined(content.style) && content.style !== null) {\n if (!isNullOrUndefined(content.style.penSize) && content.style.penSize !== null && typeof content.style.penSize === 'number') {\n pen.width = content.style.penSize * 0.75;\n }\n pen.dashStyle = this.getDashStyle(content.style.dashStyle);\n }\n documentHeader.graphics.drawLine(pen, x1, y1, x2, y2);\n };\n PdfExport.prototype.processAggregates = function (sRows, pdfGrid, border, font, brush, backgroundBrush, isCaption, captionRow, groupIndex, isGroupedFooter, isAggregate, gObj) {\n for (var _i = 0, sRows_1 = sRows; _i < sRows_1.length; _i++) {\n var row = sRows_1[_i];\n var leastCaptionSummaryIndex = -1;\n var index = 0;\n var isEmpty = true;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var value = [];\n var aggIdx = isAggregate ? 0 : 1;\n for (var i = 0; i < pdfGrid.columns.count + aggIdx; i++) {\n var cell = row.cells[parseInt(index.toString(), 10)];\n if (cell.cellType === CellType.DetailFooterIntent) {\n i--;\n index++;\n continue;\n }\n if (!this.hideColumnInclude) {\n while (cell.visible === undefined) {\n if (cell.cellType === CellType.DetailFooterIntent) {\n continue;\n }\n if (!isNullOrUndefined(captionRow)) {\n if (!isNullOrUndefined(captionRow.cells.getCell(i).value)) {\n var args = { row: row, type: 'GroupCaption', style: captionRow.cells };\n this.parent.trigger(pdfAggregateQueryCellInfo, args);\n value.push(captionRow.cells.getCell(i).value);\n isEmpty = false;\n if (!isCaption) {\n i += 1;\n }\n }\n else {\n value.push('');\n }\n }\n else {\n value.push('');\n }\n i += 1;\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n while (!isNullOrUndefined(cell.visible) && !cell.visible) {\n index = index + 1;\n cell = row.cells[parseInt(index.toString(), 10)];\n }\n }\n if (cell.isDataCell) {\n var templateFn = {};\n if (!isNullOrUndefined(cell.column.footerTemplate) || !isNullOrUndefined(cell.column.groupCaptionTemplate)\n || !isNullOrUndefined(cell.column.groupFooterTemplate)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getTemplateFunction(templateFn, i, leastCaptionSummaryIndex, cell);\n templateFn = result.templateFunction;\n leastCaptionSummaryIndex = result.leastCaptionSummaryIndex;\n var txt = void 0;\n var data = row.data[cell.column.field ? cell.column.field : cell.column.columnName];\n if (this.parent.isReact || this.parent.isVue) {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data, this.parent));\n if (this.parent.isReact) {\n this.parent.renderTemplates();\n }\n }\n else {\n txt = (templateFn[getEnumValue(CellType, cell.cellType)](data));\n }\n value.push(!isNullOrUndefined(txt[0]) ? txt[0].textContent : '');\n isEmpty = false;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var result = this.getSummaryWithoutTemplate(row.data[cell.column.field]);\n if (!isNullOrUndefined(result)) {\n value.push(result);\n }\n }\n }\n else {\n value.push('');\n }\n if (isEmpty && value[parseInt(i.toString(), 10)] !== '' && !isNullOrUndefined(value[parseInt(i.toString(), 10)]) && value[parseInt(i.toString(), 10)] !== null) {\n isEmpty = false;\n }\n index += 1;\n }\n if (!isAggregate) {\n if (!isCaption) {\n value.splice(0, 1);\n }\n else {\n for (var i = gObj.groupSettings.columns.length; i < value.length - 1; i++) {\n value[parseInt(i.toString(), 10)] = value[i + 1];\n value[i + 1] = value[i + 2] ? value[i + 2] : '';\n }\n }\n }\n if (!isEmpty) {\n if (!isCaption) {\n var gridRow = pdfGrid.rows.addRow();\n gridRow.style.setBorder(border);\n gridRow.style.setFont(font);\n gridRow.style.setTextBrush(brush);\n gridRow.style.setBackgroundBrush(backgroundBrush);\n var args = {\n row: row, type: isGroupedFooter ? 'GroupFooter' : 'Footer', style: gridRow.cells\n };\n this.parent.trigger(pdfAggregateQueryCellInfo, args);\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n gridRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n }\n }\n else {\n for (var i = 0; i < pdfGrid.columns.count; i++) {\n captionRow.cells.getCell(i).value = value[parseInt(i.toString(), 10)].toString();\n if (i === groupIndex && leastCaptionSummaryIndex !== -1 && leastCaptionSummaryIndex !== 1) {\n captionRow.cells.getCell(i).columnSpan = (leastCaptionSummaryIndex - 1) - groupIndex;\n }\n else if (i === groupIndex && leastCaptionSummaryIndex === -1) {\n captionRow.cells.getCell(i).columnSpan = pdfGrid.columns.count - groupIndex;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getTemplateFunction = function (templateFn, index, leastCaptionSummaryIndex, cell) {\n if (!isNullOrUndefined(cell.column.footerTemplate) && cell.cellType === CellType.Summary) {\n templateFn[getEnumValue(CellType, CellType.Summary)] = compile(cell.column.footerTemplate);\n }\n else if (!isNullOrUndefined(cell.column.groupCaptionTemplate)) {\n if (leastCaptionSummaryIndex === -1) {\n leastCaptionSummaryIndex = index;\n }\n templateFn[getEnumValue(CellType, CellType.CaptionSummary)] = compile(cell.column.groupCaptionTemplate);\n }\n else {\n templateFn[getEnumValue(CellType, CellType.GroupSummary)] = compile(cell.column.groupFooterTemplate);\n }\n return { templateFunction: templateFn, leastCaptionSummaryIndex: leastCaptionSummaryIndex };\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getSummaryWithoutTemplate = function (data) {\n if (!isNullOrUndefined(data.Sum)) {\n return data.Sum;\n }\n else if (!isNullOrUndefined(data.Average)) {\n return data.Average;\n }\n else if (!isNullOrUndefined(data.Max)) {\n return data.Max;\n }\n else if (!isNullOrUndefined(data.Min)) {\n return data.Min;\n }\n else if (!isNullOrUndefined(data.Count)) {\n return data.Count;\n }\n else if (!isNullOrUndefined(data.TrueCount)) {\n return data.TrueCount;\n }\n else if (!isNullOrUndefined(data.FalseCount)) {\n return data.FalseCount;\n }\n else if (!isNullOrUndefined(data.Custom)) {\n return data.Custom;\n }\n };\n /**\n * Set alignment, width and type of the values of the column\n *\n * @param {Column[]} gridColumns - specifies the grid column\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {ExportHelper} helper - specifies the helper\n * @param {IGrid} gObj - specifies the IGrid\n * @param {boolean} allowHorizontalOverflow - specifies the allowHorizontalOverflow\n * @returns {void}\n */\n PdfExport.prototype.setColumnProperties = function (gridColumns, pdfGrid, helper, gObj, allowHorizontalOverflow) {\n var startIndex = gObj.groupSettings.columns.length ? gObj.groupSettings.columns.length - 1 : 0;\n for (var i = 0; i < startIndex; i++) {\n pdfGrid.columns.getColumn(i).width = 20;\n }\n for (var i = 0; i < gridColumns.length; i++) {\n if (!isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].textAlign)) {\n pdfGrid.columns.getColumn(i + startIndex).format = this\n .getHorizontalAlignment(gridColumns[parseInt(i.toString(), 10)].textAlign);\n }\n // Need to add width consideration with % value\n if (pdfGrid.style.allowHorizontalOverflow && !isNullOrUndefined(gridColumns[parseInt(i.toString(), 10)].width)\n && allowHorizontalOverflow) {\n pdfGrid.columns.getColumn(i + startIndex).width = typeof gridColumns[parseInt(i.toString(), 10)].width === 'number' ?\n gridColumns[parseInt(i.toString(), 10)].width * 0.75 :\n helper.getConvertedWidth(gridColumns[parseInt(i.toString(), 10)].width) * 0.75;\n }\n }\n };\n /**\n * set default style properties of each rows in exporting grid\n *\n * @param {PdfGridRow} row - specifies the PdfGridRow\n * @param {PdfBorders} border - specifies the PdfBorders\n * @returns {PdfGrid} returns the pdfgrid\n * @private\n */\n PdfExport.prototype.setRecordThemeStyle = function (row, border) {\n if (!isNullOrUndefined(this.gridTheme) && !isNullOrUndefined(this.gridTheme.record)) {\n var fontFamily = !isNullOrUndefined(this.gridTheme.record.fontName) ?\n this.getFontFamily(this.gridTheme.record.fontName) : PdfFontFamily.Helvetica;\n var fontSize = !isNullOrUndefined(this.gridTheme.record.fontSize) ? this.gridTheme.record.fontSize : 9.75;\n var fontStyle = this.getFontStyle(this.gridTheme.record);\n var font = new PdfStandardFont(fontFamily, fontSize, fontStyle);\n if (!isNullOrUndefined(this.gridTheme.record.font)) {\n font = this.gridTheme.record.font;\n }\n row.style.setFont(font);\n var pdfColor = new PdfColor();\n if (!isNullOrUndefined(this.gridTheme.record.fontColor)) {\n var penBrushColor = this.hexToRgb(this.gridTheme.record.fontColor);\n pdfColor = new PdfColor(penBrushColor.r, penBrushColor.g, penBrushColor.b);\n }\n row.style.setTextBrush(new PdfSolidBrush(pdfColor));\n }\n else {\n row.style.setTextBrush(new PdfSolidBrush(new PdfColor(0, 0, 0)));\n }\n var borderRecord = this.gridTheme && this.gridTheme.record &&\n this.gridTheme.record.border ? this.getBorderStyle(this.gridTheme.record.border) : border;\n row.style.setBorder(borderRecord);\n return row;\n };\n /**\n * generate the formatted cell values\n *\n * @param {PdfBorders} border - specifies the border\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} gObj - specifies the IGrid\n * @param {Object[]} dataSource - specifies the datasource\n * @param {PdfGrid} pdfGrid - specifies the pdfGrid\n * @param {number} startIndex - specifies the startindex\n * @param {PdfExportProperties} pdfExportProperties - specifies the pdfExportProperties\n * @param {ExportHelper} helper - specifies the helper\n * @param {number} rowIndex - specifies the rowIndex\n * @returns {number} returns the number of records\n * @private\n */\n PdfExport.prototype.processRecord = function (border, columns, gObj, dataSource, pdfGrid, startIndex, pdfExportProperties, helper, rowIndex) {\n var rows = helper.getGridRowModel(columns, dataSource, gObj, rowIndex);\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n rowIndex++;\n this.rowIndex = rowIndex;\n // create a new row and set default style properties\n var gridRow = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var cellLength = row.cells.length;\n for (var j = 0; j < cellLength; j++) {\n var gridCell = row.cells[parseInt(j.toString(), 10)];\n if (gridCell.cellType !== CellType.Data) {\n continue;\n }\n var column = gridCell.column;\n var field = column.field;\n var cellValue = !isNullOrUndefined(field) ? column.valueAccessor(field, row.data, column) : '';\n var value = !isNullOrUndefined(cellValue) ? cellValue : '';\n var foreignKeyData$$1 = void 0;\n if (column.isForeignColumn && column.isForeignColumn()) {\n foreignKeyData$$1 = helper.getFData(value, column);\n value = getValue(column.foreignKeyValue, foreignKeyData$$1);\n }\n var data = row.data;\n var cell = gridRow.cells.getCell(j);\n var args = {\n data: data,\n value: value,\n column: column,\n style: undefined,\n colSpan: 1,\n cell: cell\n };\n args.value = args.column.type === 'boolean' && typeof args.value === 'string' ? args.value :\n this.exportValueFormatter.formatCellValue(args);\n this.parent.trigger(pdfQueryCellInfo, args);\n if (!isNullOrUndefined(args.image)) {\n args.value = new PdfBitmap(args.image.base64);\n args.value.height = args.image.height || args.value.height;\n args.value.width = args.image.width || args.value.width;\n }\n cell.value = args.value;\n if (!isNullOrUndefined(args.hyperLink)) {\n cell.value = this.setHyperLink(args);\n }\n if (!isNullOrUndefined(args.style)) {\n this.processCellStyle(cell, args);\n }\n if (args.colSpan > 1) {\n if ((j + 1 + args.colSpan) > gridRow.cells.count) {\n args.colSpan = gridRow.cells.count - (j + 1);\n }\n cell.columnSpan = args.colSpan;\n for (var i = 1; i < cell.columnSpan; i++) {\n var spanCell = gridRow.cells.getCell(j + i);\n spanCell.value = '';\n }\n j += (args.colSpan - 1);\n }\n }\n if (row.isExpand) {\n var gridRow_1 = this.setRecordThemeStyle(pdfGrid.rows.addRow(), border);\n var startIndexVal = this.parent.childGrid ? 0 : startIndex;\n var cell = gridRow_1.cells.getCell(startIndexVal);\n cell.columnSpan = gridRow_1.cells.count - (startIndexVal);\n cell.style.cellPadding = new PdfPaddings(10, 10, 10, 10);\n gObj.isPrinting = true;\n var exportType = (!isNullOrUndefined(pdfExportProperties) && pdfExportProperties.exportType) ?\n pdfExportProperties.exportType : 'AllPages';\n var returnValue = this.helper.createChildGrid(gObj, row, exportType, this.gridPool);\n var childGridObj = returnValue.childGrid;\n var element = returnValue.element;\n childGridObj.actionFailure =\n helper.failureHandler(this.gridPool, childGridObj, this.globalResolve);\n var args = { childGrid: childGridObj, row: row, cell: cell, exportProperties: pdfExportProperties };\n this.parent.trigger(exportDetailDataBound, args);\n childGridObj.beforeDataBound = this.childGridCell(cell, childGridObj, pdfExportProperties);\n childGridObj.appendTo(element);\n }\n this.parent.notify(exportRowDataBound, { type: 'pdf', rowObj: row });\n }\n return rowIndex;\n };\n PdfExport.prototype.setHyperLink = function (args) {\n // create the Text Web Link\n var textLink = new PdfTextWebLink();\n // set the hyperlink\n textLink.url = args.hyperLink.target;\n // set the link text\n textLink.text = args.hyperLink.displayText || args.hyperLink.target;\n // set the font\n textLink.font = new PdfStandardFont(PdfFontFamily.Helvetica, 9.75);\n // set the brush and pen for the text color\n textLink.brush = new PdfSolidBrush(new PdfColor(51, 102, 187));\n return textLink;\n };\n PdfExport.prototype.childGridCell = function (cell, childGridObj, pdfExportProperties) {\n var _this = this;\n return function (result) {\n childGridObj.beforeDataBound = null;\n result.cancel = true;\n cell.value = _this.processGridExport(childGridObj, result, pdfExportProperties);\n childGridObj.destroy();\n detach(childGridObj.element);\n _this.gridPool[childGridObj.id] = true;\n _this.helper.checkAndExport(_this.gridPool, _this.globalResolve);\n return cell;\n };\n };\n PdfExport.prototype.processCellStyle = function (cell, args) {\n if (!isNullOrUndefined(args.style.backgroundColor)) {\n var backColor = this.hexToRgb(args.style.backgroundColor);\n cell.style.backgroundBrush = new PdfSolidBrush(new PdfColor(backColor.r, backColor.g, backColor.b));\n }\n if (!isNullOrUndefined(args.style.textAlignment)) {\n cell.style.stringFormat = this.getHorizontalAlignment(args.style.textAlignment);\n }\n if (!isNullOrUndefined(args.style.cellPadding)) {\n cell.style.cellPadding = args.style.cellPadding;\n }\n if (!isNullOrUndefined(args.style.verticalAlignment)) {\n cell.style.stringFormat = this.getVerticalAlignment(args.style.verticalAlignment, cell.style.stringFormat);\n }\n if (!isNullOrUndefined(args.style.textBrushColor)) {\n var textBrushColor = this.hexToRgb(args.style.textBrushColor);\n cell.style.textBrush = new PdfSolidBrush(new PdfColor(textBrushColor.r, textBrushColor.g, textBrushColor.b));\n }\n if (!isNullOrUndefined(args.style.textPenColor)) {\n var textPenColor = this.hexToRgb(args.style.textPenColor);\n cell.style.textPen = new PdfPen(new PdfColor(textPenColor.r, textPenColor.g, textPenColor.b));\n }\n if (!isNullOrUndefined(args.style.fontFamily) || !isNullOrUndefined(args.style.fontSize) || !isNullOrUndefined(args.style.bold) ||\n !isNullOrUndefined(args.style.italic) || !isNullOrUndefined(args.style.underline) || !isNullOrUndefined(args.style.strikeout)) {\n cell.style.font = this.getFont(args);\n }\n if (!isNullOrUndefined(args.style.border)) {\n var border = new PdfBorders();\n var borderWidth = args.style.border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? (borderWidth * 0.75) : (undefined);\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(args.style.border.color)) {\n var borderColor = this.hexToRgb(args.style.border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(args.style.border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(args.style.border.dashStyle);\n }\n border.all = pen;\n cell.style.borders = border;\n }\n if (!isNullOrUndefined(args.style.paragraphIndent)) {\n cell.style.stringFormat = new PdfStringFormat();\n cell.style.stringFormat.paragraphIndent = args.style.paragraphIndent;\n }\n };\n /**\n * set text alignment of each columns in exporting grid\n *\n * @param {string} textAlign - specifies the textAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getHorizontalAlignment = function (textAlign, format) {\n if (format === undefined) {\n format = new PdfStringFormat();\n }\n switch (textAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n case 'Left':\n format.alignment = PdfTextAlignment.Left;\n break;\n }\n return format;\n };\n /**\n * set vertical alignment of each columns in exporting grid\n *\n * @param {string} verticalAlign - specifies the verticalAlign\n * @param {PdfStringFormat} format - specifies the PdfStringFormat\n * @param {string} textAlign - specifies the text align\n * @returns {PdfStringFormat} returns the PdfStringFormat\n * @private\n */\n PdfExport.prototype.getVerticalAlignment = function (verticalAlign, format, textAlign) {\n if (format === undefined) {\n format = new PdfStringFormat();\n format = this.getHorizontalAlignment(textAlign, format);\n }\n switch (verticalAlign) {\n case 'Bottom':\n format.lineAlignment = PdfVerticalAlignment.Bottom;\n break;\n case 'Middle':\n format.lineAlignment = PdfVerticalAlignment.Middle;\n break;\n case 'Top':\n format.lineAlignment = PdfVerticalAlignment.Top;\n break;\n }\n return format;\n };\n PdfExport.prototype.getFontFamily = function (fontFamily) {\n switch (fontFamily) {\n case 'TimesRoman':\n return 2;\n case 'Courier':\n return 1;\n case 'Symbol':\n return 3;\n case 'ZapfDingbats':\n return 4;\n default:\n return 0;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n PdfExport.prototype.getFont = function (content) {\n if (content.font) {\n return content.font;\n }\n var fontSize = (!isNullOrUndefined(content.style.fontSize)) ? (content.style.fontSize * 0.75) : 9.75;\n var fontFamily = (!isNullOrUndefined(content.style.fontFamily)) ?\n (this.getFontFamily(content.style.fontFamily)) : PdfFontFamily.TimesRoman;\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(content.style.bold) && content.style.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(content.style.italic) && content.style.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(content.style.underline) && content.style.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(content.style.strikeout) && content.style.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return new PdfStandardFont(fontFamily, fontSize, fontStyle);\n };\n PdfExport.prototype.getPageNumberStyle = function (pageNumberType) {\n switch (pageNumberType) {\n case 'LowerLatin':\n return 2;\n case 'LowerRoman':\n return 3;\n case 'UpperLatin':\n return 4;\n case 'UpperRoman':\n return 5;\n default:\n return 1;\n }\n };\n PdfExport.prototype.setContentFormat = function (content, format) {\n if (!isNullOrUndefined(content.size)) {\n var width = content.size.width * 0.75;\n var height = content.size.height * 0.75;\n format = new PdfStringFormat(PdfTextAlignment.Left, PdfVerticalAlignment.Middle);\n if (!isNullOrUndefined(content.style.hAlign)) {\n switch (content.style.hAlign) {\n case 'Right':\n format.alignment = PdfTextAlignment.Right;\n break;\n case 'Center':\n format.alignment = PdfTextAlignment.Center;\n break;\n case 'Justify':\n format.alignment = PdfTextAlignment.Justify;\n break;\n default:\n format.alignment = PdfTextAlignment.Left;\n }\n }\n if (!isNullOrUndefined(content.style.vAlign)) {\n format = this.getVerticalAlignment(content.style.vAlign, format);\n }\n return { format: format, size: new SizeF(width, height) };\n }\n return null;\n };\n PdfExport.prototype.getPageSize = function (pageSize) {\n switch (pageSize) {\n case 'Letter':\n return new SizeF(612, 792);\n case 'Note':\n return new SizeF(540, 720);\n case 'Legal':\n return new SizeF(612, 1008);\n case 'A0':\n return new SizeF(2380, 3368);\n case 'A1':\n return new SizeF(1684, 2380);\n case 'A2':\n return new SizeF(1190, 1684);\n case 'A3':\n return new SizeF(842, 1190);\n case 'A5':\n return new SizeF(421, 595);\n case 'A6':\n return new SizeF(297, 421);\n case 'A7':\n return new SizeF(210, 297);\n case 'A8':\n return new SizeF(148, 210);\n case 'A9':\n return new SizeF(105, 148);\n // case 'A10':\n // return new SizeF(74, 105);\n case 'B0':\n return new SizeF(2836, 4008);\n case 'B1':\n return new SizeF(2004, 2836);\n case 'B2':\n return new SizeF(1418, 2004);\n case 'B3':\n return new SizeF(1002, 1418);\n case 'B4':\n return new SizeF(709, 1002);\n case 'B5':\n return new SizeF(501, 709);\n case 'Archa':\n return new SizeF(648, 864);\n case 'Archb':\n return new SizeF(864, 1296);\n case 'Archc':\n return new SizeF(1296, 1728);\n case 'Archd':\n return new SizeF(1728, 2592);\n case 'Arche':\n return new SizeF(2592, 3456);\n case 'Flsa':\n return new SizeF(612, 936);\n case 'HalfLetter':\n return new SizeF(396, 612);\n case 'Letter11x17':\n return new SizeF(792, 1224);\n case 'Ledger':\n return new SizeF(1224, 792);\n default:\n return new SizeF(595, 842);\n }\n };\n PdfExport.prototype.getDashStyle = function (dashStyle) {\n switch (dashStyle) {\n case 'Dash':\n return 1;\n case 'Dot':\n return 2;\n case 'DashDot':\n return 3;\n case 'DashDotDot':\n return 4;\n default:\n return 0;\n }\n };\n PdfExport.prototype.getPenFromContent = function (content) {\n var pen = new PdfPen(new PdfColor(0, 0, 0));\n if (!isNullOrUndefined(content.style) && content.style !== null && !isNullOrUndefined(content.style.penColor)) {\n var penColor = this.hexToRgb(content.style.penColor);\n pen = new PdfPen(new PdfColor(penColor.r, penColor.g, penColor.b));\n }\n return pen;\n };\n PdfExport.prototype.getBrushFromContent = function (content) {\n var brush = null;\n if (!isNullOrUndefined(content.style.textBrushColor)) {\n /* tslint:disable-next-line:max-line-length */\n var brushColor = this.hexToRgb(content.style.textBrushColor);\n brush = new PdfSolidBrush(new PdfColor(brushColor.r, brushColor.g, brushColor.b));\n }\n return brush;\n };\n PdfExport.prototype.hexToRgb = function (hex) {\n if (hex === null || hex === '' || hex.length !== 7) {\n throw new Error('please set valid hex value for color...');\n }\n hex = hex.substring(1);\n var bigint = parseInt(hex, 16);\n var r = (bigint >> 16) & 255;\n var g = (bigint >> 8) & 255;\n var b = bigint & 255;\n return { r: r, g: g, b: b };\n };\n PdfExport.prototype.getFontStyle = function (theme) {\n var fontStyle = PdfFontStyle.Regular;\n if (!isNullOrUndefined(theme) && theme.bold) {\n fontStyle |= PdfFontStyle.Bold;\n }\n if (!isNullOrUndefined(theme) && theme.italic) {\n fontStyle |= PdfFontStyle.Italic;\n }\n if (!isNullOrUndefined(theme) && theme.underline) {\n fontStyle |= PdfFontStyle.Underline;\n }\n if (!isNullOrUndefined(theme) && theme.strikeout) {\n fontStyle |= PdfFontStyle.Strikeout;\n }\n return fontStyle;\n };\n PdfExport.prototype.getBorderStyle = function (border) {\n var borders = new PdfBorders();\n if (!isNullOrUndefined(border)) {\n var borderWidth = border.width;\n // set border width\n var width = (!isNullOrUndefined(borderWidth) && typeof borderWidth === 'number') ? borderWidth * 0.75 : undefined;\n // set border color\n var color = new PdfColor(196, 196, 196);\n if (!isNullOrUndefined(border.color)) {\n var borderColor = this.hexToRgb(border.color);\n color = new PdfColor(borderColor.r, borderColor.g, borderColor.b);\n }\n var pen = new PdfPen(color, width);\n // set border dashStyle 'Solid , Dash, Dot, DashDot, DashDotDot'\n if (!isNullOrUndefined(border.dashStyle)) {\n pen.dashStyle = this.getDashStyle(border.dashStyle);\n }\n borders.all = pen;\n }\n else {\n borders.all = new PdfPen(new PdfColor(234, 234, 234));\n }\n return borders;\n };\n PdfExport.prototype.destroy = function () {\n //destroy for exporting\n };\n return PdfExport;\n}());\n\nvar __extends$31 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `CommandColumn` used to render command column in grid\n *\n * @hidden\n */\nvar CommandColumnRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$31(CommandColumnRenderer, _super);\n function CommandColumnRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.buttonElement = _this.parent.createElement('button', {});\n _this.unbounDiv = _this.parent.createElement('div', { className: 'e-unboundcelldiv', styles: 'display: inline-block' });\n _this.childRefs = [];\n _this.element = _this.parent.createElement('TD', {\n className: 'e-rowcell e-unboundcell', attrs: {\n role: 'gridcell', tabindex: '-1'\n }\n });\n _this.parent.on(destroy, _this.destroyButtons, _this);\n _this.parent.on(commandColumnDestroy, _this.destroyButtons, _this);\n return _this;\n }\n CommandColumnRenderer.prototype.destroyButtons = function (args) {\n for (var i = 0; i < this.childRefs.length; i++) {\n if (this.childRefs[parseInt(i.toString(), 10)] && !this.childRefs[parseInt(i.toString(), 10)].isDestroyed) {\n this.childRefs[parseInt(i.toString(), 10)].destroy();\n if (this.childRefs[parseInt(i.toString(), 10)].element) {\n this.childRefs[parseInt(i.toString(), 10)].element.innerHTML = '';\n }\n }\n }\n this.childRefs = [];\n if (args.type === 'refreshCommandColumn') {\n var elem = this.parent.element.querySelectorAll('.e-unboundcell');\n if (elem.length) {\n for (var i = 0; i < elem.length; i++) {\n if (elem[parseInt(i.toString(), 10)]) {\n if (elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv')) {\n elem[parseInt(i.toString(), 10)].querySelector('.e-unboundcelldiv').innerHTML = '';\n }\n elem[parseInt(i.toString(), 10)].innerHTML = '';\n }\n }\n elem = null;\n }\n }\n else {\n this.parent.off(destroy, this.destroyButtons);\n this.parent.off(commandColumnDestroy, this.destroyButtons);\n }\n };\n /**\n * Function to render the cell content based on Column object.\n *\n * @param {cell} cell - specifies the cell\n * @param {Object} data - specifies the data\n * @param {Object} attributes - specifies the attributes\n * @param {boolean} isVirtualEdit - specifies virtual scroll editing\n * @returns {Element} returns the element\n */\n CommandColumnRenderer.prototype.render = function (cell, data, attributes$$1, isVirtualEdit) {\n var node = this.element.cloneNode();\n var uid = 'uid';\n node.appendChild(this.unbounDiv.cloneNode());\n node.setAttribute('aria-label', this.localizer.getConstant('CommandColumnAria') + cell.column.headerText);\n if (cell.column.commandsTemplate) {\n if (this.parent.isReact && typeof (cell.column.commandsTemplate) !== 'string') {\n var tempID = this.parent + 'commandsTemplate';\n cell.column.getColumnTemplate()(data, this.parent, 'commandsTemplate', tempID, null, null, node.firstElementChild);\n this.parent.renderTemplates();\n }\n else {\n appendChildren(node.firstElementChild, cell.column.getColumnTemplate()(data));\n }\n }\n else {\n for (var _i = 0, _a = cell.commands; _i < _a.length; _i++) {\n var command = _a[_i];\n node = this.renderButton(node, command, attributes$$1.index, command[\"\" + uid]);\n }\n }\n this.setAttributes(node, cell, attributes$$1);\n if ((!this.parent.enableVirtualization && this.parent.isEdit) || isVirtualEdit) {\n addClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n }\n else {\n addClass([].slice.call(node.getElementsByClassName('e-save-cancel')), 'e-hide');\n removeClass([].slice.call(node.getElementsByClassName('e-edit-delete')), 'e-hide');\n }\n return node;\n };\n CommandColumnRenderer.prototype.renderButton = function (node, buttonOption, index, uid) {\n var button = this.buttonElement.cloneNode();\n attributes(button, {\n 'id': this.parent.element.id + (buttonOption.type || '') + '_' + index + '_' + uid, 'type': 'button',\n title: !isNullOrUndefined(buttonOption.title) ? buttonOption.title :\n buttonOption.buttonOption.content || this.localizer.getConstant(buttonOption.type) || buttonOption.type,\n 'data-uid': uid\n });\n button.onclick = buttonOption.buttonOption.click;\n buttonOption.buttonOption.cssClass = this.parent.cssClass ?\n buttonOption.buttonOption.cssClass + ' ' + this.parent.cssClass : buttonOption.buttonOption.cssClass;\n var buttonObj = new Button(buttonOption.buttonOption, button);\n this.childRefs.push(buttonObj);\n buttonObj.commandType = buttonOption.type;\n node.firstElementChild.appendChild(buttonObj.element);\n switch (buttonOption.type) {\n case 'Edit':\n case 'Delete':\n addClass([button], ['e-edit-delete', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n case 'Cancel':\n case 'Save':\n addClass([button], ['e-save-cancel', 'e-' + buttonOption.type.toLowerCase() + 'button']);\n break;\n }\n return node;\n };\n return CommandColumnRenderer;\n}(CellRenderer));\n\n/**\n * `CommandColumn` used to handle the command column actions.\n *\n * @hidden\n */\nvar CommandColumn = /** @__PURE__ @class */ (function () {\n function CommandColumn(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.initiateRender();\n this.addEventListener();\n }\n CommandColumn.prototype.initiateRender = function () {\n var cellFac = this.locator.getService('cellRendererFactory');\n cellFac.addCellRenderer(CellType.CommandColumn, new CommandColumnRenderer(this.parent, this.locator));\n };\n CommandColumn.prototype.commandClickHandler = function (e) {\n var gObj = this.parent;\n var target = closest(e.target, 'button');\n if (!target || !closest(e.target, '.e-unboundcell')) {\n return;\n }\n var buttonObj = target.ej2_instances[0];\n var type = buttonObj.commandType;\n var uid = target.getAttribute('data-uid');\n var commandColumn;\n var row$$1 = gObj.getRowObjectFromUID(closest(target, '.' + row).getAttribute('data-uid'));\n var cols = this.parent.columnModel;\n for (var i = 0; i < cols.length; i++) {\n if (cols[parseInt(i.toString(), 10)].commands) {\n var commandCols = cols[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCols.length; j++) {\n var idInString = 'uid';\n var typeInString = 'type';\n if (commandCols[parseInt(j.toString(), 10)][\"\" + idInString] === uid && commandCols[parseInt(j.toString(), 10)][\"\" + typeInString] === type) {\n commandColumn = commandCols[parseInt(j.toString(), 10)];\n }\n else {\n var buttons = [].slice.call(closest(target, '.e-unboundcell').querySelectorAll('button'));\n var index = buttons.findIndex(function (ele) { return ele === target; });\n if (index < commandCols.length && commandCols[parseInt(index.toString(), 10)][\"\" + typeInString] === type) {\n commandColumn = commandCols[parseInt(index.toString(), 10)];\n }\n }\n }\n }\n }\n var args = {\n cancel: false,\n target: target,\n commandColumn: commandColumn,\n rowData: isNullOrUndefined(row$$1) ? undefined : row$$1.data\n };\n this.parent.trigger(commandClick, args, function (commandclickargs) {\n if (buttonObj.disabled || !gObj.editModule || commandclickargs.cancel) {\n return;\n }\n switch (type) {\n case 'Edit':\n gObj.editModule.endEdit();\n gObj.editModule.startEdit(closest(target, 'tr'));\n break;\n case 'Cancel':\n gObj.editModule.closeEdit();\n break;\n case 'Save':\n gObj.editModule.endEdit();\n break;\n case 'Delete':\n if (gObj.editSettings.mode !== 'Batch') {\n gObj.editModule.endEdit();\n }\n gObj.commandDelIndex = parseInt(closest(target, 'tr').getAttribute(dataRowIndex), 10);\n gObj.clearSelection();\n //for toogle issue when dbl click\n gObj.selectRow(gObj.commandDelIndex, false);\n gObj.editModule.deleteRecord();\n gObj.commandDelIndex = undefined;\n break;\n }\n });\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n */\n CommandColumn.prototype.getModuleName = function () {\n return 'commandColumn';\n };\n /**\n * To destroy CommandColumn.\n *\n * @function destroy\n * @returns {void}\n */\n CommandColumn.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n };\n CommandColumn.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(click, this.commandClickHandler);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(initialEnd, this.load);\n this.parent.off(destroy, this.destroy);\n };\n CommandColumn.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(click, this.commandClickHandler, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(initialEnd, this.load, this);\n this.parent.on(destroy, this.destroy, this);\n };\n CommandColumn.prototype.keyPressHandler = function (e) {\n if (e.action === 'enter' && closest(e.target, '.e-unboundcelldiv')) {\n this.commandClickHandler(e);\n e.preventDefault();\n }\n };\n CommandColumn.prototype.load = function () {\n var uid = 'uid';\n var col = this.parent.columnModel;\n for (var i = 0; i < col.length; i++) {\n if (col[parseInt(i.toString(), 10)].commands) {\n var commandCol = col[parseInt(i.toString(), 10)].commands;\n for (var j = 0; j < commandCol.length; j++) {\n commandCol[parseInt(j.toString(), 10)][\"\" + uid] = getUid('gridcommand');\n }\n }\n }\n };\n return CommandColumn;\n}());\n\nvar menuClass = {\n header: '.' + gridHeader,\n content: '.' + gridContent,\n edit: '.e-inline-edit',\n batchEdit: '.e-editedbatchcell',\n editIcon: 'e-edit',\n pager: '.e-gridpager',\n delete: 'e-delete',\n save: 'e-save',\n cancel: 'e-cancel',\n copy: 'e-copy',\n pdf: 'e-pdfexport',\n group: 'e-icon-group',\n ungroup: 'e-icon-ungroup',\n csv: 'e-csvexport',\n excel: 'e-excelexport',\n fPage: 'e-icon-first',\n nPage: 'e-icon-next',\n lPage: 'e-icon-last',\n pPage: 'e-icon-prev',\n ascending: 'e-icon-ascending',\n descending: 'e-icon-descending',\n groupHeader: 'e-groupdroparea',\n touchPop: 'e-gridpopup'\n};\n/**\n * The `ContextMenu` module is used to handle context menu actions.\n */\nvar ContextMenu$1 = /** @__PURE__ @class */ (function () {\n function ContextMenu$$1(parent, serviceLocator) {\n this.defaultItems = {};\n this.disableItems = [];\n this.hiddenItems = [];\n this.localeText = this.setLocaleKey();\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu$$1.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(initialLoad, this.render, this);\n this.parent.on(destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ContextMenu$$1.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.render);\n this.parent.off(uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(destroy, this.destroy);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler.bind(this));\n };\n ContextMenu$$1.prototype.keyDownHandler = function (e) {\n if (e.code === 'Tab' || e.which === 9) {\n this.contextMenu.close();\n }\n if (e.code === 'Escape') {\n this.contextMenu.close();\n this.parent.notify(restoreFocus, {});\n }\n };\n ContextMenu$$1.prototype.render = function () {\n this.parent.element.classList.add('e-noselect');\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_cmenu' });\n EventHandler.add(this.element, 'keydown', this.keyDownHandler.bind(this));\n this.parent.element.appendChild(this.element);\n var target = '#' + this.gridID;\n this.contextMenu = new ContextMenu({\n items: this.getMenuItems(),\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n target: target,\n select: this.contextMenuItemClick.bind(this),\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n onOpen: this.contextMenuOpen.bind(this),\n onClose: this.contextMenuOnClose.bind(this),\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu'\n });\n this.contextMenu.appendTo(this.element);\n };\n ContextMenu$$1.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.contextMenu) {\n this.contextMenu.destroy();\n remove(this.element);\n this.parent.element.classList.remove('e-noselect');\n }\n this.render();\n }\n };\n ContextMenu$$1.prototype.getMenuItems = function () {\n var menuItems = [];\n var exportItems = [];\n for (var _i = 0, _a = this.parent.contextMenuItems; _i < _a.length; _i++) {\n var item = _a[_i];\n if (typeof item === 'string' && this.getDefaultItems().indexOf(item) !== -1) {\n if (item.toLocaleLowerCase().indexOf('export') !== -1) {\n exportItems.push(this.buildDefaultItems(item));\n }\n else {\n menuItems.push(this.buildDefaultItems(item));\n }\n }\n else if (typeof item !== 'string') {\n menuItems.push(item);\n }\n }\n if (exportItems.length > 0) {\n var exportGroup = this.buildDefaultItems('export');\n exportGroup.items = exportItems;\n menuItems.push(exportGroup);\n }\n return menuItems;\n };\n ContextMenu$$1.prototype.getLastPage = function () {\n var totalpage = Math.floor(this.parent.pageSettings.totalRecordsCount / this.parent.pageSettings.pageSize);\n if (this.parent.pageSettings.totalRecordsCount % this.parent.pageSettings.pageSize) {\n totalpage += 1;\n }\n return totalpage;\n };\n ContextMenu$$1.prototype.contextMenuOpen = function () {\n this.isOpen = true;\n };\n /**\n * @param {ContextMenuClickEventArgs} args - specifies the ContextMenuClickEventArgs argument type\n * @returns {void}\n * @hidden\n */\n ContextMenu$$1.prototype.contextMenuItemClick = function (args) {\n var item = this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Edit':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode === 'Batch') {\n if (this.row && this.cell && !isNaN(parseInt(this.cell.getAttribute(dataColIndex), 10))) {\n this.parent.editModule.editCell(parseInt(this.row.getAttribute(dataRowIndex), 10), \n // eslint-disable-next-line\n this.parent.getColumns()[parseInt(this.cell.getAttribute(dataColIndex), 10)].field);\n }\n }\n else {\n this.parent.editModule.endEdit();\n this.parent.editModule.startEdit(this.row);\n }\n }\n break;\n case 'Delete':\n if (this.parent.editModule) {\n if (this.parent.editSettings.mode !== 'Batch') {\n this.parent.editModule.endEdit();\n }\n if (this.parent.getSelectedRecords().length === 1) {\n this.parent.editModule.deleteRow(this.row);\n }\n else {\n this.parent.deleteRecord();\n }\n }\n break;\n case 'Save':\n if (this.parent.editModule) {\n this.parent.editModule.endEdit();\n }\n break;\n case 'Cancel':\n if (this.parent.editModule) {\n this.parent.editModule.closeEdit();\n }\n break;\n case 'Copy':\n this.parent.copy();\n break;\n case 'PdfExport':\n this.parent.pdfExport();\n break;\n case 'ExcelExport':\n this.parent.excelExport();\n break;\n case 'CsvExport':\n this.parent.csvExport();\n break;\n case 'SortAscending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.isOpen = false;\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'FirstPage':\n this.parent.goToPage(1);\n break;\n case 'PrevPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage - 1);\n break;\n case 'LastPage':\n this.parent.goToPage(this.getLastPage());\n break;\n case 'NextPage':\n this.parent.goToPage(this.parent.pageSettings.currentPage + 1);\n break;\n }\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(contextMenuClick, args);\n };\n ContextMenu$$1.prototype.contextMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof ContextMenu) {\n this.updateItemStatus();\n }\n this.parent.notify(selectRowOnContextOpen, { isOpen: false });\n };\n ContextMenu$$1.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ContextMenu$$1.prototype.updateItemStatus = function () {\n this.contextMenu.showItems(this.hiddenItems);\n this.contextMenu.enableItems(this.disableItems);\n this.hiddenItems = [];\n this.disableItems = [];\n this.isOpen = false;\n };\n ContextMenu$$1.prototype.contextMenuBeforeOpen = function (args) {\n var closestGrid = closest(args.event.target, '.e-grid');\n if (args.event && closestGrid && closestGrid !== this.parent.element) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + menuClass.groupHeader)\n || closest(args.event.target, '.' + menuClass.touchPop) ||\n closest(args.event.target, '.e-summarycell') ||\n closest(args.event.target, '.e-groupcaption') ||\n closest(args.event.target, '.e-filterbarcell'))) {\n args.cancel = true;\n }\n else {\n this.targetColumn = this.getColumn(args.event);\n if (parentsUntil(args.event.target, 'e-grid')) {\n this.targetRowdata = this.parent.getRowInfo(args.event.target);\n }\n if ((isNullOrUndefined(args.parentItem)) && this.targetColumn) {\n if (this.targetRowdata.cell) {\n this.parent.notify(selectRowOnContextOpen, { isOpen: true });\n this.selectRow(args.event, (this.targetRowdata.cell.classList.contains('e-selectionbackground')\n && this.parent.selectionSettings.type === 'Multiple') ? false : true);\n }\n }\n var hideSepItems = [];\n var showSepItems = [];\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1) {\n if (this.ensureDisabledStatus(key)) {\n this.disableItems.push(item.text);\n }\n if (args.event && (this.ensureTarget(args.event.target, menuClass.edit) ||\n this.ensureTarget(args.event.target, menuClass.batchEdit))) {\n if (key !== 'Save' && key !== 'Cancel') {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.parent.editModule && this.parent.editSettings.mode === 'Batch' &&\n ((closest(args.event.target, '.e-gridform')) ||\n this.parent.editModule.getBatchChanges()[changedRecords].length ||\n this.parent.editModule.getBatchChanges()[addedRecords].length ||\n this.parent.editModule.getBatchChanges()[deletedRecords].length) && (key === 'Save' || key === 'Cancel')) {\n continue;\n }\n else if (isNullOrUndefined(args.parentItem) && args.event\n && !this.ensureTarget(args.event.target, dItem.target)) {\n this.hiddenItems.push(item.text);\n }\n }\n else if (item.target && args.event &&\n !this.ensureTarget(args.event.target, item.target)) {\n if (item.separator) {\n hideSepItems.push(item.id);\n }\n else {\n this.hiddenItems.push(item.text);\n }\n }\n else if (this.ensureTarget(args.event.target, item.target) && item.separator) {\n showSepItems.push(item.id);\n }\n }\n if (showSepItems.length > 0) {\n this.contextMenu.showItems(showSepItems, true);\n }\n this.contextMenu.enableItems(this.disableItems, false);\n this.contextMenu.hideItems(this.hiddenItems);\n if (hideSepItems.length > 0) {\n this.contextMenu.hideItems(hideSepItems, true);\n }\n this.eventArgs = args.event;\n args.column = this.targetColumn;\n args.rowInfo = this.targetRowdata;\n this.parent.trigger(contextMenuOpen, args);\n if (args.cancel || (this.hiddenItems.length === args.items.length && !args.parentItem)) {\n this.updateItemStatus();\n args.cancel = true;\n }\n }\n applyBiggerTheme(this.parent.element, this.contextMenu.element.parentElement);\n };\n ContextMenu$$1.prototype.ensureTarget = function (targetElement, selector) {\n var target = targetElement;\n if (this.ensureFrozenHeader(targetElement) && (selector === menuClass.header || selector === menuClass.content)) {\n target = closest(targetElement, selector === menuClass.header ? 'thead' : tbody);\n }\n else if (selector === menuClass.content || selector === menuClass.header) {\n target = parentsUntil(closest(targetElement, '.' + table), selector.substr(1, selector.length));\n }\n else {\n target = closest(targetElement, selector);\n }\n return target && parentsUntil(target, 'e-grid') === this.parent.element;\n };\n ContextMenu$$1.prototype.ensureFrozenHeader = function (targetElement) {\n return (this.parent.isFrozenGrid() || this.parent.frozenRows)\n && closest(targetElement, menuClass.header) ? true : false;\n };\n ContextMenu$$1.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n status = !(this.parent.ensureModuleInjected(Resize) && !this.parent.isEdit)\n || (this.targetColumn && !this.targetColumn.field && item === 'AutoFit');\n break;\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n break;\n case 'Ungroup':\n if (!this.parent.allowGrouping || !this.parent.ensureModuleInjected(Group)\n || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'Edit':\n case 'Delete':\n case 'Save':\n case 'Cancel':\n if (!this.parent.editModule || (this.parent.getDataRows().length === 0)) {\n status = true;\n }\n break;\n case 'Copy':\n if ((this.parent.getSelectedRowIndexes().length === 0 && this.parent.getSelectedRowCellIndexes().length === 0) ||\n this.parent.getCurrentViewRecords().length === 0) {\n status = true;\n }\n break;\n case 'export':\n if ((!this.parent.allowExcelExport || !this.parent.excelExport) ||\n !this.parent.ensureModuleInjected(PdfExport) && !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'PdfExport':\n if (!(this.parent.allowPdfExport) || !this.parent.ensureModuleInjected(PdfExport)) {\n status = true;\n }\n break;\n case 'ExcelExport':\n case 'CsvExport':\n if (!(this.parent.allowExcelExport) || !this.parent.ensureModuleInjected(ExcelExport)) {\n status = true;\n }\n break;\n case 'SortAscending':\n case 'SortDescending':\n if ((!this.parent.allowSorting) || !this.parent.ensureModuleInjected(Sort) ||\n (this.targetColumn && !this.targetColumn.field)) {\n status = true;\n }\n else if (this.parent.ensureModuleInjected(Sort) && this.parent.sortSettings.columns.length > 0 && this.targetColumn) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLowerCase() === item.toLowerCase().replace('sort', '').toLocaleLowerCase()) {\n status = true;\n }\n }\n }\n break;\n case 'FirstPage':\n case 'PrevPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === 1)) {\n status = true;\n }\n break;\n case 'LastPage':\n case 'NextPage':\n if (!this.parent.allowPaging || !this.parent.ensureModuleInjected(Page) ||\n this.parent.getCurrentViewRecords().length === 0 ||\n (this.parent.ensureModuleInjected(Page) && this.parent.pageSettings.currentPage === this.getLastPage())) {\n status = true;\n }\n break;\n }\n return status;\n };\n /**\n * Gets the context menu element from the Grid.\n *\n * @returns {Element} returns the element\n */\n ContextMenu$$1.prototype.getContextMenu = function () {\n return this.element;\n };\n /**\n * Destroys the context menu component in the Grid.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ContextMenu$$1.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.contextMenu.destroy();\n if (this.element.parentNode) {\n remove(this.element);\n }\n this.removeEventListener();\n this.parent.element.classList.remove('e-noselect');\n };\n ContextMenu$$1.prototype.getModuleName = function () {\n return 'contextMenu';\n };\n ContextMenu$$1.prototype.generateID = function (item) {\n return this.gridID + '_cmenu_' + item;\n };\n ContextMenu$$1.prototype.getKeyFromId = function (id) {\n return id.replace(this.gridID + '_cmenu_', '');\n };\n ContextMenu$$1.prototype.buildDefaultItems = function (item) {\n var menuItem;\n switch (item) {\n case 'AutoFitAll':\n case 'AutoFit':\n menuItem = { target: menuClass.header };\n break;\n case 'Group':\n menuItem = { target: menuClass.header, iconCss: menuClass.group };\n break;\n case 'Ungroup':\n menuItem = { target: menuClass.header, iconCss: menuClass.ungroup };\n break;\n case 'Edit':\n menuItem = { target: menuClass.content, iconCss: menuClass.editIcon };\n break;\n case 'Delete':\n menuItem = { target: menuClass.content, iconCss: menuClass.delete };\n break;\n case 'Save':\n menuItem = { target: menuClass.edit, iconCss: menuClass.save };\n break;\n case 'Cancel':\n menuItem = { target: menuClass.edit, iconCss: menuClass.cancel };\n break;\n case 'Copy':\n menuItem = { target: menuClass.content, iconCss: menuClass.copy };\n break;\n case 'export':\n menuItem = { target: menuClass.content };\n break;\n case 'PdfExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.pdf };\n break;\n case 'ExcelExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.excel };\n break;\n case 'CsvExport':\n menuItem = { target: menuClass.content, iconCss: menuClass.csv };\n break;\n case 'SortAscending':\n menuItem = { target: menuClass.header, iconCss: menuClass.ascending };\n break;\n case 'SortDescending':\n menuItem = { target: menuClass.header, iconCss: menuClass.descending };\n break;\n case 'FirstPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.fPage };\n break;\n case 'PrevPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.pPage };\n break;\n case 'LastPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.lPage };\n break;\n case 'NextPage':\n menuItem = { target: menuClass.pager, iconCss: menuClass.nPage };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n target: menuItem.target, iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : ''\n };\n return this.defaultItems[\"\" + item];\n };\n ContextMenu$$1.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit',\n 'Group', 'Ungroup', 'Edit', 'Delete', 'Save', 'Cancel', 'Copy', 'export',\n 'PdfExport', 'ExcelExport', 'CsvExport', 'SortAscending', 'SortDescending',\n 'FirstPage', 'PrevPage', 'LastPage', 'NextPage'];\n };\n ContextMenu$$1.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Copy': 'Copy',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'Edit': 'EditRecord',\n 'Delete': 'DeleteRecord',\n 'Save': 'Save',\n 'Cancel': 'CancelButton',\n 'PdfExport': 'Pdfexport',\n 'ExcelExport': 'Excelexport',\n 'CsvExport': 'Csvexport',\n 'export': 'Export',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'FirstPage': 'FirstPage',\n 'LastPage': 'LastPage',\n 'PrevPage': 'PreviousPage',\n 'NextPage': 'NextPage'\n };\n return localeKeys;\n };\n ContextMenu$$1.prototype.getColumn = function (e) {\n var cell = closest(e.target, 'th.e-headercell');\n if (cell) {\n var uid = cell.querySelector('.e-headercelldiv, .e-stackedheadercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n else {\n var ele = (this.parent.getRowInfo(e.target).column);\n return ele || null;\n }\n };\n ContextMenu$$1.prototype.selectRow = function (e, isSelectable) {\n this.cell = e.target;\n this.row = closest(e.target, 'tr.e-row') || this.row;\n if (this.row && isSelectable && !parentsUntil(e.target, 'e-gridpager')) {\n this.parent.selectRow(parseInt(this.row.getAttribute(dataRowIndex), 10));\n }\n };\n return ContextMenu$$1;\n}());\n\n/**\n * FreezeRowModelGenerator is used to generate grid data rows with freeze row and column.\n *\n * @hidden\n */\nvar FreezeRowModelGenerator = /** @__PURE__ @class */ (function () {\n function FreezeRowModelGenerator(parent) {\n this.parent = parent;\n this.rowModelGenerator = new RowModelGenerator(this.parent);\n }\n FreezeRowModelGenerator.prototype.generateRows = function (data, notifyArgs, virtualRows) {\n var tableName;\n if (notifyArgs.renderFrozenRightContent || (notifyArgs.renderMovableContent && !this.parent.enableVirtualization)) {\n tableName = 'frozen-right';\n }\n else if (notifyArgs.renderMovableContent || notifyArgs.isFrozen) {\n tableName = 'movable';\n }\n else {\n tableName = this.parent.getFrozenLeftCount() ? 'frozen-left' : 'frozen-right';\n }\n if (notifyArgs.requestType === 'virtualscroll' && notifyArgs.virtualInfo.sentinelInfo.axis === 'X') {\n if (tableName !== 'movable') {\n return null;\n }\n }\n var row = this.parent.enableVirtualization && !notifyArgs.isFrozenRowsRender ? virtualRows\n : this.rowModelGenerator.generateRows(data, notifyArgs);\n for (var i = 0, len = row.length; i < len; i++) {\n row[parseInt(i.toString(), 10)].cells =\n splitFrozenRowObjectCells(this.parent, row[parseInt(i.toString(), 10)].cells, tableName);\n }\n return row;\n };\n return FreezeRowModelGenerator;\n}());\n\nvar __extends$32 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Freeze module is used to render grid content with frozen rows and columns\n *\n * @hidden\n */\nvar FreezeContentRender = /** @__PURE__ @class */ (function (_super) {\n __extends$32(FreezeContentRender, _super);\n function FreezeContentRender(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.isInitialRender = true;\n _this.widthService = locator.getService('widthService');\n _this.addEventListener();\n return _this;\n }\n FreezeContentRender.prototype.addEventListener = function () {\n this.parent.addEventListener(actionComplete, this.actionComplete.bind(this));\n this.parent.addEventListener(batchAdd, this.batchAdd.bind(this));\n this.parent.on(batchCancel, this.batchAdd.bind(this));\n this.parent.addEventListener(batchDelete, this.batchAdd.bind(this));\n this.parent.on(setHeightToFrozenElement, this.refreshScrollOffset);\n this.parent.on(columnVisibilityChanged, this.widthService.refreshFrozenScrollbar, this);\n };\n FreezeContentRender.prototype.batchAdd = function (args) {\n var isAdd = args.name !== 'batchCancel'\n && !(this.parent.frozenRows && this.parent.editSettings.newRowPosition === 'Top');\n if (this.parent.height !== 'auto' && (isAdd || args.name === 'batchCancel' || args.name === 'batchDelete')) {\n this.refreshScrollOffset();\n var height = this.getTable().offsetHeight;\n if (args.name === 'add' && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.parent.getContent().firstChild.scroll(0, height);\n }\n }\n };\n FreezeContentRender.prototype.setHeightToContent = function (height) {\n this.getFrozenContent().style.height = height.toString() + 'px';\n this.getMovableContent().style.height = height.toString() + 'px';\n };\n FreezeContentRender.prototype.actionComplete = function (args) {\n if (this.parent.editSettings.mode !== 'Dialog' && (args.requestType === 'add' || (args.requestType === 'cancel'\n && args.row.classList.contains(addedRow)))\n && (!this.parent.frozenRows || this.parent.editSettings.newRowPosition === 'Bottom') && this.parent.height !== 'auto') {\n this.refreshScrollOffset();\n var height = this.getTable().offsetHeight;\n if (args.requestType === 'add' && this.parent.editSettings.newRowPosition === 'Bottom') {\n this.parent.getContent().firstChild.scroll(0, height);\n }\n }\n };\n FreezeContentRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.removeEventListener(actionComplete, this.actionComplete);\n this.parent.removeEventListener(batchAdd, this.batchAdd);\n this.parent.off(columnVisibilityChanged, this.widthService.refreshFrozenScrollbar);\n };\n FreezeContentRender.prototype.renderPanel = function () {\n _super.prototype.renderPanel.call(this);\n var fDiv = this.parent.element.querySelector('.' + frozenContent);\n var mDiv = this.parent.element.querySelector('.' + movableContent);\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-left-content' });\n mDiv = this.parent.createElement('div', { className: movableContent });\n this.getPanel().querySelector('.' + content).appendChild(fDiv);\n this.getPanel().querySelector('.' + content).appendChild(mDiv);\n mDiv.style.scrollbarWidth = 'none';\n }\n this.setFrozenContent(fDiv);\n this.setMovableContent(mDiv);\n if (Browser.userAgent.indexOf('Mac OS') > -1 && Browser.info.name === 'safari' && !this.parent.enableVirtualization) {\n this.getPanel().firstElementChild.classList.add('e-mac-safari');\n }\n };\n FreezeContentRender.prototype.renderFrozenRigthPanel = function () {\n _super.prototype.renderPanel.call(this);\n };\n FreezeContentRender.prototype.renderEmpty = function (tbody$$1) {\n _super.prototype.renderEmpty.call(this, tbody$$1);\n this.getMovableContent().querySelector(tbody).innerHTML = '';\n addClass([this.getMovableContent().querySelector(tbody).querySelector('tr')], ['e-emptyrow']);\n this.getFrozenContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenColumns();\n this.getFrozenContent().style.borderRightWidth = '0px';\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('.' + frozenHeader).querySelector(tbody).innerHTML = '';\n this.parent.getHeaderContent().querySelector('.' + movableHeader).querySelector(tbody).innerHTML = '';\n }\n };\n FreezeContentRender.prototype.renderFrozenRightEmpty = function (tbody$$1) {\n _super.prototype.renderEmpty.call(this, tbody$$1);\n };\n FreezeContentRender.prototype.setFrozenContent = function (ele) {\n this.frozenContent = ele;\n };\n /**\n * @param {Element} ele - specifies the element\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.setMovableContent = function (ele) {\n this.movableContent = ele;\n };\n FreezeContentRender.prototype.getFrozenContent = function () {\n return this.frozenContent;\n };\n FreezeContentRender.prototype.getMovableContent = function () {\n return this.movableContent;\n };\n FreezeContentRender.prototype.getModelGenerator = function () {\n return new FreezeRowModelGenerator(this.parent);\n };\n FreezeContentRender.prototype.renderFrozenRightTable = function () {\n _super.prototype.renderTable.call(this);\n };\n FreezeContentRender.prototype.renderTable = function () {\n var mTbl;\n if (this.getFrozenContent().querySelector('.' + table) == null) {\n _super.prototype.renderTable.call(this);\n this.getFrozenContent().appendChild(this.getTable());\n mTbl = this.getTable().cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n }\n else {\n this.setTable(this.getFrozenContent().querySelector('.' + table));\n this.setColGroup(this.parent.element.querySelector('.' + gridHeader).querySelector(colGroup).cloneNode(true));\n this.getFrozenContent().querySelector('.' + table).appendChild(this.getColGroup());\n mTbl = this.getMovableContent().querySelector('.' + table);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n }\n if (this.getMovableContent().querySelector(colGroup)) {\n remove(this.getMovableContent().querySelector(colGroup));\n }\n var colGroup$$1 = ((this.parent.getHeaderContent().querySelector('.' + movableHeader).querySelector(colGroup)).cloneNode(true));\n mTbl.insertBefore(colGroup$$1, mTbl.querySelector(tbody));\n var style = this.parent.enableVirtualization ? '' : 'flex';\n this.getPanel().firstChild.style.display = style;\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-left-scrollbar', this.getScrollbarDisplay());\n };\n FreezeContentRender.prototype.getScrollbarDisplay = function () {\n var frozenDisplay = '';\n if ((this.parent.getFrozenColumns() && !this.parent.getVisibleFrozenColumns())\n || (this.parent.getFrozenLeftColumnsCount() && !this.parent.getVisibleFrozenLeftCount())) {\n frozenDisplay = 'none';\n }\n return frozenDisplay;\n };\n FreezeContentRender.prototype.renderHorizontalScrollbar = function (className, display, isRight) {\n var left = this.parent.createElement('div', { className: className, styles: 'display:' + display });\n var movable = this.parent.createElement('div', { className: 'e-movablescrollbar' });\n var child = this.parent.createElement('div', { className: 'e-movablechild' });\n var scrollbarHeight = getScrollBarWidth().toString();\n this.setScrollbarHeight(movable, scrollbarHeight);\n this.setScrollbarHeight(child, scrollbarHeight);\n movable.appendChild(child);\n this.appendScrollbar(left, movable, isRight);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FreezeContentRender.prototype.appendScrollbar = function (frozen, movable, isRight) {\n var parent = this.parent.createElement('div', { className: 'e-scrollbar', styles: 'display: flex' });\n parent.appendChild(frozen);\n parent.appendChild(movable);\n this.parent.getContent().appendChild(parent);\n };\n FreezeContentRender.prototype.setScrollbarHeight = function (ele, height) {\n ele.style.minHeight = height + 'px';\n ele.style.maxHeight = height + 'px';\n };\n /**\n * @param {NotifyArgs} args - specifies the NotifyArgs\n * @param {freezeTable} tableName - specifies the Freeze Table\n * @returns {void}\n * @hidden\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FreezeContentRender.prototype.setIsFrozen = function (args, tableName) {\n args.isFrozen = !args.isFrozen;\n };\n /**\n * @param {Row[]} modelData - specifies the modeldata\n * @param {NotifyArgs} args - specifies the args\n * @returns {freezeTable} returns the freeze table\n * @hidden\n */\n FreezeContentRender.prototype.setTbody = function (modelData, args) {\n var tableName;\n if (isNullOrUndefined(modelData[0].cells[0])) {\n this.getMovableContent().querySelector(tbody).innerHTML = '';\n }\n var cell = modelData[0].cells[0];\n var idx = cell.index;\n if (isUndefined(idx) && this.parent.isRowDragable()) {\n cell = modelData[0].cells[1];\n idx = cell.index;\n }\n if (idx === 0) {\n this.getPanel().firstChild.style.overflowX = 'hidden';\n if (this.parent.enableColumnVirtualization) {\n this.getMovableContent().style.overflowX = 'hidden';\n }\n }\n if (this.parent.enableColumnVirtualization && args.renderMovableContent\n && args.requestType === 'virtualscroll' && this.getMovableContent().scrollLeft > 0 && args.virtualInfo.columnIndexes[0] !== 0) {\n idx = this.parent.getFrozenColumns();\n }\n if (cell && cell.column) {\n tableName = cell.column.getFreezeTableName();\n }\n this.setIdx(idx);\n args.tableName = tableName;\n return tableName;\n };\n /**\n * @param {string} tableName - specifies the table name\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.splitRows = function (tableName) {\n if (tableName === frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else {\n this.movableRows = this.rows;\n }\n };\n /**\n * @param {NotifyArgs} args - specifies the notifyargs\n * @param {string} tableName - specifies the tableName\n * @returns {void}\n * @hidden\n */\n FreezeContentRender.prototype.renderNextFrozentPart = function (args, tableName) {\n var isVFTable = this.parent.enableVirtualization;\n if (tableName === frozenLeft) {\n if (isVFTable) {\n args.renderMovableContent = true;\n }\n this.refreshContentRows(extend({}, args));\n }\n };\n FreezeContentRender.prototype.appendContent = function (tbody$$1, frag, args, tableName) {\n if (this.parent.isReact && !isNullOrUndefined(this.parent.rowTemplate)) {\n tbody$$1 = frag;\n }\n else {\n tbody$$1.appendChild(frag);\n }\n if (tableName === frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody$$1);\n }\n else {\n this.refreshTbody(tbody$$1);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody$$1);\n this.refreshHeight();\n this.refreshScrollOffset();\n this.widthService.refreshFrozenScrollbar();\n }\n if (this.isInitialRender) {\n this.parent.scrollModule.setHeight();\n this.isInitialRender = false;\n }\n };\n FreezeContentRender.prototype.refreshScrollOffset = function () {\n if (this.parent.height !== 'auto') {\n var height = this.getTable().offsetHeight + 1;\n this.setHeightToContent(height);\n }\n this.parent.notify(refreshFrozenHeight, {});\n };\n /**\n * @param {string} tableName - specifies the table name\n * @returns {HTMLElement} returns the Html element\n * @hidden\n */\n FreezeContentRender.prototype.getFrozenHeader = function (tableName) {\n if (tableName === frozenLeft) {\n return this.parent.getHeaderContent().querySelector('.' + frozenHeader).querySelector(tbody);\n }\n else {\n return this.parent.getHeaderContent().querySelector('.' + movableHeader).querySelector(tbody);\n }\n };\n FreezeContentRender.prototype.refreshTbody = function (tbody$$1) {\n if (tbody$$1.childElementCount < 1) {\n tbody$$1.appendChild(this.parent.createElement('tr', { attrs: { role: 'row' } }).appendChild(this.parent.createElement('td')));\n }\n };\n FreezeContentRender.prototype.refreshHeight = function () {\n if (!this.parent.allowTextWrap) {\n this.parent.notify(freezeRender, { case: 'refreshHeight' });\n }\n this.getFrozenContent().style.borderRightWidth = '1px';\n };\n FreezeContentRender.prototype.setIdx = function (idx) {\n this.idx = idx;\n };\n FreezeContentRender.prototype.getIdx = function () {\n return this.idx;\n };\n /**\n * @param {freezeTable} tableName - specifies the table name\n * @returns {Element} returns the element\n * @hidden\n */\n FreezeContentRender.prototype.getTbody = function (tableName) {\n if (tableName === frozenLeft) {\n return this.getTable().querySelector(tbody);\n }\n else {\n return this.getMovableContent().querySelector(tbody);\n }\n };\n return FreezeContentRender;\n}(ContentRender));\nvar FreezeRender = /** @__PURE__ @class */ (function (_super) {\n __extends$32(FreezeRender, _super);\n function FreezeRender(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n FreezeRender.prototype.addEventListener = function () {\n this.eventHandler = [{ event: freezeRender, handler: this.refreshFreeze },\n { event: frozenHeight, handler: this.setFrozenHeight },\n { event: uiUpdate, handler: this.enableAfterRender }];\n addRemoveEventListener(this.parent, this.eventHandler, true, this);\n };\n FreezeRender.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.eventHandler, false);\n };\n FreezeRender.prototype.renderTable = function () {\n _super.prototype.renderTable.call(this);\n this.rfshMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n FreezeRender.prototype.renderPanel = function () {\n var fDiv = this.parent.element.querySelector('.' + frozenHeader);\n var mDiv = this.parent.element.querySelector('.' + movableHeader);\n _super.prototype.renderPanel.call(this);\n if (isNullOrUndefined(fDiv)) {\n fDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-left-header' });\n mDiv = this.parent.createElement('div', { className: movableHeader });\n this.getPanel().querySelector('.' + headerContent).appendChild(fDiv);\n this.getPanel().querySelector('.' + headerContent).appendChild(mDiv);\n }\n this.setFrozenHeader(fDiv);\n this.setMovableHeader(mDiv);\n };\n FreezeRender.prototype.renderFrozenRightPanel = function () {\n _super.prototype.renderPanel.call(this);\n };\n FreezeRender.prototype.renderFrozenRightTable = function () {\n _super.prototype.renderTable.call(this);\n };\n FreezeRender.prototype.refreshUI = function () {\n var tbody$$1 = this.getMovableHeader().querySelector(tbody);\n remove(this.getMovableHeader().querySelector('table'));\n _super.prototype.refreshUI.call(this);\n this.rfshMovable();\n this.getMovableHeader().querySelector(tbody).innerHTML = tbody$$1.innerHTML;\n this.updateColgroup();\n this.widthService.setWidthToColumns();\n if (!this.parent.enableVirtualization && !this.parent.isFrozenGrid()) {\n this.widthService.setWidthToTable();\n }\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap([].slice.call(this.movableHeader.querySelectorAll('tr.e-columnheader')), true);\n }\n this.parent.updateDefaultCursor();\n renderMovable(this.parent.getContentTable().querySelector(colGroup), this.parent.getFrozenColumns(), this.parent);\n this.widthService.refreshFrozenScrollbar();\n this.initializeHeaderDrag();\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n FreezeRender.prototype.refreshFrozenLeftUI = function () {\n _super.prototype.refreshUI.call(this);\n };\n FreezeRender.prototype.rfshMovable = function () {\n this.getFrozenHeader().appendChild(this.getTable());\n this.getMovableHeader().appendChild(this.createHeader(undefined, 'movable'));\n this.refreshStackedHdrHgt();\n this.addMovableFirstCls();\n };\n FreezeRender.prototype.addMovableFirstCls = function () {\n if (this.parent.getVisibleFrozenColumns()) {\n var movablefirstcell = [].slice.call(this.parent.element.querySelector('.' + movableHeader).querySelector('thead').getElementsByClassName('e-columnheader'));\n var len = movablefirstcell.length;\n for (var i = 0; i < len; i++) {\n var cells = 'cells';\n var element = movablefirstcell[parseInt(i.toString(), 10)][\"\" + cells][0];\n if (element) {\n addClass([element], ['e-movablefirst']);\n if (movablefirstcell[parseInt(i.toString(), 10)][\"\" + cells][0].rowSpan > 1) {\n i = i + (movablefirstcell[parseInt(i.toString(), 10)][\"\" + cells][0].rowSpan - 1);\n }\n }\n }\n }\n };\n FreezeRender.prototype.refreshFreeze = function (obj) {\n if (obj.case === 'filter') {\n var filterRow = this.getTable().querySelector('.e-filterbar');\n if (this.parent.allowFiltering && filterRow && this.getMovableHeader().querySelector('thead')) {\n this.getMovableHeader().querySelector('thead:not(.e-masked-thead)')\n .appendChild(this.filterRenderer(filterRow, this.parent.getFrozenColumns()));\n var elements = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n var args = {\n element: elem, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.bindInitialEvent(args);\n }\n }\n }\n else if (obj.case === 'textwrap' || obj.case === 'refreshHeight') {\n this.refreshHeight(obj);\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n FreezeRender.prototype.refreshHeight = function (obj) {\n var fRows;\n var mRows;\n var fHdr = this.getFrozenHeader();\n var mHdr = this.getMovableHeader();\n var cont = this.parent.getContent();\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var hdrClassList = this.parent.getHeaderContent().querySelector('.' + headerContent).classList;\n if (obj.case === 'textwrap') {\n if (wrapMode !== 'Header' || obj.isModeChg) {\n fRows = cont.querySelector('.' + frozenContent).querySelector('tbody').childNodes;\n mRows = cont.querySelector('.' + movableContent).querySelector('tbody').childNodes;\n this.setWrapHeight(fRows, mRows, obj.isModeChg, true);\n }\n if (wrapMode === 'Content' && this.parent.allowTextWrap) {\n hdrClassList.add('e-wrap');\n }\n else {\n hdrClassList.remove('e-wrap');\n }\n if (wrapMode === 'Both' || obj.isModeChg) {\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n }\n else {\n mRows = mHdr.querySelector(wrapMode === 'Content' ?\n tbody : 'thead').querySelectorAll('tr');\n fRows = fHdr.querySelector(wrapMode === 'Content' ?\n tbody : 'thead').querySelectorAll('tr');\n }\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, this.colDepth > 1);\n }\n this.refreshStackedHdrHgt();\n }\n else if (obj.case === 'refreshHeight') {\n this.setWrapHeight(cont.querySelector('.' + frozenContent).querySelectorAll('tr'), cont.querySelector('.' + movableContent).querySelectorAll('tr'), obj.isModeChg);\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fHdr.querySelectorAll('tr'), mHdr.querySelectorAll('tr'), obj.isModeChg);\n }\n }\n };\n FreezeRender.prototype.enableAfterRender = function (e) {\n if (e.module === 'scroll') {\n this.setFrozenHeight();\n }\n };\n FreezeRender.prototype.updateResizeHandler = function () {\n var elements = [].slice.call(this.parent.getHeaderContent().getElementsByClassName('e-rhandler'));\n for (var i = 0; i < elements.length; i++) {\n elements[parseInt(i.toString(), 10)].style.height = elements[parseInt(i.toString(), 10)].parentElement.offsetHeight + 'px';\n }\n };\n FreezeRender.prototype.setWrapHeight = function (fRows, mRows, isModeChg, isContReset, isStackedHdr) {\n var fRowHgt;\n var mRowHgt;\n var isWrap = this.parent.allowTextWrap;\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var tHead = this.parent.getHeaderContent().querySelector('thead');\n var tBody = this.parent.getHeaderContent().querySelector(tbody);\n var height = [];\n var width = [];\n for (var i = 0, len = fRows.length; i < len; i++) {\n if (isModeChg && ((!this.parent.rowHeight && tBody.className === 'e-hide') || (wrapMode === 'Header' && isContReset) ||\n ((wrapMode === 'Content' && tHead.contains(fRows[parseInt(i.toString(), 10)])) || (wrapMode === 'Header' && tBody.contains(fRows[parseInt(i.toString(), 10)])))) ||\n isStackedHdr) {\n fRows[parseInt(i.toString(), 10)].style.height = null;\n mRows[parseInt(i.toString(), 10)].style.height = null;\n }\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)])) {\n height[parseInt(i.toString(), 10)] = fRows[parseInt(i.toString(), 10)].getBoundingClientRect().height; //https://pagebuildersandwich.com/increased-plugins-performance-200/\n width[parseInt(i.toString(), 10)] = mRows[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n }\n fRowHgt = height[parseInt(i.toString(), 10)];\n mRowHgt = width[parseInt(i.toString(), 10)];\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && fRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && fRowHgt < mRowHgt) || (!isWrap && fRowHgt < mRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === false))) {\n fRows[parseInt(i.toString(), 10)].style.height = mRowHgt + 'px';\n }\n if (mRows && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)]) && mRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && fRowHgt > mRowHgt) || (!isWrap && fRowHgt > mRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === true))) {\n mRows[parseInt(i.toString(), 10)].style.height = fRowHgt + 'px';\n }\n }\n if (isWrap && this.parent.height !== 'auto') {\n this.setFrozenHeight();\n }\n };\n FreezeRender.prototype.setFrozenHeight = function (height) {\n if (height === void 0) { height = getScrollBarWidth(); }\n var movableContentHeight = this.parent.element.querySelector('.' + movableContent).getBoundingClientRect().height;\n var movableContent$$1 = this.parent.element.querySelector('.' + movableContent);\n var frozenContent$$1 = this.parent.element.querySelector('.' + frozenContent);\n var contentScrollWidth = this.parent.getContent().scrollWidth;\n var contentTableScrollWidth = this.parent.element.querySelector('.e-movablecontent table').scrollWidth +\n this.parent.getContentTable().scrollWidth;\n if (movableContent$$1.scrollWidth - movableContent$$1.clientWidth) {\n frozenContent$$1.style.height = movableContentHeight -\n height + 'px';\n frozenContent$$1.style.borderBottom = '';\n }\n else {\n frozenContent$$1.style.height = movableContentHeight + 'px';\n if (((frozenContent$$1.scrollHeight <= frozenContent$$1.clientHeight) ||\n (movableContent$$1.scrollHeight <= movableContent$$1.clientHeight))\n && contentScrollWidth === contentTableScrollWidth) {\n this.parent.scrollModule.removePadding();\n }\n frozenContent$$1.style.borderBottom = '0px';\n }\n };\n FreezeRender.prototype.refreshStackedHdrHgt = function () {\n var fRowSpan;\n var mRowSpan;\n var fTr = [].slice.call(this.getFrozenHeader().getElementsByClassName('e-columnheader'));\n var mTr = [].slice.call(this.getMovableHeader().getElementsByClassName('e-columnheader'));\n for (var i = 0, len = fTr.length; i < len; i++) {\n fRowSpan = this.getRowSpan(fTr[parseInt(i.toString(), 10)]);\n mRowSpan = this.getRowSpan(mTr[parseInt(i.toString(), 10)]);\n if (fRowSpan.min > 1 || this.parent.isRowDragable() &&\n isNullOrUndefined(this.parent.getFrozenVirtualHeader().querySelector('.e-stackedheadercell'))) {\n this.updateStackedHdrRowHgt(i, fRowSpan.max, fTr[parseInt(i.toString(), 10)], mTr);\n }\n else if (mRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, mRowSpan.max, mTr[parseInt(i.toString(), 10)], fTr);\n }\n }\n if (this.parent.allowResizing) {\n this.updateResizeHandler();\n }\n var cols = this.parent.columns;\n for (var i = 0, len = cols.length; i < len; i++) {\n if ((this.parent.isRowDragable() && !isNullOrUndefined(cols[parseInt(i.toString(), 10)].columns)) &&\n isNullOrUndefined(this.parent.getFrozenVirtualHeader().querySelector('.e-stackedheadercell'))) {\n var emptyCellIndex = this.frozenHeader.querySelectorAll('.e-columnheader').length - 1;\n this.frozenHeader.querySelectorAll('.e-columnheader')[parseInt(emptyCellIndex.toString(), 10)].remove();\n break;\n }\n }\n };\n FreezeRender.prototype.getRowSpan = function (row$$1) {\n var rSpan;\n var minRowSpan;\n var maxRowSpan;\n var lastCellIndex = row$$1.childElementCount - 1;\n if (this.parent.isRowDragable() && this.parent.getFrozenMode() === 'Right') {\n row$$1.children[parseInt(lastCellIndex.toString(), 10)].remove();\n }\n for (var i = 0, len = row$$1.childElementCount; i < len; i++) {\n if (i === 0) {\n minRowSpan = row$$1.children[0].rowSpan;\n }\n rSpan = row$$1.children[parseInt(i.toString(), 10)].rowSpan;\n minRowSpan = Math.min(rSpan, minRowSpan);\n maxRowSpan = Math.max(rSpan, minRowSpan);\n }\n return { min: minRowSpan, max: maxRowSpan };\n };\n FreezeRender.prototype.updateStackedHdrRowHgt = function (idx, maxRowSpan, row$$1, rows) {\n var height = 0;\n for (var i = 0; i < maxRowSpan; i++) {\n height += rows[idx + i].style.height ?\n parseInt(rows[idx + i].style.height, 10) : rows[idx + i].offsetHeight;\n }\n row$$1.style.height = height + 'px';\n };\n FreezeRender.prototype.setFrozenHeader = function (ele) {\n this.frozenHeader = ele;\n };\n /**\n * @param {Element} ele - specifies the element\n * @returns {void}\n * @hidden\n */\n FreezeRender.prototype.setMovableHeader = function (ele) {\n this.movableHeader = ele;\n };\n FreezeRender.prototype.getFrozenHeader = function () {\n return this.frozenHeader;\n };\n FreezeRender.prototype.getMovableHeader = function () {\n return this.movableHeader;\n };\n /**\n * @returns {void}\n * @hidden\n */\n FreezeRender.prototype.updateColgroup = function () {\n var mTable = this.getMovableHeader().querySelector('table');\n remove(this.getMovableHeader().querySelector(colGroup));\n mTable.insertBefore(renderMovable(this.getFrozenHeader().querySelector(colGroup), this.parent.getFrozenColumns(), this.parent), mTable.querySelector('thead'));\n };\n FreezeRender.prototype.filterRenderer = function (ele, frozenColumn, total) {\n var clone = ele.cloneNode(true);\n clone.innerHTML = '';\n var end = total ? total : this.parent.getColumns().length;\n for (var i = frozenColumn; i < end; i++) {\n clone.appendChild(ele.removeChild(ele.children[parseInt(frozenColumn.toString(), 10)]));\n }\n return clone;\n };\n return FreezeRender;\n}(HeaderRender));\n\nvar __extends$34 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * ColumnFreezeHeaderRenderer is used to freeze the columns header at right and left\n *\n * @hidden\n */\nvar ColumnFreezeHeaderRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$34(ColumnFreezeHeaderRenderer, _super);\n function ColumnFreezeHeaderRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.addEventListener();\n return _this;\n }\n ColumnFreezeHeaderRenderer.prototype.addEventListener = function () {\n this.evtHandlers = [{ event: freezeRender, handler: this.refreshFreeze },\n { event: refreshFrozenColumns, handler: this.refreshFrozenColumns },\n { event: setReorderDestinationElement, handler: this.setReorderElement },\n { event: columnVisibilityChanged, handler: this.setVisible }];\n addRemoveEventListener(this.parent, this.evtHandlers, true, this);\n };\n ColumnFreezeHeaderRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n addRemoveEventListener(this.parent, this.evtHandlers, false);\n };\n ColumnFreezeHeaderRenderer.prototype.setReorderElement = function (args) {\n this.destEle = args.ele;\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFrozenColumns = function (args) {\n if (!args.parent) {\n this.parent.setProperties({ columns: args.columns }, true);\n }\n var isFrozenLeft = parentsUntil(this.destEle, 'e-frozen-left-header');\n var isFrozenRight = parentsUntil(this.destEle, 'e-frozen-right-header');\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n args.column.freeze = null;\n if (isFrozenLeft) {\n args.column.freeze = 'Left';\n }\n else if (isFrozenRight) {\n args.column.freeze = 'Right';\n }\n this.parent.setFrozenCount();\n args.cancel = left !== this.parent.getFrozenLeftColumnsCount() || right !== this.parent.getFrozenRightColumnsCount();\n if (args.cancel) {\n this.parent.refreshColumns();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.setWrapHeight = function (fRows, mRows, isModeChg, isContReset, isStackedHdr, frRows) {\n var fRowHgt;\n var mRowHgt;\n var frRowHgt;\n var isWrap = this.parent.allowTextWrap;\n var tBody = this.parent.getHeaderContent().querySelector(tbody);\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n var tHead = this.parent.getHeaderContent().querySelector('thead');\n var height = [];\n var width = [];\n var rightHeight = [];\n for (var i = 0, len = fRows.length; i < len; i++) { //separate loop for performance issue\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)])) {\n if (frRows) {\n rightHeight[parseInt(i.toString(), 10)] = frRows[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n }\n width[parseInt(i.toString(), 10)] = mRows[parseInt(i.toString(), 10)].getBoundingClientRect().height;\n height[parseInt(i.toString(), 10)] = fRows[parseInt(i.toString(), 10)].getBoundingClientRect().height; //https://pagebuildersandwich.com/increased-plugins-performance-200/\n }\n }\n for (var i = 0, len = fRows.length; i < len; i++) {\n if (isModeChg && (((wrapMode === 'Content' && tHead.contains(fRows[parseInt(i.toString(), 10)]))\n || (wrapMode === 'Header' && tBody.contains(fRows[parseInt(i.toString(), 10)]))) || (wrapMode === 'Header' && isContReset)) || isStackedHdr) {\n if (!isNullOrUndefined(frRows) && frRows[parseInt(i.toString(), 10)]) {\n frRows[parseInt(i.toString(), 10)].style.height = null;\n }\n fRows[parseInt(i.toString(), 10)].style.height = null;\n mRows[parseInt(i.toString(), 10)].style.height = null;\n }\n fRowHgt = height[parseInt(i.toString(), 10)];\n mRowHgt = width[parseInt(i.toString(), 10)];\n frRowHgt = rightHeight[parseInt(i.toString(), 10)] ? rightHeight[parseInt(i.toString(), 10)] : 0;\n var maxHeight = Math.max(fRowHgt, mRowHgt, frRowHgt);\n if (!isNullOrUndefined(fRows[parseInt(i.toString(), 10)]) && fRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && fRowHgt < maxHeight) || (!isWrap && fRowHgt < maxHeight) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === false))) {\n fRows[parseInt(i.toString(), 10)].style.height = maxHeight + 'px';\n }\n if (mRows && !isNullOrUndefined(mRows[parseInt(i.toString(), 10)]) && mRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && maxHeight > mRowHgt) || (!isWrap && maxHeight > mRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === true))) {\n mRows[parseInt(i.toString(), 10)].style.height = maxHeight + 'px';\n }\n if (frRows && !isNullOrUndefined(frRows[parseInt(i.toString(), 10)]) && frRows[parseInt(i.toString(), 10)].childElementCount\n && ((isWrap && maxHeight > frRowHgt) || (!isWrap && maxHeight > frRowHgt) || (this.parent.allowResizing\n && this.parent.resizeModule && this.parent.resizeModule.isFrozenColResized === true))) {\n frRows[parseInt(i.toString(), 10)].style.height = maxHeight + 'px';\n }\n }\n if (isWrap) {\n this.setFrozenHeight();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshHeight = function (obj) {\n var isLeftRight = this.parent.getFrozenMode() === leftRight;\n var fRows;\n var frRows;\n var mRows;\n var frHdr = this.getFrozenRightHeader();\n var fHdr = this.parent.getHeaderContent().querySelector('.' + frozenHeader);\n var cont = this.parent.getContent();\n var mHdr = this.getMovableHeader();\n var hdrClassList = this.parent.getHeaderContent().querySelector('.' + headerContent).classList;\n var wrapMode = this.parent.textWrapSettings.wrapMode;\n if (obj.case === 'textwrap') {\n if (wrapMode !== 'Header' || obj.isModeChg) {\n if (isLeftRight) {\n frRows = cont.querySelector('.e-frozen-right-content').querySelectorAll('tr');\n }\n mRows = cont.querySelector('.' + movableContent).querySelectorAll('tr');\n fRows = cont.querySelector('.' + frozenContent).querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, true, false, frRows);\n }\n if (wrapMode === 'Content' && this.parent.allowTextWrap) {\n hdrClassList.add('e-wrap');\n }\n else {\n hdrClassList.remove('e-wrap');\n }\n if (wrapMode === 'Both' || obj.isModeChg) {\n if (isLeftRight) {\n frRows = frHdr.querySelectorAll('tr');\n }\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n }\n else {\n if (isLeftRight) {\n frRows = frHdr.querySelector(wrapMode === 'Content' ?\n tbody : 'thead').querySelectorAll('tr');\n }\n fRows = fHdr.querySelector(wrapMode === 'Content' ?\n tbody : 'thead').querySelectorAll('tr');\n mRows = mHdr.querySelector(wrapMode === 'Content' ?\n tbody : 'thead').querySelectorAll('tr');\n }\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, this.colDepth > 1, frRows);\n }\n this.refreshStackedHdrHgt();\n }\n else if (obj.case === 'refreshHeight') {\n mRows = cont.querySelector('.' + movableContent).querySelectorAll('tr');\n fRows = cont.querySelector('.' + frozenContent).querySelectorAll('tr');\n if (isLeftRight) {\n frRows = cont.querySelector('.e-frozen-right-content').querySelectorAll('tr');\n }\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, false, frRows);\n if (!this.parent.getHeaderContent().getElementsByClassName('e-stackedheadercell').length) {\n if (isLeftRight) {\n frRows = frHdr.querySelectorAll('tr');\n }\n fRows = fHdr.querySelectorAll('tr');\n mRows = mHdr.querySelectorAll('tr');\n this.setWrapHeight(fRows, mRows, obj.isModeChg, false, false, frRows);\n }\n }\n };\n /**\n * Function to hide header table column based on visible property\n *\n * @param {Column[]} columns - specifies the column[]\n * @returns {void}\n */\n ColumnFreezeHeaderRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var displayVal;\n var idx;\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n for (var c = 0, clen = columns.length; c < clen; c++) {\n var column = columns[parseInt(c.toString(), 10)];\n idx = gObj.getNormalizedColumnIndex(column.uid);\n displayVal = column.visible ? '' : 'none';\n if (column.freeze === 'Left' || column.freeze === 'Right') {\n if (left && !right) {\n var leftColGrp = gObj.getHeaderContent().querySelector('.e-frozen-left-header').querySelector(colGroup);\n setStyleAttribute(leftColGrp.children[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n else if (!left && right) {\n var rightColGrp = gObj.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(colGroup);\n setStyleAttribute(rightColGrp.children[idx - movable], { 'display': displayVal });\n }\n }\n else {\n var mTblColGrp = gObj.getHeaderContent().querySelector('.' + movableHeader).querySelector(colGroup);\n setStyleAttribute(mTblColGrp.children[idx - left], { 'display': displayVal });\n }\n }\n this.refreshUI();\n };\n ColumnFreezeHeaderRenderer.prototype.filterRenderer = function (ele, frozenColumn, total) {\n return _super.prototype.filterRenderer.call(this, ele, frozenColumn, total);\n };\n ColumnFreezeHeaderRenderer.prototype.refreshUI = function () {\n var frTbody;\n var tbody$$1 = this.getMovableHeader().querySelector(tbody);\n remove(this.getMovableHeader().querySelector('table'));\n if (this.parent.getFrozenMode() === leftRight) {\n frTbody = this.getFrozenRightHeader().querySelector(tbody);\n remove(this.getFrozenRightHeader().querySelector('table'));\n }\n _super.prototype.refreshFrozenLeftUI.call(this);\n this.rfshMovable();\n this.getMovableHeader().querySelector(tbody).innerHTML = tbody$$1.innerHTML;\n if (frTbody) {\n this.getFrozenRightHeader().querySelector(tbody).innerHTML = frTbody.innerHTML;\n }\n this.updateColgroup();\n this.widthService.setWidthToColumns();\n this.parent.notify(colGroupRefresh, {});\n if (this.parent.allowTextWrap && this.parent.textWrapSettings.wrapMode === 'Header') {\n wrap([].slice.call(this.getMovableHeader().querySelectorAll('tr.e-columnheader')), true);\n }\n this.parent.updateDefaultCursor();\n var mTbl = this.parent.getContent().querySelector('.' + movableContent).querySelector('.' + table);\n remove(mTbl.querySelector(colGroup));\n var mColGroup = (this.getMovableHeader().querySelector(colGroup).cloneNode(true));\n mTbl.insertBefore(mColGroup, mTbl.querySelector(tbody));\n if (frTbody) {\n var frtbl = this.parent.getContent().querySelector('.e-frozen-right-content').querySelector('.' + table);\n remove(frtbl.querySelector(colGroup));\n var frtblColGroup = (this.getFrozenRightHeader().querySelector(colGroup).cloneNode(true));\n frtbl.insertBefore(frtblColGroup, frtbl.querySelector(tbody));\n this.getFrozenRightHeader().querySelector('table').style.width = frtbl.style.width;\n }\n this.widthService.refreshFrozenScrollbar();\n this.initializeHeaderDrag();\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFreeze = function (obj) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n if (obj.case === 'filter') {\n var filterRow = this.getTable().querySelector('.e-filterbar');\n if (this.parent.allowFiltering && filterRow && this.getMovableHeader().querySelector('thead')) {\n var isDraggable = this.parent.isRowDragable();\n var index = left ? isDraggable ? left + 1 : left : 0;\n var total = left + movable + (left && isDraggable ? 1 : 0);\n this.getMovableHeader().querySelector('thead')\n .appendChild(this.filterRenderer(filterRow, index, total));\n if (this.parent.getFrozenMode() === leftRight) {\n var ele = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n this.getFrozenRightHeader().querySelector('thead').appendChild(this.filterRenderer(filterRow, index, index + right));\n this.adjudtFilterBarCell(ele);\n }\n var elements = [].slice.call(this.getMovableHeader().\n querySelectorAll('thead .e-filterbarcell .e-input'));\n this.adjudtFilterBarCell(elements);\n }\n }\n else if (obj.case === 'textwrap' || obj.case === 'refreshHeight') {\n this.refreshHeight(obj);\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenColGroup = function (cols, colGroup$$1) {\n if (cols && cols.visible === false) {\n setStyleAttribute(colGroup$$1, { 'display': 'none' });\n }\n };\n ColumnFreezeHeaderRenderer.prototype.adjudtFilterBarCell = function (elements) {\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n var args = {\n element: elem, floatLabelType: 'Never',\n properties: {\n enableRtl: this.parent.enableRtl, showClearButton: true\n }\n };\n Input.bindInitialEvent(args);\n }\n };\n ColumnFreezeHeaderRenderer.prototype.renderPanel = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderPanel.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderLeftWithRightFrozenPanel();\n }\n }\n else {\n this.renderRightFrozenPanelAlone();\n }\n this.getPanel().firstChild.style.display = 'flex';\n this.getMovableHeader().style.flex = '1';\n };\n ColumnFreezeHeaderRenderer.prototype.renderTable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderTable.call(this);\n }\n else {\n this.renderFrozenRightTableAlone();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.rfshMovable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.rfshMovable.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n var rows = this.rows;\n this.getFrozenRightHeader().appendChild(this.createHeader(undefined, 'frozen-right'));\n this.refreshStackedHdrHgt();\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { renderFrozenRightContent: true } });\n this.rows = rows;\n }\n }\n else {\n this.getFrozenRightHeader().appendChild(this.getTable());\n this.getMovableHeader().appendChild(this.createHeader(undefined, 'movable'));\n this.refreshStackedHdrHgt();\n this.addMovableFirstCls();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshStackedHdrHgt = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.refreshStackedHdrHgt.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.refreshFrozenRightStackedHdrHgt();\n }\n }\n else {\n this.refreshFrozenRightStackedHdrHgt();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.refreshFrozenRightStackedHdrHgt = function () {\n var fRowSpan;\n var frTr = [].slice.call(this.getFrozenRightHeader().getElementsByClassName('e-columnheader'));\n var mTr = [].slice.call(this.getMovableHeader().getElementsByClassName('e-columnheader'));\n for (var i = 0, len = frTr.length; i < len; i++) {\n fRowSpan = this.getRowSpan(frTr[parseInt(i.toString(), 10)]);\n if (fRowSpan.min > 1) {\n this.updateStackedHdrRowHgt(i, fRowSpan.max, frTr[parseInt(i.toString(), 10)], mTr);\n }\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnFreezeHeaderRenderer.prototype.updateColgroup = function () {\n this.updateMovableColGroup();\n if (this.parent.getFrozenLeftColumnsCount()) {\n this.updateFrozenLeftColGroup();\n }\n if (this.parent.getFrozenRightColumnsCount()) {\n this.updateFrozenRightColGroup();\n }\n };\n ColumnFreezeHeaderRenderer.prototype.renderRightFrozenPanelAlone = function () {\n var mDiv = this.parent.element.querySelector('.' + movableHeader);\n var fRightDiv = this.parent.element.querySelector('.e-frozen-right-header');\n _super.prototype.renderFrozenRightPanel.call(this);\n if (isNullOrUndefined(fRightDiv)) {\n mDiv = this.parent.createElement('div', { className: movableHeader });\n fRightDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-right-header' });\n this.getPanel().querySelector('.' + headerContent).appendChild(mDiv);\n this.getPanel().querySelector('.' + headerContent).appendChild(fRightDiv);\n }\n _super.prototype.setMovableHeader.call(this, mDiv);\n this.setFrozenRightHeader(fRightDiv);\n };\n ColumnFreezeHeaderRenderer.prototype.renderLeftWithRightFrozenPanel = function () {\n var fRightDiv = this.parent.element.querySelector('.e-frozen-right-header');\n _super.prototype.renderFrozenRightPanel.call(this);\n if (isNullOrUndefined(fRightDiv)) {\n fRightDiv = this.parent.createElement('div', { className: 'e-frozenheader e-frozen-right-header' });\n this.getPanel().querySelector('.' + headerContent).appendChild(fRightDiv);\n }\n this.setFrozenRightHeader(fRightDiv);\n };\n ColumnFreezeHeaderRenderer.prototype.renderFrozenRightTableAlone = function () {\n _super.prototype.renderFrozenRightTable.call(this);\n this.rfshMovable();\n this.updateColgroup();\n this.initializeHeaderDrag();\n this.initializeHeaderDrop();\n this.parent.notify(headerRefreshed, { rows: this.rows, args: { isFrozen: false } });\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenLeftColGroup = function () {\n var leftColGroup = this.getFrozenHeader().querySelector(colGroup).children;\n var start = this.parent.isRowDragable() ? 1 : 0;\n var count = this.parent.isRowDragable() ? this.parent.getFrozenLeftColumnsCount() + 1\n : this.parent.getFrozenLeftColumnsCount();\n for (var i = start; i < leftColGroup.length; i++) {\n if (i >= count) {\n remove(leftColGroup[parseInt(i.toString(), 10)]);\n i--;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateMovableColGroup = function () {\n var movableColGroup = this.getMovableHeader().querySelector(colGroup).children;\n if (this.parent.isRowDragable()) {\n remove(movableColGroup[0]);\n }\n var length = movableColGroup.length;\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var k = 0;\n for (var i = 0; i < length; i++, k++) {\n if (i < left || i >= left + movable) {\n remove(movableColGroup[parseInt(k.toString(), 10)]);\n k--;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.updateFrozenRightColGroup = function () {\n var isDraggable = this.parent.isRowDragable();\n var rightColumns = this.parent.getFrozenRightColumns();\n var rightColGroup = this.getFrozenRightHeader().querySelector(colGroup).children;\n if (this.parent.getFrozenMode() === leftRight && isDraggable) {\n remove(rightColGroup[0]);\n }\n var length = rightColGroup.length;\n var left = this.parent.getFrozenLeftColumnsCount();\n var movable = this.parent.getMovableColumnsCount();\n var k = 0;\n for (var i = 0; i < length; i++) {\n if (i < left + movable) {\n remove(rightColGroup[0]);\n }\n else {\n this.updateFrozenColGroup(rightColumns[parseInt(k.toString(), 10)], rightColGroup[parseInt(k.toString(), 10)]);\n k++;\n }\n }\n };\n ColumnFreezeHeaderRenderer.prototype.setFrozenRightHeader = function (ele) {\n this.frozenRightHeader = ele;\n };\n ColumnFreezeHeaderRenderer.prototype.getFrozenRightHeader = function () {\n return this.frozenRightHeader;\n };\n return ColumnFreezeHeaderRenderer;\n}(FreezeRender));\n/**\n * ColumnFreezeContentRenderer is used to freeze the columns content at right and left\n *\n * @hidden\n */\nvar ColumnFreezeContentRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$34(ColumnFreezeContentRenderer, _super);\n function ColumnFreezeContentRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.frzCount = 0;\n _this.isColGroupRefresh = false;\n _this.widthService = locator.getService('widthService');\n return _this;\n }\n ColumnFreezeContentRenderer.prototype.renderPanel = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderPanel.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightPanel();\n }\n }\n else {\n this.renderFrozenRightPanelAlone();\n }\n var display = this.parent.enableVirtualization ? '' : 'flex';\n this.getPanel().firstChild.style.display = display;\n };\n ColumnFreezeContentRenderer.prototype.renderTable = function () {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderTable.call(this);\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightTable();\n var display = !this.parent.getVisibleFrozenRightCount() ? 'none' : '';\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-right-scrollbar', display, true);\n }\n }\n else {\n this.renderFrozenRightTableAlone();\n var display = !this.parent.getVisibleFrozenRightCount() ? 'none' : '';\n this.renderHorizontalScrollbar('e-frozenscrollbar e-frozen-right-scrollbar', display);\n }\n this.getMovableContent().style.flex = '1';\n };\n ColumnFreezeContentRenderer.prototype.appendScrollbar = function (frozen, movable, isRight) {\n var parent = this.parent.createElement('div', { className: 'e-scrollbar', styles: 'display: flex' });\n if (this.parent.getFrozenLeftColumnsCount()) {\n if (!isRight) {\n parent.appendChild(frozen);\n parent.appendChild(movable);\n }\n else {\n this.parent.getContent().querySelector('.e-scrollbar').appendChild(frozen);\n return;\n }\n }\n else {\n parent.appendChild(movable);\n parent.appendChild(frozen);\n }\n this.parent.getContent().appendChild(parent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightPanelAlone = function () {\n this.renderFrozenRigthPanel();\n var mDiv = this.parent.element.querySelector('.' + movableContent);\n var fRightContent = this.parent.element.querySelector('.e-frozen-right-content');\n if (isNullOrUndefined(fRightContent)) {\n mDiv = this.parent.createElement('div', { className: movableContent });\n fRightContent = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-right-content' });\n this.getPanel().querySelector('.' + content).appendChild(mDiv);\n this.getPanel().querySelector('.' + content).appendChild(fRightContent);\n }\n _super.prototype.setMovableContent.call(this, mDiv);\n this.setFrozenRightContent(fRightContent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightPanel = function () {\n this.renderFrozenRigthPanel();\n var fRightContent = this.parent.element.querySelector('.e-frozen-right-content');\n if (isNullOrUndefined(fRightContent)) {\n fRightContent = this.parent.createElement('div', { className: 'e-frozencontent e-frozen-right-content' });\n this.getPanel().querySelector('.' + content).appendChild(fRightContent);\n }\n this.setFrozenRightContent(fRightContent);\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightTableAlone = function () {\n var mTbl;\n if (this.getFrozenRightContent().querySelector('.' + table) == null) {\n _super.prototype.renderFrozenRightTable.call(this);\n this.getFrozenRightContent().appendChild(this.getTable());\n mTbl = this.getTable().cloneNode(true);\n this.getMovableContent().appendChild(mTbl);\n }\n else {\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().classList.add('e-frozenhdrcont');\n }\n this.setTable(this.getFrozenRightContent().querySelector('.' + table));\n this.setColGroup(this.getFrozenRightHeaderColGroup());\n mTbl = this.getMovableContent().querySelector('.' + table);\n this.getFrozenRightContent().querySelector('.' + table).appendChild(this.getColGroup());\n }\n if (this.getMovableContent().querySelector(colGroup)) {\n remove(this.getMovableContent().querySelector(colGroup));\n }\n var colgroup = ((this.parent.getHeaderContent().querySelector('.' + movableHeader)\n .querySelector(colGroup)).cloneNode(true));\n mTbl.insertBefore(colgroup, mTbl.querySelector(tbody));\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightTable = function () {\n var frozenRight$$1 = this.getTable().cloneNode(true);\n this.getFrozenRightContent().appendChild(frozenRight$$1);\n var oldColGroup = this.getFrozenRightContent().querySelector(colGroup);\n if (oldColGroup) {\n remove(oldColGroup);\n }\n var rightTable = this.getFrozenRightContent().querySelector('.' + table);\n rightTable.insertBefore(this.getFrozenRightHeaderColGroup(), rightTable.querySelector(tbody));\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenRightEmptyRowAlone = function (tbody$$1) {\n _super.prototype.renderFrozenRightEmpty.call(this, tbody$$1);\n this.getMovableContent().querySelector(tbody).innerHTML = '';\n addClass([this.parent.getMovableContentTbody().querySelector('tr')], ['e-emptyrow']);\n this.getFrozenRightContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenRightCount();\n if (this.parent.frozenRows) {\n this.parent.getFrozenRightHeaderTbody().innerHTML = '';\n this.parent.getMovableHeaderTbody().innerHTML = '';\n }\n };\n /**\n * @param {string} tableName - specfies the table name\n * @returns {HTMLElement} returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getFrozenHeader = function (tableName) {\n if (tableName === frozenLeft) {\n return this.parent.getHeaderContent().querySelector('.e-frozen-left-header').querySelector(tbody);\n }\n else if (tableName === 'movable') {\n return this.parent.getHeaderContent().querySelector('.' + movableHeader).querySelector(tbody);\n }\n else {\n return this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(tbody);\n }\n };\n ColumnFreezeContentRenderer.prototype.renderFrozenLeftWithRightEmptyRow = function () {\n this.getFrozenRightContent().querySelector(tbody).innerHTML = '';\n addClass([this.getFrozenRightContent().querySelector(tbody).querySelector('tr')], ['e-emptyrow']);\n if (this.parent.frozenRows) {\n this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(tbody).innerHTML = '';\n }\n };\n ColumnFreezeContentRenderer.prototype.setFrozenRightContent = function (ele) {\n this.frozenRigthContent = ele;\n };\n ColumnFreezeContentRenderer.prototype.getFrozenRightContent = function () {\n return this.frozenRigthContent;\n };\n ColumnFreezeContentRenderer.prototype.getHeaderColGroup = function () {\n var colGroup$$1 = this.parent.element.querySelector('.' + gridHeader).querySelector(colGroup).cloneNode(true);\n if (!this.parent.getFrozenLeftColumnsCount()) {\n var right = this.getFrozenRightHeaderColGroup();\n colGroup$$1 = right && this.frzCount ? right.cloneNode(true) : colGroup$$1;\n this.frzCount++;\n this.isColGroupRefresh = true;\n }\n return colGroup$$1;\n };\n ColumnFreezeContentRenderer.prototype.getFrozenRightHeaderColGroup = function () {\n var col = this.parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(colGroup);\n if (!col) {\n col = this.parent.getHeaderContent().querySelector(colGroup);\n }\n return col.cloneNode(true);\n };\n ColumnFreezeContentRenderer.prototype.setColGroup = function (colGroup$$1) {\n if (this.parent.getFrozenLeftColumnsCount()) {\n return _super.prototype.setColGroup.call(this, colGroup$$1);\n }\n else {\n colGroup$$1 = !this.isColGroupRefresh ? this.getFrozenRightHeaderColGroup() : colGroup$$1;\n if (!isNullOrUndefined(colGroup$$1)) {\n colGroup$$1.id = 'content-' + colGroup$$1.id;\n }\n this.isColGroupRefresh = false;\n if (this.frzCount === 2) {\n this.frzCount = 0;\n }\n return this.colgroup = colGroup$$1;\n }\n };\n ColumnFreezeContentRenderer.prototype.renderEmpty = function (tbody$$1) {\n if (this.parent.getFrozenLeftColumnsCount()) {\n _super.prototype.renderEmpty.call(this, tbody$$1);\n this.getFrozenContent().querySelector('.e-emptyrow').querySelector('td').colSpan = this.parent.getVisibleFrozenLeftCount();\n if (this.parent.getFrozenRightColumnsCount()) {\n this.renderFrozenLeftWithRightEmptyRow();\n }\n }\n else {\n this.renderFrozenRightEmptyRowAlone(tbody$$1);\n }\n this.parent.notify(freezeRender, { case: 'refreshHeight' });\n };\n ColumnFreezeContentRenderer.prototype.setHeightToContent = function (height) {\n if (this.parent.getFrozenRightColumnsCount()) {\n this.getFrozenRightContent().style.height = height.toString() + 'px';\n }\n if (this.parent.getFrozenLeftColumnsCount()) {\n this.getFrozenContent().style.height = height.toString() + 'px';\n }\n this.getMovableContent().style.height = height.toString() + 'px';\n };\n ColumnFreezeContentRenderer.prototype.actionComplete = function (args) {\n _super.prototype.actionComplete.call(this, args);\n };\n ColumnFreezeContentRenderer.prototype.batchAdd = function (args) {\n _super.prototype.batchAdd.call(this, args);\n };\n /**\n * @param {freezeTable} tableName - specfies the table name\n * @returns {Element} - returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getTbody = function (tableName) {\n var tbody$$1;\n if (tableName === frozenLeft) {\n tbody$$1 = this.parent.getFrozenLeftContentTbody();\n }\n else if (tableName === 'movable') {\n tbody$$1 = this.parent.getMovableContentTbody();\n }\n else if (tableName === frozenRight) {\n tbody$$1 = this.parent.getFrozenRightContentTbody();\n }\n return tbody$$1;\n };\n /**\n * @param {NotifyArgs} args - specfies the args\n * @param {freezeTable} tableName - specfies the freeze table\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.setIsFrozen = function (args, tableName) {\n args.isFrozen = (tableName === frozenLeft || (this.parent.getFrozenMode() === 'Right'\n && tableName === frozenRight));\n args.renderFrozenRightContent = this.parent.getFrozenMode() === leftRight && tableName === frozenRight;\n args.renderMovableContent = tableName === 'movable';\n };\n /**\n * @param {Element} tbody - specfies the element\n * @param {DocumentFragment | HTMLElement} frag - specfies the frag\n * @param {NotifyArgs} args - specfies the args\n * @param {freezeTable} tableName - specfies the tableName\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.appendContent = function (tbody$$1, frag, args, tableName) {\n if (!isNullOrUndefined(this.parent.rowTemplate) && this.parent.isReact) {\n tbody$$1 = frag;\n }\n else {\n tbody$$1.appendChild(frag);\n }\n if (this.parent.getFrozenMode() === 'Left') {\n if (tableName === frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody$$1);\n this.refreshContentRows(extend({}, args));\n }\n else {\n this.refreshTbody(tbody$$1);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody$$1);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n }\n else if (this.parent.getFrozenMode() === 'Right') {\n if (tableName === 'movable') {\n this.refreshTbody(tbody$$1);\n this.isLoaded = true;\n this.getMovableContent().querySelector('table').appendChild(tbody$$1);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n else {\n this.isLoaded = false;\n this.getFrozenRightContent().querySelector('table').appendChild(tbody$$1);\n this.refreshContentRows(extend({}, args));\n }\n }\n else if (this.parent.getFrozenMode() === leftRight) {\n if (tableName === frozenLeft) {\n this.isLoaded = false;\n this.getFrozenContent().querySelector('table').appendChild(tbody$$1);\n this.refreshContentRows(extend({}, args));\n }\n else if (tableName === 'movable') {\n this.refreshTbody(tbody$$1);\n this.isLoaded = false;\n this.getMovableContent().querySelector('table').appendChild(tbody$$1);\n this.refreshContentRows(extend({}, args));\n }\n else {\n this.isLoaded = true;\n this.getFrozenRightContent().querySelector('table').appendChild(tbody$$1);\n this.refreshHeight();\n this.refreshScrollOffset();\n }\n }\n if (this.isInitialRender) {\n this.parent.scrollModule.setHeight();\n this.isInitialRender = false;\n }\n this.widthService.refreshFrozenScrollbar();\n };\n ColumnFreezeContentRenderer.prototype.refreshHeight = function () {\n if (!this.parent.allowTextWrap) {\n this.parent.notify(freezeRender, { case: 'refreshHeight' });\n }\n };\n /**\n * @param {freezeTable} tableName - specifies the table\n * @returns {void}\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.splitRows = function (tableName) {\n var left = this.parent.getFrozenLeftColumnsCount();\n var right = this.parent.getFrozenRightColumnsCount();\n if (left && !right) {\n if (tableName === frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else {\n this.movableRows = this.rows;\n }\n }\n else if (!left && right) {\n if (tableName === 'movable') {\n this.movableRows = this.rows;\n }\n else {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n }\n else if (left && right) {\n if (tableName === frozenLeft) {\n this.freezeRows = this.rows;\n this.freezeRowElements = this.rowElements;\n }\n else if (tableName === 'movable') {\n this.movableRows = this.rows;\n this.movableRowElements = this.rowElements;\n }\n else {\n this.frozenRightRows = this.rows;\n this.frozenRightRowElements = this.rowElements;\n }\n }\n };\n /**\n * Get the Freeze pane movable content table data row elements\n *\n * @returns {Element} returns the element\n */\n ColumnFreezeContentRenderer.prototype.getMovableRowElements = function () {\n if (this.parent.getFrozenMode() !== leftRight) {\n return this.rowElements;\n }\n else {\n return this.movableRowElements;\n }\n };\n /**\n * Get the Freeze pane frozen right content table data row elements\n *\n * @returns {Element} returns the Element\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRowElements = function () {\n if (this.parent.getFrozenMode() !== leftRight) {\n return this.freezeRowElements;\n }\n else {\n return this.frozenRightRowElements;\n }\n };\n /**\n * Get the frozen right row collection in the Freeze pane Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row object\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRows = function () {\n if (this.parent.getFrozenMode() === leftRight) {\n if (this.parent.enableInfiniteScrolling) {\n return this.rightFreezeRows;\n }\n return this.frozenRightRows;\n }\n else {\n return this.getRows();\n }\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnFreezeContentRenderer.prototype.getFrozenRightRowByIndex = function (index) {\n return !isNullOrUndefined(index) ? this.parent.getFrozenRightDataRows()[parseInt(index.toString(), 10)] : undefined;\n };\n /**\n * Get the Row collection in the Grid.\n *\n * @returns {Row[] | HTMLCollectionOf} returns the row object\n */\n ColumnFreezeContentRenderer.prototype.getRows = function () {\n var infiniteRows = this.getInfiniteRows();\n return infiniteRows.length ? infiniteRows : this.freezeRows;\n };\n /**\n * Get the content table data row elements\n *\n * @returns {Element} returns the element\n */\n ColumnFreezeContentRenderer.prototype.getRowElements = function () {\n return this.freezeRowElements;\n };\n return ColumnFreezeContentRenderer;\n}(FreezeContentRender));\n\nvar __extends$33 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * VirtualFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar VirtualFreezeRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$33(VirtualFreezeRenderer, _super);\n function VirtualFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n /** @hidden */\n _this.frzRows = [];\n /** @hidden */\n _this.mvblRows = [];\n /** @hidden */\n _this.frRows = [];\n _this.serviceLoc = locator;\n _this.eventListener('on');\n _this.rowModelGenerator = new RowModelGenerator(_this.parent);\n return _this;\n }\n VirtualFreezeRenderer.prototype.eventListener = function (action) {\n this.parent[\"\" + action](getVirtualData, this.getVirtualData, this);\n this.parent[\"\" + action](setFreezeSelection, this.setFreezeSelection, this);\n this.parent[\"\" + action](refreshVirtualFrozenRows, this.refreshVirtualFrozenRows, this);\n this.parent.addEventListener(actionComplete, this.actionComplete.bind(this));\n };\n VirtualFreezeRenderer.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n setCache(this, i);\n }\n }\n };\n VirtualFreezeRenderer.prototype.refreshVirtualFrozenRows = function (args) {\n var _this = this;\n var gObj = this.parent;\n if (args.requestType === 'delete' && gObj.frozenRows) {\n args.isFrozenRowsRender = true;\n var query = gObj.renderModule.data.generateQuery(true).clone();\n query.page(1, gObj.pageSettings.pageSize);\n gObj.renderModule.data.getData({}, query).then(function (e) {\n renderFrozenRows(args, e.result, gObj.getSelectedRowIndexes(), gObj, _this.rowModelGenerator, _this.serviceLoc, _this.virtualRenderer, _this);\n });\n }\n };\n VirtualFreezeRenderer.prototype.getVirtualData = function (data) {\n this.virtualRenderer.getVirtualData(data);\n };\n VirtualFreezeRenderer.prototype.setFreezeSelection = function (args) {\n setFreezeSelectionAction(args, this.virtualRenderer);\n };\n /**\n * @returns {void}\n * @hidden\n */\n VirtualFreezeRenderer.prototype.renderTable = function () {\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n this.virtualRenderer = new VirtualContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n _super.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var movableCont = this.getMovableContent();\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualRenderer.virtualEle.movableContent = this.virtualRenderer.movableContent\n = this.getPanel().querySelector('.' + movableContent);\n this.virtualRenderer.virtualEle.renderMovableWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderMovablePlaceHolder();\n var tbl = movableCont.querySelector('table');\n this.virtualRenderer.virtualEle.movableTable = tbl;\n this.virtualRenderer.virtualEle.movableWrapper.appendChild(tbl);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movableWrapper);\n movableCont.appendChild(this.virtualRenderer.virtualEle.movablePlaceholder);\n }\n this.virtualRenderer.virtualEle.wrapper.appendChild(this.getFrozenContent());\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newChild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\n VirtualFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n appendContent(this.virtualRenderer, this.widthService, target, newChild, e);\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} notifyArgs - specifies the notifyargs\n * @returns {Row[]} returns the row\n * @hidden\n */\n VirtualFreezeRenderer.prototype.generateRows = function (data, notifyArgs) {\n if (!this.firstPageRecords) {\n this.firstPageRecords = data;\n }\n return generateRows(this.virtualRenderer, data, notifyArgs, this.freezeRowGenerator, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRowByIndex = function (index) {\n return this.virtualRenderer.getRowByIndex(index);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getMovableRowByIndex = function (index) {\n return this.virtualRenderer.getMovableVirtualRowByIndex(index);\n };\n VirtualFreezeRenderer.prototype.collectRows = function (tableName) {\n return collectRows(tableName, this.virtualRenderer, this.parent);\n };\n /**\n * @returns {HTMLCollection} returns the Htmlcollection\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getMovableRows = function () {\n return this.collectRows('movable');\n };\n /**\n * @returns {HTMLCollectionOf} returns the html collection\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRows = function () {\n return this.collectRows('frozen-left');\n };\n /**\n * @returns {Element} returns the element\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getColGroup = function () {\n var mCol = this.parent.getMovableVirtualContent();\n return this.isXaxis() ? mCol.querySelector(colGroup + ':not(.e-masked-colgroup)') : this.colgroup;\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {Row[]} returns the row\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getReorderedFrozenRows = function (args) {\n return getReorderedFrozenRows(args, this.virtualRenderer, this.parent, this.freezeRowGenerator, this.firstPageRecords);\n };\n VirtualFreezeRenderer.prototype.isXaxis = function () {\n return isXaxis(this.virtualRenderer);\n };\n VirtualFreezeRenderer.prototype.getHeaderCells = function () {\n return getHeaderCells(this.virtualRenderer, this.parent);\n };\n VirtualFreezeRenderer.prototype.getVirtualFreezeHeader = function () {\n return getVirtualFreezeHeader(this.virtualRenderer, this.parent);\n };\n VirtualFreezeRenderer.prototype.ensureFrozenCols = function (columns) {\n return ensureFrozenCols(columns, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {object} returns the object\n * @hidden\n */\n VirtualFreezeRenderer.prototype.getRowObjectByIndex = function (index) {\n return this.virtualRenderer.getRowObjectByIndex(index);\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} returns the element\n */\n VirtualFreezeRenderer.prototype.setColGroup = function (colGroup$$1) {\n return setColGroup(colGroup$$1, this.virtualRenderer, this);\n };\n return VirtualFreezeRenderer;\n}(FreezeContentRender));\n/**\n * VirtualFreezeHdrRenderer is used to render the virtual table within the frozen and movable header table\n *\n * @hidden\n */\nvar VirtualFreezeHdrRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$33(VirtualFreezeHdrRenderer, _super);\n function VirtualFreezeHdrRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.serviceLoc = locator;\n return _this;\n }\n /**\n * @returns {void}\n * @hidden\n */\n VirtualFreezeHdrRenderer.prototype.renderTable = function () {\n this.virtualHdrRenderer = new VirtualHeaderRenderer(this.parent, this.serviceLoc);\n this.virtualHdrRenderer.gen.refreshColOffsets();\n this.parent.setColumnIndexesInView(this.virtualHdrRenderer.gen.getColumnIndexes(this.getPanel()\n .querySelector('.' + headerContent)));\n this.virtualHdrRenderer.virtualEle.content = this.getPanel().querySelector('.' + headerContent);\n this.virtualHdrRenderer.virtualEle.renderFrozenWrapper();\n this.virtualHdrRenderer.virtualEle.renderFrozenPlaceHolder();\n if (this.parent.enableColumnVirtualization) {\n this.virtualHdrRenderer.virtualEle.movableContent = this.getPanel().querySelector('.' + movableHeader);\n this.virtualHdrRenderer.virtualEle.renderMovableWrapper();\n this.virtualHdrRenderer.virtualEle.renderMovablePlaceHolder();\n }\n _super.prototype.renderTable.call(this);\n this.virtualHdrRenderer.setPanel(this.parent.getHeaderContent());\n };\n VirtualFreezeHdrRenderer.prototype.rfshMovable = function () {\n this.getFrozenHeader().appendChild(this.getTable());\n this.virtualHdrRenderer.virtualEle.wrapper.appendChild(this.getFrozenHeader());\n if (this.parent.enableColumnVirtualization) {\n this.virtualHdrRenderer.virtualEle.movableWrapper.appendChild(this.createHeader(undefined, 'movable'));\n }\n else {\n this.getMovableHeader().appendChild(this.createTable());\n }\n this.virtualHdrRenderer.virtualEle.wrapper.appendChild(this.getMovableHeader());\n };\n return VirtualFreezeHdrRenderer;\n}(FreezeRender));\n/**\n * @param {NotifyArgs} args - specifies the args\n * @param {Object[]} data - specifies the data\n * @param {number[]}selectedIdx - specifies the selected index\n * @param {IGrid} parent - specifies the IGrid\n * @param {IModelGenerator} rowModelGenerator - specifies the rowModeGenerator\n * @param {ServiceLocator} locator - specifies the locator\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {VirtualFreezeRenderer} instance - specifies the instance\n * @returns {void}\n * @hidden\n */\nfunction renderFrozenRows(args, data, selectedIdx, parent, rowModelGenerator, locator, virtualRenderer, instance) {\n parent.clearSelection();\n args.startIndex = 0;\n var rowRenderer = new RowRenderer(locator, null, parent);\n var rows = rowModelGenerator.generateRows(data, args);\n if (args.renderMovableContent) {\n virtualRenderer.vgenerator.movableCache[1] = rows;\n rows = parent.getMovableRowsObject();\n }\n else if (!args.renderFrozenRightContent && !args.renderMovableContent) {\n virtualRenderer.vgenerator.cache[1] = rows;\n rows = parent.getRowsObject();\n }\n else if (args.renderFrozenRightContent) {\n virtualRenderer.vgenerator.frozenRightCache[1] = rows;\n rows = parent.getFrozenRightRowsObject();\n }\n var hdr = !args.renderMovableContent && !args.renderFrozenRightContent\n ? parent.getHeaderContent().querySelector('.' + frozenHeader).querySelector(tbody) : args.renderMovableContent\n ? parent.getHeaderContent().querySelector('.' + movableHeader).querySelector(tbody)\n : parent.getHeaderContent().querySelector('.e-frozen-right-header').querySelector(tbody);\n hdr.innerHTML = '';\n for (var i = 0; i < parent.frozenRows; i++) {\n hdr.appendChild(rowRenderer.render(rows[parseInt(i.toString(), 10)], parent.getColumns()));\n if (selectedIdx.indexOf(i) > -1) {\n rows[parseInt(i.toString(), 10)].isSelected = true;\n for (var k = 0; k < rows[parseInt(i.toString(), 10)].cells.length; k++) {\n rows[parseInt(i.toString(), 10)].cells[parseInt(k.toString(), 10)].isSelected = true;\n }\n }\n }\n if (args.renderMovableContent) {\n instance.mvblRows = virtualRenderer.vgenerator.movableCache[1];\n }\n else if (!args.renderMovableContent && !args.renderFrozenRightContent) {\n instance.frzRows = virtualRenderer.vgenerator.cache[1];\n }\n else if (args.renderFrozenRightContent) {\n instance.frRows = virtualRenderer.vgenerator.frozenRightCache[1];\n }\n args.renderMovableContent = !args.renderMovableContent && !args.renderFrozenRightContent;\n args.renderFrozenRightContent = parent.getFrozenMode() === leftRight\n && !args.renderMovableContent && !args.renderFrozenRightContent;\n if (args.renderMovableContent || args.renderFrozenRightContent) {\n renderFrozenRows(args, data, selectedIdx, parent, rowModelGenerator, locator, virtualRenderer, instance);\n if (!args.renderMovableContent && !args.renderFrozenRightContent) {\n args.isFrozenRowsRender = false;\n }\n }\n}\n/**\n * @param {Row[]} data - specifies the data\n * @param {freezeTable} tableName -specifies the table\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nfunction splitCells(data, tableName, parent) {\n var rows = [];\n for (var i = 0; i < data.length; i++) {\n rows.push(extend({}, data[parseInt(i.toString(), 10)]));\n rows[parseInt(i.toString(), 10)].cells = splitFrozenRowObjectCells(parent, rows[parseInt(i.toString(), 10)].cells, tableName);\n }\n return rows;\n}\n/**\n * @param {freezeTable} tableName - specifies the freeze tabel\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nfunction collectRows(tableName, virtualRenderer, parent) {\n var rows = [];\n var cache;\n if (tableName === frozenLeft) {\n cache = virtualRenderer.vgenerator.cache;\n }\n else if (tableName === 'movable') {\n cache = virtualRenderer.vgenerator.movableCache;\n }\n else if (tableName === frozenRight) {\n cache = parent.getFrozenMode() === 'Right' ? virtualRenderer.vgenerator.cache : virtualRenderer.vgenerator.frozenRightCache;\n }\n var keys = Object.keys(cache);\n for (var i = 0; i < keys.length; i++) {\n rows = rows.concat(splitCells(cache[keys[parseInt(i.toString(), 10)]], tableName, parent));\n }\n return rows;\n}\n/**\n * @param {object} args - specifies the args\n * @param {string} args.uid - specifirs the uid\n * @param {boolean} args.set - specifies the set\n * @param {boolean} args.clearAll - specifies the boolean to clearall\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @returns {void}\n * @hidden\n */\nfunction setFreezeSelectionAction(args, virtualRenderer) {\n var leftKeys = Object.keys(virtualRenderer.vgenerator.cache);\n var movableKeys = Object.keys(virtualRenderer.vgenerator.movableCache);\n var rightKeys = Object.keys(virtualRenderer.vgenerator.frozenRightCache);\n for (var i = 0; i < leftKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.cache[leftKeys[parseInt(i.toString(), 10)]]);\n }\n for (var i = 0; i < movableKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.movableCache[movableKeys[parseInt(i.toString(), 10)]]);\n }\n for (var i = 0; i < rightKeys.length; i++) {\n selectFreezeRows(args, virtualRenderer.vgenerator.frozenRightCache[rightKeys[parseInt(i.toString(), 10)]]);\n }\n}\n/**\n * @param {Object} args - specifies the args\n * @param {string} args.uid - specifirs the uid\n * @param {boolean} args.set - specifies the set\n * @param {boolean} args.clearAll - specifies the boolean to clearall\n * @param {Row[]} cache - specifies the cache\n * @returns {void}\n * @hidden\n */\nfunction selectFreezeRows(args, cache) {\n var rows = cache.filter(function (row$$1) { return args.clearAll || args.uid === row$$1.uid; });\n for (var j = 0; j < rows.length; j++) {\n rows[parseInt(j.toString(), 10)].isSelected = args.set;\n var cells = rows[parseInt(j.toString(), 10)].cells;\n for (var k = 0; k < cells.length; k++) {\n cells[parseInt(k.toString(), 10)].isSelected = args.set;\n }\n }\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {ColumnWidthService} widthService - specifies the width service\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newchild\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {void}\n * @hidden\n */\nfunction appendContent(virtualRenderer, widthService, target, newChild, e) {\n virtualRenderer.appendContent(target, newChild, e);\n widthService.refreshFrozenScrollbar();\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {object[]} data - specifies the data\n * @param {NotifyArgs} notifyArgs - specifies the notifyargs\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freeze row generator\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Row[]} returns the row\n * @hidden\n */\nfunction generateRows(virtualRenderer, data, notifyArgs, freezeRowGenerator, parent) {\n var virtualRows = virtualRenderer.vgenerator.generateRows(data, notifyArgs);\n var arr = [];\n arr = virtualRows.map(function (row$$1) { return extend({}, row$$1); });\n var rows = freezeRowGenerator.generateRows(data, notifyArgs, arr);\n if (parent.frozenRows && notifyArgs.requestType === 'delete' && parent.pageSettings.currentPage === 1) {\n rows = rows.slice(parent.frozenRows);\n }\n return rows;\n}\n/**\n * @param {NotifyArgs} args -specifies the args\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {IGrid} parent - specifies the IGrid\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freezeRowGenerator\n * @param {Object[]} firstPageRecords - specifies the first page records\n * @returns {Row[]} returns the row\n * @hidden\n */\nfunction getReorderedFrozenRows(args, virtualRenderer, parent, freezeRowGenerator, firstPageRecords) {\n var bIndex = args.virtualInfo.blockIndexes;\n var colIndex = args.virtualInfo.columnIndexes;\n var page = args.virtualInfo.page;\n args.virtualInfo.blockIndexes = [1, 2];\n args.virtualInfo.page = 1;\n if (!args.renderMovableContent) {\n args.virtualInfo.columnIndexes = [];\n }\n var firstRecordslength = parent.getCurrentViewRecords().length;\n firstPageRecords = parent.renderModule.data.dataManager.dataSource.json.slice(0, firstRecordslength);\n var virtualRows = virtualRenderer.vgenerator.generateRows(firstPageRecords, args);\n var rows = splitReorderedRows(virtualRows, parent, args, freezeRowGenerator);\n args.virtualInfo.blockIndexes = bIndex;\n args.virtualInfo.columnIndexes = colIndex;\n args.virtualInfo.page = page;\n return rows.splice(0, parent.frozenRows);\n}\n/**\n * @param {Row[]} rows - specifies the row\n * @param {IGrid} parent - specifies the IGrid\n * @param {NotifyArgs} args - specifies the notify arguments\n * @param {FreezeRowModelGenerator} freezeRowGenerator - specifies the freezerowgenerator\n * @returns {Row[]} returns the row\n * @hidden\n */\nfunction splitReorderedRows(\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nrows, parent, args, freezeRowGenerator) {\n var tableName;\n if (args.renderMovableContent) {\n tableName = 'movable';\n }\n else if (args.renderFrozenRightContent) {\n tableName = 'frozen-right';\n }\n else {\n tableName = 'frozen-left';\n }\n for (var i = 0, len = rows.length; i < len; i++) {\n rows[parseInt(i.toString(), 10)].cells = splitFrozenRowObjectCells(parent, rows[parseInt(i.toString(), 10)].cells, tableName);\n }\n return rows;\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the VirtualRenderer\n * @returns {boolean} returns the isXaxis\n * @hidden\n */\nfunction isXaxis(virtualRenderer) {\n var value = false;\n if (virtualRenderer) {\n value = virtualRenderer.requestType === 'virtualscroll'\n && virtualRenderer.currentInfo.sentinelInfo.axis === 'X';\n }\n return value;\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtualrenderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Element[]} returns the element\n * @hidden\n */\nfunction getHeaderCells(virtualRenderer, parent) {\n var content$$1 = isXaxis(virtualRenderer) ? parent.getMovableVirtualHeader() : parent.getHeaderContent();\n return content$$1 ? [].slice.call(content$$1.querySelectorAll('.e-headercell:not(.e-stackedheadercell)')) : [];\n}\n/**\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual Renderer\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Element} returns the element\n * @hidden\n */\nfunction getVirtualFreezeHeader(virtualRenderer, parent) {\n var headerTable;\n if (isXaxis(virtualRenderer)) {\n headerTable = parent.getMovableVirtualHeader().querySelector('.' + table + ':not(.e-masked-table)');\n }\n else {\n headerTable = parent.getFrozenVirtualHeader().querySelector('.' + table);\n }\n return headerTable;\n}\n/**\n * @param {Column[]} columns - specifies the columns\n * @param {IGrid} parent - specifies the IGrid\n * @returns {Column[]} returns the column[]\n * @hidden\n */\nfunction ensureFrozenCols(columns, parent) {\n var frozenCols = parent.columns.slice(0, parent.getFrozenColumns());\n columns = frozenCols.concat(columns);\n return columns;\n}\n/**\n * @param {Element} colGroup - specifies the colGroup\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtual renderer\n * @param {ColumnVirtualFreezeRenderer} instance - specifies the instances\n * @returns {Element} returns the element\n * @hidden\n */\nfunction setColGroup(colGroup$$1, virtualRenderer, instance) {\n if (!isXaxis(virtualRenderer)) {\n if (!isNullOrUndefined(colGroup$$1)) {\n colGroup$$1.id = 'content-' + colGroup$$1.id;\n }\n instance.colgroup = colGroup$$1;\n }\n return instance.colgroup;\n}\n/**\n * @param {VirtualFreezeRenderer} instance - specifies the instance\n * @param {number} index - specifies the index\n * @returns {void}\n * @hidden\n */\nfunction setCache(instance, index) {\n if (instance.virtualRenderer.vgenerator.cache[1]) {\n instance.virtualRenderer.vgenerator.cache[1][parseInt(index.toString(), 10)] = instance.frzRows[parseInt(index.toString(), 10)];\n }\n else {\n instance.virtualRenderer.vgenerator.cache[1] = instance.frzRows;\n }\n if (instance.virtualRenderer.vgenerator.movableCache[1]) {\n instance.virtualRenderer.vgenerator.movableCache[1][parseInt(index.toString(), 10)] =\n instance.mvblRows[parseInt(index.toString(), 10)];\n }\n else {\n instance.virtualRenderer.vgenerator.movableCache[1] = instance.mvblRows;\n }\n}\n/**\n * @param {IGrid} parent - specifies the IGrid\n * @param {VirtualContentRenderer} virtualRenderer - specifies the virtualRenderer\n * @param {Element} scrollbar - specifies the scrollbr\n * @param {Element} mCont - specifies the mCont\n * @returns {void}\n * @hidden\n */\nfunction setDebounce(parent, virtualRenderer, scrollbar, mCont) {\n var debounceEvent = (parent.dataSource instanceof DataManager && !parent.dataSource.dataSource.offline);\n var opt = {\n container: virtualRenderer.content, pageHeight: virtualRenderer.getBlockHeight() * 2, debounceEvent: debounceEvent,\n axes: parent.enableColumnVirtualization ? ['X', 'Y'] : ['Y'], scrollbar: scrollbar,\n movableContainer: mCont\n };\n virtualRenderer.observer = new InterSectionObserver(virtualRenderer.virtualEle.wrapper, opt, virtualRenderer.virtualEle.movableWrapper);\n}\n/**\n * ColumnVirtualFreezeRenderer is used to render the virtual table within the frozen and movable content table\n *\n * @hidden\n */\nvar ColumnVirtualFreezeRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$33(ColumnVirtualFreezeRenderer, _super);\n function ColumnVirtualFreezeRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n /** @hidden */\n _this.frRows = [];\n /** @hidden */\n _this.frzRows = [];\n /** @hidden */\n _this.mvblRows = [];\n _this.serviceLoc = locator;\n _this.eventListener('on');\n _this.rowModelGenerator = new RowModelGenerator(_this.parent);\n return _this;\n }\n ColumnVirtualFreezeRenderer.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n for (var i = 0; i < this.parent.frozenRows; i++) {\n if (this.virtualRenderer.vgenerator.frozenRightCache[1]) {\n this.virtualRenderer.vgenerator.frozenRightCache[1][parseInt(i.toString(), 10)] = this.frRows.length ?\n this.frRows[parseInt(i.toString(), 10)] : this.frzRows[parseInt(i.toString(), 10)];\n }\n else {\n this.virtualRenderer.vgenerator.frozenRightCache[1] = this.frRows.length ? this.frRows : this.frzRows;\n break;\n }\n setCache(this, i);\n }\n }\n };\n ColumnVirtualFreezeRenderer.prototype.eventListener = function (action) {\n this.parent.addEventListener(actionComplete, this.actionComplete.bind(this));\n this.parent[\"\" + action](refreshVirtualFrozenRows, this.refreshVirtualFrozenRows, this);\n this.parent[\"\" + action](getVirtualData, this.getVirtualData, this);\n this.parent[\"\" + action](setFreezeSelection, this.setFreezeSelection, this);\n };\n ColumnVirtualFreezeRenderer.prototype.refreshVirtualFrozenRows = function (args) {\n var _this = this;\n if (args.requestType === 'delete' && this.parent.frozenRows) {\n args.isFrozenRowsRender = true;\n var query = this.parent.renderModule.data.generateQuery(true).clone();\n query.page(1, this.parent.pageSettings.pageSize);\n var selectedIdx_1 = this.parent.getSelectedRowIndexes();\n this.parent.renderModule.data.getData({}, query).then(function (e) {\n renderFrozenRows(args, e.result, selectedIdx_1, _this.parent, _this.rowModelGenerator, _this.serviceLoc, _this.virtualRenderer, _this);\n });\n }\n };\n ColumnVirtualFreezeRenderer.prototype.setFreezeSelection = function (args) {\n setFreezeSelectionAction(args, this.virtualRenderer);\n };\n ColumnVirtualFreezeRenderer.prototype.getVirtualData = function (data) {\n this.virtualRenderer.getVirtualData(data);\n };\n ColumnVirtualFreezeRenderer.prototype.renderNextFrozentPart = function (e, tableName) {\n e.renderMovableContent = this.parent.getFrozenLeftCount() ? tableName === frozenLeft : tableName === frozenRight;\n e.renderFrozenRightContent = this.parent.getFrozenMode() === leftRight && tableName === 'movable';\n if (e.renderMovableContent || e.renderFrozenRightContent) {\n this.refreshContentRows(extend({}, e));\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.renderTable = function () {\n this.virtualRenderer = new VirtualContentRenderer(this.parent, this.serviceLoc);\n this.virtualRenderer.header = this.serviceLoc.getService('rendererFactory')\n .getRenderer(RenderType.Header).virtualHdrRenderer;\n this.freezeRowGenerator = new FreezeRowModelGenerator(this.parent);\n _super.prototype.renderTable.call(this);\n this.virtualRenderer.setPanel(this.parent.getContent());\n this.scrollbar = this.parent.getContent().querySelector('.e-movablescrollbar');\n var frozenRightCont = this.getFrozenRightContent();\n var frzCont = this.getFrozenContent();\n var movableCont = this.getMovableContent();\n if (this.parent.getFrozenMode() === 'Right') {\n frzCont = frozenRightCont;\n }\n this.virtualRenderer.virtualEle.content = this.virtualRenderer.content = this.getPanel().querySelector('.' + content);\n this.virtualRenderer.virtualEle.content.style.overflowX = 'hidden';\n var minHeight = this.parent.height;\n this.virtualRenderer.virtualEle.renderFrozenWrapper(minHeight);\n this.virtualRenderer.virtualEle.renderFrozenPlaceHolder();\n this.renderVirtualFrozenLeft(frzCont, movableCont);\n this.renderVirtualFrozenRight(frzCont, movableCont);\n this.renderVirtualFrozenLeftRight(frzCont, movableCont, frozenRightCont);\n this.virtualRenderer.virtualEle.table = this.getTable();\n setDebounce(this.parent, this.virtualRenderer, this.scrollbar, this.getMovableContent());\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenLeft = function (frzCont, movableCont) {\n if (this.parent.getFrozenMode() === 'Left') {\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n }\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenRight = function (frzCont, movableCont) {\n if (this.parent.getFrozenMode() === 'Right') {\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n }\n };\n ColumnVirtualFreezeRenderer.prototype.renderVirtualFrozenLeftRight = function (frzCont, movableCont, frozenRightCont) {\n if (this.parent.getFrozenMode() === leftRight) {\n this.virtualRenderer.virtualEle.wrapper.appendChild(frzCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(movableCont);\n this.virtualRenderer.virtualEle.wrapper.appendChild(frozenRightCont);\n }\n };\n /**\n * @param {HTMLElement} target - specifies the target\n * @param {DocumentFragment} newChild - specifies the newchild\n * @param {NotifyArgs} e - specifies the NotifyArgs\n * @returns {void}\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.appendContent = function (target, newChild, e) {\n appendContent(this.virtualRenderer, this.widthService, target, newChild, e);\n this.refreshScrollOffset();\n };\n /**\n * @param {Object[]} data - specifies the data\n * @param {NotifyArgs} e - specifies the notifyargs\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.generateRows = function (data, e) {\n if (!this.firstPageRecords) {\n this.firstPageRecords = data;\n }\n return generateRows(this.virtualRenderer, data, e, this.freezeRowGenerator, this.parent);\n };\n /**\n * @param {number} index - specifies the number\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRowByIndex = function (index) {\n return this.virtualRenderer.getRowByIndex(index);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} - returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getFrozenRightRowByIndex = function (index) {\n return this.virtualRenderer.getFrozenRightVirtualRowByIndex(index);\n };\n ColumnVirtualFreezeRenderer.prototype.collectRows = function (tableName) {\n return collectRows(tableName, this.virtualRenderer, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getMovableRowByIndex = function (index) {\n return this.virtualRenderer.getMovableVirtualRowByIndex(index);\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getFrozenRightRows = function () {\n return this.collectRows('frozen-right');\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getMovableRows = function () {\n return this.collectRows('movable');\n };\n /**\n * @returns {Element} returns the element\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getColGroup = function () {\n var mCol = this.parent.getMovableVirtualContent();\n return isXaxis(this.virtualRenderer) ? mCol.querySelector(colGroup) : this.colgroup;\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRows = function () {\n return this.collectRows(this.parent.getFrozenMode() === 'Right' ? 'frozen-right' : 'frozen-left');\n };\n /**\n * @param {NotifyArgs} args - specifies the args\n * @returns {Row[]} returns the row object\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getReorderedFrozenRows = function (args) {\n return getReorderedFrozenRows(args, this.virtualRenderer, this.parent, this.freezeRowGenerator, this.firstPageRecords);\n };\n ColumnVirtualFreezeRenderer.prototype.getHeaderCells = function () {\n return getHeaderCells(this.virtualRenderer, this.parent);\n };\n ColumnVirtualFreezeRenderer.prototype.isXaxis = function () {\n return isXaxis(this.virtualRenderer);\n };\n ColumnVirtualFreezeRenderer.prototype.getVirtualFreezeHeader = function () {\n return getVirtualFreezeHeader(this.virtualRenderer, this.parent);\n };\n /**\n * @param {number} index - specifies the index\n * @returns {object} - returns the object\n * @hidden\n */\n ColumnVirtualFreezeRenderer.prototype.getRowObjectByIndex = function (index) {\n return this.virtualRenderer.getRowObjectByIndex(index);\n };\n ColumnVirtualFreezeRenderer.prototype.ensureFrozenCols = function (columns) {\n return ensureFrozenCols(columns, this.parent);\n };\n /**\n * Set the header colgroup element\n *\n * @param {Element} colGroup - specifies the colgroup\n * @returns {Element} - returns the element\n */\n ColumnVirtualFreezeRenderer.prototype.setColGroup = function (colGroup$$1) {\n return setColGroup(colGroup$$1, this.virtualRenderer, this);\n };\n return ColumnVirtualFreezeRenderer;\n}(ColumnFreezeContentRenderer));\n\n/**\n * `Freeze` module is used to handle Frozen rows and columns.\n *\n * @hidden\n */\nvar Freeze = /** @__PURE__ @class */ (function () {\n function Freeze(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.addEventListener();\n }\n Freeze.prototype.getModuleName = function () {\n return 'freeze';\n };\n Freeze.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(destroy, this.destroy, this);\n };\n Freeze.prototype.instantiateRenderer = function () {\n this.parent.log('limitation', this.getModuleName());\n var renderer = this.locator.getService('rendererFactory');\n if (this.parent.getFrozenColumns()) {\n if (this.parent.enableColumnVirtualization) {\n renderer.addRenderer(RenderType.Header, new VirtualFreezeHdrRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Header, new FreezeRender(this.parent, this.locator));\n }\n if (this.parent.enableVirtualization) {\n renderer.addRenderer(RenderType.Content, new VirtualFreezeRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Content, new FreezeContentRender(this.parent, this.locator));\n }\n }\n if (this.parent.getFrozenLeftColumnsCount() || this.parent.getFrozenRightColumnsCount()) {\n renderer.addRenderer(RenderType.Header, new ColumnFreezeHeaderRenderer(this.parent, this.locator));\n if (this.parent.enableVirtualization) {\n renderer.addRenderer(RenderType.Content, new ColumnVirtualFreezeRenderer(this.parent, this.locator));\n }\n else {\n renderer.addRenderer(RenderType.Content, new ColumnFreezeContentRenderer(this.parent, this.locator));\n }\n }\n };\n Freeze.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(destroy, this.destroy);\n };\n Freeze.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Freeze;\n}());\n\n/**\n * 'column menu module used to handle column menu actions'\n *\n * @hidden\n */\nvar ColumnMenu = /** @__PURE__ @class */ (function () {\n function ColumnMenu(parent, serviceLocator) {\n this.defaultItems = {};\n this.localeText = this.setLocaleKey();\n this.disableItems = [];\n this.hiddenItems = [];\n this.isOpen = false;\n // default class names\n this.GROUP = 'e-icon-group';\n this.UNGROUP = 'e-icon-ungroup';\n this.ASCENDING = 'e-icon-ascending';\n this.DESCENDING = 'e-icon-descending';\n this.ROOT = 'e-columnmenu';\n this.FILTER = 'e-icon-filter';\n this.POP = 'e-filter-popup';\n this.WRAP = 'e-col-menu';\n this.CHOOSER = '_chooser_';\n this.parent = parent;\n this.gridID = parent.element.id;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n ColumnMenu.prototype.wireEvents = function () {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.add(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown, this);\n }\n };\n ColumnMenu.prototype.unwireEvents = function () {\n var elements = this.getColumnMenuHandlers();\n for (var i = 0; i < elements.length; i++) {\n EventHandler.remove(elements[parseInt(i.toString(), 10)], 'mousedown', this.columnMenuHandlerDown);\n }\n };\n /**\n * To destroy the resize\n *\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.destroy = function () {\n var gridElement = this.parent.element;\n if (!gridElement || (!gridElement.querySelector('.' + gridHeader) && !gridElement.querySelector('.' + gridContent))) {\n return;\n }\n this.columnMenu.destroy();\n this.removeEventListener();\n this.unwireFilterEvents();\n this.unwireEvents();\n if (this.element.parentNode) {\n remove(this.element);\n }\n };\n ColumnMenu.prototype.columnMenuHandlerClick = function (e) {\n if (e.target.classList.contains('e-columnmenu')) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n if ((this.isOpen && this.headerCell !== this.getHeaderCell(e)) || document.querySelector('.e-grid-menu .e-menu-parent.e-ul')) {\n this.columnMenu.close();\n this.openColumnMenu(e);\n }\n else if (!this.isOpen) {\n this.openColumnMenu(e);\n }\n else {\n this.columnMenu.close();\n }\n }\n };\n /**\n * @param {string} field - specifies the field name\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.openColumnMenuByField = function (field) {\n this.openColumnMenu({ target: this.parent.getColumnHeaderByField(field).querySelector('.e-columnmenu') });\n };\n ColumnMenu.prototype.afterFilterColumnMenuClose = function () {\n if (this.columnMenu) {\n this.columnMenu.items = this.getItems();\n this.columnMenu.dataBind();\n this.columnMenu.close();\n }\n };\n ColumnMenu.prototype.openColumnMenu = function (e) {\n var contentRect = this.parent.getContent().getClientRects()[0];\n var headerEle = this.parent.getHeaderContent();\n var headerElemCliRect = headerEle.getBoundingClientRect();\n var pos = { top: 0, left: 0 };\n this.element.style.cssText = 'display:block;visibility:hidden';\n var elePos = this.element.getBoundingClientRect();\n var gClient = this.parent.element.getBoundingClientRect();\n this.element.style.cssText = 'display:none;visibility:visible';\n this.headerCell = this.getHeaderCell(e);\n if (this.parent.enableRtl) {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'left', 'bottom', true) :\n calculatePosition(this.headerCell, 'left', 'bottom');\n }\n else {\n pos = this.parent.enableStickyHeader ? calculatePosition(this.headerCell, 'right', 'bottom', true) :\n calculatePosition(this.headerCell, 'right', 'bottom');\n pos.left -= elePos.width;\n if (headerEle.classList.contains('e-sticky')) {\n pos.top = this.parent.element.offsetTop + headerElemCliRect.top + headerElemCliRect.height;\n if (headerElemCliRect.top + headerElemCliRect.height > contentRect.top) {\n pos.top += ((headerElemCliRect.top + headerElemCliRect.height) - contentRect.top);\n }\n }\n else if (this.parent.enableStickyHeader) {\n pos.top = this.parent.element.offsetTop + headerEle.offsetTop + headerElemCliRect.height;\n }\n if ((pos.left + elePos.width + 1) >= gClient.right) {\n pos.left -= 35;\n }\n }\n this.columnMenu['open'](pos.top, pos.left);\n if (e.preventDefault) {\n e.preventDefault();\n }\n applyBiggerTheme(this.parent.element, this.columnMenu.element.parentElement);\n };\n ColumnMenu.prototype.columnMenuHandlerDown = function () {\n this.isOpen = !(this.element.style.display === 'none' || this.element.style.display === '');\n };\n ColumnMenu.prototype.getColumnMenuHandlers = function () {\n return [].slice.call(this.parent.getHeaderTable().getElementsByClassName(this.ROOT));\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(headerRefreshed, this.wireEvents, this);\n this.parent.on(uiUpdate, this.enableAfterRenderMenu, this);\n this.parent.on(initialEnd, this.render, this);\n if (this.isFilterItemAdded()) {\n this.parent.on(filterDialogCreated, this.filterPosition, this);\n }\n this.parent.on(click, this.columnMenuHandlerClick, this);\n this.parent.on(afterFilterColumnMenuClose, this.afterFilterColumnMenuClose, this);\n this.parent.on(keyPressed, this.keyPressHandler, this);\n this.parent.on(destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n ColumnMenu.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(headerRefreshed, this.unwireEvents);\n this.parent.off(uiUpdate, this.enableAfterRenderMenu);\n this.parent.off(initialEnd, this.render);\n if (this.isFilterItemAdded()) {\n this.parent.off(filterDialogCreated, this.filterPosition);\n }\n this.parent.off(click, this.columnMenuHandlerClick);\n this.parent.on(afterFilterColumnMenuClose, this.afterFilterColumnMenuClose);\n this.parent.off(keyPressed, this.keyPressHandler);\n this.parent.off(destroy, this.destroy);\n };\n ColumnMenu.prototype.keyPressHandler = function (e) {\n var gObj = this.parent;\n if (e.action === 'altDownArrow') {\n var element = gObj.focusModule.currentInfo.element;\n if (element && element.classList.contains('e-headercell')) {\n var column = gObj.getColumnByUid(element.firstElementChild.getAttribute('e-mappinguid'));\n this.openColumnMenuByField(column.field);\n }\n }\n };\n ColumnMenu.prototype.enableAfterRenderMenu = function (e) {\n if (e.module === this.getModuleName() && e.enable) {\n if (this.columnMenu) {\n this.columnMenu.destroy();\n remove(this.element);\n }\n this.render();\n }\n };\n ColumnMenu.prototype.render = function () {\n this.l10n = this.serviceLocator.getService('localization');\n this.element = this.parent.createElement('ul', { id: this.gridID + '_columnmenu', className: 'e-colmenu' });\n this.element.setAttribute('aria-label', this.l10n.getConstant('ColumnMenuDialogARIA'));\n this.parent.element.appendChild(this.element);\n this.columnMenu = new ContextMenu({\n cssClass: this.parent.cssClass ? 'e-grid-menu' + ' ' + this.parent.cssClass : 'e-grid-menu',\n enableRtl: this.parent.enableRtl,\n enablePersistence: this.parent.enablePersistence,\n locale: this.parent.locale,\n items: this.getItems(),\n select: this.columnMenuItemClick.bind(this),\n beforeOpen: this.columnMenuBeforeOpen.bind(this),\n onOpen: this.columnMenuOnOpen.bind(this),\n onClose: this.columnMenuOnClose.bind(this),\n beforeItemRender: this.beforeMenuItemRender.bind(this),\n beforeClose: this.columnMenuBeforeClose.bind(this)\n });\n this.columnMenu.appendTo(this.element);\n this.wireFilterEvents();\n };\n ColumnMenu.prototype.wireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.add(this.element, 'mouseover', this.appendFilter, this);\n }\n };\n ColumnMenu.prototype.unwireFilterEvents = function () {\n if (!Browser.isDevice && this.isFilterItemAdded()) {\n EventHandler.remove(this.element, 'mouseover', this.appendFilter);\n }\n };\n ColumnMenu.prototype.beforeMenuItemRender = function (args) {\n if (this.isChooserItem(args.item)) {\n var field_1 = this.getKeyFromId(args.item.id, this.CHOOSER);\n var column = this.parent.columnModel.filter(function (col) { return col.field === field_1; });\n var check = createCheckBox(this.parent.createElement, false, {\n label: args.item.text,\n checked: column[0].visible\n });\n if (this.parent.enableRtl) {\n check.classList.add('e-rtl');\n }\n if (this.parent.cssClass) {\n check.classList.add(this.parent.cssClass);\n }\n args.element.innerHTML = '';\n args.element.appendChild(check);\n }\n else if (args.item.id && this.getKeyFromId(args.item.id) === 'Filter') {\n args.element.appendChild(this.parent.createElement('span', { className: 'e-icons e-caret' }));\n args.element.className += 'e-filter-item e-menu-caret-icon';\n }\n };\n ColumnMenu.prototype.columnMenuBeforeClose = function (args) {\n var colChooser = args.event ? closest(args.event.target, '.e-menu-item') : null;\n if (!isNullOrUndefined(args.parentItem) &&\n this.getKeyFromId(args.parentItem.id) === 'ColumnChooser' &&\n colChooser && this.isChooserItem(colChooser)) {\n args.cancel = true;\n }\n else if (args.event && (closest(args.event.target, '.' + this.POP)\n || (args.event.currentTarget && args.event.currentTarget.activeElement &&\n parentsUntil(args.event.currentTarget.activeElement, 'e-filter-popup'))\n || parentsUntil(args.event.target, 'e-popup') ||\n (parentsUntil(args.event.target, 'e-popup-wrapper'))) && !Browser.isDevice) {\n args.cancel = true;\n }\n };\n ColumnMenu.prototype.isChooserItem = function (item) {\n return item.id && item.id.indexOf('_colmenu_') >= 0 &&\n this.getKeyFromId(item.id, this.CHOOSER).indexOf('_colmenu_') === -1;\n };\n ColumnMenu.prototype.columnMenuBeforeOpen = function (args) {\n args.column = this.targetColumn = this.getColumn();\n this.parent.trigger(columnMenuOpen, args);\n for (var _i = 0, _a = args.items; _i < _a.length; _i++) {\n var item = _a[_i];\n var key = this.getKeyFromId(item.id);\n var dItem = this.defaultItems[\"\" + key];\n if (this.getDefaultItems().indexOf(key) !== -1 && this.ensureDisabledStatus(key) && !dItem.hide) {\n this.disableItems.push(item.text);\n }\n if (item.hide) {\n this.hiddenItems.push(item.text);\n }\n }\n this.columnMenu.enableItems(this.disableItems, false);\n this.columnMenu.hideItems(this.hiddenItems);\n };\n ColumnMenu.prototype.columnMenuOnOpen = function (args) {\n if (args.element.className === 'e-menu-parent e-ul ') {\n if (args.element.offsetHeight > window.innerHeight || this.parent.element.offsetHeight > window.innerHeight) {\n args.element.style.maxHeight = (window.innerHeight) * 0.8 + 'px';\n args.element.style.overflowY = 'auto';\n if (this.parent.enableStickyHeader) {\n args.element.style.position = 'fixed';\n }\n }\n }\n };\n ColumnMenu.prototype.ensureDisabledStatus = function (item) {\n var status = false;\n switch (item) {\n case 'Group':\n if (!this.parent.allowGrouping || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) >= 0 ||\n this.targetColumn && !this.targetColumn.allowGrouping)) {\n status = true;\n }\n break;\n case 'AutoFitAll':\n case 'AutoFit':\n status = !this.parent.ensureModuleInjected(Resize);\n break;\n case 'Ungroup':\n if (!this.parent.ensureModuleInjected(Group) || (this.parent.ensureModuleInjected(Group) && this.targetColumn\n && this.parent.groupSettings.columns.indexOf(this.targetColumn.field) < 0)) {\n status = true;\n }\n break;\n case 'SortDescending':\n case 'SortAscending':\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)\n && this.parent.sortSettings.columns.length > 0 && this.targetColumn && this.targetColumn.allowSorting) {\n var sortColumns = this.parent.sortSettings.columns;\n for (var i = 0; i < sortColumns.length; i++) {\n if (sortColumns[parseInt(i.toString(), 10)].field === this.targetColumn.field\n && sortColumns[parseInt(i.toString(), 10)].direction.toLocaleLowerCase() === item.toLocaleLowerCase().replace('sort', '')) {\n status = true;\n }\n }\n }\n else if (!this.parent.allowSorting || !this.parent.ensureModuleInjected(Sort) ||\n this.parent.allowSorting && this.targetColumn && !this.targetColumn.allowSorting) {\n status = true;\n }\n break;\n case 'Filter':\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar')\n && this.parent.ensureModuleInjected(Filter) && this.targetColumn && this.targetColumn.allowFiltering) {\n status = false;\n }\n else if (this.parent.ensureModuleInjected(Filter) && this.parent.allowFiltering\n && this.targetColumn && (!this.targetColumn.allowFiltering || this.parent.filterSettings.type === 'FilterBar')) {\n status = true;\n }\n }\n return status;\n };\n ColumnMenu.prototype.columnMenuItemClick = function (args) {\n var item = this.isChooserItem(args.item) ? 'ColumnChooser' : this.getKeyFromId(args.item.id);\n switch (item) {\n case 'AutoFit':\n this.parent.autoFitColumns(this.targetColumn.field);\n break;\n case 'AutoFitAll':\n this.parent.autoFitColumns([]);\n break;\n case 'Ungroup':\n this.parent.ungroupColumn(this.targetColumn.field);\n break;\n case 'Group':\n this.parent.groupColumn(this.targetColumn.field);\n break;\n case 'SortAscending':\n this.parent.sortColumn(this.targetColumn.field, 'Ascending');\n break;\n case 'SortDescending':\n this.parent.sortColumn(this.targetColumn.field, 'Descending');\n break;\n case 'ColumnChooser':\n // eslint-disable-next-line no-case-declarations\n var key = this.getKeyFromId(args.item.id, this.CHOOSER);\n // eslint-disable-next-line no-case-declarations\n var checkbox = args.element.querySelector('.e-checkbox-wrapper .e-frame');\n if (checkbox && checkbox.classList.contains('e-check')) {\n checkbox.classList.remove('e-check');\n this.parent.hideColumns(key, 'field');\n }\n else if (checkbox) {\n this.parent.showColumns(key, 'field');\n checkbox.classList.add('e-check');\n }\n break;\n case 'Filter':\n this.getFilter(args.element, args.item.id);\n break;\n }\n args.column = this.targetColumn;\n this.parent.trigger(columnMenuClick, args);\n };\n ColumnMenu.prototype.columnMenuOnClose = function (args) {\n var parent = 'parentObj';\n if (args.items.length > 0 && args.items[0][\"\" + parent] instanceof ContextMenu) {\n this.columnMenu.enableItems(this.disableItems, false);\n this.disableItems = [];\n this.columnMenu.showItems(this.hiddenItems);\n this.hiddenItems = [];\n if (this.isFilterPopupOpen()) {\n this.getFilter(args.element, args.element.id, true);\n }\n }\n if (!this.parent.isFrozenGrid()) {\n this.parent.notify(restoreFocus, {});\n }\n };\n ColumnMenu.prototype.getDefaultItems = function () {\n return ['AutoFitAll', 'AutoFit', 'SortAscending', 'SortDescending', 'Group', 'Ungroup', 'ColumnChooser', 'Filter'];\n };\n ColumnMenu.prototype.getItems = function () {\n var items = [];\n var defultItems = this.parent.columnMenuItems ? this.parent.columnMenuItems : this.getDefault();\n for (var _i = 0, defultItems_1 = defultItems; _i < defultItems_1.length; _i++) {\n var item = defultItems_1[_i];\n if (typeof item === 'string') {\n if (item === 'ColumnChooser') {\n var col = this.getDefaultItem(item);\n col.items = this.createChooserItems();\n items.push(col);\n }\n else {\n items.push(this.getDefaultItem(item));\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n ColumnMenu.prototype.getDefaultItem = function (item) {\n var menuItem = {};\n switch (item) {\n case 'SortAscending':\n menuItem = { iconCss: this.ASCENDING };\n break;\n case 'SortDescending':\n menuItem = { iconCss: this.DESCENDING };\n break;\n case 'Group':\n menuItem = { iconCss: this.GROUP };\n break;\n case 'Ungroup':\n menuItem = { iconCss: this.UNGROUP };\n break;\n case 'Filter':\n menuItem = { iconCss: this.FILTER };\n break;\n }\n this.defaultItems[\"\" + item] = {\n text: this.getLocaleText(item), id: this.generateID(item),\n iconCss: menuItem.iconCss ? 'e-icons ' + menuItem.iconCss : null\n };\n return this.defaultItems[\"\" + item];\n };\n ColumnMenu.prototype.getLocaleText = function (item) {\n return this.l10n.getConstant(this.localeText[\"\" + item]);\n };\n ColumnMenu.prototype.generateID = function (item, append$$1) {\n return this.gridID + '_colmenu_' + (append$$1 ? append$$1 + item : item);\n };\n ColumnMenu.prototype.getKeyFromId = function (id, append$$1) {\n return id.indexOf('_colmenu_') > 0 &&\n id.replace(this.gridID + '_colmenu_' + (append$$1 ? append$$1 : ''), '');\n };\n /**\n * @returns {HTMLElement} returns the HTMLElement\n * @hidden\n */\n ColumnMenu.prototype.getColumnMenu = function () {\n return this.element;\n };\n ColumnMenu.prototype.getModuleName = function () {\n return 'columnMenu';\n };\n ColumnMenu.prototype.setLocaleKey = function () {\n var localeKeys = {\n 'AutoFitAll': 'autoFitAll',\n 'AutoFit': 'autoFit',\n 'Group': 'Group',\n 'Ungroup': 'Ungroup',\n 'SortAscending': 'SortAscending',\n 'SortDescending': 'SortDescending',\n 'ColumnChooser': 'Columnchooser',\n 'Filter': 'FilterMenu'\n };\n return localeKeys;\n };\n ColumnMenu.prototype.getHeaderCell = function (e) {\n return closest(e.target, 'th.e-headercell');\n };\n ColumnMenu.prototype.getColumn = function () {\n if (this.headerCell) {\n var uid = this.headerCell.querySelector('.e-headercelldiv').getAttribute('e-mappinguid');\n return this.parent.getColumnByUid(uid);\n }\n return null;\n };\n ColumnMenu.prototype.createChooserItems = function () {\n var items = [];\n for (var _i = 0, _a = this.parent.columnModel; _i < _a.length; _i++) {\n var col = _a[_i];\n if (col.showInColumnChooser && col.field) {\n items.push({ id: this.generateID(col.field, this.CHOOSER), text: col.headerText ? col.headerText : col.field });\n }\n }\n return items;\n };\n ColumnMenu.prototype.appendFilter = function (e) {\n var filter = 'Filter';\n if (!this.defaultItems[\"\" + filter]) {\n return;\n }\n else {\n var key = this.defaultItems[\"\" + filter].id;\n if (closest(e.target, '#' + key) && !this.isFilterPopupOpen()) {\n this.getFilter(e.target, key);\n }\n else if (!closest(e.target, '#' + key) && this.isFilterPopupOpen()) {\n this.getFilter(e.target, key, true);\n }\n }\n };\n ColumnMenu.prototype.getFilter = function (target, id, isClose) {\n var filterPopup = this.getFilterPop();\n if (filterPopup) {\n filterPopup.style.display = !Browser.isDevice && isClose ? 'none' : 'block';\n }\n else {\n this.parent.notify(filterOpen, {\n col: this.targetColumn, target: target, isClose: isClose, id: id\n });\n }\n };\n ColumnMenu.prototype.setPosition = function (li, ul) {\n var gridPos = this.parent.element.getBoundingClientRect();\n var liPos = li.getBoundingClientRect();\n var left = liPos.left - gridPos.left;\n var top = liPos.top - gridPos.top;\n if (gridPos.height < top) {\n top = top - ul.offsetHeight + liPos.height;\n }\n else if (gridPos.height < top + ul.offsetHeight) {\n top = gridPos.height - ul.offsetHeight;\n }\n if (window.innerHeight < ul.offsetHeight + top + gridPos.top) {\n top = window.innerHeight - ul.offsetHeight - gridPos.top;\n }\n if (top + gridPos.top < 0) {\n top = 0;\n }\n left += (this.parent.enableRtl ? -ul.offsetWidth : liPos.width);\n if (gridPos.width <= left + ul.offsetWidth) {\n left -= liPos.width + ul.offsetWidth;\n if (liPos.left < ul.offsetWidth) {\n left = liPos.left + ul.offsetWidth / 2;\n }\n }\n else if (left < 0) {\n left += ul.offsetWidth + liPos.width;\n }\n ul.style.top = top + 'px';\n ul.style.left = left + 'px';\n };\n ColumnMenu.prototype.filterPosition = function () {\n var filterPopup = this.getFilterPop();\n filterPopup.classList.add(this.WRAP);\n if (!Browser.isDevice) {\n var disp = filterPopup.style.display;\n filterPopup.style.cssText += 'display:block;visibility:hidden';\n var li = this.element.querySelector('.' + this.FILTER);\n if (li) {\n this.setPosition(li.parentElement, filterPopup);\n filterPopup.style.cssText += 'display:' + disp + ';visibility:visible';\n }\n }\n };\n ColumnMenu.prototype.getDefault = function () {\n var items = [];\n if (this.parent.ensureModuleInjected(Resize)) {\n items.push('AutoFitAll');\n items.push('AutoFit');\n }\n if (this.parent.allowGrouping && this.parent.ensureModuleInjected(Group)) {\n items.push('Group');\n items.push('Ungroup');\n }\n if (this.parent.allowSorting && this.parent.ensureModuleInjected(Sort)) {\n items.push('SortAscending');\n items.push('SortDescending');\n }\n items.push('ColumnChooser');\n if (this.parent.allowFiltering && (this.parent.filterSettings.type !== 'FilterBar') &&\n this.parent.ensureModuleInjected(Filter)) {\n items.push('Filter');\n }\n return items;\n };\n ColumnMenu.prototype.isFilterPopupOpen = function () {\n var filterPopup = this.getFilterPop();\n return filterPopup && filterPopup.style.display !== 'none';\n };\n ColumnMenu.prototype.getFilterPop = function () {\n if (Browser.isDevice && this.targetColumn !== null && this.parent.filterSettings.type === 'Menu') {\n return document.getElementById(this.targetColumn.uid + '-flmdlg');\n }\n return this.parent.element.querySelector('.' + this.POP);\n };\n ColumnMenu.prototype.isFilterItemAdded = function () {\n return (this.parent.columnMenuItems &&\n this.parent.columnMenuItems.indexOf('Filter') >= 0) || !this.parent.columnMenuItems;\n };\n return ColumnMenu;\n}());\n\nvar __extends$35 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `ForeignKey` module is used to handle foreign key column's actions.\n */\nvar ForeignKey = /** @__PURE__ @class */ (function (_super) {\n __extends$35(ForeignKey, _super);\n function ForeignKey(parent, serviceLocator) {\n var _this = _super.call(this, parent, serviceLocator) || this;\n _this.parent = parent;\n _this.serviceLocator = serviceLocator;\n _this.initEvent();\n return _this;\n }\n ForeignKey.prototype.initEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initForeignKeyColumn, this.initForeignKeyColumns, this);\n this.parent.on(getForeignKeyData, this.getForeignKeyData, this);\n this.parent.on(generateQuery, this.generateQueryFormData, this);\n };\n ForeignKey.prototype.initForeignKeyColumns = function (columns) {\n for (var i = 0; i < columns.length; i++) {\n columns[parseInt(i.toString(), 10)].dataSource = (columns[parseInt(i.toString(), 10)].dataSource instanceof DataManager ?\n columns[parseInt(i.toString(), 10)].dataSource :\n (isNullOrUndefined(columns[parseInt(i.toString(), 10)].dataSource) ? new DataManager() :\n 'result' in columns[parseInt(i.toString(), 10)].dataSource ? columns[parseInt(i.toString(), 10)].dataSource :\n new DataManager(columns[parseInt(i.toString(), 10)].dataSource)));\n }\n };\n ForeignKey.prototype.eventfPromise = function (args, query, key, column) {\n var state = this.getStateEventArgument(query);\n var def = new Deferred();\n var deff = new Deferred();\n state.action = args.action;\n var dataModule = this.parent.getDataModule();\n if (!isNullOrUndefined(args.action) && args.action.requestType && dataModule.foreignKeyDataState.isDataChanged !== false) {\n dataModule.setForeignKeyDataState({\n isPending: true, resolver: deff.resolve\n });\n deff.promise.then(function () {\n def.resolve(column.dataSource);\n });\n state.setColumnData = this.parent.setForeignKeyData.bind(this.parent);\n this.parent.trigger(columnDataStateChange, state);\n }\n else {\n dataModule.setForeignKeyDataState({});\n def.resolve(key);\n }\n return def;\n };\n ForeignKey.prototype.getForeignKeyData = function (args) {\n var _this = this;\n var foreignColumns = args.column ? [args.column] : this.parent.getForeignKeyColumns();\n var allPromise = [];\n var _loop_1 = function (i) {\n var promise = void 0;\n var query = args.isComplex ? this_1.genarateColumnQuery(foreignColumns[parseInt(i.toString(), 10)]) :\n this_1.genarateQuery(foreignColumns[parseInt(i.toString(), 10)], args.result.result, false, true);\n query.params = this_1.parent.query.params;\n var dataSource = foreignColumns[parseInt(i.toString(), 10)].dataSource;\n if (dataSource && 'result' in dataSource) {\n var def = this_1.eventfPromise(args, query, dataSource, foreignColumns[parseInt(i.toString(), 10)]);\n promise = def.promise;\n }\n else if (!dataSource.ready || dataSource.dataSource.offline) {\n promise = dataSource.executeQuery(query);\n }\n else {\n promise = dataSource.ready.then(function () {\n return dataSource.executeQuery(query);\n });\n }\n allPromise.push(promise);\n };\n var this_1 = this;\n for (var i = 0; i < foreignColumns.length; i++) {\n _loop_1(i);\n }\n Promise.all(allPromise).then(function (responses) {\n for (var i = 0; i < responses.length; i++) {\n foreignColumns[parseInt(i.toString(), 10)].columnData = responses[parseInt(i.toString(), 10)].result;\n if (foreignColumns[parseInt(i.toString(), 10)].editType === 'dropdownedit' && 'result' in foreignColumns[parseInt(i.toString(), 10)].dataSource) {\n foreignColumns[parseInt(i.toString(), 10)].edit.params = extend(foreignColumns[parseInt(i.toString(), 10)]\n .edit.params, {\n dataSource: responses[parseInt(i.toString(), 10)].result,\n query: new Query(), fields: {\n value: foreignColumns[parseInt(i.toString(), 10)].foreignKeyField ||\n foreignColumns[parseInt(i.toString(), 10)].field,\n text: foreignColumns[parseInt(i.toString(), 10)].foreignKeyValue\n }\n });\n }\n }\n args.promise.resolve(args.result);\n }).catch(function (e) {\n _this.parent.log(['actionfailure', 'foreign_key_failure']);\n if (args.promise && args.promise.reject) {\n args.promise.reject(e);\n }\n return e;\n });\n };\n ForeignKey.prototype.generateQueryFormData = function (args) {\n args.predicate.predicate = this.genarateQuery(args.column, args.column.columnData, true);\n };\n ForeignKey.prototype.genarateQuery = function (column, e, fromData, needQuery) {\n var gObj = this.parent;\n var predicates = [];\n var query = new Query();\n var field = fromData ? column.foreignKeyField : column.field;\n if (gObj.allowPaging || gObj.enableVirtualization || fromData) {\n e = new DataManager(((gObj.allowGrouping && gObj.groupSettings.columns.length && !fromData) ?\n e.records : e)).executeLocal(new Query().select(field));\n var filteredValue = DataUtil.distinct(e, field, false);\n field = fromData ? column.field : column.foreignKeyField;\n for (var i = 0; i < filteredValue.length; i++) {\n if (filteredValue[parseInt(i.toString(), 10)] && filteredValue[parseInt(i.toString(), 10)].getDay) {\n predicates.push(getDatePredicate({ field: field, operator: 'equal', value: filteredValue[parseInt(i.toString(), 10)], matchCase: false }));\n }\n else {\n predicates.push(new Predicate(field, 'equal', filteredValue[parseInt(i.toString(), 10)], false));\n }\n }\n }\n if (needQuery) {\n return predicates.length ? query.where(Predicate.or(predicates)) : query;\n }\n return (predicates.length ? Predicate.or(predicates) : { predicates: [] });\n };\n ForeignKey.prototype.genarateColumnQuery = function (column) {\n var gObj = this.parent;\n var query = new Query();\n var queryColumn = this.isFiltered(column);\n if (queryColumn.isTrue) {\n query = this.filterQuery(query, queryColumn.column, true);\n }\n if (gObj.searchSettings.key.length) {\n var sSettings = gObj.searchSettings;\n if (column.dataSource instanceof DataManager && (column.dataSource.adaptor.getModuleName &&\n column.dataSource.adaptor.getModuleName() === 'ODataV4Adaptor')) {\n query = this.searchQuery(query, column, true);\n }\n else {\n query.search(sSettings.key, column.foreignKeyValue, sSettings.operator, sSettings.ignoreCase);\n }\n }\n return query;\n };\n ForeignKey.prototype.isFiltered = function (column) {\n var filterColumn = this.parent.filterSettings.columns.filter(function (fColumn) {\n return (fColumn.field === column.foreignKeyValue && fColumn.uid === column.uid);\n });\n return {\n column: filterColumn, isTrue: !!filterColumn.length\n };\n };\n ForeignKey.prototype.getModuleName = function () {\n return 'foreignKey';\n };\n ForeignKey.prototype.destroy = function () {\n this.destroyEvent();\n };\n ForeignKey.prototype.destroyEvent = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initForeignKeyColumn, this.initForeignKeyColumns);\n this.parent.off(getForeignKeyData, this.getForeignKeyData);\n this.parent.off(generateQuery, this.generateQueryFormData);\n };\n return ForeignKey;\n}(Data));\n\n/**\n *\n * `Logger` class\n */\nvar BASE_DOC_URL = 'https://ej2.syncfusion.com/documentation/grid';\nvar DOC_URL = 'https://ej2.syncfusion.com/documentation/';\nvar WARNING = '[EJ2Grid.Warning]';\nvar ERROR = '[EJ2Grid.Error]';\nvar INFO = '[EJ2Grid.Info]';\nvar Logger = /** @__PURE__ @class */ (function () {\n function Logger(parent) {\n this.parent = parent;\n this.parent.on('initial-end', this.patchadaptor, this);\n }\n Logger.prototype.getModuleName = function () {\n return 'logger';\n };\n Logger.prototype.log = function (types, args) {\n if (!(types instanceof Array)) {\n types = [types];\n }\n var type = types;\n for (var i = 0; i < type.length; i++) {\n var item = detailLists[type[parseInt(i.toString(), 10)]];\n var cOp = item.check(args, this.parent);\n if (cOp.success) {\n // eslint-disable-next-line no-console\n console[item.logType](item.generateMessage(args, this.parent, cOp.options));\n }\n }\n };\n Logger.prototype.patchadaptor = function () {\n var adaptor = this.parent.getDataModule().dataManager.adaptor;\n var original = adaptor.beforeSend;\n if (original) {\n adaptor.beforeSend = function (dm, request, settings) {\n original.call(adaptor, dm, request, settings);\n };\n }\n };\n Logger.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off('initial-end', this.patchadaptor);\n };\n return Logger;\n}());\nvar detailLists = {\n // eslint-disable-next-line camelcase\n module_missing: {\n type: 'module_missing',\n logType: 'warn',\n check: function (args, parent) {\n var injected = parent.getInjectedModules().map(function (m) { return m.prototype.getModuleName(); });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var modules = parent.requiredModules().map(function (m) { return m.member; })\n .filter(function (name) { return injected.indexOf(name) === -1; });\n return { success: modules.filter(function (m) { return m !== 'resize'; }).length > 0, options: modules };\n },\n generateMessage: function (args, parent, modules) {\n modules = modules.filter(function (m) { return m !== 'resize'; })\n .reduce(function (prev, cur) { return prev + (\"* \" + cur + \"\\n\"); }, '');\n return WARNING + ': MODULES MISSING\\n' + 'The following modules are not injected:.\\n' +\n (\"\" + modules) +\n (\"Refer to \" + BASE_DOC_URL + \"/module.html for documentation on importing feature modules.\");\n }\n },\n // eslint-disable-next-line camelcase\n promise_enabled: {\n type: 'promise_enabled',\n logType: 'error',\n check: function () {\n return { success: typeof Promise === 'undefined' };\n },\n generateMessage: function () {\n return ERROR + ': PROMISE UNDEFINED\\n' +\n 'Promise object is not present in the global environment,' +\n 'please use polyfil to support Promise object in your environment.\\n' +\n (\"Refer to \" + DOC_URL + \"/base/browser.html?#required-polyfills for more information.\");\n }\n },\n // eslint-disable-next-line camelcase\n primary_column_missing: {\n type: 'primary_column_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' + 'Editing is enabled but primary key column is not specified.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n selection_key_missing: {\n type: 'selection_key_missing',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.selectionSettings.persistSelection &&\n parent.getColumns().filter(function (column) { return column.isPrimaryKey; }).length === 0 };\n },\n generateMessage: function () {\n return WARNING + ': PRIMARY KEY MISSING\\n' +\n 'selectionSettings.persistSelection property is enabled. It requires one primary key column to persist selection.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/api-column.html?#isprimarykey for documentation on providing primary key columns.\");\n }\n },\n actionfailure: {\n type: 'actionfailure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function (args, parent) {\n var message = '';\n var formatError = formatErrorHandler(args, parent);\n var ajaxError = ajaxErrorHandler(args, parent);\n if (ajaxError !== '') {\n message = ajaxError;\n }\n else if (formatError !== '') {\n message = formatError;\n }\n else {\n message = args.error;\n }\n return WARNING + ': ' + message;\n }\n },\n // eslint-disable-next-line camelcase\n locale_missing: {\n type: 'locale_missing',\n logType: 'warn',\n check: function (args, parent) {\n var lObj = DataUtil.getObject(\"locale.\" + parent.locale + \".grid\", L10n);\n return { success: parent.locale !== 'en-US' && isNullOrUndefined(lObj) };\n },\n generateMessage: function (args, parent) {\n return WARNING + ': LOCALE CONFIG MISSING\\n' + (\"Locale configuration for '\" + parent.locale + \"' is not provided.\\n\") +\n (\"Refer to \" + BASE_DOC_URL + \"/globalization-and-localization.html?#localization \\n for documentation on setting locale configuration.\");\n }\n },\n limitation: {\n type: 'limitation',\n logType: 'warn',\n check: function (args, parent) {\n var name = args;\n var opt;\n switch (name) {\n case 'freeze':\n opt = {\n success: parent.allowGrouping || !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid)\n || !isUndefined(parent.rowTemplate) || parent.enableVirtualization,\n options: { name: 'freeze' }\n };\n break;\n case 'virtualization':\n opt = {\n success: !isUndefined(parent.detailTemplate) || !isUndefined(parent.childGrid) || parent.frozenRows !== 0\n || parent.frozenColumns !== 0,\n options: { name: 'virtualization' }\n };\n break;\n default:\n opt = { success: false };\n break;\n }\n return opt;\n },\n generateMessage: function (args, parent, options) {\n var name = options.name;\n var opt;\n switch (name) {\n case 'freeze':\n opt = 'Frozen rows and columns do not support the following features:\\n' +\n '* Virtualization\\n' +\n '* Row Template\\n' +\n '* Details Template\\n' +\n '* Hierarchy Grid\\n' +\n '* Grouping';\n break;\n case 'virtualization':\n opt = 'Virtualization does not support the following features.\\n' +\n '* Freeze rows and columns.\\n' +\n '* Details Template.\\n' +\n '* Hierarchy Grid.\\n';\n break;\n default:\n opt = '';\n break;\n }\n return WARNING + (\": \" + name.toUpperCase() + \" LIMITATIONS\\n\") + opt;\n }\n },\n // eslint-disable-next-line camelcase\n check_datasource_columns: {\n type: 'check_datasource_columns',\n logType: 'warn',\n check: function (args, parent) {\n return { success: !(parent.columns.length ||\n (parent.dataSource instanceof DataManager) || parent.dataSource.length) };\n },\n generateMessage: function () {\n return WARNING + ': GRID CONFIG MISSING\\n' + 'dataSource and columns are not provided in the grid. ' +\n 'At least one of either must be provided for grid configuration.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns.html for documentation on configuring the grid data and columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n virtual_height: {\n type: 'virtual_height',\n logType: 'error',\n check: function (args, parent) {\n return { success: isNullOrUndefined(parent.height) || parent.height === 'auto' };\n },\n generateMessage: function () {\n return ERROR + ': GRID HEIGHT MISSING \\n' + 'height property is required to use virtualization.\\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/virtual.html for documentation on configuring the virtual grid.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_remote_edit: {\n type: 'grid_remote_edit',\n logType: 'error',\n check: function (args) {\n return { success: Array.isArray(args) || Array.isArray(args.result) };\n },\n generateMessage: function () {\n return ERROR + ': RETRUN VALUE MISSING \\n' +\n 'Remote service returns invalid data. \\n' +\n (\"Refer to \" + BASE_DOC_URL + \"/edit.html for documentation on configuring editing with remote data.\");\n }\n },\n // eslint-disable-next-line camelcase\n grid_sort_comparer: {\n type: 'grid_sort_comparer',\n logType: 'warn',\n check: function (args, parent) {\n return { success: parent.getDataModule().isRemote() };\n },\n generateMessage: function () {\n return WARNING + ': SORT COMPARER NOT WORKING \\n' + 'Sort comparer will not work with remote data.' +\n (\"Refer to \" + BASE_DOC_URL + \"/sorting/#custom-sort-comparer for documentation on using the sort comparer.\");\n }\n },\n // eslint-disable-next-line camelcase\n resize_min_max: {\n type: 'resize_min_max',\n logType: 'info',\n check: function (args) {\n return { success: (args.column.minWidth && args.column.minWidth >= args.width) ||\n (args.column.maxWidth && args.column.maxWidth <= args.width) };\n },\n generateMessage: function () {\n return INFO + ': RESIZING COLUMN REACHED MIN OR MAX \\n' + 'The column resizing width is at its min or max.';\n }\n },\n // eslint-disable-next-line camelcase\n action_disabled_column: {\n type: 'action_disabled_column',\n logType: 'info',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'reorder':\n if (isNullOrUndefined(args.destColumn)) {\n fn = \"reordering action is disabled for the \" + args.column.headerText + \" column\";\n }\n else {\n fn = \"reordering action is disabled for the \" + (args.column.allowReordering ?\n args.destColumn.headerText : args.column.headerText) + \" column\";\n }\n break;\n case 'group':\n fn = \"grouping action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'filter':\n fn = \"filtering action is disabled for the \" + args.columnName + \" column.\";\n break;\n case 'sort':\n fn = \"sorting action is disabled for the \" + args.columnName + \" column.\";\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": ACTION DISABLED \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n exporting_begin: {\n type: 'exporting_begin',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG INPROGRESS \\n Grid \" + options.args + \"ing is in progress\");\n }\n },\n // eslint-disable-next-line camelcase\n exporting_complete: {\n type: 'exporting_complete',\n logType: 'info',\n check: function (args) {\n return { success: true, options: { args: args } };\n },\n generateMessage: function (args, parent, options) {\n return INFO + (\": EXPORTNIG COMPLETED \\n Grid \" + options.args + \"ing is complete\");\n }\n },\n // eslint-disable-next-line camelcase\n foreign_key_failure: {\n type: 'foreign_key_failure',\n logType: 'error',\n check: function () {\n return { success: true };\n },\n generateMessage: function () {\n return ERROR + ': FOREIGNKEY CONFIG \\n Grid foreign key column needs a valid data source/service.' +\n (\"Refer to \" + BASE_DOC_URL + \"/columns/#foreign-key-column for documentation on configuring foreign key columns.\");\n }\n },\n // eslint-disable-next-line camelcase\n initial_action: {\n type: 'initial_action',\n logType: 'error',\n check: function (args) {\n var success = true;\n var fn;\n switch (args.moduleName) {\n case 'group':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to group the column';\n break;\n case 'filter':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to filter the column.';\n break;\n case 'sort':\n fn = \"The \" + args.columnName + \" column is not available in the grid's column model.\" +\n 'Please provide a valid field name to sort the column.';\n break;\n }\n return { success: success, options: { fn: fn } };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": INITIAL ACTION FAILURE \\n \" + options.fn);\n }\n },\n // eslint-disable-next-line camelcase\n frozen_rows_columns: {\n type: 'frozen_rows_columns',\n logType: 'error',\n check: function (args, parent) {\n return { success: parent.getColumns().length <= parent.frozenColumns || parent.frozenRows >= parent.currentViewData.length };\n },\n generateMessage: function (args, parent) {\n return ERROR + (\": OUT OF RANGE ERROR-\\n \" + (parent.getColumns().length <= parent.frozenColumns ? 'FROZEN COLUMNS,' : '')) +\n ((parent.frozenRows >= parent.currentViewData.length ? 'FROZEN ROWS' : '') + \" invalid\");\n }\n },\n // eslint-disable-next-line camelcase\n column_type_missing: {\n type: 'column_type_missing',\n logType: 'error',\n check: function (args) {\n return { success: isNullOrUndefined(args.column.type), options: args.column.headerText };\n },\n generateMessage: function (args, parent, options) {\n return ERROR + (\": COLUMN TYPE MISSING-\\n \" + options + \" column type was invalid or not defined.\") +\n (\"Please go through below help link: \" + DOC_URL + \"/grid/columns/#column-type\");\n }\n },\n // eslint-disable-next-line camelcase\n datasource_syntax_mismatch: {\n type: 'datasource_syntax_mismatch',\n logType: 'warn',\n check: function (args) {\n return { success: args.dataState.dataSource && !(args.dataState.dataSource instanceof DataManager ||\n 'result' in args.dataState.dataSource || args.dataState.dataSource instanceof Array) &&\n !(isNullOrUndefined(args.dataState.dataStateChange)) };\n },\n generateMessage: function () {\n return WARNING + ': DATASOURCE SYNTAX WARNING\\n' +\n 'DataSource should be in the form of {result: Object[], count: number}' +\n 'when dataStateChangeEvent used';\n }\n }\n};\nvar formatErrorHandler = function (args) {\n var error = args.error;\n if (error.indexOf && error.indexOf('Format options') !== 0) {\n return '';\n }\n return 'INVALID FORMAT\\n' +\n 'For more information, refer to the following documentation links:\\n' +\n (\"Number format: \" + DOC_URL + \"/base/intl.html?#supported-format-string.\\n\") +\n (\"Date format: \" + DOC_URL + \"/base/intl.html?#manipulating-datetime.\\n\") +\n (\"Message: \" + error);\n};\nvar ajaxErrorHandler = function (args) {\n var error = DataUtil.getObject('error.error', args);\n if (isNullOrUndefined(error)) {\n return '';\n }\n var jsonResult = '';\n try {\n jsonResult = JSON.parse(error.responseText);\n }\n catch (_a) {\n jsonResult = '';\n }\n return 'XMLHTTPREQUEST FAILED\\n' +\n (\"Url: \" + error.responseURL + \"\\n\") +\n (\"Status: \" + error.status + \" - \" + error.statusText + \"\\n\") +\n (\"\" + (jsonResult !== '' ? 'Message: ' + jsonResult : ''));\n};\n\n/**\n * Infinite Scrolling class\n *\n * @hidden\n */\nvar InfiniteScroll = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for the Grid infinite scrolling.\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n function InfiniteScroll(parent, serviceLocator) {\n this.infiniteCache = {};\n this.infiniteCurrentViewData = {};\n this.infiniteFrozenCache = {};\n this.isDownScroll = false;\n this.isUpScroll = false;\n this.isScroll = true;\n this.enableContinuousScroll = false;\n this.initialRender = true;\n this.isRemove = false;\n this.isInitialCollapse = false;\n this.prevScrollTop = 0;\n this.actions = ['filtering', 'searching', 'grouping', 'ungrouping', 'reorder', 'sorting', 'refresh'];\n this.keys = [downArrow, upArrow, enter, shiftEnter];\n this.rowTop = 0;\n this.isInitialMovableRender = true;\n this.virtualInfiniteData = {};\n this.isCancel = false;\n this.emptyRowData = {};\n this.isNormaledit = false;\n this.isInfiniteScroll = false;\n this.isLastPage = false;\n this.isInitialRender = true;\n this.isFocusScroll = false;\n this.isGroupCollapse = false;\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.isNormaledit = this.parent.editSettings.mode === 'Normal';\n this.addEventListener();\n this.widthService = serviceLocator.getService('widthService');\n this.rowModelGenerator = this.parent.isFrozenGrid() ? new FreezeRowModelGenerator(this.parent)\n : new RowModelGenerator(this.parent);\n }\n InfiniteScroll.prototype.getModuleName = function () {\n return 'infiniteScroll';\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.addEventListener = function () {\n this.parent.on(dataReady, this.onDataReady, this);\n this.parent.on(dataSourceModified, this.dataSourceModified, this);\n this.parent.on(infinitePageQuery, this.infinitePageQuery, this);\n this.parent.on(infiniteScrollHandler, this.infiniteScrollHandler, this);\n this.parent.on(beforeCellFocused, this.infiniteCellFocus, this);\n this.parent.on(appendInfiniteContent, this.appendInfiniteRows, this);\n this.parent.on(removeInfiniteRows, this.removeInfiniteCacheRows, this);\n this.parent.on(resetInfiniteBlocks, this.resetInfiniteBlocks, this);\n this.parent.on(setInfiniteCache, this.setCache, this);\n this.parent.on(initialCollapse, this.ensureIntialCollapse, this);\n this.parent.on(keyPressed, this.infiniteCellFocus, this);\n this.parent.on(infiniteShowHide, this.setDisplayNone, this);\n this.parent.on(virtualScrollEditActionBegin, this.editActionBegin, this);\n this.parent.on(getVirtualData, this.getVirtualInfiniteData, this);\n this.parent.on(editReset, this.resetInfiniteEdit, this);\n this.parent.on(virtualScrollEditSuccess, this.infiniteEditSuccess, this);\n this.parent.on(refreshVirtualCache, this.refreshInfiniteCache, this);\n this.parent.on(refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex, this);\n this.parent.on(infiniteEditHandler, this.infiniteEditHandler, this);\n this.parent.on(virtualScrollAddActionBegin, this.infiniteAddActionBegin, this);\n this.parent.on(modelChanged, this.modelChanged, this);\n this.parent.on(refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(contentReady, this.selectNewRow, this);\n this.parent.on(captionActionComplete, this.captionActionComplete, this);\n this.parent.on(setVirtualPageQuery, this.setGroupCollapsePageQuery, this);\n this.actionBeginFunction = this.actionBegin.bind(this);\n this.actionCompleteFunction = this.actionComplete.bind(this);\n this.dataBoundFunction = this.dataBound.bind(this);\n this.parent.on(deleteComplete, this.deleteComplate, this);\n this.parent.addEventListener(actionBegin, this.actionBeginFunction);\n this.parent.addEventListener(actionComplete, this.actionCompleteFunction);\n this.parent.addEventListener(dataBound, this.dataBoundFunction);\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(dataReady, this.onDataReady);\n this.parent.off(dataSourceModified, this.dataSourceModified);\n this.parent.off(infinitePageQuery, this.infinitePageQuery);\n this.parent.off(infiniteScrollHandler, this.infiniteScrollHandler);\n this.parent.off(beforeCellFocused, this.infiniteCellFocus);\n this.parent.off(appendInfiniteContent, this.appendInfiniteRows);\n this.parent.off(removeInfiniteRows, this.removeInfiniteCacheRows);\n this.parent.off(resetInfiniteBlocks, this.resetInfiniteBlocks);\n this.parent.off(setInfiniteCache, this.setCache);\n this.parent.off(initialCollapse, this.ensureIntialCollapse);\n this.parent.off(keyPressed, this.infiniteCellFocus);\n this.parent.off(infiniteShowHide, this.setDisplayNone);\n this.parent.off(virtualScrollEditActionBegin, this.editActionBegin);\n this.parent.off(getVirtualData, this.getVirtualInfiniteData);\n this.parent.off(editReset, this.resetInfiniteEdit);\n this.parent.off(virtualScrollEditSuccess, this.infiniteEditSuccess);\n this.parent.off(refreshVirtualCache, this.refreshInfiniteCache);\n this.parent.on(refreshInfiniteEditrowindex, this.refreshInfiniteEditrowindex);\n this.parent.off(infiniteEditHandler, this.infiniteEditHandler);\n this.parent.off(virtualScrollAddActionBegin, this.infiniteAddActionBegin);\n this.parent.off(modelChanged, this.modelChanged);\n this.parent.off(refreshInfiniteCurrentViewData, this.refreshInfiniteCurrentViewData);\n this.parent.off(destroy, this.destroy);\n this.parent.off(contentReady, this.selectNewRow);\n this.parent.off(captionActionComplete, this.captionActionComplete);\n this.parent.off(setVirtualPageQuery, this.setGroupCollapsePageQuery);\n this.parent.removeEventListener(actionBegin, this.actionBeginFunction);\n this.parent.removeEventListener(actionComplete, this.actionCompleteFunction);\n this.parent.removeEventListener(dataBound, this.dataBoundFunction);\n };\n InfiniteScroll.prototype.dataBound = function () {\n if (this.groupCaptionAction === 'collapse') {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else if (this.groupCaptionAction === 'refresh') {\n this.parent.hideSpinner();\n this.groupCaptionAction = this.empty;\n }\n };\n InfiniteScroll.prototype.setGroupCollapsePageQuery = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && this.isGroupCollapse) {\n args.skipPage = true;\n this.isGroupCollapse = false;\n if (this.groupCaptionAction === 'collapse') {\n var captionRow = gObj.getRowObjectFromUID(this.parentCapUid);\n var rowObjs = gObj.getRowsObject();\n var childCount = 0;\n for (var i = rowObjs.length - 1; i >= 0; i--) {\n if (rowObjs[parseInt(i.toString(), 10)].indent === captionRow.indent) {\n break;\n }\n if (rowObjs[parseInt(i.toString(), 10)].isDataRow) {\n childCount++;\n }\n }\n var key = getGroupKeysAndFields(rowObjs.indexOf(captionRow), rowObjs);\n var pred = generateExpandPredicates(key.fields, key.keys, this);\n var predicateList = getPredicates(pred);\n pred = predicateList[predicateList.length - 1];\n for (var i = predicateList.length - 2; i >= 0; i--) {\n pred = pred.and(predicateList[parseInt(i.toString(), 10)]);\n }\n args.query.where(pred);\n args.query.skip(childCount);\n this.parentCapUid = this.empty;\n }\n else {\n var rows = gObj.getRows();\n var size = gObj.pageSettings.pageSize;\n var skip = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var additionalCnt = ((skip - (skip % size)) + size) - skip;\n if ((skip % size) === 0) {\n additionalCnt = 0;\n }\n args.query.skip(skip);\n args.query.take((gObj.infiniteScrollSettings.initialBlocks * gObj.pageSettings.pageSize) + additionalCnt);\n }\n }\n };\n InfiniteScroll.prototype.captionActionComplete = function (args) {\n var gObj = this.parent;\n if (!gObj.infiniteScrollSettings.enableCache && args.isCollapse) {\n var contetRect = gObj.getContent().firstElementChild.getBoundingClientRect();\n var tableReact = gObj.contentModule.getTable().getBoundingClientRect();\n if (Math.round(tableReact.bottom - gObj.getRowHeight()) <= Math.round(contetRect.bottom)) {\n this.parentCapUid = args.parentUid;\n this.groupCaptionAction = 'collapse';\n gObj.showSpinner();\n var caption = gObj.getRowObjectFromUID(args.parentUid);\n var childCount = this.getCaptionChildCount(caption);\n if (!childCount) {\n this.groupCaptionAction = 'refresh';\n this.makeGroupCollapseRequest();\n }\n else {\n this.makeGroupCollapseRequest(args.parentUid);\n }\n }\n }\n };\n InfiniteScroll.prototype.makeGroupCollapseRequest = function (parentUid) {\n var gObj = this.parent;\n var captionRows = [].slice.call(gObj.getContentTable().querySelectorAll('tr'));\n var rows = gObj.groupSettings.enableLazyLoading ? captionRows : gObj.getRows();\n var index = !gObj.groupSettings.enableLazyLoading ? getRowIndexFromElement(rows[rows.length - 1]) :\n gObj.contentModule['visibleRows'].length - 1;\n var prevPage = this.parent.pageSettings.currentPage;\n if (prevPage >= this.maxPage) {\n gObj.hideSpinner();\n return;\n }\n this.parent.pageSettings.currentPage = Math.ceil(index / this.parent.pageSettings.pageSize) + 1;\n var scrollArg = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index + 1,\n direction: 'down',\n isCaptionCollapse: true,\n parentUid: parentUid\n };\n this.isGroupCollapse = true;\n this.parent.notify('model-changed', scrollArg);\n };\n InfiniteScroll.prototype.getCaptionChildCount = function (caption) {\n var rowObj = this.parent.getRowsObject();\n var index = rowObj.indexOf(caption);\n var make = false;\n for (var i = index; i < rowObj.length; i++) {\n if ((rowObj[parseInt(i.toString(), 10)].indent === caption.indent || rowObj[parseInt(i.toString(), 10)].indent < caption.indent)\n && rowObj[parseInt(i.toString(), 10)].data.key !== caption.data.key) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].isCaptionRow && !this.childCheck(rowObj, rowObj[parseInt(i.toString(), 10)], i)) {\n make = true;\n break;\n }\n }\n return make;\n };\n InfiniteScroll.prototype.childCheck = function (rowObj, row$$1, index) {\n var childCount = 0;\n for (var i = index + 1; i < rowObj.length; i++) {\n if (rowObj[parseInt(i.toString(), 10)].indent === row$$1.indent) {\n break;\n }\n if (rowObj[parseInt(i.toString(), 10)].indent === (row$$1.indent + 1)\n && rowObj[parseInt(i.toString(), 10)].parentUid === row$$1.uid) {\n childCount++;\n }\n }\n return row$$1.data.count === childCount;\n };\n InfiniteScroll.prototype.updateCurrentViewData = function () {\n var gObj = this.parent;\n if (gObj.groupSettings.columns.length) {\n return;\n }\n var keys = Object.keys(this.infiniteCurrentViewData);\n gObj.currentViewData = [];\n var page = gObj.pageSettings.currentPage;\n var isCache = gObj.infiniteScrollSettings.enableCache;\n var blocks = gObj.infiniteScrollSettings.maxBlocks;\n var isMiddlePage = isCache && (page > blocks || (this.isUpScroll && page > 1));\n var start = isMiddlePage ? this.isUpScroll ? page : (page - blocks) + 1 : 1;\n var end = isMiddlePage ? (start + blocks) - 1 : isCache ? blocks : keys.length;\n for (var i = start; i <= end; i++) {\n if (this.infiniteCurrentViewData[parseInt(i.toString(), 10)]) {\n gObj.currentViewData = gObj.currentViewData.concat(this.infiniteCurrentViewData[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCurrentViewData = function (e) {\n var page = this.parent.pageSettings.currentPage;\n var size = this.parent.pageSettings.pageSize;\n var blocks = this.parent.infiniteScrollSettings.initialBlocks;\n var keys = Object.keys(this.infiniteCurrentViewData);\n var cache = this.parent.infiniteScrollSettings.enableCache;\n if (!this.parent.groupSettings.columns.length) {\n var isAdd = e.args.requestType === 'save' && !(this.parent.sortSettings.columns.length\n || this.parent.filterSettings.columns.length || this.parent.groupSettings.columns.length\n || this.parent.searchSettings.key);\n var isDelete = e.args.requestType === 'delete';\n if (!cache && (isAdd || isDelete)) {\n if (isAdd) {\n var indexCount = 0;\n for (var i = 1; i <= keys.length; i++) {\n indexCount += this.infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1;\n if (e.args.index <= indexCount) {\n this.resetCurrentViewData(i);\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)]\n .splice(e.args.index, 0, e.args.data);\n break;\n }\n }\n }\n else {\n this.infiniteCurrentViewData[keys[keys.length - 1]].push(e.data[0]);\n }\n }\n else {\n if (blocks > 1 && e.data.length === (blocks * size)) {\n this.setInitialCache(e.data.slice(), {}, cache && e.args.requestType === 'delete', true);\n }\n else {\n this.infiniteCurrentViewData[parseInt(page.toString(), 10)] = e.data.slice();\n }\n }\n }\n };\n InfiniteScroll.prototype.resetCurrentViewData = function (startIndex) {\n var keys = Object.keys(this.infiniteCurrentViewData);\n for (var i = startIndex; i <= keys.length; i++) {\n var lastViewData = this.infiniteCurrentViewData[parseInt(i.toString(), 10)][this\n .infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1];\n if (this.infiniteCurrentViewData[i + 1]) {\n this.infiniteCurrentViewData[i + 1].splice(0, 0, lastViewData);\n }\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)].pop();\n }\n };\n InfiniteScroll.prototype.deleteComplate = function () {\n if (this.parent.isFrozenGrid() && !this.parent.infiniteScrollSettings.enableCache) {\n this.parent.contentModule.refreshScrollOffset();\n }\n };\n InfiniteScroll.prototype.modelChanged = function (args) {\n var rows = this.parent.getRows();\n if (args.requestType === 'save' && args.index && args.data) {\n this.addRowIndex = args.index;\n }\n if (rows && rows.length && args.requestType !== 'infiniteScroll' && (args.requestType === 'delete' || this.requestType === 'add')) {\n this.firstIndex = getRowIndexFromElement(rows[0]);\n this.firstBlock = Math.ceil((this.firstIndex + 1) / this.parent.pageSettings.pageSize);\n this.lastIndex = getRowIndexFromElement(rows[rows.length - 1]);\n if (args.requestType === 'delete') {\n var rowObj = this.parent.getRowsObject();\n args.startIndex = this.parent.infiniteScrollSettings.enableCache\n ? (this.firstBlock - 1) * this.parent.pageSettings.pageSize : rowObj[rowObj.length - 1].index;\n }\n else {\n args.startIndex = this.firstIndex;\n }\n if (!this.parent.infiniteScrollSettings.enableCache\n && this.parent.pageSettings.currentPage === this.maxPage && args.requestType === 'delete') {\n this.isLastPage = true;\n this.lastIndex = this.lastIndex - 1;\n }\n }\n };\n InfiniteScroll.prototype.infiniteAddActionBegin = function (args) {\n if (this.isNormaledit) {\n this.isAdd = true;\n if (this.parent.infiniteScrollSettings.enableCache) {\n if (!Object.keys(this.emptyRowData).length) {\n this.createEmptyRowdata();\n }\n if (this.parent.pageSettings.currentPage > 1) {\n args.startEdit = false;\n this.resetInfiniteBlocks({}, true);\n this.makeRequest({ currentPage: 1 });\n }\n }\n }\n };\n InfiniteScroll.prototype.infiniteEditHandler = function (args) {\n if (!this.parent.infiniteScrollSettings.enableCache && (args.e.requestType === 'delete'\n || (args.e.requestType === 'save' && this.requestType === 'add'))) {\n var frozenCols = this.parent.isFrozenGrid();\n var rowElms = this.parent.getRows();\n var rows = this.parent.getRowsObject();\n if (this.ensureRowAvailability(rows, args.result[0])) {\n if (rowElms.length && !(this.addRowIndex && this.addRowIndex >= rowElms.length)) {\n this.resetRowIndex(rows, args.e, rowElms, this.requestType === 'add', true);\n if (frozenCols) {\n var rows_1 = this.parent.getMovableRowsObject();\n this.resetRowIndex(rows_1, args.e, this.parent.getMovableDataRows(), this.requestType === 'add');\n if (this.parent.getFrozenMode() === leftRight) {\n var frRows = this.parent.getFrozenRightRowsObject();\n this.resetRowIndex(frRows, args.e, this.parent.getFrozenRightRows(), this.requestType === 'add');\n }\n }\n }\n if (!this.isLastPage) {\n this.createRow(rows, args);\n }\n else {\n this.isLastPage = false;\n this.parent.pageSettings.currentPage = this.maxPage;\n if (this.parent.selectionModule.index < this.parent.frozenRows) {\n remove(rowElms[this.parent.frozenRows - 1]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, false, true);\n if (frozenCols) {\n var movableRows = this.parent.getMovableDataRows();\n remove(movableRows[this.parent.frozenRows]);\n this.createRow([this.parent.getMovableRowsObject()[this.parent.frozenRows - 1]], args, true, true);\n if (this.parent.getFrozenMode() === leftRight) {\n var rightRows = this.parent.getFrozenRightDataRows();\n remove(rightRows[this.parent.frozenRows]);\n this.createRow([this.parent.getFrozenRightRowsObject()[this.parent.frozenRows - 1]], args, false, true, true);\n }\n }\n setRowElements(this.parent);\n }\n }\n }\n this.parent.hideSpinner();\n this.parent.notify(refreshInfinitePersistSelection, {});\n if (this.requestType === 'delete') {\n this.parent.notify(deleteComplete, args.e);\n }\n else {\n this.parent.notify(saveComplete, args.e);\n }\n }\n this.parent.notify(freezeRender, { case: 'refreshHeight' });\n };\n InfiniteScroll.prototype.createRow = function (rows, args, isMovable, isFrozenRows, isFrozenRight) {\n var row$$1 = !isFrozenRows ? this.generateRows(args.result, args.e) : rows;\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n this.parent.removeMaskRow();\n if (args.e.requestType === 'save' && args.e.index && args.e.data) {\n row$$1[0].index = this.addRowIndex;\n this.addRowIndex = null;\n if (row$$1[0].index >= rows.length) {\n return;\n }\n }\n var tbody$$1;\n if (isFrozenRight) {\n tbody$$1 = this.parent.element.querySelector('.e-frozen-right-content').querySelector(tbody);\n }\n else {\n tbody$$1 = !this.parent.isFrozenGrid() ? this.parent.getContent().querySelector(tbody) : isMovable\n ? this.parent.getMovableVirtualContent().querySelector(tbody)\n : this.parent.getFrozenVirtualContent().querySelector(tbody);\n }\n if (this.parent.frozenRows) {\n tbody$$1 = isFrozenRows && this.requestType !== 'add' || !isFrozenRows && this.requestType === 'add'\n ? !this.parent.isFrozenGrid() ? this.parent.getHeaderContent().querySelector(tbody)\n : isMovable ? this.parent.getMovableVirtualHeader().querySelector(tbody)\n : isFrozenRight ? this.parent.element.querySelector('.e-frozen-right-header').querySelector(tbody)\n : this.parent.getFrozenVirtualHeader().querySelector(tbody) : tbody$$1;\n }\n var notifyArgs = {\n rows: rows, cancel: false, args: args, isMovable: isMovable,\n isFrozenRows: isFrozenRows, isFrozenRight: isFrozenRows, row: row$$1\n };\n this.parent.notify(infiniteCrudCancel, notifyArgs);\n if (!notifyArgs.cancel) {\n for (var i = row$$1.length - 1; i >= 0; i--) {\n if (this.requestType === 'delete') {\n tbody$$1.appendChild(rowRenderer.render(row$$1[parseInt(i.toString(), 10)], this.parent.getColumns()));\n }\n else {\n tbody$$1.insertBefore(rowRenderer.render(row$$1[parseInt(i.toString(), 10)], this.parent.getColumns()), tbody$$1.rows[(args.e.index)]);\n }\n }\n }\n if (!isFrozenRows && this.parent.frozenRows\n && (this.parent.selectionModule.index < this.parent.frozenRows || this.requestType === 'add')) {\n var rowElems = isMovable ? this.parent.getMovableDataRows() : isFrozenRight ? this.parent.getFrozenRightDataRows()\n : this.parent.getRows();\n var index = (isMovable || isFrozenRight) && this.requestType === 'add'\n ? this.parent.frozenRows : this.parent.frozenRows - 1;\n remove(rowElems[parseInt(index.toString(), 10)]);\n this.createRow([rows[this.parent.frozenRows - 1]], args, isMovable, true, isFrozenRight);\n }\n if (!this.parent.infiniteScrollSettings.enableCache && !isFrozenRows) {\n if (isFrozenRight) {\n setRowElements(this.parent);\n this.parent.contentModule.rightFreezeRows = this.requestType === 'add'\n ? row$$1.concat(rows) : rows.concat(row$$1);\n }\n else if (!this.parent.isFrozenGrid() || isMovable) {\n setRowElements(this.parent);\n this.parent.contentModule.visibleRows = this.requestType === 'add'\n ? row$$1.concat(rows) : rows.concat(row$$1);\n if (this.parent.getFrozenMode() === leftRight) {\n args.e.renderMovableContent = true;\n this.createRow(this.parent.getFrozenRightRowsObject(), args, false, false, true);\n }\n }\n else {\n this.parent.contentModule.visibleFrozenRows = this.requestType === 'add'\n ? row$$1.concat(rows) : rows.concat(row$$1);\n args.e.isFrozen = true;\n this.createRow(this.parent.getMovableRowsObject(), args, true);\n }\n }\n };\n InfiniteScroll.prototype.ensureRowAvailability = function (rows, data) {\n var resume = true;\n if (this.parent.frozenRows && !this.parent.infiniteScrollSettings.enableCache\n && this.parent.sortSettings.columns && this.requestType === 'add') {\n var key = this.parent.getPrimaryKeyFieldNames()[0];\n for (var i = 0; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].data[\"\" + key] === data[\"\" + key]) {\n resume = false;\n break;\n }\n }\n }\n return resume;\n };\n InfiniteScroll.prototype.generateRows = function (data, args) {\n return this.rowModelGenerator.generateRows(data, args);\n };\n InfiniteScroll.prototype.resetRowIndex = function (rows, args, rowElms, isAdd, isFrozen) {\n var _this = this;\n var keyField = this.parent.getPrimaryKeyFieldNames()[0];\n var isRemove = !(rowElms.length % this.parent.pageSettings.pageSize);\n if (isAdd) {\n if (isRemove) {\n if (isFrozen && !this.parent.groupSettings.columns.length) {\n this.swapCurrentViewData(1, true);\n }\n remove(rowElms[rows.length - 1]);\n rowElms.splice(rows.length - 1, 1);\n rows.splice(rows.length - 1, 1);\n }\n }\n else {\n rows.filter(function (e, index) {\n if (e.data[\"\" + keyField] === args.data[0][\"\" + keyField]) {\n if (isFrozen && !_this.parent.groupSettings.columns.length) {\n var page = Math.ceil((index + 1) / _this.parent.pageSettings.pageSize);\n _this.resetInfiniteCurrentViewData(page, index);\n }\n rows.splice(index, 1);\n remove(rowElms[parseInt(index.toString(), 10)]);\n rowElms.splice(index, 1);\n }\n });\n }\n var startIndex = isAdd ? this.addRowIndex ? this.addRowIndex + 1 : 1 : 0;\n resetRowIndex(this.parent, rows, rowElms, startIndex, this.addRowIndex ? this.addRowIndex : 0);\n };\n InfiniteScroll.prototype.resetInfiniteCurrentViewData = function (page, index) {\n index = index - ((page - 1) * this.parent.pageSettings.pageSize);\n this.infiniteCurrentViewData[parseInt(page.toString(), 10)].splice(index, 1);\n this.swapCurrentViewData(page, false);\n };\n InfiniteScroll.prototype.swapCurrentViewData = function (page, isAdd) {\n var keys = Object.keys(this.infiniteCurrentViewData);\n var end = isAdd ? keys.length + 1 : keys.length;\n for (var i = page; i < end; i++) {\n if (this.infiniteCurrentViewData[i + 1]) {\n var pageIndex = isAdd ? i : i + 1;\n var index = isAdd ? this.infiniteCurrentViewData[parseInt(i.toString(), 10)].length - 1 : 0;\n var data = this.infiniteCurrentViewData[parseInt(pageIndex.toString(), 10)].splice(index, 1);\n if (isAdd) {\n this.infiniteCurrentViewData[i + 1] = data.concat(this.infiniteCurrentViewData[i + 1]);\n if ((i + 1) === end - 1) {\n this.infiniteCurrentViewData[i + 1].splice(this.infiniteCurrentViewData[i + 1].length - 1, 1);\n }\n }\n else {\n this.infiniteCurrentViewData[parseInt(i.toString(), 10)].push(data[0]);\n }\n }\n }\n this.updateCurrentViewData();\n };\n InfiniteScroll.prototype.setDisplayNone = function (args) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n var frozenCols = this.parent.isFrozenGrid();\n var keys = frozenCols ? Object.keys(this.infiniteFrozenCache) : Object.keys(this.infiniteCache);\n for (var i = 1; i <= keys.length; i++) {\n var cache = frozenCols ? args.isFreeze ? this.infiniteFrozenCache[parseInt(i.toString(), 10)][0]\n : this.infiniteFrozenCache[parseInt(i.toString(), 10)][1] : this.infiniteCache[parseInt(i.toString(), 10)];\n cache.filter(function (e) {\n e.cells[args.index].visible = args.visible === '';\n });\n }\n this.resetContentModuleCache(frozenCols ? this.infiniteFrozenCache : this.infiniteCache);\n }\n };\n InfiniteScroll.prototype.refreshInfiniteCache = function (args) {\n this.getEditedRowObject().data = args.data;\n };\n InfiniteScroll.prototype.refreshInfiniteCacheRowVisibleLength = function (args, currentPage) {\n var cPageRowArray = args[parseInt(currentPage.toString(), 10)];\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n var length_1 = 0;\n var vRowLen = 0;\n var hRowLen = 0;\n for (var i = 0; i < cPageRowArray.length; i++) {\n if (cPageRowArray[parseInt(i.toString(), 10)].visible\n || isNullOrUndefined(cPageRowArray[parseInt(i.toString(), 10)].visible)) {\n vRowLen++;\n }\n else {\n hRowLen++;\n }\n }\n if (hRowLen > vRowLen) {\n length_1 = hRowLen - vRowLen;\n if (length_1 > vRowLen) {\n length_1 = vRowLen;\n }\n }\n else {\n length_1 = vRowLen - hRowLen;\n if (length_1 > hRowLen) {\n length_1 = hRowLen;\n }\n }\n if (length_1 === 0) {\n length_1 = 1;\n }\n return length_1;\n }\n else {\n return cPageRowArray.length;\n }\n };\n InfiniteScroll.prototype.refreshInfiniteEditrowindex = function (args) {\n this.editRowIndex = args.index;\n };\n InfiniteScroll.prototype.getEditedRowObject = function () {\n var rowObjects = this.parent.getRowsObject();\n var editedrow;\n for (var i = 0; i < rowObjects.length; i++) {\n if (rowObjects[parseInt(i.toString(), 10)].index === this.editRowIndex) {\n editedrow = rowObjects[parseInt(i.toString(), 10)];\n }\n }\n return editedrow;\n };\n InfiniteScroll.prototype.infiniteEditSuccess = function (args) {\n if (this.isNormaledit) {\n if (!this.isAdd && args.data) {\n this.updateCurrentViewRecords(args.data);\n }\n this.isAdd = false;\n }\n };\n InfiniteScroll.prototype.updateCurrentViewRecords = function (data) {\n var index = getEditedDataIndex(this.parent, data);\n if (!isNullOrUndefined(index)) {\n this.parent.getCurrentViewRecords()[parseInt(index.toString(), 10)] = data;\n }\n };\n InfiniteScroll.prototype.actionBegin = function (args) {\n if (args.requestType === 'add' || args.requestType === 'delete') {\n this.requestType = args.requestType;\n }\n else if (args.action === 'add' && args.requestType === 'save') {\n this.requestType = args.action;\n }\n if (this.parent.isFrozenGrid() && !args.cancel && args.requestType === 'searching'\n || args.requestType === 'sorting' || args.requestType === 'filtering') {\n this.isInitialRender = true;\n }\n };\n InfiniteScroll.prototype.actionComplete = function (args) {\n if (args.requestType === 'delete' || args.requestType === 'save' || args.requestType === 'cancel') {\n this.requestType = this.empty;\n this.isCancel = args.requestType === 'cancel' || args.requestType === 'save';\n this.isAdd = this.isEdit = false;\n if (this.isNormaledit) {\n this.editRowIndex = this.empty;\n this.virtualInfiniteData = {};\n this.parent.editModule.previousVirtualData = {};\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteEdit = function () {\n if (this.parent.enableInfiniteScrolling && this.isNormaledit) {\n if ((this.parent.editSettings.allowEditing && this.isEdit) || (this.parent.editSettings.allowAdding && this.isAdd)) {\n this.parent.isEdit = true;\n }\n }\n };\n InfiniteScroll.prototype.getVirtualInfiniteData = function (data) {\n this.getVirtualInfiniteEditedData();\n data.virtualData = this.virtualInfiniteData;\n data.isAdd = this.isAdd;\n data.isCancel = this.isCancel;\n };\n InfiniteScroll.prototype.editActionBegin = function (e) {\n this.isEdit = true;\n this.editRowIndex = e.index;\n var rowObject = extend({}, this.getEditedRowObject().data);\n e.data = Object.keys(this.virtualInfiniteData).length ? this.virtualInfiniteData : rowObject;\n };\n InfiniteScroll.prototype.dataSourceModified = function () {\n this.resetInfiniteBlocks({ requestType: this.empty }, true);\n };\n InfiniteScroll.prototype.onDataReady = function (e) {\n if (!isNullOrUndefined(e.count) && e.requestType !== 'infiniteScroll') {\n this.maxPage = Math.ceil(e.count / this.parent.pageSettings.pageSize);\n }\n };\n InfiniteScroll.prototype.ensureIntialCollapse = function (isExpand) {\n this.isInitialCollapse = !isExpand;\n };\n InfiniteScroll.prototype.infiniteScrollHandler = function (e) {\n this.restoreInfiniteEdit();\n this.restoreInfiniteAdd();\n var targetEle = e.target;\n var isInfinite = targetEle.classList.contains(content);\n if (isInfinite && this.parent.enableInfiniteScrolling && !e.isLeft) {\n var scrollEle = this.parent.getContent().firstElementChild;\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.prevScrollTop = scrollEle.scrollTop;\n var rows = this.parent.groupSettings.enableLazyLoading ? captionRows : this.parent.getRows();\n if (!rows.length) {\n return;\n }\n var index = getRowIndexFromElement(rows[rows.length - 1]) + 1;\n var prevPage = this.parent.pageSettings.currentPage;\n var args = void 0;\n var offset = targetEle.scrollHeight - targetEle.scrollTop;\n var round = Math.round(targetEle.scrollHeight - targetEle.scrollTop);\n var floor = offset < targetEle.clientHeight ? Math.ceil(offset) : Math.floor(offset);\n if (floor > targetEle.clientHeight) {\n floor = floor - 1;\n }\n var isBottom = (floor === targetEle.clientHeight || round === targetEle.clientHeight);\n if (!isNullOrUndefined(this.groupCaptionAction)) {\n return;\n }\n if (this.isScroll && isBottom && (this.parent.pageSettings.currentPage <= this.maxPage - 1 || this.enableContinuousScroll)) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isUpScroll = false;\n this.isDownScroll = true;\n }\n var rows_2 = [].slice.call(scrollEle.querySelectorAll('.e-row:not(.e-addedrow)'));\n var row$$1 = rows_2[rows_2.length - 1];\n var rowIndex = !this.parent.groupSettings.enableLazyLoading ? getRowIndexFromElement(row$$1) :\n this.parent.contentModule['visibleRows'].length - 1;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) + 1;\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: index,\n direction: 'down'\n };\n this.makeRequest(args);\n }\n if (this.isScroll && this.parent.infiniteScrollSettings.enableCache && targetEle.scrollTop === 0\n && this.parent.pageSettings.currentPage !== 1) {\n if (this.parent.infiniteScrollSettings.enableCache) {\n this.isDownScroll = false;\n this.isUpScroll = true;\n }\n var row$$1 = [].slice.call(scrollEle.getElementsByClassName(row));\n var rowIndex = getRowIndexFromElement(row$$1[this.parent.pageSettings.pageSize - 1]);\n var startIndex = getRowIndexFromElement(row$$1[0]) - this.parent.pageSettings.pageSize;\n this.parent.pageSettings.currentPage = Math.ceil(rowIndex / this.parent.pageSettings.pageSize) - 1;\n if (this.parent.pageSettings.currentPage) {\n args = {\n requestType: 'infiniteScroll',\n currentPage: this.parent.pageSettings.currentPage,\n prevPage: prevPage,\n startIndex: startIndex,\n direction: 'up'\n };\n this.makeRequest(args);\n }\n }\n if (this.parent.infiniteScrollSettings.enableCache && !this.isScroll && isNullOrUndefined(args)) {\n if (this.isDownScroll || this.isUpScroll) {\n scrollEle.scrollTop = this.top;\n }\n }\n }\n };\n InfiniteScroll.prototype.makeRequest = function (args) {\n var _this = this;\n if (this.parent.pageSettings.currentPage !== args.prevPage) {\n var initBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n if (initBlocks < this.maxPage && this.parent.pageSettings.currentPage <= this.maxPage) {\n this.isInfiniteScroll = true;\n if (isNullOrUndefined(this.infiniteCache[args.currentPage])) {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify('model-changed', args);\n }, 100);\n }\n else {\n setTimeout(function () {\n _this.getVirtualInfiniteEditedData();\n _this.parent.notify(refreshInfiniteModeBlocks, args);\n }, 100);\n }\n }\n else {\n this.parent.pageSettings.currentPage = this.maxPage;\n }\n }\n };\n InfiniteScroll.prototype.infinitePageQuery = function (query) {\n if (this.initialRender) {\n this.initialRender = false;\n this.intialPageQuery(query);\n }\n else {\n if ((this.requestType === 'delete' || this.requestType === 'add')) {\n if (!this.isInfiniteScroll && !this.parent.groupSettings.enableLazyLoading) {\n this.editPageQuery(query);\n }\n else if (this.parent.groupSettings.enableLazyLoading && !this.parent.infiniteScrollSettings.enableCache) {\n if (this.parent.infiniteScrollSettings.initialBlocks < this.parent.pageSettings.currentPage) {\n query.page(1, this.parent.pageSettings.pageSize * this.parent.pageSettings.currentPage);\n }\n else {\n query.page(1, this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks);\n }\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n else {\n query.page(this.parent.pageSettings.currentPage, this.parent.pageSettings.pageSize);\n }\n }\n };\n InfiniteScroll.prototype.editPageQuery = function (query) {\n var initialBlocks = this.parent.infiniteScrollSettings.initialBlocks;\n var isCache = this.parent.infiniteScrollSettings.enableCache;\n if (isCache) {\n this.infiniteCache = {};\n this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n query.skip(this.firstIndex);\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n if (this.parent.editSettings.mode === 'Dialog') {\n this.parent.clearSelection();\n }\n var index = this.requestType === 'delete' ? this.lastIndex : this.addRowIndex ? this.addRowIndex : this.firstIndex;\n query.skip(index);\n if (!isNullOrUndefined(this.parent.getDataModule().dataManager.dataSource.url) &&\n this.parent.getDataModule().dataManager.dataSource.url !== '' && (this.requestType === 'delete' ||\n this.requestType === 'add')) {\n query.take(initialBlocks * this.parent.pageSettings.pageSize);\n }\n else {\n query.take(1);\n }\n }\n };\n InfiniteScroll.prototype.intialPageQuery = function (query) {\n if (this.parent.infiniteScrollSettings.enableCache\n && this.parent.infiniteScrollSettings.initialBlocks > this.parent.infiniteScrollSettings.maxBlocks) {\n this.parent.infiniteScrollSettings.initialBlocks = this.parent.infiniteScrollSettings.maxBlocks;\n }\n var pageSize = this.parent.pageSettings.pageSize * this.parent.infiniteScrollSettings.initialBlocks;\n query.page(1, pageSize);\n };\n InfiniteScroll.prototype.scrollToLastFocusedCell = function (e) {\n var gObj = this.parent;\n var rowIdx = this.lastFocusInfo.rowIdx + (e.keyArgs.action === upArrow ? -1 : 1);\n var cellIdx = this.lastFocusInfo.cellIdx;\n var row$$1 = gObj.getRowByIndex(rowIdx);\n if (!row$$1) {\n var rowRenderer = new RowRenderer(this.serviceLocator, null, this.parent);\n var page = Math.floor(rowIdx / this.parent.pageSettings.pageSize) + 1;\n gObj.pageSettings.currentPage = page;\n var cols = gObj.getColumns();\n remove(gObj.getContent().querySelector('tbody'));\n gObj.getContent().querySelector('table').appendChild(gObj.createElement('tbody', { attrs: { 'role': 'rowgroup' } }));\n var focusRows = [];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n for (var i = (page === 1 || this.maxPage === page) ? 0 : -1, k = 0; k < gObj.infiniteScrollSettings.maxBlocks; this.maxPage === page ? i-- : i++, k++) {\n var rows = this.infiniteCache[page + i];\n if (rows) {\n focusRows = focusRows.concat(rows);\n for (var j = 0; j < rows.length; j++) {\n gObj.getContent().querySelector('tbody').appendChild(rowRenderer.render(rows[parseInt(j.toString(), 10)], cols));\n }\n }\n }\n gObj.notify(contentReady, { rows: focusRows, args: {} });\n setRowElements(gObj);\n }\n row$$1 = gObj.getRowByIndex(rowIdx);\n var target = row$$1.cells[parseInt(cellIdx.toString(), 10)];\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(rowIdx);\n target.focus();\n this.isFocusScroll = false;\n e.cancel = true;\n };\n InfiniteScroll.prototype.setLastCellFocusInfo = function (e) {\n var cell = ((e.byClick && e.clickArgs.target) || (e.byKey && e.keyArgs.target)\n || (!this.isFocusScroll && e).target);\n if (cell && cell.classList.contains('e-rowcell')) {\n var cellIdx = parseInt(cell.getAttribute('data-colindex'), 10);\n var rowIdx = parseInt(cell.parentElement.getAttribute('data-rowindex'), 10);\n this.lastFocusInfo = { rowIdx: rowIdx, cellIdx: cellIdx };\n }\n };\n InfiniteScroll.prototype.infiniteCellFocus = function (e) {\n var gObj = this.parent;\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (e.byKey) {\n if (cache && this.isFocusScroll) {\n this.scrollToLastFocusedCell(e);\n return;\n }\n var cell = document.activeElement;\n var rowIndex = getRowIndexFromElement(cell.parentElement);\n this.cellIndex = parseInt(cell.getAttribute(dataColIndex), 10);\n var content$$1 = gObj.getContent().firstElementChild;\n var totalRowsCount = (this.maxPage * gObj.pageSettings.pageSize) - 1;\n var visibleRowCount = Math.floor(content$$1.offsetHeight / this.parent.getRowHeight());\n var contentRect = content$$1.getBoundingClientRect();\n if (!isNaN(rowIndex)) {\n if (e.keyArgs.action === downArrow || e.keyArgs.action === enter) {\n this.rowIndex = rowIndex += 1;\n var row$$1 = gObj.getRowByIndex(rowIndex);\n var rowRect = row$$1 && row$$1.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex + 1;\n }\n if (this.isFocusScroll || (!row$$1 && rowIndex < totalRowsCount)\n || (rowRect && rowRect.bottom >= contentRect.bottom)) {\n if (!this.isFocusScroll) {\n this.pressedKey = e.keyArgs.action;\n }\n this.isFocusScroll = false;\n content$$1.scrollTop = ((rowIndex - visibleRowCount) + 1) * this.parent.getRowHeight();\n }\n else if (!cache && row$$1) {\n if (rowRect && (rowRect.bottom >= contentRect.bottom || rowRect.top < contentRect.top)) {\n row$$1.cells[this.cellIndex].scrollIntoView();\n }\n }\n }\n else if (e.keyArgs.action === upArrow || e.keyArgs.action === shiftEnter) {\n this.rowIndex = rowIndex -= 1;\n var row$$1 = gObj.getRowByIndex(rowIndex);\n var rowRect = row$$1 && row$$1.getBoundingClientRect();\n if (cache) {\n rowIndex = cell.parentElement.rowIndex - 1;\n }\n if (!row$$1 || rowRect.top <= contentRect.top) {\n this.pressedKey = e.keyArgs.action;\n content$$1.scrollTop = rowIndex * this.parent.getRowHeight();\n }\n }\n }\n }\n else if (e.key === 'PageDown' || e.key === 'PageUp') {\n this.pressedKey = e.key;\n }\n this.setLastCellFocusInfo(e);\n };\n InfiniteScroll.prototype.createEmptyRowdata = function () {\n var _this = this;\n this.parent.getColumns().filter(function (e) {\n _this.emptyRowData[e.field] = _this.empty;\n });\n };\n InfiniteScroll.prototype.getVirtualInfiniteEditedData = function () {\n var editForm = this.parent.element.querySelector('.' + editedRow);\n var addForm = this.parent.element.querySelector('.' + addedRow);\n var gridForm = this.parent.element.querySelector('.e-gridform');\n if (this.parent.infiniteScrollSettings.enableCache && (editForm || addForm)) {\n var rowData = editForm ? extend({}, this.getEditedRowObject().data)\n : extend({}, this.emptyRowData);\n this.virtualInfiniteData = this.parent.editModule.getCurrentEditedData(gridForm, rowData);\n var hiddenColumn = this.parent.getHiddenColumns();\n for (var i = 0; i < hiddenColumn.length; i++) {\n if (hiddenColumn[i].defaultValue) {\n this.virtualInfiniteData[hiddenColumn[i].field] = hiddenColumn[i].defaultValue;\n }\n }\n if (this.parent.isFrozenGrid()) {\n this.virtualInfiniteData = this.parent.editModule\n .getCurrentEditedData(this.parent.getMovableVirtualContent().querySelector('.e-gridform'), rowData);\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteEdit = function () {\n var content$$1 = this.parent.getContent().firstElementChild;\n var frozenEdit = this.parent.frozenRows ? this.editRowIndex >= this.parent.frozenRows : true;\n if (this.isNormaledit && this.parent.infiniteScrollSettings.enableCache && frozenEdit) {\n if (this.parent.editSettings.allowEditing && !isNullOrUndefined(this.editRowIndex)) {\n var row$$1 = this.parent.getRowByIndex(this.editRowIndex);\n if (Object.keys(this.virtualInfiniteData).length && row$$1 && !this.parent.getContent().querySelector('.' + editedRow)) {\n var top_1 = row$$1.getBoundingClientRect().top;\n if (top_1 < content$$1.offsetHeight && top_1 > this.parent.getRowHeight()) {\n this.parent.isEdit = false;\n this.parent.editModule.startEdit(row$$1);\n }\n }\n }\n }\n };\n InfiniteScroll.prototype.restoreInfiniteAdd = function () {\n var content$$1 = this.parent.getContent().firstElementChild;\n if (this.parent.getCurrentViewRecords().length && this.parent.getRowByIndex(0) && this.isNormaledit &&\n this.parent.infiniteScrollSettings.enableCache && this.isAdd && !content$$1.querySelector('.' + addedRow)) {\n var isTop = content$$1.scrollTop < this.parent.getRowHeight();\n if (isTop) {\n this.parent.isEdit = false;\n this.parent.addRecord();\n }\n }\n };\n InfiniteScroll.prototype.appendInfiniteRows = function (e) {\n var frozenCols = this.parent.isFrozenGrid();\n var scrollEle = this.parent.getContent().firstElementChild;\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n var isMovable = this.parent.getFrozenMode() === leftRight && e.tableName === 'movable';\n if ((isInfiniteScroll && !e.args.isFrozen && !isMovable) || !isInfiniteScroll) {\n if (isInfiniteScroll && e.args.direction === 'up') {\n e.tbody.insertBefore(e.frag, e.tbody.firstElementChild);\n }\n else {\n e.tbody.appendChild(e.frag);\n }\n }\n if (!frozenCols) {\n this.parent.contentModule.getTable().appendChild(e.tbody);\n this.updateCurrentViewData();\n }\n else {\n if (isInfiniteScroll) {\n if (e.tableName === frozenLeft || (this.parent.getFrozenMode() === 'Right' && e.tableName === frozenRight)) {\n this.frozenFrag = e.frag;\n }\n else if (this.parent.getFrozenMode() === leftRight && e.tableName === 'movable') {\n this.movableFrag = e.frag;\n }\n else {\n var tbody$$1 = this.parent.getFrozenVirtualContent().querySelector(tbody);\n if (e.args.direction === 'up') {\n tbody$$1.insertBefore(this.frozenFrag, tbody$$1.firstElementChild);\n }\n else {\n tbody$$1.appendChild(this.frozenFrag);\n }\n if (e.tableName === frozenRight) {\n this.parent.getMovableVirtualContent().querySelector(tbody).appendChild(this.movableFrag);\n this.parent.element.querySelector('.e-frozen-right-content').querySelector(tbody).appendChild(e.frag);\n }\n else {\n this.parent.getMovableVirtualContent().querySelector('.' + table).appendChild(e.tbody);\n }\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n var table$$1 = void 0;\n if (e.tableName === frozenLeft) {\n table$$1 = this.parent.getFrozenVirtualContent().querySelector('.' + table);\n }\n else if (e.tableName === 'movable') {\n table$$1 = this.parent.getMovableVirtualContent().querySelector('.' + table);\n if (this.parent.getFrozenMode() !== leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n else {\n table$$1 = this.parent.element.querySelector('.e-frozen-right-content').querySelector('.' + table);\n if (this.parent.getFrozenMode() === leftRight) {\n this.parent.contentModule.refreshScrollOffset();\n this.updateCurrentViewData();\n }\n }\n table$$1.appendChild(e.tbody);\n this.widthService.refreshFrozenScrollbar();\n }\n }\n if (this.isInitialRender && !e.args.isFrozen) {\n this.isInitialRender = false;\n this.parent.scrollModule.setHeight();\n }\n if (!e.args.isFrozen) {\n this.rowTop = !this.rowTop ? this.parent.getRows()[0].getBoundingClientRect().top : this.rowTop;\n if (isInfiniteScroll) {\n if (this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n scrollEle.scrollTop = this.top;\n }\n setRowElements(this.parent);\n }\n this.restoreInfiniteAdd();\n this.isScroll = true;\n }\n this.isInfiniteScroll = false;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n InfiniteScroll.prototype.selectNewRow = function (args) {\n var _this = this;\n var gObj = this.parent;\n var row$$1 = gObj.getRowByIndex(this.rowIndex);\n var cache = gObj.infiniteScrollSettings.enableCache;\n if (row$$1 && this.keys.some(function (value) { return value === _this.pressedKey; })) {\n var content$$1 = gObj.getContent().firstElementChild;\n var rowHeight = gObj.getRowHeight();\n var target = row$$1.cells[this.cellIndex];\n if ((this.pressedKey === downArrow || this.pressedKey === enter)\n || (cache && (this.pressedKey === upArrow || this.pressedKey === shiftEnter))) {\n if (!cache && this.pressedKey !== upArrow && this.pressedKey !== shiftEnter) {\n content$$1.scrollTop = content$$1.scrollTop + rowHeight;\n }\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n gObj.selectRow(this.rowIndex);\n }\n }\n else if (this.lastFocusInfo && (this.pressedKey === pageDown || this.pressedKey === pageUp)) {\n var idx = cache ? 0 : this.lastFocusInfo.rowIdx;\n if (gObj.getRowByIndex(idx)) {\n var target = gObj.getCellFromIndex(idx, this.lastFocusInfo.cellIdx);\n if (target) {\n this.isFocusScroll = true;\n if (!cache) {\n gObj.focusModule.isInfiniteScroll = true;\n gObj.focusModule.onClick({ target: target }, true);\n }\n else {\n target.focus({ preventScroll: true });\n }\n }\n }\n }\n this.pressedKey = undefined;\n };\n InfiniteScroll.prototype.removeInfiniteCacheRows = function (e) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll';\n if (!e.args.isFrozen && isInfiniteScroll && this.parent.infiniteScrollSettings.enableCache && this.isRemove) {\n var rows = [].slice.call(this.parent.getContentTable().getElementsByClassName(row));\n if (e.args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n var addRowCount = this.parent.element.querySelector('.' + addedRow) ? 0 : 1;\n this.removeTopRows(rows, this.parent.pageSettings.pageSize - addRowCount);\n }\n if (e.args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length) {\n var captionRows = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n this.removeCaptionRows(captionRows, e.args);\n }\n else {\n this.removeBottomRows(rows, rows.length - 1, e.args);\n }\n }\n this.isScroll = false;\n this.top = this.calculateScrollTop(e.args);\n }\n };\n InfiniteScroll.prototype.calculateScrollTop = function (args) {\n var top = 0;\n var scrollCnt = this.parent.getContent().firstElementChild;\n if (args.direction === 'down') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n top = this.captionRowHeight();\n }\n var captionRows = [].slice.call(this.parent.getContent().firstElementChild.querySelectorAll('tr:not(.e-row)'));\n var captionCount = 0;\n if (this.isInitialCollapse && !isNullOrUndefined(captionRows)) {\n captionCount = Math.round((captionRows.length - 1) / this.parent.groupSettings.columns.length);\n }\n var value = captionCount ? captionCount\n : this.parent.pageSettings.pageSize * (this.parent.infiniteScrollSettings.maxBlocks - 1);\n var currentViewRowCount = 0;\n var i = 0;\n while (currentViewRowCount < scrollCnt.clientHeight) {\n i++;\n currentViewRowCount = i * this.parent.getRowHeight();\n }\n i = i - 1;\n top += (value - i) * this.parent.getRowHeight();\n }\n if (args.direction === 'up') {\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !this.isInitialCollapse) {\n var len = this.refreshInfiniteCacheRowVisibleLength(this.infiniteCache, this.parent.pageSettings.currentPage);\n top = len * this.parent.getRowHeight();\n }\n else if (this.isInitialCollapse) {\n var groupedData = this.infiniteCache[this.parent.pageSettings.currentPage];\n var count = 0;\n for (var i = 0; i < groupedData.length; i++) {\n if (groupedData[parseInt(i.toString(), 10)].isCaptionRow) {\n count++;\n }\n }\n top += Math.round(count / this.parent.groupSettings.columns.length) * this.parent.getRowHeight();\n }\n else {\n top += (this.parent.pageSettings.pageSize * this.parent.getRowHeight() + getScrollBarWidth());\n }\n }\n return top;\n };\n InfiniteScroll.prototype.captionRowHeight = function () {\n var rows = [].slice.call(this.parent.getContent().querySelectorAll('tr:not(.e-row)'));\n return rows.length * this.parent.getRowHeight();\n };\n InfiniteScroll.prototype.removeTopRows = function (rows, maxIndx) {\n var frozeCols = this.parent.isFrozenGrid();\n var frRows = this.parent.getFrozenMode() === leftRight\n ? [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(row)) : null;\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(row)) : null;\n for (var i = 0; i <= maxIndx; i++) {\n if (this.parent.frozenRows && this.parent.pageSettings.currentPage === this.parent.infiniteScrollSettings.maxBlocks + 1\n && i > (maxIndx - this.parent.frozenRows)) {\n continue;\n }\n remove(rows[parseInt(i.toString(), 10)]);\n if (movableRows) {\n remove(movableRows[parseInt(i.toString(), 10)]);\n }\n if (frRows) {\n remove(frRows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.removeBottomRows = function (rows, maxIndx, args) {\n var cnt = 0;\n var frozeCols = this.parent.isFrozenGrid();\n var movableRows = frozeCols ?\n [].slice.call(this.parent.getMovableVirtualContent().getElementsByClassName(row)) : null;\n var frRows = this.parent.getFrozenMode() === leftRight ?\n [].slice.call(this.parent.element.querySelector('.e-frozen-right-content').getElementsByClassName(row)) : null;\n var pageSize = this.parent.pageSettings.pageSize;\n if (!frozeCols && this.infiniteCache[args.prevPage].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteCache[args.prevPage].length;\n }\n if (frozeCols && this.infiniteFrozenCache[args.prevPage][1].length < pageSize) {\n cnt = this.parent.pageSettings.pageSize - this.infiniteFrozenCache[args.prevPage][1].length;\n }\n for (var i = maxIndx; cnt < pageSize; i--) {\n cnt++;\n remove(rows[parseInt(i.toString(), 10)]);\n if (movableRows) {\n remove(movableRows[parseInt(i.toString(), 10)]);\n }\n if (frRows) {\n remove(frRows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.removeCaptionRows = function (rows, args) {\n var rowElements = [].slice.call(this.parent.getContent().getElementsByClassName(row));\n if (args.direction === 'down') {\n var lastRow = rowElements[this.parent.pageSettings.pageSize - 1];\n var lastRowIndex = getRowIndexFromElement(lastRow) - 1;\n var k = 0;\n for (var i = 0; k < lastRowIndex; i++) {\n if (!rows[parseInt(i.toString(), 10)].classList.contains(row)) {\n remove(rows[parseInt(i.toString(), 10)]);\n }\n else {\n k = getRowIndexFromElement(rows[parseInt(i.toString(), 10)]);\n }\n }\n }\n if (args.direction === 'up') {\n var lastIndex = getRowIndexFromElement(rowElements[rowElements.length - 1]);\n var page = Math.ceil(lastIndex / this.parent.pageSettings.pageSize);\n var startIndex = 0;\n for (var i = this.parent.pageSettings.currentPage + 1; i < page; i++) {\n startIndex += this.infiniteCache[parseInt(i.toString(), 10)].length;\n }\n for (var i = startIndex; i < rows.length; i++) {\n remove(rows[parseInt(i.toString(), 10)]);\n }\n }\n };\n InfiniteScroll.prototype.resetInfiniteBlocks = function (args, isDataModified) {\n var isInfiniteScroll = this.parent.enableInfiniteScrolling && args.requestType !== 'infiniteScroll';\n if (!this.initialRender && !isNullOrUndefined(this.parent.infiniteScrollModule) && isInfiniteScroll) {\n if (this.actions.some(function (value) { return value === args.requestType; }) || isDataModified || (args.requestType === 'save'\n && (this.parent.sortSettings.columns.length || this.parent.filterSettings.columns.length\n || this.parent.groupSettings.columns.length || this.parent.searchSettings.key))) {\n var scrollEle = this.parent.getContent().firstElementChild;\n this.initialRender = true;\n scrollEle.scrollTop = 0;\n this.parent.pageSettings.currentPage = 1;\n this.infiniteCache = this.infiniteFrozenCache = {};\n this.infiniteCurrentViewData = {};\n this.resetContentModuleCache({});\n this.isRemove = false;\n this.top = 0;\n this.isInitialMovableRender = true;\n this.isInitialCollapse = false;\n this.parent.contentModule.isRemove = this.isRemove;\n this.parent.contentModule.isAddRows = this.isRemove;\n this.parent.contentModule.visibleRows = [];\n this.parent.contentModule.visibleFrozenRows = [];\n }\n }\n };\n InfiniteScroll.prototype.setCache = function (e) {\n if (this.parent.enableInfiniteScrolling && this.parent.infiniteScrollSettings.enableCache) {\n var frozeCols = this.parent.isFrozenGrid();\n var idx = e.args.isFrozen ? 1 : 0;\n var isEdit = e.args.requestType !== 'infiniteScroll'\n && (this.requestType === 'delete' || this.requestType === 'add');\n var currentPage = this.parent.pageSettings.currentPage;\n if ((frozeCols && this.isInitialMovableRender) || (!frozeCols && !Object.keys(this.infiniteCache).length) || isEdit) {\n this.isInitialMovableRender = !e.args.isFrozen;\n this.setInitialCache(e.modelData, e.args, isEdit);\n }\n if (!frozeCols && isNullOrUndefined(this.infiniteCache[this.parent.pageSettings.currentPage])) {\n this.infiniteCache[this.parent.pageSettings.currentPage] = e.modelData;\n this.resetContentModuleCache(this.infiniteCache);\n }\n if (frozeCols) {\n if ((idx === 0 && isNullOrUndefined(this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)]))\n || !this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)][parseInt(idx.toString(), 10)].length) {\n this.createFrozenCache(currentPage);\n this.infiniteFrozenCache[parseInt(currentPage.toString(), 10)][parseInt(idx.toString(), 10)] = e.modelData;\n if (idx === 1) {\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n }\n }\n if (e.isInfiniteScroll && !this.isRemove) {\n this.isRemove = (currentPage - 1) % this.parent.infiniteScrollSettings.maxBlocks === 0;\n this.parent.contentModule.isRemove = this.isRemove;\n }\n }\n };\n InfiniteScroll.prototype.setInitialCache = function (data, args, isEdit, isCurrentViewData) {\n var frozenCols = this.parent.isFrozenGrid();\n var idx = args.isFrozen ? 1 : 0;\n var k = !isEdit ? 1 : isNullOrUndefined(this.firstBlock) ? 1 : this.firstBlock;\n for (var i = 1; i <= this.parent.infiniteScrollSettings.initialBlocks; i++) {\n var startIndex = (i - 1) * this.parent.pageSettings.pageSize;\n var endIndex = i * this.parent.pageSettings.pageSize;\n if (this.parent.allowGrouping && this.parent.groupSettings.columns.length && !isCurrentViewData) {\n this.setInitialGroupCache(data, k, startIndex, endIndex);\n }\n else {\n if (isCurrentViewData) {\n this.infiniteCurrentViewData[parseInt(k.toString(), 10)] = data.slice(startIndex, endIndex);\n }\n else {\n if (frozenCols) {\n this.createFrozenCache(k);\n this.infiniteFrozenCache[parseInt(k.toString(), 10)][parseInt(idx.toString(), 10)] = data\n .slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteFrozenCache);\n }\n else {\n this.infiniteCache[parseInt(k.toString(), 10)] = data.slice(startIndex, endIndex);\n this.resetContentModuleCache(this.infiniteCache);\n }\n }\n }\n k++;\n }\n };\n InfiniteScroll.prototype.createFrozenCache = function (index) {\n if (!this.infiniteFrozenCache[parseInt(index.toString(), 10)]) {\n this.infiniteFrozenCache[parseInt(index.toString(), 10)] = [[], []];\n }\n };\n InfiniteScroll.prototype.setInitialGroupCache = function (data, index, sIndex, eIndex) {\n var pageData = [];\n var startIndex = 0;\n for (var i = 1; i <= Object.keys(this.infiniteCache).length; i++) {\n startIndex += this.infiniteCache[parseInt(i.toString(), 10)].length;\n }\n var k = sIndex;\n for (var i = startIndex; i < data.length && k < eIndex; i++) {\n if (data[parseInt(i.toString(), 10)].index < eIndex || data[parseInt(i.toString(), 10)].isCaptionRow) {\n k = data[parseInt(i.toString(), 10)].isCaptionRow ? k : data[parseInt(i.toString(), 10)].index;\n pageData.push(data[parseInt(i.toString(), 10)]);\n }\n if (data[parseInt(i.toString(), 10)].index >= eIndex || data[parseInt(i.toString(), 10)].index === eIndex - 1) {\n break;\n }\n }\n this.infiniteCache[parseInt(index.toString(), 10)] = pageData;\n this.resetContentModuleCache(this.infiniteCache);\n };\n InfiniteScroll.prototype.resetContentModuleCache = function (data) {\n this.parent.contentModule\n .infiniteCache = data;\n };\n /**\n * @returns {void}\n * @hidden\n */\n InfiniteScroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return InfiniteScroll;\n}());\n\nvar __extends$36 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * GroupLazyLoadRenderer is used to perform lazy load grouping\n *\n * @hidden\n */\nvar GroupLazyLoadRenderer = /** @__PURE__ @class */ (function (_super) {\n __extends$36(GroupLazyLoadRenderer, _super);\n function GroupLazyLoadRenderer(parent, locator) {\n var _this = _super.call(this, parent, locator) || this;\n _this.childCount = 0;\n _this.scrollData = [];\n _this.isFirstChildRow = false;\n _this.isScrollDown = false;\n _this.isScrollUp = false;\n _this.groupCache = {};\n _this.cacheRowsObj = {};\n _this.startIndexes = {};\n _this.captionCounts = {};\n _this.rowsByUid = {};\n _this.objIdxByUid = {};\n _this.initialGroupCaptions = {};\n _this.requestType = ['paging', 'columnstate', 'reorder', 'cancel', 'save', 'beginEdit', 'add', 'delete',\n 'filterbeforeopen', 'filterchoicerequest', 'infiniteScroll', 'virtualscroll'];\n _this.scrollTopCache = undefined;\n /** @hidden */\n _this.refRowsObj = {};\n /** @hidden */\n _this.cacheMode = false;\n /** @hidden */\n _this.cacheBlockSize = 5;\n /** @hidden */\n _this.ignoreAccent = _this.parent.allowFiltering ? _this.parent.filterSettings.ignoreAccent : false;\n /** @hidden */\n _this.allowCaseSensitive = false;\n /** @hidden */\n _this.lazyLoadQuery = [];\n _this.locator = locator;\n _this.groupGenerator = new GroupModelGenerator(_this.parent);\n _this.summaryModelGen = new GroupSummaryModelGenerator(_this.parent);\n _this.captionModelGen = new CaptionSummaryModelGenerator(_this.parent);\n _this.rowRenderer = new RowRenderer(_this.locator, null, _this.parent);\n _this.eventListener();\n return _this;\n }\n GroupLazyLoadRenderer.prototype.eventListener = function () {\n this.parent.addEventListener(actionBegin, this.actionBegin.bind(this));\n this.parent.addEventListener(actionComplete, this.actionComplete.bind(this));\n this.parent.on(initialEnd, this.setLazyLoadPageSize, this);\n this.parent.on(setGroupCache, this.setCache, this);\n this.parent.on(lazyLoadScrollHandler, this.scrollHandler, this);\n this.parent.on(columnVisibilityChanged, this.setVisible, this);\n this.parent.on(groupCollapse, this.collapseShortcut, this);\n };\n /**\n * @param {HTMLTableRowElement} tr - specifies the table row element\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.captionExpand = function (tr) {\n var _this = this;\n var page = this.parent.pageSettings.currentPage;\n var rowsObject = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n this.refreshCaches();\n if ((!this.scrollTopCache || this.parent.scrollModule['content'].scrollTop > this.scrollTopCache) &&\n !this.parent.enableVirtualization) {\n this.scrollTopCache = this.parent.scrollModule['content'].scrollTop;\n }\n var oriIndex = this.getRowObjectIndexByUid(uid);\n var isRowExist = rowsObject[oriIndex + 1] ?\n rowsObject[parseInt(oriIndex.toString(), 10)].indent < rowsObject[oriIndex + 1].indent : false;\n if (this.parent.enableVirtualization) {\n isRowExist = this.cacheRowsObj[\"\" + uid] ? true : false;\n }\n var data = rowsObject[parseInt(oriIndex.toString(), 10)];\n var key = getGroupKeysAndFields(oriIndex, rowsObject);\n var e = { captionRowElement: tr, groupInfo: data, enableCaching: true, cancel: false };\n this.parent.trigger(lazyLoadGroupExpand, e, function (args) {\n if (args.cancel) {\n return;\n }\n args.keys = key.keys;\n args.fields = key.fields;\n args.rowIndex = tr.rowIndex;\n args.makeRequest = !args.enableCaching || !isRowExist;\n if (!args.enableCaching && isRowExist) {\n _this.clearCache([uid]);\n }\n args.skip = 0;\n args.take = _this.pageSize;\n data.isExpand = true;\n if (_this.rowsByUid[parseInt(page.toString(), 10)][data.uid]) {\n _this.rowsByUid[parseInt(page.toString(), 10)][data.uid].isExpand = true;\n }\n _this.captionRowExpand(args);\n });\n };\n /**\n * @param {HTMLTableRowElement} tr - specifies the table row element\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.captionCollapse = function (tr) {\n var _this = this;\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n var rowIdx = tr.rowIndex;\n var uid = tr.getAttribute('data-uid');\n this.refreshCaches();\n var captionIndex = this.getRowObjectIndexByUid(uid);\n var e = {\n captionRowElement: tr, groupInfo: cache[parseInt(captionIndex.toString(), 10)], cancel: false\n };\n this.parent.trigger(lazyLoadGroupCollapse, e, function (args) {\n if (args.cancel) {\n return;\n }\n args.isExpand = false;\n for (var i = 0; i < _this.lazyLoadQuery.length; i++) {\n var query = _this.lazyLoadQuery[parseInt(i.toString(), 10)];\n var where = query[0];\n var removeCollapse = args.groupInfo.data;\n if (removeCollapse['key'] === where['value']) {\n _this.lazyLoadQuery.splice(i, 1);\n }\n }\n _this.removeRows(captionIndex, rowIdx, uid);\n if (_this.parent.enableInfiniteScrolling || _this.parent.enableVirtualization) {\n _this.groupCache[_this.parent.pageSettings.currentPage] = extend([], _this.refRowsObj[_this.parent.pageSettings.currentPage]);\n _this.refreshRowObjects([], captionIndex);\n }\n });\n };\n /**\n * @returns {void}\n * @hidden */\n GroupLazyLoadRenderer.prototype.setLazyLoadPageSize = function () {\n var scrollEle = this.parent.getContent().firstElementChild;\n var blockSize = Math.floor(scrollEle.offsetHeight / this.parent.getRowHeight()) - 1;\n this.pageSize = this.pageSize ? this.pageSize : blockSize * 3;\n this.blockSize = Math.ceil(this.pageSize / 2);\n };\n /**\n * @returns {void}\n * @hidden */\n GroupLazyLoadRenderer.prototype.clearLazyGroupCache = function () {\n this.clearCache();\n };\n GroupLazyLoadRenderer.prototype.clearCache = function (uids) {\n uids = uids ? uids : this.getInitialCaptionIndexes();\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n if (uids.length) {\n for (var i = 0; i < uids.length; i++) {\n var capIdx = this.getRowObjectIndexByUid(uids[parseInt(i.toString(), 10)]);\n var capRow = cache[parseInt(capIdx.toString(), 10)];\n if (!capRow) {\n continue;\n }\n if (this.captionCounts[this.parent.pageSettings.currentPage][capRow.uid]) {\n for (var i_1 = capIdx + 1; i_1 < cache.length; i_1++) {\n if (cache[parseInt(i_1.toString(), 10)].indent === capRow.indent\n || cache[parseInt(i_1.toString(), 10)].indent < capRow.indent) {\n delete this.captionCounts[this.parent.pageSettings.currentPage][capRow.uid];\n break;\n }\n if (cache[parseInt(i_1.toString(), 10)].isCaptionRow) {\n delete this.captionCounts[this.parent.pageSettings.currentPage][cache[parseInt(i_1.toString(), 10)].uid];\n }\n }\n }\n if (capRow.isExpand) {\n var tr = this.parent.getRowElementByUID(capRow.uid);\n if (!tr) {\n return;\n }\n this.parent.groupModule.expandCollapseRows(tr.querySelector('.e-recordplusexpand'));\n }\n var child = this.getNextChilds(capIdx);\n if (!child.length) {\n continue;\n }\n var subChild = [];\n if (child[child.length - 1].isCaptionRow) {\n subChild = this.getChildRowsByParentIndex(cache.indexOf(child[child.length - 1]), false, false, null, true, true);\n }\n var start = cache.indexOf(child[0]);\n var end = subChild.length ? cache.indexOf(subChild[subChild.length - 1]) : cache.indexOf(child[child.length - 1]);\n cache.splice(start, end - (start - 1));\n this.refreshCaches();\n }\n }\n };\n GroupLazyLoadRenderer.prototype.refreshCaches = function () {\n var page = this.parent.pageSettings.currentPage;\n var cache = this.groupCache[parseInt(page.toString(), 10)];\n if (this.parent.enableInfiniteScrolling) {\n this.rowsByUid[parseInt(page.toString(), 10)] = [];\n this.objIdxByUid[parseInt(page.toString(), 10)] = [];\n }\n else {\n this.rowsByUid = {};\n this.objIdxByUid = {};\n }\n for (var i = 0; i < cache.length; i++) {\n this.maintainRows(cache[parseInt(i.toString(), 10)], i);\n }\n };\n GroupLazyLoadRenderer.prototype.getInitialCaptionIndexes = function () {\n var page = this.parent.pageSettings.currentPage;\n var uids = [];\n for (var i = 0; i < this.initialGroupCaptions[parseInt(page.toString(), 10)].length; i++) {\n uids.push(this.initialGroupCaptions[parseInt(page.toString(), 10)][parseInt(i.toString(), 10)].uid);\n }\n return uids;\n };\n /**\n * @param {string} uid - specifies the uid\n * @returns {number} returns the row object uid\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.getRowObjectIndexByUid = function (uid) {\n return this.objIdxByUid[this.parent.pageSettings.currentPage][\"\" + uid];\n };\n GroupLazyLoadRenderer.prototype.collapseShortcut = function (args) {\n if (this.parent.groupSettings.columns.length &&\n args.target && parentsUntil(args.target, content) && args.target.parentElement.tagName === 'TR') {\n if (!args.collapse && parentsUntil(args.target, row)) {\n return;\n }\n var row$$1 = args.target.parentElement;\n var uid = row$$1.getAttribute('data-uid');\n if (args.collapse) {\n var rowObj = this.getRowByUid(uid);\n var capRow = this.getRowByUid(rowObj.parentUid);\n if (capRow.isCaptionRow && capRow.isExpand) {\n var capEle = this.getRowElementByUid(rowObj.parentUid);\n this.parent.groupModule.expandCollapseRows(capEle.cells[rowObj.indent - 1]);\n }\n }\n else {\n var capRow = this.getRowByUid(uid);\n if (capRow.isCaptionRow && !capRow.isExpand) {\n var capEle = this.getRowElementByUid(uid);\n this.parent.groupModule.expandCollapseRows(capEle.cells[capRow.indent]);\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.getRowByUid = function (uid) {\n return this.rowsByUid[this.parent.pageSettings.currentPage][\"\" + uid];\n };\n GroupLazyLoadRenderer.prototype.actionBegin = function (args) {\n if (!args.cancel) {\n if (!this.requestType.some(function (value) { return value === args.requestType; })) {\n this.groupCache = {};\n this.resetRowMaintenance();\n if (this.parent.enableVirtualization) {\n this.parent.contentModule.currentInfo = {};\n }\n }\n if (args.requestType === 'reorder' && this.parent.groupSettings.columns.length) {\n var keys = Object.keys(this.groupCache);\n for (var j = 0; j < keys.length; j++) {\n var cache = this.groupCache[keys[parseInt(j.toString(), 10)]];\n for (var i = 0; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].isCaptionRow && !this.captionModelGen.isEmpty()) {\n this.changeCaptionRow(cache[parseInt(i.toString(), 10)], null, keys[parseInt(j.toString(), 10)]);\n }\n if (cache[parseInt(i.toString(), 10)].isDataRow) {\n var from = args.fromIndex + cache[parseInt(i.toString(), 10)].indent;\n var to = args.toIndex + cache[parseInt(i.toString(), 10)].indent;\n this.moveCells(cache[parseInt(i.toString(), 10)].cells, from, to);\n }\n }\n }\n }\n if (args.requestType === 'delete'\n || (args.action === 'add' && args.requestType === 'save')) {\n this.groupCache = {};\n this.resetRowMaintenance();\n if (this.parent.enableVirtualization) {\n this.parent.contentModule.currentInfo = {};\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.actionComplete = function (args) {\n if (!args.cancel && args.requestType !== 'columnstate' && args.requestType !== 'beginEdit'\n && args.requestType !== 'delete' && args.requestType !== 'save' && args.requestType !== 'reorder') {\n this.scrollReset();\n }\n };\n GroupLazyLoadRenderer.prototype.resetRowMaintenance = function () {\n this.startIndexes = {};\n this.captionCounts = {};\n this.rowsByUid = {};\n this.objIdxByUid = {};\n this.initialGroupCaptions = {};\n };\n GroupLazyLoadRenderer.prototype.moveCells = function (arr, from, to) {\n if (from >= arr.length) {\n var k = from - arr.length;\n while ((k--) + 1) {\n arr.push(undefined);\n }\n }\n arr.splice(from, 0, arr.splice(to, 1)[0]);\n };\n GroupLazyLoadRenderer.prototype.removeRows = function (idx, trIdx, uid) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n var aggUid;\n var count = 0;\n if (this.parent.aggregates.length) {\n var agg = this.getAggregateByCaptionIndex(idx);\n aggUid = agg.length ? agg[agg.length - 1].uid : undefined;\n }\n var indent = rows[parseInt(idx.toString(), 10)].indent;\n this.addClass(this.getNextChilds(parseInt(idx.toString(), 10)));\n rows[parseInt(idx.toString(), 10)].isExpand = false;\n if (this.rowsByUid[parseInt(page.toString(), 10)][rows[parseInt(idx.toString(), 10)].uid]) {\n this.rowsByUid[parseInt(page.toString(), 10)][rows[parseInt(idx.toString(), 10)].uid].isExpand = false;\n }\n var capUid;\n for (var i = idx + 1; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].indent === indent || rows[parseInt(i.toString(), 10)].indent < indent) {\n capUid = rows[parseInt(i.toString(), 10)].uid;\n break;\n }\n if (rows[parseInt(i.toString(), 10)].isCaptionRow && rows[parseInt(i.toString(), 10)].isExpand) {\n this.addClass(this.getNextChilds(i));\n }\n }\n for (var i = trIdx + 1; i < trs.length; i++) {\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === capUid) {\n break;\n }\n else if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === aggUid) {\n remove(trs[parseInt(i.toString(), 10)]);\n break;\n }\n else {\n remove(trs[parseInt(i.toString(), 10)]);\n this.refRowsObj[parseInt(page.toString(), 10)].splice(trIdx + 1, 1);\n count = count + 1;\n }\n }\n if (this.parent.enableVirtualization) {\n this.cacheRowsObj[\"\" + uid] = this.groupCache[parseInt(page.toString(), 10)].slice(idx + 1, idx + 1 + count);\n this.groupCache[parseInt(page.toString(), 10)].splice(idx + 1, count);\n this.parent.notify(refreshVirtualLazyLoadCache, { rows: [], uid: rows[parseInt(idx.toString(), 10)].uid, count: count });\n this.parent.contentModule.setVirtualHeight();\n this.parent.islazyloadRequest = false;\n }\n if (this.parent.scrollModule['content'].scrollTop > this.scrollTopCache && !this.parent.enableVirtualization) {\n this.parent.scrollModule['content'].scrollTop = this.scrollTopCache;\n }\n this.parent.notify(refreshExpandandCollapse, { rows: this.refRowsObj[parseInt(page.toString(), 10)] });\n };\n GroupLazyLoadRenderer.prototype.addClass = function (rows) {\n var last = rows[this.blockSize];\n if (last) {\n last.lazyLoadCssClass = 'e-lazyload-middle-down';\n }\n };\n GroupLazyLoadRenderer.prototype.getNextChilds = function (index, rowObjects) {\n var group = this.groupCache[this.parent.pageSettings.currentPage];\n var rows = rowObjects ? rowObjects : group;\n var indent = group[parseInt(index.toString(), 10)].indent + 1;\n var childRows = [];\n for (var i = rowObjects ? 0 : index + 1; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].indent < indent) {\n break;\n }\n if (rows[parseInt(i.toString(), 10)].indent === indent) {\n childRows.push(rows[parseInt(i.toString(), 10)]);\n }\n }\n return childRows;\n };\n GroupLazyLoadRenderer.prototype.lazyLoadHandler = function (args) {\n this.setStartIndexes();\n var tr = this.parent.getContent().querySelectorAll('tr')[args.index];\n var uid = tr.getAttribute('data-uid');\n var captionIndex = this.getRowObjectIndexByUid(uid);\n var captionRow = this.groupCache[this.parent.pageSettings.currentPage][parseInt(captionIndex.toString(), 10)];\n var rows = args.isRowExist ? args.isScroll ? this.scrollData\n : this.parent.enableVirtualization ? this.cacheRowsObj[\"\" + uid] :\n this.getChildRowsByParentIndex(captionIndex, true, true, null, true) : [];\n this.scrollData = [];\n if (!args.isRowExist) {\n this.setRowIndexes(captionIndex, captionRow);\n this.refreshCaptionRowCount(this.groupCache[this.parent.pageSettings.currentPage][parseInt(captionIndex.toString(), 10)], args.count);\n if (Object.keys(args.data).indexOf('GroupGuid') !== -1) {\n for (var i = 0; i < args.data.length; i++) {\n var data = this.groupGenerator.generateCaptionRow(args.data[parseInt(i.toString(), 10)], args.level, captionRow.parentGid, undefined, 0, captionRow.uid);\n rows.push(data);\n if (this.parent.aggregates.length) {\n rows = rows.concat((this.summaryModelGen.generateRows(args.data[parseInt(i.toString(), 10)], { level: args.level + 1, parentUid: data.uid })));\n }\n }\n }\n else {\n this.groupGenerator.index = this.getStartIndex(captionIndex, args.isScroll);\n rows = this.groupGenerator.generateDataRows(args.data, args.level, captionRow.parentGid, 0, captionRow.uid);\n }\n }\n var trIdx = args.isScroll ? this.rowIndex : args.index;\n var nxtChild = this.getNextChilds(captionIndex, rows);\n var lastRow = !args.up ? this.hasLastChildRow(args.isScroll, args.count, nxtChild.length) : true;\n if (!args.isRowExist && !lastRow) {\n nxtChild[this.blockSize].lazyLoadCssClass = 'e-lazyload-middle-down';\n }\n if (!lastRow) {\n nxtChild[nxtChild.length - 1].lazyLoadCssClass = 'e-not-lazyload-end';\n }\n var aggregates = !args.isScroll && !args.isRowExist ? this.getAggregateByCaptionIndex(captionIndex) : [];\n if (!args.up) {\n if (!args.isRowExist || (this.parent.enableVirtualization && args.isRowExist && this.cacheRowsObj[\"\" + uid])) {\n this.refreshRowObjects(rows, args.isScroll ? this.rowObjectIndex : captionIndex);\n }\n }\n if (this.parent.enableVirtualization) {\n var uid_1 = args.isScroll ? this.groupCache[this.parent.pageSettings.currentPage][this.rowIndex].uid : captionRow.uid;\n this.parent.notify(refreshVirtualLazyLoadCache, { rows: rows, uid: uid_1 });\n this.parent.contentModule.setVirtualHeight();\n this.parent.contentModule.isTop = false;\n }\n this.render(trIdx, rows, lastRow, aggregates);\n if (this.isFirstChildRow && !args.up) {\n this.parent.getContent().firstElementChild.scrollTop = rows.length * this.parent.getRowHeight();\n }\n this.isFirstChildRow = false;\n this.rowIndex = undefined;\n this.rowObjectIndex = undefined;\n this.childCount = 0;\n for (var i = 0; i < rows.length; i++) {\n this.refRowsObj[this.parent.pageSettings.currentPage].splice(captionIndex + i + 1, 0, rows[parseInt(i.toString(), 10)]);\n }\n this.parent.notify(refreshExpandandCollapse, { rows: this.refRowsObj[this.parent.pageSettings.currentPage] });\n if (this.parent.enableVirtualMaskRow) {\n this.parent.removeMaskRow();\n }\n };\n GroupLazyLoadRenderer.prototype.setRowIndexes = function (capIdx, row$$1) {\n if (!this.captionCounts[this.parent.pageSettings.currentPage]) {\n this.captionCounts[this.parent.pageSettings.currentPage] = {};\n }\n if (row$$1.isCaptionRow) {\n this.captionCounts[this.parent.pageSettings.currentPage][row$$1.uid] = row$$1.data.count;\n }\n };\n GroupLazyLoadRenderer.prototype.getStartIndex = function (capIdx, isScroll) {\n var page = this.parent.pageSettings.currentPage;\n var cache = this.groupCache[parseInt(page.toString(), 10)];\n if (isScroll) {\n return cache[this.rowObjectIndex].index + 1;\n }\n var count = 0;\n var idx = 0;\n var prevCapRow = this.getRowByUid(cache[parseInt(capIdx.toString(), 10)].parentUid);\n if (prevCapRow) {\n idx = this.prevCaptionCount(prevCapRow);\n }\n if (cache[parseInt(capIdx.toString(), 10)].indent > 0) {\n for (var i = capIdx - 1; i >= 0; i--) {\n if (cache[parseInt(i.toString(), 10)].indent < cache[parseInt(capIdx.toString(), 10)].indent) {\n break;\n }\n if (cache[parseInt(i.toString(), 10)].isCaptionRow && cache[parseInt(i.toString(), 10)]\n .indent === cache[parseInt(capIdx.toString(), 10)].indent) {\n count = count + cache[parseInt(i.toString(), 10)].data.count;\n }\n }\n }\n var index = count + idx\n + this.startIndexes[parseInt(page.toString(), 10)][cache[parseInt(capIdx.toString(), 10)].parentGid];\n return index;\n };\n GroupLazyLoadRenderer.prototype.prevCaptionCount = function (prevCapRow) {\n var page = this.parent.pageSettings.currentPage;\n var cache = this.groupCache[parseInt(page.toString(), 10)];\n var idx = 0;\n for (var i = cache.indexOf(prevCapRow) - 1; i >= 0; i--) {\n if (cache[parseInt(i.toString(), 10)].indent === 0) {\n break;\n }\n if (cache[parseInt(i.toString(), 10)].indent < prevCapRow.indent) {\n break;\n }\n if (cache[parseInt(i.toString(), 10)].isCaptionRow && cache[parseInt(i.toString(), 10)].indent === prevCapRow.indent) {\n var count = this.captionCounts[parseInt(page.toString(), 10)][cache[parseInt(i.toString(), 10)].uid];\n idx = idx + (count ? count : cache[parseInt(i.toString(), 10)].data.count);\n }\n }\n var capRow = this.getRowByUid(prevCapRow.parentUid);\n if (capRow) {\n idx = idx + this.prevCaptionCount(capRow);\n }\n return idx;\n };\n GroupLazyLoadRenderer.prototype.setStartIndexes = function () {\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n if (!this.startIndexes[this.parent.pageSettings.currentPage]) {\n var indexes = [];\n var idx = void 0;\n for (var i = 0; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].isCaptionRow) {\n if (!indexes.length) {\n indexes.push(0);\n }\n else {\n indexes.push(cache[parseInt(idx.toString(), 10)].data.count + indexes[indexes.length - 1]);\n }\n idx = i;\n }\n }\n this.startIndexes[this.parent.pageSettings.currentPage] = indexes;\n }\n };\n GroupLazyLoadRenderer.prototype.hasLastChildRow = function (isScroll, captionCount, rowCount) {\n return isScroll ? captionCount === this.childCount + rowCount : captionCount === rowCount;\n };\n GroupLazyLoadRenderer.prototype.refreshCaptionRowCount = function (row$$1, count) {\n row$$1.data.count = count;\n };\n GroupLazyLoadRenderer.prototype.render = function (trIdx, rows, hasLastChildRow, aggregates) {\n var tr = this.parent.getContent().querySelectorAll('tr')[parseInt(trIdx.toString(), 10)];\n var scrollEle = this.parent.getContent().firstElementChild;\n var rowHeight = this.parent.getRowHeight();\n if (tr && aggregates.length) {\n for (var i = aggregates.length - 1; i >= 0; i--) {\n tr.insertAdjacentElement('afterend', this.rowRenderer.render(aggregates[parseInt(i.toString(), 10)], this.parent.getColumns()));\n }\n }\n if (tr && rows.length) {\n for (var i = rows.length - 1; i >= 0; i--) {\n if (this.confirmRowRendering(rows[parseInt(i.toString(), 10)])) {\n tr.insertAdjacentElement('afterend', this.rowRenderer.render(rows[parseInt(i.toString(), 10)], this.parent.getColumns()));\n if (this.isScrollDown) {\n scrollEle.scrollTop = scrollEle.scrollTop - rowHeight;\n }\n if (this.isScrollUp) {\n scrollEle.scrollTop = scrollEle.scrollTop + rowHeight;\n }\n }\n }\n }\n this.isScrollDown = false;\n this.isScrollUp = false;\n };\n /**\n * @param {Row} row - specifies the row\n * @param {number} index - specifies the index\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.maintainRows = function (row$$1, index) {\n var page = this.parent.pageSettings.currentPage;\n if (!this.rowsByUid[parseInt(page.toString(), 10)]) {\n this.rowsByUid[parseInt(page.toString(), 10)] = {};\n this.objIdxByUid[parseInt(page.toString(), 10)] = {};\n }\n if (row$$1.uid) {\n this.rowsByUid[parseInt(page.toString(), 10)][row$$1.uid] = row$$1;\n }\n this.objIdxByUid[parseInt(page.toString(), 10)][row$$1.uid] = index;\n };\n GroupLazyLoadRenderer.prototype.confirmRowRendering = function (row$$1) {\n var check = true;\n if (isNullOrUndefined(row$$1.indent) && !row$$1.isDataRow && !row$$1.isCaptionRow) {\n var cap = this.getRowByUid(row$$1.parentUid);\n if (cap.isCaptionRow && !cap.isExpand) {\n check = false;\n }\n }\n return check;\n };\n GroupLazyLoadRenderer.prototype.refreshRowObjects = function (newRows, index) {\n var page = this.parent.pageSettings.currentPage;\n var rowsObject = this.groupCache[parseInt(page.toString(), 10)];\n this.rowsByUid[parseInt(page.toString(), 10)] = {};\n this.objIdxByUid[parseInt(page.toString(), 10)] = {};\n var newRowsObject = [];\n var k = 0;\n for (var i = 0; i < rowsObject.length; i++) {\n if (i === index) {\n this.maintainRows(rowsObject[parseInt(i.toString(), 10)], k);\n newRowsObject.push(rowsObject[parseInt(i.toString(), 10)]);\n k++;\n for (var j = 0; j < newRows.length; j++) {\n this.maintainRows(newRows[parseInt(j.toString(), 10)], k);\n newRowsObject.push(newRows[parseInt(j.toString(), 10)]);\n k++;\n }\n }\n else {\n this.maintainRows(rowsObject[parseInt(i.toString(), 10)], k);\n newRowsObject.push(rowsObject[parseInt(i.toString(), 10)]);\n k++;\n }\n }\n this.groupCache[this.parent.pageSettings.currentPage] = extend([], newRowsObject);\n this.updateCurrentViewData();\n };\n GroupLazyLoadRenderer.prototype.getAggregateByCaptionIndex = function (index) {\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n var parent = cache[parseInt(index.toString(), 10)];\n var indent = parent.indent;\n var uid = parent.uid;\n var agg = [];\n for (var i = index + 1; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n if (isNullOrUndefined(cache[parseInt(i.toString(), 10)].indent) && cache[parseInt(i.toString(), 10)].parentUid === uid) {\n agg.push(cache[parseInt(i.toString(), 10)]);\n }\n }\n return agg;\n };\n GroupLazyLoadRenderer.prototype.getChildRowsByParentIndex = function (index, deep, block, data, includeAgg, includeCollapseAgg) {\n var cache = data ? data : this.groupCache[this.parent.pageSettings.currentPage];\n var parentRow = cache[parseInt(index.toString(), 10)];\n var agg = [];\n if (!parentRow.isCaptionRow || (parentRow.isCaptionRow && !parentRow.isExpand && !includeCollapseAgg)) {\n return [];\n }\n if (includeAgg && this.parent.aggregates.length) {\n agg = this.getAggregateByCaptionIndex(index);\n }\n var indent = parentRow.indent;\n var uid = parentRow.uid;\n var rows = [];\n var count = 0;\n for (var i = index + 1; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].parentUid === uid) {\n if (isNullOrUndefined(cache[parseInt(i.toString(), 10)].indent)) {\n continue;\n }\n count++;\n rows.push(cache[parseInt(i.toString(), 10)]);\n if (deep && cache[parseInt(i.toString(), 10)].isCaptionRow) {\n rows = rows.concat(this.getChildRowsByParentIndex(i, deep, block, data, includeAgg));\n }\n if (block && count === this.pageSize) {\n break;\n }\n }\n if (cache[parseInt(i.toString(), 10)].indent === indent) {\n break;\n }\n }\n return rows.concat(agg);\n };\n /**\n * @param {boolean} isReorder - specifies the isreorder\n * @returns {Row[]} returns the row\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.initialGroupRows = function (isReorder) {\n var rows = [];\n var cache = this.groupCache[this.parent.pageSettings.currentPage];\n if (isReorder) {\n return this.getRenderedRowsObject();\n }\n for (var i = 0; i < cache.length; i++) {\n if (cache[parseInt(i.toString(), 10)].indent === 0) {\n rows.push(cache[parseInt(i.toString(), 10)]);\n rows = rows.concat(this.getChildRowsByParentIndex(i, true, true, cache, true));\n }\n }\n return rows;\n };\n /**\n * @returns {Row[]} retruns the row\n * @hidden */\n GroupLazyLoadRenderer.prototype.getRenderedRowsObject = function () {\n var rows = [];\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n for (var i = 0; i < trs.length; i++) {\n rows.push(this.getRowByUid(trs[parseInt(i.toString(), 10)].getAttribute('data-uid')));\n }\n return rows;\n };\n GroupLazyLoadRenderer.prototype.getCacheRowsOnDownScroll = function (index) {\n var rows = [];\n var rowsObject = this.groupCache[this.parent.pageSettings.currentPage];\n var k = index;\n for (var i = 0; i < this.pageSize; i++) {\n if (!rowsObject[parseInt(k.toString(), 10)] || rowsObject[parseInt(k.toString(), 10)]\n .indent < rowsObject[parseInt(index.toString(), 10)].indent) {\n break;\n }\n if (rowsObject[parseInt(k.toString(), 10)].indent === rowsObject[parseInt(index.toString(), 10)].indent) {\n rows.push(rowsObject[parseInt(k.toString(), 10)]);\n if (rowsObject[parseInt(k.toString(), 10)].isCaptionRow && rowsObject[parseInt(k.toString(), 10)].isExpand) {\n rows = rows.concat(this.getChildRowsByParentIndex(k, true, true, null, true));\n }\n }\n if (rowsObject[parseInt(k.toString(), 10)].indent > rowsObject[parseInt(index.toString(), 10)].indent\n || isNullOrUndefined(rowsObject[parseInt(k.toString(), 10)].indent)) {\n i--;\n }\n k++;\n }\n return rows;\n };\n GroupLazyLoadRenderer.prototype.getCacheRowsOnUpScroll = function (start, end, index) {\n var rows = [];\n var rowsObject = this.groupCache[this.parent.pageSettings.currentPage];\n var str = false;\n for (var i = 0; i < rowsObject.length; i++) {\n if (str && (!rowsObject[parseInt(i.toString(), 10)] || rowsObject[parseInt(i.toString(), 10)]\n .indent < rowsObject[parseInt(index.toString(), 10)].indent || rowsObject[parseInt(i.toString(), 10)].uid === end)) {\n break;\n }\n if (!str && rowsObject[parseInt(i.toString(), 10)].uid === start) {\n str = true;\n }\n if (str && rowsObject[parseInt(i.toString(), 10)].indent === rowsObject[parseInt(index.toString(), 10)].indent) {\n rows.push(rowsObject[parseInt(i.toString(), 10)]);\n if (rowsObject[parseInt(i.toString(), 10)].isCaptionRow && rowsObject[parseInt(i.toString(), 10)].isExpand) {\n rows = rows.concat(this.getChildRowsByParentIndex(i, true, true, null, true));\n }\n }\n }\n return rows;\n };\n GroupLazyLoadRenderer.prototype.scrollHandler = function (e) {\n if (this.parent.isDestroyed || this.childCount) {\n return;\n }\n var downTrs = [].slice.call(this.parent.getContent().getElementsByClassName('e-lazyload-middle-down'));\n var upTrs = [].slice.call(this.parent.getContent().getElementsByClassName('e-lazyload-middle-up'));\n var endTrs = [].slice.call(this.parent.getContent().getElementsByClassName('e-not-lazyload-end'));\n var tr;\n var lazyLoadDown = false;\n var lazyLoadUp = false;\n var lazyLoadEnd = false;\n if (e.scrollDown && downTrs.length) {\n var result = this.findRowElements(downTrs);\n tr = result.tr;\n lazyLoadDown = result.entered;\n }\n if (!e.scrollDown && endTrs) {\n for (var i = 0; i < endTrs.length; i++) {\n var top_1 = endTrs[parseInt(i.toString(), 10)].getBoundingClientRect().top;\n var scrollHeight = this.parent.getContent().scrollHeight;\n if (top_1 > 0 && top_1 < scrollHeight) {\n tr = endTrs[parseInt(i.toString(), 10)];\n lazyLoadEnd = true;\n this.rowIndex = tr.rowIndex;\n break;\n }\n }\n }\n if (!e.scrollDown && upTrs.length && !lazyLoadEnd) {\n var result = this.findRowElements(upTrs);\n tr = result.tr;\n lazyLoadUp = result.entered;\n }\n if (tr && !tr.classList.contains('e-masked-row')) {\n if (lazyLoadDown && e.scrollDown && lazyLoadDown && tr) {\n this.scrollDownHandler(tr);\n }\n if (!e.scrollDown && lazyLoadEnd && tr) {\n this.scrollUpEndRowHandler(tr);\n }\n if (this.cacheMode && !e.scrollDown && !lazyLoadEnd && lazyLoadUp && tr) {\n this.scrollUpHandler(tr);\n }\n }\n };\n GroupLazyLoadRenderer.prototype.scrollUpEndRowHandler = function (tr) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n var index = this.rowObjectIndex = this.getRowObjectIndexByUid(uid);\n var idx = index;\n var childRow = rows[parseInt(index.toString(), 10)];\n var parentCapRow = this.getRowByUid(childRow.parentUid);\n var capRowObjIdx = this.getRowObjectIndexByUid(parentCapRow.uid);\n var captionRowEle = this.parent.getContent().querySelector('tr[data-uid=' + parentCapRow.uid + ']');\n var capRowEleIndex = captionRowEle.rowIndex;\n var child = this.getChildRowsByParentIndex(capRowObjIdx);\n var childIdx = child.indexOf(childRow);\n var currentPage = Math.ceil(childIdx / this.pageSize);\n if (currentPage === 1) {\n return;\n }\n this.childCount = currentPage * this.pageSize;\n index = this.getCurrentBlockEndIndex(childRow, index);\n if (this.childCount < parentCapRow.data.count) {\n tr.classList.remove('e-not-lazyload-end');\n childRow.lazyLoadCssClass = '';\n var isRowExist = rows[index + 1] ? childRow.indent === rows[index + 1].indent : false;\n this.scrollData = isRowExist ? this.getCacheRowsOnDownScroll(index + 1) : [];\n var key = getGroupKeysAndFields(capRowObjIdx, rows);\n var args = {\n rowIndex: capRowEleIndex, makeRequest: !isRowExist, groupInfo: parentCapRow, fields: key.fields,\n keys: key.keys, skip: this.childCount, take: this.pageSize, isScroll: true\n };\n if (this.cacheMode && this.childCount >= (this.pageSize * this.cacheBlockSize)) {\n var child_1 = this.getChildRowsByParentIndex(capRowObjIdx);\n var currenBlock = Math.ceil((child_1.indexOf(rows[parseInt(idx.toString(), 10)]) / this.pageSize));\n var removeBlock = currenBlock - (this.cacheBlockSize - 1);\n this.removeBlock(uid, isRowExist, removeBlock, child_1);\n args.cachedRowIndex = (removeBlock * this.pageSize);\n }\n this.captionRowExpand(args);\n }\n else {\n this.childCount = 0;\n }\n };\n GroupLazyLoadRenderer.prototype.scrollDownHandler = function (tr) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n var index = this.getRowObjectIndexByUid(uid);\n var idx = index;\n var childRow = rows[parseInt(index.toString(), 10)];\n var parentCapRow = this.getRowByUid(childRow.parentUid);\n var capRowObjIdx = this.getRowObjectIndexByUid(parentCapRow.uid);\n var captionRowEle = this.getRowElementByUid(parentCapRow.uid);\n var capRowEleIndex = captionRowEle.rowIndex;\n var child = this.getChildRowsByParentIndex(capRowObjIdx);\n if (child.length === 0) {\n return;\n }\n var childIdx = child.indexOf(childRow);\n var currentPage = Math.ceil(childIdx / this.pageSize);\n this.childCount = currentPage * this.pageSize;\n if (isNullOrUndefined(child[this.childCount - 1])) {\n return;\n }\n if (this.parent.enableVirtualization) {\n this.parent.islazyloadRequest = true;\n }\n index = this.rowObjectIndex = this.getRowObjectIndexByUid(child[this.childCount - 1].uid);\n var lastchild = rows[parseInt(index.toString(), 10)];\n var lastRow = this.getRowElementByUid(lastchild.uid);\n this.rowIndex = lastRow.rowIndex;\n index = this.getCurrentBlockEndIndex(lastchild, index);\n if (this.childCount === parentCapRow.data.count) {\n this.parent.islazyloadRequest = false;\n }\n if (this.childCount < parentCapRow.data.count) {\n var isRowExist = rows[index + 1] ? childRow.indent === rows[index + 1].indent : false;\n if (isRowExist && !isNullOrUndefined(this.getRowElementByUid(rows[index + 1].uid))) {\n this.parent.islazyloadRequest = false;\n this.childCount = 0;\n return;\n }\n if (currentPage > 1 || !this.cacheMode) {\n tr.classList.remove('e-lazyload-middle-down');\n lastRow.classList.remove('e-not-lazyload-end');\n lastchild.lazyLoadCssClass = '';\n }\n this.scrollData = isRowExist ? this.getCacheRowsOnDownScroll(this.rowObjectIndex + 1) : [];\n var query = getGroupKeysAndFields(capRowObjIdx, rows);\n var args = {\n rowIndex: capRowEleIndex, makeRequest: !isRowExist, groupInfo: parentCapRow, fields: query.fields,\n keys: query.keys, skip: this.childCount, take: this.pageSize, isScroll: true\n };\n if (this.cacheMode && (this.childCount - this.pageSize) >= (this.pageSize * this.cacheBlockSize)) {\n this.isScrollDown = true;\n var child_2 = this.getChildRowsByParentIndex(capRowObjIdx);\n var currenBlock = Math.ceil((child_2.indexOf(rows[parseInt(idx.toString(), 10)]) / this.pageSize)) - 1;\n var removeBlock = (currenBlock - (this.cacheBlockSize - 1)) + 1;\n this.removeBlock(uid, isRowExist, removeBlock, child_2, lastchild);\n args.cachedRowIndex = (removeBlock * this.pageSize);\n }\n this.captionRowExpand(args);\n }\n else {\n this.childCount = 0;\n this.parent.islazyloadRequest = false;\n }\n };\n GroupLazyLoadRenderer.prototype.getCurrentBlockEndIndex = function (row$$1, index) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n if (row$$1.isCaptionRow) {\n if (row$$1.isExpand) {\n var childCount = this.getChildRowsByParentIndex(index, true).length;\n this.rowIndex = this.rowIndex + childCount;\n }\n var agg = this.getAggregateByCaptionIndex(index);\n this.rowObjectIndex = this.rowObjectIndex + agg.length;\n var idx = index;\n for (var i = idx + 1; i < rows.length; i++) {\n if (rows[parseInt(i.toString(), 10)].indent === rows[parseInt(index.toString(), 10)].indent\n || rows[parseInt(i.toString(), 10)].indent < rows[parseInt(index.toString(), 10)].indent) {\n index = idx;\n break;\n }\n else {\n idx++;\n }\n }\n }\n return index;\n };\n GroupLazyLoadRenderer.prototype.removeBlock = function (uid, isRowExist, removeBlock, child, lastchild) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid1 = child[(((removeBlock + 1) * this.pageSize) - 1) - this.blockSize].uid;\n var uid2 = child[(removeBlock * this.pageSize) - this.pageSize].uid;\n var uid3 = child[(removeBlock * this.pageSize)].uid;\n var firstIdx = this.getRowObjectIndexByUid(uid1);\n rows[parseInt(firstIdx.toString(), 10)].lazyLoadCssClass = 'e-lazyload-middle-up';\n this.getRowElementByUid(uid1).classList.add('e-lazyload-middle-up');\n if (lastchild) {\n this.getRowElementByUid(uid3).classList.add('e-not-lazyload-first');\n this.getRowByUid(uid3).lazyLoadCssClass = 'e-not-lazyload-first';\n this.getRowByUid(uid2).lazyLoadCssClass = '';\n }\n if (isRowExist) {\n this.removeTopRows(lastchild ? lastchild.uid : uid, uid2, uid3);\n }\n else {\n this.uid1 = uid2;\n this.uid2 = uid3;\n this.uid3 = lastchild ? lastchild.uid : uid;\n }\n };\n GroupLazyLoadRenderer.prototype.scrollUpHandler = function (tr) {\n var page = this.parent.pageSettings.currentPage;\n var rows = this.groupCache[parseInt(page.toString(), 10)];\n var uid = tr.getAttribute('data-uid');\n var row$$1 = this.getRowByUid(uid);\n var index = this.rowObjectIndex = this.getRowObjectIndexByUid(uid);\n var parentCapRow = this.getRowByUid(row$$1.parentUid);\n var capRowObjIdx = this.rowIndex = this.getRowObjectIndexByUid(parentCapRow.uid);\n var captionRowEle = this.parent.getRowElementByUID(parentCapRow.uid);\n var capRowEleIndex = captionRowEle.rowIndex;\n var child = this.getChildRowsByParentIndex(capRowObjIdx);\n var childIdx = child.indexOf(rows[parseInt(index.toString(), 10)]);\n var currenBlock = Math.floor((childIdx / this.pageSize));\n var idx = this.blockSize;\n if ((this.blockSize * 2) > this.pageSize) {\n idx = (this.blockSize * 2) - this.pageSize;\n idx = this.blockSize - idx;\n }\n var start = child[(childIdx - (idx - 1)) - this.pageSize].uid;\n var end = child[childIdx - (idx - 1)].uid;\n this.scrollData = this.getCacheRowsOnUpScroll(start, end, index - (idx - 1));\n this.isFirstChildRow = currenBlock > 1;\n if (this.isFirstChildRow) {\n this.scrollData[0].lazyLoadCssClass = 'e-not-lazyload-first';\n }\n this.getRowByUid(end).lazyLoadCssClass = '';\n this.getRowElementByUid(end).classList.remove('e-not-lazyload-first');\n var removeBlock = currenBlock + this.cacheBlockSize;\n if (child.length !== parentCapRow.data.count && (removeBlock * this.pageSize > child.length)) {\n this.isFirstChildRow = false;\n this.scrollData[0].lazyLoadCssClass = '';\n this.getRowElementByUid(end).classList.add('e-not-lazyload-first');\n return;\n }\n var count = removeBlock * this.pageSize > parentCapRow.data.count\n ? parentCapRow.data.count : removeBlock * this.pageSize;\n var size = removeBlock * this.pageSize > parentCapRow.data.count\n ? (this.pageSize - ((this.pageSize * removeBlock) - parentCapRow.data.count)) : this.pageSize;\n var childRows = this.getChildRowsByParentIndex(rows.indexOf(child[count - 1]), true, false, null, true);\n var uid1 = childRows.length ? childRows[childRows.length - 1].uid : child[(count - 1)].uid;\n var uid2 = child[count - size].uid;\n var uid3 = child[(count - size) - 1].uid;\n var lastIdx = this.objIdxByUid[parseInt(page.toString(), 10)][\"\" + uid2] - idx;\n if (rows[parseInt(lastIdx.toString(), 10)].lazyLoadCssClass === 'e-lazyload-middle-down') {\n var trEle = this.getRowElementByUid(rows[parseInt(lastIdx.toString(), 10)].uid);\n if (trEle) {\n trEle.classList.add('e-lazyload-middle-down');\n }\n }\n this.getRowByUid(uid1).lazyLoadCssClass = '';\n this.getRowByUid(uid3).lazyLoadCssClass = 'e-not-lazyload-end';\n this.getRowElementByUid(uid3).classList.add('e-not-lazyload-end');\n this.removeBottomRows(uid1, uid2, uid3);\n this.rowIndex = tr.rowIndex - idx;\n if (tr.classList.length > 1) {\n tr.classList.remove('e-lazyload-middle-up');\n }\n else {\n tr.removeAttribute('class');\n }\n if (!isNullOrUndefined(this.getRowElementByUid(start))) {\n this.childCount = 0;\n this.scrollData = [];\n return;\n }\n var key = getGroupKeysAndFields(this.getRowObjectIndexByUid(parentCapRow.uid), rows);\n var args = {\n rowIndex: capRowEleIndex, makeRequest: false, groupInfo: parentCapRow, fields: key.fields,\n keys: key.keys, skip: this.childCount, take: this.pageSize, isScroll: true, scrollUp: true\n };\n this.isScrollUp = true;\n this.captionRowExpand(args);\n };\n GroupLazyLoadRenderer.prototype.findRowElements = function (rows) {\n var entered = false;\n var tr;\n for (var i = 0; i < rows.length; i++) {\n var rowIdx = rows[parseInt(i.toString(), 10)].rowIndex;\n if (this.parent.enableVirtualization) {\n var currentInfo = this.parent.contentModule.currentInfo;\n if (currentInfo && currentInfo.blockIndexes && currentInfo.blockIndexes[0] > 1) {\n rowIdx = rowIdx + (this.parent.contentModule.offsets[currentInfo.blockIndexes[0] - 1] /\n this.parent.getRowHeight());\n }\n }\n if (isRowEnteredInGrid(rowIdx, this.parent)) {\n entered = true;\n this.rowIndex = rowIdx;\n tr = rows[parseInt(i.toString(), 10)];\n break;\n }\n }\n return { entered: entered, tr: tr };\n };\n GroupLazyLoadRenderer.prototype.getRowElementByUid = function (uid) {\n return this.parent.getContent().querySelector('tr[data-uid=' + uid + ']');\n };\n GroupLazyLoadRenderer.prototype.removeTopRows = function (uid1, uid2, uid3) {\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n var start = false;\n for (var i = 0; i < trs.length; i++) {\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid3) {\n var tr = this.parent.getContent().querySelector('tr[data-uid=' + uid1 + ']');\n if (tr) {\n this.rowIndex = tr.rowIndex;\n }\n break;\n }\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid2) {\n start = true;\n }\n if (start) {\n remove(trs[parseInt(i.toString(), 10)]);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n GroupLazyLoadRenderer.prototype.removeBottomRows = function (uid1, uid2, uid3) {\n var trs = [].slice.call(this.parent.getContent().querySelectorAll('tr'));\n var trigger = false;\n for (var i = 0; i < trs.length; i++) {\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid2) {\n trigger = true;\n }\n if (trigger) {\n remove(trs[parseInt(i.toString(), 10)]);\n if (trs[parseInt(i.toString(), 10)].getAttribute('data-uid') === uid1) {\n break;\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.setCache = function (e) {\n var page = this.parent.pageSettings.currentPage;\n if (this.parent.enableVirtualization) {\n this.parent.lazyLoadRender = this;\n }\n if (this.parent.enableInfiniteScrolling && e.args.requestType === 'infiniteScroll' &&\n e.args['prevPage'] !== e.args['currentPage']) {\n this.groupCache[parseInt(page.toString(), 10)] = this.initialGroupCaptions[parseInt(page.toString(), 10)] = this.groupCache[e.args['prevPage']]\n .concat(extend([], e.data));\n }\n else {\n this.groupCache[parseInt(page.toString(), 10)] =\n this.initialGroupCaptions[parseInt(page.toString(), 10)] = extend([], e.data);\n }\n };\n GroupLazyLoadRenderer.prototype.captionRowExpand = function (args) {\n var _this = this;\n var captionRow = args.groupInfo;\n var level = this.parent.groupSettings.columns.indexOf(captionRow.data.field) + 1;\n var pred = generateExpandPredicates(args.fields, args.keys, this);\n var predicateList = getPredicates(pred);\n var lazyLoad = { level: level, skip: args.skip, take: args.take, where: predicateList };\n if (args.makeRequest) {\n var query = this.parent.renderModule.data.generateQuery(true);\n if (!query.isCountRequired) {\n query.isCountRequired = true;\n }\n query.lazyLoad.push({ key: 'onDemandGroupInfo', value: lazyLoad });\n this.lazyLoadQuery.push(lazyLoad['where']);\n if (args.isScroll && this.parent.enableVirtualMaskRow) {\n this.parent.showMaskRow();\n }\n else {\n this.parent.showSpinner();\n }\n this.parent.renderModule.data.getData({}, query).then(function (e) {\n if (_this.parent.enableVirtualization) {\n _this.parent.islazyloadRequest = true;\n }\n _this.parent.hideSpinner();\n _this.parent.removeMaskRow();\n if (e.result.length === 0) {\n return;\n }\n if (_this.cacheMode && _this.uid1 && _this.uid2) {\n _this.removeTopRows(_this.uid3, _this.uid1, _this.uid2);\n _this.uid1 = _this.uid2 = _this.uid3 = undefined;\n }\n _this.lazyLoadHandler({\n data: e.result, count: e.count, level: level, index: args.rowIndex,\n isRowExist: false, isScroll: args.isScroll, up: false, rowIndex: args.cachedRowIndex\n });\n })\n .catch(function (e) { return _this.parent.renderModule.dataManagerFailure(e, { requestType: 'grouping' }); });\n }\n else {\n this.lazyLoadHandler({\n data: null, count: args.groupInfo.data.count, level: level, index: args.rowIndex,\n isRowExist: true, isScroll: args.isScroll, up: args.scrollUp, rowIndex: args.cachedRowIndex\n });\n }\n };\n GroupLazyLoadRenderer.prototype.scrollReset = function (top) {\n this.parent.getContent().firstElementChild.scrollTop = top ? this.parent.getContent().firstElementChild.scrollTop + top : 0;\n };\n GroupLazyLoadRenderer.prototype.updateCurrentViewData = function () {\n var records = [];\n this.getRows().filter(function (row$$1) {\n if (row$$1.isDataRow) {\n records[row$$1.index] = row$$1.data;\n }\n });\n this.parent.currentViewData = records.length ? records : this.parent.currentViewData;\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden */\n GroupLazyLoadRenderer.prototype.getGroupCache = function () {\n return this.groupCache;\n };\n /**\n * @returns {Row[]} returns the row\n * @hidden */\n GroupLazyLoadRenderer.prototype.getRows = function () {\n return this.groupCache[this.parent.pageSettings.currentPage] || [];\n };\n /**\n * @returns {Element} returns the element\n * @hidden */\n GroupLazyLoadRenderer.prototype.getRowElements = function () {\n return [].slice.call(this.parent.getContent().getElementsByClassName(row));\n };\n /**\n * @param {number} index - specifies the index\n * @returns {Element} returns the element\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.getRowByIndex = function (index) {\n var tr = [].slice.call(this.parent.getContent().getElementsByClassName(row));\n var row$$1;\n for (var i = 0; !isNullOrUndefined(index) && i < tr.length; i++) {\n if (tr[parseInt(i.toString(), 10)].getAttribute(dataRowIndex) === index.toString()) {\n row$$1 = tr[parseInt(i.toString(), 10)];\n break;\n }\n }\n return row$$1;\n };\n /**\n * Tucntion to set the column visibility\n *\n * @param {Column[]} columns - specifies the column\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.setVisible = function (columns) {\n var gObj = this.parent;\n var rows = this.getRows();\n var testRow;\n rows.some(function (r) { if (r.isDataRow) {\n testRow = r;\n } return r.isDataRow; });\n var contentrows = this.getRows().filter(function (row$$1) { return !row$$1.isDetailRow; });\n for (var i = 0; i < columns.length; i++) {\n var column = columns[parseInt(i.toString(), 10)];\n var idx = this.parent.getNormalizedColumnIndex(column.uid);\n var colIdx = this.parent.getColumnIndexByUid(column.uid);\n var displayVal = column.visible === true ? '' : 'none';\n if (idx !== -1 && testRow && idx < testRow.cells.length) {\n setStyleAttribute(this.getColGroup().childNodes[parseInt(idx.toString(), 10)], { 'display': displayVal });\n }\n this.setDisplayNone(gObj.getDataRows(), colIdx, displayVal, contentrows, idx);\n if (!this.parent.invokedFromMedia && column.hideAtMedia) {\n this.parent.updateMediaColumns(column);\n }\n this.parent.invokedFromMedia = false;\n }\n };\n /**\n * Function to set display.\n *\n * @param {Object} tr - specifies the row object\n * @param {number} idx - specifies the index\n * @param {string} displayVal - specifies the display value\n * @param {Row[]} rows - specifies the array of rows\n * @param {number} oriIdx - specifies the index\n * @returns {void}\n * @hidden\n */\n GroupLazyLoadRenderer.prototype.setDisplayNone = function (tr, idx, displayVal, rows, oriIdx) {\n if (!this.parent.groupSettings.columns.length) {\n setDisplayValue(tr, idx, displayVal, rows);\n }\n else {\n var keys = Object.keys(this.groupCache);\n for (var j = 0; j < keys.length; j++) {\n var uids = this.rowsByUid[keys[parseInt(j.toString(), 10)]];\n var idxs = Object.keys(uids);\n for (var i = 0; i < idxs.length; i++) {\n var tr_1 = this.parent.getContent()\n .querySelector('tr[data-uid=' + idxs[parseInt(i.toString(), 10)] + ']');\n var row$$1 = uids[idxs[parseInt(i.toString(), 10)]];\n if (row$$1.isCaptionRow) {\n if (!this.captionModelGen.isEmpty()) {\n this.changeCaptionRow(row$$1, tr_1, keys[parseInt(j.toString(), 10)]);\n }\n else {\n row$$1.cells[row$$1.indent + 1].colSpan = displayVal === '' ? row$$1.cells[row$$1.indent + 1].colSpan + 1\n : row$$1.cells[row$$1.indent + 1].colSpan - 1;\n if (tr_1) {\n tr_1.cells[row$$1.indent + 1].colSpan = row$$1.cells[row$$1.indent + 1].colSpan;\n }\n }\n }\n if (row$$1.isDataRow) {\n this.showAndHideCells(tr_1, idx, displayVal, false);\n row$$1.cells[parseInt(oriIdx.toString(), 10)].visible = displayVal === '' ? true : false;\n }\n if (!row$$1.isCaptionRow && !row$$1.isDataRow && isNullOrUndefined(row$$1.indent)) {\n row$$1.cells[parseInt(oriIdx.toString(), 10)].visible = displayVal === '' ? true : false;\n row$$1.visible = row$$1.cells.some(function (cell) { return cell.isDataCell && cell.visible; });\n this.showAndHideCells(tr_1, idx, displayVal, true, row$$1);\n }\n }\n }\n }\n };\n GroupLazyLoadRenderer.prototype.changeCaptionRow = function (row$$1, tr, index) {\n var capRow = row$$1;\n var captionData = row$$1.data;\n var data = this.groupGenerator.generateCaptionRow(captionData, capRow.indent, capRow.parentGid, undefined, capRow.tIndex, capRow.parentUid);\n data.uid = row$$1.uid;\n data.isExpand = row$$1.isExpand;\n data.lazyLoadCssClass = row$$1.lazyLoadCssClass;\n this.rowsByUid[parseInt(index.toString(), 10)][row$$1.uid] = data;\n this.groupCache[parseInt(index.toString(), 10)][this.objIdxByUid[parseInt(index.toString(), 10)][row$$1.uid]] = data;\n if (tr) {\n var tbody$$1 = this.parent.getContentTable().querySelector(tbody);\n tbody$$1.replaceChild(this.rowRenderer.render(data, this.parent.getColumns()), tr);\n }\n };\n GroupLazyLoadRenderer.prototype.showAndHideCells = function (tr, idx, displayVal, isSummary, row$$1) {\n if (tr) {\n var cls = isSummary ? 'td.e-summarycell' : 'td.e-rowcell';\n setStyleAttribute(tr.querySelectorAll(cls)[parseInt(idx.toString(), 10)], { 'display': displayVal });\n if (tr.querySelectorAll(cls)[parseInt(idx.toString(), 10)].classList.contains('e-hide')) {\n removeClass([tr.querySelectorAll(cls)[parseInt(idx.toString(), 10)]], ['e-hide']);\n }\n if (isSummary) {\n if (row$$1.visible && tr.classList.contains('e-hide')) {\n removeClass([tr], ['e-hide']);\n }\n else if (!row$$1.visible) {\n addClass([tr], ['e-hide']);\n }\n }\n }\n };\n return GroupLazyLoadRenderer;\n}(ContentRender));\n\n/**\n * Group lazy load class\n */\nvar LazyLoadGroup = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Grid group lazy load module\n *\n * @param {IGrid} parent - specifies the IGrid\n * @param {ServiceLocator} serviceLocator - specifies the ServiceLocator\n * @hidden\n */\n function LazyLoadGroup(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} returns the module name\n * @private\n */\n LazyLoadGroup.prototype.getModuleName = function () {\n return 'lazyLoadGroup';\n };\n /**\n * @returns {void}\n * @hidden\n */\n LazyLoadGroup.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(destroy, this.destroy, this);\n };\n /**\n * @returns {void}\n * @hidden\n */\n LazyLoadGroup.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(destroy, this.destroy);\n };\n LazyLoadGroup.prototype.instantiateRenderer = function () {\n if (this.parent.height === 'auto') {\n this.parent.height = this.parent.pageSettings.pageSize * this.parent.getRowHeight();\n }\n var renderer = this.serviceLocator.getService('rendererFactory');\n if (this.parent.groupSettings.enableLazyLoading) {\n renderer.addRenderer(RenderType.Content, new GroupLazyLoadRenderer(this.parent, this.serviceLocator));\n }\n if (this.parent.enableVirtualization) {\n this.parent.lazyLoadRender = new GroupLazyLoadRenderer(this.parent, this.serviceLocator);\n }\n };\n /**\n * @returns {void}\n * @hidden\n */\n LazyLoadGroup.prototype.destroy = function () {\n this.removeEventListener();\n };\n return LazyLoadGroup;\n}());\n\n/**\n * Action export\n */\n\n/**\n * Models\n */\n\nvar __extends$37 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `AutoCompleteEditCell` is used to handle autocomplete cell type editing.\n *\n * @hidden\n */\nvar AutoCompleteEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$37(AutoCompleteEditCell, _super);\n function AutoCompleteEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n AutoCompleteEditCell.prototype.write = function (args) {\n this.column = args.column;\n var isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n this.object = new AutoComplete(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().select(args.column.field), enabled: isEditable(args.column, args.requestType, args.element),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n // enableRtl: this.parentect.enableRtl,\n actionComplete: this.selectedValues.bind(this),\n placeholder: isInlineEdit ? '' : args.column.headerText,\n floatLabelType: isInlineEdit ? 'Never' : 'Always'\n }, args.column.edit.params));\n this.object.appendTo(args.element);\n /* tslint:disable-next-line:no-any */\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n AutoCompleteEditCell.prototype.selectedValues = function (valObj) {\n valObj.result = DataUtil.distinct(valObj.result, this.object.fields.value, true);\n if (this.column.dataSource) {\n this.column.dataSource.dataSource.json = valObj.result;\n }\n };\n return AutoCompleteEditCell;\n}(EditCellBase));\n\nvar __extends$38 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `ComboBoxEditCell` is used to handle ComboBoxEdit cell type editing.\n *\n * @hidden\n */\nvar ComboboxEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$38(ComboboxEditCell, _super);\n function ComboboxEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComboboxEditCell.prototype.write = function (args) {\n this.column = args.column;\n var isInlineMode = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new ComboBox(extend({\n dataSource: this.parent.dataSource instanceof DataManager ?\n this.parent.dataSource : new DataManager(this.parent.dataSource),\n query: new Query().select(args.column.field),\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl, actionComplete: this.finalValue.bind(this),\n placeholder: isInlineMode ? '' : args.column.headerText,\n floatLabelType: isInlineMode ? 'Never' : 'Always',\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n ComboboxEditCell.prototype.finalValue = function (val) {\n val.result = DataUtil.distinct(val.result, this.obj.fields.value, true);\n if (this.column.dataSource) {\n this.column.dataSource.dataSource.json = val.result;\n }\n };\n return ComboboxEditCell;\n}(EditCellBase));\n\nvar __extends$39 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `MultiSelectEditCell` is used to handle multiselect dropdown cell type editing.\n *\n * @hidden\n */\nvar MultiSelectEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$39(MultiSelectEditCell, _super);\n function MultiSelectEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MultiSelectEditCell.prototype.write = function (args) {\n this.column = args.column;\n var isInline = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new MultiSelect(extend({\n fields: { text: args.column.field, value: args.column.field },\n value: getValue(args.column.field, args.rowData),\n enableRtl: this.parent.enableRtl,\n placeholder: isInline ? '' : args.column.headerText, popupHeight: '200px',\n floatLabelType: isInline ? 'Never' : 'Always',\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n args.element.setAttribute('name', getComplexFieldID(args.column.field));\n };\n return MultiSelectEditCell;\n}(EditCellBase));\n\nvar __extends$40 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `TimePickerEditCell` is used to handle Timepicker cell type editing.\n *\n * @hidden\n */\nvar TimePickerEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$40(TimePickerEditCell, _super);\n function TimePickerEditCell() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n TimePickerEditCell.prototype.write = function (args) {\n var isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n var rowDataValue = getObject(args.column.field, args.rowData);\n rowDataValue = rowDataValue ? new Date(rowDataValue) : null;\n this.obj = new TimePicker(extend({\n floatLabelType: isInlineEdit ? 'Never' : 'Always',\n value: rowDataValue,\n placeholder: isInlineEdit ?\n '' : args.column.headerText, enableRtl: this.parent.enableRtl,\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n return TimePickerEditCell;\n}(EditCellBase));\n\nvar __extends$41 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `ToggleEditCell` is used to handle boolean cell type editing.\n *\n * @hidden\n */\nvar ToggleEditCell = /** @__PURE__ @class */ (function (_super) {\n __extends$41(ToggleEditCell, _super);\n function ToggleEditCell() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.activeClasses = ['e-selectionbackground', 'e-active'];\n return _this;\n }\n ToggleEditCell.prototype.create = function (args) {\n var clsNames = 'e-field e-boolcell';\n if (args.column.type === 'checkbox') {\n clsNames = 'e-field e-boolcell e-edit-checkselect';\n }\n return createEditElement(this.parent, args.column, clsNames, { type: 'checkbox', value: args.value });\n };\n ToggleEditCell.prototype.read = function (element) {\n return element.checked;\n };\n ToggleEditCell.prototype.write = function (args) {\n var chkBoxElement = !isNullOrUndefined(args.row) && args.row.querySelector('.e-edit-checkselect');\n var data = getObject(args.column.field, args.rowData);\n var checkState = data && JSON.parse(data.toString().toLowerCase());\n if (!isNullOrUndefined(chkBoxElement)) {\n this.editType = this.parent.editSettings.mode;\n this.editRow = args.row;\n if (args.requestType !== 'add') {\n var row$$1 = this.parent.getRowObjectFromUID(args.row.getAttribute('data-uid'));\n checkState = row$$1 ? row$$1.isSelected : false;\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(args.row.getElementsByClassName(rowCell)), checkState].concat(this.activeClasses));\n }\n this.obj = new Switch(extend({\n label: this.parent.editSettings.mode !== 'Dialog' ? ' ' : args.column.headerText,\n checked: checkState,\n disabled: !isEditable(args.column, args.requestType, args.element), enableRtl: this.parent.enableRtl,\n change: this.switchModeChange.bind(this),\n cssClass: this.parent.cssClass ? this.parent.cssClass : ''\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n ToggleEditCell.prototype.switchModeChange = function (args) {\n if (this.editRow && this.editType !== 'Dialog') {\n var addClass$$1 = false;\n if (!args.checked) {\n this.editRow.removeAttribute('aria-selected');\n }\n else {\n addClass$$1 = true;\n this.editRow.setAttribute('aria-selected', addClass$$1.toString());\n }\n addRemoveActiveClasses.apply(void 0, [[].slice.call(this.editRow.getElementsByClassName(rowCell)), addClass$$1].concat(this.activeClasses));\n }\n };\n return ToggleEditCell;\n}(EditCellBase));\n\nvar __extends$42 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `MaskedTextBoxCellEdit` is used to handle masked input cell type editing.\n *\n * @hidden\n */\nvar MaskedTextBoxCellEdit = /** @__PURE__ @class */ (function (_super) {\n __extends$42(MaskedTextBoxCellEdit, _super);\n function MaskedTextBoxCellEdit() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n MaskedTextBoxCellEdit.prototype.write = function (args) {\n this.column = args.column;\n var isInlineEdit = this.parent.editSettings.mode !== 'Dialog';\n this.obj = new MaskedTextBox(extend({\n fields: { value: args.column.field },\n value: getObject(args.column.field, args.rowData),\n floatLabelType: isInlineEdit ? 'Never' : 'Always',\n mask: '000-000-0000',\n enabled: isEditable(args.column, args.requestType, args.element),\n cssClass: this.parent.cssClass ? this.parent.cssClass : null\n }, args.column.edit.params));\n this.obj.appendTo(args.element);\n };\n return MaskedTextBoxCellEdit;\n}(EditCellBase));\n\n/**\n * Models\n */\n\n/**\n * Services\n */\n\n/**\n * Grid component exported items\n */\n\n/**\n * Pager component exported items\n */\n\n/**\n * Export Grid components\n */\n\nexport { CheckBoxFilterBase, ExcelFilterBase, SortDescriptor, SortSettings, Predicate$1 as Predicate, InfiniteScrollSettings, FilterSettings, SelectionSettings, SearchSettings, RowDropSettings, TextWrapSettings, ResizeSettings, GroupSettings, EditSettings, LoadingIndicator, Grid, CellType, RenderType, ToolbarItem, ResponsiveDialogAction, ResponsiveToolbarAction, doesImplementInterface, valueAccessor, headerValueAccessor, getUpdateUsingRaf, isExportColumns, updateColumnTypeForExportColumns, updatecloneRow, getCollapsedRowsCount, recursive, iterateArrayOrObject, iterateExtend, templateCompiler, setStyleAndAttributes, extend$1 as extend, setColumnIndex, prepareColumns, setCssInGridPopUp, getActualProperties, parentsUntil, getElementIndex, inArray, getActualPropFromColl, removeElement, getPosition, getUid, appendChildren, parents, calculateAggregate, getScrollBarWidth, getRowHeight, getActualRowHeight, isComplexField, getComplexFieldID, setComplexFieldID, isEditable, isActionPrevent, wrap, setFormatter, addRemoveActiveClasses, distinctStringValues, getFilterMenuPostion, getZIndexCalcualtion, toogleCheckbox, setChecked, createCboxWithWrap, removeAddCboxClasses, refreshForeignData, getForeignData, getColumnByForeignKeyValue, getDatePredicate, renderMovable, isGroupAdaptive, getObject, getCustomDateFormat, getExpandedState, getPrintGridModel, extendObjWithFn, measureColumnDepth, checkDepth, refreshFilteredColsUid, Global, getTransformValues, applyBiggerTheme, alignFrozenEditForm, ensureLastRow, ensureFirstRow, isRowEnteredInGrid, getEditedDataIndex, eventPromise, getStateEventArgument, ispercentageWidth, resetRowIndex, compareChanges, setRowElements, splitFrozenRowObjectCells, getExactFrozenMovableColumn, gridActionHandler, getGridRowObjects, getGridRowElements, sliceElements, getCellsByTableName, getCellByColAndRowIndex, setValidationRuels, getMovableTbody, getFrozenRightTbody, setRowsInTbody, getNumberFormat, addBiggerDialog, performComplexDataOperation, setDisplayValue, addRemoveEventListener, createEditElement, getColumnModelByUid, getColumnModelByFieldName, registerEventHandlers, removeEventHandlers, clearReactVueTemplates, getRowIndexFromElement, generateExpandPredicates, getPredicates, getGroupKeysAndFields, findCellIndex, capitalizeFirstLetter, created, destroyed, load, rowDataBound, queryCellInfo, headerCellInfo, actionBegin, actionComplete, actionFailure, dataBound, rowSelecting, rowSelected, rowDeselecting, rowDeselected, cellSelecting, cellSelected, cellDeselecting, cellDeselected, columnSelecting, columnSelected, columnDeselecting, columnDeselected, columnDragStart, columnDrag, columnDrop, rowDragStartHelper, rowDragStart, rowDrag, rowDrop, beforePrint, printComplete, detailDataBound, toolbarClick, batchAdd, batchCancel, batchDelete, beforeBatchAdd, beforeBatchDelete, beforeBatchSave, beginEdit, cellEdit, cellSave, cellSaved, endAdd, endDelete, endEdit, recordDoubleClick, recordClick, beforeDataBound, beforeOpenColumnChooser, beforeOpenAdaptiveDialog, resizeStart, onResize, resizeStop, checkBoxChange, beforeCopy, beforePaste, beforeAutoFill, filterChoiceRequest, filterAfterOpen, filterBeforeOpen, filterSearchBegin, commandClick, exportGroupCaption, lazyLoadGroupExpand, lazyLoadGroupCollapse, initialLoad, initialEnd, dataReady, contentReady, uiUpdate, onEmpty, inBoundModelChanged, modelChanged, colGroupRefresh, headerRefreshed, pageBegin, pageComplete, sortBegin, sortComplete, filterBegin, filterComplete, searchBegin, searchComplete, reorderBegin, reorderComplete, rowDragAndDropBegin, rowDragAndDropComplete, groupBegin, groupComplete, ungroupBegin, ungroupComplete, groupAggregates, refreshFooterRenderer, refreshAggregateCell, refreshAggregates, rowSelectionBegin, rowSelectionComplete, columnSelectionBegin, columnSelectionComplete, cellSelectionBegin, cellSelectionComplete, beforeCellFocused, cellFocused, keyPressed, click, destroy, columnVisibilityChanged, scroll, columnWidthChanged, columnPositionChanged, rowDragAndDrop, rowsAdded, rowsRemoved, columnDragStop, headerDrop, dataSourceModified, refreshComplete, refreshVirtualBlock, dblclick, toolbarRefresh, bulkSave, autoCol, tooltipDestroy, updateData, editBegin, editComplete, addBegin, addComplete, saveComplete, deleteBegin, deleteComplete, preventBatch, dialogDestroy, crudAction, addDeleteAction, destroyForm, doubleTap, beforeExcelExport, excelExportComplete, excelQueryCellInfo, excelHeaderQueryCellInfo, exportDetailDataBound, beforePdfExport, pdfExportComplete, pdfQueryCellInfo, pdfHeaderQueryCellInfo, accessPredicate, contextMenuClick, freezeRender, freezeRefresh, contextMenuOpen, columnMenuClick, columnMenuOpen, filterOpen, filterDialogCreated, filterMenuClose, initForeignKeyColumn, getForeignKeyData, generateQuery, showEmptyGrid, foreignKeyData, columnDataStateChange, dataStateChange, dataSourceChanged, rtlUpdated, beforeFragAppend, frozenHeight, textWrapRefresh, recordAdded, cancelBegin, editNextValCell, hierarchyPrint, expandChildGrid, printGridInit, exportRowDataBound, exportDataBound, rowPositionChanged, columnChooserOpened, batchForm, beforeStartEdit, beforeBatchCancel, batchEditFormRendered, partialRefresh, beforeCustomFilterOpen, selectVirtualRow, columnsPrepared, cBoxFltrBegin, cBoxFltrComplete, fltrPrevent, beforeFltrcMenuOpen, valCustomPlacement, filterCboxValue, componentRendered, restoreFocus, detailStateChange, detailIndentCellInfo, virtaulKeyHandler, virtaulCellFocus, virtualScrollEditActionBegin, virtualScrollEditSuccess, virtualScrollEditCancel, virtualScrollEdit, refreshVirtualCache, editReset, virtualScrollAddActionBegin, getVirtualData, refreshInfiniteModeBlocks, resetInfiniteBlocks, infiniteScrollHandler, infinitePageQuery, infiniteShowHide, appendInfiniteContent, removeInfiniteRows, setInfiniteCache, infiniteEditHandler, initialCollapse, getAggregateQuery, closeFilterDialog, columnChooserCancelBtnClick, getFilterBarOperator, resetColumns, pdfAggregateQueryCellInfo, excelAggregateQueryCellInfo, setGroupCache, lazyLoadScrollHandler, groupCollapse, beforeCheckboxRenderer, refreshHandlers, refreshFrozenColumns, setReorderDestinationElement, refreshVirtualFrozenHeight, setFreezeSelection, setInfiniteFrozenHeight, setInfiniteColFrozenHeight, beforeRefreshOnDataChange, immutableBatchCancel, refreshVirtualFrozenRows, checkScrollReset, refreshFrozenHeight, setHeightToFrozenElement, preventFrozenScrollRefresh, nextCellIndex, refreshInfiniteCurrentViewData, infiniteCrudCancel, filterDialogClose, refreshCustomFilterOkBtn, refreshCustomFilterClearBtn, renderResponsiveCmenu, filterCmenuSelect, customFilterClose, setFullScreenDialog, refreshExpandandCollapse, rowModeChange, enterKeyHandler, refreshVirtualMaxPage, setVirtualPageQuery, selectRowOnContextOpen, pagerRefresh, closeInline, closeBatch, closeEdit, resetVirtualFocus, afterContentRender, refreshVirtualEditFormCells, scrollToEdit, beforeCheckboxRendererQuery, createVirtualValidationForm, validateVirtualForm, destroyChildGrid, stickyScrollComplete, captionActionComplete, refreshInfinitePersistSelection, refreshInfiniteEditrowindex, afterFilterColumnMenuClose, beforeCheckboxfilterRenderer, commandColumnDestroy, batchCnfrmDlgCancel, refreshVirtualLazyLoadCache, rowCell, gridHeader, gridContent, gridFooter, headerContent, movableContent, movableHeader, frozenContent, frozenHeader, content, table, row, gridChkBox, editedRow, addedRow, changedRecords, addedRecords, deletedRecords, leftRight, frozenRight, frozenLeft, dataColIndex, ariaColIndex, dataRowIndex, ariaRowIndex, tbody, colGroup, open, change, focus, create, beforeOpen, downArrow, upArrow, pageUp, pageDown, enter, shiftEnter, tab, shiftTab, Data, Sort, Page, Selection, Filter, Search, Scroll, resizeClassList, Resize, Reorder, RowDD, Group, getCloneProperties, Print, DetailRow, Toolbar$1 as Toolbar, Aggregate, summaryIterator, VirtualScroll, Edit, BatchEdit, InlineEdit, NormalEdit, DialogEdit, ColumnChooser, ExcelExport, PdfExport, ExportHelper, ExportValueFormatter, Clipboard, CommandColumn, CheckBoxFilter, menuClass, ContextMenu$1 as ContextMenu, Freeze, ColumnMenu, ExcelFilter, ForeignKey, Logger, detailLists, InfiniteScroll, LazyLoadGroup, Column, CommandColumnModel, GridColumn, StackedColumn, Row, Cell, HeaderRender, ContentRender, RowRenderer, CellRenderer, HeaderCellRenderer, FilterCellRenderer, StackedHeaderCellRenderer, Render, IndentCellRenderer, GroupCaptionCellRenderer, GroupCaptionEmptyCellRenderer, BatchEditRender, DialogEditRender, InlineEditRender, EditRender, BooleanEditCell, DefaultEditCell, DropDownEditCell, NumericEditCell, DatePickerEditCell, CommandColumnRenderer, FreezeContentRender, FreezeRender, StringFilterUI, NumberFilterUI, DateFilterUI, BooleanFilterUI, FlMenuOptrUI, AutoCompleteEditCell, ComboboxEditCell, MultiSelectEditCell, TimePickerEditCell, ToggleEditCell, MaskedTextBoxCellEdit, VirtualContentRenderer, VirtualHeaderRenderer, VirtualElementHandler, VirtualFreezeRenderer, VirtualFreezeHdrRenderer, renderFrozenRows, splitCells, collectRows, setFreezeSelectionAction, selectFreezeRows, appendContent, generateRows, getReorderedFrozenRows, splitReorderedRows, isXaxis, getHeaderCells, getVirtualFreezeHeader, ensureFrozenCols, setColGroup, setCache, setDebounce, ColumnVirtualFreezeRenderer, GroupLazyLoadRenderer, ColumnFreezeHeaderRenderer, ColumnFreezeContentRenderer, ResponsiveDialogRenderer, EditCellBase, CellRendererFactory, ServiceLocator, RowModelGenerator, GroupModelGenerator, FreezeRowModelGenerator, ValueFormatter, VirtualRowModelGenerator, InterSectionObserver, Pager, ExternalMessage, NumericContainer, PagerMessage, PagerDropDown };\n","import { Browser, ChildProperty, Complex, Component, Event, EventHandler, Internationalization, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, closest, compile, detach, extend, getValue, isBlazor, isNullOrUndefined, removeClass, resetBlazorTemplate, select, setStyleAttribute, updateBlazorTemplate } from '@syncfusion/ej2-base';\nimport { DataManager, ODataV4Adaptor, Predicate, Query, UrlAdaptor, WebApiAdaptor } from '@syncfusion/ej2-data';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { DatePicker, DateRangePicker, DateTimePicker, TimePicker } from '@syncfusion/ej2-calendars';\nimport { Tooltip, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { ColorPicker, FormValidator, MaskedTextBox, NumericTextBox, Slider, TextBox } from '@syncfusion/ej2-inputs';\nimport { AutoComplete, ComboBox, DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { FileManager, HtmlEditor, Image, Link, MarkdownEditor, QuickToolbar, RichTextEditor, Table, Toolbar } from '@syncfusion/ej2-richtexteditor';\n\n/**\n * Exports util methods used by In-place editor.\n */\nvar intl = new Internationalization();\n/**\n * @param {string} type - specifies the string type\n * @param {valueType} val - specifies the value type\n * @param {modelType} model - specifies the model type\n * @returns {string} - returns the string\n */\nfunction parseValue(type, val, model) {\n if (isNullOrUndefined(val) || val === '') {\n return '';\n }\n var result;\n var tempFormat;\n switch (type) {\n case 'Color': {\n var hex = val;\n result = (hex.length > 7) ? hex.slice(0, -2) : hex;\n break;\n }\n case 'Date':\n tempFormat = model.format;\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });\n break;\n case 'DateRange': {\n tempFormat = model.format;\n var date = val;\n result = intl.formatDate(date[0], { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' }) + ' - '\n + intl.formatDate(date[1], { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });\n break;\n }\n case 'DateTime':\n tempFormat = model.format;\n if (isNullOrUndefined(tempFormat) || tempFormat === '') {\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' }) + ' '\n + intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 't' : 'hm' });\n }\n else {\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 'd' : 'yMd' });\n }\n break;\n case 'Time':\n tempFormat = model.format;\n result = intl.formatDate(val, { format: tempFormat, type: type, skeleton: isBlazor() ? 't' : 'hm' });\n break;\n case 'Numeric': {\n tempFormat = isNullOrUndefined(model.format) ? 'n2' :\n model.format;\n var tempVal = isNullOrUndefined(val) ? null : (typeof (val) === 'number' ? val : intl.parseNumber(val));\n result = intl.formatNumber(tempVal, { format: tempFormat });\n break;\n }\n default:\n result = val.toString();\n break;\n }\n return result;\n}\n/**\n * @param {string} type - specifies the string value\n * @param {valueType} val - specifies the value type\n * @returns {valueType} - returns the value type\n */\nfunction getCompValue(type, val) {\n if (isNullOrUndefined(val) || val === '') {\n return val;\n }\n if ((type === 'Date' || type === 'Time' || type === 'DateTime') && typeof (val) === 'string') {\n val = new Date(val);\n }\n else if (type === 'DateRange') {\n if (typeof (val) === 'object' && typeof (val[0]) === 'string') {\n val = [new Date(val[0]), new Date(val[1])];\n }\n else if (typeof (val) === 'string') {\n var temp = val.split('-');\n val = [new Date(temp[0]), new Date(temp[1])];\n }\n }\n return val;\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\nfunction encode(value) {\n var data = [];\n for (var i = value.length - 1; i >= 0; i--) {\n data.unshift(['&#', value[i].charCodeAt(0), ';'].join(''));\n }\n return data.join('');\n}\n\n/**\n * In-place Editor events defined here.\n */\n/** @hidden */\nvar render = 'render';\n/** @hidden */\nvar update = 'update';\n/** @hidden */\nvar destroy = 'destroy';\n/** @hidden */\nvar setFocus = 'set-focus';\n/** @hidden */\nvar accessValue = 'access-value';\n/** @hidden */\nvar destroyModules = 'destroy-modules';\n/** @hidden */\nvar showPopup = 'show-popup';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * Configures the popup settings of the In-place editor.\n */\nvar PopupSettings = /** @__PURE__ @class */ (function (_super) {\n __extends(PopupSettings, _super);\n function PopupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], PopupSettings.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], PopupSettings.prototype, \"model\", void 0);\n return PopupSettings;\n}(ChildProperty));\n/**\n * @hidden\n */\nvar modulesList = {\n /* eslint-disable */\n 'AutoComplete': 'auto-complete',\n 'Color': 'color-picker',\n 'ComboBox': 'combo-box',\n 'DateRange': 'date-range-picker',\n 'MultiSelect': 'multi-select',\n 'RTE': 'rte',\n 'Slider': 'slider',\n 'Time': 'time-picker'\n /* eslint-enable */\n};\n/**\n * @hidden\n */\n// eslint-disable-next-line\nvar localeConstant = {\n /* eslint-disable */\n 'Click': { 'editAreaClick': 'Click to edit' },\n 'DblClick': { 'editAreaDoubleClick': 'Double click to edit' },\n 'EditIconClick': { 'editAreaClick': 'Click to edit' }\n /* eslint-enable */\n};\n\n/**\n * In-place Editor classes defined here.\n */\n/** @hidden */\nvar ROOT = 'e-inplaceeditor';\n/** @hidden */\nvar ROOT_TIP = 'e-inplaceeditor-tip';\n/** @hidden */\nvar VALUE_WRAPPER = 'e-editable-value-wrapper';\n/** @hidden */\nvar VALUE = 'e-editable-value';\n/** @hidden */\nvar OVERLAY_ICON = 'e-editable-overlay-icon';\n/** @hidden */\nvar TIP_TITLE = 'e-editable-tip-title';\n/** @hidden */\nvar TITLE = 'e-editable-title';\n/** @hidden */\nvar INLINE = 'e-editable-inline';\n/** @hidden */\nvar POPUP = 'e-editable-popup';\n/** @hidden */\nvar WRAPPER = 'e-editable-wrapper';\n/** @hidden */\nvar LOADING = 'e-editable-loading';\n/** @hidden */\nvar FORM = 'e-editable-form';\n/** @hidden */\nvar CTRL_GROUP = 'e-component-group';\n/** @hidden */\nvar INPUT = 'e-editable-component';\n/** @hidden */\nvar BUTTONS = 'e-editable-action-buttons';\n/** @hidden */\nvar EDITABLE_ERROR = 'e-editable-error';\n/** @hidden */\nvar ELEMENTS = 'e-editable-elements';\n/** @hidden */\nvar OPEN = 'e-editable-open';\n/** @hidden */\nvar BTN_SAVE = 'e-btn-save';\n/** @hidden */\nvar BTN_CANCEL = 'e-btn-cancel';\n/** @hidden */\nvar RTE_SPIN_WRAP = 'e-rte-spin-wrap';\n/** @hidden */\nvar CTRL_OVERLAY = 'e-control-overlay';\n/** @hidden */\nvar DISABLE = 'e-disable';\n/** @hidden */\nvar ICONS = 'e-icons';\n/** @hidden */\nvar PRIMARY = 'e-primary';\n/** @hidden */\nvar SHOW = 'e-show';\n/** @hidden */\nvar HIDE = 'e-hide';\n/** @hidden */\nvar RTL = 'e-rtl';\n/** @hidden */\nvar ERROR = 'e-error';\n/** @hidden */\nvar LOAD = 'e-loading';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n/* Helper modules */\n/* Models */\n/* Interface */\n/**\n * ```html\n * * The In-place editor control is used to edit an element in a place and to update the value in server.\n *
\n * \n * ```\n */\nvar InPlaceEditor = /** @__PURE__ @class */ (function (_super) {\n __extends$1(InPlaceEditor, _super);\n /**\n * Initializes a new instance of the In-place editor class.\n *\n * @param {InPlaceEditorModel} options - Specifies In-place editor model properties as options.\n * @param {string} element - Specifies the element for which In-place editor applies.\n */\n function InPlaceEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n InPlaceEditor.prototype.initializeValue = function () {\n this.initRender = true;\n this.isTemplate = false;\n this.isVue = false;\n this.isExtModule = false;\n this.submitBtn = undefined;\n this.cancelBtn = undefined;\n this.isClearTarget = false;\n this.btnElements = undefined;\n this.dataManager = undefined;\n this.oldValue = undefined;\n this.divComponents = ['RTE', 'Slider'];\n this.clearComponents = ['AutoComplete', 'Mask', 'Text'];\n this.dateType = ['Date', 'DateTime', 'Time'];\n this.inputDataEle = ['Date', 'DateTime', 'DateRange', 'Time', 'Numeric'];\n this.dropDownEle = ['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'];\n this.moduleList = ['AutoComplete', 'Color', 'ComboBox', 'DateRange', 'MultiSelect', 'RTE', 'Slider', 'Time'];\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n InPlaceEditor.prototype.preRender = function () {\n this.initializeValue();\n this.onScrollResizeHandler = this.scrollResizeHandler.bind(this);\n if (isNullOrUndefined(this.model)) {\n this.setProperties({ model: {} }, true);\n }\n this.titleEle = this.createElement('div', { className: TITLE });\n if (!isNullOrUndefined(this.popupSettings.model) && this.popupSettings.model.afterOpen) {\n this.afterOpenEvent = this.popupSettings.model.afterOpen;\n }\n };\n /**\n * To Initialize the In-place editor rendering\n *\n * @returns {void}\n * @private\n */\n InPlaceEditor.prototype.render = function () {\n if (isNullOrUndefined(this.element.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', '0');\n }\n this.checkIsTemplate();\n this.disable(this.disabled);\n this.updateAdaptor();\n this.appendValueElement();\n this.updateValue();\n // eslint-disable-next-line\n this.textOption === 'Never' ?\n this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)))\n : this.renderInitialValue();\n this.wireEvents();\n this.setRtl(this.enableRtl);\n this.enableEditor(this.enableEditMode, true);\n this.setClass('add', this.cssClass);\n this.renderComplete();\n };\n InPlaceEditor.prototype.setClass = function (action, val) {\n if (!this.isEmpty(val)) {\n var allClassName = val.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n // eslint-disable-next-line\n action === 'add' ? addClass([this.element], [allClassName[i]]) : removeClass([this.element], [allClassName[i]]);\n }\n }\n }\n };\n InPlaceEditor.prototype.appendValueElement = function () {\n this.valueWrap = this.createElement('div', { id: this.element.id + '_wrap', className: VALUE_WRAPPER });\n if (!isBlazor()) {\n this.element.innerHTML = '';\n }\n this.valueEle = this.createElement('span', { className: VALUE });\n this.editIcon = this.createElement('span', {\n className: OVERLAY_ICON + ' ' + ICONS,\n attrs: { 'title': this.getLocale({ editIcon: 'Click to edit' }, 'editIcon') }\n });\n this.valueWrap.appendChild(this.valueEle);\n this.valueWrap.appendChild(this.editIcon);\n this.element.appendChild(this.valueWrap);\n };\n InPlaceEditor.prototype.renderInitialValue = function () {\n if (['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'].indexOf(this.type) > -1\n && !isNullOrUndefined(this.value) && !this.isEmpty(this.value.toString()) && !isNullOrUndefined(this.model.fields)\n && !isNullOrUndefined(this.model.dataSource)) {\n this.renderValue(this.getLocale({ loadingText: 'Loading...' }, 'loadingText'));\n this.valueWrap.classList.add(LOAD);\n createSpinner({ target: this.valueWrap, width: 10 });\n showSpinner(this.valueWrap);\n this.getInitFieldMapValue();\n }\n else {\n this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)));\n }\n };\n InPlaceEditor.prototype.getInitFieldMapValue = function () {\n var _this = this;\n var model = this.model;\n var mText = model.fields.text;\n var mVal = model.fields.value;\n var query = isNullOrUndefined(model.query) ? new Query() : model.query;\n if (model.dataSource instanceof DataManager) {\n model.dataSource.executeQuery(this.getInitQuery(model, query)).then(function (e) {\n // eslint-disable-next-line\n _this.updateInitValue(mText, mVal, e.result);\n });\n }\n else {\n this.updateInitValue(mText, mVal, new DataManager(model.dataSource).executeLocal(\n // eslint-disable-next-line\n this.getInitQuery(model, query)));\n }\n };\n InPlaceEditor.prototype.getInitQuery = function (model, query) {\n var predicate;\n var mVal = model.fields.value;\n var value = this.value;\n if (this.type !== 'MultiSelect' || typeof (this.value) !== 'object') {\n predicate = new Predicate(mVal, 'equal', this.value);\n }\n else {\n var i = 0;\n for (var _i = 0, value_1 = value; _i < value_1.length; _i++) {\n var val = value_1[_i];\n predicate = ((i === 0) ? predicate = new Predicate(mVal, 'equal', val) : predicate.or(mVal, 'equal', val));\n i++;\n }\n }\n return query.where(predicate);\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.updateInitValue = function (mText, mVal, result) {\n if (result.length <= 0) {\n return;\n }\n if (result.length === 1) {\n this.valueEle.innerHTML = this.checkValue(getValue((isNullOrUndefined(mText) ? mVal : mText), result[0]));\n }\n else {\n var val = [];\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var obj = result_1[_i];\n val.push(getValue((isNullOrUndefined(mText) ? mVal : mText), obj));\n }\n this.valueEle.innerHTML = this.checkValue(val.toString());\n }\n hideSpinner(this.valueWrap);\n this.valueWrap.classList.remove(LOAD);\n };\n InPlaceEditor.prototype.renderValue = function (val) {\n // eslint-disable-next-line\n this.enableHtmlSanitizer && this.type !== 'RTE' && this.type !== 'MultiSelect' ? this.valueEle.innerText = val :\n (this.valueEle.innerHTML = this.enableHtmlParse ? val : encode(val));\n if (this.type === 'Color') {\n setStyleAttribute(this.valueEle, { 'color': val });\n }\n if (this.mode === 'Inline') {\n if (this.isEditorOpen()) {\n removeClass([this.valueWrap], [HIDE]);\n }\n }\n };\n InPlaceEditor.prototype.isEditorOpen = function () {\n if (this.isVue && (this.enableEditMode || (!isNullOrUndefined(this.valueWrap) &&\n !(this.valueWrap.classList.contains(HIDE) || this.valueWrap.classList.contains('e-tooltip'))))) {\n return false;\n }\n else {\n return true;\n }\n };\n InPlaceEditor.prototype.renderEditor = function () {\n this.prevValue = this.value;\n this.beginEditArgs = { mode: this.mode, cancelFocus: false, cancel: false };\n this.trigger('beginEdit', this.beginEditArgs);\n if (this.beginEditArgs.cancel) {\n return;\n }\n // eslint-disable-next-line\n var tipOptions = undefined;\n var target = select('.' + VALUE_WRAPPER, this.element);\n if (this.editableOn !== 'EditIconClick') {\n target.parentElement.removeAttribute('title');\n }\n if (this.valueWrap.classList.contains(OPEN)) {\n return;\n }\n if (this.mode === 'Inline') {\n addClass([this.valueWrap], [HIDE]);\n this.inlineWrapper = this.createElement('div', { className: INLINE });\n this.element.appendChild(this.inlineWrapper);\n if (['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'].indexOf(this.type) > -1) {\n this.checkRemoteData(this.model);\n }\n else {\n this.renderAndOpen();\n }\n }\n else {\n if (!isNullOrUndefined(this.popupSettings.model) && this.popupSettings.model.afterOpen) {\n this.popupSettings.model.afterOpen = this.afterOpenHandler.bind(this);\n }\n var content = this.createElement('div', { className: POPUP });\n if (!this.isEmpty(this.popupSettings.title)) {\n this.titleEle.innerHTML = this.popupSettings.title;\n content.appendChild(this.titleEle);\n }\n tipOptions = {\n content: content, opensOn: 'Custom',\n enableRtl: this.enableRtl, cssClass: ROOT_TIP,\n afterOpen: this.afterOpenHandler.bind(this)\n };\n content.appendChild(this.renderControl(document.body));\n extend(tipOptions, this.popupSettings.model, tipOptions, true);\n this.tipObj = new Tooltip(tipOptions);\n this.tipObj.appendTo(target);\n this.tipObj.open(target);\n }\n if (this.actionOnBlur !== 'Ignore') {\n this.wireDocEvent();\n }\n addClass([this.valueWrap], [OPEN]);\n this.setProperties({ enableEditMode: true }, true);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n InPlaceEditor.prototype.renderAndOpen = function () {\n this.renderControl(this.inlineWrapper);\n this.afterOpenHandler(null);\n };\n InPlaceEditor.prototype.checkRemoteData = function (model) {\n var _this = this;\n if (model.dataSource instanceof DataManager) {\n model.dataBound = function () {\n _this.afterOpenHandler(null);\n };\n this.renderControl(this.inlineWrapper);\n if ((isNullOrUndefined(model.value) && isNullOrUndefined(this.value)) || (model.value === this.value\n && (!isNullOrUndefined(model.value) && model.value.length === 0))) {\n this.showDropDownPopup();\n }\n }\n else {\n this.renderAndOpen();\n }\n };\n InPlaceEditor.prototype.showDropDownPopup = function () {\n if (this.type === 'DropDownList') {\n if (!this.model.allowFiltering) {\n this.componentObj.focusIn();\n }\n this.componentObj.showPopup();\n }\n else {\n if (this.isExtModule) {\n this.notify(((this.type === 'MultiSelect') ? setFocus : showPopup), {});\n }\n }\n };\n InPlaceEditor.prototype.setAttribute = function (ele, attr) {\n var value = this.name && this.name.length !== 0 ? this.name : this.element.id;\n attr.forEach(function (val) {\n ele.setAttribute(val, ((val === 'id') ? (value + '_editor') : value));\n });\n };\n InPlaceEditor.prototype.renderControl = function (target) {\n var ele;\n this.containerEle = this.createElement('div', { className: WRAPPER });\n this.loader = this.createElement('div', { className: LOADING });\n this.formEle = this.createElement('form', { className: FORM });\n var ctrlGroupEle = this.createElement('div', { className: CTRL_GROUP });\n var inputWrap = this.createElement('div', { className: INPUT });\n target.appendChild(this.containerEle);\n this.loadSpinner();\n this.containerEle.appendChild(this.formEle);\n this.formEle.appendChild(ctrlGroupEle);\n if (this.isTemplate) {\n this.appendTemplate(inputWrap, this.template);\n }\n else {\n if (Array.prototype.indexOf.call(this.divComponents, this.type) > -1) {\n ele = this.createElement('div');\n this.setAttribute(ele, ['id']);\n }\n else {\n ele = this.createElement('input');\n this.setAttribute(ele, ['id', 'name']);\n }\n this.componentRoot = ele;\n inputWrap.appendChild(ele);\n inputWrap.appendChild(this.loader);\n }\n ctrlGroupEle.appendChild(inputWrap);\n ctrlGroupEle.appendChild(this.createElement('div', { className: EDITABLE_ERROR }));\n this.appendButtons(this.formEle);\n if (!this.isTemplate) {\n this.renderComponent(ele);\n }\n this.removeSpinner();\n if (this.submitOnEnter) {\n this.wireEditorKeyDownEvent(this.containerEle);\n }\n return this.containerEle;\n };\n InPlaceEditor.prototype.appendButtons = function (trg) {\n if (this.showButtons && trg) {\n this.btnElements = this.renderButtons();\n trg.appendChild(this.btnElements);\n this.wireBtnEvents();\n }\n };\n InPlaceEditor.prototype.renderButtons = function () {\n var btnWrap = this.createElement('div', { className: BUTTONS });\n var primary = (!isNullOrUndefined(this.saveButton.content) && this.saveButton.content.length !== 0) ? (' ' + PRIMARY) : '';\n this.submitBtn = this.createButtons({\n constant: 'save', type: 'submit', container: btnWrap,\n title: { save: 'Save' }, model: this.saveButton,\n className: BTN_SAVE + primary\n });\n this.cancelBtn = this.createButtons({\n type: 'button', constant: 'cancel', title: { cancel: 'Cancel' },\n container: btnWrap, model: this.cancelButton,\n className: BTN_CANCEL\n });\n return btnWrap;\n };\n InPlaceEditor.prototype.createButtons = function (args) {\n var btnObj = undefined;\n if (Object.keys(args.model).length > 0) {\n var btnEle = this.createElement('button', {\n className: args.className,\n attrs: { 'type': args.type, 'title': (args.constant == \"save\") ? (isNullOrUndefined(this.saveButton.content) ? this.getLocale(args.title, args.constant) : this.saveButton.content) : (isNullOrUndefined(this.cancelButton.content) ? this.getLocale(args.title, args.constant) : this.cancelButton.content) }\n });\n args.container.appendChild(btnEle);\n btnObj = new Button(args.model, btnEle);\n }\n return btnObj;\n };\n InPlaceEditor.prototype.renderComponent = function (ele) {\n this.isExtModule = (Array.prototype.indexOf.call(this.moduleList, this.type) > -1) ? true : false;\n var classProp;\n if (!isNullOrUndefined(this.model.cssClass)) {\n classProp = this.model.cssClass.indexOf(ELEMENTS) < 0 ?\n this.model.cssClass === '' ? ELEMENTS : this.model.cssClass + ' ' + ELEMENTS :\n this.model.cssClass;\n }\n else {\n classProp = ELEMENTS;\n }\n extend(this.model, this.model, {\n cssClass: classProp, enableRtl: this.enableRtl, locale: this.locale, change: this.changeHandler.bind(this)\n });\n if (!isNullOrUndefined(this.value)) {\n this.updateModelValue(false);\n }\n if (this.isExtModule) {\n this.notify(render, { module: modulesList[this.type], target: ele, type: this.type });\n }\n else {\n if (isNullOrUndefined(this.model.showClearButton) && !isBlazor()) {\n this.model.showClearButton = true;\n }\n switch (this.type) {\n case 'Date':\n this.componentObj = new DatePicker(this.model);\n break;\n case 'DateTime':\n this.componentObj = new DateTimePicker(this.model);\n break;\n case 'DropDownList':\n this.componentObj = new DropDownList(this.model);\n break;\n case 'Mask':\n this.componentObj = new MaskedTextBox(this.model);\n break;\n case 'Numeric':\n if (this.model.value) {\n // eslint-disable-next-line no-useless-escape\n var expRegex = new RegExp('[eE][\\-+]?([0-9]+)');\n if (expRegex.test(this.model.value)) {\n this.model.value = this.model.value;\n }\n else {\n this.model.value = this.model.value.toString().replace(/[`~!@#$%^&*()_|\\=?;:'\",<>\\{\\}\\[\\]\\\\\\/]/gi, '');\n }\n }\n this.componentObj = new NumericTextBox(this.model);\n break;\n case 'Text':\n this.componentObj = new TextBox(this.model);\n break;\n }\n this.componentObj.appendTo(ele);\n }\n };\n InPlaceEditor.prototype.updateAdaptor = function () {\n switch (this.adaptor) {\n case 'UrlAdaptor':\n this.dataAdaptor = new UrlAdaptor;\n break;\n case 'WebApiAdaptor':\n this.dataAdaptor = new WebApiAdaptor;\n break;\n case 'ODataV4Adaptor':\n this.dataAdaptor = new ODataV4Adaptor;\n break;\n }\n };\n InPlaceEditor.prototype.loadSpinner = function (callType) {\n addClass([this.loader], [SHOW]);\n if (callType === 'validate' && (this.type === 'RTE' || this.type === 'Color' || this.type === 'Slider')) {\n addClass([this.loader], [RTE_SPIN_WRAP]);\n addClass([this.getEditElement()], [CTRL_OVERLAY]);\n this.spinObj = { target: this.loader };\n }\n else {\n this.spinObj = { target: this.loader, width: Browser.isDevice ? '16px' : '14px' };\n }\n if (this.formEle) {\n addClass([this.formEle], [LOAD]);\n }\n if (this.btnElements) {\n addClass([this.btnElements], [HIDE]);\n }\n setStyleAttribute(this.loader, { 'width': '100%' });\n createSpinner(this.spinObj);\n showSpinner(this.spinObj.target);\n };\n InPlaceEditor.prototype.removeSpinner = function (callType) {\n this.loader.removeAttribute('style');\n hideSpinner(this.spinObj.target);\n detach(this.spinObj.target.firstChild);\n if (callType === 'submit' && (this.type === 'RTE' || this.type === 'Color' || this.type === 'Slider')) {\n removeClass([this.loader], [RTE_SPIN_WRAP]);\n removeClass([this.getEditElement()], [CTRL_OVERLAY]);\n }\n if (this.formEle) {\n removeClass([this.formEle], [LOAD]);\n }\n if (this.btnElements) {\n removeClass([this.btnElements], [HIDE]);\n }\n removeClass([this.loader], [SHOW]);\n };\n InPlaceEditor.prototype.getEditElement = function () {\n return select('.' + ELEMENTS, this.formEle);\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.getLocale = function (prop, val) {\n return new L10n('inplace-editor', prop, this.locale).getConstant(val);\n };\n InPlaceEditor.prototype.checkValue = function (val) {\n return (!this.isEmpty(val)) ? val : this.emptyText;\n };\n InPlaceEditor.prototype.extendModelValue = function (val) {\n // eslint-disable-next-line\n var model = this.model;\n extend(model, { value: val });\n this.setProperties({ model: model }, true);\n };\n InPlaceEditor.prototype.updateValue = function () {\n this.oldValue = this.value;\n if (this.enableHtmlSanitizer && typeof (this.value) === 'string') {\n this.oldValue = this.sanitizeHelper(this.value);\n }\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: getCompValue(this.type, this.oldValue) }, true);\n this.extendModelValue(getCompValue(this.type, this.oldValue));\n }\n };\n InPlaceEditor.prototype.updateModelValue = function (updateOldValue) {\n if (this.type === 'MultiSelect' && !this.isEmpty(this.value)) {\n this.model.value = !updateOldValue ? this.value.slice() : this.oldValue.slice();\n }\n else {\n this.model.value = !updateOldValue ? this.value : this.oldValue;\n }\n };\n InPlaceEditor.prototype.setValue = function () {\n if (this.isExtModule) {\n this.notify(update, { type: this.type });\n }\n else if (this.componentObj) {\n if (this.type === 'Numeric' && this.componentObj.value === null) {\n this.componentObj.setProperties({ value: null }, true);\n }\n this.setProperties({ value: this.componentObj.value }, true);\n this.extendModelValue(this.componentObj.value);\n }\n };\n InPlaceEditor.prototype.getDropDownsValue = function (display) {\n var value;\n if (Array.prototype.indexOf.call(this.dropDownEle, this.type) > -1 && this.type !== 'MultiSelect') {\n value = display ? select('.e-' + this.type.toLocaleLowerCase(), this.containerEle).value :\n this.value.toString();\n }\n else if (this.type === 'MultiSelect') {\n this.notify(accessValue, { type: this.type });\n value = display ? this.printValue : this.value.join();\n }\n return value;\n };\n InPlaceEditor.prototype.getSendValue = function () {\n if (this.isEmpty(this.value)) {\n return '';\n }\n if (Array.prototype.indexOf.call(this.dropDownEle, this.type) > -1) {\n return this.getDropDownsValue(false);\n }\n else if (Array.prototype.indexOf.call(this.dateType, this.type) > -1) {\n return this.value.toISOString();\n }\n else if (this.type === 'DateRange') {\n return this.value[0].toISOString() + ' - ' + this.value[1].toISOString();\n }\n else {\n return this.value.toString();\n }\n };\n InPlaceEditor.prototype.getRenderValue = function () {\n if (this.type === 'Mask' && this.componentObj.value.length !== 0) {\n return this.componentObj.getMaskedValue();\n }\n else if (Array.prototype.indexOf.call(this.inputDataEle, this.type) > -1) {\n return this.componentRoot.value;\n }\n else if (Array.prototype.indexOf.call(this.dropDownEle, this.type) > -1) {\n return this.getDropDownsValue(true);\n }\n else {\n return parseValue(this.type, this.value, this.model);\n }\n };\n InPlaceEditor.prototype.setRtl = function (value) {\n // eslint-disable-next-line\n value ? addClass([this.element], [RTL]) : removeClass([this.element], [RTL]);\n };\n InPlaceEditor.prototype.setFocus = function () {\n if (this.isTemplate) {\n return;\n }\n // eslint-disable-next-line\n this.isExtModule ? this.notify(setFocus, {}) : this.componentObj.element.focus();\n };\n InPlaceEditor.prototype.removeEditor = function (isBlazorDestroy) {\n // eslint-disable-next-line\n if (isBlazor() && !this.isStringTemplate) {\n resetBlazorTemplate(this.element.id + 'template', 'Template');\n }\n var tipEle;\n if (this.tipObj && this.formEle) {\n tipEle = closest(this.formEle, '.' + ROOT_TIP);\n tipEle.classList.add(HIDE);\n }\n this.unWireDocEvent();\n this.destroyComponents();\n this.formEle = undefined;\n if (!isNullOrUndefined(select('.' + INLINE, this.element))) {\n detach(this.inlineWrapper);\n this.inlineWrapper = undefined;\n }\n else if (this.tipObj) {\n if (this.type === 'MultiSelect') {\n EventHandler.remove(this.containerEle, 'mousedown', this.popMouseDown);\n EventHandler.remove(this.containerEle, 'click', this.popClickHandler);\n }\n this.tipObj.close();\n this.tipObj.destroy();\n this.tipObj = undefined;\n }\n this.containerEle = undefined;\n removeClass([this.valueWrap], [OPEN, HIDE]);\n if (!isBlazorDestroy) {\n this.setProperties({ enableEditMode: false }, true);\n }\n if (this.editableOn !== 'EditIconClick') {\n var titleConstant = (this.editableOn === 'DblClick') ? 'editAreaDoubleClick' : 'editAreaClick';\n if (!isNullOrUndefined(this.valueWrap.parentElement)) {\n this.valueWrap.parentElement.setAttribute('title', this.getLocale(localeConstant[this.editableOn], titleConstant));\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n InPlaceEditor.prototype.destroyComponents = function () {\n if (this.showButtons) {\n this.destroyButtons();\n }\n if (this.isExtModule) {\n this.notify(destroyModules, {});\n }\n else {\n if (this.templateEle) {\n document.body.appendChild(this.templateEle);\n this.templateEle.style.display = 'none';\n this.templateEle = undefined;\n }\n if (!isNullOrUndefined(this.componentObj)) {\n this.componentObj.destroy();\n this.componentObj = undefined;\n }\n }\n if (this.formValidate) {\n this.formValidate = undefined;\n }\n if (this.submitOnEnter && this.containerEle) {\n this.unWireEditorKeyDownEvent(this.containerEle);\n }\n };\n InPlaceEditor.prototype.destroyButtons = function () {\n if (!isNullOrUndefined(this.submitBtn)) {\n EventHandler.remove(this.submitBtn.element, 'mousedown', this.submitHandler);\n EventHandler.remove(this.submitBtn.element, 'click', this.submitPrevent);\n EventHandler.remove(this.submitBtn.element, 'keydown', this.btnKeyDownHandler);\n this.submitBtn.destroy();\n this.submitBtn = undefined;\n }\n if (!isNullOrUndefined(this.cancelBtn)) {\n EventHandler.remove(this.cancelBtn.element, 'mouseup', this.cancelBtnClick);\n EventHandler.remove(this.cancelBtn.element, 'keydown', this.btnKeyDownHandler);\n this.cancelBtn.destroy();\n this.cancelBtn = undefined;\n }\n this.btnElements = undefined;\n };\n InPlaceEditor.prototype.getQuery = function (params) {\n var query = new Query();\n Object.keys(params).forEach(function (key) {\n query.addParams(key, params[key]);\n });\n return query;\n };\n InPlaceEditor.prototype.sendValue = function () {\n var _this = this;\n var eventArgs = { data: { name: this.name, primaryKey: this.primaryKey, value: this.getSendValue() } };\n this.trigger('actionBegin', eventArgs, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n _this.removeSpinner('submit');\n if (_this.mode === 'Popup') {\n _this.updateArrow();\n }\n }\n else {\n if (!_this.isEmpty(_this.url) && !_this.isEmpty(_this.primaryKey)\n && (_this.initRender || (!_this.initRender && _this.prevValue !== _this.value))) {\n _this.dataManager = new DataManager({ url: _this.url, adaptor: _this.dataAdaptor });\n if (_this.adaptor === 'UrlAdaptor') {\n _this.dataManager.executeQuery(_this.getQuery(actionBeginArgs.data), _this.successHandler.bind(_this), _this.failureHandler.bind(_this));\n }\n else {\n // eslint-disable-next-line\n var crud = _this.dataManager.insert(actionBeginArgs.data);\n crud.then(function (e) { return _this.successHandler(e); }).catch(function (e) { return _this.failureHandler(e); });\n }\n }\n else {\n var eventArg = { data: {}, value: actionBeginArgs.data.value };\n _this.triggerSuccess(eventArg);\n }\n _this.dataManager = undefined;\n }\n });\n };\n InPlaceEditor.prototype.isEmpty = function (value) {\n return (!isNullOrUndefined(value) && value.length !== 0) ? false : true;\n };\n InPlaceEditor.prototype.checkIsTemplate = function () {\n this.isTemplate = (!isNullOrUndefined(this.template) && this.template !== '') ? true : false;\n };\n InPlaceEditor.prototype.templateCompile = function (trgEle, tempStr) {\n var tempEle;\n // eslint-disable-next-line\n if (typeof tempStr === 'string') {\n tempStr = tempStr.trim();\n }\n // eslint-disable-next-line\n var compiler = compile(tempStr);\n if (!isNullOrUndefined(compiler)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (tempStr).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n tempEle = compiler({}, this, 'template', this.element.id + 'template', isString);\n }\n if (!isNullOrUndefined(compiler) && tempEle.length > 0) {\n [].slice.call(tempEle).forEach(function (el) {\n trgEle.appendChild(el);\n });\n if (isBlazor() && !this.isStringTemplate && (tempStr).indexOf('
Blazor') === 0) {\n updateBlazorTemplate(this.element.id + 'template', 'Template', this);\n }\n }\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\n InPlaceEditor.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item_1 = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item_1, item_1, beforeEvent);\n // eslint-disable-next-line\n this.trigger('beforeSanitizeHtml', item_1, function (args) {\n if (item_1.cancel && !isNullOrUndefined(item_1.helper)) {\n value = item_1.helper(value);\n }\n else if (!item_1.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item_1, value);\n }\n });\n }\n return value;\n };\n InPlaceEditor.prototype.appendTemplate = function (trgEle, tempStr) {\n tempStr = typeof (tempStr) === 'string' ? this.sanitizeHelper(tempStr) : tempStr;\n this.setProperties({ template: tempStr }, true);\n if (typeof tempStr === 'string' || isNullOrUndefined(tempStr.innerHTML)) {\n if (tempStr[0] === '.' || tempStr[0] === '#') {\n if (document.querySelectorAll(tempStr).length) {\n this.templateEle = document.querySelector(tempStr);\n trgEle.appendChild(this.templateEle);\n this.templateEle.style.display = '';\n }\n else {\n this.templateCompile(trgEle, tempStr);\n }\n }\n else {\n this.templateCompile(trgEle, tempStr);\n }\n }\n else {\n this.templateEle = tempStr;\n trgEle.appendChild(this.templateEle);\n }\n };\n InPlaceEditor.prototype.disable = function (value) {\n // eslint-disable-next-line\n value ? addClass([this.element], [DISABLE]) : removeClass([this.element], [DISABLE]);\n };\n InPlaceEditor.prototype.enableEditor = function (val, isInit) {\n if (isInit && !val) {\n return;\n }\n // eslint-disable-next-line\n (val) ? this.renderEditor() : this.cancelHandler('cancel');\n };\n InPlaceEditor.prototype.checkValidation = function (fromSubmit, isValidate) {\n var _this = this;\n var args;\n if (this.validationRules) {\n var rules = Object.keys(this.validationRules);\n var validationLength_1 = Object.keys(this.validationRules[rules[0]]).length;\n validationLength_1 = 'validateHidden' in this.validationRules[rules[0]] ? validationLength_1 - 1 : validationLength_1;\n var count_1 = 0;\n this.formValidate = new FormValidator(this.formEle, {\n rules: this.validationRules,\n validationBegin: function (e) {\n if (_this.type === 'RTE') {\n var ele = document.createElement('div');\n ele.innerHTML = e.value;\n e.value = ele.innerText;\n }\n },\n validationComplete: function (e) {\n count_1 = count_1 + 1;\n args = {\n errorMessage: e.message,\n data: { name: _this.name, primaryKey: _this.primaryKey, value: _this.checkValue(_this.getSendValue()) }\n };\n _this.trigger('validating', args, function (validateArgs) {\n if (e.status === 'failure') {\n e.errorElement.innerText = validateArgs.errorMessage;\n _this.toggleErrorClass(true);\n }\n else {\n _this.toggleErrorClass(false);\n }\n if (!isNullOrUndefined(fromSubmit) && fromSubmit && (validationLength_1 === count_1 || e.status === 'failure')) {\n fromSubmit = false;\n _this.afterValidation(isValidate);\n count_1 = 0;\n }\n });\n },\n customPlacement: function (inputElement, errorElement) {\n if (_this.formEle) {\n select('.' + EDITABLE_ERROR, _this.formEle).appendChild(errorElement);\n }\n }\n });\n count_1 = 0;\n this.formValidate.validate();\n }\n else if (this.template !== '') {\n args = {\n errorMessage: '',\n data: { name: this.name, primaryKey: this.primaryKey, value: this.checkValue(this.getSendValue()) }\n };\n this.trigger('validating', args, function (validateArgs) {\n if (validateArgs.errorMessage) {\n select('.' + EDITABLE_ERROR, _this.formEle).innerHTML = validateArgs.errorMessage;\n _this.toggleErrorClass(true);\n }\n else {\n _this.toggleErrorClass(false);\n }\n _this.afterValidation(isValidate);\n });\n }\n else {\n this.afterValidation(isValidate);\n }\n };\n InPlaceEditor.prototype.afterValidation = function (isValidate) {\n if (!this.formEle.classList.contains(ERROR) && isValidate) {\n this.loadSpinner('validate');\n if (this.mode === 'Popup') {\n this.updateArrow();\n }\n this.sendValue();\n }\n };\n InPlaceEditor.prototype.toggleErrorClass = function (value) {\n if (isNullOrUndefined(this.formEle)) {\n return;\n }\n var inputEle = select('.e-input-group', this.formEle);\n // eslint-disable-next-line\n var errorClass = function (element, val, action) {\n [].slice.call(element).forEach(function (ele) {\n if (ele) {\n // eslint-disable-next-line\n action === 'add' ? addClass([ele], [val]) : removeClass([ele], [val]);\n }\n });\n };\n errorClass([this.formEle, inputEle], ERROR, value ? 'add' : 'remove');\n };\n InPlaceEditor.prototype.updateArrow = function () {\n var pos = this.tipObj.tipPointerPosition;\n this.tipObj.tipPointerPosition = (pos === 'Middle') ? 'Auto' : 'Middle';\n this.tipObj.tipPointerPosition = pos;\n this.tipObj.dataBind();\n };\n InPlaceEditor.prototype.triggerSuccess = function (args) {\n var _this = this;\n var val = args.value;\n this.trigger('actionSuccess', args, function (actionArgs) {\n _this.oldValue = val;\n _this.removeSpinner('submit');\n if (!actionArgs.cancel) {\n _this.renderValue(_this.checkValue((actionArgs.value !== val) ? actionArgs.value : _this.getRenderValue()));\n }\n if (actionArgs.cancel && _this.mode === 'Inline') {\n removeClass([_this.valueWrap], [HIDE]);\n }\n _this.removeEditor();\n });\n };\n InPlaceEditor.prototype.triggerEndEdit = function (closeBeginBy) {\n var _this = this;\n var endEditArgs = { cancel: false, mode: this.mode, action: closeBeginBy };\n this.trigger('endEdit', endEditArgs, function (args) {\n if (!args.cancel) {\n if (_this.formEle && _this.formEle.classList.contains(ERROR)) {\n _this.updateModelValue(true);\n _this.setProperties({ value: _this.oldValue }, true);\n }\n _this.removeEditor();\n }\n });\n };\n InPlaceEditor.prototype.wireEvents = function () {\n this.wireEditEvent(this.editableOn);\n EventHandler.add(this.editIcon, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.valueKeyDownHandler, this);\n document.addEventListener('scroll', this.onScrollResizeHandler);\n window.addEventListener('resize', this.onScrollResizeHandler);\n if (Array.prototype.indexOf.call(this.clearComponents, this.type) > -1) {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n }\n };\n InPlaceEditor.prototype.wireDocEvent = function () {\n EventHandler.add(document, 'mousedown', this.docClickHandler, this);\n };\n InPlaceEditor.prototype.wireEditEvent = function (event) {\n if (event === 'EditIconClick') {\n return;\n }\n var titleConstant = (event === 'Click') ? 'editAreaClick' : 'editAreaDoubleClick';\n this.element.setAttribute('title', this.getLocale(localeConstant[event], titleConstant));\n if (Browser.isDevice && Browser.isIos && event === 'DblClick') {\n this.touchModule = new Touch(this.valueWrap, { tap: this.doubleTapHandler.bind(this) });\n }\n else {\n EventHandler.add(this.valueWrap, event.toLowerCase(), this.clickHandler, this);\n }\n };\n InPlaceEditor.prototype.wireEditorKeyDownEvent = function (ele) {\n EventHandler.add(ele, 'keydown', this.enterKeyDownHandler, this);\n };\n InPlaceEditor.prototype.wireBtnEvents = function () {\n if (!isNullOrUndefined(this.submitBtn)) {\n EventHandler.add(this.submitBtn.element, 'mousedown', this.submitHandler, this);\n EventHandler.add(this.submitBtn.element, 'click', this.submitPrevent, this);\n EventHandler.add(this.submitBtn.element, 'keydown', this.btnKeyDownHandler, this);\n }\n if (!isNullOrUndefined(this.cancelBtn)) {\n EventHandler.add(this.cancelBtn.element, 'mouseup', this.cancelBtnClick, this);\n EventHandler.add(this.cancelBtn.element, 'keydown', this.btnKeyDownHandler, this);\n }\n };\n InPlaceEditor.prototype.cancelBtnClick = function (e) {\n this.cancelHandler('cancel');\n this.trigger('cancelClick', e);\n };\n InPlaceEditor.prototype.unWireEvents = function () {\n this.unWireEditEvent(this.editableOn);\n EventHandler.remove(this.editIcon, 'click', this.clickHandler);\n document.removeEventListener('scroll', this.onScrollResizeHandler);\n window.removeEventListener('resize', this.onScrollResizeHandler);\n EventHandler.remove(this.element, 'keydown', this.valueKeyDownHandler);\n if (Array.prototype.indexOf.call(this.clearComponents, this.type) > -1) {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n }\n };\n InPlaceEditor.prototype.unWireDocEvent = function () {\n EventHandler.remove(document, 'mousedown', this.docClickHandler);\n };\n InPlaceEditor.prototype.unWireEditEvent = function (event) {\n if (event === 'EditIconClick') {\n return;\n }\n this.element.removeAttribute('title');\n if (Browser.isDevice && Browser.isIos && event === 'DblClick') {\n this.touchModule.destroy();\n this.touchModule = undefined;\n }\n else {\n EventHandler.remove(this.valueWrap, event.toLowerCase(), this.clickHandler);\n }\n };\n InPlaceEditor.prototype.unWireEditorKeyDownEvent = function (ele) {\n EventHandler.remove(ele, 'keydown', this.enterKeyDownHandler);\n };\n InPlaceEditor.prototype.submitPrevent = function (e) {\n e.preventDefault();\n };\n InPlaceEditor.prototype.btnKeyDownHandler = function (e) {\n var trg = e.target;\n if ((e.keyCode === 13 && e.which === 13) || (e.keyCode === 32 && e.which === 32)) {\n if (trg.classList.contains(BTN_SAVE)) {\n this.save();\n }\n else if (trg.classList.contains(BTN_CANCEL)) {\n this.cancelHandler('cancel');\n }\n }\n if (e.keyCode === 9 && e.shiftKey === false &&\n (isNullOrUndefined(e.target.nextElementSibling) ||\n e.target.nextElementSibling.tagName !== 'BUTTON')) {\n if (this.actionOnBlur === 'Submit') {\n this.save();\n }\n else if (this.actionOnBlur === 'Cancel') {\n this.cancelHandler('cancel');\n }\n }\n };\n InPlaceEditor.prototype.afterOpenHandler = function (e) {\n if (this.mode === 'Popup' && this.type === 'MultiSelect') {\n EventHandler.add(this.containerEle, 'mousedown', this.popMouseDown, this);\n EventHandler.add(this.containerEle, 'click', this.popClickHandler, this);\n }\n if (this.mode === 'Popup' && !this.isEmpty(this.titleEle.innerHTML)) {\n e.element.classList.add(TIP_TITLE);\n }\n if (this.type === 'RTE') {\n this.rteModule.refresh();\n this.setAttribute(select('.e-richtexteditor textarea', this.containerEle), ['name']);\n }\n else if (this.type === 'Slider') {\n this.sliderModule.refresh();\n this.setAttribute(select('.e-slider-input', this.containerEle), ['name']);\n }\n if (!this.beginEditArgs.cancelFocus) {\n if (this.mode === 'Inline' && (['AutoComplete', 'ComboBox', 'DropDownList', 'MultiSelect'].indexOf(this.type) > -1)\n && this.model.dataSource instanceof DataManager) {\n this.showDropDownPopup();\n }\n else {\n this.setFocus();\n }\n }\n if (this.afterOpenEvent) {\n this.tipObj.setProperties({ afterOpen: this.afterOpenEvent }, true);\n this.tipObj.trigger('afterOpen', e);\n }\n };\n InPlaceEditor.prototype.popMouseDown = function (e) {\n var trgClass = e.target.classList;\n if (trgClass.contains('e-chips-close') && !trgClass.contains('e-close-hooker')) {\n this.updateArrow();\n }\n };\n InPlaceEditor.prototype.doubleTapHandler = function (e) {\n if (e.tapCount > 1) {\n this.clickHandler(e.originalEvent);\n }\n };\n InPlaceEditor.prototype.clickHandler = function (e) {\n if (this.editableOn !== 'EditIconClick') {\n e.stopPropagation();\n }\n this.renderEditor();\n };\n InPlaceEditor.prototype.submitHandler = function (e) {\n e.preventDefault();\n this.save();\n this.trigger('submitClick', e);\n };\n InPlaceEditor.prototype.cancelHandler = function (action) {\n this.triggerEndEdit(action);\n };\n InPlaceEditor.prototype.popClickHandler = function (e) {\n var tipTarget = select('.' + VALUE_WRAPPER, this.element);\n if (e.target.classList.contains('e-chips-close')) {\n this.tipObj.refresh(tipTarget);\n }\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.successHandler = function (e) {\n this.initRender = false;\n var eventArgs = { data: e, value: this.getSendValue() };\n this.triggerSuccess(eventArgs);\n };\n // eslint-disable-next-line\n InPlaceEditor.prototype.failureHandler = function (e) {\n var _this = this;\n var eventArgs = { data: e, value: this.getSendValue() };\n // eslint-disable-next-line\n this.trigger('actionFailure', eventArgs, function (args) {\n _this.removeSpinner('submit');\n if (_this.mode === 'Popup') {\n _this.updateArrow();\n }\n });\n };\n InPlaceEditor.prototype.enterKeyDownHandler = function (e) {\n if (!closest(e.target, '.' + INPUT + ' .e-richtexteditor') && (!e.currentTarget.getElementsByTagName(\"textarea\")[0])) {\n if ((e.keyCode === 13 && e.which === 13) && closest(e.target, '.' + INPUT)) {\n this.save();\n this.trigger('submitClick', e);\n }\n else if (e.keyCode === 27 && e.which === 27) {\n this.cancelHandler('cancel');\n }\n }\n };\n InPlaceEditor.prototype.valueKeyDownHandler = function (e) {\n if (e.keyCode === 9 && e.shiftKey === true && e.target.tagName !== 'BUTTON') {\n if (this.actionOnBlur === 'Submit') {\n this.save();\n }\n else if (this.actionOnBlur === 'Cancel') {\n this.cancelHandler('cancel');\n }\n }\n if ((e.keyCode === 13 && e.which === 13) && e.target.classList.contains(ROOT) &&\n !this.valueWrap.classList.contains(OPEN) && !this.element.classList.contains(DISABLE)) {\n e.preventDefault();\n this.renderEditor();\n }\n };\n InPlaceEditor.prototype.mouseDownHandler = function (e) {\n if (e.target.classList.contains('e-clear-icon')) {\n this.isClearTarget = true;\n }\n };\n InPlaceEditor.prototype.scrollResizeHandler = function () {\n if (this.mode === 'Popup' && this.tipObj && !(Browser.isDevice)) {\n this.triggerEndEdit('cancel');\n }\n };\n InPlaceEditor.prototype.docClickHandler = function (e) {\n var trg = e.target;\n if (this.isClearTarget) {\n this.isClearTarget = false;\n return;\n }\n var relateRoot = closest(trg, '.' + ROOT);\n var relateTipRoot = closest(trg, '.' + ROOT_TIP);\n var relateElements = closest(trg, '.' + ELEMENTS);\n var relateRTEElements = closest(trg, '.e-rte-elements');\n if ((!isNullOrUndefined(relateRoot) && relateRoot.isEqualNode(this.element)) ||\n (!isNullOrUndefined(relateTipRoot) && this.tipObj && (relateTipRoot.id.indexOf(this.valueWrap.id) > -1)) ||\n !isNullOrUndefined(relateElements) || !isNullOrUndefined(relateRTEElements) || trg.classList.contains('e-chips-close')) {\n return;\n }\n else {\n if (this.actionOnBlur === 'Submit') {\n this.save();\n }\n else if (this.actionOnBlur === 'Cancel') {\n this.cancelHandler('cancel');\n }\n }\n };\n InPlaceEditor.prototype.changeHandler = function (e) {\n var eventArgs = {\n previousValue: this.compPrevValue === undefined ? this.value : this.compPrevValue,\n value: e.value\n };\n if (this.type === 'AutoComplete' || this.type === 'ComboBox' || this.type === 'DropDownList') {\n eventArgs.itemData = e.itemData;\n eventArgs.previousItemData = e.previousItemData;\n }\n this.compPrevValue = eventArgs.value;\n this.trigger('change', eventArgs);\n };\n /**\n * Validate current editor value.\n *\n * @returns {void}\n */\n InPlaceEditor.prototype.validate = function () {\n this.checkValidation(true, false);\n };\n /**\n * Submit the edited input value to the server.\n *\n * @returns {void}\n */\n InPlaceEditor.prototype.save = function () {\n var _this = this;\n if (!this.formEle) {\n return;\n }\n this.element.focus();\n this.editEle = select('.' + INPUT, this.formEle);\n var errEle = null;\n // eslint-disable-next-line\n errEle = select('.' + ERROR, this.editEle);\n if (!this.isTemplate) {\n this.setValue();\n }\n var endEditArgs = { cancel: false, mode: this.mode, action: 'submit' };\n this.trigger('endEdit', endEditArgs, function (args) {\n if (!args.cancel) {\n _this.checkValidation(true, true);\n }\n });\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n InPlaceEditor.prototype.destroy = function () {\n var _this = this;\n this.removeEditor(isBlazor());\n if (this.isExtModule) {\n this.notify(destroy, {});\n }\n this.unWireEvents();\n var classList = [DISABLE, RTL];\n classList.forEach(function (val) {\n removeClass([_this.element], [val]);\n });\n while (this.element.firstElementChild) {\n this.element.removeChild(this.element.firstElementChild);\n }\n if (!(isBlazor() && this.isServerRendered)) {\n _super.prototype.destroy.call(this);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the string\n */\n InPlaceEditor.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - returns the module declaration\n * @hidden\n */\n InPlaceEditor.prototype.requiredModules = function () {\n var modules = [];\n modules.push({ member: modulesList[this.type], args: [this] });\n return modules;\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returrns the string\n * @private\n */\n InPlaceEditor.prototype.getModuleName = function () {\n return 'inplaceeditor';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {InPlaceEditorModel} newProp - specifies the new property\n * @param {InPlaceEditorModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n InPlaceEditor.prototype.onPropertyChanged = function (newProp, oldProp) {\n var checkValidation = this.validationRules ? !isNullOrUndefined(this.element.querySelectorAll('.' + ERROR)) &&\n this.element.querySelectorAll('.' + ERROR).length > 0 ? false : true : true;\n if (checkValidation) {\n if (this.isEditorOpen()) {\n var editModeChanged = 'enableEditMode' in newProp;\n if ((editModeChanged && oldProp.enableEditMode && !newProp.enableEditMode) || (!editModeChanged && this.enableEditMode)) {\n this.triggerEndEdit('cancel');\n }\n else {\n this.removeEditor();\n }\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'showButtons':\n // eslint-disable-next-line\n (newProp.showButtons) ? this.appendButtons(this.formEle) : this.destroyButtons();\n break;\n case 'value':\n this.updateValue();\n // eslint-disable-next-line\n this.textOption === 'Never' ? this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)))\n : this.renderInitialValue();\n break;\n case 'emptyText':\n // eslint-disable-next-line\n this.textOption === 'Never' ? this.renderValue(this.checkValue(parseValue(this.type, this.value, this.model)))\n : this.renderInitialValue();\n break;\n case 'template':\n this.checkIsTemplate();\n break;\n case 'disabled':\n this.disable(newProp.disabled);\n break;\n case 'enableRtl':\n this.setRtl(newProp.enableRtl);\n break;\n case 'cssClass':\n this.setClass('remove', oldProp.cssClass);\n this.setClass('add', newProp.cssClass);\n break;\n case 'mode':\n this.enableEditor(this.enableEditMode);\n break;\n case 'enableEditMode':\n this.enableEditor(newProp.enableEditMode);\n break;\n case 'editableOn':\n this.unWireEditEvent(oldProp.editableOn);\n if (newProp.editableOn !== 'EditIconClick') {\n this.wireEditEvent(newProp.editableOn);\n }\n break;\n }\n }\n }\n };\n __decorate$1([\n Property('')\n ], InPlaceEditor.prototype, \"name\", void 0);\n __decorate$1([\n Property(null)\n ], InPlaceEditor.prototype, \"value\", void 0);\n __decorate$1([\n Property('')\n ], InPlaceEditor.prototype, \"template\", void 0);\n __decorate$1([\n Property(true)\n ], InPlaceEditor.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property(true)\n ], InPlaceEditor.prototype, \"enableHtmlParse\", void 0);\n __decorate$1([\n Property('')\n ], InPlaceEditor.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property('')\n ], InPlaceEditor.prototype, \"primaryKey\", void 0);\n __decorate$1([\n Property('Empty')\n ], InPlaceEditor.prototype, \"emptyText\", void 0);\n __decorate$1([\n Property('')\n ], InPlaceEditor.prototype, \"url\", void 0);\n __decorate$1([\n Property('Popup')\n ], InPlaceEditor.prototype, \"mode\", void 0);\n __decorate$1([\n Property('UrlAdaptor')\n ], InPlaceEditor.prototype, \"adaptor\", void 0);\n __decorate$1([\n Property('Text')\n ], InPlaceEditor.prototype, \"type\", void 0);\n __decorate$1([\n Property('Click')\n ], InPlaceEditor.prototype, \"editableOn\", void 0);\n __decorate$1([\n Property('Never')\n ], InPlaceEditor.prototype, \"textOption\", void 0);\n __decorate$1([\n Property('Submit')\n ], InPlaceEditor.prototype, \"actionOnBlur\", void 0);\n __decorate$1([\n Property(false)\n ], InPlaceEditor.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property(false)\n ], InPlaceEditor.prototype, \"disabled\", void 0);\n __decorate$1([\n Property(true)\n ], InPlaceEditor.prototype, \"showButtons\", void 0);\n __decorate$1([\n Property(false)\n ], InPlaceEditor.prototype, \"enableEditMode\", void 0);\n __decorate$1([\n Property(true)\n ], InPlaceEditor.prototype, \"submitOnEnter\", void 0);\n __decorate$1([\n Complex({}, PopupSettings)\n ], InPlaceEditor.prototype, \"popupSettings\", void 0);\n __decorate$1([\n Property(null)\n ], InPlaceEditor.prototype, \"model\", void 0);\n __decorate$1([\n Property({ iconCss: 'e-icons e-save-icon' })\n ], InPlaceEditor.prototype, \"saveButton\", void 0);\n __decorate$1([\n Property({ iconCss: 'e-icons e-cancel-icon' })\n ], InPlaceEditor.prototype, \"cancelButton\", void 0);\n __decorate$1([\n Property(null)\n ], InPlaceEditor.prototype, \"validationRules\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"actionBegin\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"actionSuccess\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"actionFailure\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"validating\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"beginEdit\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"endEdit\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"submitClick\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"cancelClick\", void 0);\n __decorate$1([\n Event()\n ], InPlaceEditor.prototype, \"destroyed\", void 0);\n InPlaceEditor = __decorate$1([\n NotifyPropertyChanges\n ], InPlaceEditor);\n return InPlaceEditor;\n}(Component));\n\n/**\n * Base modules\n */\n\n/**\n * The `Base` module.\n */\nvar Base = /** @__PURE__ @class */ (function () {\n function Base(parent, module) {\n this.parent = parent;\n this.module = module;\n this.addEventListener();\n }\n Base.prototype.render = function (e) {\n this.module.render(e);\n };\n Base.prototype.showPopup = function () {\n this.module.showPopup();\n };\n Base.prototype.focus = function () {\n this.module.focus();\n };\n Base.prototype.update = function (e) {\n this.module.updateValue(e);\n };\n Base.prototype.getValue = function () {\n this.module.getRenderValue();\n };\n Base.prototype.destroyComponent = function () {\n if (isNullOrUndefined(this.module.compObj)) {\n return;\n }\n this.module.compObj.destroy();\n this.module.compObj = undefined;\n };\n Base.prototype.destroy = function () {\n this.destroyComponent();\n this.removeEventListener();\n };\n Base.prototype.addEventListener = function () {\n this.parent.on(render, this.render, this);\n this.parent.on(setFocus, this.focus, this);\n this.parent.on(showPopup, this.showPopup, this);\n this.parent.on(update, this.update, this);\n this.parent.on(accessValue, this.getValue, this);\n this.parent.on(destroyModules, this.destroyComponent, this);\n this.parent.on(destroy, this.destroy, this);\n };\n Base.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(render, this.render);\n this.parent.off(setFocus, this.focus);\n this.parent.off(showPopup, this.showPopup);\n this.parent.off(update, this.update);\n this.parent.off(accessValue, this.getValue);\n this.parent.off(destroyModules, this.destroyComponent);\n this.parent.off(destroy, this.destroy);\n };\n return Base;\n}());\n\n/**\n * The `AutoComplete` module is used configure the properties of Auto complete type editor.\n */\nvar AutoComplete$1 = /** @__PURE__ @class */ (function () {\n function AutoComplete$$1(parent) {\n this.compObj = undefined;\n this.parent = parent;\n this.parent.atcModule = this;\n this.base = new Base(this.parent, this);\n }\n AutoComplete$$1.prototype.render = function (e) {\n this.compObj = new AutoComplete(this.parent.model);\n this.compObj.appendTo(e.target);\n };\n /**\n * @hidden\n * @returns {void}\n */\n AutoComplete$$1.prototype.showPopup = function () {\n this.compObj.focusIn();\n this.compObj.showPopup();\n };\n AutoComplete$$1.prototype.focus = function () {\n this.compObj.element.focus();\n };\n AutoComplete$$1.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'AutoComplete') {\n this.parent.setProperties({ value: this.compObj.value }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n /**\n * Destroys the module.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n AutoComplete$$1.prototype.destroy = function () {\n this.base.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string\n */\n AutoComplete$$1.prototype.getModuleName = function () {\n return 'auto-complete';\n };\n return AutoComplete$$1;\n}());\n\n/**\n * The `ColorPicker` module is used configure the properties of Color picker type editor.\n */\nvar ColorPicker$1 = /** @__PURE__ @class */ (function () {\n function ColorPicker$$1(parent) {\n this.compObj = undefined;\n this.parent = parent;\n this.parent.colorModule = this;\n this.base = new Base(this.parent, this);\n }\n ColorPicker$$1.prototype.render = function (e) {\n this.compObj = new ColorPicker(this.parent.model);\n this.compObj.appendTo(e.target);\n };\n ColorPicker$$1.prototype.focus = function () {\n this.compObj.element.focus();\n };\n ColorPicker$$1.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'Color') {\n this.parent.setProperties({ value: this.compObj.value }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n /**\n * Destroys the module.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ColorPicker$$1.prototype.destroy = function () {\n this.base.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - retunrs the string\n */\n ColorPicker$$1.prototype.getModuleName = function () {\n return 'color-picker';\n };\n return ColorPicker$$1;\n}());\n\n/**\n * The `ComboBox` module is used configure the properties of Combo box type editor.\n */\nvar ComboBox$1 = /** @__PURE__ @class */ (function () {\n function ComboBox$$1(parent) {\n this.compObj = undefined;\n this.parent = parent;\n this.parent.comboBoxModule = this;\n this.base = new Base(this.parent, this);\n }\n ComboBox$$1.prototype.render = function (e) {\n this.compObj = new ComboBox(this.parent.model);\n this.compObj.appendTo(e.target);\n };\n ComboBox$$1.prototype.focus = function () {\n this.compObj.element.focus();\n };\n /**\n * @hidden\n * @returns {void}\n */\n ComboBox$$1.prototype.showPopup = function () {\n this.compObj.focusIn();\n this.compObj.showPopup();\n };\n /**\n * Destroys the module.\n * @function destroy\n * @returns {void}\n * @hidden\n */\n ComboBox$$1.prototype.destroy = function () {\n this.base.destroy();\n };\n ComboBox$$1.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'ComboBox') {\n this.parent.setProperties({ value: this.compObj.value }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n /**\n * For internal use only - Get the module name.\n * @returns {string} - returns the string\n */\n ComboBox$$1.prototype.getModuleName = function () {\n return 'combo-box';\n };\n return ComboBox$$1;\n}());\n\n/**\n * The `DateRangePicker` module is used configure the properties of Date range picker type editor.\n */\nvar DateRangePicker$1 = /** @__PURE__ @class */ (function () {\n function DateRangePicker$$1(parent) {\n this.compObj = undefined;\n this.parent = parent;\n this.parent.dateRangeModule = this;\n this.base = new Base(this.parent, this);\n }\n DateRangePicker$$1.prototype.render = function (e) {\n this.compObj = new DateRangePicker(this.parent.model);\n this.compObj.appendTo(e.target);\n };\n DateRangePicker$$1.prototype.focus = function () {\n this.compObj.element.focus();\n };\n /**\n * For internal use only - Get the module name.\n * @returns {string} - returns the string\n */\n DateRangePicker$$1.prototype.getModuleName = function () {\n return 'date-range-picker';\n };\n DateRangePicker$$1.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'DateRange') {\n this.parent.setProperties({ value: this.compObj.value }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n /**\n * Destroys the module.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n DateRangePicker$$1.prototype.destroy = function () {\n this.base.destroy();\n };\n return DateRangePicker$$1;\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};\n/**\n * The `MultiSelect` module is used configure the properties of Multi select type editor.\n */\nvar MultiSelect$1 = /** @__PURE__ @class */ (function () {\n function MultiSelect$$1(parent) {\n this.isPopOpen = false;\n this.compObj = undefined;\n this.parent = parent;\n this.parent.multiSelectModule = this;\n this.base = new Base(this.parent, this);\n }\n MultiSelect$$1.prototype.render = function (e) {\n var compModel = __assign({}, this.parent.model);\n this.openEvent = compModel.open;\n this.closeEvent = compModel.close;\n compModel.open = this.openHandler.bind(this);\n compModel.close = this.closeHandler.bind(this);\n this.compObj = new MultiSelect(compModel);\n this.compObj.appendTo(e.target);\n };\n MultiSelect$$1.prototype.openHandler = function (e) {\n this.isPopOpen = true;\n if (this.openEvent) {\n this.compObj.setProperties({ open: this.openEvent }, true);\n this.compObj.trigger('open', e);\n }\n };\n MultiSelect$$1.prototype.closeHandler = function (e) {\n this.isPopOpen = false;\n if (this.closeEvent) {\n this.compObj.setProperties({ close: this.closeEvent }, true);\n this.compObj.trigger('close', e);\n }\n };\n MultiSelect$$1.prototype.focus = function () {\n if (!this.isPopOpen) {\n var evt = document.createEvent('MouseEvent');\n evt.initEvent('mousedown', true, true);\n closest(this.compObj.element, '.e-multi-select-wrapper').dispatchEvent(evt);\n }\n };\n MultiSelect$$1.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'MultiSelect') {\n this.parent.setProperties({ value: this.compObj.value }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n MultiSelect$$1.prototype.getRenderValue = function () {\n this.parent.printValue = this.compObj.text;\n };\n /**\n * Destroys the module.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n MultiSelect$$1.prototype.destroy = function () {\n this.base.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string\n */\n MultiSelect$$1.prototype.getModuleName = function () {\n return 'multi-select';\n };\n return MultiSelect$$1;\n}());\n\n/**\n * The `RTE` module is used configure the properties of RTE type editor.\n */\nvar Rte = /** @__PURE__ @class */ (function () {\n function Rte(parent) {\n this.compObj = undefined;\n RichTextEditor.Inject(HtmlEditor, MarkdownEditor, Toolbar, Link, Image, QuickToolbar, Table, FileManager);\n this.parent = parent;\n this.parent.rteModule = this;\n this.base = new Base(this.parent, this);\n }\n Rte.prototype.render = function (e) {\n this.compObj = new RichTextEditor(this.parent.model);\n this.compObj.appendTo(e.target);\n };\n Rte.prototype.focus = function () {\n this.compObj.focusIn();\n };\n Rte.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'RTE') {\n this.parent.setProperties({ value: this.getRteValue() }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n Rte.prototype.getRteValue = function () {\n var rteVal;\n if (this.compObj.editorMode === 'Markdown') {\n rteVal = this.compObj.contentModule.getEditPanel().value;\n return (rteVal === '') ? '' : rteVal;\n }\n else {\n rteVal = this.compObj.contentModule.getEditPanel().innerHTML;\n return (rteVal === '


' || rteVal === '<p><br></p>' || rteVal === '') ? '' : rteVal;\n }\n };\n Rte.prototype.refresh = function () {\n this.compObj.refresh();\n };\n /**\n * Destroys the rte module.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n Rte.prototype.destroy = function () {\n this.base.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string\n */\n Rte.prototype.getModuleName = function () {\n return 'rte';\n };\n return Rte;\n}());\n\n/**\n * The `Slider` module is used configure the properties of Slider type editor.\n */\nvar Slider$1 = /** @__PURE__ @class */ (function () {\n function Slider$$1(parent) {\n this.compObj = undefined;\n this.parent = parent;\n this.parent.sliderModule = this;\n this.base = new Base(this.parent, this);\n }\n Slider$$1.prototype.render = function (e) {\n this.compObj = new Slider(this.parent.model);\n this.compObj.appendTo(e.target);\n };\n Slider$$1.prototype.focus = function () {\n this.compObj.element.focus();\n };\n Slider$$1.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'Slider') {\n this.parent.setProperties({ value: this.compObj.value }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n Slider$$1.prototype.refresh = function () {\n this.compObj.refresh();\n };\n /**\n * Destroys the slider module.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n Slider$$1.prototype.destroy = function () {\n this.base.destroy();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string\n */\n Slider$$1.prototype.getModuleName = function () {\n return 'slider';\n };\n return Slider$$1;\n}());\n\n/**\n * The `TimePicker` module is used configure the properties of Time picker type editor.\n */\nvar TimePicker$1 = /** @__PURE__ @class */ (function () {\n function TimePicker$$1(parent) {\n this.compObj = undefined;\n this.parent = parent;\n this.parent.timeModule = this;\n this.base = new Base(this.parent, this);\n }\n TimePicker$$1.prototype.render = function (e) {\n this.compObj = new TimePicker(this.parent.model);\n this.compObj.appendTo(e.target);\n };\n TimePicker$$1.prototype.focus = function () {\n this.compObj.focusIn();\n };\n TimePicker$$1.prototype.updateValue = function (e) {\n if (this.compObj && e.type === 'Time') {\n this.parent.setProperties({ value: this.compObj.value }, true);\n this.parent.extendModelValue(this.compObj.value);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string\n */\n TimePicker$$1.prototype.getModuleName = function () {\n return 'time-picker';\n };\n /**\n * Destroys the module.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n */\n TimePicker$$1.prototype.destroy = function () {\n this.base.destroy();\n };\n return TimePicker$$1;\n}());\n\n/**\n *\n */\n\n/**\n *\n */\n\n/**\n *\n */\n\nexport { parseValue, getCompValue, encode, render, update, destroy, setFocus, accessValue, destroyModules, showPopup, PopupSettings, modulesList, localeConstant, ROOT, ROOT_TIP, VALUE_WRAPPER, VALUE, OVERLAY_ICON, TIP_TITLE, TITLE, INLINE, POPUP, WRAPPER, LOADING, FORM, CTRL_GROUP, INPUT, BUTTONS, EDITABLE_ERROR, ELEMENTS, OPEN, BTN_SAVE, BTN_CANCEL, RTE_SPIN_WRAP, CTRL_OVERLAY, DISABLE, ICONS, PRIMARY, SHOW, HIDE, RTL, ERROR, LOAD, InPlaceEditor, Base, AutoComplete$1 as AutoComplete, ColorPicker$1 as ColorPicker, ComboBox$1 as ComboBox, DateRangePicker$1 as DateRangePicker, MultiSelect$1 as MultiSelect, Rte, Slider$1 as Slider, TimePicker$1 as TimePicker };\n","import { Ajax, Animation, Base, Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, Internationalization, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getInstance, getNumericObject, getUniqueID, getValue, isNullOrUndefined, merge, onIntlChange, remove, removeClass, rippleEffect, select, selectAll, setStyleAttribute, setValue } from '@syncfusion/ej2-base';\nimport { Popup, Tooltip, createSpinner, getZindexPartial, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { Deferred, SplitButton, getModel } from '@syncfusion/ej2-splitbuttons';\n\n/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar Input;\n(function (Input) {\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton && args.element.tagName !== 'TEXTAREA') {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons) && args.element.tagName !== 'TEXTAREA') {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n if (inputValue !== '' && !isNullOrUndefined(inputValue) && inputElement.parentElement) {\n inputElement.parentElement.classList.add('e-valid-input');\n }\n else if (floatLabelType !== 'Always' && inputElement.parentElement) {\n inputElement.parentElement.classList.remove('e-valid-input');\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n updateLabelState(args.element.value, floatLabelElement, args.element);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n updateLabelState(args.element.value, floatLabelElement);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n if (!isNullOrUndefined(container) &&\n container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([container], CLASSNAMES.INPUTGROUP);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction == undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\n \n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue$$1(value, element, floatLabelType, clearButton) {\n element.value = value;\n calculateWidth(element, element.parentElement);\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue$$1;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'));\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[key];\n }\n else {\n element.setAttribute(key, attrs[key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n if (isNullOrUndefined(iconEle)) {\n container.classList.remove(CLASSNAMES.INPUTGROUP);\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[i].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[index].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[index].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[index].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n innerWrapper.appendChild(result[i]);\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n if (!container.classList.contains(CLASSNAMES.INPUTGROUP)) {\n container.classList.add(CLASSNAMES.INPUTGROUP);\n }\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @__PURE__ @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n attributes(this.hiddenInput, { 'name': this.inputName });\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n if (this.prevValue !== this.value) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === \"NumpadDecimal\" && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n // eslint-disable-next-line detect-non-literal-regexp\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === \"touchmove\") {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\n\n/**\n * NumericTextBox modules\n */\n\n/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n/**\n * MaskedTextBox base module\n */\nvar ERROR$1 = 'e-error';\nvar INPUTGROUP = 'e-input-group';\nvar FLOATINPUT = 'e-float-input';\nvar UTILMASK = 'e-utility-mask';\nvar TOPLABEL = 'e-label-top';\nvar BOTTOMLABEL = 'e-label-bottom';\n/**\n * @hidden\n * Built-in masking elements collection.\n */\nvar regularExpressions = {\n '0': '[0-9]',\n '9': '[0-9 ]',\n '#': '[0-9 +-]',\n 'L': '[A-Za-z]',\n '?': '[A-Za-z ]',\n '&': '[^\\x7f ]+',\n 'C': '[^\\x7f]+',\n 'A': '[A-Za-z0-9]',\n 'a': '[A-Za-z0-9 ]'\n};\n/**\n * Generate required masking elements to the MaskedTextBox from user mask input.\n *\n * @hidden\n */\nfunction createMask() {\n attributes(this.element, {\n 'role': 'textbox', 'autocomplete': 'off', 'autocapitalize': 'off',\n 'spellcheck': 'false', 'aria-live': 'assertive'\n });\n if (this.mask) {\n var splitMask = this.mask.split(']');\n for (var i = 0; i < splitMask.length; i++) {\n if (splitMask[i][splitMask[i].length - 1] === '\\\\') {\n splitMask[i] = splitMask[i] + ']';\n var splitInnerMask = splitMask[i].split('[');\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j][splitInnerMask[j].length - 1] === '\\\\') {\n splitInnerMask[j] = splitInnerMask[j] + '[';\n }\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n else {\n var splitInnerMask = splitMask[i].split('[');\n if (splitInnerMask.length > 1) {\n var chkSpace = false;\n for (var j = 0; j < splitInnerMask.length; j++) {\n if (splitInnerMask[j] === '\\\\') {\n this.customRegExpCollec.push('[');\n this.hiddenMask += splitInnerMask[j] + '[';\n }\n else if (splitInnerMask[j] === '') {\n chkSpace = true;\n }\n else if ((splitInnerMask[j] !== '' && chkSpace) || j === splitInnerMask.length - 1) {\n this.customRegExpCollec.push('[' + splitInnerMask[j] + ']');\n this.hiddenMask += this.promptChar;\n chkSpace = false;\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[j]);\n }\n }\n }\n else {\n pushIntoRegExpCollec.call(this, splitInnerMask[0]);\n }\n }\n }\n this.escapeMaskValue = this.hiddenMask;\n this.promptMask = this.hiddenMask.replace(/[09?LCAa#&]/g, this.promptChar);\n if (!isNullOrUndefined(this.customCharacters)) {\n for (var i = 0; i < this.promptMask.length; i++) {\n if (!isNullOrUndefined(this.customCharacters[this.promptMask[i]])) {\n // eslint-disable-next-line detect-non-literal-regexp\n this.promptMask = this.promptMask.replace(new RegExp(this.promptMask[i], 'g'), this.promptChar);\n }\n }\n }\n var escapeNumber = 0;\n if (this.hiddenMask.match(new RegExp(/\\\\/))) {\n for (var i = 0; i < this.hiddenMask.length; i++) {\n var j = 0;\n if (i >= 1) {\n j = i;\n }\n escapeNumber = this.hiddenMask.length - this.promptMask.length;\n j = j - escapeNumber;\n if ((i > 0 && this.hiddenMask[i - 1] !== '\\\\') && (this.hiddenMask[i] === '>' ||\n this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|')) {\n this.promptMask = this.promptMask.substring(0, j) +\n this.promptMask.substring((i + 1) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) +\n this.escapeMaskValue.substring((i + 1) - escapeNumber, this.escapeMaskValue.length);\n }\n if (this.hiddenMask[i] === '\\\\') {\n this.promptMask = this.promptMask.substring(0, j) + this.hiddenMask[i + 1] +\n this.promptMask.substring((i + 2) - escapeNumber, this.promptMask.length);\n this.escapeMaskValue = this.escapeMaskValue.substring(0, j) + this.escapeMaskValue[i + 1] +\n this.escapeMaskValue.substring((i + 2) - escapeNumber, this.escapeMaskValue.length);\n }\n }\n }\n else {\n this.promptMask = this.promptMask.replace(/[>|<]/g, '');\n this.escapeMaskValue = this.hiddenMask.replace(/[>|<]/g, '');\n }\n attributes(this.element, { 'aria-invalid': 'false' });\n }\n}\n/**\n * Apply mask ability with masking elements to the MaskedTextBox.\n *\n * @hidden\n */\nfunction applyMask() {\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, this.value);\n}\n/**\n * To wire required events to the MaskedTextBox.\n *\n * @hidden\n */\nfunction wireEvents() {\n EventHandler.add(this.element, 'keydown', maskInputKeyDownHandler, this);\n EventHandler.add(this.element, 'keypress', maskInputKeyPressHandler, this);\n EventHandler.add(this.element, 'keyup', maskInputKeyUpHandler, this);\n EventHandler.add(this.element, 'input', maskInputHandler, this);\n EventHandler.add(this.element, 'focus', maskInputFocusHandler, this);\n EventHandler.add(this.element, 'blur', maskInputBlurHandler, this);\n EventHandler.add(this.element, 'paste', maskInputPasteHandler, this);\n EventHandler.add(this.element, 'cut', maskInputCutHandler, this);\n EventHandler.add(this.element, 'drop', maskInputDropHandler, this);\n EventHandler.add(this.element, 'mousedown', maskInputMouseDownHandler, this);\n EventHandler.add(this.element, 'mouseup', maskInputMouseUpHandler, this);\n if (this.enabled) {\n bindClearEvent.call(this);\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', resetFormHandler, this);\n }\n }\n}\n/**\n * To unwire events attached to the MaskedTextBox.\n *\n * @hidden\n */\nfunction unwireEvents() {\n EventHandler.remove(this.element, 'keydown', maskInputKeyDownHandler);\n EventHandler.remove(this.element, 'keypress', maskInputKeyPressHandler);\n EventHandler.remove(this.element, 'keyup', maskInputKeyUpHandler);\n EventHandler.remove(this.element, 'input', maskInputHandler);\n EventHandler.remove(this.element, 'focus', maskInputFocusHandler);\n EventHandler.remove(this.element, 'blur', maskInputBlurHandler);\n EventHandler.remove(this.element, 'paste', maskInputPasteHandler);\n EventHandler.remove(this.element, 'cut', maskInputCutHandler);\n EventHandler.remove(this.element, 'mousedown', maskInputMouseDownHandler);\n EventHandler.remove(this.element, 'mouseup', maskInputMouseUpHandler);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', resetFormHandler);\n }\n}\n/**\n * To bind required events to the MaskedTextBox clearButton.\n *\n * @hidden\n */\nfunction bindClearEvent() {\n if (this.showClearButton) {\n EventHandler.add(this.inputObj.clearButton, 'mousedown touchstart', resetHandler, this);\n }\n}\nfunction resetHandler(e) {\n e.preventDefault();\n if (!this.inputObj.clearButton.classList.contains('e-clear-icon-hide') || (this.inputObj.container.classList.contains('e-static-clear'))) {\n clear.call(this, e);\n this.value = '';\n }\n}\nfunction clear(event) {\n var value = this.element.value;\n setElementValue.call(this, this.promptMask);\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n triggerMaskChangeEvent.call(this, event, value);\n this.element.setSelectionRange(0, 0);\n}\nfunction resetFormHandler() {\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n setElementValue.call(this, this.promptMask);\n }\n else {\n this.value = this.initInputValue;\n }\n}\n/**\n * To get masked value from the MaskedTextBox.\n *\n * @hidden\n */\nfunction unstrippedValue(element) {\n return element.value;\n}\n/**\n * To extract raw value from the MaskedTextBox.\n *\n * @hidden\n */\nfunction strippedValue(element, maskValues) {\n var value = '';\n var k = 0;\n var checkMask = false;\n var maskValue = (!isNullOrUndefined(maskValues)) ? maskValues : (!isNullOrUndefined(element) &&\n !isNullOrUndefined(this)) ? element.value : maskValues;\n if (maskValue !== this.promptMask) {\n for (var i = 0; i < this.customRegExpCollec.length; i++) {\n if (checkMask) {\n checkMask = false;\n }\n if (this.customRegExpCollec[k] === '>' || this.customRegExpCollec[k] === '<' ||\n this.customRegExpCollec[k] === '|' || this.customRegExpCollec[k] === '\\\\') {\n --i;\n checkMask = true;\n }\n if (!checkMask) {\n if ((maskValue[i] !== this.promptChar) && (!isNullOrUndefined(this.customRegExpCollec[k]) &&\n ((this._callPasteHandler || !isNullOrUndefined(this.regExpCollec[this.customRegExpCollec[k]])) ||\n (this.customRegExpCollec[k].length > 2 && this.customRegExpCollec[k][0] === '[' &&\n this.customRegExpCollec[k][this.customRegExpCollec[k].length - 1] === ']') ||\n (!isNullOrUndefined(this.customCharacters) &&\n (!isNullOrUndefined(this.customCharacters[this.customRegExpCollec[k]]))))) && (maskValue !== '')) {\n value += maskValue[i];\n }\n }\n ++k;\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n value = maskValue;\n }\n return value;\n}\nfunction pushIntoRegExpCollec(value) {\n for (var k = 0; k < value.length; k++) {\n this.hiddenMask += value[k];\n if (value[k] !== '\\\\') {\n this.customRegExpCollec.push(value[k]);\n }\n }\n}\nfunction maskInputMouseDownHandler() {\n this.isClicked = true;\n}\nfunction maskInputMouseUpHandler() {\n this.isClicked = false;\n}\nfunction maskInputFocusHandler(event) {\n var _this = this;\n var inputElement = this.element;\n var startIndex = 0;\n var modelValue = strippedValue.call(this, inputElement);\n var toAllowForward = false;\n var toAllowBackward = false;\n var eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n if (!this.isClicked) {\n triggerFocus.call(this, eventArgs, inputElement);\n }\n if (this.mask) {\n if (!(!(modelValue === null || modelValue === '') || this.floatLabelType === 'Always' ||\n this.placeholder === null || this.placeholder === '')) {\n inputElement.value = this.promptMask;\n }\n setTimeout(function () {\n if (inputElement.selectionStart === _this.promptMask.length ||\n inputElement.value[inputElement.selectionStart] === _this.promptChar) {\n toAllowForward = true;\n }\n else {\n for (var i = inputElement.selectionStart; i < _this.promptMask.length; i++) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowForward = false;\n break;\n }\n }\n else {\n toAllowForward = true;\n break;\n }\n }\n }\n });\n setTimeout(function () {\n var backSelectionStart = inputElement.selectionStart - 1;\n if (backSelectionStart === _this.promptMask.length - 1 ||\n inputElement.value[backSelectionStart] === _this.promptChar) {\n toAllowBackward = true;\n }\n else {\n for (var i = backSelectionStart; i >= 0; i--) {\n if (inputElement.value[i] !== _this.promptChar) {\n if ((inputElement.value[i] !== _this.promptMask[i])) {\n toAllowBackward = false;\n break;\n }\n }\n else {\n toAllowBackward = true;\n break;\n }\n }\n }\n });\n if ((this.isClicked || (this.floatLabelType !== 'Always' &&\n ((modelValue === null || modelValue === '') &&\n (this.placeholder !== null && this.placeholder !== ''))))) {\n for (startIndex = 0; startIndex < this.promptMask.length; startIndex++) {\n if (inputElement.value[startIndex] === this.promptChar) {\n setTimeout(function () {\n if (toAllowForward || toAllowBackward) {\n inputElement.selectionEnd = startIndex;\n inputElement.selectionStart = startIndex;\n }\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: _this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(_this.inputObj) ? _this.inputObj.container : _this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(_this, eventArgs, inputElement);\n }, 110);\n break;\n }\n }\n if (isNullOrUndefined(inputElement.value.match(escapeRegExp(this.promptChar)))) {\n eventArgs = {\n selectionStart: inputElement.selectionStart,\n event: event,\n value: this.value,\n maskedValue: inputElement.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n selectionEnd: inputElement.selectionEnd\n };\n triggerFocus.call(this, eventArgs, inputElement);\n }\n this.isClicked = false;\n }\n }\n}\nfunction triggerFocus(eventArgs, inputElement) {\n this.trigger('focus', eventArgs, function (eventArgs) {\n inputElement.selectionStart = eventArgs.selectionStart;\n inputElement.selectionEnd = eventArgs.selectionEnd;\n });\n}\nfunction escapeRegExp(text) {\n return !isNullOrUndefined(text) ? text.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&') : text;\n}\nfunction maskInputBlurHandler(event) {\n this.blurEventArgs = {\n event: event,\n value: this.value,\n maskedValue: this.element.value,\n container: !isNullOrUndefined(this.inputObj) ? this.inputObj.container : this.inputObj,\n };\n this.trigger('blur', this.blurEventArgs);\n if (this.mask) {\n this.isFocus = false;\n if (this.placeholder && this.element.value === this.promptMask && this.floatLabelType !== 'Always') {\n setElementValue.call(this, '');\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.floatLabelType === 'Auto' && !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL)) {\n removeClass([labelElement], TOPLABEL);\n }\n }\n }\n}\nfunction maskInputPasteHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var sIndex_1 = this.element.selectionStart;\n var eIndex_1 = this.element.selectionEnd;\n var oldValue_1 = this.element.value;\n setElementValue.call(this, '');\n this._callPasteHandler = true;\n setTimeout(function () {\n var value = _this.element.value.replace(/ /g, '');\n if (_this.redoCollec.length > 0 && _this.redoCollec[0].value === _this.element.value) {\n value = strippedValue.call(_this, _this.element);\n }\n setElementValue.call(_this, oldValue_1);\n _this.element.selectionStart = sIndex_1;\n _this.element.selectionEnd = eIndex_1;\n var i = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i], false, null);\n ++i;\n } while (i < value.length);\n _this.maskKeyPress = false;\n _this._callPasteHandler = false;\n if (_this.element.value === oldValue_1) {\n var i_1 = 0;\n _this.maskKeyPress = true;\n do {\n validateValue.call(_this, value[i_1], false, null);\n ++i_1;\n } while (i_1 < value.length);\n _this.maskKeyPress = false;\n }\n else {\n triggerMaskChangeEvent.call(_this, event, oldValue_1);\n }\n }, 1);\n }\n}\nfunction maskInputCutHandler(event) {\n var _this = this;\n if (this.mask && !this.readonly) {\n var preValue_1 = this.element.value;\n var sIndex_2 = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd });\n var value_1 = this.element.value.substring(0, sIndex_2) + this.promptMask.substring(sIndex_2, eIndex) +\n this.element.value.substring(eIndex);\n setTimeout(function () {\n setElementValue.call(_this, value_1);\n _this.element.selectionStart = _this.element.selectionEnd = sIndex_2;\n if (_this.element.value !== preValue_1) {\n triggerMaskChangeEvent.call(_this, event, null);\n }\n }, 0);\n }\n}\nfunction maskInputDropHandler(event) {\n event.preventDefault();\n}\nfunction maskInputHandler(event) {\n if (Browser.isIE === true && this.element.value === '' && this.floatLabelType === 'Never') {\n return;\n }\n var eventArgs = { ctrlKey: false, keyCode: 229 };\n extend(event, eventArgs);\n if (this.mask) {\n if (this.element.value === '') {\n this.redoCollec.unshift({\n value: this.promptMask, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (!this._callPasteHandler) {\n removeMaskInputValues.call(this, event);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var value = this.element.value.substring(startIndex - addedValues, startIndex);\n this.maskKeyPress = false;\n var i = 0;\n do {\n validateValue.call(this, value[i], event.ctrlKey, event);\n ++i;\n } while (i < value.length);\n if (this.element.value !== this.preEleVal) {\n triggerMaskChangeEvent.call(this, event, null);\n }\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (val === '') {\n setElementValue.call(this, this.promptMask);\n this.element.setSelectionRange(0, 0);\n }\n }\n}\nfunction maskInputKeyDownHandler(event) {\n if (this.mask && !this.readonly) {\n if (event.keyCode !== 229) {\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n event.preventDefault();\n }\n removeMaskInputValues.call(this, event);\n }\n var startValue = this.element.value;\n if (event.ctrlKey && (event.keyCode === 89 || event.keyCode === 90)) {\n var collec = void 0;\n if (event.keyCode === 90 && this.undoCollec.length > 0 && startValue !== this.undoCollec[this.undoCollec.length - 1].value) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.undoCollec.splice(this.undoCollec.length - 1, 1);\n }\n else if (event.keyCode === 89 && this.redoCollec.length > 0 && startValue !== this.redoCollec[0].value) {\n collec = this.redoCollec[0];\n this.undoCollec.push({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n setElementValue.call(this, collec.value);\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n this.redoCollec.splice(0, 1);\n }\n }\n }\n}\nfunction mobileRemoveFunction() {\n var collec;\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n collec = this.redoCollec[0];\n setElementValue.call(this, collec.value);\n if ((collec.startIndex - sIndex) === 1) {\n this.element.selectionStart = collec.startIndex;\n this.element.selectionEnd = collec.endIndex;\n }\n else {\n this.element.selectionStart = sIndex + 1;\n this.element.selectionEnd = eIndex + 1;\n }\n }\n else {\n setElementValue.call(this, this.promptMask);\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n }\n}\nfunction autoFillMaskInputValues(isRemove, oldEventVal, event) {\n if (event.type === 'input') {\n isRemove = false;\n oldEventVal = this.element.value;\n setElementValue.call(this, this.promptMask);\n setMaskValue.call(this, oldEventVal);\n }\n return isRemove;\n}\nfunction removeMaskInputValues(event) {\n var isRemove = false;\n var oldEventVal;\n var isDeleted = false;\n if (this.element.value.length < this.promptMask.length) {\n isRemove = true;\n oldEventVal = this.element.value;\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n mobileRemoveFunction.call(this);\n }\n if (this.element.value.length >= this.promptMask.length && event.type === 'input') {\n isRemove = autoFillMaskInputValues.call(this, isRemove, oldEventVal, event);\n }\n var initStartIndex = this.element.selectionStart;\n var initEndIndex = this.element.selectionEnd;\n var startIndex = this.element.selectionStart;\n var endIndex = this.element.selectionEnd;\n var maskValue = this.hiddenMask.replace(/[>|\\\\<]/g, '');\n var curMask = maskValue[startIndex - 1];\n var deleteEndIndex = this.element.selectionEnd;\n if (isRemove || event.keyCode === 8 || event.keyCode === 46) {\n this.undoCollec.push({ value: this.element.value, startIndex: this.element.selectionStart, endIndex: endIndex });\n var multipleDel = false;\n var preValue = this.element.value;\n if (startIndex > 0 || ((event.keyCode === 8 || event.keyCode === 46) && startIndex < this.element.value.length\n && ((this.element.selectionEnd - startIndex) !== this.element.value.length))) {\n var index = startIndex;\n if (startIndex !== endIndex) {\n startIndex = endIndex;\n if (event.keyCode === 46) {\n multipleDel = true;\n }\n }\n else if (event.keyCode === 46) {\n ++index;\n }\n else {\n --index;\n }\n for (var k = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? k > index : k < index; (event.keyCode === 8 || isRemove || multipleDel) ? k-- : k++) {\n for (var i = startIndex; (event.keyCode === 8 || isRemove || multipleDel) ? i > 0 : i < this.element.value.length; (event.keyCode === 8 || isRemove || multipleDel) ? i-- : i++) {\n var sIndex = void 0;\n if (((event.keyCode === 8 || multipleDel) && ((initStartIndex !== initEndIndex && initStartIndex !== startIndex) ||\n (initStartIndex === initEndIndex))) || isRemove) {\n curMask = maskValue[i - 1];\n sIndex = startIndex - 1;\n }\n else {\n curMask = maskValue[i];\n sIndex = startIndex;\n ++startIndex;\n }\n var oldValue = this.element.value[sIndex];\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (!isNullOrUndefined(this.customCharacters)\n && isNullOrUndefined(this.customCharacters[\"\" + curMask]))\n && ((this.hiddenMask[sIndex] !== this.promptChar && this.customRegExpCollec[sIndex][0] !== '['\n && this.customRegExpCollec[sIndex][this.customRegExpCollec[sIndex].length - 1] !== ']')))\n || (this.promptMask[sIndex] !== this.promptChar && isNullOrUndefined(this.customCharacters))) {\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n ++this.element.selectionStart;\n }\n }\n else {\n var value = this.element.value;\n var prompt_1 = this.promptChar;\n var elementValue = value.substring(0, sIndex) + prompt_1 + value.substring(startIndex, value.length);\n setElementValue.call(this, elementValue);\n event.preventDefault();\n if (event.keyCode === 46 && !multipleDel) {\n sIndex++;\n }\n this.element.selectionStart = this.element.selectionEnd = sIndex;\n isDeleted = true;\n }\n startIndex = this.element.selectionStart;\n if ((!isDeleted && event.keyCode === 8) || multipleDel || (!isDeleted && !(event.keyCode === 46))) {\n sIndex = startIndex - 1;\n }\n else {\n sIndex = startIndex;\n isDeleted = false;\n }\n oldValue = this.element.value[sIndex];\n if (((initStartIndex !== initEndIndex) && (this.element.selectionStart === initStartIndex))\n || (this.promptMask[sIndex] === this.promptChar) || ((oldValue !== this.promptMask[sIndex]) &&\n (this.promptMask[sIndex] !== this.promptChar) && !isNullOrUndefined(this.customCharacters))) {\n break;\n }\n }\n }\n }\n if (event.keyCode === 46 && multipleDel && isDeleted) {\n this.element.selectionStart = this.element.selectionEnd = deleteEndIndex;\n }\n if (this.element.selectionStart === 0 && (this.element.selectionEnd === this.element.value.length)) {\n setElementValue.call(this, this.promptMask);\n event.preventDefault();\n this.element.selectionStart = this.element.selectionEnd = startIndex;\n }\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart,\n endIndex: this.element.selectionEnd\n });\n if (this.element.value !== preValue) {\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n}\nfunction maskInputKeyPressHandler(event) {\n if (this.mask && !this.readonly) {\n var oldValue = this.element.value;\n if (!(event.ctrlKey || event.metaKey) || ((event.ctrlKey || event.metaKey) && event.code !== 'KeyA' && event.code !== 'KeyY'\n && event.code !== 'KeyZ' && event.code !== 'KeyX' && event.code !== 'KeyC' && event.code !== 'KeyV')) {\n this.maskKeyPress = true;\n var key = event.key;\n if (key === 'Spacebar') {\n key = String.fromCharCode(event.keyCode);\n }\n if (!key) {\n this.isIosInvalid = true;\n validateValue.call(this, String.fromCharCode(event.keyCode), event.ctrlKey, event);\n event.preventDefault();\n this.isIosInvalid = false;\n }\n else if (key && key.length === 1) {\n validateValue.call(this, key, event.ctrlKey, event);\n event.preventDefault();\n }\n if (event.keyCode === 32 && key === ' ' && this.promptChar === ' ') {\n this.element.selectionStart = this.element.selectionEnd = this.element.selectionStart - key.length;\n }\n }\n if (this.element.value !== oldValue) {\n triggerMaskChangeEvent.call(this, event, oldValue);\n }\n }\n}\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction triggerMaskChangeEvent(event, oldValue) {\n var prevOnChange = this.isProtectedOnChange;\n if (!isNullOrUndefined(this.changeEventArgs) && !this.isInitial) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.element.value, maskedValue: this.element.value, isInteraction: false, isInteracted: false };\n if (this.mask) {\n this.changeEventArgs.value = strippedValue.call(this, this.element);\n }\n if (!isNullOrUndefined(event)) {\n this.changeEventArgs.isInteracted = true;\n this.changeEventArgs.isInteraction = true;\n this.changeEventArgs.event = event;\n }\n this.isProtectedOnChange = true;\n this.value = this.changeEventArgs.value;\n this.isProtectedOnChange = prevOnChange;\n merge(eventArgs, this.changeEventArgs);\n /* istanbul ignore next */\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n this.preEleVal = this.element.value;\n this.prevValue = strippedValue.call(this, this.element);\n}\nfunction maskInputKeyUpHandler(event) {\n if (this.mask && !this.readonly) {\n var collec = void 0;\n if (!this.maskKeyPress && event.keyCode === 229) {\n var oldEventVal = void 0;\n if (this.element.value.length === 1) {\n this.element.value = this.element.value + this.promptMask;\n this.element.setSelectionRange(1, 1);\n }\n if (this.element.value.length > this.promptMask.length) {\n var startIndex = this.element.selectionStart;\n var addedValues = this.element.value.length - this.promptMask.length;\n var val_1 = this.element.value.substring(startIndex - addedValues, startIndex);\n if (this.undoCollec.length > 0) {\n collec = this.undoCollec[this.undoCollec.length - 1];\n var startIndex_1 = this.element.selectionStart;\n oldEventVal = collec.value;\n var oldVal = collec.value.substring(startIndex_1 - addedValues, startIndex_1);\n collec = this.redoCollec[0];\n val_1 = val_1.trim();\n var isSpace = Browser.isAndroid && val_1 === '';\n if (!isSpace && oldVal !== val_1 && collec.value.substring(startIndex_1 - addedValues, startIndex_1) !== val_1) {\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n else if (isSpace) {\n preventUnsupportedValues.call(this, event, startIndex_1 - 1, this.element.selectionEnd - 1, val_1, event.ctrlKey, false);\n }\n }\n else {\n oldEventVal = this.promptMask;\n validateValue.call(this, val_1, event.ctrlKey, event);\n }\n this.maskKeyPress = false;\n triggerMaskChangeEvent.call(this, event, oldEventVal);\n }\n }\n else {\n removeMaskError.call(this);\n }\n var val = strippedValue.call(this, this.element);\n if (!((this.element.selectionStart === 0) && (this.promptMask === this.element.value) && val === '')\n || (val === '' && this.value !== val)) {\n this.prevValue = val;\n this.value = val;\n }\n }\n else {\n triggerMaskChangeEvent.call(this, event);\n }\n if (this.element.selectionStart === 0 && this.element.selectionEnd === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var temp_1 = this.element;\n setTimeout(function () {\n temp_1.setSelectionRange(0, 0);\n }, 0);\n }\n}\nfunction mobileSwipeCheck(key) {\n if (key.length > 1 && ((this.promptMask.length + key.length) < this.element.value.length)) {\n var elementValue = this.redoCollec[0].value.substring(0, this.redoCollec[0].startIndex) + key +\n this.redoCollec[0].value.substring(this.redoCollec[0].startIndex, this.redoCollec[0].value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = this.redoCollec[0].startIndex + key.length;\n }\n this.element.selectionStart = this.element.selectionStart - key.length;\n this.element.selectionEnd = this.element.selectionEnd - key.length;\n}\nfunction mobileValidation(key) {\n if (!this.maskKeyPress) {\n mobileSwipeCheck.call(this, key);\n }\n}\nfunction validateValue(key, isCtrlKey, event) {\n mobileValidation.call(this, key);\n if (isNullOrUndefined(this) || isNullOrUndefined(key)) {\n return;\n }\n var startIndex = this.element.selectionStart;\n var initStartIndex = startIndex;\n var curMask;\n var allowText = false;\n var value = this.element.value;\n var eventOldVal;\n var prevSupport = false;\n var isEqualVal = false;\n for (var k = 0; k < key.length; k++) {\n var keyValue = key[k];\n startIndex = this.element.selectionStart;\n if (!this.maskKeyPress && initStartIndex === startIndex) {\n startIndex = startIndex + k;\n }\n if ((!this.maskKeyPress || startIndex < this.promptMask.length)) {\n for (var i = startIndex; i < this.promptMask.length; i++) {\n var maskValue = this.escapeMaskValue;\n curMask = maskValue[startIndex];\n if (this.hiddenMask[startIndex] === '\\\\' && this.hiddenMask[startIndex + 1] === key) {\n isEqualVal = true;\n }\n if ((isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && (isNullOrUndefined(this.customCharacters)\n || (!isNullOrUndefined(this.customCharacters) && isNullOrUndefined(this.customCharacters[\"\" + curMask])))\n && ((this.hiddenMask[startIndex] !== this.promptChar && this.customRegExpCollec[startIndex][0] !== '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] !== ']')))\n || ((this.promptMask[startIndex] !== this.promptChar) && isNullOrUndefined(this.customCharacters))\n || (this.promptChar === curMask && this.escapeMaskValue === this.mask)) {\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n startIndex = this.element.selectionStart;\n curMask = this.hiddenMask[startIndex];\n }\n }\n if (!isNullOrUndefined(this.customCharacters) && !isNullOrUndefined(this.customCharacters[\"\" + curMask])) {\n var customValStr = this.customCharacters[\"\" + curMask];\n var customValArr = customValStr.split(',');\n for (var i = 0; i < customValArr.length; i++) {\n // eslint-disable-next-line detect-non-literal-regexp\n if (keyValue.match(new RegExp('[' + customValArr[i] + ']'))) {\n allowText = true;\n break;\n }\n }\n // eslint-disable-next-line detect-non-literal-regexp\n }\n else if (!isNullOrUndefined(this.regExpCollec[\"\" + curMask]) && keyValue.match(new RegExp(this.regExpCollec[\"\" + curMask]))\n && this.promptMask[startIndex] === this.promptChar) {\n allowText = true;\n }\n else if (this.promptMask[startIndex] === this.promptChar && this.customRegExpCollec[startIndex][0] === '['\n && this.customRegExpCollec[startIndex][this.customRegExpCollec[startIndex].length - 1] === ']'\n // eslint-disable-next-line detect-non-literal-regexp\n && keyValue.match(new RegExp(this.customRegExpCollec[startIndex]))) {\n allowText = true;\n }\n if ((!this.maskKeyPress || startIndex < this.hiddenMask.length) && allowText) {\n if (k === 0) {\n if (this.maskKeyPress) {\n this.undoCollec.push({ value: value, startIndex: startIndex, endIndex: startIndex });\n }\n else {\n var sIndex = this.element.selectionStart;\n var eIndex = this.element.selectionEnd;\n if (this.redoCollec.length > 0) {\n eventOldVal = this.redoCollec[0].value;\n setElementValue.call(this, eventOldVal);\n this.undoCollec.push(this.redoCollec[0]);\n }\n else {\n this.undoCollec.push({ value: this.promptMask, startIndex: startIndex, endIndex: startIndex });\n eventOldVal = this.promptMask;\n setElementValue.call(this, eventOldVal);\n }\n this.element.selectionStart = sIndex;\n this.element.selectionEnd = eIndex;\n }\n }\n startIndex = this.element.selectionStart;\n applySupportedValues.call(this, event, startIndex, keyValue, eventOldVal, isEqualVal);\n prevSupport = true;\n if (k === key.length - 1) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n allowText = false;\n }\n else {\n startIndex = this.element.selectionStart;\n preventUnsupportedValues.call(this, event, startIndex, initStartIndex, key, isCtrlKey, prevSupport);\n }\n if (k === key.length - 1 && !allowText) {\n if (!Browser.isAndroid || (Browser.isAndroid && startIndex < this.promptMask.length)) {\n this.redoCollec.unshift({\n value: this.element.value, startIndex: this.element.selectionStart, endIndex: this.element.selectionEnd\n });\n }\n }\n }\n else {\n if (key.length === 1 && !isCtrlKey && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n }\n }\n}\nfunction applySupportedValues(event, startIndex, keyValue, eventOldVal, isEqualVal) {\n if (this.hiddenMask.length > this.promptMask.length) {\n keyValue = changeToLowerUpperCase.call(this, keyValue, this.element.value);\n }\n if (!isEqualVal) {\n var value = this.element.value;\n var elementValue = value.substring(0, startIndex) + keyValue + value.substring(startIndex + 1, value.length);\n setElementValue.call(this, elementValue);\n this.element.selectionStart = this.element.selectionEnd = startIndex + 1;\n }\n}\nfunction preventUnsupportedValues(event, sIdx, idx, key, ctrl, chkSupport) {\n if (!this.maskKeyPress) {\n var value = this.element.value;\n if (sIdx >= this.promptMask.length) {\n setElementValue.call(this, value.substring(0, sIdx));\n }\n else {\n if (idx === sIdx) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx + 1, value.length));\n }\n else {\n if (this.promptMask.length === this.element.value.length) {\n setElementValue.call(this, value.substring(0, sIdx) + value.substring(sIdx, value.length));\n }\n else {\n setElementValue.call(this, value.substring(0, idx) + value.substring(idx + 1, value.length));\n }\n }\n this.element.selectionStart = this.element.selectionEnd = (chkSupport ||\n this.element.value[idx] !== this.promptChar) ? sIdx : idx;\n }\n addMaskErrorClass.call(this);\n }\n if (key.length === 1 && !ctrl && !isNullOrUndefined(event)) {\n addMaskErrorClass.call(this);\n }\n}\nfunction addMaskErrorClass() {\n var _this = this;\n var parentElement = this.element.parentNode;\n var timer = 200;\n if (parentElement.classList.contains(INPUTGROUP) || parentElement.classList.contains(FLOATINPUT)) {\n addClass([parentElement], ERROR$1);\n }\n else {\n addClass([this.element], ERROR$1);\n }\n if (this.isIosInvalid === true) {\n timer = 400;\n }\n attributes(this.element, { 'aria-invalid': 'true' });\n setTimeout(function () {\n if (!_this.maskKeyPress) {\n removeMaskError.call(_this);\n }\n }, timer);\n}\nfunction removeMaskError() {\n var parentElement = this.element.parentNode;\n if (!isNullOrUndefined(parentElement)) {\n removeClass([parentElement], ERROR$1);\n }\n removeClass([this.element], ERROR$1);\n attributes(this.element, { 'aria-invalid': 'false' });\n}\n/**\n * Validates user input using masking elements '<' , '>' and '|'.\n *\n * @hidden\n */\nfunction changeToLowerUpperCase(key, value) {\n var promptMask;\n var i;\n var curVal = value;\n var caseCount = 0;\n for (i = 0; i < this.hiddenMask.length; i++) {\n if (this.hiddenMask[i] === '\\\\') {\n promptMask = curVal.substring(0, i) + '\\\\' + curVal.substring(i, curVal.length);\n }\n if (this.hiddenMask[i] === '>' || this.hiddenMask[i] === '<' || this.hiddenMask[i] === '|') {\n if (this.hiddenMask[i] !== curVal[i]) {\n promptMask = curVal.substring(0, i) + this.hiddenMask[i] + curVal.substring(i, curVal.length);\n }\n ++caseCount;\n }\n if (promptMask) {\n if (((promptMask[i] === this.promptChar) && (i > this.element.selectionStart)) ||\n (this.element.value.indexOf(this.promptChar) < 0 && (this.element.selectionStart + caseCount) === i)) {\n caseCount = 0;\n break;\n }\n curVal = promptMask;\n }\n }\n while (i >= 0 && promptMask) {\n if (i === 0 || promptMask[i - 1] !== '\\\\') {\n if (promptMask[i] === '>') {\n key = key.toUpperCase();\n break;\n }\n else if (promptMask[i] === '<') {\n key = key.toLowerCase();\n break;\n }\n else if (promptMask[i] === '|') {\n break;\n }\n }\n --i;\n }\n return key;\n}\n/**\n * To set updated values in the MaskedTextBox.\n *\n * @hidden\n */\nfunction setMaskValue(val) {\n if (this.mask && val !== undefined && (this.prevValue === undefined || this.prevValue !== val)) {\n this.maskKeyPress = true;\n setElementValue.call(this, this.promptMask);\n if (val !== '' && !(val === null && this.floatLabelType === 'Never' && this.placeholder)) {\n this.element.selectionStart = 0;\n this.element.selectionEnd = 0;\n }\n if (val !== null) {\n for (var i = 0; i < val.length; i++) {\n validateValue.call(this, val[i], false, null);\n }\n }\n var newVal = strippedValue.call(this, this.element);\n this.prevValue = newVal;\n this.value = newVal;\n triggerMaskChangeEvent.call(this, null, null);\n this.maskKeyPress = false;\n var labelElement = this.element.parentNode.querySelector('.e-float-text');\n if (this.element.value === this.promptMask && this.floatLabelType === 'Auto' && this.placeholder &&\n !isNullOrUndefined(labelElement) && labelElement.classList.contains(TOPLABEL) && !this.isFocus) {\n removeClass([labelElement], TOPLABEL);\n addClass([labelElement], BOTTOMLABEL);\n setElementValue.call(this, '');\n }\n }\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n}\n/**\n * To set updated values in the input element.\n *\n * @hidden\n */\nfunction setElementValue(val, element) {\n if (!this.isFocus && this.floatLabelType === 'Auto' && this.placeholder && isNullOrUndefined(this.value)) {\n val = '';\n }\n var value = strippedValue.call(this, (element ? element : this.element), val);\n if (value === null || value === '') {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, false);\n if (this.showClearButton) {\n this.inputObj.clearButton.classList.add('e-clear-icon-hide');\n }\n }\n else {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n }\n}\n/**\n * Provide mask support to input textbox through utility method.\n *\n * @hidden\n */\nfunction maskInput(args) {\n var inputEle = getMaskInput(args);\n applyMask.call(inputEle);\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (args.mask) {\n unwireEvents.call(inputEle);\n wireEvents.call(inputEle);\n }\n}\nfunction getMaskInput(args) {\n addClass([args.element], UTILMASK);\n var inputEle = {\n element: args.element,\n mask: args.mask,\n promptMask: '',\n hiddenMask: '',\n escapeMaskValue: '',\n promptChar: args.promptChar ? (args.promptChar.length > 1) ? args.promptChar = args.promptChar[0]\n : args.promptChar : '_',\n value: args.value ? args.value : null,\n regExpCollec: regularExpressions,\n customRegExpCollec: [],\n customCharacters: args.customCharacters,\n undoCollec: [],\n redoCollec: [],\n maskKeyPress: false,\n prevValue: ''\n };\n createMask.call(inputEle);\n return inputEle;\n}\n/**\n * Gets raw value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nfunction getVal(args) {\n return strippedValue.call(getUtilMaskEle(args), args.element);\n}\n/**\n * Gets masked value of the textbox which has been masked through utility method.\n *\n * @hidden\n */\nfunction getMaskedVal(args) {\n return unstrippedValue.call(getUtilMaskEle(args), args.element);\n}\nfunction getUtilMaskEle(args) {\n var inputEle;\n if (!isNullOrUndefined(args) && args.element.classList.contains(UTILMASK)) {\n inputEle = getMaskInput(args);\n }\n return inputEle;\n}\n/**\n * Arguments to perform undo and redo functionalities.\n *\n * @hidden\n */\nvar MaskUndo = /** @__PURE__ @class */ (function () {\n function MaskUndo() {\n }\n return MaskUndo;\n}());\n\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n\n/**\n * MaskedTextbox base modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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 ROOT$1 = 'e-control-wrapper e-mask';\nvar INPUT = 'e-input';\nvar COMPONENT$1 = 'e-maskedtextbox';\nvar CONTROL$1 = 'e-control';\nvar MASKINPUT_FOCUS = 'e-input-focus';\nvar wrapperAttr = ['title', 'style', 'class'];\n/**\n * The MaskedTextBox allows the user to enter the valid input only based on the provided mask.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MaskedTextBox = /** @__PURE__ @class */ (function (_super) {\n __extends$1(MaskedTextBox, _super);\n /**\n *\n * @param {MaskedTextBoxModel} options - Specifies the MaskedTextBox model.\n * @param {string | HTMLElement | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function MaskedTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initInputValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isClicked = false;\n _this.maskOptions = options;\n return _this;\n }\n /**\n * Gets the component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n MaskedTextBox.prototype.getModuleName = function () {\n return 'maskedtextbox';\n };\n /**\n * Initializes the event handler\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.preRender = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.regExpCollec = regularExpressions;\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n this.changeEventArgs = {};\n this.focusEventArgs = {};\n this.blurEventArgs = {};\n this.maskKeyPress = false;\n this.isFocus = false;\n this.isInitial = false;\n this.isIosInvalid = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL$1, COMPONENT$1, 'e-lib']);\n this.angularTagName = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-MASKEDTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n for (var i = 0; i < this.element.attributes.length; i++) {\n input.setAttribute(this.element.attributes[i].nodeName, this.element.attributes[i].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n if (this.element.hasAttribute('id')) {\n this.element.removeAttribute('id');\n }\n this.element.classList.remove('e-control', 'e-maskedtextbox');\n this.element.classList.add('e-mask-container');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkHtmlAttributes(false);\n if (this.formElement) {\n this.initInputValue = this.value;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Initializes the component rendering.\n *\n * @returns {void}\n * @private\n */\n MaskedTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n if (this.floatLabelType === 'Never') {\n addClass([this.element], INPUT);\n }\n this.createWrapper();\n this.updateHTMLAttrToWrapper();\n if (this.element.name === '') {\n this.element.setAttribute('name', this.element.id);\n }\n this.isInitial = true;\n this.resetMaskedTextBox();\n this.isInitial = false;\n this.setMaskPlaceholder(true, false);\n this.setWidth(this.width);\n this.preEleVal = this.element.value;\n if (!Browser.isDevice && (Browser.info.version === '11.0' || Browser.info.name === 'edge')) {\n this.element.blur();\n }\n if (Browser.isDevice && Browser.isIos) {\n this.element.blur();\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n MaskedTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n MaskedTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getValidClassList(newClass), [this.inputObj.container], this.getValidClassList(oldClass));\n };\n MaskedTextBox.prototype.getValidClassList = function (maskClassName) {\n var result = maskClassName;\n if (!isNullOrUndefined(maskClassName) && maskClassName !== '') {\n result = (maskClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n MaskedTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputObj.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var maskStyle = this.inputObj.container.getAttribute(key);\n maskStyle = !isNullOrUndefined(maskStyle) ? (maskStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputObj.container.setAttribute(key, maskStyle);\n }\n else {\n this.inputObj.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n MaskedTextBox.prototype.resetMaskedTextBox = function () {\n this.promptMask = '';\n this.hiddenMask = '';\n this.escapeMaskValue = '';\n this.customRegExpCollec = [];\n this.undoCollec = [];\n this.redoCollec = [];\n if (this.promptChar.length > 1) {\n this.promptChar = this.promptChar[0];\n }\n createMask.call(this);\n applyMask.call(this);\n if (this.mask === null || this.mask === '' && this.value !== undefined) {\n setElementValue.call(this, this.value);\n }\n var val = strippedValue.call(this, this.element);\n this.prevValue = val;\n this.value = val;\n if (!this.isInitial) {\n unwireEvents.call(this);\n }\n wireEvents.call(this);\n };\n MaskedTextBox.prototype.setMaskPlaceholder = function (setVal, dynamicPlaceholder) {\n if (dynamicPlaceholder || this.placeholder) {\n Input.setPlaceholder(this.placeholder, this.element);\n if ((this.element.value === this.promptMask && setVal && this.floatLabelType !== 'Always') ||\n this.element.value === this.promptMask && this.floatLabelType === 'Never') {\n setElementValue.call(this, '');\n }\n }\n };\n MaskedTextBox.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputObj.container.style.width = formatUnit(width);\n this.element.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n var elementWidth = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n this.inputObj.container.style.width = elementWidth;\n this.element.style.width = elementWidth;\n }\n }\n };\n MaskedTextBox.prototype.checkHtmlAttributes = function (isDynamic) {\n var attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes)\n : ['placeholder', 'disabled', 'value', 'readonly'];\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'placeholder':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['enabled'] === undefined)) || isDynamic) {\n var isEnabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: isEnabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['value'] === undefined)) || isDynamic) {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.maskOptions) || (this.maskOptions['readonly'] === undefined)) || isDynamic) {\n var isReadonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: isReadonly }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n MaskedTextBox.prototype.createWrapper = function () {\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = this.getValidClassList(this.cssClass);\n }\n this.inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('class', ROOT$1 + ' ' + this.inputObj.container.getAttribute('class'));\n };\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {MaskedTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {MaskedTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @hidden\n */\n MaskedTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n setMaskValue.call(this, this.value);\n if (this.placeholder) {\n this.setMaskPlaceholder(false, false);\n }\n break;\n case 'placeholder':\n this.setMaskPlaceholder(true, true);\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.element, this.inputObj.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element, this.floatLabelType, this.inputObj.container);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.inputObj.container]);\n break;\n case 'customCharacters':\n this.customCharacters = newProp.customCharacters;\n this.resetMaskedTextBox();\n break;\n case 'showClearButton':\n Input.setClearButton(newProp.showClearButton, this.element, this.inputObj, undefined, this.createElement);\n bindClearEvent.call(this);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputObj);\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'mask':\n {\n var strippedValue_1 = this.value;\n this.mask = newProp.mask;\n this.updateValue(strippedValue_1);\n }\n break;\n case 'promptChar': {\n if (newProp.promptChar.length > 1) {\n newProp.promptChar = newProp.promptChar[0];\n }\n if (newProp.promptChar) {\n this.promptChar = newProp.promptChar;\n }\n else {\n this.promptChar = '_';\n }\n // eslint-disable-next-line detect-non-literal-regexp\n var value = this.element.value.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n if (this.promptMask === this.element.value) {\n // eslint-disable-next-line detect-non-literal-regexp\n value = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n }\n // eslint-disable-next-line detect-non-literal-regexp\n this.promptMask = this.promptMask.replace(new RegExp('[' + oldProp.promptChar + ']', 'g'), this.promptChar);\n this.undoCollec = this.redoCollec = [];\n setElementValue.call(this, value);\n break;\n }\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n MaskedTextBox.prototype.updateValue = function (strippedVal) {\n this.resetMaskedTextBox();\n setMaskValue.call(this, strippedVal);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the value of the MaskedTextBox with the masked format.\n * By using `value` property, you can get the raw value of maskedtextbox without literals and prompt characters.\n *\n * @returns {string}\n */\n MaskedTextBox.prototype.getMaskedValue = function () {\n return unstrippedValue.call(this, this.element);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MaskedTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.inputObj.container], [MASKINPUT_FOCUS]);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n MaskedTextBox.prototype.destroy = function () {\n unwireEvents.call(this);\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n if (this.inputObj) {\n this.inputObj.container.insertAdjacentElement('afterend', this.element);\n detach(this.inputObj.container);\n }\n this.blurEventArgs = null;\n Input.destroy();\n this.changeEventArgs = null;\n this.inputObj = null;\n _super.prototype.destroy.call(this);\n };\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"width\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"placeholder\", void 0);\n __decorate$1([\n Property('Never')\n ], MaskedTextBox.prototype, \"floatLabelType\", void 0);\n __decorate$1([\n Property({})\n ], MaskedTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate$1([\n Property(true)\n ], MaskedTextBox.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(false)\n ], MaskedTextBox.prototype, \"readonly\", void 0);\n __decorate$1([\n Property(false)\n ], MaskedTextBox.prototype, \"showClearButton\", void 0);\n __decorate$1([\n Property(false)\n ], MaskedTextBox.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"mask\", void 0);\n __decorate$1([\n Property('_')\n ], MaskedTextBox.prototype, \"promptChar\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"value\", void 0);\n __decorate$1([\n Property(null)\n ], MaskedTextBox.prototype, \"customCharacters\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"destroyed\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"focus\", void 0);\n __decorate$1([\n Event()\n ], MaskedTextBox.prototype, \"blur\", void 0);\n MaskedTextBox = __decorate$1([\n NotifyPropertyChanges\n ], MaskedTextBox);\n return MaskedTextBox;\n}(Component));\n\n/**\n * MaskedTextbox modules\n */\n\n/**\n * MaskedTextbox modules\n */\n\n/**\n * Input box Component\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Configures the ticks data of the Slider.\n */\nvar TicksData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(TicksData, _super);\n function TicksData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('None')\n ], TicksData.prototype, \"placement\", void 0);\n __decorate$2([\n Property(10)\n ], TicksData.prototype, \"largeStep\", void 0);\n __decorate$2([\n Property(1)\n ], TicksData.prototype, \"smallStep\", void 0);\n __decorate$2([\n Property(false)\n ], TicksData.prototype, \"showSmallTicks\", void 0);\n __decorate$2([\n Property(null)\n ], TicksData.prototype, \"format\", void 0);\n return TicksData;\n}(ChildProperty));\n/**\n * It illustrates the color track data in slider.\n * {% codeBlock src='slider/colorrange/index.md' %}{% endcodeBlock %}\n */\nvar ColorRangeData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(ColorRangeData, _super);\n function ColorRangeData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(null)\n ], ColorRangeData.prototype, \"color\", void 0);\n __decorate$2([\n Property(null)\n ], ColorRangeData.prototype, \"start\", void 0);\n __decorate$2([\n Property(null)\n ], ColorRangeData.prototype, \"end\", void 0);\n return ColorRangeData;\n}(ChildProperty));\n/**\n * It illustrates the limit data in slider.\n * {% codeBlock src='slider/limits/index.md' %}{% endcodeBlock %}\n */\nvar LimitData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(LimitData, _super);\n function LimitData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(false)\n ], LimitData.prototype, \"enabled\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"minStart\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"minEnd\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"maxStart\", void 0);\n __decorate$2([\n Property(null)\n ], LimitData.prototype, \"maxEnd\", void 0);\n __decorate$2([\n Property(false)\n ], LimitData.prototype, \"startHandleFixed\", void 0);\n __decorate$2([\n Property(false)\n ], LimitData.prototype, \"endHandleFixed\", void 0);\n return LimitData;\n}(ChildProperty));\n/**\n * It illustrates the tooltip data in slider.\n */\nvar TooltipData = /** @__PURE__ @class */ (function (_super) {\n __extends$2(TooltipData, _super);\n function TooltipData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('')\n ], TooltipData.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property('Before')\n ], TooltipData.prototype, \"placement\", void 0);\n __decorate$2([\n Property('Focus')\n ], TooltipData.prototype, \"showOn\", void 0);\n __decorate$2([\n Property(false)\n ], TooltipData.prototype, \"isVisible\", void 0);\n __decorate$2([\n Property(null)\n ], TooltipData.prototype, \"format\", void 0);\n return TooltipData;\n}(ChildProperty));\nvar bootstrapTooltipOffset = 6;\nvar bootstrap4TooltipOffset = 3;\nvar classNames = {\n root: 'e-slider',\n rtl: 'e-rtl',\n sliderHiddenInput: 'e-slider-input',\n controlWrapper: 'e-control-wrapper',\n sliderHandle: 'e-handle',\n rangeBar: 'e-range',\n sliderButton: 'e-slider-button',\n firstButton: 'e-first-button',\n secondButton: 'e-second-button',\n scale: 'e-scale',\n tick: 'e-tick',\n large: 'e-large',\n tickValue: 'e-tick-value',\n sliderTooltip: 'e-slider-tooltip',\n sliderHover: 'e-slider-hover',\n sliderFirstHandle: 'e-handle-first',\n sliderSecondHandle: 'e-handle-second',\n sliderDisabled: 'e-disabled',\n sliderContainer: 'e-slider-container',\n horizontalTooltipBefore: 'e-slider-horizontal-before',\n horizontalTooltipAfter: 'e-slider-horizontal-after',\n verticalTooltipBefore: 'e-slider-vertical-before',\n verticalTooltipAfter: 'e-slider-vertical-after',\n materialTooltip: 'e-material-tooltip',\n materialTooltipOpen: 'e-material-tooltip-open',\n materialTooltipActive: 'e-tooltip-active',\n materialSlider: 'e-material-slider',\n sliderTrack: 'e-slider-track',\n sliderHorizantalColor: 'e-slider-horizantal-color',\n sliderVerticalColor: 'e-slider-vertical-color',\n sliderHandleFocused: 'e-handle-focused',\n verticalSlider: 'e-vertical',\n horizontalSlider: 'e-horizontal',\n sliderHandleStart: 'e-handle-start',\n sliderTooltipStart: 'e-material-tooltip-start',\n sliderTabHandle: 'e-tab-handle',\n sliderButtonIcon: 'e-button-icon',\n sliderSmallSize: 'e-small-size',\n sliderTickPosition: 'e-tick-pos',\n sliderFirstTick: 'e-first-tick',\n sliderLastTick: 'e-last-tick',\n sliderButtonClass: 'e-slider-btn',\n sliderTooltipWrapper: 'e-tooltip-wrap',\n sliderTabTrack: 'e-tab-track',\n sliderTabRange: 'e-tab-range',\n sliderActiveHandle: 'e-handle-active',\n sliderMaterialHandle: 'e-material-handle',\n sliderMaterialRange: 'e-material-range',\n sliderMaterialDefault: 'e-material-default',\n materialTooltipShow: 'e-material-tooltip-show',\n materialTooltipHide: 'e-material-tooltip-hide',\n readonly: 'e-read-only',\n limits: 'e-limits',\n limitBarDefault: 'e-limit-bar',\n limitBarFirst: 'e-limit-first',\n limitBarSecond: 'e-limit-second',\n dragHorizontal: 'e-drag-horizontal',\n dragVertical: 'e-drag-vertical'\n};\n/**\n * The Slider component allows the user to select a value or range\n * of values in-between a min and max range, by dragging the handle over the slider bar.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Slider = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Slider, _super);\n function Slider(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.horDir = 'left';\n _this.verDir = 'bottom';\n _this.transition = {\n handle: 'left .4s cubic-bezier(.25, .8, .25, 1), right .4s cubic-bezier(.25, .8, .25, 1), ' +\n 'top .4s cubic-bezier(.25, .8, .25, 1) , bottom .4s cubic-bezier(.25, .8, .25, 1)',\n rangeBar: 'all .4s cubic-bezier(.25, .8, .25, 1)'\n };\n _this.transitionOnMaterialTooltip = {\n handle: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, top 1ms ease-out',\n rangeBar: 'left 1ms ease-out, right 1ms ease-out, bottom 1ms ease-out, width 1ms ease-out, height 1ms ease-out'\n };\n _this.scaleTransform = 'transform .4s cubic-bezier(.25, .8, .25, 1)';\n _this.customAriaText = null;\n _this.drag = true;\n _this.isDragComplete = false;\n _this.initialTooltip = true;\n return _this;\n }\n Slider.prototype.preRender = function () {\n // eslint-disable-next-line\n var localeText = { incrementTitle: 'Increase', decrementTitle: 'Decrease' };\n this.l10n = new L10n('slider', localeText, this.locale);\n this.isElementFocused = false;\n this.tickElementCollection = [];\n this.tooltipFormatInfo = {};\n this.ticksFormatInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.formChecker();\n };\n Slider.prototype.formChecker = function () {\n var formElement = closest(this.element, 'form');\n if (formElement) {\n this.isForm = true;\n // this condition needs to be checked, if the slider is going to be refreshed by `refresh()`\n // then we need to revert the slider `value` back to `formResetValue` to preserve the initial value\n if (!isNullOrUndefined(this.formResetValue)) {\n this.setProperties({ 'value': this.formResetValue }, true);\n }\n this.formResetValue = this.value;\n if (this.type === 'Range' &&\n (isNullOrUndefined(this.formResetValue) || typeof (this.formResetValue) !== 'object')) {\n this.formResetValue = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n else if (isNullOrUndefined(this.formResetValue)) {\n this.formResetValue = parseFloat(formatUnit(this.min));\n }\n this.formElement = formElement;\n }\n else {\n this.isForm = false;\n }\n };\n Slider.prototype.initCultureFunc = function () {\n this.internationalization = new Internationalization(this.locale);\n };\n Slider.prototype.initCultureInfo = function () {\n this.tooltipFormatInfo.format = (!isNullOrUndefined(this.tooltip.format)) ? this.tooltip.format : null;\n this.ticksFormatInfo.format = (!isNullOrUndefined(this.ticks.format)) ? this.ticks.format : null;\n };\n Slider.prototype.formatString = function (value, formatInfo) {\n var formatValue = null;\n var formatString = null;\n if ((value || value === 0)) {\n formatValue = this.formatNumber(value);\n var numberOfDecimals = this.numberOfDecimals(value);\n formatString = this.internationalization.getNumberFormat(formatInfo)(this.makeRoundNumber(value, numberOfDecimals));\n }\n return { elementVal: formatValue, formatString: formatString };\n };\n Slider.prototype.formatNumber = function (value) {\n var numberOfDecimals = this.numberOfDecimals(value);\n return this.internationalization.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(value);\n };\n Slider.prototype.numberOfDecimals = function (value) {\n var decimalPart = value.toString().split('.')[1];\n var numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n return numberOfDecimals;\n };\n Slider.prototype.makeRoundNumber = function (value, precision) {\n var decimals = precision || 0;\n return Number(value.toFixed(decimals));\n };\n Slider.prototype.fractionalToInteger = function (value) {\n value = (this.numberOfDecimals(value) === 0) ? Number(value).toFixed(this.noOfDecimals) : value;\n var tens = 1;\n for (var i = 0; i < this.noOfDecimals; i++) {\n tens *= 10;\n }\n value = Number((value * tens).toFixed(0));\n return value;\n };\n /**\n * To Initialize the control rendering\n * @private\n */\n Slider.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.initRender();\n this.wireEvents();\n this.setZindex();\n this.renderComplete();\n if (this.element.tagName === 'EJS-SLIDER') {\n if (this.getTheme(this.sliderContainer) == \"none\") {\n setTimeout(function () {\n _this.refresh();\n }, 0);\n }\n }\n };\n Slider.prototype.initialize = function () {\n addClass([this.element], classNames.root);\n this.setCSSClass();\n };\n Slider.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.sliderContainer.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.sliderContainer.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n Slider.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Slider.prototype.setEnabled = function () {\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.add(classNames.sliderDisabled);\n }\n this.unwireEvents();\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n if (this.tooltip.isVisible && this.tooltipElement && this.tooltip.showOn === 'Always') {\n this.tooltipElement.classList.remove(classNames.sliderDisabled);\n }\n this.wireEvents();\n }\n };\n Slider.prototype.getTheme = function (container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n };\n /**\n * Initialize the rendering\n * @private\n */\n Slider.prototype.initRender = function () {\n this.sliderContainer = this.createElement('div', { className: classNames.sliderContainer + ' ' + classNames.controlWrapper });\n this.element.parentNode.insertBefore(this.sliderContainer, this.element);\n this.sliderContainer.appendChild(this.element);\n this.sliderTrack = this.createElement('div', { className: classNames.sliderTrack });\n this.element.appendChild(this.sliderTrack);\n this.setElementWidth(this.width);\n this.element.tabIndex = -1;\n this.getThemeInitialization();\n this.setHandler();\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setOrientClass();\n this.hiddenInput = (this.createElement('input', {\n attrs: {\n type: 'hidden', value: (isNullOrUndefined(this.value) ? this.min.toString() : this.value.toString()),\n name: this.element.getAttribute('name') || this.element.getAttribute('id') ||\n '_' + (Math.random() * 1000).toFixed(0) + 'slider', class: classNames.sliderHiddenInput\n }\n }));\n this.hiddenInput.tabIndex = -1;\n this.sliderContainer.appendChild(this.hiddenInput);\n if (this.showButtons) {\n this.setButtons();\n }\n this.setEnableRTL();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n else {\n this.value = isNullOrUndefined(this.value) ? parseFloat(formatUnit(this.min.toString())) : this.value;\n }\n this.previousVal = this.type !== 'Range' ? this.checkHandleValue(parseFloat(formatUnit(this.value.toString()))) :\n [this.checkHandleValue(parseFloat(formatUnit(this.value[0].toString()))),\n this.checkHandleValue(parseFloat(formatUnit(this.value[1].toString())))];\n this.previousChanged = this.previousVal;\n if (!isNullOrUndefined(this.element.hasAttribute('name'))) {\n this.element.removeAttribute('name');\n }\n this.setValue();\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n }\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n }\n if (!this.enabled) {\n addClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n }\n if (this.readonly) {\n addClass([this.sliderContainer], [classNames.readonly]);\n }\n else {\n removeClass([this.sliderContainer], [classNames.readonly]);\n }\n };\n Slider.prototype.getThemeInitialization = function () {\n this.isMaterial = this.getTheme(this.sliderContainer) === 'material'\n || this.getTheme(this.sliderContainer) === 'material-dark';\n this.isBootstrap = this.getTheme(this.sliderContainer) === 'bootstrap'\n || this.getTheme(this.sliderContainer) === 'bootstrap-dark';\n this.isBootstrap4 = this.getTheme(this.sliderContainer) === 'bootstrap4';\n this.isTailwind = this.getTheme(this.sliderContainer) === 'tailwind' || this.getTheme(this.sliderContainer) === 'tailwind-dark';\n this.isBootstrap5 = this.getTheme(this.sliderContainer) === 'bootstrap5';\n this.isFluent = this.getTheme(this.sliderContainer) === 'FluentUI';\n this.isMaterialTooltip = this.isMaterial && this.type !== 'Range' && this.tooltip.isVisible;\n };\n Slider.prototype.createRangeBar = function () {\n if (this.type !== 'Default') {\n this.rangeBar = (this.createElement('div', { attrs: { class: classNames.rangeBar } }));\n this.element.appendChild(this.rangeBar);\n if (this.drag && this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n this.rangeBar.classList.add(classNames.dragHorizontal);\n }\n else {\n this.rangeBar.classList.add(classNames.dragVertical);\n }\n }\n }\n };\n Slider.prototype.createLimitBar = function () {\n var firstElementClassName = this.type !== 'Range' ? classNames.limitBarDefault :\n classNames.limitBarFirst;\n firstElementClassName += ' ' + classNames.limits;\n this.limitBarFirst = (this.createElement('div', {\n attrs: { class: firstElementClassName }\n }));\n this.element.appendChild(this.limitBarFirst);\n if (this.type === 'Range') {\n this.limitBarSecond = (this.createElement('div', {\n attrs: {\n class: classNames.limitBarSecond + ' ' + classNames.limits\n }\n }));\n this.element.appendChild(this.limitBarSecond);\n }\n };\n Slider.prototype.setOrientClass = function () {\n if (this.orientation !== 'Vertical') {\n this.sliderContainer.classList.remove(classNames.verticalSlider);\n this.sliderContainer.classList.add(classNames.horizontalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'horizontal');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'horizontal');\n }\n }\n else {\n this.sliderContainer.classList.remove(classNames.horizontalSlider);\n this.sliderContainer.classList.add(classNames.verticalSlider);\n this.firstHandle.setAttribute('aria-orientation', 'vertical');\n if (this.type === 'Range') {\n this.secondHandle.setAttribute('aria-orientation', 'vertical');\n }\n }\n };\n Slider.prototype.setAriaAttributes = function (element) {\n var _this = this;\n var min = this.min;\n var max = this.max;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n min = this.customValues[0];\n max = this.customValues[this.customValues.length - 1];\n }\n if (this.type !== 'Range') {\n attributes(element, {\n 'aria-valuemin': min.toString(), 'aria-valuemax': max.toString()\n });\n }\n else {\n var range = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n [[min.toString(), (this.customValues[this.value[1]]).toString()],\n [(this.customValues[this.value[0]]).toString(), max.toString()]] :\n [[min.toString(), this.value[1].toString()], [this.value[0].toString(), max.toString()]];\n range.forEach(function (range, index) {\n var element = index === 0 ? _this.firstHandle : _this.secondHandle;\n if (element) {\n attributes(element, {\n 'aria-valuemin': range[0], 'aria-valuemax': range[1]\n });\n }\n });\n }\n };\n Slider.prototype.createSecondHandle = function () {\n this.secondHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.secondHandle.classList.add(classNames.sliderSecondHandle);\n this.element.appendChild(this.secondHandle);\n };\n Slider.prototype.createFirstHandle = function () {\n this.firstHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle, 'role': 'slider', tabIndex: '0', 'aria-label': 'slider'\n }\n });\n this.firstHandle.classList.add(classNames.sliderFirstHandle);\n this.element.appendChild(this.firstHandle);\n if (this.isMaterialTooltip) {\n this.materialHandle = this.createElement('div', {\n attrs: {\n class: classNames.sliderHandle + ' ' +\n classNames.sliderMaterialHandle\n }\n });\n this.element.appendChild(this.materialHandle);\n }\n };\n Slider.prototype.wireFirstHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.firstHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.firstHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.firstHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.firstHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.firstHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.firstHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.firstHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.wireSecondHandleEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.secondHandle, 'mousedown touchstart', this.handleFocus, this);\n EventHandler.add(this.secondHandle, 'transitionend', this.transitionEnd, this);\n EventHandler.add(this.secondHandle, 'mouseenter touchenter', this.handleOver, this);\n EventHandler.add(this.secondHandle, 'mouseleave touchend', this.handleLeave, this);\n }\n else {\n EventHandler.remove(this.secondHandle, 'mousedown touchstart', this.handleFocus);\n EventHandler.remove(this.secondHandle, 'transitionend', this.transitionEnd);\n EventHandler.remove(this.secondHandle, 'mouseenter touchenter', this.handleOver);\n EventHandler.remove(this.secondHandle, 'mouseleave touchend', this.handleLeave);\n }\n };\n Slider.prototype.handleStart = function () {\n if (this.type !== 'Range') {\n this.firstHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.isMaterialTooltip) {\n this.materialHandle.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderHandleStart);\n if (this.tooltipElement) {\n this.tooltipElement.classList[this.handlePos1 === 0 ? 'add' : 'remove'](classNames.sliderTooltipStart);\n }\n }\n }\n };\n Slider.prototype.transitionEnd = function (e) {\n if (e.propertyName !== 'transform') {\n this.handleStart();\n if (!this.enableAnimation) {\n this.getHandle().style.transition = 'none';\n }\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.isMaterial && this.tooltip.isVisible && this.type === 'Default') {\n this.tooltipElement.style.transition = this.transition.handle;\n }\n this.tooltipToggle(this.getHandle());\n this.closeTooltip();\n }\n };\n Slider.prototype.handleFocusOut = function () {\n if (this.firstHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.firstHandle.classList.remove(classNames.sliderHandleFocused);\n }\n if (this.type === 'Range') {\n if (this.secondHandle.classList.contains(classNames.sliderHandleFocused)) {\n this.secondHandle.classList.remove(classNames.sliderHandleFocused);\n }\n }\n };\n Slider.prototype.handleFocus = function (e) {\n this.focusSliderElement();\n this.sliderBarClick(e);\n if (e.currentTarget === this.firstHandle) {\n this.firstHandle.classList.add(classNames.sliderHandleFocused);\n this.firstHandle.classList.add(classNames.sliderTabHandle);\n }\n else {\n this.secondHandle.classList.add(classNames.sliderHandleFocused);\n this.secondHandle.classList.add(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.handleOver = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover') {\n this.tooltipToggle(e.currentTarget);\n }\n if (this.type === 'Default') {\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.handleLeave = function (e) {\n if (this.tooltip.isVisible && this.tooltip.showOn === 'Hover' &&\n !e.currentTarget.classList.contains(classNames.sliderHandleFocused) &&\n !e.currentTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeTooltip();\n }\n };\n Slider.prototype.setHandler = function () {\n if (this.min > this.max) {\n this.min = this.max;\n }\n this.createFirstHandle();\n if (this.type === 'Range') {\n this.createSecondHandle();\n }\n };\n Slider.prototype.setEnableRTL = function () {\n this.enableRtl && this.orientation !== 'Vertical' ? addClass([this.sliderContainer], classNames.rtl) :\n removeClass([this.sliderContainer], classNames.rtl);\n var preDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (this.enableRtl) {\n this.horDir = 'right';\n this.verDir = 'bottom';\n }\n else {\n this.horDir = 'left';\n this.verDir = 'bottom';\n }\n var currDir = (this.orientation !== 'Vertical') ? this.horDir : this.verDir;\n if (preDir !== currDir) {\n if (this.orientation === 'Horizontal') {\n setStyleAttribute(this.firstHandle, { 'right': '', 'left': 'auto' });\n if (this.type === 'Range') {\n setStyleAttribute(this.secondHandle, { 'top': '', 'left': 'auto' });\n }\n }\n }\n this.setBarColor();\n };\n Slider.prototype.tooltipValue = function () {\n var _this = this;\n var text;\n var args = {\n value: this.value,\n text: ''\n };\n if (this.initialTooltip) {\n this.initialTooltip = false;\n this.setTooltipContent();\n args.text = text = this.tooltipObj.content;\n this.trigger('tooltipChange', args, function (observedArgs) {\n _this.addTooltipClass(observedArgs.text);\n if (text !== observedArgs.text) {\n _this.customAriaText = observedArgs.text;\n _this.tooltipObj.content = observedArgs.text;\n _this.setAriaAttrValue(_this.firstHandle);\n if (_this.type === 'Range') {\n _this.setAriaAttrValue(_this.secondHandle);\n }\n }\n });\n if (this.isMaterialTooltip) {\n this.setPreviousVal('change', this.value);\n }\n }\n };\n Slider.prototype.setTooltipContent = function () {\n var content;\n content = this.formatContent(this.tooltipFormatInfo, false);\n this.tooltipObj.content = content;\n };\n Slider.prototype.formatContent = function (formatInfo, ariaContent) {\n var content = '';\n var handle1 = this.handleVal1;\n var handle2 = this.handleVal2;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n handle1 = this.customValues[this.handleVal1];\n handle2 = this.customValues[this.handleVal2];\n }\n if (!ariaContent) {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle2, formatInfo)\n .formatString + ' - ' + this.formatString(handle1, formatInfo).formatString) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(formatInfo.format)) ? (this.formatString(handle1, formatInfo)\n .formatString + ' - ' + this.formatString(handle2, formatInfo).formatString) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(formatInfo.format)) ?\n this.formatString(handle1, formatInfo).formatString : handle1.toString();\n }\n }\n return content;\n }\n else {\n if (this.type === 'Range') {\n if (this.enableRtl && this.orientation !== 'Vertical') {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle2, formatInfo).elementVal + ' - ' +\n this.formatString(handle1, formatInfo).elementVal) :\n (handle2.toString() + ' - ' + handle1.toString());\n }\n else {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n (this.formatString(handle1, formatInfo).elementVal + ' - ' +\n this.formatString(handle2, formatInfo).elementVal) :\n (handle1.toString() + ' - ' + handle2.toString());\n }\n }\n else {\n if (!isNullOrUndefined(handle1)) {\n content = (!isNullOrUndefined(this.tooltip) && !isNullOrUndefined(this.tooltip.format)) ?\n this.formatString(handle1, formatInfo).elementVal : handle1.toString();\n }\n }\n return content;\n }\n };\n Slider.prototype.addTooltipClass = function (content) {\n if (this.isMaterialTooltip) {\n var count = content.toString().length;\n if (!this.tooltipElement) {\n var cssClass = count > 4 ? classNames.sliderMaterialRange : classNames.sliderMaterialDefault;\n this.tooltipObj.cssClass = classNames.sliderTooltip + ' ' + cssClass;\n }\n else {\n var cssClass = count > 4 ?\n { oldCss: classNames.sliderMaterialDefault, newCss: classNames.sliderMaterialRange } :\n { oldCss: classNames.sliderMaterialRange, newCss: classNames.sliderMaterialDefault };\n this.tooltipElement.classList.remove(cssClass.oldCss);\n if (!this.tooltipElement.classList.contains(cssClass.newCss)) {\n this.tooltipElement.classList.add(cssClass.newCss);\n this.tooltipElement.style.transform = count > 4 ? 'scale(1)' :\n this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n }\n };\n Slider.prototype.tooltipPlacement = function () {\n return this.orientation === 'Horizontal' ? (this.tooltip.placement === 'Before' ? 'TopCenter' : 'BottomCenter') :\n (this.tooltip.placement === 'Before' ? 'LeftCenter' : 'RightCenter');\n };\n Slider.prototype.tooltipBeforeOpen = function (args) {\n this.tooltipElement = args.element;\n if (this.tooltip.cssClass) {\n addClass([this.tooltipElement], this.tooltip.cssClass.split(' ').filter(function (css) { return css; }));\n }\n args.target.removeAttribute('aria-describedby');\n if (this.isMaterialTooltip) {\n this.tooltipElement.firstElementChild.classList.add(classNames.materialTooltipHide);\n this.handleStart();\n this.setTooltipTransform();\n }\n };\n Slider.prototype.tooltipCollision = function (position) {\n if (this.isBootstrap || this.isBootstrap4 || (this.isMaterial && !this.isMaterialTooltip)) {\n var tooltipOffsetValue = this.isBootstrap4 ? bootstrap4TooltipOffset : bootstrapTooltipOffset;\n switch (position) {\n case 'TopCenter':\n this.tooltipObj.setProperties({ 'offsetY': -(tooltipOffsetValue) }, false);\n break;\n case 'BottomCenter':\n this.tooltipObj.setProperties({ 'offsetY': tooltipOffsetValue }, false);\n break;\n case 'LeftCenter':\n this.tooltipObj.setProperties({ 'offsetX': -(tooltipOffsetValue) }, false);\n break;\n case 'RightCenter':\n this.tooltipObj.setProperties({ 'offsetX': tooltipOffsetValue }, false);\n break;\n }\n }\n };\n Slider.prototype.materialTooltipEventCallBack = function (event) {\n this.sliderBarClick(event);\n EventHandler.add(document, 'mousemove touchmove', this.sliderBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.sliderBarUp, this);\n };\n Slider.prototype.wireMaterialTooltipEvent = function (destroy) {\n if (this.isMaterialTooltip) {\n if (!destroy) {\n EventHandler.add(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack, this);\n }\n else {\n EventHandler.remove(this.tooltipElement, 'mousedown touchstart', this.materialTooltipEventCallBack);\n }\n }\n };\n Slider.prototype.tooltipPositionCalculation = function (position) {\n var cssClass;\n switch (position) {\n case 'TopCenter':\n cssClass = classNames.horizontalTooltipBefore;\n break;\n case 'BottomCenter':\n cssClass = classNames.horizontalTooltipAfter;\n break;\n case 'LeftCenter':\n cssClass = classNames.verticalTooltipBefore;\n break;\n case 'RightCenter':\n cssClass = classNames.verticalTooltipAfter;\n break;\n }\n return cssClass;\n };\n Slider.prototype.getTooltipTransformProperties = function (className) {\n var transformProperties;\n if (this.tooltipElement) {\n var position = this.orientation === 'Horizontal' ?\n ((this.tooltipElement.clientHeight + 14) - (this.tooltipElement.clientHeight / 2)) :\n ((this.tooltipElement.clientWidth + 14) - (this.tooltipElement.clientWidth / 2));\n transformProperties = this.orientation === 'Horizontal' ?\n (className === classNames.horizontalTooltipBefore ? { rotate: 'rotate(45deg)', translate: \"translateY(\" + position + \"px)\" } :\n { rotate: 'rotate(225deg)', translate: \"translateY(\" + -(position) + \"px)\" }) :\n (className === classNames.verticalTooltipBefore ? { rotate: 'rotate(-45deg)', translate: \"translateX(\" + position + \"px)\" } :\n { rotate: 'rotate(-225deg)', translate: \"translateX(\" + (-position) + \"px)\" });\n }\n return transformProperties;\n };\n Slider.prototype.openMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n this.refreshTooltip(this.firstHandle);\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n tooltipContentElement.classList.remove(classNames.materialTooltipHide);\n tooltipContentElement.classList.add(classNames.materialTooltipShow);\n this.firstHandle.style.cursor = 'default';\n this.tooltipElement.style.transition = this.scaleTransform;\n this.tooltipElement.classList.add(classNames.materialTooltipOpen);\n this.materialHandle.style.transform = 'scale(0)';\n if (tooltipContentElement.innerText.length > 4) {\n this.tooltipElement.style.transform = 'scale(1)';\n }\n else {\n this.tooltipElement.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n if (this.type === 'Default') {\n setTimeout(function () { _this.tooltipElement.style.transition = _this.transition.handle; }, 2500);\n }\n else {\n setTimeout(function () { _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n }\n };\n Slider.prototype.closeMaterialTooltip = function () {\n var _this = this;\n if (this.isMaterialTooltip) {\n var tooltipContentElement = this.tooltipElement.firstElementChild;\n this.tooltipElement.style.transition = this.scaleTransform;\n tooltipContentElement.classList.remove(classNames.materialTooltipShow);\n tooltipContentElement.classList.add(classNames.materialTooltipHide);\n this.firstHandle.style.cursor = '-webkit-grab';\n this.firstHandle.style.cursor = 'grab';\n if (this.materialHandle) {\n this.materialHandle.style.transform = 'scale(1)';\n }\n this.tooltipElement.classList.remove(classNames.materialTooltipOpen);\n this.setTooltipTransform();\n this.tooltipTarget = undefined;\n setTimeout(function () { _this.tooltipElement.style.transition = 'none'; }, 2500);\n }\n };\n Slider.prototype.checkTooltipPosition = function (args) {\n var tooltipClass = this.tooltipPositionCalculation(args.collidedPosition);\n if (this.tooltipCollidedPosition === undefined ||\n this.tooltipCollidedPosition !== args.collidedPosition || !args.element.classList.contains(tooltipClass)) {\n if (this.isMaterialTooltip) {\n if (tooltipClass !== undefined) {\n args.element.classList.remove(this.previousTooltipClass);\n args.element.classList.add(tooltipClass);\n this.previousTooltipClass = tooltipClass;\n }\n if (args.element.style.transform && args.element.classList.contains(classNames.materialTooltipOpen) &&\n args.element.firstElementChild.innerText.length <= 4) {\n args.element.style.transform = this.getTooltipTransformProperties(this.previousTooltipClass).rotate;\n }\n }\n this.tooltipCollidedPosition = args.collidedPosition;\n }\n if (this.isMaterialTooltip && this.tooltipElement && this.tooltipElement.style.transform.indexOf('translate') !== -1) {\n this.setTooltipTransform();\n }\n };\n Slider.prototype.setTooltipTransform = function () {\n var transformProperties = this.getTooltipTransformProperties(this.previousTooltipClass);\n if (this.tooltipElement.firstElementChild.innerText.length > 4) {\n this.tooltipElement.style.transform = transformProperties.translate + \" scale(0.01)\";\n }\n else {\n this.tooltipElement.style.transform = transformProperties.translate + \" \" + transformProperties.rotate + \" scale(0.01)\";\n }\n };\n Slider.prototype.renderTooltip = function () {\n this.tooltipObj = new Tooltip({\n showTipPointer: this.isBootstrap || this.isMaterial || this.isBootstrap4 || this.isTailwind || this.isBootstrap5 || this.isFluent,\n cssClass: classNames.sliderTooltip,\n height: this.isMaterial ? 30 : 'auto',\n animation: { open: { effect: 'None' }, close: { effect: 'FadeOut', duration: 500 } },\n opensOn: 'Custom',\n beforeOpen: this.tooltipBeforeOpen.bind(this),\n beforeCollision: this.checkTooltipPosition.bind(this),\n beforeClose: this.tooltipBeforeClose.bind(this),\n enableHtmlSanitizer: this.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.firstHandle);\n this.initializeTooltipProps();\n };\n Slider.prototype.initializeTooltipProps = function () {\n var tooltipShowOn = (this.tooltip.showOn === 'Auto' ? 'Hover' : this.tooltip.showOn);\n this.setProperties({ tooltip: { showOn: tooltipShowOn } }, true);\n this.tooltipObj.position = this.tooltipPlacement();\n this.tooltipCollision(this.tooltipObj.position);\n [this.firstHandle, this.rangeBar, this.secondHandle].forEach(function (handle) {\n if (!isNullOrUndefined(handle)) {\n handle.style.transition = 'none';\n }\n });\n if (this.isMaterialTooltip) {\n this.sliderContainer.classList.add(classNames.materialSlider);\n this.tooltipValue();\n this.tooltipObj.animation.close.effect = 'None';\n // eslint-disable-next-line security/detect-non-literal-fs-filename -- Safe as no value holds user input\n this.tooltipObj.open(this.firstHandle);\n }\n };\n Slider.prototype.tooltipBeforeClose = function () {\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n };\n Slider.prototype.setButtons = function () {\n this.firstBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.firstButton });\n this.firstBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.firstBtn.querySelector('span').classList.add('e-icons');\n }\n this.firstBtn.tabIndex = -1;\n this.secondBtn = this.createElement('div', { className: classNames.sliderButton + ' ' + classNames.secondButton });\n this.secondBtn.appendChild(this.createElement('span', { className: classNames.sliderButtonIcon }));\n if (this.isTailwind) {\n this.secondBtn.querySelector('span').classList.add('e-icons');\n }\n this.secondBtn.tabIndex = -1;\n this.sliderContainer.classList.add(classNames.sliderButtonClass);\n this.sliderContainer.appendChild(this.firstBtn);\n this.sliderContainer.appendChild(this.secondBtn);\n this.sliderContainer.appendChild(this.element);\n this.buttonTitle();\n };\n Slider.prototype.buttonTitle = function () {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n this.l10n.setLocale(this.locale);\n var decrementTitle = this.l10n.getConstant('decrementTitle');\n var incrementTitle = this.l10n.getConstant('incrementTitle');\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': decrementTitle, title: decrementTitle });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': incrementTitle, title: incrementTitle });\n };\n Slider.prototype.buttonFocusOut = function () {\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n }\n };\n Slider.prototype.repeatButton = function (args) {\n var hVal = this.handleValueUpdate();\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var value;\n if (args.target.parentElement.classList.contains(classNames.firstButton)\n || args.target.classList.contains(classNames.firstButton)) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if (args.target.parentElement.classList.contains(classNames.secondButton)\n || (args.target.classList.contains(classNames.secondButton))) {\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n if (value >= this.min && value <= this.max) {\n this.changeHandleValue(value);\n this.tooltipToggle(this.getHandle());\n }\n };\n Slider.prototype.repeatHandlerMouse = function (args) {\n args.preventDefault();\n if (args.type === ('mousedown') || args.type === ('touchstart')) {\n this.buttonClick(args);\n this.repeatInterval = setInterval(this.repeatButton.bind(this), 180, args);\n }\n };\n Slider.prototype.materialChange = function () {\n if (!this.getHandle().classList.contains('e-large-thumb-size')) {\n this.getHandle().classList.add('e-large-thumb-size');\n }\n };\n Slider.prototype.focusHandle = function () {\n if (!this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.getHandle().classList.add(classNames.sliderTabHandle);\n }\n };\n Slider.prototype.repeatHandlerUp = function (e) {\n this.changeEvent('changed', e);\n this.closeTooltip();\n clearInterval(this.repeatInterval);\n this.getHandle().focus();\n };\n Slider.prototype.customTickCounter = function (bigNum) {\n var tickCount = 4;\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n if (bigNum > 4) {\n tickCount = 3;\n }\n if (bigNum > 7) {\n tickCount = 2;\n }\n if (bigNum > 14) {\n tickCount = 1;\n }\n if (bigNum > 28) {\n tickCount = 0;\n }\n }\n return tickCount;\n };\n // tslint:disable-next-line:max-func-body-length\n Slider.prototype.renderScale = function () {\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n this.noOfDecimals = this.numberOfDecimals(this.step);\n this.ul = this.createElement('ul', {\n className: classNames.scale + ' ' + 'e-' + orien + '-scale ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n this.ul.style.zIndex = '-1';\n if (Browser.isAndroid && orien === 'h') {\n this.ul.classList.add(classNames.sliderTickPosition);\n }\n var smallStep = this.ticks.smallStep;\n if (!this.ticks.showSmallTicks) {\n this.ticks.largeStep > 0 ? (smallStep = this.ticks.largeStep) :\n (smallStep = (parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n }\n else if (smallStep <= 0) {\n smallStep = parseFloat(formatUnit(this.step));\n }\n var min = this.fractionalToInteger(this.min);\n var max = this.fractionalToInteger(this.max);\n var steps = this.fractionalToInteger(smallStep);\n var bigNum = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 && this.customValues.length - 1;\n var customStep = this.customTickCounter(bigNum);\n var count = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n (bigNum * customStep) + bigNum : Math.abs((max - min) / steps);\n this.element.appendChild(this.ul);\n var li;\n var start = parseFloat(this.min.toString());\n if (orien === 'v') {\n start = parseFloat(this.max.toString());\n }\n var left = 0;\n var islargeTick;\n var tickWidth = 100 / count;\n if (tickWidth === Infinity) {\n tickWidth = 5;\n }\n for (var i = 0, y = !isNullOrUndefined(this.customValues) && this.customValues.length > 0 ?\n this.customValues.length - 1 : 0, k = 0; i <= count; i++) {\n li = (this.createElement('li', {\n attrs: {\n class: classNames.tick, role: 'presentation', tabIndex: '-1',\n 'aria-hidden': 'true'\n }\n }));\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n islargeTick = i % (customStep + 1) === 0;\n if (islargeTick) {\n if (orien === 'h') {\n start = this.customValues[k];\n k++;\n }\n else {\n start = this.customValues[y];\n y--;\n }\n li.setAttribute('title', start.toString());\n }\n }\n else {\n li.setAttribute('title', start.toString());\n if (this.numberOfDecimals(this.max) === 0 && this.numberOfDecimals(this.min) === 0 &&\n this.numberOfDecimals(this.step) === 0) {\n if (orien === 'h') {\n islargeTick = ((start - parseFloat(this.min.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(start - parseFloat(this.max.toString())) % this.ticks.largeStep === 0) ? true : false;\n }\n }\n else {\n var largestep = this.fractionalToInteger(this.ticks.largeStep);\n var startValue = this.fractionalToInteger(start);\n if (orien === 'h') {\n islargeTick = ((startValue - min) % largestep === 0) ? true : false;\n }\n else {\n islargeTick = (Math.abs(startValue - parseFloat(max.toString())) % largestep === 0) ? true : false;\n }\n }\n }\n if (islargeTick) {\n li.classList.add(classNames.large);\n }\n (orien === 'h') ? (li.style.width = tickWidth + '%') : (li.style.height = tickWidth + '%');\n var repeat = islargeTick ? (this.ticks.placement === 'Both' ? 2 : 1) : 0;\n if (islargeTick) {\n for (var j = 0; j < repeat; j++) {\n this.createTick(li, start, tickWidth);\n }\n }\n else if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start);\n }\n this.ul.appendChild(li);\n this.tickElementCollection.push(li);\n var decimalPoints = void 0;\n if (isNullOrUndefined(this.customValues)) {\n if (this.numberOfDecimals(smallStep) > this.numberOfDecimals(start)) {\n decimalPoints = this.numberOfDecimals(smallStep);\n }\n else {\n decimalPoints = this.numberOfDecimals(start);\n }\n if (orien === 'h') {\n start = this.makeRoundNumber(start + smallStep, decimalPoints);\n }\n else {\n start = this.makeRoundNumber(start - smallStep, decimalPoints);\n }\n left = this.makeRoundNumber(left + smallStep, decimalPoints);\n }\n }\n this.ticksAlignment(orien, tickWidth);\n };\n Slider.prototype.ticksAlignment = function (orien, tickWidth, triggerEvent) {\n if (triggerEvent === void 0) { triggerEvent = true; }\n this.firstChild = this.ul.firstElementChild;\n this.lastChild = this.ul.lastElementChild;\n this.firstChild.classList.add(classNames.sliderFirstTick);\n this.lastChild.classList.add(classNames.sliderLastTick);\n this.sliderContainer.classList.add(classNames.scale + '-' + this.ticks.placement.toLowerCase());\n if (orien === 'h') {\n this.firstChild.style.width = tickWidth / 2 + '%';\n this.lastChild.style.width = tickWidth / 2 + '%';\n }\n else {\n this.firstChild.style.height = tickWidth / 2 + '%';\n this.lastChild.style.height = tickWidth / 2 + '%';\n }\n var eventArgs = { ticksWrapper: this.ul, tickElements: this.tickElementCollection };\n if (triggerEvent) {\n this.trigger('renderedTicks', eventArgs);\n }\n this.scaleAlignment();\n };\n Slider.prototype.createTick = function (li, start, tickWidth) {\n var span = this.createElement('span', {\n className: classNames.tickValue + ' ' + classNames.tick + '-' + this.ticks.placement.toLowerCase(),\n attrs: { role: 'presentation', tabIndex: '-1', 'aria-hidden': 'true' }\n });\n li.appendChild(span);\n if (isNullOrUndefined(this.customValues)) {\n this.formatTicksValue(li, start, span, tickWidth);\n }\n else {\n if (this.enableHtmlSanitizer) {\n span.innerHTML = SanitizeHtmlHelper.sanitize(start.toString());\n }\n else {\n span.innerHTML = start.toString();\n }\n }\n };\n Slider.prototype.formatTicksValue = function (li, start, spanElement, tickWidth) {\n var _this = this;\n var tickText = this.formatNumber(start);\n var text = !isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format) ?\n this.formatString(start, this.ticksFormatInfo).formatString : tickText;\n var eventArgs = { value: start, text: text, tickElement: li };\n this.trigger('renderingTicks', eventArgs, function (observedArgs) {\n li.setAttribute('title', observedArgs.text.toString());\n if (spanElement) {\n if (_this.enableHtmlSanitizer) {\n spanElement.innerHTML = SanitizeHtmlHelper.sanitize(observedArgs.text.toString());\n }\n else {\n spanElement.innerHTML = observedArgs.text.toString();\n }\n }\n });\n };\n Slider.prototype.scaleAlignment = function () {\n this.tickValuePosition();\n var orien = this.orientation === 'Vertical' ? 'v' : 'h';\n if (this.orientation === 'Vertical') {\n (this.element.getBoundingClientRect().width <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n else {\n (this.element.getBoundingClientRect().height <= 15) ?\n this.sliderContainer.classList.add(classNames.sliderSmallSize) :\n this.sliderContainer.classList.remove(classNames.sliderSmallSize);\n }\n };\n Slider.prototype.tickValuePosition = function () {\n this.firstChild = this.element.querySelector('ul').children[0];\n var first = this.firstChild.getBoundingClientRect();\n var firstChild;\n var otherChild;\n var smallStep = this.ticks.smallStep;\n var count = Math.abs((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min)))) / smallStep;\n if (this.firstChild.children.length > 0) {\n firstChild = this.firstChild.children[0].getBoundingClientRect();\n }\n var tickElements = [this.sliderContainer.querySelectorAll('.' + classNames.tick + '.' +\n classNames.large + ' .' + classNames.tickValue)];\n var other;\n if (this.ticks.placement === 'Both') {\n other = [].slice.call(tickElements[0], 2);\n }\n else {\n other = [].slice.call(tickElements[0], 1);\n }\n var tickWidth = this.orientation === 'Vertical' ?\n (first.height * 2) : (first.width * 2);\n for (var i = 0; i < this.firstChild.children.length; i++) {\n if (this.orientation === 'Vertical') {\n this.firstChild.children[i].style.top = -(firstChild.height / 2) + 'px';\n }\n else {\n if (!this.enableRtl) {\n this.firstChild.children[i].style.left = -(firstChild.width / 2) + 'px';\n }\n else {\n this.firstChild.children[i].style.left = (tickWidth -\n this.firstChild.children[i].getBoundingClientRect().width) / 2 + 'px';\n }\n }\n }\n for (var i = 0; i < other.length; i++) {\n otherChild = other[i].getBoundingClientRect();\n if (this.orientation === 'Vertical') {\n setStyleAttribute(other[i], { top: (tickWidth - otherChild.height) / 2 + 'px' });\n }\n else {\n setStyleAttribute(other[i], { left: (tickWidth - otherChild.width) / 2 + 'px' });\n }\n }\n if (this.enableRtl && this.lastChild.children.length && count !== 0) {\n this.lastChild.children[0].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n if (this.ticks.placement === 'Both') {\n this.lastChild.children[1].style.left = -(this.lastChild.getBoundingClientRect().width / 2) + 'px';\n }\n }\n if (count === 0) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.left = this.firstHandle.style.left;\n }\n else {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n this.firstChild.style.right = this.firstHandle.style.right;\n this.firstChild.children[0].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n if (this.ticks.placement === 'Both') {\n this.firstChild.children[1].style.left =\n (this.firstChild.getBoundingClientRect().width / 2) + 2 + 'px';\n }\n }\n }\n if (this.orientation === 'Vertical') {\n this.firstChild.classList.remove(classNames.sliderLastTick);\n }\n }\n };\n Slider.prototype.setAriaAttrValue = function (element) {\n var ariaValueText;\n var isTickFormatted = ((!isNullOrUndefined(this.ticks) && !isNullOrUndefined(this.ticks.format))) ? true : false;\n var text = !isTickFormatted ?\n this.formatContent(this.ticksFormatInfo, false) : this.formatContent(this.tooltipFormatInfo, false);\n var valuenow = isTickFormatted ? this.formatContent(this.ticksFormatInfo, true) :\n this.formatContent(this.tooltipFormatInfo, true);\n text = (!this.customAriaText) ? (text) : (this.customAriaText);\n if (text.split(' - ').length === 2) {\n ariaValueText = text.split(' - ');\n }\n else {\n ariaValueText = [text, text];\n }\n this.setAriaAttributes(element);\n if (this.type !== 'Range') {\n attributes(element, { 'aria-valuenow': valuenow, 'aria-valuetext': text });\n }\n else {\n // eslint-disable-next-line\n (!this.enableRtl) ? ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] })) :\n ((element === this.firstHandle) ?\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[1], 'aria-valuetext': ariaValueText[1] }) :\n attributes(element, { 'aria-valuenow': valuenow.split(' - ')[0], 'aria-valuetext': ariaValueText[0] }));\n }\n };\n Slider.prototype.handleValueUpdate = function () {\n var hVal;\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n hVal = this.handleVal1;\n }\n else {\n hVal = this.handleVal2;\n }\n }\n else {\n hVal = this.handleVal1;\n }\n return hVal;\n };\n Slider.prototype.getLimitCorrectedValues = function (value) {\n if (this.type === 'MinRange' || this.type === 'Default') {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n if (this.activeHandle === 1) {\n value = (this.getLimitValueAndPosition(value, this.limits.minStart, this.limits.minEnd))[0];\n }\n else {\n value = (this.getLimitValueAndPosition(value, this.limits.maxStart, this.limits.maxEnd))[0];\n }\n }\n return value;\n };\n Slider.prototype.focusSliderElement = function () {\n if (!this.isElementFocused) {\n this.element.focus();\n this.isElementFocused = true;\n }\n };\n Slider.prototype.buttonClick = function (args) {\n this.focusSliderElement();\n var value;\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n var hVal = this.handleValueUpdate();\n if ((args.keyCode === 40) || (args.keyCode === 37)\n || args.currentTarget.classList.contains(classNames.firstButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), false));\n }\n else if ((args.keyCode === 38) || (args.keyCode === 39) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.step.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.step.toString()), true));\n }\n else if ((args.keyCode === 33\n || args.currentTarget.classList.contains(classNames.firstButton))) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true));\n }\n else if ((args.keyCode === 34) ||\n args.currentTarget.classList.contains(classNames.secondButton)) {\n // eslint-disable-next-line\n enabledRTL ? (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), true)) :\n (value = this.add(hVal, parseFloat(this.ticks.largeStep.toString()), false));\n }\n else if ((args.keyCode === 36)) {\n value = parseFloat(this.min.toString());\n }\n else if ((args.keyCode === 35)) {\n value = parseFloat(this.max.toString());\n }\n if (this.limits.enabled) {\n value = this.getLimitCorrectedValues(value);\n }\n this.changeHandleValue(value);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n this.getHandle().focus();\n this.focusHandle();\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.add(this.firstBtn, 'mouseup touchend', this.buttonUp, this);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.add(this.secondBtn, 'mouseup touchend', this.buttonUp, this);\n }\n };\n Slider.prototype.tooltipToggle = function (target) {\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n !this.tooltipElement.classList.contains(classNames.materialTooltipOpen) ?\n this.openMaterialTooltip() : this.refreshTooltip(this.firstHandle);\n }\n else {\n // eslint-disable-next-line\n !this.tooltipElement ? this.openTooltip(target) : this.refreshTooltip(target);\n }\n };\n Slider.prototype.buttonUp = function (args) {\n if (args.currentTarget.classList.contains(classNames.firstButton)) {\n EventHandler.remove(this.firstBtn, 'mouseup touchend', this.buttonUp);\n }\n if (args.currentTarget.classList.contains(classNames.secondButton)) {\n EventHandler.remove(this.secondBtn, 'mouseup touchend', this.buttonUp);\n }\n };\n Slider.prototype.setRangeBar = function () {\n if (this.orientation === 'Horizontal') {\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else {\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n };\n Slider.prototype.checkValidValueAndPos = function (value) {\n value = this.checkHandleValue(value);\n value = this.checkHandlePosition(value);\n return value;\n };\n Slider.prototype.setLimitBarPositions = function (fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion) {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarFirst.style.left = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n else {\n this.limitBarFirst.style.right = fromMinPostion + 'px';\n this.limitBarFirst.style.width = (fromMaxpostion - fromMinPostion) + 'px';\n }\n }\n else {\n this.limitBarFirst.style.bottom = fromMinPostion + 'px';\n this.limitBarFirst.style.height = (fromMaxpostion - fromMinPostion) + 'px';\n }\n if (this.type === 'Range') {\n if (this.orientation === 'Horizontal') {\n if (!this.enableRtl) {\n this.limitBarSecond.style.left = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n else {\n this.limitBarSecond.style.right = toMinPostion + 'px';\n this.limitBarSecond.style.width = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n else {\n this.limitBarSecond.style.bottom = toMinPostion + 'px';\n this.limitBarSecond.style.height = (toMaxpostion - toMinPostion) + 'px';\n }\n }\n };\n Slider.prototype.setLimitBar = function () {\n if (this.type === 'Default' || this.type === 'MinRange') {\n var fromPosition = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromPosition = this.checkValidValueAndPos(fromPosition);\n var toPosition = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n toPosition = this.checkValidValueAndPos(toPosition);\n this.setLimitBarPositions(fromPosition, toPosition);\n }\n else if (this.type === 'Range') {\n var fromMinPostion = (this.getLimitValueAndPosition(this.limits.minStart, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMinPostion = this.checkValidValueAndPos(fromMinPostion);\n var fromMaxpostion = (this.getLimitValueAndPosition(this.limits.minEnd, this.limits.minStart, this.limits.minEnd, true))[0];\n fromMaxpostion = this.checkValidValueAndPos(fromMaxpostion);\n var toMinPostion = (this.getLimitValueAndPosition(this.limits.maxStart, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMinPostion = this.checkValidValueAndPos(toMinPostion);\n var toMaxpostion = (this.getLimitValueAndPosition(this.limits.maxEnd, this.limits.maxStart, this.limits.maxEnd, true))[0];\n toMaxpostion = this.checkValidValueAndPos(toMaxpostion);\n this.setLimitBarPositions(fromMinPostion, fromMaxpostion, toMinPostion, toMaxpostion);\n }\n };\n Slider.prototype.getLimitValueAndPosition = function (currentValue, minValue, maxValue, limitBar) {\n if (isNullOrUndefined(minValue)) {\n minValue = this.min;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = minValue;\n }\n }\n if (isNullOrUndefined(maxValue)) {\n maxValue = this.max;\n if (isNullOrUndefined(currentValue) && limitBar) {\n currentValue = maxValue;\n }\n }\n if (currentValue < minValue) {\n currentValue = minValue;\n }\n if (currentValue > maxValue) {\n currentValue = maxValue;\n }\n return [currentValue, this.checkHandlePosition(currentValue)];\n };\n Slider.prototype.setValue = function () {\n if (!isNullOrUndefined(this.customValues) && this.customValues.length > 0) {\n this.min = 0;\n this.max = this.customValues.length - 1;\n this.setBarColor();\n }\n this.setAriaAttributes(this.firstHandle);\n this.handleVal1 = isNullOrUndefined(this.value) ? this.checkHandleValue(parseFloat(this.min.toString())) :\n this.checkHandleValue(parseFloat(this.value.toString()));\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.preHandlePos1 = this.handlePos1;\n // eslint-disable-next-line\n isNullOrUndefined(this.activeHandle) ? (this.type === 'Range' ? this.activeHandle = 2 : this.activeHandle = 1) :\n // eslint-disable-next-line no-self-assign\n this.activeHandle = this.activeHandle;\n if (this.type === 'Default' || this.type === 'MinRange') {\n if (this.limits.enabled) {\n var values = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values[0];\n this.handlePos1 = values[1];\n this.preHandlePos1 = this.handlePos1;\n }\n this.setHandlePosition(null);\n this.handleStart();\n this.value = this.handleVal1;\n this.setAriaAttrValue(this.firstHandle);\n this.changeEvent('changed', null);\n }\n else {\n this.validateRangeValue();\n }\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n };\n Slider.prototype.rangeValueUpdate = function () {\n if (this.value === null || typeof (this.value) !== 'object') {\n this.value = [parseFloat(formatUnit(this.min)), parseFloat(formatUnit(this.max))];\n }\n };\n Slider.prototype.validateRangeValue = function () {\n this.rangeValueUpdate();\n this.setRangeValue();\n };\n Slider.prototype.modifyZindex = function () {\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.style.zIndex = (this.zIndex + 4) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 3) + '';\n }\n else {\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n }\n else if (this.isMaterialTooltip && this.tooltipElement) {\n this.tooltipElement.style.zIndex = getZindexPartial(this.element) + '';\n }\n };\n Slider.prototype.setHandlePosition = function (event) {\n var _this = this;\n var handle;\n var pos = (this.activeHandle === 1) ? this.handlePos1 : this.handlePos2;\n if (this.isMaterialTooltip) {\n handle = [this.firstHandle, this.materialHandle];\n }\n else {\n handle = [this.getHandle()];\n }\n this.handleStart();\n handle.forEach(function (handle) {\n if (_this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n _this.enableRtl ? (handle.style.right =\n pos + \"px\") : (handle.style.left = pos + \"px\");\n }\n else {\n handle.style.bottom = pos + \"px\";\n }\n });\n this.changeEvent('change', event);\n };\n Slider.prototype.getHandle = function () {\n return (this.activeHandle === 1) ? this.firstHandle : this.secondHandle;\n };\n Slider.prototype.setRangeValue = function () {\n this.updateRangeValue();\n this.activeHandle = 1;\n this.setHandlePosition(null);\n this.activeHandle = 2;\n this.setHandlePosition(null);\n this.activeHandle = 1;\n };\n Slider.prototype.changeEvent = function (eventName, e) {\n var previous = eventName === 'change' ? this.previousVal : this.previousChanged;\n if (this.type !== 'Range') {\n this.setProperties({ 'value': this.handleVal1 }, true);\n if (previous !== this.value && (!this.isMaterialTooltip || !this.initialTooltip)) {\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.firstHandle);\n }\n else {\n var value = this.value = [this.handleVal1, this.handleVal2];\n this.setProperties({ 'value': value }, true);\n if (previous.length === this.value.length\n && this.value[0] !== previous[0] || this.value[1] !== previous[1]) {\n this.initialTooltip = false;\n this.trigger(eventName, this.changeEventArgs(eventName, e));\n this.initialTooltip = true;\n this.setPreviousVal(eventName, this.value);\n }\n this.setAriaAttrValue(this.getHandle());\n }\n this.hiddenInput.value = this.value.toString();\n };\n Slider.prototype.changeEventArgs = function (eventName, e) {\n var eventArgs;\n if (this.tooltip.isVisible && this.tooltipObj && this.initialTooltip) {\n this.tooltipValue();\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: this.tooltipObj.content, isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n else {\n eventArgs = {\n value: this.value,\n previousValue: eventName === 'change' ? this.previousVal : this.previousChanged,\n action: eventName, text: isNullOrUndefined(this.ticksFormatInfo.format) ? this.value.toString() :\n (this.type !== 'Range' ? this.formatString(this.value, this.ticksFormatInfo).formatString :\n (this.formatString(this.value[0], this.ticksFormatInfo).formatString + ' - ' +\n this.formatString(this.value[1], this.ticksFormatInfo).formatString)),\n isInteracted: isNullOrUndefined(e) ? false : true\n };\n }\n return eventArgs;\n };\n Slider.prototype.setPreviousVal = function (eventName, value) {\n if (eventName === 'change') {\n this.previousVal = value;\n }\n else {\n this.previousChanged = value;\n }\n };\n Slider.prototype.updateRangeValue = function () {\n var values = this.value.toString().split(',').map(Number);\n if ((this.enableRtl && this.orientation !== 'Vertical') || this.rtl) {\n this.value = [values[1], values[0]];\n }\n else {\n this.value = [values[0], values[1]];\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n this.handleVal1 = this.checkHandleValue(this.value[1]);\n this.handleVal2 = this.checkHandleValue(this.value[0]);\n }\n else {\n this.handleVal1 = this.checkHandleValue(this.value[0]);\n this.handleVal2 = this.checkHandleValue(this.value[1]);\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n this.preHandlePos1 = this.handlePos1;\n this.preHandlePos2 = this.handlePos2;\n if (this.limits.enabled) {\n this.activeHandle = 1;\n var values_1 = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = values_1[0];\n this.handlePos1 = values_1[1];\n this.preHandlePos1 = this.handlePos1;\n this.activeHandle = 2;\n values_1 = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = values_1[0];\n this.handlePos2 = values_1[1];\n this.preHandlePos2 = this.handlePos2;\n }\n };\n Slider.prototype.checkHandlePosition = function (value) {\n var pos;\n value = (100 *\n (value - (parseFloat(formatUnit(this.min))))) / ((parseFloat(formatUnit(this.max))) - (parseFloat(formatUnit(this.min))));\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (value / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (value / 100);\n }\n if (((parseFloat(formatUnit(this.max))) === (parseFloat(formatUnit(this.min))))) {\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width;\n }\n else {\n pos = this.element.getBoundingClientRect().height;\n }\n }\n return pos;\n };\n Slider.prototype.checkHandleValue = function (value) {\n if (this.min > this.max) {\n this.min = this.max;\n }\n if (this.min === this.max) {\n return (parseFloat(formatUnit(this.max)));\n }\n var handle = this.tempStartEnd();\n if (value < handle.start) {\n value = handle.start;\n }\n else if (value > handle.end) {\n value = handle.end;\n }\n return value;\n };\n /**\n * It is used to reposition slider.\n * @returns void\n */\n Slider.prototype.reposition = function () {\n var _this = this;\n this.firstHandle.style.transition = 'none';\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n if (this.type === 'Range') {\n this.secondHandle.style.transition = 'none';\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.handleVal2) {\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n }\n if (this.orientation === 'Horizontal') {\n // eslint-disable-next-line\n this.enableRtl ? this.firstHandle.style.right =\n this.handlePos1 + \"px\" : this.firstHandle.style.left = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n // eslint-disable-next-line\n this.enableRtl ? this.materialHandle.style.right =\n this.handlePos1 + \"px\" : this.materialHandle.style.left = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right = '0px') : (this.rangeBar.style.left = '0px');\n setStyleAttribute(this.rangeBar, { 'width': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n // eslint-disable-next-line\n this.enableRtl ? this.secondHandle.style.right =\n this.handlePos2 + \"px\" : this.secondHandle.style.left = this.handlePos2 + \"px\";\n // eslint-disable-next-line\n this.enableRtl ? (this.rangeBar.style.right =\n this.handlePos1 + 'px') : (this.rangeBar.style.left = this.handlePos1 + 'px');\n setStyleAttribute(this.rangeBar, { 'width': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n else {\n this.firstHandle.style.bottom = this.handlePos1 + \"px\";\n if (this.isMaterialTooltip) {\n this.materialHandle.style.bottom = this.handlePos1 + \"px\";\n }\n if (this.type === 'MinRange') {\n this.rangeBar.style.bottom = '0px';\n setStyleAttribute(this.rangeBar, { 'height': isNullOrUndefined(this.handlePos1) ? 0 : this.handlePos1 + 'px' });\n }\n else if (this.type === 'Range') {\n this.secondHandle.style.bottom = this.handlePos2 + \"px\";\n this.rangeBar.style.bottom = this.handlePos1 + 'px';\n setStyleAttribute(this.rangeBar, { 'height': this.handlePos2 - this.handlePos1 + 'px' });\n }\n }\n if (this.limits.enabled) {\n this.setLimitBar();\n }\n if (this.ticks.placement !== 'None' && this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n this.handleStart();\n if (!this.tooltip.isVisible) {\n setTimeout(function () {\n _this.firstHandle.style.transition = _this.scaleTransform;\n if (_this.type === 'Range') {\n _this.secondHandle.style.transition = _this.scaleTransform;\n }\n });\n }\n this.refreshTooltip(this.tooltipTarget);\n this.setBarColor();\n };\n Slider.prototype.changeHandleValue = function (value) {\n var position = null;\n if (this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n this.handleVal1 = this.checkHandleValue(value);\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n if (this.type === 'Range' && this.handlePos1 > this.handlePos2) {\n this.handlePos1 = this.handlePos2;\n this.handleVal1 = this.handleVal2;\n }\n if (this.handlePos1 !== this.preHandlePos1) {\n position = this.preHandlePos1 = this.handlePos1;\n }\n }\n this.modifyZindex();\n }\n else {\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n this.handleVal2 = this.checkHandleValue(value);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n if (this.type === 'Range' && this.handlePos2 < this.handlePos1) {\n this.handlePos2 = this.handlePos1;\n this.handleVal2 = this.handleVal1;\n }\n if (this.handlePos2 !== this.preHandlePos2) {\n position = this.preHandlePos2 = this.handlePos2;\n }\n }\n this.modifyZindex();\n }\n if (position !== null) {\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n this.setHandlePosition(null);\n }\n };\n // eslint-disable-next-line\n Slider.prototype.tempStartEnd = function () {\n if (this.min > this.max) {\n return {\n start: this.max,\n end: this.min\n };\n }\n else {\n return {\n start: this.min,\n end: this.max\n };\n }\n };\n // eslint-disable-next-line\n Slider.prototype.xyToPosition = function (position) {\n var pos;\n if (this.min === this.max) {\n return 100;\n }\n if (this.orientation === 'Horizontal') {\n var left = position.x - this.element.getBoundingClientRect().left;\n var num = this.element.offsetWidth / 100;\n this.val = (left / num);\n }\n else {\n var top_1 = position.y - this.element.getBoundingClientRect().top;\n var num = this.element.offsetHeight / 100;\n this.val = 100 - (top_1 / num);\n }\n var val = this.stepValueCalculation(this.val);\n if (val < 0) {\n val = 0;\n }\n else if (val > 100) {\n val = 100;\n }\n if (this.enableRtl && this.orientation !== 'Vertical') {\n val = 100 - val;\n }\n if (this.orientation === 'Horizontal') {\n pos = this.element.getBoundingClientRect().width * (val / 100);\n }\n else {\n pos = this.element.getBoundingClientRect().height * (val / 100);\n }\n return pos;\n };\n Slider.prototype.stepValueCalculation = function (value) {\n if (this.step === 0) {\n this.step = 1;\n }\n var percentStep = (parseFloat(formatUnit(this.step))) / ((parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min))) / 100);\n var remain = value % Math.abs(percentStep);\n if (remain !== 0) {\n if ((percentStep / 2) > remain) {\n value -= remain;\n }\n else {\n value += Math.abs(percentStep) - remain;\n }\n }\n return value;\n };\n Slider.prototype.add = function (a, b, addition) {\n var precision;\n var x = Math.pow(10, precision || 3);\n var val;\n if (addition) {\n val = (Math.round(a * x) + Math.round(b * x)) / x;\n }\n else {\n val = (Math.round(a * x) - Math.round(b * x)) / x;\n }\n return val;\n };\n Slider.prototype.positionToValue = function (pos) {\n var val;\n var diff = parseFloat(formatUnit(this.max)) - parseFloat(formatUnit(this.min));\n if (this.orientation === 'Horizontal') {\n val = (pos / this.element.getBoundingClientRect().width) * diff;\n }\n else {\n val = (pos / this.element.getBoundingClientRect().height) * diff;\n }\n var total = this.add(val, parseFloat(this.min.toString()), true);\n return (total);\n };\n Slider.prototype.sliderBarClick = function (evt) {\n evt.preventDefault();\n // eslint-disable-next-line\n var pos;\n if (evt.type === 'mousedown' || evt.type === 'mouseup' || evt.type === 'click') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else if (evt.type === 'touchend' || evt.type === 'touchstart') {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n if (this.type === 'Range' && (this.handlePos2 - handlepos) < (handlepos - this.handlePos1)) {\n this.activeHandle = 2;\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n }\n this.modifyZindex();\n this.secondHandle.focus();\n }\n else {\n this.activeHandle = 1;\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.modifyZindex();\n this.firstHandle.focus();\n }\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.add(classNames.materialTooltipActive);\n }\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement && this.getHandle() !== focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n var handle = this.activeHandle === 1 ? this.firstHandle : this.secondHandle;\n if (evt.target === handle) {\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.sliderBarUp(evt);\n this.tooltipToggle(this.getHandle());\n return;\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n var transition = this.isMaterial && this.tooltip.isVisible ?\n this.transitionOnMaterialTooltip : this.transition;\n this.getHandle().style.transition = transition.handle;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = transition.rangeBar;\n }\n this.setHandlePosition(evt);\n if (this.isMaterialTooltip) {\n this.initialTooltip = false;\n }\n this.changeEvent('changed', evt);\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.handleValueAdjust = function (handleValue, assignValue, handleNumber) {\n if (handleNumber === 1) {\n this.handleVal1 = assignValue;\n this.handleVal2 = this.handleVal1 + this.minDiff;\n }\n else if (handleNumber === 2) {\n this.handleVal2 = assignValue;\n this.handleVal1 = this.handleVal2 - this.minDiff;\n }\n this.handlePos1 = this.checkHandlePosition(this.handleVal1);\n this.handlePos2 = this.checkHandlePosition(this.handleVal2);\n };\n Slider.prototype.dragRangeBarMove = function (event) {\n var _a, _b;\n if (event.type !== 'touchmove') {\n event.preventDefault();\n }\n this.rangeBarDragged = true;\n var pos;\n this.rangeBar.style.transition = 'none';\n this.firstHandle.style.transition = 'none';\n this.secondHandle.style.transition = 'none';\n var xPostion;\n var yPostion;\n if (event.type === 'mousemove') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (!(this.limits.enabled && this.limits.startHandleFixed) && !(this.limits.enabled && this.limits.endHandleFixed)) {\n if (!this.enableRtl) {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion + this.secondPartRemain };\n }\n else {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion + this.secondPartRemain };\n }\n this.handlePos1 = this.xyToPosition(pos);\n this.handleVal1 = this.positionToValue(this.handlePos1);\n if (!this.enableRtl) {\n pos = { x: xPostion + this.secondPartRemain, y: yPostion - this.firstPartRemain };\n }\n else {\n pos = { x: xPostion - this.firstPartRemain, y: yPostion - this.firstPartRemain };\n }\n this.handlePos2 = this.xyToPosition(pos);\n this.handleVal2 = this.positionToValue(this.handlePos2);\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(this.handleVal1, this.limits.minStart, this.limits.minEnd);\n this.handleVal1 = value[0];\n this.handlePos1 = value[1];\n if (this.handleVal1 === this.limits.minEnd) {\n this.handleValueAdjust(this.handleVal1, this.limits.minEnd, 1);\n }\n if (this.handleVal1 === this.limits.minStart) {\n this.handleValueAdjust(this.handleVal1, this.limits.minStart, 1);\n }\n value = this.getLimitValueAndPosition(this.handleVal2, this.limits.maxStart, this.limits.maxEnd);\n this.handleVal2 = value[0];\n this.handlePos2 = value[1];\n if (this.handleVal2 === this.limits.maxStart) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxStart, 2);\n }\n if (this.handleVal2 === this.limits.maxEnd) {\n this.handleValueAdjust(this.handleVal2, this.limits.maxEnd, 2);\n }\n }\n if (this.handleVal2 === this.max) {\n this.handleValueAdjust(this.handleVal2, this.max, 2);\n }\n if (this.handleVal1 === this.min) {\n this.handleValueAdjust(this.handleVal1, this.min, 1);\n }\n }\n this.activeHandle = 1;\n this.setHandlePosition(event);\n this.activeHandle = 2;\n this.setHandlePosition(event);\n this.tooltipToggle(this.rangeBar);\n this.setRangeBar();\n };\n Slider.prototype.sliderBarUp = function (event) {\n this.changeEvent('changed', event);\n this.handleFocusOut();\n this.firstHandle.classList.remove(classNames.sliderActiveHandle);\n if (this.type === 'Range') {\n this.initialTooltip = false;\n this.secondHandle.classList.remove(classNames.sliderActiveHandle);\n }\n this.closeTooltip();\n if (this.isMaterial) {\n this.getHandle().classList.remove('e-large-thumb-size');\n if (this.isMaterialTooltip) {\n this.tooltipElement.classList.remove(classNames.materialTooltipActive);\n }\n }\n EventHandler.remove(document, 'mousemove touchmove', this.sliderBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.sliderBarUp);\n };\n Slider.prototype.sliderBarMove = function (evt) {\n if (evt.type !== 'touchmove') {\n evt.preventDefault();\n }\n var pos;\n if (evt.type === 'mousemove') {\n pos = { x: evt.clientX, y: evt.clientY };\n }\n else {\n pos = { x: evt.changedTouches[0].clientX, y: evt.changedTouches[0].clientY };\n }\n var handlepos = this.xyToPosition(pos);\n var handleVal = this.positionToValue(handlepos);\n handlepos = Math.round(handlepos);\n if (this.type !== 'Range' && this.activeHandle === 1) {\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (this.limits.enabled) {\n var valueAndPostion = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handlepos = valueAndPostion[1];\n handleVal = valueAndPostion[0];\n }\n this.handlePos1 = handlepos;\n this.handleVal1 = handleVal;\n }\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n }\n if (this.type === 'Range') {\n if (this.activeHandle === 1) {\n this.firstHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.startHandleFixed)) {\n if (handlepos > this.handlePos2) {\n handlepos = this.handlePos2;\n handleVal = this.handleVal2;\n }\n if (handlepos !== this.preHandlePos1) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.minStart, this.limits.minEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos1 = this.preHandlePos1 = handlepos;\n this.handleVal1 = handleVal;\n this.activeHandle = 1;\n }\n }\n }\n else if (this.activeHandle === 2) {\n this.secondHandle.classList.add(classNames.sliderActiveHandle);\n if (!(this.limits.enabled && this.limits.endHandleFixed)) {\n if (handlepos < this.handlePos1) {\n handlepos = this.handlePos1;\n handleVal = this.handleVal1;\n }\n if (handlepos !== this.preHandlePos2) {\n if (this.limits.enabled) {\n var value = this.getLimitValueAndPosition(handleVal, this.limits.maxStart, this.limits.maxEnd);\n handleVal = value[0];\n handlepos = value[1];\n }\n this.handlePos2 = this.preHandlePos2 = handlepos;\n this.handleVal2 = handleVal;\n this.activeHandle = 2;\n }\n }\n }\n }\n if (!this.checkRepeatedValue(handleVal)) {\n return;\n }\n this.getHandle().style.transition = this.scaleTransform;\n if (this.type !== 'Default') {\n this.rangeBar.style.transition = 'none';\n }\n this.setHandlePosition(evt);\n if (this.isMaterial && !this.tooltip.isVisible &&\n !this.getHandle().classList.contains(classNames.sliderTabHandle)) {\n this.materialChange();\n }\n this.tooltipToggle(this.getHandle());\n if (this.type !== 'Default') {\n this.setRangeBar();\n }\n };\n Slider.prototype.dragRangeBarUp = function (event) {\n if (!this.rangeBarDragged) {\n this.focusSliderElement();\n this.sliderBarClick(event);\n }\n else {\n this.isDragComplete = true;\n }\n this.changeEvent('changed', event);\n this.closeTooltip();\n EventHandler.remove(document, 'mousemove touchmove', this.dragRangeBarMove);\n EventHandler.remove(document, 'mouseup touchend', this.dragRangeBarUp);\n this.rangeBarDragged = false;\n };\n Slider.prototype.checkRepeatedValue = function (currentValue) {\n if (this.type === 'Range') {\n var previousVal = this.enableRtl && this.orientation !== 'Vertical' ? (this.activeHandle === 1 ?\n this.previousVal[1] : this.previousVal[0]) :\n (this.activeHandle === 1 ? this.previousVal[0] : this.previousVal[1]);\n if (currentValue === previousVal) {\n return 0;\n }\n }\n else {\n if (currentValue === this.previousVal) {\n return 0;\n }\n }\n return 1;\n };\n Slider.prototype.refreshTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj) {\n this.tooltipValue();\n if (target) {\n this.tooltipObj.refresh(target);\n this.tooltipTarget = target;\n }\n }\n };\n Slider.prototype.openTooltip = function (target) {\n if (this.tooltip.isVisible && this.tooltipObj && !this.isMaterialTooltip) {\n this.tooltipValue();\n // eslint-disable-next-line security/detect-non-literal-fs-filename -- Safe as no value holds user input\n this.tooltipObj.open(target);\n this.tooltipTarget = target;\n }\n };\n Slider.prototype.closeTooltip = function () {\n if (this.tooltip.isVisible && this.tooltipObj && this.tooltip.showOn !== 'Always' && !this.isMaterialTooltip) {\n this.tooltipValue();\n this.tooltipObj.close();\n this.tooltipTarget = undefined;\n }\n };\n Slider.prototype.keyDown = function (event) {\n switch (event.keyCode) {\n case 37:\n case 38:\n case 39:\n case 40:\n case 33:\n case 34:\n case 36:\n case 35:\n event.preventDefault();\n this.buttonClick(event);\n break;\n }\n };\n Slider.prototype.wireButtonEvt = function (destroy) {\n if (!destroy) {\n EventHandler.add(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut, this);\n EventHandler.add(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse, this);\n EventHandler.add(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp, this);\n EventHandler.add(this.firstBtn, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.secondBtn, 'focusout', this.sliderFocusOut, this);\n }\n else {\n EventHandler.remove(this.firstBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.secondBtn, 'mouseleave touchleave', this.buttonFocusOut);\n EventHandler.remove(this.firstBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.firstBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.secondBtn, 'mousedown touchstart', this.repeatHandlerMouse);\n EventHandler.remove(this.secondBtn, 'mouseup mouseleave touchup touchend', this.repeatHandlerUp);\n EventHandler.remove(this.firstBtn, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.secondBtn, 'focusout', this.sliderFocusOut);\n }\n };\n Slider.prototype.rangeBarMousedown = function (event) {\n var _a, _b;\n event.preventDefault();\n this.focusSliderElement();\n if (this.type === 'Range' && this.drag && event.target === this.rangeBar) {\n var xPostion = void 0;\n var yPostion = void 0;\n if (event.type === 'mousedown') {\n _a = [event.clientX, event.clientY], xPostion = _a[0], yPostion = _a[1];\n }\n else if (event.type === 'touchstart') {\n _b = [event.changedTouches[0].clientX, event.changedTouches[0].clientY], xPostion = _b[0], yPostion = _b[1];\n }\n if (this.orientation === 'Horizontal') {\n this.firstPartRemain = xPostion - this.rangeBar.getBoundingClientRect().left;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().right - xPostion;\n }\n else {\n this.firstPartRemain = yPostion - this.rangeBar.getBoundingClientRect().top;\n this.secondPartRemain = this.rangeBar.getBoundingClientRect().bottom - yPostion;\n }\n this.minDiff = this.handleVal2 - this.handleVal1;\n this.tooltipToggle(this.rangeBar);\n var focusedElement = this.element.querySelector('.' + classNames.sliderTabHandle);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.sliderTabHandle);\n }\n EventHandler.add(document, 'mousemove touchmove', this.dragRangeBarMove, this);\n EventHandler.add(document, 'mouseup touchend', this.dragRangeBarUp, this);\n }\n };\n Slider.prototype.elementClick = function (event) {\n if (this.isDragComplete) {\n this.isDragComplete = false;\n return;\n }\n event.preventDefault();\n this.focusSliderElement();\n this.sliderBarClick(event);\n this.focusHandle();\n };\n Slider.prototype.wireEvents = function () {\n this.onresize = this.reposition.bind(this);\n window.addEventListener('resize', this.onresize);\n if (this.enabled && !this.readonly) {\n EventHandler.add(this.element, 'click', this.elementClick, this);\n if (this.type === 'Range' && this.drag) {\n EventHandler.add(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown, this);\n }\n EventHandler.add(this.sliderContainer, 'keydown', this.keyDown, this);\n EventHandler.add(this.sliderContainer, 'keyup', this.keyUp, this);\n EventHandler.add(this.element, 'focusout', this.sliderFocusOut, this);\n EventHandler.add(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover, this);\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n if (this.showButtons) {\n this.wireButtonEvt(false);\n }\n this.wireMaterialTooltipEvent(false);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n }\n };\n Slider.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.elementClick);\n if (this.type === 'Range' && this.drag) {\n EventHandler.remove(this.rangeBar, 'mousedown touchstart', this.rangeBarMousedown);\n }\n EventHandler.remove(this.sliderContainer, 'keydown', this.keyDown);\n EventHandler.remove(this.sliderContainer, 'keyup', this.keyUp);\n EventHandler.remove(this.element, 'focusout', this.sliderFocusOut);\n EventHandler.remove(this.sliderContainer, 'mouseover mouseout touchstart touchend', this.hover);\n this.wireFirstHandleEvt(true);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(true);\n }\n if (this.showButtons) {\n this.wireButtonEvt(true);\n }\n this.wireMaterialTooltipEvent(true);\n EventHandler.remove(this.element, 'reset', this.formResetHandler);\n };\n Slider.prototype.formResetHandler = function () {\n this.setProperties({ 'value': this.formResetValue }, true);\n this.setValue();\n };\n Slider.prototype.keyUp = function (event) {\n if (event.keyCode === 9 && event.target.classList.contains(classNames.sliderHandle)) {\n this.focusSliderElement();\n if (!event.target.classList.contains(classNames.sliderTabHandle)) {\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n event.target.classList.add(classNames.sliderTabHandle);\n var parentElement = event.target.parentElement;\n if (parentElement === this.element) {\n parentElement.querySelector('.' + classNames.sliderTrack).classList.add(classNames.sliderTabTrack);\n if (this.type === 'Range' || this.type === 'MinRange') {\n parentElement.querySelector('.' + classNames.rangeBar).classList.add(classNames.sliderTabRange);\n }\n }\n if (this.type === 'Range') {\n (event.target.previousSibling).classList.contains(classNames.sliderHandle) ?\n this.activeHandle = 2 : this.activeHandle = 1;\n }\n this.getHandle().focus();\n this.tooltipToggle(this.getHandle());\n }\n }\n this.closeTooltip();\n this.changeEvent('changed', event);\n };\n Slider.prototype.hover = function (event) {\n if (!isNullOrUndefined(event)) {\n if (event.type === 'mouseover' || event.type === 'touchmove' || event.type === 'mousemove' ||\n event.type === 'pointermove' || event.type === 'touchstart') {\n this.sliderContainer.classList.add(classNames.sliderHover);\n }\n else {\n this.sliderContainer.classList.remove(classNames.sliderHover);\n var curTarget = event.currentTarget;\n if (this.tooltip.isVisible && this.tooltip.showOn !== 'Always' && this.tooltipObj && this.isMaterialTooltip &&\n !curTarget.classList.contains(classNames.sliderHandleFocused) &&\n !curTarget.classList.contains(classNames.sliderTabHandle)) {\n this.closeMaterialTooltip();\n }\n }\n }\n };\n Slider.prototype.sliderFocusOut = function (event) {\n if (event.relatedTarget !== this.secondHandle && event.relatedTarget !== this.firstHandle &&\n event.relatedTarget !== this.element && event.relatedTarget !== this.firstBtn && event.relatedTarget !== this.secondBtn) {\n this.closeMaterialTooltip();\n this.closeTooltip();\n if (this.element.querySelector('.' + classNames.sliderTabHandle)) {\n this.element.querySelector('.' + classNames.sliderTabHandle).classList.remove(classNames.sliderTabHandle);\n }\n if (this.element.querySelector('.' + classNames.sliderTabTrack)) {\n this.element.querySelector('.' + classNames.sliderTabTrack).classList.remove(classNames.sliderTabTrack);\n if ((this.type === 'Range' || this.type === 'MinRange') &&\n this.element.querySelector('.' + classNames.sliderTabRange)) {\n this.element.querySelector('.' + classNames.sliderTabRange).classList.remove(classNames.sliderTabRange);\n }\n }\n this.hiddenInput.focus();\n this.hiddenInput.blur();\n this.isElementFocused = false;\n }\n };\n Slider.prototype.removeElement = function (element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n };\n Slider.prototype.changeSliderType = function (type, args) {\n if (this.isMaterialTooltip && this.materialHandle) {\n this.sliderContainer.classList.remove(classNames.materialSlider);\n this.removeElement(this.materialHandle);\n this.materialHandle = undefined;\n }\n this.removeElement(this.firstHandle);\n this.firstHandle = undefined;\n if (type !== 'Default') {\n if (type === 'Range') {\n this.removeElement(this.secondHandle);\n this.secondHandle = undefined;\n }\n this.removeElement(this.rangeBar);\n this.rangeBar = undefined;\n }\n if (this.tooltip.isVisible && !isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipElement = undefined;\n this.tooltipCollidedPosition = undefined;\n }\n if (this.limits.enabled) {\n if (type === 'MinRange' || type === 'Default') {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n this.removeElement(this.limitBarFirst);\n this.limitBarFirst = undefined;\n }\n }\n else {\n if (!isNullOrUndefined(this.limitBarSecond)) {\n this.removeElement(this.limitBarSecond);\n this.limitBarSecond = undefined;\n }\n }\n }\n this.activeHandle = 1;\n this.getThemeInitialization();\n if (this.type === 'Range') {\n this.rangeValueUpdate();\n }\n this.createRangeBar();\n if (this.limits.enabled) {\n this.createLimitBar();\n }\n this.setHandler();\n this.setOrientClass();\n this.wireFirstHandleEvt(false);\n if (this.type === 'Range') {\n this.wireSecondHandleEvt(false);\n }\n this.setValue();\n if (this.tooltip.isVisible) {\n this.renderTooltip();\n this.wireMaterialTooltipEvent(false);\n }\n this.setBarColor();\n if (args !== 'tooltip') {\n this.updateConfig();\n }\n };\n Slider.prototype.changeRtl = function () {\n if (!this.enableRtl && this.type === 'Range') {\n this.value = [this.handleVal2, this.handleVal1];\n }\n this.updateConfig();\n if (this.tooltip.isVisible) {\n this.tooltipObj.refresh(this.firstHandle);\n }\n if (this.showButtons) {\n var enabledRTL = this.enableRtl && this.orientation !== 'Vertical';\n attributes(enabledRTL ? this.secondBtn : this.firstBtn, { 'aria-label': 'Decrease', title: 'Decrease' });\n attributes(enabledRTL ? this.firstBtn : this.secondBtn, { 'aria-label': 'Increase', title: 'Increase' });\n }\n };\n Slider.prototype.changeOrientation = function () {\n this.changeSliderType(this.type, 'null');\n };\n Slider.prototype.updateConfig = function () {\n this.setEnableRTL();\n this.setValue();\n if (this.tooltip.isVisible) {\n this.refreshTooltip(this.tooltipTarget);\n }\n if (this.ticks.placement !== 'None') {\n if (this.ul) {\n this.removeElement(this.ul);\n this.ul = undefined;\n this.renderScale();\n }\n }\n this.limitsPropertyChange();\n };\n Slider.prototype.limitsPropertyChange = function () {\n if (this.limits.enabled) {\n if (isNullOrUndefined(this.limitBarFirst) && this.type !== 'Range') {\n this.createLimitBar();\n }\n if (isNullOrUndefined(this.limitBarFirst) && isNullOrUndefined(this.limitBarSecond) && this.type === 'Range') {\n this.createLimitBar();\n }\n this.setLimitBar();\n this.setValue();\n }\n else {\n if (!isNullOrUndefined(this.limitBarFirst)) {\n detach(this.limitBarFirst);\n }\n if (!isNullOrUndefined(this.limitBarSecond)) {\n detach(this.limitBarSecond);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n * @private\n */\n Slider.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it removes the attributes and classes.\n * @method destroy\n * @return {void}\n */\n Slider.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n window.removeEventListener('resize', this.onresize);\n removeClass([this.sliderContainer], [classNames.sliderDisabled]);\n this.firstHandle.removeAttribute('aria-orientation');\n if (this.type === 'Range') {\n this.secondHandle.removeAttribute('aria-orientation');\n }\n this.sliderContainer.parentNode.insertBefore(this.element, this.sliderContainer);\n detach(this.sliderContainer);\n if (this.tooltip.isVisible) {\n this.tooltipObj.destroy();\n }\n this.element.innerHTML = '';\n };\n /**\n * Calls internally if any of the property value is changed.\n * @private\n */\n // tslint:disable-next-line\n Slider.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'value':\n if (newProp && oldProp) {\n var value = isNullOrUndefined(newProp.value) ?\n (this.type === 'Range' ? [this.min, this.max] : this.min) : newProp.value;\n this.setProperties({ 'value': value }, true);\n if (!isNullOrUndefined(oldProp.value) && oldProp.value.toString() !== value.toString()) {\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (this.type === 'Range') {\n if (isNullOrUndefined(newProp.value) || oldProp.value[1] === value[1]) {\n this.activeHandle = 1;\n }\n else {\n this.activeHandle = 2;\n }\n }\n }\n }\n break;\n case 'min':\n case 'step':\n case 'max':\n this.setMinMaxValue();\n break;\n case 'tooltip':\n if (!isNullOrUndefined(newProp.tooltip) && !isNullOrUndefined(oldProp.tooltip)) {\n this.setTooltip(prop);\n }\n break;\n case 'type':\n if (!isNullOrUndefined(oldProp) && Object.keys(oldProp).length\n && !isNullOrUndefined(oldProp.type)) {\n this.changeSliderType(oldProp.type, prop);\n this.setZindex();\n }\n break;\n case 'enableRtl':\n if (oldProp.enableRtl !== newProp.enableRtl && this.orientation !== 'Vertical') {\n this.rtl = oldProp.enableRtl;\n this.changeRtl();\n }\n break;\n case 'limits':\n this.limitsPropertyChange();\n break;\n case 'orientation':\n this.changeOrientation();\n break;\n case 'ticks':\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n break;\n case 'locale':\n if (this.showButtons) {\n this.buttonTitle();\n }\n break;\n case 'showButtons':\n if (newProp.showButtons) {\n this.setButtons();\n this.reposition();\n if (this.enabled && !this.readonly) {\n this.wireButtonEvt(false);\n }\n }\n else {\n if (this.firstBtn && this.secondBtn) {\n this.sliderContainer.removeChild(this.firstBtn);\n this.sliderContainer.removeChild(this.secondBtn);\n this.sliderContainer.classList.remove(classNames.sliderButtonClass);\n this.firstBtn = undefined;\n this.secondBtn = undefined;\n this.reposition();\n }\n }\n break;\n case 'enabled':\n this.setEnabled();\n break;\n case 'readonly':\n this.setReadOnly();\n break;\n case 'customValues':\n this.setValue();\n this.reposition();\n break;\n case 'colorRange':\n this.reposition();\n break;\n case 'width':\n this.setElementWidth(newProp.width);\n this.setMinMaxValue();\n if (this.limits) {\n this.limitsPropertyChange();\n }\n break;\n }\n }\n };\n Slider.prototype.setReadOnly = function () {\n if (this.readonly) {\n this.unwireEvents();\n this.sliderContainer.classList.add(classNames.readonly);\n }\n else {\n this.wireEvents();\n this.sliderContainer.classList.remove(classNames.readonly);\n }\n };\n Slider.prototype.setMinMaxValue = function () {\n var _this = this;\n this.setValue();\n this.refreshTooltip(this.tooltipTarget);\n if (!isNullOrUndefined(this.sliderContainer.querySelector('.' + classNames.scale))) {\n if (this.ul) {\n detach(this.ul);\n Array.prototype.forEach.call(this.sliderContainer.classList, function (className) {\n if (className.match(/e-scale-/)) {\n _this.sliderContainer.classList.remove(className);\n }\n });\n }\n }\n if (this.ticks.placement !== 'None') {\n this.renderScale();\n this.setZindex();\n }\n };\n Slider.prototype.setZindex = function () {\n this.zIndex = 6;\n if (!isNullOrUndefined(this.ticks) && this.ticks.placement !== 'None') {\n this.ul.style.zIndex = (this.zIndex + -7) + '';\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n if (!this.isMaterial && !isNullOrUndefined(this.ticks) && this.ticks.placement === 'Both') {\n this.element.style.zIndex = (this.zIndex + 2) + '';\n }\n this.firstHandle.style.zIndex = (this.zIndex + 3) + '';\n if (this.type === 'Range') {\n this.secondHandle.style.zIndex = (this.zIndex + 4) + '';\n }\n };\n Slider.prototype.setTooltip = function (args) {\n this.changeSliderType(this.type, args);\n };\n Slider.prototype.setBarColor = function () {\n var trackPosition;\n var trackClassName;\n var child = this.sliderTrack.lastElementChild;\n while (child) {\n this.sliderTrack.removeChild(child);\n child = this.sliderTrack.lastElementChild;\n }\n for (var i = 0; i < this.colorRange.length; i++) {\n if (!isNullOrUndefined(this.colorRange[i].start) && !isNullOrUndefined(this.colorRange[i].end)) {\n if (this.colorRange[i].end > this.colorRange[i].start) {\n if (this.colorRange[i].start < this.min) {\n this.colorRange[i].start = this.min;\n }\n if (this.colorRange[i].end > this.max) {\n this.colorRange[i].end = this.max;\n }\n var startingPosition = this.checkHandlePosition(this.colorRange[i].start);\n var endPosition = this.checkHandlePosition(this.colorRange[i].end);\n var trackContainer = this.createElement('div');\n trackContainer.style.backgroundColor = this.colorRange[i].color;\n trackContainer.style.border = '1px solid ' + this.colorRange[i].color;\n if (this.orientation === 'Horizontal') {\n trackClassName = classNames.sliderHorizantalColor;\n if (this.enableRtl) {\n if (isNullOrUndefined(this.customValues)) {\n trackPosition = this.checkHandlePosition(this.max) - this.checkHandlePosition(this.colorRange[i].end);\n }\n else {\n trackPosition = this.checkHandlePosition(this.customValues.length - this.colorRange[i].end - 1);\n }\n }\n else {\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n }\n trackContainer.style.width = endPosition - startingPosition + 'px';\n trackContainer.style.left = trackPosition + 'px';\n }\n else {\n trackClassName = classNames.sliderVerticalColor;\n trackPosition = this.checkHandlePosition(this.colorRange[i].start);\n trackContainer.style.height = endPosition - startingPosition + 'px';\n trackContainer.style.bottom = trackPosition + 'px';\n }\n trackContainer.classList.add(trackClassName);\n this.sliderTrack.appendChild(trackContainer);\n }\n }\n }\n };\n /**\n * Gets the component name\n * @private\n */\n Slider.prototype.getModuleName = function () {\n return 'slider';\n };\n __decorate$2([\n Property(null)\n ], Slider.prototype, \"value\", void 0);\n __decorate$2([\n Property(null)\n ], Slider.prototype, \"customValues\", void 0);\n __decorate$2([\n Property(1)\n ], Slider.prototype, \"step\", void 0);\n __decorate$2([\n Property(null)\n ], Slider.prototype, \"width\", void 0);\n __decorate$2([\n Property(0)\n ], Slider.prototype, \"min\", void 0);\n __decorate$2([\n Property(100)\n ], Slider.prototype, \"max\", void 0);\n __decorate$2([\n Property(false)\n ], Slider.prototype, \"readonly\", void 0);\n __decorate$2([\n Property('Default')\n ], Slider.prototype, \"type\", void 0);\n __decorate$2([\n Collection([{}], ColorRangeData)\n ], Slider.prototype, \"colorRange\", void 0);\n __decorate$2([\n Complex({}, TicksData)\n ], Slider.prototype, \"ticks\", void 0);\n __decorate$2([\n Complex({}, LimitData)\n ], Slider.prototype, \"limits\", void 0);\n __decorate$2([\n Property(true)\n ], Slider.prototype, \"enabled\", void 0);\n __decorate$2([\n Complex({}, TooltipData)\n ], Slider.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(false)\n ], Slider.prototype, \"showButtons\", void 0);\n __decorate$2([\n Property(true)\n ], Slider.prototype, \"enableAnimation\", void 0);\n __decorate$2([\n Property('Horizontal')\n ], Slider.prototype, \"orientation\", void 0);\n __decorate$2([\n Property('')\n ], Slider.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(false)\n ], Slider.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"change\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"changed\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"renderingTicks\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"renderedTicks\", void 0);\n __decorate$2([\n Event()\n ], Slider.prototype, \"tooltipChange\", void 0);\n Slider = __decorate$2([\n NotifyPropertyChanges\n ], Slider);\n return Slider;\n}(Component));\n\n/**\n * Slider modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nvar regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nvar ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @__PURE__ @class */ (function (_super) {\n __extends$3(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[name], rules, {});\n }\n else {\n this.rules[name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[name] && !rules) {\n delete this.rules[name];\n }\n else if (!isNullOrUndefined(this.rules[name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[name][rules[i]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formValidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n input.classList.remove(this.errorClass);\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n input.classList.remove(this.validClass);\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[name]) {\n return;\n }\n var rules = Object.keys(this.rules[name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[name][rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[name][rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[name][rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[rule] : this.defaultMessages[rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[i] : ruleValue;\n message = message.replace(formats[i], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n this.inputElement.parentNode.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[i];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n return !isNaN(new Date(option.value).getTime());\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate$3([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate$3([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate$3([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate$3([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate$3([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate$3([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate$3([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate$3([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate$3([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate$3([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\n\n/**\n * Input box Component\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar CONTROL_WRAPPER = 'e-upload e-control-wrapper';\nvar INPUT_WRAPPER = 'e-file-select';\nvar DROP_AREA = 'e-file-drop';\nvar DROP_WRAPPER = 'e-file-select-wrap';\nvar LIST_PARENT = 'e-upload-files';\nvar FILE = 'e-upload-file-list';\nvar STATUS = 'e-file-status';\nvar ACTION_BUTTONS = 'e-upload-actions';\nvar UPLOAD_BUTTONS = 'e-file-upload-btn e-css e-btn e-flat e-primary';\nvar CLEAR_BUTTONS = 'e-file-clear-btn e-css e-btn e-flat';\nvar FILE_NAME = 'e-file-name';\nvar FILE_TYPE = 'e-file-type';\nvar FILE_SIZE = 'e-file-size';\nvar REMOVE_ICON = 'e-file-remove-btn';\nvar DELETE_ICON = 'e-file-delete-btn';\nvar SPINNER_PANE = 'e-spinner-pane';\nvar ABORT_ICON = 'e-file-abort-btn';\nvar RETRY_ICON = 'e-file-reload-btn';\nvar DRAG_HOVER = 'e-upload-drag-hover';\nvar PROGRESS_WRAPPER = 'e-upload-progress-wrap';\nvar PROGRESSBAR = 'e-upload-progress-bar';\nvar PROGRESSBAR_TEXT = 'e-progress-bar-text';\nvar UPLOAD_INPROGRESS = 'e-upload-progress';\nvar UPLOAD_SUCCESS = 'e-upload-success';\nvar UPLOAD_FAILED = 'e-upload-fails';\nvar TEXT_CONTAINER = 'e-file-container';\nvar VALIDATION_FAILS = 'e-validation-fails';\nvar RTL = 'e-rtl';\nvar DISABLED = 'e-disabled';\nvar RTL_CONTAINER = 'e-rtl-container';\nvar ICON_FOCUSED = 'e-clear-icon-focus';\nvar PROGRESS_INNER_WRAPPER = 'e-progress-inner-wrap';\nvar PAUSE_UPLOAD = 'e-file-pause-btn';\nvar RESUME_UPLOAD = 'e-file-play-btn';\nvar RESTRICT_RETRY = 'e-restrict-retry';\nvar wrapperAttr$1 = ['title', 'style', 'class'];\nvar FORM_UPLOAD = 'e-form-upload';\nvar HIDDEN_INPUT = 'e-hidden-file-input';\nvar INVALID_FILE = 'e-file-invalid';\nvar INFORMATION = 'e-file-information';\nvar FilesProp = /** @__PURE__ @class */ (function (_super) {\n __extends$4(FilesProp, _super);\n function FilesProp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('')\n ], FilesProp.prototype, \"name\", void 0);\n __decorate$4([\n Property(null)\n ], FilesProp.prototype, \"size\", void 0);\n __decorate$4([\n Property('')\n ], FilesProp.prototype, \"type\", void 0);\n return FilesProp;\n}(ChildProperty));\nvar ButtonsProps = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ButtonsProps, _super);\n function ButtonsProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('Browse...')\n ], ButtonsProps.prototype, \"browse\", void 0);\n __decorate$4([\n Property('Upload')\n ], ButtonsProps.prototype, \"upload\", void 0);\n __decorate$4([\n Property('Clear')\n ], ButtonsProps.prototype, \"clear\", void 0);\n return ButtonsProps;\n}(ChildProperty));\nvar AsyncSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AsyncSettings, _super);\n function AsyncSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('')\n ], AsyncSettings.prototype, \"saveUrl\", void 0);\n __decorate$4([\n Property('')\n ], AsyncSettings.prototype, \"removeUrl\", void 0);\n __decorate$4([\n Property(0)\n ], AsyncSettings.prototype, \"chunkSize\", void 0);\n __decorate$4([\n Property(3)\n ], AsyncSettings.prototype, \"retryCount\", void 0);\n __decorate$4([\n Property(500)\n ], AsyncSettings.prototype, \"retryAfterDelay\", void 0);\n return AsyncSettings;\n}(ChildProperty));\n/**\n * The uploader component allows to upload images, documents, and other files from local to server.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Uploader = /** @__PURE__ @class */ (function (_super) {\n __extends$4(Uploader, _super);\n /**\n * Triggers when change the Uploader value.\n *\n * @param {UploaderModel} options - Specifies the Uploader model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function Uploader(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialAttr = { accept: null, multiple: false, disabled: false };\n _this.uploadedFilesData = [];\n _this.base64String = [];\n _this.isForm = false;\n _this.allTypes = false;\n _this.pausedData = [];\n _this.uploadMetaData = [];\n _this.tabIndex = '0';\n _this.btnTabIndex = '0';\n _this.disableKeyboardNavigation = false;\n _this.count = -1;\n _this.actionCompleteCount = 0;\n _this.flag = true;\n _this.selectedFiles = [];\n _this.uploaderName = 'UploadFiles';\n _this.fileStreams = [];\n _this.newFileRef = 0;\n _this.isFirstFileOnSelection = false;\n _this.dragCounter = 0;\n _this.isAngular = false;\n /**\n * Get the file item(li) which are shown in file list.\n *\n * @private\n */\n _this.fileList = [];\n /**\n * Get the data of files which are shown in file list.\n *\n * @private\n */\n _this.filesData = [];\n _this.uploaderOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {UploaderModel} newProp - Returns the dynamic property value of the component.\n * @param {UploaderModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Uploader.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowedExtensions':\n this.setExtensions(this.allowedExtensions);\n this.clearAll();\n break;\n case 'enabled':\n this.setControlStatus();\n break;\n case 'multiple':\n this.setMultipleSelection();\n break;\n case 'enableRtl':\n this.setRTL();\n this.reRenderFileList();\n break;\n case 'buttons':\n this.buttons.browse = isNullOrUndefined(this.buttons.browse) ? '' : this.buttons.browse;\n this.buttons.clear = isNullOrUndefined(this.buttons.clear) ? '' : this.buttons.clear;\n this.buttons.upload = isNullOrUndefined(this.buttons.upload) ? '' : this.buttons.upload;\n this.renderButtonTemplates();\n break;\n case 'dropArea':\n this.unBindDropEvents();\n this.updateDropArea();\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkHTMLAttributes(true);\n break;\n case 'files':\n this.renderPreLoadFiles();\n break;\n case 'directoryUpload':\n this.updateDirectoryAttributes();\n break;\n case 'template':\n this.clearAll();\n break;\n case 'minFileSize':\n case 'maxFileSize':\n case 'autoUpload':\n this.clearAll();\n break;\n case 'sequentialUpload':\n this.clearAll();\n break;\n case 'locale':\n this.l10n.setLocale(this.locale);\n this.setLocalizedTexts();\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n }\n }\n };\n Uploader.prototype.setLocalizedTexts = function () {\n if (isNullOrUndefined(this.template)) {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.innerText = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n if (this.uploadWrapper && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + DROP_AREA))) {\n this.uploadWrapper.querySelector('.' + DROP_AREA).innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n this.updateFileList();\n }\n };\n Uploader.prototype.getKeyValue = function (val) {\n var keyValue;\n for (var _i = 0, _a = Object.keys(this.preLocaleObj); _i < _a.length; _i++) {\n var key = _a[_i];\n if (this.preLocaleObj[\"\" + key] === val) {\n keyValue = key;\n }\n }\n return keyValue;\n };\n Uploader.prototype.updateFileList = function () {\n var element;\n /* istanbul ignore next */\n if (this.fileList.length > 0 && !isNullOrUndefined(this.uploadWrapper.querySelector('.' + LIST_PARENT))) {\n for (var i = 0; i < this.fileList.length; i++) {\n element = this.fileList[i].querySelector('.e-file-status');\n element.innerHTML = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n this.filesData[i].status = this.localizedTexts(this.getKeyValue(this.filesData[i].status));\n if (this.fileList[i].classList.contains(UPLOAD_SUCCESS)) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('delete'));\n }\n if (this.fileList[i].querySelector('.e-file-play-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('resume'));\n }\n if (this.fileList[i].querySelector('.e-file-remove-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('remove'));\n }\n if (this.fileList[i].querySelector('.e-file-reload-btn')) {\n this.fileList[i].querySelector('.e-icons').setAttribute('title', this.localizedTexts('retry'));\n }\n if (!this.autoUpload) {\n this.uploadButton.innerText = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.localizedTexts('Upload'));\n this.clearButton.innerText = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.localizedTexts('Clear'));\n }\n }\n }\n };\n Uploader.prototype.reRenderFileList = function () {\n if (this.listParent) {\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createFileList(this.filesData);\n if (this.actionButtons) {\n this.removeActionButtons();\n this.renderActionButtons();\n this.checkActionButtonStatus();\n }\n }\n };\n Uploader.prototype.preRender = function () {\n this.localeText = { Browse: 'Browse...', Clear: 'Clear', Upload: 'Upload', invalidFileName: 'File Name is not allowed',\n dropFilesHint: 'Or drop files here', invalidMaxFileSize: 'File size is too large',\n invalidMinFileSize: 'File size is too small', invalidFileType: 'File type is not allowed',\n uploadFailedMessage: 'File failed to upload', uploadSuccessMessage: 'File uploaded successfully',\n removedSuccessMessage: 'File removed successfully', removedFailedMessage: 'Unable to remove file', inProgress: 'Uploading',\n readyToUploadMessage: 'Ready to upload', abort: 'Abort', remove: 'Remove', cancel: 'Cancel', delete: 'Delete file',\n pauseUpload: 'File upload paused', pause: 'Pause', resume: 'Resume', retry: 'Retry',\n fileUploadCancel: 'File upload canceled', invalidFileSelection: 'Invalid files selected', totalFiles: 'Total files',\n size: 'Size'\n };\n this.l10n = new L10n('uploader', this.localeText, this.locale);\n this.preLocaleObj = getValue('currentLocale', this.l10n);\n this.formRendered();\n this.updateHTMLAttrToElement();\n this.checkHTMLAttributes(false);\n var ejInstance = getValue('ej2_instances', this.element);\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-UPLOADER') {\n var inputElement = this.createElement('input', { attrs: { type: 'file' } });\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n if (this.element.attributes[index].nodeName !== 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n }\n else if (this.element.attributes[index].nodeName === 'id') {\n inputElement.setAttribute(this.element.attributes[index].nodeName, getUniqueID('uploader'));\n }\n inputElement.innerHTML = this.element.innerHTML;\n }\n if (!inputElement.hasAttribute('name')) {\n inputElement.setAttribute('name', 'UploadFiles');\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n /* istanbul ignore next */\n if (ejInstance[0].isPureReactComponent) {\n if (!isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.name);\n }\n else if (!isNullOrUndefined(ejInstance[0].props.id) && isNullOrUndefined(ejInstance[0].props.name)) {\n this.element.setAttribute('name', ejInstance[0].props.id);\n }\n else {\n this.element.setAttribute('name', 'UploadFiles');\n }\n }\n if (isNullOrUndefined(this.element.getAttribute('name'))) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (!this.element.hasAttribute('type')) {\n this.element.setAttribute('type', 'file');\n }\n this.updateDirectoryAttributes();\n this.keyConfigs = {\n enter: 'enter'\n };\n if (this.element.hasAttribute('tabindex')) {\n this.tabIndex = this.element.getAttribute('tabindex');\n }\n this.browserName = Browser.info.name;\n this.uploaderName = this.element.getAttribute('name');\n };\n Uploader.prototype.formRendered = function () {\n var parentEle = closest(this.element, 'form');\n if (!isNullOrUndefined(parentEle)) {\n for (; parentEle && parentEle !== document.documentElement; parentEle = parentEle.parentElement) {\n if (parentEle.tagName === 'FORM') {\n this.isForm = true;\n this.formElement = parentEle;\n parentEle.setAttribute('enctype', 'multipart/form-data');\n parentEle.setAttribute('encoding', 'multipart/form-data');\n }\n }\n }\n };\n Uploader.prototype.getPersistData = function () {\n return this.addOnPersist(['filesData']);\n };\n /**\n * Return the module name of the component.\n *\n * @returns {string} Returns the component name.\n */\n Uploader.prototype.getModuleName = function () {\n return 'uploader';\n };\n Uploader.prototype.updateDirectoryAttributes = function () {\n if (this.directoryUpload) {\n this.element.setAttribute('directory', 'true');\n this.element.setAttribute('webkitdirectory', 'true');\n }\n else {\n this.element.removeAttribute('directory');\n this.element.removeAttribute('webkitdirectory');\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Uploader.prototype.render = function () {\n this.renderBrowseButton();\n this.initializeUpload();\n this.updateHTMLAttrToWrapper();\n this.wireEvents();\n this.setMultipleSelection();\n this.setExtensions(this.allowedExtensions);\n this.setRTL();\n this.renderPreLoadFiles();\n this.setControlStatus();\n this.setCSSClass();\n };\n Uploader.prototype.renderBrowseButton = function () {\n this.browseButton = this.createElement('button', { className: 'e-css e-btn', attrs: { 'type': 'button' } });\n this.browseButton.setAttribute('tabindex', this.tabIndex);\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.innerText);\n }\n else {\n this.browseButton.appendChild(this.buttons.browse);\n }\n this.element.setAttribute('aria-label', 'Uploader');\n };\n Uploader.prototype.renderActionButtons = function () {\n this.element.setAttribute('tabindex', '-1');\n this.actionButtons = this.createElement('div', { className: ACTION_BUTTONS });\n this.uploadButton = this.createElement('button', { className: UPLOAD_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.clearButton = this.createElement('button', { className: CLEAR_BUTTONS,\n attrs: { 'type': 'button', 'tabindex': this.btnTabIndex } });\n this.actionButtons.appendChild(this.clearButton);\n this.actionButtons.appendChild(this.uploadButton);\n this.renderButtonTemplates();\n this.uploadWrapper.appendChild(this.actionButtons);\n this.browseButton.blur();\n if (!this.isPreloadFiles) {\n this.uploadButton.focus();\n }\n this.wireActionButtonEvents();\n };\n /* istanbul ignore next */\n Uploader.prototype.serverActionButtonsEventBind = function (element) {\n if (element && !this.isForm) {\n this.browseButton.blur();\n this.actionButtons = element;\n this.uploadButton = this.actionButtons.querySelector('.e-file-upload-btn');\n this.clearButton = this.actionButtons.querySelector('.e-file-clear-btn');\n this.uploadButton.focus();\n this.unwireActionButtonEvents();\n this.wireActionButtonEvents();\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.wireActionButtonEvents = function () {\n EventHandler.add(this.uploadButton, 'click', this.uploadButtonClick, this);\n EventHandler.add(this.clearButton, 'click', this.clearButtonClick, this);\n };\n Uploader.prototype.unwireActionButtonEvents = function () {\n EventHandler.remove(this.uploadButton, 'click', this.uploadButtonClick);\n EventHandler.remove(this.clearButton, 'click', this.clearButtonClick);\n };\n Uploader.prototype.removeActionButtons = function () {\n if (this.actionButtons) {\n this.unwireActionButtonEvents();\n detach(this.actionButtons);\n this.actionButtons = null;\n }\n };\n Uploader.prototype.renderButtonTemplates = function () {\n if (typeof (this.buttons.browse) === 'string') {\n this.browseButton.textContent = (this.buttons.browse === 'Browse...') ?\n this.localizedTexts('Browse') : this.buttons.browse;\n this.browseButton.setAttribute('title', this.browseButton.textContent);\n }\n else {\n this.browseButton.innerHTML = '';\n this.browseButton.appendChild(this.buttons.browse);\n }\n if (this.uploadButton) {\n var uploadText = isNullOrUndefined(this.buttons.upload) ? 'Upload' : this.buttons.upload;\n this.buttons.upload = uploadText;\n if (typeof (this.buttons.upload) === 'string') {\n this.uploadButton.textContent = (this.buttons.upload === 'Upload') ?\n this.localizedTexts('Upload') : this.buttons.upload;\n this.uploadButton.setAttribute('title', this.uploadButton.textContent);\n }\n else {\n this.uploadButton.innerHTML = '';\n this.uploadButton.appendChild(this.buttons.upload);\n }\n }\n if (this.clearButton) {\n var clearText = isNullOrUndefined(this.buttons.clear) ? 'Clear' : this.buttons.clear;\n this.buttons.clear = clearText;\n if (typeof (this.buttons.clear) === 'string') {\n this.clearButton.textContent = (this.buttons.clear === 'Clear') ?\n this.localizedTexts('Clear') : this.buttons.clear;\n this.clearButton.setAttribute('title', this.clearButton.textContent);\n }\n else {\n this.clearButton.innerHTML = '';\n this.clearButton.appendChild(this.buttons.clear);\n }\n }\n };\n Uploader.prototype.initializeUpload = function () {\n this.element.setAttribute('tabindex', '-1');\n var inputWrapper = this.createElement('span', { className: INPUT_WRAPPER });\n this.element.parentElement.insertBefore(inputWrapper, this.element);\n this.dropAreaWrapper = this.createElement('div', { className: DROP_WRAPPER });\n this.element.parentElement.insertBefore(this.dropAreaWrapper, this.element);\n inputWrapper.appendChild(this.element);\n this.dropAreaWrapper.appendChild(this.browseButton);\n this.dropAreaWrapper.appendChild(inputWrapper);\n this.uploadWrapper = this.createElement('div', { className: CONTROL_WRAPPER });\n this.dropAreaWrapper.parentElement.insertBefore(this.uploadWrapper, this.dropAreaWrapper);\n this.uploadWrapper.appendChild(this.dropAreaWrapper);\n this.setDropArea();\n };\n Uploader.prototype.renderPreLoadFiles = function () {\n if (this.files.length) {\n if (this.enablePersistence && this.filesData.length) {\n this.createFileList(this.filesData);\n return;\n }\n if (isNullOrUndefined(this.files[0].size)) {\n return;\n }\n this.isPreloadFiles = true;\n var files = [].slice.call(this.files);\n var filesData = [];\n if (!this.multiple) {\n this.clearData();\n files = [files[0]];\n }\n for (var _i = 0, files_1 = files; _i < files_1.length; _i++) {\n var data = files_1[_i];\n var fileData = {\n name: data.name + '.' + data.type.split('.')[data.type.split('.').length - 1],\n rawFile: '',\n size: data.size,\n status: this.localizedTexts('uploadSuccessMessage'),\n type: data.type,\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '2'\n };\n filesData.push(fileData);\n this.filesData.push(fileData);\n }\n this.createFileList(filesData);\n if (!this.autoUpload && this.listParent && !this.actionButtons && (!this.isForm || this.allowUpload()) && this.showFileList) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n if (this.sequentialUpload) {\n this.count = this.filesData.length - 1;\n }\n this.isPreloadFiles = false;\n }\n };\n Uploader.prototype.checkActionButtonStatus = function () {\n if (this.actionButtons) {\n var length_1 = this.uploadWrapper.querySelectorAll('.' + VALIDATION_FAILS).length +\n this.uploadWrapper.querySelectorAll('.e-upload-fails:not(.e-upload-progress)').length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_SUCCESS).length +\n this.uploadWrapper.querySelectorAll('span.' + UPLOAD_INPROGRESS).length;\n if (length_1 > 0 && length_1 === this.uploadWrapper.querySelectorAll('li').length) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n else {\n this.uploadButton.removeAttribute('disabled');\n }\n }\n };\n Uploader.prototype.setDropArea = function () {\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (this.dropArea) {\n this.dropZoneElement = (typeof (this.dropArea) !== 'string') ? this.dropArea :\n select(this.dropArea, document);\n var element = this.element;\n var enableDropText = false;\n while (element.parentNode) {\n element = element.parentNode;\n if (element === this.dropZoneElement) {\n enableDropText = true;\n if (!dropTextArea) {\n this.createDropTextHint();\n }\n else {\n dropTextArea.innerHTML = this.localizedTexts('dropFilesHint');\n }\n }\n }\n if (!enableDropText && dropTextArea) {\n remove(dropTextArea);\n }\n }\n else if (!isNullOrUndefined(this.uploaderOptions) && this.uploaderOptions.dropArea === undefined) {\n this.createDropTextHint();\n this.dropZoneElement = this.uploadWrapper;\n this.setProperties({ dropArea: this.uploadWrapper }, true);\n }\n this.bindDropEvents();\n };\n Uploader.prototype.updateDropArea = function () {\n if (this.dropArea) {\n this.setDropArea();\n }\n else {\n this.dropZoneElement = null;\n var dropTextArea = this.dropAreaWrapper.querySelector('.e-file-drop');\n if (dropTextArea) {\n remove(dropTextArea);\n }\n }\n };\n Uploader.prototype.createDropTextHint = function () {\n var fileDropArea = this.createElement('span', { className: DROP_AREA });\n fileDropArea.innerHTML = this.localizedTexts('dropFilesHint');\n this.dropAreaWrapper.appendChild(fileDropArea);\n };\n Uploader.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr$1.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n Uploader.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttr$1.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + pro].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.uploadWrapper], updatedClassValues.split(' '));\n }\n }\n else if (pro === 'style') {\n var uploadStyle = this.uploadWrapper.getAttribute(pro);\n uploadStyle = !isNullOrUndefined(uploadStyle) ? (uploadStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.uploadWrapper.setAttribute(pro, uploadStyle);\n }\n else {\n this.uploadWrapper.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n Uploader.prototype.setMultipleSelection = function () {\n if (this.multiple && !this.element.hasAttribute('multiple')) {\n var newAttr = document.createAttribute('multiple');\n newAttr.value = 'multiple';\n this.element.setAttributeNode(newAttr);\n }\n else if (!this.multiple) {\n this.element.removeAttribute('multiple');\n }\n };\n Uploader.prototype.checkAutoUpload = function (fileData) {\n if (this.autoUpload) {\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.sequenceUpload(fileData);\n }\n else {\n this.upload(fileData);\n }\n this.removeActionButtons();\n }\n else if (!this.actionButtons) {\n this.renderActionButtons();\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.sequenceUpload = function (fileData) {\n if (this.filesData.length - fileData.length === 0 ||\n this.filesData[(this.filesData.length - fileData.length - 1)].statusCode !== '1') {\n if (this.multiple || this.count < 0) {\n ++this.count;\n }\n var isFileListCreated = this.showFileList ? false : true;\n if (typeof this.filesData[this.count] === 'object') {\n this.isFirstFileOnSelection = false;\n this.upload(this.filesData[this.count], isFileListCreated);\n if (this.filesData[this.count].statusCode === '0') {\n this.sequenceUpload(fileData);\n }\n }\n else {\n --this.count;\n }\n }\n };\n Uploader.prototype.setCSSClass = function (oldCSSClass) {\n var updatedOldCssClass = oldCSSClass;\n if (!isNullOrUndefined(oldCSSClass)) {\n updatedOldCssClass = (oldCSSClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCSSClass) && updatedOldCssClass !== '') {\n removeClass([this.uploadWrapper], updatedOldCssClass.split(' '));\n }\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(this.cssClass) && updatedCssClassValue !== '') {\n addClass([this.uploadWrapper], updatedCssClassValue.split(updatedCssClassValue.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Uploader.prototype.wireEvents = function () {\n EventHandler.add(this.browseButton, 'click', this.browseButtonClick, this);\n EventHandler.add(this.element, 'change', this.onSelectFiles, this);\n EventHandler.add(document, 'click', this.removeFocus, this);\n this.keyboardModule = new KeyboardEvents(this.uploadWrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n };\n Uploader.prototype.unWireEvents = function () {\n EventHandler.remove(this.browseButton, 'click', this.browseButtonClick);\n EventHandler.remove(this.element, 'change', this.onSelectFiles);\n EventHandler.remove(document, 'click', this.removeFocus);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n };\n Uploader.prototype.resetForm = function () {\n this.clearAll();\n };\n Uploader.prototype.keyActionHandler = function (e) {\n var targetElement = e.target;\n switch (e.action) {\n case 'enter':\n if (e.target === this.clearButton) {\n this.clearButtonClick();\n }\n else if (e.target === this.uploadButton) {\n this.uploadButtonClick();\n }\n else if (e.target === this.browseButton) {\n this.browseButtonClick();\n }\n else if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n var metaData = this.getCurrentMetaData(null, e);\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pauseUpload');\n this.abortUpload(metaData, false);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n this.resumeUpload(this.getCurrentMetaData(null, e), e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n var metaData = this.getCurrentMetaData(null, e);\n if (!isNullOrUndefined(metaData)) {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n else {\n var target = e.target.parentElement;\n var fileData = this.filesData[this.fileList.indexOf(target)];\n this.retry(fileData);\n }\n }\n else {\n this.removeFiles(e);\n if (!targetElement.classList.contains(ABORT_ICON)) {\n this.browseButton.focus();\n }\n }\n e.preventDefault();\n e.stopPropagation();\n break;\n }\n };\n Uploader.prototype.getCurrentMetaData = function (fileInfo, e) {\n var fileData;\n var targetMetaData;\n if (isNullOrUndefined(fileInfo)) {\n var target = e.target.parentElement;\n fileData = this.filesData[this.fileList.indexOf(target)];\n }\n else {\n fileData = fileInfo;\n }\n for (var i = 0; i < this.uploadMetaData.length; i++) {\n if (this.uploadMetaData[i].file.name === fileData.name) {\n targetMetaData = this.uploadMetaData[i];\n }\n }\n return targetMetaData;\n };\n Uploader.prototype.removeFocus = function () {\n if (this.uploadWrapper && this.listParent && this.listParent.querySelector('.' + ICON_FOCUSED)) {\n document.activeElement.blur();\n this.listParent.querySelector('.' + ICON_FOCUSED).classList.remove(ICON_FOCUSED);\n }\n };\n Uploader.prototype.browseButtonClick = function () {\n this.element.click();\n };\n Uploader.prototype.uploadButtonClick = function () {\n if (this.sequentialUpload) {\n this.sequenceUpload(this.filesData);\n }\n else {\n this.upload(this.filesData);\n }\n };\n Uploader.prototype.clearButtonClick = function () {\n this.clearAll();\n /* istanbul ignore next */\n if (this.sequentialUpload) {\n this.count = -1;\n }\n this.actionCompleteCount = 0;\n };\n Uploader.prototype.bindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.add(this.dropZoneElement, 'drop', this.dropElement, this);\n EventHandler.add(this.dropZoneElement, 'dragover', this.dragHover, this);\n EventHandler.add(this.dropZoneElement, 'dragleave', this.onDragLeave, this);\n EventHandler.add(this.dropZoneElement, 'paste', this.onPasteFile, this);\n EventHandler.add(this.dropZoneElement, 'dragenter', this.onDragEnter, this);\n }\n };\n Uploader.prototype.unBindDropEvents = function () {\n if (this.dropZoneElement) {\n EventHandler.remove(this.dropZoneElement, 'drop', this.dropElement);\n EventHandler.remove(this.dropZoneElement, 'dragover', this.dragHover);\n EventHandler.remove(this.dropZoneElement, 'dragleave', this.onDragLeave);\n EventHandler.remove(this.dropZoneElement, 'dragenter', this.onDragEnter);\n }\n };\n Uploader.prototype.onDragEnter = function (e) {\n if (!this.enabled) {\n return;\n }\n this.dropZoneElement.classList.add(DRAG_HOVER);\n this.dragCounter = this.dragCounter + 1;\n e.preventDefault();\n e.stopPropagation();\n };\n Uploader.prototype.onDragLeave = function () {\n if (!this.enabled) {\n return;\n }\n this.dragCounter = this.dragCounter - 1;\n if (!this.dragCounter) {\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n }\n };\n Uploader.prototype.dragHover = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.dropEffect !== 'Default') {\n e.dataTransfer.dropEffect = this.dropEffect.toLowerCase();\n }\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.dropElement = function (e) {\n this.dragCounter = 0;\n this.dropZoneElement.classList.remove(DRAG_HOVER);\n this.onSelectFiles(e);\n e.preventDefault();\n e.stopPropagation();\n };\n /* istanbul ignore next */\n Uploader.prototype.onPasteFile = function (event) {\n var item = event.clipboardData.items;\n if (event.type == 'paste' && this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = event.clipboardData.files;\n }\n if (item.length !== 1) {\n return;\n }\n var pasteFile = [].slice.call(item)[0];\n if ((pasteFile.kind === 'file') && pasteFile.type.match('^image/')) {\n this.renderSelectedFiles(event, [pasteFile.getAsFile()], false, true);\n }\n };\n Uploader.prototype.getSelectedFiles = function (index) {\n var data = [];\n var liElement = this.fileList[index];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < index; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n for (var j = startIndex; j < (startIndex + nameElements); j++) {\n data.push(allFiles[j]);\n }\n return data;\n };\n Uploader.prototype.removeFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var selectedElement = args.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var liElement = this.fileList[index];\n var formUpload = this.isFormUpload();\n var fileData = formUpload ? this.getSelectedFiles(index) : this.getFilesInArray(this.filesData[index]);\n if (isNullOrUndefined(fileData)) {\n return;\n }\n if (args.target.classList.contains(ABORT_ICON) && !formUpload) {\n fileData[0].statusCode = '5';\n if (!isNullOrUndefined(liElement)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n this.uploadSequential();\n }\n if (!(liElement.classList.contains(RESTRICT_RETRY))) {\n this.checkActionComplete(true);\n }\n }\n else if (!closest(args.target, '.' + SPINNER_PANE)) {\n this.remove(fileData, false, false, true, args);\n }\n this.checkActionButtonStatus();\n };\n Uploader.prototype.removeFilesData = function (file, customTemplate) {\n var index;\n if (customTemplate) {\n if (!this.showFileList) {\n index = this.filesData.indexOf(file);\n this.filesData.splice(index, 1);\n }\n return;\n }\n var selectedElement = this.getLiElement(file);\n if (isNullOrUndefined(selectedElement)) {\n return;\n }\n this.element.value = '';\n detach(selectedElement);\n index = this.fileList.indexOf(selectedElement);\n this.fileList.splice(index, 1);\n this.filesData.splice(index, 1);\n if (this.fileList.length === 0 && !isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n this.removeActionButtons();\n }\n if (this.sequentialUpload) {\n /* istanbul ignore next */\n if (index <= this.count) {\n --this.count;\n }\n }\n };\n Uploader.prototype.removeUploadedFile = function (file, eventArgs, removeDirectly, custom) {\n var _this = this;\n var selectedFiles = file;\n var ajax = new Ajax(this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n e.cancel = true;\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n });\n }\n else {\n _this.removingEventCallback(eventArgs, formData, selectedFiles, file);\n }\n };\n ajax.onLoad = function (e) {\n _this.removeCompleted(e, selectedFiles, custom);\n return {};\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.removeFailed(e, selectedFiles, custom);\n return {};\n };\n ajax.send(formData);\n };\n Uploader.prototype.removingEventCallback = function (eventArgs, formData, selectedFiles, file) {\n /* istanbul ignore next */\n var name = this.element.getAttribute('name');\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement) && (!isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON)) ||\n !isNullOrUndefined(liElement.querySelector('.' + REMOVE_ICON)))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON) ?\n liElement.querySelector('.' + DELETE_ICON) :\n liElement.querySelector('.' + REMOVE_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n if (eventArgs.postRawFile && !isNullOrUndefined(selectedFiles.rawFile) && selectedFiles.rawFile !== '') {\n formData.append(name, selectedFiles.rawFile, selectedFiles.name);\n }\n else {\n formData.append(name, selectedFiles.name);\n }\n this.updateFormData(formData, eventArgs.customFormData);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateFormData = function (formData, customData) {\n if (customData.length > 0 && customData[0]) {\n var _loop_1 = function (i) {\n var data = customData[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n formData.append(Object.keys(data)[0], value);\n };\n for (var i = 0; i < customData.length; i++) {\n _loop_1(i);\n }\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.updateCustomheader = function (request, currentRequest) {\n if (currentRequest.length > 0 && currentRequest[0]) {\n var _loop_2 = function (i) {\n var data = currentRequest[i];\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var value = Object.keys(data).map(function (e) {\n return data[\"\" + e];\n });\n request.setRequestHeader(Object.keys(data)[0], value);\n };\n for (var i = 0; i < currentRequest.length; i++) {\n _loop_2(i);\n }\n }\n };\n Uploader.prototype.removeCompleted = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedSuccessMessage'), '2')\n };\n this.trigger('success', args);\n this.removeFilesData(files, customTemplate);\n var index = this.uploadedFilesData.indexOf(files);\n this.uploadedFilesData.splice(index, 1);\n this.trigger('change', { files: this.uploadedFilesData });\n }\n else {\n this.removeFailed(e, files, customTemplate);\n }\n };\n Uploader.prototype.removeFailed = function (e, files, customTemplate) {\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var args = {\n e: e, response: response, operation: 'remove', file: this.updateStatus(files, this.localizedTexts('removedFailedMessage'), '0')\n };\n if (!customTemplate) {\n var index = this.filesData.indexOf(files);\n var rootElement = this.fileList[index];\n if (rootElement) {\n rootElement.classList.remove(UPLOAD_SUCCESS);\n rootElement.classList.add(UPLOAD_FAILED);\n var statusElement = rootElement.querySelector('.' + STATUS);\n if (statusElement) {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(UPLOAD_FAILED);\n }\n }\n this.checkActionButtonStatus();\n }\n this.trigger('failure', args);\n var liElement = this.getLiElement(files);\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n var spinnerTarget = liElement.querySelector('.' + DELETE_ICON);\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getFilesFromFolder = function (event) {\n this.filesEntries = [];\n var items = this.multiple ?\n event.dataTransfer.items : [event.dataTransfer.items[0]];\n var validDirectoryUpload = this.checkDirectoryUpload(items);\n if (!validDirectoryUpload) {\n return;\n }\n var _loop_3 = function (i) {\n var item = items[i].webkitGetAsEntry();\n if (item.isFile) {\n var files_2 = [];\n (item).file(function (fileObj) {\n var path = item.fullPath;\n files_2.push({ 'path': path, 'file': fileObj });\n });\n this_1.renderSelectedFiles(event, files_2, true);\n }\n else if (item.isDirectory) {\n this_1.traverseFileTree(item, event);\n }\n };\n var this_1 = this;\n for (var i = 0; i < items.length; i++) {\n _loop_3(i);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.checkDirectoryUpload = function (items) {\n for (var i = 0; items && i < items.length; i++) {\n var item = items[i].webkitGetAsEntry();\n if (item.isDirectory) {\n return true;\n }\n }\n return false;\n };\n /* eslint-disable @typescript-eslint/explicit-module-boundary-types */\n /* istanbul ignore next */\n Uploader.prototype.traverseFileTree = function (item, event) {\n /* eslint-enable @typescript-eslint/explicit-module-boundary-types */\n if (item.isFile) {\n this.filesEntries.push(item);\n }\n else if (item.isDirectory) {\n var directoryReader = item.createReader();\n this.readFileFromDirectory(directoryReader, event);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.readFileFromDirectory = function (directoryReader, event) {\n var _this = this;\n directoryReader.readEntries(function (entries) {\n for (var i = 0; i < entries.length; i++) {\n _this.traverseFileTree(entries[i], event);\n }\n _this.pushFilesEntries(event);\n if (entries.length) {\n _this.readFileFromDirectory(directoryReader);\n }\n });\n };\n Uploader.prototype.pushFilesEntries = function (event) {\n var _this = this;\n var files = [];\n var _loop_4 = function (i) {\n this_2.filesEntries[i].file(function (fileObj) {\n if (_this.filesEntries.length) {\n var path = _this.filesEntries[i].fullPath;\n files.push({ 'path': path, 'file': fileObj });\n if (i === _this.filesEntries.length - 1) {\n _this.filesEntries = [];\n _this.renderSelectedFiles(event, files, true);\n }\n }\n });\n };\n var this_2 = this;\n for (var i = 0; i < this.filesEntries.length; i++) {\n _loop_4(i);\n }\n };\n Uploader.prototype.onSelectFiles = function (args) {\n if (!this.enabled) {\n return;\n }\n var targetFiles;\n /* istanbul ignore next */\n if (args.type === 'drop') {\n if (this.directoryUpload) {\n this.getFilesFromFolder(args);\n }\n else {\n var files = this.sortFilesList = args.dataTransfer.files;\n if (this.browserName !== 'msie' && this.browserName !== 'edge' && this.browserName !== 'safari') {\n this.element.files = files;\n }\n if (files.length > 0) {\n targetFiles = this.multiple ? this.sortFileList(files) : [files[0]];\n this.renderSelectedFiles(args, targetFiles);\n }\n }\n }\n else {\n targetFiles = [].slice.call(args.target.files);\n this.renderSelectedFiles(args, targetFiles);\n }\n if (this.isAngular) {\n args.stopPropagation();\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.getBase64 = function (file) {\n return new Promise(function (resolve, reject) {\n var fileReader = new FileReader();\n fileReader.readAsDataURL(file);\n fileReader.onload = function () { return resolve(fileReader.result); };\n fileReader.onerror = function (error) { return reject(error); };\n });\n };\n /* istanbul ignore next */\n /* tslint:ignore */\n Uploader.prototype.renderSelectedFiles = function (args, targetFiles, directory, paste) {\n var _this = this;\n this.base64String = [];\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n isModified: false,\n modifiedFilesData: [],\n progressInterval: '',\n isCanceled: false,\n currentRequest: null,\n customFormData: null\n };\n /* istanbul ignore next */\n if (targetFiles.length < 1) {\n eventArgs.isCanceled = true;\n this.trigger('selected', eventArgs);\n return;\n }\n this.flag = true;\n var fileData = [];\n if (!this.multiple) {\n this.clearData(true);\n targetFiles = [targetFiles[0]];\n }\n for (var i = 0; i < targetFiles.length; i++) {\n var file = directory ? targetFiles[i].file : targetFiles[i];\n this.updateInitialFileDetails(args, targetFiles, file, i, fileData, directory, paste);\n }\n eventArgs.filesData = fileData;\n if (this.allowedExtensions.indexOf('*') > -1) {\n this.allTypes = true;\n }\n if (this.enableHtmlSanitizer) {\n for (var i = 0; i < fileData.length; i++) {\n var sanitizeFile = SanitizeHtmlHelper.beforeSanitize();\n var sanitizeFileName = SanitizeHtmlHelper.serializeValue(sanitizeFile, fileData[i].name);\n if (sanitizeFileName != fileData[i].name) {\n var encodedFileName = targetFiles[i].name.replace(/[\\u00A0-\\u9999<>\\&]/g, function (i) {\n return '&#' + i.charCodeAt(0) + ';';\n });\n fileData[i].name = encodedFileName;\n fileData[i].status = this.localizedTexts('invalidFileName');\n fileData[i].statusCode = '0';\n }\n }\n }\n if (!this.allTypes) {\n fileData = this.checkExtension(fileData);\n }\n this.trigger('selected', eventArgs, function (eventArgs) {\n _this._internalRenderSelect(eventArgs, fileData);\n });\n };\n Uploader.prototype.updateInitialFileDetails = function (args, \n // eslint-disable-next-line @typescript-eslint/indent\n targetFiles, file, i, fileData, directory, paste) {\n var fileName = directory ? targetFiles[i].path.substring(1, targetFiles[i].path.length) : paste ?\n getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name) :\n this.directoryUpload ? targetFiles[i].webkitRelativePath : file.name;\n var fileDetails = {\n name: fileName,\n rawFile: file,\n size: file.size,\n status: this.localizedTexts('readyToUploadMessage'),\n type: this.getFileType(file.name),\n validationMessages: this.validatedFileSize(file.size),\n statusCode: '1',\n id: getUniqueID(file.name.substring(0, file.name.lastIndexOf('.'))) + '.' + this.getFileType(file.name)\n };\n /* istanbul ignore next */\n if (paste) {\n fileDetails.fileSource = 'paste';\n }\n fileDetails.status = fileDetails.validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n fileDetails.validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : fileDetails.status;\n if (fileDetails.validationMessages.minSize !== '' || fileDetails.validationMessages.maxSize !== '') {\n fileDetails.statusCode = '0';\n }\n fileData.push(fileDetails);\n };\n Uploader.prototype._internalRenderSelect = function (eventArgs, fileData) {\n if (!eventArgs.cancel) {\n /* istanbul ignore next */\n this.selectedFiles = this.selectedFiles.concat(fileData);\n this.btnTabIndex = this.disableKeyboardNavigation ? '-1' : '0';\n if (this.showFileList) {\n if (eventArgs.isModified && eventArgs.modifiedFilesData.length > 0) {\n for (var j = 0; j < eventArgs.modifiedFilesData.length; j++) {\n for (var k = 0; k < fileData.length; k++) {\n if (eventArgs.modifiedFilesData[j].id === fileData[k].id) {\n eventArgs.modifiedFilesData[j].rawFile = fileData[k].rawFile;\n }\n }\n }\n var dataFiles = this.allTypes ? eventArgs.modifiedFilesData :\n this.checkExtension(eventArgs.modifiedFilesData);\n this.updateSortedFileList(dataFiles);\n this.filesData = dataFiles;\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(dataFiles);\n }\n }\n else {\n this.createFileList(fileData, true);\n this.filesData = this.filesData.concat(fileData);\n if (!this.isForm || this.allowUpload()) {\n this.checkAutoUpload(fileData);\n }\n }\n if (!isNullOrUndefined(eventArgs.progressInterval) && eventArgs.progressInterval !== '') {\n this.progressInterval = eventArgs.progressInterval;\n }\n }\n else {\n this.filesData = this.filesData.concat(fileData);\n if (this.autoUpload) {\n this.upload(this.filesData, true);\n }\n }\n this.raiseActionComplete();\n this.isFirstFileOnSelection = true;\n }\n };\n Uploader.prototype.allowUpload = function () {\n var allowFormUpload = false;\n if (this.isForm && (!isNullOrUndefined(this.asyncSettings.saveUrl) && this.asyncSettings.saveUrl !== '')) {\n allowFormUpload = true;\n }\n return allowFormUpload;\n };\n Uploader.prototype.isFormUpload = function () {\n var isFormUpload = false;\n if (this.isForm && ((isNullOrUndefined(this.asyncSettings.saveUrl) || this.asyncSettings.saveUrl === '')\n && (isNullOrUndefined(this.asyncSettings.removeUrl) || this.asyncSettings.removeUrl === ''))) {\n isFormUpload = true;\n }\n return isFormUpload;\n };\n Uploader.prototype.clearData = function (singleUpload) {\n if (!isNullOrUndefined(this.listParent)) {\n detach(this.listParent);\n this.listParent = null;\n }\n if (this.browserName !== 'msie' && !singleUpload) {\n this.element.value = '';\n }\n this.fileList = [];\n this.filesData = [];\n this.removeActionButtons();\n };\n Uploader.prototype.updateSortedFileList = function (filesData) {\n var previousListClone = this.createElement('div', { id: 'clonewrapper' });\n var added = -1;\n var removedList;\n if (this.listParent) {\n for (var i = 0; i < this.listParent.querySelectorAll('li').length; i++) {\n var liElement = this.listParent.querySelectorAll('li')[i];\n previousListClone.appendChild(liElement.cloneNode(true));\n }\n removedList = this.listParent.querySelectorAll('li');\n for (var _i = 0, removedList_1 = removedList; _i < removedList_1.length; _i++) {\n var item = removedList_1[_i];\n detach(item);\n }\n this.removeActionButtons();\n var oldList = [].slice.call(previousListClone.childNodes);\n detach(this.listParent);\n this.listParent = null;\n this.fileList = [];\n this.createParentUL();\n for (var index = 0; index < filesData.length; index++) {\n for (var j = 0; j < this.filesData.length; j++) {\n if (this.filesData[j].name === filesData[index].name) {\n this.listParent.appendChild(oldList[j]);\n EventHandler.add(oldList[j].querySelector('.e-icons'), 'click', this.removeFiles, this);\n this.fileList.push(oldList[j]);\n added = index;\n }\n }\n if (added !== index) {\n this.createFileList([filesData[index]]);\n }\n }\n }\n else {\n this.createFileList(filesData);\n }\n };\n Uploader.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n Uploader.prototype.checkExtension = function (files) {\n var dropFiles = files;\n if (!this.isBlank(this.allowedExtensions)) {\n var allowedExtensions = [];\n var extensions = this.allowedExtensions.split(',');\n for (var _i = 0, extensions_1 = extensions; _i < extensions_1.length; _i++) {\n var extension = extensions_1[_i];\n allowedExtensions.push(extension.trim().toLocaleLowerCase());\n }\n for (var i = 0; i < files.length; i++) {\n if (allowedExtensions.indexOf(('.' + files[i].type).toLocaleLowerCase()) === -1) {\n files[i].status = this.localizedTexts('invalidFileType');\n files[i].statusCode = '0';\n }\n }\n }\n return dropFiles;\n };\n Uploader.prototype.validatedFileSize = function (fileSize) {\n var minSizeError = '';\n var maxSizeError = '';\n if (fileSize < this.minFileSize) {\n minSizeError = this.localizedTexts('invalidMinFileSize');\n }\n else if (fileSize > this.maxFileSize) {\n maxSizeError = this.localizedTexts('invalidMaxFileSize');\n }\n else {\n minSizeError = '';\n maxSizeError = '';\n }\n var errorMessage = { minSize: minSizeError, maxSize: maxSizeError };\n return errorMessage;\n };\n Uploader.prototype.isPreLoadFile = function (fileData) {\n var isPreload = false;\n for (var i = 0; i < this.files.length; i++) {\n if (this.files[i].name === fileData.name.slice(0, fileData.name.lastIndexOf('.')) && this.files[i].type === fileData.type) {\n isPreload = true;\n }\n }\n return isPreload;\n };\n Uploader.prototype.createCustomfileList = function (fileData) {\n this.createParentUL();\n for (var _i = 0, fileData_1 = fileData; _i < fileData_1.length; _i++) {\n var listItem = fileData_1[_i];\n var listElement = this.createElement('li', { className: FILE, attrs: { 'data-file-name': listItem.name } });\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(listItem, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, listElement);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, listElement);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: listElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(listElement);\n this.fileList.push(listElement);\n }\n this.renderReactTemplates();\n };\n Uploader.prototype.createParentUL = function () {\n if (isNullOrUndefined(this.listParent)) {\n this.listParent = this.createElement('ul', { className: LIST_PARENT });\n this.uploadWrapper.appendChild(this.listParent);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formFileList = function (fileData, files) {\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n var fileContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var statusMessage;\n for (var _i = 0, fileData_2 = fileData; _i < fileData_2.length; _i++) {\n var listItem = fileData_2[_i];\n var fileNameEle = this.createElement('span', { className: FILE_NAME });\n fileNameEle.innerHTML = this.getFileNameOnly(listItem.name);\n var fileTypeEle = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileTypeEle.innerHTML = '.' + fileType;\n if (!fileType) {\n fileTypeEle.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n fileContainer.appendChild(fileNameEle);\n fileContainer.appendChild(fileTypeEle);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileTypeEle);\n rtlContainer.appendChild(fileNameEle);\n fileContainer.appendChild(rtlContainer);\n }\n this.truncateName(fileNameEle);\n statusMessage = this.formValidateFileInfo(listItem, fileList);\n }\n fileList.appendChild(fileContainer);\n this.setListToFileInfo(fileData, fileList);\n var index = this.listParent.querySelectorAll('li').length;\n var infoEle = this.createElement('span');\n if (fileList.classList.contains(INVALID_FILE)) {\n infoEle.classList.add(STATUS);\n infoEle.classList.add(INVALID_FILE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n infoEle.classList.add(fileData.length > 1 ? INFORMATION : FILE_SIZE);\n infoEle.innerText = fileData.length > 1 ? this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData)) : this.bytesToSize(fileData[0].size);\n this.createFormInput(fileData);\n }\n fileContainer.appendChild(infoEle);\n if (isNullOrUndefined(fileList.querySelector('.e-icons'))) {\n var iconElement = this.createElement('span', { className: 'e-icons', attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n fileList.appendChild(fileContainer);\n fileList.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n iconElement.classList.add(REMOVE_ICON);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: this.mergeFileInfo(fileData, fileList),\n index: index,\n isPreload: this.isPreLoadFile(this.mergeFileInfo(fileData, fileList))\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n };\n Uploader.prototype.formValidateFileInfo = function (listItem, fileList) {\n var statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n this.addInvalidClass(fileList);\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n this.addInvalidClass(fileList);\n statusMessage = typeValidationMessage;\n }\n return statusMessage;\n };\n Uploader.prototype.addInvalidClass = function (fileList) {\n fileList.classList.add(INVALID_FILE);\n };\n Uploader.prototype.createFormInput = function (fileData) {\n if (this.browserName !== 'safari') {\n var inputElement = this.element.cloneNode(true);\n inputElement.classList.add(HIDDEN_INPUT);\n for (var _i = 0, fileData_3 = fileData; _i < fileData_3.length; _i++) {\n var listItem = fileData_3[_i];\n listItem.input = inputElement;\n }\n inputElement.setAttribute('name', this.uploaderName);\n this.uploadWrapper.querySelector('.' + INPUT_WRAPPER).appendChild(inputElement);\n if (this.browserName !== 'msie' && this.browserName !== 'edge') {\n this.element.value = '';\n }\n }\n };\n Uploader.prototype.getFileSize = function (fileData) {\n var fileSize = 0;\n for (var _i = 0, fileData_4 = fileData; _i < fileData_4.length; _i++) {\n var file = fileData_4[_i];\n fileSize += file.size;\n }\n return fileSize;\n };\n Uploader.prototype.mergeFileInfo = function (fileData, fileList) {\n var result = {\n name: '',\n rawFile: '',\n size: 0,\n status: '',\n type: '',\n validationMessages: { minSize: '', maxSize: '' },\n statusCode: '1',\n list: fileList\n };\n var fileNames = [];\n var type = '';\n for (var _i = 0, fileData_5 = fileData; _i < fileData_5.length; _i++) {\n var listItem = fileData_5[_i];\n fileNames.push(listItem.name);\n type = listItem.type;\n }\n result.name = fileNames.join(', ');\n result.size = this.getFileSize(fileData);\n result.type = type;\n result.status = this.statusForFormUpload(fileData, fileList);\n return result;\n };\n Uploader.prototype.statusForFormUpload = function (fileData, fileList) {\n var isValid = true;\n var statusMessage;\n for (var _i = 0, fileData_6 = fileData; _i < fileData_6.length; _i++) {\n var listItem = fileData_6[_i];\n statusMessage = listItem.status;\n var validationMessages = this.validatedFileSize(listItem.size);\n if (validationMessages.minSize !== '' || validationMessages.maxSize !== '') {\n isValid = false;\n statusMessage = validationMessages.minSize !== '' ? this.localizedTexts('invalidMinFileSize') :\n validationMessages.maxSize !== '' ? this.localizedTexts('invalidMaxFileSize') : statusMessage;\n }\n var typeValidationMessage = this.checkExtension(this.getFilesInArray(listItem))[0].status;\n if (typeValidationMessage === this.localizedTexts('invalidFileType')) {\n isValid = false;\n statusMessage = typeValidationMessage;\n }\n }\n if (!isValid) {\n fileList.classList.add(INVALID_FILE);\n statusMessage = fileData.length > 1 ? this.localizedTexts('invalidFileSelection') : statusMessage;\n }\n else {\n statusMessage = this.localizedTexts('totalFiles') + ': ' + fileData.length + ' , '\n + this.localizedTexts('size') + ': ' +\n this.bytesToSize(this.getFileSize(fileData));\n }\n return statusMessage;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.formCustomFileList = function (fileData, files) {\n this.createParentUL();\n var fileList = this.createElement('li', { className: FILE });\n fileList.setAttribute('data-files-count', fileData.length + '');\n this.setListToFileInfo(fileData, fileList);\n var result = this.mergeFileInfo(fileData, fileList);\n fileList.setAttribute('data-file-name', result.name);\n this.uploadTemplateFn = this.templateComplier(this.template);\n var liTempCompiler = this.uploadTemplateFn(result, this, 'template', this.element.id + 'Template', this.isStringTemplate, null, fileList);\n if (liTempCompiler) {\n var fromElements = [].slice.call(liTempCompiler);\n append(fromElements, fileList);\n }\n var index = this.listParent.querySelectorAll('li').length;\n if (!fileList.classList.contains(INVALID_FILE)) {\n this.createFormInput(fileData);\n }\n var eventArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n var eventsArgs = {\n element: fileList,\n fileInfo: result,\n index: index,\n isPreload: this.isPreLoadFile(result)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(fileList);\n this.fileList.push(fileList);\n this.renderReactTemplates();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Create the file list for specified files data.\n *\n * @param { FileInfo[] } fileData - Specifies the files data for file list creation.\n * @returns {void}\n */\n Uploader.prototype.createFileList = function (fileData, isSelectedFile) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n this.createParentUL();\n if (this.template !== '' && !isNullOrUndefined(this.template)) {\n if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formCustomFileList(fileData, this.element.files);\n }\n else {\n this.createCustomfileList(fileData);\n }\n }\n else if (this.isFormUpload()) {\n this.uploadWrapper.classList.add(FORM_UPLOAD);\n this.formFileList(fileData, this.element.files);\n }\n else {\n for (var _i = 0, fileData_7 = fileData; _i < fileData_7.length; _i++) {\n var listItem = fileData_7[_i];\n var liElement = this.createElement('li', {\n className: FILE,\n attrs: { 'data-file-name': listItem.name, 'data-files-count': '1' }\n });\n var textContainer = this.createElement('span', { className: TEXT_CONTAINER });\n var textElement = this.createElement('span', { className: FILE_NAME, attrs: { 'title': listItem.name } });\n textElement.innerHTML = this.getFileNameOnly(listItem.name);\n var fileExtension = this.createElement('span', { className: FILE_TYPE });\n var fileType = this.getFileType(listItem.name);\n fileExtension.innerHTML = '.' + fileType;\n if (!fileType) {\n fileExtension.classList.add('e-hidden');\n }\n if (!this.enableRtl) {\n textContainer.appendChild(textElement);\n textContainer.appendChild(fileExtension);\n }\n else {\n var rtlContainer = this.createElement('span', { className: RTL_CONTAINER });\n rtlContainer.appendChild(fileExtension);\n rtlContainer.appendChild(textElement);\n textContainer.appendChild(rtlContainer);\n }\n var fileSize = this.createElement('span', { className: FILE_SIZE });\n fileSize.innerHTML = this.bytesToSize(listItem.size);\n textContainer.appendChild(fileSize);\n var statusElement = this.createElement('span', { className: STATUS });\n textContainer.appendChild(statusElement);\n statusElement.innerHTML = listItem.status;\n liElement.appendChild(textContainer);\n var iconElement = this.createElement('span', { className: ' e-icons',\n attrs: { 'tabindex': this.btnTabIndex } });\n /* istanbul ignore next */\n if (this.browserName === 'msie') {\n iconElement.classList.add('e-msie');\n }\n iconElement.setAttribute('title', this.localizedTexts('remove'));\n liElement.appendChild(iconElement);\n EventHandler.add(iconElement, 'click', this.removeFiles, this);\n if (listItem.statusCode === '2') {\n statusElement.classList.add(UPLOAD_SUCCESS);\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', this.localizedTexts('delete'));\n }\n else if (listItem.statusCode !== '1') {\n statusElement.classList.remove(UPLOAD_SUCCESS);\n statusElement.classList.add(VALIDATION_FAILS);\n }\n if (this.autoUpload && listItem.statusCode === '1' && this.asyncSettings.saveUrl !== '') {\n statusElement.innerHTML = '';\n }\n if (!iconElement.classList.contains(DELETE_ICON)) {\n iconElement.classList.add(REMOVE_ICON);\n }\n var index = fileData.indexOf(listItem);\n var eventArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n var eventsArgs = {\n element: liElement,\n fileInfo: listItem,\n index: index,\n isPreload: this.isPreLoadFile(listItem)\n };\n this.trigger('rendering', eventArgs);\n this.trigger('fileListRendering', eventsArgs);\n this.listParent.appendChild(liElement);\n this.fileList.push(liElement);\n this.truncateName(textElement);\n var preventActionComplete = this.flag;\n if (this.isPreLoadFile(listItem)) {\n this.flag = false;\n this.checkActionComplete(true);\n this.flag = preventActionComplete;\n }\n }\n }\n };\n Uploader.prototype.getSlicedName = function (nameElement) {\n var text = nameElement.textContent;\n nameElement.dataset.tail = text.slice(text.length - 10);\n };\n Uploader.prototype.setListToFileInfo = function (fileData, fileList) {\n for (var _i = 0, fileData_8 = fileData; _i < fileData_8.length; _i++) {\n var listItem = fileData_8[_i];\n listItem.list = fileList;\n }\n };\n Uploader.prototype.truncateName = function (name) {\n var nameElement = name;\n if (this.browserName !== 'edge' && nameElement.offsetWidth < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n /* istanbul ignore next */\n }\n else if (nameElement.offsetWidth + 1 < nameElement.scrollWidth) {\n this.getSlicedName(nameElement);\n }\n };\n Uploader.prototype.getFileType = function (name) {\n var extension;\n var index = name.lastIndexOf('.');\n if (index >= 0) {\n extension = name.substring(index + 1);\n }\n return extension ? extension : '';\n };\n Uploader.prototype.getFileNameOnly = function (name) {\n var type = this.getFileType(name);\n var names = name.split('.' + type);\n return type = names[0];\n };\n Uploader.prototype.setInitialAttributes = function () {\n if (this.initialAttr.accept) {\n this.element.setAttribute('accept', this.initialAttr.accept);\n }\n if (this.initialAttr.disabled) {\n this.element.setAttribute('disabled', 'disabled');\n }\n if (this.initialAttr.multiple) {\n var newAttr = document.createAttribute('multiple');\n this.element.setAttributeNode(newAttr);\n }\n };\n Uploader.prototype.filterfileList = function (files) {\n var filterFiles = [];\n var li;\n for (var i = 0; i < files.length; i++) {\n li = this.getLiElement(files[i]);\n if (!li.classList.contains(UPLOAD_SUCCESS)) {\n filterFiles.push(files[i]);\n }\n }\n return filterFiles;\n };\n Uploader.prototype.updateStatus = function (files, status, statusCode, updateLiStatus) {\n if (updateLiStatus === void 0) { updateLiStatus = true; }\n if (!(status === '' || isNullOrUndefined(status)) && !(statusCode === '' || isNullOrUndefined(statusCode))) {\n files.status = status;\n files.statusCode = statusCode;\n }\n if (updateLiStatus) {\n var li = this.getLiElement(files);\n if (!isNullOrUndefined(li)) {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS)) && !((status === '' || isNullOrUndefined(status)))) {\n li.querySelector('.' + STATUS).textContent = status;\n }\n }\n }\n return files;\n };\n Uploader.prototype.getLiElement = function (files) {\n var index;\n for (var i = 0; i < this.filesData.length; i++) {\n if (!isNullOrUndefined(files) && ((!isNullOrUndefined(this.filesData[i].id) &&\n !isNullOrUndefined(files.id)) ? (this.filesData[i].name === files.name &&\n this.filesData[i].id === files.id) : this.filesData[i].name === files.name)) {\n index = i;\n }\n }\n return this.fileList[index];\n };\n Uploader.prototype.createProgressBar = function (liElement) {\n var progressbarWrapper = this.createElement('span', { className: PROGRESS_WRAPPER });\n var progressBar = this.createElement('progressbar', { className: PROGRESSBAR, attrs: { value: '0', max: '100' } });\n var progressbarInnerWrapper = this.createElement('span', { className: PROGRESS_INNER_WRAPPER });\n progressBar.setAttribute('style', 'width: 0%');\n var progressbarText = this.createElement('span', { className: PROGRESSBAR_TEXT });\n progressbarText.textContent = '0%';\n progressbarInnerWrapper.appendChild(progressBar);\n progressbarWrapper.appendChild(progressbarInnerWrapper);\n progressbarWrapper.appendChild(progressbarText);\n liElement.querySelector('.' + TEXT_CONTAINER).appendChild(progressbarWrapper);\n };\n /* istanbul ignore next */\n Uploader.prototype.updateProgressbar = function (e, li) {\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && !isNullOrUndefined(li.querySelector('.' + PROGRESSBAR))) {\n if (!isNullOrUndefined(this.progressInterval) && this.progressInterval !== '') {\n var value = (Math.round((e.loaded / e.total) * 100)) % parseInt(this.progressInterval, 10);\n if (value === 0 || value === 100) {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n else {\n this.changeProgressValue(li, Math.round((e.loaded / e.total) * 100).toString() + '%');\n }\n }\n };\n Uploader.prototype.changeProgressValue = function (li, progressValue) {\n li.querySelector('.' + PROGRESSBAR).setAttribute('style', 'width:' + progressValue);\n li.querySelector('.' + PROGRESSBAR_TEXT).textContent = progressValue;\n };\n Uploader.prototype.uploadInProgress = function (e, files, customUI, request) {\n var li = this.getLiElement(files);\n if (isNullOrUndefined(li) && (!customUI)) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n /* istanbul ignore next */\n if (files.statusCode === '5') {\n this.cancelUploadingFile(files, e, request, li);\n }\n if (!(li.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0) && li.querySelector('.' + STATUS)) {\n li.querySelector('.' + STATUS).classList.add(UPLOAD_INPROGRESS);\n this.createProgressBar(li);\n this.updateProgressBarClasses(li, UPLOAD_INPROGRESS);\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n this.updateProgressbar(e, li);\n var iconEle = li.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(ABORT_ICON, UPLOAD_INPROGRESS);\n iconEle.setAttribute('title', this.localizedTexts('abort'));\n iconEle.classList.remove(REMOVE_ICON);\n }\n }\n else {\n this.cancelUploadingFile(files, e, request);\n }\n var args = { e: e, operation: 'upload', file: this.updateStatus(files, this.localizedTexts('inProgress'), '3') };\n this.trigger('progress', args);\n };\n /* istanbul ignore next */\n Uploader.prototype.cancelUploadingFile = function (files, e, request, li) {\n var _this = this;\n if (files.statusCode === '5') {\n var eventArgs = {\n event: e,\n fileData: files,\n cancel: false,\n customFormData: []\n };\n this.trigger('canceling', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n files.statusCode = '3';\n if (!isNullOrUndefined(li)) {\n var spinnerTarget = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(li.querySelector('.e-spinner-pane'));\n }\n }\n }\n else {\n request.emitError = false;\n request.httpRequest.abort();\n var formData = new FormData();\n if (files.statusCode === '5') {\n var name_1 = _this.element.getAttribute('name');\n formData.append(name_1, files.name);\n formData.append('cancel-uploading', files.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removecanceledFile(e, files);\n return {};\n };\n ajax.send(formData);\n }\n }\n });\n }\n };\n Uploader.prototype.removecanceledFile = function (e, file) {\n var liElement = this.getLiElement(file);\n if (isNullOrUndefined(liElement) || liElement.querySelector('.' + RETRY_ICON) || isNullOrUndefined(liElement.querySelector('.' + ABORT_ICON))) {\n return;\n }\n this.updateStatus(file, this.localizedTexts('fileUploadCancel'), '5');\n this.renderFailureState(e, file, liElement);\n var spinnerTarget = liElement.querySelector('.' + REMOVE_ICON);\n if (!isNullOrUndefined(liElement)) {\n hideSpinner(spinnerTarget);\n if (!isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var args = { event: e, response: requestResponse, operation: 'cancel', file: file };\n this.trigger('success', args);\n };\n Uploader.prototype.renderFailureState = function (e, file, liElement) {\n var _this = this;\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n if (!isNullOrUndefined(liElement.querySelector('.e-file-status'))) {\n liElement.querySelector('.e-file-status').classList.add(UPLOAD_FAILED);\n }\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n if (isNullOrUndefined(deleteIcon)) {\n return;\n }\n deleteIcon.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n deleteIcon.parentElement.insertBefore(this.pauseButton, deleteIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n /* istanbul ignore next */\n retryElement.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement, false);\n }, false);\n };\n Uploader.prototype.reloadcanceledFile = function (e, file, liElement, custom) {\n file.statusCode = '1';\n file.status = this.localizedTexts('readyToUploadMessage');\n if (!custom) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).classList.remove(UPLOAD_FAILED);\n }\n if (!isNullOrUndefined(liElement.querySelector('.' + RETRY_ICON))) {\n detach(liElement.querySelector('.' + RETRY_ICON));\n }\n this.pauseButton = null;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(liElement)) {\n liElement.classList.add(RESTRICT_RETRY);\n }\n this.upload([file]);\n };\n /* istanbul ignore next */\n Uploader.prototype.uploadComplete = function (e, file, customUI) {\n var status = e.target;\n if (status.readyState === 4 && status.status >= 200 && status.status <= 299) {\n var li = this.getLiElement(file);\n if (isNullOrUndefined(li) && (!customUI || isNullOrUndefined(customUI))) {\n return;\n }\n if (!isNullOrUndefined(li)) {\n this.updateProgressBarClasses(li, UPLOAD_SUCCESS);\n this.removeProgressbar(li, 'success');\n var iconEle = li.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(iconEle)) {\n iconEle.classList.add(DELETE_ICON);\n iconEle.setAttribute('title', this.localizedTexts('delete'));\n iconEle.classList.remove(ABORT_ICON);\n iconEle.classList.remove(UPLOAD_INPROGRESS);\n }\n }\n this.raiseSuccessEvent(e, file);\n }\n else {\n this.uploadFailed(e, file);\n }\n };\n Uploader.prototype.getResponse = function (e) {\n var target = e.currentTarget;\n var response = {\n readyState: target.readyState,\n statusCode: target.status,\n statusText: target.statusText,\n headers: target.getAllResponseHeaders(),\n withCredentials: target.withCredentials\n };\n return response;\n };\n Uploader.prototype.raiseSuccessEvent = function (e, file) {\n var _this = this;\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadSuccessMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '2', false), statusText: statusMessage\n };\n var liElement = this.getLiElement(file);\n if (!isNullOrUndefined(liElement)) {\n var spinnerEle = liElement.querySelector('.' + SPINNER_PANE);\n if (!isNullOrUndefined(spinnerEle)) {\n hideSpinner(liElement);\n detach(spinnerEle);\n }\n }\n this.trigger('success', args, function (args) {\n _this.updateStatus(file, args.statusText, '2');\n _this.uploadedFilesData.push(file);\n _this.trigger('change', { file: _this.uploadedFilesData });\n _this.checkActionButtonStatus();\n if (_this.fileList.length > 0) {\n if ((!(_this.getLiElement(file)).classList.contains(RESTRICT_RETRY))) {\n _this.uploadSequential();\n _this.checkActionComplete(true);\n }\n else {\n /* istanbul ignore next */\n (_this.getLiElement(file)).classList.remove(RESTRICT_RETRY);\n }\n }\n });\n };\n Uploader.prototype.uploadFailed = function (e, file) {\n var _this = this;\n var li = this.getLiElement(file);\n var response = e && e.currentTarget ? this.getResponse(e) : null;\n var statusMessage = this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: response, operation: 'upload', file: this.updateStatus(file, statusMessage, '0', false), statusText: statusMessage\n };\n if (!isNullOrUndefined(li)) {\n this.renderFailureState(e, file, li);\n }\n this.trigger('failure', args, function (args) {\n _this.updateStatus(file, args.statusText, '0');\n _this.checkActionButtonStatus();\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n };\n Uploader.prototype.uploadSequential = function () {\n if (this.sequentialUpload) {\n if (this.autoUpload) {\n /* istanbul ignore next */\n this.checkAutoUpload(this.filesData);\n }\n else {\n this.uploadButtonClick();\n }\n }\n };\n Uploader.prototype.checkActionComplete = function (increment) {\n if (increment) {\n ++this.actionCompleteCount;\n }\n else {\n --this.actionCompleteCount;\n }\n this.raiseActionComplete();\n };\n Uploader.prototype.raiseActionComplete = function () {\n if ((this.filesData.length === this.actionCompleteCount) && this.flag) {\n this.flag = false;\n var eventArgs = {\n fileData: []\n };\n eventArgs.fileData = this.getSelectedFileStatus(this.selectedFiles);\n this.trigger('actionComplete', eventArgs);\n }\n };\n Uploader.prototype.getSelectedFileStatus = function (selectedFiles) {\n var matchFiles = [];\n var matchFilesIndex = 0;\n for (var selectFileIndex = 0; selectFileIndex < selectedFiles.length; selectFileIndex++) {\n var selectedFileData = selectedFiles[selectFileIndex];\n for (var fileDataIndex = 0; fileDataIndex < this.filesData.length; fileDataIndex++) {\n if (this.filesData[fileDataIndex].name === selectedFileData.name && this.filesData[fileDataIndex].status === selectedFileData.status) {\n matchFiles[matchFilesIndex] = this.filesData[fileDataIndex];\n ++matchFilesIndex;\n }\n }\n }\n return matchFiles;\n };\n Uploader.prototype.updateProgressBarClasses = function (li, className) {\n var progressBar = li.querySelector('.' + PROGRESSBAR);\n if (!isNullOrUndefined(progressBar)) {\n progressBar.classList.add(className);\n }\n };\n Uploader.prototype.removeProgressbar = function (li, callType) {\n var _this = this;\n if (!isNullOrUndefined(li.querySelector('.' + PROGRESS_WRAPPER))) {\n this.progressAnimation = new Animation({ duration: 1250 });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESS_WRAPPER), { name: 'FadeOut' });\n this.progressAnimation.animate(li.querySelector('.' + PROGRESSBAR_TEXT), { name: 'FadeOut' });\n setTimeout(function () {\n _this.animateProgressBar(li, callType);\n }, 750);\n }\n };\n /* istanbul ignore next */\n Uploader.prototype.animateProgressBar = function (li, callType) {\n if (callType === 'success') {\n li.classList.add(UPLOAD_SUCCESS);\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_SUCCESS);\n }\n }\n else {\n if (!isNullOrUndefined(li.querySelector('.' + STATUS))) {\n li.querySelector('.' + STATUS).classList.remove(UPLOAD_INPROGRESS);\n this.progressAnimation.animate(li.querySelector('.' + STATUS), { name: 'FadeIn' });\n li.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n }\n if (li.querySelector('.' + PROGRESS_WRAPPER)) {\n detach(li.querySelector('.' + PROGRESS_WRAPPER));\n }\n };\n Uploader.prototype.setExtensions = function (extensions) {\n if (extensions !== '' && !isNullOrUndefined(extensions)) {\n this.element.setAttribute('accept', extensions);\n }\n else {\n this.element.removeAttribute('accept');\n }\n };\n Uploader.prototype.templateComplier = function (uploadTemplate) {\n if (uploadTemplate) {\n try {\n if (selectAll(uploadTemplate, document).length) {\n return compile(select(uploadTemplate, document).innerHTML.trim());\n }\n else {\n return compile(uploadTemplate);\n }\n }\n catch (exception) {\n return compile(uploadTemplate);\n }\n }\n return undefined;\n };\n Uploader.prototype.setRTL = function () {\n if (this.enableRtl) {\n addClass([this.uploadWrapper], RTL);\n }\n else {\n removeClass([this.uploadWrapper], RTL);\n }\n };\n Uploader.prototype.localizedTexts = function (localeText) {\n this.l10n.setLocale(this.locale);\n return this.l10n.getConstant(localeText);\n };\n Uploader.prototype.setControlStatus = function () {\n if (!this.enabled) {\n this.uploadWrapper.classList.add(DISABLED);\n this.element.setAttribute('disabled', 'disabled');\n this.browseButton.setAttribute('disabled', 'disabled');\n if (!isNullOrUndefined(this.clearButton)) {\n this.clearButton.setAttribute('disabled', 'disabled');\n }\n if (!isNullOrUndefined(this.uploadButton)) {\n this.uploadButton.setAttribute('disabled', 'disabled');\n }\n }\n else {\n if (this.uploadWrapper.classList.contains(DISABLED)) {\n this.uploadWrapper.classList.remove(DISABLED);\n }\n if (!isNullOrUndefined(this.browseButton) && this.element.hasAttribute('disabled')) {\n this.element.removeAttribute('disabled');\n this.browseButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.clearButton) && this.clearButton.hasAttribute('disabled')) {\n this.clearButton.removeAttribute('disabled');\n }\n if (!isNullOrUndefined(this.uploadButton) && this.uploadButton.hasAttribute('disabled')) {\n this.uploadButton.hasAttribute('disabled');\n }\n }\n };\n Uploader.prototype.checkHTMLAttributes = function (isDynamic) {\n var attributes$$1 = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['accept', 'multiple', 'disabled'];\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'accept':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['allowedExtensions'] === undefined))\n || isDynamic) {\n this.setProperties({ allowedExtensions: this.element.getAttribute('accept') }, !isDynamic);\n this.initialAttr.accept = this.allowedExtensions;\n }\n break;\n case 'multiple':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['multiple'] === undefined)) || isDynamic) {\n var isMutiple = this.element.getAttribute(prop) === 'multiple' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ multiple: isMutiple }, !isDynamic);\n this.initialAttr.multiple = true;\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.uploaderOptions) || (this.uploaderOptions['enabled'] === undefined)) || isDynamic) {\n var isDisabled = this.element.getAttribute(prop) === 'disabled' ||\n this.element.getAttribute(prop) === '' || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: isDisabled }, !isDynamic);\n this.initialAttr.disabled = true;\n }\n }\n }\n }\n };\n Uploader.prototype.chunkUpload = function (file, custom, fileIndex) {\n var start = 0;\n var end = Math.min(this.asyncSettings.chunkSize, file.size);\n var index = 0;\n var blob = file.rawFile.slice(start, end);\n var metaData = { chunkIndex: index, blob: blob, file: file, start: start, end: end, retryCount: 0, request: null };\n this.sendRequest(file, metaData, custom, fileIndex);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.sendRequest = function (file, metaData, custom, fileIndex) {\n var _this = this;\n var formData = new FormData();\n var blob = file.rawFile.slice(metaData.start, metaData.end);\n formData.append(this.uploaderName, blob, file.name);\n formData.append('chunk-index', metaData.chunkIndex.toString());\n formData.append('chunkIndex', metaData.chunkIndex.toString());\n var totalChunk = Math.max(Math.ceil(file.size / this.asyncSettings.chunkSize), 1);\n formData.append('total-chunk', totalChunk.toString());\n formData.append('totalChunk', totalChunk.toString());\n var ajax = new Ajax({ url: this.asyncSettings.saveUrl, type: 'POST', async: true, contentType: null });\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.chunkUploadComplete(e, metaData, custom);\n return {};\n };\n ajax.onUploadProgress = function (e) {\n _this.chunkUploadInProgress(e, metaData, custom);\n return {};\n };\n var eventArgs = {\n fileData: file,\n customFormData: [],\n cancel: false,\n chunkSize: this.asyncSettings.chunkSize === 0 ? null : this.asyncSettings.chunkSize\n };\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n eventArgs.currentChunkIndex = metaData.chunkIndex;\n if (eventArgs.currentChunkIndex === 0) {\n // This event is currently not required but to avoid breaking changes for previous customer, we have included.\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n else {\n _this.trigger('chunkUploading', eventArgs, function (eventArgs) {\n _this.uploadingEventCallback(formData, eventArgs, e, file);\n });\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.chunkUploadFailed(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n metaData.request = ajax;\n };\n Uploader.prototype.uploadingEventCallback = function (formData, eventArgs, e, file) {\n if (eventArgs.cancel) {\n this.eventCancelByArgs(e, eventArgs, file);\n }\n else {\n this.updateFormData(formData, eventArgs.customFormData);\n }\n };\n Uploader.prototype.eventCancelByArgs = function (e, eventArgs, file) {\n var _this = this;\n e.cancel = true;\n if (eventArgs.fileData.statusCode === '5') {\n return;\n }\n eventArgs.fileData.statusCode = '5';\n eventArgs.fileData.status = this.localizedTexts('fileUploadCancel');\n var liElement = this.getLiElement(eventArgs.fileData);\n if (liElement) {\n if (!isNullOrUndefined(liElement.querySelector('.' + STATUS))) {\n liElement.querySelector('.' + STATUS).innerHTML = this.localizedTexts('fileUploadCancel');\n liElement.querySelector('.' + STATUS).classList.add(UPLOAD_FAILED);\n }\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-reload-btn', attrs: { 'tabindex': this.btnTabIndex } });\n var removeIcon = liElement.querySelector('.' + REMOVE_ICON);\n if (removeIcon) {\n removeIcon.parentElement.insertBefore(this.pauseButton, removeIcon);\n }\n this.pauseButton.setAttribute('title', this.localizedTexts('retry'));\n /* istanbul ignore next */\n this.pauseButton.addEventListener('click', function (e) {\n _this.reloadcanceledFile(e, file, liElement);\n }, false);\n this.checkActionButtonStatus();\n }\n };\n Uploader.prototype.checkChunkUpload = function () {\n return (this.asyncSettings.chunkSize <= 0 || isNullOrUndefined(this.asyncSettings.chunkSize)) ? false : true;\n };\n Uploader.prototype.chunkUploadComplete = function (e, metaData, custom) {\n var _this = this;\n var response = e.target;\n var liElement;\n if (response.readyState === 4 && response.status >= 200 && response.status < 300) {\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var totalChunk = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: totalChunk,\n chunkSize: this.asyncSettings.chunkSize,\n response: requestResponse\n };\n this.trigger('chunkSuccess', eventArgs);\n if (isNullOrUndefined(custom) || !custom) {\n liElement = this.getLiElement(metaData.file);\n }\n this.updateMetaData(metaData);\n if (metaData.end === metaData.file.size) {\n metaData.file.statusCode = '3';\n }\n if (metaData.file.statusCode === '5') {\n var eventArgs_1 = { event: e, fileData: metaData.file, cancel: false, customFormData: [] };\n this.trigger('canceling', eventArgs_1, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n metaData.file.statusCode = '3';\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(spinnerTarget)) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n _this.sendNextRequest(metaData);\n }\n else {\n metaData.request.emitError = false;\n response.abort();\n var formData = new FormData();\n var name_2 = _this.element.getAttribute('name');\n formData.append(name_2, metaData.file.name);\n formData.append('cancel-uploading', metaData.file.name);\n formData.append('cancelUploading', metaData.file.name);\n _this.updateFormData(formData, eventArgs.customFormData);\n var ajax = new Ajax(_this.asyncSettings.removeUrl, 'POST', true, null);\n ajax.emitError = false;\n ajax.onLoad = function (e) {\n _this.removeChunkFile(e, metaData, custom);\n return {};\n };\n ajax.send(formData);\n }\n });\n }\n else {\n if ((totalChunk - 1) === metaData.chunkIndex && totalChunk > metaData.chunkIndex) {\n var index = this.pausedData.indexOf(metaData);\n if (index >= 0) {\n this.pausedData.splice(index, 1);\n }\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n if (liElement && !isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n this.removeChunkProgressBar(metaData);\n }\n this.raiseSuccessEvent(e, metaData.file);\n return;\n }\n if (metaData.file.statusCode !== '4') {\n this.sendNextRequest(metaData);\n }\n }\n }\n else {\n this.chunkUploadFailed(e, metaData);\n }\n };\n Uploader.prototype.sendNextRequest = function (metaData) {\n metaData.start = metaData.end;\n metaData.end += this.asyncSettings.chunkSize;\n metaData.end = Math.min(metaData.end, metaData.file.size);\n metaData.chunkIndex += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.removeChunkFile = function (e, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) && !custom)) {\n var liElement = this.getLiElement(metaData.file);\n var deleteIcon = liElement.querySelector('.' + ABORT_ICON);\n var spinnerTarget = deleteIcon;\n this.updateStatus(metaData.file, this.localizedTexts('fileUploadCancel'), '5');\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n this.removeProgressbar(liElement, 'failure');\n deleteIcon && deleteIcon.classList.remove(ABORT_ICON);\n deleteIcon && deleteIcon.classList.add(REMOVE_ICON);\n deleteIcon && deleteIcon.setAttribute('title', this.localizedTexts('remove'));\n var pauseIcon = liElement.querySelector('.' + PAUSE_UPLOAD);\n pauseIcon && pauseIcon.classList.add(RETRY_ICON);\n pauseIcon && pauseIcon.classList.remove(PAUSE_UPLOAD);\n pauseIcon && pauseIcon.setAttribute('title', this.localizedTexts('retry'));\n if (!isNullOrUndefined(liElement) && !isNullOrUndefined(deleteIcon)\n && !isNullOrUndefined(liElement.querySelector('.e-spinner-pane'))) {\n hideSpinner(spinnerTarget);\n detach(liElement.querySelector('.e-spinner-pane'));\n }\n }\n };\n Uploader.prototype.pauseUpload = function (metaData, e, custom) {\n metaData.file.statusCode = '4';\n metaData.file.status = this.localizedTexts('pause');\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.abortUpload(metaData, custom, eventArgs);\n };\n Uploader.prototype.abortUpload = function (metaData, custom, eventArgs) {\n if (metaData.file.statusCode !== '4') {\n metaData.request.emitError = false;\n metaData.request.httpRequest.abort();\n }\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n var targetElement = liElement.querySelector('.' + PAUSE_UPLOAD);\n targetElement.classList.remove(PAUSE_UPLOAD);\n targetElement.classList.add(RESUME_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('resume'));\n targetElement.nextElementSibling.classList.add(REMOVE_ICON);\n targetElement.nextElementSibling.classList.remove(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('remove'));\n }\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData.splice(i, 1);\n }\n }\n this.pausedData.push(metaData);\n this.trigger('pausing', eventArgs);\n };\n Uploader.prototype.resumeUpload = function (metaData, e, custom) {\n var liElement = this.getLiElement(metaData.file);\n var targetElement;\n if (!isNullOrUndefined(liElement)) {\n targetElement = liElement.querySelector('.' + RESUME_UPLOAD);\n }\n if (!isNullOrUndefined(targetElement) && (isNullOrUndefined(custom) || !custom)) {\n targetElement.classList.remove(RESUME_UPLOAD);\n targetElement.classList.add(PAUSE_UPLOAD);\n targetElement.setAttribute('title', this.localizedTexts('pause'));\n targetElement.nextElementSibling.classList.remove(REMOVE_ICON);\n targetElement.nextElementSibling.classList.add(ABORT_ICON);\n targetElement.nextElementSibling.setAttribute('title', this.localizedTexts('abort'));\n }\n metaData.file.status = this.localizedTexts('inProgress');\n metaData.file.statusCode = '3';\n this.updateMetaData(metaData);\n var eventArgs = {\n event: e ? e : null,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n chunkCount: Math.round(metaData.file.size / this.asyncSettings.chunkSize),\n chunkSize: this.asyncSettings.chunkSize\n };\n this.trigger('resuming', eventArgs);\n for (var i = 0; i < this.pausedData.length; i++) {\n if (this.pausedData[i].end === this.pausedData[i].file.size) {\n this.chunkUploadComplete(e, metaData, custom);\n }\n else {\n if (this.pausedData[i].file.name === metaData.file.name) {\n this.pausedData[i].start = this.pausedData[i].end;\n this.pausedData[i].end = this.pausedData[i].end + this.asyncSettings.chunkSize;\n this.pausedData[i].end = Math.min(this.pausedData[i].end, this.pausedData[i].file.size);\n this.pausedData[i].chunkIndex = this.pausedData[i].chunkIndex + 1;\n this.sendRequest(this.pausedData[i].file, this.pausedData[i], custom);\n }\n }\n }\n };\n Uploader.prototype.updateMetaData = function (metaData) {\n if (this.uploadMetaData.indexOf(metaData) === -1) {\n this.uploadMetaData.push(metaData);\n }\n else {\n this.uploadMetaData.splice(this.uploadMetaData.indexOf(metaData), 1);\n this.uploadMetaData.push(metaData);\n }\n };\n Uploader.prototype.removeChunkProgressBar = function (metaData) {\n var liElement = this.getLiElement(metaData.file);\n if (!isNullOrUndefined(liElement)) {\n this.updateProgressBarClasses(liElement, UPLOAD_SUCCESS);\n this.removeProgressbar(liElement, 'success');\n var cancelButton = liElement.querySelector('.' + ABORT_ICON);\n if (!isNullOrUndefined(cancelButton)) {\n cancelButton.classList.add(DELETE_ICON);\n cancelButton.setAttribute('title', this.localizedTexts('delete'));\n cancelButton.classList.remove(ABORT_ICON, UPLOAD_INPROGRESS);\n }\n }\n };\n Uploader.prototype.chunkUploadFailed = function (e, metaData, custom) {\n var _this = this;\n var chunkCount = Math.max(Math.ceil(metaData.file.size / this.asyncSettings.chunkSize), 1);\n var liElement;\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom)) {\n liElement = this.getLiElement(metaData.file);\n }\n var requestResponse = e && e.currentTarget ? this.getResponse(e) : null;\n var eventArgs = {\n event: e,\n file: metaData.file,\n chunkIndex: metaData.chunkIndex,\n totalChunk: chunkCount,\n chunkSize: this.asyncSettings.chunkSize,\n cancel: false,\n response: requestResponse\n };\n this.trigger('chunkFailure', eventArgs, function (eventArgs) {\n // To prevent triggering of failure event\n if (!eventArgs.cancel) {\n if (metaData.retryCount < _this.asyncSettings.retryCount) {\n setTimeout(function () {\n _this.retryRequest(liElement, metaData, custom);\n }, _this.asyncSettings.retryAfterDelay);\n }\n else {\n if (!isNullOrUndefined(liElement)) {\n var pauseButton = liElement.querySelector('.' + PAUSE_UPLOAD) ?\n liElement.querySelector('.' + PAUSE_UPLOAD) : liElement.querySelector('.' + RESUME_UPLOAD);\n if (!isNullOrUndefined(pauseButton)) {\n pauseButton.classList.add(RETRY_ICON);\n pauseButton.classList.remove(PAUSE_UPLOAD, RESUME_UPLOAD);\n }\n _this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n _this.removeProgressbar(liElement, 'failure');\n liElement.querySelector('.e-icons').classList.remove(UPLOAD_INPROGRESS);\n var iconElement = liElement.querySelector('.' + ABORT_ICON) ?\n liElement.querySelector('.' + ABORT_ICON) : liElement.querySelector('.' + REMOVE_ICON);\n iconElement.classList.remove(ABORT_ICON);\n if (!isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD))) {\n detach(liElement.querySelector('.' + PAUSE_UPLOAD));\n }\n if (metaData.start > 0) {\n iconElement.classList.add(DELETE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('delete'));\n }\n else {\n iconElement.classList.add(REMOVE_ICON);\n iconElement.setAttribute('title', _this.localizedTexts('remove'));\n }\n }\n metaData.retryCount = 0;\n var file_1 = metaData.file;\n var failureMessage = _this.localizedTexts('uploadFailedMessage');\n var args = {\n e: e, response: requestResponse,\n operation: 'upload',\n file: _this.updateStatus(file_1, failureMessage, '0', false),\n statusText: failureMessage\n };\n _this.trigger('failure', args, function (args) {\n _this.updateStatus(file_1, args.statusText, '0');\n _this.uploadSequential();\n _this.checkActionComplete(true);\n });\n }\n }\n });\n };\n Uploader.prototype.retryRequest = function (liElement, metaData, custom) {\n if (isNullOrUndefined(this.template) && (isNullOrUndefined(custom) || !custom) && liElement) {\n this.updateProgressBarClasses(liElement, UPLOAD_FAILED);\n }\n metaData.retryCount += 1;\n this.sendRequest(metaData.file, metaData);\n };\n Uploader.prototype.checkPausePlayAction = function (e) {\n var targetElement = e.target;\n var selectedElement = e.target.parentElement;\n var index = this.fileList.indexOf(selectedElement);\n var fileData = this.filesData[index];\n var metaData = this.getCurrentMetaData(fileData);\n if (targetElement.classList.contains(PAUSE_UPLOAD)) {\n /* istanbul ignore next */\n this.pauseUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RESUME_UPLOAD)) {\n /* istanbul ignore next */\n this.resumeUpload(metaData, e);\n }\n else if (targetElement.classList.contains(RETRY_ICON)) {\n if (metaData.file.status === this.localizedTexts('fileUploadCancel')) {\n this.retryUpload(metaData, false);\n }\n else {\n this.retryUpload(metaData, true);\n }\n }\n };\n Uploader.prototype.retryUpload = function (metaData, fromcanceledStage) {\n if (fromcanceledStage) {\n metaData.end = metaData.end + this.asyncSettings.chunkSize;\n metaData.start = metaData.start + this.asyncSettings.chunkSize;\n this.sendRequest(metaData.file, metaData);\n }\n else {\n metaData.file.statusCode = '1';\n metaData.file.status = this.localizedTexts('readyToUploadMessage');\n this.chunkUpload(metaData.file);\n }\n /* istanbul ignore next */\n (this.getLiElement(metaData.file)).classList.add(RESTRICT_RETRY);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Uploader.prototype.chunkUploadInProgress = function (e, metaData, custom) {\n var _this = this;\n if (metaData.file.statusCode === '4') {\n return;\n }\n if (metaData.file.statusCode !== '4' && metaData.file.statusCode !== '5') {\n metaData.file.statusCode = '3';\n metaData.file.status = this.localizedTexts('inProgress');\n }\n this.updateMetaData(metaData);\n var liElement = this.getLiElement(metaData.file);\n if (isNullOrUndefined(liElement)) {\n return;\n }\n var retryElement = liElement.querySelector('.' + RETRY_ICON);\n if (!isNullOrUndefined(retryElement)) {\n retryElement.classList.add(PAUSE_UPLOAD);\n retryElement.setAttribute('title', this.localizedTexts('pause'));\n retryElement.classList.remove(RETRY_ICON);\n }\n if (!isNullOrUndefined(liElement)) {\n if (!(liElement.querySelectorAll('.' + PROGRESS_WRAPPER).length > 0)) {\n var statusElement = liElement.querySelector('.' + STATUS);\n if (isNullOrUndefined(this.template)) {\n statusElement.classList.add(UPLOAD_INPROGRESS);\n statusElement.classList.remove(UPLOAD_FAILED);\n this.createProgressBar(liElement);\n this.updateProgressBarClasses(liElement, UPLOAD_INPROGRESS);\n }\n var clearIcon = liElement.querySelector('.' + REMOVE_ICON) ? liElement.querySelector('.' + REMOVE_ICON) :\n liElement.querySelector('.' + DELETE_ICON);\n if (!isNullOrUndefined(clearIcon)) {\n clearIcon.classList.add(ABORT_ICON);\n clearIcon.setAttribute('title', this.localizedTexts('abort'));\n clearIcon.classList.remove(REMOVE_ICON);\n }\n }\n if (!isNaN(Math.round((e.loaded / e.total) * 100)) && isNullOrUndefined(this.template) && metaData.file.statusCode !== '4') {\n var progressVal = void 0;\n var totalChunks = Math.ceil(metaData.file.size / this.asyncSettings.chunkSize) - 1;\n if (this.asyncSettings.chunkSize && totalChunks) {\n progressVal = Math.round(metaData.chunkIndex / totalChunks * 100);\n this.changeProgressValue(liElement, progressVal.toString() + '%');\n }\n }\n if (metaData.chunkIndex === 0) {\n this.checkActionButtonStatus();\n }\n }\n if (isNullOrUndefined(liElement.querySelector('.' + PAUSE_UPLOAD)) && isNullOrUndefined(this.template)\n && isNullOrUndefined(liElement.querySelector('.' + DELETE_ICON))) {\n this.pauseButton = this.createElement('span', { className: 'e-icons e-file-pause-btn', attrs: { 'tabindex': this.btnTabIndex } });\n if (this.browserName === 'msie') {\n this.pauseButton.classList.add('e-msie');\n }\n var abortIcon = liElement.querySelector('.' + ABORT_ICON);\n abortIcon.parentElement.insertBefore(this.pauseButton, abortIcon);\n this.pauseButton.setAttribute('title', this.localizedTexts('pause'));\n this.pauseButton.addEventListener('click', function (e) {\n _this.checkPausePlayAction(e);\n }, false);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * It is used to convert bytes value into kilobytes or megabytes depending on the size based\n * on [binary prefix](https://en.wikipedia.org/wiki/Binary_prefix).\n *\n * @param { number } bytes - Specifies the file size in bytes.\n * @returns {string}\n */\n Uploader.prototype.bytesToSize = function (bytes) {\n var i = -1;\n if (!bytes) {\n return '0.0 KB';\n }\n do {\n bytes = bytes / 1024;\n i++;\n } while (bytes > 99);\n if (i >= 2) {\n bytes = bytes * 1024;\n i = 1;\n }\n return Math.max(bytes, 0).toFixed(1) + ' ' + ['KB', 'MB'][i];\n };\n /**\n * Allows you to sort the file data alphabetically based on its file name clearly.\n *\n * @param { FileList } filesData - specifies the files data for upload.\n * @returns {File[]}\n */\n /* istanbul ignore next */\n Uploader.prototype.sortFileList = function (filesData) {\n filesData = filesData ? filesData : this.sortFilesList;\n var files = filesData;\n var fileNames = [];\n for (var i = 0; i < files.length; i++) {\n fileNames.push(files[i].name);\n }\n var sortedFileNames = fileNames.sort();\n var sortedFilesData = [];\n for (var _i = 0, sortedFileNames_1 = sortedFileNames; _i < sortedFileNames_1.length; _i++) {\n var name_3 = sortedFileNames_1[_i];\n for (var i = 0; i < files.length; i++) {\n if (name_3 === files[i].name) {\n sortedFilesData.push(files[i]);\n }\n }\n }\n return sortedFilesData;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n Uploader.prototype.destroy = function () {\n this.element.value = null;\n this.clearTemplate();\n this.clearAll();\n this.unWireEvents();\n this.unBindDropEvents();\n if (this.multiple) {\n this.element.removeAttribute('multiple');\n }\n if (!this.enabled) {\n this.element.removeAttribute('disabled');\n }\n this.element.removeAttribute('accept');\n this.setInitialAttributes();\n var attributes$$1 = ['aria-label', 'directory', 'webkitdirectory', 'tabindex'];\n for (var _i = 0, attributes_2 = attributes$$1; _i < attributes_2.length; _i++) {\n var key = attributes_2[_i];\n this.element.removeAttribute(key);\n }\n if (!isNullOrUndefined(this.uploadWrapper)) {\n this.uploadWrapper.parentElement.appendChild(this.element);\n detach(this.uploadWrapper);\n }\n this.uploadWrapper = null;\n this.uploadWrapper = null;\n this.browseButton = null;\n this.dropAreaWrapper = null;\n this.dropZoneElement = null;\n this.dropArea = null;\n this.keyboardModule = null;\n this.clearButton = null;\n this.uploadButton = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Allows you to call the upload process manually by calling save URL action.\n * To process the selected files (added in upload queue), pass an empty argument otherwise\n * upload the specific file based on its argument.\n *\n * @param { FileInfo | FileInfo[] } files - Specifies the files data for upload.\n * @param {boolean} custom - Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.upload = function (files, custom) {\n var _this = this;\n files = files ? files : this.filesData;\n if (this.sequentialUpload && (this.isFirstFileOnSelection || custom)) {\n this.sequenceUpload(files);\n }\n else {\n var uploadFiles_1 = this.getFilesInArray(files);\n var eventArgs = {\n customFormData: [],\n currentRequest: null,\n cancel: false\n };\n this.trigger('beforeUpload', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.uploadFiles(uploadFiles_1, custom);\n }\n });\n }\n };\n Uploader.prototype.getFilesInArray = function (files) {\n var uploadFiles = [];\n if (files instanceof Array) {\n uploadFiles = files;\n }\n else {\n uploadFiles.push(files);\n }\n return uploadFiles;\n };\n /* istanbul ignore next */\n Uploader.prototype.serverReadFileBase64 = function (fileIndex, position, totalCount) {\n var _this = this;\n return new Promise(function (resolve, reject) {\n var file = _this.fileStreams[fileIndex].rawFile;\n try {\n var reader = new FileReader();\n reader.onload = (function (args) {\n return function () {\n try {\n var contents = args.result;\n var data = contents ? contents.split(';base64,')[1] : null;\n resolve(data);\n }\n catch (e) {\n reject(e);\n }\n };\n })(reader);\n reader.readAsDataURL(file.slice(position, position + totalCount));\n }\n catch (e) {\n reject(e);\n }\n });\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.uploadFileCount = function (ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var result = files.length;\n return result;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileRead = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return -1;\n }\n var file = files[index];\n var fileCount = this.newFileRef++;\n this.fileStreams[fileCount] = file;\n return fileCount;\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n /* istanbul ignore next */\n Uploader.prototype.getFileInfo = function (index, ele) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var files = this.filesData;\n if (!files || files.length === 0) {\n return null;\n }\n var file = files[index];\n if (!file) {\n return null;\n }\n return this.filesData[index];\n };\n Uploader.prototype.uploadFiles = function (files, custom) {\n var selectedFiles = [];\n if (this.asyncSettings.saveUrl === '' || isNullOrUndefined(this.asyncSettings.saveUrl)) {\n return;\n }\n if (!custom || isNullOrUndefined(custom)) {\n if (!this.multiple) {\n var file = [];\n file.push(files[0]);\n selectedFiles = this.filterfileList(file);\n }\n else {\n selectedFiles = this.filterfileList(files);\n }\n }\n else {\n selectedFiles = files;\n }\n for (var i = 0; i < selectedFiles.length; i++) {\n this.uploadFilesRequest(selectedFiles, i, custom);\n }\n };\n Uploader.prototype.uploadFilesRequest = function (selectedFiles, i, custom) {\n var _this = this;\n var chunkEnabled = this.checkChunkUpload();\n var ajax = new Ajax(this.asyncSettings.saveUrl, 'POST', true, null);\n ajax.emitError = false;\n var eventArgs = {\n fileData: selectedFiles[i],\n customFormData: [],\n cancel: false\n };\n var formData = new FormData();\n ajax.beforeSend = function (e) {\n eventArgs.currentRequest = ajax.httpRequest;\n _this.trigger('uploading', eventArgs, function (eventArgs) {\n /* istanbul ignore next */\n if (eventArgs.cancel) {\n _this.eventCancelByArgs(e, eventArgs, selectedFiles[i]);\n }\n _this.updateFormData(formData, eventArgs.customFormData);\n });\n };\n if (selectedFiles[i].statusCode === '1') {\n var name_4 = this.element.getAttribute('name');\n formData.append(name_4, selectedFiles[i].rawFile, selectedFiles[i].name);\n if (chunkEnabled && selectedFiles[i].size > this.asyncSettings.chunkSize) {\n this.chunkUpload(selectedFiles[i], custom, i);\n }\n else {\n ajax.onLoad = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadComplete(e, selectedFiles[i], custom);\n return {};\n }\n };\n ajax.onUploadProgress = function (e) {\n if (eventArgs.cancel) {\n return {};\n }\n else {\n _this.uploadInProgress(e, selectedFiles[i], custom, ajax);\n return {};\n }\n };\n /* istanbul ignore next */\n ajax.onError = function (e) {\n _this.uploadFailed(e, selectedFiles[i]);\n return {};\n };\n ajax.send(formData);\n }\n }\n };\n Uploader.prototype.spliceFiles = function (liIndex) {\n var liElement = this.fileList[liIndex];\n var allFiles = this.getFilesData();\n var nameElements = +liElement.getAttribute('data-files-count');\n var startIndex = 0;\n for (var i = 0; i < liIndex; i++) {\n startIndex += (+this.fileList[i].getAttribute('data-files-count'));\n }\n var endIndex = (startIndex + nameElements) - 1;\n for (var j = endIndex; j >= startIndex; j--) {\n allFiles.splice(j, 1);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Remove the uploaded file from server manually by calling the remove URL action.\n * If you pass an empty argument to this method, the complete file list can be cleared,\n * otherwise remove the specific file based on its argument (“file_data”).\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to remove from file list/server.\n * @param { boolean } customTemplate - Set true if the component rendering with customize template.\n * @param { boolean } removeDirectly - Set true if files remove without removing event.\n * @param { boolean } postRawFile - Set false, to post file name only to the remove action.\n * @returns {void}\n */\n Uploader.prototype.remove = function (fileData, customTemplate, removeDirectly, postRawFile, args) {\n var _this = this;\n if (isNullOrUndefined(postRawFile)) {\n postRawFile = true;\n }\n var eventArgs = {\n event: args,\n cancel: false,\n filesData: [],\n customFormData: [],\n postRawFile: postRawFile,\n currentRequest: null\n };\n var beforeEventArgs = {\n cancel: false,\n customFormData: [],\n currentRequest: null\n };\n this.trigger('beforeRemove', beforeEventArgs, function (beforeEventArgs) {\n if (!beforeEventArgs.cancel) {\n if (_this.isFormUpload()) {\n eventArgs.filesData = fileData;\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n var removingFiles = _this.getFilesInArray(fileData);\n var isLiRemoved = false;\n var liIndex = void 0;\n for (var _i = 0, removingFiles_1 = removingFiles; _i < removingFiles_1.length; _i++) {\n var data = removingFiles_1[_i];\n if (!isLiRemoved) {\n liIndex = _this.fileList.indexOf(data.list);\n }\n if (liIndex > -1) {\n var inputElement = !isNullOrUndefined(data.input) ? data.input : null;\n if (inputElement) {\n detach(inputElement);\n }\n _this.spliceFiles(liIndex);\n detach(_this.fileList[liIndex]);\n _this.fileList.splice(liIndex, 1);\n isLiRemoved = true;\n liIndex = -1;\n }\n }\n }\n });\n }\n else if (_this.isForm && (isNullOrUndefined(_this.asyncSettings.removeUrl) || _this.asyncSettings.removeUrl === '')) {\n eventArgs.filesData = _this.getFilesData();\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearAll();\n }\n });\n }\n else {\n var removeFiles = [];\n fileData = !isNullOrUndefined(fileData) ? fileData : _this.filesData;\n if (fileData instanceof Array) {\n removeFiles = fileData;\n }\n else {\n removeFiles.push(fileData);\n }\n eventArgs.filesData = removeFiles;\n var removeUrl = _this.asyncSettings.removeUrl;\n var validUrl = (removeUrl === '' || isNullOrUndefined(removeUrl)) ? false : true;\n var _loop_5 = function (files) {\n var fileUploadedIndex = _this.uploadedFilesData.indexOf(files);\n if ((files.statusCode === '2' || files.statusCode === '4' || (files.statusCode === '0' &&\n fileUploadedIndex !== -1)) && validUrl) {\n _this.removeUploadedFile(files, eventArgs, removeDirectly, customTemplate);\n }\n else {\n if (!removeDirectly) {\n _this.trigger('removing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.removeFilesData(files, customTemplate);\n }\n });\n }\n else {\n _this.removeFilesData(files, customTemplate);\n }\n }\n if (args && !args.target.classList.contains(REMOVE_ICON)) {\n _this.checkActionComplete(false);\n }\n };\n for (var _i = 0, removeFiles_1 = removeFiles; _i < removeFiles_1.length; _i++) {\n var files = removeFiles_1[_i];\n _loop_5(files);\n }\n }\n }\n });\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n /**\n * Clear all the file entries from list that can be uploaded files or added in upload queue.\n *\n * @returns {void}\n */\n Uploader.prototype.clearAll = function () {\n var _this = this;\n if (isNullOrUndefined(this.listParent)) {\n if (this.browserName !== 'msie') {\n this.element.value = '';\n }\n this.filesData = [];\n return;\n }\n var eventArgs = {\n cancel: false,\n filesData: this.filesData\n };\n this.trigger('clearing', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.clearData();\n _this.actionCompleteCount = 0;\n _this.count = -1;\n }\n });\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get the data of files which are shown in file list.\n *\n * @param { number } index - specifies the file list item(li) index.\n * @returns {FileInfo[]}\n */\n Uploader.prototype.getFilesData = function (index) {\n if (isNullOrUndefined(index)) {\n return this.filesData;\n }\n else {\n return this.getSelectedFiles(index);\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Pauses the in-progress chunked upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to pause from uploading.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.pause = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.pauseUploading(fileDataFiles, custom);\n };\n Uploader.prototype.pauseUploading = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n this.pauseUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n Uploader.prototype.getFiles = function (fileData) {\n var files = [];\n if (!isNullOrUndefined(fileData) && !(fileData instanceof Array)) {\n files.push(fileData);\n }\n else {\n files = fileData;\n }\n return files;\n };\n /**\n * Resumes the chunked upload that is previously paused based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to resume the paused file.\n * @param { boolean } custom - Set true if used custom UI.\n * @returns {void}\n */\n Uploader.prototype.resume = function (fileData, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n this.resumeFiles(fileDataFiles, custom);\n };\n Uploader.prototype.resumeFiles = function (fileData, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '4') {\n this.resumeUpload(this.getCurrentMetaData(files[i], null), null, custom);\n }\n }\n };\n /**\n * Retries the canceled or failed file upload based on the file data.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to retry the canceled or failed file.\n * @param { boolean } fromcanceledStage - Set true to retry from canceled stage and set false to retry from initial stage.\n * @param {boolean} custom -Specifies whether the uploader is rendered with custom file list.\n * @returns {void}\n */\n Uploader.prototype.retry = function (fileData, fromcanceledStage, custom) {\n fileData = fileData ? fileData : this.filesData;\n var fileDataFiles = this.getFilesInArray(fileData);\n if (this.sequentialUpload && this.isFirstFileOnSelection) {\n this.isFirstFileOnSelection = false;\n }\n this.retryFailedFiles(fileDataFiles, fromcanceledStage, custom);\n };\n Uploader.prototype.retryFailedFiles = function (fileData, fromcanceledStage, custom) {\n var files = this.getFiles(fileData);\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '5' || files[i].statusCode === '0') {\n if (this.asyncSettings.chunkSize > 0 && this.getCurrentMetaData(files[i], null)) {\n this.retryUpload(this.getCurrentMetaData(files[i], null), fromcanceledStage);\n }\n else {\n var liElement = void 0;\n if (!custom) {\n liElement = this.fileList[this.filesData.indexOf(files[i])];\n }\n this.reloadcanceledFile(null, files[i], liElement, custom);\n }\n }\n }\n };\n /**\n * Stops the in-progress chunked upload based on the file data.\n * When the file upload is canceled, the partially uploaded file is removed from server.\n *\n * @param { FileInfo | FileInfo[] } fileData - specifies the files data to cancel the progressing file.\n * @returns {void}\n */\n Uploader.prototype.cancel = function (fileData) {\n fileData = fileData ? fileData : this.filesData;\n var cancelingFiles = this.getFilesInArray(fileData);\n this.cancelUpload(cancelingFiles);\n };\n Uploader.prototype.cancelUpload = function (fileData) {\n var files = this.getFiles(fileData);\n if (this.asyncSettings.chunkSize > 0) {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n var metaData = this.getCurrentMetaData(files[i], null);\n metaData.file.statusCode = '5';\n metaData.file.status = this.localizedTexts('fileUploadCancel');\n this.updateMetaData(metaData);\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n else {\n for (var i = 0; i < files.length; i++) {\n if (files[i].statusCode === '3') {\n files[i].statusCode = '5';\n files[i].status = this.localizedTexts('fileUploadCancel');\n this.showHideUploadSpinner(files[i]);\n }\n }\n }\n };\n Uploader.prototype.showHideUploadSpinner = function (files) {\n var liElement = this.getLiElement(files);\n if (!isNullOrUndefined(liElement) && isNullOrUndefined(this.template)) {\n var spinnerTarget = liElement.querySelector('.' + ABORT_ICON);\n createSpinner({ target: spinnerTarget, width: '20px' });\n showSpinner(spinnerTarget);\n }\n };\n __decorate$4([\n Complex({ saveUrl: '', removeUrl: '' }, AsyncSettings)\n ], Uploader.prototype, \"asyncSettings\", void 0);\n __decorate$4([\n Property(false)\n ], Uploader.prototype, \"sequentialUpload\", void 0);\n __decorate$4([\n Property({})\n ], Uploader.prototype, \"htmlAttributes\", void 0);\n __decorate$4([\n Property('')\n ], Uploader.prototype, \"cssClass\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"enabled\", void 0);\n __decorate$4([\n Property(null)\n ], Uploader.prototype, \"template\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"multiple\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"autoUpload\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$4([\n Complex({}, ButtonsProps)\n ], Uploader.prototype, \"buttons\", void 0);\n __decorate$4([\n Property('')\n ], Uploader.prototype, \"allowedExtensions\", void 0);\n __decorate$4([\n Property(0)\n ], Uploader.prototype, \"minFileSize\", void 0);\n __decorate$4([\n Property(30000000)\n ], Uploader.prototype, \"maxFileSize\", void 0);\n __decorate$4([\n Property(null)\n ], Uploader.prototype, \"dropArea\", void 0);\n __decorate$4([\n Collection([{}], FilesProp)\n ], Uploader.prototype, \"files\", void 0);\n __decorate$4([\n Property(true)\n ], Uploader.prototype, \"showFileList\", void 0);\n __decorate$4([\n Property(false)\n ], Uploader.prototype, \"directoryUpload\", void 0);\n __decorate$4([\n Property('Default')\n ], Uploader.prototype, \"dropEffect\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"actionComplete\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"rendering\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"beforeUpload\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"fileListRendering\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"selected\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"uploading\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"success\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"failure\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"removing\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"beforeRemove\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"clearing\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"progress\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"change\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"chunkSuccess\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"chunkFailure\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"chunkUploading\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"canceling\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"pausing\", void 0);\n __decorate$4([\n Event()\n ], Uploader.prototype, \"resuming\", void 0);\n Uploader = __decorate$4([\n NotifyPropertyChanges\n ], Uploader);\n return Uploader;\n}(Component));\n\n/* eslint-enable @typescript-eslint/no-explicit-any */\n\n/**\n * Uploader modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/* eslint-disable prefer-spread */\nvar APPLY = 'e-apply';\nvar CANCEL = 'e-cancel';\nvar CURRENT = 'e-current';\nvar CONTAINER = 'e-container';\nvar CTRLBTN = 'e-ctrl-btn';\nvar CTRLSWITCH = 'e-switch-ctrl-btn';\nvar DISABLED$1 = 'e-disabled';\nvar FORMATSWITCH = 'e-value-switch-btn';\nvar HANDLER = 'e-handler';\nvar HEX = 'e-hex';\nvar HIDEHEX = 'e-hide-hex-value';\nvar HIDEOPACITY = 'e-hide-opacity';\nvar HIDERGBA = 'e-hide-switchable-value';\nvar HIDEVALUE = 'e-hide-value';\nvar HIDEVALUESWITCH = 'e-hide-valueswitcher';\nvar HSVAREA = 'e-hsv-color';\nvar HSVCONTAINER = 'e-hsv-container';\nvar INPUTWRAPPER = 'e-selected-value';\nvar MODESWITCH = 'e-mode-switch-btn';\nvar NOCOLOR = 'e-nocolor-item';\nvar OPACITY = 'e-opacity-value';\nvar PALETTES = 'e-palette';\nvar PALETTECONTENT = 'e-color-palette';\nvar PICKERCONTENT = 'e-color-picker';\nvar PREVIEW = 'e-preview-container';\nvar PREVIOUS = 'e-previous';\nvar RTL$1 = 'e-rtl';\nvar SHOWVALUE = 'e-show-value';\nvar SELECT = 'e-selected';\nvar SPLITPREVIEW = 'e-split-preview';\nvar TILE = 'e-tile';\nvar presets = {\n default: ['#000000', '#f44336', '#e91e63', '#9c27b0', '#673ab7', '#2196f3', '#03a9f4', '#00bcd4', '#009688', '#ffeb3b',\n '#ffffff', '#ffebee', '#fce4ec', '#f3e5f5', '#ede7f6', '#e3f2fd', '#e1f5fe', '#e0f7fa', '#e0f2f1', '#fffde7',\n '#f2f2f2', '#ffcdd2', '#f8bbd0', '#e1bee7', '#d1c4e9', '#bbdefb', '#b3e5fc', '#b2ebf2', '#b2dfdb', '#fff9c4',\n '#e6e6e6', '#ef9a9a', '#f48fb1', '#ce93d8', '#b39ddb', '#90caf9', '#81d4fa', '#80deea', '#80cbc4', '#fff59d',\n '#cccccc', '#e57373', '#f06292', '#ba68c8', '#9575cd', '#64b5f6', '#4fc3f7', '#4dd0e1', '#4db6ac', '#fff176',\n '#b3b3b3', '#ef5350', '#ec407a', '#ab47bc', '#7e57c2', '#42a5f5', '#29b6f6', '#26c6da', '#26a69a', '#ffee58',\n '#999999', '#e53935', '#d81b60', '#8e24aa', '#5e35b1', '#1e88e5', '#039be5', '#00acc1', '#00897b', '#fdd835',\n '#808080', '#d32f2f', '#c2185b', '#7b1fa2', '#512da8', '#1976d2', '#0288d1', '#0097a7', '#00796b', '#fbc02d',\n '#666666', '#c62828', '#ad1457', '#6a1b9a', '#4527a0', '#1565c0', '#0277bd', '#00838f', '#00695c', '#f9a825',\n '#4d4d4d', '#b71c1c', '#880e4f', '#4a148c', '#311b92', '#0d47a1', '#01579b', '#006064', '#004d40', '#f57f17']\n};\n/**\n * ColorPicker component is a user interface to select and adjust color values. It provides supports for various\n * color specification like Red Green Blue, Hue Saturation Value and Hex codes.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ColorPicker = /** @__PURE__ @class */ (function (_super) {\n __extends$5(ColorPicker, _super);\n function ColorPicker(options, element) {\n return _super.call(this, options, element) || this;\n }\n ColorPicker.prototype.preRender = function () {\n var ele = this.element;\n this.formElement = closest(this.element, 'form');\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n var localeText = { Apply: 'Apply', Cancel: 'Cancel', ModeSwitcher: 'Switch Mode' };\n this.l10n = new L10n('colorpicker', localeText, this.locale);\n if (ele.getAttribute('ejs-for') && !ele.getAttribute('name')) {\n ele.setAttribute('name', ele.id);\n }\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n ColorPicker.prototype.render = function () {\n this.initWrapper();\n if (this.inline) {\n this.createWidget();\n }\n else {\n this.createSplitBtn();\n }\n if (!this.enableOpacity) {\n addClass([this.container.parentElement], HIDEOPACITY);\n }\n this.renderComplete();\n };\n ColorPicker.prototype.initWrapper = function () {\n var wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(wrapper, this.element);\n wrapper.appendChild(this.element);\n attributes(this.element, { 'tabindex': '-1', 'spellcheck': 'false', 'aria-label': 'colorpicker' });\n this.container = this.createElement('div', { className: CONTAINER });\n this.getWrapper().appendChild(this.container);\n var value = this.value ? this.roundValue(this.value).toLowerCase() : '#008000ff';\n if (this.noColor && this.mode === 'Palette' && this.value === '') {\n value = '';\n }\n var slicedValue = value.slice(0, 7);\n if (isNullOrUndefined(this.initialInputValue)) {\n this.initialInputValue = slicedValue;\n }\n this.element.value = slicedValue;\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': slicedValue }, true);\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL$1);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.split(' '));\n }\n this.tileRipple = rippleEffect(this.container, { selector: '.' + TILE });\n this.ctrlBtnRipple = rippleEffect(this.container, { selector: '.e-btn' });\n };\n ColorPicker.prototype.getWrapper = function () {\n return this.element.parentElement;\n };\n ColorPicker.prototype.createWidget = function () {\n if (this.mode === 'Palette') {\n this.createPalette();\n if (!this.inline) {\n this.firstPaletteFocus();\n }\n }\n else {\n this.createPicker();\n if (!this.inline) {\n this.getDragHandler().focus();\n }\n }\n this.isRgb = true;\n this.createInput();\n this.createCtrlBtn();\n if (!this.disabled) {\n this.wireEvents();\n }\n if (this.inline && this.disabled) {\n this.toggleDisabled(true);\n }\n if (Browser.isDevice) {\n this.refreshPopupPos();\n }\n };\n ColorPicker.prototype.createSplitBtn = function () {\n var _this = this;\n var splitButton = this.createElement('button', { className: 'e-split-colorpicker' });\n this.getWrapper().appendChild(splitButton);\n this.splitBtn = new SplitButton({\n iconCss: 'e-selected-color',\n target: this.container,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n createPopupOnClick: this.createPopupOnClick,\n open: this.onOpen.bind(this),\n click: function () {\n _this.trigger('change', {\n currentValue: { hex: _this.value.slice(0, 7), rgba: _this.convertToRgbString(_this.hexToRgb(_this.value)) },\n previousValue: { hex: null, rgba: null }, value: _this.value\n });\n }\n });\n this.splitBtn.createElement = this.createElement;\n this.splitBtn.appendTo(splitButton);\n var preview = this.createElement('span', { className: SPLITPREVIEW });\n select('.e-selected-color', splitButton).appendChild(preview);\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(this.value));\n var popupEle = this.getPopupEle();\n addClass([popupEle], 'e-colorpicker-popup');\n if (this.cssClass) {\n addClass([popupEle], this.cssClass.split(' '));\n }\n if (Browser.isDevice) {\n var popupInst = this.getPopupInst();\n popupInst.relateTo = document.body;\n popupInst.position = { X: 'center', Y: 'center' };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupEle.style.zIndex = getZindexPartial(this.splitBtn.element).toString();\n }\n this.bindCallBackEvent();\n };\n ColorPicker.prototype.onOpen = function () {\n this.trigger('open', { element: this.container });\n };\n ColorPicker.prototype.getPopupInst = function () {\n return getInstance(this.getPopupEle(), Popup);\n };\n ColorPicker.prototype.bindCallBackEvent = function () {\n var _this = this;\n this.splitBtn.beforeOpen = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observeOpenArgs) {\n if (!observeOpenArgs.cancel) {\n var popupEle = _this.getPopupEle();\n popupEle.style.top = formatUnit(0 + pageYOffset);\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.display = 'block';\n _this.createWidget();\n popupEle.style.display = '';\n if (Browser.isDevice) {\n _this.modal = _this.createElement('div');\n _this.modal.className = 'e-' + _this.getModuleName() + ' e-modal';\n _this.modal.style.display = 'none';\n document.body.insertBefore(_this.modal, popupEle);\n document.body.className += ' e-colorpicker-overflow';\n _this.modal.style.display = 'block';\n _this.modal.style.zIndex = (Number(popupEle.style.zIndex) - 1).toString();\n }\n }\n args.cancel = observeOpenArgs.cancel;\n callBackPromise.resolve(observeOpenArgs);\n });\n return callBackPromise;\n };\n this.splitBtn.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n if (!isNullOrUndefined(args.event)) {\n var beforeCloseArgs = { element: _this.container, event: args.event, cancel: false };\n _this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n if (Browser.isDevice && args.event.target === _this.modal) {\n observedCloseArgs.cancel = true;\n }\n if (!observedCloseArgs.cancel) {\n _this.onPopupClose();\n }\n args.cancel = observedCloseArgs.cancel;\n callBackPromise.resolve(observedCloseArgs);\n });\n }\n else {\n callBackPromise.resolve(args);\n }\n return callBackPromise;\n };\n };\n ColorPicker.prototype.onPopupClose = function () {\n this.unWireEvents();\n this.destroyOtherComp();\n this.container.style.width = '';\n select('.' + SPLITPREVIEW, this.splitBtn.element).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n this.container.innerHTML = '';\n removeClass([this.container], [PICKERCONTENT, PALETTECONTENT]);\n if (Browser.isDevice && this.modal) {\n removeClass([document.body], 'e-colorpicker-overflow');\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n ColorPicker.prototype.createPalette = function () {\n classList(this.container, [PALETTECONTENT], [PICKERCONTENT]);\n if (this.presetColors) {\n var paletteGroup = this.createElement('div', { className: 'e-custom-palette' });\n this.appendElement(paletteGroup);\n var keys = Object.keys(this.presetColors);\n if (keys.length === 1) {\n this.appendPalette(this.presetColors[keys[0]], keys[0], paletteGroup);\n }\n else {\n for (var i = 0, len = keys.length; i < len; i++) {\n this.appendPalette(this.presetColors[keys[i]], keys[i], paletteGroup);\n }\n }\n if (selectAll('.e-row', paletteGroup).length > 10) {\n addClass([paletteGroup], 'e-palette-group');\n }\n }\n else {\n this.appendPalette(presets.default, 'default');\n }\n if (this.mode === 'Palette' && !this.modeSwitcher && this.noColor) {\n this.setNoColor();\n }\n var width = parseInt(getComputedStyle(this.container).borderBottomWidth, 10);\n this.container.style.width = formatUnit(this.container.children[0].offsetWidth + width + width);\n this.rgb = this.hexToRgb(this.roundValue(this.value));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n };\n ColorPicker.prototype.firstPaletteFocus = function () {\n if (!select('.' + SELECT, this.container.children[0])) {\n selectAll('.' + PALETTES, this.container)[0].focus();\n }\n };\n ColorPicker.prototype.appendPalette = function (colors, key, refEle) {\n var palette = this.createElement('div', { className: PALETTES, attrs: { 'tabindex': '0', 'role': 'grid' } });\n if (refEle) {\n refEle.appendChild(palette);\n }\n else {\n this.appendElement(palette);\n }\n var row;\n var tile;\n var roundedColor;\n for (var i = 0, len = colors.length; i < len; i++) {\n if (i === 0 || i % this.columns === 0) {\n row = this.createElement('div', {\n className: 'e-row', attrs: { 'role': 'row' }\n });\n palette.appendChild(row);\n }\n roundedColor = this.roundValue(colors[i]).toLowerCase();\n tile = this.createElement('span', {\n className: TILE, attrs: { 'role': 'gridcell', 'aria-label': roundedColor, 'aria-selected': 'false', 'tabindex': '0' }\n });\n this.trigger('beforeTileRender', { element: tile, presetName: key, value: colors[i] });\n row.appendChild(tile);\n if (this.value === roundedColor) {\n this.addTileSelection(tile);\n palette.focus();\n }\n tile.style.backgroundColor = this.convertToRgbString(this.hexToRgb(roundedColor));\n }\n };\n ColorPicker.prototype.setNoColor = function () {\n var noColorEle = this.container.querySelector('.e-row').children[0];\n noColorEle.classList.add(NOCOLOR);\n if (!this.value) {\n noColorEle.classList.add(SELECT);\n closest(noColorEle, '.' + PALETTES).focus();\n }\n ['aria-selected', 'aria-label'].forEach(function (attr) { noColorEle.removeAttribute(attr); });\n noColorEle.style.backgroundColor = '';\n };\n ColorPicker.prototype.appendElement = function (ele, insertPos) {\n if (insertPos === void 0) { insertPos = 0; }\n var refEle = this.container.children[insertPos];\n if (refEle) {\n this.container.insertBefore(ele, refEle);\n }\n else {\n this.container.appendChild(ele);\n }\n };\n ColorPicker.prototype.addTileSelection = function (ele) {\n ele.classList.add(SELECT);\n ele.setAttribute('aria-selected', 'true');\n };\n ColorPicker.prototype.createPicker = function () {\n classList(this.container, [PICKERCONTENT], [PALETTECONTENT]);\n var hsvContainer = this.createElement('div', { className: HSVCONTAINER });\n this.appendElement(hsvContainer);\n hsvContainer.appendChild(this.createElement('div', { className: HSVAREA }));\n var dragHandler = this.createElement('span', { className: HANDLER, attrs: { 'tabindex': '0' } });\n hsvContainer.appendChild(dragHandler);\n if (this.value === null) {\n this.value = '#008000ff';\n }\n this.rgb = this.hexToRgb(this.value);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHsvContainerBg();\n this.setHandlerPosition();\n this.createSlider();\n this.createDragTooltip();\n };\n ColorPicker.prototype.setHsvContainerBg = function (h) {\n if (h === void 0) { h = this.hsv[0]; }\n this.getHsvContainer().style.backgroundColor = this.convertToRgbString(this.hsvToRgb(h, 100, 100, 1));\n };\n ColorPicker.prototype.getHsvContainer = function () {\n return select('.' + HSVCONTAINER, this.container);\n };\n ColorPicker.prototype.setHandlerPosition = function () {\n var dragHandler = this.getDragHandler();\n var hsvArea = select('.' + HSVAREA, this.container);\n if (this.enableRtl) {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * Math.abs(100 - this.hsv[1]) / 100);\n }\n else {\n dragHandler.style.left = formatUnit(hsvArea.offsetWidth * this.hsv[1] / 100);\n }\n dragHandler.style.top = formatUnit(hsvArea.offsetHeight * (100 - this.hsv[2]) / 100);\n };\n ColorPicker.prototype.createSlider = function () {\n var sliderPreviewWrapper = this.createElement('div', { className: 'e-slider-preview' });\n this.appendElement(sliderPreviewWrapper, 1);\n this.createPreview(sliderPreviewWrapper);\n var sliderWrapper = this.createElement('div', { className: 'e-colorpicker-slider' });\n sliderPreviewWrapper.insertBefore(sliderWrapper, sliderPreviewWrapper.children[0]);\n var slider = this.createElement('div', { className: 'e-hue-slider' });\n sliderWrapper.appendChild(slider);\n this.hueSlider = new Slider({\n value: this.hsv[0],\n min: 0,\n max: 359,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.hueChange.bind(this)\n });\n this.hueSlider.createElement = this.createElement;\n this.hueSlider.appendTo(slider);\n if (this.enableOpacity) {\n slider = this.createElement('div', { className: 'e-opacity-slider' });\n sliderWrapper.appendChild(slider);\n this.createOpacitySlider(slider);\n }\n };\n ColorPicker.prototype.createOpacitySlider = function (slider) {\n this.opacitySlider = new Slider({\n value: this.rgb[3] * 100,\n min: 0,\n max: 100,\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n change: this.opacityChange.bind(this)\n });\n this.opacitySlider.createElement = this.createElement;\n this.opacitySlider.appendTo(slider);\n var opacityBgTrack = this.createElement('div', { className: 'e-opacity-empty-track' });\n slider.appendChild(opacityBgTrack);\n this.updateOpacitySliderBg();\n };\n ColorPicker.prototype.updateOpacitySliderBg = function () {\n var direction = this.enableRtl ? 'to left' : 'to right';\n var opacityEle = select('.e-opacity-empty-track', this.opacitySlider.element);\n if (opacityEle) {\n opacityEle.style.background =\n 'linear-gradient(' + direction + ', rgba(' + this.rgb.slice(0, 3) + ', 0) 0%, ' +\n this.convertToRgbString(this.rgb.slice(0, 3)) + ' 100%)';\n }\n };\n ColorPicker.prototype.hueChange = function (args) {\n this.hsv[0] = args.value;\n this.setHsvContainerBg();\n this.convertToOtherFormat();\n };\n ColorPicker.prototype.opacityChange = function (args) {\n var value = args.value;\n var pValue = this.rgbToHex(this.rgb);\n this.hsv[3] = value / 100;\n this.rgb[3] = value / 100;\n var cValue = this.rgbToHex(this.rgb);\n this.updateOpacityInput(value);\n var rgb = this.convertToRgbString(this.rgb);\n this.updatePreview(rgb);\n this.triggerEvent(cValue, pValue, rgb);\n };\n ColorPicker.prototype.updateOpacityInput = function (value) {\n if (this.enableOpacity && !this.getWrapper().classList.contains(HIDEVALUE)) {\n var opacityTextBoxInst = getInstance(select('.' + OPACITY, this.container), NumericTextBox);\n opacityTextBoxInst.value = value;\n opacityTextBoxInst.dataBind();\n }\n };\n ColorPicker.prototype.createPreview = function (parentEle) {\n var previewContainer = this.createElement('div', { className: PREVIEW });\n parentEle.appendChild(previewContainer);\n var preview = this.createElement('span', { className: 'e-preview ' + CURRENT });\n previewContainer.appendChild(preview);\n var colorValue = this.convertToRgbString(this.rgb);\n preview.style.backgroundColor = colorValue;\n preview = this.createElement('span', { className: 'e-preview ' + PREVIOUS });\n previewContainer.appendChild(preview);\n preview.style.backgroundColor = colorValue;\n };\n ColorPicker.prototype.isPicker = function () {\n return !this.container.classList.contains(PALETTECONTENT);\n };\n ColorPicker.prototype.getPopupEle = function () {\n return this.container.parentElement;\n };\n ColorPicker.prototype.createNumericInput = function (element, value, label, max) {\n var _this = this;\n var numericInput = new NumericTextBox({\n value: value,\n placeholder: label,\n min: 0,\n max: max,\n format: '###.##',\n showSpinButton: false,\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true,\n change: function (args) {\n if (args.event) {\n _this.inputHandler(args.event);\n }\n }\n });\n numericInput.createElement = this.createElement;\n numericInput.appendTo(element);\n };\n ColorPicker.prototype.createInput = function () {\n var isPicker = this.isPicker();\n var wrapper = this.getWrapper();\n if ((isPicker && !wrapper.classList.contains(HIDEVALUE)) || (!isPicker && wrapper.classList.contains(SHOWVALUE))) {\n var inputWrap = this.createElement('div', { className: INPUTWRAPPER });\n if (isPicker) {\n this.appendElement(inputWrap, 2);\n }\n else {\n this.appendElement(inputWrap, 1);\n }\n var container = this.createElement('div', { className: 'e-input-container' });\n inputWrap.appendChild(container);\n if (!wrapper.classList.contains(HIDEVALUESWITCH)) {\n this.appendValueSwitchBtn(inputWrap);\n }\n if (!wrapper.classList.contains(HIDEHEX)) {\n var hexInput = this.createElement('input', {\n className: HEX,\n attrs: { 'maxlength': '7', 'spellcheck': 'false', 'aria-label': 'HEX' }\n });\n container.appendChild(hexInput);\n Input.createInput({\n element: hexInput,\n floatLabelType: 'Always',\n properties: {\n placeholder: 'HEX',\n enableRtl: this.enableRtl,\n enabled: !this.disabled,\n readonly: this.isPicker() ? false : true\n }\n }, this.createElement);\n Input.setValue(this.value.slice(0, 7), hexInput);\n hexInput.addEventListener('input', this.inputHandler.bind(this));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n var label = void 0;\n var value = void 0;\n if (this.isRgb) {\n label = 'RGB';\n value = this.rgb;\n }\n else {\n label = 'HSV';\n value = this.hsv;\n }\n var clsName = ['rh', 'gs', 'bv'];\n for (var i = 0; i < 3; i++) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: 'e-' + clsName[i] + '-value' })), value[i], label[i], 255);\n }\n if (this.enableOpacity) {\n this.appendOpacityValue(container);\n }\n }\n }\n };\n ColorPicker.prototype.appendOpacityValue = function (container) {\n this.createNumericInput(container.appendChild(this.createElement('input', { className: OPACITY })), this.rgb[3] * 100, 'A', 100);\n };\n ColorPicker.prototype.appendValueSwitchBtn = function (targetEle) {\n var valueSwitchBtn = this.createElement('button', {\n className: 'e-icons e-css e-btn e-flat e-icon-btn ' + FORMATSWITCH,\n attrs: { 'title': 'Toggle format' }\n });\n targetEle.appendChild(valueSwitchBtn);\n if (this.isPicker() && !this.getWrapper().classList.contains(HIDERGBA)) {\n valueSwitchBtn.addEventListener('click', this.formatSwitchHandler.bind(this));\n }\n };\n ColorPicker.prototype.createCtrlBtn = function () {\n if (this.modeSwitcher || this.showButtons) {\n this.l10n.setLocale(this.locale);\n var btnWrapper = this.createElement('div', { className: CTRLSWITCH });\n this.container.appendChild(btnWrapper);\n if (this.showButtons) {\n var controlBtnWrapper = this.createElement('div', { className: CTRLBTN });\n btnWrapper.appendChild(controlBtnWrapper);\n var apply = this.l10n.getConstant('Apply');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: apply,\n className: 'e-btn e-css e-flat e-primary e-small ' + APPLY,\n attrs: { 'title': apply }\n }));\n var cancel = this.l10n.getConstant('Cancel');\n controlBtnWrapper.appendChild(this.createElement('button', {\n innerHTML: cancel,\n className: 'e-btn e-css e-flat e-small ' + CANCEL,\n attrs: { 'title': cancel }\n }));\n }\n if (this.modeSwitcher) {\n this.appendModeSwitchBtn();\n }\n }\n };\n ColorPicker.prototype.appendModeSwitchBtn = function () {\n var modeSwitcher = this.createElement('button', {\n className: 'e-icons e-btn e-flat e-icon-btn ' + MODESWITCH, attrs: { title: this.l10n.getConstant('ModeSwitcher') }\n });\n select('.' + CTRLSWITCH, this.container).insertBefore(modeSwitcher, select('.' + CTRLBTN, this.container));\n };\n ColorPicker.prototype.createDragTooltip = function () {\n var _this = this;\n var tooltip = new Tooltip({\n opensOn: 'Custom',\n showTipPointer: false,\n cssClass: 'e-color-picker-tooltip',\n beforeOpen: function (args) {\n _this.tooltipEle = args.element;\n },\n animation: { open: { effect: 'None' }, close: { effect: 'None' } }\n });\n tooltip.createElement = this.createElement;\n tooltip.appendTo(this.container);\n // eslint-disable-next-line\n tooltip.open(this.container);\n this.tooltipEle.style.zIndex = getZindexPartial(this.tooltipEle).toString();\n select('.e-tip-content', this.tooltipEle).appendChild(this.createElement('div', { className: 'e-tip-transparent' }));\n };\n ColorPicker.prototype.getTooltipInst = function () {\n return getInstance(this.container, Tooltip);\n };\n ColorPicker.prototype.setTooltipOffset = function (value) {\n this.getTooltipInst().offsetY = value;\n };\n ColorPicker.prototype.toggleDisabled = function (enable) {\n if (enable) {\n this.getWrapper().classList.add(DISABLED$1);\n }\n else {\n this.getWrapper().classList.remove(DISABLED$1);\n }\n if (this.showButtons) {\n ([].slice.call(selectAll('.e-btn', this.container))).forEach(function (ele) {\n if (enable) {\n attributes(ele, { 'disabled': '' });\n }\n else {\n ele.removeAttribute('disabled');\n }\n });\n }\n };\n ColorPicker.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n ColorPicker.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n ColorPicker.prototype.updateHsv = function () {\n this.hsv[1] = this.hsv[1] > 100 ? 100 : this.hsv[1];\n this.hsv[2] = this.hsv[2] > 100 ? 100 : this.hsv[2];\n this.setHandlerPosition();\n };\n ColorPicker.prototype.convertToOtherFormat = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hsvToRgb.apply(this, this.hsv);\n var cValue = this.rgbToHex(this.rgb);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.updateInput(cValue);\n this.triggerEvent(cValue, pValue, rgba, isKey);\n };\n ColorPicker.prototype.updateInput = function (value) {\n var wrapper = this.getWrapper();\n if (!wrapper.classList.contains(HIDEVALUE)) {\n if (!wrapper.classList.contains(HIDEHEX)) {\n Input.setValue(value.substr(0, 7), select('.' + HEX, this.container));\n }\n if (!wrapper.classList.contains(HIDERGBA)) {\n if (this.isRgb) {\n this.updateValue(this.rgb, false);\n }\n else {\n this.updateValue(this.hsv, false);\n }\n }\n }\n };\n ColorPicker.prototype.updatePreview = function (value) {\n if (this.enableOpacity) {\n this.updateOpacitySliderBg();\n }\n select('.e-tip-transparent', this.tooltipEle).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = value;\n select('.' + PREVIEW + ' .' + PREVIOUS, this.container).style.backgroundColor\n = this.convertToRgbString(this.hexToRgb(this.value));\n };\n ColorPicker.prototype.getDragHandler = function () {\n return select('.' + HANDLER, this.container);\n };\n ColorPicker.prototype.removeTileSelection = function () {\n var selectedEle = [].slice.call(selectAll('.' + SELECT, this.container.children[0]));\n selectedEle.forEach(function (ele) {\n ele.classList.remove(SELECT);\n ele.setAttribute('aria-selected', 'false');\n });\n };\n ColorPicker.prototype.convertRgbToNumberArray = function (value) {\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n /**\n * To get color value in specified type.\n *\n * @param {string} value - Specify the color value.\n * @param {string} type - Specify the type to which the specified color needs to be converted.\n * @method getValue\n * @returns {string} - Color value\n */\n ColorPicker.prototype.getValue = function (value, type) {\n if (!value) {\n value = this.value;\n }\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n /**\n * To show/hide ColorPicker popup based on current state of the SplitButton.\n *\n * @method toggle\n * @returns {void}\n */\n ColorPicker.prototype.toggle = function () {\n if (this.container.parentElement.classList.contains('e-popup-close')) {\n this.splitBtn.toggle();\n }\n else {\n this.closePopup(null);\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ColorPicker.prototype.getModuleName = function () {\n return 'colorpicker';\n };\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n ColorPicker.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n ColorPicker.prototype.wireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.add(dragHandler, 'keydown', this.pickerKeyDown, this);\n EventHandler.add(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown, this);\n if (this.modeSwitcher || this.showButtons) {\n this.addCtrlSwitchEvent();\n }\n EventHandler.add(select('.' + PREVIOUS, this.container), 'click', this.previewHandler, this);\n }\n else {\n EventHandler.add(this.container, 'click', this.paletteClickHandler, this);\n EventHandler.add(this.container, 'keydown', this.paletteKeyDown, this);\n }\n };\n ColorPicker.prototype.formResetHandler = function () {\n this.value = this.initialInputValue;\n attributes(this.element, { 'value': this.initialInputValue });\n };\n ColorPicker.prototype.addCtrlSwitchEvent = function () {\n var ctrlSwitchBtn = select('.' + CTRLSWITCH, this.container);\n if (ctrlSwitchBtn) {\n EventHandler.add(ctrlSwitchBtn, 'click', this.btnClickHandler, this);\n }\n };\n ColorPicker.prototype.pickerKeyDown = function (e) {\n switch (e.keyCode) {\n case 39:\n this.handlerDragPosition(1, this.enableRtl ? -1 : 1, e);\n break;\n case 37:\n this.handlerDragPosition(1, this.enableRtl ? 1 : -1, e);\n break;\n case 38:\n this.handlerDragPosition(2, 1, e);\n break;\n case 40:\n this.handlerDragPosition(2, -1, e);\n break;\n case 13: {\n e.preventDefault();\n var cValue = this.rgbToHex(this.rgb);\n this.enterKeyHandler(cValue, e);\n }\n }\n };\n ColorPicker.prototype.enterKeyHandler = function (value, e) {\n this.triggerChangeEvent(value);\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.closePopup = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.container, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n _this.splitBtn.toggle();\n _this.onPopupClose();\n }\n });\n };\n ColorPicker.prototype.triggerChangeEvent = function (value) {\n var hex = value.slice(0, 7);\n this.trigger('change', {\n currentValue: { hex: hex, rgba: this.convertToRgbString(this.rgb) },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) },\n value: this.enableOpacity ? value : hex\n });\n if (this.enableOpacity) {\n this.setProperties({ 'value': value }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n };\n ColorPicker.prototype.handlerDragPosition = function (prob, value, e) {\n e.preventDefault();\n this.hsv[prob] += value * (e.ctrlKey ? 1 : 3);\n if (this.hsv[prob] < 0) {\n this.hsv[prob] = 0;\n }\n this.updateHsv();\n this.convertToOtherFormat(true);\n };\n ColorPicker.prototype.handlerDown = function (e) {\n e.preventDefault();\n if (e.type === 'mousedown') {\n this.clientX = Math.abs(e.pageX - pageXOffset);\n this.clientY = Math.abs(e.pageY - pageYOffset);\n this.setTooltipOffset(8);\n }\n else {\n this.clientX = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n this.clientY = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n this.setTooltipOffset(-8);\n }\n this.setHsv(this.clientX, this.clientY);\n this.getDragHandler().style.transition = 'left .4s cubic-bezier(.25, .8, .25, 1), top .4s cubic-bezier(.25, .8, .25, 1)';\n this.updateHsv();\n this.convertToOtherFormat();\n this.getDragHandler().focus();\n EventHandler.add(document, 'mousemove touchmove', this.handlerMove, this);\n EventHandler.add(document, 'mouseup touchend', this.handlerEnd, this);\n };\n ColorPicker.prototype.handlerMove = function (e) {\n if (e.type !== 'touchmove') {\n e.preventDefault();\n }\n var x;\n var y;\n if (e.type === 'mousemove') {\n x = Math.abs(e.pageX - pageXOffset);\n y = Math.abs(e.pageY - pageYOffset);\n }\n else {\n x = Math.abs(e.changedTouches[0].pageX - pageXOffset);\n y = Math.abs(e.changedTouches[0].pageY - pageYOffset);\n }\n this.setHsv(x, y);\n var dragHandler = this.getDragHandler();\n this.updateHsv();\n this.convertToOtherFormat();\n this.getTooltipInst().refresh(dragHandler);\n if (!this.tooltipEle.style.transform) {\n if (Math.abs(this.clientX - x) > 8 || Math.abs(this.clientY - y) > 8) {\n select('.' + HSVAREA, this.container).style.cursor = 'pointer';\n dragHandler.style.transition = 'none';\n if (!this.inline) {\n this.tooltipEle.style.zIndex = (parseInt(this.getPopupEle().style.zIndex, 10) + 1).toString();\n }\n this.tooltipEle.style.transform = 'rotate(45deg)';\n dragHandler.classList.add('e-hide-handler');\n }\n }\n };\n ColorPicker.prototype.setHsv = function (clientX, clientY) {\n var ele = select('.' + HSVAREA, this.container);\n var position = ele.getBoundingClientRect();\n if (this.enableRtl) {\n clientX = clientX > position.right ? 0 : Math.abs(clientX - position.right);\n }\n else {\n clientX = clientX > position.left ? Math.abs(clientX - position.left) : 0;\n }\n clientY = clientY > position.top ? Math.abs(clientY - position.top) : 0;\n this.hsv[2] = Math.round(Number(100 * (ele.offsetHeight -\n Math.max(0, Math.min(ele.offsetHeight, (clientY - ele.offsetTop)))) / ele.offsetHeight) * 10) / 10;\n this.hsv[1] =\n Math.round(Number(100 * (Math.max(0, Math.min(ele.offsetWidth, (clientX - ele.offsetLeft)))) / ele.offsetWidth) * 10) / 10;\n };\n ColorPicker.prototype.handlerEnd = function (e) {\n if (e.type !== 'touchend') {\n e.preventDefault();\n }\n EventHandler.remove(document, 'mousemove touchmove', this.handlerMove);\n EventHandler.remove(document, 'mouseup touchend', this.handlerEnd);\n var dragHandler = this.getDragHandler();\n select('.' + HSVAREA, this.container).style.cursor = '';\n if (this.tooltipEle.style.transform) {\n this.tooltipEle.style.transform = '';\n dragHandler.classList.remove('e-hide-handler');\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n };\n ColorPicker.prototype.btnClickHandler = function (e) {\n var target = e.target;\n if (closest(target, '.' + MODESWITCH)) {\n e.stopPropagation();\n this.switchToPalette();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n }\n };\n ColorPicker.prototype.switchToPalette = function () {\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Palette' });\n this.unWireEvents();\n this.destroyOtherComp();\n detach(select('.e-slider-preview', this.container));\n if (!this.getWrapper().classList.contains(HIDEVALUE)) {\n remove(select('.' + INPUTWRAPPER, this.container));\n }\n detach(this.getHsvContainer());\n this.createPalette();\n this.firstPaletteFocus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Palette' });\n };\n ColorPicker.prototype.refreshPopupPos = function () {\n if (!this.inline) {\n var popupEle = this.getPopupEle();\n popupEle.style.left = formatUnit(0 + pageXOffset);\n popupEle.style.top = formatUnit(0 + pageYOffset);\n this.getPopupInst().refreshPosition(this.splitBtn.element.parentElement);\n }\n };\n ColorPicker.prototype.formatSwitchHandler = function () {\n if (this.isRgb) {\n this.updateValue(this.hsv, true, 3, [360, 100, 100]);\n this.isRgb = false;\n }\n else {\n this.updateValue(this.rgb, true, 2);\n this.isRgb = true;\n }\n };\n ColorPicker.prototype.updateValue = function (value, format, idx, max) {\n var clsName = ['e-rh-value', 'e-gs-value', 'e-bv-value'];\n var inst;\n for (var i = 0, len = clsName.length; i < len; i++) {\n inst = getInstance(select('.' + clsName[i], this.container), NumericTextBox);\n inst.value = Math.round(value[i]);\n if (format) {\n inst.placeholder = clsName[i].substr(idx, 1).toUpperCase();\n inst.max = max ? max[i] : 255;\n }\n inst.dataBind();\n }\n };\n ColorPicker.prototype.previewHandler = function (e) {\n var target = e.target;\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.convertRgbToNumberArray(target.style.backgroundColor);\n if (!this.rgb[3]) {\n this.rgb[3] = 1;\n }\n var cValue = this.rgbToHex(this.rgb);\n var hsv = this.rgbToHsv.apply(this, this.rgb);\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n }\n this.setHsvContainerBg(hsv[0]);\n if (this.enableOpacity && hsv[3] !== this.hsv[3]) {\n this.opacitySlider.setProperties({ 'value': hsv[3] * 100 }, true);\n this.opacitySlider.refresh();\n this.updateOpacitySliderBg();\n }\n this.hsv = hsv;\n this.setHandlerPosition();\n this.updateInput(cValue);\n select('.' + PREVIEW + ' .' + CURRENT, this.container).style.backgroundColor = this.convertToRgbString(this.rgb);\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n };\n ColorPicker.prototype.paletteClickHandler = function (e) {\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(TILE)) {\n this.removeTileSelection();\n this.addTileSelection(target);\n if (target.classList.contains(NOCOLOR)) {\n this.noColorTile();\n }\n else {\n var cValue = target.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(this.roundValue(cValue));\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb));\n }\n if (!this.inline && !this.showButtons) {\n this.closePopup(e);\n }\n }\n else {\n if (closest(target, '.' + MODESWITCH)) {\n this.switchToPicker();\n }\n else {\n if (target.classList.contains(APPLY) || target.classList.contains(CANCEL)) {\n this.ctrlBtnClick(target, e);\n }\n else {\n if (this.getWrapper().classList.contains(SHOWVALUE) && closest(target, '.' + FORMATSWITCH)) {\n this.formatSwitchHandler();\n }\n }\n }\n }\n };\n ColorPicker.prototype.noColorTile = function (isKey) {\n if (isKey === void 0) { isKey = false; }\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = [];\n this.hsv = [];\n this.triggerEvent('', pValue, '', isKey);\n };\n ColorPicker.prototype.switchToPicker = function () {\n var wrapper = this.getWrapper();\n this.trigger('beforeModeSwitch', { element: this.container, mode: 'Picker' });\n this.unWireEvents();\n ([].slice.call(selectAll('.' + PALETTES, this.container))).forEach(function (ele) {\n detach(ele);\n });\n if (wrapper.classList.contains(SHOWVALUE)) {\n detach(select('.' + INPUTWRAPPER, this.container));\n }\n this.container.style.width = '';\n var grpEle = select('.e-custom-palette', this.container);\n if (this.presetColors) {\n remove(grpEle);\n }\n this.createPicker();\n this.getDragHandler().focus();\n this.createInput();\n this.refreshPopupPos();\n this.wireEvents();\n this.trigger('onModeSwitch', { element: this.container, mode: 'Picker' });\n };\n ColorPicker.prototype.ctrlBtnClick = function (ele, e) {\n if (ele.classList.contains(APPLY)) {\n var cValue = this.rgbToHex(this.rgb);\n this.triggerChangeEvent(cValue);\n }\n if (!this.inline) {\n this.closePopup(e);\n this.splitBtn.element.focus();\n }\n };\n ColorPicker.prototype.paletteKeyDown = function (e) {\n var target = e.target;\n if (!target.classList.contains(PALETTES)) {\n return;\n }\n var selectedEle;\n var idx;\n var tiles = [].slice.call(selectAll('.' + TILE, target));\n var prevSelectedEle = (tiles.filter(function (tile) { return tile.classList.contains('e-selected'); })).pop();\n switch (!e.altKey && e.keyCode) {\n case 39:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? -1 : 1)]\n : tiles[this.enableRtl ? tiles.length - 1 : 0];\n this.keySelectionChanges(selectedEle);\n break;\n case 37:\n e.preventDefault();\n selectedEle = prevSelectedEle ? tiles[this.tilePosition(tiles, prevSelectedEle, this.enableRtl ? 1 : -1)]\n : tiles[this.enableRtl ? 0 : tiles.length - 1];\n this.keySelectionChanges(selectedEle);\n break;\n case 38:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, -this.columns) : 0;\n selectedEle = tiles[idx] ? tiles[idx] : tiles[idx - this.columns];\n this.keySelectionChanges(selectedEle);\n break;\n case 40:\n e.preventDefault();\n idx = prevSelectedEle ? this.tilePosition(tiles, prevSelectedEle, this.columns) : tiles.length - 1;\n if (tiles[idx]) {\n selectedEle = tiles[idx];\n }\n else {\n idx %= tiles.length;\n idx += tiles[tiles.length - 1].parentElement.childElementCount;\n selectedEle = tiles[idx];\n }\n this.keySelectionChanges(selectedEle);\n break;\n case 13:\n e.preventDefault();\n if (prevSelectedEle) {\n var cValue = prevSelectedEle.getAttribute('aria-label');\n this.enterKeyHandler(cValue ? cValue : '', e);\n }\n }\n };\n ColorPicker.prototype.keySelectionChanges = function (newEle) {\n this.removeTileSelection();\n this.addTileSelection(newEle);\n if (newEle.classList.contains(NOCOLOR)) {\n this.noColorTile(true);\n }\n else {\n var cValue = newEle.getAttribute('aria-label');\n var pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(cValue);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n if (this.getWrapper().classList.contains(SHOWVALUE)) {\n this.updateInput(cValue);\n }\n this.triggerEvent(cValue, pValue, this.convertToRgbString(this.rgb), true);\n }\n };\n ColorPicker.prototype.tilePosition = function (items, element, cIdx) {\n items = Array.prototype.slice.call(items);\n var n = items.length;\n var emptyCount = this.columns - items[n - 1].parentElement.childElementCount;\n var idx = items.indexOf(element);\n idx += cIdx;\n if (idx < 0) {\n idx += n + emptyCount;\n }\n else {\n idx %= n + emptyCount;\n }\n return idx;\n };\n ColorPicker.prototype.inputHandler = function (e) {\n var target = e.target;\n if (!target.value.length) {\n return;\n }\n var hsv;\n var pValue;\n var label = select('.e-float-text', target.parentElement).textContent;\n switch (label) {\n case 'HEX': {\n var value = '';\n if ((target.value[0] === '#' && target.value.length !== 5) || (target.value[0] !== '#' && target.value.length !== 4)) {\n value = this.roundValue(target.value);\n }\n if (value.length === 9) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb = this.hexToRgb(value + value.substr(-2));\n this.inputValueChange(this.rgbToHsv.apply(this, this.rgb), pValue, target.value);\n }\n else {\n return;\n }\n break;\n }\n case 'R':\n if (this.rgb[0] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[0] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'G':\n if (this.rgb[1] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[1] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'B':\n if (this.rgb[2] !== Number(target.value)) {\n pValue = this.rgbToHex(this.rgb);\n this.rgb[2] = Number(target.value);\n hsv = this.rgbToHsv.apply(this, this.rgb);\n this.inputValueChange(hsv, pValue);\n }\n break;\n case 'H':\n this.hueSlider.value = Number(target.value);\n break;\n case 'S':\n if (this.hsv[1] !== Number(target.value)) {\n this.hsv[1] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'V':\n if (this.hsv[2] !== Number(target.value)) {\n this.hsv[2] = Number(target.value);\n this.updateHsv();\n this.convertToOtherFormat();\n }\n break;\n case 'A':\n this.opacitySlider.value = Number(target.value);\n break;\n }\n };\n ColorPicker.prototype.inputValueChange = function (hsv, pValue, value) {\n if (hsv[0] !== this.hsv[0]) {\n this.hueSlider.setProperties({ 'value': hsv[0] }, true);\n this.hueSlider.refresh();\n this.setHsvContainerBg(hsv[0]);\n }\n this.hsv = hsv;\n var cValue = this.rgbToHex(this.rgb);\n this.setHandlerPosition();\n this.updateInput(value ? value : cValue);\n var rgba = this.convertToRgbString(this.rgb);\n this.updatePreview(rgba);\n this.triggerEvent(cValue, pValue, rgba);\n };\n ColorPicker.prototype.triggerEvent = function (cValue, pValue, rgba, isKey) {\n if (isKey === void 0) { isKey = false; }\n var hex = cValue.slice(0, 7);\n if (!this.showButtons && !isKey) {\n this.trigger('change', { currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: this.value.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(this.value)) }, value: cValue });\n if (this.enableOpacity) {\n this.setProperties({ 'value': cValue }, true);\n }\n else {\n this.setProperties({ 'value': hex }, true);\n }\n this.element.value = hex ? hex : '#000000';\n }\n else {\n this.trigger('select', {\n currentValue: { hex: hex, rgba: rgba },\n previousValue: { hex: pValue.slice(0, 7), rgba: this.convertToRgbString(this.hexToRgb(pValue)) }\n });\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n ColorPicker.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n ['tabindex', 'spellcheck'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n if (this.inline) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n else {\n if (this.isPopupOpen()) {\n this.unWireEvents();\n this.destroyOtherComp();\n }\n this.splitBtn.destroy();\n this.splitBtn = null;\n }\n this.tileRipple();\n this.tileRipple = null;\n this.ctrlBtnRipple();\n this.ctrlBtnRipple = null;\n if (this.element.nextElementSibling) {\n detach(this.element.nextElementSibling);\n }\n if (wrapper) {\n wrapper.parentElement.insertBefore(this.element, wrapper);\n detach(wrapper);\n }\n this.container = null;\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n ColorPicker.prototype.destroyOtherComp = function () {\n if (this.isPicker()) {\n this.hueSlider.destroy();\n if (this.enableOpacity) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n this.hueSlider = null;\n var tooltipInst = this.getTooltipInst();\n tooltipInst.close();\n tooltipInst.destroy();\n this.tooltipEle = null;\n }\n };\n ColorPicker.prototype.isPopupOpen = function () {\n return this.getPopupEle().classList.contains('e-popup-open');\n };\n ColorPicker.prototype.unWireEvents = function () {\n if (this.isPicker()) {\n var dragHandler = this.getDragHandler();\n EventHandler.remove(dragHandler, 'keydown', this.pickerKeyDown);\n EventHandler.remove(this.getHsvContainer(), 'mousedown touchstart', this.handlerDown);\n if (this.modeSwitcher || this.showButtons) {\n EventHandler.remove(select('.' + CTRLSWITCH, this.container), 'click', this.btnClickHandler);\n }\n EventHandler.remove(select('.' + PREVIOUS, this.container), 'click', this.previewHandler);\n }\n else {\n EventHandler.remove(this.container, 'click', this.paletteClickHandler);\n EventHandler.remove(this.container, 'keydown', this.paletteKeyDown);\n }\n };\n ColorPicker.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n ColorPicker.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n ColorPicker.prototype.rgbToHsv = function (r, g, b, opacity) {\n if (this.rgb && !this.rgb.length) {\n return [];\n }\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var v = max;\n var d = max - min;\n var s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n ColorPicker.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n ColorPicker.prototype.rgbToHex = function (rgb) {\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n ColorPicker.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n ColorPicker.prototype.changeModeSwitcherProp = function (prop) {\n var ctrlSwitchWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlSwitchWrapper) {\n this.appendModeSwitchBtn();\n }\n else {\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n }\n else {\n if (ctrlSwitchWrapper) {\n if (this.showButtons) {\n detach(select('.' + MODESWITCH, ctrlSwitchWrapper));\n }\n else {\n remove(ctrlSwitchWrapper);\n }\n }\n }\n };\n ColorPicker.prototype.changeShowBtnProps = function (prop) {\n var ctrlBtnWrapper = select('.' + CTRLSWITCH, this.container);\n if (prop) {\n if (ctrlBtnWrapper) {\n remove(ctrlBtnWrapper);\n }\n this.createCtrlBtn();\n if (this.isPicker() && !this.disabled) {\n this.addCtrlSwitchEvent();\n }\n }\n else {\n if (this.modeSwitcher) {\n detach(select('.' + CTRLBTN, ctrlBtnWrapper));\n }\n else {\n remove(ctrlBtnWrapper);\n }\n }\n };\n ColorPicker.prototype.changeValueProp = function (newProp) {\n if (this.isPicker()) {\n this.rgb = this.hexToRgb(newProp);\n this.hsv = this.rgbToHsv.apply(this, this.rgb);\n this.setHandlerPosition();\n detach(closest(this.hueSlider.element, '.e-slider-preview'));\n this.createSlider();\n this.setHsvContainerBg();\n this.updateInput(newProp);\n if (this.rgb.length === 4) {\n this.updateOpacityInput(this.rgb[3] * 100);\n }\n }\n else {\n this.removeTileSelection();\n var ele = this.container.querySelector('span[aria-label=\"' + this.roundValue(newProp) + '\"]');\n if (ele) {\n this.addTileSelection(ele);\n }\n }\n };\n ColorPicker.prototype.setInputEleProps = function () {\n remove(select('.' + INPUTWRAPPER, this.container));\n this.createInput();\n };\n ColorPicker.prototype.changeDisabledProp = function (newProp) {\n if (this.isPicker()) {\n this.hueSlider.enabled = !newProp;\n this.opacitySlider.enabled = !newProp;\n this.setInputEleProps();\n }\n if (newProp) {\n this.toggleDisabled(true);\n this.unWireEvents();\n }\n else {\n this.toggleDisabled(false);\n this.wireEvents();\n }\n };\n ColorPicker.prototype.changeCssClassProps = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n var popupWrapper = this.getPopupEle();\n if (oldProp) {\n removeClass([wrapper, popupWrapper], oldProp.split(' '));\n }\n if (newProp) {\n addClass([wrapper, popupWrapper], newProp.split(' '));\n }\n };\n ColorPicker.prototype.changeRtlProps = function (newProp) {\n if (newProp) {\n addClass([this.getWrapper()], 'e-rtl');\n }\n else {\n removeClass([this.getWrapper()], 'e-rtl');\n }\n };\n ColorPicker.prototype.changePaletteProps = function () {\n detach(this.container.children[0]);\n this.container.style.width = '';\n this.createPalette();\n };\n ColorPicker.prototype.changeOpacityProps = function (newProp) {\n var wrapper = this.getWrapper();\n if (newProp) {\n removeClass([this.container.parentElement], HIDEOPACITY);\n this.createOpacitySlider(select('.e-colorpicker-slider', this.container).appendChild(this.createElement('div', { className: 'e-opacity-slider' })));\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n this.appendOpacityValue(select('.e-input-container', this.container));\n }\n }\n else {\n addClass([this.container.parentElement], HIDEOPACITY);\n this.opacitySlider.destroy();\n remove(this.opacitySlider.element);\n this.opacitySlider = null;\n if (!wrapper.classList.contains(HIDEVALUE) && !wrapper.classList.contains(HIDERGBA)) {\n remove(select('.' + OPACITY, this.container).parentElement);\n }\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ColorPickerModel} newProp - Specifies new properties\n * @param {ColorPickerModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ColorPicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (!isNullOrUndefined(newProp.value)) {\n var value = this.roundValue(newProp.value);\n if (value.length === 9) {\n this.element.value = this.roundValue(value).slice(0, 7);\n var preview = this.splitBtn && select('.' + SPLITPREVIEW, this.splitBtn.element);\n if (preview) {\n preview.style.backgroundColor = this.convertToRgbString(this.hexToRgb(newProp.value));\n }\n }\n else {\n this.value = oldProp.value;\n }\n }\n if (!this.inline && isNullOrUndefined(newProp.inline)) {\n var otherCompModel = ['disabled', 'enableRtl'];\n this.splitBtn.setProperties(getModel(newProp, otherCompModel));\n if (!this.isPopupOpen()) {\n this.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n this.changeRtlProps(newProp.enableRtl);\n return;\n }\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'inline':\n if (newProp.inline) {\n this_1.getWrapper().appendChild(this_1.container);\n this_1.splitBtn.destroy();\n detach(this_1.element.nextElementSibling);\n if (!this_1.container.children.length) {\n this_1.createWidget();\n }\n }\n else {\n this_1.destroyOtherComp();\n this_1.unWireEvents();\n this_1.container.innerHTML = '';\n this_1.createSplitBtn();\n }\n break;\n case 'cssClass': {\n this_1.changeCssClassProps(newProp.cssClass, oldProp.cssClass);\n var props = newProp.cssClass.split(' ').concat(oldProp.cssClass.split(' '));\n props = props.reduce(function (a, b) { if (a.indexOf(b) < 0) {\n a.push(b);\n } return a; }, []);\n var count_1 = 0;\n props.forEach(function (cls) {\n if (count_1 === 0 &&\n (cls === HIDEVALUE || cls === HIDEVALUESWITCH || cls === SHOWVALUE || cls === HIDEHEX || cls === HIDERGBA)) {\n var inputWrap = select('.' + INPUTWRAPPER, _this.container);\n if (inputWrap) {\n remove(select('.' + INPUTWRAPPER, _this.container));\n }\n _this.createInput();\n count_1++;\n }\n });\n break;\n }\n case 'enableRtl':\n if (this_1.isPicker()) {\n this_1.hueSlider.enableRtl = newProp.enableRtl;\n if (this_1.enableOpacity) {\n this_1.opacitySlider.enableRtl = newProp.enableRtl;\n }\n this_1.setInputEleProps();\n }\n this_1.changeRtlProps(newProp.enableRtl);\n break;\n case 'disabled':\n this_1.changeDisabledProp(newProp.disabled);\n break;\n case 'value':\n if (this_1.value !== oldProp.value) {\n this_1.changeValueProp(newProp.value);\n }\n break;\n case 'showButtons':\n this_1.changeShowBtnProps(newProp.showButtons);\n break;\n case 'mode':\n if (newProp.mode === 'Picker') {\n this_1.switchToPicker();\n }\n else {\n this_1.switchToPalette();\n }\n break;\n case 'modeSwitcher':\n this_1.changeModeSwitcherProp(newProp.modeSwitcher);\n break;\n case 'columns':\n case 'presetColors':\n if (!this_1.isPicker()) {\n this_1.changePaletteProps();\n }\n break;\n case 'noColor':\n if (newProp.noColor) {\n if (this_1.mode === 'Palette' && !this_1.modeSwitcher) {\n this_1.setNoColor();\n }\n }\n else {\n this_1.changePaletteProps();\n }\n break;\n case 'enableOpacity':\n this_1.changeOpacityProps(newProp.enableOpacity);\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n /**\n * Sets the focus to Colorpicker\n * its native method\n *\n * @public\n * @returns {void}\n */\n ColorPicker.prototype.focusIn = function () {\n this.element.parentElement.focus();\n };\n __decorate$5([\n Property('#008000ff')\n ], ColorPicker.prototype, \"value\", void 0);\n __decorate$5([\n Property('')\n ], ColorPicker.prototype, \"cssClass\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"disabled\", void 0);\n __decorate$5([\n Property('Picker')\n ], ColorPicker.prototype, \"mode\", void 0);\n __decorate$5([\n Property(true)\n ], ColorPicker.prototype, \"modeSwitcher\", void 0);\n __decorate$5([\n Property(null)\n ], ColorPicker.prototype, \"presetColors\", void 0);\n __decorate$5([\n Property(true)\n ], ColorPicker.prototype, \"showButtons\", void 0);\n __decorate$5([\n Property(10)\n ], ColorPicker.prototype, \"columns\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"inline\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"noColor\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"enablePersistence\", void 0);\n __decorate$5([\n Property(true)\n ], ColorPicker.prototype, \"enableOpacity\", void 0);\n __decorate$5([\n Property(false)\n ], ColorPicker.prototype, \"createPopupOnClick\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"select\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"change\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeTileRender\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeOpen\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"open\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeClose\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"beforeModeSwitch\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"onModeSwitch\", void 0);\n __decorate$5([\n Event()\n ], ColorPicker.prototype, \"created\", void 0);\n ColorPicker = __decorate$5([\n NotifyPropertyChanges\n ], ColorPicker);\n return ColorPicker;\n}(Component));\n\n/**\n * ColorPicker modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar HIDE_CLEAR = 'e-clear-icon-hide';\nvar TEXTBOX_FOCUS = 'e-input-focus';\nvar containerAttr = ['title', 'style', 'class'];\n/**\n * Represents the TextBox component that allows the user to enter the values based on it's type.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar TextBox = /** @__PURE__ @class */ (function (_super) {\n __extends$6(TextBox, _super);\n /**\n *\n * @param {TextBoxModel} options - Specifies the TextBox model.\n * @param {string | HTMLInputElement | HTMLTextAreaElement} element - Specifies the element to render as component.\n * @private\n */\n function TextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousValue = null;\n _this.isAngular = false;\n _this.isHiddenInput = false;\n _this.isForm = false;\n _this.inputPreviousValue = null;\n _this.isVue = false;\n _this.textboxOptions = options;\n return _this;\n }\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {TextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {TextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'floatLabelType':\n Input.removeFloating(this.textboxWrapper);\n Input.addFloating(this.respectiveElement, this.floatLabelType, this.placeholder);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n this.bindClearEvent();\n break;\n case 'width':\n Input.setWidth(newProp.width, this.textboxWrapper.container);\n break;\n case 'value':\n {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n if (!this.isBlank(this.value)) {\n this.value = this.value.toString();\n }\n this.isProtectedOnChange = prevOnChange;\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if ((this.isAngular || this.isVue) && this.preventChange === true) {\n this.previousValue = this.isAngular ? this.value : this.previousValue;\n this.preventChange = false;\n }\n else if (isNullOrUndefined(this.isAngular) || !this.isAngular\n || (this.isAngular && !this.preventChange) || (this.isAngular && isNullOrUndefined(this.preventChange))) {\n this.raiseChangeEvent();\n }\n }\n break;\n case 'htmlAttributes':\n {\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.checkAttributes(true);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.respectiveElement);\n break;\n case 'type':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n this.respectiveElement.setAttribute('type', this.type);\n Input.validateInputType(this.textboxWrapper.container, this.element);\n this.raiseChangeEvent();\n }\n break;\n case 'showClearButton':\n if (this.respectiveElement.tagName !== 'TEXTAREA') {\n Input.setClearButton(this.showClearButton, this.respectiveElement, this.textboxWrapper);\n this.bindClearEvent();\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.textboxWrapper.container]);\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n Input.calculateWidth(this.respectiveElement, this.textboxWrapper.container);\n break;\n case 'autocomplete':\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else {\n this.removeAttributes(['autocomplete']);\n }\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n break;\n }\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TextBox.prototype.getModuleName = function () {\n return 'textbox';\n };\n TextBox.prototype.isBlank = function (str) {\n return (!str || /^\\s*$/.test(str));\n };\n TextBox.prototype.preRender = function () {\n this.cloneElement = this.element.cloneNode(true);\n this.formElement = closest(this.element, 'form');\n if (!isNullOrUndefined(this.formElement)) {\n this.isForm = true;\n }\n /* istanbul ignore next */\n if (this.element.tagName === 'EJS-TEXTBOX') {\n var ejInstance = getValue('ej2_instances', this.element);\n var inputElement = this.multiline ?\n this.createElement('textarea') :\n this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n inputElement.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n inputElement.innerHTML = this.element.innerHTML;\n if (attributeName === 'name') {\n this.element.removeAttribute('name');\n }\n }\n else if (attributeName === 'class') {\n inputElement.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n this.element.appendChild(inputElement);\n this.element = inputElement;\n setValue('ej2_instances', ejInstance, this.element);\n }\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, true);\n }\n if (this.element.tagName !== 'TEXTAREA') {\n this.element.setAttribute('type', this.type);\n }\n this.element.setAttribute('role', 'textbox');\n this.globalize = new Internationalization(this.locale);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('textbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('textbox'));\n }\n if (!this.element.hasAttribute('name')) {\n this.element.setAttribute('name', this.element.getAttribute('id'));\n }\n if (this.element.tagName === 'INPUT' && this.multiline) {\n this.isHiddenInput = true;\n this.textarea = this.createElement('textarea');\n this.element.parentNode.insertBefore(this.textarea, this.element);\n this.element.setAttribute('type', 'hidden');\n this.textarea.setAttribute('name', this.element.getAttribute('name'));\n this.element.removeAttribute('name');\n this.textarea.setAttribute('role', this.element.getAttribute('role'));\n this.element.removeAttribute('role');\n this.textarea.setAttribute('id', getUniqueID('textarea'));\n var apiAttributes = ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var index = 0; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (this.element.hasAttribute(attributeName) && containerAttr.indexOf(attributeName) < 0 &&\n !(attributeName === 'id' || attributeName === 'type' || attributeName === 'e-mappinguid')) {\n // e-mappinguid attribute is handled for Grid component.\n this.textarea.setAttribute(attributeName, this.element.attributes[index].nodeValue);\n if (apiAttributes.indexOf(attributeName) < 0) {\n this.element.removeAttribute(attributeName);\n index--;\n }\n }\n }\n }\n };\n TextBox.prototype.checkAttributes = function (isDynamic) {\n var attrs = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['placeholder', 'disabled', 'value', 'readonly', 'type', 'autocomplete'];\n for (var _i = 0, attrs_1 = attrs; _i < attrs_1.length; _i++) {\n var key = attrs_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(key))) {\n switch (key) {\n case 'disabled':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(key) === 'disabled' || this.element.getAttribute(key) === '' ||\n this.element.getAttribute(key) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(key) === 'readonly' || this.element.getAttribute(key) === ''\n || this.element.getAttribute(key) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'autocomplete':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['autocomplete'] === undefined)) || isDynamic) {\n var autoCompleteTxt = this.element.autocomplete === 'off' ? 'off' : 'on';\n this.setProperties({ autocomplete: autoCompleteTxt }, !isDynamic);\n }\n break;\n case 'value':\n if (((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['value'] === undefined)) || isDynamic) && this.element.value !== '') {\n this.setProperties({ value: this.element.value }, !isDynamic);\n }\n break;\n case 'type':\n if ((isNullOrUndefined(this.textboxOptions) || (this.textboxOptions['type'] === undefined)) || isDynamic) {\n this.setProperties({ type: this.element.type }, !isDynamic);\n }\n break;\n }\n }\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n TextBox.prototype.render = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getInputValidClassList(this.cssClass);\n }\n this.respectiveElement = (this.isHiddenInput) ? this.textarea : this.element;\n this.textboxWrapper = Input.createInput({\n element: this.respectiveElement,\n floatLabelType: this.floatLabelType,\n properties: {\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n cssClass: updatedCssClassValue,\n readonly: this.readonly,\n placeholder: this.placeholder,\n showClearButton: this.showClearButton\n }\n });\n this.updateHTMLAttrToWrapper();\n if (this.isHiddenInput) {\n this.respectiveElement.parentNode.insertBefore(this.element, this.respectiveElement);\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.value)) {\n Input.setValue(this.value, this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n }\n if (!isNullOrUndefined(this.value)) {\n this.initialValue = this.value;\n this.setInitialValue();\n }\n if (this.autocomplete !== 'on' && this.autocomplete !== '') {\n this.respectiveElement.autocomplete = this.autocomplete;\n }\n else if (!isNullOrUndefined(this.textboxOptions) && (this.textboxOptions['autocomplete'] !== undefined)) {\n this.removeAttributes(['autocomplete']);\n }\n this.previousValue = this.value;\n this.inputPreviousValue = this.value;\n this.respectiveElement.defaultValue = this.respectiveElement.value;\n Input.setWidth(this.width, this.textboxWrapper.container);\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = this.getInputValidClassList(this.htmlAttributes[\"\" + key]);\n if (updatedClassValues !== '') {\n addClass([this.textboxWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.textboxWrapper.container.getAttribute(key);\n setStyle = !isNullOrUndefined(setStyle) ? (setStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.textboxWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.textboxWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getInputValidClassList(newClass), [this.textboxWrapper.container], this.getInputValidClassList(oldClass));\n };\n TextBox.prototype.getInputValidClassList = function (inputClassName) {\n var result = inputClassName;\n if (!isNullOrUndefined(inputClassName) && inputClassName !== '') {\n result = (inputClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n TextBox.prototype.setInitialValue = function () {\n if (!this.isAngular) {\n this.respectiveElement.setAttribute('value', this.initialValue);\n }\n };\n TextBox.prototype.wireEvents = function () {\n EventHandler.add(this.respectiveElement, 'focus', this.focusHandler, this);\n EventHandler.add(this.respectiveElement, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.respectiveElement, 'input', this.inputHandler, this);\n EventHandler.add(this.respectiveElement, 'change', this.changeHandler, this);\n if (this.isForm) {\n EventHandler.add(this.formElement, 'reset', this.resetForm, this);\n }\n this.bindClearEvent();\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-autofill') &&\n this.textboxWrapper.container.classList.contains('e-outline')) {\n EventHandler.add((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler, this);\n }\n };\n TextBox.prototype.animationHandler = function () {\n this.textboxWrapper.container.classList.add('e-valid-input');\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label)) {\n label.classList.add('e-label-top');\n if (label.classList.contains('e-label-bottom')) {\n label.classList.remove('e-label-bottom');\n }\n }\n };\n TextBox.prototype.resetValue = function (value) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.value = value;\n this.isProtectedOnChange = prevOnChange;\n };\n TextBox.prototype.resetForm = function () {\n if (this.isAngular) {\n this.resetValue('');\n }\n else {\n this.resetValue(this.initialValue);\n }\n if (!isNullOrUndefined(this.textboxWrapper)) {\n var label = this.textboxWrapper.container.querySelector('.e-float-text');\n if (!isNullOrUndefined(label) && this.floatLabelType !== 'Always') {\n if ((isNullOrUndefined(this.initialValue) || this.initialValue === '')) {\n label.classList.add('e-label-bottom');\n label.classList.remove('e-label-top');\n }\n else if (this.initialValue !== '') {\n label.classList.add('e-label-top');\n label.classList.remove('e-label-bottom');\n }\n }\n }\n };\n TextBox.prototype.focusHandler = function (args) {\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('focus', eventArgs);\n };\n TextBox.prototype.focusOutHandler = function (args) {\n if (!(this.previousValue === null && this.value === null && this.respectiveElement.value === '') &&\n (this.previousValue !== this.value)) {\n this.raiseChangeEvent(args, true);\n }\n var eventArgs = {\n container: this.textboxWrapper.container,\n event: args,\n value: this.value\n };\n this.trigger('blur', eventArgs);\n };\n TextBox.prototype.inputHandler = function (args) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var textboxObj = this;\n var eventArgs = {\n event: args,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.inputPreviousValue = this.respectiveElement.value;\n /* istanbul ignore next */\n if (this.isAngular) {\n textboxObj.localChange({ value: this.respectiveElement.value });\n this.preventChange = true;\n }\n if (this.isVue) {\n this.preventChange = true;\n }\n this.trigger('input', eventArgs);\n args.stopPropagation();\n };\n TextBox.prototype.changeHandler = function (args) {\n this.setProperties({ value: this.respectiveElement.value }, true);\n this.raiseChangeEvent(args, true);\n args.stopPropagation();\n };\n TextBox.prototype.raiseChangeEvent = function (event, interaction) {\n var eventArgs = {\n event: event,\n value: this.value,\n previousValue: this.previousValue,\n container: this.textboxWrapper.container,\n isInteraction: interaction ? interaction : false,\n isInteracted: interaction ? interaction : false\n };\n this.preventChange = false;\n this.trigger('change', eventArgs);\n this.previousValue = this.value;\n //EJ2CORE-738:For this task we update the textarea value to the input when input tag with multiline is present\n if (this.element.tagName === 'INPUT' && this.multiline && Browser.info.name === 'mozilla') {\n this.element.value = this.respectiveElement.value;\n }\n };\n TextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.respectiveElement.tagName !== 'TEXTAREA') {\n if (this.enabled) {\n EventHandler.add(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler, this);\n }\n else {\n EventHandler.remove(this.textboxWrapper.clearButton, 'mousedown touchstart', this.resetInputHandler);\n }\n }\n };\n TextBox.prototype.resetInputHandler = function (event) {\n event.preventDefault();\n if (!(this.textboxWrapper.clearButton.classList.contains(HIDE_CLEAR)) || this.textboxWrapper.container.classList.contains('e-static-clear')) {\n Input.setValue('', this.respectiveElement, this.floatLabelType, this.showClearButton);\n if (this.isHiddenInput) {\n this.element.value = this.respectiveElement.value;\n }\n this.setProperties({ value: this.respectiveElement.value }, true);\n var eventArgs = {\n event: event,\n value: this.respectiveElement.value,\n previousValue: this.inputPreviousValue,\n container: this.textboxWrapper.container\n };\n this.trigger('input', eventArgs);\n this.inputPreviousValue = this.respectiveElement.value;\n this.raiseChangeEvent(event, true);\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n }\n };\n TextBox.prototype.unWireEvents = function () {\n EventHandler.remove(this.respectiveElement, 'focus', this.focusHandler);\n EventHandler.remove(this.respectiveElement, 'blur', this.focusOutHandler);\n EventHandler.remove(this.respectiveElement, 'input', this.inputHandler);\n EventHandler.remove(this.respectiveElement, 'change', this.changeHandler);\n if (this.isForm) {\n EventHandler.remove(this.formElement, 'reset', this.resetForm);\n }\n if (!isNullOrUndefined(this.textboxWrapper.container.querySelector('.e-float-text')) && this.floatLabelType === 'Auto'\n && this.textboxWrapper.container.classList.contains('e-outline') &&\n this.textboxWrapper.container.classList.contains('e-autofill')) {\n EventHandler.remove((this.textboxWrapper.container.querySelector('.e-float-text')), 'animationstart', this.animationHandler);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also, it maintains the initial TextBox element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n TextBox.prototype.destroy = function () {\n this.unWireEvents();\n if (this.element.tagName === 'INPUT' && this.multiline) {\n detach(this.textboxWrapper.container.getElementsByTagName('textarea')[0]);\n this.respectiveElement = this.element;\n this.element.removeAttribute('type');\n }\n this.respectiveElement.value = this.respectiveElement.defaultValue;\n this.respectiveElement.classList.remove('e-input');\n this.removeAttributes(['aria-disabled', 'aria-readonly', 'aria-labelledby']);\n if (!isNullOrUndefined(this.textboxWrapper)) {\n this.textboxWrapper.container.insertAdjacentElement('afterend', this.respectiveElement);\n detach(this.textboxWrapper.container);\n }\n this.textboxWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /**\n * Adding the icons to the TextBox component.\n *\n * @param { string } position - Specify the icon placement on the TextBox. Possible values are append and prepend.\n * @param { string | string[] } icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for TextBox.\n * @returns {void}\n */\n TextBox.prototype.addIcon = function (position, icons) {\n Input.addIcon(position, icons, this.textboxWrapper.container, this.respectiveElement, this.createElement);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n */\n TextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Adding the multiple attributes as key-value pair to the TextBox element.\n *\n * @param {string} attributes - Specifies the attributes to be add to TextBox element.\n * @returns {void}\n */\n TextBox.prototype.addAttributes = function (attributes$$1) {\n for (var _i = 0, _a = Object.keys(attributes$$1); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: false }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: true }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'class') {\n this.respectiveElement.classList.add(attributes$$1[\"\" + key]);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: attributes$$1[\"\" + key] }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else if (key === 'rows' && this.respectiveElement.tagName === 'TEXTAREA') {\n this.respectiveElement.setAttribute(key, attributes$$1[\"\" + key]);\n }\n else {\n this.respectiveElement.setAttribute(key, attributes$$1[\"\" + key]);\n }\n }\n };\n /**\n * Removing the multiple attributes as key-value pair to the TextBox element.\n *\n * @param { string[] } attributes - Specifies the attributes name to be removed from TextBox element.\n * @returns {void}\n */\n TextBox.prototype.removeAttributes = function (attributes$$1) {\n for (var _i = 0, attributes_1 = attributes$$1; _i < attributes_1.length; _i++) {\n var key = attributes_1[_i];\n if (key === 'disabled') {\n this.setProperties({ enabled: true }, true);\n Input.setEnabled(this.enabled, this.respectiveElement, this.floatLabelType, this.textboxWrapper.container);\n }\n else if (key === 'readonly') {\n this.setProperties({ readonly: false }, true);\n Input.setReadonly(this.readonly, this.respectiveElement);\n }\n else if (key === 'placeholder') {\n this.setProperties({ placeholder: null }, true);\n Input.setPlaceholder(this.placeholder, this.respectiveElement);\n }\n else {\n this.respectiveElement.removeAttribute(key);\n }\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n TextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.respectiveElement && this.enabled) {\n this.respectiveElement.focus();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n addClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n TextBox.prototype.focusOut = function () {\n if (document.activeElement === this.respectiveElement && this.enabled) {\n this.respectiveElement.blur();\n if (this.textboxWrapper.container.classList.contains('e-input-group')\n || this.textboxWrapper.container.classList.contains('e-outline')\n || this.textboxWrapper.container.classList.contains('e-filled')) {\n removeClass([this.textboxWrapper.container], [TEXTBOX_FOCUS]);\n }\n }\n };\n __decorate$6([\n Property('text')\n ], TextBox.prototype, \"type\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"readonly\", void 0);\n __decorate$6([\n Property(null)\n ], TextBox.prototype, \"value\", void 0);\n __decorate$6([\n Property('Never')\n ], TextBox.prototype, \"floatLabelType\", void 0);\n __decorate$6([\n Property('')\n ], TextBox.prototype, \"cssClass\", void 0);\n __decorate$6([\n Property(null)\n ], TextBox.prototype, \"placeholder\", void 0);\n __decorate$6([\n Property('on')\n ], TextBox.prototype, \"autocomplete\", void 0);\n __decorate$6([\n Property({})\n ], TextBox.prototype, \"htmlAttributes\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"multiline\", void 0);\n __decorate$6([\n Property(true)\n ], TextBox.prototype, \"enabled\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"showClearButton\", void 0);\n __decorate$6([\n Property(false)\n ], TextBox.prototype, \"enablePersistence\", void 0);\n __decorate$6([\n Property(null)\n ], TextBox.prototype, \"width\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"created\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"destroyed\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"change\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"blur\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"focus\", void 0);\n __decorate$6([\n Event()\n ], TextBox.prototype, \"input\", void 0);\n TextBox = __decorate$6([\n NotifyPropertyChanges\n ], TextBox);\n return TextBox;\n}(Component));\n\n/**\n * Uploader modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar SignatureBase = /** @__PURE__ @class */ (function (_super) {\n __extends$8(SignatureBase, _super);\n function SignatureBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n /* minDistance(distance between the two point) was calaculated for smoothness.*/\n _this.minDistance = 5;\n _this.previous = 0;\n /* interval handles for the smoothness in the mouse move event.*/\n _this.interval = 30;\n _this.timeout = null;\n _this.isSignatureEmpty = true;\n _this.backgroundLoaded = null;\n _this.clearArray = [];\n _this.isBlazor = false;\n _this.isResponsive = false;\n _this.signPointsColl = [];\n _this.signRatioPointsColl = [];\n return _this;\n }\n /**\n * To Initialize the component rendering\n *\n * @private\n * @param {HTMLCanvasElement} element - Specifies the canvas element.\n * @param {BlazorDotnetObject} dotnetRef - Specifies for blazor client to server communication.\n * @returns {void}\n */\n SignatureBase.prototype.initialize = function (element, dotnetRef) {\n this.element = element;\n this.canvasContext = this.element.getContext('2d');\n this.canvasContext.canvas.tabIndex = -1;\n if (dotnetRef) {\n this.dotnetRef = dotnetRef;\n this.isBlazor = true;\n if (this.signatureValue) {\n this.loadPersistedSignature();\n }\n }\n this.setHTMLProperties();\n if (isNullOrUndefined(this.signatureValue)) {\n this.updateSnapCollection(true);\n }\n this.wireEvents();\n if (!this.isBlazor) {\n this.trigger('created', null);\n }\n };\n SignatureBase.prototype.wireEvents = function () {\n if (isNullOrUndefined(this.pointColl) && !this.isReadOnly && !this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'keydown', this.keyboardHandler, this);\n window.addEventListener('resize', this.resizeHandler.bind(this));\n }\n else if (this.pointColl) {\n EventHandler.add(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler, this);\n EventHandler.add(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler, this);\n EventHandler.add(document, 'mouseup', this.mouseUpHandler, this);\n }\n };\n SignatureBase.prototype.unwireEvents = function (type) {\n if (type === 'mouseup' || type === 'touchend') {\n EventHandler.remove(this.canvasContext.canvas, 'mousemove touchmove', this.mouseMoveHandler);\n EventHandler.remove(this.canvasContext.canvas, 'mouseup touchend', this.mouseUpHandler);\n EventHandler.remove(document, 'mouseup', this.mouseUpHandler);\n }\n else {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n EventHandler.remove(this.canvasContext.canvas, 'keydown', this.keyboardHandler);\n window.removeEventListener('resize', this.resizeHandler);\n }\n };\n SignatureBase.prototype.setHTMLProperties = function () {\n if (this.element.height === 150 && this.element.width === 300) {\n this.element.height = this.element.offsetHeight;\n this.element.width = this.element.offsetWidth;\n this.isResponsive = true;\n }\n this.canvasContext.scale(1, 1);\n this.canvasContext.fillStyle = this.strokeColor;\n if (this.backgroundImage) {\n this.canvasContext.canvas.style.backgroundImage = 'url(' + this.backgroundImage + ')';\n this.canvasContext.canvas.style.backgroundRepeat = 'no-repeat';\n }\n else if (this.backgroundColor) {\n this.canvasContext.canvas.style.backgroundColor = this.backgroundColor;\n }\n };\n // eslint-disable-next-line\n SignatureBase.prototype.mouseDownHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchstart') {\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.beginStroke(e);\n this.wireEvents();\n }\n };\n SignatureBase.prototype.mouseMoveHandler = function (e) {\n if (e.buttons === 1 || e.buttons === 2 || e.type === 'touchmove') {\n if (e.type === 'touchmove') {\n e.preventDefault();\n e.stopPropagation();\n }\n if (this.interval) {\n this.updateStrokeWithThrottle(e);\n }\n else {\n this.updateStroke(e);\n }\n }\n };\n SignatureBase.prototype.mouseUpHandler = function (e) {\n var args = { actionName: 'strokeUpdate' };\n if (e.type === 'touchstart') {\n e.preventDefault();\n e.stopPropagation();\n }\n this.endDraw();\n this.updateSnapCollection();\n this.unwireEvents(e.type);\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'mouseUp');\n }\n this.signatureValue = this.snapColl[this.incStep];\n for (var i = 0; i < this.signPointsColl.length; i++) {\n this.signRatioPointsColl.push({ x: (this.signPointsColl[i].x / this.canvasContext.canvas.width),\n y: (this.signPointsColl[i].y / this.canvasContext.canvas.height) });\n }\n this.signPointsColl = [];\n };\n SignatureBase.prototype.keyboardHandler = function (e) {\n var _this = this;\n var args = { fileName: 'Signature', type: 'Png', cancel: false };\n switch (e.key) {\n case 'Delete':\n this.clear();\n break;\n case (e.ctrlKey && 's'):\n if (!this.isBlazor) {\n this.trigger('beforeSave', args, function (observableSaveArgs) {\n if (!args.cancel) {\n _this.save(observableSaveArgs.type, observableSaveArgs.fileName);\n }\n });\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'beforeSave');\n }\n e.preventDefault();\n e.stopImmediatePropagation();\n break;\n case (e.ctrlKey && 'z'):\n this.undo();\n break;\n case (e.ctrlKey && 'y'):\n this.redo();\n break;\n }\n };\n SignatureBase.prototype.resizeHandler = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.isResponsive) {\n this.canvasContext.canvas.width = this.element.offsetWidth;\n this.canvasContext.canvas.height = this.element.offsetHeight;\n this.canvasContext.scale(1, 1);\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n var pointSize = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n for (var i = 0; i < this.signRatioPointsColl.length; i++) {\n this.arcDraw((this.signRatioPointsColl[i].x * this.canvasContext.canvas.width), (this.signRatioPointsColl[i].y * this.canvasContext.canvas.height), pointSize);\n }\n this.signPointsColl = [];\n this.canvasContext.closePath();\n this.canvasContext.fill();\n }\n else {\n var restoreImg_1 = new Image();\n restoreImg_1.src = this.snapColl[this.incStep];\n restoreImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(restoreImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n };\n SignatureBase.prototype.beginStroke = function (e) {\n this.refresh();\n this.updateStroke(e);\n };\n SignatureBase.prototype.updateStroke = function (e) {\n var point = this.createPoint(e);\n this.addPoint(point);\n };\n SignatureBase.prototype.updateStrokeWithThrottle = function (args) {\n var now = Date.now();\n var remaining = this.interval - (now - this.previous);\n this.storedArgs = args;\n if (remaining <= 0 || remaining > this.interval) {\n if (this.timeout) {\n clearTimeout(this.timeout);\n this.timeout = null;\n }\n this.previous = now;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n }\n else if (!this.timeout) {\n this.timeout = window.setTimeout(this.delay.bind(this), remaining);\n }\n };\n SignatureBase.prototype.delay = function () {\n this.previous = Date.now();\n this.timeout = null;\n this.updateStroke(this.storedArgs);\n if (!this.timeout) {\n this.storedArgs = null;\n }\n };\n SignatureBase.prototype.createPoint = function (e) {\n var rect = this.canvasContext.canvas.getBoundingClientRect();\n if (e.type === 'mousedown' || e.type === 'mousemove') {\n return this.point(e.clientX - rect.left, e.clientY - rect.top, new Date().getTime());\n }\n else {\n return this.point(e.touches[0].clientX - rect.left, e.touches[0].clientY - rect.top, new Date().getTime());\n }\n };\n /* Returns the current point corrdinates(x, y) and time.*/\n SignatureBase.prototype.point = function (pointX, pointY, time) {\n this.pointX = pointX;\n this.pointY = pointY;\n this.time = time || new Date().getTime();\n return { x: this.pointX, y: this.pointY, time: this.time };\n };\n SignatureBase.prototype.addPoint = function (point) {\n var points = this.pointColl;\n var controlPoint1;\n var controlPoint2;\n var lastPoint = points.length > 0 && points[points.length - 1];\n var isLastPointTooClose = lastPoint ? this.distanceTo(lastPoint) <= this.minDistance : false;\n if (!lastPoint || !(lastPoint && isLastPointTooClose)) {\n points.push(point);\n if (points.length > 2) {\n if (points.length === 3) {\n points.unshift(points[0]);\n }\n controlPoint1 = (this.calculateCurveControlPoints(points[0], points[1], points[2])).controlPoint2;\n controlPoint2 = (this.calculateCurveControlPoints(points[1], points[2], points[3])).controlPoint1;\n this.startPoint = points[1];\n this.controlPoint1 = controlPoint1;\n this.controlPoint2 = controlPoint2;\n this.endPoint = points[2];\n this.startDraw();\n points.shift();\n }\n }\n };\n SignatureBase.prototype.startDraw = function () {\n var velocity;\n velocity = this.pointVelocityCalc(this.startPoint);\n velocity = this.velocity * velocity + (1 - this.velocity) * this.lastVelocity;\n var newWidth = Math.max(this.maxStrokeWidth / (velocity + 1), this.minStrokeWidth);\n this.curveDraw(this.lastWidth, newWidth);\n this.lastVelocity = velocity;\n this.lastWidth = newWidth;\n };\n SignatureBase.prototype.endDraw = function () {\n var canDrawCurve = this.pointColl.length > 2;\n var point = this.pointColl[0];\n if (!canDrawCurve && point) {\n this.strokeDraw(point);\n }\n };\n /* Calculate the Bezier (x, y) coordinate of the curve. */\n SignatureBase.prototype.curveDraw = function (startWidth, endWidth) {\n var context = this.canvasContext;\n var width;\n var i;\n var t1;\n var t2;\n var t3;\n var u1;\n var u2;\n var u3;\n var x;\n var y;\n var widthValue = endWidth - startWidth;\n var bezierLength = this.bezierLengthCalc();\n var drawSteps = Math.ceil(bezierLength) * 2;\n context.beginPath();\n for (i = 0; i < drawSteps; i++) {\n t1 = i / drawSteps;\n t2 = t1 * t1;\n t3 = t2 * t1;\n u1 = 1 - t1;\n u2 = u1 * u1;\n u3 = u2 * u1;\n x = u3 * this.startPoint.x;\n x += 3 * u2 * t1 * this.controlPoint1.x;\n x += 3 * u1 * t2 * this.controlPoint2.x;\n x += t3 * this.endPoint.x;\n y = u3 * this.startPoint.y;\n y += 3 * u2 * t1 * this.controlPoint1.y;\n y += 3 * u1 * t2 * this.controlPoint2.y;\n y += t3 * this.endPoint.y;\n width = Math.min(startWidth + t3 * widthValue, this.maxStrokeWidth);\n this.arcDraw(x, y, width);\n }\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.strokeDraw = function (point) {\n var context = this.canvasContext;\n var pointSize = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n context.beginPath();\n this.arcDraw(point.x, point.y, pointSize);\n context.closePath();\n context.fill();\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.arcDraw = function (x, y, size) {\n this.signPointsColl.push({ x: x, y: y });\n var context = this.canvasContext;\n context.moveTo(x, y);\n context.arc(x, y, size, 0, 2 * Math.PI, false);\n };\n /* Utility functions for Bezier algorithm*/\n SignatureBase.prototype.calculateCurveControlPoints = function (p1, p2, p3) {\n var dx1 = p1.x - p2.x;\n var dy1 = p1.y - p2.y;\n var dx2 = p2.x - p3.x;\n var dy2 = p2.y - p3.y;\n var m1 = { x: (p1.x + p2.x) / 2.0, y: (p1.y + p2.y) / 2.0 };\n var m2 = { x: (p2.x + p3.x) / 2.0, y: (p2.y + p3.y) / 2.0 };\n var l1 = Math.sqrt(dx1 * dx1 + dy1 * dy1);\n var l2 = Math.sqrt(dx2 * dx2 + dy2 * dy2);\n var dxm = (m1.x - m2.x);\n var dym = (m1.y - m2.y);\n var k = l2 / (l1 + l2);\n var cm = { x: m2.x + dxm * k, y: m2.y + dym * k };\n var tx = p2.x - cm.x;\n var ty = p2.y - cm.y;\n return {\n controlPoint1: this.point(m1.x + tx, m1.y + ty, 0),\n controlPoint2: this.point(m2.x + tx, m2.y + ty, 0)\n };\n };\n /* Returns approximated bezier length of the curuve.*/\n SignatureBase.prototype.bezierLengthCalc = function () {\n var steps = 10;\n var length = 0;\n var i;\n var t;\n var pointx1;\n var pointy1;\n var pointx2;\n var pointy2;\n var pointx3;\n var pointy3;\n for (i = 0; i <= steps; i++) {\n t = i / steps;\n pointx1 = this.bezierPointCalc(t, this.startPoint.x, this.controlPoint1.x, this.controlPoint2.x, this.endPoint.x);\n pointy1 = this.bezierPointCalc(t, this.startPoint.y, this.controlPoint1.y, this.controlPoint2.y, this.endPoint.y);\n if (i > 0) {\n pointx3 = pointx1 - pointx2;\n pointy3 = pointy1 - pointy2;\n length += Math.sqrt(pointx3 * pointx3 + pointy3 * pointy3);\n }\n pointx2 = pointx1;\n pointy2 = pointy1;\n }\n return length;\n };\n /* Calculate parametric value of x or y given t and the\n four point(startpoint, controlpoint1, controlpoint2, endpoint) coordinates of a cubic bezier curve.*/\n SignatureBase.prototype.bezierPointCalc = function (t, startpoint, cp1, cp2, endpoint) {\n return startpoint * (1.0 - t) * (1.0 - t) * (1.0 - t) + 3.0 * cp1 * (1.0 - t) * (1.0 - t) * t + 3.0 *\n cp2 * (1.0 - t) * t * t + endpoint * t * t * t;\n };\n /* Velocity between the current point and last point.*/\n SignatureBase.prototype.pointVelocityCalc = function (startPoint) {\n return (this.time !== startPoint.time) ? this.distanceTo(startPoint) / (this.time - startPoint.time) : 0;\n };\n /* Distance between the current point and last point.*/\n SignatureBase.prototype.distanceTo = function (start) {\n return Math.sqrt(Math.pow(this.pointX - start.x, 2) + Math.pow(this.pointY - start.y, 2));\n };\n SignatureBase.prototype.isRead = function (isRead) {\n if (isRead) {\n EventHandler.remove(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler);\n }\n else if (!this.disabled) {\n EventHandler.add(this.canvasContext.canvas, 'mousedown touchstart', this.mouseDownHandler, this);\n }\n };\n SignatureBase.prototype.enableOrDisable = function (isDisable) {\n this.disabled = isDisable;\n if (isDisable) {\n this.canvasContext.canvas.style.filter = \"opacity(0.5)\";\n this.isRead(true);\n }\n else {\n this.canvasContext.canvas.style.filter = \"\";\n this.isRead(false);\n }\n };\n SignatureBase.prototype.updateSnapCollection = function (isClear) {\n if (isNullOrUndefined(this.incStep)) {\n this.incStep = -1;\n this.incStep++;\n this.snapColl = [];\n this.clearArray = [];\n }\n else {\n this.incStep++;\n }\n if (this.incStep < this.snapColl.length) {\n this.snapColl.length = this.incStep;\n }\n if (this.incStep > 0) {\n var canvasNew = this.createElement('canvas', { className: 'e-' + this.getModuleName() + '-wrapper' });\n var canvasContextNew = canvasNew.getContext('2d');\n canvasNew.width = this.canvasContext.canvas.width;\n canvasNew.height = this.canvasContext.canvas.height;\n canvasContextNew.drawImage(this.canvasContext.canvas, 0, 0, canvasNew.width, canvasNew.height);\n this.snapColl.push(canvasNew.toDataURL());\n }\n else {\n this.snapColl.push(this.canvasContext.canvas.toDataURL());\n }\n if (isClear) {\n this.clearArray.push(this.incStep);\n }\n };\n SignatureBase.prototype.setBackgroundImage = function (imageSrc) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n proxy.saveBackground(true);\n };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n };\n SignatureBase.prototype.setBackgroundColor = function (color) {\n var canvasEle = this.canvasContext;\n canvasEle.strokeStyle = color;\n var i;\n var j;\n for (i = 1; i <= canvasEle.canvas.width; i++) {\n for (j = 1; j <= canvasEle.canvas.height; j++) {\n canvasEle.strokeRect(0, 0, i, j);\n }\n }\n this.updateSnapCollection();\n };\n SignatureBase.prototype.loadPersistedSignature = function () {\n if (isNullOrUndefined(this.signatureValue)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var lastImage = new Image();\n lastImage.src = this.signatureValue;\n lastImage.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(lastImage, 0, 0);\n proxy.updateSnapCollection();\n };\n this.isSignatureEmpty = false;\n };\n /**\n * To get the signature as Blob.\n *\n * @param {string} url - specify the url/base 64 string to get blob of the signature.\n * @returns {Blob}.\n */\n SignatureBase.prototype.getBlob = function (url) {\n var arr = url.split(',');\n var type = arr[0].match(/:(.*?);/)[1];\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: type });\n };\n SignatureBase.prototype.download = function (blob, fileName) {\n var blobUrl = URL.createObjectURL(blob);\n var a = document.createElement('a');\n a.href = blobUrl;\n a.target = '_parent';\n a.download = fileName;\n (document.body || document.documentElement).appendChild(a);\n a.click();\n a.parentNode.removeChild(a);\n };\n /**\n * To refresh the signature.\n *\n * @private\n * @returns {void}.\n */\n SignatureBase.prototype.refresh = function () {\n this.pointColl = [];\n this.lastVelocity = 0;\n this.lastWidth = (this.minStrokeWidth + this.maxStrokeWidth) / 2;\n };\n /**\n * Erases all the signature strokes signed by user.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.clear = function () {\n var args = { actionName: 'clear' };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n this.refresh();\n this.signRatioPointsColl = [];\n this.updateSnapCollection(true);\n this.isSignatureEmpty = true;\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Clear');\n }\n };\n /**\n * Undo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.undo = function () {\n var args = { actionName: 'undo' };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep > 0) {\n this.incStep--;\n var undoImg_1 = new Image();\n undoImg_1.src = this.snapColl[this.incStep];\n undoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(undoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Undo');\n }\n };\n /**\n * Redo the last user action.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.redo = function () {\n var args = { actionName: 'redo' };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (this.incStep < this.snapColl.length - 1) {\n this.incStep++;\n var redoImg_1 = new Image();\n redoImg_1.src = this.snapColl[this.incStep];\n redoImg_1.onload = function () {\n proxy.canvasContext.clearRect(0, 0, proxy.element.width, proxy.element.height);\n proxy.canvasContext.drawImage(redoImg_1, 0, 0, proxy.element.width, proxy.element.height);\n };\n }\n this.isClear();\n if (!this.isBlazor) {\n this.trigger('change', args);\n }\n else {\n this.dotnetRef.invokeMethodAsync('TriggerEventAsync', 'Redo');\n }\n };\n SignatureBase.prototype.isClear = function () {\n if (this.clearArray) {\n var empty = false;\n for (var i = 0; i < this.clearArray.length; i++) {\n if (this.clearArray[i] === this.incStep) {\n this.isSignatureEmpty = true;\n empty = true;\n }\n }\n if (!empty) {\n this.isSignatureEmpty = false;\n }\n }\n };\n /**\n * To check whether the signature is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.isEmpty = function () {\n return this.isSignatureEmpty;\n };\n /**\n * To check whether the undo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canUndo = function () {\n return this.incStep > 0;\n };\n /**\n * To check whether the redo collection is empty or not.\n *\n * @returns {boolean}.\n */\n SignatureBase.prototype.canRedo = function () {\n return this.incStep < this.snapColl.length - 1;\n };\n /**\n * To draw the signature based on the given text, with the font family and font size.\n *\n * @param {string} text - specify text to be drawn as signature.\n * @param {string} fontFamily - specify font family of a signature.\n * @param {number} fontSize - specify font size of a signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.draw = function (text, fontFamily, fontSize) {\n var args = { actionName: 'draw-text' };\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n fontFamily = fontFamily || 'Arial';\n fontSize = fontSize || 30;\n this.canvasContext.font = fontSize + 'px ' + fontFamily;\n this.canvasContext.textAlign = 'center';\n this.canvasContext.textBaseline = 'middle';\n this.canvasContext.fillText(text, this.element.width / 2, this.element.height / 2);\n this.updateSnapCollection();\n this.isSignatureEmpty = false;\n this.trigger('change', args);\n };\n /**\n * To load the signature with the given base 64 string, height and width.\n *\n * @param {string} signature - specify the url/base 64 string to be drawn as signature.\n * @param {number} width - specify the width of the loaded signature image.\n * @param {number} height - specify the height of the loaded signature image.\n * @returns {void}.\n */\n SignatureBase.prototype.load = function (signature, width, height) {\n height = height || this.element.height;\n width = width || this.element.width;\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var bitmapImage = new Image();\n bitmapImage.src = signature;\n if (signature.slice(0, 4) !== 'data') {\n bitmapImage.crossOrigin = 'anonymous';\n }\n bitmapImage.onload = function () {\n Promise.all([\n createImageBitmap(bitmapImage, 0, 0, width, height)\n ]).then(function (results) {\n var tempCanvas = document.createElement('canvas');\n tempCanvas.width = width;\n tempCanvas.height = height;\n tempCanvas.getContext('2d').drawImage(results[0], 0, 0);\n if (signature.slice(0, 4) !== 'data') {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n }\n proxy.canvasContext.drawImage(tempCanvas, 0, 0, width, height, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n });\n };\n this.isSignatureEmpty = false;\n };\n SignatureBase.prototype.saveBackground = function (savebg) {\n var imageSrc;\n if (savebg && this.backgroundImage) {\n imageSrc = this.snapColl[this.incStep - 1];\n }\n else {\n imageSrc = this.snapColl[this.incStep];\n }\n if (!savebg) {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n if (this.backgroundImage) {\n this.setBackgroundImage(this.backgroundImage);\n }\n else if (this.backgroundColor) {\n this.setBackgroundColor(this.backgroundColor);\n savebg = true;\n }\n }\n if (savebg) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n var imageObj_1 = new Image();\n imageObj_1.crossOrigin = 'anonymous';\n imageObj_1.src = imageSrc;\n imageObj_1.onload = function () {\n proxy_1.backgroundLoaded = true;\n proxy_1.canvasContext.globalCompositeOperation = 'source-over';\n proxy_1.canvasContext.drawImage(imageObj_1, 0, 0, proxy_1.element.width, proxy_1.element.height);\n proxy_1.save(proxy_1.fileType, proxy_1.fileName);\n };\n }\n };\n /**\n * To save the signature with the given file type and file name.\n *\n * @param {SignatureFileType} type - specify type of the file to be saved a signature.\n * @param {string} fileName - specify name of the file to be saved a signature.\n *\n * @returns {void}.\n */\n SignatureBase.prototype.save = function (type, fileName) {\n if (this.saveWithBackground && this.backgroundLoaded == null && (this.backgroundImage || this.backgroundColor)) {\n this.backgroundLoaded = false;\n this.fileType = type;\n this.fileName = fileName;\n this.saveBackground(false);\n }\n else if (type === 'Svg') {\n fileName = fileName || 'Signature';\n this.toSVG(fileName);\n }\n else if (type === 'Jpeg') {\n fileName = fileName || 'Signature';\n if (!this.saveWithBackground || this.saveWithBackground && !(this.backgroundImage || this.backgroundColor)) {\n this.toJPEG(fileName);\n }\n else {\n var dataURL = this.canvasContext.canvas.toDataURL('image/jpeg');\n this.download(this.getBlob(dataURL), fileName + '.' + 'jpeg');\n }\n }\n else {\n fileName = fileName || 'Signature';\n var dataURL = this.canvasContext.canvas.toDataURL('image/png');\n this.download(this.getBlob(dataURL), fileName + '.' + 'png');\n }\n if (this.saveWithBackground && this.backgroundLoaded) {\n this.resetSnap();\n }\n };\n SignatureBase.prototype.resetSnap = function () {\n this.canvasContext.clearRect(0, 0, this.canvasContext.canvas.width, this.canvasContext.canvas.height);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var restoreObj = new Image();\n restoreObj.src = this.snapColl[this.incStep - 1];\n restoreObj.onload = function () {\n proxy.canvasContext.drawImage(restoreObj, 0, 0, proxy.element.width, proxy.element.height);\n proxy.updateSnapCollection();\n };\n this.backgroundLoaded = null;\n this.snapColl.pop();\n this.incStep--;\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toJPEG = function (fileName) {\n var _this = this;\n var imageSrc = this.snapColl[this.incStep];\n this.setBackgroundColor('#ffffff');\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var imageObj = new Image();\n imageObj.crossOrigin = 'anonymous';\n imageObj.src = imageSrc;\n imageObj.onload = function () {\n proxy.canvasContext.globalCompositeOperation = 'source-over';\n proxy.canvasContext.drawImage(imageObj, 0, 0, proxy.element.width, proxy.element.height);\n var dataURL = proxy.canvasContext.canvas.toDataURL('image/jpeg');\n proxy.download(proxy.getBlob(dataURL), fileName + '.' + 'jpeg');\n proxy.canvasContext.clearRect(0, 0, proxy.canvasContext.canvas.width, proxy.canvasContext.canvas.height);\n _this.resizeHandler();\n };\n this.snapColl.pop();\n this.incStep--;\n };\n SignatureBase.prototype.toSVG = function (fileName) {\n var dataUrl = this.canvasContext.canvas.toDataURL();\n var svg = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svg.setAttribute('width', this.canvasContext.canvas.width.toString());\n svg.setAttribute('height', this.canvasContext.canvas.height.toString());\n var XLinkNS = 'http://www.w3.org/1999/xlink';\n var img = document.createElementNS('http://www.w3.org/2000/svg', 'image');\n img.setAttributeNS(null, 'height', this.canvasContext.canvas.height.toString());\n img.setAttributeNS(null, 'width', this.canvasContext.canvas.width.toString());\n img.setAttributeNS(XLinkNS, 'xlink:href', dataUrl);\n svg.appendChild(img);\n var prefix = 'data:image/svg+xml;base64,';\n var header = '';\n var footer = '';\n var body = svg.innerHTML;\n var data = header + body + footer;\n var svgDataUrl = prefix + btoa(data);\n if (fileName == null) {\n return svgDataUrl;\n }\n else {\n this.download(this.getBlob(svgDataUrl), fileName + '.' + 'svg');\n return null;\n }\n };\n /**\n * To save the signature as Blob.\n *\n * @returns {Blob}.\n */\n SignatureBase.prototype.saveAsBlob = function () {\n return this.getBlob(this.canvasContext.canvas.toDataURL('image/png'));\n };\n /**\n * To get the signature as Base 64.\n *\n * @private\n * @param {SignatureFileType} type - Specifies the type of the image format.\n * @returns {string}.\n */\n SignatureBase.prototype.getSignature = function (type) {\n if (type === 'Jpeg') {\n var imgData = this.canvasContext.getImageData(0, 0, this.element.width, this.element.height);\n var data = imgData.data;\n for (var i = 0; i < data.length; i += 4) {\n if (data[i + 3] < 255) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n data[i + 3] = 255 - data[i + 3];\n }\n }\n this.canvasContext.putImageData(imgData, 0, 0);\n var dataURL = this.canvasContext.canvas.toDataURL('image/jpeg');\n this.resizeHandler();\n return dataURL;\n }\n else if (type === 'Svg') {\n return this.toSVG(null);\n }\n else {\n return this.canvasContext.canvas.toDataURL('image/png');\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SignatureBase.prototype.getModuleName = function () {\n return 'signature';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n SignatureBase.prototype.getPersistData = function () {\n this.signatureValue = this.snapColl[this.incStep];\n return this.addOnPersist(['signatureValue']);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n SignatureBase.prototype.destroy = function () {\n if (this.getModuleName() !== 'image-editor') {\n this.unwireEvents(null);\n removeClass([this.element], 'e-' + this.getModuleName());\n this.element.removeAttribute('tabindex');\n this.pointColl = null;\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Modified onPropertyChanged method for both blazor and EJ2 signature component.\n *\n * @private\n * @param {string} key - Specifies the property, which changed.\n * @param {string} value - Specifies the property value changed.\n * @returns {void}\n */\n SignatureBase.prototype.propertyChanged = function (key, value) {\n var canvasNew = this.canvasContext;\n switch (key) {\n case 'backgroundColor':\n canvasNew.canvas.style.backgroundColor = value;\n this.backgroundColor = value;\n break;\n case 'backgroundImage':\n canvasNew.canvas.style.backgroundImage = 'url(' + value + ')';\n this.backgroundImage = value;\n break;\n case 'strokeColor':\n canvasNew.fillStyle = value;\n this.strokeColor = value;\n break;\n case 'saveWithBackground':\n this.saveWithBackground = value;\n break;\n case 'maxStrokeWidth':\n this.maxStrokeWidth = value;\n break;\n case 'minStrokeWidth':\n this.minStrokeWidth = value;\n break;\n case 'velocity':\n this.velocity = value;\n break;\n case 'isReadOnly':\n this.isRead(value);\n break;\n case 'disabled':\n this.enableOrDisable(value);\n break;\n }\n };\n return SignatureBase;\n}(Component));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * The Signature component allows user to draw smooth signatures as vector outline of strokes using variable width bezier curve interpolation.\n * It allows to save signature as image.\n * You can use your finger, pen, or mouse on a tablet, touchscreen, etc., to draw your own signature on this Signature component.\n * Signature component is a user interface to draw the Signature or Text.\n * It provides supports for various Background color, Stroke color and Background Image.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Signature = /** @__PURE__ @class */ (function (_super) {\n __extends$7(Signature, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {SignatureModel} options - Specifies the Signature model.\n * @param {string | HTMLCanvasElement} element - Specifies the element.\n * @private\n */\n function Signature(options, element) {\n return _super.call(this, options, element) || this;\n }\n Signature.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * To Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Signature.prototype.render = function () {\n this.initialize();\n };\n Signature.prototype.initialize = function () {\n addClass([this.element], 'e-' + this.getModuleName());\n _super.prototype.initialize.call(this, this.element);\n if (this.enablePersistence) {\n this.loadPersistedSignature();\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n Signature.prototype.getModuleName = function () {\n return 'signature';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Signature.prototype.getPersistData = function () {\n return this.addOnPersist(['signatureValue']);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SignatureModel} newProp - Specifies new properties\n * @param {SignatureModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Signature.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'backgroundColor':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundColor);\n break;\n case 'backgroundImage':\n _super.prototype.propertyChanged.call(this, prop, newProp.backgroundImage);\n break;\n case 'strokeColor':\n if (newProp.strokeColor !== oldProp.strokeColor) {\n _super.prototype.propertyChanged.call(this, prop, newProp.strokeColor);\n }\n break;\n case 'saveWithBackground':\n _super.prototype.propertyChanged.call(this, prop, newProp.saveWithBackground);\n break;\n case 'isReadOnly':\n _super.prototype.propertyChanged.call(this, prop, newProp.isReadOnly);\n break;\n case 'disabled':\n _super.prototype.propertyChanged.call(this, prop, newProp.disabled);\n break;\n }\n }\n };\n __decorate$7([\n Property('')\n ], Signature.prototype, \"backgroundColor\", void 0);\n __decorate$7([\n Property('')\n ], Signature.prototype, \"backgroundImage\", void 0);\n __decorate$7([\n Property(false)\n ], Signature.prototype, \"disabled\", void 0);\n __decorate$7([\n Property(false)\n ], Signature.prototype, \"isReadOnly\", void 0);\n __decorate$7([\n Property(true)\n ], Signature.prototype, \"saveWithBackground\", void 0);\n __decorate$7([\n Property('#000000')\n ], Signature.prototype, \"strokeColor\", void 0);\n __decorate$7([\n Property(0.5)\n ], Signature.prototype, \"minStrokeWidth\", void 0);\n __decorate$7([\n Property(2)\n ], Signature.prototype, \"maxStrokeWidth\", void 0);\n __decorate$7([\n Property(0.7)\n ], Signature.prototype, \"velocity\", void 0);\n __decorate$7([\n Property('en-US')\n ], Signature.prototype, \"locale\", void 0);\n __decorate$7([\n Property(false)\n ], Signature.prototype, \"enableRtl\", void 0);\n __decorate$7([\n Property(false)\n ], Signature.prototype, \"enablePersistence\", void 0);\n __decorate$7([\n Event()\n ], Signature.prototype, \"beforeSave\", void 0);\n __decorate$7([\n Event()\n ], Signature.prototype, \"change\", void 0);\n __decorate$7([\n Event()\n ], Signature.prototype, \"created\", void 0);\n Signature = __decorate$7([\n NotifyPropertyChanges\n ], Signature);\n return Signature;\n}(SignatureBase));\n\n/**\n * Signature modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar ICONCSS = 'e-rating-icon e-icons e-star-filled';\nvar ITEMLIST = 'e-rating-item-list';\nvar ITEMCONTAINER = 'e-rating-item-container';\nvar SELECTED = 'e-rating-selected';\nvar INTERMEDIATE = 'e-rating-intermediate';\nvar LABEL = 'e-rating-label';\nvar RESET = 'e-icons e-reset';\nvar HIDDEN = 'e-rating-hidden';\nvar DISABLED$2 = 'e-disabled';\nvar READONLY = 'e-rating-readonly';\nvar RTL$2 = 'e-rtl';\nvar ANIMATION = 'e-rating-animation';\nvar FULLTEMPLATE = 'e-rating-full';\nvar EMPTYTEMPLATE = 'e-rating-empty';\nvar SELECTEDVALUE = 'e-selected-value';\nvar RATINGVALUE = '--rating-value';\n/**\n * Defines where to position the label in rating\n */\nvar LabelPosition;\n(function (LabelPosition) {\n /**\n * The label is positioned at the top center of the rating component.\n */\n LabelPosition[\"Top\"] = \"Top\";\n /**\n * The label is positioned at the bottom center of the rating component.\n */\n LabelPosition[\"Bottom\"] = \"Bottom\";\n /**\n * The label is positioned at the left side of the rating component.\n */\n LabelPosition[\"Left\"] = \"Left\";\n /**\n * The label is positioned at the right side of the rating component.\n */\n LabelPosition[\"Right\"] = \"Right\";\n})(LabelPosition || (LabelPosition = {}));\n/**\n * Defines the precision type of the rating.\n * It is used to component the granularity of the rating, allowing users to provide ratings with varying levels of precision.\n */\nvar PrecisionType;\n(function (PrecisionType) {\n /**\n * The rating is increased in whole number increments.\n */\n PrecisionType[\"Full\"] = \"Full\";\n /**\n * The rating is increased in increments of 0.5 (half).\n */\n PrecisionType[\"Half\"] = \"Half\";\n /**\n * The rating is increased in increments of 0.25 (quarter).\n */\n PrecisionType[\"Quarter\"] = \"Quarter\";\n /**\n * The rating is increased in increments of 0.1.\n */\n PrecisionType[\"Exact\"] = \"Exact\";\n})(PrecisionType || (PrecisionType = {}));\n/**\n * The Rating component allows the user to rate something by clicking on a set of symbols on a numeric scale.\n * This allows users to provide feedback or ratings for products, services, or content.\n *\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Rating = /** @__PURE__ @class */ (function (_super) {\n __extends$9(Rating, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {RatingModel} options - Specifies the rating model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Rating(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.itemElements = [];\n _this.tooltipOpen = false;\n return _this;\n }\n Rating.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.keyConfigs = {\n downarrow: 'downarrow',\n leftarrow: 'leftarrow',\n rightarrow: 'rightarrow',\n uparrow: 'uparrow',\n space: 'space'\n };\n };\n Rating.prototype.render = function () {\n this.initialize();\n this.updateMinValue();\n this.updateTemplateFunction();\n this.renderItems();\n this.updatePrecision();\n this.displayLabel();\n };\n Rating.prototype.initialize = function () {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-container ' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n this.wrapper.appendChild(this.element);\n if ((this.element.getAttribute('name') == null)) {\n this.element.setAttribute('name', this.element.id);\n }\n attributes(this.element, { 'aria-label': 'rating' });\n this.renderItemList();\n this.updateReset();\n this.updateDisabled();\n this.wrapper.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n this.wrapper.classList[!this.visible ? 'add' : 'remove'](HIDDEN);\n this.wrapper.classList[this.enableRtl ? 'add' : 'remove'](RTL$2);\n this.wrapper.classList[this.enableAnimation ? 'add' : 'remove'](ANIMATION);\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n this.updateTooltip();\n this.wireKeyboardEvent();\n };\n Rating.prototype.updateDisabled = function () {\n this.wrapper.classList[this.disabled ? 'add' : 'remove'](DISABLED$2);\n attributes(this.ratingItemList, { 'tabindex': (this.disabled) ? '-1' : '0' });\n if (this.allowReset) {\n this.updateResetButton();\n }\n };\n Rating.prototype.updateResetButton = function () {\n var isDisabled = (this.value <= this.min) || this.disabled;\n this.resetElement.classList[isDisabled ? 'add' : 'remove'](DISABLED$2);\n attributes(this.resetElement, { 'aria-label': 'resetbutton', 'role': 'button',\n 'tabindex': (isDisabled ? '-1' : '0'), 'aria-hidden': isDisabled.toString() });\n };\n Rating.prototype.renderItemList = function () {\n var _this = this;\n this.ratingItemList = this.createElement('div', {\n className: ITEMLIST,\n id: this.element.id + '_item-list',\n attrs: { 'tabindex': '0' }\n });\n attributes(this.ratingItemList, { 'aria-label': 'rating', 'role': 'slider' });\n this.wrapper.appendChild(this.ratingItemList);\n EventHandler.add(this.ratingItemList, 'touchmove', function (e) { return _this.touchMoveHandler(e); }, this);\n EventHandler.add(this.ratingItemList, Browser.touchEndEvent, this.touchEndHandler, this);\n };\n Rating.prototype.touchMoveHandler = function (e) {\n var rect = this.ratingItemList.getBoundingClientRect();\n var x = e.touches[0].clientX - rect.x;\n var currValue = (x / rect.width) * this.itemsCount;\n currValue = (this.enableRtl) ? (this.itemsCount - currValue) : currValue;\n currValue = currValue < this.min ? this.min : currValue > this.itemsCount ? this.itemsCount : currValue;\n currValue = this.validateValue(currValue);\n var element = currValue === 0 ? null : this.itemElements[parseInt((Math.ceil(currValue) - 1).toString(), 10)];\n if (currValue === this.currentValue) {\n if (this.showTooltip && element) {\n this.openRatingTooltip(element, false);\n }\n return;\n }\n var previousValue = this.currentValue;\n this.updateCurrentValue(currValue);\n this.triggerChange(e, currValue);\n if (this.showTooltip) {\n if (element) {\n if (Math.ceil(currValue) !== Math.ceil(previousValue)) {\n this.closeRatingTooltip();\n }\n this.openRatingTooltip(element, true);\n }\n else {\n this.closeRatingTooltip();\n }\n }\n };\n Rating.prototype.touchEndHandler = function () {\n this.closeRatingTooltip();\n };\n Rating.prototype.updateTemplateFunction = function () {\n this.emptyTemplateFunction = this.emptyTemplate ? this.getTemplateString(this.emptyTemplate) : null;\n this.fullTemplateFunction = this.fullTemplate ? this.getTemplateString(this.fullTemplate) : null;\n };\n Rating.prototype.renderItems = function () {\n var _this = this;\n for (var i = 0; i < this.itemsCount; i++) {\n var ratingItemContainer = this.createElement('span', { className: ITEMCONTAINER });\n var spanItem = this.createElement('span', { className: 'e-rating-item' });\n var ratingValue = this.getRatingValue(this.value, i);\n this.renderItemContent(spanItem, ratingValue, i);\n ratingItemContainer.appendChild(spanItem);\n this.wireItemsEvents(ratingItemContainer, i + 1);\n this.itemElements.push(ratingItemContainer);\n var eventArgs = { element: ratingItemContainer, value: i + 1 };\n this.trigger('beforeItemRender', eventArgs, function (args) {\n _this.ratingItemList.appendChild(args.element);\n });\n }\n attributes(this.ratingItemList, { 'aria-valuemax': this.itemsCount.toString() });\n if (this.disabled) {\n attributes(this.ratingItemList, { 'tabindex': '-1' });\n }\n };\n Rating.prototype.renderItemContent = function (spanEle, val, index, isrerender) {\n if (isrerender === void 0) { isrerender = false; }\n if (isrerender) {\n this.removeItemContent(spanEle);\n }\n if (this.fullTemplate && val === 1) {\n spanEle.classList.add(FULLTEMPLATE);\n spanEle.append(this.fullTemplateFunction({ index: index, ratingValue: val }, this, 'ratingFullTemplate', (this.element.id + 'fullTemplate'), this.isStringTemplate)[0]);\n }\n else if (this.emptyTemplate) {\n spanEle.classList.add(EMPTYTEMPLATE);\n spanEle.append(this.emptyTemplateFunction({ index: index, ratingValue: val }, this, 'ratingEmptyTemplate', (this.element.id + 'emptyTemplate'), this.isStringTemplate)[0]);\n }\n else {\n addClass([spanEle], ICONCSS.split(' '));\n }\n };\n Rating.prototype.removeItemContent = function (spanEle) {\n spanEle.classList.remove(FULLTEMPLATE, EMPTYTEMPLATE);\n removeClass([spanEle], ICONCSS.split(' '));\n if (spanEle.firstChild) {\n spanEle.removeChild(spanEle.firstChild);\n }\n };\n Rating.prototype.updateTooltip = function () {\n if (this.showTooltip) {\n this.tooltipObj = new Tooltip({\n target: '.e-rating-item-container', windowCollision: true,\n opensOn: 'Custom', cssClass: this.cssClass ? ('e-rating-tooltip ' + this.cssClass) : 'e-rating-tooltip'\n });\n this.tooltipObj.appendTo(this.ratingItemList);\n }\n else {\n if (!isNullOrUndefined(this.tooltipObj)) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n }\n };\n Rating.prototype.updateMinValue = function () {\n this.min = this.validateValue(this.min);\n if (this.min > 0 && this.value < this.min) {\n this.triggerChange(null, this.min, false);\n }\n attributes(this.ratingItemList, { 'aria-valuemin': this.min.toString() });\n };\n Rating.prototype.updatePrecision = function () {\n this.min = this.validateValue(this.min);\n this.triggerChange(null, this.validateValue(this.value), false);\n this.updateItemValue();\n };\n Rating.prototype.validateValue = function (currentValue) {\n if (currentValue > this.itemsCount) {\n currentValue = this.itemsCount;\n }\n else if (currentValue < 0) {\n currentValue = 0;\n }\n else {\n currentValue = ((this.precision === PrecisionType.Full) || this.enableSingleSelection) ? Math.round(currentValue) :\n (this.precision === PrecisionType.Half) ? (Math.round(currentValue * 2) / 2) :\n (this.precision === PrecisionType.Quarter) ? (Math.round(currentValue * 4) / 4) : (Math.round(currentValue * 10) / 10);\n }\n return currentValue;\n };\n Rating.prototype.getRatingValue = function (value, i) {\n return (this.enableSingleSelection) ? (((value > i) && (value <= i + 1)) ? 1 : 0) :\n (value >= i + 1) ? 1 : ((value < i) ? 0 : (value - i));\n };\n Rating.prototype.updateItemValue = function () {\n for (var i = 0; i < this.itemsCount; i++) {\n var itemElement = this.itemElements[parseInt(i.toString(), 10)];\n itemElement.classList.remove(SELECTED, INTERMEDIATE, SELECTEDVALUE);\n var ratingValue = this.getRatingValue(this.currentValue, i);\n if (ratingValue === 1) {\n itemElement.classList.add(SELECTED);\n }\n else if (ratingValue > 0) {\n itemElement.classList.add(INTERMEDIATE);\n }\n else if ((this.precision === PrecisionType.Full) && (i + 1 <= this.value) && (!this.enableSingleSelection)) {\n itemElement.classList.add(SELECTEDVALUE);\n }\n this.updateItemContent(ratingValue, i);\n itemElement.style.setProperty(RATINGVALUE, (ratingValue * 100) + '%');\n itemElement.classList[((this.value === 0) && (i === 0)) || (this.value === i + 1) || ((ratingValue > 0) && (ratingValue < 1)) ? 'add' : 'remove']('e-rating-focus');\n }\n if (this.allowReset) {\n this.updateResetButton();\n }\n attributes(this.ratingItemList, { 'aria-valuenow': this.currentValue.toString() });\n attributes(this.element, { 'value': this.value.toString() });\n };\n Rating.prototype.updateItemContent = function (ratingValue, index) {\n if (!this.fullTemplate && !this.emptyTemplate) {\n return;\n }\n var spanEle = this.itemElements[parseInt(index.toString(), 10)].querySelector('.e-rating-item');\n if (this.fullTemplate && ratingValue === 1) {\n if (spanEle.classList.contains(FULLTEMPLATE)) {\n return;\n }\n this.removeItemContent(spanEle);\n spanEle.classList.add(FULLTEMPLATE);\n spanEle.append(this.fullTemplateFunction({ ratingValue: ratingValue, index: index }, this, 'ratingFullTemplate', (this.element.id + 'fullTemplate'), this.isStringTemplate)[0]);\n }\n else if (this.emptyTemplate) {\n this.removeItemContent(spanEle);\n spanEle.classList.add(EMPTYTEMPLATE);\n spanEle.append(this.emptyTemplateFunction({ ratingValue: ratingValue, index: index }, this, 'ratingFullTemplate', (this.element.id + 'fullTemplate'), this.isStringTemplate)[0]);\n }\n else {\n this.removeItemContent(spanEle);\n addClass([spanEle], ICONCSS.split(' '));\n }\n this.renderReactTemplates();\n };\n Rating.prototype.updateTooltipContent = function (isChange) {\n if (this.showTooltip) {\n var content = void 0;\n if (this.tooltipTemplate) {\n var templateFunction = this.getTemplateString(this.tooltipTemplate);\n content = templateFunction({ value: this.currentValue }, this, 'ratingTooltipTemplate', (this.element.id + 'tooltipTemplate'), this.isStringTemplate)[0];\n }\n else {\n content = this.currentValue.toString();\n }\n this.tooltipObj.setProperties({ content: content }, isChange);\n this.renderReactTemplates();\n }\n };\n Rating.prototype.getTemplateString = function (template) {\n var stringContent = '';\n try {\n var tempEle = select(template);\n if (tempEle) {\n //Return innerHTML incase of jsrenderer script else outerHTML\n stringContent = tempEle.tagName === 'SCRIPT' ? tempEle.innerHTML : tempEle.outerHTML;\n }\n else {\n stringContent = template;\n }\n }\n catch (e) {\n stringContent = template;\n }\n return compile(stringContent);\n };\n Rating.prototype.displayLabel = function () {\n if (this.showLabel) {\n this.spanLabel = this.createElement('span', { className: LABEL });\n this.updateLabel();\n this.updateLabelPosition();\n }\n else {\n if (this.wrapper.contains(this.spanLabel)) {\n remove(this.spanLabel);\n this.spanLabel = null;\n }\n }\n };\n Rating.prototype.updateLabel = function () {\n if (this.showLabel) {\n if (this.labelTemplate) {\n if (this.spanLabel.firstChild) {\n this.spanLabel.removeChild(this.spanLabel.firstChild);\n }\n var templateFunction = this.getTemplateString(this.labelTemplate);\n this.spanLabel.append(templateFunction({ value: this.currentValue }, this, 'ratingLabelTemplate', (this.element.id + 'labelTemplate'), this.isStringTemplate)[0]);\n }\n else {\n this.spanLabel.textContent = this.currentValue + ' / ' + this.itemsCount;\n }\n this.renderReactTemplates();\n }\n };\n Rating.prototype.updateReset = function () {\n if (this.allowReset) {\n this.resetElement = this.createElement('span', { className: RESET });\n this.updateResetButton();\n EventHandler.add(this.resetElement, 'click', this.resetClicked, this);\n this.wrapper.insertBefore(this.resetElement, this.ratingItemList);\n }\n else {\n if (this.wrapper.contains(this.resetElement)) {\n remove(this.resetElement);\n this.resetElement = null;\n }\n }\n };\n Rating.prototype.updateLabelPosition = function () {\n this.clearLabelPosition();\n this.spanLabel.classList.add('e-label-' + this.labelPosition.toLowerCase());\n if (this.labelPosition === 'Left' || this.labelPosition === 'Top') {\n this.wrapper.firstChild.after(this.spanLabel);\n }\n else {\n this.wrapper.appendChild(this.spanLabel);\n }\n };\n Rating.prototype.clearLabelPosition = function () {\n var removeCss = this.spanLabel.classList.value.match(/(e-label-[top|bottom|right|left]+)/g);\n if (removeCss) {\n removeClass([this.spanLabel], removeCss);\n }\n };\n Rating.prototype.wireItemsEvents = function (itemElement, index) {\n var _this = this;\n EventHandler.add(itemElement, 'click', function (e) { return _this.clickHandler(e); }, this);\n EventHandler.add(itemElement, 'mousemove', function (e) { return _this.mouseMoveHandler(index, e); }, this);\n EventHandler.add(itemElement, 'mouseleave', this.mouseLeaveHandler, this);\n };\n Rating.prototype.clickHandler = function (e) {\n this.currentValue = (this.min > 0 && this.currentValue < this.min) ? this.min : this.currentValue;\n this.triggerChange(e, this.currentValue);\n this.updateItemValue();\n this.updateLabel();\n if (this.allowReset) {\n this.updateResetButton();\n }\n };\n Rating.prototype.updateValueChange = function (e, val, isInteracted) {\n if (isInteracted === void 0) { isInteracted = true; }\n this.triggerChange(e, val, isInteracted);\n this.updateItemValue();\n this.updateLabel();\n };\n Rating.prototype.triggerChange = function (e, val, isInteracted) {\n if (isInteracted === void 0) { isInteracted = true; }\n val = this.validateValue(val);\n this.currentValue = val;\n if (this.currentValue === this.value) {\n return;\n }\n var eventArgs = { event: e, isInteracted: isInteracted, value: val, previousValue: this.value };\n this.setProperties({ value: val }, true);\n this.trigger('valueChanged', eventArgs);\n };\n Rating.prototype.mouseMoveHandler = function (index, e) {\n var currValue = this.calculateCurrentValue(index, e);\n currValue = this.validateValue(currValue);\n var element = this.itemElements[parseInt((index - 1).toString(), 10)];\n if (currValue === this.currentValue) {\n this.openRatingTooltip(element, false);\n return;\n }\n this.updateCurrentValue(currValue);\n this.openRatingTooltip(element, true);\n var eventArgs = { element: element, event: e, value: currValue };\n this.trigger('onItemHover', eventArgs);\n };\n Rating.prototype.openRatingTooltip = function (element, isChange) {\n if (this.showTooltip) {\n if (!this.tooltipOpen) {\n this.updateTooltipContent(false);\n this.tooltipObj.open(element); //eslint-disable-line\n this.tooltipOpen = true;\n }\n else if (isChange) {\n this.updateTooltipContent(true);\n this.tooltipObj.refresh(element);\n }\n }\n };\n Rating.prototype.closeRatingTooltip = function () {\n if (this.tooltipOpen) {\n this.tooltipObj.close();\n this.tooltipOpen = false;\n }\n };\n Rating.prototype.updateCurrentValue = function (currValue) {\n this.currentValue = currValue;\n this.updateItemValue();\n this.updateLabel();\n };\n Rating.prototype.mouseLeaveHandler = function () {\n this.closeRatingTooltip();\n this.updateCurrentValue(this.value);\n };\n Rating.prototype.calculateCurrentValue = function (index, args) {\n var currentValue = index;\n if (!(this.enableSingleSelection || (this.precision === PrecisionType.Full))) {\n currentValue = args.offsetX / this.itemElements[index - 1].clientWidth;\n currentValue = (this.enableRtl) ? (1 - currentValue) : currentValue;\n if (this.precision === PrecisionType.Quarter) {\n currentValue = currentValue <= 0.25 ? 0.25 : currentValue <= 0.5 ? 0.5 : currentValue < 0.75 ? 0.75 : 1.0;\n }\n else if (this.precision === PrecisionType.Half) {\n currentValue = currentValue <= 0.5 ? 0.5 : 1;\n }\n currentValue = currentValue + index - 1;\n }\n return currentValue;\n };\n /**\n * Reset’s the value to minimum.\n *\n * @returns {void}\n */\n Rating.prototype.reset = function () {\n this.resetClicked(null, false);\n };\n Rating.prototype.resetClicked = function (e, isInteracted) {\n if (isInteracted === void 0) { isInteracted = true; }\n this.updateValueChange(e, this.min, isInteracted);\n this.updateResetButton();\n };\n Rating.prototype.wireKeyboardEvent = function () {\n this.keyboardModuleRating = new KeyboardEvents(this.wrapper, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n };\n Rating.prototype.keyActionHandler = function (e) {\n if (this.disabled || this.readOnly) {\n return;\n }\n if (e.target.classList.contains(ITEMLIST)) {\n switch (e.action) {\n case 'uparrow':\n this.handleNavigation(e, true);\n break;\n case 'downarrow':\n this.handleNavigation(e, false);\n break;\n case 'leftarrow':\n this.handleNavigation(e, this.enableRtl);\n break;\n case 'rightarrow':\n this.handleNavigation(e, !this.enableRtl);\n break;\n }\n }\n if (this.allowReset && e.target.classList.contains('e-reset')) {\n switch (e.action) {\n case 'space':\n this.resetClicked(e);\n break;\n }\n }\n };\n Rating.prototype.handleNavigation = function (e, isIncrease) {\n if ((!isIncrease && (this.value > this.min)) || (isIncrease && (this.value < this.itemsCount))) {\n var currentValue = (this.precision === PrecisionType.Full || this.enableSingleSelection) ? 1 :\n (this.precision === PrecisionType.Half) ? 0.5 : (this.precision === PrecisionType.Quarter) ? 0.25 :\n Math.round(0.1 * 10) / 10;\n currentValue = isIncrease ? this.value + currentValue : this.value - currentValue;\n this.updateValueChange(e, (currentValue));\n if (this.allowReset) {\n this.updateResetButton();\n }\n }\n };\n Rating.prototype.updateContent = function () {\n for (var i = 0; i < this.itemsCount; i++) {\n var itemElement = this.itemElements[parseInt(i.toString(), 10)].firstElementChild;\n this.renderItemContent(itemElement, this.getRatingValue(this.value, i), i, true);\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n Rating.prototype.getModuleName = function () {\n return 'rating';\n };\n /**\n * To get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Rating.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Rating.prototype.removeItemElements = function () {\n for (var i = 0; i < this.itemElements.length; i++) {\n remove(this.itemElements[parseInt(i.toString(), 10)]);\n }\n this.itemElements = [];\n };\n /**\n * Destroys the Rating instance.\n *\n * @returns {void}\n */\n Rating.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n // unwires the events and detach the li elements\n this.removeItemElements();\n if (this.spanLabel) {\n remove(this.spanLabel);\n this.spanLabel = null;\n }\n if (this.resetElement) {\n remove(this.resetElement);\n this.resetElement = null;\n }\n if (this.showTooltip) {\n this.tooltipObj.destroy();\n this.tooltipObj = null;\n }\n remove(this.ratingItemList);\n this.ratingItemList = null;\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n this.wrapper = null;\n this.keyboardModuleRating.destroy();\n ['value', 'aria-label', 'name'].forEach(function (attr) {\n _this.element.removeAttribute(attr);\n });\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RatingModel} newProp - Specifies new properties\n * @param {RatingModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Rating.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.updateValueChange(null, (this.value > this.min) ? this.value : this.min, false);\n break;\n case 'min':\n this.updateMinValue();\n this.updateItemValue();\n this.updateLabel();\n break;\n case 'showLabel':\n this.displayLabel();\n break;\n case 'visible':\n this.wrapper.classList[!this.visible ? 'add' : 'remove'](HIDDEN);\n break;\n case 'disabled':\n this.updateDisabled();\n break;\n case 'readOnly':\n this.wrapper.classList[this.readOnly ? 'add' : 'remove'](READONLY);\n break;\n case 'allowReset':\n this.updateReset();\n break;\n case 'enableRtl':\n this.wrapper.classList[this.enableRtl ? 'add' : 'remove'](RTL$2);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.wrapper], newProp.cssClass.split(' '));\n }\n if (this.tooltipObj) {\n this.tooltipObj.setProperties({ cssClass: this.cssClass ? ('e-rating-tooltip ' + this.cssClass) : 'e-rating-tooltip' });\n }\n break;\n case 'labelPosition':\n this.updateLabelPosition();\n break;\n case 'showTooltip':\n this.updateTooltip();\n break;\n case 'precision':\n this.updatePrecision();\n this.updateLabel();\n break;\n case 'enableSingleSelection':\n //To validate the value against single selection and update the items, label + trigger change event if value changed\n this.updateValueChange(null, this.currentValue, false);\n break;\n case 'enableAnimation':\n this.wrapper.classList[this.enableAnimation ? 'add' : 'remove'](ANIMATION);\n break;\n case 'emptyTemplate':\n case 'fullTemplate':\n this.updateTemplateFunction();\n this.updateContent();\n break;\n case 'labelTemplate':\n this.updateLabel();\n break;\n case 'itemsCount':\n this.removeItemElements();\n this.renderItems();\n this.updateItemValue();\n this.updateLabel();\n break;\n }\n }\n };\n __decorate$8([\n Property(false)\n ], Rating.prototype, \"allowReset\", void 0);\n __decorate$8([\n Property('')\n ], Rating.prototype, \"cssClass\", void 0);\n __decorate$8([\n Property(false)\n ], Rating.prototype, \"disabled\", void 0);\n __decorate$8([\n Property('')\n ], Rating.prototype, \"emptyTemplate\", void 0);\n __decorate$8([\n Property(true)\n ], Rating.prototype, \"enableAnimation\", void 0);\n __decorate$8([\n Property(false)\n ], Rating.prototype, \"enableSingleSelection\", void 0);\n __decorate$8([\n Property('')\n ], Rating.prototype, \"fullTemplate\", void 0);\n __decorate$8([\n Property(5)\n ], Rating.prototype, \"itemsCount\", void 0);\n __decorate$8([\n Property(LabelPosition.Right)\n ], Rating.prototype, \"labelPosition\", void 0);\n __decorate$8([\n Property('')\n ], Rating.prototype, \"labelTemplate\", void 0);\n __decorate$8([\n Property(0.0)\n ], Rating.prototype, \"min\", void 0);\n __decorate$8([\n Property(PrecisionType.Full)\n ], Rating.prototype, \"precision\", void 0);\n __decorate$8([\n Property(false)\n ], Rating.prototype, \"readOnly\", void 0);\n __decorate$8([\n Property(false)\n ], Rating.prototype, \"showLabel\", void 0);\n __decorate$8([\n Property(true)\n ], Rating.prototype, \"showTooltip\", void 0);\n __decorate$8([\n Property('')\n ], Rating.prototype, \"tooltipTemplate\", void 0);\n __decorate$8([\n Property(0.0)\n ], Rating.prototype, \"value\", void 0);\n __decorate$8([\n Property(true)\n ], Rating.prototype, \"visible\", void 0);\n __decorate$8([\n Event()\n ], Rating.prototype, \"beforeItemRender\", void 0);\n __decorate$8([\n Event()\n ], Rating.prototype, \"created\", void 0);\n __decorate$8([\n Event()\n ], Rating.prototype, \"onItemHover\", void 0);\n __decorate$8([\n Event()\n ], Rating.prototype, \"valueChanged\", void 0);\n Rating = __decorate$8([\n NotifyPropertyChanges\n ], Rating);\n return Rating;\n}(Component));\n\n/**\n * Rating modules\n */\n\n/**\n * Signature base modules\n */\n\n/**\n * NumericTextBox all modules\n */\n\nexport { NumericTextBox, regularExpressions, createMask, applyMask, wireEvents, unwireEvents, bindClearEvent, unstrippedValue, strippedValue, maskInputMouseDownHandler, maskInputMouseUpHandler, maskInputFocusHandler, triggerFocus, escapeRegExp, maskInputBlurHandler, maskInputDropHandler, mobileRemoveFunction, setMaskValue, setElementValue, maskInput, getVal, getMaskedVal, MaskUndo, MaskedTextBox, Input, TicksData, ColorRangeData, LimitData, TooltipData, Slider, regex, ErrorOption, FormValidator, FilesProp, ButtonsProps, AsyncSettings, Uploader, ColorPicker, TextBox, Signature, LabelPosition, PrecisionType, Rating, SignatureBase };\n","import { Browser, ChildProperty, Collection, Component, Draggable, Event, EventHandler, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, append, closest, compile, detach, extend, formatUnit, getValue, isNullOrUndefined, isUndefined, removeClass, select, selectAll, setStyleAttribute, setValue } from '@syncfusion/ej2-base';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 ROOT = 'e-splitter';\nvar HORIZONTAL_PANE = 'e-splitter-horizontal';\nvar VERTICAL_PANE = 'e-splitter-vertical';\nvar PANE = 'e-pane';\nvar SPLIT_H_PANE = 'e-pane-horizontal';\nvar SPLIT_V_PANE = 'e-pane-vertical';\nvar SPLIT_BAR = 'e-split-bar';\nvar SPLIT_H_BAR = 'e-split-bar-horizontal';\nvar SPLIT_V_BAR = 'e-split-bar-vertical';\nvar STATIC_PANE = 'e-static-pane';\nvar SCROLL_PANE = 'e-scrollable';\nvar RESIZE_BAR = 'e-resize-handler';\nvar RESIZABLE_BAR = 'e-resizable-split-bar';\nvar SPLIT_BAR_HOVER = 'e-split-bar-hover';\nvar SPLIT_BAR_ACTIVE = 'e-split-bar-active';\nvar HIDE_HANDLER = 'e-hide-handler';\nvar SPLIT_TOUCH = 'e-splitter-touch';\nvar DISABLED = 'e-disabled';\nvar RTL = 'e-rtl';\nvar E_ICONS = 'e-icons';\nvar COLLAPSIBLE = 'e-collapsible';\nvar NAVIGATE_ARROW = 'e-navigate-arrow';\nvar ARROW_RIGHT = 'e-arrow-right';\nvar ARROW_LEFT = 'e-arrow-left';\nvar ARROW_UP = 'e-arrow-up';\nvar ARROW_DOWN = 'e-arrow-down';\nvar HIDE_ICON = 'e-icon-hidden';\nvar EXPAND_PANE = 'e-expanded';\nvar COLLAPSE_PANE = 'e-collapsed';\nvar PANE_HIDDEN = 'e-pane-hidden';\nvar RESIZABLE_PANE = 'e-resizable';\nvar LAST_BAR = 'e-last-bar';\nvar BAR_SIZE_DEFAULT = 1;\n/**\n * Interface to configure pane properties such as its content, size, min, max, resizable, collapsed and collapsible.\n */\nvar PaneProperties = /** @__PURE__ @class */ (function (_super) {\n __extends(PaneProperties, _super);\n function PaneProperties() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], PaneProperties.prototype, \"size\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsible\", void 0);\n __decorate([\n Property(false)\n ], PaneProperties.prototype, \"collapsed\", void 0);\n __decorate([\n Property(true)\n ], PaneProperties.prototype, \"resizable\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], PaneProperties.prototype, \"max\", void 0);\n __decorate([\n Property()\n ], PaneProperties.prototype, \"content\", void 0);\n __decorate([\n Property('')\n ], PaneProperties.prototype, \"cssClass\", void 0);\n return PaneProperties;\n}(ChildProperty));\n/**\n * Splitter is a layout user interface (UI) control that has resizable and collapsible split panes.\n * The container can be split into multiple panes, which are oriented horizontally or vertically.\n * The separator (divider) splits the panes and resizes and expands/collapses the panes.\n * The splitter is placed inside the split pane to make a nested layout user interface.\n *\n * ```html\n *
\n *
Left Pane
\n *
Center Pane
\n *
Right Pane
\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Splitter = /** @__PURE__ @class */ (function (_super) {\n __extends(Splitter, _super);\n /**\n * Initializes a new instance of the Splitter class.\n *\n * @param options - Specifies Splitter model properties as options.\n * @param element - Specifies the element that is rendered as an Splitter.\n */\n function Splitter(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {SplitterModel} newProp - specifies the new property\n * @param {SplitterModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n Splitter.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'height':\n this.setSplitterSize(this.element, newProp.height, 'height');\n break;\n case 'width':\n this.setSplitterSize(this.element, newProp.width, 'width');\n break;\n case 'cssClass':\n this.setCssClass(this.element, newProp.cssClass);\n break;\n case 'enabled':\n this.isEnabled(this.enabled);\n break;\n case 'enableReversePanes':\n this.setReversePane();\n break;\n case 'separatorSize':\n this.setSeparatorSize(newProp.separatorSize);\n break;\n case 'orientation':\n this.changeOrientation(newProp.orientation);\n break;\n case 'paneSettings': {\n if (!(newProp.paneSettings instanceof Array && oldProp.paneSettings instanceof Array)) {\n var paneCounts = Object.keys(newProp.paneSettings);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n var cPaneCount = 0;\n for (var k = 0; k < this.paneSettings.length; k++) {\n if (typeof (this.paneSettings[k].content) === 'function') {\n cPaneCount = cPaneCount + 1;\n }\n }\n var hasAllContent = cPaneCount === this.paneSettings.length;\n if (hasAllContent) {\n this.clearTemplate();\n }\n }\n for (var i = 0; i < paneCounts.length; i++) {\n var index = parseInt(Object.keys(newProp.paneSettings)[i], 10);\n var changedPropsCount = Object.keys(newProp.paneSettings[index]).length;\n for (var j = 0; j < changedPropsCount; j++) {\n var property = Object.keys(newProp.paneSettings[index])[j];\n switch (property) {\n case 'content': {\n var newValue = Object(newProp.paneSettings[index])[\"\" + property];\n if (!isNullOrUndefined(newValue)) {\n this.allPanes[index].innerHTML = '';\n this.setTemplate(newValue, this.allPanes[index]);\n }\n break;\n }\n case 'resizable': {\n var newVal = Object(newProp.paneSettings[index])[\"\" + property];\n this.resizableModel(index, newVal);\n break;\n }\n case 'collapsible':\n this.collapsibleModelUpdate(index);\n break;\n case 'collapsed':\n // eslint-disable-next-line\n newProp.paneSettings[index].collapsed ? this.isCollapsed(index) : this.collapsedOnchange(index);\n break;\n case 'cssClass':\n // eslint-disable-next-line max-len\n this.setCssClass(this.allPanes[index], newProp.paneSettings[index].cssClass);\n break;\n case 'size': {\n var newValSize = Object(newProp.paneSettings[index])[\"\" + property];\n if (newValSize !== '' && !isNullOrUndefined(newValSize)) {\n this.updatePaneSize(newValSize, index);\n }\n break;\n }\n }\n }\n }\n }\n else {\n this.destroyPaneSettings();\n this.allBars = [];\n this.allPanes = [];\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setRTL(this.enableRtl);\n this.isCollapsed();\n }\n break;\n }\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n }\n }\n };\n Splitter.prototype.updatePaneSize = function (newValSize, index) {\n this.allPanes[index].style.flexBasis = newValSize;\n var flexPaneIndexes = [];\n var staticPaneWidth;\n var flexCount = 0;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.paneSettings[i].size && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n else if (this.paneSettings[i].size) {\n staticPaneWidth = this.orientation === 'Horizontal' ? this.allPanes[index].offsetWidth : this.allPanes[index].offsetHeight;\n }\n }\n staticPaneWidth = this.orientation === 'Horizontal' ? (this.allBars[0].offsetWidth * this.allBars.length) + staticPaneWidth :\n (this.allBars[0].offsetHeight * this.allBars.length) + staticPaneWidth;\n var flexPaneWidth = (this.orientation === 'Horizontal' ? this.element.offsetWidth : this.element.offsetHeight)\n - staticPaneWidth - (this.border * 2);\n var avgDiffWidth = flexPaneWidth / flexPaneIndexes.length;\n for (var j = 0; j < flexPaneIndexes.length; j++) {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = avgDiffWidth + 'px';\n }\n this.allPanes[index].classList.add(STATIC_PANE);\n };\n Splitter.prototype.initializeValues = function () {\n this.allPanes = [];\n this.paneOrder = [];\n this.separatorOrder = [];\n this.allBars = [];\n this.previousCoordinates = {};\n this.currentCoordinates = {};\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n this.panesDimensions = [];\n this.border = 0;\n this.validDataAttributes = ['data-size', 'data-min', 'data-max', 'data-collapsible',\n 'data-resizable', 'data-content', 'data-collapsed'];\n this.validElementAttributes = ['data-orientation', 'data-width', 'data-height'];\n this.iconsDelay = 300;\n this.templateElement = [];\n this.collapseFlag = false;\n this.expandFlag = true;\n };\n Splitter.prototype.preRender = function () {\n this.initializeValues();\n this.onReportWindowSize = this.reportWindowSize.bind(this);\n this.onMouseMoveHandler = this.onMouseMove.bind(this);\n this.onMouseUpHandler = this.onMouseUp.bind(this);\n this.onTouchMoveHandler = this.onMouseMove.bind(this);\n this.onTouchEndHandler = this.onMouseUp.bind(this);\n this.wrapper = this.element.cloneNode(true);\n this.wrapperParent = this.element.parentElement;\n removeClass([this.wrapper], ['e-control', 'e-lib', ROOT]);\n var orientation = this.orientation === 'Horizontal' ? HORIZONTAL_PANE : VERTICAL_PANE;\n addClass([this.element], orientation);\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : '';\n this.setCssClass(this.element, css);\n if (Browser.isDevice) {\n addClass([this.element], SPLIT_TOUCH);\n }\n };\n Splitter.prototype.getPersistData = function () {\n return this.addOnPersist(['paneSettings']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns the string value\n * @private\n */\n Splitter.prototype.getModuleName = function () {\n return 'splitter';\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Splitter.prototype.render = function () {\n this.checkDataAttributes();\n this.setCssClass(this.element, this.cssClass);\n this.isEnabled(this.enabled);\n this.setDimension(this.getHeight(this.element), this.getWidth(this.element));\n this.createSplitPane(this.element);\n this.addSeparator(this.element);\n this.getPanesDimensions();\n this.setPaneSettings();\n this.setRTL(this.enableRtl);\n if (this.enableReversePanes) {\n this.setReversePane();\n }\n this.collapseFlag = true;\n this.isCollapsed();\n this.collapseFlag = false;\n EventHandler.add(document, 'touchstart click', this.onDocumentClick, this);\n this.renderComplete();\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onReportWindowSize, true);\n EventHandler.add(this.element, 'keydown', this.onMove, this);\n };\n Splitter.prototype.onDocumentClick = function (e) {\n if (!e.target.classList.contains(SPLIT_BAR) && !isNullOrUndefined(this.currentSeparator)) {\n this.currentSeparator.classList.remove(SPLIT_BAR_HOVER);\n this.currentSeparator.classList.remove(SPLIT_BAR_ACTIVE);\n }\n };\n Splitter.prototype.checkPaneSize = function (e) {\n var prePaneSize = this.orientation === 'Horizontal' ? this.previousPane.offsetWidth : this.previousPane.offsetHeight;\n var nextPaneSize = this.orientation === 'Horizontal' ? this.nextPane.offsetWidth : this.nextPane.offsetHeight;\n var splitBarSize = isNullOrUndefined(this.separatorSize) ? BAR_SIZE_DEFAULT : this.separatorSize;\n if ((this.previousPane.style.flexBasis.indexOf('%') > 0 || this.nextPane.style.flexBasis.indexOf('%') > 0)) {\n var previousFlexBasis = this.updatePaneFlexBasis(this.previousPane);\n var nextFlexBasis = this.updatePaneFlexBasis(this.nextPane);\n this.totalPercent = previousFlexBasis + nextFlexBasis;\n this.totalWidth = this.convertPercentageToPixel(this.totalPercent + '%');\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) <\n this.convertPercentageToPixel((nextFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis + 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis - 1) + '%';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) <\n this.convertPercentageToPixel((previousFlexBasis - 1) + '%'))) {\n this.previousPane.style.flexBasis = (previousFlexBasis - 1) + '%';\n this.nextPane.style.flexBasis = (nextFlexBasis + 1) + '%';\n }\n }\n }\n else {\n this.totalWidth = (this.orientation === 'Horizontal') ? this.previousPane.offsetWidth + this.nextPane.offsetWidth :\n this.previousPane.offsetHeight + this.nextPane.offsetHeight;\n if (e.type === 'keydown' && (!isNullOrUndefined(e.keyCode))) {\n if ((e.keyCode === 39 || (e.keyCode === 40)) && nextPaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.nextPaneIndex].min) < (nextPaneSize + splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize + splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize < splitBarSize) ? '0px' :\n (nextPaneSize - splitBarSize) + 'px';\n }\n else if ((e.keyCode === 37 || (e.keyCode === 38)) && prePaneSize > 0 &&\n (this.getMinInPixel(this.paneSettings[this.prevPaneIndex].min) < (prePaneSize - splitBarSize))) {\n this.addStaticPaneClass();\n this.previousPane.style.flexBasis = (prePaneSize < splitBarSize) ? '0px' :\n (prePaneSize - splitBarSize) + 'px';\n this.nextPane.style.flexBasis = (nextPaneSize + splitBarSize) + 'px';\n }\n }\n }\n };\n Splitter.prototype.onMove = function (event) {\n if (this.allPanes.length > 1) {\n var index = this.getSeparatorIndex(this.currentSeparator);\n var isPrevpaneCollapsed = this.previousPane.classList.contains(COLLAPSE_PANE);\n var isPrevpaneExpanded = this.previousPane.classList.contains(EXPAND_PANE);\n var isNextpaneCollapsed = this.nextPane.classList.contains(COLLAPSE_PANE);\n if (((this.orientation !== 'Horizontal' && event.keyCode === 38) || (this.orientation === 'Horizontal' &&\n event.keyCode === 39) ||\n (this.orientation === 'Horizontal' && event.keyCode === 37) || (this.orientation !== 'Horizontal' && event.keyCode === 40))\n && (!isPrevpaneExpanded && !isNextpaneCollapsed && !isPrevpaneCollapsed || (isPrevpaneExpanded) && !isNextpaneCollapsed) &&\n document.activeElement.classList.contains(SPLIT_BAR) && (this.paneSettings[index].resizable &&\n this.paneSettings[index + 1].resizable)) {\n event.preventDefault();\n this.checkPaneSize(event);\n this.triggerResizing(event);\n }\n else if (event.keyCode === 13 && this.paneSettings[index].collapsible &&\n document.activeElement.classList.contains(SPLIT_BAR) && this.currentSeparator.classList.contains(SPLIT_BAR_ACTIVE)) {\n if (!this.previousPane.classList.contains(COLLAPSE_PANE)) {\n this.collapse(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n else {\n this.expand(index);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n }\n }\n }\n };\n Splitter.prototype.getMinInPixel = function (minValue) {\n if (isNullOrUndefined(minValue)) {\n return 0;\n }\n var paneMinRange = this.convertPixelToNumber(minValue.toString());\n if (minValue.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(minValue);\n }\n var min = this.convertPixelToNumber((paneMinRange).toString());\n return min;\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {string} returns the string\n * @hidden\n */\n Splitter.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n Splitter.prototype.checkDataAttributes = function () {\n var api;\n var value;\n // Element values\n for (var dataIndex = 0; dataIndex < this.validElementAttributes.length; dataIndex++) {\n value = this.element.getAttribute(this.validElementAttributes[dataIndex]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validElementAttributes[dataIndex]);\n // eslint-disable-next-line\n this[api] = value;\n }\n }\n // Pane values\n for (var paneIndex = 0; paneIndex < this.element.children.length; paneIndex++) {\n for (var dataAttr = 0; dataAttr < this.validDataAttributes.length; dataAttr++) {\n value = this.element.children[paneIndex].getAttribute(this.validDataAttributes[dataAttr]);\n if (!isNullOrUndefined(value)) {\n api = this.removeDataPrefix(this.validDataAttributes[dataAttr]);\n value = (api === 'collapsible' || api === 'resizable') ? (value === 'true') : value;\n if (isNullOrUndefined(this.paneSettings[paneIndex])) {\n this.paneSettings[paneIndex] = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsible: false,\n collapsed: false\n };\n }\n // eslint-disable-next-line\n var paneAPI = this.paneSettings[paneIndex][api];\n if (api === 'resizable' || api === 'collapsible' || api === 'collapsed') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n if (isNullOrUndefined(paneAPI) || paneAPI === '') {\n // eslint-disable-next-line\n this.paneSettings[paneIndex][api] = value;\n }\n }\n }\n }\n };\n Splitter.prototype.destroyPaneSettings = function () {\n [].slice.call(this.element.children).forEach(function (el) {\n detach(el);\n });\n this.restoreElem();\n };\n Splitter.prototype.setPaneSettings = function () {\n var childCount = this.allPanes.length;\n var paneCollection = [];\n var paneValue = {\n size: '',\n min: null,\n max: null,\n content: '',\n resizable: true,\n collapsed: false,\n collapsible: false,\n cssClass: ''\n };\n for (var i = 0; i < childCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i])) {\n paneCollection[i] = paneValue;\n }\n else {\n paneCollection[i] = this.paneSettings[i];\n }\n }\n this.setProperties({ 'paneSettings': paneCollection }, true);\n };\n Splitter.prototype.checkArrow = function (paneIndex, targetArrow) {\n return (this.allBars[paneIndex].querySelector('.' + NAVIGATE_ARROW + '.' + targetArrow));\n };\n Splitter.prototype.removeDataPrefix = function (attribute) {\n return attribute.slice(attribute.lastIndexOf('-') + 1);\n };\n Splitter.prototype.setRTL = function (rtl) {\n // eslint-disable-next-line\n rtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n };\n Splitter.prototype.setReversePane = function () {\n this.allPanes = this.allPanes.reverse();\n this.allBars = this.allBars.reverse();\n addClass([this.allBars[this.allBars.length - 1]], LAST_BAR);\n removeClass([this.allBars[0]], LAST_BAR);\n this.setProperties({ 'paneSettings': this.paneSettings.reverse() }, true);\n if (this.enableReversePanes) {\n this.element.setAttribute('dir', 'rtl');\n }\n else {\n this.element.removeAttribute('dir');\n }\n };\n Splitter.prototype.setSplitterSize = function (element, size, property) {\n var style = property === 'width' ? { 'width': formatUnit(size) } : { 'height': formatUnit(size) };\n setStyleAttribute(element, style);\n };\n Splitter.prototype.getPanesDimensions = function () {\n for (var index = 0; index < this.allPanes.length; index++) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().width) :\n this.panesDimensions.push(this.allPanes[index].getBoundingClientRect().height);\n }\n };\n Splitter.prototype.setCssClass = function (element, className) {\n if (className) {\n addClass([element], className.split(className.indexOf(',') > -1 ? ',' : ' '));\n }\n };\n Splitter.prototype.hideResizer = function (target) {\n addClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n };\n Splitter.prototype.showResizer = function (target) {\n if (!isNullOrUndefined(this.previousPane) && this.previousPane.classList.contains(RESIZABLE_PANE) &&\n !isNullOrUndefined(this.nextPane) && this.nextPane.classList.contains(RESIZABLE_PANE)) {\n removeClass([select('.' + RESIZE_BAR, target)], HIDE_HANDLER);\n }\n };\n Splitter.prototype.resizableModel = function (index, newVal) {\n var paneIndex = (index === (this.allBars.length)) ? (index - 1) : index;\n var i = index;\n EventHandler.remove(this.allBars[paneIndex], 'mousedown', this.onMouseDown);\n if (newVal) {\n EventHandler.add(this.allBars[paneIndex], 'mousedown', this.onMouseDown, this);\n if (this.isResizable()) {\n this.showResizer(this.allBars[paneIndex]);\n removeClass([select('.' + RESIZE_BAR, this.allBars[paneIndex])], HIDE_HANDLER);\n this.allBars[paneIndex].classList.add(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.add(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.add(RESIZABLE_PANE);\n this.updateResizablePanes(i);\n }\n }\n else {\n this.updateResizablePanes(i);\n this.hideResizer(this.allBars[paneIndex]);\n this.allBars[paneIndex].classList.remove(RESIZABLE_BAR);\n // eslint-disable-next-line\n (index === (this.allBars.length)) ? this.allPanes[index].classList.remove(RESIZABLE_PANE) :\n this.allPanes[paneIndex].classList.remove(RESIZABLE_PANE);\n }\n };\n Splitter.prototype.collapsibleModelUpdate = function (index) {\n var paneIndex = index === (this.allBars.length) ? (index - 1) : index;\n var arrow2 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_LEFT) : this.checkArrow(paneIndex, ARROW_UP);\n var arrow1 = (this.orientation === 'Horizontal')\n ? this.checkArrow(paneIndex, ARROW_RIGHT) : this.checkArrow(paneIndex, ARROW_DOWN);\n this.paneCollapsible(this.allPanes[index], index);\n this.updateCollapseIcons(paneIndex, arrow1, arrow2);\n };\n Splitter.prototype.collapseArrow = function (barIndex, arrow) {\n return selectAll('.' + arrow, this.allBars[barIndex])[0];\n };\n Splitter.prototype.updateIsCollapsed = function (index, collapseArrow, lastBarArrow) {\n if (!isNullOrUndefined(index)) {\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, lastBarArrow) : this.collapseArrow(barIndex, collapseArrow);\n }\n targetEle.click();\n }\n };\n Splitter.prototype.isCollapsed = function (index) {\n var _this = this;\n if (!isNullOrUndefined(index) && this.paneSettings[index].collapsed\n && isNullOrUndefined(this.allPanes[index].classList.contains(COLLAPSE_PANE))) {\n return;\n }\n this.expandFlag = false;\n if (!isNullOrUndefined(index)) {\n this.collapseFlag = true;\n var targetEle = void 0;\n var lastBarIndex = (index === this.allBars.length);\n var barIndex = lastBarIndex ? index - 1 : index;\n if (!lastBarIndex && this.allPanes[index + 1].classList.contains(COLLAPSE_PANE) && index !== 0) {\n targetEle = this.collapseArrow(barIndex - 1, this.targetArrows().lastBarArrow);\n }\n else {\n targetEle = (lastBarIndex) ? this.collapseArrow(barIndex, this.targetArrows().lastBarArrow) :\n this.collapseArrow(barIndex, this.targetArrows().collapseArrow);\n }\n var event_1 = { target: targetEle };\n var eventArgs = this.beforeAction(event_1);\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n var collapsedindex = [];\n collapsedindex[0] = index;\n var j = 1;\n for (var i = 0; i < _this.allPanes.length; i++) {\n if (_this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n collapsedindex[j] = i;\n j++;\n }\n }\n collapsedindex = collapsedindex.sort();\n _this.updateIsCollapsed(index, _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n for (var i = 0; i < collapsedindex.length; i++) {\n if (!_this.allPanes[collapsedindex[i]].classList.contains(COLLAPSE_PANE)) {\n // eslint-disable-next-line max-len\n _this.updateIsCollapsed(collapsedindex[i], _this.targetArrows().collapseArrow, _this.targetArrows().lastBarArrow);\n }\n }\n for (var i = collapsedindex.length; i > 0; i--) {\n if (!_this.allPanes[collapsedindex[i - 1]].classList.contains(COLLAPSE_PANE)) {\n var targetArrow = _this.targetArrows();\n _this.updateIsCollapsed(collapsedindex[i - 1], targetArrow.collapseArrow, targetArrow.lastBarArrow);\n }\n }\n var collapseEventArgs = _this.afterAction(event_1);\n _this.trigger('collapsed', collapseEventArgs);\n _this.collapseFlag = false;\n }\n });\n }\n else {\n for (var m = 0; m < this.allPanes.length; m++) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed) {\n this.updateIsCollapsed(m, this.targetArrows().collapseArrow, this.targetArrows().lastBarArrow);\n }\n }\n for (var m = this.allPanes.length - 1; m >= 0; m--) {\n if (!isNullOrUndefined(this.paneSettings[m]) && this.paneSettings[m].collapsed &&\n !this.allPanes[m].classList.contains(COLLAPSE_PANE)) {\n var collapseArrow = this.orientation === 'Horizontal' ? ARROW_RIGHT : ARROW_DOWN;\n if (m !== 0) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n if (!this.nextPane.classList.contains(COLLAPSE_PANE)) {\n var targetEle = this.collapseArrow(m - 1, collapseArrow);\n targetEle.click();\n }\n }\n }\n }\n this.expandFlag = true;\n };\n Splitter.prototype.targetArrows = function () {\n this.splitterProperty();\n return {\n collapseArrow: (this.orientation === 'Horizontal') ? ARROW_LEFT : ARROW_UP,\n lastBarArrow: (this.orientation === 'Vertical') ? ARROW_DOWN : ARROW_RIGHT\n };\n };\n Splitter.prototype.collapsedOnchange = function (index) {\n if (!isNullOrUndefined(this.paneSettings[index]) && !isNullOrUndefined(this.paneSettings[index].collapsed)\n && this.allPanes[index].classList.contains(COLLAPSE_PANE)) {\n this.updateIsCollapsed(index, this.targetArrows().lastBarArrow, this.targetArrows().collapseArrow);\n }\n };\n Splitter.prototype.isEnabled = function (enabled) {\n // eslint-disable-next-line\n enabled ? removeClass([this.element], DISABLED) : addClass([this.element], DISABLED);\n };\n Splitter.prototype.setSeparatorSize = function (size) {\n var sizeValue = isNullOrUndefined(size) ? 'auto' : size + 'px';\n var separator = this.orientation === 'Horizontal' ? SPLIT_H_BAR : SPLIT_V_BAR;\n for (var index = 0; index < this.allBars.length; index++) {\n var splitBar = selectAll('.' + separator, this.element)[index];\n var resizeBar = selectAll('.' + RESIZE_BAR, splitBar)[0];\n if (this.orientation === 'Horizontal') {\n splitBar.style.width = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.width = sizeValue;\n }\n }\n else {\n splitBar.style.height = sizeValue;\n if (!isNullOrUndefined(resizeBar)) {\n resizeBar.style.height = sizeValue;\n }\n }\n }\n };\n Splitter.prototype.changeOrientation = function (orientation) {\n var isVertical = orientation === 'Vertical';\n this.element.classList.remove(isVertical ? HORIZONTAL_PANE : VERTICAL_PANE);\n this.element.classList.add(isVertical ? VERTICAL_PANE : HORIZONTAL_PANE);\n for (var index = 0; index < this.allPanes.length; index++) {\n this.allPanes[index].classList.remove(isVertical ? SPLIT_H_PANE : SPLIT_V_PANE);\n this.allPanes[index].classList.add(isVertical ? SPLIT_V_PANE : SPLIT_H_PANE);\n }\n for (var index = 0; index < this.allBars.length; index++) {\n detach(this.allBars[index]);\n }\n this.allBars = [];\n this.addSeparator(this.element);\n };\n Splitter.prototype.checkSplitPane = function (currentBar, elementIndex) {\n var paneEle = this.collectPanes(currentBar.parentElement.children)[elementIndex];\n return paneEle;\n };\n Splitter.prototype.collectPanes = function (childNodes) {\n var elements = [];\n for (var i = 0; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(PANE)) {\n elements.push(childNodes[i]);\n }\n }\n return elements;\n };\n Splitter.prototype.getPrevPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order + 1) : this.getOrderPane(order - 1);\n };\n Splitter.prototype.getNextPane = function (order) {\n return this.enableReversePanes ? this.getOrderPane(order - 1) : this.getOrderPane(order + 1);\n };\n Splitter.prototype.getOrderPane = function (order) {\n var pane;\n for (var i = 0; i < this.element.children.length; i++) {\n if (parseInt(this.element.children[i].style.order, 10) === order) {\n pane = this.element.children[i];\n }\n }\n return pane;\n };\n Splitter.prototype.getOrderIndex = function (order, type) {\n var index;\n var panes;\n if (type === 'pane') {\n panes = this.allPanes;\n }\n else {\n panes = this.allBars;\n }\n for (var i = 0; i < panes.length; i++) {\n if (parseInt(panes[i].style.order, 10) === order) {\n index = i;\n }\n }\n return index;\n };\n Splitter.prototype.updateSeparatorSize = function (resizeHanlder) {\n var sizeValue = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? (resizeHanlder.style.width = sizeValue) : resizeHanlder.style.height = sizeValue;\n };\n Splitter.prototype.addResizeHandler = function (currentBar) {\n var resizeHanlder = this.createElement('div');\n addClass([resizeHanlder], [RESIZE_BAR, E_ICONS]);\n this.updateSeparatorSize(resizeHanlder);\n currentBar.appendChild(resizeHanlder);\n };\n Splitter.prototype.getHeight = function (target) {\n var height = this.height;\n height = target.style.height !== '' && this.height === '100%' ? target.style.height : this.height;\n return height;\n };\n Splitter.prototype.getWidth = function (target) {\n var width = this.width;\n width = target.style.width !== '' && this.width === '100%' ? target.style.width : this.width;\n return width;\n };\n Splitter.prototype.setDimension = function (height, width) {\n setStyleAttribute(this.element, { 'height': height, 'width': width });\n };\n Splitter.prototype.updateCollapseIcons = function (index, arrow1, arrow2) {\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? removeClass([arrow2], [HIDE_ICON]) : addClass([arrow2], [HIDE_ICON]);\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n if (!isNullOrUndefined(this.paneSettings[index + 1])) {\n if ((this.paneSettings[index + 1].collapsible)) {\n // eslint-disable-next-line\n this.paneSettings[index + 1].collapsible ? removeClass([arrow1], [HIDE_ICON]) : addClass([arrow1], [HIDE_ICON]);\n }\n }\n }\n }\n };\n Splitter.prototype.updateIconClass = function () {\n if (this.orientation === 'Horizontal') {\n this.leftArrow = ARROW_LEFT;\n this.rightArrow = ARROW_RIGHT;\n }\n else {\n this.leftArrow = ARROW_UP;\n this.rightArrow = ARROW_DOWN;\n }\n };\n Splitter.prototype.createSeparator = function (i) {\n var separator = this.createElement('div');\n this.allBars.push(separator);\n var arrow1 = this.createElement('button');\n var arrow2 = this.createElement('button');\n arrow1.setAttribute('tabindex', '-1');\n arrow2.setAttribute('tabindex', '-1');\n arrow1.setAttribute('aria-label', 'Toggle navigation');\n arrow2.setAttribute('aria-label', 'Toggle navigation');\n arrow1.setAttribute('type', 'button');\n arrow2.setAttribute('type', 'button');\n var size = isNullOrUndefined(this.separatorSize) ? '1px' : this.separatorSize + 'px';\n // eslint-disable-next-line\n var proxy = this;\n if (this.orientation === 'Horizontal') {\n this.updateIconClass();\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_LEFT, HIDE_ICON]);\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_RIGHT, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_H_BAR]);\n separator.style.width = size;\n }\n else {\n addClass([arrow1], [NAVIGATE_ARROW, ARROW_DOWN, HIDE_ICON]);\n addClass([arrow2], [NAVIGATE_ARROW, ARROW_UP, HIDE_ICON]);\n addClass([separator], [SPLIT_BAR, SPLIT_V_BAR]);\n this.updateIconClass();\n separator.style.height = size;\n }\n this.addMouseActions(separator);\n separator.appendChild(arrow2);\n this.addResizeHandler(separator);\n separator.appendChild(arrow1);\n this.updateCollapseIcons(i, arrow1, arrow2);\n separator.setAttribute('tabindex', '0');\n if (this.enableReversePanes) {\n separator.setAttribute('dir', 'ltr');\n }\n else {\n separator.removeAttribute('dir');\n }\n separator.addEventListener('focus', function () {\n separator.classList.add(SPLIT_BAR_ACTIVE);\n proxy.currentSeparator = separator;\n proxy.getPaneDetails();\n });\n separator.addEventListener('blur', function () {\n separator.classList.remove(SPLIT_BAR_ACTIVE);\n });\n return separator;\n };\n Splitter.prototype.updateResizablePanes = function (index) {\n this.getPaneDetails();\n // eslint-disable-next-line\n this.isResizable() ? this.allPanes[index].classList.add(RESIZABLE_PANE) : this.allPanes[index].classList.remove(RESIZABLE_PANE);\n };\n Splitter.prototype.addSeparator = function (target) {\n var childCount = this.allPanes.length;\n var clonedEle = target.children;\n var separator;\n for (var i = 0; i < childCount; i++) {\n if (i < childCount - 1) {\n separator = this.createSeparator(i);\n setStyleAttribute(separator, { 'order': (i * 2) + 1 });\n this.separatorOrder.push((i * 2) + 1);\n clonedEle[i].parentNode.appendChild(separator);\n this.currentSeparator = separator;\n separator.setAttribute('role', 'separator');\n separator.setAttribute('aria-orientation', this.orientation.toLowerCase());\n this.wireClickEvents();\n if (!isNullOrUndefined(separator)) {\n if (this.isResizable()) {\n EventHandler.add(separator, 'mousedown', this.onMouseDown, this);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(separator, eventName, this.onMouseDown, this);\n separator.classList.add(RESIZABLE_BAR);\n this.updateResizablePanes(i);\n }\n else {\n addClass([select('.' + RESIZE_BAR, separator)], HIDE_HANDLER);\n }\n }\n }\n else {\n if (separator) {\n addClass([separator], LAST_BAR);\n }\n if (childCount > 1) {\n this.updateResizablePanes(i);\n }\n }\n }\n if (Browser.info.name === 'msie') {\n var allBar = this.element.querySelectorAll('.e-splitter .e-resize-handler');\n for (var i = 0; i < allBar.length; i++) {\n var sepSize = isNullOrUndefined(this.separatorSize) ? 1 : this.separatorSize;\n allBar[i].style.paddingLeft = sepSize / 2 + 'px';\n allBar[i].style.paddingRight = sepSize / 2 + 'px';\n }\n }\n };\n Splitter.prototype.isResizable = function () {\n var resizable = false;\n if ((!isNullOrUndefined(this.paneSettings[this.getPreviousPaneIndex()]) &&\n this.paneSettings[this.getPreviousPaneIndex()].resizable &&\n !isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()]) &&\n this.paneSettings[this.getNextPaneIndex()].resizable) ||\n isNullOrUndefined(this.paneSettings[this.getNextPaneIndex()])) {\n resizable = true;\n }\n return resizable;\n };\n Splitter.prototype.addMouseActions = function (separator) {\n var _this = this;\n var sTout;\n var hoverTimeOut;\n separator.addEventListener('mouseenter', function () {\n /* istanbul ignore next */\n sTout = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n separator.addEventListener('mouseleave', function () {\n clearTimeout(sTout);\n removeClass([separator], [SPLIT_BAR_HOVER]);\n });\n separator.addEventListener('mouseout', function () {\n clearTimeout(hoverTimeOut);\n });\n separator.addEventListener('mouseover', function () {\n /* istanbul ignore next */\n hoverTimeOut = setTimeout(function () {\n addClass([separator], [SPLIT_BAR_HOVER]);\n }, _this.iconsDelay);\n });\n };\n Splitter.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Splitter.prototype.updateCurrentSeparator = function (target) {\n this.currentSeparator = this.isSeparator(target) ? target.parentElement : target;\n };\n Splitter.prototype.isSeparator = function (target) {\n return (target.classList.contains(SPLIT_BAR) ? false : true);\n };\n Splitter.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Splitter.prototype.updateCursorPosition = function (e, type) {\n if (this.isMouseEvent(e)) {\n this.changeCoordinates({ x: e.pageX, y: e.pageY }, type);\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.changeCoordinates({ x: eventType.pageX, y: eventType.pageY }, type);\n }\n };\n Splitter.prototype.changeCoordinates = function (coordinates, type) {\n if (type === 'previous') {\n this.previousCoordinates = coordinates;\n }\n else {\n this.currentCoordinates = coordinates;\n }\n };\n Splitter.prototype.reportWindowSize = function () {\n var _this = this;\n var paneCount = this.allPanes.length;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onReportWindowSize);\n return;\n }\n for (var i = 0; i < paneCount; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n if (paneCount - 1 === i) {\n var staticPaneCount = this.element.querySelectorAll('.' + STATIC_PANE).length;\n if (staticPaneCount === paneCount) {\n removeClass([this.allPanes[i]], STATIC_PANE);\n }\n }\n }\n if (paneCount > 0) {\n setTimeout(function () {\n _this.updateSplitterSize(true);\n }, 200);\n }\n };\n Splitter.prototype.updateSplitterSize = function (iswindowResize) {\n var totalWidth = 0;\n var flexPaneIndexes = [];\n var flexCount = 0;\n var children = this.element.children;\n for (var i = 0, len = children.length; i < len; i++) {\n totalWidth += this.orientation === 'Horizontal' ? children[i].offsetWidth :\n children[i].offsetHeight;\n }\n for (var j = 0, len = this.allBars.length; j < len; j++) {\n totalWidth += this.orientation === 'Horizontal' ? parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) +\n // eslint-disable-next-line max-len\n parseInt(getComputedStyle(this.allBars[j]).marginLeft, 10) : parseInt(getComputedStyle(this.allBars[j]).marginTop, 10) +\n parseInt(getComputedStyle(this.allBars[j]).marginBottom, 10);\n }\n var diff = this.orientation === 'Horizontal' ? this.element.offsetWidth -\n ((this.border * 2) + totalWidth) :\n this.element.offsetHeight - ((this.border * 2) + totalWidth);\n for (var i = 0, len = this.allPanes.length; i < len; i++) {\n if (this.allPanes[i].innerText === '' ? !(this.paneSettings[i].size) || !(this.allPanes[i].innerText === '')\n : !(this.paneSettings[i].size) && !(this.allPanes[i].innerText === '')) {\n flexPaneIndexes[flexCount] = i;\n flexCount++;\n }\n }\n var avgDiffWidth = diff / flexPaneIndexes.length;\n for (var j = 0, len = flexPaneIndexes.length; j < len; j++) {\n if (this.allPanes[flexPaneIndexes[j]].style.flexBasis !== '') {\n this.allPanes[flexPaneIndexes[j]].style.flexBasis = this.orientation === 'Horizontal' ?\n (this.allPanes[flexPaneIndexes[j]].offsetWidth + avgDiffWidth) + 'px' :\n (this.allPanes[flexPaneIndexes[j]].offsetHeight + avgDiffWidth) + 'px';\n }\n }\n if (this.allPanes.length === 2 && iswindowResize) {\n var paneCount = this.allPanes.length;\n var minValue = void 0;\n var paneMinRange = void 0;\n var paneIndex = 0;\n var updatePane = void 0;\n var flexPane = void 0;\n for (var i = 0; i < paneCount; i++) {\n if (!isNullOrUndefined(this.paneSettings[i].min)) {\n paneMinRange = this.convertPixelToNumber((this.paneSettings[i].min).toString());\n if (this.paneSettings[i].min.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(this.paneSettings[i].min);\n }\n minValue = this.convertPixelToNumber((paneMinRange).toString());\n if ((this.orientation === 'Horizontal' ? this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight) < minValue) {\n if (i === paneIndex) {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i + 1];\n }\n else {\n updatePane = this.allPanes[i];\n flexPane = this.allPanes[i - 1];\n }\n var sizeDiff = minValue - (this.orientation === 'Horizontal' ?\n this.allPanes[i].offsetWidth : this.allPanes[i].offsetHeight);\n var isPercent = updatePane.style.flexBasis.indexOf('%') > -1;\n var updatePaneOffset = this.orientation === 'Horizontal' ? updatePane.offsetWidth : updatePane.offsetHeight;\n updatePane.style.flexBasis = isPercent ? this.convertPixelToPercentage(updatePaneOffset + sizeDiff) + '%'\n : (updatePaneOffset + sizeDiff) + 'px';\n var flexPaneOffset = this.orientation === 'Horizontal' ? flexPane.offsetWidth : flexPane.offsetHeight;\n flexPane.style.flexBasis = flexPane.style.flexBasis.indexOf('%') > -1 ?\n this.convertPixelToPercentage(flexPaneOffset - sizeDiff) + '%' : (flexPaneOffset - sizeDiff) + 'px';\n }\n }\n }\n }\n };\n Splitter.prototype.wireResizeEvents = function () {\n document.addEventListener('mousemove', this.onMouseMoveHandler, true);\n document.addEventListener('mouseup', this.onMouseUpHandler, true);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.addEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.addEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.unwireResizeEvents = function () {\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize);\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n document.removeEventListener('mousemove', this.onMouseMoveHandler, true);\n document.removeEventListener('mouseup', this.onMouseUpHandler, true);\n document.removeEventListener(touchMoveEvent, this.onTouchMoveHandler, true);\n document.removeEventListener(touchEndEvent, this.onTouchEndHandler, true);\n };\n Splitter.prototype.wireClickEvents = function () {\n EventHandler.add(this.currentSeparator, 'touchstart click', this.clickHandler, this);\n };\n Splitter.prototype.clickHandler = function (e) {\n if (!e.target.classList.contains(NAVIGATE_ARROW)) {\n var hoverBars = selectAll('.' + ROOT + ' > .' + SPLIT_BAR + '.' + SPLIT_BAR_HOVER);\n if (hoverBars.length > 0) {\n removeClass(hoverBars, SPLIT_BAR_HOVER);\n }\n e.target.classList.add(SPLIT_BAR_HOVER);\n }\n this.splitterDetails(e);\n var icon = e.target;\n if (icon.classList.contains(ARROW_LEFT) || icon.classList.contains(ARROW_RIGHT) ||\n icon.classList.contains(ARROW_DOWN) || icon.classList.contains(ARROW_UP)) {\n if (!this.nextPane.classList.contains(PANE_HIDDEN) && !this.previousPane.classList.contains(PANE_HIDDEN)) {\n this.collapseAction(e);\n }\n else {\n this.expandAction(e);\n }\n this.updateSplitterSize();\n }\n };\n Splitter.prototype.expandAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.expandFlag) {\n this.trigger('beforeExpand', eventArgs, function (beforeExpandArgs) {\n if (!beforeExpandArgs.cancel) {\n _this.expandPane(e);\n }\n var expandEventArgs = _this.afterAction(e);\n _this.trigger('expanded', expandEventArgs);\n });\n }\n else {\n this.expandPane(e);\n }\n };\n Splitter.prototype.getIcon = function (e) {\n var targetClass = e.target.className.split(' ').filter(function (className) {\n return className !== NAVIGATE_ARROW && className !== HIDE_ICON;\n });\n return targetClass[0];\n };\n Splitter.prototype.expandPane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (!this.previousPane.classList.contains(COLLAPSE_PANE) &&\n this.previousPane.classList.contains(STATIC_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.nextPane.classList.contains(EXPAND_PANE) && this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) && !(collapseCount === this.allPanes.length - 2));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.nextPane : this.previousPane;\n var expandPane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPaneIndex = isLeftOrUp ? this.nextPaneIndex : this.prevPaneIndex;\n removeClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'false');\n // cCount is calculated after removing the COLLAPSE_PANE\n var cCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n if (cCount > 0) {\n if (!expandPane.classList.contains(COLLAPSE_PANE)) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n else if (cCount === 0) {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n removeClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'false');\n }\n }\n }\n if (this.expandFlag) {\n this.updatePaneSettings(expandPaneIndex, false);\n }\n this.updateIconsOnExpand(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.previousPane.classList.remove(EXPAND_PANE);\n this.previousPane.setAttribute('aria-expanded', 'false');\n this.previousPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.updateFlexGrow = function () {\n var collapseCount = 0;\n for (var j = 0; j < this.element.children.length; j++) {\n if (this.element.children[j].classList.contains(COLLAPSE_PANE)) {\n collapseCount = collapseCount + 1;\n }\n }\n var visiblePane = collapseCount === this.allPanes.length - 2;\n var panes = this.allPanes;\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.flexGrow = '';\n if (visiblePane && this.allPanes[i].classList.contains(COLLAPSE_PANE) && this.paneSettings[i].size &&\n i !== this.allPanes.length - 1) {\n panes[i].style.flexGrow = '';\n }\n if (panes[i].classList.contains(EXPAND_PANE)) {\n panes[i].style.flexGrow = '1';\n }\n else if (panes[i].classList.contains(COLLAPSE_PANE)) {\n panes[i].style.flexGrow = '0';\n }\n }\n };\n Splitter.prototype.hideTargetBarIcon = function (targetBar, targetArrow) {\n addClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.showTargetBarIcon = function (targetBar, targetArrow) {\n removeClass([select('.' + targetArrow, targetBar)], HIDE_ICON);\n };\n Splitter.prototype.updateIconsOnCollapse = function (e, targetIcon) {\n this.splitterProperty();\n var removeIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ? this.currentBarIndex - 1\n : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n if (this.splitInstance.prevPaneCollapsed || this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.resizableModel(this.currentBarIndex, false);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 1) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n this.resizableModel(otherBarIndex, false);\n }\n else if (collapsecount === 2) {\n this.hideBarIcons(otherBar);\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[otherPrevPaneIndex].collapsible ||\n !this.paneSettings[otherNextPaneIndex].collapsible) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n }\n }\n }\n else {\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n if (!isNullOrUndefined(otherBar)) {\n this.resizableModel(otherBarIndex, false);\n }\n if (!this.paneSettings[this.prevPaneIndex].collapsible || !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, targetIcon);\n }\n this.hideTargetBarIcon(this.currentSeparator, removeIcon);\n }\n else {\n if (!isNullOrUndefined(otherBar)) {\n this.hideTargetBarIcon(otherBar, removeIcon);\n }\n this.showTargetBarIcon(this.currentSeparator, removeIcon);\n }\n }\n };\n Splitter.prototype.collapseAction = function (e) {\n var _this = this;\n var eventArgs = this.beforeAction(e);\n if (this.collapseFlag) {\n this.collapsePane(e);\n }\n else {\n this.trigger('beforeCollapse', eventArgs, function (beforeCollapseArgs) {\n if (!beforeCollapseArgs.cancel) {\n _this.collapsePane(e);\n var collapseEventArgs = _this.afterAction(e);\n _this.trigger('collapsed', collapseEventArgs);\n }\n });\n }\n };\n Splitter.prototype.collapsePane = function (e) {\n this.removeStaticPanes();\n var collapseCount = this.element.querySelectorAll('.' + COLLAPSE_PANE).length;\n var flexStatus = (this.previousPane.classList.contains(STATIC_PANE) &&\n !this.previousPane.classList.contains(COLLAPSE_PANE) && !this.nextPane.classList.contains(COLLAPSE_PANE) &&\n this.nextPane.nextElementSibling.classList.contains(PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(STATIC_PANE) &&\n !this.nextPane.nextElementSibling.classList.contains(COLLAPSE_PANE) &&\n !(collapseCount === this.allPanes.length - 2)) || (this.nextPane.classList.contains(COLLAPSE_PANE) &&\n !this.previousPane.classList.contains(STATIC_PANE) && this.nextPane.classList.contains(STATIC_PANE));\n var collapseClass = [COLLAPSE_PANE, PANE_HIDDEN];\n var icon = this.getIcon(e);\n var isLeftOrUp = icon === ARROW_LEFT || icon === ARROW_UP;\n var collapsePane = isLeftOrUp ? this.previousPane : this.nextPane;\n var expandPane = isLeftOrUp ? this.nextPane : this.previousPane;\n var collapsePaneIndex = isLeftOrUp ? this.prevPaneIndex : this.nextPaneIndex;\n removeClass([collapsePane], EXPAND_PANE);\n collapsePane.setAttribute('aria-expanded', 'false');\n addClass([collapsePane], collapseClass);\n collapsePane.setAttribute('aria-hidden', 'true');\n var isFlexPane = collapsePane.style.flexBasis === '';\n if (isFlexPane) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n else {\n var isFlexPaneHidden = true;\n for (var i = 0; i < this.allPanes.length; i++) {\n if (!this.allPanes[i].classList.contains(COLLAPSE_PANE)) {\n if (this.allPanes[i].style.flexBasis === '' && !this.allPanes[i].classList.contains(COLLAPSE_PANE)\n && !this.allPanes[i].classList.contains(EXPAND_PANE)) {\n addClass([this.allPanes[i]], EXPAND_PANE);\n this.allPanes[i].setAttribute('aria-expanded', 'true');\n isFlexPaneHidden = false;\n break;\n }\n }\n }\n if (isFlexPaneHidden) {\n addClass([expandPane], EXPAND_PANE);\n expandPane.setAttribute('aria-expanded', 'true');\n }\n }\n if (!this.collapseFlag) {\n this.updatePaneSettings(collapsePaneIndex, true);\n }\n this.updateIconsOnCollapse(e, icon);\n this.updateFlexGrow();\n if (flexStatus) {\n this.nextPane.classList.remove(EXPAND_PANE);\n this.nextPane.style.flexGrow = '';\n }\n };\n Splitter.prototype.removeStaticPanes = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n if (isNullOrUndefined(this.paneSettings[i].size)) {\n this.allPanes[i].classList.remove(STATIC_PANE);\n }\n }\n };\n Splitter.prototype.beforeAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n cancel: false\n };\n return eventArgs;\n };\n Splitter.prototype.updatePaneSettings = function (index, collapsed) {\n var paneValues = this.paneSettings;\n paneValues[index].collapsed = collapsed;\n this.setProperties({ 'paneSettings': paneValues }, true);\n };\n Splitter.prototype.splitterProperty = function () {\n this.splitInstance = {\n currentBarIndex: this.currentBarIndex,\n nextPaneCollapsible: this.nextPane.classList.contains(COLLAPSIBLE),\n prevPaneCollapsible: this.previousPane.classList.contains(COLLAPSIBLE),\n prevPaneExpanded: this.previousPane.classList.contains(EXPAND_PANE),\n nextPaneExpanded: this.nextPane.classList.contains(EXPAND_PANE),\n nextPaneCollapsed: this.nextPane.classList.contains(COLLAPSE_PANE),\n prevPaneCollapsed: this.previousPane.classList.contains(COLLAPSE_PANE),\n nextPaneIndex: this.getNextPaneIndex(),\n prevPaneIndex: this.getPreviousPaneIndex(),\n nextPaneNextEle: this.nextPane.nextElementSibling,\n prevPanePreEle: this.previousPane.previousElementSibling\n };\n };\n Splitter.prototype.showCurrentBarIcons = function () {\n removeClass([select('.' + this.arrow, this.currentSeparator)], HIDE_ICON);\n };\n Splitter.prototype.hideBarIcons = function (bar) {\n addClass([select('.' + this.arrow, bar)], HIDE_ICON);\n };\n Splitter.prototype.getCollapseCount = function (prevPaneIndex, nextPaneIndex) {\n var collapsecount = 0;\n if (this.allPanes[prevPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n if (this.allPanes[nextPaneIndex].classList.contains(COLLAPSE_PANE)) {\n collapsecount = collapsecount + 1;\n }\n return collapsecount;\n };\n Splitter.prototype.checkResizableProp = function (prevPaneIndex, nextPaneIndex) {\n if (this.paneSettings[prevPaneIndex].resizable && this.paneSettings[nextPaneIndex].resizable) {\n return true;\n }\n else {\n return false;\n }\n };\n Splitter.prototype.updateIconsOnExpand = function (e, targetIcon) {\n this.splitterProperty();\n var showIcon = this.arrow;\n var otherBar = this.currentBarIndex === (this.allBars.length - 1) ? this.prevBar : this.nextBar;\n var otherBarIndex = this.currentBarIndex === (this.allBars.length - 1) ?\n this.currentBarIndex - 1 : this.currentBarIndex + 1;\n if (!e.target.classList.contains(HIDE_ICON)) {\n // prevPane ! collapsed && nextPane ! collapsed\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.paneSettings[this.prevPaneIndex].collapsible && this.paneSettings[this.nextPaneIndex].collapsible) {\n this.showCurrentBarIcons();\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n if (!isNullOrUndefined(otherBar)) {\n var otherPrevPaneIndex = otherBarIndex;\n var otherNextPaneIndex = otherBarIndex + 1;\n var collapsecount = this.getCollapseCount(otherPrevPaneIndex, otherNextPaneIndex);\n if (this.paneSettings[otherPrevPaneIndex].collapsible &&\n this.paneSettings[otherNextPaneIndex].collapsible) {\n if (collapsecount === 0) {\n this.showTargetBarIcon(otherBar, targetIcon);\n this.showTargetBarIcon(otherBar, showIcon);\n if (this.checkResizableProp(otherPrevPaneIndex, otherNextPaneIndex)) {\n this.resizableModel(otherBarIndex, true);\n }\n }\n else if (collapsecount === 1) {\n this.hideBarIcons(otherBar);\n // If condition Edge case in flexible cases\n if (this.allPanes[otherPrevPaneIndex].classList.contains(EXPAND_PANE) ||\n this.allPanes[otherNextPaneIndex].classList.contains(EXPAND_PANE)) {\n this.showTargetBarIcon(otherBar, showIcon);\n }\n else {\n // Common case\n this.showTargetBarIcon(otherBar, targetIcon);\n }\n this.resizableModel(otherBarIndex, false);\n }\n }\n }\n }\n else {\n this.hideTargetBarIcon(this.currentSeparator, targetIcon);\n this.showTargetBarIcon(this.currentSeparator, showIcon);\n if (!this.splitInstance.prevPaneCollapsed && !this.splitInstance.nextPaneCollapsed) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n else {\n this.resizableModel(this.currentBarIndex, false);\n }\n }\n }\n }\n else {\n if (!this.paneSettings[this.prevPaneIndex].collapsible && !this.paneSettings[this.nextPaneIndex].collapsible) {\n if (this.checkResizableProp(this.prevPaneIndex, this.nextPaneIndex)) {\n this.resizableModel(this.currentBarIndex, true);\n }\n }\n }\n };\n Splitter.prototype.afterAction = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator\n };\n return eventArgs;\n };\n Splitter.prototype.currentIndex = function (e) {\n this.currentBarIndex = this.getOrderIndex(parseInt(e.target.parentElement.style.order, 10), 'splitbar');\n };\n Splitter.prototype.getSeparatorIndex = function (target) {\n var array = [].slice.call(this.allBars);\n array = this.enableReversePanes ? array.reverse() : array;\n return array.indexOf(target);\n };\n Splitter.prototype.getPrevBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar - 1)];\n return prevbar;\n };\n Splitter.prototype.getNextBar = function (currentBar) {\n var prevbar = this.allBars[(currentBar + 1)];\n return prevbar;\n };\n Splitter.prototype.updateBars = function (index) {\n this.prevBar = this.getPrevBar(index);\n this.nextBar = this.getNextBar(index);\n };\n Splitter.prototype.splitterDetails = function (e) {\n if (this.orientation === 'Horizontal') {\n this.arrow = e.target.classList.contains(ARROW_LEFT) ? ARROW_RIGHT : ARROW_LEFT;\n }\n else {\n this.arrow = e.target.classList.contains(ARROW_UP) ? ARROW_DOWN : ARROW_UP;\n }\n this.updateCurrentSeparator(e.target);\n this.currentIndex(e);\n this.updateBars(this.currentBarIndex);\n this.getPaneDetails();\n };\n Splitter.prototype.triggerResizing = function (e) {\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n paneSize: [this.prePaneDimenson, this.nextPaneDimension],\n separator: this.currentSeparator\n };\n this.trigger('resizing', eventArgs);\n };\n Splitter.prototype.onMouseDown = function (e) {\n var _this = this;\n e.preventDefault();\n var target = e.target;\n if (target.classList.contains(NAVIGATE_ARROW)) {\n return;\n }\n this.updateCurrentSeparator(target);\n addClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.updateCursorPosition(e, 'previous');\n this.getPaneDetails();\n var eventArgs = {\n element: this.element,\n event: e,\n pane: [this.previousPane, this.nextPane],\n index: [this.getPreviousPaneIndex(), this.getNextPaneIndex()],\n separator: this.currentSeparator,\n cancel: false\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'none';\n }\n this.trigger('resizeStart', eventArgs, function (resizeStartArgs) {\n if (!resizeStartArgs.cancel) {\n _this.wireResizeEvents();\n _this.checkPaneSize(e);\n }\n });\n };\n Splitter.prototype.updatePaneFlexBasis = function (pane) {\n var previous;\n if (pane.style.flexBasis.indexOf('%') > 0) {\n previous = this.removePercentageUnit(pane.style.flexBasis);\n }\n else {\n if (pane.style.flexBasis !== '') {\n previous = this.convertPixelToPercentage(this.convertPixelToNumber(pane.style.flexBasis));\n }\n else {\n var offset = (this.orientation === 'Horizontal') ? (pane.offsetWidth) : (pane.offsetHeight);\n previous = this.convertPixelToPercentage(offset);\n }\n }\n return previous;\n };\n Splitter.prototype.removePercentageUnit = function (value) {\n return parseFloat(value.slice(0, value.indexOf('%')));\n };\n Splitter.prototype.convertPercentageToPixel = function (value, targetElement) {\n var percentage = value.toString();\n var convertedValue;\n if (percentage.indexOf('%') > -1) {\n convertedValue = parseFloat(percentage.slice(0, percentage.indexOf('%')));\n var offsetValue = void 0;\n if (!isNullOrUndefined(targetElement)) {\n offsetValue = this.panesDimensions[this.allPanes.indexOf(targetElement)];\n }\n else {\n offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n }\n convertedValue = Math.ceil(offsetValue * (convertedValue / 100));\n }\n else {\n convertedValue = parseInt(percentage, 10);\n }\n return convertedValue;\n };\n Splitter.prototype.convertPixelToPercentage = function (value) {\n var offsetValue = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return (value / offsetValue) * 100;\n };\n Splitter.prototype.convertPixelToNumber = function (value) {\n value = value.toString();\n if (value.indexOf('p') > -1) {\n return parseFloat(value.slice(0, value.indexOf('p')));\n }\n else {\n return parseFloat(value);\n }\n };\n Splitter.prototype.calcDragPosition = function (rectValue, offsetValue) {\n var separatorPosition = this.orientation === 'Horizontal' ? (this.currentCoordinates.x - rectValue) :\n (this.currentCoordinates.y - rectValue);\n var separator;\n separator = separatorPosition / offsetValue;\n separator = (separator > 1) ? 1 : (separator < 0) ? 0 : separator;\n return separator * offsetValue;\n };\n Splitter.prototype.getSeparatorPosition = function (e) {\n this.updateCursorPosition(e, 'current');\n var rectBound = (this.orientation === 'Horizontal') ? this.element.getBoundingClientRect().left + window.scrollX :\n this.element.getBoundingClientRect().top + window.scrollY;\n var offSet = (this.orientation === 'Horizontal') ? this.element.offsetWidth : this.element.offsetHeight;\n return this.calcDragPosition(rectBound, offSet);\n };\n Splitter.prototype.getMinMax = function (paneIndex, target, selection) {\n var defaultVal = selection === 'min' ? 0 : null;\n // eslint-disable-next-line\n var paneValue = null;\n if (selection === 'min') {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneValue = this.paneSettings[paneIndex].min;\n }\n }\n else {\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneValue = this.paneSettings[paneIndex].max;\n }\n }\n if (this.paneSettings.length > 0 && !isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(paneValue)) {\n if (paneValue.indexOf('%') > 0) {\n paneValue = this.convertPercentageToPixel(paneValue).toString();\n }\n return this.convertPixelToNumber(paneValue);\n }\n else {\n return defaultVal;\n }\n };\n Splitter.prototype.getPreviousPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) + 1 :\n parseInt(this.currentSeparator.style.order, 10) - 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getNextPaneIndex = function () {\n var separatorIndex = this.enableReversePanes ? parseInt(this.currentSeparator.style.order, 10) - 1 :\n parseInt(this.currentSeparator.style.order, 10) + 1;\n return this.getOrderIndex(separatorIndex, 'pane');\n };\n Splitter.prototype.getPaneDetails = function () {\n var prevPane = null;\n var nextPane = null;\n this.order = parseInt(this.currentSeparator.style.order, 10);\n if (this.allPanes.length > 1) {\n prevPane = this.getPrevPane(this.order);\n nextPane = this.getNextPane(this.order);\n }\n if (prevPane && nextPane) {\n this.previousPane = prevPane;\n this.nextPane = nextPane;\n this.prevPaneIndex = this.getPreviousPaneIndex();\n this.nextPaneIndex = this.getNextPaneIndex();\n }\n else {\n return;\n }\n };\n Splitter.prototype.getPaneHeight = function (pane) {\n return ((this.orientation === 'Horizontal') ? pane.offsetWidth.toString() :\n pane.offsetHeight.toString());\n };\n Splitter.prototype.isValidSize = function (paneIndex) {\n var isValid = false;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) &&\n !isNullOrUndefined(this.paneSettings[paneIndex].size) &&\n this.paneSettings[paneIndex].size.indexOf('%') > -1) {\n isValid = true;\n }\n return isValid;\n };\n Splitter.prototype.getPaneDimensions = function () {\n this.previousPaneHeightWidth = (this.previousPane.style.flexBasis === '') ? this.getPaneHeight(this.previousPane) :\n this.previousPane.style.flexBasis;\n this.nextPaneHeightWidth = (this.nextPane.style.flexBasis === '') ? this.getPaneHeight(this.nextPane) :\n this.nextPane.style.flexBasis;\n if (this.isValidSize(this.prevPaneIndex)) {\n this.previousPaneHeightWidth = this.convertPercentageToPixel(this.previousPaneHeightWidth).toString();\n this.updatePrePaneInPercentage = true;\n }\n if (this.isValidSize(this.nextPaneIndex)) {\n this.nextPaneHeightWidth = this.convertPercentageToPixel(this.nextPaneHeightWidth).toString();\n this.updateNextPaneInPercentage = true;\n }\n this.prePaneDimenson = this.convertPixelToNumber(this.previousPaneHeightWidth.toString());\n this.nextPaneDimension = this.convertPixelToNumber(this.nextPaneHeightWidth.toString());\n };\n Splitter.prototype.checkCoordinates = function (pageX, pageY) {\n var coordinatesChanged = true;\n if ((pageX === this.previousCoordinates.x || pageY === this.previousCoordinates.y)) {\n coordinatesChanged = false;\n }\n return coordinatesChanged;\n };\n Splitter.prototype.isCursorMoved = function (e) {\n var cursorMoved = true;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType)) &&\n this.getEventType(e.pointerType) === 'mouse') {\n cursorMoved = this.checkCoordinates(e.pageX, e.pageY);\n }\n else {\n cursorMoved = (Browser.info.name !== 'msie') ?\n this.checkCoordinates(e.touches[0].pageX, e.touches[0].pageY) :\n this.checkCoordinates(e.pageX, e.pageY);\n }\n return cursorMoved;\n };\n Splitter.prototype.getBorder = function () {\n this.border = 0;\n var border = this.orientation === 'Horizontal' ? ((this.element.offsetWidth - this.element.clientWidth) / 2) :\n (this.element.offsetHeight - this.element.clientHeight) / 2;\n this.border = Browser.info.name !== 'chrome' ? this.border : border;\n };\n Splitter.prototype.onMouseMove = function (e) {\n if (!this.isCursorMoved(e)) {\n return;\n }\n this.getPaneDetails();\n this.getPaneDimensions();\n this.triggerResizing(e);\n var left = this.validateDraggedPosition(this.getSeparatorPosition(e), this.prePaneDimenson, this.nextPaneDimension);\n var separatorNewPosition;\n this.getBorder();\n if (this.orientation === 'Horizontal') {\n separatorNewPosition = (this.element.getBoundingClientRect().left + left) -\n this.currentSeparator.getBoundingClientRect().left + this.border;\n }\n else {\n separatorNewPosition = (this.element.getBoundingClientRect().top + left) -\n this.currentSeparator.getBoundingClientRect().top + this.border;\n }\n this.nextPaneHeightWidth =\n (typeof (this.nextPaneHeightWidth) === 'string' && this.nextPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.nextPaneHeightWidth) : parseInt(this.nextPaneHeightWidth, 10);\n this.previousPaneHeightWidth =\n (typeof (this.previousPaneHeightWidth) === 'string' && this.previousPaneHeightWidth.indexOf('p') > -1) ?\n this.convertPixelToNumber(this.previousPaneHeightWidth) : parseInt(this.previousPaneHeightWidth, 10);\n this.prevPaneCurrentWidth = separatorNewPosition + this.previousPaneHeightWidth;\n this.nextPaneCurrentWidth = this.nextPaneHeightWidth - separatorNewPosition;\n this.validateMinMaxValues();\n if (this.nextPaneCurrentWidth < 0) {\n this.nextPaneCurrentWidth = 0;\n }\n /* istanbul ignore next */\n if (this.prevPaneCurrentWidth < 0) {\n this.prevPaneCurrentWidth = 0;\n }\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) > this.totalWidth) {\n if (this.nextPaneCurrentWidth < this.prevPaneCurrentWidth) {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n else {\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth)\n - this.totalWidth);\n }\n }\n /* istanbul ignore next */\n if ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth) < this.totalWidth) {\n var difference = this.totalWidth - ((this.nextPaneCurrentWidth + this.prevPaneCurrentWidth));\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + difference;\n }\n this.calculateCurrentDimensions();\n this.addStaticPaneClass();\n var flexPaneCount = 0;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (this.paneSettings[i].size === '') {\n flexPaneCount = flexPaneCount + 1;\n }\n }\n var allFlexiblePanes = flexPaneCount === this.allPanes.length;\n // Two flexible Pane Case.\n if (this.previousPane.style.flexBasis === '' && this.nextPane.style.flexBasis === '' && !allFlexiblePanes) {\n var middlePaneIndex = this.allPanes.length % this.allBars.length;\n if (this.prevPaneIndex === middlePaneIndex) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n else if (this.nextPaneIndex === middlePaneIndex) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n }\n else {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n }\n } // All panes are flexible\n else if (allFlexiblePanes) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n addClass([this.previousPane], STATIC_PANE);\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n addClass([this.nextPane], STATIC_PANE);\n } // Two Panesa are Static Pane\n else {\n if (this.previousPane.style.flexBasis !== '' && this.previousPane.classList.contains(STATIC_PANE)) {\n this.previousPane.style.flexBasis = this.prevPaneCurrentWidth;\n }\n if (this.nextPane.style.flexBasis !== '' && this.nextPane.classList.contains(STATIC_PANE)) {\n this.nextPane.style.flexBasis = this.nextPaneCurrentWidth;\n }\n }\n var isStaticPanes = this.previousPane.style.flexBasis !== '' && this.nextPane.style.flexBasis !== '';\n if (!(this.allPanes.length > 2) && isStaticPanes) {\n this.updateSplitterSize();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMinRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMinRange = null;\n var paneMinDimensions;\n var difference = 0;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].min)) {\n paneMinRange = this.paneSettings[paneIndex].min.toString();\n }\n if (!isNullOrUndefined(paneMinRange)) {\n if (paneMinRange.indexOf('%') > 0) {\n paneMinRange = this.convertPercentageToPixel(paneMinRange).toString();\n }\n paneMinDimensions = this.convertPixelToNumber(paneMinRange);\n if (paneCurrentWidth < paneMinDimensions) {\n difference = (paneCurrentWidth - paneMinDimensions) <= 0 ? 0 :\n (paneCurrentWidth - paneMinDimensions);\n this.totalWidth = this.totalWidth - difference;\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMinDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n // eslint-disable-next-line\n Splitter.prototype.validateMaxRange = function (paneIndex, paneCurrentWidth, pane) {\n var paneMaxRange = null;\n var paneMaxDimensions;\n var validatedVal;\n if (!isNullOrUndefined(this.paneSettings[paneIndex]) && !isNullOrUndefined(this.paneSettings[paneIndex].max)) {\n paneMaxRange = this.paneSettings[paneIndex].max.toString();\n }\n if (!isNullOrUndefined(paneMaxRange)) {\n if (paneMaxRange.indexOf('%') > 0) {\n paneMaxRange = this.convertPercentageToPixel(paneMaxRange).toString();\n }\n paneMaxDimensions = this.convertPixelToNumber(paneMaxRange);\n if (paneCurrentWidth > paneMaxDimensions) {\n this.totalWidth = this.totalWidth - (paneCurrentWidth - paneMaxDimensions);\n this.totalPercent = this.convertPixelToPercentage(this.totalWidth);\n validatedVal = paneMaxDimensions;\n }\n }\n return isNullOrUndefined(validatedVal) ? paneCurrentWidth : validatedVal;\n };\n Splitter.prototype.validateMinMaxValues = function () {\n //validate previous pane minimum range\n this.prevPaneCurrentWidth = this.validateMinRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // Validate next pane minimum range\n this.nextPaneCurrentWidth = this.validateMinRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n // validate previous pane maximum range\n this.prevPaneCurrentWidth = this.validateMaxRange(this.prevPaneIndex, this.prevPaneCurrentWidth, this.previousPane);\n // validate next pane maximum range\n this.nextPaneCurrentWidth = this.validateMaxRange(this.nextPaneIndex, this.nextPaneCurrentWidth, this.nextPane);\n };\n Splitter.prototype.equatePaneWidths = function () {\n var difference;\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) > this.totalPercent) {\n difference = (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) - this.totalPercent;\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth - (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth - (difference / 2) + '%';\n }\n if ((this.prevPaneCurrentWidth + this.nextPaneCurrentWidth) < this.totalPercent) {\n difference = this.totalPercent - (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth);\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + (difference / 2) + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + (difference / 2) + '%';\n }\n };\n Splitter.prototype.calculateCurrentDimensions = function () {\n if (this.updatePrePaneInPercentage || this.updateNextPaneInPercentage) {\n this.prevPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.prevPaneCurrentWidth)\n * 10) / 10));\n this.nextPaneCurrentWidth = Math.round(Number(Math.round(this.convertPixelToPercentage(this.nextPaneCurrentWidth)\n * 10) / 10));\n if (this.prevPaneCurrentWidth === 0) {\n this.nextPaneCurrentWidth = this.totalPercent;\n }\n if (this.nextPaneCurrentWidth === 0) {\n this.prevPaneCurrentWidth = this.totalPercent;\n }\n if (this.prevPaneCurrentWidth + this.nextPaneCurrentWidth !== this.totalPercent) {\n this.equatePaneWidths();\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + '%';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + '%';\n }\n this.prevPaneCurrentWidth = (this.updatePrePaneInPercentage) ? this.prevPaneCurrentWidth :\n this.convertPercentageToPixel(this.prevPaneCurrentWidth) + 'px';\n this.nextPaneCurrentWidth = (this.updateNextPaneInPercentage) ? this.nextPaneCurrentWidth :\n this.convertPercentageToPixel(this.nextPaneCurrentWidth) + 'px';\n this.updatePrePaneInPercentage = false;\n this.updateNextPaneInPercentage = false;\n }\n else {\n this.prevPaneCurrentWidth = this.prevPaneCurrentWidth + 'px';\n this.nextPaneCurrentWidth = this.nextPaneCurrentWidth + 'px';\n }\n };\n Splitter.prototype.addStaticPaneClass = function () {\n if (!this.previousPane.classList.contains(STATIC_PANE) && !(this.previousPane.style.flexBasis === '') && !this.previousPane.classList.contains(EXPAND_PANE)) {\n this.previousPane.classList.add(STATIC_PANE);\n }\n if (!this.nextPane.classList.contains(STATIC_PANE) && !(this.nextPane.style.flexBasis === '') && !this.nextPane.classList.contains(EXPAND_PANE)) {\n this.nextPane.classList.add(STATIC_PANE);\n }\n };\n Splitter.prototype.validateDraggedPosition = function (draggedPos, prevPaneHeightWidth, nextPaneHeightWidth) {\n var separatorTopLeft = (this.orientation === 'Horizontal') ? this.currentSeparator.offsetLeft :\n this.currentSeparator.offsetTop;\n var prePaneRange = separatorTopLeft - prevPaneHeightWidth;\n var nextPaneRange = nextPaneHeightWidth + separatorTopLeft;\n var pane1MinSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'min');\n var pane2MinSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'min');\n var pane1MaxSize = this.getMinMax(this.prevPaneIndex, this.previousPane, 'max');\n var pane2MaxSize = this.getMinMax(this.nextPaneIndex, this.nextPane, 'max');\n var validatedSize = draggedPos;\n if (draggedPos > nextPaneRange - pane2MinSize) {\n validatedSize = nextPaneRange - pane2MinSize;\n }\n else if (draggedPos < prePaneRange + pane1MinSize) {\n validatedSize = prePaneRange + pane1MinSize;\n }\n if (!isNullOrUndefined(pane1MaxSize)) {\n if (draggedPos > prePaneRange + pane1MaxSize) {\n validatedSize = prePaneRange + pane1MaxSize;\n }\n }\n else if (!isNullOrUndefined(pane2MaxSize)) {\n if (draggedPos < nextPaneRange - pane2MaxSize) {\n validatedSize = nextPaneRange - pane2MaxSize;\n }\n }\n return validatedSize;\n };\n Splitter.prototype.onMouseUp = function (e) {\n removeClass([this.currentSeparator], SPLIT_BAR_ACTIVE);\n this.unwireResizeEvents();\n var eventArgs = {\n event: e,\n element: this.element,\n pane: [this.previousPane, this.nextPane],\n index: [this.prevPaneIndex, this.nextPaneIndex],\n separator: this.currentSeparator,\n paneSize: [this.prePaneDimenson, this.nextPaneDimension]\n };\n for (var i = 0; i < this.element.querySelectorAll('iframe').length; i++) {\n this.element.querySelectorAll('iframe')[i].style.pointerEvents = 'auto';\n }\n this.trigger('resizeStop', eventArgs);\n if (this.enablePersistence) {\n var paneValues = this.paneSettings;\n paneValues[this.getPreviousPaneIndex()].size = this.allPanes[this.getPreviousPaneIndex()].style.flexBasis;\n paneValues[this.getNextPaneIndex()].size = this.allPanes[this.getNextPaneIndex()].style.flexBasis;\n this.setProperties({ 'paneSettings': paneValues }, true);\n }\n };\n Splitter.prototype.panesDimension = function (index, child) {\n var childCount = child.length;\n var size;\n parseInt(this.getHeight(this.element), 10);\n if (!isNullOrUndefined(this.paneSettings[index])) {\n if (!isNullOrUndefined(this.paneSettings[index].size)) {\n size = this.paneSettings[index].size;\n if (index < childCount) {\n setStyleAttribute(child[index], { 'flex-basis': size, 'order': index * 2 });\n if (index < childCount - 1 && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n else if (!this.sizeFlag) {\n child[index].style.flexBasis = null;\n }\n if ((index === childCount - 1) && this.sizeFlag && this.paneSettings[index].size !== '') {\n addClass([child[index]], STATIC_PANE);\n }\n }\n }\n else {\n this.sizeFlag = true;\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n }\n else {\n setStyleAttribute(child[index], { 'order': index * 2 });\n }\n this.paneOrder.push(index * 2);\n };\n Splitter.prototype.setTemplate = function (template, toElement) {\n toElement.innerHTML = '';\n template = typeof (template) === 'string' ? this.sanitizeHelper(template) : template;\n this.templateCompile(toElement, template);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line\n Splitter.prototype.templateCompile = function (ele, cnt) {\n // eslint-disable-next-line\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content');\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Splitter.prototype.compileElement = function (ele, val, prop) {\n // eslint-disable-next-line\n if (typeof (val) === 'string') {\n if (val[0] === '.' || val[0] === '#') {\n var eleVal = document.querySelector(val);\n if (!isNullOrUndefined(eleVal)) {\n this.templateElement.push(eleVal);\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n ele.appendChild(eleVal);\n return;\n }\n else {\n val = val.trim();\n }\n }\n else {\n val = val.trim();\n }\n }\n var templateFn;\n if (!isNullOrUndefined(val.outerHTML)) {\n templateFn = compile(val.outerHTML);\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop, this.element.id + 'content' + this.allPanes.length.toString(), true);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Splitter.prototype.paneCollapsible = function (pane, index) {\n // eslint-disable-next-line\n this.paneSettings[index].collapsible ? addClass([pane], COLLAPSIBLE) : removeClass([pane], COLLAPSIBLE);\n };\n Splitter.prototype.createSplitPane = function (target) {\n var childCount = target.children.length;\n for (var i = 0; i < this.paneSettings.length; i++) {\n if (childCount < this.paneSettings.length) {\n var childElement = this.createElement('div');\n this.element.appendChild(childElement);\n childCount = childCount + 1;\n }\n }\n childCount = target.children.length;\n var child = [].slice.call(target.children);\n this.sizeFlag = false;\n if (childCount > 0) {\n for (var i = 0; i < childCount; i++) {\n // To accept only div and span element as pane\n if (child[i].nodeName === 'DIV' || child[i].nodeName === 'SPAN') {\n this.allPanes.push(child[i]);\n if (this.orientation === 'Horizontal') {\n addClass([child[i]], [PANE, SPLIT_H_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n else {\n addClass([child[i]], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n this.panesDimension(i, child);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && !isNullOrUndefined(this.paneSettings[i].content)) {\n this.setTemplate(this.paneSettings[i].content, child[i]);\n }\n if (!isNullOrUndefined(this.paneSettings[i]) && this.paneSettings[i].cssClass) {\n this.setCssClass(child[i], this.paneSettings[i].cssClass);\n }\n if (!isNullOrUndefined(this.paneSettings[i])) {\n this.paneCollapsible(child[i], i);\n }\n }\n }\n }\n };\n /**\n * expands corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be expanded at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.expand = function (index) {\n this.collapsedOnchange(index);\n this.updatePaneSettings(index, false);\n };\n /**\n * collapses corresponding pane based on the index is passed.\n *\n * @param { number } index - Specifies the index value of the corresponding pane to be collapsed at initial rendering of splitter.\n * @returns {void}\n */\n Splitter.prototype.collapse = function (index) {\n this.isCollapsed(index);\n this.updatePaneSettings(index, true);\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Splitter.prototype.destroy = function () {\n if (!this.isDestroyed) {\n _super.prototype.destroy.call(this);\n EventHandler.remove(document, 'touchstart click', this.onDocumentClick);\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onReportWindowSize, true);\n while (this.element.attributes.length > 0) {\n this.element.removeAttribute(this.element.attributes[0].name);\n }\n this.element.innerHTML = this.wrapper.innerHTML;\n for (var i = 0; i < this.wrapper.attributes.length; i++) {\n this.element.setAttribute(this.wrapper.attributes[i].name, this.wrapper.attributes[i].value);\n }\n if (this.refreshing) {\n addClass([this.element], ['e-control', 'e-lib', ROOT]);\n this.allBars = [];\n this.allPanes = [];\n }\n this.restoreElem();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n }\n };\n Splitter.prototype.restoreElem = function () {\n if (this.templateElement.length > 0) {\n for (var i = 0; i < this.templateElement.length; i++) {\n this.templateElement[i].style.display = 'none';\n document.body.appendChild(this.templateElement[i]);\n }\n }\n };\n Splitter.prototype.addPaneClass = function (pane) {\n // eslint-disable-next-line\n this.orientation === 'Horizontal' ? addClass([pane], [PANE, SPLIT_H_PANE, SCROLL_PANE]) :\n addClass([pane], [PANE, SPLIT_V_PANE, SCROLL_PANE]);\n return pane;\n };\n Splitter.prototype.removePaneOrders = function (paneClass) {\n var childNodes = this.element.childNodes;\n var panes = [];\n for (var i = 0; childNodes.length < 0; i++) {\n if (childNodes[i].classList.contains(paneClass)) {\n panes.push(childNodes[i]);\n }\n }\n for (var i = 0; i < panes.length; i++) {\n panes[i].style.removeProperty('order');\n }\n };\n Splitter.prototype.setPaneOrder = function () {\n for (var i = 0; i < this.allPanes.length; i++) {\n this.panesDimension(i, this.allPanes);\n }\n };\n Splitter.prototype.removeSeparator = function () {\n for (var i = 0; i < this.allBars.length; i++) {\n detach(this.allBars[i]);\n }\n this.allBars = [];\n };\n Splitter.prototype.updatePanes = function () {\n this.setPaneOrder();\n this.removeSeparator();\n this.addSeparator(this.element);\n };\n /**\n * Allows you to add a pane dynamically to the specified index position by passing the pane properties.\n *\n * @param { PanePropertiesModel } paneProperties - Specifies the pane’s properties that apply to new pane.\n * @param { number } index - Specifies the index where the pane will be inserted.\n * @returns {void}\n */\n Splitter.prototype.addPane = function (paneProperties, index) {\n var newPane = this.createElement('div');\n newPane = this.addPaneClass(newPane);\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var paneDetails = {\n size: isNullOrUndefined(paneProperties.size) ? '' : paneProperties.size,\n min: isNullOrUndefined(paneProperties.min) ? null : paneProperties.min,\n max: isNullOrUndefined(paneProperties.max) ? null : paneProperties.max,\n content: isNullOrUndefined(paneProperties.content) ? '' : paneProperties.content,\n resizable: isNullOrUndefined(paneProperties.resizable) ? true : paneProperties.resizable,\n collapsible: isNullOrUndefined(paneProperties.collapsible) ? false : paneProperties.collapsible,\n collapsed: isNullOrUndefined(paneProperties.collapsed) ? false : paneProperties.collapsed,\n cssClass: isNullOrUndefined(paneProperties.cssClass) ? '' : paneProperties.cssClass\n };\n this.paneSettings.splice(index, 0, paneDetails);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.orientation === 'Horizontal') {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_H_PANE)[index]);\n this.removePaneOrders(SPLIT_H_PANE);\n }\n else {\n this.element.insertBefore(newPane, this.element.querySelectorAll('.' + SPLIT_V_PANE)[index]);\n this.removePaneOrders(SPLIT_V_PANE);\n }\n this.allPanes.splice(index, 0, newPane);\n this.updatePanes();\n this.setTemplate(this.paneSettings[index].content, newPane);\n this.setCssClass(this.allPanes[index], paneProperties.cssClass);\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n };\n /**\n * Allows you to remove the specified pane dynamically by passing its index value.\n *\n * @param { number } index - Specifies the index value to remove the corresponding pane.\n * @returns {void}\n */\n Splitter.prototype.removePane = function (index) {\n index = (index > this.allPanes.length + 1) ? this.allPanes.length : index;\n var elementClass = (this.orientation === 'Horizontal') ? SPLIT_H_PANE : SPLIT_V_PANE;\n if (isNullOrUndefined(this.element.querySelectorAll('.' + elementClass)[index])) {\n return;\n }\n detach(this.element.querySelectorAll('.' + elementClass)[index]);\n this.allPanes.splice(index, 1);\n this.removePaneOrders(elementClass);\n this.updatePanes();\n this.paneSettings.splice(index, 1);\n this.setProperties({ 'paneSettings': this.paneSettings }, true);\n if (this.allPanes.length > 0) {\n this.allPanes[this.allPanes.length - 1].classList.remove(STATIC_PANE);\n }\n };\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"height\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enableReversePanes\", void 0);\n __decorate([\n Property('100%')\n ], Splitter.prototype, \"width\", void 0);\n __decorate([\n Property(false)\n ], Splitter.prototype, \"enablePersistence\", void 0);\n __decorate([\n Collection([], PaneProperties)\n ], Splitter.prototype, \"paneSettings\", void 0);\n __decorate([\n Property('Horizontal')\n ], Splitter.prototype, \"orientation\", void 0);\n __decorate([\n Property('')\n ], Splitter.prototype, \"cssClass\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enabled\", void 0);\n __decorate([\n Property(true)\n ], Splitter.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Splitter.prototype, \"separatorSize\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeCollapse\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"beforeExpand\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"collapsed\", void 0);\n __decorate([\n Event()\n ], Splitter.prototype, \"expanded\", void 0);\n Splitter = __decorate([\n NotifyPropertyChanges\n ], Splitter);\n return Splitter;\n}(Component));\n\n/**\n * splitter modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n// constant class definitions\nvar preventSelect = 'e-prevent';\nvar dragging = 'e-dragging';\nvar dragRestrict = 'e-drag-restrict';\nvar drag = 'e-drag';\nvar resize = 'e-resize';\nvar resizeicon = 'e-dl-icon';\nvar responsive = 'e-responsive';\nvar east = 'e-east';\nvar west = 'e-west';\nvar north = 'e-north';\nvar south = 'e-south';\nvar single = 'e-single';\nvar double = 'e-double';\nvar northEast = 'e-north-east';\nvar southEast = 'e-south-east';\nvar northWest = 'e-north-west';\nvar southWest = 'e-south-west';\nvar panel = 'e-panel';\nvar panelContent = 'e-panel-content';\nvar panelContainer = 'e-panel-container';\nvar disable = 'e-disabled';\nvar header = 'e-panel-header';\nvar panelTransition = 'e-panel-transition';\n/**\n * Defines the panel of the DashboardLayout component.\n */\nvar Panel = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Panel, _super);\n function Panel() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('')\n ], Panel.prototype, \"id\", void 0);\n __decorate$1([\n Property('')\n ], Panel.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property('')\n ], Panel.prototype, \"header\", void 0);\n __decorate$1([\n Property('')\n ], Panel.prototype, \"content\", void 0);\n __decorate$1([\n Property(true)\n ], Panel.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(0)\n ], Panel.prototype, \"row\", void 0);\n __decorate$1([\n Property(0)\n ], Panel.prototype, \"col\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"sizeX\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"sizeY\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"minSizeY\", void 0);\n __decorate$1([\n Property(1)\n ], Panel.prototype, \"minSizeX\", void 0);\n __decorate$1([\n Property(null)\n ], Panel.prototype, \"maxSizeY\", void 0);\n __decorate$1([\n Property(null)\n ], Panel.prototype, \"maxSizeX\", void 0);\n __decorate$1([\n Property(1000)\n ], Panel.prototype, \"zIndex\", void 0);\n return Panel;\n}(ChildProperty));\n/**\n * The DashboardLayout is a grid structured layout control, that helps to create a dashboard with panels.\n * Panels hold the UI components or data to be visualized with flexible options like resize, reorder, drag-n-drop, remove and add,\n * that allows users to easily place the panels at a desired position within the grid layout.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar DashboardLayout = /** @__PURE__ @class */ (function (_super) {\n __extends$1(DashboardLayout, _super);\n function DashboardLayout(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.rows = 1;\n _this.panelID = 0;\n _this.movePanelCalled = false;\n _this.resizeCalled = false;\n _this.mOffX = 0;\n _this.mOffY = 0;\n _this.maxTop = 9999;\n _this.maxRows = 100;\n _this.mouseX = 0;\n _this.mouseY = 0;\n _this.minTop = 0;\n _this.minLeft = 0;\n _this.isInlineRendering = false;\n _this.removeAllCalled = false;\n // to check whether removePanel is executed in mobile device\n _this.isPanelRemoved = false;\n // to maintain sizeY in mobile device\n _this.panelsSizeY = 0;\n _this.resizeHeight = false;\n _this.eventVar = false;\n setValue('mergePersistData', _this.mergePersistPanelData, _this);\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n */\n DashboardLayout.prototype.preRender = function () {\n this.panelCollection = [];\n this.sortedArray = [];\n this.gridPanelCollection = [];\n this.overlapElement = [];\n this.overlapElementClone = [];\n this.overlapSubElementClone = [];\n this.collisionChecker = {};\n this.dragCollection = [];\n this.elementRef = { top: '', left: '', height: '', width: '' };\n this.dimensions = [];\n this.allItems = [];\n this.oldRowCol = {};\n this.availableClasses = [];\n this.setOldRowCol();\n this.calculateCellSize();\n this.contentTemplateChild = [].slice.call(this.element.children);\n };\n DashboardLayout.prototype.setOldRowCol = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (!this.panels[i].id) {\n this.panelPropertyChange(this.panels[i], { id: 'layout_' + this.panelID.toString() });\n this.panelID = this.panelID + 1;\n }\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n };\n DashboardLayout.prototype.createPanelElement = function (cssClass, idValue) {\n var ele = this.createElement('div');\n if (cssClass && cssClass.length > 0) {\n addClass([ele], cssClass);\n }\n if (idValue) {\n ele.setAttribute('id', idValue);\n }\n return ele;\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns void\n * @private\n */\n DashboardLayout.prototype.render = function () {\n this.initialize();\n this.isRenderComplete = true;\n if (this.showGridLines && !this.checkMediaQuery()) {\n this.initGridLines();\n }\n this.updateDragArea();\n this.renderComplete();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initGridLines = function () {\n this.table = document.createElement('table');\n var tbody = document.createElement('tbody');\n this.table.classList.add('e-dashboard-gridline-table');\n for (var i = 0; i < this.maxRow(); i++) {\n var tr = document.createElement('tr');\n for (var j = 0; j < this.columns; j++) {\n var td = document.createElement('td');\n td.classList.add('e-dashboard-gridline');\n this.setAttributes({ value: { row: i.toString(), col: j.toString(), sizeX: '1', sizeY: '1' } }, td);\n this.setPanelPosition(td, i, j);\n this.setHeightAndWidth(td, { row: i, col: j, sizeX: 1, sizeY: 1 });\n tr.appendChild(td);\n }\n tbody.appendChild(tr);\n }\n this.table.appendChild(tbody);\n this.element.appendChild(this.table);\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.initialize = function () {\n this.updateRowHeight();\n if (this.element.childElementCount > 0 && this.element.querySelectorAll('.e-panel').length > 0) {\n var panelElements = [];\n this.setProperties({ panels: [] }, true);\n this.isInlineRendering = true;\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n panelElements.push((this.element.querySelectorAll('.e-panel')[i]));\n }\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n if (this.enableRtl) {\n addClass([panelElement], 'e-rtl');\n }\n this.getInlinePanels(panelElement);\n this.maxCol();\n this.maxRow();\n }\n for (var i = 0; i < this.panels.length; i++) {\n var panelElement = this.element.querySelector('#' + this.panels[i].id);\n this.setMinMaxValues(this.panels[i]);\n if (this.maxColumnValue < this.panels[i].col || this.maxColumnValue < (this.panels[i].col + this.panels[i].sizeX)) {\n var colValue = this.maxColumnValue - this.panels[i].sizeX;\n this.panelPropertyChange(this.panels[i], { col: colValue < 0 ? 0 : colValue });\n }\n this.setXYAttributes(panelElement, this.panels[i]);\n var panel_1 = this.renderPanels(panelElement, this.panels[i], this.panels[i].id, false);\n this.panelCollection.push(panel_1);\n this.setHeightAndWidth(panelElement, this.panels[i]);\n this.tempObject = this;\n if (this.mediaQuery && !window.matchMedia('(' + this.mediaQuery + ')').matches) {\n this.setPanelPosition(panelElement, this.panels[i].row, this.panels[i].col);\n this.mainElement = panelElement;\n this.updatePanelLayout(panelElement, this.panels[i]);\n this.mainElement = null;\n }\n this.setClasses([panelElement]);\n }\n this.updateOldRowColumn();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n }\n else {\n this.renderDashBoardCells(this.panels);\n }\n if (this.allowDragging && (this.mediaQuery ? !window.matchMedia('(' + this.mediaQuery + ')').matches : true)) {\n this.enableDraggingContent(this.panelCollection);\n }\n this.sortedPanel();\n this.bindEvents();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkColumnValue = this.maxColumnValue;\n if (!(this.checkMediaQuery())) {\n this.panelResponsiveUpdate();\n }\n this.setEnableRtl();\n };\n DashboardLayout.prototype.checkMediaQuery = function () {\n return (this.mediaQuery && window.matchMedia('(' + this.mediaQuery + ')').matches);\n };\n DashboardLayout.prototype.calculateCellSize = function () {\n this.cellSize = [];\n if ((this.checkMediaQuery())) {\n this.cellSize[1] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio;\n }\n else {\n this.cellSize[0] = this.element.parentElement &&\n ((this.element.parentElement.offsetWidth));\n this.cellSize[0] = this.element.parentElement\n && ((this.element.parentElement.offsetWidth - ((this.maxCol() - 1) * this.cellSpacing[0]))\n / (this.maxCol()));\n this.cellSize[1] = this.cellSize[0] / this.cellAspectRatio;\n }\n };\n DashboardLayout.prototype.maxRow = function (recheck) {\n var maxRow = 1;\n if (this.rows > 1 && isNullOrUndefined(recheck)) {\n maxRow = this.rows;\n return maxRow;\n }\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY + this.panels[i].row > maxRow) {\n maxRow = this.panels[i].sizeY + this.panels[i].row;\n }\n }\n if (this.panels.length === 0) {\n maxRow = this.columns;\n }\n return maxRow;\n };\n DashboardLayout.prototype.maxCol = function () {\n var maxCol = 1;\n maxCol = this.columns;\n this.maxColumnValue = maxCol;\n return maxCol;\n };\n DashboardLayout.prototype.updateOldRowColumn = function () {\n for (var i = 0; i < this.panels.length; i++) {\n var id = this.panels[i].id;\n if (document.getElementById(id)) {\n var row = parseInt(document.getElementById(id).getAttribute('data-row'), 10);\n var col = parseInt(document.getElementById(id).getAttribute('data-col'), 10);\n this.oldRowCol[this.panels[i].id] = { row: row, col: col };\n }\n else {\n continue;\n }\n }\n };\n DashboardLayout.prototype.createSubElement = function (cssClass, idValue, className) {\n var element = this.createElement('div');\n if (className) {\n addClass([element], [className]);\n }\n if (cssClass && cssClass.length > 0) {\n addClass([element], cssClass);\n }\n if (idValue) {\n element.setAttribute('id', idValue);\n }\n return element;\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n var sanitizedValue = SanitizeHtmlHelper.sanitize(template);\n return compile((this.enableHtmlSanitizer && typeof (template) === 'string') ? sanitizedValue : template);\n }\n }\n return undefined;\n };\n DashboardLayout.prototype.renderTemplate = function (content, appendElement, type, isStringTemplate, prop) {\n // eslint-disable-next-line\n var templateFn = this.templateParser(content);\n var templateElements = [];\n if ((content[0] === '.' || content[0] === '#') &&\n document.querySelector(content).tagName !== 'SCRIPT') {\n var eleVal = document.querySelector(content);\n if (!isNullOrUndefined(eleVal)) {\n if (eleVal.style.display === 'none') {\n eleVal.style.removeProperty('display');\n }\n if (eleVal.getAttribute('style') === '') {\n eleVal.removeAttribute('style');\n }\n appendElement.appendChild(eleVal);\n return;\n }\n else {\n content = content.trim();\n }\n }\n else {\n // eslint-disable-next-line\n var compilerFn = templateFn({}, this, prop, type, isStringTemplate, null, appendElement);\n if (compilerFn) {\n for (var _i = 0, compilerFn_1 = compilerFn; _i < compilerFn_1.length; _i++) {\n var item = compilerFn_1[_i];\n templateElements.push(item);\n }\n append([].slice.call(templateElements), appendElement);\n }\n }\n };\n DashboardLayout.prototype.renderPanels = function (cellElement, panelModel, panelId, isStringTemplate) {\n addClass([cellElement], [panel, panelTransition]);\n var cssClass = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelContent = cellElement.querySelector('.e-panel-container') ?\n cellElement.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cellElement.id + '_content', panelContainer);\n cellElement.appendChild(this.panelContent);\n if (!panelModel.enabled) {\n this.disablePanel(cellElement);\n }\n if (panelModel.header) {\n var headerTemplateElement = cellElement.querySelector('.e-panel-header') ?\n cellElement.querySelector('.e-panel-header') : this.createSubElement([], cellElement.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n if (!cellElement.querySelector('.e-panel-header')) {\n var id = this.element.id + 'HeaderTemplate' + panelId;\n this.renderTemplate(panelModel.header, headerTemplateElement, id, isStringTemplate, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n }\n if (panelModel.content) {\n var cssClass_1 = panelModel.cssClass ? panelModel.cssClass.split(' ') : null;\n this.panelBody = cellElement.querySelector('.e-panel-content') ? cellElement.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_1, cellElement.id + '_body', panelContent);\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyleAttribute(this.panelBody, { height: contentHeightValue });\n if (!cellElement.querySelector('.e-panel-content')) {\n var id = this.element.id + 'ContentTemplate' + panelId;\n this.renderTemplate(panelModel.content, this.panelBody, id, isStringTemplate, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n }\n return cellElement;\n };\n DashboardLayout.prototype.disablePanel = function (panelElement) {\n addClass([panelElement], [disable]);\n };\n DashboardLayout.prototype.getInlinePanels = function (panelElement) {\n var model = {\n sizeX: panelElement.hasAttribute('data-sizex') ? parseInt(panelElement.getAttribute('data-sizex'), 10) : 1,\n sizeY: panelElement.hasAttribute('data-sizey') ? parseInt(panelElement.getAttribute('data-sizey'), 10) : 1,\n minSizeX: panelElement.hasAttribute('data-minsizex') ? parseInt(panelElement.getAttribute('data-minsizex'), 10) : 1,\n minSizeY: panelElement.hasAttribute('data-minsizey') ? parseInt(panelElement.getAttribute('data-minsizey'), 10) : 1,\n maxSizeX: panelElement.hasAttribute('data-maxsizex') ? parseInt(panelElement.getAttribute('data-maxsizex'), 10) : null,\n maxSizeY: panelElement.hasAttribute('data-maxsizey') ? parseInt(panelElement.getAttribute('data-maxsizey'), 10) : null,\n row: panelElement.hasAttribute('data-row') ? parseInt(panelElement.getAttribute('data-row'), 10) : 0,\n col: panelElement.hasAttribute('data-col') ? parseInt(panelElement.getAttribute('data-col'), 10) : 0,\n id: panelElement.getAttribute('id'),\n zIndex: panelElement.hasAttribute('data-zindex') ? parseInt(panelElement.getAttribute('data-zIndex'), 10) : 1000,\n header: panelElement.querySelector('.e-panel-header') && '.e-panel-header',\n content: panelElement.querySelector('.e-panel-content') && '.e-panel-content'\n };\n if (!model.id) {\n model.id = 'layout_' + this.panelID.toString();\n panelElement.setAttribute('id', model.id);\n this.panelID = this.panelID + 1;\n }\n if (isUndefined(model.enabled)) {\n model.enabled = true;\n }\n panelElement.style.zIndex = '' + model.zIndex;\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', model, true);\n this.panels.push(panelProp);\n };\n DashboardLayout.prototype.resizeEvents = function () {\n if (this.allowResizing) {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(panelElements[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(panelElements[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n };\n DashboardLayout.prototype.bindEvents = function () {\n this.refreshListener = this.refresh.bind(this);\n // eslint-disable-next-line\n EventHandler.add(window, 'resize', this.refreshListener);\n this.resizeEvents();\n };\n DashboardLayout.prototype.downResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.pageX;\n this.lastMouseY = e.pageY;\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, moveEventName, this.moveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, upEventName, this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.downHandler = function (e) {\n this.resizeCalled = false;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var el = closest((e.currentTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resizeStart', args);\n this.downTarget = e.currentTarget;\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n addClass([this.element], [preventSelect]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.elementX = parseFloat(el.style.left);\n this.elementY = parseFloat(el.style.top);\n this.elementWidth = el.offsetWidth;\n this.elementHeight = el.offsetHeight;\n this.originalWidth = this.getCellInstance(el.id).sizeX;\n this.originalHeight = this.getCellInstance(el.id).sizeY;\n this.previousRow = this.getCellInstance(el.id).row;\n };\n DashboardLayout.prototype.touchDownResizeHandler = function (e) {\n this.downHandler(e);\n this.lastMouseX = e.changedTouches[0].pageX;\n this.lastMouseY = e.changedTouches[0].pageY;\n if (!this.isMouseMoveBound) {\n EventHandler.add(document, 'touchmove', this.touchMoveResizeHandler, this);\n this.isMouseMoveBound = true;\n }\n if (!this.isMouseUpBound) {\n EventHandler.add(document, 'touchend', this.upResizeHandler, this);\n this.isMouseUpBound = true;\n }\n };\n DashboardLayout.prototype.getCellSize = function () {\n return [this.cellSize[0], this.cellSize[1]];\n };\n DashboardLayout.prototype.updateMaxTopLeft = function (e) {\n this.moveTarget = this.downTarget;\n var el = closest((this.moveTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n this.trigger('resize', args);\n };\n DashboardLayout.prototype.updateResizeElement = function (el) {\n this.maxLeft = this.element.offsetWidth - 1;\n this.maxTop = this.cellSize[1] * this.maxRows - 1;\n removeClass([el], 'e-panel-transition');\n addClass([el], [dragging]);\n var handleArray = [east, west, north, south, southEast, northEast, northWest, southWest];\n for (var i = 0; i < this.moveTarget.classList.length; i++) {\n if (handleArray.indexOf(this.moveTarget.classList[i]) !== -1) {\n this.handleClass = (this.moveTarget.classList[i]);\n }\n }\n };\n DashboardLayout.prototype.moveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.pageX || this.lastMouseY === e.pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n this.mOffX = this.mOffY = 0;\n this.lastMouseY = this.mouseY;\n this.lastMouseX = this.mouseX;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n DashboardLayout.prototype.touchMoveResizeHandler = function (e) {\n this.updateMaxTopLeft(e);\n var el = closest((this.moveTarget), '.e-panel');\n if (this.lastMouseX === e.changedTouches[0].pageX || this.lastMouseY === e.changedTouches[0].pageY) {\n return;\n }\n this.updateResizeElement(el);\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.mouseX = e.changedTouches[0].pageX;\n this.mouseY = e.changedTouches[0].pageY;\n var diffX = this.mouseX - this.lastMouseX + this.mOffX;\n var diffY = this.mouseY - this.lastMouseY + this.mOffY;\n this.mOffX = this.mOffY = 0;\n this.lastMouseX = this.mouseX;\n this.lastMouseY = this.mouseY;\n this.resizingPanel(el, panelModel, diffX, diffY);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.resizingPanel = function (el, panelModel, currentX, currentY) {\n var oldSizeX = this.getCellInstance(el.id).sizeX;\n var oldSizeY = this.getCellInstance(el.id).sizeY;\n var dY = currentY;\n var dX = currentX;\n if (this.handleClass.indexOf('north') >= 0) {\n if (this.elementHeight - dY < this.getMinHeight(panelModel)) {\n currentY = this.elementHeight - this.getMinHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight - dY > this.getMaxHeight(panelModel)) {\n currentY = this.elementHeight - this.getMaxHeight(panelModel);\n this.mOffY = dY - currentY;\n }\n else if (this.elementY + dY < this.minTop) {\n currentY = this.minTop - this.elementY;\n this.mOffY = dY - currentY;\n }\n this.elementY += currentY;\n this.elementHeight -= currentY;\n }\n if (this.handleClass.indexOf('south') >= 0) {\n if (this.elementHeight + dY < this.getMinHeight(panelModel)) {\n currentY = this.getMinHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n else if (panelModel.maxSizeY && this.elementHeight + dY > this.getMaxHeight(panelModel)) {\n currentY = this.getMaxHeight(panelModel) - this.elementHeight;\n this.mOffY = dY - currentY;\n }\n this.elementHeight += currentY;\n }\n if (this.handleClass.indexOf('west') >= 0) {\n if (this.elementWidth - dX < this.getMinWidth(panelModel)) {\n currentX = this.elementWidth - this.getMinWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth - dX > this.getMaxWidth(panelModel)) {\n currentX = this.elementWidth - this.getMaxWidth(panelModel);\n this.mOffX = dX - currentX;\n }\n else if (this.elementX + dX < this.minLeft) {\n currentX = this.minLeft - this.elementX;\n this.mOffX = dX - currentX;\n }\n this.elementX += currentX;\n this.elementWidth -= currentX;\n }\n if (this.handleClass.indexOf('east') >= 0) {\n if (this.elementWidth + dX < this.getMinWidth(panelModel)) {\n currentX = this.getMinWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n else if (panelModel.maxSizeX && this.elementWidth + dX > this.getMaxWidth(panelModel)) {\n currentX = this.getMaxWidth(panelModel) - this.elementWidth;\n this.mOffX = dX - currentX;\n }\n var initialWidth = this.elementWidth;\n this.elementWidth += currentX;\n var newSizeX = this.pixelsToColumns(this.elementWidth - (panelModel.sizeX) * this.cellSpacing[1], true);\n if (this.columns < panelModel.col + newSizeX) {\n this.elementWidth = initialWidth;\n }\n }\n el.style.top = this.elementY + 'px';\n el.style.left = this.elementX + 'px';\n el.style.width = this.elementWidth + 'px';\n el.style.height = this.elementHeight + 'px';\n var item = this.getResizeRowColumn(panelModel);\n if (item.col + item.sizeX > this.columns) {\n this.panelPropertyChange(item, { sizeX: item.sizeX - 1 });\n }\n this.shadowEle.style.top = ((item.row * this.getCellSize()[1] + (item.row * this.cellSpacing[1]))) + 'px';\n this.shadowEle.style.left = ((item.col * this.getCellSize()[0]) + ((item.col) * this.cellSpacing[0])) + 'px';\n this.shadowEle.style.height = ((item.sizeY * (this.getCellSize()[1] + (this.cellSpacing[1])))) + 'px';\n this.shadowEle.style.width = ((item.sizeX * (this.getCellSize()[0] + (this.cellSpacing[0])))) + 'px';\n if (oldSizeX !== item.sizeX || oldSizeY !== item.sizeY) {\n oldSizeX = item.sizeX;\n oldSizeY = item.sizeY;\n var model = this.getCellInstance(el.id);\n var value = {\n attributes: {\n row: model.row.toString(),\n col: model.col.toString(),\n sizeX: model.sizeX.toString(),\n sizeY: model.sizeY.toString()\n }\n };\n this.setAttributes(value, el);\n this.mainElement = el;\n this.updatePanelLayout(el, this.getCellInstance(el.id));\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n };\n DashboardLayout.prototype.upResizeHandler = function (e) {\n if (isNullOrUndefined(this.downTarget)) {\n return;\n }\n this.upTarget = this.downTarget;\n var el = closest((this.upTarget), '.e-panel');\n var args = { event: e, element: el, isInteracted: true };\n if (el) {\n addClass([el], 'e-panel-transition');\n var moveEventName = (Browser.info.name === 'msie') ? 'mousemove pointermove' : 'mousemove';\n var upEventName = (Browser.info.name === 'msie') ? 'mouseup pointerup' : 'mouseup';\n EventHandler.remove(document, moveEventName, this.moveResizeHandler);\n EventHandler.remove(document, upEventName, this.upResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(document, 'touchmove', this.touchMoveResizeHandler);\n EventHandler.remove(document, 'touchend', this.upResizeHandler);\n }\n this.isMouseUpBound = false;\n this.isMouseMoveBound = false;\n if (this.shadowEle) {\n detach(this.shadowEle);\n }\n this.shadowEle = null;\n var panelModel = this.getCellInstance(el.getAttribute('id'));\n this.setPanelPosition(el, panelModel.row, panelModel.col);\n this.setHeightAndWidth(el, panelModel);\n }\n removeClass([el], [dragging]);\n this.trigger('resizeStop', args);\n this.resizeCalled = false;\n this.lastMouseX = this.lastMouseY = undefined;\n this.mOffX = this.mOffY = 0;\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(true);\n };\n DashboardLayout.prototype.getResizeRowColumn = function (item) {\n var isChanged = false;\n var col = item.col;\n if (['e-west', 'e-south-west'].indexOf(this.handleClass) !== -1) {\n col = this.pixelsToColumns(this.elementX, false);\n }\n var row = item.row;\n if (['e-north'].indexOf(this.handleClass) !== -1) {\n row = this.pixelsToRows(this.elementY, false);\n if (this.previousRow !== row) {\n this.previousRow = row;\n isChanged = true;\n }\n }\n var sizeX = item.sizeX;\n if (['e-north', 'e-south'].indexOf(this.handleClass) === -1) {\n sizeX = this.pixelsToColumns(this.elementWidth - (sizeX) * this.cellSpacing[1], true);\n }\n var sizeY = item.sizeY;\n if (['e-east', 'e-west'].indexOf(this.handleClass) === -1) {\n if (this.handleClass === 'e-north' ? isChanged : true) {\n sizeY = this.pixelsToRows(this.elementHeight - (sizeY) * this.cellSpacing[0], true);\n }\n }\n if (item.col + sizeX > this.columns) {\n item.sizeX = sizeX - 1;\n }\n var canOccupy = row > -1 && col > -1 && sizeX + col <= this.maxCol() && sizeY + row <= this.maxRow();\n if (canOccupy && (this.collisions(row, col, sizeX, sizeY, this.getPanelBase(item.id)).length === 0)\n || this.allowPushing !== false) {\n this.panelPropertyChange(item, { row: row, col: col, sizeX: sizeX, sizeY: sizeY });\n }\n return item;\n };\n DashboardLayout.prototype.pixelsToColumns = function (pixels, isCeil) {\n var curColWidth = this.cellSize[0];\n if (isCeil) {\n return Math.ceil(pixels / curColWidth);\n }\n else {\n return Math.floor(pixels / curColWidth);\n }\n };\n DashboardLayout.prototype.pixelsToRows = function (pixels, isCeil) {\n if (isCeil) {\n return Math.round(pixels / this.cellSize[1]);\n }\n else {\n return Math.round(pixels / (this.cellSize[1] + this.cellSpacing[0]));\n }\n };\n DashboardLayout.prototype.getMinWidth = function (item) {\n return (((item.minSizeX) * this.getCellSize()[0]) + (item.minSizeX - 1) * this.cellSpacing[0]);\n };\n DashboardLayout.prototype.getMaxWidth = function (item) {\n return (item.maxSizeX) * this.getCellSize()[0];\n };\n DashboardLayout.prototype.getMinHeight = function (item) {\n return (((item.minSizeY) * this.getCellSize()[1]) + (item.minSizeY - 1) * this.cellSpacing[1]);\n };\n DashboardLayout.prototype.getMaxHeight = function (item) {\n return (item.maxSizeY) * this.getCellSize()[1];\n };\n DashboardLayout.prototype.sortedPanel = function () {\n this.sortedArray = [];\n for (var i = 0, l = this.panelCollection.length; i < l; ++i) {\n this.sortItem(this.panelCollection[i]);\n }\n };\n DashboardLayout.prototype.moveItemsUpwards = function () {\n if (this.allowFloating === false) {\n return;\n }\n for (var rowIndex = 0, l = this.sortedArray.length; rowIndex < l; ++rowIndex) {\n var columns = this.sortedArray[rowIndex];\n if (!columns) {\n continue;\n }\n for (var colIndex = 0, len = columns.length; colIndex < len; ++colIndex) {\n var item = columns[colIndex];\n if (item) {\n this.moveItemUpwards(item);\n }\n }\n }\n this.updateGridLines();\n };\n DashboardLayout.prototype.moveItemUpwards = function (item) {\n if (this.allowFloating === false || item === this.mainElement) {\n return;\n }\n var colIndex = this.getCellInstance(item.id).col;\n var sizeY = parseInt(item.getAttribute('data-sizeY'), 10);\n var sizeX = parseInt(item.getAttribute('data-sizeX'), 10);\n var availableRow = null;\n var availableColumn = null;\n var rowIndex = parseInt(item.getAttribute('data-row'), 10) - 1;\n while (rowIndex > -1) {\n var items = this.collisions(rowIndex, colIndex, sizeX, sizeY, item);\n if (items.length !== 0) {\n break;\n }\n availableRow = rowIndex;\n availableColumn = colIndex;\n --rowIndex;\n }\n if (availableRow !== null) {\n this.sortItem(item, availableRow, availableColumn);\n }\n };\n DashboardLayout.prototype.sortItem = function (item, rowValue, columnValue) {\n this.overlapElement = [];\n var column = parseInt(item.getAttribute('data-col'), 10);\n var row = parseInt(item.getAttribute('data-row'), 10);\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (item !== undefined && rowValue !== undefined && columnValue !== undefined) {\n if (this.oldRowCol[item.id] !== undefined && this.oldRowCol[item.id].row !== null &&\n typeof this.oldRowCol[item.id].col !== 'undefined') {\n {\n var oldRow = this.sortedArray[this.oldRowCol[item.id].row];\n if (this.oldRowCol[item.id] && oldRow[this.oldRowCol[item.id].col] === item) {\n delete oldRow[this.oldRowCol[item.id].col];\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n }\n this.oldRowCol[item.id].row = rowValue;\n this.oldRowCol[item.id].row = columnValue;\n if (!this.sortedArray[row]) {\n this.sortedArray[row] = [];\n }\n this.sortedArray[row][column] = item;\n if (this.allItems.indexOf(item) === -1) {\n this.allItems.push(item);\n }\n this.panelPropertyChange(this.getCellInstance(item.id), { row: rowValue, col: columnValue });\n var panelModel = this.getCellInstance(item.id);\n this.setAttributes({ value: { col: panelModel.col.toString(), row: panelModel.row.toString() } }, item);\n this.updateLayout(item, this.getCellInstance(item.id));\n }\n };\n DashboardLayout.prototype.updateLayout = function (element, panelModel) {\n this.setPanelPosition(element, panelModel.row, panelModel.col);\n this.setHeightAndWidth(element, panelModel);\n this.updateRowHeight();\n this.sortedPanel();\n };\n DashboardLayout.prototype.refresh = function () {\n this.panelsSizeY = 0;\n this.updateDragArea();\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n else {\n if (this.element.classList.contains(responsive)) {\n removeClass([this.element], [responsive]);\n var internalPanels = this.element.querySelectorAll(((this.element.id) ? '#' + this.element.id + ' > ' : '') + '.e-panel');\n for (var i = 0; i < internalPanels.length; i++) {\n var ele = internalPanels[i];\n var cellInstance = this.getCellInstance(ele.id);\n var row = parseInt(ele.getAttribute('data-row'), 10);\n var col = parseInt(ele.getAttribute('data-col'), 10);\n this.panelPropertyChange(cellInstance, { row: row, col: col });\n this.setHeightAndWidth(ele, this.getCellInstance(ele.id));\n this.setPanelPosition(ele, row, col);\n this.updateRowHeight();\n }\n }\n this.panelResponsiveUpdate();\n this.updateGridLines();\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n this.checkDragging(this.dragCollection);\n };\n DashboardLayout.prototype.updateGridLines = function () {\n if (this.element.querySelector('.e-dashboard-gridline-table')) {\n if (this.table) {\n detach(this.table);\n }\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkDragging = function (dragCollection) {\n if (this.checkMediaQuery() || !this.allowDragging) {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n }\n else {\n for (var i = 0; i < dragCollection.length; i++) {\n dragCollection[i].destroy();\n }\n this.enableDraggingContent(this.panelCollection);\n }\n };\n DashboardLayout.prototype.sortPanels = function () {\n var model = [];\n var _loop_1 = function (row) {\n var _loop_2 = function (col) {\n this_1.panels.filter(function (panel) {\n if (panel.row === row && panel.col === col) {\n model.push(panel);\n }\n });\n };\n for (var col = 0; col < this_1.columns; col++) {\n _loop_2(col);\n }\n };\n var this_1 = this;\n for (var row = 0; row <= this.rows; row++) {\n _loop_1(row);\n }\n return model;\n };\n DashboardLayout.prototype.checkMediaQuerySizing = function () {\n addClass([this.element], [responsive]);\n var updatedPanel;\n if (this.isPanelRemoved && this.panels) {\n updatedPanel = this.panels;\n }\n else {\n updatedPanel = this.sortPanels();\n }\n this.updatedRows = updatedPanel.length;\n for (var i = 0; i < updatedPanel.length; i++) {\n var panelElement = document.getElementById(updatedPanel[i].id);\n // eslint-disable-next-line\n var updatedHeight = void 0;\n if (panelElement) {\n setStyleAttribute(panelElement, { 'width': '100%' });\n panelElement.style.height = ' ' + ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) + 'px';\n if (updatedPanel[i].sizeY > 1) {\n updatedHeight = ((this.element.parentElement\n && this.element.parentElement.offsetWidth / this.cellAspectRatio) * updatedPanel[i].sizeY) +\n // eslint-disable-next-line radix\n parseInt((Math.round(updatedPanel[i].sizeY / 2) * this.cellSpacing[1]).toString(), 0);\n panelElement.style.height = '' + updatedHeight + 'px';\n }\n this.resizeHeight = true;\n this.panelPropertyChange(updatedPanel[i], { row: i, col: 0 });\n this.setPanelPosition(panelElement, updatedPanel[i].row, updatedPanel[i].col);\n this.panelsSizeY = this.panelsSizeY + updatedPanel[i].sizeY;\n this.setClasses(this.panelCollection);\n this.checkDragging(this.dragCollection);\n this.removeResizeClasses(this.panelCollection);\n }\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.panelResponsiveUpdate = function () {\n this.element.classList.add('e-responsive');\n this.calculateCellSize();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.setPanelPosition(document.getElementById(this.panels[i].id), this.panels[i].row, this.panels[i].col);\n }\n this.updateRowHeight();\n };\n DashboardLayout.prototype.updateRowHeight = function () {\n this.getRowColumn();\n this.setHeightWidth();\n };\n DashboardLayout.prototype.setHeightWidth = function () {\n var heightValue;\n var widthValue;\n if (this.checkMediaQuery()) {\n var entirePanelsY = 0;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].sizeY) {\n entirePanelsY += this.panels[i].sizeY;\n }\n }\n heightValue = ((entirePanelsY) *\n (this.element.parentElement && ((this.element.parentElement.offsetWidth)) / this.cellAspectRatio) +\n (entirePanelsY - 1) * this.cellSpacing[1]) + 'px';\n }\n else {\n heightValue = ((this.maxRow()) *\n (this.cellSize[0] / this.cellAspectRatio) + (this.maxRow() - 1) * this.cellSpacing[1]) + 'px';\n }\n setStyleAttribute(this.element, { 'height': heightValue });\n // eslint-disable-next-line prefer-const\n widthValue = window.getComputedStyle(this.element).width;\n setStyleAttribute(this.element, { 'width': widthValue });\n };\n DashboardLayout.prototype.setHeightAndWidth = function (panelElement, panelModel) {\n setStyleAttribute(panelElement, { 'height': formatUnit(this.setXYDimensions(panelModel)[0]) });\n setStyleAttribute(panelElement, { 'width': formatUnit(this.setXYDimensions(panelModel)[1]) });\n };\n DashboardLayout.prototype.renderCell = function (panel, isStringTemplate, index) {\n var cellElement;\n this.dimensions = this.setXYDimensions(panel);\n if (isUndefined(panel.enabled)) {\n panel.enabled = true;\n }\n if (this.contentTemplateChild.length > 0 && !isNullOrUndefined(index)) {\n cellElement = this.contentTemplateChild[index];\n if (panel.cssClass) {\n addClass([cellElement], [panel.cssClass]);\n }\n if (panel.id) {\n cellElement.setAttribute('id', panel.id);\n }\n }\n else {\n cellElement = this.createPanelElement(panel.cssClass ? panel.cssClass.split(' ') : null, panel.id);\n }\n cellElement.style.zIndex = '' + panel.zIndex;\n this.element.appendChild(cellElement);\n this.renderReactTemplates();\n var dashBoardCell = this.renderPanels(cellElement, panel, panel.id, isStringTemplate);\n this.panelCollection.push(dashBoardCell);\n this.setXYAttributes(cellElement, panel);\n this.setHeightAndWidth(cellElement, panel);\n return cellElement;\n };\n DashboardLayout.prototype.setPanelPosition = function (cellElement, row, col) {\n if (!cellElement) {\n return;\n }\n if (this.checkMediaQuery()) {\n this.calculateCellSize();\n }\n var heightValue = this.getCellSize()[1];\n var widthValue = this.getCellSize()[0];\n var left = col === 0 ? 0 : (((col) * ((widthValue) + this.cellSpacing[0])));\n var top = row === 0 ? 0 : (((row) * ((heightValue) + this.cellSpacing[1])));\n if (this.checkMediaQuery()) {\n top = row === 0 ? 0 : ((this.panelsSizeY) * ((heightValue) + this.cellSpacing[1]));\n }\n setStyleAttribute(cellElement, { 'left': left + 'px', 'top': top + 'px' });\n };\n DashboardLayout.prototype.getRowColumn = function () {\n this.rows = null;\n if (this.element.querySelectorAll('.e-panel').length > 0 && !this.updatedRows) {\n var panelElements = this.element.querySelectorAll('.e-panel');\n for (var i = 0; i < panelElements.length; i++) {\n var panelElement = panelElements[i];\n var rowValue = parseInt(panelElement.getAttribute('data-row'), 10);\n var xValue = parseInt(panelElement.getAttribute('data-sizeY'), 10);\n this.rows = Math.max(this.rows, (rowValue + xValue));\n }\n }\n else {\n if (this.updatedRows) {\n this.rows = this.updatedRows;\n this.updatedRows = null;\n }\n for (var i = 0; i < this.panels.length; i++) {\n this.rows = Math.max(this.rows, this.panels[i].row);\n }\n }\n };\n DashboardLayout.prototype.setMinMaxValues = function (panel) {\n if (!panel.sizeX || panel.sizeX < panel.minSizeX) {\n this.panelPropertyChange(panel, { sizeX: panel.minSizeX });\n }\n else if ((panel.maxSizeX && panel.sizeX > panel.maxSizeX)) {\n this.panelPropertyChange(panel, { sizeX: panel.maxSizeX });\n }\n else if (panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: this.columns });\n }\n else {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX });\n }\n if (!panel.sizeY || panel.sizeY < panel.minSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.minSizeY });\n }\n else if (panel.maxSizeY && panel.sizeY > panel.maxSizeY) {\n this.panelPropertyChange(panel, { sizeY: panel.maxSizeY });\n }\n else {\n this.panelPropertyChange(panel, { sizeY: panel.sizeY });\n }\n };\n DashboardLayout.prototype.checkMinMaxValues = function (panel) {\n if (panel.col + panel.sizeX > this.columns) {\n this.panelPropertyChange(panel, { sizeX: panel.sizeX + (this.columns - (panel.col + panel.sizeX)) });\n }\n };\n DashboardLayout.prototype.panelPropertyChange = function (panel, value) {\n // eslint-disable-next-line\n panel.setProperties(value, true);\n };\n DashboardLayout.prototype.renderDashBoardCells = function (cells) {\n if (this.element.querySelectorAll('.e-panel').length > 0 || this.panels.length > 0) {\n for (var j = 0; j < cells.length; j++) {\n this.gridPanelCollection.push(cells[j]);\n this.setMinMaxValues(cells[j]);\n if (this.maxColumnValue < cells[j].col || this.maxColumnValue < (cells[j].col + cells[j].sizeX)) {\n this.panelPropertyChange(cells[j], { col: this.maxColumnValue - cells[j].sizeX });\n }\n var cell = this.renderCell(cells[j], false, j);\n if (this.enableRtl) {\n addClass([cell], 'e-rtl');\n }\n this.element.appendChild(cell);\n this.renderReactTemplates();\n if (this.checkMediaQuery() && j === cells.length - 1) {\n this.checkMediaQuerySizing();\n }\n else {\n this.setPanelPosition(cell, cells[j].row, cells[j].col);\n this.mainElement = cell;\n this.updatePanelLayout(cell, cells[j]);\n this.mainElement = null;\n }\n }\n }\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.collisions = function (row, col, sizeX, sizeY, ignore) {\n var items = [];\n if (!sizeX || !sizeY) {\n sizeX = sizeY = 1;\n }\n if (ignore && !(ignore instanceof Array)) {\n ignore = [ignore];\n }\n var item;\n for (var h = 0; h < sizeY; ++h) {\n for (var w = 0; w < sizeX; ++w) {\n item = this.getPanel(row + h, col + w, ignore);\n if (item && (!ignore || ignore.indexOf(document.getElementById(item.id)) === -1) &&\n items.indexOf(document.getElementById(item.id)) === -1) {\n items.push(document.getElementById(item.id));\n }\n }\n }\n return items;\n };\n DashboardLayout.prototype.rightWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var columns = [];\n var spacedColumns = [];\n rowElements.forEach(function (element) {\n var columnValue = parseInt(element.getAttribute('data-col'), 10);\n var sizeXValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col < _this.columns && columnValue >= col) {\n if (sizeXValue > 1) {\n for (var i = columnValue; i < columnValue + sizeXValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(columnValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var i = col + 1; i <= this.columns - 1; i++) {\n if (columns.indexOf(i) === -1 && i !== col) {\n if (spacedColumns.indexOf(i) === -1) {\n spacedColumns.push(i);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue > col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col > parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, previous) { return next - previous; });\n return spacedColumns;\n };\n DashboardLayout.prototype.getOccupiedColumns = function (element) {\n var occupiedItems = [];\n var sizeX = parseInt(element.getAttribute('data-sizeX'), 10);\n var col = parseInt(element.getAttribute('data-col'), 10);\n for (var i = col; (i < col + sizeX && i <= this.columns); i++) {\n occupiedItems.push(i);\n }\n return occupiedItems;\n };\n DashboardLayout.prototype.leftWardsSpaceChecking = function (rowElements, col, ele) {\n var _this = this;\n var spacedColumns = [];\n var columns = [];\n rowElements.forEach(function (element) {\n var colValue = parseInt(element.getAttribute('data-col'), 10);\n var xValue = parseInt(element.getAttribute('data-sizeX'), 10);\n if (col <= _this.columns && colValue <= col) {\n if (xValue > 1) {\n for (var i = colValue; i < colValue + xValue; i++) {\n columns.push(i);\n }\n }\n else {\n columns.push(colValue);\n }\n }\n });\n if (columns.length > 0) {\n for (var j = 0; j <= col; j++) {\n if (columns.indexOf(j) === -1 && j !== col) {\n if (spacedColumns.indexOf(j) === -1) {\n spacedColumns.push(j);\n }\n }\n }\n }\n var occupiedValues = this.getOccupiedColumns(ele);\n occupiedValues.forEach(function (colValue) {\n if (colValue < col && spacedColumns.indexOf(colValue) !== -1) {\n spacedColumns.splice(spacedColumns.indexOf(colValue), 1);\n }\n });\n var eleOccupiedValues = this.getOccupiedColumns(this.checkingElement);\n eleOccupiedValues.forEach(function (col) {\n if (col < parseInt(ele.getAttribute('data-col'), 10) && occupiedValues.indexOf(col) === -1 &&\n spacedColumns.indexOf(col) === -1) {\n spacedColumns.push(col);\n }\n });\n spacedColumns = spacedColumns.sort(function (next, prev) { return next - prev; });\n spacedColumns = spacedColumns.reverse();\n return spacedColumns;\n };\n DashboardLayout.prototype.adjustmentAvailable = function (row, col, sizeY, sizeX, ele) {\n this.leftAdjustable = undefined;\n this.rightAdjustable = undefined;\n var isAdjustable = false;\n var rightSpacing;\n var rowElement = [];\n this.topAdjustable = undefined;\n var eleSizeX = parseInt(ele.getAttribute('data-sizeX'), 10);\n var eleCol = parseInt(ele.getAttribute('data-col'), 10);\n rowElement = this.getRowElements(this.collisions(row, 0, this.columns, sizeY, []));\n if (rowElement.indexOf(ele) === -1) {\n rowElement.push(ele);\n }\n var leftSpacing = this.leftWardsSpaceChecking(rowElement, col, ele);\n if (leftSpacing.length > 0) {\n this.leftAdjustable = this.isLeftAdjustable(leftSpacing, ele, row, col, sizeX, sizeY);\n if (this.spacedColumnValue !== eleCol - this.getCellInstance(this.checkingElement.id).sizeX) {\n this.leftAdjustable = false;\n }\n if (this.leftAdjustable) {\n this.rightAdjustable = false;\n }\n else {\n this.leftAdjustable = false;\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (!this.rightAdjustable) {\n this.rightAdjustable = false;\n }\n }\n }\n else {\n rightSpacing = this.rightWardsSpaceChecking(rowElement, col, ele);\n this.rightAdjustable = rightSpacing.length > 0 ? this.isRightAdjustable(rightSpacing, ele, row, col, sizeX, sizeY) : false;\n if (this.spacedColumnValue !== eleSizeX + eleCol) {\n this.rightAdjustable = false;\n }\n if (this.rightAdjustable) {\n this.leftAdjustable = false;\n }\n }\n if (!this.rightAdjustable && !this.leftAdjustable && row > 0) {\n var endRow = this.getCellInstance(ele.id).row;\n var topCheck = false;\n if (this.startRow !== endRow) {\n topCheck = true;\n }\n for (var rowValue = row; rowValue >= 0; rowValue--) {\n var element = (this.getCellInstance(ele.id).sizeY > 1 && topCheck) ? this.checkingElement : ele;\n if ((rowValue !== endRow) && (rowValue === endRow - sizeY) &&\n this.collisions(rowValue, col, sizeX, sizeY, element).length === 0) {\n topCheck = false;\n this.topAdjustable = true;\n this.spacedRowValue = isNullOrUndefined(this.spacedRowValue) ? rowValue : this.spacedRowValue;\n this.spacedColumnValue = col;\n }\n }\n }\n if (this.rightAdjustable || this.leftAdjustable || this.topAdjustable) {\n isAdjustable = true;\n if (isNullOrUndefined(this.spacedRowValue)) {\n this.spacedRowValue = row;\n }\n }\n return isAdjustable;\n };\n DashboardLayout.prototype.isXSpacingAvailable = function (spacing, sizeX) {\n var isSpaceAvailable = false;\n var subSpacingColumns = [];\n for (var i = 0; i < spacing.length; i++) {\n if (spacing[i + 1] - spacing[i] === 1 || spacing[i + 1] - spacing[i] === -1) {\n subSpacingColumns.push(spacing[i]);\n if (sizeX === 2) {\n subSpacingColumns.push(spacing[i + 1]);\n }\n if (i === spacing.length - 2) {\n subSpacingColumns.push(spacing[i + 1]);\n if (subSpacingColumns.length > sizeX) {\n subSpacingColumns.splice(-1);\n }\n }\n if (subSpacingColumns.length === sizeX) {\n isSpaceAvailable = true;\n this.spacedColumnValue = subSpacingColumns.sort(function (next, previous) { return next - previous; })[0];\n if (this.spacedColumnValue < 0) {\n this.spacedColumnValue = 1;\n }\n return isSpaceAvailable;\n }\n }\n else {\n subSpacingColumns = [];\n continue;\n }\n }\n return isSpaceAvailable;\n };\n DashboardLayout.prototype.getRowElements = function (base) {\n var rowElements = [];\n for (var i = 0; i < base.length; i++) {\n rowElements.push(base[i]);\n }\n return rowElements;\n };\n DashboardLayout.prototype.isLeftAdjustable = function (spaces, ele, row, col, sizeX, sizeY) {\n var isLeftAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spaces.length > 0) {\n this.spacedColumnValue = spaces[0];\n isLeftAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isLeftAdjudtable = this.isXSpacingAvailable(spaces, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spaces.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spaces.length; i++) {\n var collisionValue = this.collisions(row, spaces[i], sizeX, sizeY, this.checkingElement);\n if (collisionValue.length === 0) {\n this.spacedColumnValue = spaces[i];\n isLeftAdjudtable = true;\n return isLeftAdjudtable;\n }\n else {\n isLeftAdjudtable = false;\n }\n }\n }\n }\n else {\n isLeftAdjudtable = this.replacable(spaces, sizeX, row, sizeY, ele);\n }\n }\n return isLeftAdjudtable;\n };\n DashboardLayout.prototype.isRightAdjustable = function (spacing, ele, row, col, sizeX, sizeY) {\n var isRightAdjudtable;\n if (sizeX === 1 && sizeY === 1 && spacing.length > 0) {\n this.spacedColumnValue = spacing[0];\n isRightAdjudtable = true;\n }\n else if (sizeX > 1 && sizeY === 1) {\n isRightAdjudtable = this.isXSpacingAvailable(spacing, sizeX);\n }\n else if (sizeY > 1) {\n if (sizeX === 1) {\n var xAdjust = void 0;\n if (spacing.length >= 1) {\n xAdjust = true;\n }\n if (xAdjust) {\n for (var i = 0; i < spacing.length; i++) {\n var collisionValue = this.collisions(row, spacing[i], sizeX, sizeY, this.checkingElement);\n for (var collision = 0; collision < collisionValue.length; collision++) {\n if (parseInt(ele.getAttribute('data-col'), 10) !== spacing[i]) {\n collisionValue.splice(collisionValue.indexOf(collisionValue[collision]), 1);\n }\n }\n if (collisionValue.length === 0) {\n isRightAdjudtable = true;\n this.spacedColumnValue = spacing[i];\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n }\n else {\n isRightAdjudtable = this.replacable(spacing, sizeX, row, sizeY, ele);\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.replacable = function (spacing, sizeX, row, sizeY, ele) {\n var isRightAdjudtable;\n var updatedCollision = [];\n for (var j = 0; j < spacing.length; j++) {\n var xAdjust = this.isXSpacingAvailable(spacing, sizeX);\n if (xAdjust) {\n var exclusions = [];\n exclusions.push(this.checkingElement);\n exclusions.push(ele);\n if (updatedCollision.length === 0) {\n isRightAdjudtable = true;\n // eslint-disable-next-line no-self-assign\n this.spacedColumnValue = this.spacedColumnValue;\n return isRightAdjudtable;\n }\n else {\n isRightAdjudtable = false;\n }\n }\n }\n return isRightAdjudtable;\n };\n DashboardLayout.prototype.sortCollisionItems = function (collisionItems) {\n var updatedCollision = [];\n var rowElements;\n var _loop_3 = function (row) {\n rowElements = [];\n collisionItems.forEach(function (element) {\n if (element && element.getAttribute('data-row') === row.toString()) {\n rowElements.push(element);\n }\n });\n var _loop_4 = function (column) {\n rowElements.forEach(function (item) {\n if (item && item.getAttribute('data-col') === column.toString()) {\n updatedCollision.push(item);\n }\n });\n };\n for (var column = this_2.columns - 1; column >= 0; column--) {\n _loop_4(column);\n }\n };\n var this_2 = this;\n for (var row = this.rows - 1; row >= 0; row--) {\n _loop_3(row);\n }\n return updatedCollision;\n };\n DashboardLayout.prototype.updatedModels = function (collisionItems, panelModel, ele) {\n var _this = this;\n var removeableElement = [];\n if (!this.mainElement) {\n this.sortedPanel();\n }\n collisionItems.forEach(function (element) {\n _this.checkingElement = element;\n var model = _this.getCellInstance(element.id);\n var adjust = !_this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, ele);\n if (model.sizeX > 1 && adjust) {\n for (var rowValue = model.row; rowValue < panelModel.row + panelModel.sizeY; rowValue++) {\n var collisions = _this.collisions(rowValue, model.col, model.sizeX, model.sizeY, element);\n collisions.forEach(function (item) {\n if (collisionItems.indexOf(item) >= 0 && removeableElement.indexOf(item) === -1) {\n removeableElement.push(item);\n }\n });\n }\n }\n });\n removeableElement.forEach(function (item) {\n if (removeableElement.indexOf(item) >= 0) {\n collisionItems.splice(collisionItems.indexOf(item), 1);\n }\n });\n return collisionItems;\n };\n DashboardLayout.prototype.resetLayout = function (model) {\n var collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n if (!this.mainElement || this.addPanelCalled || this.resizeCalled || this.movePanelCalled) {\n return collisions;\n }\n if (this.mainElement && this.oldRowCol !== this.cloneObject) {\n for (var i = 0; i < this.panels.length; i++) {\n var element = document.getElementById(this.panels[i].id);\n if (element === this.mainElement) {\n continue;\n }\n var rowValue = this.cloneObject[element.id].row;\n var colValue = this.cloneObject[element.id].col;\n this.setPanelPosition(element, rowValue, colValue);\n this.panelPropertyChange(this.getCellInstance(element.id), { row: rowValue, col: colValue });\n this.setAttributes({ value: { col: colValue.toString(), row: rowValue.toString() } }, element);\n this.updateOldRowColumn();\n }\n }\n this.sortedArray = this.cloneArray;\n collisions = this.collisions(model.row, model.col, model.sizeX, model.sizeY, this.mainElement);\n this.sortedPanel();\n this.updateOldRowColumn();\n if (this.checkCollision && this.checkCollision.length > 0 && collisions.indexOf(this.checkCollision[0]) === -1 &&\n this.cloneObject[this.checkCollision[0].id].row === model.row) {\n collisions.push(this.checkCollision[0]);\n }\n return collisions;\n };\n DashboardLayout.prototype.swapAvailability = function (collisions, element) {\n var available = true;\n var eleModel = this.getCellInstance(element.id);\n for (var count = 0; count < collisions.length; count++) {\n var collideModel = this.getCellInstance(collisions[count].id);\n for (var i = 1; i < eleModel.sizeY; i++) {\n var excludeEle = [];\n excludeEle.push(element);\n excludeEle.push(collisions[count]);\n var collision = this.collisions(eleModel.row + i, collideModel.col, collideModel.sizeX, collideModel.sizeY, excludeEle);\n if (collision.length > 0) {\n available = false;\n return false;\n }\n else {\n continue;\n }\n }\n }\n return available;\n };\n DashboardLayout.prototype.checkForSwapping = function (collisions, element) {\n if (!this.mainElement || collisions.length === 0) {\n return false;\n }\n var direction;\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n if (!this.swapAvailability(collisions, element)) {\n return false;\n }\n var isSwappable = false;\n for (var count1 = 0; count1 < collisions.length; count1++) {\n if (collisions.length >= 1 && this.cloneObject[this.mainElement.id] && this.cloneObject[this.mainElement.id].row === this.oldRowCol[this.mainElement.id].row) {\n return false;\n }\n }\n var updatedRow = direction === 0 ?\n this.getCellInstance(this.mainElement.id).row + this.getCellInstance(this.mainElement.id).sizeY\n : this.startRow;\n for (var count = 0; count < collisions.length; count++) {\n var collideInstance = this.getCellInstance(collisions[count].id);\n var elementinstance = this.getCellInstance(element.id);\n var ignore = [];\n if (collideInstance.sizeY === 1 && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n else if (collideInstance.sizeY > 1 && ignore.indexOf(collisions[count]) === -1) {\n if (direction === 1 && elementinstance.row === (this.cloneObject[collideInstance.id].row + collideInstance.sizeY - 1)) {\n ignore.push(collisions[count]);\n }\n else if (direction === 0 && elementinstance.row === (this.cloneObject[collideInstance.id].row)) {\n ignore.push(collisions[count]);\n }\n else {\n return false;\n }\n }\n if (collideInstance.sizeY <= elementinstance.sizeY && ignore.indexOf(collisions[count]) === -1) {\n ignore.push(collisions[count]);\n }\n ignore.push(this.mainElement);\n var swapCollision = this.collisions(updatedRow, collideInstance.col, collideInstance.sizeX, collideInstance.sizeY, ignore);\n if (swapCollision.length > 0) {\n isSwappable = false;\n return isSwappable;\n }\n else {\n if (count === collisions.length - 1) {\n isSwappable = true;\n }\n continue;\n }\n }\n return isSwappable;\n };\n DashboardLayout.prototype.swapItems = function (collisions, element, panelModel) {\n var _this = this;\n var direction;\n var swappedElements = [];\n swappedElements.push(element);\n var eleSwapRow = parseInt(collisions[0].getAttribute('data-row'), 10);\n if (this.startRow < eleSwapRow) {\n direction = 1;\n }\n else if (this.startRow > eleSwapRow) {\n direction = 0;\n }\n var collisionItemsRow = direction === 0 ? eleSwapRow + panelModel.sizeY : this.startRow;\n if (!this.movePanelCalled) {\n var collisionInstance = this.getCellInstance(collisions[0].id);\n this.panelPropertyChange(panelModel, { row: direction === 0 ? eleSwapRow : collisionItemsRow + collisionInstance.sizeY });\n }\n for (var count = 0; count < collisions.length; count++) {\n swappedElements.push(collisions[count]);\n this.setPanelPosition(collisions[count], collisionItemsRow, (this.getCellInstance(collisions[count].id)).col);\n this.panelPropertyChange(this.getCellInstance(collisions[count].id), { row: collisionItemsRow });\n collisions[count].setAttribute('data-row', collisionItemsRow.toString());\n }\n element.setAttribute('data-row', panelModel.row.toString());\n this.setPanelPosition(this.shadowEle, panelModel.row, panelModel.col);\n for (var i = 0; i < this.panels.length; i++) {\n this.oldRowCol[this.panels[i].id] = { row: this.panels[i].row, col: this.panels[i].col };\n }\n this.startRow = panelModel.row;\n this.updateOldRowColumn();\n swappedElements.forEach(function (item) {\n _this.cloneObject[item.id] = _this.oldRowCol[item.id];\n var itemModel = _this.getCellInstance(item.id);\n for (var i = 0; i < _this.sortedArray.length; i++) {\n if (!_this.sortedArray[i]) {\n continue;\n }\n for (var j = 0; j < _this.sortedArray[i].length; j++) {\n if (_this.sortedArray[i][j] === item) {\n _this.sortedArray[i][j] = undefined;\n }\n }\n }\n if (!_this.sortedArray[itemModel.row]) {\n _this.sortedArray[itemModel.row] = [];\n }\n _this.sortedArray[itemModel.row][itemModel.col] = item;\n _this.cloneArray = _this.sortedArray;\n });\n };\n DashboardLayout.prototype.updatePanelLayout = function (element, panelModel) {\n this.collisionChecker = {};\n var initialModel = [];\n var checkForAdjustment;\n var collisionModels = [];\n var swappingAvailable;\n if (this.mainElement && this.isRenderComplete) {\n initialModel = this.resetLayout(panelModel);\n }\n else {\n initialModel = this.collisions(panelModel.row, panelModel.col, panelModel.sizeX, panelModel.sizeY, element);\n }\n if (initialModel.length > 0) {\n initialModel = this.sortCollisionItems(initialModel);\n initialModel = this.updatedModels(initialModel, panelModel, element);\n swappingAvailable = !isNullOrUndefined(this.startRow) ? this.checkForSwapping(initialModel, element) : false;\n if (swappingAvailable) {\n this.swapItems(initialModel, element, panelModel);\n }\n else {\n for (var i = 0; i < initialModel.length; i++) {\n var model = this.getCellInstance(initialModel[i].id);\n this.checkingElement = initialModel[i];\n this.spacedRowValue = null;\n this.spacedColumnValue = null;\n checkForAdjustment = this.adjustmentAvailable(model.row, model.col, model.sizeY, model.sizeX, element);\n if (checkForAdjustment && !isNullOrUndefined(this.spacedColumnValue)) {\n this.setPanelPosition(initialModel[i], this.spacedRowValue, this.spacedColumnValue);\n this.oldRowCol[(initialModel[i].id)] = { row: this.spacedRowValue, col: this.spacedColumnValue };\n var value = {\n attributes: {\n row: this.spacedRowValue.toString(),\n col: this.spacedColumnValue.toString()\n }\n };\n this.setAttributes(value, initialModel[i]);\n this.panelPropertyChange(model, { col: this.spacedColumnValue, row: this.spacedRowValue });\n // updated the panel model array as inTopAdjustable case with floating enabled instead of dragging and extra row\n if (this.topAdjustable && this.allowFloating) {\n this.updatePanels();\n this.updateCloneArrayObject();\n }\n this.spacedRowValue = null;\n if (i < initialModel.length) {\n continue;\n }\n }\n else {\n collisionModels.push(initialModel[i]);\n }\n }\n }\n }\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_1 = this;\n collisionModels.forEach(function (item1) {\n if (proxy_1.overlapElement.indexOf(item1) === -1) {\n proxy_1.overlapElement.push(item1);\n }\n });\n if (this.overlapElement && this.overlapElement.indexOf(element) !== -1) {\n this.overlapElement.splice(this.overlapElement.indexOf(element), 1);\n }\n if (collisionModels.length > 0) {\n this.updateRowColumn(panelModel.row, this.overlapElement, element);\n this.checkForCompletePushing();\n }\n }\n if (!this.isSubValue) {\n this.sortedPanel();\n }\n this.updateRowHeight();\n this.updateGridLines();\n };\n DashboardLayout.prototype.checkForCompletePushing = function () {\n for (var i = 0; i < this.panels.length; i++) {\n if (this.collisionChecker[this.panels[i].id] && this.collisionChecker[this.panels[i].id] !== null) {\n this.overlapElement = [this.collisionChecker[this.panels[i].id].ele];\n var key = this.panels[i].id;\n this.updateRowColumn(this.collisionChecker[\"\" + key].row, this.overlapElement, this.collisionChecker[\"\" + key].srcEle);\n }\n }\n };\n DashboardLayout.prototype.updateCollisionChecked = function (item) {\n for (var count = 0; count < Object.keys(this.collisionChecker).length; count++) {\n this.collisionChecker[item.id] = null;\n }\n };\n DashboardLayout.prototype.updateRowColumn = function (row, ele, srcEle) {\n if (!srcEle) {\n return;\n }\n var eleSizeY = parseInt(srcEle.getAttribute('data-sizeY'), 10);\n var eleRow = parseInt(srcEle.getAttribute('data-row'), 10);\n this.overlapElementClone = this.overlapElement && !this.shouldRestrict ? this.overlapElement : this.overlapElement;\n for (var i = 0; i < this.overlapElementClone.length; i++) {\n if (this.overlapElementClone.length === 0) {\n return;\n }\n for (var i_1 = 0; i_1 < this.overlapElementClone.length; i_1++) {\n this.collisionChecker[this.overlapElementClone[i_1].id] = {\n ele: this.overlapElementClone[i_1],\n row: row,\n srcEle: srcEle\n };\n }\n var updatedRow = eleRow + eleSizeY;\n var collisionY = parseInt(this.overlapElementClone[i].getAttribute('data-sizeY'), 10);\n var collisionCol = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n var collisionX = parseInt(this.overlapElementClone[i].getAttribute('data-sizeX'), 10);\n var colValue = void 0;\n var collisionModels = void 0;\n if (this.overlapSubElementClone.indexOf(srcEle) === -1) {\n this.overlapSubElementClone.push(srcEle);\n }\n if (this.overlapSubElementClone.indexOf(this.overlapElementClone[i]) === -1) {\n this.overlapSubElementClone.push(this.overlapElementClone[i]);\n }\n if (collisionY > 1 || collisionX > 1) {\n var overlapElementModel = this.getCellInstance(this.overlapElementClone[i].id);\n colValue = overlapElementModel.col;\n var ele_1 = document.getElementById(overlapElementModel.id);\n for (var k = overlapElementModel.row; k < eleRow + eleSizeY; k++) {\n this.isSubValue = true;\n this.panelPropertyChange(overlapElementModel, { row: overlapElementModel.row + 1 });\n ele_1.setAttribute('data-row', overlapElementModel.row.toString());\n this.setPanelPosition(ele_1, overlapElementModel.row, colValue);\n this.updateCollisionChecked(ele_1);\n this.oldRowCol[(ele_1.id)] = { row: overlapElementModel.row, col: colValue };\n var panelModel = this.getCellInstance(ele_1.id);\n this.panelPropertyChange(panelModel, { col: colValue, row: overlapElementModel.row });\n var eleRow_1 = parseInt(ele_1.getAttribute('data-row'), 10);\n var eleCol = parseInt(ele_1.getAttribute('data-col'), 10);\n var sizeX = parseInt(ele_1.getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(ele_1.getAttribute('data-sizeY'), 10);\n var excludeElements = [];\n excludeElements.push(ele_1);\n excludeElements.push(srcEle);\n collisionModels = this.collisions(eleRow_1, eleCol, sizeX, sizeY, excludeElements);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n this.collisionPanel(collisionModels, eleCol, eleRow_1, ele_1);\n }\n this.isSubValue = false;\n }\n else {\n if (this.addPanelCalled) {\n this.addPanelCalled = false;\n }\n this.overlapElementClone[i].setAttribute('data-row', updatedRow.toString());\n var excludeEle = [];\n excludeEle.push(this.overlapElementClone[i]);\n excludeEle.push(srcEle);\n collisionModels = this.collisions(updatedRow, collisionCol, collisionX, collisionY, excludeEle);\n if (this.mainElement && collisionModels.indexOf(this.mainElement) !== -1) {\n collisionModels.splice(collisionModels.indexOf(this.mainElement), 1);\n }\n colValue = parseInt(this.overlapElementClone[i].getAttribute('data-col'), 10);\n this.setPanelPosition(this.overlapElementClone[i], updatedRow, colValue);\n this.updateCollisionChecked(this.overlapElementClone[i]);\n this.oldRowCol[(this.overlapElementClone[i].id)] = { row: updatedRow, col: colValue };\n var panelModel = this.getCellInstance(this.overlapElementClone[i].id);\n this.panelPropertyChange(panelModel, { col: colValue, row: updatedRow });\n this.collisionPanel(collisionModels, colValue, updatedRow, this.overlapElementClone[i]);\n }\n }\n };\n DashboardLayout.prototype.collisionPanel = function (collisionModels, colValue, updatedRow, clone) {\n var panelModel = this.getCellInstance(clone.id);\n this.panelPropertyChange(panelModel, { row: updatedRow, col: colValue });\n if (collisionModels.length > 0) {\n // eslint-disable-next-line\n var proxy_2 = this;\n this.overlapElement = [];\n this.shouldRestrict = true;\n collisionModels.forEach(function (item1) {\n proxy_2.overlapElement.push(item1);\n });\n var overlapElementRow1 = parseInt(clone.getAttribute('data-row'), 10);\n for (var m = 0; m < this.overlapElement.length; m++) {\n this.updateRowColumn(overlapElementRow1, this.overlapElement, clone);\n }\n this.shouldRestrict = false;\n }\n else {\n if (!this.addPanelCalled) {\n this.sortedPanel();\n }\n if (this.overlapSubElementClone.length > 0) {\n var _loop_5 = function (p) {\n var rowVal = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-row'), 10);\n var colValue_1 = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-col'), 10);\n var sizeX = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeX'), 10);\n var sizeY = parseInt(this_3.overlapSubElementClone[p].getAttribute('data-sizeY'), 10);\n var collisionModels1 = this_3.collisions(rowVal, colValue_1, sizeX, sizeY, this_3.overlapSubElementClone);\n if (this_3.mainElement && collisionModels1.indexOf(this_3.mainElement) !== -1) {\n collisionModels1.splice(collisionModels1.indexOf(this_3.mainElement), 1);\n }\n // eslint-disable-next-line\n var proxy = this_3;\n collisionModels1.forEach(function (item1) {\n proxy.overlapElement.push(item1);\n });\n if (collisionModels1.length > 0) {\n this_3.updateRowColumn(rowVal, this_3.overlapElement, this_3.overlapSubElementClone[p]);\n }\n };\n var this_3 = this;\n for (var p = 0; p < this.overlapSubElementClone.length; p++) {\n _loop_5(p);\n }\n }\n this.overlapSubElementClone = [];\n }\n };\n DashboardLayout.prototype.removeResizeClasses = function (panelElements) {\n for (var i = 0; i < panelElements.length; i++) {\n var element = panelElements[i];\n var resizerElements = element.querySelectorAll('.e-resize');\n for (var i_2 = 0; i_2 < resizerElements.length; i_2++) {\n detach(resizerElements[i_2]);\n }\n }\n };\n DashboardLayout.prototype.ensureDrag = function () {\n this.checkDragging(this.dragCollection);\n var dragPanels = this.element.querySelectorAll('.' + drag);\n removeClass(dragPanels, [drag]);\n this.setClasses(this.panelCollection);\n };\n DashboardLayout.prototype.setClasses = function (panelCollection) {\n for (var i = 0; i < panelCollection.length; i++) {\n var element = panelCollection[i];\n var containerEle = panelCollection[i].querySelector('.e-panel-container');\n if (this.allowDragging) {\n if (this.draggableHandle && element.querySelectorAll(this.draggableHandle)[0]) {\n addClass([element.querySelectorAll(this.draggableHandle)[0]], [drag]);\n }\n else {\n addClass([element], [drag]);\n }\n }\n if (this.allowResizing &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.setResizingClass(element, containerEle);\n }\n }\n };\n DashboardLayout.prototype.setResizingClass = function (ele, container) {\n this.availableClasses = this.resizableHandles;\n if (!ele.querySelector(\".e-resize\")) {\n for (var j = 0; j < this.availableClasses.length; j++) {\n var spanEle = this.createElement('span');\n var addClassValue = void 0;\n container.appendChild(spanEle);\n if (this.availableClasses[j] === 'e-east' || this.availableClasses[j] === 'e-west' ||\n this.availableClasses[j] === 'e-north' || this.availableClasses[j] === 'e-south') {\n addClassValue = single;\n }\n else {\n addClassValue = double;\n }\n addClass([spanEle], [addClassValue, this.availableClasses[j], resize, resizeicon]);\n }\n }\n };\n DashboardLayout.prototype.setXYAttributes = function (element, panelModel) {\n var value = {\n value: {\n sizeX: panelModel.sizeX.toString(),\n sizeY: panelModel.sizeY.toString(),\n minSizeX: panelModel.minSizeX.toString(),\n minSizeY: panelModel.minSizeY.toString(),\n maxSizeX: !isNullOrUndefined(panelModel.maxSizeX) ? panelModel.maxSizeX.toString() : undefined,\n maxSizeY: !isNullOrUndefined(panelModel.maxSizeY) ? panelModel.maxSizeY.toString() : undefined,\n row: panelModel.row.toString(),\n col: panelModel.col.toString()\n }\n };\n this.setAttributes(value, element);\n };\n DashboardLayout.prototype.setXYDimensions = function (panelModel) {\n var cellHeight = this.getCellSize()[1];\n var cellWidth = this.getCellSize()[0];\n var widthValue;\n var heigthValue;\n if (panelModel && typeof (cellWidth) === 'number' && typeof (panelModel.sizeX) === 'number' && panelModel.sizeX > 1) {\n widthValue = (panelModel.sizeX * cellWidth) + (panelModel.sizeX - 1) * this.cellSpacing[0];\n }\n else {\n widthValue = cellWidth;\n }\n if (panelModel && typeof (cellHeight) === 'number' && panelModel.sizeY > 1 && typeof (panelModel.sizeY) === 'number') {\n heigthValue = (panelModel.sizeY * cellHeight) + (panelModel.sizeY - 1) * this.cellSpacing[1];\n }\n else {\n heigthValue = formatUnit(cellHeight);\n }\n return [heigthValue, widthValue];\n };\n DashboardLayout.prototype.getRowColumnDragValues = function (args) {\n var value = [];\n var elementTop = parseFloat(args.element.style.top);\n var elementLeft = parseFloat(args.element.style.left);\n var row = Math.round(elementTop / (this.getCellSize()[1] + this.cellSpacing[1]));\n var col = Math.round(elementLeft / (this.getCellSize()[0] + +this.cellSpacing[0]));\n value = [row, col];\n return value;\n };\n DashboardLayout.prototype.checkForChanges = function (isInteracted, added, removed) {\n var changedPanels = [];\n if (this.removeAllCalled) {\n changedPanels = [];\n }\n else {\n for (var i = 0; i < this.panels.length; i++) {\n if (((!isNullOrUndefined(added) ? (this.panels[i].id !== added[0].id) : true) &&\n (!isNullOrUndefined(removed) ? (this.panels[i].id !== removed[0].id) : true)) &&\n (this.panels[i].row !== this.panelsInitialModel[i].row || this.panels[i].col !== this.panelsInitialModel[i].col)) {\n changedPanels.push(this.panels[i]);\n }\n }\n }\n if (changedPanels.length > 0 || this.removeAllCalled) {\n var changedArgs = {\n changedPanels: changedPanels, isInteracted: isInteracted,\n addedPanels: !isNullOrUndefined(added) ? added : [], removedPanels: !isNullOrUndefined(removed) ? removed : []\n };\n this.trigger('change', changedArgs);\n }\n };\n DashboardLayout.prototype.enableDraggingContent = function (collections) {\n var _this = this;\n var _loop_6 = function (i) {\n var abortArray = ['.e-resize', '.' + dragRestrict];\n var cellElement = collections[i];\n {\n this_4.dragobj = new Draggable(cellElement, {\n preventDefault: false,\n clone: false,\n dragArea: this_4.element,\n isDragScroll: true,\n handle: this_4.draggableHandle ? this_4.draggableHandle : '.e-panel',\n abort: abortArray,\n dragStart: this_4.onDraggingStart.bind(this_4),\n dragStop: function (args) {\n _this.trigger('dragStop', args);\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n if (!(args.cancel)) {\n var model = _this.getCellInstance(_this.mainElement.id);\n if (_this.allowPushing &&\n _this.collisions(model.row, model.col, model.sizeX, model.sizeY, _this.mainElement).length > 0) {\n _this.setHolderPosition(args);\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n _this.updatePanelLayout(_this.mainElement, model);\n }\n else {\n _this.setPanelPosition(_this.mainElement, model.row, model.col);\n }\n _this.mainElement = null;\n var item = _this.getPanelBase(args);\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n removeClass([_this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n _this.shadowEle = null;\n args.element.classList.remove('e-dragging');\n var row = _this.getRowColumnDragValues(args)[0];\n var col = _this.getRowColumnDragValues(args)[1];\n var panelModel = _this.getCellInstance(args.element.id);\n if (_this.allowPushing &&\n _this.collisions(row, col, panelModel.sizeX, panelModel.sizeY, document.getElementById(item.id)).length === 0) {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), { row: row, col: col });\n _this.oldRowCol[args.element.id].row = row;\n _this.oldRowCol[args.element.id].col = col;\n _this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n _this.sortedPanel();\n }\n else {\n _this.panelPropertyChange(_this.getCellInstance(args.element.id), {\n row: _this.oldRowCol[args.element.id].row,\n col: _this.oldRowCol[args.element.id].col\n });\n args.element.setAttribute('data-col', _this.getCellInstance(args.element.id).col.toString());\n args.element.setAttribute('data-row', _this.getCellInstance(args.element.id).row.toString());\n _this.sortedPanel();\n }\n var panelInstance = _this.getCellInstance(args.element.id);\n _this.setPanelPosition(args.element, panelInstance.row, panelInstance.col);\n _this.updatePanels();\n _this.updateCloneArrayObject();\n _this.checkForChanges(true);\n _this.dragStopEventArgs = { event: args.event, element: args.element };\n _this.resizeEvents();\n _this.rows = _this.maxRow(true);\n _this.setHeightWidth();\n _this.updateDragArea();\n }\n else {\n var currentPanel = _this.getCellInstance(_this.mainElement.id);\n for (i = 0; i < _this.panels.length; i++) {\n if (_this.panels[i].id === currentPanel.id) {\n args.element.setAttribute('data-col', _this.panelsInitialModel[i].col.toString());\n args.element.setAttribute('data-row', _this.panelsInitialModel[i].row.toString());\n currentPanel.col = _this.panelsInitialModel[i].col;\n currentPanel.row = _this.panelsInitialModel[i].row;\n _this.setPanelPosition(_this.mainElement, _this.panelsInitialModel[i].row, _this.panelsInitialModel[i].col);\n _this.updatePanelLayout(_this.mainElement, currentPanel);\n }\n }\n if (_this.shadowEle) {\n detach(_this.shadowEle);\n }\n }\n },\n drag: function (args) {\n _this.draggedEventArgs = {\n event: args.event,\n element: args.element,\n target: closest((args.target), '.e-panel')\n };\n _this.trigger('drag', _this.draggedEventArgs);\n _this.onDragStart(args);\n }\n });\n if (this_4.dragCollection.indexOf(this_4.dragobj) === -1) {\n this_4.dragCollection.push(this_4.dragobj);\n }\n }\n out_i_1 = i;\n };\n var this_4 = this, out_i_1;\n for (var i = 0; i < collections.length; i++) {\n _loop_6(i);\n i = out_i_1;\n }\n };\n DashboardLayout.prototype.updatePanels = function () {\n this.moveItemsUpwards();\n this.updateOldRowColumn();\n this.sortedPanel();\n };\n DashboardLayout.prototype.updateDragArea = function () {\n this.dragCollection.forEach(function (dragobj) {\n // eslint-disable-next-line\n dragobj.setDragArea();\n });\n };\n DashboardLayout.prototype.updateRowsHeight = function (row, sizeY, addRows) {\n if (row + sizeY >= this.rows) {\n this.rows = this.rows + addRows;\n this.setHeightWidth();\n }\n };\n DashboardLayout.prototype.onDraggingStart = function (args) {\n var dragArgs = args;\n this.trigger('dragStart', dragArgs, function (dragArgs) {\n if (isNullOrUndefined(args.cancel)) {\n args.cancel = false;\n }\n });\n this.eventVar = args.cancel;\n if (!(args.cancel)) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.mainElement = args.element;\n this.cloneObject = JSON.parse(JSON.stringify(this.cloneObject));\n var eleRowValue = this.startRow = parseInt(args.element.getAttribute('data-row'), 10);\n this.startCol = parseInt(args.element.getAttribute('data-col'), 10);\n var eleSizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n this.updateRowsHeight(eleRowValue, eleSizeY, eleSizeY);\n this.updateDragArea();\n this.shadowEle = document.createElement('div');\n this.shadowEle.classList.add('e-holder');\n this.shadowEle.classList.add('e-holder-transition');\n setStyleAttribute(this.shadowEle, { 'position': 'absolute' });\n addClass([this.element], [preventSelect]);\n addClass([args.element], [dragging]);\n this.element.appendChild(this.shadowEle);\n this.renderReactTemplates();\n this.shadowEle = document.querySelector('.e-holder');\n this.shadowEle.style.height = (this.getCellInstance(args.element.id).sizeY * this.cellSize[1]) + 'px';\n this.shadowEle.style.width = (this.getCellInstance(args.element.id).sizeX * this.cellSize[0]) + 'px';\n var panelInstance = this.getCellInstance(args.element.id);\n this.setPanelPosition(this.shadowEle, panelInstance.row, panelInstance.col);\n }\n else {\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n // eslint-disable-next-line\n DashboardLayout.prototype.cloneModels = function (source, target) {\n if (target === undefined) {\n target = [];\n }\n for (var i = 0; i < source.length; i++) {\n // tslint:disable-next-line\n if (!target[i]) {\n target[i] = {};\n }\n // eslint-disable-next-line guard-for-in\n for (var k in source[i]) {\n target[i][\"\" + k] = source[i][\"\" + k];\n }\n }\n return target;\n };\n DashboardLayout.prototype.onDragStart = function (args) {\n var endCol;\n var endRow;\n var dragCol;\n if (!this.eventVar) {\n var col = dragCol = this.getRowColumnDragValues(args)[1];\n var row = this.getRowColumnDragValues(args)[0];\n if (col < 0 || row < 0) {\n return;\n }\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n var panelModel = this.getCellInstance(args.element.id);\n this.updateRowsHeight(panelModel.row, panelModel.sizeY, 1);\n this.updateDragArea();\n if (this.allowPushing) {\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n endCol = this.oldRowCol[(args.element.id)].col;\n endRow = this.oldRowCol[(args.element.id)].row;\n this.oldRowCol[(args.element.id)] = { row: row, col: col };\n this.updateOldRowColumn();\n if (this.startCol !== endCol || this.startRow !== endRow) {\n this.setHolderPosition(args);\n if (this.startCol !== endCol) {\n this.startRow = endRow;\n }\n if (this.startRow !== endRow) {\n this.startCol = endCol;\n }\n if (this.allowPushing) {\n this.mainElement = args.element;\n var model = panelModel;\n this.checkCollision = this.collisions(model.row, model.col, model.sizeX, model.sizeY, args.element);\n if (panelModel.col >= this.checkColumnValue) {\n this.checkCollision = [];\n }\n this.updatePanelLayout(args.element, panelModel);\n this.moveItemsUpwards();\n }\n }\n }\n if (this.allowPushing !== false) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n }\n if (this.oldRowCol[args.element.id].row !== row || this.oldRowCol[args.element.id].col !== col) {\n this.panelPropertyChange(this.getCellInstance(args.element.id), { row: row, col: col });\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, args.element);\n }\n if (this.startCol !== dragCol) {\n this.startCol = endCol;\n this.moveItemsUpwards();\n }\n if (!this.allowPushing) {\n this.setHolderPosition(args);\n }\n this.removeResizeClasses(this.panelCollection);\n this.setClasses(this.panelCollection);\n if (this.allowPushing === false) {\n return;\n }\n }\n else {\n this.dragobj.intDestroy(args.event);\n removeClass([this.element], [preventSelect]);\n removeClass([args.element], [dragging]);\n }\n };\n DashboardLayout.prototype.getPanelBase = function (args) {\n var item;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === ((args.element\n && args.element.id) || args)) {\n item = this.panelCollection[i];\n }\n }\n return item;\n };\n DashboardLayout.prototype.getPanel = function (row, column, excludeItems) {\n if (excludeItems && !(excludeItems instanceof Array)) {\n excludeItems = [excludeItems];\n }\n var sizeY = 1;\n while (row > -1) {\n var sizeX = 1;\n var col = column;\n while (col > -1) {\n var items = this.sortedArray[row];\n if (items) {\n var item = items[col];\n if (item && (!excludeItems ||\n excludeItems.indexOf(item) === -1) && parseInt(item.getAttribute('data-sizeX'), 10) >= sizeX\n && parseInt(item.getAttribute('data-sizeY'), 10) >= sizeY) {\n return item;\n }\n }\n ++sizeX;\n --col;\n }\n --row;\n ++sizeY;\n }\n return null;\n };\n DashboardLayout.prototype.setHolderPosition = function (args) {\n var sizeY = parseInt(args.element.getAttribute('data-sizeY'), 10);\n var col = parseInt(args.element.getAttribute('data-col'), 10);\n var row = parseInt(args.element.getAttribute('data-row'), 10);\n var sizeX = parseInt(args.element.getAttribute('data-sizeX'), 10);\n var widthValue = this.getCellSize()[0];\n var heightValue = this.getCellSize()[1];\n var top = row === 0 ? 0 : (((row) * (heightValue + this.cellSpacing[1])));\n var left = col === 0 ? 0 : (((col) * (widthValue + this.cellSpacing[0])));\n var cellSizeOne = this.getCellSize()[1];\n var cellSizeZero = this.getCellSize()[0];\n this.elementRef.top = this.shadowEle.style.top = top + 'px';\n this.elementRef.left = this.shadowEle.style.left = left + 'px';\n this.elementRef.height = this.shadowEle.style.height = ((sizeY * cellSizeOne) + ((sizeY - 1) * this.cellSpacing[1])) + 'px';\n this.elementRef.width = this.shadowEle.style.width = ((sizeX * cellSizeZero) + ((sizeX - 1) * this.cellSpacing[0])) + 'px';\n };\n DashboardLayout.prototype.getCellInstance = function (idValue) {\n var currentCellInstance;\n for (var i = 0; i < this.panels.length; i++) {\n if (this.panels[i].id === idValue) {\n currentCellInstance = this.panels[i];\n }\n }\n return currentCellInstance;\n };\n /**\n * Allows to add a panel to the Dashboardlayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.addPanel = function (panel) {\n this.panelsSizeY = 0;\n this.maxCol();\n if (!panel.minSizeX) {\n panel.minSizeX = 1;\n }\n if (!panel.minSizeY) {\n panel.minSizeY = 1;\n }\n if (!panel.id) {\n panel.id = 'layout_' + this.panelID.toString();\n this.panelID = this.panelID + 1;\n }\n // eslint-disable-next-line\n var panelProp = new Panel(this, 'panels', panel, true);\n this.panels.push(panelProp);\n this.panelsInitialModel = this.cloneModels(this.panels);\n this.setMinMaxValues(panelProp);\n if (this.maxColumnValue < panelProp.col || this.maxColumnValue < (panelProp.col + panelProp.sizeX)) {\n this.panelPropertyChange(panelProp, { col: this.maxColumnValue - panelProp.sizeX });\n }\n var cell = this.renderCell(panelProp, true, null);\n this.oldRowCol[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.cloneObject[panelProp.id] = { row: panelProp.row, col: panelProp.col };\n this.updateOldRowColumn();\n this.element.insertAdjacentElement('afterbegin', cell);\n this.addPanelCalled = true;\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n this.removeResizeClasses(this.panelCollection);\n }\n else {\n this.mainElement = cell;\n if (!this.checkCollision) {\n this.checkCollision = [];\n }\n this.setPanelPosition(cell, panelProp.row, panelProp.col);\n this.updatePanelLayout(cell, panelProp);\n }\n this.addPanelCalled = false;\n if (this.allowDragging &&\n this.mediaQuery ? !(this.checkMediaQuery()) : false) {\n this.enableDraggingContent([document.getElementById(panelProp.id)]);\n }\n this.setClasses([cell]);\n if (this.allowFloating) {\n this.mainElement = null;\n this.moveItemsUpwards();\n }\n this.updateOldRowColumn();\n this.sortedPanel();\n this.updateCloneArrayObject();\n if (this.allowResizing) {\n for (var i = 0; i < cell.querySelectorAll('.e-resize').length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], eventName, this.downResizeHandler, this);\n if (Browser.info.name !== 'msie') {\n EventHandler.add(cell.querySelectorAll('.e-resize')[i], 'touchstart', this.touchDownResizeHandler, this);\n }\n }\n }\n this.checkForChanges(false, [panelProp]);\n };\n /**\n * Allows to update a panel in the DashboardLayout.\n *\n * @param {panel} panel - Defines the panel element.\n *\n * @returns void\n * @deprecated\n */\n DashboardLayout.prototype.updatePanel = function (panel) {\n this.panelsSizeY = 0;\n if (!panel.id) {\n return;\n }\n var panelInstance = this.getCellInstance(panel.id);\n if (!panelInstance) {\n return;\n }\n this.maxCol();\n panel.col = (panel.col < 1) ? 0 : ((panel.col > this.columns)) ? this.columns - 1 : panel.col;\n if (isNullOrUndefined(panel.col)) {\n panel.col = panelInstance.col;\n }\n this.panelPropertyChange(panelInstance, panel);\n this.setMinMaxValues(panelInstance);\n var cell = document.getElementById(panel.id);\n this.mainElement = cell;\n var cssClass = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelContent = cell.querySelector('.e-panel-container') ?\n cell.querySelector('.e-panel-container') :\n this.createSubElement(cssClass, cell.id + '_content', panelContainer);\n cell.appendChild(this.panelContent);\n if (panelInstance.header) {\n var headerTemplateElement = cell.querySelector('.e-panel-header') ?\n cell.querySelector('.e-panel-header') : this.createSubElement([], cell.id + 'template', '');\n addClass([headerTemplateElement], [header]);\n headerTemplateElement.innerHTML = '';\n var id = this.element.id + 'HeaderTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.header, headerTemplateElement, id, true, 'header');\n this.panelContent.appendChild(headerTemplateElement);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-header')) {\n detach(cell.querySelector('.e-panel-header'));\n }\n }\n if (panelInstance.content) {\n var cssClass_2 = panelInstance.cssClass ? panelInstance.cssClass.split(' ') : null;\n this.panelBody = cell.querySelector('.e-panel-content') ? cell.querySelector('.e-panel-content') :\n this.createSubElement(cssClass_2, cell.id + '_body', panelContent);\n this.panelBody.innerHTML = '';\n var headerHeight = this.panelContent.querySelector('.e-panel-header') ?\n window.getComputedStyle(this.panelContent.querySelector('.e-panel-header')).height : '0px';\n var contentHeightValue = 'calc( 100% - ' + headerHeight + ')';\n setStyleAttribute(this.panelBody, { height: contentHeightValue });\n var id = this.element.id + 'ContentTemplate' + panelInstance.id;\n this.renderTemplate(panelInstance.content, this.panelBody, id, true, 'content');\n this.panelContent.appendChild(this.panelBody);\n this.renderReactTemplates();\n }\n else {\n if (cell.querySelector('.e-panel-content')) {\n detach(cell.querySelector('.e-panel-content'));\n }\n }\n this.setXYAttributes(cell, panelInstance);\n this.setHeightAndWidth(cell, panelInstance);\n this.setPanelPosition(cell, panelInstance.row, panelInstance.col);\n this.updatePanelLayout(cell, panelInstance);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n this.mainElement = null;\n this.updatePanels();\n this.updateCloneArrayObject();\n };\n DashboardLayout.prototype.updateCloneArrayObject = function () {\n this.cloneArray = this.sortedArray;\n this.cloneObject = JSON.parse(JSON.stringify(this.oldRowCol));\n };\n /**\n * Returns the panels object of the DashboardLayout.\n *\n * @returns [`PanelModel[]`](./panelModel)\n */\n DashboardLayout.prototype.serialize = function () {\n var cloneModel = this.cloneModels(this.panels);\n var customObject = [];\n for (var i = 0; i < cloneModel.length; i++) {\n customObject.push({\n id: cloneModel[i].id, row: cloneModel[i].row, col: cloneModel[i].col, sizeX: cloneModel[i].sizeX,\n sizeY: cloneModel[i].sizeY, minSizeX: cloneModel[i].minSizeX, minSizeY: cloneModel[i].minSizeY,\n maxSizeX: cloneModel[i].maxSizeX, maxSizeY: cloneModel[i].maxSizeY\n });\n }\n return (customObject);\n };\n /**\n * Removes all the panels from the DashboardLayout.\n */\n DashboardLayout.prototype.removeAll = function () {\n this.removeAllCalled = true;\n for (var i = 0; i < this.panelCollection.length; i++) {\n detach(this.panelCollection[i]);\n this.clearTemplate();\n }\n this.removeAllPanel();\n this.rows = 0;\n this.gridPanelCollection = [];\n this.setHeightWidth();\n this.sortedPanel();\n this.sortedArray = [];\n this.overlapElementClone = [];\n this.overlapElement = [];\n this.overlapSubElementClone = [];\n this.panelCollection = [];\n this.oldRowCol = {};\n this.cloneObject = {};\n var clonedPanels = this.cloneModels(this.panels);\n this.setProperties({ panels: [] }, true);\n this.updatePanels();\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, clonedPanels);\n this.removeAllCalled = false;\n };\n /**\n * Removes the panel from the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @returns void\n */\n DashboardLayout.prototype.removePanel = function (id) {\n var _this = this;\n this.panelsSizeY = 0;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var removedPanel;\n for (var i = 0; i < this.panelCollection.length; i++) {\n if (this.panelCollection[i].id === id) {\n detach(this.panelCollection[i]);\n this.panelCollection.splice(i, 1);\n }\n if (this.panels[i].id === id) {\n removedPanel = this.panels[i];\n this.panels.splice(i, 1);\n this.panelsInitialModel.splice(i, 1);\n this.updateOldRowColumn();\n this.sortedPanel();\n }\n }\n this.updatePanels();\n if (this.checkMediaQuery()) {\n this.isPanelRemoved = true;\n this.checkMediaQuerySizing();\n this.isPanelRemoved = false;\n }\n this.gridPanelCollection.forEach(function (item) {\n if (item.id === id) {\n _this.gridPanelCollection.splice(_this.gridPanelCollection.indexOf(item), 1);\n }\n });\n this.updateCloneArrayObject();\n this.checkForChanges(false, null, [removedPanel]);\n };\n /**\n *Moves the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} row - Defines the row of dashboard layout.\n *\n * @param {number} col - Defines the column of dashboard layout.\n *\n * @returns void\n */\n DashboardLayout.prototype.movePanel = function (id, row, col) {\n this.movePanelCalled = true;\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n if ((isNaN(row) || row === null) || (isNaN(col) || col === null) || !panelInstance) {\n return;\n }\n if (col < 0) {\n col = 0;\n }\n else if (col > this.columns) {\n col = this.columns - panelInstance.sizeX;\n }\n this.panelPropertyChange(panelInstance, { row: row, col: col });\n var ele = document.getElementById(id);\n this.mainElement = ele;\n this.startRow = parseInt(ele.getAttribute('data-row'), 10);\n this.startCol = parseInt(ele.getAttribute('data-col'), 10);\n this.setAttributes({ value: { col: col.toString(), row: row.toString() } }, ele);\n this.updateOldRowColumn();\n this.setPanelPosition(ele, row, col);\n this.updatePanelLayout(ele, panelInstance);\n this.updateRowHeight();\n this.updatePanels();\n this.updateCloneArrayObject();\n this.mainElement = null;\n if (this.allowFloating) {\n this.moveItemsUpwards();\n }\n this.movePanelCalled = false;\n this.checkForChanges(false);\n };\n DashboardLayout.prototype.setAttributes = function (value, ele) {\n for (var i = 0; i < Object.keys(value).length; i++) {\n if (Object.keys(value)) {\n if (value[Object.keys(value)[i]].col) {\n ele.setAttribute('data-col', value[Object.keys(value)[i]].col.toString());\n }\n if (value[Object.keys(value)[i]].row) {\n ele.setAttribute('data-row', value[Object.keys(value)[i]].row.toString());\n }\n if (value[Object.keys(value)[i]].sizeX) {\n ele.setAttribute('data-sizeX', value[Object.keys(value)[i]].sizeX.toString());\n }\n if (value[Object.keys(value)[i]].sizeY) {\n ele.setAttribute('data-sizeY', value[Object.keys(value)[i]].sizeY.toString());\n }\n if (value[Object.keys(value)[i]].minSizeX) {\n ele.setAttribute('data-minSizeX', value[Object.keys(value)[i]].minSizeX.toString());\n }\n if (value[Object.keys(value)[i]].minSizeY) {\n ele.setAttribute('data-minSizeY', value[Object.keys(value)[i]].minSizeY.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeX) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeX.toString());\n }\n if (value[Object.keys(value)[i]].maxSizeY) {\n ele.setAttribute('data-maxSizeY', value[Object.keys(value)[i]].maxSizeY.toString());\n }\n }\n }\n };\n /**\n * Resize the panel in the DashboardLayout.\n *\n * @param {string} id - Defines the panel ID.\n *\n * @param {number} sizeX - Defines the sizeX of dashboard layout.\n *\n * @param {number} sizeY - Defines the sizeY of dashboard layout.\n */\n DashboardLayout.prototype.resizePanel = function (id, sizeX, sizeY) {\n this.panelsInitialModel = this.cloneModels(this.panels);\n var panelInstance = this.getCellInstance(id);\n this.resizeCalled = true;\n var ele = document.getElementById(id);\n var args = { event: null, element: ele, isInteracted: false };\n this.trigger('resizeStart', args);\n this.panelPropertyChange(panelInstance, { sizeX: sizeX, sizeY: sizeY });\n this.setMinMaxValues(panelInstance);\n this.checkMinMaxValues(panelInstance);\n this.mainElement = ele;\n this.setAttributes({ value: { sizeX: panelInstance.sizeX.toString(), sizeY: panelInstance.sizeY.toString() } }, ele);\n this.setHeightAndWidth(ele, panelInstance);\n this.updatePanelLayout(ele, panelInstance);\n this.updatePanels();\n this.updateRowHeight();\n this.resizeCalled = false;\n this.trigger('resizeStop', args);\n this.checkForChanges(false);\n };\n /**\n * Destroys the DashboardLayout component\n *\n * @returns void\n */\n DashboardLayout.prototype.destroy = function () {\n // eslint-disable-next-line\n EventHandler.remove(window, 'resize', this.refreshListener);\n removeClass([this.element], ['e-dashboardlayout', 'e-lib', 'e-responsive', 'e-control']);\n this.element.removeAttribute('style');\n for (var i = 0; i < this.dragCollection.length; i++) {\n this.dragCollection[i].destroy();\n }\n this.removeAllPanel();\n _super.prototype.destroy.call(this);\n this.clearTemplate();\n this.renderReactTemplates();\n };\n DashboardLayout.prototype.removeAllPanel = function () {\n while (this.element.firstElementChild) {\n detach(this.element.firstElementChild);\n this.clearTemplate();\n }\n };\n DashboardLayout.prototype.setEnableRtl = function () {\n if (this.enableRtl === true) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n /**\n * Called internally if any of the property value changed.\n * returns void\n *\n * @private\n */\n DashboardLayout.prototype.updateCellSizeAndSpacing = function () {\n this.panelResponsiveUpdate();\n this.setHeightWidth();\n this.getRowColumn();\n for (var i = 0; i < this.element.querySelectorAll('.e-panel').length; i++) {\n var ele = this.element.querySelectorAll('.e-panel')[i];\n var panelModel = this.getCellInstance(ele.id);\n this.setHeightAndWidth(ele, panelModel);\n this.setPanelPosition(ele, panelModel.row, panelModel.col);\n }\n };\n DashboardLayout.prototype.updatePanelsDynamically = function (panels) {\n this.removeAll();\n this.setProperties({ panels: panels }, true);\n this.setOldRowCol();\n if (this.table) {\n this.table.remove();\n }\n this.initialize();\n if (this.checkMediaQuery()) {\n this.refresh();\n }\n if (this.showGridLines) {\n this.initGridLines();\n }\n };\n DashboardLayout.prototype.checkForIDValues = function (panels) {\n var _this = this;\n if (!isNullOrUndefined(panels) && panels.length > 0) {\n this.panelID = 0;\n panels.forEach(function (panel) {\n if (!panel.id) {\n _this.panelPropertyChange(panel, { id: 'layout_' + _this.panelID.toString() });\n _this.panelID = _this.panelID + 1;\n }\n });\n }\n else {\n this.restrictDynamicUpdate = true;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * returns void\n *\n * @private\n */\n // eslint-disable-next-line\n DashboardLayout.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n if (newProp.panels && newProp.panels.length > 0 && newProp.panels[0] instanceof Panel) {\n this.checkForIDValues(newProp.panels);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'mediaQuery':\n this.setProperties({ mediaQuery: newProp.mediaQuery }, true);\n if (this.checkMediaQuery()) {\n this.checkMediaQuerySizing();\n }\n break;\n case 'allowDragging':\n this.setProperties({ allowDragging: newProp.allowDragging }, true);\n this.ensureDrag();\n break;\n case 'allowResizing':\n this.setProperties({ allowResizing: newProp.allowResizing }, true);\n if (this.allowResizing) {\n this.setClasses(this.panelCollection);\n this.resizeEvents();\n }\n else {\n var panelElements = this.element.querySelectorAll('.e-panel .e-panel-container .e-resize');\n for (var i = 0; i < panelElements.length; i++) {\n var eventName = (Browser.info.name === 'msie') ? 'mousedown pointerdown' : 'mousedown';\n var element = panelElements[i];\n EventHandler.remove(element, eventName, this.downResizeHandler);\n if (Browser.info.name !== 'msie') {\n EventHandler.remove(element, 'touchstart', this.touchDownResizeHandler);\n }\n }\n this.removeResizeClasses(this.panelCollection);\n }\n break;\n case 'cellSpacing':\n this.setProperties({ cellSpacing: newProp.cellSpacing }, true);\n this.updateCellSizeAndSpacing();\n this.updateGridLines();\n break;\n case 'draggableHandle':\n this.setProperties({ draggableHandle: newProp.draggableHandle }, true);\n this.ensureDrag();\n break;\n case 'allowFloating':\n this.setProperties({ allowFloating: newProp.allowFloating }, true);\n this.moveItemsUpwards();\n break;\n case 'showGridLines':\n if (this.showGridLines) {\n this.setProperties({ showGridLines: newProp.showGridLines }, true);\n this.initGridLines();\n }\n else {\n if (this.table) {\n detach(this.table);\n }\n }\n break;\n case 'allowPushing':\n this.setProperties({ allowPushing: newProp.allowPushing }, true);\n break;\n case 'panels':\n if (!newProp.columns && !this.restrictDynamicUpdate && (newProp.panels[0] && newProp.panels.length > 0)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(newProp.panels);\n this.isRenderComplete = true;\n }\n else if (!(newProp.panels[0] && newProp.panels.length)) {\n this.isRenderComplete = false;\n this.updatePanelsDynamically(this.panels);\n this.isRenderComplete = true;\n }\n else {\n this.restrictDynamicUpdate = false;\n }\n break;\n case 'columns':\n this.isRenderComplete = false;\n if (newProp.panels) {\n this.updatePanelsDynamically(newProp.panels);\n }\n this.setProperties({ columns: newProp.columns }, true);\n this.panelCollection = [];\n this.maxColumnValue = this.columns;\n this.calculateCellSize();\n this.panels.forEach(function (panel) {\n _this.setMinMaxValues(panel);\n if (_this.maxColumnValue < panel.col || _this.maxColumnValue < (panel.col + panel.sizeX)) {\n var colValue = _this.maxColumnValue - panel.sizeX;\n _this.panelPropertyChange(panel, { col: colValue < 0 ? 0 : colValue });\n _this.setXYAttributes(document.getElementById(panel.id), panel);\n }\n _this.setHeightAndWidth(document.getElementById(panel.id), panel);\n _this.panelCollection.push(document.getElementById(panel.id));\n _this.setPanelPosition(document.getElementById(panel.id), panel.row, panel.col);\n _this.mainElement = document.getElementById(panel.id);\n _this.updatePanelLayout(document.getElementById(panel.id), panel);\n _this.mainElement = null;\n });\n this.updatePanels();\n this.updateCloneArrayObject();\n this.isRenderComplete = true;\n this.updateGridLines();\n break;\n }\n }\n };\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns string\n * @private\n */\n DashboardLayout.prototype.getPersistData = function () {\n var keyEntity = ['panels'];\n return this.addOnPersist(keyEntity);\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePersistPanelData = function (persistedData) {\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === '')) || !isNullOrUndefined(persistedData)) {\n var dataObj = !isNullOrUndefined(persistedData) ? persistedData : JSON.parse(data);\n var keys = Object.keys(dataObj);\n this.isProtectedOnChange = true;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if ((typeof getValue(key, this) === 'object' && !isNullOrUndefined(getValue(key, this)))) {\n if (Array.isArray(getValue(key, this)) && key === 'panels') {\n // eslint-disable-next-line\n this.mergePanels(dataObj[key], this[key]);\n }\n }\n }\n this.isProtectedOnChange = false;\n }\n };\n /* istanbul ignore next */\n DashboardLayout.prototype.mergePanels = function (sortedPanels, panels) {\n var storedColumns = sortedPanels;\n var _loop_7 = function (i) {\n this_5.checkForIDValues(panels);\n var localPanel = panels.filter(function (pan) { return pan.id === storedColumns[i].id; })[0];\n if (!isNullOrUndefined(localPanel)) {\n storedColumns[i] = extend(localPanel, storedColumns[i], {}, true);\n }\n };\n var this_5 = this;\n for (var i = 0; i < storedColumns.length; i++) {\n _loop_7(i);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns string\n *\n * @private\n */\n DashboardLayout.prototype.getModuleName = function () {\n return 'DashboardLayout';\n };\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"allowDragging\", void 0);\n __decorate$1([\n Property(false)\n ], DashboardLayout.prototype, \"allowResizing\", void 0);\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"allowPushing\", void 0);\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property(true)\n ], DashboardLayout.prototype, \"allowFloating\", void 0);\n __decorate$1([\n Property(1)\n ], DashboardLayout.prototype, \"cellAspectRatio\", void 0);\n __decorate$1([\n Property([5, 5])\n ], DashboardLayout.prototype, \"cellSpacing\", void 0);\n __decorate$1([\n Property(1)\n ], DashboardLayout.prototype, \"columns\", void 0);\n __decorate$1([\n Property(false)\n ], DashboardLayout.prototype, \"showGridLines\", void 0);\n __decorate$1([\n Property(null)\n ], DashboardLayout.prototype, \"draggableHandle\", void 0);\n __decorate$1([\n Property('en-US')\n ], DashboardLayout.prototype, \"locale\", void 0);\n __decorate$1([\n Property('max-width: 600px')\n ], DashboardLayout.prototype, \"mediaQuery\", void 0);\n __decorate$1([\n Collection([], Panel)\n ], DashboardLayout.prototype, \"panels\", void 0);\n __decorate$1([\n Property(['e-south-east'])\n ], DashboardLayout.prototype, \"resizableHandles\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"dragStart\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"drag\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"dragStop\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"resizeStart\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"resize\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], DashboardLayout.prototype, \"destroyed\", void 0);\n DashboardLayout = __decorate$1([\n NotifyPropertyChanges\n ], DashboardLayout);\n return DashboardLayout;\n}(Component));\n\n/**\n * dashboardlayout modules\n */\n\n/**\n * Layout all modules\n */\n\nexport { PaneProperties, Splitter, Panel, DashboardLayout };\n","import { Animation, Base, ChildProperty, Complex, Component, Draggable, Event, EventHandler, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, closest, compareElementParent, compile, detach, extend, formatUnit, getComponent, getUniqueID, getValue, isBlazor, isNullOrUndefined, isVisible, merge, prepend, remove, removeClass, rippleEffect } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { createCheckBox } from '@syncfusion/ej2-buttons';\n\n/* eslint-disable no-inner-declarations */\nvar cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nvar ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole == 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n li.setAttribute('title', fieldData[fields.tooltip]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n // eslint-disable-next-line\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n // eslint-disable-next-line\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes$$1 = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes$$1[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes$$1;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n // eslint-disable-next-line\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() != 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== \"listview\") {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = text;\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n // eslint-disable-next-line @typescript-eslint/ban-types\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nfunction getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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// Effect Configuration Effect[] = [fromViewBackward,fromViewForward,toViewBackward,toviewForward];\nvar effectsConfig = {\n 'None': [],\n 'SlideLeft': ['SlideRightOut', 'SlideLeftOut', 'SlideLeftIn', 'SlideRightIn'],\n 'SlideDown': ['SlideTopOut', 'SlideBottomOut', 'SlideBottomIn', 'SlideTopIn'],\n 'Zoom': ['FadeOut', 'FadeZoomOut', 'FadeZoomIn', 'FadeIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\nvar effectsRTLConfig = {\n 'None': [],\n 'SlideLeft': ['SlideLeftOut', 'SlideRightOut', 'SlideRightIn', 'SlideLeftIn'],\n 'SlideDown': ['SlideBottomOut', 'SlideTopOut', 'SlideTopIn', 'SlideBottomIn'],\n 'Zoom': ['FadeZoomOut', 'FadeOut', 'FadeIn', 'FadeZoomIn'],\n 'Fade': ['FadeOut', 'FadeOut', 'FadeIn', 'FadeIn']\n};\n// don't use space in classnames.\nvar classNames = {\n root: 'e-listview',\n hover: 'e-hover',\n selected: 'e-active',\n focused: 'e-focused',\n parentItem: 'e-list-parent',\n listItem: 'e-list-item',\n listIcon: 'e-list-icon',\n textContent: 'e-text-content',\n listItemText: 'e-list-text',\n groupListItem: 'e-list-group-item',\n hasChild: 'e-has-child',\n view: 'e-view',\n header: 'e-list-header',\n headerText: 'e-headertext',\n headerTemplateText: 'e-headertemplate-text',\n text: 'e-text',\n disable: 'e-disabled',\n content: 'e-content',\n icon: 'e-icons',\n backIcon: 'e-icon-back',\n backButton: 'e-back-button',\n checkboxWrapper: 'e-checkbox-wrapper',\n checkbox: 'e-checkbox',\n checked: 'e-check',\n checklist: 'e-checklist',\n checkboxIcon: 'e-frame',\n checkboxRight: 'e-checkbox-right',\n checkboxLeft: 'e-checkbox-left',\n listviewCheckbox: 'e-listview-checkbox',\n itemCheckList: 'e-checklist',\n virtualElementContainer: 'e-list-virtualcontainer'\n};\nvar LISTVIEW_TEMPLATE_PROPERTY = 'Template';\nvar LISTVIEW_GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar LISTVIEW_HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar swipeVelocity = 0.5;\n/**\n * Represents the field settings of the ListView.\n */\nvar FieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('id')\n ], FieldSettings.prototype, \"id\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('isVisible')\n ], FieldSettings.prototype, \"isVisible\", void 0);\n __decorate([\n Property('enabled')\n ], FieldSettings.prototype, \"enabled\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('child')\n ], FieldSettings.prototype, \"child\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('groupBy')\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property('text')\n ], FieldSettings.prototype, \"sortBy\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('tableName')\n ], FieldSettings.prototype, \"tableName\", void 0);\n return FieldSettings;\n}(ChildProperty));\n/**\n * Represents the EJ2 ListView control.\n * ```html\n *
\n *
    \n *
  • Favorite
  • \n *
  • Documents
  • \n *
  • Downloads
  • \n *
\n *
\n * ```\n * ```typescript\n * var listviewObject = new ListView({});\n * listviewObject.appendTo(\"#listview\");\n * ```\n */\nvar ListView = /** @__PURE__ @class */ (function (_super) {\n __extends(ListView, _super);\n /**\n * Constructor for creating the widget\n *\n * @param options\n *\n * @param element\n */\n function ListView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.previousSelectedItems = [];\n _this.hiddenItems = [];\n _this.enabledItems = [];\n _this.disabledItems = [];\n return _this;\n }\n /**\n * @param newProp\n *\n * @param oldProp\n *\n * @private\n */\n ListView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'htmlAttributes':\n this.setHTMLAttribute();\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'enable':\n this.setEnable();\n break;\n case 'width':\n case 'height':\n this.setSize();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'fields':\n // eslint-disable-next-line\n this.listBaseOption.fields = this.fields.properties;\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'headerTitle':\n if (!this.curDSLevel.length) {\n this.header(this.headerTitle, false, 'header');\n }\n break;\n case 'query':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'showHeader':\n this.header(this.headerTitle, false, 'header');\n break;\n case 'enableVirtualization':\n if (!isNullOrUndefined(this.contentContainer)) {\n detach(this.contentContainer);\n }\n this.refresh();\n break;\n case 'showCheckBox':\n case 'checkBoxPosition':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.setCheckbox();\n }\n break;\n case 'dataSource':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.reRender();\n }\n break;\n case 'sortOrder':\n case 'template':\n if (!this.enableVirtualization) {\n this.refresh();\n }\n break;\n case 'showIcon':\n if (this.enableVirtualization) {\n this.virtualizationModule.reRenderUiVirtualization();\n }\n else {\n this.listBaseOption.showIcon = this.showIcon;\n this.curViewDS = this.getSubDS();\n this.resetCurrentList();\n }\n break;\n default:\n break;\n }\n }\n };\n // Model Changes\n ListView.prototype.setHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n attributes(this.element, this.htmlAttributes);\n }\n };\n ListView.prototype.setCSSClass = function (oldCSSClass) {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' ').filter(function (css) { return css; }));\n }\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' ').filter(function (css) { return css; }));\n }\n };\n ListView.prototype.setSize = function () {\n this.element.style.height = formatUnit(this.height);\n this.element.style.width = formatUnit(this.width);\n this.isWindow = this.element.clientHeight ? false : true;\n };\n ListView.prototype.setEnable = function () {\n this.enableElement(this.element, this.enable);\n };\n ListView.prototype.setEnableRTL = function () {\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n else {\n this.element.classList.remove('e-rtl');\n }\n };\n ListView.prototype.enableElement = function (element, isEnabled) {\n if (isEnabled) {\n element.classList.remove(classNames.disable);\n }\n else {\n element.classList.add(classNames.disable);\n }\n };\n // Support Component Functions\n ListView.prototype.header = function (text, showBack, prop) {\n if (this.headerEle === undefined && this.showHeader) {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.headerEle = this.createElement('div', { className: classNames.header });\n var innerHeaderEle = this.createElement('span', { className: classNames.headerText, innerHTML: this.headerTitle });\n var textEle = this.createElement('div', { className: classNames.text, innerHTML: innerHeaderEle.outerHTML });\n var hedBackButton = this.createElement('div', {\n className: classNames.icon + ' ' + classNames.backIcon + ' ' + classNames.backButton,\n attrs: { style: 'display:none;' }\n });\n this.headerEle.appendChild(hedBackButton);\n this.headerEle.appendChild(textEle);\n if (this.headerTemplate) {\n // eslint-disable-next-line\n var compiledString = compile(this.headerTemplate);\n var headerTemplateEle = this.createElement('div', { className: classNames.headerTemplateText });\n // eslint-disable-next-line\n var compiledElement = compiledString({}, this, prop, this.LISTVIEW_HEADERTEMPLATE_ID, null, null, this.headerEle);\n if (compiledElement) {\n append(compiledElement, headerTemplateEle);\n }\n append([headerTemplateEle], this.headerEle);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n if (this.headerTemplate && this.headerTitle) {\n textEle.classList.add('header');\n }\n this.element.classList.add('e-has-header');\n prepend([this.headerEle], this.element);\n }\n else if (this.headerEle) {\n if (this.showHeader) {\n this.headerEle.style.display = '';\n var textEle = this.headerEle.querySelector('.' + classNames.headerText);\n var hedBackButton = this.headerEle.querySelector('.' + classNames.backIcon);\n if (this.enableHtmlSanitizer) {\n text = SanitizeHtmlHelper.sanitize(text);\n }\n textEle.innerHTML = text;\n if (this.headerTemplate && showBack) {\n textEle.parentElement.classList.remove('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('nested-header');\n }\n if (this.headerTemplate && !showBack) {\n textEle.parentElement.classList.add('header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.remove('nested-header');\n this.headerEle.querySelector('.' + classNames.headerTemplateText).classList.add('header');\n }\n if (showBack === true) {\n hedBackButton.style.display = '';\n }\n else {\n hedBackButton.style.display = 'none';\n }\n }\n else {\n this.headerEle.style.display = 'none';\n }\n }\n };\n // Animation Related Functions\n ListView.prototype.switchView = function (fromView, toView, reverse) {\n var _this = this;\n if (fromView && toView) {\n var fPos_1 = fromView.style.position;\n var overflow_1 = (this.element.style.overflow !== 'hidden') ? this.element.style.overflow : '';\n fromView.style.position = 'absolute';\n fromView.classList.add('e-view');\n var anim = void 0;\n var duration = this.animation.duration;\n if (this.animation.effect) {\n anim = (this.enableRtl ? effectsRTLConfig[this.animation.effect] : effectsConfig[this.animation.effect]);\n }\n else {\n var slideLeft = 'SlideLeft';\n anim = effectsConfig[slideLeft];\n reverse = this.enableRtl;\n duration = 0;\n }\n this.element.style.overflow = 'hidden';\n this.aniObj.animate(fromView, {\n name: (reverse === true ? anim[0] : anim[1]),\n duration: duration,\n timingFunction: this.animation.easing,\n // eslint-disable-next-line\n end: function (model) {\n fromView.style.display = 'none';\n _this.element.style.overflow = overflow_1;\n fromView.style.position = fPos_1;\n fromView.classList.remove('e-view');\n }\n });\n toView.style.display = '';\n this.aniObj.animate(toView, {\n name: (reverse === true ? anim[2] : anim[3]),\n duration: duration,\n timingFunction: this.animation.easing,\n end: function () {\n _this.trigger('actionComplete');\n }\n });\n this.curUL = toView;\n }\n };\n ListView.prototype.preRender = function () {\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.setProperties({ template: document.querySelector(this.template).innerHTML.trim() }, true);\n }\n }\n catch (e) {\n compile(this.template);\n }\n }\n this.listBaseOption = {\n template: this.template,\n headerTemplate: this.headerTemplate,\n groupTemplate: this.groupTemplate, expandCollapse: true, listClass: '',\n ariaAttributes: {\n itemRole: 'listitem', listRole: 'group', itemText: '',\n groupItemRole: 'presentation', wrapperRole: 'presentation'\n },\n // eslint-disable-next-line\n fields: (this.fields.properties),\n sortOrder: this.sortOrder,\n showIcon: this.showIcon,\n itemCreated: this.renderCheckbox.bind(this),\n templateID: \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY,\n groupTemplateID: \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n };\n this.initialization();\n };\n ListView.prototype.initialization = function () {\n this.curDSLevel = [];\n this.animateOptions = {};\n this.curViewDS = [];\n this.currentLiElements = [];\n this.isNestedList = false;\n this.selectedData = [];\n this.selectedId = this.enablePersistence ? this.selectedId : [];\n this.LISTVIEW_TEMPLATE_ID = \"\" + this.element.id + LISTVIEW_TEMPLATE_PROPERTY;\n this.LISTVIEW_GROUPTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_GROUPTEMPLATE_PROPERTY;\n this.LISTVIEW_HEADERTEMPLATE_ID = \"\" + this.element.id + LISTVIEW_HEADERTEMPLATE_PROPERTY;\n this.aniObj = new Animation(this.animateOptions);\n this.removeElement(this.curUL);\n this.removeElement(this.ulElement);\n this.removeElement(this.headerEle);\n this.removeElement(this.contentContainer);\n this.curUL = this.ulElement = this.liCollection = this.headerEle = this.contentContainer = undefined;\n };\n ListView.prototype.renderCheckbox = function (args) {\n var _this = this;\n if (args.item.classList.contains(classNames.hasChild)) {\n this.isNestedList = true;\n }\n if (this.showCheckBox && this.isValidLI(args.item)) {\n var checkboxElement = void 0;\n var fieldData_1;\n // eslint-disable-next-line prefer-const\n checkboxElement = createCheckBox(this.createElement, false, {\n checked: false, enableRtl: this.enableRtl,\n cssClass: classNames.listviewCheckbox\n });\n checkboxElement.setAttribute('role', 'checkbox');\n var frameElement_1 = checkboxElement.querySelector('.' + classNames.checkboxIcon);\n args.item.classList.add(classNames.itemCheckList);\n args.item.firstElementChild.classList.add(classNames.checkbox);\n if (typeof this.dataSource[0] !== 'string' && typeof this.dataSource[0] !== 'number') {\n fieldData_1 = getFieldValues(args.curData, this.listBaseOption.fields);\n if (this.enablePersistence && !isNullOrUndefined(this.selectedId)) {\n var index = this.selectedId.findIndex(function (e) { return e == fieldData_1[_this.listBaseOption.fields.id].toString(); });\n if (index != -1) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (fieldData_1[this.listBaseOption.fields.isChecked]) {\n this.checkInternally(args, checkboxElement);\n }\n }\n else if (((typeof this.dataSource[0] === 'string' ||\n typeof this.dataSource[0] === 'number') && this.selectedData.indexOf(args.text) !== -1)) {\n this.checkInternally(args, checkboxElement);\n }\n checkboxElement.setAttribute('aria-checked', frameElement_1.classList.contains(classNames.checked) ? 'true' : 'false');\n checkboxElement.setAttribute('aria-label', 'checkbox');\n if (this.checkBoxPosition === 'Left') {\n checkboxElement.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.classList.add(classNames.checkboxLeft);\n args.item.firstElementChild.insertBefore(checkboxElement, args.item.firstElementChild.childNodes[0]);\n }\n else {\n checkboxElement.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.classList.add(classNames.checkboxRight);\n args.item.firstElementChild.appendChild(checkboxElement);\n }\n this.currentLiElements.push(args.item);\n if (this.checkBoxPosition === 'Left') {\n this.virtualCheckBox = args.item.firstElementChild.children[0];\n }\n else {\n this.virtualCheckBox = args.item.firstElementChild.lastElementChild;\n }\n }\n };\n ListView.prototype.checkInternally = function (args, checkboxElement) {\n args.item.classList.add(classNames.selected);\n checkboxElement.querySelector('.' + classNames.checkboxIcon).classList.add(classNames.checked);\n checkboxElement.setAttribute('aria-checked', 'true');\n };\n /**\n * Checks the specific list item by passing the unchecked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.checkItem = function (item) {\n this.toggleCheckBase(item, true);\n };\n ListView.prototype.toggleCheckBase = function (item, checked) {\n if (this.showCheckBox) {\n var liElement = item;\n if (item instanceof Object && item.constructor !== HTMLLIElement) {\n liElement = this.getLiFromObjOrElement(item);\n }\n if (!isNullOrUndefined(liElement)) {\n var checkboxIcon = liElement.querySelector('.' + classNames.checkboxIcon);\n if (checked === true) {\n liElement.classList.add(classNames.selected);\n }\n else {\n liElement.classList.remove(classNames.selected);\n }\n if (checked === true) {\n checkboxIcon.classList.add(classNames.checked);\n }\n else {\n checkboxIcon.classList.remove(classNames.checked);\n }\n checkboxIcon.parentElement.setAttribute('aria-checked', checked ? 'true' : 'false');\n }\n this.setSelectedItemData(liElement);\n this.updateSelectedId();\n }\n };\n /**\n * Uncheck the specific list item by passing the checked fields as an argument to this method.\n *\n * @param {Fields | HTMLElement | Element} item - It accepts Fields or HTML list element as an argument.\n */\n ListView.prototype.uncheckItem = function (item) {\n this.toggleCheckBase(item, false);\n };\n /**\n * Checks all the unchecked items in the ListView.\n */\n ListView.prototype.checkAllItems = function () {\n this.toggleAllCheckBase(true);\n };\n /**\n * Uncheck all the checked items in ListView.\n */\n ListView.prototype.uncheckAllItems = function () {\n this.toggleAllCheckBase(false);\n };\n ListView.prototype.toggleAllCheckBase = function (checked) {\n if (this.showCheckBox) {\n for (var i = 0; i < this.liCollection.length; i++) {\n var checkIcon = this.liCollection[i].querySelector('.' + classNames.checkboxIcon);\n if (checkIcon) {\n if (checked) {\n if (!checkIcon.classList.contains(classNames.checked)) {\n this.checkItem(this.liCollection[i]);\n }\n }\n else {\n if (checkIcon.classList.contains(classNames.checked)) {\n this.uncheckItem(this.liCollection[i]);\n }\n }\n }\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.checkedItem(checked);\n }\n this.updateSelectedId();\n }\n };\n ListView.prototype.setCheckbox = function () {\n if (this.showCheckBox) {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n var args = {\n item: undefined, curData: undefined, dataSource: undefined, fields: undefined,\n options: undefined, text: ''\n };\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n args.item = element;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n args.curData = this.getItemData(element);\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n this.renderCheckbox(args);\n if (args.item.classList.contains(classNames.selected)) {\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n }\n else {\n var liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.itemCheckList));\n for (var i = 0; i < liCollection.length; i++) {\n var element = liCollection[i];\n element.classList.remove(classNames.selected);\n element.firstElementChild.classList.remove(classNames.checkbox);\n this.removeElement(element.querySelector('.' + classNames.checkboxWrapper));\n }\n if (this.selectedItems) {\n this.selectedItems.item.classList.add(classNames.selected);\n }\n }\n };\n /**\n * Refresh the height of the list item only on enabling the virtualization property.\n */\n ListView.prototype.refreshItemHeight = function () {\n if (this.virtualizationModule) {\n this.virtualizationModule.refreshItemHeight();\n }\n };\n ListView.prototype.clickHandler = function (e) {\n var target = e.target;\n this.targetElement = target;\n var classList = target.classList;\n var closestElement;\n if (classList.contains(classNames.backIcon) || classList.contains(classNames.headerText)) {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n else {\n var li = closest(target.parentNode, '.' + classNames.listItem);\n if (li === null) {\n li = target;\n }\n this.removeFocus();\n if (this.enable && this.showCheckBox && this.isValidLI(li)) {\n if (e.target.classList.contains(classNames.checkboxIcon)) {\n li.classList.add(classNames.focused);\n if (isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n this.checkInternally(args, args.item.querySelector('.' + classNames.checkboxWrapper));\n }\n else {\n this.uncheckItem(li);\n li.classList.add(classNames.focused);\n }\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n if (e) {\n var eventArgs = this.selectEventData(li, e);\n var checkIcon = li.querySelector('.' + classNames.checkboxIcon);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n this.trigger('select', eventArgs);\n }\n }\n else if (li.classList.contains(classNames.hasChild)) {\n this.removeHover();\n this.removeSelect();\n this.removeSelect(li);\n this.setSelectLI(li, e);\n li.classList.remove(classNames.selected);\n }\n else {\n this.setCheckboxLI(li, e);\n if ((target.nodeName == \"INPUT\") || (target.nodeName == \"TEXTAREA\")) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n }\n else {\n this.setSelectLI(li, e);\n if ((target.nodeName == \"INPUT\") || (target.nodeName == \"TEXTAREA\")) {\n target.classList.add('e-focused');\n this.targetElement = target;\n }\n }\n closestElement = closest(e.target, 'li');\n if (!isNullOrUndefined(closestElement)) {\n if (closestElement.classList.contains('e-has-child') &&\n !e.target.parentElement.classList.contains('e-listview-checkbox')) {\n closestElement.classList.add(classNames.disable);\n }\n }\n }\n this.updateSelectedId();\n };\n ListView.prototype.removeElement = function (element) {\n return element && element.parentNode && element.parentNode.removeChild(element);\n };\n ListView.prototype.hoverHandler = function (e) {\n var curLi = closest(e.target.parentNode, '.' + classNames.listItem);\n this.setHoverLI(curLi);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ListView.prototype.leaveHandler = function (e) {\n this.removeHover();\n };\n ListView.prototype.homeKeyHandler = function (e, end) {\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelectorAll('.' + classNames.listItem);\n var focusedElement = this.curUL.querySelector('.' + classNames.focused) ||\n this.curUL.querySelector('.' + classNames.selected);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n focusedElement.classList.remove(classNames.selected);\n }\n }\n var index = !end ? 0 : li.length - 1;\n if (li[index].classList.contains(classNames.hasChild) || this.showCheckBox) {\n li[index].classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(li[index], e);\n }\n if (li[index]) {\n this.element.setAttribute('aria-activedescendant', li[index].id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n }\n };\n ListView.prototype.onArrowKeyDown = function (e, prev) {\n var siblingLI;\n var li;\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n if (hasChild || this.showCheckBox) {\n li = this.curUL.querySelector('.' + classNames.focused) || this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n if (!isNullOrUndefined(siblingLI)) {\n if (li) {\n li.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n li.classList.remove(classNames.selected);\n }\n }\n if (siblingLI.classList.contains(classNames.hasChild) || this.showCheckBox) {\n siblingLI.classList.add(classNames.focused);\n }\n else {\n this.setSelectLI(siblingLI, e);\n }\n }\n }\n else {\n li = this.curUL.querySelector('.' + classNames.selected);\n siblingLI = ListBase.getSiblingLI(this.curUL.querySelectorAll('.' + classNames.listItem), li, prev);\n this.setSelectLI(siblingLI, e);\n }\n if (siblingLI) {\n this.element.setAttribute('aria-activedescendant', siblingLI.id.toString());\n }\n else {\n this.element.removeAttribute('aria-activedescendant');\n }\n return siblingLI;\n };\n ListView.prototype.arrowKeyHandler = function (e, prev) {\n var _this = this;\n e.preventDefault();\n if (Object.keys(this.dataSource).length && this.curUL) {\n var siblingLI = this.onArrowKeyDown(e, prev);\n var elementTop = this.element.getBoundingClientRect().top;\n var elementHeight = this.element.getBoundingClientRect().height;\n var firstItemBounds = this.curUL.querySelector('.' + classNames.listItem).getBoundingClientRect();\n var heightDiff = void 0;\n var groupItemBounds = void 0;\n if (this.fields.groupBy) {\n groupItemBounds = this.curUL.querySelector('.' + classNames.groupListItem).getBoundingClientRect();\n }\n if (siblingLI) {\n var siblingTop = siblingLI.getBoundingClientRect().top;\n var siblingHeight = siblingLI.getBoundingClientRect().height;\n if (!prev) {\n var height = this.isWindow ? window.innerHeight : elementHeight;\n heightDiff = this.isWindow ? (siblingTop + siblingHeight) :\n ((siblingTop - elementTop) + siblingHeight);\n if (heightDiff > height) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + (heightDiff - height));\n }\n else {\n this.element.scrollTop = this.element.scrollTop + (heightDiff - height);\n }\n }\n }\n else {\n heightDiff = this.isWindow ? siblingTop : (siblingTop - elementTop);\n if (heightDiff < 0) {\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop + heightDiff;\n }\n }\n }\n }\n else if (this.enableVirtualization && prev && this.virtualizationModule.uiFirstIndex) {\n this.onUIScrolled = function () {\n _this.onArrowKeyDown(e, prev);\n _this.onUIScrolled = undefined;\n };\n heightDiff = this.virtualizationModule.listItemHeight;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n else if (prev) {\n if (this.showHeader && this.headerEle) {\n var topHeight = groupItemBounds ? groupItemBounds.top : firstItemBounds.top;\n var headerBounds = this.headerEle.getBoundingClientRect();\n heightDiff = headerBounds.top < 0 ? (headerBounds.height - topHeight) : 0;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset - heightDiff);\n }\n else {\n this.element.scrollTop = 0;\n }\n }\n else if (this.fields.groupBy) {\n heightDiff = this.isWindow ? (groupItemBounds.top < 0 ? groupItemBounds.top : 0) :\n (elementTop - firstItemBounds.top) + groupItemBounds.height;\n if (this.isWindow === true) {\n window.scroll(0, pageYOffset + heightDiff);\n }\n else {\n this.element.scrollTop = this.element.scrollTop - heightDiff;\n }\n }\n }\n }\n };\n ListView.prototype.enterKeyHandler = function (e) {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var hasChild = !isNullOrUndefined(this.curUL.querySelector('.' + classNames.hasChild)) ? true : false;\n var li = this.curUL.querySelector('.' + classNames.focused);\n if (hasChild && li) {\n li.classList.remove(classNames.focused);\n if (this.showCheckBox) {\n this.removeSelect();\n this.removeSelect(li);\n this.removeHover();\n }\n this.setSelectLI(li, e);\n }\n }\n };\n ListView.prototype.spaceKeyHandler = function (e) {\n e.preventDefault();\n if (this.enable && this.showCheckBox && Object.keys(this.dataSource).length && this.curUL) {\n var li = this.curUL.querySelector('.' + classNames.focused);\n var checkboxElement = void 0;\n var checkIcon = void 0;\n if (!isNullOrUndefined(li) && isNullOrUndefined(li.querySelector('.' + classNames.checked))) {\n var args = {\n curData: undefined, dataSource: undefined, fields: undefined, options: undefined,\n text: undefined, item: li\n };\n checkboxElement = args.item.querySelector('.' + classNames.checkboxWrapper);\n this.checkInternally(args, checkboxElement);\n checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n }\n else {\n this.uncheckItem(li);\n }\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon ? checkIcon.classList.contains(classNames.checked) : false });\n this.trigger('select', eventArgs);\n this.updateSelectedId();\n }\n };\n ListView.prototype.keyActionHandler = function (e) {\n switch (e.keyCode) {\n case 36:\n this.homeKeyHandler(e);\n break;\n case 35:\n this.homeKeyHandler(e, true);\n break;\n case 40:\n this.arrowKeyHandler(e);\n break;\n case 38:\n this.arrowKeyHandler(e, true);\n break;\n case 13:\n this.enterKeyHandler(e);\n break;\n case 8:\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n break;\n case 32:\n if (isNullOrUndefined(this.targetElement) || !(this.targetElement.classList.contains('e-focused'))) {\n this.spaceKeyHandler(e);\n }\n break;\n }\n };\n ListView.prototype.swipeActionHandler = function (e) {\n if (e.swipeDirection === 'Right' && e.velocity > swipeVelocity && e.originalEvent.type === 'touchend') {\n if (this.showCheckBox && this.curDSLevel[this.curDSLevel.length - 1]) {\n this.uncheckAllItems();\n }\n this.back();\n }\n };\n ListView.prototype.focusout = function () {\n if (Object.keys(this.dataSource).length && this.curUL) {\n var focusedElement = this.curUL.querySelector('.' + classNames.focused);\n if (focusedElement) {\n focusedElement.classList.remove(classNames.focused);\n if (!this.showCheckBox) {\n this.selectedLI.classList.add(classNames.selected);\n }\n }\n }\n };\n ListView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'keydown', this.keyActionHandler, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'mouseout', this.leaveHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusout, this);\n this.touchModule = new Touch(this.element, { swipe: this.swipeActionHandler.bind(this) });\n };\n ListView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'mouseout', this.leaveHandler);\n this.touchModule.destroy();\n };\n ListView.prototype.removeFocus = function () {\n var focusedLI = this.element.querySelectorAll('.' + classNames.focused);\n for (var _i = 0, focusedLI_1 = focusedLI; _i < focusedLI_1.length; _i++) {\n var ele = focusedLI_1[_i];\n ele.classList.remove(classNames.focused);\n }\n };\n ListView.prototype.removeHover = function () {\n var hoverLI = this.element.querySelector('.' + classNames.hover);\n if (hoverLI) {\n hoverLI.classList.remove(classNames.hover);\n }\n };\n ListView.prototype.removeSelect = function (li) {\n if (isNullOrUndefined(li)) {\n var selectedLI = this.element.querySelectorAll('.' + classNames.selected);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.showCheckBox && ele.querySelector('.' + classNames.checked)) {\n continue;\n }\n else {\n ele.classList.remove(classNames.selected);\n }\n }\n }\n else {\n li.classList.remove(classNames.selected);\n }\n };\n ListView.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(classNames.listItem)\n && !li.classList.contains(classNames.groupListItem)\n && !li.classList.contains(classNames.disable));\n };\n ListView.prototype.setCheckboxLI = function (li, e) {\n if (this.isValidLI(li) && this.enable && this.showCheckBox) {\n if (this.curUL.querySelector('.' + classNames.focused)) {\n this.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n var textAreaFocus = li.querySelector('textarea') || li.querySelector('input');\n li.classList.add(classNames.focused);\n if (!isNullOrUndefined(e)) {\n if (e.target === textAreaFocus) {\n textAreaFocus.classList.add('e-focused');\n }\n }\n var checkboxElement = li.querySelector('.' + classNames.checkboxWrapper);\n var checkIcon = checkboxElement.querySelector('.' + classNames.checkboxIcon + '.' + classNames.icon);\n this.removeHover();\n if (!checkIcon.classList.contains(classNames.checked)) {\n checkIcon.classList.add(classNames.checked);\n li.classList.add(classNames.selected);\n }\n else {\n checkIcon.classList.remove(classNames.checked);\n li.classList.remove(classNames.selected);\n }\n checkboxElement.setAttribute('aria-checked', checkIcon.classList.contains(classNames.checked) ?\n 'true' : 'false');\n var eventArgs = this.selectEventData(li, e);\n merge(eventArgs, { isChecked: checkIcon.classList.contains(classNames.checked) });\n if (this.enableVirtualization) {\n this.virtualizationModule.setCheckboxLI(li, e);\n }\n this.trigger('select', eventArgs);\n this.setSelectedItemData(li);\n this.renderSubList(li);\n }\n };\n ListView.prototype.selectEventData = function (li, e) {\n var data = this.getItemData(li);\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n var selectedItem;\n if (!isNullOrUndefined(data)\n && typeof this.dataSource[0] === 'string' || typeof this.dataSource[0] === 'number') {\n selectedItem = { item: li, text: li && li.innerText.trim(), data: this.dataSource };\n }\n else {\n selectedItem =\n // eslint-disable-next-line\n {\n item: li, text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n var eventArgs = {};\n merge(eventArgs, selectedItem);\n if (e) {\n merge(eventArgs, { isInteracted: true, event: e, cancel: false, index: this.curUL && Array.prototype.indexOf.call(this.curUL.children, li) });\n }\n return eventArgs;\n };\n ListView.prototype.setSelectedItemData = function (li) {\n var data = this.getItemData(li);\n // eslint-disable-next-line\n var fieldData = getFieldValues(data, this.listBaseOption.fields);\n if (!isNullOrUndefined(data) && ((typeof this.dataSource[0] === 'string') ||\n (typeof this.dataSource[0] === 'number'))) {\n this.selectedItems = {\n item: li,\n text: li && li.innerText.trim(),\n data: this.dataSource\n };\n }\n else {\n this.selectedItems = {\n item: li,\n // eslint-disable-next-line\n text: fieldData && fieldData[this.listBaseOption.fields.text],\n // eslint-disable-next-line\n data: data\n };\n }\n };\n ListView.prototype.setSelectLI = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && !li.classList.contains(classNames.selected) && this.enable) {\n if (!this.showCheckBox) {\n this.removeSelect();\n }\n li.classList.add(classNames.selected);\n this.removeHover();\n this.setSelectedItemData(li);\n if (this.enableVirtualization) {\n this.virtualizationModule.setSelectLI(li, e);\n }\n var eventArgs = this.selectEventData(li, e);\n this.trigger('select', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.selectedLI = li;\n _this.renderSubList(li);\n }\n });\n }\n };\n ListView.prototype.setHoverLI = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(classNames.hover) && this.enable) {\n var lastLi = this.element.querySelectorAll('.' + classNames.hover);\n if (lastLi && lastLi.length) {\n removeClass(lastLi, classNames.hover);\n }\n if (!li.classList.contains(classNames.selected) || this.showCheckBox) {\n li.classList.add(classNames.hover);\n }\n }\n };\n //Data Source Related Functions\n ListView.prototype.getSubDS = function () {\n var levelKeys = this.curDSLevel;\n if (levelKeys.length) {\n var ds = this.localData;\n for (var _i = 0, levelKeys_1 = levelKeys; _i < levelKeys_1.length; _i++) {\n var key = levelKeys_1[_i];\n var field = {};\n // eslint-disable-next-line\n field[this.fields.id] = key;\n this.curDSJSON = this.findItemFromDS(ds, field);\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n ds = this.curDSJSON ? fieldData[this.fields.child] : ds;\n }\n return ds;\n }\n return this.localData;\n };\n ListView.prototype.getItemData = function (li) {\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n var fields = this.getElementUID(li);\n var curDS;\n if (isNullOrUndefined(this.element.querySelector('.' + classNames.hasChild)) && this.fields.groupBy) {\n curDS = this.curViewDS;\n }\n else {\n curDS = dataSource;\n }\n return this.findItemFromDS(curDS, fields);\n };\n ListView.prototype.findItemFromDS = function (dataSource, fields, parent) {\n var _this = this;\n var resultJSON;\n if (dataSource && dataSource.length && fields) {\n dataSource.some(function (data) {\n var fieldData = \n // eslint-disable-next-line\n getFieldValues(data, _this.listBaseOption.fields);\n //(!(fid) || id === fid) && (!(ftext) || text === ftext) && (!!fid || !!ftext)\n if ((fields[_this.fields.id] || fields[_this.fields.text]) &&\n (!fields[_this.fields.id] || (!isNullOrUndefined(fieldData[_this.fields.id]) &&\n fieldData[_this.fields.id].toString()) === fields[_this.fields.id].toString()) &&\n (!fields[_this.fields.text] || fieldData[_this.fields.text] === fields[_this.fields.text])) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (typeof data !== 'object' && dataSource.indexOf(data) !== -1) {\n resultJSON = (parent ? dataSource : data);\n }\n else if (!isNullOrUndefined(fields[_this.fields.id]) && isNullOrUndefined(fieldData[_this.fields.id])) {\n var li = _this.element.querySelector('[data-uid=\"'\n + fields[_this.fields.id] + '\"]');\n // eslint-disable-next-line\n if (li && li.innerText.trim() === fieldData[_this.fields.text]) {\n resultJSON = data;\n }\n // eslint-disable-next-line\n }\n else if (fieldData.hasOwnProperty(_this.fields.child) && fieldData[_this.fields.child].length) {\n resultJSON = _this.findItemFromDS(fieldData[_this.fields.child], fields, parent);\n }\n return !!resultJSON;\n });\n }\n else {\n resultJSON = dataSource;\n }\n return resultJSON;\n };\n ListView.prototype.getQuery = function () {\n var columns = [];\n var query = (this.query ? this.query : new Query());\n if (!this.query) {\n // eslint-disable-next-line\n for (var _i = 0, _a = Object.keys(this.fields.properties); _i < _a.length; _i++) {\n var column = _a[_i];\n if (column !== 'tableName' && !!(this.fields[column]) &&\n this.fields[column] !==\n ListBase.defaultMappedFields[column]\n && columns.indexOf(this.fields[column]) === -1) {\n columns.push(this.fields[column]);\n }\n }\n query.select(columns);\n // eslint-disable-next-line\n if (this.fields.properties.hasOwnProperty('tableName')) {\n query.from(this.fields.tableName);\n }\n }\n return query;\n };\n ListView.prototype.setViewDataSource = function (dataSource) {\n if (dataSource === void 0) { dataSource = this.localData; }\n // eslint-disable-next-line\n var fieldValue = (isNullOrUndefined(this.fields.sortBy)) ? this.fields.text : this.fields.sortBy;\n var query = ListBase.addSorting(this.sortOrder, fieldValue);\n if (dataSource && this.fields.groupBy) {\n if (this.sortOrder !== 'None') {\n this.curViewDS = ListBase.groupDataSource(ListBase.getDataSource(dataSource, query), this.listBaseOption.fields, this.sortOrder);\n }\n else {\n this.curViewDS = ListBase.groupDataSource(dataSource, this.listBaseOption.fields, this.sortOrder);\n }\n }\n else if (dataSource && this.sortOrder !== 'None') {\n this.curViewDS = ListBase.getDataSource(dataSource, query);\n }\n else {\n this.curViewDS = dataSource;\n }\n };\n ListView.prototype.isInAnimation = function () {\n return this.curUL.classList.contains('.e-animate');\n };\n ListView.prototype.renderRemoteLists = function (e, listViewComponent) {\n if (this.isDestroyed) {\n return;\n }\n this.localData = e.result;\n listViewComponent.removeElement(listViewComponent.contentContainer);\n this.renderList();\n this.trigger('actionComplete', e);\n };\n ListView.prototype.triggerActionFailure = function (e) {\n if (this.isDestroyed) {\n return;\n }\n this.trigger('actionFailure', e);\n };\n ListView.prototype.setLocalData = function () {\n var _this = this;\n this.trigger('actionBegin');\n // eslint-disable-next-line\n var listViewComponent = this;\n if (this.dataSource instanceof DataManager) {\n if (this.dataSource.ready) {\n this.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.dataSource.dataSource.offline;\n if (_this.dataSource instanceof DataManager && _this.isOffline) {\n _this.renderRemoteLists(e, listViewComponent);\n }\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n else {\n this.dataSource.executeQuery(this.getQuery()).then(function (e) {\n _this.renderRemoteLists(e, listViewComponent);\n }).catch(function (e) {\n _this.triggerActionFailure(e);\n });\n }\n }\n else if (!this.dataSource || !this.dataSource.length) {\n var ul = this.element.querySelector('ul');\n if (ul) {\n remove(ul);\n this.setProperties({ dataSource: ListBase.createJsonFromElement(ul) }, true);\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n }\n else {\n this.localData = this.dataSource;\n this.renderList();\n this.trigger('actionComplete', { data: this.localData });\n }\n };\n ListView.prototype.reRender = function () {\n this.removeElement(this.headerEle);\n this.removeElement(this.ulElement);\n this.removeElement(this.contentContainer);\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (Object.keys(window).indexOf('ejsInterop') === -1) {\n this.element.innerHTML = '';\n }\n this.headerEle = this.ulElement = this.liCollection = undefined;\n this.header();\n this.setLocalData();\n };\n ListView.prototype.resetCurrentList = function () {\n this.setViewDataSource(this.curViewDS);\n this.contentContainer.innerHTML = '';\n this.createList();\n this.renderIntoDom(this.curUL);\n };\n ListView.prototype.setAttributes = function (liElements) {\n for (var i = 0; i < liElements.length; i++) {\n var element = liElements[i];\n if (element.classList.contains('e-list-item')) {\n element.setAttribute('id', this.element.id + '_' + element.getAttribute('data-uid'));\n element.setAttribute('tabindex', '-1');\n }\n }\n };\n ListView.prototype.createList = function () {\n this.currentLiElements = [];\n this.isNestedList = false;\n this.ulElement = this.curUL = ListBase.createList(this.createElement, this.curViewDS, this.listBaseOption, null, this);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(this.liCollection);\n };\n ListView.prototype.exceptionEvent = function (e) {\n this.trigger('actionFailure', e);\n };\n ListView.prototype.UpdateCurrentUL = function () {\n this.ulElement = this.curUL = this.element.querySelector('.' + classNames.parentItem);\n if (this.curUL) {\n // eslint-disable-next-line\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n };\n ListView.prototype.renderSubList = function (li) {\n this.liElement = li;\n var uID = li.getAttribute('data-uid');\n if (li.classList.contains(classNames.hasChild) && uID) {\n var ul = closest(li.parentNode, '.' + classNames.parentItem);\n var ele = this.element.querySelector('[pid=\\'' + uID + '\\']');\n this.curDSLevel.push(uID);\n this.setViewDataSource(this.getSubDS());\n if (!ele) {\n var data = this.curViewDS;\n ele = ListBase.createListFromJson(this.createElement, data, this.listBaseOption, this.curDSLevel.length, null, this);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var lists = ele.querySelectorAll('.' + classNames.listItem);\n this.setAttributes(lists);\n ele.setAttribute('pID', uID);\n ele.style.display = 'none';\n this.renderIntoDom(ele);\n }\n this.switchView(ul, ele);\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.selectedItems) {\n var fieldData = getFieldValues(this.selectedItems.data, this.listBaseOption.fields);\n // eslint-disable-next-line\n this.header((fieldData[this.listBaseOption.fields.text]), true, 'header');\n }\n this.selectedLI = undefined;\n }\n };\n ListView.prototype.renderIntoDom = function (ele) {\n this.contentContainer.appendChild(ele);\n };\n ListView.prototype.renderList = function (data) {\n this.setViewDataSource(data);\n if (this.enableVirtualization) {\n if (Object.keys(this.dataSource).length) {\n if ((this.template || this.groupTemplate) && !this.virtualizationModule.isNgTemplate()) {\n if (this.isReact || this.isVue) {\n if (typeof this.template == \"string\") {\n this.listBaseOption.template = null;\n }\n if (typeof this.groupTemplate == \"string\") {\n this.listBaseOption.groupTemplate = null;\n }\n }\n else {\n this.listBaseOption.template = null;\n this.listBaseOption.groupTemplate = null;\n }\n this.listBaseOption.itemCreated = this.virtualizationModule.createUIItem.bind(this.virtualizationModule);\n }\n }\n this.virtualizationModule.uiVirtualization();\n }\n else {\n this.createList();\n this.contentContainer = this.createElement('div', { className: classNames.content });\n this.element.appendChild(this.contentContainer);\n this.renderIntoDom(this.ulElement);\n // eslint-disable-next-line\n if (this.isReact) {\n this.renderReactTemplates();\n }\n }\n };\n ListView.prototype.getElementUID = function (obj) {\n var fields = {};\n if (obj instanceof Element) {\n // eslint-disable-next-line\n fields[this.fields.id] = obj.getAttribute('data-uid');\n }\n else {\n fields = obj;\n }\n return fields;\n };\n /**\n * Initializes the ListView component rendering.\n */\n ListView.prototype.render = function () {\n this.element.classList.add(classNames.root);\n attributes(this.element, { role: 'list', tabindex: '0' });\n this.setCSSClass();\n this.setEnableRTL();\n this.setEnable();\n this.setSize();\n this.wireEvents();\n this.header();\n this.setLocalData();\n this.setHTMLAttribute();\n this.rippleFn = rippleEffect(this.element, {\n selector: '.' + classNames.listItem\n });\n this.renderComplete();\n };\n /**\n * It is used to destroy the ListView component.\n */\n ListView.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n this.unWireEvents();\n var classAr = [classNames.root, classNames.disable, 'e-rtl',\n 'e-has-header', 'e-lib'].concat(this.cssClass.split(' ').filter(function (css) { return css; }));\n removeClass([this.element], classAr);\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n this.curUL = this.ulElement = this.liCollection = this.headerEle = undefined;\n this.element.innerHTML = '';\n _super.prototype.destroy.call(this);\n };\n /**\n * Switches back from the navigated sub list item.\n */\n ListView.prototype.back = function () {\n var pID = this.curDSLevel[this.curDSLevel.length - 1];\n if (pID === undefined || this.isInAnimation()) {\n return;\n }\n this.curDSLevel.pop();\n this.setViewDataSource(this.getSubDS());\n var toUL = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n var fromUL = this.curUL;\n if (!toUL) {\n this.createList();\n this.renderIntoDom(this.ulElement);\n toUL = this.curUL;\n }\n else {\n toUL = toUL.parentElement;\n }\n var fieldData = getFieldValues(this.curDSJSON, this.listBaseOption.fields);\n // eslint-disable-next-line\n var text = fieldData[this.fields.text];\n this.switchView(fromUL, toUL, true);\n this.removeFocus();\n var li = this.element.querySelector('[data-uid=\\'' + pID + '\\']');\n li.classList.remove(classNames.disable);\n li.classList.add(classNames.focused);\n if (!(this.showCheckBox && li.querySelector('.' + classNames.checkboxIcon).classList.contains(classNames.checked))) {\n li.classList.remove(classNames.selected);\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n if (this.enableHtmlSanitizer) {\n this.setProperties({ headerTitle: SanitizeHtmlHelper.sanitize(this.headerTitle) }, true);\n }\n this.header((this.curDSLevel.length ? text : this.headerTitle), (this.curDSLevel.length ? true : false), 'header');\n };\n /**\n * Selects the list item from the ListView by passing the elements or field object.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.selectItem = function (item) {\n if (this.enableVirtualization) {\n this.virtualizationModule.selectItem(item);\n }\n else if (this.showCheckBox) {\n this.setCheckboxLI(this.getLiFromObjOrElement(item));\n }\n else {\n if (isNullOrUndefined(item) === true) {\n this.removeSelect();\n }\n else {\n this.setSelectLI(this.getLiFromObjOrElement(item));\n }\n }\n };\n ListView.prototype.getLiFromObjOrElement = function (obj) {\n var li;\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (!isNullOrUndefined(obj)) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n if (obj instanceof Element) {\n var uid = obj.getAttribute('data-uid').toString();\n for (var i = 0; i < this.liCollection.length; i++) {\n if (this.liCollection[i].getAttribute('data-uid').toString() === uid) {\n li = this.liCollection[i];\n break;\n }\n }\n }\n else {\n Array.prototype.some.call(this.curUL.querySelectorAll('.' + classNames.listItem), function (item) {\n if (item.innerText.trim() === obj.toString()) {\n li = item;\n return true;\n }\n else {\n return false;\n }\n });\n }\n }\n else {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n li = this.element.querySelector('[data-uid=\"'\n + fieldData[this.fields.id] + '\"]');\n if (!this.enableVirtualization && isNullOrUndefined(li)) {\n var curLi = this.element.querySelectorAll('.' + classNames.listItem);\n for (var i = 0; i < curLi.length; i++) {\n // eslint-disable-next-line\n if (curLi[i].innerText.trim() === fieldData[this.fields.text]) {\n li = curLi[i];\n }\n }\n }\n }\n }\n }\n return li;\n };\n /**\n * Selects multiple list items from the ListView.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of\n * elements or array of fields Object with ID and Text fields.\n */\n ListView.prototype.selectMultipleItems = function (item) {\n if (!isNullOrUndefined(item)) {\n for (var i = 0; i < item.length; i++) {\n if (!isNullOrUndefined(item[i])) {\n this.selectItem(item[i]);\n }\n }\n }\n };\n ListView.prototype.getParentId = function () {\n var parentId = [];\n if (this.isNestedList) {\n for (var i = this.curDSLevel.length - 1; i >= 0; i--) {\n parentId.push(this.curDSLevel[i]);\n }\n }\n return parentId;\n };\n ListView.prototype.updateSelectedId = function () {\n this.selectedId = [];\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n for (var i = 0; i < liCollection.length; i++) {\n var tempData = this.getItemData(liCollection[i]);\n if (tempData[this.listBaseOption.fields.id]) {\n this.selectedId.push(tempData[this.listBaseOption.fields.id]);\n }\n }\n };\n /**\n * Gets the details of the currently selected item from the list items.\n *\n */\n ListView.prototype.getSelectedItems = function () {\n // eslint-disable-next-line\n var finalValue;\n var isCompleted = false;\n this.selectedId = [];\n var dataSource = this.dataSource instanceof DataManager ?\n this.localData : this.dataSource;\n if (this.enableVirtualization && !isCompleted) {\n finalValue = this.virtualizationModule.getSelectedItems();\n isCompleted = true;\n }\n else if (this.showCheckBox && !isCompleted) {\n // eslint-disable-next-line\n var liCollection = this.curUL.getElementsByClassName(classNames.selected);\n var liTextCollection = [];\n var liDataCollection = [];\n this.selectedId = [];\n var dataParent = [];\n for (var i = 0; i < liCollection.length; i++) {\n if (typeof dataSource[0] === 'string' || typeof dataSource[0] === 'number') {\n liTextCollection.push(liCollection[i].innerText.trim());\n }\n else {\n var tempData = this.getItemData(liCollection[i]);\n var fieldData = getFieldValues(tempData, this.listBaseOption.fields);\n if (this.isNestedList) {\n dataParent.push({ data: tempData, parentId: this.getParentId() });\n }\n else {\n liDataCollection.push(tempData);\n }\n if (fieldData) {\n // eslint-disable-next-line\n liTextCollection.push(fieldData[this.listBaseOption.fields.text]);\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n }\n else {\n liTextCollection.push(undefined);\n this.selectedId.push(undefined);\n }\n }\n }\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = { item: liCollection, data: dataSource, text: liTextCollection };\n isCompleted = true;\n }\n if (this.isNestedList && !isCompleted) {\n finalValue = { item: liCollection, data: dataParent, text: liTextCollection };\n isCompleted = true;\n }\n else if (!isCompleted) {\n finalValue = { item: liCollection, data: liDataCollection, text: liTextCollection };\n isCompleted = true;\n }\n }\n else if (!isCompleted) {\n var liElement = this.element.getElementsByClassName(classNames.selected)[0];\n var fieldData = getFieldValues(this.getItemData(liElement), this.listBaseOption.fields);\n if ((typeof dataSource[0] === 'string'\n || typeof dataSource[0] === 'number')\n && !isCompleted) {\n finalValue = (!isNullOrUndefined(liElement)) ? {\n item: liElement, data: dataSource,\n text: liElement.innerText.trim()\n } : undefined;\n isCompleted = true;\n }\n else if (!isCompleted) {\n if (isNullOrUndefined(fieldData) || isNullOrUndefined(liElement)) {\n finalValue = undefined;\n isCompleted = true;\n }\n else {\n // eslint-disable-next-line\n this.selectedId.push(fieldData[this.listBaseOption.fields.id]);\n finalValue = {\n text: fieldData[this.listBaseOption.fields.text], item: liElement,\n data: this.getItemData(liElement)\n };\n isCompleted = true;\n }\n }\n }\n return finalValue;\n };\n /**\n * Finds out an item details from the current list.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.findItem = function (item) {\n return this.getItemData(item);\n };\n /**\n * Enables the disabled list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.enableItem = function (item) {\n this.setItemState(item, true);\n if (this.enableVirtualization) {\n this.virtualizationModule.enableItem(item);\n }\n };\n /**\n * Disables the list items by passing the Id and text fields.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.disableItem = function (item) {\n this.setItemState(item, false);\n if (this.enableVirtualization) {\n this.virtualizationModule.disableItem(item);\n }\n };\n //A function that used to set state of the list item like enable, disable.\n ListView.prototype.setItemState = function (item, isEnable) {\n var resultJSON = this.getItemData(item);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (isEnable) {\n if (li) {\n li.classList.remove(classNames.disable);\n }\n delete resultJSON[this.fields.enabled];\n }\n else if (!isEnable) {\n if (li) {\n li.classList.add(classNames.disable);\n }\n // eslint-disable-next-line\n resultJSON[this.fields.enabled] = false;\n }\n }\n };\n /**\n * Shows the hide list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.showItem = function (item) {\n this.showHideItem(item, false, '');\n if (this.enableVirtualization) {\n this.virtualizationModule.showItem(item);\n }\n };\n /**\n * Hides an list item from the ListView.\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.hideItem = function (item) {\n this.showHideItem(item, true, 'none');\n if (this.enableVirtualization) {\n this.virtualizationModule.hideItem(item);\n }\n };\n ListView.prototype.showHideItem = function (obj, isHide, display) {\n var resultJSON = this.getItemData(obj);\n var fieldData = getFieldValues(resultJSON, this.listBaseOption.fields);\n if (resultJSON) {\n var li = this.element.querySelector('[data-uid=\"' + fieldData[this.fields.id] + '\"]');\n if (li) {\n li.style.display = display;\n }\n if (isHide) {\n // eslint-disable-next-line\n resultJSON[this.fields.isVisible] = false;\n }\n else {\n delete resultJSON[this.fields.isVisible];\n }\n }\n };\n /**\n * Adds the new list item(s) to the current ListView.\n * To add a new list item(s) in the ListView, we need to pass the `data` as an array of items that need\n * to be added and `fields` as the target item to which we need to add the given item(s) as its children.\n * For example fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {{Object}[]} data - JSON Array Data that need to add.\n *\n * @param {Fields} fields - Target item to add the given data as its children (can be null).\n *\n */\n ListView.prototype.addItem = function (data, fields) {\n if (fields === void 0) { fields = undefined; }\n var dataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n this.addItemInternally(data, fields, dataSource);\n };\n ListView.prototype.addItemInternally = function (data, fields, dataSource) {\n if (data instanceof Array) {\n if (this.enableVirtualization) {\n this.virtualizationModule.addItem(data, fields, dataSource);\n }\n else {\n var ds = this.findItemFromDS(dataSource, fields);\n var child = void 0;\n if (ds) {\n var fieldData = getFieldValues(ds, this.listBaseOption.fields);\n child = fieldData[this.fields.child];\n if (!child) {\n child = [];\n }\n child = child.concat(data);\n }\n // check for whether target is nested level or top level in list\n if (ds instanceof Array) {\n for (var i = 0; i < data.length; i++) {\n dataSource.push(data[i]);\n this.setViewDataSource(dataSource);\n // since it is top level target, get the content container's first child\n // as it is always the top level UL\n var targetUL = this.contentContainer\n ? this.contentContainer.children[0]\n : null;\n // check for whether the list was previously empty or not, if it is\n // proceed to call initial render\n if (this.contentContainer && targetUL) {\n this.addItemIntoDom(data[i], targetUL, this.curViewDS);\n }\n else {\n this.reRender();\n }\n }\n this.liCollection = this.curUL.querySelectorAll('.' + classNames.listItem);\n }\n else {\n // proceed as target item is in nested level, only if it is a valid target ds\n if (ds) {\n ds[this.fields.child] = child;\n this.addItemInNestedList(ds, data);\n }\n }\n }\n }\n };\n ListView.prototype.addItemInNestedList = function (targetItemData, itemQueue) {\n // eslint-disable-next-line\n var targetItemId = targetItemData[this.fields.id];\n var targetChildDS = targetItemData[this.fields.child];\n var isAlreadyRenderedUL = this.element.querySelector('[pid=\\'' + targetItemId + '\\']');\n var targetLi = this.element.querySelector('[data-uid=\\'' + targetItemId + '\\']');\n var targetUL = isAlreadyRenderedUL\n ? isAlreadyRenderedUL\n : targetLi\n ? closest(targetLi, 'ul')\n : null;\n var targetDS = isAlreadyRenderedUL ? targetChildDS : [targetItemData];\n var isTargetEmptyChild = targetLi ? !targetLi.classList.contains(classNames.hasChild) : false;\n if (isTargetEmptyChild) {\n var targetRefreshedElement = ListBase.createListItemFromJson(this.createElement, targetDS, this.listBaseOption, null, null, this);\n this.setAttributes(targetRefreshedElement);\n targetUL.insertBefore(targetRefreshedElement[0], targetLi);\n detach(targetLi);\n \n }\n // if it is already rendered element, we need to create and append new elements\n if (isAlreadyRenderedUL && itemQueue) {\n for (var i = 0; i < itemQueue.length; i++) {\n targetDS.push(itemQueue[i]);\n this.addItemIntoDom(itemQueue[i], targetUL, targetDS);\n }\n \n }\n };\n ListView.prototype.addItemIntoDom = function (currentItem, targetUL, curViewDS) {\n var index = curViewDS.indexOf(currentItem);\n this.addListItem(currentItem, index, targetUL, curViewDS);\n var curItemDS = curViewDS[index - 1];\n if (curItemDS && curItemDS.isHeader && curItemDS.items.length === 1) {\n this.addListItem(curItemDS, (index - 1), targetUL, curViewDS);\n }\n };\n ListView.prototype.addListItem = function (dataSource, index, ulElement, curViewDS) {\n var target = this.getLiFromObjOrElement(curViewDS[index + 1]) ||\n this.getLiFromObjOrElement(curViewDS[index + 2]) || null;\n var li = ListBase.createListItemFromJson(this.createElement, [dataSource], this.listBaseOption, null, null, this);\n this.setAttributes(li);\n // eslint-disable-next-line\n if (this.template && this.isReact) {\n this.renderReactTemplates();\n }\n if (this.fields.groupBy && curViewDS[index + 1] && curViewDS[index + 1].isHeader) {\n var targetEle = this.getLiFromObjOrElement(curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n ulElement.insertBefore(li[0], target);\n };\n /**\n * Removes the list item from the data source based on a passed\n * element like fields: { text: 'Name', tooltip: 'Name', id:'id'}\n *\n * @param {Fields | HTMLElement | Element} item - We can pass element Object or Fields as Object with ID and Text fields.\n */\n ListView.prototype.removeItem = function (item) {\n var listDataSource = this.dataSource instanceof DataManager\n ? this.localData : this.dataSource;\n if (this.enableVirtualization) {\n this.virtualizationModule.removeItem(item);\n }\n else {\n this.removeItemFromList(item, listDataSource);\n }\n };\n ListView.prototype.removeItemFromList = function (obj, listDataSource) {\n var _this = this;\n var curViewDS = this.curViewDS;\n var fields = obj instanceof Element ? this.getElementUID(obj) : obj;\n var dataSource;\n // eslint-disable-next-line prefer-const\n dataSource = this.findItemFromDS(listDataSource, fields, true);\n if (dataSource) {\n var data_1;\n // eslint-disable-next-line prefer-const\n data_1 = this.findItemFromDS(dataSource, fields);\n var index = curViewDS.indexOf(data_1);\n var li = this.getLiFromObjOrElement(obj);\n var groupLi = void 0;\n this.validateNestedView(li);\n if (this.fields.groupBy && this.curViewDS[index - 1] &&\n curViewDS[index - 1].isHeader &&\n curViewDS[index - 1].items.length === 1) {\n if (li && li.previousElementSibling.classList.contains(classNames.groupListItem) &&\n (isNullOrUndefined(li.nextElementSibling) || (li.nextElementSibling &&\n li.nextElementSibling.classList.contains(classNames.groupListItem)))) {\n groupLi = li.previousElementSibling;\n }\n }\n if (li) {\n detach(li);\n }\n if (groupLi) {\n detach(groupLi);\n }\n // eslint-disable-next-line\n var foundData = (dataSource.length - 1) <= 0\n ? this.findParent(this.localData, this.fields.id, \n // eslint-disable-next-line\n function (value) { return value === data_1[_this.fields.id]; }, null) : null;\n var dsIndex = dataSource.indexOf(data_1);\n dataSource.splice(dsIndex, 1);\n this.setViewDataSource(listDataSource);\n if (foundData\n && foundData.parent\n && Array.isArray(foundData.parent[this.fields.child])\n && foundData.parent[this.fields.child].length <= 0) {\n var parentLi = this.getLiFromObjOrElement(foundData.parent);\n if (parentLi) {\n var li_1 = ListBase.createListItemFromJson(this.createElement, [foundData.parent], this.listBaseOption, null, null, this);\n this.setAttributes(li_1);\n parentLi.parentElement.insertBefore(li_1[0], parentLi);\n parentLi.parentElement.removeChild(parentLi);\n }\n }\n if (dataSource.length <= 0) {\n this.back();\n }\n this.liCollection = Array.prototype.slice.call(this.element.querySelectorAll('.' + classNames.listItem));\n }\n };\n // validate before removing an element whether the current view is inside target element's child view\n ListView.prototype.validateNestedView = function (li) {\n var liID = li ? li.getAttribute('data-uid').toString().toLowerCase() : null;\n if (liID && this.curDSLevel && this.curDSLevel.length > 0) {\n while (this.curDSLevel.some(function (id) { return id.toString().toLowerCase() === liID; })) {\n this.back();\n }\n }\n };\n /**\n * Removes multiple items from the ListView by passing the array of elements or array of field objects.\n *\n * @param {Fields[] | HTMLElement[] | Element[]} item - We can pass array of elements or array of field Object with ID and Text fields.\n */\n ListView.prototype.removeMultipleItems = function (item) {\n if (item.length) {\n for (var i = 0; i < item.length; i++) {\n this.removeItem(item[i]);\n }\n }\n };\n // eslint-disable-next-line\n ListView.prototype.findParent = function (dataSource, id, callback, parent) {\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource.hasOwnProperty(id) && callback(dataSource[id]) === true) {\n return extend({}, dataSource);\n }\n for (var i = 0; i < Object.keys(dataSource).length; i++) {\n if (dataSource[Object.keys(dataSource)[i]]\n && typeof dataSource[Object.keys(dataSource)[i]] === 'object') {\n // eslint-disable-next-line\n var result = this.findParent(dataSource[Object.keys(dataSource)[i]], id, callback, dataSource);\n if (result != null) {\n if (!result.parent) {\n result.parent = parent;\n }\n return result;\n }\n }\n }\n return null;\n };\n // Module Required function\n ListView.prototype.getModuleName = function () {\n return 'listview';\n };\n ListView.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'virtualization' });\n }\n return modules;\n };\n /**\n * Get the properties to be maintained in the persisted state.\n */\n ListView.prototype.getPersistData = function () {\n return this.addOnPersist(['cssClass', 'enableRtl', 'htmlAttributes',\n 'enable', 'fields', 'animation', 'headerTitle',\n 'sortOrder', 'showIcon', 'height', 'width', 'showCheckBox', 'checkBoxPosition', 'selectedId']);\n };\n __decorate([\n Property('')\n ], ListView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property({})\n ], ListView.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], ListView.prototype, \"enable\", void 0);\n __decorate([\n Property([])\n ], ListView.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], ListView.prototype, \"query\", void 0);\n __decorate([\n Complex(ListBase.defaultMappedFields, FieldSettings)\n ], ListView.prototype, \"fields\", void 0);\n __decorate([\n Property({ effect: 'SlideLeft', duration: 400, easing: 'ease' })\n ], ListView.prototype, \"animation\", void 0);\n __decorate([\n Property('None')\n ], ListView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showIcon\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property('Left')\n ], ListView.prototype, \"checkBoxPosition\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"headerTitle\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"showHeader\", void 0);\n __decorate([\n Property(false)\n ], ListView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], ListView.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"template\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], ListView.prototype, \"groupTemplate\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], ListView.prototype, \"actionFailure\", void 0);\n ListView = __decorate([\n NotifyPropertyChanges\n ], ListView);\n return ListView;\n}(Component));\n\nvar listElementCount = 1.5;\nvar windowElementCount = 3;\nvar Virtualization = /** @__PURE__ @class */ (function () {\n function Virtualization(instance) {\n this.elementDifference = 0;\n this.listViewInstance = instance;\n }\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.isNgTemplate = function () {\n return !isNullOrUndefined(this.listViewInstance.templateRef) && typeof this.listViewInstance.templateRef !== 'string';\n };\n /**\n * Checks if the platform is a Vue and its template property is a function type.\n *\n * @returns {boolean} indicating the result of the check\n */\n Virtualization.prototype.isVueFunctionTemplate = function () {\n return this.listViewInstance.isVue && typeof this.listViewInstance.template === 'function';\n };\n /**\n * For internal use only.\n *\n * @private\n */\n Virtualization.prototype.uiVirtualization = function () {\n this.wireScrollEvent(false);\n var curViewDS = this.listViewInstance.curViewDS;\n var firstDs = curViewDS.slice(0, 1);\n this.listViewInstance.ulElement = this.listViewInstance.curUL = ListBase.createList(\n // eslint-disable-next-line\n this.listViewInstance.createElement, firstDs, this.listViewInstance.listBaseOption, null, this.listViewInstance);\n this.listViewInstance.contentContainer = this.listViewInstance.createElement('div', { className: classNames.content });\n this.listViewInstance.element.appendChild(this.listViewInstance.contentContainer);\n this.listViewInstance.contentContainer.appendChild(this.listViewInstance.ulElement);\n this.listItemHeight = this.listViewInstance.ulElement.firstElementChild.getBoundingClientRect().height;\n this.expectedDomItemCount = this.ValidateItemCount(10000);\n this.domItemCount = this.ValidateItemCount(Object.keys(this.listViewInstance.curViewDS).length);\n this.uiFirstIndex = 0;\n this.uiLastIndex = this.domItemCount - 1;\n var otherDs = curViewDS.slice(1, this.domItemCount);\n var listItems = ListBase.createListItemFromJson(\n // eslint-disable-next-line\n this.listViewInstance.createElement, otherDs, this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n append(listItems, this.listViewInstance.ulElement);\n this.listViewInstance.liCollection = this.listViewInstance.curUL.querySelectorAll('li');\n this.topElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.topElement, this.listViewInstance.ulElement.firstElementChild);\n this.bottomElement = this.listViewInstance.createElement('div');\n this.listViewInstance.ulElement.insertBefore(this.bottomElement, null);\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.topElement.style.height = 0 + 'px';\n this.bottomElement.style.height = this.totalHeight + 'px';\n this.topElementHeight = 0;\n this.bottomElementHeight = this.totalHeight;\n this.listDiff = 0;\n this.uiIndicesInitialization();\n };\n Virtualization.prototype.wireScrollEvent = function (destroy) {\n if (!destroy) {\n if (this.listViewInstance.isWindow) {\n this.onVirtualScroll = this.onVirtualUiScroll.bind(this);\n window.addEventListener('scroll', this.onVirtualScroll);\n }\n else {\n EventHandler.add(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll, this);\n }\n }\n else {\n if (this.listViewInstance.isWindow === true) {\n window.removeEventListener('scroll', this.onVirtualScroll);\n window.removeEventListener('scroll', this.updateUl);\n }\n else {\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.onVirtualUiScroll);\n EventHandler.remove(this.listViewInstance.element, 'scroll', this.updateUlContainer);\n }\n }\n };\n Virtualization.prototype.updateUlContainer = function (e) {\n var listDiff;\n var virtualElementContainer = this.listViewInstance.ulElement.querySelector('.' + classNames.virtualElementContainer);\n if (isNullOrUndefined(this.listViewInstance.liElementHeight)) {\n this.listViewInstance.updateLiElementHeight();\n }\n if (this.listViewInstance.isWindow) {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.documentElement.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n else {\n // eslint-disable-next-line\n listDiff = Math.round(e.target.scrollTop / this.listViewInstance.liElementHeight) - 2;\n }\n if (((listDiff - 1) * this.listViewInstance.liElementHeight) < 0) {\n virtualElementContainer.style.top = '0px';\n }\n else {\n virtualElementContainer.style.top = (listDiff) * this.listViewInstance.liElementHeight + 'px';\n }\n };\n Virtualization.prototype.ValidateItemCount = function (dataSourceLength) {\n var height = parseFloat(formatUnit(this.listViewInstance.height));\n var itemCount;\n if (this.listViewInstance.isWindow) {\n itemCount = Math.round((window.innerHeight / this.listItemHeight) * windowElementCount);\n }\n else {\n if (typeof this.listViewInstance.height === 'string' && this.listViewInstance.height.indexOf('%') !== -1) {\n // eslint-disable-next-line max-len\n itemCount = Math.round((this.listViewInstance.element.getBoundingClientRect().height / this.listItemHeight) * listElementCount);\n }\n else {\n itemCount = Math.round((height / this.listItemHeight) * listElementCount);\n }\n }\n if (itemCount > dataSourceLength) {\n itemCount = dataSourceLength;\n }\n return itemCount;\n };\n Virtualization.prototype.uiIndicesInitialization = function () {\n this.uiIndices = { 'activeIndices': [], 'disabledItemIndices': [], 'hiddenItemIndices': [] };\n var data = this.listViewInstance.curViewDS;\n for (var i = 0; i < data.length; i++) {\n if (this.listViewInstance.showCheckBox && data[i][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(i);\n }\n // eslint-disable-next-line\n if (!isNullOrUndefined(data[i][this.listViewInstance.fields.enabled]) &&\n !data[i][this.listViewInstance.fields.enabled]) {\n // eslint-disable-next-line\n (this.uiIndices.disabledItemIndices.push(i));\n }\n }\n if (this.isNgTemplate()) {\n var items = this.listViewInstance.element.querySelectorAll('.' + classNames.listItem);\n for (var index = 0; index < items.length; index++) {\n items[index].context = this.listViewInstance.viewContainerRef.get(index).context;\n }\n }\n };\n Virtualization.prototype.refreshItemHeight = function () {\n if (this.listViewInstance.curViewDS.length) {\n var curViewDS = this.listViewInstance.curViewDS;\n this.listItemHeight = this.topElement.nextSibling.getBoundingClientRect().height;\n this.totalHeight = (Object.keys(curViewDS).length * this.listItemHeight) - (this.domItemCount * this.listItemHeight);\n this.bottomElementHeight = this.totalHeight;\n this.bottomElement.style.height = this.totalHeight + 'px';\n }\n };\n Virtualization.prototype.getscrollerHeight = function (startingHeight) {\n return this.listViewInstance.isWindow ? (((pageYOffset - startingHeight) <= 0) ? 0 :\n (pageYOffset - startingHeight)) : ((this.listViewInstance.element.scrollTop - startingHeight) <= 0) ? 0 :\n (this.listViewInstance.element.scrollTop - startingHeight);\n };\n Virtualization.prototype.onVirtualUiScroll = function (e) {\n var _a;\n var startingHeight;\n if (this.listViewInstance.isWindow) {\n startingHeight = this.listViewInstance.ulElement.getBoundingClientRect().top -\n document.documentElement.getBoundingClientRect().top;\n }\n else {\n startingHeight = this.listViewInstance.headerEle ? this.listViewInstance.headerEle.getBoundingClientRect().height : 0;\n }\n this.scrollPosition = isNullOrUndefined(this.scrollPosition) ? 0 : this.scrollPosition;\n var scroll = this.getscrollerHeight(startingHeight);\n this.topElementHeight = this.listItemHeight * Math.floor(scroll / this.listItemHeight);\n this.bottomElementHeight = this.totalHeight - this.topElementHeight;\n _a = scroll <= this.totalHeight ?\n [this.topElementHeight, this.bottomElementHeight] : [this.totalHeight, 0], this.topElementHeight = _a[0], this.bottomElementHeight = _a[1];\n if (this.topElementHeight !== parseFloat(this.topElement.style.height)) {\n this.topElement.style.height = this.topElementHeight + 'px';\n this.bottomElement.style.height = this.bottomElementHeight + 'px';\n if (scroll > this.scrollPosition) {\n var listDiff = Math.round(((this.topElementHeight / this.listItemHeight) - this.listDiff));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, true);\n }\n else {\n this.onNormalScroll(listDiff, true);\n }\n }\n else {\n var listDiff = Math.round((this.listDiff - (this.topElementHeight / this.listItemHeight)));\n if (listDiff > (this.expectedDomItemCount + 5)) {\n this.onLongScroll(listDiff, false);\n }\n else {\n this.onNormalScroll(listDiff, false);\n }\n }\n }\n this.listDiff = Math.round(this.topElementHeight / this.listItemHeight);\n if (typeof this.listViewInstance.onUIScrolled === 'function') {\n this.listViewInstance.onUIScrolled();\n }\n this.scrollPosition = scroll;\n };\n Virtualization.prototype.onLongScroll = function (listDiff, isScrollingDown) {\n var index = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n var elements = this.listViewInstance.ulElement.querySelectorAll('li');\n for (var i = 0; i < elements.length; i++) {\n this.updateUI(elements[i], index);\n index++;\n }\n this.uiLastIndex = isScrollingDown ? (this.uiLastIndex + listDiff) : (this.uiLastIndex - listDiff);\n this.uiFirstIndex = isScrollingDown ? (this.uiFirstIndex + listDiff) : (this.uiFirstIndex - listDiff);\n };\n Virtualization.prototype.onNormalScroll = function (listDiff, isScrollingDown) {\n if (isScrollingDown) {\n for (var i = 0; i < listDiff; i++) {\n var index = ++this.uiLastIndex;\n this.updateUI(this.topElement.nextElementSibling, index, this.bottomElement);\n this.uiFirstIndex++;\n }\n }\n else {\n for (var i = 0; i < listDiff; i++) {\n var index = --this.uiFirstIndex;\n var target = this.topElement.nextSibling;\n this.updateUI(this.bottomElement.previousElementSibling, index, target);\n this.uiLastIndex--;\n }\n }\n };\n Virtualization.prototype.updateUiContent = function (element, index) {\n // eslint-disable-next-line\n var curViewDs = this.listViewInstance.curViewDS;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n element.dataset.uid = ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n this.listViewInstance.curViewDS[index].toString();\n }\n else {\n // eslint-disable-next-line\n element.dataset.uid = (curViewDs[index][this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.id]) : ListBase.generateId();\n element.getElementsByClassName(classNames.listItemText)[0].innerHTML =\n // eslint-disable-next-line\n (curViewDs[index][this.listViewInstance.fields.text]);\n }\n if (this.listViewInstance.showIcon) {\n if (element.querySelector('.' + classNames.listIcon)) {\n detach(element.querySelector('.' + classNames.listIcon));\n }\n if (this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]) {\n var textContent = element.querySelector('.' + classNames.textContent);\n var target = this.listViewInstance.createElement('div', {\n className: classNames.listIcon + ' ' +\n this.listViewInstance.curViewDS[index][this.listViewInstance.fields.iconCss]\n });\n textContent.insertBefore(target, element.querySelector('.' + classNames.listItemText));\n }\n }\n if (this.listViewInstance.showCheckBox && this.listViewInstance.fields.groupBy) {\n if (!this.checkListWrapper) {\n this.checkListWrapper = this.listViewInstance.curUL.querySelector('.' + classNames.checkboxWrapper).cloneNode(true);\n }\n var textContent = element.querySelector('.' + classNames.textContent);\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.remove(classNames.checklist);\n textContent.classList.remove(classNames.checkbox);\n detach(element.querySelector('.' + classNames.checkboxWrapper));\n }\n }\n else {\n if (!element.querySelector('.' + classNames.checkboxWrapper)) {\n element.classList.add(classNames.checklist);\n textContent.classList.add(classNames.checkbox);\n textContent.insertBefore(this.checkListWrapper.cloneNode(true), element.querySelector('.' + classNames.listItemText));\n }\n }\n }\n };\n Virtualization.prototype.changeElementAttributes = function (element, index) {\n element.classList.remove(classNames.disable);\n if (this.uiIndices.disabledItemIndices.length && this.uiIndices.disabledItemIndices.indexOf(index) !== -1) {\n element.classList.add(classNames.disable);\n }\n element.style.display = '';\n if (this.uiIndices.hiddenItemIndices.length && this.uiIndices.hiddenItemIndices.indexOf(index) !== -1) {\n element.style.display = 'none';\n }\n if (this.listViewInstance.showCheckBox) {\n var checklistElement = element.querySelector('.' + classNames.checkboxWrapper);\n element.classList.remove(classNames.selected);\n element.classList.remove(classNames.focused);\n if (checklistElement) {\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n }\n if (this.uiIndices.activeIndices.length && this.uiIndices.activeIndices.indexOf(index) !== -1 &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n checklistElement.firstElementChild.classList.add(classNames.checked);\n checklistElement.setAttribute('aria-checked', 'true');\n if (this.activeIndex === index) {\n element.classList.add(classNames.focused);\n }\n }\n }\n else {\n element.classList.remove(classNames.selected);\n element.removeAttribute('aria-selected');\n if (!isNullOrUndefined(this.activeIndex) && this.activeIndex === index &&\n !this.listViewInstance.curUL.querySelector(classNames.selected)) {\n element.classList.add(classNames.selected);\n element.setAttribute('aria-selected', 'true');\n }\n }\n if (this.listViewInstance.fields.groupBy) {\n if (this.listViewInstance.curViewDS[index].isHeader) {\n if (element.classList.contains(classNames.listItem)) {\n element.classList.remove(classNames.listItem);\n element.setAttribute('role', 'group');\n element.classList.add(classNames.groupListItem);\n }\n }\n else {\n if (element.classList.contains(classNames.groupListItem)) {\n element.classList.remove(classNames.groupListItem);\n element.setAttribute('role', 'listitem');\n element.classList.add(classNames.listItem);\n }\n }\n }\n };\n Virtualization.prototype.findDSAndIndexFromId = function (ds, fields) {\n var _this = this;\n var resultJSON = {};\n fields = this.listViewInstance.getElementUID(fields);\n if (!isNullOrUndefined(fields)) {\n ds.some(function (data, index) {\n if ((fields[_this.listViewInstance.fields.id] &&\n // eslint-disable-next-line\n fields[_this.listViewInstance.fields.id]\n // eslint-disable-next-line\n === (data[_this.listViewInstance.fields.id] && data[_this.listViewInstance.fields.id]) || fields === data)) {\n resultJSON.index = index;\n resultJSON.data = data;\n return true;\n }\n else {\n return false;\n }\n });\n }\n return resultJSON;\n };\n Virtualization.prototype.getSelectedItems = function () {\n var _this = this;\n if (!isNullOrUndefined(this.activeIndex) || (this.listViewInstance.showCheckBox && this.uiIndices.activeIndices.length)) {\n var dataCollection = [];\n var textCollection = [];\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n var curViewDS_1 = this.listViewInstance.curViewDS;\n if (this.listViewInstance.showCheckBox) {\n var indices = this.uiIndices.activeIndices;\n for (var i = 0; i < indices.length; i++) {\n dataCollection.push(curViewDS_1[indices[i]]);\n }\n return {\n text: dataCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return _this.listViewInstance.dataSource.indexOf(curViewDS_1[index]);\n })\n };\n }\n else {\n return {\n text: curViewDS_1[this.activeIndex],\n data: curViewDS_1[this.activeIndex],\n index: this.listViewInstance.dataSource.indexOf(curViewDS_1[this.activeIndex])\n };\n }\n }\n else {\n var curViewDS_2 = this.listViewInstance.curViewDS;\n var text = this.listViewInstance.fields.text;\n if (this.listViewInstance.showCheckBox) {\n var indexArray = this.uiIndices.activeIndices;\n for (var i = 0; i < indexArray.length; i++) {\n textCollection.push(curViewDS_2[indexArray[i]][text]);\n // eslint-disable-next-line\n dataCollection.push(curViewDS_2[indexArray[i]]);\n }\n // eslint-disable-next-line\n var dataSource_1 = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: textCollection,\n // eslint-disable-next-line\n data: dataCollection,\n index: this.uiIndices.activeIndices.map(function (index) {\n return dataSource_1.indexOf(curViewDS_2[index]);\n })\n };\n }\n else {\n // eslint-disable-next-line\n var dataSource = this.listViewInstance.dataSource instanceof DataManager\n ? curViewDS_2 : this.listViewInstance.dataSource;\n return {\n text: curViewDS_2[this.activeIndex][this.listViewInstance.fields.text],\n // eslint-disable-next-line\n data: curViewDS_2[this.activeIndex],\n index: dataSource.indexOf(curViewDS_2[this.activeIndex])\n };\n }\n }\n }\n else {\n return undefined;\n }\n };\n Virtualization.prototype.selectItem = function (obj) {\n // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n var isSelected = this.activeIndex === resutJSON.index;\n var isChecked = void 0;\n this.activeIndex = resutJSON.index;\n if (this.listViewInstance.showCheckBox) {\n if (this.uiIndices.activeIndices.indexOf(resutJSON.index) === -1) {\n isChecked = true;\n this.uiIndices.activeIndices.push(resutJSON.index);\n }\n else {\n isChecked = false;\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(resutJSON.index), 1);\n }\n if (this.listViewInstance.curUL.querySelector('.' + classNames.focused)) {\n this.listViewInstance.curUL.querySelector('.' + classNames.focused).classList.remove(classNames.focused);\n }\n }\n if (this.listViewInstance.getLiFromObjOrElement(obj)) {\n if (this.listViewInstance.showCheckBox) {\n this.listViewInstance.setCheckboxLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n else {\n this.listViewInstance.setSelectLI(this.listViewInstance.getLiFromObjOrElement(obj));\n }\n }\n else {\n // eslint-disable-next-line\n var eventArgs = void 0;\n if (typeof this.listViewInstance.dataSource[0] === 'string' ||\n typeof this.listViewInstance.dataSource[0] === 'number') {\n eventArgs = {\n text: this.listViewInstance.curViewDS[this.activeIndex],\n data: this.listViewInstance.curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n else {\n var curViewDS = this.listViewInstance.curViewDS;\n eventArgs = {\n text: curViewDS[this.activeIndex][this.listViewInstance.fields.text],\n data: curViewDS[this.activeIndex],\n index: this.activeIndex\n };\n }\n if (this.listViewInstance.showCheckBox) {\n eventArgs.isChecked = isChecked;\n this.listViewInstance.trigger('select', eventArgs);\n }\n else if (!isSelected) {\n this.listViewInstance.removeSelect();\n this.listViewInstance.trigger('select', eventArgs);\n }\n }\n }\n else if (isNullOrUndefined(obj) && !this.listViewInstance.showCheckBox) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n };\n Virtualization.prototype.enableItem = function (obj) {\n // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.disableItem = function (obj) {\n // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.disabledItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.disabledItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.showItem = function (obj) {\n // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length) {\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index), 1);\n }\n };\n Virtualization.prototype.hideItem = function (obj) {\n // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(this.listViewInstance.curViewDS, obj);\n if (Object.keys(resutJSON).length && this.uiIndices.hiddenItemIndices.indexOf(resutJSON.index) === -1) {\n this.uiIndices.hiddenItemIndices.push(resutJSON.index);\n }\n };\n Virtualization.prototype.removeItem = function (obj) {\n var dataSource;\n var curViewDS = this.listViewInstance.curViewDS;\n // eslint-disable-next-line\n var resutJSON = this.findDSAndIndexFromId(curViewDS, obj);\n // eslint-disable-next-line\n if (Object.keys(resutJSON).length) {\n dataSource = resutJSON.data;\n if (curViewDS[resutJSON.index - 1] &&\n curViewDS[resutJSON.index - 1].isHeader &&\n (curViewDS[resutJSON.index - 1])\n .items.length === 1) {\n this.removeUiItem(resutJSON.index - 1);\n this.removeUiItem(resutJSON.index - 1);\n }\n else {\n this.removeUiItem(resutJSON.index);\n }\n }\n var listDataSource = this.listViewInstance.dataSource instanceof DataManager\n ? this.listViewInstance.localData : this.listViewInstance.dataSource;\n var index = listDataSource.indexOf(dataSource);\n if (index !== -1) {\n listDataSource.splice(index, 1);\n this.listViewInstance.setViewDataSource(listDataSource);\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n };\n // eslint-disable-next-line\n Virtualization.prototype.setCheckboxLI = function (li, e) {\n var index = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n if (li.classList.contains(classNames.selected)) {\n if (this.uiIndices.activeIndices.indexOf(index) === -1) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n else {\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.setSelectLI = function (li, e) {\n this.activeIndex = Array.prototype.indexOf.call(this.listViewInstance.curUL.querySelectorAll('li'), li) + this.uiFirstIndex;\n };\n Virtualization.prototype.checkedItem = function (checked) {\n if (checked) {\n this.uiIndices.activeIndices = [];\n this.activeIndex = undefined;\n var data = this.listViewInstance.curViewDS;\n for (var index = 0; index < data.length; index++) {\n if (!data[index].isHeader) {\n this.uiIndices.activeIndices.push(index);\n }\n }\n }\n else {\n this.activeIndex = undefined;\n this.uiIndices.activeIndices = [];\n }\n };\n Virtualization.prototype.addUiItem = function (index) {\n // virtually new add list item based on the scollbar position\n // if the scroll bar is at the top, just pretend the new item has been added since no UI\n // change is required for the item that has been added at last but when scroll bar is at the bottom\n // just detach top and inject into bottom to mimic new item is added\n var curViewDs = this.listViewInstance.curViewDS;\n this.changeUiIndices(index, true);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex++;\n }\n if (this.listViewInstance.showCheckBox &&\n curViewDs[index][this.listViewInstance.fields.isChecked]) {\n this.uiIndices.activeIndices.push(index);\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n }\n if (parseFloat(this.bottomElement.style.height)) {\n var liItem = this.listViewInstance.curUL.lastElementChild.previousSibling;\n var target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n if (target) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) + this.listItemHeight + 'px';\n this.updateUI(liItem, index, target);\n }\n }\n else {\n var liItem = this.listViewInstance.curUL.firstElementChild.nextSibling;\n var target = void 0;\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n target = this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(curViewDs[index + 2]);\n }\n this.topElement.style.height = parseFloat(this.topElement.style.height) + this.listItemHeight + 'px';\n this.uiFirstIndex++;\n this.uiLastIndex++;\n if (target) {\n this.updateUI(liItem, index, target);\n if (this.listViewInstance.isWindow === true) {\n window.scrollTo(0, (pageYOffset + this.listItemHeight));\n }\n else {\n this.listViewInstance.element.scrollTop += this.listItemHeight;\n }\n }\n }\n this.totalHeight += this.listItemHeight;\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.removeUiItem = function (index) {\n this.totalHeight -= this.listItemHeight;\n var curViewDS = this.listViewInstance.curViewDS[index];\n var liItem = this.listViewInstance.getLiFromObjOrElement(curViewDS);\n this.listViewInstance.curViewDS.splice(index, 1);\n if (this.activeIndex && this.activeIndex >= index) {\n this.activeIndex--;\n }\n if (liItem) {\n if (this.domItemCount > Object.keys(this.listViewInstance.curViewDS).length) {\n detach(liItem);\n this.domItemCount--;\n this.uiLastIndex--;\n this.totalHeight = 0;\n }\n else {\n if (liItem.classList.contains(classNames.disable)) {\n liItem.classList.remove(classNames.disable);\n this.uiIndices.disabledItemIndices.splice(this.uiIndices.disabledItemIndices.indexOf(index), 1);\n }\n if (liItem.style.display === 'none') {\n liItem.style.display = '';\n this.uiIndices.hiddenItemIndices.splice(this.uiIndices.hiddenItemIndices.indexOf(index), 1);\n }\n if (this.listViewInstance.showCheckBox && liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.uiIndices.activeIndices.splice(this.uiIndices.activeIndices.indexOf(index), 1);\n var checklistElement = liItem.querySelector('.' + classNames.checkboxWrapper);\n checklistElement.removeAttribute('aria-checked');\n checklistElement.firstElementChild.classList.remove(classNames.checked);\n if (liItem.classList.contains(classNames.focused)) {\n liItem.classList.remove(classNames.focused);\n this.activeIndex = undefined;\n }\n }\n else if (liItem.classList.contains(classNames.selected)) {\n this.listViewInstance.removeSelect();\n this.activeIndex = undefined;\n }\n if (!parseFloat(this.bottomElement.style.height) && !parseFloat(this.topElement.style.height)) {\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else if (parseFloat(this.bottomElement.style.height)) {\n this.bottomElement.style.height = parseFloat(this.bottomElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, this.uiLastIndex, this.bottomElement);\n }\n else {\n this.topElement.style.height = parseFloat(this.topElement.style.height) - this.listItemHeight + 'px';\n this.updateUI(liItem, (this.uiFirstIndex - 1), this.topElement.nextSibling);\n this.uiLastIndex--;\n this.uiFirstIndex--;\n }\n }\n }\n this.changeUiIndices(index, false);\n this.listDiff = Math.round(parseFloat(this.topElement.style.height) / this.listItemHeight);\n };\n Virtualization.prototype.changeUiIndices = function (index, increment) {\n var keys = Object.keys(this.uiIndices);\n for (var ind = 0; ind < keys.length; ind++) {\n this.uiIndices[keys[ind]] = this.uiIndices[keys[ind]].map(function (i) {\n if (i >= index) {\n return increment ? ++i : --i;\n }\n else {\n return i;\n }\n });\n }\n };\n Virtualization.prototype.addItem = function (data, fields, dataSource) {\n for (var i = 0; i < data.length; i++) {\n var currentItem = data[i];\n // push the given data to main data array\n dataSource.push(currentItem);\n // recalculate all the group data or other datasource related things\n this.listViewInstance.setViewDataSource(dataSource);\n // render list items for first time due to no datasource present earlier\n if (!this.domItemCount) {\n // fresh rendering for first time\n if ((this.listViewInstance.template || this.listViewInstance.groupTemplate) && !this.isNgTemplate()) {\n this.listViewInstance.listBaseOption.template = null;\n this.listViewInstance.listBaseOption.groupTemplate = null;\n this.listViewInstance.listBaseOption.itemCreated = this.createUIItem.bind(this);\n }\n this.uiVirtualization();\n // when expected expected DOM count doesn't meet the condition we need to create and inject new item into DOM\n }\n else if (this.domItemCount < this.expectedDomItemCount) {\n var ds = this.listViewInstance.findItemFromDS(dataSource, fields);\n if (ds instanceof Array) {\n if (this.listViewInstance.ulElement) {\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // inject new list item into DOM\n this.createAndInjectNewItem(currentItem, index);\n // check for group header item\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n // target group item index in datasource\n --index;\n // inject new group header into DOM for previously created list item\n this.createAndInjectNewItem(curViewDS, index);\n }\n }\n // recollect all the list item into collection\n this.listViewInstance.liCollection =\n this.listViewInstance.curUL.querySelectorAll('li');\n }\n }\n else {\n // eslint-disable-next-line\n var index = this.listViewInstance.curViewDS.indexOf(currentItem);\n // virtually new add list item based on the scollbar position\n this.addUiItem(index);\n // check for group header item needs to be added\n var curViewDS = this.listViewInstance.curViewDS[index - 1];\n if (curViewDS && curViewDS.isHeader && curViewDS.items.length === 1) {\n this.addUiItem(index - 1);\n }\n }\n }\n };\n Virtualization.prototype.createAndInjectNewItem = function (itemData, index) {\n // generate li item for given datasource\n var target;\n var li = ListBase.createListItemFromJson(this.listViewInstance.createElement, \n // eslint-disable-next-line\n [itemData], this.listViewInstance.listBaseOption, null, null, this.listViewInstance);\n // check for target element whether to insert before last item or group item\n if ((Object.keys(this.listViewInstance.curViewDS).length - 1) === index) {\n target = this.listViewInstance.curUL.lastElementChild;\n }\n else {\n // target group header's first child item to append its header\n target = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 1]) ||\n this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index + 2]);\n }\n if (this.listViewInstance.fields.groupBy && this.listViewInstance.curViewDS[index + 1] && this.listViewInstance.curViewDS[index + 1].isHeader) {\n var targetEle = this.listViewInstance.getLiFromObjOrElement(this.listViewInstance.curViewDS[index - 1]);\n if (targetEle) {\n target = targetEle.nextElementSibling;\n }\n }\n // insert before the target element\n this.listViewInstance.ulElement.insertBefore(li[0], target);\n // increment internal DOM count, last index count for new element\n this.domItemCount++;\n if (this.bottomElementHeight <= 0) {\n this.uiLastIndex++;\n }\n // recalculate the current item height, to avoid jumpy scroller\n this.refreshItemHeight();\n };\n Virtualization.prototype.createUIItem = function (args) {\n var virtualTemplate = this.listViewInstance.template;\n var template = this.listViewInstance.createElement('div');\n var commonTemplate = '
' +\n ' ${' + this.listViewInstance.fields.text + '}
';\n if (this.listViewInstance.isReact) {\n commonTemplate = null;\n }\n if (this.listViewInstance.showCheckBox) {\n // eslint-disable-next-line\n this.listViewInstance.renderCheckbox(args);\n if ((!isNullOrUndefined(this.listViewInstance.virtualCheckBox)) &&\n (!isNullOrUndefined(this.listViewInstance.virtualCheckBox.outerHTML))) {\n var div = document.createElement('div');\n div.innerHTML = this.listViewInstance.template || commonTemplate;\n if (div.children && div.children[0]) {\n div.children[0].classList.add('e-checkbox');\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].classList.add('e-checkbox-left');\n }\n else {\n div.children[0].classList.add('e-checkbox-right');\n }\n if (this.listViewInstance.checkBoxPosition === 'Left') {\n div.children[0].insertBefore(this.listViewInstance.virtualCheckBox, div.childNodes[0].children[0]);\n }\n else {\n div.children[0].appendChild(this.listViewInstance.virtualCheckBox);\n }\n this.listViewInstance.template = div.innerHTML;\n }\n }\n if (this.isVueFunctionTemplate())\n return;\n template.innerHTML = this.listViewInstance.template;\n this.listViewInstance.template = virtualTemplate;\n }\n else {\n if (this.isVueFunctionTemplate())\n return;\n template.innerHTML = this.listViewInstance.template || commonTemplate;\n }\n // eslint-disable-next-line\n var templateElements = template.getElementsByTagName('*');\n var groupTemplate = this.listViewInstance.createElement('div');\n if (this.listViewInstance.fields.groupBy) {\n groupTemplate.innerHTML = this.listViewInstance.groupTemplate || commonTemplate;\n }\n // eslint-disable-next-line\n var groupTemplateElements = groupTemplate.getElementsByTagName('*');\n if (args.curData.isHeader) {\n this.headerData = args.curData;\n }\n this.templateData = args.curData.isHeader ? args.curData.items[0] :\n args.curData;\n if (!this.listViewInstance.isReact || (typeof this.listViewInstance.template == \"string\" && !args.item.classList.contains(\"e-list-group-item\")) ||\n (typeof this.listViewInstance.groupTemplate == \"string\" && args.item.classList.contains(\"e-list-group-item\"))) {\n args.item.innerHTML = '';\n }\n args.item.context = { data: args.curData, nodes: { flatTemplateNodes: [], groupTemplateNodes: [] } };\n for (var i = 0; i < templateElements.length; i++) {\n this.compileTemplate(templateElements[i], args.item, false);\n }\n for (var i = 0; i < groupTemplateElements.length; i++) {\n this.compileTemplate(groupTemplateElements[i], args.item, true);\n }\n args.item.context.template = args.curData.isHeader ? template.firstElementChild :\n groupTemplate.firstElementChild;\n args.item.context.type = args.curData.isHeader ? 'flatList' : 'groupList';\n var element = args.curData.isHeader ? groupTemplate : template;\n if (element.firstElementChild) {\n args.item.insertBefore(element.firstElementChild, null);\n }\n };\n Virtualization.prototype.compileTemplate = function (element, item, isHeader) {\n this.textProperty(element, item, isHeader);\n this.classProperty(element, item, isHeader);\n this.attributeProperty(element, item, isHeader);\n };\n Virtualization.prototype.onChange = function (newData, listElement) {\n listElement.context.data = newData;\n // eslint-disable-next-line max-len\n var groupTemplateNodes = listElement.context.nodes.groupTemplateNodes;\n // eslint-disable-next-line max-len\n var flatTemplateNodes = listElement.context.nodes.flatTemplateNodes;\n // eslint-disable-next-line\n if (!isNullOrUndefined(newData.isHeader) && newData.isHeader && listElement.context.type === 'groupList') {\n // eslint-disable-next-line\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'flatList';\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader && listElement.context.type === 'flatList') {\n var element = listElement.firstElementChild;\n detach(listElement.firstElementChild);\n listElement.insertBefore(listElement.context.template, null);\n listElement.context.template = element;\n listElement.context.type = 'groupList';\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else if (!newData.isHeader) {\n for (var i = 0; i < flatTemplateNodes.length; i++) {\n // eslint-disable-next-line\n flatTemplateNodes[i].onChange(newData);\n }\n }\n else {\n for (var i = 0; i < groupTemplateNodes.length; i++) {\n // eslint-disable-next-line\n groupTemplateNodes[i].onChange(newData);\n }\n }\n };\n // eslint-disable-next-line\n Virtualization.prototype.updateContextData = function (listElement, node, isHeader) {\n if (isHeader) {\n listElement.context.nodes.groupTemplateNodes.push(node);\n }\n else {\n listElement.context.nodes.flatTemplateNodes.push(node);\n }\n };\n Virtualization.prototype.classProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.className);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n if (resultantOutput && resultantOutput.length) {\n var _loop_1 = function (i) {\n var classNameMatch = resultantOutput[i];\n // eslint-disable-next-line\n var classFunction;\n if (classNameMatch[1].indexOf('?') !== -1 && classNameMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + classNameMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n classFunction = new Function('data', 'return ' + 'data.' + classNameMatch[1]);\n }\n // eslint-disable-next-line\n var subNode = {};\n if (isHeader) {\n subNode.bindedvalue = classFunction(this_1.headerData);\n }\n else {\n subNode.bindedvalue = classFunction(this_1.templateData);\n }\n subNode.onChange = function (value) {\n if (subNode.bindedvalue) {\n removeClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n var newCss = classFunction(value);\n if (newCss) {\n addClass([element], (newCss).split(' ').filter(function (css) { return css; }));\n }\n subNode.bindedvalue = newCss;\n };\n var className = classNameMatch[0].split(' ');\n for (var i_1 = 0; i_1 < className.length; i_1++) {\n element.classList.remove(className[i_1]);\n }\n if (subNode.bindedvalue) {\n addClass([element], subNode.bindedvalue.split(' ').filter(function (css) { return css; }));\n }\n this_1.updateContextData(listElement, subNode, isHeader);\n };\n var this_1 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_1(i);\n }\n }\n };\n Virtualization.prototype.attributeProperty = function (element, listElement, isHeader) {\n var attributeNames = [];\n for (var i = 0; i < element.attributes.length; i++) {\n attributeNames.push(element.attributes[i].nodeName);\n }\n if (attributeNames.indexOf('class') !== -1) {\n attributeNames.splice(attributeNames.indexOf('class'), 1);\n }\n var _loop_2 = function (i) {\n var attributeName = attributeNames[i];\n var attrNameMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(attributeName) || [];\n var attrValueMatch = new RegExp('\\\\${([^}]*)}', 'g').exec(element.getAttribute(attributeName))\n || [];\n // eslint-disable-next-line\n var attributeNameFunction;\n // eslint-disable-next-line\n var attributeValueFunction;\n if (attrNameMatch.length || attrValueMatch.length) {\n if (attrNameMatch[1]) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeNameFunction = new Function('data', 'return ' + 'data.' + attrNameMatch[1]);\n }\n if (attrValueMatch[1]) {\n if (attrValueMatch[1].indexOf('?') !== -1 && attrValueMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + attrValueMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n attributeValueFunction = new Function('data', 'return ' + 'data.' + attrValueMatch[1]);\n }\n }\n // eslint-disable-next-line @typescript-eslint/ban-types\n var subNode_1 = {};\n if (isHeader) {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.headerData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.headerData)];\n }\n else {\n subNode_1.bindedvalue = [attrNameMatch[1] === undefined ? undefined : attributeNameFunction(this_2.templateData),\n attrValueMatch[1] === undefined ? undefined : attributeValueFunction(this_2.templateData)];\n }\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ?\n attributeName : subNode_1.bindedvalue[0];\n subNode_1.onChange = function (value) {\n var bindedvalue = subNode_1.bindedvalue[1] === undefined ?\n element.getAttribute(subNode_1.attrName) : attributeValueFunction(value);\n element.removeAttribute(subNode_1.attrName);\n subNode_1.attrName = subNode_1.bindedvalue[0] === undefined ? subNode_1.attrName : attributeNameFunction(value);\n element.setAttribute(subNode_1.attrName, bindedvalue);\n subNode_1.bindedvalue = [subNode_1.bindedvalue[0] === undefined ? undefined : attributeNameFunction(value),\n subNode_1.bindedvalue[1] === undefined ? undefined : attributeValueFunction(value)];\n };\n var attributeValue = subNode_1.bindedvalue[1] === undefined ? element.getAttribute(attributeName) :\n subNode_1.bindedvalue[1];\n element.removeAttribute(attributeName);\n element.setAttribute(subNode_1.attrName, attributeValue);\n this_2.updateContextData(listElement, subNode_1, isHeader);\n }\n };\n var this_2 = this;\n for (var i = 0; i < attributeNames.length; i++) {\n _loop_2(i);\n }\n };\n Virtualization.prototype.textProperty = function (element, listElement, isHeader) {\n var regex = new RegExp('\\\\${([^}]*)}', 'g');\n var resultantOutput = [];\n var regexMatch;\n while (regexMatch !== null) {\n var match = regex.exec(element.innerText);\n resultantOutput.push(match);\n regexMatch = match;\n if (regexMatch === null) {\n resultantOutput.pop();\n }\n }\n var isChildHasTextContent = Array.prototype.some.call(element.children, function (element) {\n if (new RegExp('\\\\${([^}]*)}', 'g').exec(element.innerText)) {\n return true;\n }\n else {\n return false;\n }\n });\n if (resultantOutput && resultantOutput.length && !isChildHasTextContent) {\n var _loop_3 = function (i) {\n var textPropertyMatch = resultantOutput[i];\n // eslint-disable-next-line\n var subNode = {};\n // eslint-disable-next-line\n var textFunction;\n if (textPropertyMatch[1].indexOf('?') !== -1 && textPropertyMatch[1].indexOf(':') !== -1) {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + textPropertyMatch[1].replace(/\\$/g, 'data.'));\n }\n else {\n // tslint:disable-next-line:no-function-constructor-with-string-args\n textFunction = new Function('data', 'return ' + 'data.' + textPropertyMatch[1]);\n }\n if (isHeader) {\n subNode.bindedvalue = textFunction(this_3.headerData);\n }\n else {\n subNode.bindedvalue = textFunction(this_3.templateData);\n }\n subNode.onChange = function (value) {\n element.innerText = element.innerText.replace(subNode.bindedvalue, textFunction(value));\n subNode.bindedvalue = textFunction(value);\n };\n element.innerText = element.innerText.replace(textPropertyMatch[0], subNode.bindedvalue);\n this_3.updateContextData(listElement, subNode, isHeader);\n };\n var this_3 = this;\n for (var i = 0; i < resultantOutput.length; i++) {\n _loop_3(i);\n }\n }\n };\n Virtualization.prototype.reRenderUiVirtualization = function () {\n this.wireScrollEvent(true);\n if (this.listViewInstance.contentContainer) {\n detach(this.listViewInstance.contentContainer);\n }\n this.listViewInstance.preRender();\n // resetting the dom count to 0, to avoid edge case of dataSource suddenly becoming zero\n // and then manually adding item using addItem API\n this.domItemCount = 0;\n this.listViewInstance.header();\n this.listViewInstance.setLocalData();\n };\n Virtualization.prototype.updateUI = function (element, index, targetElement) {\n // eslint-disable-next-line @typescript-eslint/ban-types\n var onChange = this.isNgTemplate() ? this.onNgChange : (this.isVueFunctionTemplate()) ? this.onVuechange : this.onChange;\n if (this.listViewInstance.template || this.listViewInstance.groupTemplate) {\n var curViewDS = this.listViewInstance.curViewDS[index];\n // eslint-disable-next-line\n element.dataset.uid = (curViewDS[this.listViewInstance.fields.id]) ?\n // eslint-disable-next-line\n (curViewDS[this.listViewInstance.fields.id]) : ListBase.generateId();\n onChange(curViewDS, element, this);\n }\n else {\n this.updateUiContent(element, index);\n }\n this.changeElementAttributes(element, index);\n if (targetElement) {\n this.listViewInstance.ulElement.insertBefore(element, targetElement);\n }\n };\n /**\n * Handles the UI change in vue for the list view.\n *\n * @param {DataSource} newData - The new data source for the list view.\n * @param {ElementContext} listElement - The HTML element context for the list view.\n * @param {Virtualization} virtualThis - The virtualization context for the list view.\n */\n Virtualization.prototype.onVuechange = function (newData, listElement, virtualThis) {\n var liItem = ListBase.createListItemFromJson(virtualThis.listViewInstance.createElement, \n // eslint-disable-next-line\n [newData], virtualThis.listViewInstance.listBaseOption, null, null, virtualThis.listViewInstance);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(liItem[0].firstChild);\n };\n Virtualization.prototype.onNgChange = function (newData, listElement, virtualThis) {\n // compile given target element with template for new data\n // eslint-disable-next-line\n var templateCompiler = compile(virtualThis.listViewInstance.template);\n var resultElement = templateCompiler(newData);\n while (listElement.lastChild) {\n listElement.removeChild(listElement.lastChild);\n }\n listElement.appendChild(resultElement[0]);\n };\n Virtualization.prototype.getModuleName = function () {\n return 'virtualization';\n };\n Virtualization.prototype.destroy = function () {\n this.wireScrollEvent(true);\n };\n return Virtualization;\n}());\n\n/**\n * Listview Component\n */\n\n/**\n * Listview Component\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\n/**\n * Sortable Module provides support to enable sortable functionality in Dom Elements.\n * ```html\n *
\n *
Item 1
\n *
Item 2
\n *
Item 3
\n *
Item 4
\n *
Item 5
\n *
\n * ```\n * ```typescript\n * let ele: HTMLElement = document.getElementById('sortable');\n * let sortObj: Sortable = new Sortable(ele, {});\n * ```\n */\nvar Sortable = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Sortable, _super);\n /* es-lint enable */\n function Sortable(element, options) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line\n _this.getHelper = function (e) {\n // eslint-disable-next-line prefer-const\n var target = _this.getSortableElement(e.sender.target);\n if (!_this.isValidTarget(target, _this)) {\n return false;\n }\n var element;\n if (_this.helper) {\n element = _this.helper({ sender: target, element: e.element });\n }\n else {\n element = target.cloneNode(true);\n element.style.width = target.offsetWidth + \"px\";\n element.style.height = target.offsetHeight + \"px\";\n }\n addClass([element], ['e-sortableclone']);\n document.body.appendChild(element);\n return element;\n };\n // eslint-disable-next-line\n _this.onDrag = function (e) {\n if (!e.target)\n return;\n _this.trigger('drag', { event: e.event, element: _this.element, target: e.target });\n var newInst = _this.getSortableInstance(e.target);\n var target = _this.getSortableElement(e.target, newInst);\n if ((_this.isValidTarget(target, newInst) || e.target.className.indexOf('e-list-group-item') > -1) && (_this.curTarget !== target ||\n !isNullOrUndefined(newInst.placeHolder)) && (newInst.placeHolderElement ? newInst.placeHolderElement !== e.target :\n true)) {\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n target = e.target;\n }\n _this.curTarget = target;\n if (_this.target === target) {\n return;\n }\n var oldIdx = _this.getIndex(newInst.placeHolderElement, newInst);\n var placeHolder = _this.getPlaceHolder(target, newInst);\n var newIdx = void 0;\n if (placeHolder) {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) : oldIdx;\n newIdx = _this.getIndex(target, newInst, e.event);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(newInst);\n if (isPlaceHolderPresent && oldIdx === newIdx) {\n return;\n }\n if (isPlaceHolderPresent) {\n remove(newInst.placeHolderElement);\n }\n newInst.placeHolderElement = placeHolder;\n if (e.target.className.indexOf('e-list-group-item') > -1) {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n else if (newInst.element !== _this.element && newIdx === newInst.element.childElementCount) {\n newInst.element.appendChild(newInst.placeHolderElement);\n }\n else {\n newInst.element.insertBefore(newInst.placeHolderElement, newInst.element.children[newIdx]);\n }\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n }\n else {\n oldIdx = isNullOrUndefined(oldIdx) ? _this.getIndex(_this.target) :\n _this.getIndex(target, newInst) < oldIdx || !oldIdx ? oldIdx : oldIdx - 1;\n newIdx = _this.getIndex(target, newInst);\n var idx = newInst.element !== _this.element ? newIdx : oldIdx < newIdx ? newIdx + 1 : newIdx;\n _this.updateItemClass(newInst);\n newInst.element.insertBefore(_this.target, newInst.element.children[idx]);\n _this.refreshDisabled(oldIdx, newIdx, newInst);\n _this.curTarget = _this.target;\n _this.trigger('drop', {\n droppedElement: _this.target, element: newInst.element, previousIndex: oldIdx, currentIndex: newIdx,\n target: e.target, helper: document.getElementsByClassName('e-sortableclone')[0], event: e.event, scope: _this.scope\n });\n }\n }\n else if (_this.curTarget !== _this.target && _this.scope && _this.curTarget !== target && !isNullOrUndefined(newInst.placeHolder)) {\n remove(_this.getSortableInstance(_this.curTarget).placeHolderElement);\n _this.curTarget = _this.target;\n }\n newInst = _this.getSortableInstance(_this.curTarget);\n if (isNullOrUndefined(target) && e.target !== newInst.placeHolderElement) {\n if (_this.isPlaceHolderPresent(newInst)) {\n _this.removePlaceHolder(newInst);\n }\n }\n else {\n var placeHolders = [].slice.call(document.getElementsByClassName('e-sortable-placeholder'));\n var inst_1;\n placeHolders.forEach(function (placeHolder) {\n inst_1 = _this.getSortableInstance(placeHolder);\n if (inst_1.element && inst_1 !== newInst) {\n _this.removePlaceHolder(inst_1);\n }\n });\n }\n };\n // eslint-disable-next-line\n _this.onDragStart = function (e) {\n _this.target = _this.getSortableElement(e.target);\n var cancelDrag = false;\n _this.target.classList.add('e-grabbed');\n _this.curTarget = _this.target;\n e.helper = document.getElementsByClassName('e-sortableclone')[0];\n var args = { cancel: false, element: _this.element, target: _this.target };\n _this.trigger('beforeDragStart', args, function (observedArgs) {\n if (observedArgs.cancel) {\n cancelDrag = observedArgs.cancel;\n _this.onDragStop(e);\n }\n });\n if (cancelDrag) {\n return;\n }\n if (isBlazor) {\n _this.trigger('dragStart', {\n event: e.event, element: _this.element, target: _this.target,\n bindEvents: e.bindEvents, dragElement: e.dragElement\n });\n }\n else {\n _this.trigger('dragStart', { event: e.event, element: _this.element, target: _this.target });\n }\n };\n // eslint-disable-next-line\n _this.onDragStop = function (e) {\n var dropInst = _this.getSortableInstance(_this.curTarget);\n var prevIdx;\n var curIdx;\n var handled;\n prevIdx = _this.getIndex(_this.target);\n var isPlaceHolderPresent = _this.isPlaceHolderPresent(dropInst);\n if (isPlaceHolderPresent) {\n var curIdx_1 = _this.getIndex(dropInst.placeHolderElement, dropInst);\n var args = {\n previousIndex: prevIdx, currentIndex: curIdx_1, target: e.target, droppedElement: _this.target,\n helper: e.helper, cancel: false, handled: false\n };\n _this.trigger('beforeDrop', args, function (observedArgs) {\n if (!observedArgs.cancel) {\n handled = observedArgs.handled;\n _this.updateItemClass(dropInst);\n if (observedArgs.handled) {\n var ele = _this.target.cloneNode(true);\n _this.target.classList.remove('e-grabbed');\n _this.target = ele;\n }\n dropInst.element.insertBefore(_this.target, dropInst.placeHolderElement);\n var curIdx_2 = _this.getIndex(_this.target, dropInst);\n prevIdx = _this === dropInst && (prevIdx - curIdx_2) > 1 ? prevIdx - 1 : prevIdx;\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx_2,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope, handled: handled\n });\n }\n remove(dropInst.placeHolderElement);\n });\n }\n dropInst = _this.getSortableInstance(e.target);\n // eslint-disable-next-line prefer-const\n curIdx = dropInst.element.childElementCount;\n prevIdx = _this.getIndex(_this.target);\n if (dropInst.element === e.target || (!isPlaceHolderPresent && _this.curTarget === _this.target)) {\n var beforeDropArgs = {\n previousIndex: prevIdx, currentIndex: _this.curTarget === _this.target ? prevIdx : curIdx,\n target: e.target, droppedElement: _this.target, helper: e.helper, cancel: false\n };\n _this.trigger('beforeDrop', beforeDropArgs, function (observedArgs) {\n if (dropInst.element === e.target && !observedArgs.cancel) {\n _this.updateItemClass(dropInst);\n dropInst.element.appendChild(_this.target);\n _this.trigger('drop', {\n event: e.event, element: dropInst.element, previousIndex: prevIdx, currentIndex: curIdx,\n target: e.target, helper: e.helper, droppedElement: _this.target, scopeName: _this.scope\n });\n }\n });\n }\n _this.target.classList.remove('e-grabbed');\n _this.target = null;\n _this.curTarget = null;\n remove(e.helper);\n getComponent(_this.element, 'draggable').intDestroy(e.event);\n };\n _this.bind();\n return _this;\n }\n Sortable_1 = Sortable;\n Sortable.prototype.bind = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('sortable');\n }\n if (!this.itemClass) {\n this.itemClass = 'e-sort-item';\n this.dataBind();\n }\n this.initializeDraggable();\n };\n Sortable.prototype.initializeDraggable = function () {\n new Draggable(this.element, {\n helper: this.getHelper,\n dragStart: this.onDragStart,\n drag: this.onDrag,\n dragStop: this.onDragStop,\n dragTarget: \".\" + this.itemClass,\n enableTapHold: true,\n tapHoldThreshold: 200,\n queryPositionInfo: this.queryPositionInfo,\n distance: 5\n });\n };\n Sortable.prototype.getPlaceHolder = function (target, instance) {\n if (instance.placeHolder) {\n var placeHolderElement = instance.placeHolder({ element: instance.element, grabbedElement: this.target, target: target });\n placeHolderElement.classList.add('e-sortable-placeholder');\n return placeHolderElement;\n }\n return null;\n };\n Sortable.prototype.isValidTarget = function (target, instance) {\n return target && compareElementParent(target, instance.element) && target.classList.contains(instance.itemClass) &&\n !target.classList.contains('e-disabled');\n };\n Sortable.prototype.removePlaceHolder = function (instance) {\n remove(instance.placeHolderElement);\n instance.placeHolderElement = null;\n };\n Sortable.prototype.updateItemClass = function (instance) {\n if (this !== instance) {\n this.target.classList.remove(this.itemClass);\n this.target.classList.add(instance.itemClass);\n }\n };\n Sortable.prototype.getSortableInstance = function (element) {\n element = closest(element, \".e-\" + this.getModuleName());\n if (element) {\n var inst = getComponent(element, Sortable_1);\n return inst.scope && this.scope && inst.scope === this.scope ? inst : this;\n }\n else {\n return this;\n }\n };\n Sortable.prototype.refreshDisabled = function (oldIdx, newIdx, instance) {\n if (instance === this) {\n var element = void 0;\n var increased = oldIdx < newIdx;\n var disabledIdx = void 0;\n var start = increased ? oldIdx : newIdx;\n var end = increased ? newIdx : oldIdx;\n while (start <= end) {\n element = this.element.children[start];\n if (element.classList.contains('e-disabled')) {\n disabledIdx = this.getIndex(element);\n this.element.insertBefore(element, this.element.children[increased ? disabledIdx + 2 : disabledIdx - 1]);\n start = increased ? disabledIdx + 2 : disabledIdx + 1;\n }\n else {\n start++;\n }\n }\n }\n };\n Sortable.prototype.getIndex = function (target, instance, e) {\n if (instance === void 0) { instance = this; }\n var idx;\n var placeHolderPresent;\n [].slice.call(instance.element.children).forEach(function (element, index) {\n if (element.classList.contains('e-sortable-placeholder')) {\n placeHolderPresent = true;\n }\n if (element === target) {\n idx = index;\n if (!isNullOrUndefined(e)) {\n if (placeHolderPresent) {\n idx -= 1;\n }\n var offset = target.getBoundingClientRect();\n var clientY = offset.bottom - ((offset.bottom - offset.top) / 2);\n idx = e.clientY <= clientY ? idx : idx + 1;\n }\n return;\n }\n });\n return idx;\n };\n Sortable.prototype.getSortableElement = function (element, instance) {\n if (instance === void 0) { instance = this; }\n return closest(element, \".\" + instance.itemClass);\n };\n Sortable.prototype.queryPositionInfo = function (value) {\n value.left = pageXOffset ? parseFloat(value.left) - pageXOffset + \"px\" : value.left;\n value.top = pageYOffset ? parseFloat(value.top) - pageYOffset + \"px\" : value.top;\n return value;\n };\n Sortable.prototype.isPlaceHolderPresent = function (instance) {\n return instance.placeHolderElement && !!closest(instance.placeHolderElement, \"#\" + instance.element.id);\n };\n /**\n * It is used to sort array of elements from source element to destination element.\n *\n * @param destination - Defines the destination element to which the sortable elements needs to be appended.\n *\n * If it is null, then the Sortable library element will be considered as destination.\n * @param targetIndexes - Specifies the sortable elements indexes which needs to be sorted.\n * @param insertBefore - Specifies the index before which the sortable elements needs to be appended.\n * If it is null, elements will be appended as last child.\n * @function moveTo\n * @returns {void}\n */\n Sortable.prototype.moveTo = function (destination, targetIndexes, insertBefore) {\n moveTo(this.element, destination, targetIndexes, insertBefore);\n };\n /**\n * It is used to destroy the Sortable library.\n */\n Sortable.prototype.destroy = function () {\n if (this.itemClass === 'e-sort-item') {\n this.itemClass = null;\n this.dataBind();\n }\n getComponent(this.element, Draggable).destroy();\n _super.prototype.destroy.call(this);\n };\n Sortable.prototype.getModuleName = function () {\n return 'sortable';\n };\n Sortable.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'itemClass':\n [].slice.call(this.element.children).forEach(function (element) {\n if (element.classList.contains(oldProp.itemClass)) {\n element.classList.remove(oldProp.itemClass);\n }\n if (newProp.itemClass) {\n element.classList.add(newProp.itemClass);\n }\n });\n break;\n }\n }\n };\n var Sortable_1;\n __decorate$1([\n Property(false)\n ], Sortable.prototype, \"enableAnimation\", void 0);\n __decorate$1([\n Property(null)\n ], Sortable.prototype, \"itemClass\", void 0);\n __decorate$1([\n Property(null)\n ], Sortable.prototype, \"scope\", void 0);\n __decorate$1([\n Property()\n ], Sortable.prototype, \"helper\", void 0);\n __decorate$1([\n Property()\n ], Sortable.prototype, \"placeHolder\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"drag\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"beforeDragStart\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"dragStart\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"beforeDrop\", void 0);\n __decorate$1([\n Event()\n ], Sortable.prototype, \"drop\", void 0);\n Sortable = Sortable_1 = __decorate$1([\n NotifyPropertyChanges\n ], Sortable);\n return Sortable;\n}(Base));\n/**\n * It is used to sort array of elements from source element to destination element.\n *\n * @private\n */\nfunction moveTo(from, to, targetIndexes, insertBefore) {\n var targetElements = [];\n if (!to) {\n to = from;\n }\n if (targetIndexes && targetIndexes.length) {\n targetIndexes.forEach(function (index) {\n targetElements.push(from.children[index]);\n });\n }\n else {\n targetElements = [].slice.call(from.children);\n }\n if (isNullOrUndefined(insertBefore)) {\n targetElements.forEach(function (target) {\n to.appendChild(target);\n });\n }\n else {\n var insertElement_1 = to.children[insertBefore];\n targetElements.forEach(function (target) {\n to.insertBefore(target, insertElement_1);\n });\n }\n}\n\n/**\n * Sortable Module\n */\n\n/**\n * List Components\n */\n\nexport { classNames, FieldSettings, ListView, Virtualization, cssClass, ListBase, getFieldValues, Sortable, moveTo };\n","import { Animation, Browser, ChildProperty, Collection, Complex, Component, Draggable, Droppable, Event, EventHandler, KeyboardEvents, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getElement, getInstance, getRandomId, getUniqueID, getValue, isBlazor, isNullOrUndefined, isRippleEnabled, isUndefined, isVisible, matches, merge, remove, removeClass, rippleEffect, select, selectAll, setStyleAttribute, setValue } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { Popup, calculatePosition, createSpinner, fit, getScrollableParent, getZindexPartial, hideSpinner, isCollide, showSpinner } from '@syncfusion/ej2-popups';\nimport { Button, createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { Input } from '@syncfusion/ej2-inputs';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @__PURE__ @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList$$1 = trgt.classList;\n if (classList$$1.contains(CLS_HSCROLLNAV)) {\n classList$$1 = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList$$1.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList$$1.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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 CLS_ROOT$1 = 'e-vscroll';\nvar CLS_RTL$1 = 'e-rtl';\nvar CLS_DISABLE$1 = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW$1 = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE$1 = 'e-scroll-device';\nvar CLS_OVERLAY$1 = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID$1 = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @__PURE__ @class */ (function (_super) {\n __extends$1(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL$1);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE$1);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = createElement('div', { className: CLS_VSCROLLCON });\n var scrollBar = createElement('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT$1, CLS_DEVICE$1]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY$1, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE$1 + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE$1);\n }\n else {\n this.element.classList.remove(CLS_DISABLE$1);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = createElement('div', { className: CLS_OVERLAY$1 + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = createElement('div', { id: id.concat('down'), className: clsDown });\n var navItem = createElement('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = createElement('div', { className: CLS_OVERLAY$1 + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = createElement('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = createElement('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = createElement('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE$1 });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = createElement('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW$1 + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList$$1 = trgt.classList;\n if (classList$$1.contains(CLS_VSCROLLNAV)) {\n classList$$1 = trgt.querySelector('.' + CLS_NAVARROW$1).classList;\n }\n if (classList$$1.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList$$1.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY$1, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW$1);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE$1);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE$1);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID$1) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID$1) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE$1);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE$1);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL$1);\n }\n else {\n this.element.classList.remove(CLS_RTL$1);\n }\n break;\n }\n }\n };\n __decorate$1([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate$1([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\n\n/**\n * Used to add scroll in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction addScrolling(createElement$$1, container, content, scrollType, enableRtl, offset) {\n var containerOffset;\n var contentOffset;\n var parentElem = container.parentElement;\n if (scrollType === 'vscroll') {\n containerOffset = offset || container.getBoundingClientRect().height;\n contentOffset = content.getBoundingClientRect().height;\n }\n else {\n containerOffset = container.getBoundingClientRect().width;\n contentOffset = content.getBoundingClientRect().width;\n }\n if (containerOffset < contentOffset) {\n return createScrollbar(createElement$$1, container, content, scrollType, enableRtl, offset);\n }\n else if (parentElem) {\n var width = parentElem.getBoundingClientRect().width;\n if (width < containerOffset && scrollType === 'hscroll') {\n contentOffset = width;\n container.style.maxWidth = width + 'px';\n return createScrollbar(createElement$$1, container, content, scrollType, enableRtl, offset);\n }\n return content;\n }\n else {\n return content;\n }\n}\n/**\n * Used to create scroll bar in menu.\n *\n * @param {createElementType} createElement - Specifies the create element model\n * @param {HTMLElement} container - Specifies the element container\n * @param {HTMLElement} content - Specifies the content element\n * @param {string} scrollType - Specifies the scroll type\n * @param {boolean} enableRtl - Specifies the enable RTL property\n * @param {boolean} offset - Specifies the offset value\n * @returns {HTMLElement} - Element\n * @hidden\n */\nfunction createScrollbar(createElement$$1, container, content, scrollType, enableRtl, offset) {\n var scrollEle = createElement$$1('div', { className: 'e-menu-' + scrollType });\n container.appendChild(scrollEle);\n scrollEle.appendChild(content);\n if (offset) {\n scrollEle.style.overflow = 'hidden';\n scrollEle.style.height = offset + 'px';\n }\n else {\n scrollEle.style.maxHeight = container.style.maxHeight;\n container.style.overflow = 'hidden';\n }\n var scrollObj;\n if (scrollType === 'vscroll') {\n scrollObj = new VScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetHeight / 2;\n }\n else {\n scrollObj = new HScroll({ enableRtl: enableRtl }, scrollEle);\n scrollObj.scrollStep = select('.e-' + scrollType + '-bar', container).offsetWidth;\n }\n return scrollEle;\n}\n/**\n * Used to destroy the scroll option.\n *\n * @param {VScroll | HScroll} scrollObj - Specifies the scroller object\n * @param {Element} element - Specifies the element\n * @param {HTMLElement} skipEle - Specifies the skip element\n * @returns {void}\n * @hidden\n */\nfunction destroyScroll(scrollObj, element, skipEle) {\n if (scrollObj) {\n var menu = select('.e-menu-parent', element);\n if (menu) {\n if (!skipEle || skipEle === menu) {\n scrollObj.destroy();\n element.parentElement.appendChild(menu);\n detach(element);\n }\n }\n else {\n scrollObj.destroy();\n detach(element);\n }\n }\n}\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar ENTER = 'enter';\nvar ESCAPE = 'escape';\nvar FOCUSED = 'e-focused';\nvar HEADER = 'e-menu-header';\nvar SELECTED = 'e-selected';\nvar SEPARATOR = 'e-separator';\nvar UPARROW = 'uparrow';\nvar DOWNARROW = 'downarrow';\nvar LEFTARROW = 'leftarrow';\nvar RIGHTARROW = 'rightarrow';\nvar HOME = 'home';\nvar END = 'end';\nvar TAB = 'tab';\nvar CARET = 'e-caret';\nvar ITEM = 'e-menu-item';\nvar DISABLED = 'e-disabled';\nvar HIDE = 'e-menu-hide';\nvar ICONS = 'e-icons';\nvar RTL = 'e-rtl';\nvar POPUP = 'e-menu-popup';\nvar TEMPLATE_PROPERTY = 'Template';\n/**\n * Configures the field options of the Menu.\n */\nvar FieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$2(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('id')\n ], FieldSettings.prototype, \"itemId\", void 0);\n __decorate$2([\n Property('parentId')\n ], FieldSettings.prototype, \"parentId\", void 0);\n __decorate$2([\n Property('text')\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate$2([\n Property('iconCss')\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('url')\n ], FieldSettings.prototype, \"url\", void 0);\n __decorate$2([\n Property('separator')\n ], FieldSettings.prototype, \"separator\", void 0);\n __decorate$2([\n Property('items')\n ], FieldSettings.prototype, \"children\", void 0);\n return FieldSettings;\n}(ChildProperty));\n/**\n * Specifies menu items.\n */\nvar MenuItem = /** @__PURE__ @class */ (function (_super) {\n __extends$2(MenuItem, _super);\n function MenuItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(null)\n ], MenuItem.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('')\n ], MenuItem.prototype, \"id\", void 0);\n __decorate$2([\n Property(false)\n ], MenuItem.prototype, \"separator\", void 0);\n __decorate$2([\n Collection([], MenuItem)\n ], MenuItem.prototype, \"items\", void 0);\n __decorate$2([\n Property('')\n ], MenuItem.prototype, \"text\", void 0);\n __decorate$2([\n Property('')\n ], MenuItem.prototype, \"url\", void 0);\n return MenuItem;\n}(ChildProperty));\n/**\n * Animation configuration settings.\n */\nvar MenuAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$2(MenuAnimationSettings, _super);\n function MenuAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('SlideDown')\n ], MenuAnimationSettings.prototype, \"effect\", void 0);\n __decorate$2([\n Property(400)\n ], MenuAnimationSettings.prototype, \"duration\", void 0);\n __decorate$2([\n Property('ease')\n ], MenuAnimationSettings.prototype, \"easing\", void 0);\n return MenuAnimationSettings;\n}(ChildProperty));\n/**\n * Base class for Menu and ContextMenu components.\n *\n * @private\n */\nvar MenuBase = /** @__PURE__ @class */ (function (_super) {\n __extends$2(MenuBase, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {MenuBaseModel} options - Specifies the menu base model\n * @param {string | HTMLUListElement} element - Specifies the element\n */\n function MenuBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.navIdx = [];\n _this.animation = new Animation({});\n _this.isTapHold = false;\n _this.tempItem = [];\n _this.showSubMenuOn = 'Auto';\n return _this;\n }\n /**\n * Initialized third party configuration settings.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.preRender = function () {\n if (!this.isMenu) {\n var ul = void 0;\n if (this.element.tagName === 'EJS-CONTEXTMENU') {\n ul = this.createElement('ul', {\n id: getUniqueID(this.getModuleName()), className: 'e-control e-lib e-' + this.getModuleName()\n });\n var ejInst = getValue('ej2_instances', this.element);\n removeClass([this.element], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.clonedElement = this.element;\n this.element = ul;\n setValue('ej2_instances', ejInst, this.element);\n }\n else {\n ul = this.createElement('ul', { id: getUniqueID(this.getModuleName()) });\n append([].slice.call(this.element.cloneNode(true).children), ul);\n var refEle = this.element.nextElementSibling;\n if (refEle) {\n this.element.parentElement.insertBefore(ul, refEle);\n }\n else {\n this.element.parentElement.appendChild(ul);\n }\n this.clonedElement = ul;\n }\n this.clonedElement.style.display = 'none';\n }\n if (this.element.tagName === 'EJS-MENU') {\n var ele = this.element;\n var ejInstance = getValue('ej2_instances', ele);\n var ul = this.createElement('ul');\n var wrapper = this.createElement('EJS-MENU', { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n ul.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = ul;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.clonedElement = wrapper;\n this.element = ele;\n if (!this.element.id) {\n this.element.id = getUniqueID(this.getModuleName());\n }\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n MenuBase.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderItems();\n this.wireEvents();\n this.renderComplete();\n var wrapper = this.getWrapper();\n // eslint-disable-next-line\n if (this.template && this.enableScrolling && (this.isReact || this.isAngular)) {\n requestAnimationFrame(function () {\n addScrolling(_this.createElement, wrapper, _this.element, 'hscroll', _this.enableRtl);\n });\n }\n };\n MenuBase.prototype.initialize = function () {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n if (this.isMenu) {\n this.element.parentElement.insertBefore(wrapper, this.element);\n }\n else {\n document.body.appendChild(wrapper);\n }\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n wrapper.appendChild(this.element);\n if (this.isMenu && this.hamburgerMode) {\n if (!this.target) {\n this.createHeaderContainer(wrapper);\n }\n }\n this.defaultOption = this.showItemOnClick;\n };\n MenuBase.prototype.renderItems = function () {\n if (!this.items.length) {\n var items = ListBase.createJsonFromElement(this.element, { fields: { child: 'items' } });\n this.setProperties({ items: items }, true);\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n var ul = this.createItems(this.items);\n append(Array.prototype.slice.call(ul.children), this.element);\n this.element.classList.add('e-menu-parent');\n if (this.isMenu) {\n if (!this.hamburgerMode && this.element.classList.contains('e-vertical')) {\n this.setBlankIconStyle(this.element);\n }\n if (this.enableScrolling) {\n var wrapper = this.getWrapper();\n if (this.element.classList.contains('e-vertical')) {\n addScrolling(this.createElement, wrapper, this.element, 'vscroll', this.enableRtl);\n }\n else {\n addScrolling(this.createElement, wrapper, this.element, 'hscroll', this.enableRtl);\n }\n }\n }\n };\n MenuBase.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n if (this.target) {\n var target = void 0;\n var targetElems = selectAll(this.target);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.add(target, 'click', this.menuHeaderClickHandler, this);\n }\n else {\n if (Browser.isIos) {\n new Touch(target, { tapHold: this.touchHandler.bind(this) });\n }\n else {\n EventHandler.add(target, 'contextmenu', this.cmenuHandler, this);\n }\n }\n }\n this.targetElement = target;\n if (!this.isMenu) {\n EventHandler.add(this.targetElement, 'scroll', this.scrollHandler, this);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollHandler, this);\n }\n }\n }\n if (!Browser.isDevice) {\n this.delegateMoverHandler = this.moverHandler.bind(this);\n this.delegateMouseDownHandler = this.mouseDownHandler.bind(this);\n EventHandler.add(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler, this);\n EventHandler.add(document, 'mousedown', this.delegateMouseDownHandler, this);\n }\n this.delegateClickHandler = this.clickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHandler, this);\n this.wireKeyboardEvent(wrapper);\n this.rippleFn = rippleEffect(wrapper, { selector: '.' + ITEM });\n };\n MenuBase.prototype.wireKeyboardEvent = function (element) {\n var keyConfigs = {\n downarrow: DOWNARROW,\n uparrow: UPARROW,\n enter: ENTER,\n leftarrow: LEFTARROW,\n rightarrow: RIGHTARROW,\n escape: ESCAPE\n };\n if (this.isMenu) {\n keyConfigs.home = HOME;\n keyConfigs.end = END;\n keyConfigs.tab = TAB;\n }\n new KeyboardEvents(element, {\n keyAction: this.keyBoardHandler.bind(this),\n keyConfigs: keyConfigs\n });\n };\n MenuBase.prototype.mouseDownHandler = function (e) {\n if (closest(e.target, '.e-' + this.getModuleName() + '-wrapper') !== this.getWrapper()\n && (!closest(e.target, '.e-' + this.getModuleName() + '-popup'))) {\n this.closeMenu(this.isMenu ? null : this.navIdx.length, e);\n }\n };\n MenuBase.prototype.keyBoardHandler = function (e) {\n var actionName = '';\n var trgt = e.target;\n var actionNeeded = this.isMenu && !this.hamburgerMode && !this.element.classList.contains('e-vertical')\n && this.navIdx.length < 1;\n e.preventDefault();\n if (this.enableScrolling && e.keyCode === 13 && trgt.classList.contains('e-scroll-nav')) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [closest(trgt, '.e-' + this.getModuleName() + '-wrapper')]);\n }\n if (actionNeeded) {\n switch (e.action) {\n case RIGHTARROW:\n actionName = RIGHTARROW;\n e.action = DOWNARROW;\n break;\n case LEFTARROW:\n actionName = LEFTARROW;\n e.action = UPARROW;\n break;\n case DOWNARROW:\n actionName = DOWNARROW;\n e.action = RIGHTARROW;\n break;\n case UPARROW:\n actionName = UPARROW;\n e.action = '';\n break;\n }\n }\n else if (this.enableRtl) {\n switch (e.action) {\n case LEFTARROW:\n actionNeeded = true;\n actionName = LEFTARROW;\n e.action = RIGHTARROW;\n break;\n case RIGHTARROW:\n actionNeeded = true;\n actionName = RIGHTARROW;\n e.action = LEFTARROW;\n break;\n }\n }\n switch (e.action) {\n case DOWNARROW:\n case UPARROW:\n case END:\n case HOME:\n case TAB:\n this.upDownKeyHandler(e);\n break;\n case RIGHTARROW:\n this.rightEnterKeyHandler(e);\n break;\n case LEFTARROW:\n this.leftEscKeyHandler(e);\n break;\n case ENTER:\n if (this.hamburgerMode && trgt.tagName === 'SPAN' && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n this.rightEnterKeyHandler(e);\n }\n break;\n case ESCAPE:\n this.leftEscKeyHandler(e);\n break;\n }\n if (actionNeeded) {\n e.action = actionName;\n }\n };\n MenuBase.prototype.upDownKeyHandler = function (e) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (e.action === DOWNARROW || e.action === HOME || e.action === TAB) ? 0 : cul.childElementCount - 1;\n var fliIdx = defaultIdx;\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n if (e.action !== END && e.action !== HOME) {\n fliIdx = this.getIdx(cul, fli);\n }\n fli.classList.remove(FOCUSED);\n if (e.action !== END && e.action !== HOME) {\n if (e.action === DOWNARROW) {\n fliIdx++;\n }\n else {\n fliIdx--;\n }\n if (fliIdx === (e.action === DOWNARROW ? cul.childElementCount : -1)) {\n fliIdx = defaultIdx;\n }\n }\n }\n var cli = cul.children[fliIdx];\n fliIdx = this.isValidLI(cli, fliIdx, e.action);\n cul.children[fliIdx].classList.add(FOCUSED);\n cul.children[fliIdx].focus();\n };\n MenuBase.prototype.isValidLI = function (cli, index, action) {\n var cul = this.getUlByNavIdx();\n var defaultIdx = (action === DOWNARROW || action === HOME || action === TAB) ? 0 : cul.childElementCount - 1;\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n if (action === DOWNARROW && index === cul.childElementCount - 1) {\n index = defaultIdx;\n }\n else if (action === UPARROW && index === 0) {\n index = defaultIdx;\n }\n else if ((action === DOWNARROW) || (action === RIGHTARROW)) {\n index++;\n }\n else {\n index--;\n }\n }\n cli = cul.children[index];\n if (cli.classList.contains(SEPARATOR) || cli.classList.contains(DISABLED) || cli.classList.contains(HIDE)) {\n index = this.isValidLI(cli, index, action);\n }\n return index;\n };\n MenuBase.prototype.getUlByNavIdx = function (navIdxLen) {\n if (navIdxLen === void 0) { navIdxLen = this.navIdx.length; }\n if (this.isMenu) {\n var popup = [this.getWrapper()].concat([].slice.call(selectAll('.' + POPUP)))[navIdxLen];\n return isNullOrUndefined(popup) ? null : select('.e-menu-parent', popup);\n }\n else {\n return this.getWrapper().children[navIdxLen];\n }\n };\n MenuBase.prototype.rightEnterKeyHandler = function (e) {\n var eventArgs;\n var cul = this.getUlByNavIdx();\n var fli = this.getLIByClass(cul, FOCUSED);\n if (fli) {\n var fliIdx = this.getIdx(cul, fli);\n var navIdx = this.navIdx.concat(fliIdx);\n var item = this.getItem(navIdx);\n if (item.items.length) {\n this.navIdx.push(fliIdx);\n this.keyType = 'right';\n this.action = e.action;\n this.openMenu(fli, item, -1, -1, e);\n }\n else {\n if (e.action === ENTER) {\n if (this.isMenu && this.navIdx.length === 0) {\n this.removeLIStateByClass([SELECTED], [this.getWrapper()]);\n }\n else {\n fli.classList.remove(FOCUSED);\n }\n fli.classList.add(SELECTED);\n eventArgs = { element: fli, item: item, event: e };\n this.trigger('select', eventArgs);\n this.closeMenu(null, e);\n }\n }\n }\n };\n MenuBase.prototype.leftEscKeyHandler = function (e) {\n if (this.navIdx.length) {\n this.keyType = 'left';\n this.closeMenu(this.navIdx.length, e);\n }\n else {\n if (e.action === ESCAPE) {\n this.closeMenu(null, e);\n }\n }\n };\n MenuBase.prototype.scrollHandler = function (e) {\n this.closeMenu(null, e);\n };\n MenuBase.prototype.touchHandler = function (e) {\n this.isTapHold = true;\n this.cmenuHandler(e.originalEvent);\n };\n MenuBase.prototype.cmenuHandler = function (e) {\n e.preventDefault();\n this.currentTarget = e.target;\n this.isCMenu = true;\n this.pageX = e.changedTouches ? e.changedTouches[0].pageX + 1 : e.pageX + 1;\n this.pageY = e.changedTouches ? e.changedTouches[0].pageY + 1 : e.pageY + 1;\n this.closeMenu(null, e);\n if (this.isCMenu) {\n if (this.canOpen(e.target)) {\n this.openMenu(null, null, this.pageY, this.pageX, e);\n }\n this.isCMenu = false;\n }\n };\n // eslint:disable-next-line:max-func-body-length\n MenuBase.prototype.closeMenu = function (ulIndex, e, isIterated) {\n var _this = this;\n if (ulIndex === void 0) { ulIndex = 0; }\n if (e === void 0) { e = null; }\n if (this.isMenuVisible()) {\n var sli = void 0;\n var item_1;\n var wrapper_1 = this.getWrapper();\n var beforeCloseArgs = void 0;\n var items_1;\n var popups = this.getPopups();\n var isClose = false;\n var cnt = this.isMenu ? popups.length + 1 : wrapper_1.childElementCount;\n var ul_1 = this.isMenu && cnt !== 1 ? select('.e-ul', popups[cnt - 2])\n : selectAll('.e-menu-parent', wrapper_1)[cnt - 1];\n if (this.isMenu && ul_1.classList.contains('e-menu')) {\n sli = this.getLIByClass(ul_1, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n isClose = true;\n }\n if (!isClose) {\n var liElem_1 = e && e.target && this.getLI(e.target);\n if (liElem_1) {\n this.cli = liElem_1;\n }\n else {\n this.cli = ul_1.children[0];\n }\n item_1 = this.navIdx.length ? this.getItem(this.navIdx) : null;\n items_1 = item_1 ? item_1.items : this.items;\n beforeCloseArgs = { element: ul_1, parentItem: item_1, items: items_1, event: e, cancel: false, isFocused: true };\n this.trigger('beforeClose', beforeCloseArgs, function (observedCloseArgs) {\n var popupEle;\n var closeArgs;\n var popupId = '';\n var popupObj;\n var isOpen = !observedCloseArgs.cancel;\n if (isOpen || _this.isCMenu) {\n if (_this.isMenu) {\n popupEle = closest(ul_1, '.' + POPUP);\n if (_this.hamburgerMode) {\n popupEle.parentElement.style.minHeight = '';\n closest(ul_1, '.e-menu-item').setAttribute('aria-expanded', 'false');\n }\n _this.unWireKeyboardEvent(popupEle);\n destroyScroll(getInstance(popupEle.children[0], VScroll), popupEle.children[0]);\n popupObj = getInstance(popupEle, Popup);\n popupObj.hide();\n popupId = popupEle.id;\n popupObj.destroy();\n detach(popupEle);\n }\n else {\n _this.toggleAnimation(ul_1, false);\n }\n closeArgs = { element: ul_1, parentItem: item_1, items: items_1 };\n _this.trigger('onClose', closeArgs);\n _this.navIdx.pop();\n }\n _this.updateReactTemplate();\n var trgtliId;\n var closedLi;\n var trgtLi;\n var trgtpopUp = _this.getWrapper() && _this.getUlByNavIdx();\n if (_this.isCMenu) {\n if (_this.canOpen(e.target)) {\n _this.openMenu(null, null, _this.pageY, _this.pageX, e);\n }\n _this.isCMenu = false;\n }\n if (_this.isMenu && trgtpopUp && popupId.length) {\n // eslint-disable-next-line\n trgtliId = new RegExp('(.*)-ej2menu-' + _this.element.id + '-popup').exec(popupId)[1];\n closedLi = trgtpopUp.querySelector('[id=\"' + trgtliId + '\"]');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n else if (trgtpopUp) {\n closedLi = trgtpopUp.querySelector('.e-menu-item.e-selected');\n trgtLi = (liElem_1 && trgtpopUp.querySelector('[id=\"' + liElem_1.id + '\"]'));\n }\n var submenus = liElem_1 && liElem_1.querySelectorAll('.e-menu-item');\n if (isOpen && _this.hamburgerMode && ulIndex && !(submenus.length)) {\n _this.afterCloseMenu(e);\n }\n else if (isOpen && !_this.hamburgerMode && closedLi && !trgtLi && _this.keyType !== 'left' && (_this.navIdx.length || !_this.isMenu && _this.navIdx.length === 0)) {\n var ele = (e && e.target.classList.contains('e-vscroll'))\n ? closest(e.target, '.e-menu-wrapper') : null;\n if (ele) {\n ele = ele.querySelector('.e-menu-item');\n if (_this.showItemOnClick || (ele && _this.getIndex(ele.id, true).length <= _this.navIdx.length)) {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e, true);\n }\n }\n else {\n _this.closeMenu(_this.navIdx[_this.navIdx.length - 1], e);\n }\n }\n else if (isOpen && !isIterated && !ulIndex && ((_this.hamburgerMode && _this.navIdx.length) ||\n _this.navIdx.length === 1 && liElem_1 && trgtpopUp !== liElem_1.parentElement)) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && isNullOrUndefined(ulIndex) && _this.navIdx.length) {\n _this.closeMenu(null, e);\n }\n else if (isOpen && !_this.isMenu && !ulIndex && _this.navIdx.length === 0 && !_this.isMenusClosed) {\n _this.isMenusClosed = true;\n _this.closeMenu(0, e);\n }\n else if (isOpen && _this.isMenu && e && e.target &&\n _this.navIdx.length !== 0 && closest(e.target, '.e-menu-parent.e-control')) {\n _this.closeMenu(0, e);\n }\n else if (isOpen && !_this.isMenu && selectAll('.e-menu-parent', wrapper_1)[ulIndex - 1] && e.which === 3) {\n _this.closeMenu(null, e);\n }\n else {\n if (isOpen && (_this.keyType === 'right' || _this.keyType === 'click')) {\n _this.afterCloseMenu(e);\n }\n else {\n var cul = _this.getUlByNavIdx();\n var sli_1 = _this.getLIByClass(cul, SELECTED);\n if (sli_1) {\n sli_1.setAttribute('aria-expanded', 'false');\n sli_1.classList.remove(SELECTED);\n if (observedCloseArgs.isFocused && liElem_1 || _this.keyType === 'left') {\n sli_1.classList.add(FOCUSED);\n sli_1.focus();\n }\n }\n if (!isOpen && _this.hamburgerMode && liElem_1 && liElem_1.getAttribute('aria-expanded') === 'false' &&\n liElem_1.getAttribute('aria-haspopup') === 'true') {\n if (closest(liElem_1, '.e-menu-parent.e-control')) {\n _this.navIdx = [];\n }\n else {\n _this.navIdx.pop();\n }\n _this.navIdx.push(_this.cliIdx);\n var item_2 = _this.getItem(_this.navIdx);\n liElem_1.setAttribute('aria-expanded', 'true');\n _this.openMenu(liElem_1, item_2, -1, -1, e);\n }\n }\n if (_this.navIdx.length < 1) {\n if (_this.showSubMenuOn === 'Hover' || _this.showSubMenuOn === 'Click') {\n _this.showItemOnClick = _this.defaultOption;\n _this.showSubMenuOn = 'Auto';\n }\n }\n }\n _this.removeStateWrapper();\n });\n }\n }\n };\n MenuBase.prototype.updateReactTemplate = function () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && this.template && this.navIdx.length === 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var portals = this.portals.splice(0, this.items.length);\n this.clearTemplate(['template']);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.portals = portals;\n this.renderReactTemplates();\n }\n };\n MenuBase.prototype.getMenuItemModel = function (item, level) {\n if (isNullOrUndefined(item)) {\n return null;\n }\n if (isNullOrUndefined(level)) {\n level = 0;\n }\n var fields = this.getFields(level);\n return { text: item[fields.text], id: item[fields.id], items: item[fields.child], separator: item[fields.separator],\n iconCss: item[fields.iconCss], url: item[fields.url] };\n };\n MenuBase.prototype.getPopups = function () {\n var _this = this;\n var popups = [];\n [].slice.call(document.querySelectorAll('.' + POPUP)).forEach(function (elem) {\n if (!isNullOrUndefined(elem.querySelector('.' + ITEM)) && _this.getIndex(elem.querySelector('.' + ITEM).id, true).length) {\n popups.push(elem);\n }\n });\n return popups;\n };\n MenuBase.prototype.isMenuVisible = function () {\n return (this.navIdx.length > 0 || (this.element.classList.contains('e-contextmenu') && isVisible(this.element).valueOf()));\n };\n MenuBase.prototype.canOpen = function (target) {\n var canOpen = true;\n if (this.filter) {\n canOpen = false;\n var filter = this.filter.split(' ');\n for (var i = 0, len = filter.length; i < len; i++) {\n if (closest(target, '.' + filter[i])) {\n canOpen = true;\n break;\n }\n }\n }\n return canOpen;\n };\n MenuBase.prototype.openMenu = function (li, item, top, left, e, target) {\n var _this = this;\n if (top === void 0) { top = 0; }\n if (left === void 0) { left = 0; }\n if (e === void 0) { e = null; }\n if (target === void 0) { target = this.targetElement; }\n var wrapper = this.getWrapper();\n this.lItem = li;\n var elemId = this.element.id !== '' ? this.element.id : 'menu';\n this.isMenusClosed = false;\n if (isNullOrUndefined(top)) {\n top = -1;\n }\n if (isNullOrUndefined(left)) {\n left = -1;\n }\n if (li) {\n this.uList = this.createItems(item[this.getField('children', this.navIdx.length - 1)]);\n if (!this.isMenu && Browser.isDevice) {\n wrapper.lastChild.style.display = 'none';\n var data = {\n text: item[this.getField('text')].toString(), iconCss: ICONS + ' e-previous'\n };\n var hdata = new MenuItem(this.items[0], 'items', data, true);\n var hli = this.createItems([hdata]).children[0];\n hli.classList.add(HEADER);\n this.uList.insertBefore(hli, this.uList.children[0]);\n }\n if (this.isMenu) {\n this.popupWrapper = this.createElement('div', {\n className: 'e-' + this.getModuleName() + '-wrapper ' + POPUP, id: li.id + '-ej2menu-' + elemId + '-popup'\n });\n if (this.hamburgerMode) {\n top = li.offsetHeight;\n li.appendChild(this.popupWrapper);\n }\n else {\n document.body.appendChild(this.popupWrapper);\n }\n this.isNestedOrVertical = this.element.classList.contains('e-vertical') || this.navIdx.length !== 1;\n this.popupObj = this.generatePopup(this.popupWrapper, this.uList, li, this.isNestedOrVertical);\n if (this.template) {\n this.renderReactTemplates();\n }\n if (this.hamburgerMode) {\n this.calculateIndentSize(this.uList, li);\n }\n else {\n if (this.cssClass) {\n addClass([this.popupWrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n this.popupObj.hide();\n }\n if (!this.hamburgerMode && !this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, 0, 0, 'menu'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, 0, 0, 'menu');\n }\n }\n else {\n this.uList.style.zIndex = this.element.style.zIndex;\n wrapper.appendChild(this.uList);\n if (!this.showItemOnClick && this.hoverDelay) {\n window.clearInterval(this.timer);\n this.timer = window.setTimeout(function () { _this.triggerBeforeOpen(li, _this.uList, item, e, top, left, 'none'); }, this.hoverDelay);\n }\n else {\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n }\n }\n else {\n this.uList = this.element;\n this.uList.style.zIndex = getZindexPartial(target ? target : this.element).toString();\n this.triggerBeforeOpen(li, this.uList, item, e, top, left, 'none');\n }\n };\n MenuBase.prototype.calculateIndentSize = function (ul, li) {\n var liStyle = getComputedStyle(li);\n var liIndent = parseInt(liStyle.textIndent, 10);\n if (this.navIdx.length < 2 && !li.classList.contains('e-blankicon')) {\n liIndent *= 2;\n }\n else {\n liIndent += (liIndent / 4);\n }\n ul.style.textIndent = liIndent + 'px';\n var blankIconElem = ul.querySelectorAll('.e-blankicon');\n if (blankIconElem && blankIconElem.length) {\n var menuIconElem = ul.querySelector('.e-menu-icon');\n var menuIconElemStyle = getComputedStyle(menuIconElem);\n var blankIconIndent = (parseInt(menuIconElemStyle.marginRight, 10) + menuIconElem.offsetWidth + liIndent);\n for (var i = 0; i < blankIconElem.length; i++) {\n blankIconElem[i].style.textIndent = blankIconIndent + 'px';\n }\n }\n };\n MenuBase.prototype.generatePopup = function (popupWrapper, ul, li, isNestedOrVertical) {\n var _this = this;\n var popupObj = new Popup(popupWrapper, {\n actionOnScroll: this.hamburgerMode ? 'none' : 'reposition',\n relateTo: li,\n collision: this.hamburgerMode ? { X: 'none', Y: 'none' } : { X: isNestedOrVertical ||\n this.enableRtl ? 'none' : 'flip', Y: 'fit' },\n position: (isNestedOrVertical && !this.hamburgerMode) ? { X: 'right', Y: 'top' } : { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n enableRtl: this.enableRtl,\n content: ul,\n open: function () {\n var scrollEle = select('.e-menu-vscroll', popupObj.element);\n if (scrollEle) {\n scrollEle.style.height = 'inherit';\n scrollEle.style.maxHeight = '';\n }\n var ul = select('.e-ul', popupObj.element);\n popupObj.element.style.maxHeight = '';\n ul.focus();\n _this.triggerOpen(ul);\n }\n });\n return popupObj;\n };\n MenuBase.prototype.createHeaderContainer = function (wrapper) {\n wrapper = wrapper || this.getWrapper();\n var spanElem = this.createElement('span', { className: 'e-' + this.getModuleName() + '-header' });\n var tempTitle = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.title) : this.title;\n var spanTitle = this.createElement('span', {\n className: 'e-' + this.getModuleName() + '-title', innerHTML: tempTitle\n });\n var spanIcon = this.createElement('span', {\n className: 'e-icons e-' + this.getModuleName() + '-icon', attrs: { 'tabindex': '0' }\n });\n spanElem.appendChild(spanTitle);\n spanElem.appendChild(spanIcon);\n wrapper.insertBefore(spanElem, this.element);\n };\n MenuBase.prototype.openHamburgerMenu = function (e) {\n if (this.hamburgerMode) {\n this.triggerBeforeOpen(null, this.element, null, e, 0, 0, 'hamburger');\n }\n };\n MenuBase.prototype.closeHamburgerMenu = function (e) {\n var _this = this;\n var beforeCloseArgs = { element: this.element, parentItem: null, event: e,\n items: this.items, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedHamburgerCloseArgs) {\n if (!observedHamburgerCloseArgs.cancel) {\n _this.closeMenu(null, e);\n _this.element.classList.add('e-hide-menu');\n _this.trigger('onClose', { element: _this.element, parentItem: null, items: _this.items });\n }\n });\n };\n MenuBase.prototype.callFit = function (element, x, y, top, left) {\n return fit(element, null, { X: x, Y: y }, { top: top, left: left });\n };\n MenuBase.prototype.triggerBeforeOpen = function (li, ul, item, e, top, left, type) {\n var _this = this;\n var items = li ? item[this.getField('children', this.navIdx.length - 1)] : this.items;\n var eventArgs = {\n element: ul, items: items, parentItem: item, event: e, cancel: false, top: top, left: left, showSubMenuOn: 'Auto'\n };\n var menuType = type;\n this.trigger('beforeOpen', eventArgs, function (observedOpenArgs) {\n switch (menuType) {\n case 'menu':\n if (!_this.hamburgerMode) {\n if (observedOpenArgs.showSubMenuOn !== 'Auto') {\n _this.showItemOnClick = !_this.defaultOption;\n _this.showSubMenuOn = observedOpenArgs.showSubMenuOn;\n }\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n }\n _this.popupWrapper.style.display = 'block';\n if (!_this.hamburgerMode) {\n _this.popupWrapper.style.maxHeight = _this.popupWrapper.getBoundingClientRect().height + 'px';\n if (_this.enableScrolling) {\n addScrolling(_this.createElement, _this.popupWrapper, _this.uList, 'vscroll', _this.enableRtl);\n }\n _this.checkScrollOffset(e);\n }\n if (!_this.hamburgerMode && !_this.left && !_this.top) {\n _this.popupObj.refreshPosition(_this.lItem, true);\n _this.left = parseInt(_this.popupWrapper.style.left, 10);\n _this.top = parseInt(_this.popupWrapper.style.top, 10);\n if (_this.enableRtl) {\n _this.left =\n _this.isNestedOrVertical ? _this.left - _this.popupWrapper.offsetWidth - _this.lItem.parentElement.offsetWidth + 2\n : _this.left - _this.popupWrapper.offsetWidth + _this.lItem.offsetWidth;\n }\n // eslint-disable-next-line\n if (_this.template && (_this.isReact || _this.isAngular)) {\n requestAnimationFrame(function () {\n _this.collision();\n _this.popupWrapper.style.display = '';\n });\n }\n else {\n _this.collision();\n _this.popupWrapper.style.display = '';\n }\n }\n else {\n _this.popupObj.collision = { X: 'none', Y: 'none' };\n _this.popupWrapper.style.display = '';\n }\n break;\n case 'none':\n _this.top = observedOpenArgs.top;\n _this.left = observedOpenArgs.left;\n break;\n case 'hamburger':\n if (!observedOpenArgs.cancel) {\n _this.element.classList.remove('e-hide-menu');\n _this.triggerOpen(_this.element);\n }\n break;\n }\n if (menuType !== 'hamburger') {\n if (observedOpenArgs.cancel) {\n if (_this.isMenu) {\n _this.popupObj.destroy();\n detach(_this.popupWrapper);\n }\n else if (ul.className.indexOf('e-ul') > -1) {\n detach(ul);\n }\n _this.navIdx.pop();\n }\n else {\n if (_this.isMenu) {\n if (_this.hamburgerMode) {\n _this.popupWrapper.style.top = _this.top + 'px';\n _this.popupWrapper.style.left = 0 + 'px';\n _this.toggleAnimation(_this.popupWrapper);\n }\n else {\n _this.setBlankIconStyle(_this.popupWrapper);\n _this.wireKeyboardEvent(_this.popupWrapper);\n rippleEffect(_this.popupWrapper, { selector: '.' + ITEM });\n _this.popupWrapper.style.left = _this.left + 'px';\n _this.popupWrapper.style.top = _this.top + 'px';\n var animationOptions = _this.animationSettings.effect !== 'None' ? {\n name: _this.animationSettings.effect, duration: _this.animationSettings.duration,\n timingFunction: _this.animationSettings.easing\n } : null;\n _this.popupObj.show(animationOptions, _this.lItem);\n }\n }\n else {\n _this.setBlankIconStyle(_this.uList);\n _this.setPosition(_this.lItem, _this.uList, _this.top, _this.left);\n _this.toggleAnimation(_this.uList);\n }\n }\n }\n if (_this.keyType === 'right') {\n var cul = _this.getUlByNavIdx();\n li.classList.remove(FOCUSED);\n if (_this.isMenu && _this.navIdx.length === 1) {\n _this.removeLIStateByClass([SELECTED], [_this.getWrapper()]);\n }\n li.classList.add(SELECTED);\n if (_this.action === ENTER) {\n var eventArgs_1 = { element: li, item: item, event: e };\n _this.trigger('select', eventArgs_1);\n }\n li.focus();\n cul = _this.getUlByNavIdx();\n var index = _this.isValidLI(cul.children[0], 0, _this.action);\n cul.children[index].classList.add(FOCUSED);\n cul.children[index].focus();\n }\n });\n };\n MenuBase.prototype.collision = function () {\n var collide;\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if ((this.isNestedOrVertical || this.enableRtl) && (collide.indexOf('right') > -1\n || collide.indexOf('left') > -1)) {\n this.popupObj.collision.X = 'none';\n var offWidth = closest(this.lItem, '.e-' + this.getModuleName() + '-wrapper').offsetWidth;\n this.left =\n this.enableRtl ? calculatePosition(this.lItem, this.isNestedOrVertical ? 'right' : 'left', 'top').left\n : this.left - this.popupWrapper.offsetWidth - offWidth + 2;\n }\n collide = isCollide(this.popupWrapper, null, this.left, this.top);\n if (collide.indexOf('left') > -1 || collide.indexOf('right') > -1) {\n this.left = this.callFit(this.popupWrapper, true, false, this.top, this.left).left;\n }\n this.popupWrapper.style.left = this.left + 'px';\n };\n MenuBase.prototype.setBlankIconStyle = function (menu) {\n var blankIconList = [].slice.call(menu.getElementsByClassName('e-blankicon'));\n if (!blankIconList.length) {\n return;\n }\n var iconLi = menu.querySelector('.e-menu-item:not(.e-blankicon):not(.e-separator)');\n if (!iconLi) {\n return;\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n if (!icon) {\n return;\n }\n var cssProp = this.enableRtl ? { padding: 'paddingRight', margin: 'marginLeft' } :\n { padding: 'paddingLeft', margin: 'marginRight' };\n var iconCssProps = getComputedStyle(icon);\n var iconSize = parseInt(iconCssProps.fontSize, 10);\n if (!!parseInt(iconCssProps.width, 10) && parseInt(iconCssProps.width, 10) > iconSize) {\n iconSize = parseInt(iconCssProps.width, 10);\n }\n // eslint:disable\n var size = iconSize + parseInt(\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n iconCssProps[cssProp.margin], 10) + parseInt(getComputedStyle(iconLi)[cssProp.padding], 10) + \"px\";\n blankIconList.forEach(function (li) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n li.style[cssProp.padding] = size;\n });\n // eslint:enable\n };\n MenuBase.prototype.checkScrollOffset = function (e) {\n var wrapper = this.getWrapper();\n if (wrapper.children[0].classList.contains('e-menu-hscroll') && this.navIdx.length === 1) {\n var trgt = isNullOrUndefined(e) ? this.element : closest(e.target, '.' + ITEM);\n var offsetEle = select('.e-hscroll-bar', wrapper);\n if (offsetEle.scrollLeft > trgt.offsetLeft) {\n offsetEle.scrollLeft -= (offsetEle.scrollLeft - trgt.offsetLeft);\n }\n var offsetLeft = offsetEle.scrollLeft + offsetEle.offsetWidth;\n var offsetRight = trgt.offsetLeft + trgt.offsetWidth;\n if (offsetLeft < offsetRight) {\n offsetEle.scrollLeft += (offsetRight - offsetLeft);\n }\n }\n };\n MenuBase.prototype.setPosition = function (li, ul, top, left) {\n var px = 'px';\n this.toggleVisiblity(ul);\n if (ul === this.element || (left > -1 && top > -1)) {\n var collide = isCollide(ul, null, left, top);\n if (collide.indexOf('right') > -1) {\n left = left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n var offset = this.callFit(ul, false, true, top, left);\n top = offset.top - 20;\n if (top < 0) {\n var newTop = (pageYOffset + document.documentElement.clientHeight) - ul.getBoundingClientRect().height;\n if (newTop > -1) {\n top = newTop;\n }\n }\n }\n collide = isCollide(ul, null, left, top);\n if (collide.indexOf('left') > -1) {\n var offset = this.callFit(ul, true, false, top, left);\n left = offset.left;\n }\n }\n else {\n if (Browser.isDevice) {\n top = Number(this.element.style.top.replace(px, ''));\n left = Number(this.element.style.left.replace(px, ''));\n }\n else {\n var x = this.enableRtl ? 'left' : 'right';\n var offset = calculatePosition(li, x, 'top');\n top = offset.top;\n left = offset.left;\n var collide = isCollide(ul, null, this.enableRtl ? left - ul.offsetWidth : left, top);\n var xCollision = collide.indexOf('left') > -1 || collide.indexOf('right') > -1;\n if (xCollision) {\n offset = calculatePosition(li, this.enableRtl ? 'right' : 'left', 'top');\n left = offset.left;\n }\n if (this.enableRtl || xCollision) {\n left = (this.enableRtl && xCollision) ? left : left - ul.offsetWidth;\n }\n if (collide.indexOf('bottom') > -1) {\n offset = this.callFit(ul, false, true, top, left);\n top = offset.top;\n }\n }\n }\n this.toggleVisiblity(ul, false);\n ul.style.top = top + px;\n ul.style.left = left + px;\n };\n MenuBase.prototype.toggleVisiblity = function (ul, isVisible$$1) {\n if (isVisible$$1 === void 0) { isVisible$$1 = true; }\n ul.style.visibility = isVisible$$1 ? 'hidden' : '';\n ul.style.display = isVisible$$1 ? 'block' : 'none';\n };\n MenuBase.prototype.createItems = function (items) {\n var _this = this;\n var level = this.navIdx ? this.navIdx.length : 0;\n var fields = this.getFields(level);\n var showIcon = this.hasField(items, this.getField('iconCss', level));\n var listBaseOptions = {\n showIcon: showIcon,\n moduleName: 'menu',\n fields: fields,\n template: this.template,\n itemNavigable: true,\n itemCreating: function (args) {\n if (!args.curData[args.fields[fields.id]]) {\n args.curData[args.fields[fields.id]] = getUniqueID('menuitem');\n }\n args.curData.htmlAttributes = {\n role: 'menuitem',\n tabindex: '-1'\n };\n if (_this.isMenu && !args.curData[_this.getField('separator', level)]) {\n args.curData.htmlAttributes['aria-label'] = args.curData[args.fields.text] ?\n args.curData[args.fields.text] : args.curData[args.fields.id];\n }\n if (args.curData[args.fields[fields.iconCss]] === '') {\n args.curData[args.fields[fields.iconCss]] = null;\n }\n },\n itemCreated: function (args) {\n if (args.curData[_this.getField('separator', level)]) {\n args.item.classList.add(SEPARATOR);\n args.item.setAttribute('role', 'separator');\n }\n if (showIcon && !args.curData[args.fields.iconCss]\n && !args.curData[_this.getField('separator', level)]) {\n args.item.classList.add('e-blankicon');\n }\n if (args.curData[args.fields.child]\n && args.curData[args.fields.child].length) {\n var span = _this.createElement('span', { className: ICONS + ' ' + CARET });\n args.item.appendChild(span);\n args.item.setAttribute('aria-haspopup', 'true');\n args.item.setAttribute('aria-expanded', 'false');\n args.item.classList.add('e-menu-caret-icon');\n }\n if (_this.isMenu && _this.template) {\n args.item.setAttribute('id', args.curData[args.fields.id].toString());\n args.item.removeAttribute('data-uid');\n if (args.item.classList.contains('e-level-1')) {\n args.item.classList.remove('e-level-1');\n }\n if (args.item.classList.contains('e-has-child')) {\n args.item.classList.remove('e-has-child');\n }\n args.item.removeAttribute('aria-level');\n }\n var eventArgs = { item: args.curData, element: args.item };\n _this.trigger('beforeItemRender', eventArgs);\n }\n };\n this.setProperties({ 'items': this.items }, true);\n if (this.isMenu) {\n listBaseOptions.templateID = this.element.id + TEMPLATE_PROPERTY;\n }\n var ul = ListBase.createList(this.createElement, items, listBaseOptions, !this.template, this);\n ul.setAttribute('tabindex', '0');\n if (this.isMenu) {\n ul.setAttribute('role', 'menu');\n }\n else {\n ul.setAttribute('role', 'menubar');\n }\n return ul;\n };\n MenuBase.prototype.moverHandler = function (e) {\n var trgt = e.target;\n this.liTrgt = trgt;\n var cli = this.getLI(trgt);\n var wrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : this.getWrapper();\n var hdrWrapper = this.getWrapper();\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var ulId;\n var isDifferentElem = false;\n if (!wrapper) {\n return;\n }\n if (wrapper.id !== '') {\n ulId = regex.exec(wrapper.id)[1];\n }\n else {\n ulId = wrapper.querySelector('ul').id;\n }\n if (ulId !== this.element.id) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [this.getWrapper()]);\n if (this.navIdx.length) {\n isDifferentElem = true;\n }\n else {\n return;\n }\n }\n if (cli && closest(cli, '.e-' + this.getModuleName() + '-wrapper') && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [wrapper].concat(this.getPopups()) : [wrapper]);\n this.removeLIStateByClass([FOCUSED], this.isMenu ? [hdrWrapper].concat(this.getPopups()) : [hdrWrapper]);\n cli.classList.add(FOCUSED);\n if (!this.showItemOnClick) {\n this.clickHandler(e);\n }\n }\n else if (this.isMenu && this.showItemOnClick && !isDifferentElem) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n }\n if (this.isMenu) {\n if (!this.showItemOnClick && (trgt.parentElement !== wrapper && !closest(trgt, '.e-' + this.getModuleName() + '-popup'))\n && (!cli || (cli && !this.getIndex(cli.id, true).length)) && this.showSubMenuOn !== 'Hover') {\n this.removeLIStateByClass([FOCUSED], [wrapper]);\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n else if (isDifferentElem && !this.showItemOnClick) {\n if (this.navIdx.length) {\n this.isClosed = true;\n this.closeMenu(null, e);\n }\n }\n if (!this.isClosed) {\n this.removeStateWrapper();\n }\n this.isClosed = false;\n }\n };\n MenuBase.prototype.removeStateWrapper = function () {\n if (this.liTrgt) {\n var wrapper = closest(this.liTrgt, '.e-menu-vscroll');\n if (this.liTrgt.tagName === 'DIV' && wrapper) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [wrapper]);\n }\n }\n };\n MenuBase.prototype.removeLIStateByClass = function (classList$$1, element) {\n var li;\n var _loop_1 = function (i) {\n classList$$1.forEach(function (className) {\n li = select('.' + className, element[i]);\n if (li) {\n li.classList.remove(className);\n }\n });\n };\n for (var i = 0; i < element.length; i++) {\n _loop_1(i);\n }\n };\n MenuBase.prototype.getField = function (propName, level) {\n if (level === void 0) { level = 0; }\n var fieldName = this.fields[\"\" + propName];\n return typeof fieldName === 'string' ? fieldName :\n (!fieldName[level] ? fieldName[fieldName.length - 1].toString()\n : fieldName[level].toString());\n };\n MenuBase.prototype.getFields = function (level) {\n if (level === void 0) { level = 0; }\n return {\n id: this.getField('itemId', level),\n iconCss: this.getField('iconCss', level),\n text: this.getField('text', level),\n url: this.getField('url', level),\n child: this.getField('children', level),\n separator: this.getField('separator', level)\n };\n };\n MenuBase.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n MenuBase.prototype.menuHeaderClickHandler = function (e) {\n if (closest(e.target, '.e-menu-wrapper').querySelector('ul.e-menu-parent').id !== this.element.id) {\n return;\n }\n if (this.element.className.indexOf('e-hide-menu') > -1) {\n this.openHamburgerMenu(e);\n }\n else {\n this.closeHamburgerMenu(e);\n }\n };\n MenuBase.prototype.clickHandler = function (e) {\n if (this.isTapHold) {\n this.isTapHold = false;\n }\n else {\n var wrapper = this.getWrapper();\n var trgt = e.target;\n var cli = this.cli = this.getLI(trgt);\n var regex = new RegExp('-ej2menu-(.*)-popup');\n var cliWrapper = cli ? closest(cli, '.e-' + this.getModuleName() + '-wrapper') : null;\n var isInstLI = cli && cliWrapper && (this.isMenu ? this.getIndex(cli.id, true).length > 0\n : wrapper.firstElementChild.id === cliWrapper.firstElementChild.id);\n if (Browser.isDevice && this.isMenu) {\n this.removeLIStateByClass([FOCUSED], [wrapper].concat(this.getPopups()));\n this.mouseDownHandler(e);\n }\n if (cli && cliWrapper && this.isMenu) {\n var cliWrapperId = cliWrapper.id ? regex.exec(cliWrapper.id)[1] : cliWrapper.querySelector('.e-menu-parent').id;\n if (this.element.id !== cliWrapperId) {\n return;\n }\n }\n if (isInstLI && e.type === 'click' && !cli.classList.contains(HEADER)) {\n this.setLISelected(cli);\n var navIdx = this.getIndex(cli.id, true);\n var item = this.getItem(navIdx);\n var eventArgs = { element: cli, item: item, event: e };\n this.trigger('select', eventArgs);\n }\n if (isInstLI && (e.type === 'mouseover' || Browser.isDevice || this.showItemOnClick)) {\n var ul = void 0;\n if (cli.classList.contains(HEADER)) {\n ul = wrapper.children[this.navIdx.length - 1];\n this.toggleAnimation(ul);\n var sli = this.getLIByClass(ul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n detach(cli.parentNode);\n this.navIdx.pop();\n }\n else {\n if (!cli.classList.contains(SEPARATOR)) {\n this.showSubMenu = true;\n var cul = cli.parentNode;\n this.cliIdx = this.getIdx(cul, cli);\n if (this.isMenu || !Browser.isDevice) {\n var culIdx = this.isMenu ? Array.prototype.indexOf.call([wrapper].concat(this.getPopups()), closest(cul, '.' + 'e-' + this.getModuleName() + '-wrapper'))\n : this.getIdx(wrapper, cul);\n if (this.navIdx[culIdx] === this.cliIdx) {\n this.showSubMenu = false;\n }\n if (culIdx !== this.navIdx.length && (e.type !== 'mouseover' || this.showSubMenu)) {\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n this.isClosed = true;\n this.keyType = 'click';\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n this.closeMenu(culIdx + 1, e);\n if (this.showItemOnClick) {\n this.setLISelected(cli);\n }\n }\n }\n if (!this.isClosed) {\n this.afterCloseMenu(e);\n }\n this.isClosed = false;\n }\n }\n }\n else {\n if (this.isMenu && trgt.tagName === 'DIV' && this.navIdx.length && closest(trgt, '.e-menu-vscroll')) {\n var popupEle = closest(trgt, '.' + POPUP);\n var cIdx = Array.prototype.indexOf.call(this.getPopups(), popupEle) + 1;\n if (cIdx < this.navIdx.length) {\n this.closeMenu(cIdx + 1, e);\n if (popupEle) {\n this.removeLIStateByClass([FOCUSED, SELECTED], [popupEle]);\n }\n }\n }\n else if (this.isMenu && this.hamburgerMode && trgt.tagName === 'SPAN'\n && trgt.classList.contains('e-menu-icon')) {\n this.menuHeaderClickHandler(e);\n }\n else {\n if (trgt.tagName !== 'UL' || (this.isMenu ? trgt.parentElement.classList.contains('e-menu-wrapper') &&\n !this.getIndex(trgt.querySelector('.' + ITEM).id, true).length : trgt.parentElement !== wrapper)) {\n if (!cli) {\n this.removeLIStateByClass([SELECTED], [wrapper]);\n }\n if (!cli || !cli.querySelector('.' + CARET)) {\n this.closeMenu(null, e);\n }\n }\n }\n }\n }\n };\n MenuBase.prototype.afterCloseMenu = function (e) {\n var isHeader;\n if (this.showSubMenu) {\n if (this.showItemOnClick && this.navIdx.length === 0) {\n isHeader = closest(e.target, '.e-menu-parent.e-control');\n }\n else {\n isHeader = closest(this.element, '.e-menu-parent.e-control');\n }\n var idx = this.navIdx.concat(this.cliIdx);\n var item = this.getItem(idx);\n if (item && item[this.getField('children', idx.length - 1)] &&\n item[this.getField('children', idx.length - 1)].length) {\n if (e.type === 'mouseover' || (Browser.isDevice && this.isMenu)) {\n this.setLISelected(this.cli);\n }\n if ((!this.hamburgerMode && isHeader) || (this.hamburgerMode && this.cli.getAttribute('aria-expanded') === 'false')) {\n this.cli.setAttribute('aria-expanded', 'true');\n this.navIdx.push(this.cliIdx);\n this.openMenu(this.cli, item, null, null, e);\n }\n }\n else {\n if (e.type !== 'mouseover') {\n this.closeMenu(null, e);\n }\n }\n if (!isHeader) {\n var cul = this.getUlByNavIdx();\n var sli = this.getLIByClass(cul, SELECTED);\n if (sli) {\n sli.setAttribute('aria-expanded', 'false');\n sli.classList.remove(SELECTED);\n }\n }\n }\n this.keyType = '';\n };\n MenuBase.prototype.setLISelected = function (li) {\n var sli = this.getLIByClass(li.parentElement, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n if (!this.isMenu) {\n li.classList.remove(FOCUSED);\n }\n li.classList.add(SELECTED);\n };\n MenuBase.prototype.getLIByClass = function (ul, classname) {\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains(classname)) {\n return ul.children[i];\n }\n }\n return null;\n };\n /**\n * This method is used to get the index of the menu item in the Menu based on the argument.\n *\n * @param {MenuItem | string} item - item be passed to get the index | id to be passed to get the item index.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.getItemIndex = function (item, isUniqueId) {\n var idx;\n if (typeof item === 'string') {\n idx = item;\n }\n else {\n idx = item.id;\n }\n var isText = (isUniqueId === false) ? false : true;\n var navIdx = this.getIndex(idx, isText);\n return navIdx;\n };\n /**\n * This method is used to set the menu item in the Menu based on the argument.\n *\n * @param {MenuItem} item - item need to be updated.\n * @param {string} id - id / text to be passed to update the item.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.setItem = function (item, id, isUniqueId) {\n var idx;\n if (isUniqueId) {\n idx = id ? id : item.id;\n }\n else {\n idx = id ? id : item.text;\n }\n var navIdx = this.getIndex(idx, isUniqueId);\n var newItem = this.getItem(navIdx);\n Object.assign(newItem, item);\n };\n MenuBase.prototype.getItem = function (navIdx) {\n navIdx = navIdx.slice();\n var idx = navIdx.pop();\n var items = this.getItems(navIdx);\n return items[idx];\n };\n MenuBase.prototype.getItems = function (navIdx) {\n var items = this.items;\n for (var i = 0; i < navIdx.length; i++) {\n items = items[navIdx[i]][this.getField('children', i)];\n }\n return items;\n };\n MenuBase.prototype.setItems = function (newItems, navIdx) {\n var items = this.getItems(navIdx);\n items.splice(0, items.length);\n for (var i = 0; i < newItems.length; i++) {\n items.splice(i, 0, newItems[i]);\n }\n };\n MenuBase.prototype.getIdx = function (ul, li, skipHdr) {\n if (skipHdr === void 0) { skipHdr = true; }\n var idx = Array.prototype.indexOf.call(ul.children, li);\n if (skipHdr && ul.children[0].classList.contains(HEADER)) {\n idx--;\n }\n return idx;\n };\n MenuBase.prototype.getLI = function (elem) {\n if (elem.tagName === 'LI' && elem.classList.contains('e-menu-item')) {\n return elem;\n }\n return closest(elem, 'li.e-menu-item');\n };\n MenuBase.prototype.updateItemsByNavIdx = function () {\n var items = this.items;\n var count = 0;\n for (var index = 0; index < this.navIdx.length; index++) {\n items = items[index].items;\n if (!items) {\n break;\n }\n count++;\n var ul = this.getUlByNavIdx(count);\n if (!ul) {\n break;\n }\n this.updateItem(ul, items);\n }\n };\n MenuBase.prototype.removeChildElement = function (elem) {\n while (elem.firstElementChild) {\n elem.removeChild(elem.firstElementChild);\n }\n return elem;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuBaseModel} newProp - Specifies the new properties\n * @param {MenuBaseModel} oldProp - Specifies the old properties\n * @returns {void}\n */\n MenuBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n var wrapper = this.getWrapper();\n var _loop_2 = function (prop) {\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n wrapper.classList.toggle(RTL);\n break;\n case 'showItemOnClick':\n this_1.unWireEvents();\n this_1.showItemOnClick = newProp.showItemOnClick;\n this_1.wireEvents();\n break;\n case 'enableScrolling':\n if (newProp.enableScrolling) {\n var ul_2;\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n this_1.getPopups().forEach(function (wrapper) {\n ul_2 = select('.e-ul', wrapper);\n addScrolling(_this.createElement, wrapper, ul_2, 'vscroll', _this.enableRtl);\n });\n }\n else {\n var ul_3 = wrapper.children[0];\n if (this_1.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n }\n else {\n destroyScroll(getInstance(ul_3, HScroll), ul_3);\n }\n wrapper.style.overflow = '';\n wrapper.appendChild(this_1.element);\n this_1.getPopups().forEach(function (wrapper) {\n ul_3 = wrapper.children[0];\n destroyScroll(getInstance(ul_3, VScroll), ul_3);\n wrapper.style.overflow = '';\n });\n }\n break;\n case 'items': {\n var idx = void 0;\n var navIdx = void 0;\n var item = void 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this_1.isReact && this_1.template) {\n this_1.clearTemplate(['template']);\n }\n if (!Object.keys(oldProp.items).length) {\n this_1.updateItem(this_1.element, this_1.items);\n if (this_1.enableScrolling && this_1.element.parentElement.classList.contains('e-custom-scroll')) {\n if (this_1.element.classList.contains('e-vertical')) {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'vscroll', this_1.enableRtl);\n }\n else {\n addScrolling(this_1.createElement, wrapper, this_1.element, 'hscroll', this_1.enableRtl);\n }\n }\n if (!this_1.hamburgerMode) {\n for (var i = 1, count = wrapper.childElementCount; i < count; i++) {\n detach(wrapper.lastElementChild);\n }\n }\n this_1.navIdx = [];\n }\n else {\n var keys = Object.keys(newProp.items);\n for (var i = 0; i < keys.length; i++) {\n navIdx = this_1.getChangedItemIndex(newProp, [], Number(keys[i]));\n if (navIdx.length <= this_1.getWrapper().children.length) {\n idx = navIdx.pop();\n item = this_1.getItems(navIdx);\n this_1.insertAfter([item[idx]], item[idx].text);\n this_1.removeItem(item, navIdx, idx);\n this_1.setItems(item, navIdx);\n }\n navIdx.length = 0;\n }\n }\n break;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_2(prop);\n }\n };\n MenuBase.prototype.updateItem = function (ul, items) {\n if (isBlazor() && !this.isMenu) {\n ul = this.removeChildElement(ul);\n }\n else {\n if (this.enableScrolling) {\n var wrapper1 = this.getWrapper();\n var ul1 = wrapper1.children[0];\n if (this.element.classList.contains('e-vertical')) {\n destroyScroll(getInstance(ul1, VScroll), ul1);\n }\n else {\n destroyScroll(getInstance(ul1, HScroll), ul1);\n }\n }\n ul.innerHTML = '';\n }\n var lis = [].slice.call(this.createItems(items).children);\n lis.forEach(function (li) {\n ul.appendChild(li);\n });\n };\n MenuBase.prototype.getChangedItemIndex = function (newProp, index, idx) {\n index.push(idx);\n var key = Object.keys(newProp.items[idx]).pop();\n if (key === 'items') {\n var item = newProp.items[idx];\n var popStr = Object.keys(item.items).pop();\n if (popStr) {\n this.getChangedItemIndex(item, index, Number(popStr));\n }\n }\n else {\n if (key === 'isParentArray' && index.length > 1) {\n index.pop();\n }\n }\n return index;\n };\n MenuBase.prototype.removeItem = function (item, navIdx, idx) {\n item.splice(idx, 1);\n var uls = this.getWrapper().children;\n if (navIdx.length < uls.length) {\n detach(uls[navIdx.length].children[idx]);\n }\n };\n /**\n * Used to unwire the bind events.\n *\n * @private\n * @param {string} targetSelctor - Specifies the target selector\n * @returns {void}\n */\n MenuBase.prototype.unWireEvents = function (targetSelctor) {\n if (targetSelctor === void 0) { targetSelctor = this.target; }\n var wrapper = this.getWrapper();\n if (targetSelctor) {\n var target = void 0;\n var touchModule = void 0;\n var targetElems = selectAll(targetSelctor);\n for (var i = 0, len = targetElems.length; i < len; i++) {\n target = targetElems[i];\n if (this.isMenu) {\n EventHandler.remove(target, 'click', this.menuHeaderClickHandler);\n }\n else {\n if (Browser.isIos) {\n touchModule = getInstance(target, Touch);\n if (touchModule) {\n touchModule.destroy();\n }\n }\n else {\n EventHandler.remove(target, 'contextmenu', this.cmenuHandler);\n }\n }\n }\n if (!this.isMenu) {\n EventHandler.remove(this.targetElement, 'scroll', this.scrollHandler);\n for (var _i = 0, _a = getScrollableParent(this.targetElement); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollHandler);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.remove(this.isMenu ? document : wrapper, 'mouseover', this.delegateMoverHandler);\n EventHandler.remove(document, 'mousedown', this.delegateMouseDownHandler);\n }\n EventHandler.remove(document, 'click', this.delegateClickHandler);\n this.unWireKeyboardEvent(wrapper);\n this.rippleFn();\n };\n MenuBase.prototype.unWireKeyboardEvent = function (element) {\n var keyboardModule = getInstance(element, KeyboardEvents);\n if (keyboardModule) {\n keyboardModule.destroy();\n }\n };\n MenuBase.prototype.toggleAnimation = function (ul, isMenuOpen) {\n var _this = this;\n if (isMenuOpen === void 0) { isMenuOpen = true; }\n var pUlHeight;\n var pElement;\n if (this.animationSettings.effect === 'None' || !isMenuOpen) {\n this.end(ul, isMenuOpen);\n }\n else {\n this.animation.animate(ul, {\n name: this.animationSettings.effect,\n duration: this.animationSettings.duration,\n timingFunction: this.animationSettings.easing,\n begin: function (options) {\n if (_this.hamburgerMode) {\n pElement = options.element.parentElement;\n options.element.style.position = 'absolute';\n pUlHeight = pElement.offsetHeight;\n options.element.style.maxHeight = options.element.offsetHeight + 'px';\n pElement.style.maxHeight = '';\n }\n else {\n options.element.style.display = 'block';\n options.element.style.maxHeight = options.element.getBoundingClientRect().height + 'px';\n }\n },\n progress: function (options) {\n if (_this.hamburgerMode) {\n pElement.style.minHeight = (pUlHeight + options.element.offsetHeight) + 'px';\n }\n },\n end: function (options) {\n if (_this.hamburgerMode) {\n options.element.style.position = '';\n options.element.style.maxHeight = '';\n pElement.style.minHeight = '';\n options.element.style.top = 0 + 'px';\n options.element.children[0].focus();\n _this.triggerOpen(options.element.children[0]);\n }\n else {\n _this.end(options.element, isMenuOpen);\n }\n }\n });\n }\n };\n MenuBase.prototype.triggerOpen = function (ul) {\n var item = this.navIdx.length ? this.getItem(this.navIdx) : null;\n var eventArgs = {\n element: ul, parentItem: item, items: item ? item.items : this.items\n };\n this.trigger('onOpen', eventArgs);\n };\n MenuBase.prototype.end = function (ul, isMenuOpen) {\n if (isMenuOpen) {\n ul.style.display = 'block';\n ul.style.maxHeight = '';\n this.triggerOpen(ul);\n if (ul.querySelector('.' + FOCUSED)) {\n ul.querySelector('.' + FOCUSED).focus();\n }\n else {\n var ele = this.getWrapper().children[this.getIdx(this.getWrapper(), ul) - 1];\n if (this.currentTarget) {\n if (!(this.currentTarget.classList.contains('e-numerictextbox') || this.currentTarget.classList.contains('e-textbox') || this.currentTarget.tagName === 'INPUT')) {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n else {\n if (ele) {\n ele.querySelector('.' + SELECTED).focus();\n }\n else {\n this.element.focus();\n }\n }\n }\n }\n else {\n if (ul === this.element) {\n var fli = this.getLIByClass(this.element, FOCUSED);\n if (fli) {\n fli.classList.remove(FOCUSED);\n }\n var sli = this.getLIByClass(this.element, SELECTED);\n if (sli) {\n sli.classList.remove(SELECTED);\n }\n ul.style.display = 'none';\n }\n else {\n detach(ul);\n }\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n MenuBase.prototype.getPersistData = function () {\n return '';\n };\n /**\n * Get wrapper element.\n *\n * @returns {Element} - Wrapper element\n * @private\n */\n MenuBase.prototype.getWrapper = function () {\n return closest(this.element, '.e-' + this.getModuleName() + '-wrapper');\n };\n MenuBase.prototype.getIndex = function (data, isUniqueId, items, nIndex, isCallBack, level) {\n if (items === void 0) { items = this.items; }\n if (nIndex === void 0) { nIndex = []; }\n if (isCallBack === void 0) { isCallBack = false; }\n if (level === void 0) { level = 0; }\n var item;\n level = isCallBack ? level + 1 : 0;\n for (var i = 0, len = items.length; i < len; i++) {\n item = items[i];\n if ((isUniqueId ? item[this.getField('itemId', level)] : item[this.getField('text', level)]) === data) {\n nIndex.push(i);\n break;\n }\n else if (item[this.getField('children', level)]\n && item[this.getField('children', level)].length) {\n nIndex = this.getIndex(data, isUniqueId, item[this.getField('children', level)], nIndex, true, level);\n if (nIndex[nIndex.length - 1] === -1) {\n if (i !== len - 1) {\n nIndex.pop();\n }\n }\n else {\n nIndex.unshift(i);\n break;\n }\n }\n else {\n if (i === len - 1) {\n nIndex.push(-1);\n }\n }\n }\n return (!isCallBack && nIndex[0] === -1) ? [] : nIndex;\n };\n /**\n * This method is used to enable or disable the menu items in the Menu based on the items and enable argument.\n *\n * @param {string[]} items - Text items that needs to be enabled/disabled.\n * @param {boolean} enable - Set `true`/`false` to enable/disable the list items.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.enableItems = function (items, enable, isUniqueId) {\n if (enable === void 0) { enable = true; }\n var ul;\n var idx;\n var navIdx;\n var disabled = DISABLED;\n var skipItem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n if (this.navIdx.length) {\n if (navIdx.length !== 1) {\n skipItem = false;\n for (var i_1 = 0, len = navIdx.length - 1; i_1 < len; i_1++) {\n if (navIdx[i_1] !== this.navIdx[i_1]) {\n skipItem = true;\n break;\n }\n }\n if (skipItem) {\n continue;\n }\n }\n }\n else {\n if (navIdx.length !== 1) {\n continue;\n }\n }\n idx = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (enable) {\n if (this.isMenu) {\n ul.children[idx].classList.remove(disabled);\n ul.children[idx].removeAttribute('aria-disabled');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.remove(disabled);\n }\n else {\n ul.children[idx].classList.remove(disabled);\n }\n }\n }\n else {\n if (this.isMenu) {\n ul.children[idx].classList.add(disabled);\n ul.children[idx].setAttribute('aria-disabled', 'true');\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[idx + 1].classList.add(disabled);\n }\n else {\n ul.children[idx].classList.add(disabled);\n }\n }\n }\n }\n }\n };\n /**\n * This method is used to show the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be shown.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.showItems = function (items, isUniqueId) {\n this.showHideItems(items, false, isUniqueId);\n };\n /**\n * This method is used to hide the menu items in the Menu based on the items text.\n *\n * @param {string[]} items - Text items that needs to be hidden.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.hideItems = function (items, isUniqueId) {\n this.showHideItems(items, true, isUniqueId);\n };\n MenuBase.prototype.showHideItems = function (items, ishide, isUniqueId) {\n var ul;\n var index;\n var navIdx;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n index = navIdx.pop();\n ul = this.getUlByNavIdx(navIdx.length);\n if (ul) {\n if (ishide) {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.add(HIDE);\n }\n else {\n ul.children[index].classList.add(HIDE);\n }\n }\n else {\n if (Browser.isDevice && !ul.classList.contains('e-contextmenu')) {\n ul.children[index + 1].classList.remove(HIDE);\n }\n else {\n ul.children[index].classList.remove(HIDE);\n }\n }\n }\n }\n };\n /**\n * It is used to remove the menu items from the Menu based on the items text.\n *\n * @param {string[]} items Text items that needs to be removed.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.removeItems = function (items, isUniqueId) {\n var idx;\n var navIdx;\n var iitems;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(items[i], isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n if (!isNullOrUndefined(idx)) {\n this.removeItem(iitems, navIdx, idx);\n }\n }\n };\n /**\n * It is used to insert the menu items after the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item after that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertAfter = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId);\n };\n /**\n * It is used to insert the menu items before the specified menu item text.\n *\n * @param {MenuItemModel[]} items - Items that needs to be inserted.\n * @param {string} text - Text item before that the element to be inserted.\n * @param {boolean} isUniqueId - Set `true` if it is a unique id.\n * @returns {void}\n */\n MenuBase.prototype.insertBefore = function (items, text, isUniqueId) {\n this.insertItems(items, text, isUniqueId, false);\n };\n MenuBase.prototype.insertItems = function (items, text, isUniqueId, isAfter) {\n if (isAfter === void 0) { isAfter = true; }\n var li;\n var idx;\n var navIdx;\n var iitems;\n var menuitem;\n for (var i = 0; i < items.length; i++) {\n navIdx = this.getIndex(text, isUniqueId);\n idx = navIdx.pop();\n iitems = this.getItems(navIdx);\n menuitem = new MenuItem(iitems[0], 'items', items[i], true);\n iitems.splice(isAfter ? idx + 1 : idx, 0, menuitem);\n var uls = this.isMenu ? [this.getWrapper()].concat(this.getPopups()) : [].slice.call(this.getWrapper().children);\n if (!isNullOrUndefined(idx) && navIdx.length < uls.length) {\n idx = isAfter ? idx + 1 : idx;\n li = this.createItems(iitems).children[idx];\n var ul = this.isMenu ? select('.e-menu-parent', uls[navIdx.length]) : uls[navIdx.length];\n ul.insertBefore(li, ul.children[idx]);\n }\n }\n };\n MenuBase.prototype.removeAttributes = function () {\n var _this = this;\n ['top', 'left', 'display', 'z-index'].forEach(function (key) {\n _this.element.style.removeProperty(key);\n });\n ['role', 'tabindex', 'class', 'style'].forEach(function (key) {\n if (key === 'class' && _this.element.classList.contains('e-menu-parent')) {\n _this.element.classList.remove('e-menu-parent');\n }\n if (['class', 'style'].indexOf(key) === -1 || !_this.element.getAttribute(key)) {\n _this.element.removeAttribute(key);\n }\n if (_this.isMenu && key === 'class' && _this.element.classList.contains('e-vertical')) {\n _this.element.classList.remove('e-vertical');\n }\n });\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n MenuBase.prototype.destroy = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n this.unWireEvents();\n if (!this.isMenu) {\n this.clonedElement.style.display = '';\n if (this.clonedElement.tagName === 'EJS-CONTEXTMENU') {\n addClass([this.clonedElement], ['e-control', 'e-lib', 'e-' + this.getModuleName()]);\n this.element = this.clonedElement;\n }\n else {\n if (this.refreshing && this.clonedElement.childElementCount && this.clonedElement.children[0].tagName === 'LI') {\n this.setProperties({ 'items': [] }, true);\n }\n if (document.getElementById(this.clonedElement.id)) {\n var refEle = this.clonedElement.nextElementSibling;\n if (refEle && refEle !== wrapper) {\n this.clonedElement.parentElement.insertBefore(this.element, refEle);\n }\n else {\n this.clonedElement.parentElement.appendChild(this.element);\n }\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n append([].slice.call(this.clonedElement.children), this.element);\n detach(this.clonedElement);\n this.removeAttributes();\n }\n }\n this.clonedElement = null;\n }\n else {\n this.closeMenu();\n if (isBlazor() && !this.isMenu) {\n this.element = this.removeChildElement(this.element);\n }\n else {\n this.element.innerHTML = '';\n }\n this.removeAttributes();\n wrapper.parentNode.insertBefore(this.element, wrapper);\n this.clonedElement = null;\n }\n if (this.isMenu && this.clonedElement) {\n detach(this.element);\n wrapper.style.display = '';\n wrapper.classList.remove('e-' + this.getModuleName() + '-wrapper');\n wrapper.removeAttribute('data-ripple');\n }\n else {\n detach(wrapper);\n }\n _super.prototype.destroy.call(this);\n if (this.template) {\n this.clearTemplate(['template']);\n }\n }\n this.rippleFn = null;\n };\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"beforeItemRender\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"onOpen\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"beforeClose\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"onClose\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"select\", void 0);\n __decorate$2([\n Event()\n ], MenuBase.prototype, \"created\", void 0);\n __decorate$2([\n Property('')\n ], MenuBase.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(0)\n ], MenuBase.prototype, \"hoverDelay\", void 0);\n __decorate$2([\n Property(false)\n ], MenuBase.prototype, \"showItemOnClick\", void 0);\n __decorate$2([\n Property('')\n ], MenuBase.prototype, \"target\", void 0);\n __decorate$2([\n Property('')\n ], MenuBase.prototype, \"filter\", void 0);\n __decorate$2([\n Property(null)\n ], MenuBase.prototype, \"template\", void 0);\n __decorate$2([\n Property(false)\n ], MenuBase.prototype, \"enableScrolling\", void 0);\n __decorate$2([\n Property(false)\n ], MenuBase.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], MenuBase.prototype, \"fields\", void 0);\n __decorate$2([\n Collection([], MenuItem)\n ], MenuBase.prototype, \"items\", void 0);\n __decorate$2([\n Complex({ duration: 400, easing: 'ease', effect: 'SlideDown' }, MenuAnimationSettings)\n ], MenuBase.prototype, \"animationSettings\", void 0);\n MenuBase = __decorate$2([\n NotifyPropertyChanges\n ], MenuBase);\n return MenuBase;\n}(Component));\n\n/**\n * Navigation Common modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL$2 = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE$2 = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR$1 = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @__PURE__ @class */ (function (_super) {\n __extends$3(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate$3([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate$3([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate$3([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate$3([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate$3([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate$3([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate$3([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate$3([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate$3([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate$3([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate$3([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @__PURE__ @class */ (function (_super) {\n __extends$3(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNullOrUndefined(el) && !isNullOrUndefined(el.ej2_instances) && !isNullOrUndefined(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNullOrUndefined(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL$2);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE$2 + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNullOrUndefined(ele) && !isNullOrUndefined(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNullOrUndefined(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL$2);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE$2 + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = nodes[0];\n }\n else {\n ele = nodes[nodes.length - 1];\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE$2)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE$2);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE$2);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE$2) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.eleFocus = function (closest$$1, pos) {\n var sib = Object(closest$$1)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest$$1.parentElement)[pos + 'ElementSibling'];\n if (!isNullOrUndefined(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNullOrUndefined(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNullOrUndefined(closest$$1)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE$2 + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNullOrUndefined(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL$2);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNullOrUndefined(clst) || clst.classList.contains(CLS_DISABLE$2)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNullOrUndefined(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNullOrUndefined(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyleAttribute(this.element, { 'height': height });\n }\n setStyleAttribute(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyleAttribute(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyleAttribute(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNullOrUndefined(element) || isNullOrUndefined(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNullOrUndefined(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyleAttribute(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyleAttribute(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyleAttribute(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyleAttribute(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR + ':not(.' + CLS_POPUP + ')');\n sepHeight = (element.style.height === 'auto' || element.style.height === '') ? null : sepItem.offsetHeight;\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyleAttribute(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyleAttribute(popupEle, { maxHeight: '', display: 'block' });\n setStyleAttribute(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyleAttribute(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNullOrUndefined(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyleAttribute(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyleAttribute(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyleAttribute(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyleAttribute(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n if (itemCount === itemPopCount) {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyleAttribute(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyleAttribute(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyleAttribute(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNullOrUndefined(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNullOrUndefined(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n var sepDisplay = 'none';\n eleSep.style.display = 'inherit';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNullOrUndefined(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = sepDisplay;\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNullOrUndefined(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyleAttribute(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNullOrUndefined(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNullOrUndefined(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNullOrUndefined(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n setStyleAttribute(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNullOrUndefined(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNullOrUndefined(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n ele.setAttribute('aria-disabled', 'false');\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNullOrUndefined(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE$2);\n ele.setAttribute('aria-disabled', 'false');\n }\n else {\n ele.classList.add(CLS_DISABLE$2);\n ele.setAttribute('aria-disabled', 'true');\n }\n };\n if (!isNullOrUndefined(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNullOrUndefined(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE$2);\n }\n else {\n addClass(elements, CLS_DISABLE$2);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNullOrUndefined(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNullOrUndefined(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNullOrUndefined(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNullOrUndefined(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNullOrUndefined(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNullOrUndefined(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearTemplate();\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNullOrUndefined(btnItem) && !isNullOrUndefined(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNullOrUndefined(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNullOrUndefined(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = compile(val);\n }\n }\n catch (e) {\n templateFn = compile(val);\n }\n var tempArray = void 0;\n if (!isNullOrUndefined(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate);\n }\n if (!isNullOrUndefined(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNullOrUndefined(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyleAttribute(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n innerEle.setAttribute('aria-disabled', 'false');\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNullOrUndefined(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNullOrUndefined(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE$2);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNullOrUndefined(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNullOrUndefined(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNullOrUndefined(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNullOrUndefined(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR$1)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR$1).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (typeof newProperty !== 'function') {\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNullOrUndefined(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearTemplate();\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyleAttribute(tEle, { 'width': formatUnit(newProp.width) });\n this.renderOverflowMode();\n if (this.popObj && wid < tEle.offsetWidth) {\n this.popupRefresh(this.popObj.element, false);\n }\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL$2);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL$2);\n }\n else {\n this.remove(tEle, CLS_RTL$2);\n }\n if (!isNullOrUndefined(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL$2);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL$2);\n }\n }\n if (!isNullOrUndefined(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL$2);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL$2);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNullOrUndefined(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNullOrUndefined(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate$3([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate$3([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate$3([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate$3([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate$3([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate$3([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate$3([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$3([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate$3([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate$3([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\n\n/**\n * Toolbar modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar CLS_ACRDN_ROOT = 'e-acrdn-root';\nvar CLS_ROOT$2 = 'e-accordion';\nvar CLS_ITEM$1 = 'e-acrdn-item';\nvar CLS_ITEMFOCUS = 'e-item-focus';\nvar CLS_ITEMHIDE = 'e-hide';\nvar CLS_HEADER = 'e-acrdn-header';\nvar CLS_HEADERICN = 'e-acrdn-header-icon';\nvar CLS_HEADERCTN = 'e-acrdn-header-content';\nvar CLS_CONTENT = 'e-acrdn-panel';\nvar CLS_CTENT = 'e-acrdn-content';\nvar CLS_TOOGLEICN = 'e-toggle-icon';\nvar CLS_COLLAPSEICN = 'e-tgl-collapse-icon e-icons';\nvar CLS_EXPANDICN = 'e-expand-icon';\nvar CLS_RTL$3 = 'e-rtl';\nvar CLS_CTNHIDE = 'e-content-hide';\nvar CLS_SLCT = 'e-select';\nvar CLS_SLCTED = 'e-selected';\nvar CLS_ACTIVE = 'e-active';\nvar CLS_ANIMATE = 'e-animate';\nvar CLS_DISABLE$3 = 'e-overlay';\nvar CLS_TOGANIMATE = 'e-toggle-animation';\nvar CLS_NEST = 'e-nested';\nvar CLS_EXPANDSTATE = 'e-expand-state';\nvar CLS_CONTAINER = 'e-accordion-container';\n/**\n * Objects used for configuring the Accordion expanding item action properties.\n */\nvar AccordionActionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AccordionActionSettings, _super);\n function AccordionActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property('SlideDown')\n ], AccordionActionSettings.prototype, \"effect\", void 0);\n __decorate$4([\n Property(400)\n ], AccordionActionSettings.prototype, \"duration\", void 0);\n __decorate$4([\n Property('linear')\n ], AccordionActionSettings.prototype, \"easing\", void 0);\n return AccordionActionSettings;\n}(ChildProperty));\n/**\n * Objects used for configuring the Accordion animation properties.\n */\nvar AccordionAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AccordionAnimationSettings, _super);\n function AccordionAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"collapse\", void 0);\n __decorate$4([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, AccordionActionSettings)\n ], AccordionAnimationSettings.prototype, \"expand\", void 0);\n return AccordionAnimationSettings;\n}(ChildProperty));\n/**\n * An item object that is used to configure Accordion items.\n */\nvar AccordionItem = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AccordionItem, _super);\n function AccordionItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"content\", void 0);\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"header\", void 0);\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"cssClass\", void 0);\n __decorate$4([\n Property(null)\n ], AccordionItem.prototype, \"iconCss\", void 0);\n __decorate$4([\n Property(false)\n ], AccordionItem.prototype, \"expanded\", void 0);\n __decorate$4([\n Property(true)\n ], AccordionItem.prototype, \"visible\", void 0);\n __decorate$4([\n Property(false)\n ], AccordionItem.prototype, \"disabled\", void 0);\n __decorate$4([\n Property()\n ], AccordionItem.prototype, \"id\", void 0);\n return AccordionItem;\n}(ChildProperty));\n/**\n * The Accordion is a vertically collapsible content panel that displays one or more panels at a time within the available space.\n * ```html\n *
\n * \n * ```\n */\nvar Accordion = /** @__PURE__ @class */ (function (_super) {\n __extends$4(Accordion, _super);\n /**\n * Initializes a new instance of the Accordion class.\n *\n * @param {AccordionModel} options - Specifies Accordion model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as an Accordion.\n */\n function Accordion(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Contains the keyboard configuration of the Accordion.\n */\n _this.keyConfigs = {\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n enter: 'enter',\n space: 'space',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n Accordion.prototype.destroy = function () {\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n var ele = this.element;\n _super.prototype.destroy.call(this);\n this.unwireEvents();\n this.isDestroy = true;\n this.restoreContent(null);\n [].slice.call(ele.children).forEach(function (el) {\n ele.removeChild(el);\n });\n if (this.trgtEle) {\n this.trgtEle = null;\n while (this.ctrlTem.firstElementChild) {\n ele.appendChild(this.ctrlTem.firstElementChild);\n }\n this.ctrlTem = null;\n }\n ele.classList.remove(CLS_ACRDN_ROOT);\n ele.removeAttribute('style');\n this.element.removeAttribute('data-ripple');\n if (!this.isNested && isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n Accordion.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT);\n this.isNested = false;\n this.templateEle = [];\n if (!this.isDestroy) {\n this.isDestroy = false;\n }\n if (nested && nested.firstElementChild && nested.firstElementChild.firstElementChild) {\n if (nested.firstElementChild.firstElementChild.classList.contains(CLS_ROOT$2)) {\n nested.classList.add(CLS_NEST);\n this.isNested = true;\n }\n }\n else {\n this.element.classList.add(CLS_ACRDN_ROOT);\n }\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL$3);\n }\n };\n Accordion.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Accordion.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n /**\n * To initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Accordion.prototype.render = function () {\n this.initializeHeaderTemplate();\n this.initializeItemTemplate();\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n };\n Accordion.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n setStyleAttribute(this.element, { 'width': width, 'height': height });\n if (isNullOrUndefined(this.initExpand)) {\n this.initExpand = [];\n }\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n };\n Accordion.prototype.renderControl = function () {\n this.trgtEle = (this.element.children.length > 0) ? select('div', this.element) : null;\n this.renderItems();\n this.initItemExpand();\n };\n Accordion.prototype.wireFocusEvents = function () {\n var acrdItem = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1));\n for (var _i = 0, acrdItem_1 = acrdItem; _i < acrdItem_1.length; _i++) {\n var item = acrdItem_1[_i];\n var headerEle = item.querySelector('.' + CLS_HEADER);\n if (item.childElementCount > 0 && headerEle) {\n EventHandler.clearEvents(headerEle);\n EventHandler.add(headerEle, 'focus', this.focusIn, this);\n EventHandler.add(headerEle, 'blur', this.focusOut, this);\n }\n }\n };\n Accordion.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n if (!isNullOrUndefined(this.keyModule)) {\n this.keyModule.destroy();\n }\n };\n Accordion.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n if (!this.isNested && !this.isDestroy) {\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + CLS_HEADER });\n }\n if (!this.isNested) {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n }\n };\n Accordion.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n Accordion.prototype.initializeHeaderTemplate = function () {\n if (this.headerTemplate) {\n this.headerTemplateFn = this.templateParser(this.headerTemplate);\n }\n };\n Accordion.prototype.initializeItemTemplate = function () {\n if (this.itemTemplate) {\n this.itemTemplateFn = this.templateParser(this.itemTemplate);\n }\n };\n Accordion.prototype.getHeaderTemplate = function () {\n return this.headerTemplateFn;\n };\n Accordion.prototype.getItemTemplate = function () {\n return this.itemTemplateFn;\n };\n Accordion.prototype.focusIn = function (e) {\n e.target.parentElement.classList.add(CLS_ITEMFOCUS);\n };\n Accordion.prototype.focusOut = function (e) {\n e.target.parentElement.classList.remove(CLS_ITEMFOCUS);\n };\n Accordion.prototype.ctrlTemplate = function () {\n this.ctrlTem = this.element.cloneNode(true);\n var innerEles;\n var rootEle = select('.' + CLS_CONTAINER, this.element);\n if (rootEle) {\n innerEles = rootEle.children;\n }\n else {\n innerEles = this.element.children;\n }\n var items = [];\n [].slice.call(innerEles).forEach(function (el) {\n items.push({\n header: (el.childElementCount > 0 && el.children[0]) ? (el.children[0]) : '',\n content: (el.childElementCount > 1 && el.children[1]) ? (el.children[1]) : ''\n });\n el.parentNode.removeChild(el);\n });\n if (rootEle) {\n this.element.removeChild(rootEle);\n }\n this.setProperties({ items: items }, true);\n };\n Accordion.prototype.toggleIconGenerate = function () {\n var tglIcon = this.createElement('div', { className: CLS_TOOGLEICN });\n var hdrColIcon = this.createElement('span', { className: CLS_COLLAPSEICN });\n tglIcon.appendChild(hdrColIcon);\n return tglIcon;\n };\n Accordion.prototype.initItemExpand = function () {\n var len = this.initExpand.length;\n if (len === 0) {\n return;\n }\n if (this.expandMode === 'Single') {\n this.expandItem(true, this.initExpand[len - 1]);\n }\n else {\n for (var i = 0; i < len; i++) {\n this.expandItem(true, this.initExpand[parseInt(i.toString(), 10)]);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.renderItems = function () {\n var _this = this;\n var ele = this.element;\n var innerItem;\n var innerDataSourceItem;\n if (!isNullOrUndefined(this.trgtEle)) {\n this.ctrlTemplate();\n }\n if (this.dataSource.length > 0) {\n this.dataSource.forEach(function (item, index) {\n innerDataSourceItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerDataSourceItem);\n if (innerDataSourceItem.childElementCount > 0) {\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerDataSourceItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n else {\n var items = this.items;\n if (ele && items.length > 0) {\n items.forEach(function (item, index) {\n innerItem = _this.renderInnerItem(item, index);\n ele.appendChild(innerItem);\n if (innerItem.childElementCount > 0) {\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItem.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n }\n });\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.clickHandler = function (e) {\n var trgt = e.target;\n var items = this.getItems();\n var eventArgs = {};\n var tglIcon;\n var acrdEle = closest(trgt, '.' + CLS_ROOT$2);\n if (acrdEle !== this.element) {\n return;\n }\n trgt.classList.add('e-target');\n var acrdnItem = closest(trgt, '.' + CLS_ITEM$1);\n var acrdnHdr = closest(trgt, '.' + CLS_HEADER);\n var acrdnCtn = closest(trgt, '.' + CLS_CONTENT);\n if (acrdnItem && (isNullOrUndefined(acrdnHdr) || isNullOrUndefined(acrdnCtn))) {\n acrdnHdr = acrdnItem.children[0];\n acrdnCtn = acrdnItem.children[1];\n }\n if (acrdnHdr) {\n tglIcon = select('.' + CLS_TOOGLEICN, acrdnHdr);\n }\n var acrdnCtnItem;\n if (acrdnHdr) {\n acrdnCtnItem = closest(acrdnHdr, '.' + CLS_ITEM$1);\n }\n else if (acrdnCtn) {\n acrdnCtnItem = closest(acrdnCtn, '.' + CLS_ITEM$1);\n }\n var index = this.getIndexByItem(acrdnItem);\n if (acrdnCtnItem) {\n eventArgs.item = items[this.getIndexByItem(acrdnCtnItem)];\n }\n eventArgs.originalEvent = e;\n var ctnCheck = !isNullOrUndefined(tglIcon) && acrdnItem.childElementCount <= 1;\n if (ctnCheck && (isNullOrUndefined(acrdnCtn) || !isNullOrUndefined(select('.' + CLS_HEADER + ' .' + CLS_TOOGLEICN, acrdnCtnItem)))) {\n acrdnItem.appendChild(this.contentRendering(index));\n this.ariaAttrUpdate(acrdnItem);\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n else {\n this.afterContentRender(trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.afterContentRender = function (trgt, eventArgs, acrdnItem, acrdnHdr, acrdnCtn, acrdnCtnItem) {\n var _this = this;\n var acrdActive = [];\n this.trigger('clicked', eventArgs);\n var cntclkCheck = (acrdnCtn && !isNullOrUndefined(select('.e-target', acrdnCtn)));\n var inlineAcrdnSel = '.' + CLS_CONTENT + ' .' + CLS_ROOT$2;\n var inlineEleAcrdn = acrdnCtn && !isNullOrUndefined(select('.' + CLS_ROOT$2, acrdnCtn)) && isNullOrUndefined(closest(trgt, inlineAcrdnSel));\n var nestContCheck = acrdnCtn && isNullOrUndefined(select('.' + CLS_ROOT$2, acrdnCtn)) || !(closest(trgt, '.' + CLS_ROOT$2) === this.element);\n cntclkCheck = cntclkCheck && (inlineEleAcrdn || nestContCheck);\n trgt.classList.remove('e-target');\n if (trgt.classList.contains(CLS_CONTENT) || trgt.classList.contains(CLS_CTENT) || cntclkCheck) {\n return;\n }\n var acrdcontainer = this.element.querySelector('.' + CLS_CONTAINER);\n var acrdnchild = (acrdcontainer) ? acrdcontainer.children : this.element.children;\n [].slice.call(acrdnchild).forEach(function (el) {\n if (el.classList.contains(CLS_ACTIVE)) {\n acrdActive.push(el);\n }\n });\n var acrdAniEle = [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1 + ' [' + CLS_ANIMATE + ']'));\n if (acrdAniEle.length > 0) {\n for (var _i = 0, acrdAniEle_1 = acrdAniEle; _i < acrdAniEle_1.length; _i++) {\n var el = acrdAniEle_1[_i];\n acrdActive.push(el.parentElement);\n }\n }\n var sameContentCheck = acrdActive.indexOf(acrdnCtnItem) !== -1 && acrdnCtn.getAttribute('e-animate') === 'true';\n var sameHeader = false;\n if (!isNullOrUndefined(acrdnItem) && !isNullOrUndefined(acrdnHdr)) {\n var acrdnCtn_1 = select('.' + CLS_CONTENT, acrdnItem);\n var acrdnRoot = closest(acrdnItem, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n if (isNullOrUndefined(acrdnCtn_1)) {\n return;\n }\n sameHeader = (expandState === acrdnItem);\n if (isVisible(acrdnCtn_1) && (!sameContentCheck || acrdnCtnItem.classList.contains(CLS_SLCTED))) {\n this.collapse(acrdnCtn_1);\n }\n else {\n if ((acrdActive.length > 0) && this.expandMode === 'Single' && !sameContentCheck) {\n acrdActive.forEach(function (el) {\n _this.collapse(select('.' + CLS_CONTENT, el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n }\n this.expand(acrdnCtn_1);\n }\n if (!isNullOrUndefined(expandState) && !sameHeader) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n }\n };\n Accordion.prototype.eleMoveFocus = function (action, root, trgt) {\n var clst;\n var clstItem = closest(trgt, '.' + CLS_ITEM$1);\n if (trgt === root) {\n clst = ((action === 'moveUp' ? trgt.lastElementChild : trgt).querySelector('.' + CLS_HEADER));\n }\n else if (trgt.classList.contains(CLS_HEADER)) {\n clstItem = (action === 'moveUp' ? clstItem.previousElementSibling : clstItem.nextElementSibling);\n if (clstItem) {\n clst = select('.' + CLS_HEADER, clstItem);\n }\n }\n if (clst) {\n clst.focus();\n }\n };\n Accordion.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n var header = closest(e.target, CLS_HEADER);\n if (isNullOrUndefined(header) && !trgt.classList.contains(CLS_ROOT$2) && !trgt.classList.contains(CLS_HEADER)) {\n return;\n }\n var clst;\n var root = this.element;\n var content;\n switch (e.action) {\n case 'moveUp':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'moveDown':\n this.eleMoveFocus(e.action, root, trgt);\n break;\n case 'space':\n case 'enter':\n content = trgt.nextElementSibling;\n if (!isNullOrUndefined(content) && content.classList.contains(CLS_CONTENT)) {\n if (content.getAttribute('e-animate') !== 'true') {\n trgt.click();\n }\n }\n else {\n trgt.click();\n }\n e.preventDefault();\n break;\n case 'home':\n case 'end':\n clst = e.action === 'home' ? root.firstElementChild.children[0] : root.lastElementChild.children[0];\n clst.focus();\n e.preventDefault();\n break;\n }\n };\n Accordion.prototype.headerEleGenerate = function () {\n var header = this.createElement('div', { className: CLS_HEADER, id: getUniqueID('acrdn_header') });\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-disabled': 'false', 'aria-expanded': 'false'\n };\n attributes(header, ariaAttr);\n return header;\n };\n Accordion.prototype.renderInnerItem = function (item, index) {\n var innerEle = this.createElement('div', {\n className: CLS_ITEM$1, id: item.id || getUniqueID('acrdn_item')\n });\n if (this.headerTemplate) {\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n append(this.getHeaderTemplate()(item, this, 'headerTemplate', this.element.id + '_headerTemplate', false), hdrEle);\n innerEle.appendChild(ctnEle);\n ctnEle.appendChild(this.toggleIconGenerate());\n this.add(innerEle, CLS_SLCT);\n return innerEle;\n }\n if (item.header && this.angularnativeCondiCheck(item, 'header')) {\n if (this.enableHtmlSanitizer && typeof (item.header) === 'string') {\n item.header = SanitizeHtmlHelper.sanitize(item.header);\n }\n var ctnEle = this.headerEleGenerate();\n var hdrEle = this.createElement('div', { className: CLS_HEADERCTN });\n ctnEle.appendChild(hdrEle);\n ctnEle.appendChild(this.fetchElement(hdrEle, item.header, index, true));\n innerEle.appendChild(ctnEle);\n }\n var hdr = select('.' + CLS_HEADER, innerEle);\n if (item.expanded && !isNullOrUndefined(index) && (!this.enablePersistence)) {\n if (this.initExpand.indexOf(index) === -1) {\n this.initExpand.push(index);\n }\n }\n if (item.cssClass) {\n addClass([innerEle], item.cssClass.split(' '));\n }\n if (item.disabled) {\n addClass([innerEle], CLS_DISABLE$3);\n }\n if (item.visible === false) {\n addClass([innerEle], CLS_ITEMHIDE);\n }\n if (item.iconCss) {\n var hdrIcnEle = this.createElement('div', { className: CLS_HEADERICN });\n var icon = this.createElement('span', { className: item.iconCss + ' e-icons' });\n hdrIcnEle.appendChild(icon);\n if (isNullOrUndefined(hdr)) {\n hdr = this.headerEleGenerate();\n hdr.appendChild(hdrIcnEle);\n innerEle.appendChild(hdr);\n }\n else {\n hdr.insertBefore(hdrIcnEle, hdr.childNodes[0]);\n }\n }\n if (item.content && this.angularnativeCondiCheck(item, 'content')) {\n var hdrIcon = this.toggleIconGenerate();\n if (isNullOrUndefined(hdr)) {\n hdr = this.headerEleGenerate();\n innerEle.appendChild(hdr);\n }\n hdr.appendChild(hdrIcon);\n this.add(innerEle, CLS_SLCT);\n }\n return innerEle;\n };\n Accordion.prototype.angularnativeCondiCheck = function (item, prop) {\n var property = prop === 'content' ? item.content : item.header;\n var content = property;\n if (this.isAngular && !isNullOrUndefined(content.elementRef)) {\n var data = content.elementRef.nativeElement.data;\n if (isNullOrUndefined(data) || data === '' || (data.indexOf('bindings=') === -1)) {\n return true;\n }\n var parseddata = JSON.parse(content.elementRef.nativeElement.data.replace('bindings=', ''));\n if (!isNullOrUndefined(parseddata) && parseddata['ng-reflect-ng-if'] === 'false') {\n return false;\n }\n else {\n return true;\n }\n }\n else {\n return true;\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Accordion.prototype.fetchElement = function (ele, value, index, isHeader) {\n var templateFn;\n var temString;\n try {\n if (document.querySelectorAll(value).length && value !== 'Button') {\n var eleVal = document.querySelector(value);\n temString = eleVal.outerHTML.trim();\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n templateFn = compile(value);\n }\n }\n catch (e) {\n if (typeof (value) === 'string') {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n }\n else if (!isNullOrUndefined(this.trgtEle) && (value instanceof (HTMLElement))) {\n ele.appendChild(value);\n ele.firstElementChild.style.display = '';\n }\n else {\n templateFn = compile(value);\n }\n }\n var tempArray;\n if (!isNullOrUndefined(templateFn)) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n var templateProps = void 0;\n var templateName = void 0;\n if (ele.classList.contains(CLS_HEADERCTN)) {\n templateProps = this.element.id + index + '_header';\n templateName = 'header';\n }\n else if (ele.classList.contains(CLS_CTENT)) {\n templateProps = this.element.id + index + '_content';\n templateName = 'content';\n }\n tempArray = templateFn({}, this, templateName, templateProps, this.isStringTemplate);\n }\n if (!isNullOrUndefined(tempArray) && tempArray.length > 0 && !(isNullOrUndefined(tempArray[0].tagName) && tempArray.length === 1)) {\n [].slice.call(tempArray).forEach(function (el) {\n if (!isNullOrUndefined(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(value);\n }\n if (!isNullOrUndefined(temString)) {\n if (this.templateEle.indexOf(value) === -1) {\n this.templateEle.push(value);\n }\n }\n return ele;\n };\n Accordion.prototype.ariaAttrUpdate = function (itemEle) {\n var header = select('.' + CLS_HEADER, itemEle);\n var content = select('.' + CLS_CONTENT, itemEle);\n header.setAttribute('aria-controls', content.id);\n content.setAttribute('aria-labelledby', header.id);\n content.setAttribute('role', 'region');\n };\n Accordion.prototype.contentRendering = function (index) {\n var itemcnt = this.createElement('div', { className: CLS_CONTENT + ' ' + CLS_CTNHIDE, id: getUniqueID('acrdn_panel') });\n attributes(itemcnt, { 'aria-hidden': 'true' });\n var ctn = this.createElement('div', { className: CLS_CTENT });\n if (this.dataSource.length > 0) {\n if (this.isReact) {\n this.renderReactTemplates();\n }\n append(this.getItemTemplate()(this.dataSource[parseInt(index.toString(), 10)], this, 'itemTemplate', this.element.id + '_itemTemplate', false), ctn);\n itemcnt.appendChild(ctn);\n }\n else {\n if (this.enableHtmlSanitizer && typeof (this.items[parseInt(index.toString(), 10)].content)) {\n this.items[parseInt(index.toString(), 10)].content =\n SanitizeHtmlHelper.sanitize(this.items[parseInt(index.toString(), 10)].content);\n }\n itemcnt.appendChild(this.fetchElement(ctn, this.items[parseInt(index.toString(), 10)].content, index, false));\n }\n return itemcnt;\n };\n Accordion.prototype.expand = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM$1);\n if (isNullOrUndefined(trgt) || (isVisible(trgt) && trgt.getAttribute('e-animate') !== 'true') || trgtItemEle.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n var acrdnRoot = closest(trgtItemEle, '.' + CLS_ACRDN_ROOT);\n var expandState = acrdnRoot.querySelector('.' + CLS_EXPANDSTATE);\n var animation = {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: true\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n icon.classList.add(CLS_TOGANIMATE);\n _this.expandedItemsPush(trgtItemEle);\n if (!isNullOrUndefined(expandState)) {\n expandState.classList.remove(CLS_EXPANDSTATE);\n }\n trgtItemEle.classList.add(CLS_EXPANDSTATE);\n if ((animation.name === 'None')) {\n _this.expandProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.expandProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.expandAnimation(animation.name, icon, trgt, trgtItemEle, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.expandAnimation = function (ef, icn, trgt, trgtItemEle, animate, args) {\n var _this = this;\n var height;\n this.lastActiveItemId = trgtItemEle.id;\n if (ef === 'SlideDown') {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n trgt.style.position = 'absolute';\n height = trgtItemEle.offsetHeight;\n trgt.style.maxHeight = (trgt.offsetHeight) + 'px';\n trgtItemEle.style.maxHeight = '';\n };\n animate.progress = function () {\n trgtItemEle.style.minHeight = (height + trgt.offsetHeight) + 'px';\n };\n animate.end = function () {\n setStyleAttribute(trgt, { 'position': '', 'maxHeight': '' });\n trgtItemEle.style.minHeight = '';\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n else {\n animate.begin = function () {\n _this.expandProgress('begin', icn, trgt, trgtItemEle, args);\n };\n animate.end = function () {\n _this.expandProgress('end', icn, trgt, trgtItemEle, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.expandProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(trgt, CLS_CTNHIDE);\n this.add(trgtItemEle, CLS_SLCTED);\n this.add(icon, CLS_EXPANDICN);\n if (progress === 'end') {\n this.add(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'false');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'true' });\n icon.classList.remove(CLS_TOGANIMATE);\n this.trigger('expanded', eventArgs);\n }\n };\n Accordion.prototype.expandedItemsPush = function (item) {\n var index = this.getIndexByItem(item);\n if (this.expandedIndices.indexOf(index) === -1) {\n var temp = [].slice.call(this.expandedIndices);\n temp.push(index);\n this.setProperties({ expandedIndices: temp }, true);\n }\n };\n Accordion.prototype.getIndexByItem = function (item) {\n var itemEle = this.getItemElements();\n return [].slice.call(itemEle).indexOf(item);\n };\n Accordion.prototype.getItemElements = function () {\n var itemEle = [];\n var itemCollection = this.element.children;\n [].slice.call(itemCollection).forEach(function (el) {\n if (el.classList.contains(CLS_ITEM$1)) {\n itemEle.push(el);\n }\n });\n return itemEle;\n };\n Accordion.prototype.expandedItemsPop = function (item) {\n var index = this.getIndexByItem(item);\n var temp = [].slice.call(this.expandedIndices);\n temp.splice(temp.indexOf(index), 1);\n this.setProperties({ expandedIndices: temp }, true);\n };\n Accordion.prototype.collapse = function (trgt) {\n var _this = this;\n var items = this.getItems();\n var trgtItemEle = closest(trgt, '.' + CLS_ITEM$1);\n if (isNullOrUndefined(trgt) || !isVisible(trgt) || trgtItemEle.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n var animation = {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing\n };\n var icon = select('.' + CLS_TOOGLEICN, trgtItemEle).firstElementChild;\n var eventArgs = {\n element: trgtItemEle,\n item: items[this.getIndexByItem(trgtItemEle)],\n index: this.getIndexByItem(trgtItemEle),\n content: trgtItemEle.querySelector('.' + CLS_CONTENT),\n isExpanded: false\n };\n this.trigger('expanding', eventArgs, function (expandArgs) {\n if (!expandArgs.cancel) {\n _this.expandedItemsPop(trgtItemEle);\n trgtItemEle.classList.remove(CLS_EXPANDSTATE);\n icon.classList.add(CLS_TOGANIMATE);\n if ((animation.name === 'None')) {\n _this.collapseProgress('begin', icon, trgt, trgtItemEle, expandArgs);\n _this.collapseProgress('end', icon, trgt, trgtItemEle, expandArgs);\n }\n else {\n _this.collapseAnimation(animation.name, trgt, trgtItemEle, icon, animation, expandArgs);\n }\n }\n });\n };\n Accordion.prototype.collapseAnimation = function (ef, trgt, trgtItEl, icn, animate, args) {\n var _this = this;\n var height;\n var trgtHeight;\n var itemHeight;\n var remain;\n this.lastActiveItemId = trgtItEl.id;\n if (ef === 'SlideUp') {\n animate.begin = function () {\n itemHeight = trgtItEl.offsetHeight;\n trgtItEl.style.minHeight = itemHeight + 'px';\n trgt.style.position = 'absolute';\n height = trgtItEl.offsetHeight;\n trgtHeight = trgt.offsetHeight;\n trgt.style.maxHeight = trgtHeight + 'px';\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.progress = function () {\n remain = ((height - (trgtHeight - trgt.offsetHeight)));\n if (remain < itemHeight) {\n trgtItEl.style.minHeight = remain + 'px';\n }\n };\n animate.end = function () {\n trgt.style.display = 'none';\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n trgtItEl.style.minHeight = '';\n setStyleAttribute(trgt, { 'position': '', 'maxHeight': '', 'display': '' });\n };\n }\n else {\n animate.begin = function () {\n _this.collapseProgress('begin', icn, trgt, trgtItEl, args);\n };\n animate.end = function () {\n _this.collapseProgress('end', icn, trgt, trgtItEl, args);\n };\n }\n new Animation(animate).animate(trgt);\n };\n Accordion.prototype.collapseProgress = function (progress, icon, trgt, trgtItemEle, eventArgs) {\n this.remove(icon, CLS_EXPANDICN);\n this.remove(trgtItemEle, CLS_SLCTED);\n if (progress === 'end') {\n this.add(trgt, CLS_CTNHIDE);\n icon.classList.remove(CLS_TOGANIMATE);\n this.remove(trgtItemEle, CLS_ACTIVE);\n trgt.setAttribute('aria-hidden', 'true');\n attributes(trgt.previousElementSibling, { 'aria-expanded': 'false' });\n this.trigger('expanded', eventArgs);\n }\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Accordion.prototype.getModuleName = function () {\n return 'accordion';\n };\n Accordion.prototype.getItems = function () {\n var items;\n if (this.itemTemplate && this.headerTemplate) {\n items = this.dataSource;\n }\n else {\n items = this.items;\n }\n return items;\n };\n /**\n * Adds new item to the Accordion with the specified index of the Accordion.\n *\n * @param {AccordionItemModel | AccordionItemModel[] | Object | Object[]} item - Item array that is to be added to the Accordion.\n * @param {number} index - Number value that determines where the item should be added.\n * By default, item is added at the last index if the index is not specified.\n * @returns {void}\n */\n Accordion.prototype.addItem = function (item, index) {\n var _this = this;\n var ele = this.element;\n var itemEle = this.getItemElements();\n var items = this.getItems();\n if (isNullOrUndefined(index)) {\n index = items.length;\n }\n if (ele.childElementCount >= index) {\n var addItems = (item instanceof Array) ? item : [item];\n addItems.forEach(function (addItem, i) {\n var itemIndex = index + i;\n items.splice(itemIndex, 0, addItem);\n var innerItemEle = _this.renderInnerItem(addItem, itemIndex);\n if (ele.childElementCount === itemIndex) {\n ele.appendChild(innerItemEle);\n }\n else {\n ele.insertBefore(innerItemEle, itemEle[parseInt(itemIndex.toString(), 10)]);\n }\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'focus', _this.focusIn, _this);\n EventHandler.add(innerItemEle.querySelector('.' + CLS_HEADER), 'blur', _this.focusOut, _this);\n _this.expandedIndices = [];\n _this.expandedItemRefresh(ele);\n if (addItem && addItem.expanded) {\n _this.expandItem(true, itemIndex);\n }\n });\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Accordion.prototype.expandedItemRefresh = function (ele) {\n var _this = this;\n var itemEle = this.getItemElements();\n [].slice.call(itemEle).forEach(function (el) {\n if (el.classList.contains(CLS_SLCTED)) {\n _this.expandedItemsPush(el);\n }\n });\n };\n /**\n * Dynamically removes item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be removed.\n * @returns {void}.\n */\n Accordion.prototype.removeItem = function (index) {\n if (this.isReact) {\n this.clearTemplate(['headerTemplate', 'itemTemplate'], index);\n }\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n var items = this.getItems();\n if (isNullOrUndefined(ele)) {\n return;\n }\n this.restoreContent(index);\n detach(ele);\n items.splice(index, 1);\n this.expandedIndices = [];\n this.expandedItemRefresh(this.element);\n };\n /**\n * Sets focus to the specified index item header in Accordion.\n *\n * @param {number} index - Number value that determines which item should be focused.\n * @returns {void}.\n */\n Accordion.prototype.select = function (index) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele) || isNullOrUndefined(select('.' + CLS_HEADER, ele))) {\n return;\n }\n ele.children[0].focus();\n };\n /**\n * Shows or hides the specified item from Accordion.\n *\n * @param {number} index - Number value that determines which item should be hidden/shown.\n * @param {boolean} isHidden - Boolean value that determines the action either hide (true) or show (false). Default value is false.\n * If the `isHidden` value is false, the item is shown or else item it is hidden.\n * @returns {void}.\n */\n Accordion.prototype.hideItem = function (index, isHidden) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele)) {\n return;\n }\n if (isNullOrUndefined(isHidden)) {\n isHidden = true;\n }\n if (isHidden) {\n this.add(ele, CLS_ITEMHIDE);\n }\n else {\n this.remove(ele, CLS_ITEMHIDE);\n }\n };\n /**\n * Enables/Disables the specified Accordion item.\n *\n * @param {number} index - Number value that determines which item should be enabled/disabled.\n * @param {boolean} isEnable - Boolean value that determines the action as enable (true) or disable (false).\n * If the `isEnable` value is true, the item is enabled or else it is disabled.\n * @returns {void}.\n */\n Accordion.prototype.enableItem = function (index, isEnable) {\n var itemEle = this.getItemElements();\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele)) {\n return;\n }\n var eleHeader = ele.firstElementChild;\n if (isEnable) {\n this.remove(ele, CLS_DISABLE$3);\n attributes(eleHeader, { 'tabindex': '0', 'aria-disabled': 'false' });\n eleHeader.focus();\n }\n else {\n if (ele.classList.contains(CLS_ACTIVE)) {\n this.expandItem(false, index);\n this.eleMoveFocus('movedown', this.element, eleHeader);\n }\n this.add(ele, CLS_DISABLE$3);\n eleHeader.setAttribute('aria-disabled', 'true');\n eleHeader.removeAttribute('tabindex');\n }\n };\n /**\n * Expands/Collapses the specified Accordion item.\n *\n * @param {boolean} isExpand - Boolean value that determines the action as expand or collapse.\n * @param {number} index - Number value that determines which item should be expanded/collapsed.`index` is optional parameter.\n * Without Specifying index, based on the `isExpand` value all Accordion item can be expanded or collapsed.\n * @returns {void}.\n */\n Accordion.prototype.expandItem = function (isExpand, index) {\n var _this = this;\n var itemEle = this.getItemElements();\n if (isNullOrUndefined(index)) {\n if (this.expandMode === 'Single' && isExpand) {\n var ele = itemEle[itemEle.length - 1];\n this.itemExpand(isExpand, ele, this.getIndexByItem(ele));\n }\n else {\n var item = select('#' + this.lastActiveItemId, this.element);\n [].slice.call(itemEle).forEach(function (el) {\n _this.itemExpand(isExpand, el, _this.getIndexByItem(el));\n el.classList.remove(CLS_EXPANDSTATE);\n });\n var expandedItem = select('.' + CLS_EXPANDSTATE, this.element);\n if (expandedItem) {\n expandedItem.classList.remove(CLS_EXPANDSTATE);\n }\n if (item) {\n item.classList.add(CLS_EXPANDSTATE);\n }\n }\n }\n else {\n var ele = itemEle[parseInt(index.toString(), 10)];\n if (isNullOrUndefined(ele) || !ele.classList.contains(CLS_SLCT) || (ele.classList.contains(CLS_ACTIVE) && isExpand)) {\n return;\n }\n else {\n if (this.expandMode === 'Single') {\n this.expandItem(false);\n }\n this.itemExpand(isExpand, ele, index);\n }\n }\n };\n Accordion.prototype.itemExpand = function (isExpand, ele, index) {\n var ctn = ele.children[1];\n if (ele.classList.contains(CLS_DISABLE$3)) {\n return;\n }\n if (isNullOrUndefined(ctn) && isExpand) {\n ctn = this.contentRendering(index);\n ele.appendChild(ctn);\n this.ariaAttrUpdate(ele);\n this.expand(ctn);\n }\n else if (!isNullOrUndefined(ctn)) {\n if (isExpand) {\n this.expand(ctn);\n }\n else {\n this.collapse(ctn);\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.destroyItems = function () {\n this.restoreContent(null);\n if (this.isReact || this.isAngular || this.isVue) {\n this.clearTemplate();\n }\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM$1)).forEach(function (el) {\n detach(el);\n });\n };\n Accordion.prototype.restoreContent = function (index) {\n var ctnElePos;\n if (isNullOrUndefined(index)) {\n ctnElePos = this.element;\n }\n else {\n ctnElePos = this.element.querySelectorAll('.' + CLS_ITEM$1)[parseInt(index.toString(), 10)];\n }\n this.templateEle.forEach(function (eleStr) {\n if (!isNullOrUndefined(ctnElePos.querySelector(eleStr))) {\n document.body.appendChild(ctnElePos.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Accordion.prototype.updateItem = function (item, index) {\n if (!isNullOrUndefined(item)) {\n var items = this.getItems();\n var itemObj = items[parseInt(index.toString(), 10)];\n items.splice(index, 1);\n this.restoreContent(index);\n detach(item);\n this.addItem(itemObj, index);\n }\n };\n Accordion.prototype.setTemplate = function (template, toElement, index) {\n toElement.innerHTML = '';\n this.templateCompile(toElement, template, index);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Accordion.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.fetchElement(tempEle, cnt, index, false);\n if (tempEle.childNodes.length !== 0) {\n [].slice.call(tempEle.childNodes).forEach(function (childEle) {\n ele.appendChild(childEle);\n });\n }\n };\n Accordion.prototype.getPersistData = function () {\n var keyEntity = ['expandedIndices'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {AccordionModel} newProp - It contains the new value of data.\n * @param {AccordionModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Accordion.prototype.onPropertyChanged = function (newProp, oldProp) {\n var acrdn = this.element;\n var isRefresh = false;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var j = 0; j < changedProp.length; j++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(j.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var item = selectAll('.' + CLS_ITEM$1, this.element)[parseInt(index.toString(), 10)];\n var oldVal = Object(oldProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n var newVal = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n var temp = property;\n if (temp === 'header' || temp === 'iconCss' || temp === 'expanded' || ((temp === 'content') && (oldVal === ''))) {\n this.updateItem(item, index);\n }\n if (property === 'cssClass' && !isNullOrUndefined(item)) {\n if (oldVal) {\n removeClass([item], oldVal.split(' '));\n }\n if (newVal) {\n addClass([item], newVal.split(' '));\n }\n }\n if (property === 'visible' && !isNullOrUndefined(item)) {\n if (Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property] === false) {\n item.classList.add(CLS_ITEMHIDE);\n }\n else {\n item.classList.remove(CLS_ITEMHIDE);\n }\n }\n if (property === 'disabled' && !isNullOrUndefined(item)) {\n this.enableItem(index, !newVal);\n }\n if (property === 'content' && !isNullOrUndefined(item) && item.children.length === 2) {\n if (typeof newVal === 'function') {\n var activeContent = item.querySelector('.' + CLS_CTENT);\n activeContent.innerHTML = '';\n this.setTemplate(newVal, activeContent, index);\n }\n else {\n if (item.classList.contains(CLS_SLCTED)) {\n this.expandItem(false, index);\n }\n detach(item.querySelector('.' + CLS_CONTENT));\n }\n }\n }\n }\n else {\n isRefresh = true;\n }\n break;\n case 'dataSource':\n case 'expandedIndices':\n if (this.expandedIndices === null) {\n this.expandedIndices = [];\n }\n isRefresh = true;\n break;\n case 'headerTemplate':\n this.initializeHeaderTemplate();\n isRefresh = true;\n break;\n case 'itemTemplate':\n this.initializeItemTemplate();\n isRefresh = true;\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(acrdn, CLS_RTL$3);\n }\n else {\n this.remove(acrdn, CLS_RTL$3);\n }\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'expandMode':\n if (newProp.expandMode === 'Single' && this.expandedIndices.length > 1) {\n this.expandItem(false);\n }\n break;\n }\n }\n if (isRefresh) {\n this.initExpand = [];\n if (this.expandedIndices.length > 0) {\n this.initExpand = this.expandedIndices;\n }\n this.destroyItems();\n this.renderItems();\n this.initItemExpand();\n }\n };\n __decorate$4([\n Collection([], AccordionItem)\n ], Accordion.prototype, \"items\", void 0);\n __decorate$4([\n Property([])\n ], Accordion.prototype, \"dataSource\", void 0);\n __decorate$4([\n Property()\n ], Accordion.prototype, \"itemTemplate\", void 0);\n __decorate$4([\n Property()\n ], Accordion.prototype, \"headerTemplate\", void 0);\n __decorate$4([\n Property('100%')\n ], Accordion.prototype, \"width\", void 0);\n __decorate$4([\n Property('auto')\n ], Accordion.prototype, \"height\", void 0);\n __decorate$4([\n Property([])\n ], Accordion.prototype, \"expandedIndices\", void 0);\n __decorate$4([\n Property('Multiple')\n ], Accordion.prototype, \"expandMode\", void 0);\n __decorate$4([\n Property(false)\n ], Accordion.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$4([\n Complex({}, AccordionAnimationSettings)\n ], Accordion.prototype, \"animation\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"clicked\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"expanding\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"expanded\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"created\", void 0);\n __decorate$4([\n Event()\n ], Accordion.prototype, \"destroyed\", void 0);\n Accordion = __decorate$4([\n NotifyPropertyChanges\n ], Accordion);\n return Accordion;\n}(Component));\n\n/**\n * Accordion all modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \n/**\n * The ContextMenu is a graphical user interface that appears on the user right click/touch hold operation.\n * ```html\n *
\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar ContextMenu = /** @__PURE__ @class */ (function (_super) {\n __extends$5(ContextMenu, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {ContextMenuModel} options - Specifies the context menu model\n * @param {string} element - Specifies the element\n */\n function ContextMenu(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n ContextMenu.prototype.preRender = function () {\n this.isMenu = false;\n this.element.id = this.element.id || getUniqueID('ej2-contextmenu');\n _super.prototype.preRender.call(this);\n };\n ContextMenu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n this.element.style.zIndex = getZindexPartial(this.element).toString();\n };\n /**\n * This method is used to open the ContextMenu in specified position.\n *\n * @param {number} top - To specify ContextMenu vertical positioning.\n * @param {number} left - To specify ContextMenu horizontal positioning.\n * @param {HTMLElement} target - To calculate z-index for ContextMenu based upon the specified target.\n * @function open\n * @returns {void}\n */\n ContextMenu.prototype.open = function (top, left, target) {\n _super.prototype.openMenu.call(this, null, null, top, left, null, target);\n };\n /**\n * Closes the ContextMenu if it is opened.\n *\n * @function close\n * @returns {void}\n */\n ContextMenu.prototype.close = function () {\n _super.prototype.closeMenu.call(this);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {ContextMenuModel} newProp - Specifies new properties\n * @param {ContextMenuModel} oldProp - Specifies old properties\n * @returns {void}\n */\n ContextMenu.prototype.onPropertyChanged = function (newProp, oldProp) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'filter':\n this.close();\n this.filter = newProp.filter;\n break;\n case 'target':\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n break;\n }\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ContextMenu.prototype.getModuleName = function () {\n return 'contextmenu';\n };\n __decorate$5([\n Property('')\n ], ContextMenu.prototype, \"target\", void 0);\n __decorate$5([\n Property('')\n ], ContextMenu.prototype, \"filter\", void 0);\n __decorate$5([\n Collection([], MenuItem)\n ], ContextMenu.prototype, \"items\", void 0);\n ContextMenu = __decorate$5([\n NotifyPropertyChanges\n ], ContextMenu);\n return ContextMenu;\n}(MenuBase));\n\n/**\n * ContextMenu modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/* eslint-disable @typescript-eslint/triple-slash-reference */\n/// \nvar VMENU = 'e-vertical';\nvar SCROLLABLE = 'e-scrollable';\nvar HAMBURGER = 'e-hamburger';\n/**\n * The Menu is a graphical user interface that serve as navigation headers for your application or site.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Menu = /** @__PURE__ @class */ (function (_super) {\n __extends$6(Menu, _super);\n /**\n * Constructor for creating the component.\n *\n * @private\n * @param {MenuModel} options - Specifies the menu model\n * @param {string} element - Specifies the element\n */\n function Menu(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.tempItems = [];\n return _this;\n }\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Menu.prototype.getModuleName = function () {\n return 'menu';\n };\n /**\n * For internal use only - prerender processing.\n *\n * @private\n * @returns {void}\n */\n Menu.prototype.preRender = function () {\n this.isMenu = true;\n this.element.id = this.element.id || getUniqueID('ej2-menu');\n if (this.template) {\n try {\n if (document.querySelectorAll(this.template).length) {\n this.template = document.querySelector(this.template).innerHTML.trim();\n this.clearChanges();\n }\n }\n catch (e) {\n /* action on catch */\n }\n this.updateMenuItems(this.items);\n }\n else {\n this.updateMenuItems(this.items);\n }\n _super.prototype.preRender.call(this);\n };\n Menu.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n attributes(this.element, { 'role': 'menubar', 'tabindex': '0' });\n if (this.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode && !this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n if (Browser.isDevice && !this.enableScrolling) {\n this.element.parentElement.classList.add(SCROLLABLE);\n }\n }\n if (this.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n if (this.orientation === 'Horizontal') {\n this.element.classList.add('e-hide-menu');\n }\n }\n };\n Menu.prototype.updateMenuItems = function (items) {\n this.tempItems = items;\n this.items = [];\n this.tempItems.map(this.createMenuItems, this);\n this.setProperties({ items: this.items }, true);\n this.tempItems = [];\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {MenuModel} newProp - Specifies the new properties.\n * @param {MenuModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Menu.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'orientation':\n if (newProp.orientation === 'Vertical') {\n this.element.classList.add(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n this.element.setAttribute('aria-orientation', 'vertical');\n }\n else {\n this.element.classList.remove(VMENU);\n if (this.hamburgerMode) {\n if (!this.target) {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n this.element.removeAttribute('aria-orientation');\n }\n break;\n case 'items':\n if (!Object.keys(oldProp.items).length) {\n this.updateMenuItems(newProp.items);\n }\n break;\n case 'hamburgerMode':\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n if (newProp.hamburgerMode) {\n this.element.parentElement.classList.add(HAMBURGER);\n [].slice.call(this.element.getElementsByClassName('e-blankicon')).forEach(function (li) {\n li.style[_this.enableRtl ? 'paddingRight' : 'paddingLeft'] = '';\n });\n }\n else {\n this.element.parentElement.classList.remove(HAMBURGER);\n if (this.orientation === 'Vertical') {\n this.setBlankIconStyle(this.element);\n }\n }\n if (this.orientation === 'Vertical') {\n if (!this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.remove('e-hide-menu');\n }\n else {\n if (this.target) {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n this.element.classList[newProp.hamburgerMode ? 'add' : 'remove']('e-hide-menu');\n }\n break;\n case 'title':\n if (this.hamburgerMode && this.element.previousElementSibling) {\n newProp.title = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(newProp.title) : newProp.title;\n this.element.previousElementSibling.querySelector('.e-menu-title').innerHTML = newProp.title;\n }\n break;\n case 'target':\n if (this.hamburgerMode) {\n this.unWireEvents(oldProp.target);\n this.wireEvents();\n if (this.orientation === 'Horizontal') {\n if (!newProp.target) {\n if (!this.element.previousElementSibling) {\n _super.prototype.createHeaderContainer.call(this);\n }\n this.element.previousElementSibling.classList.remove(VMENU);\n }\n else {\n this.element.previousElementSibling.classList.add(VMENU);\n }\n this.element.classList.add('e-hide-menu');\n }\n }\n break;\n }\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n };\n Menu.prototype.createMenuItems = function (item) {\n var idx;\n var i;\n var items = this.items;\n var pIdField = this.getField('parentId');\n if (item[\"\" + pIdField]) {\n idx = this.getIndex(item[\"\" + pIdField].toString(), true);\n for (i = 0; i < idx.length; i++) {\n if (!items[idx[i]].items) {\n items[idx[i]].items = [];\n }\n items = items[idx[i]].items;\n }\n items.push(item);\n }\n else {\n this.items.push(item);\n }\n };\n /**\n * This method is used to open the Menu in hamburger mode.\n *\n * @function open\n * @returns {void}\n */\n Menu.prototype.open = function () {\n _super.prototype.openHamburgerMenu.call(this);\n };\n /**\n * Closes the Menu if it is opened in hamburger mode.\n *\n * @function close\n * @returns {void}\n */\n Menu.prototype.close = function () {\n _super.prototype.closeHamburgerMenu.call(this);\n };\n __decorate$6([\n Property('Horizontal')\n ], Menu.prototype, \"orientation\", void 0);\n __decorate$6([\n Property('')\n ], Menu.prototype, \"target\", void 0);\n __decorate$6([\n Property(null)\n ], Menu.prototype, \"template\", void 0);\n __decorate$6([\n Property(false)\n ], Menu.prototype, \"enableScrolling\", void 0);\n __decorate$6([\n Property(false)\n ], Menu.prototype, \"hamburgerMode\", void 0);\n __decorate$6([\n Property('Menu')\n ], Menu.prototype, \"title\", void 0);\n __decorate$6([\n Property(false)\n ], Menu.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$6([\n Complex({ itemId: 'id', text: 'text', parentId: 'parentId', iconCss: 'iconCss', url: 'url', separator: 'separator', children: 'items' }, FieldSettings)\n ], Menu.prototype, \"fields\", void 0);\n Menu = __decorate$6([\n NotifyPropertyChanges\n ], Menu);\n return Menu;\n}(MenuBase));\n\n/**\n * Menu modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar CLS_TAB = 'e-tab';\nvar CLS_HEADER$1 = 'e-tab-header';\nvar CLS_BLA_TEM = 'blazor-template';\nvar CLS_CONTENT$1 = 'e-content';\nvar CLS_NEST$1 = 'e-nested';\nvar CLS_ITEMS$1 = 'e-items';\nvar CLS_ITEM$2 = 'e-item';\nvar CLS_TEMPLATE$1 = 'e-template';\nvar CLS_RTL$4 = 'e-rtl';\nvar CLS_ACTIVE$1 = 'e-active';\nvar CLS_DISABLE$4 = 'e-disable';\nvar CLS_HIDDEN$1 = 'e-hidden';\nvar CLS_FOCUS = 'e-focused';\nvar CLS_ICONS = 'e-icons';\nvar CLS_ICON = 'e-icon';\nvar CLS_ICON_TAB = 'e-icon-tab';\nvar CLS_ICON_CLOSE = 'e-close-icon';\nvar CLS_CLOSE_SHOW = 'e-close-show';\nvar CLS_TEXT = 'e-tab-text';\nvar CLS_INDICATOR = 'e-indicator';\nvar CLS_WRAP = 'e-tab-wrap';\nvar CLS_TEXT_WRAP = 'e-text-wrap';\nvar CLS_TAB_ICON = 'e-tab-icon';\nvar CLS_TB_ITEMS = 'e-toolbar-items';\nvar CLS_TB_ITEM = 'e-toolbar-item';\nvar CLS_TB_POP = 'e-toolbar-pop';\nvar CLS_TB_POPUP = 'e-toolbar-popup';\nvar CLS_HOR_NAV = 'e-hor-nav';\nvar CLS_POPUP_OPEN = 'e-popup-open';\nvar CLS_POPUP_CLOSE = 'e-popup-close';\nvar CLS_PROGRESS = 'e-progress';\nvar CLS_IGNORE = 'e-ignore';\nvar CLS_OVERLAY$2 = 'e-overlay';\nvar CLS_HSCRCNT = 'e-hscroll-content';\nvar CLS_VSCRCNT = 'e-vscroll-content';\nvar CLS_VTAB = 'e-vertical-tab';\nvar CLS_VERTICAL$1 = 'e-vertical';\nvar CLS_VLEFT = 'e-vertical-left';\nvar CLS_VRIGHT = 'e-vertical-right';\nvar CLS_HBOTTOM = 'e-horizontal-bottom';\nvar CLS_FILL = 'e-fill-mode';\nvar TABITEMPREFIX = 'tabitem_';\nvar CLS_REORDER_ACTIVE_ITEM = 'e-reorder-active-item';\n/**\n * Objects used for configuring the Tab selecting item action properties.\n */\nvar TabActionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$7(TabActionSettings, _super);\n function TabActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Property('SlideLeftIn')\n ], TabActionSettings.prototype, \"effect\", void 0);\n __decorate$7([\n Property(600)\n ], TabActionSettings.prototype, \"duration\", void 0);\n __decorate$7([\n Property('ease')\n ], TabActionSettings.prototype, \"easing\", void 0);\n return TabActionSettings;\n}(ChildProperty));\n/**\n * Objects used for configuring the Tab animation properties.\n */\nvar TabAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$7(TabAnimationSettings, _super);\n function TabAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Complex({ effect: 'SlideLeftIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"previous\", void 0);\n __decorate$7([\n Complex({ effect: 'SlideRightIn', duration: 600, easing: 'ease' }, TabActionSettings)\n ], TabAnimationSettings.prototype, \"next\", void 0);\n return TabAnimationSettings;\n}(ChildProperty));\n/**\n * Objects used for configuring the Tab item header properties.\n */\nvar Header = /** @__PURE__ @class */ (function (_super) {\n __extends$7(Header, _super);\n function Header() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Property('')\n ], Header.prototype, \"text\", void 0);\n __decorate$7([\n Property('')\n ], Header.prototype, \"iconCss\", void 0);\n __decorate$7([\n Property('left')\n ], Header.prototype, \"iconPosition\", void 0);\n return Header;\n}(ChildProperty));\n/**\n * An array of object that is used to configure the Tab.\n */\nvar TabItem = /** @__PURE__ @class */ (function (_super) {\n __extends$7(TabItem, _super);\n function TabItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$7([\n Complex({}, Header)\n ], TabItem.prototype, \"header\", void 0);\n __decorate$7([\n Property(null)\n ], TabItem.prototype, \"headerTemplate\", void 0);\n __decorate$7([\n Property('')\n ], TabItem.prototype, \"content\", void 0);\n __decorate$7([\n Property('')\n ], TabItem.prototype, \"cssClass\", void 0);\n __decorate$7([\n Property(false)\n ], TabItem.prototype, \"disabled\", void 0);\n __decorate$7([\n Property(true)\n ], TabItem.prototype, \"visible\", void 0);\n __decorate$7([\n Property()\n ], TabItem.prototype, \"id\", void 0);\n __decorate$7([\n Property(-1)\n ], TabItem.prototype, \"tabIndex\", void 0);\n return TabItem;\n}(ChildProperty));\n/**\n * Tab is a content panel to show multiple contents in a single space, one at a time.\n * Each Tab item has an associated content, that will be displayed based on the active Tab header item.\n * ```html\n *
    \n * \n * ```\n */\nvar Tab = /** @__PURE__ @class */ (function (_super) {\n __extends$7(Tab, _super);\n /**\n * Initializes a new instance of the Tab class.\n *\n * @param {TabModel} options - Specifies Tab model properties as options.\n * @param {string | HTMLElement} element - Specifies the element that is rendered as a Tab.\n */\n function Tab(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.show = {};\n _this.hide = {};\n _this.maxHeight = 0;\n _this.title = 'Close';\n _this.isInteracted = false;\n _this.lastIndex = 0;\n _this.isAdd = false;\n _this.isIconAlone = false;\n _this.draggableItems = [];\n _this.resizeContext = _this.refreshActiveTabBorder.bind(_this);\n /**\n * Contains the keyboard configuration of the Tab.\n */\n _this.keyConfigs = {\n tab: 'tab',\n home: 'home',\n end: 'end',\n enter: 'enter',\n space: 'space',\n delete: 'delete',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n return _this;\n }\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Tab.prototype.destroy = function () {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n if (!isNullOrUndefined(this.tbObj)) {\n this.tbObj.destroy();\n this.tbObj = null;\n }\n this.unWireEvents();\n this.element.removeAttribute('aria-disabled');\n this.expTemplateContent();\n if (!this.isTemplate) {\n while (this.element.firstElementChild) {\n remove(this.element.firstElementChild);\n }\n }\n else {\n var cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n this.element.classList.remove(CLS_TEMPLATE$1);\n if (!isNullOrUndefined(cntEle)) {\n cntEle.innerHTML = this.cnt;\n }\n }\n if (this.btnCls) {\n this.btnCls = null;\n }\n this.hdrEle = null;\n this.cntEle = null;\n this.tbItems = null;\n this.tbItem = null;\n this.tbPop = null;\n this.prevItem = null;\n this.popEle = null;\n this.bdrLine = null;\n this.content = null;\n this.dragItem = null;\n this.cloneElement = null;\n this.draggingItems = [];\n if (this.draggableItems && this.draggableItems.length > 0) {\n for (var i = 0; i < this.draggableItems.length; i++) {\n this.draggableItems[i].destroy();\n this.draggableItems[i] = null;\n }\n this.draggableItems = [];\n }\n _super.prototype.destroy.call(this);\n this.trigger('destroyed');\n };\n /**\n * Refresh the tab component\n *\n * @returns {void}\n */\n Tab.prototype.refresh = function () {\n if (this.isReact) {\n this.clearTemplate();\n }\n _super.prototype.refresh.call(this);\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Initialize component\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.preRender = function () {\n var nested = closest(this.element, '.' + CLS_CONTENT$1);\n this.prevIndex = 0;\n this.isNested = false;\n this.isPopup = false;\n this.initRender = true;\n this.isSwipeed = false;\n this.itemIndexArray = [];\n this.templateEle = [];\n if (this.allowDragAndDrop) {\n this.dragArea = !isNullOrUndefined(this.dragArea) ? this.dragArea : '#' + this.element.id + ' ' + ('.' + CLS_HEADER$1);\n }\n if (!isNullOrUndefined(nested)) {\n nested.parentElement.classList.add(CLS_NEST$1);\n this.isNested = true;\n }\n var name = Browser.info.name;\n var css = (name === 'msie') ? 'e-ie' : (name === 'edge') ? 'e-edge' : (name === 'safari') ? 'e-safari' : '';\n setStyleAttribute(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n this.setCssClass(this.element, this.cssClass, true);\n attributes(this.element, { 'aria-disabled': 'false' });\n this.setCssClass(this.element, css, true);\n this.updatePopAnimationConfig();\n };\n /**\n * Initialize the component rendering\n *\n * @private\n * @returns {void}\n */\n Tab.prototype.render = function () {\n this.btnCls = this.createElement('span', { className: CLS_ICONS + ' ' + CLS_ICON_CLOSE, attrs: { title: this.title } });\n this.tabId = this.element.id.length > 0 ? ('-' + this.element.id) : getRandomId();\n this.renderContainer();\n this.wireEvents();\n this.initRender = false;\n };\n Tab.prototype.renderContainer = function () {\n var ele = this.element;\n this.items.forEach(function (item, index) {\n if (isNullOrUndefined(item.id) && !isNullOrUndefined(item.setProperties)) {\n item.setProperties({ id: TABITEMPREFIX + index.toString() }, true);\n }\n });\n if (this.items.length > 0 && ele.children.length === 0) {\n ele.appendChild(this.createElement('div', { className: CLS_CONTENT$1 }));\n this.setOrientation(this.headerPlacement, this.createElement('div', { className: CLS_HEADER$1 }));\n this.isTemplate = false;\n }\n else if (this.element.children.length > 0) {\n this.isTemplate = true;\n ele.classList.add(CLS_TEMPLATE$1);\n var header = ele.querySelector('.' + CLS_HEADER$1);\n if (header && this.headerPlacement === 'Bottom') {\n this.setOrientation(this.headerPlacement, header);\n }\n }\n if (!isNullOrUndefined(select('.' + CLS_HEADER$1, this.element)) && !isNullOrUndefined(select('.' + CLS_CONTENT$1, this.element))) {\n this.renderHeader();\n this.tbItems = select('.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEMS, this.element);\n if (!isNullOrUndefined(this.tbItems)) {\n rippleEffect(this.tbItems, { selector: '.e-tab-wrap' });\n }\n this.renderContent();\n if (selectAll('.' + CLS_TB_ITEM, this.element).length > 0) {\n this.tbItems = select('.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEMS, this.element);\n this.bdrLine = this.createElement('div', { className: CLS_INDICATOR + ' ' + CLS_HIDDEN$1 + ' ' + CLS_IGNORE });\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!isNullOrUndefined(scrCnt)) {\n scrCnt.insertBefore(this.bdrLine, scrCnt.firstChild);\n }\n else {\n this.tbItems.insertBefore(this.bdrLine, this.tbItems.firstChild);\n }\n this.setContentHeight(true);\n this.select(this.selectedItem);\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.hdrEle);\n if (!isNullOrUndefined(this.tbItem)) {\n for (var i = 0; i < this.items.length; i++) {\n if (this.tbItem[i]) {\n var tabID = this.items[i].id;\n this.tbItem[i].setAttribute('data-id', tabID);\n }\n }\n }\n this.setRTL(this.enableRtl);\n }\n };\n Tab.prototype.renderHeader = function () {\n var _this = this;\n var hdrPlace = this.headerPlacement;\n var tabItems = [];\n this.hdrEle = this.getTabHeader();\n this.addVerticalClass();\n if (!this.isTemplate) {\n tabItems = this.parseObject(this.items, 0);\n }\n else {\n if (this.element.children.length > 1 && this.element.children[1].classList.contains(CLS_HEADER$1)) {\n this.setProperties({ headerPlacement: 'Bottom' }, true);\n }\n var count = this.hdrEle.children.length;\n var hdrItems = [];\n for (var i = 0; i < count; i++) {\n hdrItems.push(this.hdrEle.children.item(i).innerHTML);\n }\n if (count > 0) {\n while (this.hdrEle.firstElementChild) {\n detach(this.hdrEle.firstElementChild);\n }\n var tabItems_1 = this.createElement('div', { className: CLS_ITEMS$1 });\n this.hdrEle.appendChild(tabItems_1);\n hdrItems.forEach(function (item, index) {\n _this.lastIndex = index;\n var attr = {\n className: CLS_ITEM$2, id: CLS_ITEM$2 + _this.tabId + '_' + index\n };\n var txt = _this.createElement('span', {\n className: CLS_TEXT, innerHTML: item, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var cont = _this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txt + _this.btnCls.outerHTML\n }).outerHTML;\n var wrap = _this.createElement('div', {\n className: CLS_WRAP, innerHTML: cont,\n attrs: { role: 'tab', tabIndex: '-1', 'aria-selected': 'false', 'aria-controls': CLS_CONTENT$1 + _this.tabId + '_' + index }\n });\n tabItems_1.appendChild(_this.createElement('div', attr));\n selectAll('.' + CLS_ITEM$2, tabItems_1)[index].appendChild(wrap);\n });\n }\n }\n this.tbObj = new Toolbar({\n width: (hdrPlace === 'Left' || hdrPlace === 'Right') ? 'auto' : '100%',\n height: (hdrPlace === 'Left' || hdrPlace === 'Right') ? '100%' : 'auto',\n overflowMode: this.overflowMode,\n items: (tabItems.length !== 0) ? tabItems : [],\n clicked: this.clickHandler.bind(this),\n scrollStep: this.scrollStep,\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n cssClass: this.cssClass\n });\n this.tbObj.isStringTemplate = true;\n this.tbObj.createElement = this.createElement;\n this.tbObj.appendTo(this.hdrEle);\n attributes(this.hdrEle, { role: 'tablist' });\n if (!isNullOrUndefined(this.element.getAttribute('aria-label'))) {\n this.hdrEle.setAttribute('aria-label', this.element.getAttribute('aria-label'));\n this.element.removeAttribute('aria-label');\n }\n else if (!isNullOrUndefined(this.element.getAttribute('aria-labelledby'))) {\n this.hdrEle.setAttribute('aria-labelledby', this.element.getAttribute('aria-labelledby'));\n this.element.removeAttribute('aria-labelledby');\n }\n this.setCloseButton(this.showCloseButton);\n var toolbarHeader = this.tbObj.element.querySelector('.' + CLS_TB_ITEMS);\n if (!isNullOrUndefined(toolbarHeader)) {\n if (isNullOrUndefined(toolbarHeader.id) || toolbarHeader.id === '') {\n toolbarHeader.id = this.element.id + '_' + 'tab_header_items';\n }\n }\n };\n Tab.prototype.renderContent = function () {\n this.cntEle = select('.' + CLS_CONTENT$1, this.element);\n var hdrItem = selectAll('.' + CLS_TB_ITEM, this.element);\n if (this.isTemplate) {\n this.cnt = (this.cntEle.children.length > 0) ? this.cntEle.innerHTML : '';\n var contents = this.cntEle.children;\n for (var i = 0; i < hdrItem.length; i++) {\n if (contents.length - 1 >= i) {\n addClass([contents.item(i)], CLS_ITEM$2);\n attributes(contents.item(i), { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + i });\n contents.item(i).id = CLS_CONTENT$1 + this.tabId + '_' + i;\n }\n }\n }\n };\n Tab.prototype.reRenderItems = function () {\n this.renderContainer();\n if (!isNullOrUndefined(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n };\n Tab.prototype.parseObject = function (items, index) {\n var _this = this;\n var tbItems = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element);\n var maxId = this.lastIndex;\n if (!this.isReplace && tbItems.length > 0) {\n var idList_1 = [];\n tbItems.forEach(function (item) {\n idList_1.push(_this.getIndexFromEle(item.id));\n });\n maxId = Math.max.apply(Math, idList_1);\n }\n var tItems = [];\n var txtWrapEle;\n var spliceArray = [];\n items.forEach(function (item, i) {\n var pos = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconCss)) ? '' : item.header.iconCss;\n if ((isNullOrUndefined(item.headerTemplate)) && (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.text) ||\n ((item.header.text.length === 0)) && (css === ''))) {\n spliceArray.push(i);\n return;\n }\n var txt = item.headerTemplate || item.header.text;\n if (typeof txt === 'string' && _this.enableHtmlSanitizer) {\n txt = SanitizeHtmlHelper.sanitize(txt);\n }\n var itemIndex;\n if (_this.isReplace && !isNullOrUndefined(_this.tbId) && _this.tbId !== '') {\n itemIndex = parseInt(_this.tbId.substring(_this.tbId.lastIndexOf('_') + 1), 10);\n _this.tbId = '';\n }\n else {\n itemIndex = index + i;\n }\n _this.lastIndex = ((tbItems.length === 0) ? i : ((_this.isReplace) ? (itemIndex) : (maxId + 1 + i)));\n var disabled = (item.disabled) ? ' ' + CLS_DISABLE$4 + ' ' + CLS_OVERLAY$2 : '';\n var hidden = (item.visible === false) ? ' ' + CLS_HIDDEN$1 : '';\n txtWrapEle = _this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n var tHtml = ((txt instanceof Object) ? txt.outerHTML : txt);\n var txtEmpty = (!isNullOrUndefined(tHtml) && tHtml !== '');\n if (!isNullOrUndefined(txt.tagName)) {\n txtWrapEle.appendChild(txt);\n }\n else {\n _this.headerTextCompile(txtWrapEle, txt, i);\n }\n var tEle;\n var icon = _this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tCont = _this.createElement('div', { className: CLS_TEXT_WRAP });\n tCont.appendChild(txtWrapEle);\n if ((txt !== '' && txt !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tCont.insertBefore(icon, tCont.firstElementChild);\n }\n else {\n tCont.appendChild(icon);\n }\n tEle = txtWrapEle;\n _this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrapEle : icon);\n if (tEle === icon) {\n detach(txtWrapEle);\n tCont.appendChild(icon);\n _this.isIconAlone = true;\n }\n }\n var tabIndex = isNullOrUndefined(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAttrs = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'false' };\n tCont.appendChild(_this.btnCls.cloneNode(true));\n var wrap = _this.createElement('div', { className: CLS_WRAP, attrs: wrapAttrs });\n wrap.appendChild(tCont);\n if (_this.itemIndexArray === []) {\n _this.itemIndexArray.push(CLS_ITEM$2 + _this.tabId + '_' + _this.lastIndex);\n }\n else {\n _this.itemIndexArray.splice((index + i), 0, CLS_ITEM$2 + _this.tabId + '_' + _this.lastIndex);\n }\n var attrObj = {\n id: CLS_ITEM$2 + _this.tabId + '_' + _this.lastIndex\n };\n var tItem = { htmlAttributes: attrObj, template: wrap };\n tItem.cssClass = ((item.cssClass !== undefined) ? item.cssClass : ' ') + ' ' + disabled + ' ' + hidden + ' '\n + ((css !== '') ? 'e-i' + pos : '') + ' ' + ((!txtEmpty) ? CLS_ICON : '');\n if (pos === 'top' || pos === 'bottom') {\n _this.element.classList.add('e-vertical-icon');\n }\n tItems.push(tItem);\n i++;\n });\n if (!this.isAdd) {\n spliceArray.forEach(function (spliceItemIndex) {\n _this.items.splice(spliceItemIndex, 1);\n });\n }\n if (this.isIconAlone) {\n this.element.classList.add(CLS_ICON_TAB);\n }\n else {\n this.element.classList.remove(CLS_ICON_TAB);\n }\n return tItems;\n };\n Tab.prototype.removeActiveClass = function () {\n var tabHeader = this.getTabHeader();\n if (tabHeader) {\n var tabItems = selectAll('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1, tabHeader);\n [].slice.call(tabItems).forEach(function (node) { return node.classList.remove(CLS_ACTIVE$1); });\n [].slice.call(tabItems).forEach(function (node) { return node.firstElementChild.setAttribute('aria-selected', 'false'); });\n }\n };\n Tab.prototype.checkPopupOverflow = function (ele) {\n this.tbPop = select('.' + CLS_TB_POP, this.element);\n var popIcon = select('.e-hor-nav', this.element);\n var tbrItems = select('.' + CLS_TB_ITEMS, this.element);\n var lastChild = tbrItems.lastChild;\n var isOverflow = false;\n if (!this.isVertical() && ((this.enableRtl && ((popIcon.offsetLeft + popIcon.offsetWidth) > tbrItems.offsetLeft))\n || (!this.enableRtl && popIcon.offsetLeft < tbrItems.offsetWidth))) {\n isOverflow = true;\n }\n else if (this.isVertical() && (popIcon.offsetTop < lastChild.offsetTop + lastChild.offsetHeight)) {\n isOverflow = true;\n }\n if (isOverflow) {\n ele.classList.add(CLS_TB_POPUP);\n this.tbPop.insertBefore(ele, selectAll('.' + CLS_TB_POPUP, this.tbPop)[0]);\n }\n return true;\n };\n Tab.prototype.popupHandler = function (target) {\n var ripEle = target.querySelector('.e-ripple-element');\n if (!isNullOrUndefined(ripEle)) {\n ripEle.outerHTML = '';\n target.querySelector('.' + CLS_WRAP).classList.remove('e-ripple');\n }\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var lastChild = this.tbItem[this.tbItem.length - 1];\n if (this.tbItem.length !== 0) {\n target.classList.remove(CLS_TB_POPUP);\n target.removeAttribute('style');\n this.tbItems.appendChild(target);\n this.actEleId = target.id;\n if (this.checkPopupOverflow(lastChild)) {\n var prevEle = this.tbItems.lastChild.previousElementSibling;\n this.checkPopupOverflow(prevEle);\n }\n this.isPopup = true;\n }\n return selectAll('.' + CLS_TB_ITEM, this.tbItems).length - 1;\n };\n Tab.prototype.setCloseButton = function (val) {\n var trg = select('.' + CLS_HEADER$1, this.element);\n if (val === true) {\n trg.classList.add(CLS_CLOSE_SHOW);\n }\n else {\n trg.classList.remove(CLS_CLOSE_SHOW);\n }\n this.tbObj.refreshOverflow();\n this.refreshActiveTabBorder();\n };\n Tab.prototype.prevCtnAnimation = function (prev, current) {\n var animation;\n var checkRTL = this.enableRtl || this.element.classList.contains(CLS_RTL$4);\n if (this.isPopup || prev <= current) {\n if (this.animation.previous.effect === 'SlideLeftIn') {\n animation = {\n name: 'SlideLeftOut',\n duration: this.animation.previous.duration, timingFunction: this.animation.previous.easing\n };\n }\n else {\n animation = null;\n }\n }\n else {\n if (this.animation.next.effect === 'SlideRightIn') {\n animation = {\n name: 'SlideRightOut',\n duration: this.animation.next.duration, timingFunction: this.animation.next.easing\n };\n }\n else {\n animation = null;\n }\n }\n return animation;\n };\n Tab.prototype.triggerPrevAnimation = function (oldCnt, prevIndex) {\n var _this = this;\n var animateObj = this.prevCtnAnimation(prevIndex, this.selectedItem);\n if (!isNullOrUndefined(animateObj)) {\n animateObj.begin = function () {\n setStyleAttribute(oldCnt, { 'position': 'absolute' });\n oldCnt.classList.add(CLS_PROGRESS);\n oldCnt.classList.add('e-view');\n };\n animateObj.end = function () {\n oldCnt.style.display = 'none';\n oldCnt.classList.remove(CLS_ACTIVE$1);\n oldCnt.classList.remove(CLS_PROGRESS);\n oldCnt.classList.remove('e-view');\n setStyleAttribute(oldCnt, { 'display': '', 'position': '' });\n if (oldCnt.childNodes.length === 0 && !_this.isTemplate) {\n detach(oldCnt);\n }\n };\n new Animation(animateObj).animate(oldCnt);\n }\n else {\n oldCnt.classList.remove(CLS_ACTIVE$1);\n }\n };\n Tab.prototype.triggerAnimation = function (id, value) {\n var _this = this;\n var prevIndex = this.prevIndex;\n var oldCnt;\n var itemCollection = [].slice.call(this.element.querySelector('.' + CLS_CONTENT$1).children);\n itemCollection.forEach(function (item) {\n if (item.id === _this.prevActiveEle) {\n oldCnt = item;\n }\n });\n var prevEle = this.tbItem[prevIndex];\n var newCnt = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNullOrUndefined(oldCnt) && !isNullOrUndefined(prevEle)) {\n var idNo = this.extIndex(prevEle.id);\n oldCnt = this.getTrgContent(this.cntEle, idNo);\n }\n if (!isNullOrUndefined(newCnt)) {\n this.prevActiveEle = newCnt.id;\n }\n var isPrevent = isNullOrUndefined(this.animation) || this.animation.next === {} || this.animation.previous === {}\n || isNullOrUndefined(this.animation.next.effect) || isNullOrUndefined(this.animation.previous.effect)\n || this.animation.previous.effect == 'None' || this.animation.next.effect == 'None';\n if (this.initRender || value === false || this.animation === {} || isPrevent) {\n if (oldCnt && oldCnt !== newCnt) {\n oldCnt.classList.remove(CLS_ACTIVE$1);\n }\n return;\n }\n var cnt = select('.' + CLS_CONTENT$1, this.element);\n var animateObj;\n if (this.prevIndex > this.selectedItem && !this.isPopup) {\n var openEff = this.animation.previous.effect;\n animateObj = {\n name: ((openEff === 'None') ? '' : ((openEff !== 'SlideLeftIn') ? openEff : 'SlideLeftIn')),\n duration: this.animation.previous.duration,\n timingFunction: this.animation.previous.easing\n };\n }\n else if (this.isPopup || this.prevIndex < this.selectedItem || this.prevIndex === this.selectedItem) {\n var clsEff = this.animation.next.effect;\n animateObj = {\n name: ((clsEff === 'None') ? '' : ((clsEff !== 'SlideRightIn') ? clsEff : 'SlideRightIn')),\n duration: this.animation.next.duration,\n timingFunction: this.animation.next.easing\n };\n }\n animateObj.progress = function () {\n cnt.classList.add(CLS_PROGRESS);\n _this.setActiveBorder();\n };\n animateObj.end = function () {\n cnt.classList.remove(CLS_PROGRESS);\n newCnt.classList.add(CLS_ACTIVE$1);\n };\n if (!this.initRender && !isNullOrUndefined(oldCnt)) {\n this.triggerPrevAnimation(oldCnt, prevIndex);\n }\n this.isPopup = false;\n if (animateObj.name === '') {\n newCnt.classList.add(CLS_ACTIVE$1);\n }\n else {\n new Animation(animateObj).animate(newCnt);\n }\n };\n Tab.prototype.keyPressed = function (trg) {\n var trgParent = closest(trg, '.' + CLS_HEADER$1 + ' .' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (!isNullOrUndefined(this.popEle) && trg.classList.contains('e-hor-nav')) {\n (this.popEle.classList.contains(CLS_POPUP_OPEN)) ? this.popObj.hide(this.hide) : this.popObj.show(this.show);\n }\n else if (trg.classList.contains('e-scroll-nav')) {\n trg.click();\n }\n else {\n if (!isNullOrUndefined(trgParent) && trgParent.classList.contains(CLS_ACTIVE$1) === false) {\n this.selectTab(trgIndex, null, true);\n if (!isNullOrUndefined(this.popEle)) {\n this.popObj.hide(this.hide);\n }\n }\n }\n };\n Tab.prototype.getTabHeader = function () {\n if (isNullOrUndefined(this.element)) {\n return undefined;\n }\n var headers = [].slice.call(this.element.children).filter(function (e) { return e.classList.contains(CLS_HEADER$1); });\n if (headers.length > 0) {\n return headers[0];\n }\n else {\n var wrap = [].slice.call(this.element.children).filter(function (e) { return !e.classList.contains(CLS_BLA_TEM); })[0];\n if (!wrap) {\n return undefined;\n }\n return [].slice.call(wrap.children).filter(function (e) { return e.classList.contains(CLS_HEADER$1); })[0];\n }\n };\n Tab.prototype.getEleIndex = function (item) {\n return Array.prototype.indexOf.call(selectAll('.' + CLS_TB_ITEM, this.getTabHeader()), item);\n };\n Tab.prototype.extIndex = function (id) {\n return id.replace(CLS_ITEM$2 + this.tabId + '_', '');\n };\n Tab.prototype.expTemplateContent = function () {\n var _this = this;\n this.templateEle.forEach(function (eleStr) {\n if (!isNullOrUndefined(_this.element.querySelector(eleStr))) {\n document.body.appendChild(_this.element.querySelector(eleStr)).style.display = 'none';\n }\n });\n };\n Tab.prototype.templateCompile = function (ele, cnt, index) {\n var tempEle = this.createElement('div');\n this.compileElement(tempEle, cnt, 'content', index);\n if (tempEle.childNodes.length !== 0) {\n ele.appendChild(tempEle);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.compileElement = function (ele, val, prop, index) {\n var templateFn;\n if (typeof val === 'string') {\n val = val.trim();\n if (this.isVue) {\n templateFn = compile(SanitizeHtmlHelper.sanitize(val));\n }\n else {\n ele.innerHTML = SanitizeHtmlHelper.sanitize(val);\n }\n }\n else {\n templateFn = compile(val);\n }\n var templateFUN;\n if (!isNullOrUndefined(templateFn)) {\n templateFUN = templateFn({}, this, prop);\n }\n if (!isNullOrUndefined(templateFn) && templateFUN.length > 0) {\n [].slice.call(templateFUN).forEach(function (el) {\n ele.appendChild(el);\n });\n }\n };\n Tab.prototype.headerTextCompile = function (element, text, index) {\n this.compileElement(element, text, 'headerTemplate', index);\n };\n Tab.prototype.getContent = function (ele, cnt, callType, index) {\n var eleStr;\n cnt = isNullOrUndefined(cnt) ? \"\" : cnt;\n if (typeof cnt === 'string' || isNullOrUndefined(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n if (callType === 'clone') {\n ele.appendChild(eleVal.cloneNode(true));\n }\n else {\n ele.appendChild(eleVal);\n eleVal.style.display = '';\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n this.templateCompile(ele, cnt, index);\n }\n }\n else {\n ele.appendChild(cnt);\n }\n if (!isNullOrUndefined(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n };\n Tab.prototype.getTrgContent = function (cntEle, no) {\n var ele;\n if (this.element.classList.contains(CLS_NEST$1)) {\n ele = select('.' + CLS_NEST$1 + '> .' + CLS_CONTENT$1 + ' > #' + CLS_CONTENT$1 + this.tabId + '_' + no, this.element);\n }\n else {\n ele = this.findEle(cntEle.children, CLS_CONTENT$1 + this.tabId + '_' + no);\n }\n return ele;\n };\n Tab.prototype.findEle = function (items, key) {\n var ele;\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === key) {\n ele = items[i];\n break;\n }\n }\n return ele;\n };\n Tab.prototype.isVertical = function () {\n var isVertical = (this.headerPlacement === 'Left' || this.headerPlacement === 'Right') ? true : false;\n this.scrCntClass = (isVertical) ? CLS_VSCRCNT : CLS_HSCRCNT;\n return isVertical;\n };\n Tab.prototype.addVerticalClass = function () {\n if (this.isVertical()) {\n var tbPos = (this.headerPlacement === 'Left') ? CLS_VLEFT : CLS_VRIGHT;\n addClass([this.hdrEle], [CLS_VERTICAL$1, tbPos]);\n if (!this.element.classList.contains(CLS_NEST$1)) {\n addClass([this.element], [CLS_VTAB, tbPos]);\n }\n else {\n addClass([this.hdrEle], [CLS_VTAB, tbPos]);\n }\n }\n if (this.headerPlacement === 'Bottom') {\n addClass([this.hdrEle], [CLS_HBOTTOM]);\n }\n };\n Tab.prototype.updatePopAnimationConfig = function () {\n this.show = { name: (this.isVertical() ? 'FadeIn' : 'SlideDown'), duration: 100 };\n this.hide = { name: (this.isVertical() ? 'FadeOut' : 'SlideUp'), duration: 100 };\n };\n Tab.prototype.changeOrientation = function (place) {\n this.setOrientation(place, this.hdrEle);\n var activeTab = this.hdrEle.querySelector('.' + CLS_ACTIVE$1);\n var isVertical = this.hdrEle.classList.contains(CLS_VERTICAL$1) ? true : false;\n removeClass([this.element], [CLS_VTAB]);\n removeClass([this.hdrEle], [CLS_VERTICAL$1, CLS_VLEFT, CLS_VRIGHT]);\n if (isVertical !== this.isVertical()) {\n this.changeToolbarOrientation();\n if (!isNullOrUndefined(activeTab) && activeTab.classList.contains(CLS_TB_POPUP)) {\n this.popupHandler(activeTab);\n }\n }\n this.addVerticalClass();\n this.setActiveBorder();\n this.focusItem();\n };\n Tab.prototype.focusItem = function () {\n var curActItem = select(' #' + CLS_ITEM$2 + this.tabId + '_' + this.selectedItem, this.hdrEle);\n if (!isNullOrUndefined(curActItem)) {\n curActItem.firstElementChild.focus();\n }\n };\n Tab.prototype.changeToolbarOrientation = function () {\n this.tbObj.setProperties({ height: (this.isVertical() ? '100%' : 'auto'), width: (this.isVertical() ? 'auto' : '100%') }, true);\n this.tbObj.changeOrientation();\n this.updatePopAnimationConfig();\n };\n Tab.prototype.setOrientation = function (place, ele) {\n var headerPos = Array.prototype.indexOf.call(this.element.children, ele);\n var contentPos = Array.prototype.indexOf.call(this.element.children, this.element.querySelector('.' + CLS_CONTENT$1));\n if (place === 'Bottom' && (contentPos > headerPos)) {\n this.element.appendChild(ele);\n }\n else {\n removeClass([ele], [CLS_HBOTTOM]);\n this.element.insertBefore(ele, select('.' + CLS_CONTENT$1, this.element));\n }\n };\n Tab.prototype.setCssClass = function (ele, cls, val) {\n if (cls === '') {\n return;\n }\n var list = cls.split(' ');\n for (var i = 0; i < list.length; i++) {\n if (val) {\n ele.classList.add(list[i]);\n }\n else {\n ele.classList.remove(list[i]);\n }\n }\n };\n Tab.prototype.setContentHeight = function (val) {\n if (this.element.classList.contains(CLS_FILL)) {\n removeClass([this.element], [CLS_FILL]);\n }\n if (isNullOrUndefined(this.cntEle)) {\n return;\n }\n var hdrEle = this.getTabHeader();\n if (this.heightAdjustMode === 'None') {\n if (this.height === 'auto') {\n return;\n }\n else {\n if (!this.isVertical()) {\n setStyleAttribute(this.cntEle, { 'height': (this.element.clientHeight - hdrEle.offsetHeight) + 'px' });\n }\n }\n }\n else if (this.heightAdjustMode === 'Fill') {\n addClass([this.element], [CLS_FILL]);\n setStyleAttribute(this.element, { 'height': '100%' });\n this.cntEle.style.height = 'calc(100% - ' + this.hdrEle.offsetHeight + 'px)';\n }\n else if (this.heightAdjustMode === 'Auto') {\n if (this.isTemplate === true) {\n var cnt = selectAll('.' + CLS_CONTENT$1 + ' > .' + CLS_ITEM$2, this.element);\n for (var i = 0; i < cnt.length; i++) {\n cnt[i].setAttribute('style', 'display:block; visibility: visible');\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(cnt[i]));\n cnt[i].style.removeProperty('display');\n cnt[i].style.removeProperty('visibility');\n }\n }\n else {\n this.cntEle = select('.' + CLS_CONTENT$1, this.element);\n if (val === true) {\n this.cntEle.appendChild(this.createElement('div', {\n id: (CLS_CONTENT$1 + this.tabId + '_' + 0), className: CLS_ITEM$2 + ' ' + CLS_ACTIVE$1,\n attrs: { 'role': 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + 0 }\n }));\n }\n var ele = this.cntEle.children.item(0);\n for (var i = 0; i < this.items.length; i++) {\n this.getContent(ele, this.items[i].content, 'clone', i);\n this.maxHeight = Math.max(this.maxHeight, this.getHeight(ele));\n while (ele.firstChild) {\n ele.removeChild(ele.firstChild);\n }\n }\n if (this.isReact) {\n this.clearTemplate(['content']);\n }\n this.templateEle = [];\n this.getContent(ele, this.items[0].content, 'render', 0);\n if (this.prevIndex !== this.selectedItem) {\n ele.classList.remove(CLS_ACTIVE$1);\n }\n }\n setStyleAttribute(this.cntEle, { 'height': this.maxHeight + 'px' });\n }\n else {\n setStyleAttribute(this.cntEle, { 'height': 'auto' });\n }\n };\n Tab.prototype.getHeight = function (ele) {\n var cs = window.getComputedStyle(ele);\n return ele.offsetHeight + parseFloat(cs.getPropertyValue('padding-top')) + parseFloat(cs.getPropertyValue('padding-bottom')) +\n parseFloat(cs.getPropertyValue('margin-top')) + parseFloat(cs.getPropertyValue('margin-bottom'));\n };\n Tab.prototype.setActiveBorder = function () {\n var trgHdrEle = this.getTabHeader();\n var trg = select('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1, trgHdrEle);\n if (isNullOrUndefined(trg)) {\n return;\n }\n if (!this.reorderActiveTab) {\n if (trg.classList.contains(CLS_TB_POPUP) && !this.bdrLine.classList.contains(CLS_HIDDEN$1)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n }\n if (trgHdrEle && !trgHdrEle.classList.contains(CLS_REORDER_ACTIVE_ITEM)) {\n trgHdrEle.classList.add(CLS_REORDER_ACTIVE_ITEM);\n }\n }\n else if (trgHdrEle) {\n trgHdrEle.classList.remove(CLS_REORDER_ACTIVE_ITEM);\n }\n var root = closest(trg, '.' + CLS_TAB);\n if (this.element !== root) {\n return;\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, trgHdrEle);\n var bar = select('.' + CLS_INDICATOR, trgHdrEle);\n var scrollCnt = select('.' + CLS_TB_ITEMS + ' .' + this.scrCntClass, trgHdrEle);\n if (this.isVertical()) {\n setStyleAttribute(bar, { 'left': '', 'right': '' });\n var tbHeight = (isNullOrUndefined(scrollCnt)) ? this.tbItems.offsetHeight : scrollCnt.offsetHeight;\n if (tbHeight !== 0) {\n setStyleAttribute(bar, { 'top': trg.offsetTop + 'px', 'height': trg.offsetHeight + 'px' });\n }\n else {\n setStyleAttribute(bar, { 'top': 0, 'height': 0 });\n }\n }\n else {\n if (this.overflowMode === 'MultiRow') {\n var top_1 = this.headerPlacement === 'Bottom' ? trg.offsetTop : trg.offsetHeight + trg.offsetTop;\n setStyleAttribute(bar, { 'top': top_1 + 'px', 'height': '' });\n }\n else {\n setStyleAttribute(bar, { 'top': '', 'height': '' });\n }\n var tbWidth = (isNullOrUndefined(scrollCnt)) ? this.tbItems.offsetWidth : scrollCnt.offsetWidth;\n if (tbWidth !== 0) {\n setStyleAttribute(bar, { 'left': trg.offsetLeft + 'px', 'right': tbWidth - (trg.offsetLeft + trg.offsetWidth) + 'px' });\n }\n else {\n setStyleAttribute(bar, { 'left': 'auto', 'right': 'auto' });\n }\n }\n if (!isNullOrUndefined(this.bdrLine) && !trg.classList.contains(CLS_TB_POPUP)) {\n this.bdrLine.classList.remove(CLS_HIDDEN$1);\n }\n };\n Tab.prototype.setActive = function (value, skipDataBind, isInteracted) {\n if (skipDataBind === void 0) { skipDataBind = false; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n var trg = this.tbItem[value];\n if (value < 0 || isNaN(value) || this.tbItem.length === 0) {\n return;\n }\n if (value >= 0 && !skipDataBind) {\n this.allowServerDataBinding = false;\n this.setProperties({ selectedItem: value }, true);\n this.allowServerDataBinding = true;\n if (!this.initRender) {\n this.serverDataBind();\n }\n }\n if (trg.classList.contains(CLS_ACTIVE$1)) {\n this.setActiveBorder();\n return;\n }\n if (!this.isTemplate) {\n attributes(trg.firstElementChild, { 'aria-controls': CLS_CONTENT$1 + this.tabId + '_' + value });\n }\n var id = trg.id;\n this.removeActiveClass();\n trg.classList.add(CLS_ACTIVE$1);\n trg.firstElementChild.setAttribute('aria-selected', 'true');\n var no = Number(this.extIndex(id));\n if (isNullOrUndefined(this.prevActiveEle)) {\n this.prevActiveEle = CLS_CONTENT$1 + this.tabId + '_' + no;\n }\n if (this.isTemplate) {\n if (select('.' + CLS_CONTENT$1, this.element).children.length > 0) {\n var trg_1 = this.findEle(select('.' + CLS_CONTENT$1, this.element).children, CLS_CONTENT$1 + this.tabId + '_' + no);\n if (!isNullOrUndefined(trg_1)) {\n trg_1.classList.add(CLS_ACTIVE$1);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n }\n else {\n this.cntEle = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n var item = this.getTrgContent(this.cntEle, this.extIndex(id));\n if (isNullOrUndefined(item)) {\n this.cntEle.appendChild(this.createElement('div', {\n id: CLS_CONTENT$1 + this.tabId + '_' + this.extIndex(id), className: CLS_ITEM$2 + ' ' + CLS_ACTIVE$1,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + this.tabId + '_' + this.extIndex(id) }\n }));\n var eleTrg = this.getTrgContent(this.cntEle, this.extIndex(id));\n var itemIndex = Array.prototype.indexOf.call(this.itemIndexArray, id);\n this.getContent(eleTrg, this.items[itemIndex].content, 'render', itemIndex);\n }\n else {\n item.classList.add(CLS_ACTIVE$1);\n }\n this.triggerAnimation(id, this.enableAnimation);\n }\n this.setActiveBorder();\n this.refreshItemVisibility(trg);\n if (!this.initRender && !skipDataBind) {\n trg.firstElementChild.focus();\n var eventArg = {\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: trg,\n selectedIndex: value,\n selectedContent: select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.selectingID, this.content),\n isSwiped: this.isSwipeed,\n isInteracted: isInteracted\n };\n this.trigger('selected', eventArg);\n }\n };\n Tab.prototype.setItems = function (items) {\n this.isReplace = true;\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.tbObj.items = this.parseObject(items, 0);\n this.tbObj.dataBind();\n this.isReplace = false;\n };\n Tab.prototype.setRTL = function (value) {\n this.tbObj.enableRtl = value;\n this.tbObj.dataBind();\n this.setCssClass(this.element, CLS_RTL$4, value);\n this.refreshActiveBorder();\n };\n Tab.prototype.refreshActiveBorder = function () {\n if (!isNullOrUndefined(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n }\n this.setActiveBorder();\n };\n Tab.prototype.showPopup = function (config) {\n var tbPop = select('.e-popup.e-toolbar-pop', this.hdrEle);\n if (tbPop.classList.contains('e-popup-close')) {\n var tbPopObj = (tbPop && tbPop.ej2_instances[0]);\n tbPopObj.position.X = (this.headerPlacement === 'Left') ? 'left' : 'right';\n tbPopObj.dataBind();\n tbPopObj.show(config);\n }\n };\n Tab.prototype.bindDraggable = function () {\n var _this = this;\n if (this.allowDragAndDrop) {\n var tabHeader = this.element.querySelector('.' + CLS_HEADER$1);\n if (tabHeader) {\n var items = tabHeader.querySelectorAll('.' + CLS_TB_ITEM);\n items.forEach(function (element) {\n _this.initializeDrag(element);\n });\n }\n }\n };\n Tab.prototype.wireEvents = function () {\n this.bindDraggable();\n window.addEventListener('resize', this.resizeContext);\n EventHandler.add(this.element, 'mouseover', this.hoverHandler, this);\n EventHandler.add(this.element, 'keydown', this.spaceKeyDown, this);\n if (!isNullOrUndefined(this.cntEle)) {\n this.touchModule = new Touch(this.cntEle, { swipe: this.swipeHandler.bind(this) });\n }\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n this.tabKeyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyHandler.bind(this),\n keyConfigs: { openPopup: 'shift+f10', tab: 'tab', shiftTab: 'shift+tab' },\n eventName: 'keydown'\n });\n };\n Tab.prototype.unWireEvents = function () {\n if (!isNullOrUndefined(this.keyModule)) {\n this.keyModule.destroy();\n }\n if (!isNullOrUndefined(this.tabKeyModule)) {\n this.tabKeyModule.destroy();\n }\n if (!isNullOrUndefined(this.cntEle) && !isNullOrUndefined(this.touchModule)) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n window.removeEventListener('resize', this.resizeContext);\n EventHandler.remove(this.element, 'mouseover', this.hoverHandler);\n EventHandler.remove(this.element, 'keydown', this.spaceKeyDown);\n this.element.classList.remove(CLS_RTL$4);\n this.element.classList.remove(CLS_FOCUS);\n };\n Tab.prototype.clickHandler = function (args) {\n this.element.classList.remove(CLS_FOCUS);\n var trg = args.originalEvent.target;\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n var trgIndex = this.getEleIndex(trgParent);\n if (trg.classList.contains(CLS_ICON_CLOSE)) {\n this.removeTab(trgIndex);\n }\n else if (this.isVertical() && closest(trg, '.' + CLS_HOR_NAV)) {\n this.showPopup(this.show);\n }\n else {\n this.isPopup = false;\n if (!isNullOrUndefined(trgParent) && (trgIndex !== this.selectedItem || trgIndex !== this.prevIndex)) {\n this.selectTab(trgIndex, args.originalEvent, true);\n }\n }\n };\n Tab.prototype.swipeHandler = function (e) {\n if (e.velocity < 3 && isNullOrUndefined(e.originalEvent.changedTouches)) {\n return;\n }\n if (this.isNested) {\n this.element.setAttribute('data-swipe', 'true');\n }\n var nestedTab = this.element.querySelector('[data-swipe=\"true\"]');\n if (nestedTab) {\n nestedTab.removeAttribute('data-swipe');\n return;\n }\n this.isSwipeed = true;\n if (e.swipeDirection === 'Right' && this.selectedItem !== 0) {\n for (var k = this.selectedItem - 1; k >= 0; k--) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN$1)) {\n this.selectTab(k, null, true);\n break;\n }\n }\n }\n else if (e.swipeDirection === 'Left' && (this.selectedItem !== selectAll('.' + CLS_TB_ITEM, this.element).length - 1)) {\n for (var i = this.selectedItem + 1; i < this.tbItem.length; i++) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN$1)) {\n this.selectTab(i, null, true);\n break;\n }\n }\n }\n this.isSwipeed = false;\n };\n Tab.prototype.spaceKeyDown = function (e) {\n if ((e.keyCode === 32 && e.which === 32) || (e.keyCode === 35 && e.which === 35)) {\n var clstHead = closest(e.target, '.' + CLS_HEADER$1);\n if (!isNullOrUndefined(clstHead)) {\n e.preventDefault();\n }\n }\n };\n Tab.prototype.keyHandler = function (e) {\n if (this.element.classList.contains(CLS_DISABLE$4)) {\n return;\n }\n this.element.classList.add(CLS_FOCUS);\n var trg = e.target;\n var tabHeader = this.getTabHeader();\n var actEle = select('.' + CLS_ACTIVE$1, tabHeader);\n this.popEle = select('.' + CLS_TB_POP, tabHeader);\n if (!isNullOrUndefined(this.popEle)) {\n this.popObj = this.popEle.ej2_instances[0];\n }\n var item = closest(document.activeElement, '.' + CLS_TB_ITEM);\n var trgParent = closest(trg, '.' + CLS_TB_ITEM);\n switch (e.action) {\n case 'space':\n case 'enter':\n if (trg.parentElement.classList.contains(CLS_DISABLE$4)) {\n return;\n }\n if (e.action === 'enter' && trg.classList.contains('e-hor-nav')) {\n this.showPopup(this.show);\n break;\n }\n this.keyPressed(trg);\n break;\n case 'tab':\n case 'shiftTab':\n if (trg.classList.contains(CLS_WRAP)\n && closest(trg, '.' + CLS_TB_ITEM).classList.contains(CLS_ACTIVE$1) === false) {\n trg.setAttribute('tabindex', trg.getAttribute('data-tabindex'));\n }\n if (this.popObj && isVisible(this.popObj.element)) {\n this.popObj.hide(this.hide);\n }\n if (!isNullOrUndefined(actEle) && actEle.children.item(0).getAttribute('tabindex') === '-1') {\n actEle.children.item(0).setAttribute('tabindex', '0');\n }\n break;\n case 'moveLeft':\n case 'moveRight':\n if (!isNullOrUndefined(item)) {\n this.refreshItemVisibility(item);\n }\n break;\n case 'openPopup':\n e.preventDefault();\n if (!isNullOrUndefined(this.popEle) && this.popEle.classList.contains(CLS_POPUP_CLOSE)) {\n this.popObj.show(this.show);\n }\n break;\n case 'delete':\n if (this.showCloseButton === true && !isNullOrUndefined(trgParent)) {\n var nxtSib = trgParent.nextSibling;\n if (!isNullOrUndefined(nxtSib) && nxtSib.classList.contains(CLS_TB_ITEM)) {\n nxtSib.firstElementChild.focus();\n }\n this.removeTab(this.getEleIndex(trgParent));\n }\n this.setActiveBorder();\n break;\n }\n };\n Tab.prototype.refreshItemVisibility = function (target) {\n var scrCnt = select('.' + this.scrCntClass, this.tbItems);\n if (!this.isVertical() && !isNullOrUndefined(scrCnt)) {\n var scrBar = select('.e-hscroll-bar', this.tbItems);\n var scrStart = scrBar.scrollLeft;\n var scrEnd = scrStart + scrBar.offsetWidth;\n var eleStart = target.offsetLeft;\n var eleWidth = target.offsetWidth;\n var eleEnd = target.offsetLeft + target.offsetWidth;\n if ((scrStart < eleStart) && (scrEnd < eleEnd)) {\n var eleViewRange = scrEnd - eleStart;\n scrBar.scrollLeft = scrStart + (eleWidth - eleViewRange);\n }\n else {\n if ((scrStart > eleStart) && (scrEnd > eleEnd)) {\n var eleViewRange = eleEnd - scrStart;\n scrBar.scrollLeft = scrStart - (eleWidth - eleViewRange);\n }\n }\n }\n else {\n return;\n }\n };\n Tab.prototype.getIndexFromEle = function (id) {\n return parseInt(id.substring(id.lastIndexOf('_') + 1), 10);\n };\n Tab.prototype.hoverHandler = function (e) {\n var trg = e.target;\n if (!isNullOrUndefined(trg.classList) && trg.classList.contains(CLS_ICON_CLOSE)) {\n trg.setAttribute('title', new L10n('tab', { closeButtonTitle: this.title }, this.locale).getConstant('closeButtonTitle'));\n }\n };\n Tab.prototype.evalOnPropertyChangeItems = function (newProp, oldProp) {\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProp = Object.keys(newProp.items);\n for (var i = 0; i < changedProp.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[i], 10);\n var properties = Object.keys(newProp.items[index]);\n for (var j = 0; j < properties.length; j++) {\n var oldVal = Object(oldProp.items[index])[properties[j]];\n var newVal = Object(newProp.items[index])[properties[j]];\n var hdr = this.element.querySelectorAll('.' + CLS_TB_ITEM)[index];\n var itemIndex = void 0;\n if (hdr && !isNullOrUndefined(hdr.id) && hdr.id !== '') {\n itemIndex = this.getIndexFromEle(hdr.id);\n }\n else {\n itemIndex = index;\n }\n var hdrItem = select('.' + CLS_TB_ITEMS + ' #' + CLS_ITEM$2 + this.tabId + '_' + itemIndex, this.element);\n var cntItem = select('.' + CLS_CONTENT$1 + ' #' + CLS_CONTENT$1 + this.tabId + '_' + itemIndex, this.element);\n if (properties[j] === 'header' || properties[j] === 'headerTemplate') {\n var icon = (isNullOrUndefined(this.items[index].header) ||\n isNullOrUndefined(this.items[index].header.iconCss)) ? '' : this.items[index].header.iconCss;\n var textVal = this.items[index].headerTemplate || this.items[index].header.text;\n if ((textVal === '') && (icon === '')) {\n this.removeTab(index);\n }\n else {\n this.tbId = hdr.id;\n var arr = [];\n arr.push(this.items[index]);\n this.items.splice(index, 1);\n this.itemIndexArray.splice(index, 1);\n this.tbObj.items.splice(index, 1);\n var isHiddenEle = hdrItem.classList.contains(CLS_HIDDEN$1);\n detach(hdrItem);\n this.isReplace = true;\n this.addTab(arr, index);\n if (isHiddenEle) {\n this.hideTab(index);\n }\n this.isReplace = false;\n }\n }\n if (properties[j] === 'content' && !isNullOrUndefined(cntItem)) {\n var strVal = typeof newVal === 'string' || isNullOrUndefined(newVal.innerHTML);\n if (strVal && (newVal[0] === '.' || newVal[0] === '#') && newVal.length) {\n var eleVal = document.querySelector(newVal);\n cntItem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else if (newVal === '' && oldVal[0] === '#') {\n document.body.appendChild(this.element.querySelector(oldVal)).style.display = 'none';\n cntItem.innerHTML = newVal;\n }\n else if (this.isReact) {\n cntItem.innerHTML = '';\n this.templateCompile(cntItem, newVal, index);\n }\n else if (typeof newVal !== 'function') {\n cntItem.innerHTML = newVal;\n }\n }\n if (properties[j] === 'cssClass') {\n if (!isNullOrUndefined(hdrItem)) {\n hdrItem.classList.remove(oldVal);\n hdrItem.classList.add(newVal);\n }\n if (!isNullOrUndefined(cntItem)) {\n cntItem.classList.remove(oldVal);\n cntItem.classList.add(newVal);\n }\n }\n if (properties[j] === 'disabled') {\n this.enableTab(index, ((newVal === true) ? false : true));\n }\n if (properties[j] === 'visible') {\n this.hideTab(index, ((newVal === true) ? false : true));\n }\n }\n }\n }\n else {\n this.lastIndex = 0;\n if (isNullOrUndefined(this.tbObj)) {\n this.reRenderItems();\n }\n else {\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.setItems(newProp.items);\n if (this.templateEle.length > 0) {\n this.expTemplateContent();\n }\n this.templateEle = [];\n var selectElement = select('.' + CLS_TAB + ' > .' + CLS_CONTENT$1, this.element);\n while (selectElement.firstElementChild) {\n detach(selectElement.firstElementChild);\n }\n this.select(this.selectedItem);\n this.draggableItems = [];\n this.bindDraggable();\n }\n }\n };\n Tab.prototype.initializeDrag = function (target) {\n var _this = this;\n var dragObj = new Draggable(target, {\n dragArea: this.dragArea,\n dragTarget: '.' + CLS_TB_ITEM,\n clone: true,\n helper: this.helper.bind(this),\n dragStart: this.itemDragStart.bind(this),\n drag: function (e) {\n var dragIndex = _this.getEleIndex(_this.dragItem);\n var dropIndex;\n var dropItem;\n var dragArgs = {\n draggedItem: _this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: e.target.closest('.' + CLS_TB_ITEM),\n clonedElement: _this.cloneElement,\n index: dragIndex\n };\n if (!isNullOrUndefined(e.target.closest('.' + CLS_TAB)) && !e.target.closest('.' + CLS_TAB).isEqualNode(_this.element) &&\n _this.dragArea !== '.' + CLS_HEADER$1) {\n _this.trigger('dragging', dragArgs);\n }\n else {\n if (!(e.target.closest(_this.dragArea)) && _this.overflowMode !== 'Popup') {\n document.body.style.cursor = 'not-allowed';\n addClass([_this.cloneElement], CLS_HIDDEN$1);\n if (_this.dragItem.classList.contains(CLS_HIDDEN$1)) {\n removeClass([_this.dragItem], CLS_HIDDEN$1);\n }\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n }\n else {\n document.body.style.cursor = '';\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n if (_this.cloneElement.classList.contains(CLS_HIDDEN$1)) {\n removeClass([_this.cloneElement], CLS_HIDDEN$1);\n }\n }\n if (_this.overflowMode === 'Scrollable' && !isNullOrUndefined(_this.element.querySelector('.e-hscroll'))) {\n var scrollRightNavEle = _this.element.querySelector('.e-scroll-right-nav');\n var scrollLeftNavEle = _this.element.querySelector('.e-scroll-left-nav');\n var hscrollBar = _this.element.querySelector('.e-hscroll-bar');\n if (!isNullOrUndefined(scrollRightNavEle) && Math.abs((scrollRightNavEle.offsetWidth / 2) +\n scrollRightNavEle.offsetLeft) > _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n hscrollBar.scrollLeft -= 10;\n }\n if (!isNullOrUndefined(scrollLeftNavEle) && Math.abs((scrollLeftNavEle.offsetLeft + scrollLeftNavEle.offsetWidth) -\n _this.cloneElement.offsetLeft) > (scrollLeftNavEle.offsetWidth / 2)) {\n hscrollBar.scrollLeft += 10;\n }\n }\n _this.cloneElement.style.pointerEvents = 'none';\n dropItem = closest(e.target, '.' + CLS_TB_ITEM + '.e-draggable');\n var scrollContentWidth = 0;\n if (_this.overflowMode === 'Scrollable' && !isNullOrUndefined(_this.element.querySelector('.e-hscroll'))) {\n scrollContentWidth = _this.element.querySelector('.e-hscroll-content').offsetWidth;\n }\n if (dropItem != null && !dropItem.isSameNode(_this.dragItem) &&\n dropItem.closest('.' + CLS_TAB).isSameNode(_this.dragItem.closest('.' + CLS_TAB))) {\n dropIndex = _this.getEleIndex(dropItem);\n if (dropIndex < dragIndex &&\n (Math.abs((dropItem.offsetLeft + dropItem.offsetWidth) -\n _this.cloneElement.offsetLeft) > (dropItem.offsetWidth / 2))) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n if (dropIndex > dragIndex &&\n (Math.abs(dropItem.offsetWidth / 2) + dropItem.offsetLeft -\n scrollContentWidth) < _this.cloneElement.offsetLeft + _this.cloneElement.offsetWidth) {\n _this.dragAction(dropItem, dragIndex, dropIndex);\n }\n }\n _this.droppedIndex = _this.getEleIndex(_this.dragItem);\n _this.trigger('dragging', dragArgs);\n }\n },\n dragStop: this.itemDragStop.bind(this)\n });\n this.draggableItems.push(dragObj);\n };\n Tab.prototype.helper = function (e) {\n this.cloneElement = this.createElement('div');\n if (e.element) {\n this.cloneElement = (e.element.cloneNode(true));\n addClass([this.cloneElement], 'e-tab-clone-element');\n if (this.element.querySelector('.' + CLS_HEADER$1).classList.contains(CLS_CLOSE_SHOW)) {\n addClass([this.cloneElement], CLS_CLOSE_SHOW);\n }\n removeClass([this.cloneElement.querySelector('.' + CLS_WRAP)], 'e-ripple');\n if (!isNullOrUndefined(this.cloneElement.querySelector('.e-ripple-element'))) {\n remove(this.cloneElement.querySelector('.e-ripple-element'));\n }\n document.body.appendChild(this.cloneElement);\n }\n return this.cloneElement;\n };\n Tab.prototype.itemDragStart = function (e) {\n var _this = this;\n this.draggingItems = this.items.map(function (x) { return x; });\n this.dragItem = e.element;\n var dragArgs = {\n draggedItem: e.element,\n event: e.event,\n target: e.target,\n droppedItem: null,\n index: this.getEleIndex(this.dragItem),\n clonedElement: this.cloneElement,\n cancel: false\n };\n this.trigger('onDragStart', dragArgs, function (tabitemDragArgs) {\n if (tabitemDragArgs.cancel) {\n detach(_this.cloneElement);\n }\n else {\n _this.removeActiveClass();\n addClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN$1);\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'hidden';\n }\n });\n };\n Tab.prototype.dragAction = function (dropItem, dragsIndex, dropIndex) {\n if (this.items.length > 0) {\n var item = this.draggingItems[dragsIndex];\n this.draggingItems.splice(dragsIndex, 1);\n this.draggingItems.splice(dropIndex, 0, item);\n }\n if (this.overflowMode === 'MultiRow') {\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n if (dragsIndex > dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n if (dropItem.isSameNode(dropItem.parentElement.lastChild)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(dropItem.parentElement.lastChild, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement.lastChild), this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n var lastEle = (dropItem.parentElement).lastChild;\n if (dropItem.isSameNode(lastEle)) {\n var popupContainer = this.dragItem.parentNode;\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n popupContainer.insertBefore(lastEle, popupContainer.childNodes[0]);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n if (dragsIndex < dropIndex) {\n if (!(this.dragItem.parentElement).isSameNode(dropItem.parentElement)) {\n if (this.overflowMode === 'Extended') {\n this.dragItem.parentElement.appendChild(dropItem.parentElement.firstElementChild);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem.nextSibling);\n }\n else {\n this.dragItem.parentNode.insertBefore((dropItem.parentElement).lastChild, this.dragItem.parentElement.childNodes[0]);\n dropItem.parentNode.insertBefore(this.dragItem, dropItem);\n }\n }\n else {\n this.dragItem.parentNode.insertBefore(this.dragItem, dropItem.nextElementSibling);\n }\n }\n };\n Tab.prototype.itemDragStop = function (e) {\n var _this = this;\n detach(this.cloneElement);\n this.cloneElement = null;\n this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = 'visible';\n document.body.style.cursor = '';\n var dragStopArgs = {\n draggedItem: this.dragItem,\n event: e.event,\n target: e.target,\n droppedItem: this.tbItem[this.droppedIndex],\n clonedElement: null,\n index: this.droppedIndex,\n cancel: false\n };\n this.trigger('dragged', dragStopArgs, function (tabItemDropArgs) {\n if (tabItemDropArgs.cancel) {\n _this.refresh();\n }\n else {\n if (_this.items.length > 0 && _this.draggingItems.length > 0) {\n _this.items = _this.draggingItems;\n _this.selectedItem = _this.droppedIndex;\n _this.refresh();\n }\n else {\n _this.dragItem.querySelector('.' + CLS_WRAP).style.visibility = '';\n removeClass([_this.tbItems.querySelector('.' + CLS_INDICATOR)], CLS_HIDDEN$1);\n _this.selectTab(_this.droppedIndex, null, true);\n }\n }\n });\n this.dragItem = null;\n };\n /**\n * Enables or disables the specified Tab item. On passing value as `false`, the item will be disabled.\n *\n * @param {number} index - Index value of target Tab item.\n * @param {boolean} value - Boolean value that determines whether the command should be enabled or disabled.\n * By default, isEnable is true.\n * @returns {void}.\n */\n Tab.prototype.enableTab = function (index, value) {\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNullOrUndefined(tbItems)) {\n return;\n }\n if (value === true) {\n tbItems.classList.remove(CLS_DISABLE$4, CLS_OVERLAY$2);\n tbItems.firstElementChild.setAttribute('tabindex', tbItems.firstElementChild.getAttribute('data-tabindex'));\n }\n else {\n tbItems.classList.add(CLS_DISABLE$4, CLS_OVERLAY$2);\n tbItems.firstElementChild.removeAttribute('tabindex');\n if (tbItems.classList.contains(CLS_ACTIVE$1)) {\n this.select(index + 1);\n }\n }\n if (!isNullOrUndefined(this.items[index])) {\n this.items[index].disabled = !value;\n this.dataBind();\n }\n tbItems.setAttribute('aria-disabled', (value === true) ? 'false' : 'true');\n };\n /**\n * Adds new items to the Tab that accepts an array as Tab items.\n *\n * @param {TabItemModel[]} items - An array of item that is added to the Tab.\n * @param {number} index - Number value that determines where the items to be added. By default, index is 0.\n * @returns {void}.\n */\n Tab.prototype.addTab = function (items, index) {\n var _this = this;\n var addArgs = { addedItems: items, cancel: false };\n if (!this.isReplace) {\n this.trigger('adding', addArgs, function (tabAddingArgs) {\n if (!tabAddingArgs.cancel) {\n _this.addingTabContent(items, index);\n }\n });\n }\n else {\n this.addingTabContent(items, index);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Tab.prototype.addingTabContent = function (items, index) {\n var _this = this;\n var lastEleIndex = 0;\n this.hdrEle = select('.' + CLS_HEADER$1, this.element);\n if (isNullOrUndefined(this.hdrEle)) {\n this.items = items;\n this.reRenderItems();\n this.bindDraggable();\n }\n else {\n var itemsCount = selectAll('.e-tab-header .' + CLS_TB_ITEM, this.element).length;\n if (itemsCount !== 0) {\n lastEleIndex = this.lastIndex + 1;\n }\n if (isNullOrUndefined(index)) {\n index = itemsCount - 1;\n }\n if (itemsCount < index || index < 0 || isNaN(index)) {\n return;\n }\n if (itemsCount === 0 && !isNullOrUndefined(this.hdrEle)) {\n this.hdrEle.style.display = '';\n }\n if (!isNullOrUndefined(this.bdrLine)) {\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n }\n this.tbItems = select('.' + CLS_TB_ITEMS, this.getTabHeader());\n this.isAdd = true;\n var tabItems_2 = this.parseObject(items, index);\n this.isAdd = false;\n var i_1 = 0;\n var textValue_1;\n items.forEach(function (item, place) {\n textValue_1 = item.headerTemplate || item.header.text;\n if (!(isNullOrUndefined(item.headerTemplate || item.header) || isNullOrUndefined(textValue_1) ||\n (textValue_1.length === 0) && !isNullOrUndefined(item.header) && isNullOrUndefined(item.header.iconCss))) {\n if (tabItems_2[place]) {\n if (isNullOrUndefined(item.id)) {\n item.id = CLS_ITEM$2 + _this.tabId + '_' + TABITEMPREFIX + (lastEleIndex + place).toString();\n }\n tabItems_2[place].htmlAttributes['data-id'] = item.id;\n }\n _this.items.splice((index + i_1), 0, item);\n i_1++;\n }\n if (_this.isTemplate && !isNullOrUndefined(item.header) && !isNullOrUndefined(item.header.text)) {\n var no = lastEleIndex + place;\n var ele = _this.createElement('div', {\n id: CLS_CONTENT$1 + _this.tabId + '_' + no, className: CLS_ITEM$2,\n attrs: { role: 'tabpanel', 'aria-labelledby': CLS_ITEM$2 + '_' + no }\n });\n _this.cntEle.insertBefore(ele, _this.cntEle.children[(index + place)]);\n var eleTrg = _this.getTrgContent(_this.cntEle, no.toString());\n _this.getContent(eleTrg, item.content, 'render', index);\n }\n });\n this.tbObj.addItems(tabItems_2, index);\n if (!this.isReplace) {\n this.trigger('added', { addedItems: items });\n }\n if (this.selectedItem === index) {\n this.select(index);\n }\n else {\n this.setActiveBorder();\n this.tbItem = selectAll('.' + CLS_TB_ITEM, this.getTabHeader());\n }\n this.bindDraggable();\n }\n };\n /**\n * Removes the items in the Tab from the specified index.\n *\n * @param {number} index - Index of target item that is going to be removed.\n * @returns {void}.\n */\n Tab.prototype.removeTab = function (index) {\n var _this = this;\n var trg = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNullOrUndefined(trg)) {\n return;\n }\n var removeArgs = { removedItem: trg, removedIndex: index, cancel: false };\n this.trigger('removing', removeArgs, function (tabRemovingArgs) {\n if (!tabRemovingArgs.cancel) {\n _this.tbObj.removeItems(index);\n if (_this.allowDragAndDrop && (index !== Array.prototype.indexOf.call(_this.itemIndexArray, trg.id))) {\n index = Array.prototype.indexOf.call(_this.itemIndexArray, trg.id);\n }\n var targetEleIndex = _this.itemIndexArray.indexOf(trg.id);\n _this.items.splice(targetEleIndex, 1);\n _this.itemIndexArray.splice(targetEleIndex, 1);\n _this.refreshActiveBorder();\n var cntTrg = select('#' + CLS_CONTENT$1 + _this.tabId + '_' + _this.extIndex(trg.id), select('.' + CLS_CONTENT$1, _this.element));\n if (!isNullOrUndefined(cntTrg)) {\n var registeredTemplate = _this.registeredTemplate;\n if (registeredTemplate && registeredTemplate.content) {\n var templateToClear = [];\n for (var i = 0; i < registeredTemplate.content.length; i++) {\n var registeredItem = registeredTemplate.content[i].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM$2);\n if (!isNullOrUndefined(registeredItem) && closestItem === cntTrg) {\n templateToClear.push(registeredTemplate.content[i]);\n break;\n }\n }\n if (templateToClear.length > 0) {\n _this.clearTemplate(['content'], templateToClear);\n }\n }\n detach(cntTrg);\n }\n _this.trigger('removed', tabRemovingArgs);\n if (_this.draggableItems && _this.draggableItems.length > 0) {\n _this.draggableItems[index].destroy();\n _this.draggableItems[index] = null;\n _this.draggableItems.splice(index, 1);\n }\n if (trg.classList.contains(CLS_ACTIVE$1)) {\n index = (index > selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_TB_POPUP + ')', _this.element).length - 1) ? index - 1 : index;\n _this.enableAnimation = false;\n _this.selectedItem = index;\n _this.select(index);\n }\n else if (index !== _this.selectedItem) {\n if (index < _this.selectedItem) {\n index = _this.itemIndexArray.indexOf(_this.tbItem[_this.selectedItem].id);\n _this.setProperties({ selectedItem: index > -1 ? index : _this.selectedItem }, true);\n _this.prevIndex = _this.selectedItem;\n }\n _this.tbItem = selectAll('.' + CLS_TB_ITEM, _this.getTabHeader());\n }\n if (selectAll('.' + CLS_TB_ITEM, _this.element).length === 0) {\n _this.hdrEle.style.display = 'none';\n }\n _this.enableAnimation = true;\n }\n });\n };\n /**\n * Shows or hides the Tab that is in the specified index.\n *\n * @param {number} index - Index value of target item.\n * @param {boolean} value - Based on this Boolean value, item will be hide (false) or show (true). By default, value is true.\n * @returns {void}.\n */\n Tab.prototype.hideTab = function (index, value) {\n var items;\n var item = selectAll('.' + CLS_TB_ITEM, this.element)[index];\n if (isNullOrUndefined(item)) {\n return;\n }\n if (isNullOrUndefined(value)) {\n value = true;\n }\n this.bdrLine.classList.add(CLS_HIDDEN$1);\n if (value === true) {\n item.classList.add(CLS_HIDDEN$1);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN$1 + ')', this.tbItems);\n if (items.length !== 0 && item.classList.contains(CLS_ACTIVE$1)) {\n if (index !== 0) {\n for (var i = index - 1; i >= 0; i--) {\n if (!this.tbItem[i].classList.contains(CLS_HIDDEN$1)) {\n this.select(i);\n break;\n }\n else if (i === 0) {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN$1)) {\n this.select(k);\n break;\n }\n }\n }\n }\n }\n else {\n for (var k = index + 1; k < this.tbItem.length; k++) {\n if (!this.tbItem[k].classList.contains(CLS_HIDDEN$1)) {\n this.select(k);\n break;\n }\n }\n }\n }\n else if (items.length === 0) {\n this.element.classList.add(CLS_HIDDEN$1);\n }\n }\n else {\n this.element.classList.remove(CLS_HIDDEN$1);\n items = selectAll('.' + CLS_TB_ITEM + ':not(.' + CLS_HIDDEN$1 + ')', this.tbItems);\n item.classList.remove(CLS_HIDDEN$1);\n if (items.length === 0) {\n this.select(index);\n }\n }\n this.setActiveBorder();\n item.setAttribute('aria-hidden', '' + value);\n if (this.overflowMode === 'Popup' && this.tbObj) {\n this.tbObj.refreshOverflow();\n }\n };\n Tab.prototype.selectTab = function (args, event, isInteracted) {\n if (event === void 0) { event = null; }\n if (isInteracted === void 0) { isInteracted = false; }\n this.isInteracted = isInteracted;\n this.select(args, event);\n };\n /**\n * Specifies the index or HTMLElement to select an item from the Tab.\n *\n * @param {number | HTMLElement} args - Index or DOM element is used for selecting an item from the Tab.\n * @param {Event} event - An event which takes place in DOM.\n * @returns {void}\n */\n Tab.prototype.select = function (args, event) {\n var _this = this;\n var tabHeader = this.getTabHeader();\n this.tbItems = select('.' + CLS_TB_ITEMS, tabHeader);\n this.tbItem = selectAll('.' + CLS_TB_ITEM, tabHeader);\n this.content = select('.' + CLS_CONTENT$1, this.element);\n this.prevItem = this.tbItem[this.prevIndex];\n if (isNullOrUndefined(this.selectedItem) || (this.selectedItem < 0) || (this.tbItem.length <= this.selectedItem) || isNaN(this.selectedItem)) {\n this.selectedItem = 0;\n }\n else {\n this.selectedID = this.extIndex(this.tbItem[this.selectedItem].id);\n }\n var trg = this.tbItem[args];\n if (isNullOrUndefined(trg)) {\n this.selectedID = '0';\n }\n else {\n this.selectingID = this.extIndex(trg.id);\n }\n if (!isNullOrUndefined(this.prevItem) && !this.prevItem.classList.contains(CLS_DISABLE$4)) {\n this.prevItem.children.item(0).setAttribute('tabindex', this.prevItem.firstElementChild.getAttribute('tabindex'));\n }\n var eventArg = {\n event: event,\n previousItem: this.prevItem,\n previousIndex: this.prevIndex,\n selectedItem: this.tbItem[this.selectedItem],\n selectedIndex: this.selectedItem,\n selectedContent: !isNullOrUndefined(this.content) ?\n select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.selectedID, this.content) : null,\n selectingItem: trg,\n selectingIndex: args,\n selectingContent: !isNullOrUndefined(this.content) ?\n select('#' + CLS_CONTENT$1 + this.tabId + '_' + this.selectingID, this.content) : null,\n isSwiped: this.isSwipeed,\n isInteracted: this.isInteracted,\n cancel: false\n };\n if (!this.initRender) {\n this.trigger('selecting', eventArg, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.selectingContent(args, _this.isInteracted);\n }\n });\n }\n else {\n this.selectingContent(args, this.isInteracted);\n }\n this.isInteracted = false;\n };\n Tab.prototype.selectingContent = function (args, isInteracted) {\n if (typeof args === 'number') {\n if (!isNullOrUndefined(this.tbItem[args]) && (this.tbItem[args].classList.contains(CLS_DISABLE$4) ||\n this.tbItem[args].classList.contains(CLS_HIDDEN$1))) {\n for (var i = args + 1; i < this.items.length; i++) {\n if (this.items[i].disabled === false && this.items[i].visible === true) {\n args = i;\n break;\n }\n else {\n args = 0;\n }\n }\n }\n if (this.tbItem.length > args && args >= 0 && !isNaN(args)) {\n this.prevIndex = this.selectedItem;\n this.prevItem = this.tbItem[this.prevIndex];\n if (this.tbItem[args].classList.contains(CLS_TB_POPUP) && this.reorderActiveTab) {\n this.setActive(this.popupHandler(this.tbItem[args]), null, isInteracted);\n if ((!isNullOrUndefined(this.items) && this.items.length > 0) && this.allowDragAndDrop) {\n this.tbItem = selectAll('.' + CLS_TB_ITEMS + ' .' + CLS_TB_ITEM, this.hdrEle);\n var item = this.items[args];\n this.items.splice(args, 1);\n this.items.splice(this.tbItem.length - 1, 0, item);\n var itemId = this.itemIndexArray[args];\n this.itemIndexArray.splice(args, 1);\n this.itemIndexArray.splice(this.tbItem.length - 1, 0, itemId);\n }\n }\n else {\n this.setActive(args, null, isInteracted);\n }\n }\n else {\n this.setActive(0, null, isInteracted);\n }\n }\n else if (args instanceof (HTMLElement)) {\n this.setActive(this.getEleIndex(args), null, isInteracted);\n }\n };\n /**\n * Gets the item index from the Tab.\n *\n * @param {string} tabItemId - Item ID is used for getting index from the Tab.\n * @returns {number} - It returns item index.\n */\n Tab.prototype.getItemIndex = function (tabItemId) {\n var tabIndex;\n for (var i = 0; i < this.tbItem.length; i++) {\n var value = this.tbItem[i].getAttribute('data-id');\n if (tabItemId === value) {\n tabIndex = i;\n break;\n }\n }\n return tabIndex;\n };\n /**\n * Specifies the value to disable/enable the Tab component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Tab will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Tab.prototype.disable = function (value) {\n this.setCssClass(this.element, CLS_DISABLE$4, value);\n this.element.setAttribute('aria-disabled', '' + value);\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - It returns the persisted state.\n */\n Tab.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedItem', 'actEleId']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n Tab.prototype.getModuleName = function () {\n return 'tab';\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {TabModel} newProp - It contains the new value of data.\n * @param {TabModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n Tab.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { width: formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { height: formatUnit(newProp.height) });\n this.setContentHeight(false);\n break;\n case 'cssClass':\n var headerEle = this.element.querySelector('.' + CLS_HEADER$1);\n if (oldProp.cssClass !== '' && !isNullOrUndefined(oldProp.cssClass)) {\n this.setCssClass(this.element, oldProp.cssClass, false);\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, oldProp.cssClass, false);\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n else {\n this.setCssClass(this.element, newProp.cssClass, true);\n if (!isNullOrUndefined(headerEle)) {\n this.setCssClass(headerEle, newProp.cssClass, true);\n }\n }\n break;\n case 'items':\n this.evalOnPropertyChangeItems(newProp, oldProp);\n break;\n case 'showCloseButton':\n this.setCloseButton(newProp.showCloseButton);\n break;\n case 'reorderActiveTab':\n this.refreshActiveTabBorder();\n break;\n case 'selectedItem':\n this.selectedItem = oldProp.selectedItem;\n this.select(newProp.selectedItem);\n break;\n case 'headerPlacement':\n this.changeOrientation(newProp.headerPlacement);\n break;\n case 'enableRtl':\n this.setRTL(newProp.enableRtl);\n break;\n case 'overflowMode':\n this.tbObj.overflowMode = newProp.overflowMode;\n this.tbObj.dataBind();\n this.refreshActiveTabBorder();\n break;\n case 'heightAdjustMode':\n this.setContentHeight(false);\n this.select(this.selectedItem);\n break;\n case 'scrollStep':\n if (this.tbObj) {\n this.tbObj.scrollStep = this.scrollStep;\n }\n break;\n case 'allowDragAndDrop':\n this.bindDraggable();\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.draggableItems.forEach(function (item) {\n item.dragArea = _this.dragArea;\n });\n this.refresh();\n }\n break;\n }\n }\n };\n /**\n * To refresh the active tab contents.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTab = function () {\n if (this.isReact && this.isTemplate) {\n this.clearTemplate();\n }\n if (!this.isTemplate) {\n if (this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1)) {\n detach(this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1).children[0]);\n detach(this.element.querySelector('.' + CLS_CONTENT$1).querySelector('.' + CLS_ACTIVE$1).children[0]);\n var item = this.items[this.selectedItem];\n var pos = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconPosition)) ? '' : item.header.iconPosition;\n var css = (isNullOrUndefined(item.header) || isNullOrUndefined(item.header.iconCss)) ? '' : item.header.iconCss;\n var text = item.headerTemplate || item.header.text;\n var txtWrap = this.createElement('div', { className: CLS_TEXT, attrs: { 'role': 'presentation' } });\n if (!isNullOrUndefined(text.tagName)) {\n txtWrap.appendChild(text);\n }\n else {\n this.headerTextCompile(txtWrap, text, this.selectedItem);\n }\n var tEle = void 0;\n var icon = this.createElement('span', {\n className: CLS_ICONS + ' ' + CLS_TAB_ICON + ' ' + CLS_ICON + '-' + pos + ' ' + css\n });\n var tConts = this.createElement('div', { className: CLS_TEXT_WRAP });\n tConts.appendChild(txtWrap);\n if ((text !== '' && text !== undefined) && css !== '') {\n if ((pos === 'left' || pos === 'top')) {\n tConts.insertBefore(icon, tConts.firstElementChild);\n }\n else {\n tConts.appendChild(icon);\n }\n tEle = txtWrap;\n this.isIconAlone = false;\n }\n else {\n tEle = ((css === '') ? txtWrap : icon);\n if (tEle === icon) {\n detach(txtWrap);\n tConts.appendChild(icon);\n this.isIconAlone = true;\n }\n }\n var tabIndex = isNullOrUndefined(item.tabIndex) ? '-1' : item.tabIndex.toString();\n var wrapAtt = (item.disabled) ? {} : { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-selected': 'true' };\n tConts.appendChild(this.btnCls.cloneNode(true));\n var wraper = this.createElement('div', { className: CLS_WRAP, attrs: wrapAtt });\n wraper.appendChild(tConts);\n if (pos === 'top' || pos === 'bottom') {\n this.element.classList.add('e-vertical-icon');\n }\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1).appendChild(wraper);\n var crElem = this.createElement('div');\n var cnt = item.content;\n var eleStr = void 0;\n if (typeof cnt === 'string' || isNullOrUndefined(cnt.innerHTML)) {\n if (typeof cnt === 'string' && this.enableHtmlSanitizer) {\n cnt = SanitizeHtmlHelper.sanitize(cnt);\n }\n if (cnt[0] === '.' || cnt[0] === '#') {\n if (document.querySelectorAll(cnt).length) {\n var eleVal = document.querySelector(cnt);\n eleStr = eleVal.outerHTML.trim();\n crElem.appendChild(eleVal);\n eleVal.style.display = '';\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n this.compileElement(crElem, cnt, 'content', this.selectedItem);\n }\n }\n else {\n crElem.appendChild(cnt);\n }\n if (!isNullOrUndefined(eleStr)) {\n if (this.templateEle.indexOf(cnt.toString()) === -1) {\n this.templateEle.push(cnt.toString());\n }\n }\n this.element.querySelector('.' + CLS_ITEM$2 + '.' + CLS_ACTIVE$1).appendChild(crElem);\n }\n }\n else {\n var tabItems = this.element.querySelector('.' + CLS_TB_ITEMS);\n var element = this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1);\n var index = this.getIndexFromEle(element.id);\n var header = element.innerText;\n var detachContent = this.element.querySelector('.' + CLS_CONTENT$1).querySelector('.' + CLS_ACTIVE$1).children[0];\n var mainContents = detachContent.innerHTML;\n detach(element);\n detach(detachContent);\n var attr = {\n className: CLS_TB_ITEM + ' ' + CLS_TEMPLATE$1 + ' ' + CLS_ACTIVE$1, id: CLS_ITEM$2 + this.tabId + '_' + index\n };\n var txtString = this.createElement('span', {\n className: CLS_TEXT, innerHTML: header, attrs: { 'role': 'presentation' }\n }).outerHTML;\n var conte = this.createElement('div', {\n className: CLS_TEXT_WRAP, innerHTML: txtString + this.btnCls.outerHTML\n }).outerHTML;\n var tabIndex = element.firstElementChild.getAttribute('data-tabindex');\n var wrap = this.createElement('div', {\n className: CLS_WRAP, innerHTML: conte,\n attrs: { tabIndex: tabIndex, 'data-tabindex': tabIndex, role: 'tab', 'aria-controls': CLS_CONTENT$1 + this.tabId + '_' + index, 'aria-selected': 'true' }\n });\n tabItems.insertBefore(this.createElement('div', attr), tabItems.children[index + 1]);\n this.element.querySelector('.' + CLS_TB_ITEM + '.' + CLS_ACTIVE$1).appendChild(wrap);\n var crElem = this.createElement('div', { innerHTML: mainContents });\n this.element.querySelector('.' + CLS_CONTENT$1).querySelector('.' + CLS_ACTIVE$1).appendChild(crElem);\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * To refresh the active tab indicator.\n *\n * @returns {void}\n */\n Tab.prototype.refreshActiveTabBorder = function () {\n var activeEle = select('.' + CLS_TB_ITEM + '.' + CLS_TB_POPUP + '.' + CLS_ACTIVE$1, this.element);\n if (!isNullOrUndefined(activeEle) && this.reorderActiveTab) {\n this.select(this.getEleIndex(activeEle));\n }\n this.refreshActiveBorder();\n };\n __decorate$7([\n Collection([], TabItem)\n ], Tab.prototype, \"items\", void 0);\n __decorate$7([\n Property('100%')\n ], Tab.prototype, \"width\", void 0);\n __decorate$7([\n Property('auto')\n ], Tab.prototype, \"height\", void 0);\n __decorate$7([\n Property('')\n ], Tab.prototype, \"cssClass\", void 0);\n __decorate$7([\n Property(0)\n ], Tab.prototype, \"selectedItem\", void 0);\n __decorate$7([\n Property('Top')\n ], Tab.prototype, \"headerPlacement\", void 0);\n __decorate$7([\n Property('Content')\n ], Tab.prototype, \"heightAdjustMode\", void 0);\n __decorate$7([\n Property('Scrollable')\n ], Tab.prototype, \"overflowMode\", void 0);\n __decorate$7([\n Property('Dynamic')\n ], Tab.prototype, \"loadOn\", void 0);\n __decorate$7([\n Property(false)\n ], Tab.prototype, \"enablePersistence\", void 0);\n __decorate$7([\n Property(false)\n ], Tab.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$7([\n Property(false)\n ], Tab.prototype, \"showCloseButton\", void 0);\n __decorate$7([\n Property(true)\n ], Tab.prototype, \"reorderActiveTab\", void 0);\n __decorate$7([\n Property()\n ], Tab.prototype, \"scrollStep\", void 0);\n __decorate$7([\n Property()\n ], Tab.prototype, \"dragArea\", void 0);\n __decorate$7([\n Property(false)\n ], Tab.prototype, \"allowDragAndDrop\", void 0);\n __decorate$7([\n Complex({}, TabAnimationSettings)\n ], Tab.prototype, \"animation\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"created\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"adding\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"added\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"selecting\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"selected\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"removing\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"removed\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"onDragStart\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"dragging\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"dragged\", void 0);\n __decorate$7([\n Event()\n ], Tab.prototype, \"destroyed\", void 0);\n Tab = __decorate$7([\n NotifyPropertyChanges\n ], Tab);\n return Tab;\n}(Component));\n\n/**\n * Tab modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL$1 = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED$1 = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED$1 = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$8(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$8([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate$8([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate$8([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate$8([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate$8([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate$8([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate$8([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate$8([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate$8([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate$8([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate$8([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate$8([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate$8([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate$8([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate$8([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate$8([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate$8([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$8(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$8([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate$8([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate$8([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$8(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$8([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate$8([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
    \n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @__PURE__ @class */ (function (_super) {\n __extends$8(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n // eslint-disable-next-line\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNullOrUndefined(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNullOrUndefined(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNullOrUndefined(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED$1);\n }\n else {\n this.element.classList.remove(DISABLED$1);\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL$1);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (isEnabled) {\n firstUl.setAttribute('aria-multiselectable', 'true');\n }\n else {\n firstUl.removeAttribute('aria-multiselectable');\n }\n };\n // eslint-disable-next-line\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n this.element.classList.add(INTERACTION);\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n /* eslint-disable */\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNullOrUndefined(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNullOrUndefined(value) && !isNullOrUndefined(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNullOrUndefined(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1)\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n checkboxEle.setAttribute('aria-label', 'checkbox');\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNullOrUndefined(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNullOrUndefined(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED$1)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED$1);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute(\"tabindex\", \"-1\");\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNullOrUndefined(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNullOrUndefined(getValue(mapper.child, ds[i])) && !isNullOrUndefined(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNullOrUndefined(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNullOrUndefined(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNullOrUndefined(getValue(mapper.parentID, ds[i])) || !isNullOrUndefined(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED$1, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED$1);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNullOrUndefined(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNullOrUndefined(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNullOrUndefined(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNullOrUndefined(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNullOrUndefined(this.currentLoadData) && !isNullOrUndefined(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNullOrUndefined(nodes)) {\n for (var len = nodes.length; len >= 0; len--) {\n var liEle = void 0;\n if (nodes.length === 1) {\n liEle = this.getElement(nodes[len - 1]);\n }\n else {\n liEle = this.getElement(nodes[len]);\n }\n if (isNullOrUndefined(liEle)) {\n var node = void 0;\n node = nodes[len - nodes.length] ? nodes[len - nodes.length].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNullOrUndefined(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[i]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var eUids = this.expandedNodes;\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNullOrUndefined(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNullOrUndefined(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED$1, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED$1);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList$$1 = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList$$1.contains(EXPANDABLE) || classList$$1.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNullOrUndefined(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList$$1.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList$$1.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList$$1.contains(PARENTITEM) && !classList$$1.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList$$1.contains(PARENTITEM) && !classList$$1.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNullOrUndefined(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNullOrUndefined(mapper_2) || isNullOrUndefined(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = this.getSortedData(childItems);\n if (isNullOrUndefined(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNullOrUndefined(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNullOrUndefined(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNullOrUndefined(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; });\n if (index !== -1) {\n return getValue(this.fields.child, obj[index]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[i]);\n var childIndex = !isNullOrUndefined(tempArray) ? tempArray.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[childIndex]);\n }\n else if (!isNullOrUndefined(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNullOrUndefined(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNullOrUndefined(data[i][0]) && !isNullOrUndefined(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNullOrUndefined(li) || (!this.allowMultiSelection && this.isActive(li) && !isNullOrUndefined(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNullOrUndefined(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute(\"tabindex\", \"-1\");\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNullOrUndefined(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList$$1 = icon.classList;\n if (classList$$1.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList$$1.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNullOrUndefined(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNullOrUndefined(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible$$1 = this.isVisibleInViewport(focusNode);\n if (!isVisible$$1) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNullOrUndefined(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNullOrUndefined(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNullOrUndefined(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNullOrUndefined(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[length_1]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n (isNullOrUndefined(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (isNullOrUndefined(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNullOrUndefined(fNode) ? (isNullOrUndefined(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNullOrUndefined(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNullOrUndefined(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], [HOVER, FOCUS]);\n preNode.setAttribute(\"tabindex\", \"-1\");\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], [HOVER, FOCUS]);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n focusedElement.setAttribute(\"tabindex\", \"0\");\n addClass([focusedElement], [HOVER, FOCUS]);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target == focusedElement) {\n removeClass([focusedElement], [HOVER, FOCUS]);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList$$1 = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList$$1.contains(PARENTITEM) || classList$$1.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n \n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n \n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNullOrUndefined(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNullOrUndefined(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = checkboxElement.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNullOrUndefined(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNullOrUndefined(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNullOrUndefined(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl,\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n txtEle.innerText = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], HOVER);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNullOrUndefined(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNullOrUndefined(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNullOrUndefined(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNullOrUndefined(this.treeData[i]) && !isNullOrUndefined(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNullOrUndefined(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNullOrUndefined(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL$1 : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNullOrUndefined(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n \n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n \n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNullOrUndefined(e) && !e.target.classList.contains(SIBLING) && (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList$$1 = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNullOrUndefined(classList$$1) && classList$$1.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n var nodeData = [];\n var liArray = [];\n dragInstance = e.dragData.draggable;\n for (var i_1 = 0; i_1 < dragInstance.ej2_instances.length; i_1++) {\n if (dragInstance.ej2_instances[i_1] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i_1];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i_2 = sNodes.length - 1; i_2 >= 0; i_2--) {\n if (dropLi.isSameNode(sNodes[i_2]) || this.isDescendant(sNodes[i_2], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_2], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i_3 = 0; i_3 < sNodes.length; i_3++) {\n if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[i]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNullOrUndefined(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNullOrUndefined(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNullOrUndefined(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNullOrUndefined(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNullOrUndefined(dropUl) && this.preventExpand === true) {\n if (isNullOrUndefined(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNullOrUndefined(dropUl)) {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n if (isNullOrUndefined(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNullOrUndefined(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNullOrUndefined(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNullOrUndefined(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNullOrUndefined(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNullOrUndefined(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var refNode;\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNullOrUndefined(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n refNode = dropUl.childNodes[index];\n if (!this.isFirstRender || this.dataType === 1) {\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNullOrUndefined(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE)) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNullOrUndefined(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE)) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[i], cNodes[j]);\n break;\n }\n dropUl.insertBefore(li[i], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNullOrUndefined(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNullOrUndefined(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNullOrUndefined(id)) {\n index = isNullOrUndefined(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNullOrUndefined(childData)) {\n childData = [];\n }\n index = isNullOrUndefined(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNullOrUndefined(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNullOrUndefined(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNullOrUndefined(obj) || isNullOrUndefined(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNullOrUndefined(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNullOrUndefined(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNullOrUndefined(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNullOrUndefined(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNullOrUndefined(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n if (isNullOrUndefined(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove$$1) {\n var removedData;\n if (isNullOrUndefined(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove$$1) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove$$1);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove$$1);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNullOrUndefined(node[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n \n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNullOrUndefined(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNullOrUndefined(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNullOrUndefined(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNullOrUndefined(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n nodeData.push(this.getNode(liEle));\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[i]);\n if (!isNullOrUndefined(childItems)) {\n index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[i][this.fields.id].toString());\n this.getHierarchicalParentId(data[i][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNullOrUndefined(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n this.reRenderNodes();\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNullOrUndefined(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNullOrUndefined(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType == 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length != 0 && !isNullOrUndefined(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType == 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId).reverse();\n }\n this.expandAll(parentsId);\n var liEle = this.getElement(node);\n if (!isNullOrUndefined(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: \"smooth\" }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNullOrUndefined(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNullOrUndefined(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNullOrUndefined(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNullOrUndefined(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n nodeData.push(this.getNode(dragLi));\n if (isNullOrUndefined(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNullOrUndefined(target) || isNullOrUndefined(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNullOrUndefined(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNullOrUndefined(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNullOrUndefined(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNullOrUndefined(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNullOrUndefined(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNullOrUndefined(target) || isNullOrUndefined(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNullOrUndefined(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate$8([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate$8([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate$8([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate$8([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate$8([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate$8([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate$8([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate$8([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate$8([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate$8([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate$8([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\n\n/**\n * TreeView modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar CONTROL$1 = 'e-control';\nvar ROOT$1 = 'e-sidebar';\nvar DOCKER = 'e-dock';\nvar CLOSE = 'e-close';\nvar OPEN = 'e-open';\nvar TRASITION = 'e-transition';\nvar DEFAULTBACKDROP = 'e-sidebar-overlay';\nvar RTL$2 = 'e-rtl';\nvar RIGHT = 'e-right';\nvar LEFT = 'e-left';\nvar OVER = 'e-over';\nvar PUSH = 'e-push';\nvar SLIDE = 'e-slide';\nvar VISIBILITY = 'e-visibility';\nvar DISPLAY = 'e-sidebar-display';\nvar MAINCONTENTANIMATION = 'e-content-animation';\nvar DISABLEANIMATION = 'e-disable-animation';\nvar CONTEXT = 'e-sidebar-context';\nvar SIDEBARABSOLUTE = 'e-sidebar-absolute';\n/**\n * Sidebar is an expandable or collapsible\n * component that typically act as a side container to place the primary or secondary content alongside of the main content.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Sidebar = /** @__PURE__ @class */ (function (_super) {\n __extends$9(Sidebar, _super);\n /* eslint-enable */\n function Sidebar(options, element) {\n return _super.call(this, options, element) || this;\n }\n Sidebar.prototype.preRender = function () {\n this.setWidth();\n };\n Sidebar.prototype.render = function () {\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n };\n Sidebar.prototype.initialize = function () {\n this.setTarget();\n this.addClass();\n this.setZindex();\n if (this.enableDock) {\n this.setDock();\n }\n if (this.isOpen) {\n this.show();\n this.firstRender = true;\n }\n else {\n this.setMediaQuery();\n }\n this.checkType(true);\n this.setType(this.type);\n this.setCloseOnDocumentClick();\n this.setEnableRTL();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.setEnableRTL = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL$2);\n };\n Sidebar.prototype.setTarget = function () {\n this.targetEle = this.element.nextElementSibling;\n this.sidebarEleCopy = this.element.cloneNode(true);\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (this.target) {\n this.target.insertBefore(this.element, this.target.children[0]);\n addClass([this.element], SIDEBARABSOLUTE);\n addClass([this.target], CONTEXT);\n this.targetEle = this.getTargetElement();\n }\n };\n Sidebar.prototype.getTargetElement = function () {\n var siblingElement = this.element.nextElementSibling;\n while (!isNullOrUndefined(siblingElement)) {\n if (!siblingElement.classList.contains(ROOT$1)) {\n break;\n }\n siblingElement = siblingElement.nextElementSibling;\n }\n return siblingElement;\n };\n Sidebar.prototype.setCloseOnDocumentClick = function () {\n if (this.closeOnDocumentClick) {\n EventHandler.add(document, 'mousedown touchstart', this.documentclickHandler, this);\n }\n else {\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n }\n };\n Sidebar.prototype.setWidth = function () {\n if (this.enableDock && this.position === 'Left') {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (this.enableDock && this.position === 'Right') {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n else if (!this.enableDock) {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.width) });\n }\n };\n Sidebar.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n Sidebar.prototype.setZindex = function () {\n setStyleAttribute(this.element, { 'z-index': '' + this.zIndex });\n };\n Sidebar.prototype.addClass = function () {\n if (this.element.tagName === \"EJS-SIDEBAR\") {\n addClass([this.element], DISPLAY);\n }\n var classELement = document.querySelector('.e-main-content');\n if (!isNullOrUndefined(classELement || this.targetEle)) {\n addClass([classELement || this.targetEle], [MAINCONTENTANIMATION]);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : null;\n if (!this.enableDock && this.type !== 'Auto') {\n addClass([this.element], [VISIBILITY]);\n }\n removeClass([this.element], [OPEN, CLOSE, RIGHT, LEFT, SLIDE, PUSH, OVER]);\n this.element.classList.add(ROOT$1);\n addClass([this.element], (this.position === 'Right') ? RIGHT : LEFT);\n if (this.enableDock) {\n addClass([this.element], DOCKER);\n }\n if (!isNullOrUndefined(this.tabIndex)) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n if (this.type === 'Auto' && !Browser.isDevice) {\n this.show();\n }\n else if (!this.isOpen) {\n addClass([this.element], CLOSE);\n }\n };\n Sidebar.prototype.checkType = function (val) {\n if (!(this.type === 'Push' || this.type === 'Over' || this.type === 'Slide')) {\n this.type = 'Auto';\n }\n else {\n if (!this.element.classList.contains(CLOSE) && !val) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.transitionEnd = function (e) {\n this.setDock();\n if (!isNullOrUndefined(e) && !this.firstRender) {\n this.triggerChange();\n }\n this.firstRender = false;\n EventHandler.remove(this.element, 'transitionend', this.transitionEnd);\n };\n Sidebar.prototype.destroyBackDrop = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (this.target && this.showBackdrop && sibling && !isNullOrUndefined(this.defaultBackdropDiv)) {\n removeClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n }\n else if (this.showBackdrop && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n };\n /* eslint-disable */\n /**\n * Hide the Sidebar component, if it is in an open state.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.hide = function (e) {\n var _this = this;\n var closeArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('close', closeArguments, function (observedcloseArgs) {\n if (!observedcloseArgs.cancel) {\n if (_this.element.classList.contains(CLOSE)) {\n return;\n }\n if (_this.element.classList.contains(OPEN) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], CLOSE);\n removeClass([_this.element], OPEN);\n setStyleAttribute(_this.element, { 'width': formatUnit(_this.enableDock ? _this.dockSize : _this.width) });\n _this.setType(_this.type);\n var sibling = document.querySelector('.e-main-content') || _this.targetEle;\n if (!_this.enableDock && sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n sibling.style[_this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n _this.destroyBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.remove('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: false }, true);\n if (_this.enableDock) {\n setTimeout(function () { return _this.setTimeOut(); }, 50);\n }\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setTimeOut = function () {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var elementWidth = this.element.getBoundingClientRect().width;\n if (this.element.classList.contains(OPEN) && sibling && !(this.type === 'Over' && this.enableDock)) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.width === 'auto' ? elementWidth : this.width);\n }\n }\n else if (this.element.classList.contains(CLOSE) && sibling) {\n if (this.position === 'Left') {\n sibling.style.marginLeft = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n else {\n sibling.style.marginRight = this.setDimension(this.dockSize === 'auto' ? elementWidth : this.dockSize);\n }\n }\n };\n /* eslint-disable */\n /**\n * Shows the Sidebar component, if it is in closed state.\n *\n * @returns {void}\n */\n Sidebar.prototype.show = function (e) {\n var _this = this;\n var openArguments = {\n model: this,\n element: this.element,\n cancel: false,\n isInteracted: !isNullOrUndefined(e),\n event: (e || null)\n };\n this.trigger('open', openArguments, function (observedopenArgs) {\n if (!observedopenArgs.cancel) {\n removeClass([_this.element], VISIBILITY);\n if (_this.element.classList.contains(OPEN)) {\n return;\n }\n if (_this.element.classList.contains(CLOSE) && !_this.animate) {\n _this.triggerChange();\n }\n addClass([_this.element], [OPEN, TRASITION]);\n setStyleAttribute(_this.element, { 'transform': '' });\n removeClass([_this.element], CLOSE);\n setStyleAttribute(_this.element, { 'width': formatUnit(_this.width) });\n _this.setType(_this.type);\n _this.createBackDrop();\n _this.setAnimation();\n if (_this.type === 'Slide') {\n document.body.classList.add('e-sidebar-overflow');\n }\n _this.setProperties({ isOpen: true }, true);\n EventHandler.add(_this.element, 'transitionend', _this.transitionEnd, _this);\n }\n });\n };\n Sidebar.prototype.setAnimation = function () {\n if (this.animate) {\n removeClass([this.element], DISABLEANIMATION);\n }\n else {\n addClass([this.element], DISABLEANIMATION);\n }\n };\n Sidebar.prototype.triggerChange = function () {\n var changeArguments = { name: 'change', element: this.element };\n this.trigger('change', changeArguments);\n };\n Sidebar.prototype.setDock = function () {\n if (this.enableDock && this.position === 'Left' && !this.getState()) {\n setStyleAttribute(this.element, { 'transform': 'translateX(' + -100 + '%) translateX(' + this.setDimension(this.dockSize) + ')' });\n }\n else if (this.enableDock && this.position === 'Right' && !this.getState()) {\n setStyleAttribute(this.element, { 'transform': 'translateX(' + 100 + '%) translateX(' + '-' + this.setDimension(this.dockSize) + ')' });\n }\n if (this.element.classList.contains(CLOSE) && this.enableDock) {\n setStyleAttribute(this.element, { 'width': this.setDimension(this.dockSize) });\n }\n };\n Sidebar.prototype.createBackDrop = function () {\n if (this.target && this.showBackdrop && this.getState()) {\n var targetString = this.target;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n this.defaultBackdropDiv = this.createElement('div');\n addClass([this.defaultBackdropDiv], DEFAULTBACKDROP);\n setStyleAttribute(this.defaultBackdropDiv, { height: targetString.style.height });\n sibling.appendChild(this.defaultBackdropDiv);\n }\n else if (this.showBackdrop && !this.modal && this.getState()) {\n this.modal = this.createElement('div');\n this.modal.className = DEFAULTBACKDROP;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n };\n Sidebar.prototype.getPersistData = function () {\n return this.addOnPersist(['type', 'position', 'isOpen']);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - returns module name.\n * @private\n *\n */\n Sidebar.prototype.getModuleName = function () {\n return 'sidebar';\n };\n /**\n * Shows or hides the Sidebar based on the current state.\n *\n * @returns {void}\n */\n Sidebar.prototype.toggle = function () {\n if (this.element.classList.contains(OPEN)) {\n this.hide();\n }\n else {\n this.show();\n }\n };\n Sidebar.prototype.getState = function () {\n return this.element.classList.contains(OPEN) ? true : false;\n };\n Sidebar.prototype.setMediaQuery = function () {\n if (this.mediaQuery) {\n var media = false;\n if (typeof (this.mediaQuery) === 'string') {\n media = window.matchMedia(this.mediaQuery).matches;\n }\n else {\n media = (this.mediaQuery).matches;\n }\n if (media && this.windowWidth !== window.innerWidth) {\n this.show();\n }\n else if (this.getState() && this.windowWidth !== window.innerWidth) {\n this.hide();\n }\n }\n };\n Sidebar.prototype.resize = function () {\n if (this.type === 'Auto') {\n if (Browser.isDevice) {\n addClass([this.element], OVER);\n }\n else {\n addClass([this.element], PUSH);\n }\n }\n this.setMediaQuery();\n if (Browser.isDevice) {\n this.windowWidth = window.innerWidth;\n }\n };\n Sidebar.prototype.documentclickHandler = function (e) {\n if (closest(e.target, '.' + CONTROL$1 + '' + '.' + ROOT$1)) {\n return;\n }\n this.hide(e);\n };\n Sidebar.prototype.enableGestureHandler = function (args) {\n if (!this.isOpen && this.position === 'Left' && args.swipeDirection === 'Right' &&\n (args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n else if (this.isOpen && this.position === 'Left' && args.swipeDirection === 'Left') {\n this.hide();\n }\n else if (this.isOpen && this.position === 'Right' && args.swipeDirection === 'Right') {\n this.hide();\n }\n else if (!this.isOpen && this.position === 'Right' && args.swipeDirection === 'Left'\n && (window.innerWidth - args.startX <= 20 && args.distanceX >= 50 && args.velocity >= 0.5)) {\n this.show();\n }\n };\n Sidebar.prototype.setEnableGestures = function () {\n if (this.enableGestures) {\n this.mainContentEle = new Touch(document.body, { swipe: this.enableGestureHandler.bind(this) });\n this.sidebarEle = new Touch(this.element, { swipe: this.enableGestureHandler.bind(this) });\n }\n else {\n if (this.mainContentEle && this.sidebarEle) {\n this.mainContentEle.destroy();\n this.sidebarEle.destroy();\n }\n }\n };\n Sidebar.prototype.wireEvents = function () {\n this.setEnableGestures();\n EventHandler.add(window, 'resize', this.resize, this);\n };\n Sidebar.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.resize);\n EventHandler.remove(document, 'mousedown touchstart', this.documentclickHandler);\n if (this.mainContentEle) {\n this.mainContentEle.destroy();\n }\n if (this.sidebarEle) {\n this.sidebarEle.destroy();\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SidebarModel} newProp - specifies newProp value.\n * @param {SidebarModel} oldProp - specifies oldProp value.\n * @returns {void}\n * @private\n *\n */\n Sidebar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n var isRendered = this.isServerRendered;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isOpen':\n if (this.isOpen) {\n this.show();\n }\n else {\n this.hide();\n }\n break;\n case 'width':\n this.setWidth();\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'animate':\n this.setAnimation();\n break;\n case 'type':\n this.checkType(false);\n removeClass([this.element], [VISIBILITY]);\n this.addClass();\n addClass([this.element], this.type === 'Auto' ? (Browser.isDevice ? ['e-over'] :\n ['e-push']) : ['e-' + this.type.toLowerCase()]);\n break;\n case 'position':\n this.element.style.transform = '';\n this.setDock();\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginRight' : 'marginLeft'] = '0px';\n }\n if (this.position === 'Right') {\n removeClass([this.element], LEFT);\n addClass([this.element], RIGHT);\n }\n else {\n removeClass([this.element], RIGHT);\n addClass([this.element], LEFT);\n }\n this.setType(this.type);\n break;\n case 'showBackdrop':\n if (this.showBackdrop) {\n this.createBackDrop();\n }\n else {\n if (this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n }\n break;\n case 'target':\n if (typeof (this.target) === 'string') {\n this.setProperties({ target: document.querySelector(this.target) }, true);\n }\n if (isNullOrUndefined(this.target)) {\n removeClass([this.element], SIDEBARABSOLUTE);\n removeClass([oldProp.target], CONTEXT);\n setStyleAttribute(sibling, { 'margin-left': 0, 'margin-right': 0 });\n document.body.insertAdjacentElement('afterbegin', this.element);\n }\n this.isServerRendered = false;\n _super.prototype.refresh.call(this);\n this.isServerRendered = isRendered;\n break;\n case 'closeOnDocumentClick':\n this.setCloseOnDocumentClick();\n break;\n case 'enableDock':\n if (!this.getState()) {\n this.setDock();\n }\n break;\n case 'zIndex':\n this.setZindex();\n break;\n case 'mediaQuery':\n this.setMediaQuery();\n break;\n case 'enableGestures':\n this.setEnableGestures();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n }\n }\n };\n Sidebar.prototype.setType = function (type) {\n var elementWidth = this.element.getBoundingClientRect().width;\n this.setZindex();\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (sibling) {\n sibling.style.transform = 'translateX(' + 0 + 'px)';\n if (!Browser.isDevice && this.type !== 'Auto' && !(this.type === 'Over' && this.enableDock)) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = '0px';\n }\n }\n var margin = this.position === 'Left' ? elementWidth + 'px' : elementWidth + 'px';\n var eleWidth = this.position === 'Left' ? elementWidth : -(elementWidth);\n removeClass([this.element], [PUSH, OVER, SLIDE]);\n switch (type) {\n case 'Push':\n addClass([this.element], [PUSH]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n break;\n case 'Slide':\n addClass([this.element], [SLIDE]);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style.transform = 'translateX(' + eleWidth + 'px)';\n }\n break;\n case 'Over':\n addClass([this.element], [OVER]);\n if (this.enableDock && (this.element.classList.contains(CLOSE) || this.isOpen)) {\n if (sibling) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = this.setDimension(this.dockSize);\n }\n }\n break;\n case 'Auto':\n addClass([this.element], [TRASITION]);\n if (Browser.isDevice) {\n if (sibling && (this.enableDock) && !this.getState()) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n addClass([this.element], PUSH);\n }\n else {\n addClass([this.element], OVER);\n }\n }\n else {\n addClass([this.element], PUSH);\n if (sibling && (this.enableDock || this.element.classList.contains(OPEN))) {\n sibling.style[this.position === 'Left' ? 'marginLeft' : 'marginRight'] = margin;\n }\n }\n this.createBackDrop();\n }\n };\n /**\n * Removes the control from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @returns {void}\n *\n */\n Sidebar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.target) {\n removeClass([this.target], CONTEXT);\n }\n this.destroyBackDrop();\n if (this.element) {\n removeClass([this.element], [OPEN, CLOSE, PUSH, SLIDE, OVER, LEFT, RIGHT, TRASITION]);\n removeClass([this.element], SIDEBARABSOLUTE);\n this.element.style.width = '';\n this.element.style.zIndex = '';\n this.element.style.transform = '';\n if (!isNullOrUndefined(this.sidebarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n this.windowWidth = null;\n var sibling = document.querySelector('.e-main-content') || this.targetEle;\n if (!isNullOrUndefined(sibling)) {\n sibling.style.margin = '';\n sibling.style.transform = '';\n }\n this.unWireEvents();\n };\n __decorate$9([\n Property('auto')\n ], Sidebar.prototype, \"dockSize\", void 0);\n __decorate$9([\n Property(null)\n ], Sidebar.prototype, \"mediaQuery\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"enableDock\", void 0);\n __decorate$9([\n Property('en-US')\n ], Sidebar.prototype, \"locale\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"enablePersistence\", void 0);\n __decorate$9([\n Property(true)\n ], Sidebar.prototype, \"enableGestures\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"isOpen\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"enableRtl\", void 0);\n __decorate$9([\n Property(true)\n ], Sidebar.prototype, \"animate\", void 0);\n __decorate$9([\n Property('auto')\n ], Sidebar.prototype, \"height\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"closeOnDocumentClick\", void 0);\n __decorate$9([\n Property('Left')\n ], Sidebar.prototype, \"position\", void 0);\n __decorate$9([\n Property(null)\n ], Sidebar.prototype, \"target\", void 0);\n __decorate$9([\n Property(false)\n ], Sidebar.prototype, \"showBackdrop\", void 0);\n __decorate$9([\n Property('Auto')\n ], Sidebar.prototype, \"type\", void 0);\n __decorate$9([\n Property('auto')\n ], Sidebar.prototype, \"width\", void 0);\n __decorate$9([\n Property(1000)\n ], Sidebar.prototype, \"zIndex\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"created\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"close\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"open\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"change\", void 0);\n __decorate$9([\n Event()\n ], Sidebar.prototype, \"destroyed\", void 0);\n Sidebar = __decorate$9([\n NotifyPropertyChanges\n ], Sidebar);\n return Sidebar;\n}(Component));\n\n/**\n * Sidebar modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\nvar ICONRIGHT = 'e-icon-right';\nvar ITEMTEXTCLASS = 'e-breadcrumb-text';\nvar ICONCLASS = 'e-breadcrumb-icon';\nvar MENUCLASS = 'e-breadcrumb-menu';\nvar ITEMCLASS = 'e-breadcrumb-item';\nvar POPUPCLASS = 'e-breadcrumb-popup';\nvar WRAPMODECLASS = 'e-breadcrumb-wrap-mode';\nvar SCROLLMODECLASS = 'e-breadcrumb-scroll-mode';\nvar TABINDEX = 'tabindex';\nvar DISABLEDCLASS = 'e-disabled';\nvar ARIADISABLED = 'aria-disabled';\nvar DOT = '.';\nvar BreadcrumbItem = /** @__PURE__ @class */ (function (_super) {\n __extends$10(BreadcrumbItem, _super);\n function BreadcrumbItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$10([\n Property('')\n ], BreadcrumbItem.prototype, \"text\", void 0);\n __decorate$10([\n Property('')\n ], BreadcrumbItem.prototype, \"url\", void 0);\n __decorate$10([\n Property(null)\n ], BreadcrumbItem.prototype, \"iconCss\", void 0);\n __decorate$10([\n Property(false)\n ], BreadcrumbItem.prototype, \"disabled\", void 0);\n return BreadcrumbItem;\n}(ChildProperty));\n/**\n * Breadcrumb is a graphical user interface that helps to identify or highlight the current location within a hierarchical structure of websites.\n * The aim is to make the user aware of their current position in a hierarchy of website links.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Breadcrumb = /** @__PURE__ @class */ (function (_super) {\n __extends$10(Breadcrumb, _super);\n /**\n * Constructor for creating the widget.\n *\n * @private\n * @param {BreadcrumbModel} options - Specifies the Breadcrumb model.\n * @param {string | HTMLElement} element - Specifies the element.\n */\n function Breadcrumb(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = false;\n return _this;\n }\n /**\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.preRender = function () {\n // pre render code\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n Breadcrumb.prototype.render = function () {\n this.initialize();\n this.renderItems(this.items);\n this.wireEvents();\n };\n Breadcrumb.prototype.initialize = function () {\n this._maxItems = this.maxItems;\n this.element.setAttribute('aria-label', 'breadcrumb');\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n if (this.disabled) {\n this.element.classList.add(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, 'true');\n }\n if (this.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n this.initItems();\n this.initPvtProps();\n };\n Breadcrumb.prototype.initPvtProps = function () {\n if (this.overflowMode === 'Hidden' && this._maxItems > 0) {\n this.endIndex = this.getEndIndex();\n this.startIndex = this.endIndex + 1 - (this._maxItems - 1);\n }\n if (this.overflowMode === 'Menu') {\n if (this._maxItems >= 0) {\n this.startIndex = this._maxItems > 1 ? 1 : 0;\n this.endIndex = this.getEndIndex();\n this.popupUl = this.createElement('ul', { attrs: { TABINDEX: '0', 'role': 'menu' } });\n }\n else {\n this.startIndex = this.endIndex = null;\n }\n }\n };\n Breadcrumb.prototype.getEndIndex = function () {\n var _this = this;\n var endIndex;\n if (this.activeItem) {\n this.items.forEach(function (item, idx) {\n if (item.url === _this.activeItem || item.text === _this.activeItem) {\n endIndex = idx;\n }\n });\n }\n else {\n endIndex = this.items.length - 1;\n }\n return endIndex;\n };\n Breadcrumb.prototype.initItems = function () {\n if (!this.items.length) {\n var baseUri = void 0;\n var uri = void 0;\n var items = [];\n if (this.url) {\n var url = new URL(this.url, window.location.origin);\n baseUri = url.origin + '/';\n uri = url.href.split(baseUri)[1].split('/');\n }\n else {\n baseUri = window.location.origin + '/';\n uri = window.location.href.split(baseUri)[1].split('/');\n }\n items.push({ iconCss: 'e-icons e-home', url: baseUri });\n for (var i = 0; i < uri.length; i++) {\n if (uri[i]) {\n items.push({ text: uri[i], url: baseUri + uri[i] });\n baseUri += uri[i] + '/';\n }\n }\n this.setProperties({ items: items }, true);\n }\n };\n Breadcrumb.prototype.renderItems = function (items) {\n var _this = this;\n var item;\n var isSingleLevel;\n var isIconRight = this.element.classList.contains(ICONRIGHT);\n var itemsLength = items.length;\n if (itemsLength) {\n var isActiveItem = void 0;\n var isLastItem = void 0;\n var isLastItemInPopup_1;\n var j_1 = 0;\n var wrapDiv = void 0;\n var len = (itemsLength * 2) - 1;\n var isItemCancelled_1 = false;\n var ol = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-wrapped-ol' : '' });\n var firstOl = this.createElement('ol', { className: this.overflowMode === 'Wrap' ? 'e-breadcrumb-first-ol' : '' });\n var showIcon = this.hasField(items, 'iconCss');\n var isCollasped = (this.overflowMode === 'Collapsed' && this._maxItems > 0 && itemsLength > this._maxItems && !this.isExpanded);\n var isDefaultOverflowMode_1 = (this.overflowMode === 'Hidden' && this._maxItems > 0);\n if (this.overflowMode === 'Menu' && this.popupUl) {\n this.popupUl.innerHTML = '';\n }\n var listBaseOptions = {\n moduleName: this.getModuleName(),\n showIcon: showIcon,\n itemNavigable: true,\n itemCreated: function (args) {\n var isLastItem = args.curData.isLastItem;\n if (isLastItem && args.item.children.length && !_this.itemTemplate) {\n delete args.curData.isLastItem;\n if (!isLastItemInPopup_1 && !_this.enableActiveItemNavigation) {\n args.item.innerHTML = _this.createElement('span', { className: ITEMTEXTCLASS, innerHTML: args.item.children[0].innerHTML }).outerHTML;\n }\n }\n if (args.curData.iconCss && !args.curData.text && !_this.itemTemplate) {\n args.item.classList.add('e-icon-item');\n }\n if (isDefaultOverflowMode_1) {\n args.item.setAttribute('item-index', j_1.toString());\n }\n var eventArgs = {\n item: extend({}, args.curData.properties ?\n args.curData.properties : args.curData), element: args.item, cancel: false\n };\n _this.trigger('beforeItemRender', eventArgs);\n isItemCancelled_1 = eventArgs.cancel;\n var containsRightIcon = (isIconRight || eventArgs.element.classList.contains(ICONRIGHT));\n if (containsRightIcon && args.curData.iconCss && !_this.itemTemplate) {\n args.item.querySelector('.e-anchor-wrap').appendChild(args.item.querySelector(DOT + ICONCLASS));\n }\n if (eventArgs.item.disabled) {\n args.item.setAttribute(ARIADISABLED, 'true');\n args.item.classList.add(DISABLEDCLASS);\n }\n if ((eventArgs.item.disabled || _this.disabled) && args.item.children.length && !_this.itemTemplate) {\n args.item.children[0].setAttribute(TABINDEX, '-1');\n }\n if (args.curData.isEmptyUrl) {\n args.item.children[0].removeAttribute('href');\n if ((!isLastItem || (isLastItem && _this.enableActiveItemNavigation)) && !(eventArgs.item.disabled\n || _this.disabled)) {\n args.item.children[0].setAttribute(TABINDEX, '0');\n EventHandler.add(args.item.children[0], 'keydown', _this.keyDownHandler, _this);\n }\n }\n args.item.removeAttribute('role');\n if (isLastItem) {\n args.item.setAttribute('data-active-item', '');\n }\n if (!_this.itemTemplate) {\n _this.beforeItemRenderChanges(args.curData, eventArgs.item, args.item, containsRightIcon);\n }\n }\n };\n for (var i = 0; i < len; i % 2 && j_1++, i++) {\n isActiveItem = (this.activeItem && (this.activeItem === items[j_1].url ||\n this.activeItem === items[j_1].text));\n if (isCollasped && i > 1 && i < len - 2) {\n continue;\n }\n else if (isDefaultOverflowMode_1 && ((j_1 < this.startIndex || j_1 > this.endIndex)\n && (i % 2 ? j_1 !== this.startIndex - 1 : true)) && j_1 !== 0) {\n continue;\n }\n if (i % 2) {\n // separator item\n wrapDiv = this.createElement('div', { className: 'e-breadcrumb-item-wrapper' });\n listBaseOptions.template = this.separatorTemplate ? this.separatorTemplate : '/';\n listBaseOptions.itemClass = 'e-breadcrumb-separator';\n isSingleLevel = false;\n item = [{ previousItem: items[j_1], nextItem: items[j_1 + 1] }];\n }\n else {\n // list item\n listBaseOptions.itemClass = '';\n if (this.itemTemplate) {\n listBaseOptions.template = this.itemTemplate;\n isSingleLevel = false;\n }\n else {\n isSingleLevel = true;\n }\n item = [extend({}, items[j_1].properties ?\n items[j_1].properties\n : items[j_1])];\n if (!item[0].url && !this.itemTemplate) {\n item = [extend({}, item[0], { isEmptyUrl: true, url: '#' })];\n }\n isLastItem = (isDefaultOverflowMode_1 || this.overflowMode === 'Menu') && (j_1 === this.endIndex);\n if (((i === len - 1 || isLastItem) && !this.itemTemplate) || isActiveItem) {\n item[0].isLastItem = true;\n }\n }\n var parent_1 = ol;\n var lastPopupItemIdx = this.startIndex + this.endIndex - this._maxItems;\n if (this.overflowMode === 'Menu' && ((j_1 >= this.startIndex && (j_1 <= lastPopupItemIdx && (i % 2 ? !(j_1 === lastPopupItemIdx) : true)) && this.endIndex >= this._maxItems && this._maxItems > 0) || this._maxItems === 0)) {\n if (i % 2) {\n continue;\n }\n else {\n parent_1 = this.popupUl;\n if (isLastItem) {\n isLastItemInPopup_1 = true;\n }\n }\n }\n else if (this.overflowMode === 'Wrap') {\n if (i === 0) {\n parent_1 = firstOl;\n }\n else {\n parent_1 = wrapDiv;\n }\n }\n var li = ListBase.createList(this.createElement, item, listBaseOptions, isSingleLevel, this).childNodes;\n if (!isItemCancelled_1) {\n append(li, parent_1);\n }\n else if (isDefaultOverflowMode_1 || isCollasped || this.overflowMode === 'Menu' || this.overflowMode === 'Wrap') {\n items.splice(j_1, 1);\n this.initPvtProps();\n return this.reRenderItems();\n }\n else if ((i === len - 1 || isLastItem)) {\n remove(parent_1.lastElementChild);\n }\n if (this.overflowMode === 'Wrap' && i !== 0 && i % 2 === 0) {\n ol.appendChild(wrapDiv);\n }\n if (isCollasped && i === 1) {\n var li_1 = this.createElement('li', { className: 'e-icons e-breadcrumb-collapsed', attrs: { TABINDEX: '0' } });\n EventHandler.add(li_1, 'keyup', this.expandHandler, this);\n ol.appendChild(li_1);\n }\n if (this.overflowMode === 'Menu' && this.startIndex === i && this.endIndex >= this._maxItems && this._maxItems >= 0) {\n var menu = this.getMenuElement();\n EventHandler.add(menu, 'keyup', this.keyDownHandler, this);\n ol.appendChild(menu);\n }\n if (isActiveItem || isLastItem) {\n break;\n }\n if (isItemCancelled_1) {\n i++;\n }\n }\n if (this.isReact) {\n this.renderReactTemplates();\n }\n if (this.overflowMode === 'Wrap') {\n this.element.appendChild(firstOl);\n }\n this.element.appendChild(ol);\n this.calculateMaxItems();\n }\n };\n Breadcrumb.prototype.calculateMaxItems = function () {\n if (this.overflowMode === 'Hidden' || this.overflowMode === 'Collapsed' || this.overflowMode === 'Menu') {\n var maxItems = void 0;\n var width = this.element.offsetWidth;\n var liElems = [].slice.call(this.element.children[0].children).reverse();\n var liWidth = this.overflowMode === 'Menu' ? 0 : liElems[liElems.length - 1].offsetWidth + (liElems[liElems.length - 2] ? liElems[liElems.length - 2].offsetWidth : 0);\n if (this.overflowMode === 'Menu') {\n var menuEle = this.getMenuElement();\n this.element.appendChild(menuEle);\n liWidth += menuEle.offsetWidth;\n remove(menuEle);\n }\n for (var i = 0; i < liElems.length - 2; i++) {\n if (liWidth > width) {\n maxItems = Math.ceil((i - 1) / 2) + ((this.overflowMode === 'Menu' && i <= 2) ? 0 : 1);\n if (((this.maxItems > maxItems && !(this.maxItems > -1 && maxItems === -1)) ||\n this.maxItems === -1) && this._maxItems !== maxItems) {\n this._maxItems = maxItems;\n this.initPvtProps();\n return this.reRenderItems();\n }\n else {\n break;\n }\n }\n else {\n if (this.overflowMode === 'Menu' && i === 2) {\n liWidth += liElems[liElems.length - 1].offsetWidth + liElems[liElems.length - 2].offsetWidth;\n if (liWidth > width) {\n this._maxItems = 1;\n this.initPvtProps();\n return this.reRenderItems();\n }\n }\n if (!(this.overflowMode === 'Menu' && liElems[i].classList.contains(MENUCLASS))) {\n liWidth += liElems[i].offsetWidth;\n }\n }\n }\n }\n else if ((this.overflowMode === 'Wrap' || this.overflowMode === 'Scroll') && this._maxItems > 0) {\n var width = 0;\n var liElems = this.element.querySelectorAll(DOT + ITEMCLASS);\n if (liElems.length > this._maxItems + this._maxItems - 1) {\n for (var i = this.overflowMode === 'Wrap' ? 1 : 0; i < this._maxItems + this._maxItems - 1; i++) {\n width += liElems[i].offsetWidth;\n }\n width = width + 5 + (parseInt(getComputedStyle(this.element.children[0]).paddingLeft, 10) * 2);\n if (this.overflowMode === 'Wrap') {\n this.element.querySelector('.e-breadcrumb-wrapped-ol').style.width = width + 'px';\n }\n else {\n this.element.style.width = width + 'px';\n }\n }\n }\n };\n Breadcrumb.prototype.hasField = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n Breadcrumb.prototype.getMenuElement = function () {\n return this.createElement('li', { className: 'e-icons e-breadcrumb-menu', attrs: { TABINDEX: '0' } });\n };\n Breadcrumb.prototype.beforeItemRenderChanges = function (prevItem, currItem, elem, isRightIcon) {\n var wrapElem = elem.querySelector('.e-anchor-wrap');\n if (currItem.text !== prevItem.text) {\n wrapElem.childNodes.forEach(function (child) {\n if (child.nodeType === Node.TEXT_NODE) {\n child.textContent = currItem.text;\n }\n });\n }\n if (currItem.iconCss !== prevItem.iconCss && wrapElem) { // wrapElem - for checking it is item not a separator\n var iconElem = elem.querySelector(DOT + ICONCLASS);\n if (iconElem) {\n if (currItem.iconCss) {\n removeClass([iconElem], prevItem.iconCss.split(' '));\n addClass([iconElem], currItem.iconCss.split(' '));\n }\n else {\n remove(iconElem);\n }\n }\n else if (currItem.iconCss) {\n var iconElem_1 = this.createElement('span', { className: ICONCLASS + ' ' + currItem.iconCss });\n if (isRightIcon) {\n append([iconElem_1], wrapElem);\n }\n else {\n wrapElem.insertBefore(iconElem_1, wrapElem.childNodes[0]);\n }\n }\n }\n if (currItem.url !== prevItem.url && this.enableNavigation) {\n var anchor = elem.querySelector('a.' + ITEMTEXTCLASS);\n if (anchor) {\n if (currItem.url) {\n anchor.setAttribute('href', currItem.url);\n }\n else {\n anchor.removeAttribute('href');\n }\n }\n }\n };\n Breadcrumb.prototype.reRenderItems = function () {\n this.element.innerHTML = '';\n this.renderItems(this.items);\n };\n Breadcrumb.prototype.clickHandler = function (e) {\n var li = closest(e.target, DOT + ITEMCLASS + ':not(.e-breadcrumb-separator)');\n if (!this.enableNavigation) {\n e.preventDefault();\n }\n if (li && (closest(e.target, DOT + ITEMTEXTCLASS) || this.itemTemplate)) {\n var idx = void 0;\n if (this.overflowMode === 'Wrap') {\n idx = [].slice.call(this.element.querySelectorAll(DOT + ITEMCLASS)).indexOf(li);\n }\n else {\n idx = [].slice.call(li.parentElement.children).indexOf(li);\n }\n if (this.overflowMode === 'Menu') {\n if (closest(e.target, DOT + POPUPCLASS)) {\n idx += this.startIndex;\n this.endIndex = idx;\n if (e.type === 'keydown') {\n this.documentClickHandler(e);\n }\n }\n else if (this.element.querySelector(DOT + MENUCLASS)) {\n if (idx > [].slice.call(this.element.children[0].children).indexOf(this.element.querySelector(DOT + MENUCLASS))) {\n idx += (this.popupUl.childElementCount * 2) - 2;\n idx = Math.floor(idx / 2);\n this.endIndex = idx;\n }\n else {\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n this.startIndex = this.endIndex = idx;\n }\n }\n else {\n idx = Math.floor(idx / 2);\n }\n if (this.overflowMode === 'Hidden' && this._maxItems > 0 && this.endIndex !== 0) {\n idx = parseInt(li.getAttribute('item-index'), 10);\n if (this.startIndex > 1) {\n this.startIndex -= (this.endIndex - idx);\n }\n this.endIndex = idx;\n }\n this.trigger('itemClick', { element: li, item: this.items[idx], event: e });\n this.activeItem = this.items[idx].url || this.items[idx].text;\n this.dataBind();\n }\n if (e.target.classList.contains('e-breadcrumb-collapsed')) {\n this.isExpanded = true;\n this.reRenderItems();\n }\n if (e.target.classList.contains(MENUCLASS) && !this.isPopupCreated) {\n this.renderPopup();\n }\n };\n Breadcrumb.prototype.renderPopup = function () {\n var _this = this;\n var wrapper = this.createElement('div', { className: POPUPCLASS + ' ' + this.cssClass + (this.enableRtl ? ' e-rtl' : '') });\n document.body.appendChild(wrapper);\n this.isPopupCreated = true;\n this.popupObj = new Popup(wrapper, {\n content: this.popupUl,\n relateTo: this.element.querySelector(DOT + MENUCLASS),\n enableRtl: this.enableRtl,\n position: { X: 'left', Y: 'bottom' },\n collision: { X: 'fit', Y: 'flip' },\n open: function () {\n _this.popupUl.focus();\n }\n });\n this.popupWireEvents();\n this.popupObj.show();\n };\n Breadcrumb.prototype.documentClickHandler = function (e) {\n if (this.overflowMode === 'Menu' && this.popupObj && this.popupObj.element.classList.contains('e-popup-open') && !closest(e.target, DOT + MENUCLASS)) {\n this.popupObj.hide();\n this.popupObj.destroy();\n this.isPopupCreated = false;\n detach(this.popupObj.element);\n }\n };\n Breadcrumb.prototype.resize = function () {\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n };\n Breadcrumb.prototype.expandHandler = function (e) {\n if (e.key === 'Enter') {\n this.isExpanded = true;\n this.reRenderItems();\n }\n };\n Breadcrumb.prototype.keyDownHandler = function (e) {\n if (e.key === 'Enter') {\n this.clickHandler(e);\n }\n };\n Breadcrumb.prototype.popupKeyDownHandler = function (e) {\n if (e.key === 'Escape') {\n this.documentClickHandler(e);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @private\n * @param {BreadcrumbModel} newProp - Specifies the new properties.\n * @param {BreadcrumbModel} oldProp - Specifies the old properties.\n * @returns {void}\n */\n Breadcrumb.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n case 'enableActiveItemNavigation':\n this.reRenderItems();\n break;\n case 'activeItem':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n break;\n case 'overflowMode':\n case 'maxItems':\n this._maxItems = this.maxItems;\n this.initPvtProps();\n this.reRenderItems();\n if (oldProp.overflowMode === 'Wrap') {\n this.element.classList.remove(WRAPMODECLASS);\n }\n else if (newProp.overflowMode === 'Wrap') {\n this.element.classList.add(WRAPMODECLASS);\n }\n if (oldProp.overflowMode === 'Scroll') {\n this.element.classList.remove(SCROLLMODECLASS);\n }\n else if (newProp.overflowMode === 'Scroll') {\n this.element.classList.add(SCROLLMODECLASS);\n }\n break;\n case 'url':\n this.initItems();\n this.reRenderItems();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if ((oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) && !(newProp.cssClass &&\n newProp.cssClass.indexOf(ICONRIGHT) > -1) || !(oldProp.cssClass && oldProp.cssClass.indexOf(ICONRIGHT) > -1) &&\n (newProp.cssClass && newProp.cssClass.indexOf(ICONRIGHT) > -1)) {\n this.reRenderItems();\n }\n break;\n case 'enableRtl':\n this.element.classList.toggle('e-rtl');\n break;\n case 'disabled':\n this.element.classList.toggle(DISABLEDCLASS);\n this.element.setAttribute(ARIADISABLED, newProp.disabled + '');\n break;\n }\n }\n };\n Breadcrumb.prototype.wireEvents = function () {\n this.delegateClickHanlder = this.documentClickHandler.bind(this);\n EventHandler.add(document, 'click', this.delegateClickHanlder, this);\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resize.bind(this));\n };\n Breadcrumb.prototype.popupWireEvents = function () {\n EventHandler.add(this.popupObj.element, 'click', this.clickHandler, this);\n EventHandler.add(this.popupObj.element, 'keydown', this.popupKeyDownHandler, this);\n };\n Breadcrumb.prototype.unWireEvents = function () {\n EventHandler.remove(document, 'click', this.delegateClickHanlder);\n EventHandler.remove(this.element, 'click', this.clickHandler);\n window.removeEventListener('resize', this.resize.bind(this));\n if (this.popupObj) {\n EventHandler.remove(this.popupObj.element, 'click', this.clickHandler);\n EventHandler.remove(this.popupObj.element, 'keydown', this.popupKeyDownHandler);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n Breadcrumb.prototype.getPersistData = function () {\n return this.addOnPersist(['activeItem']);\n };\n /**\n * Get module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n Breadcrumb.prototype.getModuleName = function () {\n return 'breadcrumb';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Breadcrumb.prototype.destroy = function () {\n var _this = this;\n var classes = [];\n var attributes$$1 = ['aria-label'];\n if (this.cssClass) {\n classes.concat(this.cssClass.split(' '));\n }\n if (this.enableRtl) {\n classes.push('e-rtl');\n }\n if (this.disabled) {\n classes.push(DISABLEDCLASS);\n attributes$$1.push(ARIADISABLED);\n }\n if (this.overflowMode === 'Wrap') {\n classes.push(WRAPMODECLASS);\n }\n else if (this.overflowMode === 'Scroll') {\n classes.push(SCROLLMODECLASS);\n }\n this.unWireEvents();\n this.element.innerHTML = '';\n removeClass([this.element], classes);\n attributes$$1.forEach(function (attribute) {\n _this.element.removeAttribute(attribute);\n });\n _super.prototype.destroy.call(this);\n };\n __decorate$10([\n Property('')\n ], Breadcrumb.prototype, \"url\", void 0);\n __decorate$10([\n Collection([], BreadcrumbItem)\n ], Breadcrumb.prototype, \"items\", void 0);\n __decorate$10([\n Property('')\n ], Breadcrumb.prototype, \"activeItem\", void 0);\n __decorate$10([\n Property(-1)\n ], Breadcrumb.prototype, \"maxItems\", void 0);\n __decorate$10([\n Property('Menu')\n ], Breadcrumb.prototype, \"overflowMode\", void 0);\n __decorate$10([\n Property('')\n ], Breadcrumb.prototype, \"cssClass\", void 0);\n __decorate$10([\n Property(null)\n ], Breadcrumb.prototype, \"itemTemplate\", void 0);\n __decorate$10([\n Property('/')\n ], Breadcrumb.prototype, \"separatorTemplate\", void 0);\n __decorate$10([\n Property(true)\n ], Breadcrumb.prototype, \"enableNavigation\", void 0);\n __decorate$10([\n Property(false)\n ], Breadcrumb.prototype, \"enableActiveItemNavigation\", void 0);\n __decorate$10([\n Property(false)\n ], Breadcrumb.prototype, \"disabled\", void 0);\n __decorate$10([\n Property('')\n ], Breadcrumb.prototype, \"locale\", void 0);\n __decorate$10([\n Event()\n ], Breadcrumb.prototype, \"beforeItemRender\", void 0);\n __decorate$10([\n Event()\n ], Breadcrumb.prototype, \"itemClick\", void 0);\n __decorate$10([\n Event()\n ], Breadcrumb.prototype, \"created\", void 0);\n Breadcrumb = __decorate$10([\n NotifyPropertyChanges\n ], Breadcrumb);\n return Breadcrumb;\n}(Component));\n\n/**\n * Breadcrumb modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/* eslint-disable @typescript-eslint/no-explicit-any */\n// Constant variables\nvar CLS_CAROUSEL = 'e-carousel';\nvar CLS_ACTIVE$2 = 'e-active';\nvar CLS_RTL$5 = 'e-rtl';\nvar CLS_PARTIAL = 'e-partial';\nvar CLS_SLIDE_CONTAINER = 'e-carousel-slide-container';\nvar CLS_ITEMS$2 = 'e-carousel-items';\nvar CLS_CLONED = 'e-cloned';\nvar CLS_ITEM$3 = 'e-carousel-item';\nvar CLS_PREVIOUS = 'e-previous';\nvar CLS_NEXT = 'e-next';\nvar CLS_PREV_ICON = 'e-previous-icon';\nvar CLS_NEXT_ICON = 'e-next-icon';\nvar CLS_NAVIGATORS = 'e-carousel-navigators';\nvar CLS_INDICATORS = 'e-carousel-indicators';\nvar CLS_INDICATOR_BARS = 'e-indicator-bars';\nvar CLS_INDICATOR_BAR = 'e-indicator-bar';\nvar CLS_INDICATOR$1 = 'e-indicator';\nvar CLS_ICON$1 = 'e-icons';\nvar CLS_PLAY_PAUSE = 'e-play-pause';\nvar CLS_PLAY_ICON = 'e-play-icon';\nvar CLS_PAUSE_ICON = 'e-pause-icon';\nvar CLS_PREV_BUTTON = 'e-previous-button';\nvar CLS_NEXT_BUTTON = 'e-next-button';\nvar CLS_PLAY_BUTTON = 'e-play-button';\nvar CLS_FLAT = 'e-flat';\nvar CLS_ROUND = 'e-round';\nvar CLS_HOVER_ARROWS = 'e-hover-arrows';\nvar CLS_HOVER = 'e-carousel-hover';\nvar CLS_TEMPLATE$2 = 'e-template';\nvar CLS_SLIDE_ANIMATION = 'e-carousel-slide-animation';\nvar CLS_FADE_ANIMATION = 'e-carousel-fade-animation';\nvar CLS_CUSTOM_ANIMATION = 'e-carousel-custom-animation';\nvar CLS_ANIMATION_NONE = 'e-carousel-animation-none';\nvar CLS_PREV_SLIDE = 'e-prev';\nvar CLS_NEXT_SLIDE = 'e-next';\nvar CLS_TRANSITION_START = 'e-transition-start';\nvar CLS_TRANSITION_END = 'e-transition-end';\n/** Specifies the carousel individual item. */\nvar CarouselItem = /** @__PURE__ @class */ (function (_super) {\n __extends$11(CarouselItem, _super);\n function CarouselItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$11([\n Property()\n ], CarouselItem.prototype, \"cssClass\", void 0);\n __decorate$11([\n Property()\n ], CarouselItem.prototype, \"interval\", void 0);\n __decorate$11([\n Property()\n ], CarouselItem.prototype, \"template\", void 0);\n __decorate$11([\n Property()\n ], CarouselItem.prototype, \"htmlAttributes\", void 0);\n return CarouselItem;\n}(ChildProperty));\nvar Carousel = /** @__PURE__ @class */ (function (_super) {\n __extends$11(Carousel, _super);\n /**\n * Constructor for creating the Carousel widget\n *\n * @param {CarouselModel} options Accepts the carousel model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function Carousel(options, element) {\n return _super.call(this, options, element) || this;\n }\n Carousel.prototype.getModuleName = function () {\n return CLS_CAROUSEL.replace('e-', '');\n };\n Carousel.prototype.getPersistData = function () {\n return this.addOnPersist(['selectedIndex']);\n };\n Carousel.prototype.preRender = function () {\n this.keyConfigs = {\n home: 'home',\n end: 'end',\n space: 'space',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow'\n };\n var defaultLocale = {\n nextSlide: 'Next slide',\n of: 'of',\n pauseSlideTransition: 'Pause slide transition',\n playSlideTransition: 'Play slide transition',\n previousSlide: 'Previous slide',\n slide: 'Slide',\n slideShow: 'Slide show'\n };\n this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale);\n };\n Carousel.prototype.render = function () {\n this.initialize();\n this.renderSlides();\n this.renderNavigators();\n this.renderPlayButton();\n this.renderIndicators();\n this.applyAnimation();\n this.wireEvents();\n };\n Carousel.prototype.onPropertyChanged = function (newProp, oldProp) {\n var target;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'animationEffect':\n this.applyAnimation();\n break;\n case 'cssClass':\n classList(this.element, [newProp.cssClass], [oldProp.cssClass]);\n break;\n case 'selectedIndex':\n this.setActiveSlide(this.selectedIndex, oldProp.selectedIndex > this.selectedIndex ? 'Previous' : 'Next');\n this.autoSlide();\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n break;\n case 'enableTouchSwipe':\n if (!this.enableTouchSwipe && this.touchModule) {\n this.touchModule.destroy();\n }\n if (this.element.querySelector(\".\" + CLS_ITEMS$2)) {\n this.renderTouchActions();\n }\n break;\n case 'loop':\n if (this.loop && isNullOrUndefined(this.autoSlideInterval)) {\n this.applySlideInterval();\n }\n this.handleNavigatorsActions(this.selectedIndex);\n if (this.partialVisible) {\n this.reRenderSlides();\n }\n break;\n case 'enableRtl':\n if (this.enableRtl) {\n addClass([this.element], CLS_RTL$5);\n }\n else {\n removeClass([this.element], CLS_RTL$5);\n }\n break;\n case 'buttonsVisibility':\n target = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n if (target) {\n switch (this.buttonsVisibility) {\n case 'Hidden':\n this.resetTemplates(['previousButtonTemplate', 'nextButtonTemplate']);\n remove(target);\n break;\n case 'VisibleOnHover':\n addClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n case 'Visible':\n removeClass([].slice.call(target.childNodes), CLS_HOVER_ARROWS);\n break;\n }\n }\n else {\n this.renderNavigators();\n this.renderPlayButton();\n }\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(this.height) });\n break;\n case 'autoPlay':\n if (this.showPlayButton && isNullOrUndefined(this.playButtonTemplate)) {\n this.playButtonClickHandler(null, true);\n }\n this.autoSlide();\n break;\n case 'interval':\n this.autoSlide();\n break;\n case 'showIndicators':\n target = this.element.querySelector(\".\" + CLS_INDICATORS);\n if (!this.showIndicators && target) {\n this.resetTemplates(['indicatorsTemplate']);\n remove(target);\n }\n this.renderIndicators();\n break;\n case 'showPlayButton':\n target = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (!this.showPlayButton && target) {\n remove(target);\n this.resetTemplates(['playButtonTemplate']);\n }\n this.renderPlayButton();\n break;\n case 'items':\n case 'dataSource':\n this.reRenderSlides();\n break;\n case 'partialVisible':\n if (this.partialVisible) {\n addClass([this.element], CLS_PARTIAL);\n }\n else {\n removeClass([this.element], CLS_PARTIAL);\n }\n this.reRenderSlides();\n break;\n }\n }\n };\n Carousel.prototype.reRenderSlides = function () {\n var target = this.element.querySelector(\".\" + CLS_ITEMS$2);\n if (target) {\n this.resetTemplates(['itemTemplate']);\n remove(target);\n }\n this.renderSlides();\n };\n Carousel.prototype.initialize = function () {\n var carouselClasses = [];\n if (this.cssClass) {\n carouselClasses.push(this.cssClass);\n }\n if (this.enableRtl) {\n carouselClasses.push(CLS_RTL$5);\n }\n if (this.partialVisible) {\n carouselClasses.push(CLS_PARTIAL);\n }\n addClass([this.element], carouselClasses);\n setStyleAttribute(this.element, { 'width': formatUnit(this.width), 'height': formatUnit(this.height) });\n attributes(this.element, { 'tabindex': '0', 'aria-roledescription': 'carousel', 'aria-label': this.localeObj.getConstant('slideShow') });\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n Carousel.prototype.renderSlides = function () {\n var _this = this;\n var slideContainer = this.element.querySelector('.' + CLS_SLIDE_CONTAINER);\n if (!slideContainer) {\n slideContainer = this.createElement('div', { className: CLS_SLIDE_CONTAINER });\n this.element.appendChild(slideContainer);\n }\n var itemsContainer = this.createElement('div', { className: CLS_ITEMS$2, attrs: { 'aria-live': this.autoPlay ? 'off' : 'polite' } });\n slideContainer.appendChild(itemsContainer);\n if (this.partialVisible && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(-2).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, itemsContainer, true);\n });\n }\n else if (this.dataSource.length > 0) {\n this.dataSource.slice(-2).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, itemsContainer, true);\n });\n }\n }\n if (this.items.length > 0) {\n this.slideItems = this.items;\n this.items.forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, itemsContainer);\n });\n }\n else if (this.dataSource.length > 0) {\n this.slideItems = this.dataSource;\n this.dataSource.forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, itemsContainer);\n });\n }\n if (this.partialVisible && this.loop) {\n if (this.items.length > 0) {\n this.items.slice(0, 2).forEach(function (item, index) {\n _this.renderSlide(item, item.template, index, itemsContainer, true);\n });\n }\n else if (this.dataSource.length > 0) {\n this.dataSource.slice(0, 2).forEach(function (item, index) {\n _this.renderSlide(item, _this.itemTemplate, index, itemsContainer, true);\n });\n }\n }\n this.renderTemplates();\n if (this.partialVisible) {\n itemsContainer.style.setProperty('--carousel-items-count', \"\" + itemsContainer.children.length);\n var slideWidth = itemsContainer.firstElementChild.clientWidth;\n var cloneCount = this.loop ? 2 : 0;\n itemsContainer.style.transitionProperty = 'none';\n itemsContainer.style.transform = \"translateX(\" + -(slideWidth) * (this.selectedIndex + cloneCount) + \"px)\";\n }\n this.autoSlide();\n this.renderTouchActions();\n this.renderKeyboardActions();\n };\n Carousel.prototype.renderSlide = function (item, itemTemplate, index, container, isClone) {\n if (isClone === void 0) { isClone = false; }\n var itemEle = this.createElement('div', {\n id: getUniqueID('carousel_item'),\n className: CLS_ITEM$3 + \" \" + (item.cssClass ? item.cssClass : '') + \" \" + (this.selectedIndex === index && !isClone ? CLS_ACTIVE$2 : ''),\n attrs: {\n 'aria-hidden': this.selectedIndex === index && !isClone ? 'false' : 'true', 'data-index': index.toString(),\n 'aria-role': 'group', 'aria-roledescription': 'slide'\n }\n });\n if (isClone) {\n itemEle.classList.add(CLS_CLONED);\n }\n if (!isNullOrUndefined(item.htmlAttributes)) {\n this.setHtmlAttributes(item.htmlAttributes, itemEle);\n }\n var templateId = this.element.id + '_template';\n var template = this.templateParser(itemTemplate)(item, this, 'itemTemplate', templateId, false);\n append(template, itemEle);\n container.appendChild(itemEle);\n };\n Carousel.prototype.renderNavigators = function () {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n var navigators = this.createElement('div', { className: CLS_NAVIGATORS });\n var itemsContainer = this.element.querySelector(\".\" + CLS_SLIDE_CONTAINER);\n itemsContainer.insertAdjacentElement('afterend', navigators);\n if (!isNullOrUndefined(this.slideItems) && this.slideItems.length > 1) {\n this.renderNavigatorButton('Previous');\n this.renderNavigatorButton('Next');\n }\n this.renderTemplates();\n };\n Carousel.prototype.renderNavigatorButton = function (direction) {\n var buttonContainer = this.createElement('div', {\n className: (direction === 'Previous' ? CLS_PREVIOUS : CLS_NEXT) + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (direction === 'Previous' && this.previousButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE$2);\n var templateId = this.element.id + '_previousButtonTemplate';\n var template = this.templateParser(this.previousButtonTemplate)({ type: 'Previous' }, this, 'previousButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else if (direction === 'Next' && this.nextButtonTemplate) {\n addClass([buttonContainer], CLS_TEMPLATE$2);\n var templateId = this.element.id + '_nextButtonTemplate';\n var template = this.templateParser(this.nextButtonTemplate)({ type: 'Next' }, this, 'nextButtonTemplate', templateId, false);\n append(template, buttonContainer);\n }\n else {\n var button = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(direction === 'Previous' ? 'previousSlide' : 'nextSlide') }\n });\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + (direction === 'Previous' ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON),\n iconCss: CLS_ICON$1 + ' ' + (direction === 'Previous' ? CLS_PREV_ICON : CLS_NEXT_ICON),\n enableRtl: this.enableRtl,\n disabled: !this.loop && this.selectedIndex === (direction === 'Previous' ? 0 : this.slideItems.length - 1)\n });\n buttonObj.appendTo(button);\n buttonContainer.appendChild(button);\n }\n this.element.querySelector('.' + CLS_NAVIGATORS).appendChild(buttonContainer);\n EventHandler.add(buttonContainer, 'click', this.navigatorClickHandler, this);\n };\n Carousel.prototype.renderPlayButton = function () {\n if (isNullOrUndefined(this.slideItems) || this.buttonsVisibility === 'Hidden' || !this.showPlayButton || this.slideItems.length <= 1) {\n return;\n }\n var playPauseWrap = this.createElement('div', {\n className: CLS_PLAY_PAUSE + ' ' + (this.buttonsVisibility === 'VisibleOnHover' ? CLS_HOVER_ARROWS : '')\n });\n if (this.playButtonTemplate) {\n addClass([playPauseWrap], CLS_TEMPLATE$2);\n var templateId = this.element.id + '_playButtonTemplate';\n var template = this.templateParser(this.playButtonTemplate)({}, this, 'playButtonTemplate', templateId, false);\n append(template, playPauseWrap);\n }\n else {\n var playButton = this.createElement('button', {\n attrs: { 'aria-label': this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition') }\n });\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var buttonObj = new Button({\n cssClass: CLS_FLAT + ' ' + CLS_ROUND + ' ' + CLS_PLAY_BUTTON,\n iconCss: CLS_ICON$1 + ' ' + (this.autoPlay && !isLastSlide ? CLS_PAUSE_ICON : CLS_PLAY_ICON),\n isToggle: true,\n enableRtl: this.enableRtl\n });\n if (isLastSlide) {\n this.setProperties({ autoPlay: false }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n var itemsContainer = this.element.querySelector(\".\" + CLS_ITEMS$2);\n itemsContainer.setAttribute('aria-live', 'polite');\n }\n buttonObj.appendTo(playButton);\n playPauseWrap.appendChild(playButton);\n }\n var navigators = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n navigators.insertBefore(playPauseWrap, navigators.lastElementChild);\n this.renderTemplates();\n EventHandler.add(playPauseWrap, 'click', this.playButtonClickHandler, this);\n };\n Carousel.prototype.renderIndicators = function () {\n var _this = this;\n if (!this.showIndicators) {\n return;\n }\n var indicatorWrap = this.createElement('div', { className: CLS_INDICATORS });\n var indicatorBars = this.createElement('div', { className: CLS_INDICATOR_BARS });\n indicatorWrap.appendChild(indicatorBars);\n if (this.slideItems) {\n this.slideItems.forEach(function (item, index) {\n var indicatorBar = _this.createElement('div', {\n className: CLS_INDICATOR_BAR + ' ' + (_this.selectedIndex === index ? CLS_ACTIVE$2 : ''),\n attrs: { 'data-index': index.toString(), 'aria-current': _this.selectedIndex === index ? 'true' : 'false' }\n });\n if (_this.indicatorsTemplate) {\n addClass([indicatorBar], CLS_TEMPLATE$2);\n var templateId = _this.element.id + '_indicatorsTemplate';\n var template = _this.templateParser(_this.indicatorsTemplate)({ index: index, selectedIndex: _this.selectedIndex }, _this, 'indicatorsTemplate', templateId, false);\n append(template, indicatorBar);\n }\n else {\n var indicator = _this.createElement('button', { className: CLS_INDICATOR$1 });\n indicatorBar.appendChild(indicator);\n indicator.appendChild(_this.createElement('div', {\n attrs: {\n 'aria-label': _this.localeObj.getConstant('slide') + ' ' + (index + 1) + ' ' + _this.localeObj.getConstant('of') + ' ' + _this.slideItems.length\n }\n }));\n var buttonObj = new Button({ cssClass: 'e-flat e-small' });\n buttonObj.appendTo(indicator);\n }\n indicatorBars.appendChild(indicatorBar);\n EventHandler.add(indicatorBar, 'click', _this.indicatorClickHandler, _this);\n });\n }\n this.element.appendChild(indicatorWrap);\n };\n Carousel.prototype.renderKeyboardActions = function () {\n this.keyModule = new KeyboardEvents(this.element, { keyAction: this.keyHandler.bind(this), keyConfigs: this.keyConfigs });\n };\n Carousel.prototype.renderTouchActions = function () {\n if (!this.enableTouchSwipe) {\n return;\n }\n this.touchModule = new Touch(this.element, { swipe: this.swipeHandler.bind(this) });\n };\n Carousel.prototype.applyAnimation = function () {\n removeClass([this.element], [CLS_CUSTOM_ANIMATION, CLS_FADE_ANIMATION, CLS_SLIDE_ANIMATION, CLS_ANIMATION_NONE]);\n switch (this.animationEffect) {\n case 'Slide':\n addClass([this.element], CLS_SLIDE_ANIMATION);\n break;\n case 'Fade':\n addClass([this.element], CLS_FADE_ANIMATION);\n break;\n case 'None':\n addClass([this.element], CLS_ANIMATION_NONE);\n break;\n case 'Custom':\n addClass([this.element], CLS_CUSTOM_ANIMATION);\n break;\n }\n };\n Carousel.prototype.autoSlide = function () {\n if (isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n this.resetSlideInterval();\n this.applySlideInterval();\n };\n Carousel.prototype.autoSlideChange = function () {\n var activeSlide = this.element.querySelector(\".\" + CLS_ACTIVE$2);\n if (isNullOrUndefined(activeSlide)) {\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n if (!this.loop && activeIndex === this.slideItems.length - 1) {\n this.resetSlideInterval();\n }\n else {\n var index = (activeIndex + 1) % this.slideItems.length;\n if (!this.element.classList.contains(CLS_HOVER)) {\n this.setActiveSlide(index, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.applySlideInterval = function () {\n var _this = this;\n if (!this.autoPlay || this.element.classList.contains(CLS_HOVER)) {\n return;\n }\n var itemInterval = this.interval;\n if (this.items.length > 0 && !isNullOrUndefined(this.items[this.selectedIndex].interval)) {\n itemInterval = this.items[this.selectedIndex].interval;\n }\n this.autoSlideInterval = setInterval(function () { return _this.autoSlideChange(); }, itemInterval);\n };\n Carousel.prototype.resetSlideInterval = function () {\n clearInterval(this.autoSlideInterval);\n this.autoSlideInterval = null;\n };\n Carousel.prototype.getSlideIndex = function (direction) {\n var currentIndex = this.selectedIndex;\n if (direction === 'Previous') {\n currentIndex--;\n if (currentIndex < 0) {\n currentIndex = this.slideItems.length - 1;\n }\n }\n else {\n currentIndex++;\n if (currentIndex === this.slideItems.length) {\n currentIndex = 0;\n }\n }\n return currentIndex;\n };\n Carousel.prototype.setActiveSlide = function (currentIndex, direction, isSwiped) {\n var _this = this;\n if (isSwiped === void 0) { isSwiped = false; }\n if (this.element.querySelectorAll(\".\" + CLS_ITEM$3 + \".\" + CLS_PREV_SLIDE + \",.\" + CLS_ITEM$3 + \".\" + CLS_NEXT_SLIDE).length > 0) {\n return;\n }\n var allSlides = [].slice.call(this.element.querySelectorAll(\".\" + CLS_ITEM$3 + \":not(.e-cloned)\"));\n var activeSlide = this.element.querySelector(\".\" + CLS_ITEM$3 + \".\" + CLS_ACTIVE$2);\n if (isNullOrUndefined(activeSlide) && this.showIndicators) {\n var activeIndicator = this.element.querySelector(\".\" + CLS_INDICATOR_BAR + \".\" + CLS_ACTIVE$2);\n var activeIndex_1 = parseInt(activeIndicator.dataset.index, 10);\n addClass([allSlides[parseInt(activeIndex_1.toString(), 10)]], CLS_ACTIVE$2);\n return;\n }\n else if (isNullOrUndefined(activeSlide)) {\n addClass([allSlides[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE$2);\n return;\n }\n var activeIndex = parseInt(activeSlide.dataset.index, 10);\n var currentSlide = allSlides[parseInt(currentIndex.toString(), 10)];\n var eventArgs = {\n currentIndex: activeIndex,\n nextIndex: currentIndex,\n currentSlide: activeSlide,\n nextSlide: currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped,\n cancel: false\n };\n this.trigger('slideChanging', eventArgs, function (args) {\n if (args.cancel) {\n return;\n }\n _this.setProperties({ selectedIndex: currentIndex }, true);\n attributes(args.currentSlide, { 'aria-hidden': 'true' });\n attributes(args.nextSlide, { 'aria-hidden': 'false' });\n var slideIndicators = [].slice.call(_this.element.querySelectorAll(\".\" + CLS_INDICATOR_BAR));\n if (slideIndicators.length > 0) {\n attributes(slideIndicators[parseInt(activeIndex.toString(), 10)], { 'aria-current': 'false' });\n attributes(slideIndicators[parseInt(currentIndex.toString(), 10)], { 'aria-current': 'true' });\n removeClass(slideIndicators, CLS_ACTIVE$2);\n addClass([slideIndicators[parseInt(currentIndex.toString(), 10)]], CLS_ACTIVE$2);\n }\n _this.slideChangedEventArgs = {\n currentIndex: args.nextIndex,\n previousIndex: args.currentIndex,\n currentSlide: args.nextSlide,\n previousSlide: args.currentSlide,\n slideDirection: direction,\n isSwiped: isSwiped\n };\n if (_this.partialVisible) {\n var container = _this.element.querySelector('.' + CLS_ITEMS$2);\n var slideWidth = allSlides[parseInt(currentIndex.toString(), 10)].clientWidth;\n container.style.transitionProperty = 'transform';\n if (_this.loop) {\n if (_this.slideChangedEventArgs.currentIndex === 0 && _this.slideChangedEventArgs.slideDirection === 'Next') {\n container.style.transform = \"translateX(\" + -(slideWidth) * (allSlides.length + 2) + \"px)\";\n }\n else if (_this.slideChangedEventArgs.currentIndex === _this.slideItems.length - 1 && _this.slideChangedEventArgs.slideDirection === 'Previous') {\n container.style.transform = \"translateX(\" + -(slideWidth) + \"px)\";\n }\n else {\n container.style.transform = \"translateX(\" + -(slideWidth) * (currentIndex + 2) + \"px)\";\n }\n }\n else {\n container.style.transform = \"translateX(\" + -(slideWidth) * (currentIndex) + \"px)\";\n }\n }\n if (_this.animationEffect === 'Slide') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_PREV_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_END);\n }\n else {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n args.nextSlide.setAttribute('data-slide-height', args.nextSlide.offsetHeight.toString());\n addClass([args.currentSlide, args.nextSlide], CLS_TRANSITION_START);\n }\n }\n else if (_this.animationEffect === 'Fade') {\n removeClass([args.currentSlide], CLS_ACTIVE$2);\n addClass([args.nextSlide], CLS_ACTIVE$2);\n }\n else if (_this.animationEffect === 'Custom') {\n if (direction === 'Previous') {\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n }\n else {\n addClass([args.currentSlide], CLS_PREV_SLIDE);\n addClass([args.nextSlide], CLS_NEXT_SLIDE);\n }\n }\n else {\n _this.onTransitionEnd();\n }\n _this.handleNavigatorsActions(currentIndex);\n });\n };\n Carousel.prototype.onTransitionEnd = function () {\n var _this = this;\n if (this.slideChangedEventArgs) {\n if (this.partialVisible && this.loop && (this.slideChangedEventArgs.currentIndex === 0 && this.slideChangedEventArgs.slideDirection === 'Next' ||\n this.slideChangedEventArgs.currentIndex === this.slideItems.length - 1 && this.slideChangedEventArgs.slideDirection === 'Previous')) {\n var container = this.element.querySelector('.' + CLS_ITEMS$2);\n var slideWidth = this.slideChangedEventArgs.currentSlide.clientWidth;\n container.style.transitionProperty = 'none';\n container.style.transform = \"translate(\" + -(slideWidth) * (this.slideChangedEventArgs.currentIndex + 2) + \"px)\";\n }\n addClass([this.slideChangedEventArgs.currentSlide], CLS_ACTIVE$2);\n removeClass([this.slideChangedEventArgs.previousSlide], CLS_ACTIVE$2);\n this.trigger('slideChanged', this.slideChangedEventArgs, function () {\n removeClass(_this.element.querySelectorAll(\".\" + CLS_ITEM$3), [CLS_PREV_SLIDE, CLS_NEXT_SLIDE, CLS_TRANSITION_START, CLS_TRANSITION_END]);\n _this.slideChangedEventArgs = null;\n });\n }\n };\n Carousel.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n Carousel.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n Carousel.prototype.getNavigatorState = function (target, isPrevious) {\n var button = target.querySelector(\".\" + (isPrevious ? CLS_PREV_BUTTON : CLS_NEXT_BUTTON));\n if (button) {\n var buttonObj = getInstance(button, Button);\n return buttonObj.disabled;\n }\n return false;\n };\n Carousel.prototype.navigatorClickHandler = function (e) {\n var target = e.currentTarget;\n var isDisabled = this.getNavigatorState(target, target.classList.contains(CLS_PREVIOUS));\n if (isDisabled) {\n return;\n }\n var direction = target.classList.contains(CLS_PREVIOUS) ? 'Previous' : 'Next';\n this.setActiveSlide(this.getSlideIndex(direction), direction);\n this.autoSlide();\n };\n Carousel.prototype.indicatorClickHandler = function (e) {\n var target = closest(e.target, \".\" + CLS_INDICATOR_BAR);\n var index = parseInt(target.dataset.index, 10);\n if (this.selectedIndex !== index) {\n this.setActiveSlide(index, this.selectedIndex > index ? 'Previous' : 'Next');\n this.autoSlide();\n }\n };\n Carousel.prototype.playButtonClickHandler = function (e, isPropertyChange) {\n if (isPropertyChange === void 0) { isPropertyChange = false; }\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n if (playButton) {\n var buttonObj = getInstance(playButton, Button);\n if (!isPropertyChange) {\n this.setProperties({ autoPlay: !this.autoPlay }, true);\n }\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n buttonObj.iconCss = CLS_ICON$1 + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n var itemsContainer = this.element.querySelector(\".\" + CLS_ITEMS$2);\n itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n if (this.autoPlay && !this.loop && this.selectedIndex === this.slideItems.length - 1) {\n this.setActiveSlide(0, 'Next');\n }\n this.autoSlide();\n }\n };\n Carousel.prototype.keyHandler = function (e) {\n var direction;\n var slideIndex;\n var isSlideTransition = false;\n var target = e.target;\n e.preventDefault();\n switch (e.action) {\n case 'space':\n if (this.showIndicators && target.classList.contains(CLS_INDICATOR$1)) {\n target.click();\n }\n else if (target.classList.contains(CLS_CAROUSEL) || target.classList.contains(CLS_PLAY_BUTTON)) {\n this.playButtonClickHandler(e);\n }\n else if (target.classList.contains(CLS_NEXT_BUTTON)) {\n this.next();\n }\n else if (target.classList.contains(CLS_PREV_BUTTON)) {\n this.prev();\n }\n break;\n case 'end':\n slideIndex = this.slideItems.length - 1;\n direction = 'Next';\n isSlideTransition = true;\n break;\n case 'home':\n slideIndex = 0;\n direction = 'Previous';\n isSlideTransition = true;\n break;\n case 'moveUp':\n case 'moveLeft':\n case 'moveDown':\n case 'moveRight':\n if (this.showIndicators && isNullOrUndefined(this.indicatorsTemplate)) {\n this.element.focus();\n }\n direction = (e.action === 'moveUp' || e.action === 'moveLeft') ? 'Previous' : 'Next';\n slideIndex = this.getSlideIndex(direction);\n isSlideTransition = !this.isSuspendSlideTransition(slideIndex, direction);\n break;\n }\n if (isSlideTransition) {\n this.setActiveSlide(slideIndex, direction);\n this.autoSlide();\n isSlideTransition = false;\n }\n };\n Carousel.prototype.swipeHandler = function (e) {\n if (this.element.classList.contains(CLS_HOVER) || isNullOrUndefined(this.slideItems) || this.slideItems.length <= 1) {\n return;\n }\n var direction = (e.swipeDirection === 'Right') ? 'Previous' : 'Next';\n var slideIndex = this.getSlideIndex(direction);\n if (!this.isSuspendSlideTransition(slideIndex, direction)) {\n this.setActiveSlide(slideIndex, direction, true);\n this.autoSlide();\n }\n };\n Carousel.prototype.isSuspendSlideTransition = function (index, direction) {\n return !this.loop && (direction === 'Next' && index === 0 || direction === 'Previous' && index === this.slideItems.length - 1);\n };\n Carousel.prototype.handleNavigatorsActions = function (index) {\n if (this.buttonsVisibility === 'Hidden') {\n return;\n }\n if (this.showPlayButton) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n var isLastSlide = this.selectedIndex === this.slideItems.length - 1 && !this.loop;\n var isButtonUpdate = isNullOrUndefined(this.playButtonTemplate) && playButton && isLastSlide;\n if (isNullOrUndefined(this.playButtonTemplate) && playButton && !isLastSlide) {\n isButtonUpdate = !playButton.classList.contains(CLS_ACTIVE$2);\n }\n if (isButtonUpdate) {\n this.setProperties({ autoPlay: !isLastSlide }, true);\n playButton.setAttribute('aria-label', this.localeObj.getConstant(this.autoPlay ? 'pauseSlideTransition' : 'playSlideTransition'));\n var itemsContainer = this.element.querySelector(\".\" + CLS_ITEMS$2);\n itemsContainer.setAttribute('aria-live', this.autoPlay ? 'off' : 'polite');\n var buttonObj = getInstance(playButton, Button);\n buttonObj.iconCss = CLS_ICON$1 + ' ' + (this.autoPlay ? CLS_PAUSE_ICON : CLS_PLAY_ICON);\n buttonObj.dataBind();\n }\n }\n var prevButton = this.element.querySelector(\".\" + CLS_PREV_BUTTON);\n if (prevButton && isNullOrUndefined(this.previousButtonTemplate)) {\n var buttonObj = getInstance(prevButton, Button);\n buttonObj.disabled = !this.loop && index === 0;\n buttonObj.dataBind();\n }\n var nextButton = this.element.querySelector(\".\" + CLS_NEXT_BUTTON);\n if (nextButton && isNullOrUndefined(this.nextButtonTemplate)) {\n var buttonObj = getInstance(nextButton, Button);\n buttonObj.disabled = !this.loop && index === this.slideItems.length - 1;\n buttonObj.dataBind();\n }\n };\n Carousel.prototype.onHoverActions = function (e) {\n var navigator = this.element.querySelector(\".\" + CLS_NAVIGATORS);\n switch (e.type) {\n case 'mouseenter':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n removeClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n if (this.pauseOnHover) {\n addClass([this.element], CLS_HOVER);\n }\n break;\n case 'mouseleave':\n if (this.buttonsVisibility === 'VisibleOnHover' && navigator) {\n addClass([].slice.call(navigator.childNodes), CLS_HOVER_ARROWS);\n }\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.onFocusActions = function (e) {\n switch (e.type) {\n case 'focusin':\n addClass([this.element], CLS_HOVER);\n break;\n case 'focusout':\n removeClass([this.element], CLS_HOVER);\n break;\n }\n this.autoSlide();\n };\n Carousel.prototype.destroyButtons = function () {\n var buttonCollections = [].slice.call(this.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = getInstance(button, Button);\n if (instance) {\n instance.destroy();\n }\n }\n };\n Carousel.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focusin focusout', this.onFocusActions, this);\n EventHandler.add(this.element, 'mouseenter mouseleave', this.onHoverActions, this);\n EventHandler.add(this.element.firstElementChild, 'animationend', this.onTransitionEnd, this);\n EventHandler.add(this.element.firstElementChild, 'transitionend', this.onTransitionEnd, this);\n };\n Carousel.prototype.unWireEvents = function () {\n var _this = this;\n var indicators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_INDICATOR_BAR));\n indicators.forEach(function (indicator) {\n EventHandler.remove(indicator, 'click', _this.indicatorClickHandler);\n });\n var navigators = [].slice.call(this.element.querySelectorAll(\".\" + CLS_PREVIOUS + \",.\" + CLS_NEXT));\n navigators.forEach(function (navigator) {\n EventHandler.remove(navigator, 'click', _this.navigatorClickHandler);\n });\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_PAUSE);\n if (playIcon) {\n EventHandler.remove(playIcon, 'click', this.playButtonClickHandler);\n }\n EventHandler.remove(this.element.firstElementChild, 'animationend', this.onTransitionEnd);\n EventHandler.remove(this.element.firstElementChild, 'transitionend', this.onTransitionEnd);\n EventHandler.clearEvents(this.element);\n };\n /**\n * Method to transit from the current slide to the previous slide.\n *\n * @returns {void}\n */\n Carousel.prototype.prev = function () {\n if (!this.loop && this.selectedIndex === 0) {\n return;\n }\n var index = (this.selectedIndex === 0) ? this.slideItems.length - 1 : this.selectedIndex - 1;\n this.setActiveSlide(index, 'Previous');\n this.autoSlide();\n };\n /**\n * Method to transit from the current slide to the next slide.\n *\n * @returns {void}\n */\n Carousel.prototype.next = function () {\n if (!this.loop && this.selectedIndex === this.slideItems.length - 1) {\n return;\n }\n var index = (this.selectedIndex === this.slideItems.length - 1) ? 0 : this.selectedIndex + 1;\n this.setActiveSlide(index, 'Next');\n this.autoSlide();\n };\n /**\n * Method to play the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.play = function () {\n var playIcon = this.element.querySelector(\".\" + CLS_PLAY_ICON);\n if (this.showPlayButton && playIcon) {\n classList(playIcon, [CLS_PAUSE_ICON], [CLS_PLAY_ICON]);\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('pauseSlideTransition'));\n }\n this.setProperties({ autoPlay: true }, true);\n var itemsContainer = this.element.querySelector(\".\" + CLS_ITEMS$2);\n itemsContainer.setAttribute('aria-live', 'off');\n this.applySlideInterval();\n };\n /**\n * Method to pause the slides programmatically.\n *\n * @returns {void}\n */\n Carousel.prototype.pause = function () {\n var pauseIcon = this.element.querySelector(\".\" + CLS_PAUSE_ICON);\n if (this.showPlayButton && pauseIcon) {\n var playButton = this.element.querySelector(\".\" + CLS_PLAY_BUTTON);\n playButton.setAttribute('aria-label', this.localeObj.getConstant('playSlideTransition'));\n classList(pauseIcon, [CLS_PLAY_ICON], [CLS_PAUSE_ICON]);\n }\n this.setProperties({ autoPlay: false }, true);\n var itemsContainer = this.element.querySelector(\".\" + CLS_ITEMS$2);\n itemsContainer.setAttribute('aria-live', 'off');\n this.resetSlideInterval();\n };\n /**\n * Method to render react and angular templates\n *\n * @returns {void}\n * @private\n */\n Carousel.prototype.renderTemplates = function () {\n if (this.isAngular || this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Method to reset react and angular templates\n *\n * @param {string[]} templates Accepts the template ID\n * @returns {void}\n * @private\n */\n Carousel.prototype.resetTemplates = function (templates) {\n if (this.isAngular || this.isReact) {\n this.clearTemplate(templates);\n }\n };\n /**\n * Method for destroy the carousel component.\n *\n * @returns {void}\n */\n Carousel.prototype.destroy = function () {\n var _this = this;\n this.resetTemplates();\n if (this.touchModule) {\n this.touchModule.destroy();\n this.touchModule = null;\n }\n this.keyModule.destroy();\n this.keyModule = null;\n this.resetSlideInterval();\n this.destroyButtons();\n this.unWireEvents();\n [].slice.call(this.element.children).forEach(function (ele) { _this.element.removeChild(ele); });\n removeClass([this.element], [CLS_CAROUSEL, this.cssClass, CLS_RTL$5]);\n ['tabindex', 'role', 'style'].forEach(function (attr) { _this.element.removeAttribute(attr); });\n _super.prototype.destroy.call(this);\n };\n __decorate$11([\n Collection([], CarouselItem)\n ], Carousel.prototype, \"items\", void 0);\n __decorate$11([\n Property('Slide')\n ], Carousel.prototype, \"animationEffect\", void 0);\n __decorate$11([\n Property()\n ], Carousel.prototype, \"previousButtonTemplate\", void 0);\n __decorate$11([\n Property()\n ], Carousel.prototype, \"nextButtonTemplate\", void 0);\n __decorate$11([\n Property()\n ], Carousel.prototype, \"indicatorsTemplate\", void 0);\n __decorate$11([\n Property()\n ], Carousel.prototype, \"playButtonTemplate\", void 0);\n __decorate$11([\n Property()\n ], Carousel.prototype, \"cssClass\", void 0);\n __decorate$11([\n Property([])\n ], Carousel.prototype, \"dataSource\", void 0);\n __decorate$11([\n Property()\n ], Carousel.prototype, \"itemTemplate\", void 0);\n __decorate$11([\n Property(0)\n ], Carousel.prototype, \"selectedIndex\", void 0);\n __decorate$11([\n Property('100%')\n ], Carousel.prototype, \"width\", void 0);\n __decorate$11([\n Property('100%')\n ], Carousel.prototype, \"height\", void 0);\n __decorate$11([\n Property(5000)\n ], Carousel.prototype, \"interval\", void 0);\n __decorate$11([\n Property(true)\n ], Carousel.prototype, \"autoPlay\", void 0);\n __decorate$11([\n Property(true)\n ], Carousel.prototype, \"pauseOnHover\", void 0);\n __decorate$11([\n Property(true)\n ], Carousel.prototype, \"loop\", void 0);\n __decorate$11([\n Property(false)\n ], Carousel.prototype, \"showPlayButton\", void 0);\n __decorate$11([\n Property(true)\n ], Carousel.prototype, \"enableTouchSwipe\", void 0);\n __decorate$11([\n Property(true)\n ], Carousel.prototype, \"showIndicators\", void 0);\n __decorate$11([\n Property('Visible')\n ], Carousel.prototype, \"buttonsVisibility\", void 0);\n __decorate$11([\n Property(false)\n ], Carousel.prototype, \"partialVisible\", void 0);\n __decorate$11([\n Property()\n ], Carousel.prototype, \"htmlAttributes\", void 0);\n __decorate$11([\n Event()\n ], Carousel.prototype, \"slideChanging\", void 0);\n __decorate$11([\n Event()\n ], Carousel.prototype, \"slideChanged\", void 0);\n Carousel = __decorate$11([\n NotifyPropertyChanges\n ], Carousel);\n return Carousel;\n}(Component));\n\n/** Carousel export modules */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\n// Constant variables\nvar CLS_APPBAR = 'e-appbar';\nvar CLS_HORIZONTAL_BOTTOM = 'e-horizontal-bottom';\nvar CLS_STICKY = 'e-sticky';\nvar CLS_PROMINENT = 'e-prominent';\nvar CLS_DENSE = 'e-dense';\nvar CLS_RTL$6 = 'e-rtl';\nvar CLS_LIGHT = 'e-light';\nvar CLS_DARK = 'e-dark';\nvar CLS_PRIMARY = 'e-primary';\nvar CLS_INHERIT = 'e-inherit';\n/**\n * The AppBar displays the information and actions related to the current application screen. It is used to show branding, screen titles, navigation, and actions.\n * Support to inherit colors from AppBar provided to Button, DropDownButton, Menu and TextBox.\n * Set CssClass property with e-inherit CSS class to inherit the background and color from AppBar.\n */\nvar AppBar = /** @__PURE__ @class */ (function (_super) {\n __extends$12(AppBar, _super);\n /**\n * Constructor for creating the AppBar widget\n *\n * @param {AppBarModel} options Accepts the AppBar model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function AppBar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n AppBar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.element.classList.remove(CLS_APPBAR);\n this.element.removeAttribute('style');\n this.element.removeAttribute('role');\n };\n AppBar.prototype.getModuleName = function () {\n return 'appbar';\n };\n AppBar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n AppBar.prototype.preRender = function () {\n // pre render code\n };\n AppBar.prototype.render = function () {\n if (this.element.tagName !== 'HEADER') {\n this.element.setAttribute('role', 'header');\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n if (this.position === 'Bottom') {\n this.element.classList.add(CLS_HORIZONTAL_BOTTOM);\n }\n if (this.isSticky) {\n this.element.classList.add(CLS_STICKY);\n }\n if (this.enableRtl) {\n this.element.classList.add(CLS_RTL$6);\n }\n this.setHeightMode();\n this.setColorMode();\n if (!isNullOrUndefined(this.htmlAttributes)) {\n this.setHtmlAttributes(this.htmlAttributes, this.element);\n }\n };\n AppBar.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'mode':\n removeClass([this.element], [CLS_DENSE, CLS_PROMINENT]);\n this.setHeightMode();\n break;\n case 'position':\n if (this.position === 'Bottom') {\n addClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n else {\n removeClass([this.element], CLS_HORIZONTAL_BOTTOM);\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'isSticky':\n if (this.isSticky) {\n addClass([this.element], CLS_STICKY);\n }\n else {\n removeClass([this.element], CLS_STICKY);\n }\n break;\n case 'htmlAttributes':\n if (!isNullOrUndefined(this.htmlAttributes)) {\n if (!isNullOrUndefined(oldProp.htmlAttributes)) {\n var keys = Object.keys(oldProp.htmlAttributes);\n for (var _b = 0, keys_1 = keys; _b < keys_1.length; _b++) {\n var key = keys_1[_b];\n if (key === 'class') {\n removeClass([this.element], oldProp.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.removeAttribute(key);\n }\n }\n }\n this.setHtmlAttributes(newProp.htmlAttributes, this.element);\n }\n break;\n case 'colorMode':\n removeClass([this.element], [CLS_DARK, CLS_PRIMARY, CLS_INHERIT, CLS_LIGHT]);\n this.setColorMode();\n break;\n case 'enableRtl':\n if (this.enableRtl) {\n addClass([this.element], CLS_RTL$6);\n }\n else {\n removeClass([this.element], CLS_RTL$6);\n }\n break;\n }\n }\n };\n AppBar.prototype.setHtmlAttributes = function (attribute, element) {\n var keys = Object.keys(attribute);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n if (key === 'class') {\n addClass([element], attribute[\"\" + key]);\n }\n else {\n element.setAttribute(key, attribute[\"\" + key]);\n }\n }\n };\n AppBar.prototype.setHeightMode = function () {\n if (this.mode === 'Prominent') {\n this.element.classList.add(CLS_PROMINENT);\n }\n else if (this.mode === 'Dense') {\n this.element.classList.add(CLS_DENSE);\n }\n };\n AppBar.prototype.setColorMode = function () {\n switch (this.colorMode) {\n case 'Light':\n this.element.classList.add(CLS_LIGHT);\n break;\n case 'Dark':\n this.element.classList.add(CLS_DARK);\n break;\n case 'Primary':\n this.element.classList.add(CLS_PRIMARY);\n break;\n case 'Inherit':\n this.element.classList.add(CLS_INHERIT);\n break;\n }\n };\n __decorate$12([\n Property('Regular')\n ], AppBar.prototype, \"mode\", void 0);\n __decorate$12([\n Property('Top')\n ], AppBar.prototype, \"position\", void 0);\n __decorate$12([\n Property()\n ], AppBar.prototype, \"cssClass\", void 0);\n __decorate$12([\n Property(false)\n ], AppBar.prototype, \"isSticky\", void 0);\n __decorate$12([\n Property()\n ], AppBar.prototype, \"htmlAttributes\", void 0);\n __decorate$12([\n Property('Light')\n ], AppBar.prototype, \"colorMode\", void 0);\n __decorate$12([\n Event()\n ], AppBar.prototype, \"created\", void 0);\n __decorate$12([\n Event()\n ], AppBar.prototype, \"destroyed\", void 0);\n AppBar = __decorate$12([\n NotifyPropertyChanges\n ], AppBar);\n return AppBar;\n}(Component));\n\n/** AppBar export modules */\n\n/**\n * Navigation all modules\n */\n\nexport { MenuAnimationSettings, MenuItem, FieldSettings, HScroll, VScroll, addScrolling, destroyScroll, Item, Toolbar, AccordionActionSettings, AccordionAnimationSettings, AccordionItem, Accordion, ContextMenu, Menu, TabActionSettings, TabAnimationSettings, Header, TabItem, Tab, FieldsSettings, ActionSettings, NodeAnimationSettings, TreeView, Sidebar, BreadcrumbItem, Breadcrumb, CarouselItem, Carousel, AppBar };\n","import { Animation, Browser, ChildProperty, Collection, Complex, Component, Event, EventHandler, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getUniqueID, isBlazor, isNullOrUndefined, isUndefined, removeClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { getZindexPartial } from '@syncfusion/ej2-popups';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 ROOT = 'e-toast';\nvar CONTAINER = 'e-toast-container';\nvar TITLE = 'e-toast-title';\nvar WIDTHFULL = 'e-toast-full-width';\nvar CONTENT = 'e-toast-content';\nvar MESSAGE = 'e-toast-message';\nvar ICON = 'e-toast-icon';\nvar PROGRESS = 'e-toast-progress';\nvar ACTIOBUTTONS = 'e-toast-actions';\nvar CLOSEBTN = 'e-toast-close-icon';\nvar RTL = 'e-rtl';\nvar TOAST_BLAZOR_HIDDEN = 'e-blazor-toast-hidden';\n/**\n * An object that is used to configure the Toast X Y positions.\n */\nvar ToastPosition = /** @__PURE__ @class */ (function (_super) {\n __extends(ToastPosition, _super);\n function ToastPosition() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Left')\n ], ToastPosition.prototype, \"X\", void 0);\n __decorate([\n Property('Top')\n ], ToastPosition.prototype, \"Y\", void 0);\n return ToastPosition;\n}(ChildProperty));\n/**\n * An object that is used to configure the action button model properties and event.\n */\nvar ButtonModelProps = /** @__PURE__ @class */ (function (_super) {\n __extends(ButtonModelProps, _super);\n function ButtonModelProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(null)\n ], ButtonModelProps.prototype, \"model\", void 0);\n __decorate([\n Property(null)\n ], ButtonModelProps.prototype, \"click\", void 0);\n return ButtonModelProps;\n}(ChildProperty));\n/**\n * An object that is used to configure the animation object of Toast.\n */\nvar ToastAnimations = /** @__PURE__ @class */ (function (_super) {\n __extends(ToastAnimations, _super);\n function ToastAnimations() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('FadeIn')\n ], ToastAnimations.prototype, \"effect\", void 0);\n __decorate([\n Property(600)\n ], ToastAnimations.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], ToastAnimations.prototype, \"easing\", void 0);\n return ToastAnimations;\n}(ChildProperty));\n/**\n * An object that is used to configure the show/hide animation settings of Toast.\n */\nvar ToastAnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends(ToastAnimationSettings, _super);\n function ToastAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'FadeIn', duration: 600, easing: 'ease' }, ToastAnimations)\n ], ToastAnimationSettings.prototype, \"show\", void 0);\n __decorate([\n Complex({ effect: 'FadeOut', duration: 600, easing: 'ease' }, ToastAnimations)\n ], ToastAnimationSettings.prototype, \"hide\", void 0);\n return ToastAnimationSettings;\n}(ChildProperty));\n/**\n * The Toast is a notification pop-up that showing on desired position which can provide an information to the user.\n * ```html\n *
    \n * \n * ```\n */\nvar Toast = /** @__PURE__ @class */ (function (_super) {\n __extends(Toast, _super);\n /**\n * Initializes a new instance of the Toast class.\n *\n * @param {ToastModel} options - Specifies Toast model properties as options.\n * @param {HTMLElement} element - Specifies the element that is rendered as a Toast.\n */\n function Toast(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.toastCollection = [];\n _this.needsID = true;\n return _this;\n }\n /**\n * Gets the Component module name.\n *\n * @returns {string} - returns the string\n * @private\n */\n Toast.prototype.getModuleName = function () {\n return 'toast';\n };\n /**\n * Gets the persisted state properties of the Component.\n *\n * @returns {string} - returns the string\n */\n Toast.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers, attributes and classes.\n *\n * @returns {void}\n */\n Toast.prototype.destroy = function () {\n this.hide('All');\n this.element.classList.remove(CONTAINER);\n setStyleAttribute(this.element, { 'position': '', 'z-index': '' });\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore(this.element, this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (!this.isBlazorServer()) {\n _super.prototype.destroy.call(this);\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.preRender = function () {\n //There is no event handler\n this.isDevice = Browser.isDevice;\n if (this.width === '300px') {\n this.width = (this.isDevice && screen.width < 768) ? '100%' : '300px';\n }\n if (isNullOrUndefined(this.target)) {\n this.target = document.body;\n }\n if (this.enableRtl && !this.isBlazorServer()) {\n this.element.classList.add(RTL);\n }\n };\n /**\n * Initialize the component rendering\n *\n * @returns {void}\n * @private\n */\n Toast.prototype.render = function () {\n this.progressObj = [];\n this.intervalId = [];\n this.contentTemplate = null;\n this.toastTemplate = null;\n this.renderComplete();\n this.initRenderClass = this.element.className;\n };\n /**\n * To show Toast element on a document with the relative position.\n *\n * @param {ToastModel} toastObj - To show Toast element on screen.\n * @returns {void}\n * @deprecated\n */\n Toast.prototype.show = function (toastObj) {\n var collectionObj;\n if (!isNullOrUndefined(toastObj)) {\n this.templateChanges(toastObj);\n collectionObj = JSON.parse(JSON.stringify(toastObj));\n extend(this, this, toastObj);\n }\n if (isNullOrUndefined(this.toastContainer)) {\n this.toastContainer = this.getContainer();\n var target = typeof (this.target) === 'string' ? document.querySelector(this.target) :\n (typeof (this.target) === 'object' ? this.target : document.body);\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.tagName === 'BODY') {\n this.toastContainer.style.position = 'fixed';\n }\n else {\n this.toastContainer.style.position = 'absolute';\n target.style.position = 'relative';\n }\n this.setPositioning(this.position);\n target.appendChild(this.toastContainer);\n }\n if (this.isBlazorServer() && this.element.classList.contains('e-control')) {\n this.isToastModel(toastObj);\n return;\n }\n this.toastEle = this.createElement('div', { className: ROOT, id: getUniqueID('toast') });\n this.setWidthHeight();\n this.setCSSClass(this.cssClass);\n // eslint-disable-next-line\n (isNullOrUndefined(this.template) || this.template === '') ? this.personalizeToast() : this.templateRendering();\n this.setProgress();\n this.setCloseButton();\n this.setAria();\n this.appendToTarget(toastObj);\n if (this.isDevice && screen.width < 768) {\n new Touch(this.toastEle, { swipe: this.swipeHandler.bind(this) });\n }\n if (!isNullOrUndefined(collectionObj)) {\n extend(collectionObj, { element: [this.toastEle] }, true);\n this.toastCollection.push(collectionObj);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * @param {string} id - specifies the id\n * @param {ToastModel} toastObj - specifies the model\n * @returns {void}\n * @hidden\n * @deprecated\n * This method applicable for blazor alone.\n */\n Toast.prototype.showToast = function (id, toastObj) {\n this.toastEle = this.element.querySelector('#' + id);\n this.show(toastObj);\n };\n Toast.prototype.isToastModel = function (toastObj) {\n this.toastContainer = this.element;\n this.setPositioning(this.position);\n // eslint-disable-next-line\n var proxy = this;\n if (!isNullOrUndefined(proxy.element.lastElementChild)) {\n this.setProgress();\n }\n this.setAria();\n this.appendToTarget(toastObj);\n };\n Toast.prototype.swipeHandler = function (e) {\n var toastEle = closest(e.originalEvent.target, '.' + ROOT + ':not(.' + CONTAINER + ')');\n var hideAnimation = this.animation.hide.effect;\n if (!isNullOrUndefined(toastEle)) {\n if (e.swipeDirection === 'Right') {\n this.animation.hide.effect = 'SlideRightOut';\n this.hideToast('swipe', toastEle);\n }\n else if (e.swipeDirection === 'Left') {\n this.animation.hide.effect = 'SlideLeftOut';\n this.hideToast('swipe', toastEle);\n }\n this.animation.hide.effect = hideAnimation;\n }\n };\n Toast.prototype.templateChanges = function (toastObj) {\n if (!isUndefined(toastObj.content) && !isNullOrUndefined(this.contentTemplate) && this.content !== toastObj.content) {\n this.clearContentTemplate();\n }\n if (!isUndefined(toastObj.template) && !isNullOrUndefined(this.toastTemplate) && this.template !== toastObj.template) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.setCSSClass = function (cssClass) {\n if (cssClass) {\n var split = cssClass.indexOf(',') !== -1 ? ',' : ' ';\n classList(this.toastEle, cssClass.split(split), []);\n if (this.toastContainer) {\n classList(this.toastContainer, cssClass.split(split), []);\n }\n }\n };\n Toast.prototype.setWidthHeight = function () {\n if (this.width === '300px') {\n this.toastEle.style.width = formatUnit(this.width);\n }\n else if (this.width === '100%') {\n this.toastContainer.classList.add(WIDTHFULL);\n }\n else {\n this.toastEle.style.width = formatUnit(this.width);\n this.toastContainer.classList.remove(WIDTHFULL);\n }\n this.toastEle.style.height = formatUnit(this.height);\n };\n Toast.prototype.templateRendering = function () {\n this.fetchEle(this.toastEle, this.template, 'template');\n };\n /**\n * @param {string} value - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n */\n Toast.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n this.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n };\n /**\n * To Hide Toast element on a document.\n * To Hide all toast element when passing 'All'.\n *\n * @param {HTMLElement} element - To Hide Toast element on screen.\n * @returns {void}\n */\n Toast.prototype.hide = function (element) {\n this.hideToast('', element);\n };\n Toast.prototype.hideToast = function (interactionType, element) {\n if (isNullOrUndefined(this.toastContainer) || this.toastContainer.childElementCount === 0) {\n return;\n }\n if (typeof element === 'string' && element === 'All') {\n for (var i = 0; i < this.toastContainer.childElementCount; i++) {\n this.destroyToast(this.toastContainer.children[i], interactionType);\n }\n return;\n }\n if (isNullOrUndefined(element)) {\n element = (this.newestOnTop ? this.toastContainer.lastElementChild : this.toastContainer.firstElementChild);\n }\n this.destroyToast(element, interactionType);\n };\n Toast.prototype.fetchEle = function (ele, value, prob) {\n value = typeof (value) === 'string' ? this.sanitizeHelper(value) : value;\n // eslint-disable-next-line\n var templateFn;\n var tempVar;\n var tmpArray;\n var templateProps;\n if (ele.classList.contains(TITLE)) {\n templateProps = this.element.id + 'title';\n }\n else if (ele.classList.contains(CONTENT)) {\n templateProps = this.element.id + 'content';\n }\n else {\n templateProps = this.element.id + 'template';\n }\n // eslint-disable-next-line\n prob === 'content' ? tempVar = this.contentTemplate : tempVar = this.toastTemplate;\n if (!isNullOrUndefined(tempVar)) {\n ele.appendChild(tempVar.cloneNode(true));\n return ele;\n }\n try {\n if (document.querySelectorAll(value).length > 0) {\n var elem = null;\n if (prob !== 'title') {\n elem = document.querySelector(value);\n ele.appendChild(elem);\n elem.style.display = '';\n }\n var clo = isNullOrUndefined(elem) ? tempVar : elem.cloneNode(true);\n // eslint-disable-next-line\n prob === 'content' ? this.contentTemplate = clo : this.toastTemplate = clo;\n }\n else {\n templateFn = compile(value);\n }\n }\n catch (e) {\n templateFn = compile(value);\n // eslint-disable-next-line\n \n }\n if (!isNullOrUndefined(templateFn)) {\n if (!this.isBlazorServer()) {\n tmpArray = templateFn({}, this, prob, null, true);\n }\n else {\n var isString = true;\n tmpArray = templateFn({}, this, prob, templateProps, isString);\n }\n }\n if (!isNullOrUndefined(tmpArray) && tmpArray.length > 0 && !(isNullOrUndefined(tmpArray[0].tagName) && tmpArray.length === 1)) {\n [].slice.call(tmpArray).forEach(function (el) {\n if (!isNullOrUndefined(el.tagName)) {\n el.style.display = '';\n }\n ele.appendChild(el);\n });\n }\n else if (ele.childElementCount === 0) {\n ele.innerHTML = value;\n }\n return ele;\n };\n Toast.prototype.clearProgress = function (intervalId) {\n if (!isNullOrUndefined(this.intervalId[intervalId])) {\n clearInterval(this.intervalId[intervalId]);\n delete this.intervalId[intervalId];\n }\n if (!isNullOrUndefined(this.progressObj[intervalId])) {\n clearInterval(this.progressObj[intervalId].intervalId);\n delete this.progressObj[intervalId];\n }\n };\n Toast.prototype.removeToastContainer = function (isClosed) {\n if (isClosed && this.toastContainer.classList.contains('e-toast-util')) {\n detach(this.toastContainer);\n }\n };\n Toast.prototype.clearContainerPos = function (isClosed) {\n var _this = this;\n if (this.isBlazorServer()) {\n this.toastContainer = null;\n return;\n }\n if (this.customPosition) {\n setStyleAttribute(this.toastContainer, { 'left': '', 'top': '' });\n this.removeToastContainer(isClosed);\n this.toastContainer = null;\n this.customPosition = false;\n }\n else {\n [ROOT + '-top-left',\n ROOT + '-top-right',\n ROOT + '-bottom-left',\n ROOT + '-bottom-right',\n ROOT + '-bottom-center',\n ROOT + '-top-center',\n ROOT + '-full-width'].forEach(function (pos) {\n if (!isNullOrUndefined(_this.toastContainer) && _this.toastContainer.classList.contains(pos)) {\n _this.toastContainer.classList.remove(pos);\n }\n });\n this.removeToastContainer(isClosed);\n this.toastContainer = null;\n }\n if (!isNullOrUndefined(this.contentTemplate)) {\n this.clearContentTemplate();\n }\n if (!isNullOrUndefined(this.toastTemplate)) {\n this.clearToastTemplate();\n }\n };\n Toast.prototype.clearContentTemplate = function () {\n this.contentTemplate.style.display = 'none';\n document.body.appendChild(this.contentTemplate);\n this.contentTemplate = null;\n };\n Toast.prototype.clearToastTemplate = function () {\n this.toastTemplate.style.display = 'none';\n document.body.appendChild(this.toastTemplate);\n this.toastTemplate = null;\n };\n Toast.prototype.isBlazorServer = function () {\n return (isBlazor() && this.isServerRendered);\n };\n Toast.prototype.destroyToast = function (toastEle, interactionType) {\n var _this = this;\n var toastObj;\n for (var i = 0; i < this.toastCollection.length; i++) {\n if (this.toastCollection[i].element[0] === toastEle) {\n toastObj = this.toastCollection[i];\n this.toastCollection.splice(i, 1);\n }\n }\n var toastBeforeClose = {\n options: this,\n cancel: false,\n type: interactionType,\n element: toastEle,\n toastContainer: this.toastContainer\n };\n var hideAnimate = this.animation.hide;\n var animate = {\n duration: hideAnimate.duration, name: hideAnimate.effect, timingFunction: hideAnimate.easing\n };\n var intervalId = parseInt(toastEle.id.split('toast_')[1], 10);\n var toastClose = this.isBlazorServer() ? {\n options: toastObj,\n toastContainer: this.toastContainer\n } : {\n options: toastObj,\n toastContainer: this.toastContainer,\n toastObj: this\n };\n this.trigger('beforeClose', toastBeforeClose, function (toastBeforeCloseArgs) {\n if (!toastBeforeCloseArgs.cancel) {\n if (!isNullOrUndefined(_this.progressObj[intervalId]) && !isNullOrUndefined(toastEle.querySelector('.' + PROGRESS))) {\n _this.progressObj[intervalId].progressEle.style.width = '0%';\n }\n animate.end = function () {\n _this.clearProgress(intervalId);\n if (!_this.isBlazorServer() || isNullOrUndefined(toastObj)) {\n detach(toastEle);\n }\n _this.trigger('close', toastClose);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos(true);\n }\n hideAnimate = null;\n animate = null;\n };\n new Animation(animate).animate(toastEle);\n }\n });\n };\n Toast.prototype.personalizeToast = function () {\n this.setIcon();\n this.setTitle();\n this.setContent();\n this.actionButtons();\n };\n Toast.prototype.setAria = function () {\n attributes(this.toastEle, { 'role': 'alert' });\n };\n Toast.prototype.setPositioning = function (pos) {\n if (this.isBlazorServer()) {\n return;\n }\n if (!isNaN(parseFloat(pos.X)) || !isNaN(parseFloat(pos.Y))) {\n this.customPosition = true;\n setStyleAttribute(this.toastContainer, { 'left': formatUnit(pos.X), 'top': formatUnit(pos.Y) });\n }\n else {\n this.toastContainer.classList.add(ROOT + '-' + pos.Y.toString().toLowerCase() + '-' + pos.X.toString().toLowerCase());\n }\n };\n Toast.prototype.setCloseButton = function () {\n if (!this.showCloseButton) {\n return;\n }\n // eslint-disable-next-line\n var localeText = { close: 'Close' };\n this.l10n = new L10n('toast', localeText, this.locale);\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n var closeBtn = this.createElement('div', { className: CLOSEBTN + ' e-icons ', attrs: { tabindex: '0', 'aria-label': closeIconTitle, 'role': 'button' } });\n this.toastEle.classList.add('e-toast-header-close-icon');\n this.toastEle.appendChild(closeBtn);\n };\n Toast.prototype.setProgress = function () {\n if (this.timeOut > 0) {\n var id = parseInt(this.toastEle.id.split('toast_')[1], 10);\n this.intervalId[id] = window.setTimeout(this.destroyToast.bind(this, this.toastEle), this.timeOut);\n this.progressObj[id] = { hideEta: null, intervalId: null, maxHideTime: null,\n element: null, timeOutId: null, progressEle: null };\n this.progressObj[id].maxHideTime = parseFloat(this.timeOut + '');\n this.progressObj[id].hideEta = new Date().getTime() + this.progressObj[id].maxHideTime;\n this.progressObj[id].element = this.toastEle;\n if (this.extendedTimeout > 0) {\n EventHandler.add(this.toastEle, 'mouseover', this.toastHoverAction.bind(this, id));\n EventHandler.add(this.toastEle, 'mouseleave', this.delayedToastProgress.bind(this, id));\n this.progressObj[id].timeOutId = this.intervalId[id];\n }\n if (this.showProgressBar) {\n this.progressBarEle = this.createElement('div', { className: PROGRESS });\n this.toastEle.insertBefore(this.progressBarEle, this.toastEle.children[0]);\n // eslint-disable-next-line max-len\n this.progressObj[id].intervalId = setInterval(this.updateProgressBar.bind(this, this.progressObj[id]), 10);\n this.progressObj[id].progressEle = this.progressBarEle;\n }\n }\n };\n Toast.prototype.toastHoverAction = function (id) {\n clearTimeout(this.progressObj[id].timeOutId);\n clearInterval(this.progressObj[id].intervalId);\n this.progressObj[id].hideEta = 0;\n var toastEle = this.progressObj[id].element;\n if (!isNullOrUndefined(toastEle.querySelector('.' + PROGRESS))) {\n this.progressObj[id].progressEle.style.width = '0%';\n }\n };\n Toast.prototype.delayedToastProgress = function (id) {\n var progress = this.progressObj[id];\n var toastEle = progress.element;\n progress.timeOutId = window.setTimeout(this.destroyToast.bind(this, toastEle), this.extendedTimeout);\n progress.maxHideTime = parseFloat(this.extendedTimeout + '');\n progress.hideEta = new Date().getTime() + progress.maxHideTime;\n if (!isNullOrUndefined(toastEle.querySelector('.' + PROGRESS))) {\n progress.intervalId = setInterval(this.updateProgressBar.bind(this, progress), 10);\n }\n };\n Toast.prototype.updateProgressBar = function (progressObj) {\n var percentage = ((progressObj.hideEta - (new Date().getTime())) / progressObj.maxHideTime) * 100;\n percentage = this.progressDirection === 'Ltr' ? 100 - percentage : percentage;\n progressObj.progressEle.style.width = percentage + '%';\n };\n Toast.prototype.setIcon = function () {\n if (isNullOrUndefined(this.icon) || this.icon.length === 0) {\n return;\n }\n var iconEle = this.createElement('div', { className: ICON + ' e-icons ' + this.icon });\n this.toastEle.classList.add('e-toast-header-icon');\n this.toastEle.appendChild(iconEle);\n };\n Toast.prototype.setTitle = function () {\n if (isNullOrUndefined(this.title)) {\n return;\n }\n var titleEle = this.createElement('div', { className: TITLE });\n titleEle = this.fetchEle(titleEle, this.title, 'title');\n var msgContainer = this.createElement('div', { className: MESSAGE });\n msgContainer.appendChild(titleEle);\n this.toastEle.appendChild(msgContainer);\n };\n Toast.prototype.setContent = function () {\n var contentEle = this.createElement('div', { className: CONTENT });\n var ele = this.element;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s/g, '') !== '';\n if ((ele.children.length > 0 || isContent) && !(ele.firstElementChild && ele.firstElementChild.classList.contains(ROOT))) {\n this.innerEle = document.createDocumentFragment();\n var tempEle_1 = this.createElement('div');\n while (ele.childNodes.length !== 0) {\n this.innerEle.appendChild(this.element.childNodes[0]);\n }\n contentEle.appendChild(this.innerEle);\n [].slice.call(contentEle.children).forEach(function (ele) {\n tempEle_1.appendChild(ele.cloneNode(true));\n });\n this.content = tempEle_1;\n this.appendMessageContainer(contentEle);\n }\n }\n else {\n if (typeof (this.content) === 'object' && !isNullOrUndefined(this.content.tagName)) {\n contentEle.appendChild(this.content);\n this.content = this.content.cloneNode(true);\n this.appendMessageContainer(contentEle);\n }\n else {\n contentEle = this.fetchEle(contentEle, this.content, 'content');\n this.appendMessageContainer(contentEle);\n }\n }\n };\n Toast.prototype.appendMessageContainer = function (element) {\n if (this.toastEle.querySelectorAll('.' + MESSAGE).length > 0) {\n this.toastEle.querySelector('.' + MESSAGE).appendChild(element);\n }\n else {\n var msgContainer = this.createElement('div', { className: MESSAGE });\n msgContainer.appendChild(element);\n this.toastEle.appendChild(msgContainer);\n }\n };\n Toast.prototype.actionButtons = function () {\n var _this = this;\n var actionBtnContainer = this.createElement('div', { className: ACTIOBUTTONS });\n [].slice.call(this.buttons).forEach(function (actionBtn) {\n if (isNullOrUndefined(actionBtn.model)) {\n return;\n }\n var btnDom = _this.createElement('button');\n btnDom.setAttribute('type', 'button');\n if (isNullOrUndefined(actionBtn.model.cssClass) || actionBtn.model.cssClass.length === 0) {\n actionBtn.model.cssClass = 'e-primary' + ' ' + _this.cssClass;\n }\n btnDom.classList.add('e-small');\n new Button(actionBtn.model, btnDom);\n if (!isNullOrUndefined(actionBtn.click) && typeof (actionBtn.click) === 'function') {\n EventHandler.add(btnDom, 'click', actionBtn.click);\n }\n actionBtnContainer.appendChild(btnDom);\n });\n if (actionBtnContainer.childElementCount > 0) {\n this.appendMessageContainer(actionBtnContainer);\n }\n };\n Toast.prototype.appendToTarget = function (toastObj) {\n var _this = this;\n var toastBeforeOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle,\n cancel: false\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle,\n cancel: false\n };\n this.trigger('beforeOpen', toastBeforeOpen, function (toastBeforeOpenArgs) {\n if (!toastBeforeOpenArgs.cancel) {\n if (!_this.isBlazorServer()) {\n _this.toastEle.style.display = 'none';\n }\n if (_this.newestOnTop && _this.toastContainer.childElementCount !== 0) {\n _this.toastContainer.insertBefore(_this.toastEle, _this.toastContainer.children[0]);\n }\n else if (!_this.isBlazorServer()) {\n _this.toastContainer.appendChild(_this.toastEle);\n }\n removeClass([_this.toastEle], TOAST_BLAZOR_HIDDEN);\n EventHandler.add(_this.toastEle, 'click', _this.clickHandler, _this);\n EventHandler.add(_this.toastEle, 'keydown', _this.keyDownHandler, _this);\n _this.toastContainer.style.zIndex = getZindexPartial(_this.toastContainer) + '';\n _this.displayToast(_this.toastEle, toastObj);\n }\n else if (_this.isBlazorServer()) {\n var intervalId = parseInt(_this.toastEle.id.split('toast_')[1], 10);\n _this.clearProgress(intervalId);\n detach(_this.toastEle);\n if (_this.toastContainer.childElementCount === 0) {\n _this.clearContainerPos();\n }\n }\n });\n };\n Toast.prototype.clickHandler = function (e) {\n var _this = this;\n if (!this.isBlazorServer()) {\n e.stopPropagation();\n }\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n var clickArgs = this.isBlazorServer() ? {\n element: toastEle, cancel: false, clickToClose: false, originalEvent: e\n } : {\n element: toastEle, cancel: false, clickToClose: false, originalEvent: e, toastObj: this\n };\n var isCloseIcon = target.classList.contains(CLOSEBTN);\n this.trigger('click', clickArgs, function (toastClickArgs) {\n if ((isCloseIcon && !toastClickArgs.cancel) || toastClickArgs.clickToClose) {\n _this.destroyToast(toastEle, 'click');\n }\n });\n };\n Toast.prototype.keyDownHandler = function (e) {\n if (e.target.classList.contains(CLOSEBTN) &&\n (e.keyCode === 13 || e.keyCode === 32)) {\n var target = e.target;\n var toastEle = closest(target, '.' + ROOT);\n this.destroyToast(toastEle, 'key');\n }\n };\n Toast.prototype.displayToast = function (toastEle, toastObj) {\n var _this = this;\n var showAnimate = this.animation.show;\n var animate = {\n duration: showAnimate.duration, name: showAnimate.effect, timingFunction: showAnimate.easing\n };\n var toastOpen = this.isBlazorServer() ? {\n options: toastObj,\n element: this.toastEle\n } : {\n options: toastObj,\n toastObj: this,\n element: this.toastEle\n };\n animate.begin = function () {\n toastEle.style.display = '';\n };\n animate.end = function () {\n _this.trigger('open', toastOpen);\n };\n new Animation(animate).animate(toastEle);\n };\n Toast.prototype.getContainer = function () {\n this.element.classList.add(CONTAINER);\n return this.element;\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ToastModel} newProp - specifies the new property\n * @param {ToastModel} oldProp - specifies the old property\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n Toast.prototype.onPropertyChanged = function (newProp, oldProp) {\n var container = this.element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n // eslint-disable-next-line\n newProp.enableRtl ? container.classList.add(RTL) : container.classList.remove(RTL);\n break;\n }\n }\n };\n __decorate([\n Property('300px')\n ], Toast.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toast.prototype, \"height\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"title\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Toast.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"icon\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"template\", void 0);\n __decorate([\n Property(true)\n ], Toast.prototype, \"newestOnTop\", void 0);\n __decorate([\n Property(false)\n ], Toast.prototype, \"showCloseButton\", void 0);\n __decorate([\n Property(false)\n ], Toast.prototype, \"showProgressBar\", void 0);\n __decorate([\n Property(5000)\n ], Toast.prototype, \"timeOut\", void 0);\n __decorate([\n Property('Rtl')\n ], Toast.prototype, \"progressDirection\", void 0);\n __decorate([\n Property(1000)\n ], Toast.prototype, \"extendedTimeout\", void 0);\n __decorate([\n Complex({}, ToastAnimationSettings)\n ], Toast.prototype, \"animation\", void 0);\n __decorate([\n Complex({}, ToastPosition)\n ], Toast.prototype, \"position\", void 0);\n __decorate([\n Collection([{}], ButtonModelProps)\n ], Toast.prototype, \"buttons\", void 0);\n __decorate([\n Property(null)\n ], Toast.prototype, \"target\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Toast.prototype, \"click\", void 0);\n Toast = __decorate([\n NotifyPropertyChanges\n ], Toast);\n return Toast;\n}(Component));\n/**\n * Base for creating Toast through utility method.\n */\n// eslint-disable-next-line\nvar ToastUtility;\n(function (ToastUtility) {\n /**\n * To display a simple toast using the 'ToastUtility' with 'ToastModal' or\n * as string with toast content, type, timeOut.\n * ```\n * Eg : ToastUtility.show('Toast Content Message', 'Information', 7000);\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param { ToastModel | string } content - Specifies the toast modal or the content of the Toast.\n * @param {string} type - Specifies the type of toast.\n * @param { number } timeOut - Specifies the timeOut of the toast.\n * @returns {Toast} - returns the element\n */\n function show(content, type, timeOut) {\n var toastContainerElement;\n if (document.querySelector('.' + CONTAINER)) {\n toastContainerElement = document.querySelector('.' + CONTAINER);\n }\n else {\n toastContainerElement = createElement('div', { 'className': ROOT + ' ' + CONTAINER + ' e-toast-util' });\n document.body.appendChild(toastContainerElement);\n }\n var toastObj;\n var untilToastsModel;\n if (typeof (content) === 'string') {\n var cssClass = void 0;\n var icon = void 0;\n if (!isNullOrUndefined(type)) {\n switch (type) {\n case 'Warning':\n cssClass = 'e-toast-warning';\n icon = 'e-toast-warning-icon';\n break;\n case 'Success':\n cssClass = 'e-toast-success';\n icon = 'e-toast-success-icon';\n break;\n case 'Error':\n cssClass = 'e-toast-danger';\n icon = 'e-toast-error-icon';\n break;\n case 'Information':\n cssClass = 'e-toast-info';\n icon = 'e-toast-info-icon';\n break;\n }\n }\n else {\n cssClass = '';\n icon = '';\n }\n untilToastsModel = {\n content: content,\n cssClass: cssClass,\n icon: icon,\n timeOut: !isNullOrUndefined(timeOut) ? timeOut : 5000\n };\n }\n else {\n untilToastsModel = content;\n }\n toastObj = new Toast(untilToastsModel);\n toastObj.appendTo(toastContainerElement);\n toastObj.show();\n return toastObj;\n }\n ToastUtility.show = show;\n})(ToastUtility || (ToastUtility = {}));\n\n/**\n * Toast modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n/**\n * Specifies the type of severity to display the message with distinctive icons and colors.\n */\nvar Severity;\n(function (Severity) {\n /**\n * The message is displayed with icons and colors to denote it as a normal message.\n */\n Severity[\"Normal\"] = \"Normal\";\n /**\n * The message is displayed with icons and colors to denote it as a success message.\n */\n Severity[\"Success\"] = \"Success\";\n /**\n * The message is displayed with icons and colors to denote it as information.\n */\n Severity[\"Info\"] = \"Info\";\n /**\n * The message is displayed with icons and colors to denote it as a warning message.\n */\n Severity[\"Warning\"] = \"Warning\";\n /**\n * The message is displayed with icons and colors to denote it as an error message.\n */\n Severity[\"Error\"] = \"Error\";\n})(Severity || (Severity = {}));\n/**\n * Specifies the predefined appearance variants for the component to display.\n */\nvar Variant;\n(function (Variant) {\n /**\n * Denotes the severity is differentiated using text color and light background color.\n */\n Variant[\"Text\"] = \"Text\";\n /**\n * Denotes the severity is differentiated using text color and border without background.\n */\n Variant[\"Outlined\"] = \"Outlined\";\n /**\n * Denotes the severity is differentiated using text color and dark background color.\n */\n Variant[\"Filled\"] = \"Filled\";\n})(Variant || (Variant = {}));\nvar MSG_ICON = 'e-msg-icon';\nvar MSG_CLOSE_ICON = 'e-msg-close-icon';\nvar MSG_CONTENT = 'e-msg-content';\nvar RTL$1 = 'e-rtl';\nvar SUCCESS = 'e-success';\nvar WARNING = 'e-warning';\nvar INFO = 'e-info';\nvar ERROR = 'e-error';\nvar OUTLINED = 'e-outlined';\nvar FILLED = 'e-filled';\nvar HIDE = 'e-hidden';\n/**\n * The Message component displays messages with severity by differentiating icons and colors to denote the importance and context of the message to the end user.\n * ```html\n *
    \n * \n * ```\n *\n */\nvar Message = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Message, _super);\n /**\n * Constructor for creating the Message component widget.\n *\n * @param {MessageModel}options - Specifies the Message component interface.\n * @param {HTMLElement}element - Specifies the target element.\n */\n function Message(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.initialRender = true;\n return _this;\n }\n /**\n * Gets the Message component module name.\n *\n * @returns {string} - Returns the string.\n * @private\n */\n Message.prototype.getModuleName = function () {\n return 'message';\n };\n /**\n * Get the persisted state properties of the Message component.\n *\n * @returns {string} - Returns the string.\n */\n Message.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Method to initialize the variables for the Message component.\n *\n * @returns {void}\n * @private\n */\n Message.prototype.preRender = function () {\n var localeText = { close: 'Close' };\n this.l10n = new L10n('message', localeText, this.locale);\n };\n /**\n * Method to initialize the Message component rendering.\n *\n * @returns {void}\n * @private\n */\n Message.prototype.render = function () {\n this.innerContent = this.element.innerHTML;\n this.element.innerHTML = '';\n this.initialize();\n this.wireEvents();\n this.renderComplete();\n this.renderReactTemplates();\n this.initialRender = false;\n };\n Message.prototype.initialize = function () {\n this.element.setAttribute('role', 'alert');\n this.setIcon();\n this.setContent();\n this.setCloseIcon();\n this.setSeverity();\n this.setVariant();\n this.setCssClass();\n this.setVisible();\n if (this.enableRtl) {\n this.element.classList.add(RTL$1);\n }\n };\n Message.prototype.setIcon = function () {\n if (this.showIcon) {\n this.iconElement = this.createElement('span', { className: MSG_ICON });\n this.element.appendChild(this.iconElement);\n }\n };\n Message.prototype.setCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { attrs: { type: 'button', class: MSG_CLOSE_ICON } });\n this.element.appendChild(this.closeIcon);\n this.setTitle();\n }\n };\n Message.prototype.setTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Message.prototype.setContent = function () {\n this.txtElement = this.createElement('div', { className: MSG_CONTENT });\n this.element.appendChild(this.txtElement);\n this.setTemplate();\n };\n Message.prototype.setTemplate = function () {\n var templateFn;\n if (isNullOrUndefined(this.content) || this.content === '') {\n this.txtElement.innerHTML = this.innerContent;\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '') {\n if ((typeof this.content === 'string') || (typeof this.content !== 'string')) {\n // eslint-disable-next-line\n if (this.isVue || typeof this.content !== 'string') {\n templateFn = compile(this.content);\n if (!isNullOrUndefined(templateFn)) {\n var tempArr = templateFn({}, this, 'content', this.element.id + 'content', true);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, this.txtElement);\n this.renderReactTemplates();\n }\n }\n }\n else {\n this.txtElement.innerHTML = this.content;\n }\n }\n }\n };\n Message.prototype.setSeverity = function () {\n var classList$$1 = [SUCCESS, WARNING, INFO, ERROR];\n removeClass([this.element], classList$$1);\n if (this.severity === 'Success') {\n addClass([this.element], SUCCESS);\n }\n else if (this.severity === 'Warning') {\n addClass([this.element], WARNING);\n }\n else if (this.severity === 'Error') {\n addClass([this.element], ERROR);\n }\n else if (this.severity === 'Info') {\n addClass([this.element], INFO);\n }\n };\n Message.prototype.setVariant = function () {\n var classList$$1 = [FILLED, OUTLINED];\n removeClass([this.element], classList$$1);\n if (this.variant === 'Outlined') {\n addClass([this.element], OUTLINED);\n }\n else if (this.variant === 'Filled') {\n addClass([this.element], FILLED);\n }\n };\n Message.prototype.setCssClass = function (oldCssClass) {\n if (oldCssClass) {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Message.prototype.setVisible = function () {\n if (!this.visible) {\n addClass([this.element], HIDE);\n if (!this.initialRender) {\n this.trigger('closed', { event: event, isInteracted: false, element: this.element });\n }\n }\n else {\n removeClass([this.element], HIDE);\n }\n };\n Message.prototype.clickHandler = function (event) {\n this.closeMessage(event);\n };\n Message.prototype.keyboardHandler = function (event) {\n if (event.keyCode === 32 || event.keyCode === 13) {\n this.closeMessage(event);\n }\n };\n Message.prototype.closeMessage = function (event) {\n addClass([this.element], HIDE);\n this.setProperties({ visible: false }, true);\n var eventArgs = { event: event, isInteracted: true, element: this.element };\n this.trigger('closed', eventArgs);\n };\n Message.prototype.wireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.clickHandler, this);\n EventHandler.add(this.closeIcon, 'keydown', this.keyboardHandler, this);\n }\n };\n Message.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.clickHandler);\n EventHandler.remove(this.closeIcon, 'keydown', this.keyboardHandler);\n }\n };\n /**\n * Method to handle the dynamic changes of the Message component properties.\n *\n * @param {MessageModel} newProp - Specifies the old property.\n * @param {MessageModel} oldProp - Specifies the new property.\n * @returns {void}\n * @private\n */\n Message.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n this.setCssClass(oldProp.cssClass);\n break;\n case 'content':\n this.txtElement.innerHTML = '';\n this.setTemplate();\n break;\n case 'enableRtl':\n if (!this.enableRtl) {\n this.element.classList.remove(RTL$1);\n }\n else {\n this.element.classList.add(RTL$1);\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.setTitle();\n }\n break;\n case 'showIcon':\n if (!this.showIcon && this.element.getElementsByClassName(MSG_ICON).length > 0) {\n detach(this.iconElement);\n }\n if (this.showIcon) {\n this.iconElement = this.createElement('span', { className: MSG_ICON });\n this.element.insertBefore(this.iconElement, this.txtElement);\n }\n break;\n case 'showCloseIcon':\n if (!this.showCloseIcon && !isNullOrUndefined(this.closeIcon)) {\n this.unWireEvents();\n detach(this.closeIcon);\n }\n else {\n this.setCloseIcon();\n this.wireEvents();\n }\n break;\n case 'severity':\n this.setSeverity();\n break;\n case 'variant':\n this.setVariant();\n break;\n case 'visible':\n this.setVisible();\n break;\n }\n }\n };\n /**\n * Method to destroy the Message component. It removes the component from the DOM and detaches all its bound events. It also removes the attributes and classes of the component.\n *\n * @returns {void}\n */\n Message.prototype.destroy = function () {\n var cssClass = isNullOrUndefined(this.cssClass) ? [''] : this.cssClass.split(' ');\n var className = [SUCCESS, WARNING, INFO, ERROR, RTL$1, HIDE, OUTLINED, FILLED];\n var classList$$1 = (cssClass.length === 1 && cssClass[0] === '') ? className : className.concat(cssClass);\n removeClass([this.element], classList$$1);\n this.element.removeAttribute('role');\n this.unWireEvents();\n if (!isNullOrUndefined(this.iconElement)) {\n detach(this.iconElement);\n }\n detach(this.txtElement);\n if (!isNullOrUndefined(this.closeIcon)) {\n detach(this.closeIcon);\n }\n _super.prototype.destroy.call(this);\n };\n __decorate$1([\n Property(null)\n ], Message.prototype, \"content\", void 0);\n __decorate$1([\n Property('')\n ], Message.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(true)\n ], Message.prototype, \"showIcon\", void 0);\n __decorate$1([\n Property(false)\n ], Message.prototype, \"showCloseIcon\", void 0);\n __decorate$1([\n Property('Normal')\n ], Message.prototype, \"severity\", void 0);\n __decorate$1([\n Property('Text')\n ], Message.prototype, \"variant\", void 0);\n __decorate$1([\n Property(true)\n ], Message.prototype, \"visible\", void 0);\n __decorate$1([\n Event()\n ], Message.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], Message.prototype, \"destroyed\", void 0);\n __decorate$1([\n Event()\n ], Message.prototype, \"closed\", void 0);\n Message = __decorate$1([\n NotifyPropertyChanges\n ], Message);\n return Message;\n}(Component));\n\n/**\n * Message modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar cssClassName = {\n TEXTSHAPE: 'e-skeleton-text',\n CIRCLESHAPE: 'e-skeleton-circle',\n SQUARESHAPE: 'e-skeleton-square',\n RECTANGLESHAPE: 'e-skeleton-rectangle',\n WAVEEFFECT: 'e-shimmer-wave',\n PULSEEFFECT: 'e-shimmer-pulse',\n FADEEFFECT: 'e-shimmer-fade',\n VISIBLENONE: 'e-visible-none'\n};\n/**\n * Defines the shape of Skeleton.\n */\nvar SkeletonType;\n(function (SkeletonType) {\n /**\n * Defines the skeleton shape as text.\n */\n SkeletonType[\"Text\"] = \"Text\";\n /**\n * Defines the skeleton shape as circle.\n */\n SkeletonType[\"Circle\"] = \"Circle\";\n /**\n * Defines the skeleton shape as square.\n */\n SkeletonType[\"Square\"] = \"Square\";\n /**\n * Defines the skeleton shape as rectangle.\n */\n SkeletonType[\"Rectangle\"] = \"Rectangle\";\n})(SkeletonType || (SkeletonType = {}));\n/**\n * Defines the animation effect of Skeleton.\n */\nvar ShimmerEffect;\n(function (ShimmerEffect) {\n /**\n * Defines the animation as shimmer wave effect.\n */\n ShimmerEffect[\"Wave\"] = \"Wave\";\n /**\n * Defines the animation as fade effect.\n */\n ShimmerEffect[\"Fade\"] = \"Fade\";\n /**\n * Defines the animation as pulse effect.\n */\n ShimmerEffect[\"Pulse\"] = \"Pulse\";\n /**\n * Defines the animation as no effect.\n */\n ShimmerEffect[\"None\"] = \"None\";\n})(ShimmerEffect || (ShimmerEffect = {}));\n/**\n * The Shimmer is a placeholder that animates a shimmer effect to let users know that the page’s content is loading at the moment.\n * In other terms, it simulates the layout of page content while loading the actual content.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Skeleton = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Skeleton, _super);\n /**\n * Constructor for creating Skeleton component.\n *\n * @param {SkeletonModel} options - Defines the model of Skeleton class.\n * @param {HTMLElement} element - Defines the target HTML element.\n */\n function Skeleton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Get component module name.\n *\n * @returns {string} - Module name\n * @private\n */\n Skeleton.prototype.getModuleName = function () {\n return 'skeleton';\n };\n Skeleton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Skeleton.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.updateCssClass();\n attributes(this.element, { role: 'alert', 'aria-busy': 'true', 'aria-live': 'polite', 'aria-label': this.label });\n };\n /**\n * Method for initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Skeleton.prototype.render = function () {\n this.initialize();\n };\n Skeleton.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n case 'height':\n this.updateDimension();\n break;\n case 'shape':\n this.updateShape();\n break;\n case 'shimmerEffect':\n this.updateEffect();\n break;\n case 'visible':\n this.updateVisibility();\n break;\n case 'label':\n this.element.setAttribute('aria-label', this.label);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n this.updateCssClass();\n break;\n }\n }\n };\n /**\n * Method to destroys the Skeleton component.\n *\n * @returns {void}\n */\n Skeleton.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var attrs = ['role', 'aria-live', 'aria-busy', 'aria-label'];\n var cssClass = [];\n if (this.cssClass) {\n cssClass = cssClass.concat(this.cssClass.split(' '));\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[parseInt(i.toString(), 10)]);\n }\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g));\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g));\n removeClass([this.element], cssClass);\n };\n Skeleton.prototype.initialize = function () {\n this.updateShape();\n this.updateEffect();\n this.updateVisibility();\n };\n Skeleton.prototype.updateShape = function () {\n var shapeCss = cssClassName[this.shape.toUpperCase() + 'SHAPE'];\n var removeCss = this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g);\n this.updateDimension();\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [shapeCss]);\n };\n Skeleton.prototype.updateDimension = function () {\n var width = (!this.width && (['Text', 'Rectangle'].indexOf(this.shape) > -1)) ? '100%' : formatUnit(this.width);\n var height = ['Circle', 'Square'].indexOf(this.shape) > -1 ? width : formatUnit(this.height);\n this.element.style.width = width;\n this.element.style.height = height;\n };\n Skeleton.prototype.updateEffect = function () {\n var removeCss = this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g);\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n };\n Skeleton.prototype.updateVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](cssClassName.VISIBLENONE);\n };\n Skeleton.prototype.updateCssClass = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n __decorate$2([\n Property('')\n ], Skeleton.prototype, \"width\", void 0);\n __decorate$2([\n Property('')\n ], Skeleton.prototype, \"height\", void 0);\n __decorate$2([\n Property(true)\n ], Skeleton.prototype, \"visible\", void 0);\n __decorate$2([\n Property('Text')\n ], Skeleton.prototype, \"shape\", void 0);\n __decorate$2([\n Property('Wave')\n ], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate$2([\n Property('Loading...')\n ], Skeleton.prototype, \"label\", void 0);\n __decorate$2([\n Property('')\n ], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate$2([\n NotifyPropertyChanges\n ], Skeleton);\n return Skeleton;\n}(Component));\n\n/**\n * Shimmer modules that need to be exported.\n */\n\n/**\n * Notification Components\n */\n\nexport { ToastPosition, ButtonModelProps, ToastAnimations, ToastAnimationSettings, Toast, ToastUtility, Severity, Variant, Message, SkeletonType, ShimmerEffect, Skeleton };\n","import { CompressedStreamWriter } from '@syncfusion/ej2-compression';\nimport { Encoding, StreamWriter } from '@syncfusion/ej2-file-utils';\n\n/**\n * @private\n * @hidden\n */\nfunction defaultToString(item) {\n // if (item === null) {\n // return 'COLLECTION_NULL';\n // } else if (typeof item === 'undefined') {\n // return 'COLLECTION_UNDEFINED';\n // } else if (Object.prototype.toString.call(item) === '[object String]') {\n if (Object.prototype.toString.call(item) === '[object String]') {\n return '$s' + item;\n }\n else {\n return '$o' + item.toString();\n }\n}\n\n/**\n * Dictionary.ts class for EJ2-PDF\n * @private\n * @hidden\n */\n/**\n * @private\n * @hidden\n */\nvar Dictionary = /** @__PURE__ @class */ (function () {\n /**\n * @private\n * @hidden\n */\n function Dictionary(toStringFunction) {\n this.table = {};\n this.nElements = 0;\n this.toStr = toStringFunction || defaultToString;\n }\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.getValue = function (key) {\n var pair = this.table['$' + this.toStr(key)];\n if (typeof pair === 'undefined') {\n return undefined;\n }\n return pair.value;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.setValue = function (key, value) {\n // if (typeof key === 'undefined' || typeof value === 'undefined') {\n // return undefined;\n // }\n var ret;\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement === 'undefined') {\n this.nElements++;\n ret = undefined;\n // }\n this.table[k] = {\n key: key,\n value: value\n };\n return ret;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.remove = function (key) {\n var k = '$' + this.toStr(key);\n var previousElement = this.table[k];\n // if (typeof previousElement !== 'undefined') {\n delete this.table[k];\n this.nElements--;\n return previousElement.value;\n // }\n // return undefined;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.keys = function () {\n var keysArray = [];\n var namesOfKeys = Object.keys(this.table);\n for (var index1 = 0; index1 < namesOfKeys.length; index1++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfKeys[index1])) {\n var pair1 = this.table[namesOfKeys[index1]];\n keysArray.push(pair1.key);\n // }\n }\n return keysArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.values = function () {\n var valuesArray = [];\n var namesOfValues = Object.keys(this.table);\n for (var index2 = 0; index2 < namesOfValues.length; index2++) {\n // if (Object.prototype.hasOwnProperty.call(this.table, namesOfValues[index2])) {\n var pair2 = this.table[namesOfValues[index2]];\n valuesArray.push(pair2.value);\n // }\n }\n return valuesArray;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.containsKey = function (key) {\n var retutnValue = true;\n if (typeof this.getValue(key) === 'undefined') {\n retutnValue = true;\n }\n else {\n retutnValue = false;\n }\n return !retutnValue;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.clear = function () {\n this.table = {};\n this.nElements = 0;\n };\n /**\n * @private\n * @hidden\n */\n Dictionary.prototype.size = function () {\n return this.nElements;\n };\n return Dictionary;\n}()); // End of dictionary\n\n/**\n * `PdfName` class is used to perform name (element names) related primitive operations.\n * @private\n */\nvar PdfName = /** @__PURE__ @class */ (function () {\n function PdfName(value) {\n /**\n * `Start symbol` of the name object.\n * @default /\n * @private\n */\n this.stringStartMark = '/';\n /**\n * `Value` of the element.\n * @private\n */\n this.internalValue = '';\n /**\n * Indicates if the object is currently in `saving state or not`.\n * @default false\n * @private\n */\n this.isSaving6 = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position6 = -1;\n this.internalValue = this.normalizeValue(value);\n }\n Object.defineProperty(PdfName.prototype, \"status\", {\n //property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status6;\n },\n set: function (value) {\n this.status6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving6;\n },\n set: function (value) {\n this.isSaving6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index6;\n },\n set: function (value) {\n this.index6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position6;\n },\n set: function (value) {\n this.position6 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfName.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the object.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n set: function (value) {\n // if (value !== this.value) {\n var val = value;\n if (value !== null && value.length > 0) {\n // val = (value.substring(0, 1) === this.stringStartMark) ? value.substring(1) : value;\n val = value;\n this.internalValue = this.normalizeValue(val);\n }\n else {\n this.internalValue = val;\n }\n // }\n },\n enumerable: true,\n configurable: true\n });\n //public methods\n /**\n * `Saves` the name using the specified writer.\n * @private\n */\n PdfName.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.toString());\n };\n /**\n * Gets `string` representation of the primitive.\n * @private\n */\n PdfName.prototype.toString = function () {\n return (this.stringStartMark + this.escapeString(this.value));\n };\n /**\n * Creates a `copy of PdfName`.\n * @private\n */\n PdfName.prototype.clone = function (crossTable) {\n var newName = new PdfName();\n newName.value = this.internalValue;\n return newName;\n };\n /**\n * Replace some characters with its `escape sequences`.\n * @private\n */\n PdfName.prototype.escapeString = function (stringValue) {\n // if (str === null) {\n // throw new Error('ArgumentNullException : str');\n // }\n // if (str === '') {\n // return str;\n // }\n var result = '';\n for (var i = 0, len_1 = stringValue.length; i < len_1; i++) {\n var ch = stringValue[i];\n var index = PdfName.delimiters.indexOf(ch);\n // switch (ch) {\n // case '\\r' :\n // result = result + '\\\\r';\n // break;\n // case '\\n' :\n // result = result + '\\n';\n // break;\n // case '(' :\n // case ')' :\n // case '\\\\' :\n // //result.Append( '\\\\' ).Append( ch );\n // result = result + ch;\n // break;\n // default :\n // result = result + ch;\n // break;\n // }\n result = result + ch;\n }\n return result;\n };\n //methiods\n /**\n * Replace a symbol with its code with the precedence of the `sharp sign`.\n * @private\n */\n PdfName.prototype.normalizeValue = function (value, c) {\n // if (typeof c === undefined) {\n // let str : string = value;\n // for (let i : number = 0; i < PdfName.replacements.length; i++) {\n // str = this.normalizeValue(str, c);\n // }\n // return str;\n // } else {\n return value;\n // }\n };\n /**\n * PDF `special characters`.\n * @private\n */\n PdfName.delimiters = '()<>[]{}/%}';\n /**\n * The symbols that are not allowed in PDF names and `should be replaced`.\n * @private\n */\n PdfName.replacements = [' ', '\\t', '\\n', '\\r'];\n return PdfName;\n}());\n\n/**\n * PdfOperators.ts class for EJ2-PDF\n * Class of string PDF common operators.\n * @private\n */\nvar Operators = /** @__PURE__ @class */ (function () {\n /**\n * Create an instance of `PdfOperator` class.\n * @private\n */\n function Operators() {\n /**\n * Specifies the value of `test`.\n * @private\n */\n this.forTest = 'test';\n this.forTest = Operators.obj;\n }\n /**\n * Specifies the value of `obj`.\n * @private\n */\n Operators.obj = 'obj';\n /**\n * Specifies the value of `endObj`.\n * @private\n */\n Operators.endObj = 'endobj';\n /**\n * Specifies the value of `R`.\n * @private\n */\n Operators.r = 'R';\n /**\n * Specifies the value of ` `.\n * @private\n */\n Operators.whiteSpace = ' ';\n /**\n * Specifies the value of `/`.\n * @private\n */\n Operators.slash = '/';\n /**\n * Specifies the value of `\\r\\n`.\n * @private\n */\n Operators.newLine = '\\r\\n';\n /**\n * Specifies the value of `stream`.\n * @private\n */\n Operators.stream = 'stream';\n /**\n * Specifies the value of `endStream`.\n * @private\n */\n Operators.endStream = 'endstream';\n /**\n * Specifies the value of `xref`.\n * @private\n */\n Operators.xref = 'xref';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.f = 'f';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.n = 'n';\n /**\n * Specifies the value of `trailer`.\n * @private\n */\n Operators.trailer = 'trailer';\n /**\n * Specifies the value of `startxref`.\n * @private\n */\n Operators.startxref = 'startxref';\n /**\n * Specifies the value of `eof`.\n * @private\n */\n Operators.eof = '%%EOF';\n /**\n * Specifies the value of `header`.\n * @private\n */\n Operators.header = '%PDF-1.5';\n /**\n * Specifies the value of `beginText`.\n * @private\n */\n Operators.beginText = 'BT';\n /**\n * Specifies the value of `endText`.\n * @private\n */\n Operators.endText = 'ET';\n /**\n * Specifies the value of `m`.\n * @private\n */\n Operators.beginPath = 'm';\n /**\n * Specifies the value of `l`.\n * @private\n */\n Operators.appendLineSegment = 'l';\n /**\n * Specifies the value of `S`.\n * @private\n */\n Operators.stroke = 'S';\n /**\n * Specifies the value of `f`.\n * @private\n */\n Operators.fill = 'f';\n /**\n * Specifies the value of `f*`.\n * @private\n */\n Operators.fillEvenOdd = 'f*';\n /**\n * Specifies the value of `B`.\n * @private\n */\n Operators.fillStroke = 'B';\n /**\n * Specifies the value of `B*`.\n * @private\n */\n Operators.fillStrokeEvenOdd = 'B*';\n /**\n * Specifies the value of `c`.\n * @private\n */\n Operators.appendbeziercurve = 'c';\n /**\n * Specifies the value of `re`.\n * @private\n */\n Operators.appendRectangle = 're';\n /**\n * Specifies the value of `q`.\n * @private\n */\n Operators.saveState = 'q';\n /**\n * Specifies the value of `Q`.\n * @private\n */\n Operators.restoreState = 'Q';\n /**\n * Specifies the value of `Do`.\n * @private\n */\n Operators.paintXObject = 'Do';\n /**\n * Specifies the value of `cm`.\n * @private\n */\n Operators.modifyCtm = 'cm';\n /**\n * Specifies the value of `Tm`.\n * @private\n */\n Operators.modifyTM = 'Tm';\n /**\n * Specifies the value of `w`.\n * @private\n */\n Operators.setLineWidth = 'w';\n /**\n * Specifies the value of `J`.\n * @private\n */\n Operators.setLineCapStyle = 'J';\n /**\n * Specifies the value of `j`.\n * @private\n */\n Operators.setLineJoinStyle = 'j';\n /**\n * Specifies the value of `d`.\n * @private\n */\n Operators.setDashPattern = 'd';\n /**\n * Specifies the value of `i`.\n * @private\n */\n Operators.setFlatnessTolerance = 'i';\n /**\n * Specifies the value of `h`.\n * @private\n */\n Operators.closePath = 'h';\n /**\n * Specifies the value of `s`.\n * @private\n */\n Operators.closeStrokePath = 's';\n /**\n * Specifies the value of `b`.\n * @private\n */\n Operators.closeFillStrokePath = 'b';\n /**\n * Specifies the value of `setCharacterSpace`.\n * @private\n */\n Operators.setCharacterSpace = 'Tc';\n /**\n * Specifies the value of `setWordSpace`.\n * @private\n */\n Operators.setWordSpace = 'Tw';\n /**\n * Specifies the value of `setHorizontalScaling`.\n * @private\n */\n Operators.setHorizontalScaling = 'Tz';\n /**\n * Specifies the value of `setTextLeading`.\n * @private\n */\n Operators.setTextLeading = 'TL';\n /**\n * Specifies the value of `setFont`.\n * @private\n */\n Operators.setFont = 'Tf';\n /**\n * Specifies the value of `setRenderingMode`.\n * @private\n */\n Operators.setRenderingMode = 'Tr';\n /**\n * Specifies the value of `setTextRise`.\n * @private\n */\n Operators.setTextRise = 'Ts';\n /**\n * Specifies the value of `setTextScaling`.\n * @private\n */\n Operators.setTextScaling = 'Tz';\n /**\n * Specifies the value of `setCoords`.\n * @private\n */\n Operators.setCoords = 'Td';\n /**\n * Specifies the value of `goToNextLine`.\n * @private\n */\n Operators.goToNextLine = 'T*';\n /**\n * Specifies the value of `setText`.\n * @private\n */\n Operators.setText = 'Tj';\n /**\n * Specifies the value of `setTextWithFormatting`.\n * @private\n */\n Operators.setTextWithFormatting = 'TJ';\n /**\n * Specifies the value of `setTextOnNewLine`.\n * @private\n */\n Operators.setTextOnNewLine = '\\'';\n /**\n * Specifies the value of `selectcolorspaceforstroking`.\n * @private\n */\n Operators.selectcolorspaceforstroking = 'CS';\n /**\n * Specifies the value of `selectcolorspacefornonstroking`.\n * @private\n */\n Operators.selectcolorspacefornonstroking = 'cs';\n /**\n * Specifies the value of `setrbgcolorforstroking`.\n * @private\n */\n Operators.setrbgcolorforstroking = 'RG';\n /**\n * Specifies the value of `setrbgcolorfornonstroking`.\n * @private\n */\n Operators.setrbgcolorfornonstroking = 'rg';\n /**\n * Specifies the value of `K`.\n * @private\n */\n Operators.setcmykcolorforstroking = 'K';\n /**\n * Specifies the value of `k`.\n * @private\n */\n Operators.setcmykcolorfornonstroking = 'k';\n /**\n * Specifies the value of `G`.\n * @private\n */\n Operators.setgraycolorforstroking = 'G';\n /**\n * Specifies the value of `g`.\n * @private\n */\n Operators.setgraycolorfornonstroking = 'g';\n /**\n * Specifies the value of `W`.\n * @private\n */\n Operators.clipPath = 'W';\n /**\n * Specifies the value of `clipPathEvenOdd`.\n * @private\n */\n Operators.clipPathEvenOdd = 'W*';\n /**\n * Specifies the value of `n`.\n * @private\n */\n Operators.endPath = 'n';\n /**\n * Specifies the value of `setGraphicsState`.\n * @private\n */\n Operators.setGraphicsState = 'gs';\n /**\n * Specifies the value of `%`.\n * @private\n */\n Operators.comment = '%';\n /**\n * Specifies the value of `*`.\n * @private\n */\n Operators.evenOdd = '*';\n /**\n * Specifies the value of `M`.\n * @private\n */\n Operators.setMiterLimit = 'M';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For non-stroking operations.\n * @public\n */\n Operators.setColorAndPattern = 'scn';\n /**\n * Same as SC, but also supports Pattern, Separation, DeviceN, and ICCBased color spaces. For stroking.\n */\n Operators.setColorAndPatternStroking = 'SCN';\n return Operators;\n}());\n\n/**\n * dictionaryProperties.ts class for EJ2-PDF\n * PDF dictionary properties.\n * @private\n */\nvar DictionaryProperties = /** @__PURE__ @class */ (function () {\n /**\n * Initialize an instance for `PdfDictionaryProperties` class.\n * @private\n */\n function DictionaryProperties() {\n /**\n * Specifies the value of `Pages`.\n * @private\n */\n this.pages = 'Pages';\n /**\n * Specifies the value of `Kids`.\n * @private\n */\n this.kids = 'Kids';\n /**\n * Specifies the value of `Count`.\n * @private\n */\n this.count = 'Count';\n /**\n * Specifies the value of `Resources`.\n * @private\n */\n this.resources = 'Resources';\n /**\n * Specifies the value of `Type`.\n * @private\n */\n this.type = 'Type';\n /**\n * Specifies the value of `Size`.\n * @private\n */\n this.size = 'Size';\n /**\n * Specifies the value of `MediaBox`.\n * @private\n */\n this.mediaBox = 'MediaBox';\n /**\n * Specifies the value of `Parent`.\n * @private\n */\n this.parent = 'Parent';\n /**\n * Specifies the value of `Root`.\n * @private\n */\n this.root = 'Root';\n /**\n * Specifies the value of `DecodeParms`.\n * @private\n */\n this.decodeParms = 'DecodeParms';\n /**\n * Specifies the value of `Filter`.\n * @private\n */\n this.filter = 'Filter';\n /**\n * Specifies the value of `Font`.\n * @private\n */\n this.font = 'Font';\n /**\n * Specifies the value of `Type1`.\n * @private\n */\n this.type1 = 'Type1';\n /**\n * Specifies the value of `BaseFont`.\n * @private\n */\n this.baseFont = 'BaseFont';\n /**\n * Specifies the value of `Encoding`.\n * @private\n */\n this.encoding = 'Encoding';\n /**\n * Specifies the value of `Subtype`.\n * @private\n */\n this.subtype = 'Subtype';\n /**\n * Specifies the value of `Contents`.\n * @private\n */\n this.contents = 'Contents';\n /**\n * Specifies the value of `ProcSet`.\n * @private\n */\n this.procset = 'ProcSet';\n /**\n * Specifies the value of `ColorSpace`.\n * @private\n */\n this.colorSpace = 'ColorSpace';\n /**\n * Specifies the value of `ExtGState`.\n * @private\n */\n this.extGState = 'ExtGState';\n /**\n * Specifies the value of `Pattern`.\n * @private\n */\n this.pattern = 'Pattern';\n /**\n * Specifies the value of `XObject`.\n * @private\n */\n this.xObject = 'XObject';\n /**\n * Specifies the value of `Length`.\n * @private\n */\n this.length = 'Length';\n /**\n * Specifies the value of `Width`.\n * @private\n */\n this.width = 'Width';\n /**\n * Specifies the value of `Height`.\n * @private\n */\n this.height = 'Height';\n /**\n * Specifies the value of `BitsPerComponent`.\n * @private\n */\n this.bitsPerComponent = 'BitsPerComponent';\n /**\n * Specifies the value of `Image`.\n * @private\n */\n this.image = 'Image';\n /**\n * Specifies the value of `dctdecode`.\n * @private\n */\n this.dctdecode = 'DCTDecode';\n /**\n * Specifies the value of `Columns`.\n * @private\n */\n this.columns = 'Columns';\n /**\n * Specifies the value of `BlackIs1`.\n * @private\n */\n this.blackIs1 = 'BlackIs1';\n /**\n * Specifies the value of `K`.\n * @private\n */\n this.k = 'K';\n /**\n * Specifies the value of `S`.\n * @private\n */\n this.s = 'S';\n /**\n * Specifies the value of `Predictor`.\n * @private\n */\n this.predictor = 'Predictor';\n /**\n * Specifies the value of `DeviceRGB`.\n * @private\n */\n this.deviceRgb = 'DeviceRGB';\n /**\n * Specifies the value of `Next`.\n * @private\n */\n this.next = 'Next';\n /**\n * Specifies the value of `Action`.\n * @private\n */\n this.action = 'Action';\n /**\n * Specifies the value of `Link`.\n * @private\n */\n this.link = 'Link';\n /**\n *\n * Specifies the value of `A`.\n * @private\n */\n this.a = 'A';\n /**\n * Specifies the value of `Annot`.\n * @private\n */\n this.annot = 'Annot';\n /**\n * Specifies the value of `P`.\n * @private\n */\n this.p = 'P';\n /**\n * Specifies the value of `C`.\n * @private\n */\n this.c = 'C';\n /**\n * Specifies the value of `Rect`.\n * @private\n */\n this.rect = 'Rect';\n /**\n * Specifies the value of `URI`.\n * @private\n */\n this.uri = 'URI';\n /**\n * Specifies the value of `Annots`.\n * @private\n */\n this.annots = 'Annots';\n /**\n * Specifies the value of `ca`.\n * @private\n */\n this.ca = 'ca';\n /**\n * Specifies the value of `CA`.\n * @private\n */\n this.CA = 'CA';\n /**\n * Specifies the value of `XYZ`.\n * @private\n */\n this.xyz = 'XYZ';\n /**\n * Specifies the value of `Fit`.\n * @private\n */\n this.fit = 'Fit';\n /**\n * Specifies the value of `Dest`.\n * @private\n */\n this.dest = 'Dest';\n /**\n * Specifies the value of `BM`.\n * @private\n */\n this.BM = 'BM';\n /**\n * Specifies the value of `flatedecode`.\n * @private\n */\n this.flatedecode = 'FlateDecode';\n /**\n * Specifies the value of `Rotate`.\n * @private\n */\n this.rotate = 'Rotate';\n /**\n * Specifies the value of 'bBox'.\n * @private\n */\n this.bBox = 'BBox';\n /**\n * Specifies the value of 'form'.\n * @private\n */\n this.form = 'Form';\n /**\n * Specifies the value of 'w'.\n * @private\n */\n this.w = 'W';\n /**\n * Specifies the value of 'cIDFontType2'.\n * @private\n */\n this.cIDFontType2 = 'CIDFontType2';\n /**\n * Specifies the value of 'cIDToGIDMap'.\n * @private\n */\n this.cIDToGIDMap = 'CIDToGIDMap';\n /**\n * Specifies the value of 'identity'.\n * @private\n */\n this.identity = 'Identity';\n /**\n * Specifies the value of 'dw'.\n * @private\n */\n this.dw = 'DW';\n /**\n * Specifies the value of 'fontDescriptor'.\n * @private\n */\n this.fontDescriptor = 'FontDescriptor';\n /**\n * Specifies the value of 'cIDSystemInfo'.\n * @private\n */\n this.cIDSystemInfo = 'CIDSystemInfo';\n /**\n * Specifies the value of 'fontName'.\n * @private\n */\n this.fontName = 'FontName';\n /**\n * Specifies the value of 'flags'.\n * @private\n */\n this.flags = 'Flags';\n /**\n * Specifies the value of 'fontBBox'.\n * @private\n */\n this.fontBBox = 'FontBBox';\n /**\n * Specifies the value of 'missingWidth'.\n * @private\n */\n this.missingWidth = 'MissingWidth';\n /**\n * Specifies the value of 'stemV'.\n * @private\n */\n this.stemV = 'StemV';\n /**\n * Specifies the value of 'italicAngle'.\n * @private\n */\n this.italicAngle = 'ItalicAngle';\n /**\n * Specifies the value of 'capHeight'.\n * @private\n */\n this.capHeight = 'CapHeight';\n /**\n * Specifies the value of 'ascent'.\n * @private\n */\n this.ascent = 'Ascent';\n /**\n * Specifies the value of 'descent'.\n * @private\n */\n this.descent = 'Descent';\n /**\n * Specifies the value of 'leading'.\n * @private\n */\n this.leading = 'Leading';\n /**\n * Specifies the value of 'avgWidth'.\n * @private\n */\n this.avgWidth = 'AvgWidth';\n /**\n * Specifies the value of 'fontFile2'.\n * @private\n */\n this.fontFile2 = 'FontFile2';\n /**\n * Specifies the value of 'maxWidth'.\n * @private\n */\n this.maxWidth = 'MaxWidth';\n /**\n * Specifies the value of 'xHeight'.\n * @private\n */\n this.xHeight = 'XHeight';\n /**\n * Specifies the value of 'stemH'.\n * @private\n */\n this.stemH = 'StemH';\n /**\n * Specifies the value of 'registry'.\n * @private\n */\n this.registry = 'Registry';\n /**\n * Specifies the value of 'ordering'.\n * @private\n */\n this.ordering = 'Ordering';\n /**\n * Specifies the value of 'supplement'.\n * @private\n */\n this.supplement = 'Supplement';\n /**\n * Specifies the value of 'type0'.\n * @private\n */\n this.type0 = 'Type0';\n /**\n * Specifies the value of 'identityH'.\n * @private\n */\n this.identityH = 'Identity-H';\n /**\n * Specifies the value of 'toUnicode'.\n * @private\n */\n this.toUnicode = 'ToUnicode';\n /**\n * Specifies the value of 'descendantFonts'.\n * @private\n */\n this.descendantFonts = 'DescendantFonts';\n /**\n * Specifies the value of 'background'.\n * @private\n */\n this.background = 'Background';\n /**\n * Specifies the value of 'shading'.\n * @private\n */\n this.shading = 'Shading';\n /**\n * Specifies the value of 'matrix'.\n * @private\n */\n this.matrix = 'Matrix';\n /**\n * Specifies the value of 'antiAlias'.\n * @private\n */\n this.antiAlias = 'AntiAlias';\n /**\n * Specifies the value of 'function'.\n * @private\n */\n this.function = 'Function';\n /**\n * Specifies the value of 'extend'.\n * @private\n */\n this.extend = 'Extend';\n /**\n * Specifies the value of 'shadingType'.\n * @private\n */\n this.shadingType = 'ShadingType';\n /**\n * Specifies the value of 'coords'.\n * @private\n */\n this.coords = 'Coords';\n /**\n * Specifies the value of 'domain'.\n * @private\n */\n this.domain = 'Domain';\n /**\n * Specifies the value of 'range'.\n * @private\n */\n this.range = 'Range';\n /**\n * Specifies the value of 'functionType'.\n * @private\n */\n this.functionType = 'FunctionType';\n /**\n * Specifies the value of 'bitsPerSample'.\n * @private\n */\n this.bitsPerSample = 'BitsPerSample';\n /**\n * Specifies the value of 'patternType'.\n * @private\n */\n this.patternType = 'PatternType';\n /**\n * Specifies the value of 'paintType'.\n * @private\n */\n this.paintType = 'PaintType';\n /**\n * Specifies the value of 'tilingType'.\n * @private\n */\n this.tilingType = 'TilingType';\n /**\n * Specifies the value of 'xStep'.\n * @private\n */\n this.xStep = 'XStep';\n /**\n * Specifies the value of 'yStep'.\n * @private\n */\n this.yStep = 'YStep';\n //\n }\n return DictionaryProperties;\n}());\n\n/**\n * `PdfDictionary` class is used to perform primitive operations.\n * @private\n */\nvar PdfDictionary = /** @__PURE__ @class */ (function () {\n function PdfDictionary(dictionary) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position7 = -1;\n /**\n * The `IPdfSavable` with the specified key.\n * @private\n */\n this.primitiveItems = new Dictionary();\n /**\n * `Start marker` for dictionary.\n * @private\n */\n this.prefix = '<<';\n /**\n * `End marker` for dictionary.\n * @private\n */\n this.suffix = '>>';\n /**\n * @hidden\n * @private\n */\n this.resources = [];\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.object = null;\n /**\n * Flag for PDF file formar 1.5 is dictionary `archiving` needed.\n * @default true\n * @private\n */\n this.archive = true;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof dictionary === 'undefined') {\n this.primitiveItems = new Dictionary();\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n else {\n this.primitiveItems = new Dictionary();\n var keys = dictionary.items.keys();\n var values = dictionary.items.values();\n for (var index = 0; index < dictionary.items.size(); index++) {\n this.primitiveItems.setValue(keys[index], values[index]);\n }\n this.status = dictionary.status;\n this.freezeChanges(this);\n this.encrypt = true;\n this.dictionaryProperties = new DictionaryProperties();\n }\n }\n Object.defineProperty(PdfDictionary.prototype, \"items\", {\n //Properties\n /**\n * Gets or sets the `IPdfSavable` with the specified key.\n * @private\n */\n get: function () {\n return this.primitiveItems;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status7;\n },\n set: function (value) {\n this.status7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving7;\n },\n set: function (value) {\n this.isSaving7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index7;\n },\n set: function (value) {\n this.index7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position7;\n },\n set: function (value) {\n this.position7 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.primitiveItems.size();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDictionary.prototype, \"Dictionary\", {\n /**\n * Collection of `items` in the object.\n * @private\n */\n get: function () {\n return this;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.getArchive = function () {\n return this.archive;\n };\n /**\n * Set flag if need to `archive` dictionary.\n * @private\n */\n PdfDictionary.prototype.setArchive = function (value) {\n this.archive = value;\n };\n /**\n * Sets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.setEncrypt = function (value) {\n this.encrypt = value;\n this.modify();\n };\n /**\n * Gets flag if `encryption` is needed.\n * @private\n */\n PdfDictionary.prototype.getEncrypt = function () {\n return this.encrypt;\n };\n /**\n * `Freezes` the changes.\n * @private\n */\n PdfDictionary.prototype.freezeChanges = function (freezer) {\n this.bChanged = false;\n };\n /**\n * Creates a `copy of PdfDictionary`.\n * @private\n */\n PdfDictionary.prototype.clone = function (crossTable) {\n //Need to add more codings\n var newDict = new PdfDictionary();\n return newDict;\n };\n /**\n * `Mark` this instance modified.\n * @private\n */\n PdfDictionary.prototype.modify = function () {\n this.bChanged = true;\n };\n /**\n * `Removes` the specified key.\n * @private\n */\n PdfDictionary.prototype.remove = function (key) {\n if (typeof key !== 'string') {\n this.primitiveItems.remove(key.value);\n this.modify();\n }\n else {\n this.remove(new PdfName(key));\n }\n };\n /**\n * `Determines` whether the dictionary contains the key.\n * @private\n */\n PdfDictionary.prototype.containsKey = function (key) {\n var returnValue = false;\n returnValue = this.primitiveItems.containsKey(key.toString());\n return returnValue;\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginSave = function () {\n this.beginSave.sender.beginSave();\n };\n /**\n * Raises event `Font Dictionary BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onFontDictionaryBeginSave = function () {\n this.fontDictionaryBeginSave.sender.fontDictionaryBeginSave();\n };\n /**\n * Raises event `Descendant Font BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onDescendantFontBeginSave = function () {\n this.descendantFontBeginSave.sender.descendantFontBeginSave();\n };\n /**\n * Raises event 'BeginSave'.\n * @private\n */\n PdfDictionary.prototype.onTemplateBeginSave = function () {\n this.pageBeginDrawTemplate.sender.pageBeginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onBeginAnnotationSave = function () {\n this.annotationBeginSave.sender.beginSave();\n };\n /**\n * Raises event `BeginSave`.\n * @private\n */\n PdfDictionary.prototype.onSectionBeginSave = function (writer) {\n var saveEvent = this.sectionBeginSave;\n saveEvent.sender.beginSave(saveEvent.state, writer);\n };\n PdfDictionary.prototype.save = function (writer, bRaiseEvent) {\n if (typeof bRaiseEvent === 'undefined') {\n this.save(writer, true);\n }\n else {\n writer.write(this.prefix);\n if (typeof this.beginSave !== 'undefined') {\n this.onBeginSave();\n }\n if (typeof this.descendantFontBeginSave !== 'undefined') {\n this.onDescendantFontBeginSave();\n }\n if (typeof this.fontDictionaryBeginSave !== 'undefined') {\n this.onFontDictionaryBeginSave();\n }\n if (typeof this.annotationBeginSave !== 'undefined') {\n this.onBeginAnnotationSave();\n }\n if (typeof this.sectionBeginSave !== 'undefined') {\n this.onSectionBeginSave(writer);\n }\n if (typeof this.pageBeginDrawTemplate !== 'undefined') {\n this.onTemplateBeginSave();\n }\n // }\n if (this.Count > 0) {\n this.saveItems(writer);\n }\n writer.write(this.suffix);\n writer.write(Operators.newLine);\n }\n };\n /**\n * `Save dictionary items`.\n * @private\n */\n PdfDictionary.prototype.saveItems = function (writer) {\n writer.write(Operators.newLine);\n var keys = this.primitiveItems.keys();\n var values = this.primitiveItems.values();\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n var name_1 = new PdfName(key);\n name_1.save(writer);\n writer.write(Operators.whiteSpace);\n var resources = values[index];\n resources.save(writer);\n writer.write(Operators.newLine);\n }\n };\n return PdfDictionary;\n}());\nvar SaveSectionCollectionEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveSectionCollectionEventHandler(sender) {\n this.sender = sender;\n }\n return SaveSectionCollectionEventHandler;\n}());\nvar SaveDescendantFontEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveDescendantFontEventHandler(sender) {\n this.sender = sender;\n }\n return SaveDescendantFontEventHandler;\n}());\nvar SaveFontDictionaryEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontDictionaryEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontDictionaryEventHandler;\n}());\nvar SaveAnnotationEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * New instance for `save annotation event handler` class.\n * @private\n */\n function SaveAnnotationEventHandler(sender) {\n this.sender = sender;\n }\n return SaveAnnotationEventHandler;\n}());\nvar SaveSectionEventHandler = /** @__PURE__ @class */ (function () {\n // constructors\n /**\n * New instance for `save section event handler` class.\n * @private\n */\n function SaveSectionEventHandler(sender, state) {\n this.sender = sender;\n this.state = state;\n }\n return SaveSectionEventHandler;\n}());\n/**\n * SaveTemplateEventHandler class used to store information about template elements.\n * @private\n * @hidden\n */\nvar SaveTemplateEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * New instance for save section collection event handler class.\n * @public\n */\n function SaveTemplateEventHandler(sender) {\n this.sender = sender;\n }\n return SaveTemplateEventHandler;\n}());\n\n/**\n * `PdfNumber` class is used to perform number related primitive operations.\n * @private\n */\nvar PdfNumber = /** @__PURE__ @class */ (function () {\n /**\n * Initializes a new instance of the `PdfNumber` class.\n * @private\n */\n function PdfNumber(value) {\n /**\n * Sotres the `position`.\n * @default -1\n * @private\n */\n this.position5 = -1;\n this.value = value;\n }\n Object.defineProperty(PdfNumber.prototype, \"intValue\", {\n /**\n * Gets or sets the `integer` value.\n * @private\n */\n get: function () {\n return this.value;\n },\n set: function (value) {\n this.value = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isInteger\", {\n /**\n * Gets or sets a value indicating whether this instance `is integer`.\n * @private\n */\n get: function () {\n return this.integer;\n },\n set: function (value) {\n this.integer = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status5;\n },\n set: function (value) {\n this.status5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving5;\n },\n set: function (value) {\n this.isSaving5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index5;\n },\n set: function (value) {\n this.index5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position5;\n },\n set: function (value) {\n this.position5 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfNumber.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves the object`.\n * @private\n */\n PdfNumber.prototype.save = function (writer) {\n writer.write(this.intValue.toString()); //tostring(CultureInfo.InletiantCulture)\n };\n /**\n * Creates a `copy of PdfNumber`.\n * @private\n */\n PdfNumber.prototype.clone = function (crossTable) {\n var newNumber = new PdfNumber(this.value);\n return newNumber;\n };\n /**\n * Converts a `float value to a string` using Adobe PDF rules.\n * @private\n */\n PdfNumber.floatToString = function (number) {\n // let tempString1 : string = number.toString();\n // let tempString2 : string = tempString1.indexOf('.') != -1 ? tempString1.substring(0, tempString1.indexOf('.')) : tempString1;\n var returnString = number.toFixed(2);\n if (returnString === '0.00') {\n returnString = '.00';\n }\n // let prefixLength : number = (22 - tempString2.length) >= 0 ? (22 - tempString2.length) : 0;\n // for (let index : number = 0; index < prefixLength; index++) {\n // returnString += '0';\n // }\n // returnString += tempString2 + '.00';\n // returnString += (tempString3.length > 6) ? tempString3.substring(0,6) : tempString3;\n // let suffixLength : number = (6 - tempString3.length) >= 0 ? (6 - tempString3.length) : 0;\n // for (let index : number = 0; index < suffixLength; index++) {\n // returnString += '0';\n // }\n return returnString;\n };\n /**\n * Determines the `minimum of the three values`.\n * @private\n */\n PdfNumber.min = function (x, y, z) {\n var r = Math.min(x, y);\n return Math.min(z, r);\n };\n return PdfNumber;\n}());\n\n/**\n * `PdfArray` class is used to perform array related primitive operations.\n * @private\n */\nvar PdfArray = /** @__PURE__ @class */ (function () {\n function PdfArray(array) {\n //Fields\n /**\n * `startMark` - '['\n * @private\n */\n this.startMark = '[';\n /**\n * `endMark` - ']'.\n * @private\n */\n this.endMark = ']';\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position9 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject9 = null;\n /**\n * Represents the Font dictionary.\n * @hidden\n * @private\n */\n this.isFont = false;\n if (typeof array === 'undefined') {\n this.internalElements = [];\n }\n else {\n if (typeof array !== 'undefined' && !(array instanceof PdfArray)) {\n var tempNumberArray = array;\n for (var index = 0; index < tempNumberArray.length; index++) {\n var pdfNumber = new PdfNumber(tempNumberArray[index]);\n this.add(pdfNumber);\n }\n // } else if (typeof array !== 'undefined' && (array instanceof PdfArray)) {\n }\n else {\n var tempArray = array;\n // if (tempArray.Elements.length > 0) {\n this.internalElements = [];\n for (var index = 0; index < tempArray.elements.length; index++) {\n this.internalElements.push(tempArray.elements[index]);\n }\n // }\n }\n }\n }\n //property\n /**\n * Gets the `IPdfSavable` at the specified index.\n * @private\n */\n PdfArray.prototype.items = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index, The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n Object.defineProperty(PdfArray.prototype, \"count\", {\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.internalElements.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status9;\n },\n set: function (value) {\n this.status9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving9;\n },\n set: function (value) {\n this.isSaving9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject9;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position9;\n },\n set: function (value) {\n this.position9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index9;\n },\n set: function (value) {\n this.index9 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfArray.prototype, \"elements\", {\n /**\n * Gets the `elements` of the Pdf Array.\n * @private\n */\n get: function () {\n return this.internalElements;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element to the PDF array.\n * @private\n */\n PdfArray.prototype.add = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : obj');\n // }\n if (typeof this.internalElements === 'undefined') {\n this.internalElements = [];\n }\n this.internalElements.push(element);\n this.markedChange();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markedChange = function () {\n this.bChanged = true;\n };\n /**\n * `Determines` whether the specified element is within the array.\n * @private\n */\n PdfArray.prototype.contains = function (element) {\n var returnValue = false;\n for (var index = 0; index < this.internalElements.length; index++) {\n var tempElement = this.internalElements[index];\n var inputElement = element;\n if (tempElement != null && typeof tempElement !== 'undefined' && inputElement != null && typeof inputElement !== 'undefined') {\n if (tempElement.value === inputElement.value) {\n return true;\n }\n }\n // if (this.internalElements[index] === element) {\n // returnValue = true;\n // }\n }\n return returnValue;\n };\n /**\n * Returns the `primitive object` of input index.\n * @private\n */\n PdfArray.prototype.getItems = function (index) {\n // if (index < 0 || index >= this.Count) {\n // throw new Error('ArgumentOutOfRangeException : index , The index can\"t be less then zero or greater then Count.');\n // }\n return this.internalElements[index];\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfArray.prototype.save = function (writer) {\n // if (writer === null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n writer.write(this.startMark);\n for (var i = 0, len = this.count; i < len; i++) {\n this.getItems(i).save(writer);\n if (i + 1 !== len) {\n writer.write(Operators.whiteSpace);\n }\n }\n writer.write(this.endMark);\n };\n /**\n * Creates a `copy of PdfArray`.\n * @private\n */\n PdfArray.prototype.clone = function (crossTable) {\n // if (this.clonedObject9 !== null && this.clonedObject9.CrossTable === crossTable) {\n // return this.clonedObject9;\n // } else {\n this.clonedObject9 = null;\n // Else clone the object.\n var newArray = new PdfArray();\n for (var index = 0; index < this.internalElements.length; index++) {\n var obj = this.internalElements[index];\n newArray.add(obj.clone(crossTable));\n }\n newArray.pdfCrossTable = crossTable;\n this.clonedObject9 = newArray;\n return newArray;\n };\n /**\n * Creates filled PDF array `from the rectangle`.\n * @private\n */\n PdfArray.fromRectangle = function (bounds) {\n var values = [bounds.x, bounds.y, bounds.width, bounds.height];\n var array = new PdfArray(values);\n return array;\n };\n // /**\n // * Creates the rectangle from filled PDF array.\n // * @private\n // */\n // public ToRectangle() : RectangleF {\n // if (this.Count < 4) {\n // throw Error('InvalidOperationException-Can not convert to rectangle.');\n // }\n // let x1 : number;\n // let x2 : number;\n // let y1 : number;\n // let y2 : number;\n // let num : PdfNumber = this.getItems(0) as PdfNumber;\n // x1 = num.IntValue;\n // num = this.getItems(1) as PdfNumber;\n // y1 = num.IntValue;\n // num = this.getItems(2) as PdfNumber;\n // x2 = num.IntValue;\n // num = this.getItems(3) as PdfNumber;\n // y2 = num.IntValue;\n // let x : number = Math.min(x1, x2);\n // let y : number = Math.min(y1, y2);\n // let width : number = Math.abs(x1 - x2);\n // let height : number = Math.abs(y1 - y2);\n // let rect : RectangleF = new RectangleF(new PointF(x, y), new SizeF(width, height));\n // return rect;\n // }\n /**\n * `Inserts` the element into the array.\n * @private\n */\n PdfArray.prototype.insert = function (index, element) {\n if (index < this.internalElements.length && index > 0) {\n var tempElements = [];\n for (var i = 0; i < index; i++) {\n tempElements.push(this.internalElements[i]);\n }\n tempElements.push(element);\n for (var i = index; i < this.internalElements.length; i++) {\n tempElements.push(this.internalElements[i]);\n }\n this.internalElements = tempElements;\n }\n else {\n this.internalElements.push(element);\n }\n this.markChanged();\n };\n /**\n * `Checks whether array contains the element`.\n * @private\n */\n PdfArray.prototype.indexOf = function (element) {\n return this.internalElements.indexOf(element);\n };\n /**\n * `Removes` element from the array.\n * @private\n */\n PdfArray.prototype.remove = function (element) {\n // if (element === null) {\n // throw new Error('ArgumentNullException : element');\n // }\n var index = this.internalElements.indexOf(element);\n // if (index >= 0 && index < this.internalElements.length) {\n this.internalElements[index] = null;\n // }\n this.markChanged();\n };\n /**\n * `Remove` the element from the array by its index.\n * @private\n */\n PdfArray.prototype.removeAt = function (index) {\n // this.internalElements.RemoveAt(index);\n if (this.internalElements.length > index) {\n var tempArray = [];\n for (var i = 0; i < index; i++) {\n tempArray.push(this.internalElements[i]);\n }\n for (var i = index + 1; i < this.internalElements.length; i++) {\n tempArray.push(this.internalElements[i]);\n }\n this.internalElements = tempArray;\n }\n this.markChanged();\n };\n /**\n * `Clear` the array.\n * @private\n */\n PdfArray.prototype.clear = function () {\n this.internalElements = [];\n this.markChanged();\n };\n /**\n * `Marks` the object changed.\n * @private\n */\n PdfArray.prototype.markChanged = function () {\n this.bChanged = true;\n };\n return PdfArray;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfStream` class is used to perform stream related primitive operations.\n * @private\n */\nvar PdfStream = /** @__PURE__ @class */ (function (_super) {\n __extends(PdfStream, _super);\n function PdfStream(dictionary, data) {\n var _this = _super.call(this, dictionary) || this;\n //Constants\n /**\n * @hidden\n * @private\n */\n _this.dicPrefix = 'stream';\n /**\n * @hidden\n * @private\n */\n _this.dicSuffix = 'endstream';\n /**\n * Internal variable to hold `cloned object`.\n * @private\n */\n _this.clonedObject2 = null;\n /**\n * @hidden\n * @private\n */\n _this.bCompress = true;\n /**\n * @hidden\n * @private\n */\n _this.isImageStream = false;\n /**\n * @hidden\n * @private\n */\n _this.isFontStream = false;\n if (typeof dictionary !== 'undefined' || typeof data !== 'undefined') {\n _this.dataStream2 = [];\n _this.dataStream2 = data;\n _this.bCompress2 = false;\n }\n else {\n _this.dataStream2 = [];\n _this.bCompress2 = true;\n //Pending\n }\n return _this;\n }\n Object.defineProperty(PdfStream.prototype, \"internalStream\", {\n /**\n * Gets the `internal` stream.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isImage\", {\n /**\n * Gets or sets 'is image' flag.\n * @private\n */\n get: function () {\n return this.isImageStream;\n },\n set: function (value) {\n this.isImageStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"isFont\", {\n /**\n * Gets or sets 'is font' flag.\n * @private\n */\n get: function () {\n return this.isFontStream;\n },\n set: function (value) {\n this.isFontStream = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"compress\", {\n /**\n * Gets or sets `compression` flag.\n * @private\n */\n get: function () {\n return this.bCompress;\n },\n set: function (value) {\n this.bCompress = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStream.prototype, \"data\", {\n /**\n * Gets or sets the `data`.\n * @private\n */\n get: function () {\n return this.dataStream2;\n },\n set: function (value) {\n this.dataStream2 = [];\n this.dataStream2 = value;\n this.modify();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clear` the internal stream.\n * @private\n */\n PdfStream.prototype.clearStream = function () {\n this.internalStream = [];\n if (this.items.containsKey(this.dictionaryProperties.filter)) {\n this.remove(this.dictionaryProperties.filter);\n }\n this.bCompress = true;\n this.modify();\n };\n /**\n * `Writes` the specified string.\n * @private\n */\n PdfStream.prototype.write = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (text.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty string, text');\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * `Writes` the specified bytes.\n * @private\n */\n PdfStream.prototype.writeBytes = function (data) {\n if (data === null) {\n throw new Error('ArgumentNullException:data');\n }\n if (data.length <= 0) {\n throw new Error('ArgumentException: Can not write an empty bytes, data');\n }\n var text = '';\n for (var i = 0; i < data.length; i++) {\n text += String.fromCharCode(data[i]);\n }\n this.dataStream2.push(text);\n this.modify();\n };\n /**\n * Raises event `Cmap BeginSave`.\n * @private\n */\n PdfStream.prototype.onCmapBeginSave = function () {\n this.cmapBeginSave.sender.cmapBeginSave();\n };\n /**\n * Raises event `Font Program BeginSave`.\n * @private\n */\n PdfStream.prototype.onFontProgramBeginSave = function () {\n this.fontProgramBeginSave.sender.fontProgramBeginSave();\n };\n /**\n * `Compresses the content` if it's required.\n * @private\n */\n PdfStream.prototype.compressContent = function (data, writer) {\n if (this.bCompress) {\n var byteArray = [];\n for (var i = 0; i < data.length; i++) {\n byteArray.push(data.charCodeAt(i));\n }\n var dataArray = new Uint8Array(byteArray);\n var sw = new CompressedStreamWriter();\n // data = 'Hello World!!!';\n sw.write(dataArray, 0, dataArray.length);\n sw.close();\n data = sw.getCompressedString;\n this.addFilter(this.dictionaryProperties.flatedecode);\n }\n return data;\n };\n /**\n * `Adds a filter` to the filter array.\n * @private\n */\n PdfStream.prototype.addFilter = function (filterName) {\n var obj = this.items.getValue(this.dictionaryProperties.filter);\n if (obj instanceof PdfReferenceHolder) {\n var rh = obj;\n obj = rh.object;\n }\n var array = obj;\n var name = obj;\n if (name != null) {\n array = new PdfArray();\n array.insert(0, name);\n this.items.setValue(this.dictionaryProperties.filter, array);\n }\n name = new PdfName(filterName);\n if (array == null) {\n this.items.setValue(this.dictionaryProperties.filter, name);\n }\n else {\n array.insert(0, name);\n }\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfStream.prototype.save = function (writer) {\n if (typeof this.cmapBeginSave !== 'undefined') {\n this.onCmapBeginSave();\n }\n if (typeof this.fontProgramBeginSave !== 'undefined') {\n this.onFontProgramBeginSave();\n }\n var data = '';\n for (var i = 0; i < this.data.length; i++) {\n data = data + this.data[i];\n }\n if (data.length > 1 && !this.isImage && !this.isFont) {\n data = 'q\\r\\n' + data + 'Q\\r\\n';\n }\n data = this.compressContent(data, writer);\n var length = data.length;\n this.items.setValue(this.dictionaryProperties.length, new PdfNumber(length));\n _super.prototype.save.call(this, writer, false);\n writer.write(this.dicPrefix);\n writer.write(Operators.newLine);\n if (data.length > 0) {\n writer.write(data);\n }\n writer.write(Operators.newLine);\n writer.write(this.dicSuffix);\n writer.write(Operators.newLine);\n };\n /**\n * Converts `bytes to string`.\n * @private\n */\n PdfStream.bytesToString = function (byteArray) {\n var output = '';\n for (var i = 0; i < byteArray.length; i++) {\n output = output + String.fromCharCode(byteArray[i]);\n }\n return output;\n };\n return PdfStream;\n}(PdfDictionary));\nvar SaveCmapEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveCmapEventHandler(sender) {\n this.sender = sender;\n }\n return SaveCmapEventHandler;\n}());\nvar SaveFontProgramEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * New instance for `save section collection event handler` class.\n * @private\n */\n function SaveFontProgramEventHandler(sender) {\n this.sender = sender;\n }\n return SaveFontProgramEventHandler;\n}());\n\n/**\n * `PdfString` class is used to perform string related primitive operations.\n * @private\n */\nvar InternalEnum;\n(function (InternalEnum) {\n //Internals\n /**\n * public Enum for `ForceEncoding`.\n * @private\n */\n var ForceEncoding;\n (function (ForceEncoding) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Ascii`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Ascii\"] = 1] = \"Ascii\";\n /**\n * Specifies the type of `Unicode`.\n * @private\n */\n ForceEncoding[ForceEncoding[\"Unicode\"] = 2] = \"Unicode\";\n })(ForceEncoding = InternalEnum.ForceEncoding || (InternalEnum.ForceEncoding = {}));\n /**\n * public Enum for `SourceType`.\n * @private\n */\n var SourceType;\n (function (SourceType) {\n /**\n * Specifies the type of `StringValue`.\n * @private\n */\n SourceType[SourceType[\"StringValue\"] = 0] = \"StringValue\";\n /**\n * Specifies the type of `ByteBuffer`.\n * @private\n */\n SourceType[SourceType[\"ByteBuffer\"] = 1] = \"ByteBuffer\";\n })(SourceType || (SourceType = {}));\n})(InternalEnum || (InternalEnum = {}));\nvar PdfString = /** @__PURE__ @class */ (function () {\n function PdfString(value) {\n /**\n * Value indicating whether the string was converted to hex.\n * @default false\n * @private\n */\n this.bHex = false;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position1 = -1;\n /**\n * Internal variable to hold `cloned object`.\n * @default null\n * @private\n */\n this.clonedObject1 = null;\n /**\n * `Shows` if the data of the stream was decrypted.\n * @default false\n * @private\n */\n this.bDecrypted = false;\n /**\n * Shows if the data of the stream `was decrypted`.\n * @default false\n * @private\n */\n this.isParentDecrypted = false;\n /**\n * Gets a value indicating whether the object is `packed or not`.\n * @default false\n * @private\n */\n this.isPacked = false;\n /**\n * @hidden\n * @private\n */\n this.isFormField = false;\n /**\n * @hidden\n * @private\n */\n this.isColorSpace = false;\n /**\n * @hidden\n * @private\n */\n this.isHexString = true;\n if (typeof value === 'undefined') {\n this.bHex = false;\n }\n else {\n if (!(value.length > 0 && value[0] === '0xfeff')) {\n this.stringValue = value;\n this.data = [];\n for (var i = 0; i < value.length; ++i) {\n this.data.push(value.charCodeAt(i));\n }\n }\n }\n }\n Object.defineProperty(PdfString.prototype, \"hex\", {\n //Property\n /**\n * Gets a value indicating whether string is in `hex`.\n * @private\n */\n get: function () {\n return this.bHex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"value\", {\n /**\n * Gets or sets string `value` of the object.\n * @private\n */\n get: function () {\n return this.stringValue;\n },\n set: function (value) {\n this.stringValue = value;\n this.data = null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"status\", {\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status1;\n },\n set: function (value) {\n this.status1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving1;\n },\n set: function (value) {\n this.isSaving1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index1;\n },\n set: function (value) {\n this.index1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return this.clonedObject1;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position1;\n },\n set: function (value) {\n this.position1 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"CrossTable\", {\n /**\n * Returns `PdfCrossTable` associated with the object.\n * @private\n */\n get: function () {\n return this.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"converted\", {\n /**\n * Gets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n get: function () {\n return this.bConverted;\n },\n /**\n * sets a value indicating whether to check if the value has unicode characters.\n * @private\n */\n set: function (value) {\n this.bConverted = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfString.prototype, \"encode\", {\n /**\n * Gets value indicating whether we should convert data to Unicode.\n */\n get: function () {\n return this.bForceEncoding;\n },\n set: function (value) {\n this.bForceEncoding = value;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * Converts `bytes to string using hex format` for representing string.\n * @private\n */\n PdfString.bytesToHex = function (bytes) {\n if (bytes == null) {\n return '';\n }\n var builder = '';\n return builder;\n };\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfString.prototype.save = function (writer) {\n if (writer === null) {\n throw new Error('ArgumentNullException : writer');\n }\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n writer.write(this.pdfEncode());\n }\n else {\n writer.write(PdfString.stringMark[0] + this.value + PdfString.stringMark[1]);\n }\n };\n PdfString.prototype.pdfEncode = function () {\n var result = '';\n if (this.encode !== undefined && this.encode === InternalEnum.ForceEncoding.Ascii) {\n var data = this.escapeSymbols(this.value);\n for (var i = 0; i < data.length; i++) {\n result += String.fromCharCode(data[i]);\n }\n result = PdfString.stringMark[0] + result + PdfString.stringMark[1];\n }\n else {\n result = this.value;\n }\n return result;\n };\n PdfString.prototype.escapeSymbols = function (value) {\n var data = [];\n for (var i = 0; i < value.length; i++) {\n var currentData = value.charCodeAt(i);\n switch (currentData) {\n case 40:\n case 41:\n data.push(92);\n data.push(currentData);\n break;\n case 13:\n data.push(92);\n data.push(114);\n break;\n case 92:\n data.push(92);\n data.push(currentData);\n break;\n default:\n data.push(currentData);\n break;\n }\n }\n return data;\n };\n /**\n * Creates a `copy of PdfString`.\n * @private\n */\n PdfString.prototype.clone = function (crossTable) {\n if (this.clonedObject1 !== null && this.clonedObject1.CrossTable === crossTable) {\n return this.clonedObject1;\n }\n else {\n this.clonedObject1 = null;\n }\n var newString = new PdfString(this.stringValue);\n newString.bHex = this.bHex;\n newString.crossTable = crossTable;\n newString.isColorSpace = this.isColorSpace;\n this.clonedObject1 = newString;\n return newString;\n };\n /**\n * Converts string to array of unicode symbols.\n */\n PdfString.toUnicodeArray = function (value, bAddPrefix) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var output = [];\n for (var i = 0; i < value.length; i++) {\n var code = value.charCodeAt(i);\n output.push(code / 256 >>> 0);\n output.push(code & 0xff);\n }\n return output;\n };\n /**\n * Converts byte data to string.\n */\n PdfString.byteToString = function (data) {\n if (data == null) {\n throw new Error('Argument Null Exception : stream');\n }\n var result = '';\n for (var i = 0; i < data.length; ++i) {\n result += String.fromCharCode(data[i]);\n }\n return result;\n };\n //constants = ;\n /**\n * `General markers` for string.\n * @private\n */\n PdfString.stringMark = '()';\n /**\n * `Hex markers` for string.\n * @private\n */\n PdfString.hexStringMark = '<>';\n /**\n * Format of password data.\n * @private\n */\n PdfString.hexFormatPattern = '{0:X2}';\n return PdfString;\n}());\n\n/**\n * `PdfReference` class is used to perform reference related primitive operations.\n * @private\n */\nvar PdfReference = /** @__PURE__ @class */ (function () {\n function PdfReference(objNumber, genNumber) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index3 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position3 = -1;\n /**\n * Holds the `object number`.\n * @default 0\n * @private\n */\n this.objNumber = 0;\n /**\n * Holds the `generation number` of the object.\n * @default 0\n * @private\n */\n this.genNumber = 0;\n if (typeof objNumber === 'number' && typeof genNumber === 'number') {\n this.objNumber = objNumber;\n this.genNumber = genNumber;\n // } else if (typeof objNum === 'string' && typeof genNum === 'string') {\n }\n else {\n this.objNumber = Number(objNumber);\n this.genNumber = Number(genNumber);\n }\n }\n Object.defineProperty(PdfReference.prototype, \"status\", {\n //Property\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status3;\n },\n set: function (value) {\n this.status3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving3;\n },\n set: function (value) {\n this.isSaving3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index3;\n },\n set: function (value) {\n this.index3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position3;\n },\n set: function (value) {\n this.position3 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReference.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var returnObject3 = null;\n return returnObject3;\n },\n enumerable: true,\n configurable: true\n });\n //IPdfPrimitives methods\n /**\n * `Saves` the object.\n * @private\n */\n PdfReference.prototype.save = function (writer) {\n writer.write(this.toString());\n };\n /**\n * Returns a `string` representing the object.\n * @private\n */\n PdfReference.prototype.toString = function () {\n return this.objNumber.toString() + ' ' + this.genNumber.toString() + ' R';\n };\n /**\n * Creates a `deep copy` of the IPdfPrimitive object.\n * @private\n */\n PdfReference.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReference;\n}());\n/**\n * `PdfReferenceHolder` class is used to perform reference holder related primitive operations.\n * @private\n */\nvar PdfReferenceHolder = /** @__PURE__ @class */ (function () {\n function PdfReferenceHolder(obj1, obj2) {\n /**\n * Holds the `index` number of the object.\n * @default -1\n * @private\n */\n this.index4 = -1;\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.position4 = -1;\n /**\n * The `index` of the object within the object collection.\n * @default -1\n * @private\n */\n this.objectIndex = -1;\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (typeof obj2 === 'undefined') {\n this.initialize(obj1);\n // }\n // else {\n // if (obj2 === null) {\n // throw new Error('ArgumentNullException : crossTable');\n // }\n // if (obj1 === null) {\n // throw new Error('ArgumentNullException : reference');\n // }\n // this.crossTable = obj2;\n // let tempObj1 : PdfReference = obj1;\n // this.reference = tempObj1;\n // }\n }\n Object.defineProperty(PdfReferenceHolder.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.status4;\n },\n set: function (value) {\n this.status4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.isSaving4;\n },\n set: function (value) {\n this.isSaving4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index4;\n },\n set: function (value) {\n this.index4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.position4;\n },\n set: function (value) {\n this.position4 = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"object\", {\n /**\n * Gets the `object` the reference is of.\n * @private\n */\n get: function () {\n // if ((this.reference != null) || (this.object == null)) {\n // this.object = this.GetterObject();\n // }\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"index\", {\n /**\n * Gets the `index` of the object.\n * @private\n */\n get: function () {\n // let items : PdfMainObjectCollection = this.crossTable.PdfObjects;\n // this.objectIndex = items.GetObjectIndex(this.reference);\n // if (this.objectIndex < 0) {\n // let obj : IPdfPrimitive = this.crossTable.GetObject(this.reference);\n // this.objectIndex = items.Count - 1;\n // }\n return this.objectIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfReferenceHolder.prototype, \"element\", {\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.primitiveObject;\n },\n enumerable: true,\n configurable: true\n });\n PdfReferenceHolder.prototype.initialize = function (obj1) {\n if (obj1 instanceof PdfArray\n || obj1 instanceof PdfDictionary\n || obj1 instanceof PdfName\n || obj1 instanceof PdfNumber\n || obj1 instanceof PdfStream\n || obj1 instanceof PdfReference\n || obj1 instanceof PdfString) {\n this.primitiveObject = obj1;\n }\n else {\n var tempObj = obj1;\n this.initialize(tempObj.element);\n }\n };\n /**\n * `Writes` a reference into a PDF document.\n * @private\n */\n PdfReferenceHolder.prototype.save = function (writer) {\n // if (writer == null) {\n // throw new Error('ArgumentNullException : writer');\n // }\n var position = writer.position;\n var cTable = writer.document.crossTable;\n // if (cTable.Document instanceof PdfDocument) {\n this.object.isSaving = true;\n // }\n var reference = null;\n // if (writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true) {\n // if (this.reference === null) {\n // reference = cTable.GetReference(this.Object);\n // } else {\n // reference = this.reference;\n // }\n // } else {\n // reference = cTable.GetReference(this.Object);\n // }\n // if (!(writer.Document.FileStructure.IncrementalUpdate === true && writer.Document.isStreamCopied === true)) {\n reference = cTable.getReference(this.object);\n // }\n // if (writer.Position !== position) {\n // writer.Position = position;\n // }\n reference.save(writer);\n };\n /**\n * Creates a `copy of PdfReferenceHolder`.\n * @private\n */\n PdfReferenceHolder.prototype.clone = function (crossTable) {\n return null;\n };\n return PdfReferenceHolder;\n}());\n\n/**\n * `PdfAction` class represents base class for all action types.\n * @private\n */\nvar PdfAction = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initialize instance for `Action` class.\n * @private\n */\n function PdfAction() {\n /**\n * Specifies the Next `action` to perform.\n * @private\n */\n this.action = null;\n /**\n * Specifies the Internal variable to store `dictionary properties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // super(); -> Object()\n this.initialize();\n }\n Object.defineProperty(PdfAction.prototype, \"next\", {\n // Properties\n /**\n * Gets and Sets the `Next` action to perform.\n * @private\n */\n get: function () {\n return this.action;\n },\n set: function (value) {\n // if (this.action !== value) {\n this.action = value;\n this.dictionary.items.setValue(this.dictionaryProperties.next, new PdfReferenceHolder(this.action));\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAction.prototype, \"dictionary\", {\n /**\n * Gets and Sets the instance of PdfDictionary class for `Dictionary`.\n * @private\n */\n get: function () {\n if (typeof this.pdfDictionary === 'undefined') {\n this.pdfDictionary = new PdfDictionary();\n }\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the action type.\n * @private\n */\n PdfAction.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.action));\n };\n Object.defineProperty(PdfAction.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` as IPdfPrimitive class.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAction;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfUriAction` class for initialize the uri related internals.\n * @private\n */\nvar PdfUriAction = /** @__PURE__ @class */ (function (_super) {\n __extends$1(PdfUriAction, _super);\n function PdfUriAction(uri) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Specifies the `uri` string.\n * @default ''.\n * @private\n */\n _this.uniformResourceIdentifier = '';\n return _this;\n }\n Object.defineProperty(PdfUriAction.prototype, \"uri\", {\n // Properties\n /**\n * Gets and Sets the value of `Uri`.\n * @private\n */\n get: function () {\n return this.uniformResourceIdentifier;\n },\n set: function (value) {\n this.uniformResourceIdentifier = value;\n this.dictionary.items.setValue(this.dictionaryProperties.uri, new PdfString(this.uniformResourceIdentifier));\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the internals.\n * @private\n */\n PdfUriAction.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.s, new PdfName(this.dictionaryProperties.uri));\n };\n return PdfUriAction;\n}(PdfAction));\n\n/**\n * public Enum for `PdfHorizontalAlignment`.\n * @private\n */\nvar PdfHorizontalAlignment;\n(function (PdfHorizontalAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfHorizontalAlignment[PdfHorizontalAlignment[\"Right\"] = 2] = \"Right\";\n})(PdfHorizontalAlignment || (PdfHorizontalAlignment = {}));\n/**\n * public Enum for `PdfVerticalAlignment`.\n * @private\n */\nvar PdfVerticalAlignment;\n(function (PdfVerticalAlignment) {\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Top\"] = 0] = \"Top\";\n /**\n * Specifies the type of `Middle`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Middle\"] = 1] = \"Middle\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfVerticalAlignment[PdfVerticalAlignment[\"Bottom\"] = 2] = \"Bottom\";\n})(PdfVerticalAlignment || (PdfVerticalAlignment = {}));\n/**\n * public Enum for `public`.\n * @private\n */\nvar PdfTextAlignment;\n(function (PdfTextAlignment) {\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Left\"] = 0] = \"Left\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Right\"] = 2] = \"Right\";\n /**\n * Specifies the type of `Justify`.\n * @private\n */\n PdfTextAlignment[PdfTextAlignment[\"Justify\"] = 3] = \"Justify\";\n})(PdfTextAlignment || (PdfTextAlignment = {}));\n/**\n * public Enum for `TextRenderingMode`.\n * @private\n */\nvar TextRenderingMode;\n(function (TextRenderingMode) {\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Fill\"] = 0] = \"Fill\";\n /**\n * Specifies the type of `Stroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Stroke\"] = 1] = \"Stroke\";\n /**\n * Specifies the type of `FillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"FillStroke\"] = 2] = \"FillStroke\";\n /**\n * Specifies the type of `None`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"None\"] = 3] = \"None\";\n /**\n * Specifies the type of `ClipFlag`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFlag\"] = 4] = \"ClipFlag\";\n /**\n * Specifies the type of `ClipFill`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFill\"] = 4] = \"ClipFill\";\n /**\n * Specifies the type of `ClipStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipStroke\"] = 5] = \"ClipStroke\";\n /**\n * Specifies the type of `ClipFillStroke`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"ClipFillStroke\"] = 6] = \"ClipFillStroke\";\n /**\n * Specifies the type of `Clip`.\n * @private\n */\n TextRenderingMode[TextRenderingMode[\"Clip\"] = 7] = \"Clip\";\n})(TextRenderingMode || (TextRenderingMode = {}));\n/**\n * public Enum for `PdfLineJoin`.\n * @private\n */\nvar PdfLineJoin;\n(function (PdfLineJoin) {\n /**\n * Specifies the type of `Miter`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Miter\"] = 0] = \"Miter\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Bevel`.\n * @private\n */\n PdfLineJoin[PdfLineJoin[\"Bevel\"] = 2] = \"Bevel\";\n})(PdfLineJoin || (PdfLineJoin = {}));\n/**\n * public Enum for `PdfLineCap`.\n * @private\n */\nvar PdfLineCap;\n(function (PdfLineCap) {\n /**\n * Specifies the type of `Flat`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Flat\"] = 0] = \"Flat\";\n /**\n * Specifies the type of `Round`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Round\"] = 1] = \"Round\";\n /**\n * Specifies the type of `Square`.\n * @private\n */\n PdfLineCap[PdfLineCap[\"Square\"] = 2] = \"Square\";\n})(PdfLineCap || (PdfLineCap = {}));\n/**\n * public Enum for `PdfDashStyle`.\n * @private\n */\nvar PdfDashStyle;\n(function (PdfDashStyle) {\n /**\n * Specifies the type of `Solid`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Solid\"] = 0] = \"Solid\";\n /**\n * Specifies the type of `Dash`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dash\"] = 1] = \"Dash\";\n /**\n * Specifies the type of `Dot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Dot\"] = 2] = \"Dot\";\n /**\n * Specifies the type of `DashDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDot\"] = 3] = \"DashDot\";\n /**\n * Specifies the type of `DashDotDot`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"DashDotDot\"] = 4] = \"DashDotDot\";\n /**\n * Specifies the type of `Custom`.\n * @private\n */\n PdfDashStyle[PdfDashStyle[\"Custom\"] = 5] = \"Custom\";\n})(PdfDashStyle || (PdfDashStyle = {}));\n/**\n * public Enum for `PdfFillMode`.\n * @private\n */\nvar PdfFillMode;\n(function (PdfFillMode) {\n /**\n * Specifies the type of `Winding`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Winding\"] = 0] = \"Winding\";\n /**\n * Specifies the type of `Alternate`.\n * @private\n */\n PdfFillMode[PdfFillMode[\"Alternate\"] = 1] = \"Alternate\";\n})(PdfFillMode || (PdfFillMode = {}));\n/**\n * public Enum for `PdfColorSpace`.\n * @private\n */\nvar PdfColorSpace;\n(function (PdfColorSpace) {\n /**\n * Specifies the type of `Rgb`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Rgb\"] = 0] = \"Rgb\";\n /**\n * Specifies the type of `Cmyk`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Cmyk\"] = 1] = \"Cmyk\";\n /**\n * Specifies the type of `GrayScale`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"GrayScale\"] = 2] = \"GrayScale\";\n /**\n * Specifies the type of `Indexed`.\n * @private\n */\n PdfColorSpace[PdfColorSpace[\"Indexed\"] = 3] = \"Indexed\";\n})(PdfColorSpace || (PdfColorSpace = {}));\n/**\n * public Enum for `PdfBlendMode`.\n * @private\n */\nvar PdfBlendMode;\n(function (PdfBlendMode) {\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Normal\"] = 0] = \"Normal\";\n /**\n * Specifies the type of `Multiply`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Multiply\"] = 1] = \"Multiply\";\n /**\n * Specifies the type of `Screen`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Screen\"] = 2] = \"Screen\";\n /**\n * Specifies the type of `Overlay`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Overlay\"] = 3] = \"Overlay\";\n /**\n * Specifies the type of `Darken`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Darken\"] = 4] = \"Darken\";\n /**\n * Specifies the type of `Lighten`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Lighten\"] = 5] = \"Lighten\";\n /**\n * Specifies the type of `ColorDodge`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorDodge\"] = 6] = \"ColorDodge\";\n /**\n * Specifies the type of `ColorBurn`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"ColorBurn\"] = 7] = \"ColorBurn\";\n /**\n * Specifies the type of `HardLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"HardLight\"] = 8] = \"HardLight\";\n /**\n * Specifies the type of `SoftLight`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"SoftLight\"] = 9] = \"SoftLight\";\n /**\n * Specifies the type of `Difference`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Difference\"] = 10] = \"Difference\";\n /**\n * Specifies the type of `Exclusion`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Exclusion\"] = 11] = \"Exclusion\";\n /**\n * Specifies the type of `Hue`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Hue\"] = 12] = \"Hue\";\n /**\n * Specifies the type of `Saturation`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Saturation\"] = 13] = \"Saturation\";\n /**\n * Specifies the type of `Color`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Color\"] = 14] = \"Color\";\n /**\n * Specifies the type of `Luminosity`.\n * @private\n */\n PdfBlendMode[PdfBlendMode[\"Luminosity\"] = 15] = \"Luminosity\";\n})(PdfBlendMode || (PdfBlendMode = {}));\n/**\n * public Enum for `PdfGraphicsUnit`.\n * @private\n */\nvar PdfGraphicsUnit;\n(function (PdfGraphicsUnit) {\n /**\n * Specifies the type of `Centimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Centimeter\"] = 0] = \"Centimeter\";\n /**\n * Specifies the type of `Pica`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pica\"] = 1] = \"Pica\";\n /**\n * Specifies the type of `Pixel`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Pixel\"] = 2] = \"Pixel\";\n /**\n * Specifies the type of `Point`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Point\"] = 3] = \"Point\";\n /**\n * Specifies the type of `Inch`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Inch\"] = 4] = \"Inch\";\n /**\n * Specifies the type of `Document`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Document\"] = 5] = \"Document\";\n /**\n * Specifies the type of `Millimeter`.\n * @private\n */\n PdfGraphicsUnit[PdfGraphicsUnit[\"Millimeter\"] = 6] = \"Millimeter\";\n})(PdfGraphicsUnit || (PdfGraphicsUnit = {}));\n/**\n * public Enum for `PdfGridImagePosition`.\n * @private\n */\nvar PdfGridImagePosition;\n(function (PdfGridImagePosition) {\n /**\n * Specifies the type of `Fit`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Fit\"] = 0] = \"Fit\";\n /**\n * Specifies the type of `Center`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Center\"] = 1] = \"Center\";\n /**\n * Specifies the type of `Stretch`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Stretch\"] = 2] = \"Stretch\";\n /**\n * Specifies the type of `Tile`.\n * @private\n */\n PdfGridImagePosition[PdfGridImagePosition[\"Tile\"] = 3] = \"Tile\";\n})(PdfGridImagePosition || (PdfGridImagePosition = {}));\n/**\n * public Enum for `the text rendering direction`.\n * @private\n */\nvar PdfTextDirection;\n(function (PdfTextDirection) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `LeftToRight`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"LeftToRight\"] = 1] = \"LeftToRight\";\n /**\n * Specifies the type of `RightToLeft`.\n * @private\n */\n PdfTextDirection[PdfTextDirection[\"RightToLeft\"] = 2] = \"RightToLeft\";\n})(PdfTextDirection || (PdfTextDirection = {}));\n\n/**\n * Implements structures and routines working with `color`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // set color\n * let brushColor : PdfColor = new PdfColor(0, 0, 0);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(brushColor);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default black color\n */\nvar PdfColor = /** @__PURE__ @class */ (function () {\n function PdfColor(color1, color2, color3, color4) {\n if (typeof color1 === 'undefined') {\n if (typeof color2 !== 'undefined' && typeof color3 !== 'undefined' && typeof color4 !== 'undefined') {\n this.assignRGB(color2, color3, color4);\n }\n else {\n this.filled = false;\n }\n }\n else if (color1 instanceof PdfColor) {\n this.redColor = color1.r;\n this.greenColor = color1.g;\n this.blueColor = color1.b;\n this.grayColor = color1.gray;\n this.alpha = color1.alpha;\n this.filled = (this.alpha !== 0);\n /* tslint:disable-next-line:max-line-length */\n }\n else if (typeof color1 === 'number' && typeof color2 === 'undefined' && typeof color3 === 'undefined' && typeof color4 === 'undefined') {\n if (color1 < 0) {\n color1 = 0;\n }\n if (color1 > 1) {\n color1 = 1;\n }\n this.redColor = color1 * PdfColor.maxColourChannelValue;\n this.greenColor = color1 * PdfColor.maxColourChannelValue;\n this.blueColor = color1 * PdfColor.maxColourChannelValue;\n this.cyanColor = color1;\n this.magentaColor = color1;\n this.yellowColor = color1;\n this.blackColor = color1;\n this.grayColor = color1;\n this.alpha = PdfColor.maxColourChannelValue;\n this.filled = true;\n }\n else if (typeof color4 === 'undefined') {\n this.assignRGB(color1, color2, color3);\n }\n else {\n this.assignRGB(color2, color3, color4, color1);\n }\n }\n /**\n * `Assign` red, green, blue colors with alpha value..\n * @private\n */\n PdfColor.prototype.assignRGB = function (r, g, b, a) {\n if (typeof r === 'undefined' || typeof g === 'undefined' || typeof b === 'undefined') {\n this.filled = false;\n }\n else {\n this.cyanColor = 0;\n this.magentaColor = 0;\n this.yellowColor = 0;\n this.blackColor = 0;\n this.grayColor = 0;\n this.redColor = r;\n this.greenColor = g;\n this.blueColor = b;\n if (typeof a === 'undefined') {\n this.alpha = PdfColor.maxColourChannelValue;\n }\n else {\n this.alpha = a;\n }\n this.filled = true;\n this.assignCMYK(r, g, b);\n }\n };\n /**\n * `Calculate and assign` cyan, megenta, yellow colors from rgb values..\n * @private\n */\n PdfColor.prototype.assignCMYK = function (r, g, b) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n var black = PdfNumber.min(1 - red, 1 - green, 1 - blue);\n var cyan = (black === 1.0) ? 0 : (1 - red - black) / (1 - black);\n var magenta = (black === 1.0) ? 0 : (1 - green - black) / (1 - black);\n var yellow = (black === 1.0) ? 0 : (1 - blue - black) / (1 - black);\n this.blackColor = black;\n this.cyanColor = cyan;\n this.magentaColor = magenta;\n this.yellowColor = yellow;\n };\n Object.defineProperty(PdfColor.prototype, \"r\", {\n //Properties\n // public static get Empty():PdfColor\n // {\n // return this.s_emptyColor\n // }\n /**\n * Gets or sets `Red` channel value.\n * @private\n */\n get: function () {\n return this.redColor;\n },\n set: function (value) {\n this.redColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"red\", {\n /**\n * Gets the `Red` color\n * @private\n */\n get: function () {\n return (this.r / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"b\", {\n /**\n * Gets or sets `Blue` channel value.\n * @private\n */\n get: function () {\n return this.blueColor;\n },\n set: function (value) {\n this.blueColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"blue\", {\n /**\n * Gets the `blue` color.\n * @private\n */\n get: function () {\n return (this.b / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"c\", {\n /**\n * Gets or sets `Cyan` channel value.\n * @private\n */\n get: function () {\n return this.cyanColor;\n },\n set: function (value) {\n if (value < 0) {\n this.cyanColor = 0;\n }\n else if (value > 1) {\n this.cyanColor = 1;\n }\n else {\n this.cyanColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"k\", {\n /**\n * Gets or sets `Black` channel value.\n * @private\n */\n get: function () {\n return this.blackColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.blackColor = 0;\n }\n else if ((value > 1)) {\n this.blackColor = 1;\n }\n else {\n this.blackColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"m\", {\n /**\n * Gets or sets `Magenta` channel value.\n * @private\n */\n get: function () {\n return this.magentaColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.magentaColor = 0;\n }\n else if ((value > 1)) {\n this.magentaColor = 1;\n }\n else {\n this.magentaColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"y\", {\n /**\n * Gets or sets `Yellow` channel value.\n * @private\n */\n get: function () {\n return this.yellowColor;\n },\n set: function (value) {\n if ((value < 0)) {\n this.yellowColor = 0;\n }\n else if ((value > 1)) {\n this.yellowColor = 1;\n }\n else {\n this.yellowColor = value;\n }\n this.assignRGB(this.cyanColor, this.magentaColor, this.yellowColor, this.blackColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"g\", {\n /**\n * Gets or sets `Green` channel value.\n * @private\n */\n get: function () {\n return this.greenColor;\n },\n set: function (value) {\n this.greenColor = value;\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"green\", {\n /**\n * Gets the `Green` color.\n * @private\n */\n get: function () {\n return (this.g / PdfColor.maxColourChannelValue);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"gray\", {\n /**\n * Gets or sets `Gray` channel value.\n * @private\n */\n get: function () {\n return ((((this.redColor + this.greenColor) + this.blueColor)) / (PdfColor.maxColourChannelValue * 3));\n },\n set: function (value) {\n if (value < 0) {\n this.grayColor = 0;\n }\n else if (value > 1) {\n this.grayColor = 1;\n }\n else {\n this.grayColor = value;\n }\n this.r = (this.grayColor * PdfColor.maxColourChannelValue);\n this.g = (this.grayColor * PdfColor.maxColourChannelValue);\n this.b = (this.grayColor * PdfColor.maxColourChannelValue);\n this.assignCMYK(this.redColor, this.greenColor, this.blueColor);\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"isEmpty\", {\n /**\n * Gets whether the PDFColor `is Empty` or not.\n * @private\n */\n get: function () {\n return !this.filled;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfColor.prototype, \"a\", {\n /**\n * Gets or sets `Alpha` channel value.\n * @private\n */\n get: function () {\n return this.alpha;\n },\n set: function (value) {\n if (value < 0) {\n this.alpha = 0;\n }\n else {\n // if (this.alpha !== value) {\n this.alpha = value;\n // }\n }\n this.filled = true;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Converts `PDFColor to PDF string` representation.\n * @private\n */\n PdfColor.prototype.toString = function (colorSpace, stroke) {\n if (this.isEmpty) {\n return '';\n }\n var str = '';\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n str = this.rgbToString(stroke);\n break;\n case PdfColorSpace.GrayScale:\n str = this.grayScaleToString(stroke);\n break;\n case PdfColorSpace.Cmyk:\n str = this.cmykToString(stroke);\n break;\n }\n return str;\n };\n /**\n * Sets `GrayScale` color.\n * @private\n */\n PdfColor.prototype.grayScaleToString = function (ifStroking) {\n var gray = this.gray;\n var colour = '';\n var obj = null;\n /* tslint:disable-next-line:max-line-length */\n obj = (ifStroking) ? PdfColor.grayStringsSroke.containsKey(gray) ? PdfColor.grayStringsSroke.getValue(gray) : null : PdfColor.grayStringsFill.containsKey(gray) ? PdfColor.grayStringsFill.getValue(gray) : null;\n if (obj == null) {\n if (ifStroking) {\n colour = gray.toString() + ' G';\n PdfColor.grayStringsSroke.setValue(gray, colour);\n }\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /**\n * Sets `RGB` color.\n * @private\n */\n PdfColor.prototype.rgbToString = function (ifStroking) {\n var r = this.r;\n var g = this.g;\n var b = this.b;\n var key = (r << 16) + (g << 8) + b;\n if (ifStroking) {\n key += 1 << 24;\n }\n var colour = '';\n var obj = null;\n if (PdfColor.rgbStrings.containsKey(key)) {\n obj = PdfColor.rgbStrings.getValue(key);\n }\n if (obj == null) {\n var red = r / PdfColor.maxColourChannelValue;\n var green = g / PdfColor.maxColourChannelValue;\n var blue = b / PdfColor.maxColourChannelValue;\n if (ifStroking) {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' RG';\n }\n else {\n colour = red.toString() + ' ' + green.toString() + ' ' + blue.toString() + ' rg';\n }\n PdfColor.rgbStrings.setValue(key, colour);\n }\n else {\n colour = obj.toString();\n }\n return colour + Operators.newLine;\n };\n /***\n * Sets `CMYK` color.\n * @private\n */\n PdfColor.prototype.cmykToString = function (ifStroking) {\n var cyan = this.c;\n var magenta = this.m;\n var yellow = this.y;\n var black = this.b;\n var colour = '';\n colour = cyan.toString() + ' ' + magenta.toString() + ' ' + yellow.toString() + ' ' + black.toString() + ' K';\n return colour + Operators.newLine;\n };\n /**\n * Converts `colour to a PDF array`.\n * @private\n */\n PdfColor.prototype.toArray = function (colorSpace) {\n var array = new PdfArray();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n array.add(new PdfNumber(this.red));\n array.add(new PdfNumber(this.green));\n array.add(new PdfNumber(this.blue));\n break;\n }\n return array;\n };\n //Fields\n /**\n * Holds `RGB colors` converted into strings.\n * @private\n */\n PdfColor.rgbStrings = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `stroking`.\n * @private\n */\n PdfColor.grayStringsSroke = new Dictionary();\n /**\n * Holds Gray scale colors converted into strings for `filling`.\n * @private\n */\n PdfColor.grayStringsFill = new Dictionary();\n /**\n * `Max value` of color channel.\n * @private\n */\n PdfColor.maxColourChannelValue = 255.0;\n return PdfColor;\n}());\n\n/**\n * Coordinates of Position for `PointF`.\n * @private\n */\nvar PointF = /** @__PURE__ @class */ (function () {\n function PointF(x, y) {\n if (typeof x === 'undefined') {\n this.x = 0;\n this.y = 0;\n }\n else {\n if (x !== null) {\n this.x = x;\n }\n else {\n this.x = 0;\n }\n if (y !== null) {\n this.y = y;\n }\n else {\n this.y = 0;\n }\n }\n }\n return PointF;\n}());\n/**\n * Width and Height as `Size`.\n * @private\n */\nvar SizeF = /** @__PURE__ @class */ (function () {\n function SizeF(width, height) {\n if (typeof height === 'undefined') {\n this.height = 0;\n this.width = 0;\n }\n else {\n if (height !== null) {\n this.height = height;\n }\n else {\n this.height = 0;\n }\n if (width !== null) {\n this.width = width;\n }\n else {\n this.width = 0;\n }\n }\n }\n return SizeF;\n}());\n/**\n * `RectangleF` with Position and size.\n * @private\n */\nvar RectangleF = /** @__PURE__ @class */ (function () {\n function RectangleF(arg1, arg2, arg3, arg4) {\n if (typeof arg1 === typeof arg1 && typeof arg1 === 'undefined') {\n this.x = 0;\n this.y = 0;\n this.height = 0;\n this.width = 0;\n }\n else {\n if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n var pointf = arg1;\n this.x = pointf.x;\n this.y = pointf.y;\n var sizef = arg2;\n this.height = sizef.height;\n this.width = sizef.width;\n }\n else {\n var x = arg1;\n var y = arg2;\n var width = arg3;\n var height = arg4;\n this.x = x;\n this.y = y;\n this.height = height;\n this.width = width;\n }\n }\n }\n return RectangleF;\n}());\n/**\n * `Rectangle` with left, right, top and bottom.\n * @private\n */\nvar Rectangle = /** @__PURE__ @class */ (function () {\n /**\n * Instance of `RectangleF` class with X, Y, Width and Height.\n * @private\n */\n function Rectangle(left, top, right, bottom) {\n this.left = left;\n this.top = top;\n this.right = right;\n this.bottom = bottom;\n }\n Object.defineProperty(Rectangle.prototype, \"width\", {\n /**\n * Gets a value of width\n */\n get: function () {\n return this.right - this.left;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"height\", {\n /**\n * Gets a value of height\n */\n get: function () {\n return this.bottom - this.top;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"topLeft\", {\n /**\n * Gets a value of Top and Left\n */\n get: function () {\n return new PointF(this.left, this.top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Rectangle.prototype, \"size\", {\n /**\n * Gets a value of size\n */\n get: function () {\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Rectangle.prototype.toString = function () {\n return this.topLeft + 'x' + this.size;\n };\n return Rectangle;\n}());\n\n/**\n * `PdfBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrush = /** @__PURE__ @class */ (function () {\n /**\n * Creates instanceof `PdfBrush` class.\n * @hidden\n * @private\n */\n function PdfBrush() {\n //\n }\n //IClonable implementation\n PdfBrush.prototype.clone = function () {\n return this;\n };\n return PdfBrush;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Represents a brush that fills any object with a solid color.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfSolidBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$4(PdfSolidBrush, _super);\n //Constructors\n /**\n * Initializes a new instance of the `PdfSolidBrush` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param color color of the brush\n */\n function PdfSolidBrush(color) {\n var _this = _super.call(this) || this;\n _this.pdfColor = color;\n return _this;\n }\n Object.defineProperty(PdfSolidBrush.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color` of the brush.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Monitors` the changes of the brush and modify PDF state respectively.\n * @private\n */\n PdfSolidBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n if (streamWriter == null) {\n throw new Error('ArgumentNullException:streamWriter');\n }\n var diff = false;\n if (brush == null) {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n else {\n diff = true;\n streamWriter.setColorAndSpace(this.pdfColor, currentColorSpace, false);\n return diff;\n }\n };\n /**\n * `Resets` the changes, which were made by the brush.\n * @private\n */\n PdfSolidBrush.prototype.resetChanges = function (streamWriter) {\n streamWriter.setColorAndSpace(new PdfColor(0, 0, 0), PdfColorSpace.Rgb, false);\n };\n return PdfSolidBrush;\n}(PdfBrush));\n\n/**\n * public Enum for `PdfFontStyle`.\n * @private\n */\nvar PdfFontStyle;\n(function (PdfFontStyle) {\n /**\n * Specifies the type of `Regular`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Regular\"] = 0] = \"Regular\";\n /**\n * Specifies the type of `Bold`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Bold\"] = 1] = \"Bold\";\n /**\n * Specifies the type of `Italic`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Italic\"] = 2] = \"Italic\";\n /**\n * Specifies the type of `Underline`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Underline\"] = 4] = \"Underline\";\n /**\n * Specifies the type of `Strikeout`.\n * @private\n */\n PdfFontStyle[PdfFontStyle[\"Strikeout\"] = 8] = \"Strikeout\";\n})(PdfFontStyle || (PdfFontStyle = {}));\n/**\n * Specifies the font family from the standard font.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * ```\n */\nvar PdfFontFamily;\n(function (PdfFontFamily) {\n /**\n * Specifies the `Helvetica` font.\n */\n PdfFontFamily[PdfFontFamily[\"Helvetica\"] = 0] = \"Helvetica\";\n /**\n * Specifies the `Courier` font.\n */\n PdfFontFamily[PdfFontFamily[\"Courier\"] = 1] = \"Courier\";\n /**\n * Specifies the `TimesRoman` font.\n */\n PdfFontFamily[PdfFontFamily[\"TimesRoman\"] = 2] = \"TimesRoman\";\n /**\n * Specifies the `Symbol` font.\n */\n PdfFontFamily[PdfFontFamily[\"Symbol\"] = 3] = \"Symbol\";\n /**\n * Specifies the `ZapfDingbats` font.\n */\n PdfFontFamily[PdfFontFamily[\"ZapfDingbats\"] = 4] = \"ZapfDingbats\";\n})(PdfFontFamily || (PdfFontFamily = {}));\n/**\n * public Enum for `PdfFontType`.\n * @private\n */\nvar PdfFontType;\n(function (PdfFontType) {\n /**\n * Specifies the type of `Standard`.\n * @private\n */\n PdfFontType[PdfFontType[\"Standard\"] = 0] = \"Standard\";\n /**\n * Specifies the type of `TrueType`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueType\"] = 1] = \"TrueType\";\n /**\n * Specifies the type of `TrueTypeEmbedded`.\n * @private\n */\n PdfFontType[PdfFontType[\"TrueTypeEmbedded\"] = 2] = \"TrueTypeEmbedded\";\n})(PdfFontType || (PdfFontType = {}));\n/**\n * public Enum for `PdfWordWrapType`.\n * @private\n */\nvar PdfWordWrapType;\n(function (PdfWordWrapType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Word`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Word\"] = 1] = \"Word\";\n /**\n * Specifies the type of `WordOnly`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"WordOnly\"] = 2] = \"WordOnly\";\n /**\n * Specifies the type of `Character`.\n * @private\n */\n PdfWordWrapType[PdfWordWrapType[\"Character\"] = 3] = \"Character\";\n})(PdfWordWrapType || (PdfWordWrapType = {}));\n/**\n * public Enum for `PdfSubSuperScript`.\n * @private\n */\nvar PdfSubSuperScript;\n(function (PdfSubSuperScript) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `SuperScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SuperScript\"] = 1] = \"SuperScript\";\n /**\n * Specifies the type of `SubScript`.\n * @private\n */\n PdfSubSuperScript[PdfSubSuperScript[\"SubScript\"] = 2] = \"SubScript\";\n})(PdfSubSuperScript || (PdfSubSuperScript = {}));\n/**\n * public Enum for `FontEncoding`.\n * @private\n */\nvar FontEncoding;\n(function (FontEncoding) {\n /**\n * Specifies the type of `Unknown`.\n * @private\n */\n FontEncoding[FontEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `StandardEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"StandardEncoding\"] = 1] = \"StandardEncoding\";\n /**\n * Specifies the type of `MacRomanEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacRomanEncoding\"] = 2] = \"MacRomanEncoding\";\n /**\n * Specifies the type of `MacExpertEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"MacExpertEncoding\"] = 3] = \"MacExpertEncoding\";\n /**\n * Specifies the type of `WinAnsiEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"WinAnsiEncoding\"] = 4] = \"WinAnsiEncoding\";\n /**\n * Specifies the type of `PdfDocEncoding`.\n * @private\n */\n FontEncoding[FontEncoding[\"PdfDocEncoding\"] = 5] = \"PdfDocEncoding\";\n /**\n * Specifies the type of `IdentityH`.\n * @private\n */\n FontEncoding[FontEncoding[\"IdentityH\"] = 6] = \"IdentityH\";\n})(FontEncoding || (FontEncoding = {}));\n/**\n * public Enum for `TtfCmapFormat`.\n * @private\n */\nvar TtfCmapFormat;\n(function (TtfCmapFormat) {\n /**\n * This is the Apple standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Apple\"] = 0] = \"Apple\";\n /**\n * This is the Microsoft standard character to glyph index mapping table.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Microsoft\"] = 4] = \"Microsoft\";\n /**\n * Format 6: Trimmed table mapping.\n * @private\n */\n TtfCmapFormat[TtfCmapFormat[\"Trimmed\"] = 6] = \"Trimmed\";\n})(TtfCmapFormat || (TtfCmapFormat = {}));\n/**\n * Enumerator that implements CMAP encodings.\n * @private\n */\nvar TtfCmapEncoding;\n(function (TtfCmapEncoding) {\n /**\n * Unknown encoding.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * When building a symbol font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Symbol\"] = 1] = \"Symbol\";\n /**\n * When building a Unicode font for Windows.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Unicode\"] = 2] = \"Unicode\";\n /**\n * For font that will be used on a Macintosh.\n * @private\n */\n TtfCmapEncoding[TtfCmapEncoding[\"Macintosh\"] = 3] = \"Macintosh\";\n})(TtfCmapEncoding || (TtfCmapEncoding = {}));\n/**\n * Ttf platform ID.\n * @private\n */\nvar TtfPlatformID;\n(function (TtfPlatformID) {\n /**\n * Apple platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"AppleUnicode\"] = 0] = \"AppleUnicode\";\n /**\n * Macintosh platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Macintosh\"] = 1] = \"Macintosh\";\n /**\n * Iso platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Iso\"] = 2] = \"Iso\";\n /**\n * Microsoft platform.\n * @private\n */\n TtfPlatformID[TtfPlatformID[\"Microsoft\"] = 3] = \"Microsoft\";\n})(TtfPlatformID || (TtfPlatformID = {}));\n/**\n * Microsoft encoding ID.\n * @private\n */\nvar TtfMicrosoftEncodingID;\n(function (TtfMicrosoftEncodingID) {\n /**\n * Undefined encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Undefined\"] = 0] = \"Undefined\";\n /**\n * Unicode encoding.\n * @private\n */\n TtfMicrosoftEncodingID[TtfMicrosoftEncodingID[\"Unicode\"] = 1] = \"Unicode\";\n})(TtfMicrosoftEncodingID || (TtfMicrosoftEncodingID = {}));\n/**\n * Macintosh encoding ID.\n * @private\n */\nvar TtfMacintoshEncodingID;\n(function (TtfMacintoshEncodingID) {\n /**\n * Roman encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Roman\"] = 0] = \"Roman\";\n /**\n * Japanese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Japanese\"] = 1] = \"Japanese\";\n /**\n * Chinese encoding.\n * @private\n */\n TtfMacintoshEncodingID[TtfMacintoshEncodingID[\"Chinese\"] = 2] = \"Chinese\";\n})(TtfMacintoshEncodingID || (TtfMacintoshEncodingID = {}));\n/**\n * Enumerator that implements font descriptor flags.\n * @private\n */\nvar FontDescriptorFlags;\n(function (FontDescriptorFlags) {\n /**\n * All glyphs have the same width (as opposed to proportional or variable-pitch fonts, which have different widths).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"FixedPitch\"] = 1] = \"FixedPitch\";\n /**\n * Glyphs have serifs, which are short strokes drawn at an angle on the top and\n * bottom of glyph stems (as opposed to sans serif fonts, which do not).\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Serif\"] = 2] = \"Serif\";\n /**\n * Font contains glyphs outside the Adobe standard Latin character set. The\n * flag and the nonsymbolic flag cannot both be set or both be clear.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Symbolic\"] = 4] = \"Symbolic\";\n /**\n * Glyphs resemble cursive handwriting.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Script\"] = 8] = \"Script\";\n /**\n * Font uses the Adobe standard Latin character set or a subset of it.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Nonsymbolic\"] = 32] = \"Nonsymbolic\";\n /**\n * Glyphs have dominant vertical strokes that are slanted.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"Italic\"] = 64] = \"Italic\";\n /**\n * Bold font.\n * @private\n */\n FontDescriptorFlags[FontDescriptorFlags[\"ForceBold\"] = 262144] = \"ForceBold\";\n})(FontDescriptorFlags || (FontDescriptorFlags = {}));\n/**\n * true type font composite glyph flags.\n * @private\n */\nvar TtfCompositeGlyphFlags;\n(function (TtfCompositeGlyphFlags) {\n /**\n * The Arg1And2AreWords.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Arg1And2AreWords\"] = 1] = \"Arg1And2AreWords\";\n /**\n * The ArgsAreXyValues.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"ArgsAreXyValues\"] = 2] = \"ArgsAreXyValues\";\n /**\n * The RoundXyToGrid.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"RoundXyToGrid\"] = 4] = \"RoundXyToGrid\";\n /**\n * The WeHaveScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveScale\"] = 8] = \"WeHaveScale\";\n /**\n * The Reserved.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"Reserved\"] = 16] = \"Reserved\";\n /**\n * The MoreComponents.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"MoreComponents\"] = 32] = \"MoreComponents\";\n /**\n * The WeHaveAnXyScale.\n * @private\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveAnXyScale\"] = 64] = \"WeHaveAnXyScale\";\n /**\n * The WeHaveTwoByTwo\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveTwoByTwo\"] = 128] = \"WeHaveTwoByTwo\";\n /**\n * The WeHaveInstructions.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"WeHaveInstructions\"] = 256] = \"WeHaveInstructions\";\n /**\n * The UseMyMetrics.\n */\n TtfCompositeGlyphFlags[TtfCompositeGlyphFlags[\"UseMyMetrics\"] = 512] = \"UseMyMetrics\";\n})(TtfCompositeGlyphFlags || (TtfCompositeGlyphFlags = {}));\n\n/**\n * PdfStringFormat.ts class for EJ2-PDF\n */\n/**\n * `PdfStringFormat` class represents the text layout information on PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStringFormat = /** @__PURE__ @class */ (function () {\n function PdfStringFormat(arg1, arg2) {\n /**\n * The `scaling factor` of the text being drawn.\n * @private\n */\n this.scalingFactor = 100.0;\n /**\n * Indicates text `wrapping` type.\n * @private\n */\n this.wordWrapType = PdfWordWrapType.Word;\n this.internalLineLimit = true;\n this.wordWrapType = PdfWordWrapType.Word;\n if ((typeof arg1 !== 'undefined') && (typeof arg1 !== 'string')) {\n this.textAlignment = arg1;\n }\n if (typeof arg2 !== 'undefined') {\n this.verticalAlignment = arg2;\n }\n }\n Object.defineProperty(PdfStringFormat.prototype, \"alignment\", {\n //Properties\n /**\n * Gets or sets the `horizontal` text alignment\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the text alignment\n * stringFormat.alignment = PdfTextAlignment.Center;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.textAlignment;\n },\n set: function (value) {\n this.textAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"textDirection\", {\n get: function () {\n return this.direction;\n },\n set: function (value) {\n this.direction = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineAlignment\", {\n /**\n * Gets or sets the `vertical` text alignment.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set the vertical alignment\n * stringFormat.lineAlignment = PdfVerticalAlignment.Middle;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.verticalAlignment === 'undefined' || this.verticalAlignment == null) {\n return PdfVerticalAlignment.Top;\n }\n else {\n return this.verticalAlignment;\n }\n },\n set: function (value) {\n this.verticalAlignment = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"rightToLeft\", {\n /**\n * Gets or sets the value that indicates text `direction` mode.\n * @private\n */\n get: function () {\n if (typeof this.isRightToLeft === 'undefined' || this.isRightToLeft == null) {\n return false;\n }\n else {\n return this.isRightToLeft;\n }\n },\n set: function (value) {\n this.isRightToLeft = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"characterSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the characters in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set character spacing\n * stringFormat.characterSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalCharacterSpacing === 'undefined' || this.internalCharacterSpacing == null) {\n return 0;\n }\n else {\n return this.internalCharacterSpacing;\n }\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordSpacing\", {\n /**\n * Gets or sets value that indicates a `size` among the words in the text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set word spacing\n * stringFormat.wordSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(10, 10), stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.internalWordSpacing === 'undefined' || this.internalWordSpacing == null) {\n return 0;\n }\n else {\n return this.internalWordSpacing;\n }\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineSpacing\", {\n /**\n * Gets or sets value that indicates the `vertical distance` between the baselines of adjacent lines of text.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set string\n * let text : string = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor\n * incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitati';\n * // set rectangle bounds\n * let rectangle : RectangleF = new RectangleF({x : 0, y : 0}, {width : 300, height : 100})\n * //\n * // set the format for string\n * let stringFormat : PdfStringFormat = new PdfStringFormat();\n * // set line spacing\n * stringFormat.lineSpacing = 10;\n * //\n * // draw the text\n * page1.graphics.drawString(text, font, blackBrush, rectangle, stringFormat);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n if (typeof this.leading === 'undefined' || this.leading == null) {\n return 0;\n }\n else {\n return this.leading;\n }\n },\n set: function (value) {\n this.leading = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"clipPath\", {\n /**\n * Gets or sets a value indicating whether the text is `clipped` or not.\n * @private\n */\n get: function () {\n if (typeof this.clip === 'undefined' || this.clip == null) {\n return false;\n }\n else {\n return this.clip;\n }\n },\n set: function (value) {\n this.clip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"subSuperScript\", {\n /**\n * Gets or sets value indicating whether the text is in `subscript or superscript` mode.\n * @private\n */\n get: function () {\n if (typeof this.pdfSubSuperScript === 'undefined' || this.pdfSubSuperScript == null) {\n return PdfSubSuperScript.None;\n }\n else {\n return this.pdfSubSuperScript;\n }\n },\n set: function (value) {\n this.pdfSubSuperScript = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"paragraphIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the paragraph.\n * @private\n */\n get: function () {\n if (typeof this.internalParagraphIndent === 'undefined' || this.internalParagraphIndent == null) {\n return 0;\n }\n else {\n return this.internalParagraphIndent;\n }\n },\n set: function (value) {\n this.internalParagraphIndent = value;\n this.firstLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"lineLimit\", {\n /**\n * Gets or sets a value indicating whether [`line limit`].\n * @private\n */\n get: function () {\n return this.internalLineLimit;\n },\n set: function (value) {\n this.internalLineLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"measureTrailingSpaces\", {\n /**\n * Gets or sets a value indicating whether [`measure trailing spaces`].\n * @private\n */\n get: function () {\n if (typeof this.trailingSpaces === 'undefined' || this.trailingSpaces == null) {\n return false;\n }\n else {\n return this.trailingSpaces;\n }\n },\n set: function (value) {\n this.trailingSpaces = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"noClip\", {\n /**\n * Gets or sets a value indicating whether [`no clip`].\n * @private\n */\n get: function () {\n if (typeof this.isNoClip === 'undefined' || this.isNoClip == null) {\n return false;\n }\n else {\n return this.isNoClip;\n }\n },\n set: function (value) {\n this.isNoClip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"wordWrap\", {\n /**\n * Gets or sets value indicating type of the text `wrapping`.\n * @private\n */\n get: function () {\n // if (typeof this.wrapType === 'undefined' || this.wrapType == null) {\n // return PdfWordWrapType.Word;\n // } else {\n return this.wordWrapType;\n // }\n },\n set: function (value) {\n this.wordWrapType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"horizontalScalingFactor\", {\n /**\n * Gets or sets the `scaling factor`.\n * @private\n */\n get: function () {\n // if (typeof this.scalingFactor === 'undefined' || this.scalingFactor == null) {\n // return 100;\n // } else {\n return this.scalingFactor;\n // }\n },\n set: function (value) {\n if (value <= 0) {\n throw new Error('ArgumentOutOfRangeException:The scaling factor cant be less of equal to zero, ScalingFactor');\n }\n this.scalingFactor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringFormat.prototype, \"firstLineIndent\", {\n /**\n * Gets or sets the `indent` of the first line in the text.\n * @private\n */\n get: function () {\n if (typeof this.initialLineIndent === 'undefined' || this.initialLineIndent == null) {\n return 0;\n }\n else {\n return this.initialLineIndent;\n }\n },\n set: function (value) {\n this.initialLineIndent = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Clones` the object.\n * @private\n */\n //IClonable implementation\n PdfStringFormat.prototype.clone = function () {\n var format = this;\n return format;\n };\n return PdfStringFormat;\n}());\n\n/**\n * StringTokenizer.ts class for EJ2-PDF\n * Utility class for working with strings.\n * @private\n */\nvar StringTokenizer = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringTokenizer` class.\n * @private\n */\n function StringTokenizer(textValue) {\n /**\n * Current `position`.\n * @private\n */\n this.currentPosition = 0;\n if (textValue == null) {\n throw new Error('ArgumentNullException:text');\n }\n this.text = textValue;\n }\n Object.defineProperty(StringTokenizer.prototype, \"length\", {\n // Properties\n /**\n * Gets text `length`.\n * @private\n */\n get: function () {\n return this.text.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"end\", {\n get: function () {\n return (this.currentPosition === this.text.length);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(StringTokenizer.prototype, \"position\", {\n /**\n * Gets or sets the position.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n StringTokenizer.getCharsCount = function (text, symbols) {\n if (typeof symbols === 'string') {\n if (text == null) {\n throw new Error('ArgumentNullException:wholeText');\n }\n var numSymbols = 0;\n var curIndex = 0;\n for (;;) {\n curIndex = text.indexOf(symbols, curIndex);\n if (curIndex === -1) {\n break;\n }\n else {\n numSymbols++;\n curIndex++;\n }\n }\n return numSymbols;\n }\n else {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (symbols == null) {\n throw new Error('ArgumentNullException:symbols');\n }\n var count = 0;\n for (var i = 0, len = text.length; i < len; i++) {\n var ch = text[i];\n if (this.contains(symbols, ch)) {\n count++;\n }\n }\n return count;\n }\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.readLine = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n': {\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Reads line of the text.\n * @private\n */\n StringTokenizer.prototype.peekLine = function () {\n var pos = this.currentPosition;\n var line = this.readLine();\n this.currentPosition = pos;\n return line;\n };\n /**\n * Reads a word from the text.\n * @private\n */\n StringTokenizer.prototype.readWord = function () {\n var pos = this.currentPosition;\n while (pos < this.length) {\n var ch = this.text[pos];\n switch (ch) {\n case '\\r':\n case '\\n':\n var textValue = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos + 1;\n if (((ch === '\\r') && (this.currentPosition < this.length)) && (this.text[this.currentPosition] === '\\n')) {\n this.currentPosition++;\n }\n return textValue;\n case ' ':\n case '\\t': {\n if (pos === this.currentPosition) {\n pos++;\n }\n var text = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text;\n }\n }\n pos++;\n }\n // The remaining text.\n if (pos > this.currentPosition) {\n var text2 = this.text.substr(this.currentPosition, pos - this.currentPosition);\n this.currentPosition = pos;\n return text2;\n }\n return null;\n };\n /**\n * Peeks a word from the text.\n * @private\n */\n StringTokenizer.prototype.peekWord = function () {\n var pos = this.currentPosition;\n var word = this.readWord();\n this.currentPosition = pos;\n return word;\n };\n StringTokenizer.prototype.read = function (count) {\n if (typeof count === 'undefined') {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n this.currentPosition++;\n }\n return ch;\n }\n else {\n var num = 0;\n var builder = '';\n while (!this.end && num < count) {\n var ch = this.read();\n builder = builder + ch;\n num++;\n }\n return builder;\n }\n };\n /**\n * Peeks char form the data.\n * @private\n */\n StringTokenizer.prototype.peek = function () {\n var ch = '0';\n if (!this.end) {\n ch = this.text[this.currentPosition];\n }\n return ch;\n };\n /**\n * Closes a reader.\n * @private\n */\n StringTokenizer.prototype.close = function () {\n this.text = null;\n };\n StringTokenizer.prototype.readToEnd = function () {\n var text;\n if (this.currentPosition === 0) {\n text = this.text;\n }\n else {\n text = this.text.substr(this.currentPosition, this.length - this.currentPosition);\n }\n this.currentPosition = this.length;\n return text;\n };\n //Implementation\n /**\n * Checks whether array contains a symbol.\n * @private\n */\n StringTokenizer.contains = function (array, symbol) {\n var contains = false;\n for (var i = 0; i < array.length; i++) {\n if (array[i] === symbol) {\n contains = true;\n break;\n }\n }\n return contains;\n };\n // Constants\n /**\n * `Whitespace` symbol.\n * @private\n */\n StringTokenizer.whiteSpace = ' ';\n /**\n * `tab` symbol.\n * @private\n */\n StringTokenizer.tab = '\\t';\n /**\n * Array of `spaces`.\n * @private\n */\n StringTokenizer.spaces = [StringTokenizer.whiteSpace, StringTokenizer.tab];\n /**\n * `Pattern` for WhiteSpace.\n * @private\n */\n StringTokenizer.whiteSpacePattern = '^[ \\t]+$';\n return StringTokenizer;\n}());\n\n/**\n * Class `lay outing the text`.\n */\nvar PdfStringLayouter = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n function PdfStringLayouter() {\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n //\n }\n PdfStringLayouter.prototype.layout = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg4 instanceof RectangleF) {\n this.initialize(arg1, arg2, arg3, arg4, arg5);\n this.isOverloadWithPosition = arg6;\n this.clientSize = arg7;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n else {\n this.initialize(arg1, arg2, arg3, arg4);\n this.isOverloadWithPosition = arg5;\n this.clientSize = arg6;\n var result = this.doLayout();\n this.clear();\n return result;\n }\n };\n PdfStringLayouter.prototype.initialize = function (text, font, format, rectSize, pageHeight) {\n if (typeof pageHeight === 'number') {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.text = text;\n this.font = font;\n this.format = format;\n this.size = new SizeF(rectSize.width, rectSize.height);\n this.rectangle = rectSize;\n this.pageHeight = pageHeight;\n this.reader = new StringTokenizer(text);\n }\n else {\n this.initialize(text, font, format, new RectangleF(new PointF(0, 0), rectSize), 0);\n }\n };\n /**\n * `Clear` all resources.\n * @private\n */\n PdfStringLayouter.prototype.clear = function () {\n this.font = null;\n this.format = null;\n this.reader.close();\n this.reader = null;\n this.text = null;\n };\n /**\n * `Layouts` the text.\n * @private\n */\n PdfStringLayouter.prototype.doLayout = function () {\n var result = new PdfStringLayoutResult();\n var lineResult = new PdfStringLayoutResult();\n var lines = [];\n var line = this.reader.peekLine();\n var lineIndent = this.getLineIndent(true);\n while (line != null) {\n lineResult = this.layoutLine(line, lineIndent);\n if (lineResult !== null || typeof lineResult !== 'undefined') {\n var numSymbolsInserted = 0;\n /* tslint:disable */\n var returnedValue = this.copyToResult(result, lineResult, lines, /*out*/ numSymbolsInserted);\n /* tslint:enable */\n var success = returnedValue.success;\n numSymbolsInserted = returnedValue.numInserted;\n if (!success) {\n this.reader.read(numSymbolsInserted);\n break;\n }\n }\n // if (lineResult.textRemainder != null && lineResult.textRemainder.length > 0 ) {\n // break;\n // }\n this.reader.readLine();\n line = this.reader.peekLine();\n lineIndent = this.getLineIndent(false);\n }\n this.finalizeResult(result, lines);\n return result;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineIndent = function (firstLine) {\n var lineIndent = 0;\n if (this.format != null) {\n lineIndent = (firstLine) ? this.format.firstLineIndent : this.format.paragraphIndent;\n lineIndent = (this.size.width > 0) ? Math.min(this.size.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates `height` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineHeight = function () {\n var height = this.font.height;\n if (this.format != null && this.format.lineSpacing !== 0) {\n height = this.format.lineSpacing + this.font.height;\n }\n return height;\n };\n /**\n * Calculates `width` of the line.\n * @private\n */\n PdfStringLayouter.prototype.getLineWidth = function (line) {\n var width = this.font.getLineWidth(line, this.format);\n return width;\n };\n // tslint:disable\n /**\n * `Layouts` line.\n * @private\n */\n PdfStringLayouter.prototype.layoutLine = function (line, lineIndent) {\n var lineResult = new PdfStringLayoutResult();\n lineResult.layoutLineHeight = this.getLineHeight();\n var lines = [];\n var maxWidth = this.size.width;\n var lineWidth = this.getLineWidth(line) + lineIndent;\n var lineType = LineType.FirstParagraphLine;\n var readWord = true;\n // line is in bounds.\n if (maxWidth <= 0 || Math.round(lineWidth) <= Math.round(maxWidth)) {\n this.addToLineResult(lineResult, lines, line, lineWidth, LineType.NewLineBreak | lineType);\n }\n else {\n var builder = '';\n var curLine = '';\n lineWidth = lineIndent;\n var curIndent = lineIndent;\n var reader = new StringTokenizer(line);\n var word = reader.peekWord();\n if (word.length !== reader.length) {\n if (word === ' ') {\n curLine = curLine + word;\n builder = builder + word;\n reader.position += 1;\n word = reader.peekWord();\n }\n }\n while (word != null) {\n curLine = curLine + word;\n var curLineWidth = this.getLineWidth(curLine.toString()) + curIndent;\n if (curLine.toString() === ' ') {\n curLine = '';\n curLineWidth = 0;\n }\n if (curLineWidth > maxWidth) {\n if (this.getWrapType() === PdfWordWrapType.None) {\n break;\n }\n if (curLine.length === word.length) {\n // Character wrap is disabled or one symbol is greater than bounds.\n if (this.getWrapType() === PdfWordWrapType.WordOnly) {\n lineResult.textRemainder = line.substring(reader.position);\n break;\n }\n else if (curLine.length === 1) {\n builder = builder + word;\n break;\n }\n else {\n readWord = false;\n curLine = '';\n word = reader.peek().toString();\n continue;\n }\n }\n else {\n if (this.getLineWidth(word.toString()) > maxWidth) {\n this.format.wordWrap = PdfWordWrapType.Character;\n }\n else {\n if (typeof this.format !== 'undefined' && this.format !== null) {\n this.format.wordWrap = PdfWordWrapType.Word;\n }\n }\n if (this.getWrapType() !== PdfWordWrapType.Character || !readWord) {\n var ln = builder.toString();\n // if (ln.indexOf(' ') === -1) {\n // isSingleWord = true;\n // this.addToLineResult(lineResult, lines, curLine, lineWidth, LineType.LayoutBreak | lineType);\n // } else {\n // this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n // } \n if (ln !== ' ') {\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.LayoutBreak | lineType);\n }\n if (this.isOverloadWithPosition) {\n maxWidth = this.clientSize.width;\n }\n curLine = '';\n builder = '';\n lineWidth = 0;\n curIndent = 0;\n curLineWidth = 0;\n lineType = LineType.None;\n // if (isSingleWord) {\n // reader.readWord();\n // readWord = false;\n // }\n word = (readWord) ? word : reader.peekWord();\n //isSingleWord = false;\n readWord = true;\n }\n else {\n readWord = false;\n curLine = '';\n curLine = curLine + builder.toString();\n word = reader.peek().toString();\n }\n continue;\n }\n }\n /*tslint:disable:max-func-body-length */\n builder = builder + word;\n lineWidth = curLineWidth;\n if (readWord) {\n reader.readWord();\n word = reader.peekWord();\n //isSingleWord = false;\n }\n else {\n reader.read();\n word = reader.peek().toString();\n }\n }\n if (builder.length > 0) {\n var ln = builder.toString();\n this.addToLineResult(lineResult, lines, ln, lineWidth, LineType.NewLineBreak | LineType.LastParagraphLine);\n }\n reader.close();\n }\n lineResult.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n lineResult.layoutLines.push(lines[index]);\n }\n lines = [];\n return lineResult;\n };\n /**\n * `Adds` line to line result.\n * @private\n */\n PdfStringLayouter.prototype.addToLineResult = function (lineResult, lines, line, lineWidth, breakType) {\n var info = new LineInfo();\n info.text = line;\n info.width = lineWidth;\n info.lineType = breakType;\n lines.push(info);\n var size = lineResult.actualSize;\n size.height += this.getLineHeight();\n size.width = Math.max(size.width, lineWidth);\n lineResult.size = size;\n };\n /**\n * `Copies` layout result from line result to entire result. Checks whether we can proceed lay outing or not.\n * @private\n */\n PdfStringLayouter.prototype.copyToResult = function (result, lineResult, lines, \n /*out*/ numInserted) {\n var success = true;\n var allowPartialLines = (this.format != null && !this.format.lineLimit);\n var height = result.actualSize.height;\n var maxHeight = this.size.height;\n if ((this.pageHeight > 0) && (maxHeight + this.rectangle.y > this.pageHeight)) {\n maxHeight = this.rectangle.y - this.pageHeight;\n maxHeight = Math.max(maxHeight, -maxHeight);\n }\n numInserted = 0;\n if (lineResult.lines != null) {\n for (var i = 0, len = lineResult.lines.length; i < len; i++) {\n var expHeight = height + lineResult.lineHeight;\n if (expHeight <= maxHeight || maxHeight <= 0 || allowPartialLines) {\n var info = lineResult.lines[i];\n numInserted += info.text.length;\n info = this.trimLine(info, (lines.length === 0));\n lines.push(info);\n // Update width.\n var size = result.actualSize;\n size.width = Math.max(size.width, info.width);\n result.size = size;\n // The part of the line fits only and it's allowed to use partial lines.\n // if (expHeight >= maxHeight && maxHeight > 0 && allowPartialLines)\n // {\n // let shouldClip : boolean = (this.format == null || !this.format.noClip);\n // if (shouldClip)\n // {\n // let exceededHeight : number = expHeight - maxHeight;\n // let fitHeight : number = /*Utils.Round(*/ lineResult.lineHeight - exceededHeight /*)*/;\n // height = /*Utils.Round(*/ height + fitHeight /*)*/;\n // }\n // else\n // {\n // height = expHeight;\n // }\n // success = false;\n // break;\n // } else {\n height = expHeight;\n // }\n }\n else {\n success = false;\n break;\n }\n }\n }\n if (height != result.size.height) {\n var size1 = result.actualSize;\n size1.height = height;\n result.size = size1;\n }\n return { success: success, numInserted: numInserted };\n };\n /**\n * `Finalizes` final result.\n * @private\n */\n PdfStringLayouter.prototype.finalizeResult = function (result, lines) {\n result.layoutLines = [];\n for (var index = 0; index < lines.length; index++) {\n result.layoutLines.push(lines[index]);\n }\n result.layoutLineHeight = this.getLineHeight();\n if (!this.reader.end) {\n result.textRemainder = this.reader.readToEnd();\n }\n lines = [];\n };\n /**\n * `Trims` whitespaces at the line.\n * @private\n */\n PdfStringLayouter.prototype.trimLine = function (info, firstLine) {\n var line = info.text;\n var lineWidth = info.width;\n // Trim start whitespaces if the line is not a start of the paragraph only.\n var trimStartSpaces = ((info.lineType & LineType.FirstParagraphLine) === 0);\n var start = (this.format == null || !this.format.rightToLeft);\n line = (start) ? line.trim() : line.trim();\n // Recalculate line width.\n if (line.length !== info.text.length) {\n lineWidth = this.getLineWidth(line);\n if ((info.lineType & LineType.FirstParagraphLine) > 0) {\n lineWidth += this.getLineIndent(firstLine);\n }\n }\n info.text = line;\n info.width = lineWidth;\n return info;\n };\n /**\n * Returns `wrap` type.\n * @private\n */\n PdfStringLayouter.prototype.getWrapType = function () {\n var wrapType = (this.format != null) ? this.format.wordWrap : PdfWordWrapType.Word;\n return wrapType;\n };\n return PdfStringLayouter;\n}());\n//Internal declaration\nvar PdfStringLayoutResult = /** @__PURE__ @class */ (function () {\n function PdfStringLayoutResult() {\n }\n Object.defineProperty(PdfStringLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets the `text` which is not lay outed.\n * @private\n */\n get: function () {\n return this.textRemainder;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"actualSize\", {\n /**\n * Gets the actual layout text `bounds`.\n * @private\n */\n get: function () {\n if (typeof this.size === 'undefined') {\n this.size = new SizeF(0, 0);\n }\n return this.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lines\", {\n /**\n * Gets layout `lines` information.\n * @private\n */\n get: function () {\n return this.layoutLines;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineHeight\", {\n /**\n * Gets the `height` of the line.\n * @private\n */\n get: function () {\n return this.layoutLineHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"empty\", {\n /**\n * Gets value that indicates whether any layout text [`empty`].\n * @private\n */\n get: function () {\n return (this.layoutLines == null || this.layoutLines.length === 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStringLayoutResult.prototype, \"lineCount\", {\n /**\n * Gets `number of` the layout lines.\n * @private\n */\n get: function () {\n var count = (!this.empty) ? this.layoutLines.length : 0;\n return count;\n },\n enumerable: true,\n configurable: true\n });\n return PdfStringLayoutResult;\n}());\nvar LineInfo = /** @__PURE__ @class */ (function () {\n function LineInfo() {\n }\n Object.defineProperty(LineInfo.prototype, \"lineType\", {\n //Properties\n /**\n * Gets the `type` of the line text.\n * @private\n */\n get: function () {\n return this.type;\n },\n set: function (value) {\n this.type = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"text\", {\n /**\n * Gets the line `text`.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(LineInfo.prototype, \"width\", {\n /**\n * Gets `width` of the line text.\n * @private\n */\n get: function () {\n return this.lineWidth;\n },\n set: function (value) {\n this.lineWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n return LineInfo;\n}());\n/**\n* Break type of the `line`.\n* @private\n*/\nvar LineType;\n(function (LineType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n LineType[LineType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `NewLineBreak`.\n * @private\n */\n LineType[LineType[\"NewLineBreak\"] = 1] = \"NewLineBreak\";\n /**\n * Specifies the type of `LayoutBreak`.\n * @private\n */\n LineType[LineType[\"LayoutBreak\"] = 2] = \"LayoutBreak\";\n /**\n * Specifies the type of `FirstParagraphLine`.\n * @private\n */\n LineType[LineType[\"FirstParagraphLine\"] = 4] = \"FirstParagraphLine\";\n /**\n * Specifies the type of `LastParagraphLine`.\n * @private\n */\n LineType[LineType[\"LastParagraphLine\"] = 8] = \"LastParagraphLine\";\n})(LineType || (LineType = {}));\n\n/**\n * PdfFont.ts class for EJ2-PDF\n */\n/**\n * Defines a particular format for text, including font face, size, and style attributes.\n * @private\n */\nvar PdfFont = /** @__PURE__ @class */ (function () {\n function PdfFont(size, style) {\n /**\n * `Style` of the font.\n * @private\n */\n this.fontStyle = PdfFontStyle.Regular;\n if (typeof size === 'number' && typeof style === 'undefined') {\n this.fontSize = size;\n }\n else {\n this.fontSize = size;\n this.setStyle(style);\n }\n }\n Object.defineProperty(PdfFont.prototype, \"name\", {\n //Properties\n /**\n * Gets the face name of this Font.\n * @private\n */\n get: function () {\n return this.metrics.name;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"size\", {\n /**\n * Gets the size of this font.\n * @private\n */\n get: function () {\n return this.fontSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"height\", {\n /**\n * Gets the height of the font in points.\n * @private\n */\n get: function () {\n return this.metrics.getHeight(null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"style\", {\n /**\n * Gets the style information for this font.\n * @private\n */\n get: function () {\n return this.fontStyle;\n },\n set: function (value) {\n this.fontStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"bold\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `bold`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Bold) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"italic\", {\n /**\n * Gets a value indicating whether this `PdfFont` has the `italic` style applied.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Italic) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"strikeout\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `strikeout`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Strikeout) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"underline\", {\n /**\n * Gets a value indicating whether this `PdfFont` is `underline`.\n * @private\n */\n get: function () {\n return ((this.style & PdfFontStyle.Underline) > 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"metrics\", {\n /**\n * Gets or sets the `metrics` for this font.\n * @private\n */\n get: function () {\n return this.fontMetrics;\n },\n set: function (value) {\n this.fontMetrics = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFont.prototype, \"element\", {\n // /**\n // * Gets and Sets the font `internals`.\n // * @private\n // */\n // public get fontInternal() : IPdfPrimitive {\n // return this.pdfFontInternals;\n // }\n // public set fontInternal(value : IPdfPrimitive) {\n // this.pdfFontInternals = value;\n // }\n //IPdfWrapper Members\n /**\n * Gets the `element` representing the font.\n * @private\n */\n get: function () {\n return this.pdfFontInternals;\n },\n enumerable: true,\n configurable: true\n });\n PdfFont.prototype.measureString = function (text, arg2, arg3, arg4, arg5) {\n if (typeof text === 'string' && typeof arg2 === 'undefined') {\n return this.measureString(text, null);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'undefined' && typeof arg4 === 'undefined') {\n var temparg2 = arg2;\n var charactersFitted = 0;\n var linesFilled = 0;\n return this.measureString(text, temparg2, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && (arg2 instanceof PdfStringFormat || arg2 == null) && typeof arg3 === 'number' && typeof arg4 === 'number') {\n var temparg2 = arg2;\n return this.measureString(text, 0, temparg2, arg3, arg4);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else if (typeof text === 'string' && typeof arg2 === 'number' && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'number' && typeof arg5 === 'number') {\n var layoutArea = new SizeF(arg2, 0);\n var temparg3 = arg3;\n return this.measureString(text, layoutArea, temparg3, arg4, arg5);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n // return this.measureString(text, arg2, null);\n // } else if (typeof text === 'string' && arg2 instanceof SizeF && (arg3 instanceof PdfStringFormat || arg3 == null) && typeof arg4 === 'undefined' && typeof arg5 === 'undefined') {\n // let temparg3 : PdfStringFormat = arg3 as PdfStringFormat;\n // let charactersFitted : number = 0;\n // let linesFilled : number = 0;\n // return this.measureString(text, arg2, temparg3, charactersFitted, linesFilled);\n }\n else {\n if (text == null) {\n throw Error(\"ArgumentNullException(\\\"text\\\")\");\n }\n var temparg2 = arg2;\n var temparg3 = arg3;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(text, this, temparg3, temparg2, false, new SizeF(0, 0));\n // arg4 = (result.Remainder == null) ? text.length : text.length - result.Remainder.length;\n arg4 = text.length;\n arg5 = (result.empty) ? 0 : result.lines.length;\n return result.actualSize;\n }\n };\n /* tslint:enable */\n //IPdfCache Members\n /**\n * `Checks` whether the object is similar to another object.\n * @private\n */\n PdfFont.prototype.equalsTo = function (obj) {\n var result = this.equalsToFont(obj);\n return result;\n };\n /**\n * Returns `internals` of the object.\n * @private\n */\n PdfFont.prototype.getInternals = function () {\n return this.pdfFontInternals;\n };\n /**\n * Sets `internals` to the object.\n * @private\n */\n PdfFont.prototype.setInternals = function (internals) {\n if (internals == null) {\n throw new Error('ArgumentNullException:internals');\n }\n this.pdfFontInternals = internals;\n };\n /**\n * Sets the `style` of the font.\n * @private\n */\n PdfFont.prototype.setStyle = function (style) {\n this.fontStyle = style;\n };\n /**\n * Applies `settings` to the default line width.\n * @private\n */\n PdfFont.prototype.applyFormatSettings = function (line, format, width) {\n // if (line == null) {\n // throw new Error(`ArgumentNullException:line`);\n // }\n var realWidth = width;\n if (format != null && width > 0) {\n // Space among characters is not default.\n if (format.characterSpacing !== 0) {\n realWidth += (line.length - 1) * format.characterSpacing;\n }\n // Space among words is not default.\n if (format.wordSpacing !== 0) {\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n realWidth += whitespacesCount * format.wordSpacing;\n }\n }\n return realWidth;\n };\n //Constants\n /**\n * `Multiplier` of the symbol width.\n * @default 0.001\n * @private\n */\n PdfFont.charSizeMultiplier = 0.001;\n /**\n * `Synchronization` object.\n * @private\n */\n PdfFont.syncObject = new Object();\n return PdfFont;\n}());\n\n/**\n * Used to `write a string` into output file.\n * @private\n */\nvar PdfWriter = /** @__PURE__ @class */ (function () {\n /**\n * Initialize an instance of `PdfWriter` class.\n * @private\n */\n function PdfWriter(stream) {\n this.streamWriter = stream;\n }\n Object.defineProperty(PdfWriter.prototype, \"document\", {\n //properties\n /**\n * Gets and Sets the `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"position\", {\n /**\n * Gets the `position`.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"length\", {\n /**\n * Gets the `length` of the stream'.\n * @private\n */\n get: function () {\n return this.streamWriter.buffer.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfWriter.prototype, \"stream\", {\n /**\n * Gets the `stream`.\n * @private\n */\n get: function () {\n var result = this.streamWriter;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n //public Methods\n /**\n * `Writes the specified data`.\n * @private\n */\n PdfWriter.prototype.write = function (overload) {\n var tempOverload = overload;\n this.streamWriter.write(tempOverload);\n };\n return PdfWriter;\n}());\n\n/**\n * public Enum for `CompositeFontType`.\n * @private\n */\nvar ObjectStatus;\n(function (ObjectStatus) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Registered`.\n * @private\n */\n ObjectStatus[ObjectStatus[\"Registered\"] = 1] = \"Registered\";\n})(ObjectStatus || (ObjectStatus = {}));\n\n/**\n * PdfMainObjectCollection.ts class for EJ2-PDF\n */\n/**\n * The collection of all `objects` within a PDF document.\n * @private\n */\nvar PdfMainObjectCollection = /** @__PURE__ @class */ (function () {\n function PdfMainObjectCollection() {\n //Fields\n /**\n * The collection of the `indirect objects`.\n * @default []\n * @private\n */\n this.objectCollections = [];\n /**\n * The collection of the `Indirect objects`.\n * @default new Dictionary()\n * @private\n */\n this.mainObjectCollection = new Dictionary();\n /**\n * The collection of `primitive objects`.\n * @private\n */\n this.primitiveObjectCollection = new Dictionary();\n }\n Object.defineProperty(PdfMainObjectCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the `count`.\n * @private\n */\n get: function () {\n return this.objectCollections.length;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the value of `ObjectInfo` from object collection.\n * @private\n */\n PdfMainObjectCollection.prototype.items = function (index) {\n return this.objectCollections[index];\n };\n Object.defineProperty(PdfMainObjectCollection.prototype, \"outIsNew\", {\n //Methods\n /**\n * Specifies the value of `IsNew`.\n * @private\n */\n get: function () {\n return this.isNew;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Adds` the specified element.\n * @private\n */\n PdfMainObjectCollection.prototype.add = function (element) {\n var objInfo = new ObjectInfo(element);\n this.objectCollections.push(objInfo);\n if (!this.primitiveObjectCollection.containsKey(element)) {\n this.primitiveObjectCollection.setValue(element, this.objectCollections.length - 1);\n }\n element.position = this.index = this.objectCollections.length - 1;\n element.status = ObjectStatus.Registered;\n };\n /**\n * `Looks` through the collection for the object specified.\n * @private\n */\n PdfMainObjectCollection.prototype.lookFor = function (obj) {\n var index = -1;\n if (obj.position !== -1) {\n return obj.position;\n }\n if (this.primitiveObjectCollection.containsKey(obj) && this.count === this.primitiveObjectCollection.size()) {\n index = this.primitiveObjectCollection.getValue(obj);\n }\n else {\n for (var i = this.count - 1; i >= 0; i--) {\n var oi = this.objectCollections[i];\n if (oi.object === obj) {\n index = i;\n break;\n }\n }\n }\n return index;\n };\n /**\n * Gets the `reference of the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.getReference = function (index, isNew) {\n this.index = this.lookFor(index);\n var reference;\n this.isNew = false;\n var oi = this.objectCollections[this.index];\n reference = oi.reference;\n var obj = { reference: reference, wasNew: isNew };\n return obj;\n };\n /**\n * Tries to set the `reference to the object`.\n * @private\n */\n PdfMainObjectCollection.prototype.trySetReference = function (obj, reference, found) {\n var result = true;\n found = true;\n this.index = this.lookFor(obj);\n var oi = this.objectCollections[this.index];\n oi.setReference(reference);\n return result;\n };\n PdfMainObjectCollection.prototype.destroy = function () {\n for (var _i = 0, _a = this.objectCollections; _i < _a.length; _i++) {\n var obj = _a[_i];\n if (obj !== undefined) {\n obj.pdfObject.position = -1;\n obj.pdfObject.isSaving = undefined;\n obj.pdfObject.objectCollectionIndex = undefined;\n obj.pdfObject.position = undefined;\n }\n }\n this.objectCollections = [];\n this.mainObjectCollection = new Dictionary();\n this.primitiveObjectCollection = new Dictionary();\n };\n return PdfMainObjectCollection;\n}());\nvar ObjectInfo = /** @__PURE__ @class */ (function () {\n function ObjectInfo(obj, reference) {\n this.pdfObject = obj;\n this.pdfReference = reference;\n }\n Object.defineProperty(ObjectInfo.prototype, \"object\", {\n //Properties\n /**\n * Gets the `object`.\n * @private\n */\n get: function () {\n return this.pdfObject;\n },\n set: function (value) {\n this.pdfObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ObjectInfo.prototype, \"reference\", {\n /**\n * Gets the `reference`.\n * @private\n */\n get: function () {\n return this.pdfReference;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `reference`.\n * @private\n */\n ObjectInfo.prototype.setReference = function (reference) {\n this.pdfReference = reference;\n };\n return ObjectInfo;\n}());\n\n/**\n * `PdfDocumentBase` class represent common properties of PdfDocument classes.\n * @private\n */\nvar PdfDocumentBase = /** @__PURE__ @class */ (function () {\n function PdfDocumentBase(document) {\n /**\n * If the stream is copied, then it specifies true.\n * @private\n */\n this.isStreamCopied = false;\n if (document instanceof PdfDocument) {\n this.document = document;\n }\n }\n Object.defineProperty(PdfDocumentBase.prototype, \"pdfObjects\", {\n //Prpperties\n /**\n * Gets the `PDF objects` collection, which stores all objects and references to it..\n * @private\n */\n get: function () {\n return this.objects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"crossTable\", {\n /**\n * Gets the `cross-reference` table.\n * @private\n */\n get: function () {\n return this.pdfCrossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"currentSavingObj\", {\n /**\n * Gets or sets the current saving `object number`.\n * @private\n */\n get: function () {\n return this.currentSavingObject;\n },\n set: function (value) {\n this.currentSavingObject = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentBase.prototype, \"catalog\", {\n /**\n * Gets the PDF document `catalog`.\n * @private\n */\n get: function () {\n return this.pdfCatalog;\n },\n set: function (value) {\n this.pdfCatalog = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public methods\n /**\n * Sets the `main object collection`.\n * @private\n */\n PdfDocumentBase.prototype.setMainObjectCollection = function (mainObjectCollection) {\n this.objects = mainObjectCollection;\n };\n /**\n * Sets the `cross table`.\n * @private\n */\n PdfDocumentBase.prototype.setCrossTable = function (cTable) {\n this.pdfCrossTable = cTable;\n };\n /**\n * Sets the `catalog`.\n * @private\n */\n PdfDocumentBase.prototype.setCatalog = function (catalog) {\n this.pdfCatalog = catalog;\n };\n PdfDocumentBase.prototype.save = function (filename) {\n var _this = this;\n var encoding = new Encoding(true);\n var SW = new StreamWriter(encoding);\n if (typeof filename === 'undefined') {\n var encoding_1 = new Encoding(true);\n var SW_1 = new StreamWriter(encoding_1);\n return new Promise(function (resolve, reject) {\n /* tslint:disable-next-line:no-any */\n var obj = {};\n obj.blobData = new Blob([_this.document.docSave(SW_1, true)], { type: 'application/pdf' });\n resolve(obj);\n });\n }\n else {\n this.document.docSave(SW, filename, true);\n }\n };\n /**\n * `Clone` of parent object - PdfDocument.\n * @private\n */\n PdfDocumentBase.prototype.clone = function () {\n return this.document;\n };\n return PdfDocumentBase;\n}());\n\n/**\n * public Enum for `ObjectType`.\n * @private\n */\nvar ObjectType;\n(function (ObjectType) {\n /**\n * Specifies the type of `Free`.\n * @private\n */\n ObjectType[ObjectType[\"Free\"] = 0] = \"Free\";\n /**\n * Specifies the type of `Normal`.\n * @private\n */\n ObjectType[ObjectType[\"Normal\"] = 1] = \"Normal\";\n /**\n * Specifies the type of `Packed`.\n * @private\n */\n ObjectType[ObjectType[\"Packed\"] = 2] = \"Packed\";\n})(ObjectType || (ObjectType = {}));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfCatalog.ts class for EJ2-PDF\n */\n/**\n * `PdfCatalog` class represents internal catalog of the Pdf document.\n * @private\n */\nvar PdfCatalog = /** @__PURE__ @class */ (function (_super) {\n __extends$7(PdfCatalog, _super);\n //constructor\n /**\n * Initializes a new instance of the `PdfCatalog` class.\n * @private\n */\n function PdfCatalog() {\n var _this = _super.call(this) || this;\n //fields\n /**\n * Internal variable to store collection of `sections`.\n * @default null\n * @private\n */\n _this.sections = null;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n _this.tempDictionaryProperties = new DictionaryProperties();\n _this.items.setValue(new DictionaryProperties().type, new PdfName('Catalog'));\n return _this;\n }\n Object.defineProperty(PdfCatalog.prototype, \"pages\", {\n //Properties\n /**\n * Gets or sets the sections, which contain `pages`.\n * @private\n */\n get: function () {\n return this.sections;\n },\n set: function (value) {\n var dictionary = value.element;\n // if (this.sections !== value) {\n // this.sections = value;\n // this.Items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n // }\n this.sections = value;\n this.items.setValue(this.tempDictionaryProperties.pages, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n return PdfCatalog;\n}(PdfDictionary));\n\n/**\n * `PdfCrossTable` is responsible for intermediate level parsing\n * and savingof a PDF document.\n * @private\n */\nvar PdfCrossTable = /** @__PURE__ @class */ (function () {\n function PdfCrossTable() {\n /**\n * The modified `objects` that should be saved.\n * @private\n */\n this.objects = new Dictionary();\n /**\n * Holds `maximal generation number` or offset to object.\n * @default 0\n * @private\n */\n this.maxGenNumIndex = 0;\n /**\n * The `number of the objects`.\n * @default 0\n * @private\n */\n this.objectCount = 0;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new PdfDictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n }\n Object.defineProperty(PdfCrossTable.prototype, \"isMerging\", {\n //Properties\n /**\n * Gets or sets if the document `is merged`.\n * @private\n */\n get: function () {\n return this.merging;\n },\n set: function (value) {\n this.merging = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"trailer\", {\n /**\n * Gets the `trailer`.\n * @private\n */\n get: function () {\n if (this.internalTrailer == null) {\n this.internalTrailer = new PdfStream();\n }\n return this.internalTrailer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"document\", {\n /**\n * Gets or sets the main `PdfDocument` class instance.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n this.items = this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"pdfObjects\", {\n /**\n * Gets the catched `PDF object` main collection.\n * @private\n */\n get: function () {\n return this.items;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"objectCollection\", {\n /**\n * Gets the `object collection`.\n * @private\n */\n get: function () {\n return this.pdfDocument.pdfObjects;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"count\", {\n /**\n * Gets or sets the `number of the objects` within the document.\n * @private\n */\n get: function () {\n return this.objectCount;\n },\n set: function (value) {\n this.objectCount = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCrossTable.prototype, \"nextObjNumber\", {\n /**\n * Returns `next available object number`.\n * @private\n */\n get: function () {\n this.count = this.count + 1;\n return this.count;\n },\n enumerable: true,\n configurable: true\n });\n PdfCrossTable.prototype.save = function (writer, filename) {\n this.saveHead(writer);\n this.mappedReferences = null;\n this.objects.clear();\n this.markTrailerReferences();\n this.saveObjects(writer);\n var saveCount = this.count;\n var xrefPos = writer.position;\n this.registerObject(0, new PdfReference(0, -1), true);\n var prevXRef = 0;\n writer.write(Operators.xref);\n writer.write(Operators.newLine);\n this.saveSections(writer);\n this.saveTrailer(writer, this.count, prevXRef);\n this.saveTheEndess(writer, xrefPos);\n this.count = saveCount;\n for (var i = 0; i < this.objectCollection.count; ++i) {\n var oi = this.objectCollection.items(i);\n oi.object.isSaving = false;\n }\n if (typeof filename === 'undefined') {\n return writer.stream.buffer;\n }\n else {\n writer.stream.save(filename);\n }\n };\n /**\n * `Saves the endess` of the file.\n * @private\n */\n PdfCrossTable.prototype.saveTheEndess = function (writer, xrefPos) {\n writer.write(Operators.newLine + Operators.startxref + Operators.newLine);\n writer.write(xrefPos.toString() + Operators.newLine);\n writer.write(Operators.eof + Operators.newLine);\n };\n /**\n * `Saves the new trailer` dictionary.\n * @private\n */\n PdfCrossTable.prototype.saveTrailer = function (writer, count, prevXRef) {\n writer.write(Operators.trailer + Operators.newLine);\n // Save the dictionary.\n var trailer = this.trailer;\n trailer.items.setValue(this.dictionaryProperties.size, new PdfNumber(this.objectCount + 1));\n trailer = new PdfDictionary(trailer); // Make it real dictionary.\n trailer.setEncrypt(false);\n trailer.save(writer);\n };\n /**\n * `Saves the xref section`.\n * @private\n */\n PdfCrossTable.prototype.saveSections = function (writer) {\n var objectNum = 0;\n var count = 0;\n do {\n count = this.prepareSubsection(objectNum);\n this.saveSubsection(writer, objectNum, count);\n objectNum += count;\n } while (count !== 0);\n };\n /**\n * `Saves a subsection`.\n * @private\n */\n PdfCrossTable.prototype.saveSubsection = function (writer, objectNum, count) {\n if (count <= 0 || objectNum >= this.count) {\n return;\n }\n writer.write(objectNum + ' ' + (count + 1) + Operators.newLine);\n for (var i = objectNum; i <= objectNum + count; ++i) {\n var obj = this.objects.getValue(i);\n var str = '';\n if (obj.type === ObjectType.Free) {\n str = this.getItem(obj.offset, 65535, true);\n }\n else {\n str = this.getItem(obj.offset, obj.generation, false);\n }\n writer.write(str);\n }\n };\n /**\n * Generates string for `xref table item`.\n * @private\n */\n PdfCrossTable.prototype.getItem = function (offset, genNumber, isFree) {\n var returnString = '';\n var addOffsetLength = 10 - offset.toString().length;\n if (genNumber <= 0) {\n genNumber = 0;\n }\n var addGenNumberLength = (5 - genNumber.toString().length) <= 0 ? 0 : (5 - genNumber.toString().length);\n for (var index = 0; index < addOffsetLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + offset.toString() + ' ';\n for (var index = 0; index < addGenNumberLength; index++) {\n returnString = returnString + '0';\n }\n returnString = returnString + genNumber.toString() + ' ';\n returnString = returnString + ((isFree) ? Operators.f : Operators.n) + Operators.newLine;\n return returnString;\n };\n /**\n * `Prepares a subsection` of the current section within the cross-reference table.\n * @private\n */\n PdfCrossTable.prototype.prepareSubsection = function (objectNum) {\n var count = 0;\n var i;\n var total = this.count;\n for (var k = 0; k < this.document.pdfObjects.count; k++) {\n var reference = this.document.pdfObjects.items(k).reference;\n var refString = reference.toString();\n var refArray = refString.split(' ');\n }\n if (objectNum >= total) {\n return count;\n }\n // search for first changed indirect object.\n for (i = objectNum; i < total; ++i) {\n break;\n }\n objectNum = i;\n // look up for all indirect objects in one subsection.\n for (; i < total; ++i) {\n ++count;\n }\n return count;\n };\n /**\n * `Marks the trailer references` being saved.\n * @private\n */\n PdfCrossTable.prototype.markTrailerReferences = function () {\n var keys = this.trailer.items.keys();\n var values = this.trailer.items.values();\n };\n /**\n * `Saves the head`.\n * @private\n */\n PdfCrossTable.prototype.saveHead = function (writer) {\n var version = this.generateFileVersion(writer.document);\n writer.write('%PDF-' + version);\n writer.write(Operators.newLine);\n };\n /**\n * Generates the `version` of the file.\n * @private\n */\n PdfCrossTable.prototype.generateFileVersion = function (document) {\n var iVersion = 4;\n var version = '1.' + iVersion.toString();\n return version;\n };\n PdfCrossTable.prototype.getReference = function (obj, bNew) {\n if (typeof bNew === 'undefined') {\n var wasNew = false;\n return this.getReference(obj, wasNew);\n }\n else {\n //code splitted for reducing lines of code exceeds 100.\n return this.getSubReference(obj, bNew);\n }\n };\n /**\n * Retrieves the `reference` of the object given.\n * @private\n */\n PdfCrossTable.prototype.getSubReference = function (obj, bNew) {\n var isNew = false;\n var wasNew;\n var reference = null;\n // if (obj.IsSaving) {\n if (this.items.count > 0 && obj.objectCollectionIndex > 0 && this.items.count > obj.objectCollectionIndex - 1) {\n var tempObj = this.document.pdfObjects.getReference(obj, wasNew);\n reference = tempObj.reference;\n wasNew = tempObj.wasNew;\n }\n if (reference == null) {\n if (obj.status === ObjectStatus.Registered) {\n wasNew = false;\n }\n else {\n wasNew = true;\n }\n }\n else {\n wasNew = false;\n }\n // need to add mapped reference code\n if (reference == null) {\n var objnumber = this.nextObjNumber;\n reference = new PdfReference(objnumber, 0);\n var found = void 0;\n if (wasNew) {\n this.document.pdfObjects.add(obj);\n this.document.pdfObjects.trySetReference(obj, reference, found);\n var tempIndex = this.document.pdfObjects.count - 1;\n var tempkey = this.document.pdfObjects.objectCollections[tempIndex].reference.objNumber;\n var tempvalue = this.document.pdfObjects.objectCollections[this.document.pdfObjects.count - 1];\n this.document.pdfObjects.mainObjectCollection.setValue(tempkey, tempvalue);\n obj.position = -1;\n }\n else {\n this.document.pdfObjects.trySetReference(obj, reference, found);\n }\n obj.objectCollectionIndex = reference.objNumber;\n obj.status = ObjectStatus.None;\n isNew = true;\n }\n bNew = isNew || this.bForceNew;\n return reference;\n };\n /**\n * `Saves all objects` in the collection.\n * @private\n */\n PdfCrossTable.prototype.saveObjects = function (writer) {\n var objectCollection = this.objectCollection;\n for (var i = 0; i < objectCollection.count; ++i) {\n var oi = objectCollection.items(i);\n var obj = oi.object;\n obj.isSaving = true;\n this.saveIndirectObject(obj, writer);\n }\n };\n /**\n * `Saves indirect object`.\n * @private\n */\n PdfCrossTable.prototype.saveIndirectObject = function (obj, writer) {\n var reference = this.getReference(obj);\n if (obj instanceof PdfCatalog) {\n this.trailer.items.setValue(this.dictionaryProperties.root, reference);\n }\n // NOTE : This is needed for correct string objects encryption.\n this.pdfDocument.currentSavingObj = reference;\n var tempArchive = false;\n tempArchive = obj.getArchive();\n this.registerObject(writer.position, reference);\n this.doSaveObject(obj, reference, writer);\n };\n /**\n * Performs `real saving` of the save object.\n * @private\n */\n PdfCrossTable.prototype.doSaveObject = function (obj, reference, writer) {\n var correctPosition = writer.length;\n writer.write(reference.objNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(reference.genNumber.toString());\n writer.write(Operators.whiteSpace);\n writer.write(Operators.obj);\n writer.write(Operators.newLine);\n obj.save(writer);\n var stream = writer.stream;\n writer.write(Operators.endObj);\n writer.write(Operators.newLine);\n };\n PdfCrossTable.prototype.registerObject = function (offset, reference, free) {\n if (typeof free === 'boolean') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference, free));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n else if (typeof free === 'undefined') {\n // Register the object by its number.\n this.objects.setValue(reference.objNumber, new RegisteredObject(offset, reference));\n this.maxGenNumIndex = Math.max(this.maxGenNumIndex, reference.genNumber);\n }\n };\n /**\n * `Dereferences` the specified primitive object.\n * @private\n */\n PdfCrossTable.dereference = function (obj) {\n var rh = obj;\n if (rh != null) {\n obj = rh.object;\n }\n return obj;\n };\n return PdfCrossTable;\n}());\nvar RegisteredObject = /** @__PURE__ @class */ (function () {\n function RegisteredObject(offset, reference, free) {\n var tempOffset = offset;\n this.offsetNumber = tempOffset;\n var tempReference = reference;\n this.generation = tempReference.genNumber;\n this.object = tempReference.objNumber;\n if (typeof free === 'undefined') {\n this.type = ObjectType.Normal;\n }\n else {\n this.type = ObjectType.Free;\n }\n }\n Object.defineProperty(RegisteredObject.prototype, \"objectNumber\", {\n //Properties\n /**\n * Gets the `object number`.\n * @private\n */\n get: function () {\n return this.object;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RegisteredObject.prototype, \"offset\", {\n /**\n * Gets the `offset`.\n * @private\n */\n get: function () {\n var result;\n result = this.offsetNumber;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n return RegisteredObject;\n}());\n\n/**\n * PdfPageSize.ts class for EJ2-PDF\n */\n/**\n * Represents information about various predefined `page sizes`.\n */\nvar PdfPageSize = /** @__PURE__ @class */ (function () {\n //constructor\n /**\n * Initialize an instance for `PdfPageSize` class.\n * @private\n */\n function PdfPageSize() {\n // \n }\n /**\n * Specifies the size of `letter`.\n * @private\n */\n PdfPageSize.letter = new SizeF(612, 792);\n /**\n * Specifies the size of `note`.\n * @private\n */\n PdfPageSize.note = new SizeF(540, 720);\n /**\n * Specifies the size of `legal`.\n * @private\n */\n PdfPageSize.legal = new SizeF(612, 1008);\n /**\n * Specifies the size of `a0`.\n * @private\n */\n PdfPageSize.a0 = new SizeF(2380, 3368);\n /**\n * Specifies the size of `a1`.\n * @private\n */\n PdfPageSize.a1 = new SizeF(1684, 2380);\n /**\n * Specifies the size of `a2`.\n * @private\n */\n PdfPageSize.a2 = new SizeF(1190, 1684);\n /**\n * Specifies the size of `a3`.\n * @private\n */\n PdfPageSize.a3 = new SizeF(842, 1190);\n /**\n * Specifies the size of `a4`.\n * @private\n */\n PdfPageSize.a4 = new SizeF(595, 842);\n /**\n * Specifies the size of `a5`.\n * @private\n */\n PdfPageSize.a5 = new SizeF(421, 595);\n /**\n * Specifies the size of `a6`.\n * @private\n */\n PdfPageSize.a6 = new SizeF(297, 421);\n /**\n * Specifies the size of `a7`.\n * @private\n */\n PdfPageSize.a7 = new SizeF(210, 297);\n /**\n * Specifies the size of `a8`.\n * @private\n */\n PdfPageSize.a8 = new SizeF(148, 210);\n /**\n * Specifies the size of `a9`.\n * @private\n */\n PdfPageSize.a9 = new SizeF(105, 148);\n /**\n * Specifies the size of `a10`.\n * @private\n */\n PdfPageSize.a10 = new SizeF(74, 105);\n /**\n * Specifies the size of `b0`.\n * @private\n */\n PdfPageSize.b0 = new SizeF(2836, 4008);\n /**\n * Specifies the size of `b1`.\n * @private\n */\n PdfPageSize.b1 = new SizeF(2004, 2836);\n /**\n * Specifies the size of `b2`.\n * @private\n */\n PdfPageSize.b2 = new SizeF(1418, 2004);\n /**\n * Specifies the size of `b3`.\n * @private\n */\n PdfPageSize.b3 = new SizeF(1002, 1418);\n /**\n * Specifies the size of `b4`.\n * @private\n */\n PdfPageSize.b4 = new SizeF(709, 1002);\n /**\n * Specifies the size of `b5`.\n * @private\n */\n PdfPageSize.b5 = new SizeF(501, 709);\n /**\n * Specifies the size of `archE`.\n * @private\n */\n PdfPageSize.archE = new SizeF(2592, 3456);\n /**\n * Specifies the size of `archD`.\n * @private\n */\n PdfPageSize.archD = new SizeF(1728, 2592);\n /**\n * Specifies the size of `archC`.\n * @private\n */\n PdfPageSize.archC = new SizeF(1296, 1728);\n /**\n * Specifies the size of `archB`.\n * @private\n */\n PdfPageSize.archB = new SizeF(864, 1296);\n /**\n * Specifies the size of `archA`.\n * @private\n */\n PdfPageSize.archA = new SizeF(648, 864);\n /**\n * Specifies the size of `flsa`.\n * @private\n */\n PdfPageSize.flsa = new SizeF(612, 936);\n /**\n * Specifies the size of `halfLetter`.\n * @private\n */\n PdfPageSize.halfLetter = new SizeF(396, 612);\n /**\n * Specifies the size of `letter11x17`.\n * @private\n */\n PdfPageSize.letter11x17 = new SizeF(792, 1224);\n /**\n * Specifies the size of `ledger`.\n * @private\n */\n PdfPageSize.ledger = new SizeF(1224, 792);\n return PdfPageSize;\n}());\n\n/**\n * public Enum for `PdfPageOrientation`.\n * @private\n */\nvar PdfPageOrientation;\n(function (PdfPageOrientation) {\n /**\n * Specifies the type of `Portrait`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Portrait\"] = 0] = \"Portrait\";\n /**\n * Specifies the type of `Landscape`.\n * @private\n */\n PdfPageOrientation[PdfPageOrientation[\"Landscape\"] = 1] = \"Landscape\";\n})(PdfPageOrientation || (PdfPageOrientation = {}));\n/**\n * public Enum for `PdfPageRotateAngle`.\n * @private\n */\nvar PdfPageRotateAngle;\n(function (PdfPageRotateAngle) {\n /**\n * Specifies the type of `RotateAngle0`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle0\"] = 0] = \"RotateAngle0\";\n /**\n * Specifies the type of `RotateAngle90`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle90\"] = 1] = \"RotateAngle90\";\n /**\n * Specifies the type of `RotateAngle180`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle180\"] = 2] = \"RotateAngle180\";\n /**\n * Specifies the type of `RotateAngle270`.\n * @private\n */\n PdfPageRotateAngle[PdfPageRotateAngle[\"RotateAngle270\"] = 3] = \"RotateAngle270\";\n})(PdfPageRotateAngle || (PdfPageRotateAngle = {}));\n/**\n * public Enum for `PdfNumberStyle`.\n * @private\n */\nvar PdfNumberStyle;\n(function (PdfNumberStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Numeric`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"Numeric\"] = 1] = \"Numeric\";\n /**\n * Specifies the type of `LowerLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerLatin\"] = 2] = \"LowerLatin\";\n /**\n * Specifies the type of `LowerRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"LowerRoman\"] = 3] = \"LowerRoman\";\n /**\n * Specifies the type of `UpperLatin`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperLatin\"] = 4] = \"UpperLatin\";\n /**\n * Specifies the type of `UpperRoman`.\n * @private\n */\n PdfNumberStyle[PdfNumberStyle[\"UpperRoman\"] = 5] = \"UpperRoman\";\n})(PdfNumberStyle || (PdfNumberStyle = {}));\n/**\n * public Enum for `PdfDockStyle`.\n * @private\n */\nvar PdfDockStyle;\n(function (PdfDockStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Bottom\"] = 1] = \"Bottom\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Top\"] = 2] = \"Top\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Right\"] = 4] = \"Right\";\n /**\n * Specifies the type of `Fill`.\n * @private\n */\n PdfDockStyle[PdfDockStyle[\"Fill\"] = 5] = \"Fill\";\n})(PdfDockStyle || (PdfDockStyle = {}));\n/**\n * public Enum for `PdfAlignmentStyle`.\n * @private\n */\nvar PdfAlignmentStyle;\n(function (PdfAlignmentStyle) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `TopLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopLeft\"] = 1] = \"TopLeft\";\n /**\n * Specifies the type of `TopCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopCenter\"] = 2] = \"TopCenter\";\n /**\n * Specifies the type of `TopRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"TopRight\"] = 3] = \"TopRight\";\n /**\n * Specifies the type of `MiddleLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleLeft\"] = 4] = \"MiddleLeft\";\n /**\n * Specifies the type of `MiddleCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleCenter\"] = 5] = \"MiddleCenter\";\n /**\n * Specifies the type of `MiddleRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"MiddleRight\"] = 6] = \"MiddleRight\";\n /**\n * Specifies the type of `BottomLeft`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomLeft\"] = 7] = \"BottomLeft\";\n /**\n * Specifies the type of `BottomCenter`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomCenter\"] = 8] = \"BottomCenter\";\n /**\n * Specifies the type of `BottomRight`.\n * @private\n */\n PdfAlignmentStyle[PdfAlignmentStyle[\"BottomRight\"] = 9] = \"BottomRight\";\n})(PdfAlignmentStyle || (PdfAlignmentStyle = {}));\n/**\n * public Enum for `TemplateType`.\n * @private\n */\nvar TemplateType;\n(function (TemplateType) {\n /**\n * Specifies the type of `None`.\n * @private\n */\n TemplateType[TemplateType[\"None\"] = 0] = \"None\";\n /**\n * Specifies the type of `Top`.\n * @private\n */\n TemplateType[TemplateType[\"Top\"] = 1] = \"Top\";\n /**\n * Specifies the type of `Bottom`.\n * @private\n */\n TemplateType[TemplateType[\"Bottom\"] = 2] = \"Bottom\";\n /**\n * Specifies the type of `Left`.\n * @private\n */\n TemplateType[TemplateType[\"Left\"] = 3] = \"Left\";\n /**\n * Specifies the type of `Right`.\n * @private\n */\n TemplateType[TemplateType[\"Right\"] = 4] = \"Right\";\n})(TemplateType || (TemplateType = {}));\n\n/**\n * PdfMargins.ts class for EJ2-PDF\n * A class representing PDF page margins.\n */\nvar PdfMargins = /** @__PURE__ @class */ (function () {\n /**\n * Initializes a new instance of the `PdfMargins` class.\n * @private\n */\n function PdfMargins() {\n /**\n * Represents the `Default Page Margin` value.\n * @default 0.0\n * @private\n */\n this.pdfMargin = 40.0;\n this.setMargins(this.pdfMargin);\n }\n Object.defineProperty(PdfMargins.prototype, \"left\", {\n //Properties\n /**\n * Gets or sets the `left margin` size.\n * @private\n */\n get: function () {\n return this.leftMargin;\n },\n set: function (value) {\n this.leftMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"top\", {\n /**\n * Gets or sets the `top margin` size.\n * @private\n */\n get: function () {\n return this.topMargin;\n },\n set: function (value) {\n this.topMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"right\", {\n /**\n * Gets or sets the `right margin` size.\n * @private\n */\n get: function () {\n return this.rightMargin;\n },\n set: function (value) {\n this.rightMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom margin` size.\n * @private\n */\n get: function () {\n return this.bottomMargin;\n },\n set: function (value) {\n this.bottomMargin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfMargins.prototype, \"all\", {\n /**\n * Sets the `margins`.\n * @private\n */\n set: function (value) {\n this.setMargins(value);\n },\n enumerable: true,\n configurable: true\n });\n PdfMargins.prototype.setMargins = function (margin1, margin2, margin3, margin4) {\n if (typeof margin2 === 'undefined') {\n this.leftMargin = this.topMargin = this.rightMargin = this.bottomMargin = margin1;\n }\n else {\n if (typeof margin3 === 'undefined') {\n this.leftMargin = this.rightMargin = margin1;\n this.bottomMargin = this.topMargin = margin2;\n }\n else {\n this.leftMargin = margin1;\n this.topMargin = margin2;\n this.rightMargin = margin3;\n this.bottomMargin = margin4;\n }\n }\n };\n /**\n * `Clones` the object.\n * @private\n */\n PdfMargins.prototype.clone = function () {\n return this;\n };\n return PdfMargins;\n}());\n\n/**\n * PdfPageSettings.ts class for EJ2-PDF\n */\n/**\n * The class provides various `setting` related with PDF pages.\n */\nvar PdfPageSettings = /** @__PURE__ @class */ (function () {\n function PdfPageSettings(margins) {\n //Fields\n /**\n * The page `margins`.\n * @private\n */\n this.pageMargins = new PdfMargins();\n /**\n * The page `size`.\n * @default a4\n * @private\n */\n this.pageSize = PdfPageSize.a4;\n /**\n * The page `rotation angle`.\n * @default PdfPageRotateAngle.RotateAngle0\n * @private\n */\n this.rotateAngle = PdfPageRotateAngle.RotateAngle0;\n /**\n * The page `orientation`.\n * @default PdfPageOrientation.Portrait\n * @private\n */\n this.pageOrientation = PdfPageOrientation.Portrait;\n /**\n * The page `origin`.\n * @default 0,0\n * @private\n */\n this.pageOrigin = new PointF(0, 0);\n /**\n * Checks the Whether the `rotation` is applied or not.\n * @default false\n * @private\n */\n this.isRotation = false;\n if (typeof margins === 'number') {\n this.pageMargins.setMargins(margins);\n }\n }\n Object.defineProperty(PdfPageSettings.prototype, \"size\", {\n //Properties\n /**\n * Gets or sets the `size` of the page.\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.setSize(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"orientation\", {\n /**\n * Gets or sets the page `orientation`.\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (orientation) {\n if (this.pageOrientation !== orientation) {\n this.pageOrientation = orientation;\n this.updateSize(orientation);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"margins\", {\n /**\n * Gets or sets the `margins` of the page.\n * @private\n */\n get: function () {\n return this.pageMargins;\n },\n set: function (value) {\n this.pageMargins = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.width;\n },\n set: function (value) {\n this.pageSize.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the page.\n * @private\n */\n get: function () {\n return this.pageSize.height;\n },\n set: function (value) {\n this.pageSize.height = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"origin\", {\n /**\n * Gets or sets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageSettings.prototype, \"rotate\", {\n /**\n * Gets or sets the number of degrees by which the page should be `rotated` clockwise when displayed or printed.\n * @private\n */\n get: function () {\n return this.rotateAngle;\n },\n set: function (value) {\n this.rotateAngle = value;\n this.isRotation = true;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Update page size` depending on orientation.\n * @private\n */\n PdfPageSettings.prototype.updateSize = function (orientation) {\n var min = Math.min(this.pageSize.width, this.pageSize.height);\n var max = Math.max(this.pageSize.width, this.pageSize.height);\n switch (orientation) {\n case PdfPageOrientation.Portrait:\n this.pageSize = new SizeF(min, max);\n break;\n case PdfPageOrientation.Landscape:\n this.pageSize = new SizeF(max, min);\n break;\n }\n };\n /**\n * Creates a `clone` of the object.\n * @private\n */\n PdfPageSettings.prototype.clone = function () {\n var settings = this;\n settings.pageMargins = this.pageMargins.clone();\n // if (GetTransition() != null)\n // {\n // settings.Transition = (PdfPageTransition)Transition.clone();\n // }\n return settings;\n };\n /**\n * Returns `size`, shrinked by the margins.\n * @private\n */\n PdfPageSettings.prototype.getActualSize = function () {\n var width = this.width - (this.margins.left + this.margins.right);\n var height = this.height - (this.margins.top + this.margins.bottom);\n var size = new SizeF(width, height);\n return size;\n };\n /**\n * Sets `size` to the page aaccording to the orientation.\n * @private\n */\n PdfPageSettings.prototype.setSize = function (size) {\n var min = Math.min(size.width, size.height);\n var max = Math.max(size.width, size.height);\n if (this.orientation === PdfPageOrientation.Portrait) {\n this.pageSize = new SizeF(min, max);\n }\n else {\n this.pageSize = new SizeF(max, min);\n }\n };\n return PdfPageSettings;\n}());\n\n/**\n * Helper class to `write PDF graphic streams` easily.\n * @private\n */\nvar PdfStreamWriter = /** @__PURE__ @class */ (function () {\n /**\n * Initialize an instance of `PdfStreamWriter` class.\n * @private\n */\n function PdfStreamWriter(stream) {\n if (stream == null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.stream = stream;\n }\n //Implementation\n /**\n * `Clear` the stream.\n * @public\n */\n PdfStreamWriter.prototype.clear = function () {\n this.stream.clearStream();\n };\n PdfStreamWriter.prototype.setGraphicsState = function (dictionaryName) {\n if (dictionaryName instanceof PdfName) {\n this.stream.write(dictionaryName.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n else {\n this.stream.write(Operators.slash);\n this.stream.write(dictionaryName);\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setGraphicsState);\n }\n };\n /**\n * `Executes the XObject`.\n * @private\n */\n PdfStreamWriter.prototype.executeObject = function (name) {\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.paintXObject);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes path object`.\n * @private\n */\n PdfStreamWriter.prototype.closePath = function () {\n this.writeOperator(Operators.closePath);\n };\n /**\n * `Clips the path`.\n * @private\n */\n PdfStreamWriter.prototype.clipPath = function (useEvenOddRule) {\n this.stream.write(Operators.clipPath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n }\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.endPath);\n this.stream.write(Operators.newLine);\n };\n /**\n * `Closes, then fills and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.closeFillStrokePath);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills and strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.fillStrokePath = function (useEvenOddRule) {\n this.stream.write(Operators.fillStroke);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Fills path`.\n * @private\n */\n PdfStreamWriter.prototype.fillPath = function (useEvenOddRule) {\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Ends the path`.\n * @private\n */\n PdfStreamWriter.prototype.endPath = function () {\n this.writeOperator(Operators.n);\n };\n /**\n * `Closes and fills the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeFillPath = function (useEvenOddRule) {\n this.writeOperator(Operators.closePath);\n this.stream.write(Operators.fill);\n if (useEvenOddRule) {\n this.stream.write(Operators.evenOdd);\n this.stream.write(Operators.newLine);\n }\n else {\n this.stream.write(Operators.newLine);\n }\n };\n /**\n * `Closes and strokes the path`.\n * @private\n */\n PdfStreamWriter.prototype.closeStrokePath = function () {\n this.writeOperator(Operators.closeStrokePath);\n };\n /**\n * `Sets the text scaling`.\n * @private\n */\n PdfStreamWriter.prototype.setTextScaling = function (textScaling) {\n this.stream.write(PdfNumber.floatToString(textScaling));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextScaling);\n };\n /**\n * `Strokes path`.\n * @private\n */\n PdfStreamWriter.prototype.strokePath = function () {\n this.writeOperator(Operators.stroke);\n };\n /**\n * `Restores` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.restoreGraphicsState = function () {\n this.writeOperator(Operators.restoreState);\n };\n /**\n * `Saves` the graphics state.\n * @private\n */\n PdfStreamWriter.prototype.saveGraphicsState = function () {\n this.writeOperator(Operators.saveState);\n };\n PdfStreamWriter.prototype.startNextLine = function (arg1, arg2) {\n if (typeof arg1 === 'undefined') {\n this.writeOperator(Operators.goToNextLine);\n }\n else if (arg1 instanceof PointF) {\n this.writePoint(arg1);\n this.writeOperator(Operators.setCoords);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.setCoords);\n }\n };\n /**\n * Shows the `text`.\n * @private\n */\n PdfStreamWriter.prototype.showText = function (text) {\n this.checkTextParam(text);\n this.writeText(text);\n this.writeOperator(Operators.setText);\n };\n /**\n * Sets `text leading`.\n * @private\n */\n PdfStreamWriter.prototype.setLeading = function (leading) {\n this.stream.write(PdfNumber.floatToString(leading));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setTextLeading);\n };\n /**\n * `Begins the path`.\n * @private\n */\n PdfStreamWriter.prototype.beginPath = function (x, y) {\n this.writePoint(x, y);\n this.writeOperator(Operators.beginPath);\n };\n /**\n * `Begins text`.\n * @private\n */\n PdfStreamWriter.prototype.beginText = function () {\n this.writeOperator(Operators.beginText);\n };\n /**\n * `Ends text`.\n * @private\n */\n PdfStreamWriter.prototype.endText = function () {\n this.writeOperator(Operators.endText);\n };\n PdfStreamWriter.prototype.appendRectangle = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.appendRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writeOperator(Operators.appendRectangle);\n }\n };\n PdfStreamWriter.prototype.appendLineSegment = function (arg1, arg2) {\n if (arg1 instanceof PointF) {\n this.appendLineSegment(arg1.x, arg1.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writeOperator(Operators.appendLineSegment);\n }\n };\n /**\n * Sets the `text rendering mode`.\n * @private\n */\n PdfStreamWriter.prototype.setTextRenderingMode = function (renderingMode) {\n this.stream.write(renderingMode.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setRenderingMode);\n };\n /**\n * Sets the `character spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setCharacterSpacing = function (charSpacing) {\n this.stream.write(PdfNumber.floatToString(charSpacing));\n this.stream.write(Operators.whiteSpace);\n this.stream.write(Operators.setCharacterSpace);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `word spacing`.\n * @private\n */\n PdfStreamWriter.prototype.setWordSpacing = function (wordSpacing) {\n this.stream.write(PdfNumber.floatToString(wordSpacing));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setWordSpace);\n };\n PdfStreamWriter.prototype.showNextLineText = function (arg1, arg2) {\n if (arg1 instanceof PdfString) {\n this.checkTextParam(arg1);\n this.writeText(arg1);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n else {\n this.checkTextParam(arg1);\n this.writeText(arg1, arg2);\n this.writeOperator(Operators.setTextOnNewLine);\n }\n };\n PdfStreamWriter.prototype.setColorSpace = function (arg1, arg2) {\n if (arg1 instanceof PdfName && typeof arg2 === 'boolean') {\n var temparg1 = arg1;\n var temparg2 = arg2;\n // if (temparg1 == null) {\n // throw new Error('ArgumentNullException:name');\n // }\n var op = (temparg2) ? Operators.selectcolorspaceforstroking : Operators.selectcolorspacefornonstroking;\n this.stream.write(temparg1.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(op);\n this.stream.write(Operators.newLine);\n }\n else {\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.setColorSpace(new PdfName(temparg1), temparg2);\n }\n };\n /**\n * Modifies current `transformation matrix`.\n * @private\n */\n PdfStreamWriter.prototype.modifyCtm = function (matrix) {\n if (matrix == null) {\n throw new Error('ArgumentNullException:matrix');\n }\n this.stream.write(matrix.toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.modifyCtm);\n };\n PdfStreamWriter.prototype.setFont = function (font, name, size) {\n if (typeof name === 'string') {\n this.setFont(font, new PdfName(name), size);\n }\n else {\n if (font == null) {\n throw new Error('ArgumentNullException:font');\n }\n this.stream.write(name.toString());\n this.stream.write(Operators.whiteSpace);\n this.stream.write(PdfNumber.floatToString(size));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setFont);\n }\n };\n /**\n * `Writes the operator`.\n * @private\n */\n PdfStreamWriter.prototype.writeOperator = function (opcode) {\n this.stream.write(opcode);\n this.stream.write(Operators.newLine);\n };\n PdfStreamWriter.prototype.checkTextParam = function (text) {\n if (text == null) {\n throw new Error('ArgumentNullException:text');\n }\n if (typeof text === 'string' && text === '') {\n throw new Error('ArgumentException:The text can not be an empty string, text');\n }\n };\n PdfStreamWriter.prototype.writeText = function (arg1, arg2) {\n if ((arg1 instanceof PdfString) && (typeof arg2 === 'undefined')) {\n this.stream.write(arg1.pdfEncode());\n }\n else {\n var start = void 0;\n var end = void 0;\n if (arg2) {\n start = PdfString.hexStringMark[0];\n end = PdfString.hexStringMark[1];\n }\n else {\n start = PdfString.stringMark[0];\n end = PdfString.stringMark[1];\n }\n this.stream.write(start);\n this.stream.write(arg1);\n this.stream.write(end);\n }\n };\n PdfStreamWriter.prototype.writePoint = function (arg1, arg2) {\n if ((arg1 instanceof PointF) && (typeof arg2 === 'undefined')) {\n this.writePoint(arg1.x, arg1.y);\n }\n else {\n var temparg1 = arg1;\n this.stream.write(PdfNumber.floatToString(temparg1));\n this.stream.write(Operators.whiteSpace);\n // NOTE: Change Y co-ordinate because we shifted co-ordinate system only.\n arg2 = this.updateY(arg2);\n this.stream.write(PdfNumber.floatToString(arg2));\n this.stream.write(Operators.whiteSpace);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfStreamWriter.prototype.updateY = function (arg) {\n return -arg;\n };\n /**\n * `Writes string` to the file.\n * @private\n */\n PdfStreamWriter.prototype.write = function (string) {\n var builder = '';\n builder += string;\n builder += Operators.newLine;\n this.writeOperator(builder);\n };\n /**\n * `Writes comment` to the file.\n * @private\n */\n PdfStreamWriter.prototype.writeComment = function (comment) {\n if (comment != null && comment.length > 0) {\n var builder = '';\n builder += Operators.comment;\n builder += Operators.whiteSpace;\n builder += comment;\n //builder.Append( Operators.NewLine );\n this.writeOperator(builder);\n }\n else {\n throw new Error('Invalid comment');\n }\n };\n /**\n * Sets the `color and space`.\n * @private\n */\n PdfStreamWriter.prototype.setColorAndSpace = function (color, colorSpace, forStroking) {\n if (!color.isEmpty) {\n // bool test = color is PdfExtendedColor;\n this.stream.write(color.toString(colorSpace, forStroking));\n this.stream.write(Operators.newLine);\n }\n };\n // public setLineDashPattern(pattern : number[], patternOffset : number) : void\n // {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n // }\n // private setLineDashPatternHelper(pattern : PdfArray, patternOffset : PdfNumber) : void\n // {\n // pattern.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // patternOffset.Save(this);\n // this.m_stream.write(Operators.whiteSpace);\n // this.writeOperator(Operators.setDashPattern);\n // }\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPattern = function (pattern, patternOffset) {\n // let pat : PdfArray = new PdfArray(pattern);\n // let off : PdfNumber = new PdfNumber(patternOffset);\n // this.setLineDashPatternHelper(pat, off);\n this.setLineDashPatternHelper(pattern, patternOffset);\n };\n /**\n * Sets the `line dash pattern`.\n * @private\n */\n PdfStreamWriter.prototype.setLineDashPatternHelper = function (pattern, patternOffset) {\n var tempPattern = '[';\n if (pattern.length > 1) {\n for (var index = 0; index < pattern.length; index++) {\n if (index === pattern.length - 1) {\n tempPattern += pattern[index].toString();\n }\n else {\n tempPattern += pattern[index].toString() + ' ';\n }\n }\n }\n tempPattern += '] ';\n tempPattern += patternOffset.toString();\n tempPattern += ' ' + Operators.setDashPattern;\n this.stream.write(tempPattern);\n this.stream.write(Operators.newLine);\n };\n /**\n * Sets the `miter limit`.\n * @private\n */\n PdfStreamWriter.prototype.setMiterLimit = function (miterLimit) {\n this.stream.write(PdfNumber.floatToString(miterLimit));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setMiterLimit);\n };\n /**\n * Sets the `width of the line`.\n * @private\n */\n PdfStreamWriter.prototype.setLineWidth = function (width) {\n this.stream.write(PdfNumber.floatToString(width));\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineWidth);\n };\n /**\n * Sets the `line cap`.\n * @private\n */\n PdfStreamWriter.prototype.setLineCap = function (lineCapStyle) {\n this.stream.write((lineCapStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineCapStyle);\n };\n /**\n * Sets the `line join`.\n * @private\n */\n PdfStreamWriter.prototype.setLineJoin = function (lineJoinStyle) {\n this.stream.write((lineJoinStyle).toString());\n this.stream.write(Operators.whiteSpace);\n this.writeOperator(Operators.setLineJoinStyle);\n };\n Object.defineProperty(PdfStreamWriter.prototype, \"position\", {\n //IPdfWriter members\n /**\n * Gets or sets the current `position` within the stream.\n * @private\n */\n get: function () {\n return this.stream.position;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"length\", {\n /**\n * Gets `stream length`.\n * @private\n */\n get: function () {\n var returnValue = 0;\n if (this.stream.data.length !== 0 && this.stream.data.length !== -1) {\n for (var index = 0; index < this.stream.data.length; index++) {\n returnValue += this.stream.data[index].length;\n }\n }\n return returnValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfStreamWriter.prototype, \"document\", {\n /**\n * Gets and Sets the `current document`.\n * @private\n */\n get: function () {\n return null;\n },\n enumerable: true,\n configurable: true\n });\n /* tslint:disable-next-line:max-line-length */\n PdfStreamWriter.prototype.appendBezierSegment = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF) {\n this.writePoint(arg1.x, arg1.y);\n this.writePoint(arg2.x, arg2.y);\n this.writePoint(arg3.x, arg3.y);\n }\n else {\n this.writePoint(arg1, arg2);\n this.writePoint(arg3, arg4);\n this.writePoint(arg5, arg6);\n }\n this.writeOperator(Operators.appendbeziercurve);\n };\n PdfStreamWriter.prototype.setColourWithPattern = function (colours, patternName, forStroking) {\n if ((colours != null)) {\n var count = colours.length;\n var i = 0;\n for (i = 0; i < count; ++i) {\n this.stream.write(colours[i].toString());\n this.stream.write(Operators.whiteSpace);\n }\n }\n if ((patternName != null)) {\n this.stream.write(patternName.toString());\n this.stream.write(Operators.whiteSpace);\n }\n if (forStroking) {\n this.writeOperator(Operators.setColorAndPatternStroking);\n }\n else {\n this.writeOperator(Operators.setColorAndPattern);\n }\n };\n return PdfStreamWriter;\n}());\n\n/**\n * PdfPen.ts class for EJ2-PDF\n */\n/**\n * `PdfPen` class defining settings for drawing operations, that determines the color,\n * width, and style of the drawing elements.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPen = /** @__PURE__ @class */ (function () {\n function PdfPen(arg1, arg2) {\n //Fields\n /**\n * Specifies the `color of the pen`.\n * @default new PdfColor()\n * @private\n */\n this.pdfColor = new PdfColor(0, 0, 0);\n /**\n * Specifies the `dash offset of the pen`.\n * @default 0\n * @private\n */\n this.dashOffsetValue = 0;\n /**\n * Specifies the `dash pattern of the pen`.\n * @default [0]\n * @private\n */\n this.penDashPattern = [0];\n /**\n * Specifies the `dash style of the pen`.\n * @default Solid\n * @private\n */\n this.pdfDashStyle = PdfDashStyle.Solid;\n /**\n * Specifies the `line cap of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineCap = 0;\n /**\n * Specifies the `line join of the pen`.\n * @default 0\n * @private\n */\n this.pdfLineJoin = 0;\n /**\n * Specifies the `width of the pen`.\n * @default 1.0\n * @private\n */\n this.penWidth = 1.0;\n /**\n * Specifies the `mitter limit of the pen`.\n * @default 0.0\n * @private\n */\n this.internalMiterLimit = 0.0;\n /**\n * Stores the `colorspace` value.\n * @default Rgb\n * @private\n */\n this.colorSpace = PdfColorSpace.Rgb;\n if (arg1 instanceof PdfBrush) {\n this.setBrush(arg1);\n }\n else if (arg1 instanceof PdfColor) {\n this.color = arg1;\n }\n if (typeof arg2 === 'number') {\n this.width = arg2;\n }\n }\n Object.defineProperty(PdfPen.prototype, \"color\", {\n //Properties\n /**\n * Gets or sets the `color of the pen`.\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashOffset\", {\n /**\n * Gets or sets the `dash offset of the pen`.\n * @private\n */\n get: function () {\n if (typeof this.dashOffsetValue === 'undefined' || this.dashOffsetValue == null) {\n return 0;\n }\n else {\n return this.dashOffsetValue;\n }\n },\n set: function (value) {\n this.dashOffsetValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashPattern\", {\n /**\n * Gets or sets the `dash pattern of the pen`.\n * @private\n */\n get: function () {\n return this.penDashPattern;\n },\n set: function (value) {\n this.penDashPattern = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"dashStyle\", {\n /**\n * Gets or sets the `dash style of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen style\n * pen.dashStyle = PdfDashStyle.DashDot;\n * // get pen style\n * let style : PdfDashStyle = pen.dashStyle;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfDashStyle;\n },\n set: function (value) {\n if (this.pdfDashStyle !== value) {\n this.pdfDashStyle = value;\n switch (this.pdfDashStyle) {\n case PdfDashStyle.Custom:\n break;\n case PdfDashStyle.Dash:\n this.penDashPattern = [3, 1];\n break;\n case PdfDashStyle.Dot:\n this.penDashPattern = [1, 1];\n break;\n case PdfDashStyle.DashDot:\n this.penDashPattern = [3, 1, 1, 1];\n break;\n case PdfDashStyle.DashDotDot:\n this.penDashPattern = [3, 1, 1, 1, 1, 1];\n break;\n case PdfDashStyle.Solid:\n break;\n default:\n this.pdfDashStyle = PdfDashStyle.Solid;\n this.penDashPattern = [0];\n break;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineCap\", {\n /**\n * Gets or sets the `line cap of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineCap;\n },\n set: function (value) {\n this.pdfLineCap = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"lineJoin\", {\n /**\n * Gets or sets the `line join style of the pen`.\n * @private\n */\n get: function () {\n return this.pdfLineJoin;\n },\n set: function (value) {\n this.pdfLineJoin = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"miterLimit\", {\n /**\n * Gets or sets the `miter limit`.\n * @private\n */\n get: function () {\n return this.internalMiterLimit;\n },\n set: function (value) {\n this.internalMiterLimit = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPen.prototype, \"width\", {\n /**\n * Gets or sets the `width of the pen`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set pen width\n * pen.width = 2;\n * //\n * // draw rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.penWidth;\n },\n set: function (value) {\n this.penWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Helper\n /**\n * `Clones` this instance of PdfPen class.\n * @private\n */\n PdfPen.prototype.clone = function () {\n var pen = this;\n return pen;\n };\n /**\n * `Sets the brush`.\n * @private\n */\n PdfPen.prototype.setBrush = function (brush) {\n var sBrush = brush;\n if ((sBrush != null && sBrush instanceof PdfSolidBrush)) {\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n }\n this.color = sBrush.color;\n this.pdfBrush = sBrush;\n };\n /**\n * `Monitors the changes`.\n * @private\n */\n PdfPen.prototype.monitorChanges = function (currentPen, streamWriter, getResources, saveState, currentColorSpace, matrix) {\n var diff = false;\n saveState = true;\n if (currentPen == null) {\n diff = true;\n }\n diff = this.dashControl(currentPen, saveState, streamWriter);\n streamWriter.setLineWidth(this.width);\n streamWriter.setLineJoin(this.lineJoin);\n streamWriter.setLineCap(this.lineCap);\n var miterLimit = this.miterLimit;\n if (miterLimit > 0) {\n streamWriter.setMiterLimit(miterLimit);\n diff = true;\n }\n var brush = this.pdfBrush;\n streamWriter.setColorAndSpace(this.color, currentColorSpace, true);\n diff = true;\n return diff;\n };\n /**\n * `Controls the dash style` and behaviour of each line.\n * @private\n */\n PdfPen.prototype.dashControl = function (pen, saveState, streamWriter) {\n saveState = true;\n var lineWidth = this.width;\n var pattern = this.getPattern();\n streamWriter.setLineDashPattern(pattern, this.dashOffset * lineWidth);\n return saveState;\n };\n /**\n * `Gets the pattern` of PdfPen.\n * @private\n */\n PdfPen.prototype.getPattern = function () {\n var pattern = this.dashPattern;\n for (var i = 0; i < pattern.length; ++i) {\n pattern[i] *= this.width;\n }\n return pattern;\n };\n return PdfPen;\n}());\n\n/**\n * PdfTransformationMatrix.ts class for EJ2-PDF\n */\n/**\n * Class for representing Root `transformation matrix`.\n */\nvar PdfTransformationMatrix = /** @__PURE__ @class */ (function () {\n function PdfTransformationMatrix(value) {\n /**\n * Value for `angle converting`.\n * @default 180.0 / Math.PI\n * @private\n */\n this.radDegFactor = 180.0 / Math.PI;\n if (typeof value === 'undefined') {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, 1.00, 0.00, 0.00);\n }\n else {\n this.transformationMatrix = new Matrix(1.00, 0.00, 0.00, -1.00, 0.00, 0.00);\n }\n }\n Object.defineProperty(PdfTransformationMatrix.prototype, \"matrix\", {\n // Properties\n /**\n * Gets or sets the `internal matrix object`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n set: function (value) {\n this.transformationMatrix = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.translate = function (offsetX, offsetY) {\n this.transformationMatrix.translate(offsetX, offsetY);\n };\n /**\n * `Scales` coordinates by specified coordinates.\n * @private\n */\n PdfTransformationMatrix.prototype.scale = function (scaleX, scaleY) {\n this.transformationMatrix.elements[0] = scaleX;\n this.transformationMatrix.elements[3] = scaleY;\n };\n /**\n * `Rotates` coordinate system in counterclockwise direction.\n * @private\n */\n PdfTransformationMatrix.prototype.rotate = function (angle) {\n //Convert from degree to radian \n angle = (angle * Math.PI) / 180;\n //Rotation \n this.transformationMatrix.elements[0] = Math.cos(angle);\n this.transformationMatrix.elements[1] = Math.sin(angle);\n this.transformationMatrix.elements[2] = -Math.sin(angle);\n this.transformationMatrix.elements[3] = Math.cos(angle);\n };\n // Overrides\n /**\n * Gets `PDF representation`.\n * @private\n */\n PdfTransformationMatrix.prototype.toString = function () {\n var builder = '';\n var whitespace = ' ';\n for (var i = 0, len = this.transformationMatrix.elements.length; i < len; i++) {\n var temp = this.matrix.elements[i];\n builder += PdfNumber.floatToString(this.transformationMatrix.elements[i]);\n builder += whitespace;\n }\n return builder;\n };\n // Implementation\n /**\n * `Multiplies` matrices (changes coordinate system.)\n * @private\n */\n PdfTransformationMatrix.prototype.multiply = function (matrix) {\n this.transformationMatrix.multiply(matrix.matrix);\n };\n /**\n * Converts `degrees to radians`.\n * @private\n */\n PdfTransformationMatrix.degreesToRadians = function (degreesX) {\n return this.degRadFactor * degreesX;\n };\n /**\n * Converts `radians to degrees`.\n * @private\n */\n PdfTransformationMatrix.prototype.radiansToDegrees = function (radians) {\n return this.radDegFactor * radians;\n };\n /**\n * `Clones` this instance of PdfTransformationMatrix.\n * @private\n */\n PdfTransformationMatrix.prototype.clone = function () {\n return this;\n };\n // Constants\n /**\n * Value for `angle converting`.\n * @default Math.PI / 180.0\n * @private\n */\n PdfTransformationMatrix.degRadFactor = Math.PI / 180.0;\n return PdfTransformationMatrix;\n}());\nvar Matrix = /** @__PURE__ @class */ (function () {\n function Matrix(arg1, arg2, arg3, arg4, arg5, arg6) {\n if (typeof arg1 === 'undefined') {\n this.metrixElements = [];\n }\n else if (typeof arg1 === 'number') {\n this.metrixElements = [];\n this.metrixElements.push(arg1);\n this.metrixElements.push(arg2);\n this.metrixElements.push(arg3);\n this.metrixElements.push(arg4);\n this.metrixElements.push(arg5);\n this.metrixElements.push(arg6);\n }\n else {\n this.metrixElements = arg1;\n }\n }\n Object.defineProperty(Matrix.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `elements`.\n * @private\n */\n get: function () {\n return this.metrixElements;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetX\", {\n /**\n * Gets the off set `X`.\n * @private\n */\n get: function () {\n return this.metrixElements[4];\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Matrix.prototype, \"offsetY\", {\n /**\n * Gets the off set `Y`.\n * @private\n */\n get: function () {\n return this.metrixElements[5];\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Translates` coordinates by specified coordinates.\n * @private\n */\n Matrix.prototype.translate = function (offsetX, offsetY) {\n this.metrixElements[4] = offsetX;\n this.metrixElements[5] = offsetY;\n };\n /**\n * `Translates` the specified offset X.\n * @private\n */\n Matrix.prototype.transform = function (point) {\n var x = point.x;\n var y = point.y;\n var x2 = x * this.elements[0] + y * this.elements[2] + this.offsetX;\n var y2 = x * this.elements[1] + y * this.elements[3] + this.offsetY;\n return new PointF(x2, y2);\n };\n /**\n * `Multiplies matrices` (changes coordinate system.)\n * @private\n */\n Matrix.prototype.multiply = function (matrix) {\n var tempMatrix = [];\n tempMatrix.push(this.elements[0] * matrix.elements[0] + this.elements[1] * matrix.elements[2]);\n tempMatrix[1] = (this.elements[0] * matrix.elements[1] + this.elements[1] * matrix.elements[3]);\n tempMatrix[2] = (this.elements[2] * matrix.elements[0] + this.elements[3] * matrix.elements[2]);\n tempMatrix[3] = (this.elements[2] * matrix.elements[1] + this.elements[3] * matrix.elements[3]);\n tempMatrix[4] = (this.offsetX * matrix.elements[0] + this.offsetY * matrix.elements[2] + matrix.offsetX);\n tempMatrix[5] = (this.offsetX * matrix.elements[1] + this.offsetY * matrix.elements[3] + matrix.offsetY);\n for (var i = 0; i < tempMatrix.length; i++) {\n this.elements[i] = tempMatrix[i];\n }\n };\n // IDisposable Members\n /**\n * `Dispose` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.dispose = function () {\n this.metrixElements = null;\n };\n // ICloneable Members\n /**\n * `Clones` this instance of PdfTransformationMatrix class.\n * @private\n */\n Matrix.prototype.clone = function () {\n var m = new Matrix(this.metrixElements);\n return m;\n };\n return Matrix;\n}());\n\n/**\n * `constants.ts` class for EJ2-PDF\n * @private\n */\nvar ProcedureSets = /** @__PURE__ @class */ (function () {\n function ProcedureSets() {\n /**\n * Specifies the `PDF` procedure set.\n * @private\n */\n this.pdf = 'PDF';\n /**\n * Specifies the `Text` procedure set.\n * @private\n */\n this.text = 'Text';\n /**\n * Specifies the `ImageB` procedure set.\n * @private\n */\n this.imageB = 'ImageB';\n /**\n * Specifies the `ImageC` procedure set.\n * @private\n */\n this.imageC = 'ImageC';\n /**\n * Specifies the `ImageI` procedure set.\n * @private\n */\n this.imageI = 'ImageI';\n }\n return ProcedureSets;\n}());\n\n/**\n * Dictionary class\n * @private\n * @hidden\n */\nvar TemporaryDictionary = /** @__PURE__ @class */ (function () {\n function TemporaryDictionary() {\n /**\n * @hidden\n * @private\n */\n this.mKeys = [];\n /**\n * @hidden\n * @private\n */\n this.mValues = [];\n }\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.size = function () {\n return this.mKeys.length;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.add = function (key, value) {\n if (key === undefined || key === null || value === undefined || value === null) {\n throw new ReferenceError('Provided key or value is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n return 1;\n }\n else {\n throw new RangeError('An item with the same key has already been added.');\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.keys = function () {\n return this.mKeys;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.values = function () {\n return this.mValues;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.getValue = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n return this.mValues[index];\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.setValue = function (key, value) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n this.mKeys.push(key);\n this.mValues.push(value);\n }\n else {\n this.mValues[index] = value;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.remove = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n throw new RangeError('No item with the specified key has been added.');\n }\n else {\n this.mKeys.splice(index, 1);\n this.mValues.splice(index, 1);\n return true;\n }\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.containsKey = function (key) {\n if (key === undefined || key === null) {\n throw new ReferenceError('Provided key is not valid.');\n }\n var index = this.mKeys.indexOf(key);\n if (index < 0) {\n return false;\n }\n return true;\n };\n /**\n * @hidden\n * @private\n */\n TemporaryDictionary.prototype.clear = function () {\n this.mKeys = [];\n this.mValues = [];\n };\n return TemporaryDictionary;\n}());\n\n/**\n * Represents a simple `transparency`.\n * @private\n */\nvar PdfTransparency = /** @__PURE__ @class */ (function () {\n // Properties\n // /**\n // * Gets the `stroke` operation alpha value.\n // * @private\n // */\n // public get stroke() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.CA);\n // return result;\n // }\n // /**\n // * Gets the `fill` operation alpha value.\n // * @private\n // */\n // public get fill() : number {\n // let result : number = this.getNumber(this.dictionaryProperties.ca);\n // return result;\n // }\n // /**\n // * Gets the `blend mode`.\n // * @private\n // */\n // public get mode() : PdfBlendMode {\n // let result : string = this.getName(this.dictionaryProperties.ca);\n // return PdfBlendMode.Normal;\n // }\n // Constructors\n /**\n * Initializes a new instance of the `Transparency` class.\n * @private\n */\n function PdfTransparency(stroke, fill, mode) {\n // Fields\n /**\n * Internal variable to store `dictionary`.\n * @default new PdfDictionary()\n * @private\n */\n this.dictionary = new PdfDictionary();\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @default new DictionaryProperties()\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.dictionary.items.setValue(this.dictionaryProperties.CA, new PdfNumber(stroke));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(fill));\n this.dictionary.items.setValue(this.dictionaryProperties.BM, new PdfName(mode.toString()));\n }\n Object.defineProperty(PdfTransparency.prototype, \"element\", {\n // // Implementation\n // /**\n // * Gets the `number value`.\n // * @private\n // */\n // private getNumber(keyName : string) : number {\n // let result : number = 0.0;\n // let numb : PdfNumber = this.dictionary.items.getValue(keyName) as PdfNumber;\n // result = numb.intValue;\n // return result;\n // }\n // /**\n // * Gets the `name value`.\n // * @private\n // */\n // private getName(keyName : string) : string {\n // let result : string = null;\n // let name : PdfName = this.dictionary.items.getValue(keyName) as PdfName;\n // result = name.value;\n // return result;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.dictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTransparency;\n}());\n\n/**\n * Represent a `collection of automatic fields information`.\n * @private\n */\nvar PdfAutomaticFieldInfoCollection = /** @__PURE__ @class */ (function () {\n /**\n * Initializes a new instance of the 'PdfPageNumberFieldInfoCollection' class.\n * @private\n */\n function PdfAutomaticFieldInfoCollection() {\n /**\n * Internal variable to store instance of `pageNumberFields` class.\n * @private\n */\n this.automaticFieldsInformation = [];\n //\n }\n Object.defineProperty(PdfAutomaticFieldInfoCollection.prototype, \"automaticFields\", {\n /**\n * Gets the `page number fields collection`.\n * @private\n */\n get: function () {\n return this.automaticFieldsInformation;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /// Adds the specified field info.\n /**\n * Add page number field into collection.\n * @private\n */\n PdfAutomaticFieldInfoCollection.prototype.add = function (fieldInfo) {\n return this.automaticFields.push(fieldInfo);\n };\n return PdfAutomaticFieldInfoCollection;\n}());\n\n/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfGraphicsElement = /** @__PURE__ @class */ (function () {\n // Constructors\n function PdfGraphicsElement() {\n //\n }\n /**\n * `Draws` the page number field.\n * @public\n */\n PdfGraphicsElement.prototype.drawHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0 || y !== 0);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n return PdfGraphicsElement;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfAutomaticField.ts class for EJ2-PDF\n */\n/**\n * Represents a fields which is calculated before the document saves.\n */\nvar PdfAutomaticField = /** @__PURE__ @class */ (function (_super) {\n __extends$10(PdfAutomaticField, _super);\n // Constructors\n function PdfAutomaticField() {\n var _this = _super.call(this) || this;\n // Fields\n _this.internalBounds = new RectangleF(0, 0, 0, 0);\n _this.internalTemplateSize = new SizeF(0, 0);\n return _this;\n }\n Object.defineProperty(PdfAutomaticField.prototype, \"bounds\", {\n // Properties\n get: function () {\n return this.internalBounds;\n },\n set: function (value) {\n this.internalBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"size\", {\n get: function () {\n return new SizeF(this.bounds.width, this.bounds.height);\n },\n set: function (value) {\n this.bounds.width = value.width;\n this.bounds.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"location\", {\n get: function () {\n return new PointF(this.bounds.x, this.bounds.y);\n },\n set: function (value) {\n this.bounds.x = value.x;\n this.bounds.y = value.y;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"font\", {\n get: function () {\n return this.internalFont;\n },\n set: function (value) {\n this.internalFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"brush\", {\n get: function () {\n return this.internalBrush;\n },\n set: function (value) {\n this.internalBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"pen\", {\n get: function () {\n return this.internalPen;\n },\n set: function (value) {\n this.internalPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticField.prototype, \"stringFormat\", {\n get: function () {\n return this.internalStringFormat;\n },\n set: function (value) {\n this.internalStringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfAutomaticField.prototype.performDrawHelper = function (graphics, location, scalingX, scalingY) {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n var text = this.getValue(graphics);\n this.internalTemplateSize = this.getFont().measureString(text, this.size, this.stringFormat);\n }\n };\n PdfAutomaticField.prototype.draw = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n var location_1 = new PointF(0, 0);\n this.draw(arg1, location_1);\n }\n else if (arg2 instanceof PointF) {\n this.draw(arg1, arg2.x, arg2.y);\n }\n else {\n this.drawHelper(arg1, arg2, arg3);\n var info = new PdfAutomaticFieldInfo(this, new PointF(arg2, arg3));\n arg1.automaticFields.add(info);\n }\n };\n PdfAutomaticField.prototype.getSize = function () {\n if (this.bounds.height === 0 || this.bounds.width === 0) {\n return this.internalTemplateSize;\n }\n else {\n return this.size;\n }\n };\n PdfAutomaticField.prototype.drawInternal = function (graphics) {\n //\n };\n /* tslint:disable */\n PdfAutomaticField.prototype.getBrush = function () {\n return (typeof this.internalBrush === 'undefined' || this.internalBrush == null) ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.internalBrush;\n };\n PdfAutomaticField.prototype.getFont = function () {\n return (typeof this.internalFont === 'undefined' || this.internalFont == null) ? PdfDocument.defaultFont : this.internalFont;\n };\n /* tslint:enable */\n PdfAutomaticField.prototype.getPageFromGraphics = function (graphics) {\n if (typeof graphics.page !== 'undefined' && graphics.page !== null) {\n var page = graphics.page;\n return page;\n }\n else {\n var page = graphics.currentPage;\n return page;\n }\n };\n return PdfAutomaticField;\n}(PdfGraphicsElement));\n\n/**\n * PdfAutomaticFieldInfo.ts class for EJ2-PDF\n * @private\n */\n/**\n * Represents information about the automatic field.\n * @private\n */\nvar PdfAutomaticFieldInfo = /** @__PURE__ @class */ (function () {\n function PdfAutomaticFieldInfo(field, location, scaleX, scaleY) {\n // Fields\n /**\n * Internal variable to store location of the field.\n * @private\n */\n this.pageNumberFieldLocation = new PointF();\n /**\n * Internal variable to store field.\n * @private\n */\n this.pageNumberField = null;\n /**\n * Internal variable to store x scaling factor.\n * @private\n */\n this.scaleX = 1;\n /**\n * Internal variable to store y scaling factor.\n * @private\n */\n this.scaleY = 1;\n if (typeof location === 'undefined' && field instanceof PdfAutomaticFieldInfo) {\n this.pageNumberField = field.field;\n this.pageNumberFieldLocation = field.location;\n this.scaleX = field.scalingX;\n this.scaleY = field.scalingY;\n }\n else if (typeof scaleX === 'undefined' && location instanceof PointF && field instanceof PdfAutomaticField) {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n }\n else {\n this.pageNumberField = field;\n this.pageNumberFieldLocation = location;\n this.scaleX = scaleX;\n this.scaleY = scaleY;\n }\n }\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"location\", {\n /* tslint:enable */\n // Properties\n /**\n * Gets or sets the location.\n * @private\n */\n get: function () {\n return this.pageNumberFieldLocation;\n },\n set: function (value) {\n this.pageNumberFieldLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"field\", {\n /**\n * Gets or sets the field.\n * @private\n */\n get: function () {\n return this.pageNumberField;\n },\n set: function (value) {\n this.pageNumberField = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingX\", {\n /**\n * Gets or sets the scaling X factor.\n * @private\n */\n get: function () {\n return this.scaleX;\n },\n set: function (value) {\n this.scaleX = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAutomaticFieldInfo.prototype, \"scalingY\", {\n /**\n * Gets or sets the scaling Y factor.\n * @private\n */\n get: function () {\n return this.scaleY;\n },\n set: function (value) {\n this.scaleY = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAutomaticFieldInfo;\n}());\n\n/**\n * ByteArray class\n * Used to keep information about image stream as byte array.\n * @private\n */\nvar ByteArray = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the new instance for `byte-array` class\n * @hidden\n * @private\n */\n function ByteArray(length) {\n /**\n * Current stream `position`.\n * @default 0\n * @private\n */\n this.mPosition = 0;\n this.buffer = new Uint8Array(length);\n this.dataView = new DataView(this.buffer.buffer);\n }\n Object.defineProperty(ByteArray.prototype, \"position\", {\n /**\n * Gets and Sets a current `position` of byte array.\n * @hidden\n * @private\n */\n get: function () {\n return this.mPosition;\n },\n set: function (value) {\n this.mPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Read` from current stream position.\n * @default 0\n * @hidden\n * @private\n */\n ByteArray.prototype.read = function (buffer, offset, count) {\n for (var index = offset; index < count; index++) {\n var position = this.position;\n buffer.buffer[index] = this.readByte(position);\n this.position++;\n }\n };\n /**\n * @hidden\n */\n ByteArray.prototype.getBuffer = function (index) {\n return this.buffer[index];\n };\n /**\n * @hidden\n */\n ByteArray.prototype.writeFromBase64String = function (base64) {\n var arr = this.encodedString(base64);\n this.buffer = arr;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.encodedString = function (input) {\n var keyStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n var chr1;\n var chr2;\n var chr3;\n var enc1;\n var enc2;\n var enc3;\n var enc4;\n var i = 0;\n var resultIndex = 0;\n input = input.replace(/[^A-Za-z0-9\\+\\/\\=]/g, '');\n var totalLength = input.length * 3 / 4;\n if (input.charAt(input.length - 1) === keyStr.charAt(64)) {\n totalLength--;\n }\n var output = new Uint8Array(totalLength | 0);\n while (i < input.length) {\n enc1 = keyStr.indexOf(input.charAt(i++));\n enc2 = keyStr.indexOf(input.charAt(i++));\n enc3 = keyStr.indexOf(input.charAt(i++));\n enc4 = keyStr.indexOf(input.charAt(i++));\n chr1 = (enc1 << 2) | (enc2 >> 4);\n chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);\n chr3 = ((enc3 & 3) << 6) | enc4;\n output[resultIndex++] = chr1;\n output[resultIndex++] = chr2;\n output[resultIndex++] = chr3;\n }\n return output;\n };\n /**\n * @hidden\n */\n ByteArray.prototype.readByte = function (offset) {\n return (this.buffer[offset]);\n };\n Object.defineProperty(ByteArray.prototype, \"internalBuffer\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ByteArray.prototype, \"count\", {\n /**\n * @hidden\n */\n get: function () {\n return this.buffer.byteLength;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * 'readNextTwoBytes' stream\n * @hidden\n * @private\n */\n ByteArray.prototype.readNextTwoBytes = function (stream) {\n var data = stream.readByte(this.position);\n this.position++;\n data <<= 8;\n data |= stream.readByte(this.position);\n this.position++;\n return data;\n };\n return ByteArray;\n}());\n\n/**\n * `PdfBoolean` class is used to perform boolean related primitive operations.\n * @private\n */\nvar PdfBoolean = /** @__PURE__ @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfBoolean` class.\n * @private\n */\n function PdfBoolean(value) {\n /**\n * Internal variable to store the `position`.\n * @default -1\n * @private\n */\n this.currentPosition = -1;\n this.value = value;\n }\n Object.defineProperty(PdfBoolean.prototype, \"status\", {\n //Properties\n /**\n * Gets or sets the `Status` of the specified object.\n * @private\n */\n get: function () {\n return this.objectStatus;\n },\n set: function (value) {\n this.objectStatus = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"isSaving\", {\n /**\n * Gets or sets a value indicating whether this document `is saving` or not.\n * @private\n */\n get: function () {\n return this.saving;\n },\n set: function (value) {\n this.saving = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"objectCollectionIndex\", {\n /**\n * Gets or sets the `index` value of the specified object.\n * @private\n */\n get: function () {\n return this.index;\n },\n set: function (value) {\n this.index = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"position\", {\n /**\n * Gets or sets the `position` of the object.\n * @private\n */\n get: function () {\n return this.currentPosition;\n },\n set: function (value) {\n this.currentPosition = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBoolean.prototype, \"clonedObject\", {\n /**\n * Returns `cloned object`.\n * @private\n */\n get: function () {\n var rValue = null;\n return rValue;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Saves` the object using the specified writer.\n * @private\n */\n PdfBoolean.prototype.save = function (writer) {\n writer.write(this.boolToStr(this.value));\n };\n /**\n * Creates a `copy of PdfBoolean`.\n * @private\n */\n PdfBoolean.prototype.clone = function (crossTable) {\n var newNumber = new PdfBoolean(this.value);\n return newNumber;\n };\n // Implementation\n /**\n * Converts `boolean to string` - 0/1 'true'/'false'.\n * @private\n */\n PdfBoolean.prototype.boolToStr = function (value) {\n return value ? 'true' : 'false';\n };\n return PdfBoolean;\n}());\n\n/**\n * ImageDecoder class\n */\n/**\n * Specifies the image `format`.\n * @private\n */\nvar ImageFormat;\n(function (ImageFormat) {\n /**\n * Specifies the type of `Unknown`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Unknown\"] = 0] = \"Unknown\";\n /**\n * Specifies the type of `Bmp`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Bmp\"] = 1] = \"Bmp\";\n /**\n * Specifies the type of `Emf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Emf\"] = 2] = \"Emf\";\n /**\n * Specifies the type of `Gif`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Gif\"] = 3] = \"Gif\";\n /**\n * Specifies the type of `Jpeg`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Jpeg\"] = 4] = \"Jpeg\";\n /**\n * Specifies the type of `Png`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Png\"] = 5] = \"Png\";\n /**\n * Specifies the type of `Wmf`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Wmf\"] = 6] = \"Wmf\";\n /**\n * Specifies the type of `Icon`.\n * @hidden\n * @private\n */\n ImageFormat[ImageFormat[\"Icon\"] = 7] = \"Icon\";\n})(ImageFormat || (ImageFormat = {}));\n/**\n * `Decode the image stream`.\n * @private\n */\nvar ImageDecoder = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the new instance for `image-decoder` class.\n * @private\n */\n function ImageDecoder(stream) {\n /**\n * Start of file markers.\n * @hidden\n * @private\n */\n this.sof1Marker = 0x00C1;\n this.sof2Marker = 0x00C2;\n this.sof3Marker = 0x00C3;\n this.sof5Marker = 0x00C5;\n this.sof6Marker = 0x00C6;\n this.sof7Marker = 0x00C7;\n this.sof9Marker = 0x00C9;\n this.sof10Marker = 0x00CA;\n this.sof11Marker = 0x00CB;\n this.sof13Marker = 0x00CD;\n this.sof14Marker = 0x00CE;\n this.sof15Marker = 0x00CF;\n /**\n * Specifies `format` of image.\n * @hidden\n * @private\n */\n this.mFormat = ImageFormat.Unknown;\n /**\n * `Bits per component`.\n * @default 8\n * @hidden\n * @private\n */\n this.mbitsPerComponent = 8;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.mStream = stream;\n this.initialize();\n }\n Object.defineProperty(ImageDecoder.prototype, \"height\", {\n /**\n * Gets the `height` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mHeight;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"width\", {\n /**\n * Gets the `width` of image.\n * @hidden\n * @private\n */\n get: function () {\n return this.mWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"bitsPerComponent\", {\n /**\n * Gets `bits per component`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mbitsPerComponent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"size\", {\n /**\n * Gets the `size` of an image data.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageData\", {\n /**\n * Gets the value of an `image data`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ImageDecoder.prototype, \"imageDataAsNumberArray\", {\n /**\n * Gets the value of an `image data as number array`.\n * @hidden\n * @private\n */\n get: function () {\n return this.mImageData.internalBuffer.buffer;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize` image data and image stream.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.initialize = function () {\n if (this.mFormat === ImageFormat.Unknown && this.checkIfJpeg()) {\n this.mFormat = ImageFormat.Jpeg;\n this.parseJpegImage();\n }\n this.reset();\n this.mImageData = new ByteArray(this.mStream.count);\n this.mStream.read(this.mImageData, 0, this.mImageData.count);\n };\n /**\n * `Reset` stream position into 0.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.reset = function () {\n this.mStream.position = 0;\n };\n /**\n * `Parse` Jpeg image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.parseJpegImage = function () {\n this.reset();\n var imgData = new ByteArray(this.mStream.count);\n this.mStream.read(imgData, 0, imgData.count);\n var i = 4;\n var isLengthExceed = false;\n /* tslint:disable */\n var length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n while (i < imgData.count) {\n i += length;\n if (i < imgData.count) {\n if (imgData.getBuffer(i + 1) === 192) {\n this.mHeight = imgData.getBuffer(i + 5) * 256 + imgData.getBuffer(i + 6);\n this.mWidth = imgData.getBuffer(i + 7) * 256 + imgData.getBuffer(i + 8);\n return;\n }\n else {\n i += 2;\n length = imgData.getBuffer(i) * 256 + imgData.getBuffer(i + 1);\n }\n }\n else {\n isLengthExceed = true;\n break;\n }\n }\n if (isLengthExceed) {\n this.mStream.position = 0;\n this.skip(this.mStream, 2);\n this.readExceededJPGImage(this.mStream);\n }\n /* tslint:enable */\n };\n Object.defineProperty(ImageDecoder.prototype, \"format\", {\n /**\n * Gets the image `format`.\n * @private\n * @hidden\n */\n get: function () {\n return this.mFormat;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Checks if JPG`.\n * @private\n * @hidden\n */\n ImageDecoder.prototype.checkIfJpeg = function () {\n this.reset();\n for (var i = 0; i < ImageDecoder.mJpegHeader.length; i++) {\n if (ImageDecoder.mJpegHeader[i] !== this.mStream.readByte(i)) {\n return false;\n }\n this.mStream.position++;\n }\n return true;\n };\n /**\n * Return image `dictionary`.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getImageDictionary = function () {\n if (this.mFormat === ImageFormat.Jpeg) {\n var tempArrayBuffer = this.imageData.internalBuffer.length;\n this.imageStream = new PdfStream();\n this.imageStream.isImage = true;\n var tempString = '';\n var decodedString = '';\n for (var i = 0; i < this.imageDataAsNumberArray.byteLength; i++) {\n tempString += String.fromCharCode(null, this.mStream.readByte(i));\n }\n for (var i = 0; i < tempString.length; i++) {\n if (i % 2 !== 0) {\n decodedString += tempString[i];\n }\n }\n this.imageStream.data = [decodedString];\n this.imageStream.compress = false;\n this.imageStream.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.xObject));\n this.imageStream.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.image));\n this.imageStream.items.setValue(this.dictionaryProperties.width, new PdfNumber(this.width));\n this.imageStream.items.setValue(this.dictionaryProperties.height, new PdfNumber(this.height));\n this.imageStream.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n this.imageStream.items.setValue(this.dictionaryProperties.filter, new PdfName(this.dictionaryProperties.dctdecode));\n this.imageStream.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(this.getColorSpace()));\n this.imageStream.items.setValue(this.dictionaryProperties.decodeParms, this.getDecodeParams());\n return this.imageStream;\n }\n else {\n return this.imageStream;\n }\n };\n /**\n * Return `colorSpace` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getColorSpace = function () {\n return this.dictionaryProperties.deviceRgb;\n };\n /**\n * Return `decode parameters` of an image.\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getDecodeParams = function () {\n var decodeParams = new PdfDictionary();\n decodeParams.items.setValue(this.dictionaryProperties.columns, new PdfNumber(this.width));\n decodeParams.items.setValue(this.dictionaryProperties.blackIs1, new PdfBoolean(true));\n decodeParams.items.setValue(this.dictionaryProperties.k, new PdfNumber(-1));\n decodeParams.items.setValue(this.dictionaryProperties.predictor, new PdfNumber(15));\n decodeParams.items.setValue(this.dictionaryProperties.bitsPerComponent, new PdfNumber(this.bitsPerComponent));\n return decodeParams;\n };\n /**\n * 'readExceededJPGImage' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.readExceededJPGImage = function (stream) {\n this.mStream = stream;\n var isContinueReading = true;\n while (isContinueReading) {\n var marker = this.getMarker(stream);\n switch (marker) {\n case this.sof1Marker:\n case this.sof2Marker:\n case this.sof3Marker:\n case this.sof5Marker:\n case this.sof6Marker:\n case this.sof7Marker:\n case this.sof9Marker:\n case this.sof10Marker:\n case this.sof11Marker:\n case this.sof13Marker:\n case this.sof14Marker:\n case this.sof15Marker:\n stream.position += 3;\n this.mHeight = this.mStream.readNextTwoBytes(stream);\n this.mWidth = this.mStream.readNextTwoBytes(stream);\n isContinueReading = false;\n break;\n default:\n this.skipStream(stream);\n break;\n }\n }\n };\n /**\n * 'skip' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skip = function (stream, noOfBytes) {\n this.mStream = stream;\n var temp = new ByteArray(noOfBytes);\n this.mStream.read(temp, 0, temp.count);\n };\n /**\n * 'getMarker' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.getMarker = function (stream) {\n var marker = 32;\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n while (marker !== 255) {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n }\n do {\n marker = stream.readByte(this.mStream.position);\n stream.position++;\n } while (marker === 255);\n return marker;\n };\n /**\n * 'skipStream' stream\n * @hidden\n * @private\n */\n ImageDecoder.prototype.skipStream = function (stream) {\n var markerLength = this.mStream.readNextTwoBytes(stream) - 2;\n if (markerLength > 0) {\n stream.position += markerLength;\n }\n };\n /**\n * Number array for `png header`.\n * @hidden\n * @private\n */\n ImageDecoder.mPngHeader = [137, 80, 78, 71, 13, 10, 26, 10];\n /**\n * Number Array for `jpeg header`.\n * @hidden\n * @private\n */\n ImageDecoder.mJpegHeader = [255, 216];\n /**\n * Number array for `gif header`.\n * @hidden\n * @private\n */\n ImageDecoder.GIF_HEADER = 'G,I,F,8';\n /**\n * Number array for `bmp header.`\n * @hidden\n * @private\n */\n ImageDecoder.BMP_HEADER = 'B,M';\n return ImageDecoder;\n}());\n\n/**\n * Used to perform `convertion between pixels and points`.\n * @private\n */\nvar PdfUnitConverter = /** @__PURE__ @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `UnitConvertor` class with DPI value.\n * @private\n */\n function PdfUnitConverter(dpi) {\n this.updateProportionsHelper(dpi);\n }\n /**\n * `Converts` the value, from one graphics unit to another graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertUnits = function (value, from, to) {\n return this.convertFromPixels(this.convertToPixels(value, from), to);\n };\n /**\n * Converts the value `to pixel` from specified graphics unit.\n * @private\n */\n PdfUnitConverter.prototype.convertToPixels = function (value, from) {\n var index = from;\n var result = (value * this.proportions[index]);\n return result;\n };\n /**\n * Converts value, to specified graphics unit `from Pixel`.\n * @private\n */\n PdfUnitConverter.prototype.convertFromPixels = function (value, to) {\n var index = to;\n var result = (value / this.proportions[index]);\n return result;\n };\n /**\n * `Update proportions` matrix according to Graphics settings.\n * @private\n */\n PdfUnitConverter.prototype.updateProportionsHelper = function (pixelPerInch) {\n this.proportions = [\n pixelPerInch / 2.54,\n pixelPerInch / 6.0,\n 1,\n pixelPerInch / 72.0,\n pixelPerInch,\n pixelPerInch / 300.0,\n pixelPerInch / 25.4 // Millimeter\n ];\n };\n //Fields\n /**\n * Indicates default `horizontal resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.horizontalResolution = 96;\n /**\n * Indicates default `vertical resolution`.\n * @default 96\n * @private\n */\n PdfUnitConverter.verticalResolution = 96;\n return PdfUnitConverter;\n}());\n\n/**\n * `PdfImage` class represents the base class for images and provides functionality for the 'PdfBitmap' class.\n * @private\n */\nvar PdfImage = /** @__PURE__ @class */ (function () {\n function PdfImage() {\n }\n Object.defineProperty(PdfImage.prototype, \"width\", {\n /**\n * Gets and Sets the `width` of an image.\n * @private\n */\n get: function () {\n return this.imageWidth;\n },\n set: function (value) {\n this.imageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"height\", {\n /**\n * Gets and Sets the `height` of an image.\n * @private\n */\n get: function () {\n return this.imageHeight;\n },\n set: function (value) {\n this.imageHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"size\", {\n /**\n * Gets or sets the size of the image.\n * @private\n */\n set: function (value) {\n this.width = value.width;\n this.height = value.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"physicalDimension\", {\n /**\n * Gets the `physical dimension` of an image.\n * @private\n */\n get: function () {\n this.imagePhysicalDimension = this.getPointSize(this.width, this.height, this.horizontalResolution, this.verticalResolution);\n return new SizeF(this.width, this.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfImage.prototype, \"element\", {\n // /**\n // * Gets the `image stream as string`.\n // * @private\n // */\n // public static fromString(string : string) : PdfImage {\n // let image : PdfImage = new PdfBitmap(string);\n // return image;\n // }\n /**\n * Gets the `element` image stream.\n * @private\n */\n get: function () {\n return this.imageStream;\n },\n enumerable: true,\n configurable: true\n });\n PdfImage.prototype.getPointSize = function (width, height, horizontalResolution, verticalResolution) {\n if (typeof horizontalResolution === 'undefined') {\n var dpiX = PdfUnitConverter.horizontalResolution;\n var dpiY = PdfUnitConverter.verticalResolution;\n var size = this.getPointSize(width, height, dpiX, dpiY);\n return size;\n }\n else {\n var ucX = new PdfUnitConverter(horizontalResolution);\n var ucY = new PdfUnitConverter(verticalResolution);\n var ptWidth = ucX.convertUnits(width, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var ptHeight = ucY.convertUnits(height, PdfGraphicsUnit.Pixel, PdfGraphicsUnit.Point);\n var size = new SizeF(ptWidth, ptHeight);\n return size;\n }\n };\n return PdfImage;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfBitmap.ts class for EJ2-PDF\n */\n/**\n * The 'PdfBitmap' contains methods and properties to handle the Bitmap images.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfBitmap = /** @__PURE__ @class */ (function (_super) {\n __extends$11(PdfBitmap, _super);\n /**\n * Create an instance for `PdfBitmap` class.\n * @param encodedString Base64 string of an image.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // base64 string of an image\n * let imageString : string = '/9j/3+2w7em7HzY/KiijFw … 1OEYRUYrQ45yc5OUtz/9k=';\n * //\n * // load the image from the base64 string of original image.\n * let image : PdfBitmap = new PdfBitmap(imageString);\n * //\n * // draw the image\n * page1.graphics.drawImage(image, new RectangleF({x : 10, y : 10}, {width : 200, height : 200}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n function PdfBitmap(encodedString) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * Specifies the `status` of an image.\n * @default true.\n * @hidden\n * @private\n */\n _this.imageStatus = true;\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @hidden\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.loadImage(encodedString);\n return _this;\n }\n /**\n * `Load image`.\n * @hidden\n * @private\n */\n PdfBitmap.prototype.loadImage = function (encodedString) {\n var task = this.initializeAsync(encodedString);\n };\n /**\n * `Initialize` image parameters.\n * @private\n */\n PdfBitmap.prototype.initializeAsync = function (encodedString) {\n var byteArray = new ByteArray(encodedString.length);\n byteArray.writeFromBase64String(encodedString);\n this.decoder = new ImageDecoder(byteArray);\n this.height = this.decoder.height;\n this.width = this.decoder.width;\n // FrameCount = BitmapImageDecoder.FrameCount;\n this.bitsPerComponent = this.decoder.bitsPerComponent;\n };\n /**\n * `Saves` the image into stream.\n * @private\n */\n PdfBitmap.prototype.save = function () {\n this.imageStatus = true;\n this.imageStream = this.decoder.getImageDictionary();\n };\n return PdfBitmap;\n}(PdfImage));\n\n/**\n * Images classes\n * @hidden\n */\n\n/**\n * TtfTableInfo.ts class for EJ2-PDF\n */\nvar TtfTableInfo = /** @__PURE__ @class */ (function () {\n function TtfTableInfo() {\n }\n Object.defineProperty(TtfTableInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this table is empty.\n * @private\n */\n get: function () {\n var empty = (this.offset === this.length && this.length === this.checksum && this.checksum === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n return TtfTableInfo;\n}());\n\nvar TtfNameTable = /** @__PURE__ @class */ (function () {\n function TtfNameTable() {\n }\n return TtfNameTable;\n}());\n\n/**\n * TtfNameRecord.ts class for EJ2-PDF\n */\nvar TtfNameRecord = /** @__PURE__ @class */ (function () {\n function TtfNameRecord() {\n }\n return TtfNameRecord;\n}());\n\n/**\n * TtfHeadTable.ts class for EJ2-PDF\n */\nvar TtfHeadTable = /** @__PURE__ @class */ (function () {\n function TtfHeadTable() {\n }\n return TtfHeadTable;\n}());\n\nvar TtfMetrics = /** @__PURE__ @class */ (function () {\n function TtfMetrics() {\n }\n Object.defineProperty(TtfMetrics.prototype, \"isItalic\", {\n //Properties\n /**\n * Gets a value indicating whether this instance is italic.\n */\n get: function () {\n return ((this.macStyle & 2) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfMetrics.prototype, \"isBold\", {\n /**\n * Gets a value indicating whether this instance is bold.\n */\n get: function () {\n return ((this.macStyle & 1) !== 0);\n },\n enumerable: true,\n configurable: true\n });\n return TtfMetrics;\n}());\n\n/**\n * TtfHorizontalHeaderTable.ts class for EJ2-PDF\n */\nvar TtfHorizontalHeaderTable = /** @__PURE__ @class */ (function () {\n function TtfHorizontalHeaderTable() {\n }\n return TtfHorizontalHeaderTable;\n}());\n\n/**\n * TtfOS2Table.ts class for EJ2-PDF\n * The OS/2 table consists of a set of metrics that are required by Windows and OS/2.\n */\nvar TtfOS2Table = /** @__PURE__ @class */ (function () {\n function TtfOS2Table() {\n }\n return TtfOS2Table;\n}());\n\n/**\n * TtfPostTable.ts class for EJ2-PDF\n */\nvar TtfPostTable = /** @__PURE__ @class */ (function () {\n function TtfPostTable() {\n }\n return TtfPostTable;\n}());\n\n/**\n * TtfLongHorMetric.ts class for EJ2-PDF\n */\nvar TtfLongHorMetric = /** @__PURE__ @class */ (function () {\n function TtfLongHorMetric() {\n }\n return TtfLongHorMetric;\n}());\n\n/**\n * TtfCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfCmapSubTable() {\n }\n return TtfCmapSubTable;\n}());\n\n/**\n * TtfCmapTable.ts class for EJ2-PDF\n */\nvar TtfCmapTable = /** @__PURE__ @class */ (function () {\n function TtfCmapTable() {\n }\n return TtfCmapTable;\n}());\n\n/**\n * TtfGlyphInfo.ts class for EJ2-PDF\n */\nvar TtfGlyphInfo = /** @__PURE__ @class */ (function () {\n function TtfGlyphInfo() {\n }\n Object.defineProperty(TtfGlyphInfo.prototype, \"empty\", {\n //Properties\n /**\n * Gets a value indicating whether this TtfGlyphInfo is empty.\n */\n get: function () {\n var empty = (this.index === this.width && this.width === this.charCode && this.charCode === 0);\n return empty;\n },\n enumerable: true,\n configurable: true\n });\n //IComparable implementation\n /**\n * Compares two WidthDescriptor objects.\n */\n TtfGlyphInfo.prototype.compareTo = function (obj) {\n var glyph = obj;\n return this.index - glyph.index;\n };\n return TtfGlyphInfo;\n}());\n\n/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfLocaTable = /** @__PURE__ @class */ (function () {\n function TtfLocaTable() {\n }\n return TtfLocaTable;\n}());\n\n/**\n * TtfAppleCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfAppleCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfAppleCmapSubTable() {\n }\n return TtfAppleCmapSubTable;\n}());\n\n/**\n * TtfMicrosoftCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfMicrosoftCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfMicrosoftCmapSubTable() {\n }\n return TtfMicrosoftCmapSubTable;\n}());\n\n/**\n * TtfTrimmedCmapSubTable.ts class for EJ2-PDF\n */\nvar TtfTrimmedCmapSubTable = /** @__PURE__ @class */ (function () {\n function TtfTrimmedCmapSubTable() {\n }\n return TtfTrimmedCmapSubTable;\n}());\n\n/**\n * TtfLocaTable.ts class for EJ2-PDF\n */\nvar TtfGlyphHeader = /** @__PURE__ @class */ (function () {\n function TtfGlyphHeader() {\n }\n return TtfGlyphHeader;\n}());\n\n/**\n * Writes data in BigEndian order.\n */\nvar BigEndianWriter = /** @__PURE__ @class */ (function () {\n //Constructors\n /**\n * Creates a new writer.\n */\n function BigEndianWriter(capacity) {\n //Constants\n /**\n * Size of Int32 type.\n */\n this.int32Size = 4;\n /**\n * Size of Int16 type.\n */\n this.int16Size = 2;\n /**\n * Size of long type.\n */\n this.int64Size = 8;\n this.bufferLength = capacity;\n this.buffer = [];\n }\n Object.defineProperty(BigEndianWriter.prototype, \"data\", {\n //Properties\n /**\n * Gets data written to the writer.\n */\n get: function () {\n if (this.buffer.length < this.bufferLength) {\n var length_1 = this.bufferLength - this.buffer.length;\n for (var i = 0; i < length_1; i++) {\n this.buffer.push(0);\n }\n }\n return this.buffer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BigEndianWriter.prototype, \"position\", {\n /// \n /// Gets position of the internal buffer.\n /// \n get: function () {\n if (this.internalPosition === undefined || this.internalPosition === null) {\n this.internalPosition = 0;\n }\n return this.internalPosition;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Writes short value.\n */\n BigEndianWriter.prototype.writeShort = function (value) {\n var bytes = [((value & 0x0000ff00) >> 8), value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes int value.\n */\n BigEndianWriter.prototype.writeInt = function (value) {\n var bytes = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(bytes);\n };\n /**\n * Writes u int value.\n */\n BigEndianWriter.prototype.writeUInt = function (value) {\n var buff = [(value & 0xff000000) >> 24, (value & 0x00ff0000) >> 16, (value & 0x0000ff00) >> 8, value & 0x000000ff];\n this.flush(buff);\n };\n /**\n * Writes string value.\n */\n BigEndianWriter.prototype.writeString = function (value) {\n if (value == null) {\n throw new Error('Argument Null Exception : value');\n }\n var bytes = [];\n for (var i = 0; i < value.length; i++) {\n bytes.push(value.charCodeAt(i));\n }\n this.flush(bytes);\n };\n /**\n * Writes byte[] value.\n */\n BigEndianWriter.prototype.writeBytes = function (value) {\n this.flush(value);\n };\n // //Implementation\n BigEndianWriter.prototype.flush = function (buff) {\n if (buff === null) {\n throw new Error('Argument Null Exception : buff');\n }\n var position = this.position;\n for (var i = 0; i < buff.length; i++) {\n this.buffer[position] = buff[i];\n position++;\n }\n this.internalPosition += buff.length;\n };\n return BigEndianWriter;\n}());\n\n/**\n * TtfReader.ts class for EJ2-PDF\n */\nvar TtfReader = /** @__PURE__ @class */ (function () {\n //Constructors\n function TtfReader(fontData) {\n this.int32Size = 4;\n this.isTtcFont = false;\n this.isMacTtf = false;\n this.metricsName = '';\n this.isMacTTF = false;\n this.missedGlyphs = 0;\n this.tableNames = ['cvt ', 'fpgm', 'glyf', 'head', 'hhea', 'hmtx', 'loca', 'maxp', 'prep'];\n this.entrySelectors = [0, 0, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4];\n this.fontData = fontData;\n this.initialize();\n }\n Object.defineProperty(TtfReader.prototype, \"macintosh\", {\n //Properties\n /**\n * Gets glyphs for Macintosh or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.macintoshDictionary === null || this.macintoshDictionary === undefined) {\n this.macintoshDictionary = new Dictionary();\n }\n return this.macintoshDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoft\", {\n /**\n * Gets glyphs for Microsoft or Symbol fonts (char - key, glyph - value).\n */\n get: function () {\n if (this.microsoftDictionary === null || this.microsoftDictionary === undefined) {\n this.microsoftDictionary = new Dictionary();\n }\n return this.microsoftDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"macintoshGlyphs\", {\n /**\n * Gets glyphs for Macintosh or Symbol fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMacintoshGlyphs === null || this.internalMacintoshGlyphs === undefined) {\n this.internalMacintoshGlyphs = new Dictionary();\n }\n return this.internalMacintoshGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(TtfReader.prototype, \"microsoftGlyphs\", {\n /**\n * Gets glyphs for Microsoft Unicode fonts (glyph index - key, glyph - value).\n */\n get: function () {\n if (this.internalMicrosoftGlyphs === null || this.internalMicrosoftGlyphs === undefined) {\n this.internalMicrosoftGlyphs = new Dictionary();\n }\n return this.internalMicrosoftGlyphs;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n TtfReader.prototype.initialize = function () {\n if (this.metrics === undefined) {\n this.metrics = new TtfMetrics();\n }\n this.readFontDictionary();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.initializeFontName(nameTable);\n this.metrics.macStyle = headTable.macStyle;\n };\n TtfReader.prototype.readFontDictionary = function () {\n this.offset = 0;\n var version = this.checkPreambula();\n //this.offset += 4;\n var numTables = this.readInt16(this.offset);\n var searchRange = this.readInt16(this.offset);\n var entrySelector = this.readInt16(this.offset);\n var rangeShift = this.readInt16(this.offset);\n if (this.tableDirectory === undefined) {\n this.tableDirectory = new Dictionary();\n }\n for (var i = 0; i < numTables; ++i) {\n var table = new TtfTableInfo();\n var tableKey = this.readString(this.int32Size);\n table.checksum = this.readInt32(this.offset);\n table.offset = this.readInt32(this.offset);\n table.length = this.readInt32(this.offset);\n this.tableDirectory.setValue(tableKey, table);\n }\n this.lowestPosition = this.offset;\n if (!this.isTtcFont) {\n this.fixOffsets();\n }\n };\n TtfReader.prototype.fixOffsets = function () {\n var minOffset = Number.MAX_VALUE;\n // Search for a smallest offset and compare it with the lowest position found.\n var tableKeys = this.tableDirectory.keys();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n var offset = value.offset;\n if (minOffset > offset) {\n minOffset = offset;\n if (minOffset <= this.lowestPosition) {\n break;\n }\n }\n }\n var shift = minOffset - this.lowestPosition;\n if (shift !== 0) {\n var table = new Dictionary();\n for (var i = 0; i < tableKeys.length; i++) {\n var value = this.tableDirectory.getValue(tableKeys[i]);\n value.offset -= shift;\n table.setValue(tableKeys[i], value);\n }\n this.tableDirectory = table;\n }\n };\n TtfReader.prototype.checkPreambula = function () {\n var version = this.readInt32(this.offset);\n this.isMacTtf = (version === 0x74727565) ? true : false;\n if (version !== 0x10000 && version !== 0x74727565 && version !== 0x4f54544f) {\n this.isTtcFont = true;\n this.offset = 0;\n var fontTag = this.readString(4);\n if (fontTag !== 'ttcf') {\n throw new Error('Can not read TTF font data');\n }\n //skip 4\n this.offset += 4;\n var ttcIdentificationNumber = this.readInt32(this.offset);\n if (ttcIdentificationNumber < 0) {\n throw new Error('Can not read TTF font data');\n }\n this.offset = this.readInt32(this.offset);\n version = this.readInt32(this.offset);\n }\n return version;\n };\n TtfReader.prototype.readNameTable = function () {\n var tableInfo = this.getTable('name');\n this.offset = tableInfo.offset;\n var table = new TtfNameTable();\n table.formatSelector = this.readUInt16(this.offset);\n table.recordsCount = this.readUInt16(this.offset);\n table.offset = this.readUInt16(this.offset);\n table.nameRecords = [];\n var recordSize = 12;\n var position = this.offset;\n for (var i = 0; i < table.recordsCount; i++) {\n this.offset = position;\n var record = new TtfNameRecord();\n record.platformID = this.readUInt16(this.offset);\n record.encodingID = this.readUInt16(this.offset);\n record.languageID = this.readUInt16(this.offset);\n record.nameID = this.readUInt16(this.offset);\n record.length = this.readUInt16(this.offset);\n record.offset = this.readUInt16(this.offset);\n this.offset = tableInfo.offset + table.offset + record.offset;\n var unicode = (record.platformID === 0 || record.platformID === 3);\n record.name = this.readString(record.length, unicode);\n table.nameRecords[i] = record;\n position += recordSize;\n }\n return table;\n };\n TtfReader.prototype.readHeadTable = function () {\n var tableInfo = this.getTable('head');\n this.offset = tableInfo.offset;\n var table = new TtfHeadTable();\n table.version = this.readFixed(this.offset);\n table.fontRevision = this.readFixed(this.offset);\n table.checkSumAdjustment = this.readUInt32(this.offset);\n table.magicNumber = this.readUInt32(this.offset);\n table.flags = this.readUInt16(this.offset);\n table.unitsPerEm = this.readUInt16(this.offset);\n table.created = this.readInt64(this.offset);\n table.modified = this.readInt64(this.offset);\n table.xMin = this.readInt16(this.offset);\n table.yMin = this.readInt16(this.offset);\n table.xMax = this.readInt16(this.offset);\n table.yMax = this.readInt16(this.offset);\n table.macStyle = this.readUInt16(this.offset);\n table.lowestReadableSize = this.readUInt16(this.offset);\n table.fontDirectionHint = this.readInt16(this.offset);\n table.indexToLocalFormat = this.readInt16(this.offset);\n table.glyphDataFormat = this.readInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readHorizontalHeaderTable = function () {\n var tableInfo = this.getTable('hhea');\n this.offset = tableInfo.offset;\n var table = new TtfHorizontalHeaderTable();\n table.version = this.readFixed(this.offset);\n table.ascender = this.readInt16(this.offset);\n table.descender = this.readInt16(this.offset);\n table.lineGap = this.readInt16(this.offset);\n table.advanceWidthMax = this.readUInt16(this.offset);\n table.minLeftSideBearing = this.readInt16(this.offset);\n table.minRightSideBearing = this.readInt16(this.offset);\n table.xMaxExtent = this.readInt16(this.offset);\n table.caretSlopeRise = this.readInt16(this.offset);\n table.caretSlopeRun = this.readInt16(this.offset);\n //skip 2 * 5\n this.offset += 10;\n table.metricDataFormat = this.readInt16(this.offset);\n table.numberOfHMetrics = this.readUInt16(this.offset);\n return table;\n };\n TtfReader.prototype.readOS2Table = function () {\n var tableInfo = this.getTable('OS/2');\n this.offset = tableInfo.offset;\n var table = new TtfOS2Table();\n table.version = this.readUInt16(this.offset);\n table.xAvgCharWidth = this.readInt16(this.offset);\n table.usWeightClass = this.readUInt16(this.offset);\n table.usWidthClass = this.readUInt16(this.offset);\n table.fsType = this.readInt16(this.offset);\n table.ySubscriptXSize = this.readInt16(this.offset);\n table.ySubscriptYSize = this.readInt16(this.offset);\n table.ySubscriptXOffset = this.readInt16(this.offset);\n table.ySubscriptYOffset = this.readInt16(this.offset);\n table.ySuperscriptXSize = this.readInt16(this.offset);\n table.ySuperscriptYSize = this.readInt16(this.offset);\n table.ySuperscriptXOffset = this.readInt16(this.offset);\n table.ySuperscriptYOffset = this.readInt16(this.offset);\n table.yStrikeoutSize = this.readInt16(this.offset);\n table.yStrikeoutPosition = this.readInt16(this.offset);\n table.sFamilyClass = this.readInt16(this.offset);\n table.panose = this.readBytes(10);\n table.ulUnicodeRange1 = this.readUInt32(this.offset);\n table.ulUnicodeRange2 = this.readUInt32(this.offset);\n table.ulUnicodeRange3 = this.readUInt32(this.offset);\n table.ulUnicodeRange4 = this.readUInt32(this.offset);\n table.vendorIdentifier = this.readBytes(4);\n table.fsSelection = this.readUInt16(this.offset);\n table.usFirstCharIndex = this.readUInt16(this.offset);\n table.usLastCharIndex = this.readUInt16(this.offset);\n table.sTypoAscender = this.readInt16(this.offset);\n table.sTypoDescender = this.readInt16(this.offset);\n table.sTypoLineGap = this.readInt16(this.offset);\n table.usWinAscent = this.readUInt16(this.offset);\n table.usWinDescent = this.readUInt16(this.offset);\n table.ulCodePageRange1 = this.readUInt32(this.offset);\n table.ulCodePageRange2 = this.readUInt32(this.offset);\n if (table.version > 1) {\n table.sxHeight = this.readInt16(this.offset);\n table.sCapHeight = this.readInt16(this.offset);\n table.usDefaultChar = this.readUInt16(this.offset);\n table.usBreakChar = this.readUInt16(this.offset);\n table.usMaxContext = this.readUInt16(this.offset);\n }\n else {\n table.sxHeight = 0;\n table.sCapHeight = 0;\n table.usDefaultChar = 0;\n table.usBreakChar = 0;\n table.usMaxContext = 0;\n }\n return table;\n };\n TtfReader.prototype.readPostTable = function () {\n var tableInfo = this.getTable('post');\n this.offset = tableInfo.offset;\n var table = new TtfPostTable();\n table.formatType = this.readFixed(this.offset);\n table.italicAngle = this.readFixed(this.offset);\n table.underlinePosition = this.readInt16(this.offset);\n table.underlineThickness = this.readInt16(this.offset);\n table.isFixedPitch = this.readUInt32(this.offset);\n table.minType42 = this.readUInt32(this.offset);\n table.maxType42 = this.readUInt32(this.offset);\n table.minType1 = this.readUInt32(this.offset);\n table.maxType1 = this.readUInt32(this.offset);\n return table;\n };\n /**\n * Reads Width of the glyphs.\n */\n TtfReader.prototype.readWidthTable = function (glyphCount, unitsPerEm) {\n var tableInfo = this.getTable('hmtx');\n this.offset = tableInfo.offset;\n var width = [];\n for (var i = 0; i < glyphCount; i++) {\n var glyph = new TtfLongHorMetric();\n glyph.advanceWidth = this.readUInt16(this.offset);\n glyph.lsb = this.readInt16(this.offset);\n var glyphWidth = glyph.advanceWidth * 1000 / unitsPerEm;\n width.push(Math.floor(glyphWidth));\n }\n return width;\n };\n /**\n * Reads the cmap table.\n */\n TtfReader.prototype.readCmapTable = function () {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset;\n var table = new TtfCmapTable();\n table.version = this.readUInt16(this.offset);\n table.tablesCount = this.readUInt16(this.offset);\n var position = this.offset;\n var subTables = [];\n for (var i = 0; i < table.tablesCount; i++) {\n this.offset = position;\n var subTable = new TtfCmapSubTable();\n subTable.platformID = this.readUInt16(this.offset);\n subTable.encodingID = this.readUInt16(this.offset);\n subTable.offset = this.readUInt32(this.offset);\n position = this.offset;\n this.readCmapSubTable(subTable);\n subTables[i] = subTable;\n }\n return subTables;\n };\n /**\n * Reads the cmap sub table.\n */\n TtfReader.prototype.readCmapSubTable = function (subTable) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var format = this.readUInt16(this.offset);\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n var platform = (encoding === TtfCmapEncoding.Macintosh) ? TtfPlatformID.Macintosh : TtfPlatformID.Microsoft;\n if (encoding !== TtfCmapEncoding.Unknown) {\n switch (format) {\n case TtfCmapFormat.Apple:\n this.readAppleCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Microsoft:\n this.readMicrosoftCmapTable(subTable, encoding);\n break;\n case TtfCmapFormat.Trimmed:\n this.readTrimmedCmapTable(subTable, encoding);\n break;\n }\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readAppleCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfAppleCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n if (this.maxMacIndex === null || this.maxMacIndex === undefined) {\n this.maxMacIndex = 0;\n }\n for (var i = 0; i < 256; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readByte(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n /**\n * Reads Symbol cmap table.\n */\n TtfReader.prototype.readMicrosoftCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var collection = (encoding === TtfCmapEncoding.Unicode) ? this.microsoft : this.macintosh;\n var table = new TtfMicrosoftCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.segCountX2 = this.readUInt16(this.offset);\n table.searchRange = this.readUInt16(this.offset);\n table.entrySelector = this.readUInt16(this.offset);\n table.rangeShift = this.readUInt16(this.offset);\n var segCount = table.segCountX2 / 2;\n table.endCount = this.readUshortArray(segCount);\n table.reservedPad = this.readUInt16(this.offset);\n table.startCount = this.readUshortArray(segCount);\n table.idDelta = this.readUshortArray(segCount);\n table.idRangeOffset = this.readUshortArray(segCount);\n var length = (table.length / 2 - 8) - (segCount * 4);\n table.glyphID = this.readUshortArray(length);\n // Process glyphIdArray array.\n var codeOffset = 0;\n var index = 0;\n for (var j = 0; j < segCount; j++) {\n for (var k = table.startCount[j]; k <= table.endCount[j] && k !== 65535; k++) {\n if (table.idRangeOffset[j] === 0) {\n codeOffset = (k + table.idDelta[j]) & 65535;\n }\n else {\n index = j + table.idRangeOffset[j] / 2 - segCount + k - table.startCount[j];\n if (index >= table.glyphID.length) {\n continue;\n }\n codeOffset = (table.glyphID[index] + table.idDelta[j]) & 65535;\n }\n var glyph = new TtfGlyphInfo();\n glyph.index = codeOffset;\n glyph.width = this.getWidth(glyph.index);\n var id = (encoding === TtfCmapEncoding.Symbol) ? ((k & 0xff00) === 0xf000 ? k & 0xff : k) : k;\n glyph.charCode = id;\n collection.setValue(id, glyph);\n this.addGlyph(glyph, encoding);\n }\n }\n };\n /**\n * Reads Trimed cmap table.\n */\n TtfReader.prototype.readTrimmedCmapTable = function (subTable, encoding) {\n var tableInfo = this.getTable('cmap');\n this.offset = tableInfo.offset + subTable.offset;\n var table = new TtfTrimmedCmapSubTable();\n table.format = this.readUInt16(this.offset);\n table.length = this.readUInt16(this.offset);\n table.version = this.readUInt16(this.offset);\n table.firstCode = this.readUInt16(this.offset);\n table.entryCount = this.readUInt16(this.offset);\n for (var i = 0; i < table.entryCount; ++i) {\n var glyphInfo = new TtfGlyphInfo();\n glyphInfo.index = this.readUInt16(this.offset);\n glyphInfo.width = this.getWidth(glyphInfo.index);\n glyphInfo.charCode = i + table.firstCode;\n this.macintosh.setValue(i, glyphInfo);\n this.addGlyph(glyphInfo, encoding);\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n this.maxMacIndex = Math.max(i, this.maxMacIndex);\n }\n };\n TtfReader.prototype.initializeFontName = function (nameTable) {\n for (var i = 0; i < nameTable.recordsCount; i++) {\n var record = nameTable.nameRecords[i];\n if (record.nameID === 1) {\n //font family\n this.metrics.fontFamily = record.name;\n }\n else if (record.nameID === 6) {\n //post script name\n this.metrics.postScriptName = record.name;\n }\n /* tslint:disable */\n if (this.metrics.fontFamily !== null && this.metrics.fontFamily !== undefined && this.metrics.postScriptName !== null && this.metrics.postScriptName !== undefined) {\n break;\n }\n /* tslint:disable */\n }\n };\n TtfReader.prototype.getTable = function (name) {\n // if (name === null) {\n // throw new Error('Argument Null Exception : name');\n // }\n var table = new TtfTableInfo();\n var obj;\n if (this.tableDirectory.containsKey(name)) {\n obj = this.tableDirectory.getValue(name);\n }\n if (obj !== null && obj !== undefined) {\n table = obj;\n }\n return table;\n };\n /**\n * Returns width of the glyph.\n */\n TtfReader.prototype.getWidth = function (glyphCode) {\n glyphCode = (glyphCode < this.width.length) ? glyphCode : this.width.length - 1;\n return this.width[glyphCode];\n };\n /**\n * Gets CMAP encoding based on platform ID and encoding ID.\n */\n /* tslint:disable */\n TtfReader.prototype.getCmapEncoding = function (platformID, encodingID) {\n var format = TtfCmapEncoding.Unknown;\n if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Undefined) {\n // When building a symbol font for Windows,\n // the platform ID should be 3 and the encoding ID should be 0.\n format = TtfCmapEncoding.Symbol;\n }\n else if (platformID == TtfPlatformID.Microsoft && encodingID == TtfMicrosoftEncodingID.Unicode) {\n // When building a Unicode font for Windows,\n // the platform ID should be 3 and the encoding ID should be 1.\n format = TtfCmapEncoding.Unicode;\n }\n else if (platformID == TtfPlatformID.Macintosh && encodingID == TtfMacintoshEncodingID.Roman) {\n // When building a font that will be used on the Macintosh,\n // the platform ID should be 1 and the encoding ID should be 0.\n format = TtfCmapEncoding.Macintosh;\n }\n return format;\n };\n /* tslint:enable */\n /**\n * Adds glyph to the collection.\n */\n TtfReader.prototype.addGlyph = function (glyph, encoding) {\n var collection = null;\n switch (encoding) {\n case TtfCmapEncoding.Unicode:\n collection = this.microsoftGlyphs;\n break;\n case TtfCmapEncoding.Macintosh:\n case TtfCmapEncoding.Symbol:\n collection = this.macintoshGlyphs;\n break;\n }\n collection.setValue(glyph.index, glyph);\n };\n /**\n * Initializes metrics.\n */\n /* tslint:disable */\n TtfReader.prototype.initializeMetrics = function (nameTable, headTable, horizontalHeadTable, os2Table, postTable, cmapTables) {\n /* tslint:enable */\n // if (cmapTables === null) {\n // throw new Error('ArgumentNullException : cmapTables');\n // }\n this.initializeFontName(nameTable);\n // Get font encoding.\n var bSymbol = false;\n for (var i = 0; i < cmapTables.length; i++) {\n var subTable = cmapTables[i];\n var encoding = this.getCmapEncoding(subTable.platformID, subTable.encodingID);\n if (encoding === TtfCmapEncoding.Symbol) {\n bSymbol = true;\n break;\n }\n }\n this.metrics.isSymbol = bSymbol;\n this.metrics.macStyle = headTable.macStyle;\n this.metrics.isFixedPitch = (postTable.isFixedPitch !== 0);\n this.metrics.italicAngle = postTable.italicAngle;\n var factor = 1000 / headTable.unitsPerEm;\n this.metrics.winAscent = os2Table.sTypoAscender * factor;\n this.metrics.macAscent = horizontalHeadTable.ascender * factor;\n //m_metrics.MacAscent = os2Table.UsWinAscent * factor;\n // NOTE: This is stange workaround. The value is good if os2Table.SCapHeight != 0, otherwise it should be properly computed.\n this.metrics.capHeight = (os2Table.sCapHeight !== 0) ? os2Table.sCapHeight : 0.7 * headTable.unitsPerEm * factor;\n this.metrics.winDescent = os2Table.sTypoDescender * factor;\n this.metrics.macDescent = horizontalHeadTable.descender * factor;\n //m_metrics.MacDescent = -os2Table.UsWinDescent * factor;\n this.metrics.leading = (os2Table.sTypoAscender - os2Table.sTypoDescender + os2Table.sTypoLineGap) * factor;\n this.metrics.lineGap = Math.ceil(horizontalHeadTable.lineGap * factor);\n var left = headTable.xMin * factor;\n var top = Math.ceil(this.metrics.macAscent + this.metrics.lineGap);\n var right = headTable.xMax * factor;\n var bottom = this.metrics.macDescent;\n this.metrics.fontBox = new Rectangle(left, top, right, bottom);\n // NOTE: Strange!\n this.metrics.stemV = 80;\n this.metrics.widthTable = this.updateWidth();\n this.metrics.contains = this.tableDirectory.containsKey('CFF');\n this.metrics.subScriptSizeFactor = headTable.unitsPerEm / os2Table.ySubscriptYSize;\n this.metrics.superscriptSizeFactor = headTable.unitsPerEm / os2Table.ySuperscriptYSize;\n };\n /**\n * Updates chars structure which is used in the case of ansi encoding (256 bytes).\n */\n TtfReader.prototype.updateWidth = function () {\n var count = 256;\n var bytes = [];\n if (this.metrics.isSymbol) {\n for (var i = 0; i < count; i++) {\n var glyphInfo = this.getGlyph(String.fromCharCode(i));\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n else {\n var byteToProcess = [];\n var unknown = '?';\n var space = String.fromCharCode(32);\n for (var i = 0; i < count; i++) {\n byteToProcess[0] = i;\n var text = this.getString(byteToProcess, 0, byteToProcess.length);\n var ch = (text.length > 0) ? text[0] : unknown;\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n bytes[i] = glyphInfo.width;\n }\n else {\n glyphInfo = this.getGlyph(space);\n bytes[i] = (glyphInfo.empty) ? 0 : glyphInfo.width;\n }\n }\n }\n return bytes;\n };\n /**\n * Returns default glyph.\n */\n TtfReader.prototype.getDefaultGlyph = function () {\n var glyph = this.getGlyph(StringTokenizer.whiteSpace);\n return glyph;\n };\n /**\n * Reads unicode string from byte array.\n */\n TtfReader.prototype.getString = function (byteToProcess, start, length) {\n var result = '';\n for (var index = 0; index < length; index++) {\n result += String.fromCharCode(byteToProcess[index + start]);\n }\n return result;\n };\n /**\n * Reads loca table.\n */\n TtfReader.prototype.readLocaTable = function (bShort) {\n var tableInfo = this.getTable('loca');\n this.offset = tableInfo.offset;\n var table = new TtfLocaTable();\n var buffer = null;\n if (bShort) {\n var len = tableInfo.length / 2;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt16(this.offset) * 2;\n }\n }\n else {\n var len = tableInfo.length / 4;\n buffer = [];\n for (var i = 0; i < len; i++) {\n buffer[i] = this.readUInt32(this.offset);\n }\n }\n table.offsets = buffer;\n return table;\n };\n /**\n * Updates hash table of used glyphs.\n */\n TtfReader.prototype.updateGlyphChars = function (glyphChars, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Add zero key.\n if (!glyphChars.containsKey(0)) {\n glyphChars.setValue(0, 0);\n }\n var clone = new Dictionary();\n var glyphCharKeys = glyphChars.keys();\n for (var i = 0; i < glyphCharKeys.length; i++) {\n clone.setValue(glyphCharKeys[i], glyphChars.getValue(glyphCharKeys[i]));\n }\n for (var i = 0; i < glyphCharKeys.length; i++) {\n var nextKey = glyphCharKeys[i];\n this.processCompositeGlyph(glyphChars, nextKey, locaTable);\n }\n };\n /**\n * Checks if glyph is composite or not.\n */\n TtfReader.prototype.processCompositeGlyph = function (glyphChars, glyph, locaTable) {\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n // Is in range.\n if (glyph < locaTable.offsets.length - 1) {\n var glyphOffset = locaTable.offsets[glyph];\n if (glyphOffset !== locaTable.offsets[glyph + 1]) {\n var tableInfo = this.getTable('glyf');\n this.offset = tableInfo.offset + glyphOffset;\n var glyphHeader = new TtfGlyphHeader();\n glyphHeader.numberOfContours = this.readInt16(this.offset);\n glyphHeader.xMin = this.readInt16(this.offset);\n glyphHeader.yMin = this.readInt16(this.offset);\n glyphHeader.xMax = this.readInt16(this.offset);\n glyphHeader.yMax = this.readInt16(this.offset);\n // Glyph is composite.\n if (glyphHeader.numberOfContours < 0) {\n var skipBytes = 0;\n var entry = true;\n while (entry) {\n var flags = this.readUInt16(this.offset);\n var glyphIndex = this.readUInt16(this.offset);\n if (!glyphChars.containsKey(glyphIndex)) {\n glyphChars.setValue(glyphIndex, 0);\n }\n if ((flags & TtfCompositeGlyphFlags.MoreComponents) === 0) {\n break;\n }\n skipBytes = ((flags & TtfCompositeGlyphFlags.Arg1And2AreWords) !== 0) ? 4 : 2;\n if ((flags & TtfCompositeGlyphFlags.WeHaveScale) !== 0) {\n skipBytes += 2;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveAnXyScale) !== 0) {\n skipBytes += 4;\n }\n else if ((flags & TtfCompositeGlyphFlags.WeHaveTwoByTwo) !== 0) {\n skipBytes += 2 * 4;\n }\n this.offset += skipBytes;\n }\n }\n }\n }\n };\n /**\n * Creates new glyph tables based on chars that are used for output.\n */\n /* tslint:disable */\n TtfReader.prototype.generateGlyphTable = function (glyphChars, locaTable, newLocaTable, newGlyphTable) {\n /* tslint:enable */\n // if (glyphChars === null) {\n // throw new Error('Argument Null Exception : glyphChars');\n // }\n newLocaTable = [];\n // Sorting used glyphs keys.\n var activeGlyphs = glyphChars.keys();\n activeGlyphs.sort(function (a, b) { return a - b; });\n var glyphSize = 0;\n for (var i = 0; i < activeGlyphs.length; i++) {\n var glyphIndex = activeGlyphs[i];\n if (locaTable.offsets.length > 0) {\n glyphSize += locaTable.offsets[glyphIndex + 1] - locaTable.offsets[glyphIndex];\n }\n }\n var glyphSizeAligned = this.align(glyphSize);\n newGlyphTable = [];\n for (var i = 0; i < glyphSizeAligned; i++) {\n newGlyphTable.push(0);\n }\n var nextGlyphOffset = 0;\n var nextGlyphIndex = 0;\n var table = this.getTable('glyf');\n // Creating NewLocaTable - that would hold offsets for filtered glyphs.\n for (var i = 0; i < locaTable.offsets.length; i++) {\n newLocaTable.push(nextGlyphOffset);\n if (nextGlyphIndex < activeGlyphs.length && activeGlyphs[nextGlyphIndex] === i) {\n ++nextGlyphIndex;\n newLocaTable[i] = nextGlyphOffset;\n var oldGlyphOffset = locaTable.offsets[i];\n var oldNextGlyphOffset = locaTable.offsets[i + 1] - oldGlyphOffset;\n if (oldNextGlyphOffset > 0) {\n this.offset = table.offset + oldGlyphOffset;\n var result = this.read(newGlyphTable, nextGlyphOffset, oldNextGlyphOffset);\n newGlyphTable = result.buffer;\n nextGlyphOffset += oldNextGlyphOffset;\n }\n }\n }\n return { glyphTableSize: glyphSize, newLocaTable: newLocaTable, newGlyphTable: newGlyphTable };\n };\n /**\n * Updates new Loca table.\n */\n /* tslint:disable */\n TtfReader.prototype.updateLocaTable = function (newLocaTable, bLocaIsShort, newLocaTableOut) {\n /* tslint:enable */\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTable');\n }\n var size = (bLocaIsShort) ? newLocaTable.length * 2 : newLocaTable.length * 4;\n var count = this.align(size);\n //BigEndianWiter\n var writer = new BigEndianWriter(count);\n for (var i = 0; i < newLocaTable.length; i++) {\n var value = newLocaTable[i];\n if (bLocaIsShort) {\n value /= 2;\n writer.writeShort(value);\n }\n else {\n writer.writeInt(value);\n }\n }\n return { newLocaUpdated: writer.data, newLocaSize: size };\n };\n /**\n * Aligns number to be divisible on 4.\n */\n TtfReader.prototype.align = function (value) {\n return (value + 3) & (~3);\n };\n /**\n * Returns font program data.\n */\n /* tslint:disable */\n TtfReader.prototype.getFontProgram = function (newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var result = this.getFontProgramLength(newLocaTableOut, newGlyphTable, 0);\n var fontProgramLength = result.fontProgramLength;\n var numTables = result.numTables;\n var writer = new BigEndianWriter(fontProgramLength);\n writer.writeInt(0x10000);\n writer.writeShort(numTables);\n var entrySelector = this.entrySelectors[numTables];\n writer.writeShort((1 << (entrySelector & 31)) * 16);\n writer.writeShort(entrySelector);\n writer.writeShort((numTables - (1 << (entrySelector & 31))) * 16);\n // Writing to destination buffer - checksums && sizes of used tables.\n this.writeCheckSums(writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize);\n // // Writing to destination buffer - used glyphs.\n this.writeGlyphs(writer, newLocaTableOut, newGlyphTable);\n return writer.data;\n };\n /* tslint:disable */\n TtfReader.prototype.getFontProgramLength = function (newLocaTableOut, newGlyphTable, numTables) {\n /* tslint:enable */\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n // glyf and loca are used by default;\n numTables = 2;\n var tableNames = this.tableNames;\n var fontProgramLength = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n if (tableName !== 'glyf' && tableName !== 'loca') {\n var table = this.getTable(tableName);\n if (!table.empty) {\n ++numTables;\n fontProgramLength += this.align(table.length);\n }\n }\n }\n fontProgramLength += newLocaTableOut.length;\n fontProgramLength += newGlyphTable.length;\n var usedTablesSize = numTables * 16 + (3 * 4);\n fontProgramLength += usedTablesSize;\n return { fontProgramLength: fontProgramLength, numTables: numTables };\n };\n /**\n * Writing to destination buffer - checksums and sizes of used tables.\n */\n /* tslint:disable */\n TtfReader.prototype.writeCheckSums = function (writer, numTables, newLocaTableOut, newGlyphTable, glyphTableSize, locaTableSize) {\n /* tslint:enable */\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTableOut === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n var usedTablesSize = numTables * 16 + (3 * 4);\n var nextTableSize = 0;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n writer.writeString(tableName);\n if (tableName === 'glyf') {\n var checksum = this.calculateCheckSum(newGlyphTable);\n writer.writeInt(checksum);\n nextTableSize = glyphTableSize;\n }\n else if (tableName === 'loca') {\n var checksum = this.calculateCheckSum(newLocaTableOut);\n writer.writeInt(checksum);\n nextTableSize = locaTableSize;\n }\n else {\n writer.writeInt(tableInfo.checksum);\n nextTableSize = tableInfo.length;\n }\n writer.writeUInt(usedTablesSize);\n writer.writeUInt(nextTableSize);\n usedTablesSize += this.align(nextTableSize);\n }\n };\n /**\n * Gets checksum from source buffer.\n */\n TtfReader.prototype.calculateCheckSum = function (bytes) {\n if (bytes === null) {\n throw new Error('Argument Null Exception : bytes');\n }\n var pos = 0;\n var byte1 = 0;\n var byte2 = 0;\n var byte3 = 0;\n var byte4 = 0;\n for (var i = 0; i < (bytes.length + 1) / 4; i++) {\n byte4 += (bytes[pos++] & 255);\n byte3 += (bytes[pos++] & 255);\n byte2 += (bytes[pos++] & 255);\n byte1 += (bytes[pos++] & 255);\n }\n var result = byte1;\n result += (byte2 << 8);\n result += (byte3 << 16);\n result += (byte4 << 24);\n return result;\n };\n /**\n * Writing to destination buffer - used glyphs.\n */\n TtfReader.prototype.writeGlyphs = function (writer, newLocaTable, newGlyphTable) {\n if (writer === null) {\n throw new Error('Argument Null Exception : writer');\n }\n if (newLocaTable === null) {\n throw new Error('Argument Null Exception : newLocaTableOut');\n }\n if (newGlyphTable === null) {\n throw new Error('Argument Null Exception : newGlyphTable');\n }\n var tableNames = this.tableNames;\n for (var i = 0; i < tableNames.length; i++) {\n var tableName = tableNames[i];\n var tableInfo = this.getTable(tableName);\n if (tableInfo.empty) {\n continue;\n }\n if (tableName === 'glyf') {\n writer.writeBytes(newGlyphTable);\n }\n else if (tableName === 'loca') {\n writer.writeBytes(newLocaTable);\n }\n else {\n var count = this.align(tableInfo.length);\n var buff = [];\n for (var i_1 = 0; i_1 < count; i_1++) {\n buff.push(0);\n }\n this.offset = tableInfo.offset;\n var result = this.read(buff, 0, tableInfo.length);\n writer.writeBytes(result.buffer);\n }\n }\n };\n //public methods\n /**\n * Sets position value of font data.\n */\n TtfReader.prototype.setOffset = function (offset) {\n this.offset = offset;\n };\n /**\n * Creates font Internals\n * @private\n */\n TtfReader.prototype.createInternals = function () {\n this.metrics = new TtfMetrics();\n var nameTable = this.readNameTable();\n var headTable = this.readHeadTable();\n this.bIsLocaShort = (headTable.indexToLocalFormat === 0);\n var horizontalHeadTable = this.readHorizontalHeaderTable();\n var os2Table = this.readOS2Table();\n var postTable = this.readPostTable();\n this.width = this.readWidthTable(horizontalHeadTable.numberOfHMetrics, headTable.unitsPerEm);\n var subTables = this.readCmapTable();\n this.initializeMetrics(nameTable, headTable, horizontalHeadTable, os2Table, postTable, subTables);\n };\n TtfReader.prototype.getGlyph = function (charCode) {\n if (typeof charCode === 'number') {\n var obj1 = null;\n if (!this.metrics.isSymbol && this.microsoftGlyphs != null) {\n if (this.microsoftGlyphs.containsKey(charCode)) {\n obj1 = this.microsoftGlyphs.getValue(charCode);\n }\n }\n else if (this.metrics.isSymbol && this.macintoshGlyphs != null) {\n if (this.macintoshGlyphs.containsKey(charCode)) {\n obj1 = this.macintoshGlyphs.getValue(charCode);\n }\n }\n var glyph = (obj1 != null) ? obj1 : this.getDefaultGlyph();\n return glyph;\n }\n else {\n var obj = null;\n var code = charCode.charCodeAt(0);\n if (!this.metrics.isSymbol && this.microsoft !== null) {\n if (this.microsoft.containsKey(code)) {\n obj = this.microsoft.getValue(code);\n if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = true;\n }\n }\n else if (code !== StringTokenizer.whiteSpace.charCodeAt(0)) {\n this.isFontPresent = false;\n }\n }\n else if (this.metrics.isSymbol && this.macintosh !== null || this.isMacTTF) {\n // NOTE: this code fixes char codes that extends 0x100. However, it might corrupt something.\n if (this.maxMacIndex !== 0) {\n code %= this.maxMacIndex + 1;\n }\n else {\n code = ((code & 0xff00) === 0xf000 ? code & 0xff : code);\n }\n if (this.macintosh.containsKey(code)) {\n obj = this.macintosh.getValue(code);\n this.isFontPresent = true;\n }\n }\n // Fix for StackOverFlow exception in XPS to PDF converter\n if (charCode === StringTokenizer.whiteSpace && obj === null) {\n obj = new TtfGlyphInfo();\n }\n var glyph = (obj !== null) ? obj : this.getDefaultGlyph();\n return glyph;\n }\n };\n /**\n * Gets hash table with chars indexed by glyph index.\n */\n TtfReader.prototype.getGlyphChars = function (chars) {\n if (chars === null || chars === undefined) {\n throw new Error('Argument Null Exception : chars');\n }\n var dictionary = new Dictionary();\n var charKeys = chars.keys();\n for (var i = 0; i < charKeys.length; i++) {\n var ch = charKeys[i];\n var glyph = this.getGlyph(ch);\n if (!glyph.empty) {\n dictionary.setValue(glyph.index, ch.charCodeAt(0));\n }\n }\n return dictionary;\n };\n /**\n * Gets all glyphs.\n */\n TtfReader.prototype.getAllGlyphs = function () {\n var allGlyphInfo = [];\n var info = new TtfGlyphInfo();\n var index = 0;\n for (var i = 0; i < this.width.length; i++) {\n var width = this.width[i];\n info.index = index;\n info.width = width;\n allGlyphInfo.push(info);\n index++;\n }\n return allGlyphInfo;\n };\n /**\n * Reads a font's program.\n * @private\n */\n TtfReader.prototype.readFontProgram = function (chars) {\n var glyphChars = this.getGlyphChars(chars);\n var locaTable = this.readLocaTable(this.bIsLocaShort);\n if (glyphChars.size() < chars.size()) {\n this.missedGlyphs = chars.size() - glyphChars.size();\n }\n this.updateGlyphChars(glyphChars, locaTable);\n /* tslint:disable */\n var result1 = this.generateGlyphTable(glyphChars, locaTable, null, null);\n /* tslint:enable */\n var glyphTableSize = result1.glyphTableSize;\n var newLocaTable = result1.newLocaTable;\n var newGlyphTable = result1.newGlyphTable;\n var result2 = this.updateLocaTable(newLocaTable, this.bIsLocaShort, null);\n var newLocaSize = result2.newLocaSize;\n var newLocaUpdated = result2.newLocaUpdated;\n var fontProgram = this.getFontProgram(newLocaUpdated, newGlyphTable, glyphTableSize, newLocaSize);\n return fontProgram;\n };\n /**\n * Reconverts string to be in proper format saved into PDF file.\n */\n TtfReader.prototype.convertString = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n var glyph = '';\n for (var k = 0; k < text.length; k++) {\n var ch = text[k];\n var glyphInfo = this.getGlyph(ch);\n if (!glyphInfo.empty) {\n glyph += String.fromCharCode(glyphInfo.index);\n \n }\n }\n return glyph;\n };\n /**\n * Gets char width.\n */\n TtfReader.prototype.getCharWidth = function (code) {\n var glyphInfo = this.getGlyph(code);\n glyphInfo = (!glyphInfo.empty) ? glyphInfo : this.getDefaultGlyph();\n var codeWidth = (!glyphInfo.empty) ? glyphInfo.width : 0;\n return codeWidth;\n };\n TtfReader.prototype.readString = function (length, isUnicode) {\n if (isUnicode === undefined) {\n return this.readString(length, false);\n }\n else {\n //let buffer : number[] = this.readBytes(length);\n var result = '';\n if (isUnicode) {\n for (var i = 0; i < length; i++) {\n if (i % 2 !== 0) {\n result += String.fromCharCode(this.fontData[this.offset]);\n }\n this.offset += 1;\n }\n }\n else {\n for (var i = 0; i < length; i++) {\n result += String.fromCharCode(this.fontData[this.offset]);\n this.offset += 1;\n }\n }\n return result;\n }\n };\n TtfReader.prototype.readFixed = function (offset) {\n var integer = this.readInt16(offset);\n var sFraction = this.readInt16(offset + 2);\n var fraction = sFraction / 16384;\n return integer + fraction;\n };\n TtfReader.prototype.readInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return i1 + (i2 << 8) + (i3 << 16) + (i4 << 24);\n };\n TtfReader.prototype.readUInt32 = function (offset) {\n var i1 = this.fontData[offset + 3];\n var i2 = this.fontData[offset + 2];\n var i3 = this.fontData[offset + 1];\n var i4 = this.fontData[offset];\n this.offset += 4;\n return (i1 | i2 << 8 | i3 << 16 | i4 << 24);\n };\n // private readInt16(offset : number) : number {\n // let result : number = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n // this.offset += 2;\n // return result;\n // }\n TtfReader.prototype.readInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) + this.fontData[offset + 1];\n result = result & (1 << 15) ? result - 0x10000 : result;\n this.offset += 2;\n return result;\n };\n TtfReader.prototype.readInt64 = function (offset) {\n var low = this.readInt32(offset + 4);\n var n = this.readInt32(offset) * 4294967296.0 + low;\n if (low < 0) {\n n += 4294967296;\n }\n return n;\n };\n TtfReader.prototype.readUInt16 = function (offset) {\n var result = (this.fontData[offset] << 8) | this.fontData[offset + 1];\n this.offset += 2;\n return result;\n };\n /**\n * Reads ushort array.\n */\n TtfReader.prototype.readUshortArray = function (length) {\n var buffer = [];\n for (var i = 0; i < length; i++) {\n buffer[i] = this.readUInt16(this.offset);\n }\n return buffer;\n };\n TtfReader.prototype.readBytes = function (length) {\n var result = [];\n for (var i = 0; i < length; i++) {\n result.push(this.fontData[this.offset]);\n this.offset += 1;\n }\n return result;\n };\n TtfReader.prototype.readByte = function (offset) {\n var result = this.fontData[offset];\n this.offset += 1;\n return result;\n };\n /**\n * Reads bytes to array in BigEndian order.\n * @private\n */\n TtfReader.prototype.read = function (buffer, index, count) {\n if (buffer === null) {\n throw new Error('Argument Null Exception : buffer');\n }\n var written = 0;\n var read = 0;\n do {\n for (var i = 0; (i < count - written) && (this.offset + i < this.fontData.length); i++) {\n buffer[index + i] = this.fontData[this.offset + i];\n }\n read = count - written;\n this.offset += read;\n written += read;\n } while (written < count);\n return { buffer: buffer, written: written };\n };\n return TtfReader;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `Metrics` of the font.\n * @private\n */\nvar PdfFontMetrics = /** @__PURE__ @class */ (function () {\n function PdfFontMetrics() {\n /**\n * `Line gap`.\n * @private\n */\n this.lineGap = 0;\n }\n // Public methods\n /**\n * Returns `ascent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getAscent = function (format) {\n var returnValue = this.ascent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `descent` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getDescent = function (format) {\n var returnValue = this.descent * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `Line gap` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getLineGap = function (format) {\n var returnValue = this.lineGap * PdfFont.charSizeMultiplier * this.getSize(format);\n return returnValue;\n };\n /**\n * Returns `height` taking into consideration font`s size.\n * @private\n */\n PdfFontMetrics.prototype.getHeight = function (format) {\n var height;\n var clearTypeFonts = ['cambria', 'candara', 'constantia', 'corbel', 'cariadings'];\n var clearTypeFontCollection = [];\n for (var index = 0; index < clearTypeFonts.length; index++) {\n var font = clearTypeFonts[index];\n clearTypeFontCollection.push(font);\n }\n if (this.getDescent(format) < 0) {\n // if ((clearTypeFontCollection.indexOf(this.name.toLowerCase()) !== -1) && !this.isUnicodeFont) {\n // height = (this.GetAscent(format) - this.GetDescent(format) - this.GetLineGap(format));\n // } else {\n height = (this.getAscent(format) - this.getDescent(format) + this.getLineGap(format));\n // }\n }\n else {\n height = (this.getAscent(format) + this.getDescent(format) + this.getLineGap(format));\n }\n return height;\n };\n /**\n * Calculates `size` of the font depending on the subscript/superscript value.\n * @private\n */\n PdfFontMetrics.prototype.getSize = function (format) {\n var size = this.size;\n if (format != null) {\n switch (format.subSuperScript) {\n case PdfSubSuperScript.SubScript:\n size /= this.subScriptSizeFactor;\n break;\n case PdfSubSuperScript.SuperScript:\n size /= this.superscriptSizeFactor;\n break;\n }\n }\n return size;\n };\n /**\n * `Clones` the metrics.\n * @private\n */\n PdfFontMetrics.prototype.clone = function () {\n var metrics = this;\n metrics.widthTable = WidthTable.clone();\n return metrics;\n };\n Object.defineProperty(PdfFontMetrics.prototype, \"widthTable\", {\n // Properies\n /**\n * Gets or sets the `width table`.\n * @private\n */\n get: function () {\n return this.internalWidthTable;\n },\n set: function (value) {\n this.internalWidthTable = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFontMetrics;\n}());\nvar WidthTable = /** @__PURE__ @class */ (function () {\n function WidthTable() {\n }\n /**\n * Static `clones` this instance of the WidthTable class.\n * @private\n */\n WidthTable.clone = function () {\n return null;\n };\n return WidthTable;\n}());\nvar StandardWidthTable = /** @__PURE__ @class */ (function (_super) {\n __extends$12(StandardWidthTable, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StandardWidthTable` class.\n * @private\n */\n function StandardWidthTable(widths) {\n var _this = _super.call(this) || this;\n if (widths == null) {\n throw new Error('ArgumentNullException:widths');\n }\n _this.widths = widths;\n return _this;\n }\n //Properties\n /**\n * Gets the `32 bit number` at the specified index.\n * @private\n */\n StandardWidthTable.prototype.items = function (index) {\n if (index < 0 || index >= this.widths.length) {\n throw new Error('ArgumentOutOfRangeException:index, The character is not supported by the font.');\n }\n var result = this.widths[index];\n return result;\n };\n Object.defineProperty(StandardWidthTable.prototype, \"length\", {\n /**\n * Gets the `length` of the internal array.\n * @private\n */\n get: function () {\n return this.widths.length;\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * `Clones` this instance of the WidthTable class.\n * @private\n */\n StandardWidthTable.prototype.clone = function () {\n var swt = this;\n swt.widths = this.widths;\n return swt;\n };\n /**\n * Converts width table to a `PDF array`.\n * @private\n */\n StandardWidthTable.prototype.toArray = function () {\n var arr = new PdfArray(this.widths);\n return arr;\n };\n return StandardWidthTable;\n}(WidthTable));\n\n/**\n * TrueTypeFont.ts class for EJ2-PDF\n */\nvar UnicodeTrueTypeFont = /** @__PURE__ @class */ (function () {\n /* tslint:enable */\n //Constructors\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n function UnicodeTrueTypeFont(base64String, size) {\n // Fields\n this.nameString = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Indicates whether the font program is compressed or not.\n * @private\n */\n this.isCompress = false;\n /**\n * Indicates whether the font is embedded or not.\n */\n this.isEmbedFont = false;\n /**\n * Cmap table's start prefix.\n */\n /* tslint:disable */\n this.cmapPrefix = '/CIDInit /ProcSet findresource begin\\n12 dict begin\\nbegincmap' + Operators.newLine + '/CIDSystemInfo << /Registry (Adobe)/Ordering (UCS)/Supplement 0>> def\\n/CMapName ' + '/Adobe-Identity-UCS def\\n/CMapType 2 def\\n1 begincodespacerange' + Operators.newLine;\n /* tslint:enable */\n /**\n * Cmap table's start suffix.\n */\n this.cmapEndCodespaceRange = 'endcodespacerange' + Operators.newLine;\n /**\n * Cmap's begin range marker.\n */\n this.cmapBeginRange = 'beginbfrange' + Operators.newLine;\n /**\n * Cmap's end range marker.\n */\n this.cmapEndRange = 'endbfrange' + Operators.newLine;\n /**\n * Cmap table's end\n */\n /* tslint:disable */\n this.cmapSuffix = 'endbfrange\\nendcmap\\nCMapName currentdict ' + '/CMap defineresource pop\\nend end' + Operators.newLine;\n if (base64String === null || base64String === undefined) {\n throw new Error('ArgumentNullException:base64String');\n }\n this.fontSize = size;\n this.fontString = base64String;\n this.Initialize();\n }\n //Implementation\n /**\n * Returns width of the char symbol.\n */\n UnicodeTrueTypeFont.prototype.getCharWidth = function (charCode) {\n var codeWidth = this.ttfReader.getCharWidth(charCode);\n return codeWidth;\n };\n /**\n * Returns width of the text line.\n */\n UnicodeTrueTypeFont.prototype.getLineWidth = function (line) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n var width = 0;\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidth(ch);\n width += charWidth;\n }\n return width;\n };\n /**\n * Initializes a new instance of the `PdfTrueTypeFont` class.\n * @private\n */\n UnicodeTrueTypeFont.prototype.Initialize = function () {\n var byteArray = new ByteArray(this.fontString.length);\n byteArray.writeFromBase64String(this.fontString);\n this.fontData = byteArray.internalBuffer;\n this.ttfReader = new TtfReader(this.fontData);\n this.ttfMetrics = this.ttfReader.metrics;\n };\n UnicodeTrueTypeFont.prototype.createInternals = function () {\n this.fontDictionary = new PdfDictionary();\n this.fontProgram = new PdfStream();\n this.cmap = new PdfStream();\n this.descendantFont = new PdfDictionary();\n this.metrics = new PdfFontMetrics();\n this.ttfReader.createInternals();\n this.ttfMetrics = this.ttfReader.metrics;\n this.initializeMetrics();\n // Create all the dictionaries of the font.\n this.subsetName = this.getFontName();\n this.createDescendantFont();\n this.createCmap();\n this.createFontDictionary();\n this.createFontProgram();\n };\n UnicodeTrueTypeFont.prototype.getInternals = function () {\n return this.fontDictionary;\n };\n /**\n * Initializes metrics.\n */\n UnicodeTrueTypeFont.prototype.initializeMetrics = function () {\n var ttfMetrics = this.ttfReader.metrics;\n this.metrics.ascent = ttfMetrics.macAscent;\n this.metrics.descent = ttfMetrics.macDescent;\n this.metrics.height = ttfMetrics.macAscent - ttfMetrics.macDescent + ttfMetrics.lineGap;\n this.metrics.name = ttfMetrics.fontFamily;\n this.metrics.postScriptName = ttfMetrics.postScriptName;\n this.metrics.size = this.fontSize;\n this.metrics.widthTable = new StandardWidthTable(ttfMetrics.widthTable);\n this.metrics.lineGap = ttfMetrics.lineGap;\n this.metrics.subScriptSizeFactor = ttfMetrics.subScriptSizeFactor;\n this.metrics.superscriptSizeFactor = ttfMetrics.superscriptSizeFactor;\n this.metrics.isBold = ttfMetrics.isBold;\n };\n /**\n * Gets random string.\n */\n UnicodeTrueTypeFont.prototype.getFontName = function () {\n var builder = '';\n var name;\n // if (this.isEmbed === false) {\n for (var i = 0; i < 6; i++) {\n var index = Math.floor(Math.random() * (25 - 0 + 1)) + 0;\n builder += this.nameString[index];\n }\n builder += '+';\n // }\n builder += this.ttfReader.metrics.postScriptName;\n name = builder.toString();\n // if (name === '') {\n // name = this.ttfReader.metrics.fontFamily;\n // }\n name = this.formatName(name);\n return name;\n };\n /**\n * Generates name of the font.\n */\n UnicodeTrueTypeFont.prototype.formatName = function (fontName) {\n // if (fontName === null) {\n // throw new Error('ArgumentNullException : fontName');\n // }\n // if (fontName === '') {\n // throw new Error('ArgumentOutOfRangeException : fontName, Parameter can not be empty');\n // }\n var ret = fontName.replace('(', '#28');\n ret = ret.replace(')', '#29');\n ret = ret.replace('[', '#5B');\n ret = ret.replace(']', '#5D');\n ret = ret.replace('<', '#3C');\n ret = ret.replace('>', '#3E');\n ret = ret.replace('{', '#7B');\n ret = ret.replace('}', '#7D');\n ret = ret.replace('/', '#2F');\n ret = ret.replace('%', '#25');\n return ret.replace(' ', '#20');\n };\n /**\n * Creates descendant font.\n */\n UnicodeTrueTypeFont.prototype.createDescendantFont = function () {\n // Set property used to clone Font every time\n this.descendantFont.isFont = true;\n this.descendantFont.descendantFontBeginSave = new SaveDescendantFontEventHandler(this);\n this.descendantFont.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.descendantFont.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.cIDFontType2));\n this.descendantFont.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDToGIDMap, new PdfName(this.dictionaryProperties.identity));\n this.descendantFont.items.setValue(this.dictionaryProperties.dw, new PdfNumber(1000));\n this.fontDescriptor = this.createFontDescriptor();\n this.descendantFont.items.setValue(this.dictionaryProperties.fontDescriptor, new PdfReferenceHolder(this.fontDescriptor));\n var systemInfo = this.createSystemInfo();\n this.descendantFont.items.setValue(this.dictionaryProperties.cIDSystemInfo, systemInfo);\n };\n /**\n * Creates font descriptor.\n */\n UnicodeTrueTypeFont.prototype.createFontDescriptor = function () {\n var descriptor = new PdfDictionary();\n var metrics = this.ttfReader.metrics;\n // Set property used to clone Font every time\n descriptor.isFont = true;\n descriptor.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.fontDescriptor));\n descriptor.items.setValue(this.dictionaryProperties.fontName, new PdfName(this.subsetName));\n descriptor.items.setValue(this.dictionaryProperties.flags, new PdfNumber(this.getDescriptorFlags()));\n descriptor.items.setValue(this.dictionaryProperties.fontBBox, PdfArray.fromRectangle(this.getBoundBox()));\n descriptor.items.setValue(this.dictionaryProperties.missingWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.stemV, new PdfNumber(metrics.stemV));\n descriptor.items.setValue(this.dictionaryProperties.italicAngle, new PdfNumber(metrics.italicAngle));\n descriptor.items.setValue(this.dictionaryProperties.capHeight, new PdfNumber(metrics.capHeight));\n descriptor.items.setValue(this.dictionaryProperties.ascent, new PdfNumber(metrics.winAscent));\n descriptor.items.setValue(this.dictionaryProperties.descent, new PdfNumber(metrics.winDescent));\n descriptor.items.setValue(this.dictionaryProperties.leading, new PdfNumber(metrics.leading));\n descriptor.items.setValue(this.dictionaryProperties.avgWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.fontFile2, new PdfReferenceHolder(this.fontProgram));\n descriptor.items.setValue(this.dictionaryProperties.maxWidth, new PdfNumber(metrics.widthTable[32]));\n descriptor.items.setValue(this.dictionaryProperties.xHeight, new PdfNumber(0));\n descriptor.items.setValue(this.dictionaryProperties.stemH, new PdfNumber(0));\n return descriptor;\n };\n /**\n * Generates cmap.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createCmap = function () {\n this.cmap.cmapBeginSave = new SaveCmapEventHandler(this);\n };\n /**\n * Generates font dictionary.\n */\n UnicodeTrueTypeFont.prototype.createFontDictionary = function () {\n // Set property used to clone Font every time\n this.fontDictionary.isFont = true;\n this.fontDictionary.fontDictionaryBeginSave = new SaveFontDictionaryEventHandler(this);\n this.fontDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n this.fontDictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.subsetName));\n this.fontDictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type0));\n this.fontDictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(this.dictionaryProperties.identityH));\n var descFonts = new PdfArray();\n var reference = new PdfReferenceHolder(this.descendantFont);\n // Set property used to clone Font every time\n descFonts.isFont = true;\n descFonts.add(reference);\n this.fontDictionary.items.setValue(this.dictionaryProperties.descendantFonts, descFonts);\n };\n /**\n * Creates font program.\n */\n UnicodeTrueTypeFont.prototype.createFontProgram = function () {\n this.fontProgram.fontProgramBeginSave = new SaveFontProgramEventHandler(this);\n };\n /**\n * Creates system info dictionary for CID font.\n * @private\n */\n UnicodeTrueTypeFont.prototype.createSystemInfo = function () {\n var systemInfo = new PdfDictionary();\n systemInfo.items.setValue(this.dictionaryProperties.registry, new PdfString('Adobe'));\n systemInfo.items.setValue(this.dictionaryProperties.ordering, new PdfString(this.dictionaryProperties.identity));\n systemInfo.items.setValue(this.dictionaryProperties.supplement, new PdfNumber(0));\n return systemInfo;\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.descendantFontBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var width = this.getDescendantWidth();\n if (width !== null) {\n this.descendantFont.items.setValue(this.dictionaryProperties.w, width);\n }\n }\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n UnicodeTrueTypeFont.prototype.cmapBeginSave = function () {\n this.generateCmap();\n };\n /**\n * Runs before font Dictionary will be saved.\n */\n /* tslint:disable */\n UnicodeTrueTypeFont.prototype.fontDictionaryBeginSave = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0 && !this.fontDictionary.containsKey(this.dictionaryProperties.toUnicode)) {\n this.fontDictionary.items.setValue(this.dictionaryProperties.toUnicode, new PdfReferenceHolder(this.cmap));\n }\n };\n /* tslint:enable */\n /**\n * Runs before font program stream save.\n */\n UnicodeTrueTypeFont.prototype.fontProgramBeginSave = function () {\n this.isCompress = true;\n this.generateFontProgram();\n };\n /**\n * Gets width description pad array for c i d font.\n */\n UnicodeTrueTypeFont.prototype.getDescendantWidth = function () {\n var array = new PdfArray();\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphInfo = [];\n // if (!this.isEmbedFont) {\n var keys = this.usedChars.keys();\n for (var i = 0; i < keys.length; i++) {\n var chLen = keys[i];\n var glyph = this.ttfReader.getGlyph(chLen);\n if (glyph.empty) {\n continue;\n }\n glyphInfo.push(glyph);\n }\n // } else {\n // glyphInfo = this.ttfReader.getAllGlyphs();\n // }\n glyphInfo.sort(function (a, b) { return a.index - b.index; });\n var firstGlyphIndex = 0;\n var lastGlyphIndex = 0;\n var firstGlyphIndexWasSet = false;\n var widthDetails = new PdfArray();\n // if (!this.isEmbedFont) {\n for (var i = 0; i < glyphInfo.length; i++) {\n var glyph = glyphInfo[i];\n if (!firstGlyphIndexWasSet) {\n firstGlyphIndexWasSet = true;\n firstGlyphIndex = glyph.index;\n lastGlyphIndex = glyph.index - 1;\n }\n if ((lastGlyphIndex + 1 !== glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // Add glyph index / width.\n array.add(new PdfNumber(firstGlyphIndex));\n if (i !== 0) {\n array.add(widthDetails);\n }\n firstGlyphIndex = glyph.index;\n widthDetails = new PdfArray();\n }\n widthDetails.add(new PdfNumber(glyph.width));\n if (i + 1 === glyphInfo.length) {\n array.add(new PdfNumber(firstGlyphIndex));\n array.add(widthDetails);\n }\n lastGlyphIndex = glyph.index;\n }\n // } else {\n // for (let i : number = 0; i < glyphInfo.length; i++) {\n // let glyph : TtfGlyphInfo = glyphInfo[i];\n // if (!firstGlyphIndexWasSet) {\n // firstGlyphIndexWasSet = true;\n // lastGlyphIndex = glyph.index - 1;\n // }\n // firstGlyphIndex = glyph.index;\n // if ((lastGlyphIndex + 1 === glyph.index || (i + 1 === glyphInfo.length)) && glyphInfo.length > 1) {\n // // Add glyph index / width.\n // widthDetails.add(new PdfNumber(glyph.width));\n // array.add(new PdfNumber(firstGlyphIndex));\n // array.add(widthDetails);\n // widthDetails = new PdfArray();\n // }\n // lastGlyphIndex = glyph.index;\n // }\n // }\n }\n return array;\n };\n /**\n * Creates cmap.\n */\n UnicodeTrueTypeFont.prototype.generateCmap = function () {\n if (this.usedChars !== null && this.usedChars !== undefined && this.usedChars.size() > 0) {\n var glyphChars = this.ttfReader.getGlyphChars(this.usedChars);\n if (glyphChars.size() > 0) {\n var keys = glyphChars.keys().sort();\n // add first and last glyph indexes\n var first = keys[0];\n var last = keys[keys.length - 1];\n var middlePart = this.toHexString(first, false) + this.toHexString(last, false) + Operators.newLine;\n var builder = '';\n builder += this.cmapPrefix;\n builder += middlePart;\n builder += this.cmapEndCodespaceRange;\n var nextRange = 0;\n for (var i = 0; i < keys.length; i++) {\n if (nextRange === 0) {\n if (i !== 0) {\n builder += this.cmapEndRange;\n }\n nextRange = Math.min(100, keys.length - i);\n builder += nextRange;\n builder += Operators.whiteSpace;\n builder += this.cmapBeginRange;\n }\n nextRange -= 1;\n var key = keys[i];\n /* tslint:disable */\n builder += this.toHexString(key, true) + this.toHexString(key, true) + this.toHexString(glyphChars.getValue(key), true) + '\\n';\n /* tslint:enable */\n }\n builder += this.cmapSuffix;\n this.cmap.clearStream();\n this.cmap.isFont = true;\n this.cmap.write(builder);\n }\n }\n };\n /**\n * Generates font program.\n */\n UnicodeTrueTypeFont.prototype.generateFontProgram = function () {\n var fontProgram = null;\n this.usedChars = (this.usedChars === null || this.usedChars === undefined) ? new Dictionary() : this.usedChars;\n this.ttfReader.setOffset(0);\n fontProgram = this.ttfReader.readFontProgram(this.usedChars);\n this.fontProgram.clearStream();\n this.fontProgram.isFont = true;\n this.fontProgram.writeBytes(fontProgram);\n };\n /**\n * Calculates flags for the font descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getDescriptorFlags = function () {\n var flags = 0;\n var metrics = this.ttfReader.metrics;\n if (metrics.isFixedPitch) {\n flags |= FontDescriptorFlags.FixedPitch;\n }\n if (metrics.isSymbol) {\n flags |= FontDescriptorFlags.Symbolic;\n }\n else {\n flags |= FontDescriptorFlags.Nonsymbolic;\n }\n if (metrics.isItalic) {\n flags |= FontDescriptorFlags.Italic;\n }\n if (metrics.isBold) {\n flags |= FontDescriptorFlags.ForceBold;\n }\n return flags;\n };\n /**\n * Calculates BoundBox of the descriptor.\n * @private\n */\n UnicodeTrueTypeFont.prototype.getBoundBox = function () {\n var rect = this.ttfReader.metrics.fontBox;\n var width = Math.abs(rect.right - rect.left);\n var height = Math.abs(rect.top - rect.bottom);\n var rectangle = new RectangleF(rect.left, rect.bottom, width, height);\n return rectangle;\n };\n /**\n * Converts integer of decimal system to hex integer.\n */\n UnicodeTrueTypeFont.prototype.toHexString = function (n, isCaseChange) {\n var s = n.toString(16);\n if (isCaseChange) {\n s = s.toUpperCase();\n }\n return '<0000'.substring(0, 5 - s.length) + s + '>';\n };\n /**\n * Stores used symbols.\n */\n UnicodeTrueTypeFont.prototype.setSymbols = function (text) {\n if (text === null) {\n throw new Error('Argument Null Exception : text');\n }\n if (this.usedChars === null || this.usedChars === undefined) {\n this.usedChars = new Dictionary();\n }\n for (var i = 0; i < text.length; i++) {\n var ch = text[i];\n this.usedChars.setValue(ch, String.fromCharCode(0));\n }\n // else {\n // if (text === null) {\n // throw new Error('Argument Null Exception : glyphs');\n // }\n // if (this.usedChars === null || this.usedChars === undefined) {\n // this.usedChars = new Dictionary();\n // }\n // for (let i : number = 0; i < text.length; i++) {\n // let glyphIndex : number = text[i];\n // let glyph : TtfGlyphInfo = this.ttfReader.getGlyph(glyphIndex);\n // if (!glyph == null) {\n // let c : string = glyph.charCode.toLocaleString();\n // this.usedChars.setValue(c, String.fromCharCode(0));\n // }\n // }\n // }\n if (this.isEmbedFont === false) {\n this.getDescendantWidth();\n }\n };\n return UnicodeTrueTypeFont;\n}());\n\n/**\n * ArabicShapeRenderer.ts class for EJ2-PDF\n */\nvar ArabicShapeRenderer = /** @__PURE__ @class */ (function () {\n //#endregion\n //#region Constructor\n function ArabicShapeRenderer() {\n //#region Constants\n this.arabicCharTable = [['\\u0621', '\\uFE80'], ['\\u0622', '\\uFE81', '\\uFE82'],\n ['\\u0623', '\\uFE83', '\\uFE84'],\n ['\\u0624', '\\uFE85', '\\uFE86'],\n ['\\u0625', '\\uFE87', '\\uFE88'],\n ['\\u0626', '\\uFE89', '\\uFE8A', '\\uFE8B', '\\uFE8C'],\n ['\\u0627', '\\uFE8D', '\\uFE8E'],\n ['\\u0628', '\\uFE8F', '\\uFE90', '\\uFE91', '\\uFE92'],\n ['\\u0629', '\\uFE93', '\\uFE94'],\n ['\\u062A', '\\uFE95', '\\uFE96', '\\uFE97', '\\uFE98'],\n ['\\u062B', '\\uFE99', '\\uFE9A', '\\uFE9B', '\\uFE9C'],\n ['\\u062C', '\\uFE9D', '\\uFE9E', '\\uFE9F', '\\uFEA0'],\n ['\\u062D', '\\uFEA1', '\\uFEA2', '\\uFEA3', '\\uFEA4'],\n ['\\u062E', '\\uFEA5', '\\uFEA6', '\\uFEA7', '\\uFEA8'],\n ['\\u062F', '\\uFEA9', '\\uFEAA'],\n ['\\u0630', '\\uFEAB', '\\uFEAC'],\n ['\\u0631', '\\uFEAD', '\\uFEAE'],\n ['\\u0632', '\\uFEAF', '\\uFEB0'],\n ['\\u0633', '\\uFEB1', '\\uFEB2', '\\uFEB3', '\\uFEB4'],\n ['\\u0634', '\\uFEB5', '\\uFEB6', '\\uFEB7', '\\uFEB8'],\n ['\\u0635', '\\uFEB9', '\\uFEBA', '\\uFEBB', '\\uFEBC'],\n ['\\u0636', '\\uFEBD', '\\uFEBE', '\\uFEBF', '\\uFEC0'],\n ['\\u0637', '\\uFEC1', '\\uFEC2', '\\uFEC3', '\\uFEC4'],\n ['\\u0638', '\\uFEC5', '\\uFEC6', '\\uFEC7', '\\uFEC8'],\n ['\\u0639', '\\uFEC9', '\\uFECA', '\\uFECB', '\\uFECC'],\n ['\\u063A', '\\uFECD', '\\uFECE', '\\uFECF', '\\uFED0'],\n ['\\u0640', '\\u0640', '\\u0640', '\\u0640', '\\u0640'],\n ['\\u0641', '\\uFED1', '\\uFED2', '\\uFED3', '\\uFED4'],\n ['\\u0642', '\\uFED5', '\\uFED6', '\\uFED7', '\\uFED8'],\n ['\\u0643', '\\uFED9', '\\uFEDA', '\\uFEDB', '\\uFEDC'],\n ['\\u0644', '\\uFEDD', '\\uFEDE', '\\uFEDF', '\\uFEE0'],\n ['\\u0645', '\\uFEE1', '\\uFEE2', '\\uFEE3', '\\uFEE4'],\n ['\\u0646', '\\uFEE5', '\\uFEE6', '\\uFEE7', '\\uFEE8'],\n ['\\u0647', '\\uFEE9', '\\uFEEA', '\\uFEEB', '\\uFEEC'],\n ['\\u0648', '\\uFEED', '\\uFEEE'],\n ['\\u0649', '\\uFEEF', '\\uFEF0', '\\uFBE8', '\\uFBE9'],\n ['\\u064A', '\\uFEF1', '\\uFEF2', '\\uFEF3', '\\uFEF4'],\n ['\\u0671', '\\uFB50', '\\uFB51'],\n ['\\u0679', '\\uFB66', '\\uFB67', '\\uFB68', '\\uFB69'],\n ['\\u067A', '\\uFB5E', '\\uFB5F', '\\uFB60', '\\uFB61'],\n ['\\u067B', '\\uFB52', '\\uFB53', '\\uFB54', '\\uFB55'],\n ['\\u067E', '\\uFB56', '\\uFB57', '\\uFB58', '\\uFB59'],\n ['\\u067F', '\\uFB62', '\\uFB63', '\\uFB64', '\\uFB65'],\n ['\\u0680', '\\uFB5A', '\\uFB5B', '\\uFB5C', '\\uFB5D'],\n ['\\u0683', '\\uFB76', '\\uFB77', '\\uFB78', '\\uFB79'],\n ['\\u0684', '\\uFB72', '\\uFB73', '\\uFB74', '\\uFB75'],\n ['\\u0686', '\\uFB7A', '\\uFB7B', '\\uFB7C', '\\uFB7D'],\n ['\\u0687', '\\uFB7E', '\\uFB7F', '\\uFB80', '\\uFB81'],\n ['\\u0688', '\\uFB88', '\\uFB89'],\n ['\\u068C', '\\uFB84', '\\uFB85'],\n ['\\u068D', '\\uFB82', '\\uFB83'],\n ['\\u068E', '\\uFB86', '\\uFB87'],\n ['\\u0691', '\\uFB8C', '\\uFB8D'],\n ['\\u0698', '\\uFB8A', '\\uFB8B'],\n ['\\u06A4', '\\uFB6A', '\\uFB6B', '\\uFB6C', '\\uFB6D'],\n ['\\u06A6', '\\uFB6E', '\\uFB6F', '\\uFB70', '\\uFB71'],\n ['\\u06A9', '\\uFB8E', '\\uFB8F', '\\uFB90', '\\uFB91'],\n ['\\u06AD', '\\uFBD3', '\\uFBD4', '\\uFBD5', '\\uFBD6'],\n ['\\u06AF', '\\uFB92', '\\uFB93', '\\uFB94', '\\uFB95'],\n ['\\u06B1', '\\uFB9A', '\\uFB9B', '\\uFB9C', '\\uFB9D'],\n ['\\u06B3', '\\uFB96', '\\uFB97', '\\uFB98', '\\uFB99'],\n ['\\u06BA', '\\uFB9E', '\\uFB9F'],\n ['\\u06BB', '\\uFBA0', '\\uFBA1', '\\uFBA2', '\\uFBA3'],\n ['\\u06BE', '\\uFBAA', '\\uFBAB', '\\uFBAC', '\\uFBAD'],\n ['\\u06C0', '\\uFBA4', '\\uFBA5'],\n ['\\u06C1', '\\uFBA6', '\\uFBA7', '\\uFBA8', '\\uFBA9'],\n ['\\u06C5', '\\uFBE0', '\\uFBE1'],\n ['\\u06C6', '\\uFBD9', '\\uFBDA'],\n ['\\u06C7', '\\uFBD7', '\\uFBD8'],\n ['\\u06C8', '\\uFBDB', '\\uFBDC'],\n ['\\u06C9', '\\uFBE2', '\\uFBE3'],\n ['\\u06CB', '\\uFBDE', '\\uFBDF'],\n ['\\u06CC', '\\uFBFC', '\\uFBFD', '\\uFBFE', '\\uFBFF'],\n ['\\u06D0', '\\uFBE4', '\\uFBE5', '\\uFBE6', '\\uFBE7'],\n ['\\u06D2', '\\uFBAE', '\\uFBAF'],\n ['\\u06D3', '\\uFBB0', '\\uFBB1']\n ];\n this.alef = '\\u0627';\n this.alefHamza = '\\u0623';\n this.alefHamzaBelow = '\\u0625';\n this.alefMadda = '\\u0622';\n this.lam = '\\u0644';\n this.hamza = '\\u0621';\n this.zeroWidthJoiner = '\\u200D';\n this.hamzaAbove = '\\u0654';\n this.hamzaBelow = '\\u0655';\n this.wawHamza = '\\u0624';\n this.yehHamza = '\\u0626';\n this.waw = '\\u0648';\n this.alefMaksura = '\\u0649';\n this.yeh = '\\u064A';\n this.farsiYeh = '\\u06CC';\n this.shadda = '\\u0651';\n this.madda = '\\u0653';\n this.lwa = '\\uFEFB';\n this.lwawh = '\\uFEF7';\n this.lwawhb = '\\uFEF9';\n this.lwawm = '\\uFEF5';\n this.bwhb = '\\u06D3';\n this.fathatan = '\\u064B';\n this.superScriptalef = '\\u0670';\n this.vowel = 0x1;\n // #endregion\n //#region Fields\n this.arabicMapTable = new Dictionary();\n for (var i = 0; i < this.arabicCharTable.length; i++) {\n this.arabicMapTable.setValue(this.arabicCharTable[i][0], this.arabicCharTable[i]);\n }\n }\n //#endregion\n //#region implementation\n ArabicShapeRenderer.prototype.getCharacterShape = function (input, index) {\n if ((input >= this.hamza) && (input <= this.bwhb)) {\n var value = [];\n if (this.arabicMapTable.getValue(input)) {\n value = this.arabicMapTable.getValue(input);\n return value[index + 1];\n }\n }\n else if (input >= this.lwawm && input <= this.lwa) {\n return (input);\n }\n return input;\n };\n ArabicShapeRenderer.prototype.shape = function (text, level) {\n var builder = '';\n var str2 = '';\n for (var i = 0; i < text.length; i++) {\n var c = text[i];\n if (c >= '؀' && c <= 'ۿ') {\n //if(c>= 0x0600.toString() && c<= 0x06FF.toString()) {\n str2 = str2 + c;\n }\n else {\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n str2 = '';\n }\n builder = builder + c;\n }\n }\n if (str2.length > 0) {\n var st = this.doShape(str2.toString(), 0);\n builder = builder + st;\n }\n return builder.toString();\n };\n ArabicShapeRenderer.prototype.doShape = function (input, level) {\n var str = '';\n var ligature = 0;\n var len = 0;\n var i = 0;\n var next = '';\n var previous = new ArabicShape();\n var present = new ArabicShape();\n while (i < input.length) {\n next = input[i++];\n ligature = this.ligature(next, present);\n if (ligature === 0) {\n var shapeCount = this.getShapeCount(next);\n len = (shapeCount === 1) ? 0 : 2;\n if (previous.Shapes > 2) {\n len += 1;\n }\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n previous = present;\n present = new ArabicShape();\n present.Value = next;\n present.Shapes = shapeCount;\n present.Ligature++;\n }\n }\n len = (previous.Shapes > 2) ? 1 : 0;\n len = len % (present.Shapes);\n present.Value = this.getCharacterShape(present.Value, len);\n str = this.append(str, previous, level);\n str = this.append(str, present, level);\n return str.toString();\n };\n ArabicShapeRenderer.prototype.append = function (builder, shape, level) {\n if (shape.Value !== '') {\n builder = builder + shape.Value;\n shape.Ligature -= 1;\n if (shape.Type !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.Type;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n if (shape.vowel !== '') {\n if ((level & this.vowel) === 0) {\n builder = builder + shape.vowel;\n shape.Ligature -= 1;\n }\n else {\n shape.Ligature -= 1;\n }\n }\n }\n return builder;\n };\n ArabicShapeRenderer.prototype.ligature = function (value, shape) {\n if (shape.Value !== '') {\n var result = 0;\n if ((value >= this.fathatan && value <= this.hamzaBelow) || value === this.superScriptalef) {\n result = 1;\n if ((shape.vowel !== '') && (value !== this.shadda)) {\n result = 2;\n }\n if (value === this.shadda) {\n if (shape.Type == null) {\n shape.Type = this.shadda;\n }\n else {\n return 0;\n }\n }\n else if (value === this.hamzaBelow) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamzaBelow;\n result = 2;\n }\n else if (value === this.lwa) {\n shape.Value = this.lwawhb;\n result = 2;\n }\n else {\n shape.Type = this.hamzaBelow;\n }\n }\n else if (value === this.hamzaAbove) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefHamza;\n result = 2;\n }\n else if (shape.Value === this.lwa) {\n shape.Value = this.lwawh;\n result = 2;\n }\n else if (shape.Value === this.waw) {\n shape.Value = this.wawHamza;\n result = 2;\n }\n else if (shape.Value === this.yeh || shape.Value === this.alefMaksura || shape.Value === this.farsiYeh) {\n shape.Value = this.yehHamza;\n result = 2;\n }\n else {\n shape.Type = this.hamzaAbove;\n }\n }\n else if (value === this.madda) {\n if (shape.Value === this.alef) {\n shape.Value = this.alefMadda;\n result = 2;\n }\n }\n else {\n shape.vowel = value;\n }\n if (result === 1) {\n shape.Ligature++;\n }\n return result;\n }\n if (shape.vowel !== '') {\n return 0;\n }\n if (shape.Value === this.lam) {\n if (value === this.alef) {\n shape.Value = this.lwa;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamza) {\n shape.Value = this.lwawh;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefHamzaBelow) {\n shape.Value = this.lwawhb;\n shape.Shapes = 2;\n result = 3;\n }\n else if (value === this.alefMadda) {\n shape.Value = this.lwawm;\n shape.Shapes = 2;\n result = 3;\n }\n }\n // else if (shape.Value === '') {\n // shape.Value = value;\n // shape.Shapes = this.getShapeCount(value);\n // result = 1;\n // }\n return result;\n }\n else {\n return 0;\n }\n };\n ArabicShapeRenderer.prototype.getShapeCount = function (shape) {\n if ((shape >= this.hamza) && (shape <= this.bwhb) && !((shape >= this.fathatan && shape <= this.hamzaBelow)\n || shape === this.superScriptalef)) {\n var c = [];\n if (this.arabicMapTable.getValue(shape)) {\n c = this.arabicMapTable.getValue(shape);\n return c.length - 1;\n }\n }\n else if (shape === this.zeroWidthJoiner) {\n return 4;\n }\n return 1;\n };\n return ArabicShapeRenderer;\n}());\n//#endregion\n//#region Internals\nvar ArabicShape = /** @__PURE__ @class */ (function () {\n function ArabicShape() {\n //#region Fields\n this.shapeValue = '';\n this.shapeType = '';\n this.shapeVowel = '';\n this.shapeLigature = 0;\n this.shapeShapes = 1;\n //#endregion\n }\n Object.defineProperty(ArabicShape.prototype, \"Value\", {\n //#endregion\n //#region Properties \n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeValue;\n },\n set: function (value) {\n this.shapeValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Type\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeType;\n },\n set: function (value) {\n this.shapeType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"vowel\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeVowel;\n },\n set: function (value) {\n this.shapeVowel = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Ligature\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeLigature;\n },\n set: function (value) {\n this.shapeLigature = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ArabicShape.prototype, \"Shapes\", {\n /**\n * Gets or sets the values.\n * @private\n */\n get: function () {\n return this.shapeShapes;\n },\n set: function (value) {\n this.shapeShapes = value;\n },\n enumerable: true,\n configurable: true\n });\n return ArabicShape;\n}());\n\n//#endregion\n\n/**\n * Bidi.ts class for EJ2-PDF\n */\n/**\n * `Metrics` of the font.\n * @private\n */\nvar Bidi = /** @__PURE__ @class */ (function () {\n //#endregion\n //#region Constructor\n function Bidi() {\n //#region Fields\n this.indexes = [];\n this.indexLevels = [];\n this.mirroringShapeCharacters = new Dictionary();\n this.update();\n }\n //#endregion\n //#region implementation\n Bidi.prototype.doMirrorShaping = function (text) {\n var result = [];\n for (var i = 0; i < text.length; i++) {\n if (((this.indexLevels[i] & 1) === 1) && this.mirroringShapeCharacters.containsKey(text[i].charCodeAt(0))) {\n result[i] = String.fromCharCode(this.mirroringShapeCharacters.getValue(text[i].charCodeAt(0)));\n }\n else {\n result[i] = text[i].toString();\n }\n }\n var res = '';\n for (var j = 0; j < result.length; j++) {\n res = res + result[j];\n }\n return res;\n };\n Bidi.prototype.getLogicalToVisualString = function (inputText, isRtl) {\n var rtlCharacters = new RtlCharacters();\n this.indexLevels = rtlCharacters.getVisualOrder(inputText, isRtl);\n this.setDefaultIndexLevel();\n this.doOrder(0, this.indexLevels.length - 1);\n var text = this.doMirrorShaping(inputText);\n //let text : string = inputText;\n var resultBuilder = '';\n for (var i = 0; i < this.indexes.length; i++) {\n var index = this.indexes[i];\n resultBuilder += text[index];\n }\n return resultBuilder.toString();\n };\n Bidi.prototype.setDefaultIndexLevel = function () {\n for (var i = 0; i < this.indexLevels.length; i++) {\n this.indexes[i] = i;\n }\n };\n Bidi.prototype.doOrder = function (sIndex, eIndex) {\n var max = this.indexLevels[sIndex];\n var min = max;\n var odd = max;\n var even = max;\n for (var i = sIndex + 1; i <= eIndex; ++i) {\n var data = this.indexLevels[i];\n if (data > max) {\n max = data;\n }\n else if (data < min) {\n min = data;\n }\n odd &= data;\n even |= data;\n }\n if ((even & 1) === 0) {\n return;\n }\n if ((odd & 1) === 1) {\n this.reArrange(sIndex, eIndex + 1);\n return;\n }\n min |= 1;\n while (max >= min) {\n var pstart = sIndex;\n /*tslint:disable:no-constant-condition */\n while (true) {\n while (pstart <= eIndex) {\n if (this.indexLevels[pstart] >= max) {\n break;\n }\n pstart += 1;\n }\n if (pstart > eIndex) {\n break;\n }\n var pend = pstart + 1;\n while (pend <= eIndex) {\n if (this.indexLevels[pend] < max) {\n break;\n }\n pend += 1;\n }\n this.reArrange(pstart, pend);\n pstart = pend + 1;\n }\n max -= 1;\n }\n };\n Bidi.prototype.reArrange = function (i, j) {\n var length = (i + j) / 2;\n --j;\n for (; i < length; ++i, --j) {\n var temp = this.indexes[i];\n this.indexes[i] = this.indexes[j];\n this.indexes[j] = temp;\n }\n };\n Bidi.prototype.update = function () {\n this.mirroringShapeCharacters.setValue(40, 41);\n this.mirroringShapeCharacters.setValue(41, 40);\n this.mirroringShapeCharacters.setValue(60, 62);\n this.mirroringShapeCharacters.setValue(62, 60);\n this.mirroringShapeCharacters.setValue(91, 93);\n this.mirroringShapeCharacters.setValue(93, 91);\n this.mirroringShapeCharacters.setValue(123, 125);\n this.mirroringShapeCharacters.setValue(125, 123);\n this.mirroringShapeCharacters.setValue(171, 187);\n this.mirroringShapeCharacters.setValue(187, 171);\n this.mirroringShapeCharacters.setValue(8249, 8250);\n this.mirroringShapeCharacters.setValue(8250, 8249);\n this.mirroringShapeCharacters.setValue(8261, 8262);\n this.mirroringShapeCharacters.setValue(8262, 8261);\n this.mirroringShapeCharacters.setValue(8317, 8318);\n this.mirroringShapeCharacters.setValue(8318, 8317);\n this.mirroringShapeCharacters.setValue(8333, 8334);\n this.mirroringShapeCharacters.setValue(8334, 8333);\n this.mirroringShapeCharacters.setValue(8712, 8715);\n this.mirroringShapeCharacters.setValue(8713, 8716);\n this.mirroringShapeCharacters.setValue(8714, 8717);\n this.mirroringShapeCharacters.setValue(8715, 8712);\n this.mirroringShapeCharacters.setValue(8716, 8713);\n this.mirroringShapeCharacters.setValue(8717, 8714);\n this.mirroringShapeCharacters.setValue(8725, 10741);\n this.mirroringShapeCharacters.setValue(8764, 8765);\n this.mirroringShapeCharacters.setValue(8765, 8764);\n this.mirroringShapeCharacters.setValue(8771, 8909);\n this.mirroringShapeCharacters.setValue(8786, 8787);\n this.mirroringShapeCharacters.setValue(8787, 8786);\n this.mirroringShapeCharacters.setValue(8788, 8789);\n this.mirroringShapeCharacters.setValue(8789, 8788);\n this.mirroringShapeCharacters.setValue(8804, 8805);\n this.mirroringShapeCharacters.setValue(8805, 8804);\n this.mirroringShapeCharacters.setValue(8806, 8807);\n this.mirroringShapeCharacters.setValue(8807, 8806);\n this.mirroringShapeCharacters.setValue(8808, 8809);\n this.mirroringShapeCharacters.setValue(8809, 8808);\n this.mirroringShapeCharacters.setValue(8810, 8811);\n this.mirroringShapeCharacters.setValue(8811, 8810);\n this.mirroringShapeCharacters.setValue(8814, 8815);\n this.mirroringShapeCharacters.setValue(8815, 8814);\n this.mirroringShapeCharacters.setValue(8816, 8817);\n this.mirroringShapeCharacters.setValue(8817, 8816);\n this.mirroringShapeCharacters.setValue(8818, 8819);\n this.mirroringShapeCharacters.setValue(8819, 8818);\n this.mirroringShapeCharacters.setValue(8820, 8821);\n this.mirroringShapeCharacters.setValue(8821, 8820);\n this.mirroringShapeCharacters.setValue(8822, 8823);\n this.mirroringShapeCharacters.setValue(8823, 8822);\n this.mirroringShapeCharacters.setValue(8824, 8825);\n this.mirroringShapeCharacters.setValue(8825, 8824);\n this.mirroringShapeCharacters.setValue(8826, 8827);\n this.mirroringShapeCharacters.setValue(8827, 8826);\n this.mirroringShapeCharacters.setValue(8828, 8829);\n this.mirroringShapeCharacters.setValue(8829, 8828);\n this.mirroringShapeCharacters.setValue(8830, 8831);\n this.mirroringShapeCharacters.setValue(8831, 8830);\n this.mirroringShapeCharacters.setValue(8832, 8833);\n this.mirroringShapeCharacters.setValue(8833, 8832);\n this.mirroringShapeCharacters.setValue(8834, 8835);\n this.mirroringShapeCharacters.setValue(8835, 8834);\n this.mirroringShapeCharacters.setValue(8836, 8837);\n this.mirroringShapeCharacters.setValue(8837, 8836);\n this.mirroringShapeCharacters.setValue(8838, 8839);\n this.mirroringShapeCharacters.setValue(8839, 8838);\n this.mirroringShapeCharacters.setValue(8840, 8841);\n this.mirroringShapeCharacters.setValue(8841, 8840);\n this.mirroringShapeCharacters.setValue(8842, 8843);\n this.mirroringShapeCharacters.setValue(8843, 8842);\n this.mirroringShapeCharacters.setValue(8847, 8848);\n this.mirroringShapeCharacters.setValue(8848, 8847);\n this.mirroringShapeCharacters.setValue(8849, 8850);\n this.mirroringShapeCharacters.setValue(8850, 8849);\n this.mirroringShapeCharacters.setValue(8856, 10680);\n this.mirroringShapeCharacters.setValue(8866, 8867);\n this.mirroringShapeCharacters.setValue(8867, 8866);\n this.mirroringShapeCharacters.setValue(8870, 10974);\n this.mirroringShapeCharacters.setValue(8872, 10980);\n this.mirroringShapeCharacters.setValue(8873, 10979);\n this.mirroringShapeCharacters.setValue(8875, 10981);\n this.mirroringShapeCharacters.setValue(8880, 8881);\n this.mirroringShapeCharacters.setValue(8881, 8880);\n this.mirroringShapeCharacters.setValue(8882, 8883);\n this.mirroringShapeCharacters.setValue(8883, 8882);\n this.mirroringShapeCharacters.setValue(8884, 8885);\n this.mirroringShapeCharacters.setValue(8885, 8884);\n /*tslint:disable:max-func-body-length */\n this.mirroringShapeCharacters.setValue(8886, 8887);\n this.mirroringShapeCharacters.setValue(8887, 8886);\n this.mirroringShapeCharacters.setValue(8905, 8906);\n this.mirroringShapeCharacters.setValue(8906, 8905);\n this.mirroringShapeCharacters.setValue(8907, 8908);\n this.mirroringShapeCharacters.setValue(8908, 8907);\n this.mirroringShapeCharacters.setValue(8909, 8771);\n this.mirroringShapeCharacters.setValue(8912, 8913);\n this.mirroringShapeCharacters.setValue(8913, 8912);\n this.mirroringShapeCharacters.setValue(8918, 8919);\n this.mirroringShapeCharacters.setValue(8919, 8918);\n this.mirroringShapeCharacters.setValue(8920, 8921);\n this.mirroringShapeCharacters.setValue(8921, 8920);\n this.mirroringShapeCharacters.setValue(8922, 8923);\n this.mirroringShapeCharacters.setValue(8923, 8922);\n this.mirroringShapeCharacters.setValue(8924, 8925);\n this.mirroringShapeCharacters.setValue(8925, 8924);\n this.mirroringShapeCharacters.setValue(8926, 8927);\n this.mirroringShapeCharacters.setValue(8927, 8926);\n this.mirroringShapeCharacters.setValue(8928, 8929);\n this.mirroringShapeCharacters.setValue(8929, 8928);\n this.mirroringShapeCharacters.setValue(8930, 8931);\n this.mirroringShapeCharacters.setValue(8931, 8930);\n this.mirroringShapeCharacters.setValue(8932, 8933);\n this.mirroringShapeCharacters.setValue(8933, 8932);\n this.mirroringShapeCharacters.setValue(8934, 8935);\n this.mirroringShapeCharacters.setValue(8935, 8934);\n this.mirroringShapeCharacters.setValue(8936, 8937);\n this.mirroringShapeCharacters.setValue(8937, 8936);\n this.mirroringShapeCharacters.setValue(8938, 8939);\n this.mirroringShapeCharacters.setValue(8939, 8938);\n this.mirroringShapeCharacters.setValue(8940, 8941);\n this.mirroringShapeCharacters.setValue(8941, 8940);\n this.mirroringShapeCharacters.setValue(8944, 8945);\n this.mirroringShapeCharacters.setValue(8945, 8944);\n this.mirroringShapeCharacters.setValue(8946, 8954);\n this.mirroringShapeCharacters.setValue(8947, 8955);\n this.mirroringShapeCharacters.setValue(8948, 8956);\n this.mirroringShapeCharacters.setValue(8950, 8957);\n this.mirroringShapeCharacters.setValue(8951, 8958);\n this.mirroringShapeCharacters.setValue(8954, 8946);\n this.mirroringShapeCharacters.setValue(8955, 8947);\n this.mirroringShapeCharacters.setValue(8956, 8948);\n this.mirroringShapeCharacters.setValue(8957, 8950);\n this.mirroringShapeCharacters.setValue(8958, 8951);\n this.mirroringShapeCharacters.setValue(8968, 8969);\n this.mirroringShapeCharacters.setValue(8969, 8968);\n this.mirroringShapeCharacters.setValue(8970, 8971);\n this.mirroringShapeCharacters.setValue(8971, 8970);\n this.mirroringShapeCharacters.setValue(9001, 9002);\n this.mirroringShapeCharacters.setValue(9002, 9001);\n this.mirroringShapeCharacters.setValue(10088, 10089);\n this.mirroringShapeCharacters.setValue(10089, 10088);\n this.mirroringShapeCharacters.setValue(10090, 10091);\n this.mirroringShapeCharacters.setValue(10091, 10090);\n this.mirroringShapeCharacters.setValue(10092, 10093);\n this.mirroringShapeCharacters.setValue(10093, 10092);\n this.mirroringShapeCharacters.setValue(10094, 10095);\n this.mirroringShapeCharacters.setValue(10095, 10094);\n this.mirroringShapeCharacters.setValue(10096, 10097);\n this.mirroringShapeCharacters.setValue(10097, 10096);\n this.mirroringShapeCharacters.setValue(10098, 10099);\n this.mirroringShapeCharacters.setValue(10099, 10098);\n this.mirroringShapeCharacters.setValue(10100, 10101);\n this.mirroringShapeCharacters.setValue(10101, 10100);\n this.mirroringShapeCharacters.setValue(10197, 10198);\n this.mirroringShapeCharacters.setValue(10198, 10197);\n this.mirroringShapeCharacters.setValue(10205, 10206);\n this.mirroringShapeCharacters.setValue(10206, 10205);\n this.mirroringShapeCharacters.setValue(10210, 10211);\n this.mirroringShapeCharacters.setValue(10211, 10210);\n this.mirroringShapeCharacters.setValue(10212, 10213);\n this.mirroringShapeCharacters.setValue(10213, 10212);\n this.mirroringShapeCharacters.setValue(10214, 10215);\n this.mirroringShapeCharacters.setValue(10215, 10214);\n this.mirroringShapeCharacters.setValue(10216, 10217);\n this.mirroringShapeCharacters.setValue(10217, 10216);\n this.mirroringShapeCharacters.setValue(10218, 10219);\n this.mirroringShapeCharacters.setValue(10219, 10218);\n this.mirroringShapeCharacters.setValue(10627, 10628);\n this.mirroringShapeCharacters.setValue(10628, 10627);\n this.mirroringShapeCharacters.setValue(10629, 10630);\n this.mirroringShapeCharacters.setValue(10630, 10629);\n this.mirroringShapeCharacters.setValue(10631, 10632);\n this.mirroringShapeCharacters.setValue(10632, 10631);\n this.mirroringShapeCharacters.setValue(10633, 10634);\n this.mirroringShapeCharacters.setValue(10634, 10633);\n this.mirroringShapeCharacters.setValue(10635, 10636);\n this.mirroringShapeCharacters.setValue(10636, 10635);\n this.mirroringShapeCharacters.setValue(10637, 10640);\n this.mirroringShapeCharacters.setValue(10638, 10639);\n this.mirroringShapeCharacters.setValue(10639, 10638);\n this.mirroringShapeCharacters.setValue(10640, 10637);\n this.mirroringShapeCharacters.setValue(10641, 10642);\n this.mirroringShapeCharacters.setValue(10642, 10641);\n this.mirroringShapeCharacters.setValue(10643, 10644);\n this.mirroringShapeCharacters.setValue(10644, 10643);\n this.mirroringShapeCharacters.setValue(10645, 10646);\n this.mirroringShapeCharacters.setValue(10646, 10645);\n this.mirroringShapeCharacters.setValue(10647, 10648);\n this.mirroringShapeCharacters.setValue(10648, 10647);\n this.mirroringShapeCharacters.setValue(10680, 8856);\n this.mirroringShapeCharacters.setValue(10688, 10689);\n this.mirroringShapeCharacters.setValue(10689, 10688);\n this.mirroringShapeCharacters.setValue(10692, 10693);\n this.mirroringShapeCharacters.setValue(10693, 10692);\n this.mirroringShapeCharacters.setValue(10703, 10704);\n this.mirroringShapeCharacters.setValue(10704, 10703);\n this.mirroringShapeCharacters.setValue(10705, 10706);\n this.mirroringShapeCharacters.setValue(10706, 10705);\n this.mirroringShapeCharacters.setValue(10708, 10709);\n this.mirroringShapeCharacters.setValue(10709, 10708);\n this.mirroringShapeCharacters.setValue(10712, 10713);\n this.mirroringShapeCharacters.setValue(10713, 10712);\n this.mirroringShapeCharacters.setValue(10714, 10715);\n this.mirroringShapeCharacters.setValue(10715, 10714);\n this.mirroringShapeCharacters.setValue(10741, 8725);\n this.mirroringShapeCharacters.setValue(10744, 10745);\n this.mirroringShapeCharacters.setValue(10745, 10744);\n this.mirroringShapeCharacters.setValue(10748, 10749);\n this.mirroringShapeCharacters.setValue(10749, 10748);\n this.mirroringShapeCharacters.setValue(10795, 10796);\n this.mirroringShapeCharacters.setValue(10796, 10795);\n this.mirroringShapeCharacters.setValue(10797, 10796);\n this.mirroringShapeCharacters.setValue(10798, 10797);\n this.mirroringShapeCharacters.setValue(10804, 10805);\n this.mirroringShapeCharacters.setValue(10805, 10804);\n this.mirroringShapeCharacters.setValue(10812, 10813);\n this.mirroringShapeCharacters.setValue(10813, 10812);\n this.mirroringShapeCharacters.setValue(10852, 10853);\n this.mirroringShapeCharacters.setValue(10853, 10852);\n this.mirroringShapeCharacters.setValue(10873, 10874);\n this.mirroringShapeCharacters.setValue(10874, 10873);\n this.mirroringShapeCharacters.setValue(10877, 10878);\n this.mirroringShapeCharacters.setValue(10878, 10877);\n this.mirroringShapeCharacters.setValue(10879, 10880);\n this.mirroringShapeCharacters.setValue(10880, 10879);\n this.mirroringShapeCharacters.setValue(10881, 10882);\n this.mirroringShapeCharacters.setValue(10882, 10881);\n this.mirroringShapeCharacters.setValue(10883, 10884);\n this.mirroringShapeCharacters.setValue(10884, 10883);\n this.mirroringShapeCharacters.setValue(10891, 10892);\n this.mirroringShapeCharacters.setValue(10892, 10891);\n this.mirroringShapeCharacters.setValue(10897, 10898);\n this.mirroringShapeCharacters.setValue(10898, 10897);\n this.mirroringShapeCharacters.setValue(10899, 10900);\n this.mirroringShapeCharacters.setValue(10900, 10899);\n this.mirroringShapeCharacters.setValue(10901, 10902);\n this.mirroringShapeCharacters.setValue(10902, 10901);\n this.mirroringShapeCharacters.setValue(10903, 10904);\n this.mirroringShapeCharacters.setValue(10904, 10903);\n this.mirroringShapeCharacters.setValue(10905, 10906);\n this.mirroringShapeCharacters.setValue(10906, 10905);\n this.mirroringShapeCharacters.setValue(10907, 10908);\n this.mirroringShapeCharacters.setValue(10908, 10907);\n this.mirroringShapeCharacters.setValue(10913, 10914);\n this.mirroringShapeCharacters.setValue(10914, 10913);\n this.mirroringShapeCharacters.setValue(10918, 10919);\n this.mirroringShapeCharacters.setValue(10919, 10918);\n this.mirroringShapeCharacters.setValue(10920, 10921);\n this.mirroringShapeCharacters.setValue(10921, 10920);\n this.mirroringShapeCharacters.setValue(10922, 10923);\n this.mirroringShapeCharacters.setValue(10923, 10922);\n this.mirroringShapeCharacters.setValue(10924, 10925);\n this.mirroringShapeCharacters.setValue(10925, 10924);\n this.mirroringShapeCharacters.setValue(10927, 10928);\n this.mirroringShapeCharacters.setValue(10928, 10927);\n this.mirroringShapeCharacters.setValue(10931, 10932);\n this.mirroringShapeCharacters.setValue(10932, 10931);\n this.mirroringShapeCharacters.setValue(10939, 10940);\n this.mirroringShapeCharacters.setValue(10940, 10939);\n this.mirroringShapeCharacters.setValue(10941, 10942);\n this.mirroringShapeCharacters.setValue(10942, 10941);\n this.mirroringShapeCharacters.setValue(10943, 10944);\n this.mirroringShapeCharacters.setValue(10944, 10943);\n this.mirroringShapeCharacters.setValue(10945, 10946);\n this.mirroringShapeCharacters.setValue(10946, 10945);\n this.mirroringShapeCharacters.setValue(10947, 10948);\n this.mirroringShapeCharacters.setValue(10948, 10947);\n this.mirroringShapeCharacters.setValue(10949, 10950);\n this.mirroringShapeCharacters.setValue(10950, 10949);\n this.mirroringShapeCharacters.setValue(10957, 10958);\n this.mirroringShapeCharacters.setValue(10958, 10957);\n this.mirroringShapeCharacters.setValue(10959, 10960);\n this.mirroringShapeCharacters.setValue(10960, 10959);\n this.mirroringShapeCharacters.setValue(10961, 10962);\n this.mirroringShapeCharacters.setValue(10962, 10961);\n this.mirroringShapeCharacters.setValue(10963, 10964);\n this.mirroringShapeCharacters.setValue(10964, 10963);\n this.mirroringShapeCharacters.setValue(10965, 10966);\n this.mirroringShapeCharacters.setValue(10966, 10965);\n this.mirroringShapeCharacters.setValue(10974, 8870);\n this.mirroringShapeCharacters.setValue(10979, 8873);\n this.mirroringShapeCharacters.setValue(10980, 8872);\n this.mirroringShapeCharacters.setValue(10981, 8875);\n this.mirroringShapeCharacters.setValue(10988, 10989);\n this.mirroringShapeCharacters.setValue(10989, 10988);\n this.mirroringShapeCharacters.setValue(10999, 11000);\n this.mirroringShapeCharacters.setValue(11000, 10999);\n this.mirroringShapeCharacters.setValue(11001, 11002);\n this.mirroringShapeCharacters.setValue(11002, 11001);\n this.mirroringShapeCharacters.setValue(12296, 12297);\n this.mirroringShapeCharacters.setValue(12297, 12296);\n this.mirroringShapeCharacters.setValue(12298, 12299);\n this.mirroringShapeCharacters.setValue(12299, 12298);\n this.mirroringShapeCharacters.setValue(12300, 12301);\n this.mirroringShapeCharacters.setValue(12301, 12300);\n this.mirroringShapeCharacters.setValue(12302, 12303);\n this.mirroringShapeCharacters.setValue(12303, 12302);\n this.mirroringShapeCharacters.setValue(12304, 12305);\n this.mirroringShapeCharacters.setValue(12305, 12304);\n this.mirroringShapeCharacters.setValue(12308, 12309);\n this.mirroringShapeCharacters.setValue(12309, 12308);\n this.mirroringShapeCharacters.setValue(12310, 12311);\n this.mirroringShapeCharacters.setValue(12311, 12310);\n this.mirroringShapeCharacters.setValue(12312, 12313);\n this.mirroringShapeCharacters.setValue(12313, 12312);\n this.mirroringShapeCharacters.setValue(12314, 12315);\n this.mirroringShapeCharacters.setValue(12315, 12314);\n this.mirroringShapeCharacters.setValue(65288, 65289);\n this.mirroringShapeCharacters.setValue(65289, 65288);\n this.mirroringShapeCharacters.setValue(65308, 65310);\n this.mirroringShapeCharacters.setValue(65310, 65308);\n this.mirroringShapeCharacters.setValue(65339, 65341);\n this.mirroringShapeCharacters.setValue(65341, 65339);\n this.mirroringShapeCharacters.setValue(65371, 65373);\n this.mirroringShapeCharacters.setValue(65373, 65371);\n this.mirroringShapeCharacters.setValue(65375, 65376);\n this.mirroringShapeCharacters.setValue(65376, 65375);\n this.mirroringShapeCharacters.setValue(65378, 65379);\n this.mirroringShapeCharacters.setValue(65379, 65378);\n };\n return Bidi;\n}());\nvar RtlCharacters = /** @__PURE__ @class */ (function () {\n //#endregion\n //#region constructors\n function RtlCharacters() {\n //#region fields\n /// \n /// Specifies the character types.\n /// \n this.types = [];\n /// \n /// Specifies the text order (RTL or LTR).\n /// \n this.textOrder = -1;\n /// \n /// Specifies the RTL character types.\n /// \n /* tslint:disable-next-line:prefer-array-literal */\n this.rtlCharacterTypes = new Array(65536);\n //#endregion\n //#region constants\n /// \n /// Left-to-Right (Non-European or non-Arabic digits).\n /// \n this.L = 0;\n /// \n /// Left-to-Right Embedding\n /// \n this.LRE = 1;\n /// \n /// Left-to-Right Override\n /// \n this.LRO = 2;\n /// \n /// Right-to-Left (Hebrew alphabet, and related punctuation).\n /// \n this.R = 3;\n /// \n /// Right-to-Left Arabic \n /// \n this.AL = 4;\n /// \n /// Right-to-Left Embedding.\n /// \n this.RLE = 5;\n /// \n /// Right-to-Left Override\n /// \n this.RLO = 6;\n /// \n /// Pop Directional Format\n /// \n this.PDF = 7;\n /// \n /// European Number (European digits, Eastern Arabic-Indic digits).\n /// \n this.EN = 8;\n /// \n /// European Number Separator (Plus sign, Minus sign).\n /// \n this.ES = 9;\n /// \n /// European Number Terminator (Degree sign, currency symbols).\n /// \n this.ET = 10;\n /// \n /// Arabic Number (Arabic-Indic digits, Arabic decimal and thousands separators).\n /// \n this.AN = 11;\n /// \n /// Common Number Separator (Colon, Comma, Full Stop, No-Break Space.\n /// \n this.CS = 12;\n /// \n /// Nonspacing Mark (Characters with the General_Category values).\n /// \n this.NSM = 13;\n /// \n /// Boundary Neutral (Default ignorables, non-characters, and control characters, other than those explicitly given other types.)\n /// \n this.BN = 14;\n /// \n /// Paragraph Separator (Paragraph separator, appropriate Newline Functions, higher-level protocol paragraph determination).\n /// \n this.B = 15;\n /// \n /// \tSegment Separator (tab).\n /// \n this.S = 16;\n /// \n /// Whitespace (Space, Figure space, Line separator, Form feed, General Punctuation spaces).\n /// \n this.WS = 17;\n /// \n /// Other Neutrals (All other characters, including object replacement character).\n /// \n this.ON = 18;\n /// \n /// RTL character types.\n /// \n this.charTypes = [\n this.L, this.EN, this.BN, this.ES, this.ES, this.S, this.ET, this.ET, this.B, this.AN, this.AN, this.S, this.CS, this.CS,\n this.WS, this.NSM, this.NSM, this.B, this.BN, 27, this.BN, 28, 30, this.B, 31, 31, this.S, 32, 32, this.WS, 33, 34,\n this.ON, 35, 37, this.ET, 38, 42, this.ON, 43, 43, this.ET, 44, 44, this.CS, 45, 45, this.ET, 46, 46, this.CS,\n 47, 47, this.CS, 48, 57, this.EN, 58, 58, this.CS, 59, 64, this.ON, 65, 90, this.L, 91, 96, this.ON, 97, 122, this.L,\n 123, 126, this.ON, 127, 132, this.BN, 133, 133, this.B, 134, 159, this.BN, 160, 160, this.CS,\n 161, 161, this.ON, 162, 165, this.ET, 166, 169, this.ON, 170, 170, this.L, 171, 175, this.ON,\n 176, 177, this.ET, 178, 179, this.EN, 180, 180, this.ON, 181, 181, this.L, 182, 184, this.ON,\n 185, 185, this.EN, 186, 186, this.L, 187, 191, this.ON, 192, 214, this.L, 215, 215, this.ON,\n 216, 246, this.L, 247, 247, this.ON, 248, 696, this.L, 697, 698, this.ON, 699, 705, this.L,\n 706, 719, this.ON, 720, 721, this.L, 722, 735, this.ON, 736, 740, this.L, 741, 749, this.ON,\n 750, 750, this.L, 751, 767, this.ON, 768, 855, this.NSM, 856, 860, this.L, 861, 879, this.NSM,\n 880, 883, this.L, 884, 885, this.ON, 886, 893, this.L, 894, 894, this.ON, 895, 899, this.L,\n 900, 901, this.ON, 902, 902, this.L, 903, 903, this.ON, 904, 1013, this.L, 1014, 1014, this.ON,\n 1015, 1154, this.L, 1155, 1158, this.NSM, 1159, 1159, this.L, 1160, 1161, this.NSM,\n 1162, 1417, this.L, 1418, 1418, this.ON, 1419, 1424, this.L, 1425, 1441, this.NSM,\n 1442, 1442, this.L, 1443, 1465, this.NSM, 1466, 1466, this.L, 1467, 1469, this.NSM,\n 1470, 1470, this.R, 1471, 1471, this.NSM, 1472, 1472, this.R, 1473, 1474, this.NSM,\n 1475, 1475, this.R, 1476, 1476, this.NSM, 1477, 1487, this.L, 1488, 1514, this.R,\n 1515, 1519, this.L, 1520, 1524, this.R, 1525, 1535, this.L, 1536, 1539, this.AL,\n 1540, 1547, this.L, 1548, 1548, this.CS, 1549, 1549, this.AL, 1550, 1551, this.ON,\n 1552, 1557, this.NSM, 1558, 1562, this.L, 1563, 1563, this.AL, 1564, 1566, this.L,\n 1567, 1567, this.AL, 1568, 1568, this.L, 1569, 1594, this.AL, 1595, 1599, this.L,\n 1600, 1610, this.AL, 1611, 1624, this.NSM, 1625, 1631, this.L, 1632, 1641, this.AN,\n 1642, 1642, this.ET, 1643, 1644, this.AN, 1645, 1647, this.AL, 1648, 1648, this.NSM,\n 1649, 1749, this.AL, 1750, 1756, this.NSM, 1757, 1757, this.AL, 1758, 1764, this.NSM,\n 1765, 1766, this.AL, 1767, 1768, this.NSM, 1769, 1769, this.ON, 1770, 1773, this.NSM,\n 1774, 1775, this.AL, 1776, 1785, this.EN, 1786, 1805, this.AL, 1806, 1806, this.L,\n 1807, 1807, this.BN, 1808, 1808, this.AL, 1809, 1809, this.NSM, 1810, 1839, this.AL,\n 1840, 1866, this.NSM, 1867, 1868, this.L, 1869, 1871, this.AL, 1872, 1919, this.L,\n 1920, 1957, this.AL, 1958, 1968, this.NSM, 1969, 1969, this.AL, 1970, 2304, this.L,\n 2305, 2306, this.NSM, 2307, 2363, this.L, 2364, 2364, this.NSM, 2365, 2368, this.L,\n 2369, 2376, this.NSM, 2377, 2380, this.L, 2381, 2381, this.NSM, 2382, 2384, this.L,\n 2385, 2388, this.NSM, 2389, 2401, this.L, 2402, 2403, this.NSM, 2404, 2432, this.L,\n 2433, 2433, this.NSM, 2434, 2491, this.L, 2492, 2492, this.NSM, 2493, 2496, this.L,\n 2497, 2500, this.NSM, 2501, 2508, this.L, 2509, 2509, this.NSM, 2510, 2529, this.L,\n 2530, 2531, this.NSM, 2532, 2545, this.L, 2546, 2547, this.ET, 2548, 2560, this.L,\n 2561, 2562, this.NSM, 2563, 2619, this.L, 2620, 2620, this.NSM, 2621, 2624, this.L,\n 2625, 2626, this.NSM, 2627, 2630, this.L, 2631, 2632, this.NSM, 2633, 2634, this.L,\n 2635, 2637, this.NSM, 2638, 2671, this.L, 2672, 2673, this.NSM, 2674, 2688, this.L,\n 2689, 2690, this.NSM, 2691, 2747, this.L, 2748, 2748, this.NSM, 2749, 2752, this.L,\n 2753, 2757, this.NSM, 2758, 2758, this.L, 2759, 2760, this.NSM, 2761, 2764, this.L,\n 2765, 2765, this.NSM, 2766, 2785, this.L, 2786, 2787, this.NSM, 2788, 2800, this.L,\n 2801, 2801, this.ET, 2802, 2816, this.L, 2817, 2817, this.NSM, 2818, 2875, this.L,\n 2876, 2876, this.NSM, 2877, 2878, this.L, 2879, 2879, this.NSM, 2880, 2880, this.L,\n 2881, 2883, this.NSM, 2884, 2892, this.L, 2893, 2893, this.NSM, 2894, 2901, this.L,\n 2902, 2902, this.NSM, 2903, 2945, this.L, 2946, 2946, this.NSM, 2947, 3007, this.L,\n 3008, 3008, this.NSM, 3009, 3020, this.L, 3021, 3021, this.NSM, 3022, 3058, this.L,\n 3059, 3064, this.ON, 3065, 3065, this.ET, 3066, 3066, this.ON, 3067, 3133, this.L,\n 3134, 3136, this.NSM, 3137, 3141, this.L, 3142, 3144, this.NSM, 3145, 3145, this.L,\n 3146, 3149, this.NSM, 3150, 3156, this.L, 3157, 3158, this.NSM, 3159, 3259, this.L,\n 3260, 3260, this.NSM, 3261, 3275, this.L, 3276, 3277, this.NSM, 3278, 3392, this.L,\n 3393, 3395, this.NSM, 3396, 3404, this.L, 3405, 3405, this.NSM, 3406, 3529, this.L,\n 3530, 3530, this.NSM, 3531, 3537, this.L, 3538, 3540, this.NSM, 3541, 3541, this.L,\n 3542, 3542, this.NSM, 3543, 3632, this.L, 3633, 3633, this.NSM, 3634, 3635, this.L,\n 3636, 3642, this.NSM, 3643, 3646, this.L, 3647, 3647, this.ET, 3648, 3654, this.L,\n 3655, 3662, this.NSM, 3663, 3760, this.L, 3761, 3761, this.NSM, 3762, 3763, this.L,\n 3764, 3769, this.NSM, 3770, 3770, this.L, 3771, 3772, this.NSM, 3773, 3783, this.L,\n 3784, 3789, this.NSM, 3790, 3863, this.L, 3864, 3865, this.NSM, 3866, 3892, this.L,\n 3893, 3893, this.NSM, 3894, 3894, this.L, 3895, 3895, this.NSM, 3896, 3896, this.L,\n 3897, 3897, this.NSM, 3898, 3901, this.ON, 3902, 3952, this.L, 3953, 3966, this.NSM,\n 3967, 3967, this.L, 3968, 3972, this.NSM, 3973, 3973, this.L, 3974, 3975, this.NSM,\n 3976, 3983, this.L, 3984, 3991, this.NSM, 3992, 3992, this.L, 3993, 4028, this.NSM,\n 4029, 4037, this.L, 4038, 4038, this.NSM, 4039, 4140, this.L, 4141, 4144, this.NSM,\n 4145, 4145, this.L, 4146, 4146, this.NSM, 4147, 4149, this.L, 4150, 4151, this.NSM,\n 4152, 4152, this.L, 4153, 4153, this.NSM, 4154, 4183, this.L, 4184, 4185, this.NSM,\n 4186, 5759, this.L, 5760, 5760, this.WS, 5761, 5786, this.L, 5787, 5788, this.ON,\n 5789, 5905, this.L, 5906, 5908, this.NSM, 5909, 5937, this.L, 5938, 5940, this.NSM,\n 5941, 5969, this.L, 5970, 5971, this.NSM, 5972, 6001, this.L, 6002, 6003, this.NSM,\n 6004, 6070, this.L, 6071, 6077, this.NSM, 6078, 6085, this.L, 6086, 6086, this.NSM,\n 6087, 6088, this.L, 6089, 6099, this.NSM, 6100, 6106, this.L, 6107, 6107, this.ET,\n 6108, 6108, this.L, 6109, 6109, this.NSM, 6110, 6127, this.L, 6128, 6137, this.ON,\n 6138, 6143, this.L, 6144, 6154, this.ON, 6155, 6157, this.NSM, 6158, 6158, this.WS,\n 6159, 6312, this.L, 6313, 6313, this.NSM, 6314, 6431, this.L, 6432, 6434, this.NSM,\n 6435, 6438, this.L, 6439, 6443, this.NSM, 6444, 6449, this.L, 6450, 6450, this.NSM,\n 6451, 6456, this.L, 6457, 6459, this.NSM, 6460, 6463, this.L, 6464, 6464, this.ON,\n 6465, 6467, this.L, 6468, 6469, this.ON, 6470, 6623, this.L, 6624, 6655, this.ON,\n 6656, 8124, this.L, 8125, 8125, this.ON, 8126, 8126, this.L, 8127, 8129, this.ON,\n 8130, 8140, this.L, 8141, 8143, this.ON, 8144, 8156, this.L, 8157, 8159, this.ON,\n 8160, 8172, this.L, 8173, 8175, this.ON, 8176, 8188, this.L, 8189, 8190, this.ON,\n 8191, 8191, this.L, 8192, 8202, this.WS, 8203, 8205, this.BN, 8206, 8206, this.L,\n 8207, 8207, this.R, 8208, 8231, this.ON, 8232, 8232, this.WS, 8233, 8233, this.B,\n 8234, 8234, this.LRE, 8235, 8235, this.RLE, 8236, 8236, this.PDF, 8237, 8237, this.LRO,\n 8238, 8238, this.RLO, 8239, 8239, this.WS, 8240, 8244, this.ET, 8245, 8276, this.ON,\n 8277, 8278, this.L, 8279, 8279, this.ON, 8280, 8286, this.L, 8287, 8287, this.WS,\n 8288, 8291, this.BN, 8292, 8297, this.L, 8298, 8303, this.BN, 8304, 8304, this.EN,\n 8305, 8307, this.L, 8308, 8313, this.EN, 8314, 8315, this.ET, 8316, 8318, this.ON,\n 8319, 8319, this.L, 8320, 8329, this.EN, 8330, 8331, this.ET, 8332, 8334, this.ON,\n 8335, 8351, this.L, 8352, 8369, this.ET, 8370, 8399, this.L, 8400, 8426, this.NSM,\n 8427, 8447, this.L, 8448, 8449, this.ON, 8450, 8450, this.L, 8451, 8454, this.ON,\n 8455, 8455, this.L, 8456, 8457, this.ON, 8458, 8467, this.L, 8468, 8468, this.ON,\n 8469, 8469, this.L, 8470, 8472, this.ON, 8473, 8477, this.L, 8478, 8483, this.ON,\n 8484, 8484, this.L, 8485, 8485, this.ON, 8486, 8486, this.L, 8487, 8487, this.ON,\n 8488, 8488, this.L, 8489, 8489, this.ON, 8490, 8493, this.L, 8494, 8494, this.ET,\n 8495, 8497, this.L, 8498, 8498, this.ON, 8499, 8505, this.L, 8506, 8507, this.ON,\n 8508, 8511, this.L, 8512, 8516, this.ON, 8517, 8521, this.L, 8522, 8523, this.ON,\n 8524, 8530, this.L, 8531, 8543, this.ON, 8544, 8591, this.L, 8592, 8721, this.ON,\n 8722, 8723, this.ET, 8724, 9013, this.ON, 9014, 9082, this.L, 9083, 9108, this.ON,\n 9109, 9109, this.L, 9110, 9168, this.ON, 9169, 9215, this.L, 9216, 9254, this.ON,\n 9255, 9279, this.L, 9280, 9290, this.ON, 9291, 9311, this.L, 9312, 9371, this.EN,\n 9372, 9449, this.L, 9450, 9450, this.EN, 9451, 9751, this.ON, 9752, 9752, this.L,\n 9753, 9853, this.ON, 9854, 9855, this.L, 9856, 9873, this.ON, 9874, 9887, this.L,\n 9888, 9889, this.ON, 9890, 9984, this.L, 9985, 9988, this.ON, 9989, 9989, this.L,\n 9990, 9993, this.ON, 9994, 9995, this.L, 9996, 10023, this.ON, 10024, 10024, this.L,\n 10025, 10059, this.ON, 10060, 10060, this.L, 10061, 10061, this.ON, 10062, 10062, this.L,\n 10063, 10066, this.ON, 10067, 10069, this.L, 10070, 10070, this.ON, 10071, 10071, this.L,\n 10072, 10078, this.ON, 10079, 10080, this.L, 10081, 10132, this.ON, 10133, 10135, this.L,\n 10136, 10159, this.ON, 10160, 10160, this.L, 10161, 10174, this.ON, 10175, 10191, this.L,\n 10192, 10219, this.ON, 10220, 10223, this.L, 10224, 11021, this.ON, 11022, 11903, this.L,\n 11904, 11929, this.ON, 11930, 11930, this.L, 11931, 12019, this.ON, 12020, 12031, this.L,\n 12032, 12245, this.ON, 12246, 12271, this.L, 12272, 12283, this.ON, 12284, 12287, this.L,\n 12288, 12288, this.WS, 12289, 12292, this.ON, 12293, 12295, this.L, 12296, 12320, this.ON,\n 12321, 12329, this.L, 12330, 12335, this.NSM, 12336, 12336, this.ON, 12337, 12341, this.L,\n 12342, 12343, this.ON, 12344, 12348, this.L, 12349, 12351, this.ON, 12352, 12440, this.L,\n 12441, 12442, this.NSM, 12443, 12444, this.ON, 12445, 12447, this.L, 12448, 12448, this.ON,\n 12449, 12538, this.L, 12539, 12539, this.ON, 12540, 12828, this.L, 12829, 12830, this.ON,\n 12831, 12879, this.L, 12880, 12895, this.ON, 12896, 12923, this.L, 12924, 12925, this.ON,\n 12926, 12976, this.L, 12977, 12991, this.ON, 12992, 13003, this.L, 13004, 13007, this.ON,\n 13008, 13174, this.L, 13175, 13178, this.ON, 13179, 13277, this.L, 13278, 13279, this.ON,\n 13280, 13310, this.L, 13311, 13311, this.ON, 13312, 19903, this.L, 19904, 19967, this.ON,\n 19968, 42127, this.L, 42128, 42182, this.ON, 42183, 64284, this.L, 64285, 64285, this.R,\n 64286, 64286, this.NSM, 64287, 64296, this.R, 64297, 64297, this.ET, 64298, 64310, this.R,\n 64311, 64311, this.L, 64312, 64316, this.R, 64317, 64317, this.L, 64318, 64318, this.R,\n 64319, 64319, this.L, 64320, 64321, this.R, 64322, 64322, this.L, 64323, 64324, this.R,\n 64325, 64325, this.L, 64326, 64335, this.R, 64336, 64433, this.AL, 64434, 64466, this.L,\n 64467, 64829, this.AL, 64830, 64831, this.ON, 64832, 64847, this.L, 64848, 64911, this.AL,\n 64912, 64913, this.L, 64914, 64967, this.AL, 64968, 65007, this.L, 65008, 65020, this.AL,\n 65021, 65021, this.ON, 65022, 65023, this.L, 65024, 65039, this.NSM, 65040, 65055, this.L,\n 65056, 65059, this.NSM, 65060, 65071, this.L, 65072, 65103, this.ON, 65104, 65104, this.CS,\n 65105, 65105, this.ON, 65106, 65106, this.CS, 65107, 65107, this.L, 65108, 65108, this.ON,\n 65109, 65109, this.CS, 65110, 65118, this.ON, 65119, 65119, this.ET, 65120, 65121, this.ON,\n 65122, 65123, this.ET, 65124, 65126, this.ON, 65127, 65127, this.L, 65128, 65128, this.ON,\n 65129, 65130, this.ET, 65131, 65131, this.ON, 65132, 65135, this.L, 65136, 65140, this.AL,\n 65141, 65141, this.L, 65142, 65276, this.AL, 65277, 65278, this.L, 65279, 65279, this.BN,\n 65280, 65280, this.L, 65281, 65282, this.ON, 65283, 65285, this.ET, 65286, 65290, this.ON,\n 65291, 65291, this.ET, 65292, 65292, this.CS, 65293, 65293, this.ET, 65294, 65294, this.CS,\n 65295, 65295, this.ES, 65296, 65305, this.EN, 65306, 65306, this.CS, 65307, 65312, this.ON,\n 65313, 65338, this.L, 65339, 65344, this.ON, 65345, 65370, this.L, 65371, 65381, this.ON,\n 65382, 65503, this.L, 65504, 65505, this.ET, 65506, 65508, this.ON, 65509, 65510, this.ET,\n 65511, 65511, this.L, 65512, 65518, this.ON, 65519, 65528, this.L, 65529, 65531, this.BN,\n 65532, 65533, this.ON, 65534, 65535, this.L\n ];\n for (var i = 0; i < this.charTypes.length; ++i) {\n var start = this.charTypes[i];\n var end = this.charTypes[++i];\n var b = this.charTypes[++i];\n while (start <= end) {\n this.rtlCharacterTypes[start++] = b;\n }\n }\n }\n //#endregion\n //#region implementation\n RtlCharacters.prototype.getVisualOrder = function (inputText, isRtl) {\n this.types = this.getCharacterCode(inputText);\n this.textOrder = isRtl ? this.LRE : this.L;\n this.doVisualOrder();\n var result = [];\n for (var i = 0; i < this.levels.length; i++) {\n result[i] = this.levels[i];\n }\n return result;\n };\n RtlCharacters.prototype.getCharacterCode = function (text) {\n var characterCodes = [];\n for (var i = 0; i < text.length; i++) {\n characterCodes[i] = this.rtlCharacterTypes[text[i].charCodeAt(0)];\n }\n return characterCodes;\n };\n RtlCharacters.prototype.setDefaultLevels = function () {\n for (var i = 0; i < this.length; i++) {\n this.levels[i] = this.textOrder;\n }\n };\n RtlCharacters.prototype.setLevels = function () {\n this.setDefaultLevels();\n for (var n = 0; n < this.length; ++n) {\n var level = this.levels[n];\n if ((level & 0x80) !== 0) {\n level &= 0x7f;\n this.result[n] = ((level & 0x1) === 0) ? this.L : this.R;\n }\n this.levels[n] = level;\n }\n };\n RtlCharacters.prototype.updateLevels = function (index, level, length) {\n if ((level & 1) === 0) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.R) {\n this.levels[i] += 1;\n }\n else if (this.result[i] !== this.L) {\n this.levels[i] += 2;\n }\n }\n }\n else {\n for (var i = index; i < length; ++i) {\n if (this.result[i] !== this.R) {\n this.levels[i] += 1;\n }\n }\n }\n };\n RtlCharacters.prototype.doVisualOrder = function () {\n this.length = this.types.length;\n this.result = this.types;\n this.levels = [];\n this.setLevels();\n this.length = this.getEmbeddedCharactersLength();\n var preview = this.textOrder;\n var i = 0;\n while (i < this.length) {\n var level = this.levels[i];\n var preType = ((Math.max(preview, level) & 0x1) === 0) ? this.L : this.R;\n var length_1 = i + 1;\n while (length_1 < this.length && this.levels[length_1] === level) {\n ++length_1;\n }\n var success = length_1 < this.length ? this.levels[length_1] : this.textOrder;\n var type = ((Math.max(success, level) & 0x1) === 0) ? this.L : this.R;\n this.checkNSM(i, length_1, level, preType, type);\n this.updateLevels(i, level, length_1);\n preview = level;\n i = length_1;\n }\n this.checkEmbeddedCharacters(this.length);\n };\n RtlCharacters.prototype.getEmbeddedCharactersLength = function () {\n var index = 0;\n for (var i = 0; i < this.length; ++i) {\n if (!(this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN)) {\n this.result[index] = this.result[i];\n this.levels[index] = this.levels[i];\n index++;\n }\n }\n return index;\n };\n RtlCharacters.prototype.checkEmbeddedCharacters = function (length) {\n for (var i = this.types.length - 1; i >= 0; --i) {\n if (this.types[i] === this.LRE || this.types[i] === this.RLE || this.types[i] === this.LRO ||\n this.types[i] === this.RLO || this.types[i] === this.PDF || this.types[i] === this.BN) {\n this.result[i] = this.types[i];\n this.levels[i] = -1;\n }\n else {\n length -= 1;\n this.result[i] = this.result[length];\n this.levels[i] = this.levels[length];\n }\n }\n for (var i = 0; i < this.types.length; i++) {\n if (this.levels[i] === -1) {\n if (i === 0) {\n this.levels[i] = this.textOrder;\n }\n else {\n this.levels[i] = this.levels[i - 1];\n }\n }\n }\n };\n RtlCharacters.prototype.checkNSM = function (index, length, level, startType, endType) {\n var charType = startType;\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.NSM) {\n this.result[i] = charType;\n }\n else {\n charType = this.result[i];\n }\n }\n this.checkEuropeanDigits(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanDigits = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R || this.result[j] === this.AL) {\n if (this.result[j] === this.AL) {\n this.result[i] = this.AN;\n }\n break;\n }\n }\n }\n }\n this.checkArabicCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkArabicCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.AL) {\n this.result[i] = this.R;\n }\n }\n this.checkEuropeanNumberSeparator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberSeparator = function (index, length, level, startType, endType) {\n for (var i = index + 1; i < length - 1; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.CS) {\n var preview = this.result[i - 1];\n var success = this.result[i + 1];\n if (preview === this.EN && success === this.EN) {\n this.result[i] = this.EN;\n }\n else if (this.result[i] === this.CS && preview === this.AN && success === this.AN) {\n this.result[i] = this.AN;\n }\n }\n }\n this.checkEuropeanNumberTerminator(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkEuropeanNumberTerminator = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ET) {\n var s = i;\n var b = [];\n b.push(this.ET);\n var l = this.getLength(s, length, b);\n var data = s === index ? startType : this.result[s - 1];\n if (data !== this.EN) {\n data = (l === length) ? endType : this.result[l];\n }\n if (data === this.EN) {\n for (var j = s; j < l; ++j) {\n this.result[j] = this.EN;\n }\n }\n i = l;\n }\n }\n this.checkOtherNeutrals(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherNeutrals = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.ES || this.result[i] === this.ET || this.result[i] === this.CS) {\n this.result[i] = this.ON;\n }\n }\n this.checkOtherCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.checkOtherCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.EN) {\n var pst = startType;\n for (var j = i - 1; j >= index; --j) {\n if (this.result[j] === this.L || this.result[j] === this.R) {\n pst = this.result[j];\n break;\n }\n }\n if (pst === this.L) {\n this.result[i] = this.L;\n }\n }\n }\n this.checkCommanCharacters(index, length, level, startType, endType);\n };\n RtlCharacters.prototype.getLength = function (index, length, validSet) {\n --index;\n while (++index < length) {\n var t = this.result[index];\n for (var i = 0; i < validSet.length; ++i) {\n if (t === validSet[i]) {\n index = this.getLength(++index, length, validSet);\n }\n }\n return index;\n }\n return length;\n };\n RtlCharacters.prototype.checkCommanCharacters = function (index, length, level, startType, endType) {\n for (var i = index; i < length; ++i) {\n if (this.result[i] === this.WS || this.result[i] === this.ON || this.result[i] === this.B ||\n this.result[i] === this.S) {\n var s = i;\n var byte = [this.B, this.S, this.WS, this.ON];\n var l = this.getLength(s, length, byte);\n var lt = 0;\n var tt = 0;\n var rt = 0;\n if (s === index) {\n lt = startType;\n }\n else {\n lt = this.result[s - 1];\n if (lt === this.AN) {\n lt = this.R;\n }\n else if (lt === this.EN) {\n lt = this.R;\n }\n }\n if (l === length) {\n tt = endType;\n }\n else {\n tt = this.result[l];\n if (tt === this.AN) {\n tt = this.R;\n }\n else if (tt === this.EN) {\n tt = this.R;\n }\n }\n if (lt === tt) {\n rt = lt;\n }\n else {\n rt = ((level & 0x1) === 0) ? this.L : this.R;\n }\n for (var j = s; j < l; ++j) {\n this.result[j] = rt;\n }\n i = l;\n }\n }\n };\n return RtlCharacters;\n}());\n\n/**\n * `Metrics` of the font.\n * @private\n */\nvar RtlRenderer = /** @__PURE__ @class */ (function () {\n function RtlRenderer() {\n //region Constants\n /// Open bracket symbol.\n /// \n this.openBracket = '(';\n /// \n /// Close bracket symbol.\n /// \n this.closeBracket = ')';\n //#endregion\n }\n //#region Constructors\n /// \n /// Initializes a new instance of the class.\n /// \n // public constructor() {\n // }\n //#region Public Methods\n /// \n /// Layouts text. Changes blocks position in the RTL text.\n /// Ligates the text if needed.\n /// \n /// Line of the text.\n /// Font to be used for string printing.\n /// Font alignment.\n /// Indicates whether Word Spacing used or not.\n /// Layout string.\n RtlRenderer.prototype.layout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var result = [];\n if (font.Unicode) {\n result = this.customLayout(line, rtl, format, font, wordSpace);\n }\n else {\n result = [];\n result[0] = line;\n }\n return result;\n };\n /// \n /// Layouts a string and splits it by the words and using correct lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n RtlRenderer.prototype.splitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var words = [];\n var system = false;\n if (!system || words == null) {\n words = this.customSplitLayout(line, font, rtl, wordSpace, format);\n }\n return words;\n };\n //#endregion\n //#region Implementation\n // private isEnglish( word : string) : boolean\n // {\n // let c : string = (word.length > 0) ? word[0] : '';\n // return (c >= '0' && c < 'ÿ');\n // }\n // private keepOrder( words : string, startIndex : number, count: number, result : string[], resultIndex : number) : void\n // {\n // for (let i : number = 0, ri = resultIndex - count + 1; i < count; ++i, ++ri) {\n // result[ri] = words[i + startIndex];\n // }\n // }\n /// \n /// Uses system API to layout the text.\n /// \n /// Line of the text to be layouted.\n /// Font which is used for text printing.\n /// Indicates whether we use RTL or RTL lay outing of the text container.\n /// Layout string.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.getGlyphIndex = function (line, font, rtl, /*out*/ glyphs, custom) {\n var success = true;\n var fail = false;\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n glyphs = null;\n if (line.length === 0) {\n return { success: fail, glyphs: glyphs };\n }\n var renderer = new ArabicShapeRenderer();\n var text = renderer.shape(line, 0);\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n glyphs = new Uint16Array(text.length);\n var i = 0;\n for (var k = 0, len = text.length; k < len; k++) {\n var ch = text[k];\n var glyphInfo = ttfReader.getGlyph(ch);\n if (glyphInfo !== null && typeof glyphInfo !== 'undefined') {\n glyphs[i++] = (glyphInfo).index;\n }\n }\n return { success: success, glyphs: glyphs };\n };\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customLayout = function (line, rtl, format, font, wordSpace) {\n if (wordSpace === null || typeof wordSpace === 'undefined') {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var result = null;\n //bidirectional order.\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var bidi = new Bidi();\n result = bidi.getLogicalToVisualString(line, rtl);\n }\n return result;\n }\n else {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var layouted = null;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var renderer = new ArabicShapeRenderer();\n var txt = renderer.shape(line, 0);\n layouted = this.customLayout(txt, rtl, format);\n }\n // else {\n // layouted = this.customLayout(line, rtl, format);\n // }\n // We have unicode font, but from the file. \n var result = [];\n // Split the text by words if word spacing is not default.\n if (wordSpace) {\n var words = layouted.split('');\n var count = words.length;\n for (var i = 0; i < count; i++) {\n words[i] = this.addChars(font, words[i]);\n }\n result = words;\n }\n else {\n result = [];\n result[0] = this.addChars(font, layouted);\n }\n return result;\n }\n };\n /// \n /// Add information about used glyphs to the font.\n /// \n /// Font used for text rendering.\n /// Array of used glyphs.\n /// String in the form to be written to the file.\n RtlRenderer.prototype.addChars = function (font, glyphs) {\n var line = glyphs;\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n var text = line;\n var internalFont = font.fontInternal;\n var ttfReader = internalFont.ttfReader;\n font.setSymbols(text);\n // Reconvert string according to unicode standard.\n text = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(text, false);\n text = PdfString.byteToString(bytes);\n return text;\n // else {\n // if (font == null) {\n // throw new Error('ArgumentNullException : font');\n // }\n // if (glyphs == null) {\n // throw new Error('ArgumentNullException : glyphs');\n // }\n // // Mark the chars as used.\n // let text : string = '';\n // font.setSymbols(glyphs);\n // // Create string from the glyphs.\n // \n // let chars : string[] = [];\n // for (let i : number = 0; i < glyphs.length; i++) {\n // chars[i] = glyphs[i].toString();\n // }\n // for (let j : number = 0 ; j < chars.length; j++) {\n // text = text + chars[j];\n // }\n // let bytes : number[] = PdfString.toUnicodeArray(text, false);\n // text = PdfString.byteToString(bytes);\n // return text;\n // }\n };\n /// \n /// Layouts a string and splits it by the words by using custom lay outing.\n /// \n /// Text line.\n /// Font object.\n /// Indicates whether RTL should be applied.\n /// Indicates whether word spacing is used.\n /// Array of words if converted, null otherwise.\n /* tslint:disable-next-line:max-line-length */\n RtlRenderer.prototype.customSplitLayout = function (line, font, rtl, wordSpace, format) {\n if (line == null) {\n throw new Error('ArgumentNullException : line');\n }\n if (font == null) {\n throw new Error('ArgumentNullException : font');\n }\n var reversedLine = this.customLayout(line, rtl, format);\n var words = reversedLine.split('');\n return words;\n };\n return RtlRenderer;\n}());\n\n/**\n * public Enum for `PdfLayoutType`.\n * @private\n */\nvar PdfLayoutType;\n(function (PdfLayoutType) {\n /**\n * Specifies the type of `Paginate`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"Paginate\"] = 0] = \"Paginate\";\n /**\n * Specifies the type of `OnePage`.\n * @private\n */\n PdfLayoutType[PdfLayoutType[\"OnePage\"] = 1] = \"OnePage\";\n})(PdfLayoutType || (PdfLayoutType = {}));\n/**\n * public Enum for `PdfLayoutBreakType`.\n * @private\n */\nvar PdfLayoutBreakType;\n(function (PdfLayoutBreakType) {\n /**\n * Specifies the type of `FitPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitPage\"] = 0] = \"FitPage\";\n /**\n * Specifies the type of `FitElement`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitElement\"] = 1] = \"FitElement\";\n /**\n * Specifies the type of `FitColumnsToPage`.\n * @private\n */\n PdfLayoutBreakType[PdfLayoutBreakType[\"FitColumnsToPage\"] = 2] = \"FitColumnsToPage\";\n})(PdfLayoutBreakType || (PdfLayoutBreakType = {}));\nvar PathPointType;\n(function (PathPointType) {\n /**\n * Specifies the path point type of `Start`.\n * @private\n */\n PathPointType[PathPointType[\"Start\"] = 0] = \"Start\";\n /**\n * Specifies the path point type of `Line`.\n * @private\n */\n PathPointType[PathPointType[\"Line\"] = 1] = \"Line\";\n /**\n * Specifies the path point type of `Bezier3`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier3\"] = 3] = \"Bezier3\";\n /**\n * Specifies the path point type of `Bezier`.\n * @private\n */\n PathPointType[PathPointType[\"Bezier\"] = 3] = \"Bezier\";\n /**\n * Specifies the path point type of `PathTypeMask`.\n * @private\n */\n PathPointType[PathPointType[\"PathTypeMask\"] = 7] = \"PathTypeMask\";\n /**\n * Specifies the path point type of `DashMode`.\n * @private\n */\n PathPointType[PathPointType[\"DashMode\"] = 16] = \"DashMode\";\n /**\n * Specifies the path point type of `PathMarker`.\n * @private\n */\n PathPointType[PathPointType[\"PathMarker\"] = 32] = \"PathMarker\";\n /**\n * Specifies the path point type of `CloseSubpath`.\n * @private\n */\n PathPointType[PathPointType[\"CloseSubpath\"] = 128] = \"CloseSubpath\";\n})(PathPointType || (PathPointType = {}));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfGradientBrush` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfGradientBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$13(PdfGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfGradientBrush(shading) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the background color.\n * @private\n */\n _this.mbackground = new PdfColor(255, 255, 255);\n /**\n * Local variable to store the stroking color.\n * @private\n */\n _this.mbStroking = false;\n /**\n * Local variable to store the function.\n * @private\n */\n _this.mfunction = null;\n /**\n * Local variable to store the DictionaryProperties.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n _this.mpatternDictionary = new PdfDictionary();\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.type, new PdfName(_this.dictionaryProperties.pattern));\n _this.mpatternDictionary.items.setValue(_this.dictionaryProperties.patternType, new PdfNumber(2));\n _this.shading = shading;\n _this.colorSpace = PdfColorSpace.Rgb;\n return _this;\n }\n Object.defineProperty(PdfGradientBrush.prototype, \"background\", {\n //Properties\n /**\n * Gets or sets the background color of the brush.\n * @public\n */\n get: function () {\n return this.mbackground;\n },\n set: function (value) {\n this.mbackground = value;\n var sh = this.shading;\n if (value.isEmpty) {\n sh.remove(this.dictionaryProperties.background);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.background, value.toArray(this.colorSpace));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"antiAlias\", {\n /**\n * Gets or sets a value indicating whether use anti aliasing algorithm.\n * @public\n */\n get: function () {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n return aa.value;\n },\n set: function (value) {\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa == null && typeof aa === 'undefined')) {\n aa = new PdfBoolean(value);\n sh.items.setValue(this.dictionaryProperties.antiAlias, aa);\n }\n else {\n aa.value = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"function\", {\n /**\n * Gets or sets the function of the brush.\n * @protected\n */\n get: function () {\n return this.mfunction;\n },\n set: function (value) {\n this.mfunction = value;\n if (value != null && typeof value !== 'undefined') {\n this.shading.items.setValue(this.dictionaryProperties.function, new PdfReferenceHolder(this.mfunction));\n }\n else {\n this.shading.remove(this.dictionaryProperties.function);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"bBox\", {\n /**\n * Gets or sets the boundary box of the brush.\n * @protected\n */\n get: function () {\n var sh = this.shading;\n var box = (sh.items.getValue(this.dictionaryProperties.bBox));\n return box;\n },\n set: function (value) {\n var sh = this.shading;\n if (value == null && typeof value === 'undefined') {\n sh.remove(this.dictionaryProperties.bBox);\n }\n else {\n sh.items.setValue(this.dictionaryProperties.bBox, value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"colorSpace\", {\n /**\n * Gets or sets the color space of the brush.\n * @public\n */\n get: function () {\n return this.mcolorSpace;\n },\n set: function (value) {\n var colorSpace = this.shading.items.getValue(this.dictionaryProperties.colorSpace);\n if ((value !== this.mcolorSpace) || (colorSpace == null)) {\n this.mcolorSpace = value;\n var csValue = this.colorSpaceToDeviceName(value);\n this.shading.items.setValue(this.dictionaryProperties.colorSpace, new PdfName(csValue));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfGradientBrush is stroking.\n * @public\n */\n get: function () {\n return this.mbStroking;\n },\n set: function (value) {\n this.mbStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"patternDictionary\", {\n /**\n * Gets the pattern dictionary.\n * @protected\n */\n get: function () {\n if (this.mpatternDictionary == null) {\n this.mpatternDictionary = new PdfDictionary();\n }\n return this.mpatternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"shading\", {\n /**\n * Gets or sets the shading dictionary.\n * @protected\n */\n get: function () {\n return this.mshading;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Shading');\n }\n if (value !== this.mshading) {\n this.mshading = value;\n this.patternDictionary.items.setValue(this.dictionaryProperties.shading, new PdfReferenceHolder(this.mshading));\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGradientBrush.prototype, \"matrix\", {\n /**\n * Gets or sets the transformation matrix.\n * @public\n */\n get: function () {\n return this.mmatrix;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : Matrix');\n }\n if (value !== this.mmatrix) {\n this.mmatrix = value.clone();\n var m = new PdfArray(this.mmatrix.matrix.elements);\n this.mpatternDictionary.items.setValue(this.dictionaryProperties.matrix, m);\n }\n },\n enumerable: true,\n configurable: true\n });\n //Overrides\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush.\n * @param streamWriter The stream writer.\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGradientBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush instanceof PdfGradientBrush) {\n if ((this.colorSpace !== currentColorSpace)) {\n this.colorSpace = currentColorSpace;\n this.resetFunction();\n }\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mbStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mbStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfGradientBrush.prototype.resetChanges = function (streamWriter) {\n // Unable reset.\n };\n //Implementation\n /**\n * Converts colorspace enum to a PDF name.\n * @param colorSpace The color space enum value.\n */\n PdfGradientBrush.prototype.colorSpaceToDeviceName = function (colorSpace) {\n var result;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n result = 'DeviceRGB';\n break;\n }\n return result;\n };\n /**\n * Resets the pattern dictionary.\n * @param dictionary A new pattern dictionary.\n */\n PdfGradientBrush.prototype.resetPatternDictionary = function (dictionary) {\n this.mpatternDictionary = dictionary;\n };\n /**\n * Clones the anti aliasing value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneAntiAliasingValue = function (brush) {\n if ((brush == null)) {\n throw new Error('ArgumentNullException : brush');\n }\n var sh = this.shading;\n var aa = (sh.items.getValue(this.dictionaryProperties.antiAlias));\n if ((aa != null)) {\n brush.shading.items.setValue(this.dictionaryProperties.antiAlias, new PdfBoolean(aa.value));\n }\n };\n /**\n * Clones the background value.\n * @param brush The brush.\n */\n PdfGradientBrush.prototype.cloneBackgroundValue = function (brush) {\n var background = this.background;\n if (!background.isEmpty) {\n brush.background = background;\n }\n };\n Object.defineProperty(PdfGradientBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.patternDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGradientBrush;\n}(PdfBrush));\n\n/**\n * PdfTemplate.ts class for EJ2-PDF\n */\n/**\n * Represents `Pdf Template` object.\n * @private\n */\nvar PdfTemplate = /** @__PURE__ @class */ (function () {\n function PdfTemplate(arg1, arg2) {\n /**\n * Initialize an instance for `DictionaryProperties` class.\n * @private\n * @hidden\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the transformation 'is performed'.\n * @default true\n * @private\n */\n this.writeTransformation = true;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.content = new PdfStream();\n var tempSize = new SizeF(arg1.width, arg1.height);\n this.setSize(tempSize);\n this.initialize();\n }\n else {\n this.content = new PdfStream();\n this.setSize(new SizeF(arg1, arg2));\n this.initialize();\n }\n }\n Object.defineProperty(PdfTemplate.prototype, \"size\", {\n //Properties\n /**\n * Gets the size of the 'PdfTemplate'.\n */\n get: function () {\n return this.templateSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"width\", {\n /**\n * Gets the width of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.width;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"height\", {\n /**\n * Gets the height of the 'PdfTemplate'.\n */\n get: function () {\n return this.size.height;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplate.prototype, \"graphics\", {\n /**\n * Gets the `graphics` of the 'PdfTemplate'.\n */\n get: function () {\n if (this.pdfGraphics == null || typeof this.pdfGraphics === 'undefined') {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.content);\n this.pdfGraphics = g;\n // if(this.writeTransformation) {\n // Transform co-ordinates to Top/Left.\n this.pdfGraphics.initializeCoordinates();\n // }\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @private\n */\n PdfTemplate.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.content.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n // Public methods\n /**\n * `Initialize` the type and subtype of the template.\n * @private\n */\n PdfTemplate.prototype.initialize = function () {\n this.addType();\n this.addSubType();\n };\n /**\n * `Adds type key`.\n * @private\n */\n PdfTemplate.prototype.addType = function () {\n var value = new PdfName(this.dictionaryProperties.xObject);\n this.content.items.setValue(this.dictionaryProperties.type, value);\n };\n /**\n * `Adds SubType key`.\n * @private\n */\n PdfTemplate.prototype.addSubType = function () {\n var value = new PdfName(this.dictionaryProperties.form);\n this.content.items.setValue(this.dictionaryProperties.subtype, value);\n };\n PdfTemplate.prototype.reset = function (size) {\n if (typeof size === 'undefined') {\n if (this.resources != null) {\n this.resources = null;\n this.content.remove(this.dictionaryProperties.resources);\n }\n if (this.graphics != null) {\n this.graphics.reset(this.size);\n }\n }\n else {\n this.setSize(size);\n this.reset();\n }\n };\n /**\n * `Set the size` of the 'PdfTemplate'.\n * @private\n */\n PdfTemplate.prototype.setSize = function (size) {\n var rect = new RectangleF(new PointF(0, 0), size);\n var val = PdfArray.fromRectangle(rect);\n this.content.items.setValue(this.dictionaryProperties.bBox, val);\n this.templateSize = size;\n };\n Object.defineProperty(PdfTemplate.prototype, \"element\", {\n // /**\n // * Returns the value of current graphics.\n // * @private\n // */\n // public GetGraphics(g : PdfGraphics) : PdfGraphics {\n // if (this.graphics == null || typeof this.graphics === 'undefined') {\n // this.graphics = g;\n // this.graphics.Size = this.Size;\n // this.graphics.StreamWriter = new PdfStreamWriter(this.content)\n // this.graphics.Initialize();\n // if(this.writeTransformation) {\n // this.graphics.InitializeCoordinates();\n // }\n // }\n // return this.graphics;\n // }\n // IPdfWrapper Members\n /**\n * Gets the `content stream` of 'PdfTemplate' class.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplate;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfResources.ts class for EJ2-PDF\n */\n/**\n * `PdfResources` class used to set resource contents like font, image.\n * @private\n */\nvar PdfResources = /** @__PURE__ @class */ (function (_super) {\n __extends$15(PdfResources, _super);\n function PdfResources(baseDictionary) {\n var _this = _super.call(this, baseDictionary) || this;\n /**\n * Dictionary for the `properties names`.\n * @private\n */\n _this.properties = new PdfDictionary();\n return _this;\n }\n Object.defineProperty(PdfResources.prototype, \"names\", {\n //Properties\n /**\n * Gets the `font names`.\n * @private\n */\n get: function () {\n return this.getNames();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfResources.prototype, \"document\", {\n /**\n * Get or set the `page document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n set: function (value) {\n this.pdfDocument = value;\n },\n enumerable: true,\n configurable: true\n });\n //Public Methods\n /**\n * `Generates name` for the object and adds to the resource if the object is new.\n * @private\n */\n PdfResources.prototype.getName = function (obj) {\n var primitive = obj.element;\n var name = null;\n if (this.names.containsKey(primitive)) {\n name = this.names.getValue(primitive);\n }\n // Object is new.\n if (name == null) {\n var sName = this.generateName();\n name = new PdfName(sName);\n this.names.setValue(primitive, name);\n if (obj instanceof PdfFont) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTemplate) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfGradientBrush || obj instanceof PdfTilingBrush) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfTransparency) {\n this.add(obj, name);\n }\n else if (obj instanceof PdfImage || obj instanceof PdfBitmap) {\n this.add(obj, name);\n }\n }\n return name;\n };\n /**\n * Gets `resource names` to font dictionaries.\n * @private\n */\n PdfResources.prototype.getNames = function () {\n if (this.pdfNames == null) {\n this.pdfNames = new TemporaryDictionary();\n }\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var dictionary = fonts;\n dictionary = PdfCrossTable.dereference(fonts);\n }\n return this.pdfNames;\n };\n /**\n * Add `RequireProcedureSet` into procset array.\n * @private\n */\n PdfResources.prototype.requireProcedureSet = function (procedureSetName) {\n if (procedureSetName == null) {\n throw new Error('ArgumentNullException:procedureSetName');\n }\n var procSets = this.items.getValue(this.dictionaryProperties.procset);\n if (procSets == null) {\n procSets = new PdfArray();\n this.items.setValue(this.dictionaryProperties.procset, procSets);\n }\n var name = new PdfName(procedureSetName);\n if (!procSets.contains(name)) {\n procSets.add(name);\n }\n };\n //Helper Methods\n /**\n * `Remove font` from array.\n * @private\n */\n PdfResources.prototype.removeFont = function (name) {\n var key = null;\n var keys = this.pdfNames.keys();\n for (var index = 0; index < this.pdfNames.size(); index++) {\n if (this.pdfNames.getValue(keys[index]) === new PdfName(name)) {\n key = keys[index];\n break;\n }\n }\n if (key != null) {\n this.pdfNames.remove(key);\n }\n };\n /**\n * Generates `Unique string name`.\n * @private\n */\n PdfResources.prototype.generateName = function () {\n var name = Guid.getNewGuidString();\n return name;\n };\n PdfResources.prototype.add = function (arg1, arg2) {\n if (arg1 instanceof PdfFont) {\n var dictionary = null;\n var fonts = this.items.getValue(this.dictionaryProperties.font);\n if (fonts != null) {\n var reference = fonts;\n dictionary = fonts;\n dictionary = fonts;\n }\n else {\n dictionary = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.font, dictionary);\n }\n dictionary.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfTemplate) {\n var xobjects = void 0;\n xobjects = this.items.getValue(this.dictionaryProperties.xObject);\n // Create fonts dictionary.\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n xobjects.items.setValue(arg2.value, new PdfReferenceHolder(arg1.element));\n }\n else if (arg1 instanceof PdfBrush) {\n if (arg1 instanceof PdfGradientBrush || arg1 instanceof PdfTilingBrush) {\n var savable = arg1.element;\n if (savable != null) {\n var pattern = this.items.getValue(this.dictionaryProperties.pattern);\n // Create a new pattern dictionary.\n if (pattern == null) {\n pattern = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.pattern, pattern);\n }\n pattern.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n }\n }\n else if (arg1 instanceof PdfTransparency) {\n var savable = arg1.element;\n var transDic = null;\n transDic = this.items.getValue(this.dictionaryProperties.extGState);\n // Create a new pattern dictionary.\n if (transDic == null) {\n transDic = new PdfDictionary();\n this.items.setValue(this.dictionaryProperties.extGState, transDic);\n }\n transDic.items.setValue(arg2.value, new PdfReferenceHolder(savable));\n }\n else {\n /* tslint:disable */\n var xobjects = this.Dictionary.items.getValue(this.dictionaryProperties.xObject);\n var parentXObjects = void 0;\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects = this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.getValue(this.dictionaryProperties.xObject);\n }\n var values = this.Dictionary.items.values();\n var hasSameImageStream = false;\n var oldReference = void 0;\n if (typeof this.pdfDocument !== 'undefined' && (typeof parentXObjects === undefined || parentXObjects == null)) {\n parentXObjects = new PdfDictionary();\n this.pdfDocument.sections.element.items.getValue(this.dictionaryProperties.resources).items.setValue(this.dictionaryProperties.xObject, parentXObjects);\n }\n else if (typeof this.pdfDocument !== 'undefined') {\n var values_1 = parentXObjects.items.values();\n for (var i = 0; i < values_1.length; i++) {\n if (typeof values_1[i] !== 'undefined' && typeof values_1[i].element !== 'undefined') {\n if (values_1[i].element.data[0] === arg1.element.data[0]) {\n oldReference = values_1[i];\n hasSameImageStream = true;\n }\n }\n }\n }\n if (xobjects == null) {\n xobjects = new PdfDictionary();\n this.Dictionary.items.setValue(this.dictionaryProperties.xObject, xobjects);\n }\n if (hasSameImageStream && typeof oldReference !== 'undefined') {\n xobjects.items.setValue(arg2.value, oldReference);\n }\n else {\n var reference = new PdfReferenceHolder(arg1.element);\n xobjects.items.setValue(arg2.value, reference);\n if (typeof this.pdfDocument !== 'undefined') {\n parentXObjects.items.setValue(arg2.value, reference);\n }\n }\n /* tslint:enable */\n }\n };\n return PdfResources;\n}(PdfDictionary));\n/* tslint:disable */\n/**\n * Used to create new guid for resources.\n * @private\n */\nvar Guid = /** @__PURE__ @class */ (function () {\n function Guid() {\n }\n /**\n * Generate `new GUID`.\n * @private\n */\n Guid.getNewGuidString = function () {\n return 'aaaaaaaa-aaaa-4aaa-baaa-aaaaaaaaaaaa'.replace(/[ab]/g, function (c) {\n var random = Math.random() * 16 | 0;\n var result = c === 'a' ? random : (random & 0x3 | 0x8);\n return result.toString(16);\n });\n };\n return Guid;\n}());\n\n/* tslint:enable */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfTilingBrush` Implements a colored tiling brush.\n */\nvar PdfTilingBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$14(PdfTilingBrush, _super);\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @public\n */\n function PdfTilingBrush(arg1, arg2) {\n var _this = _super.call(this) || this;\n /**\n * Local variable to store Stroking.\n * @private\n */\n _this.mStroking = false;\n /**\n * Local variable to store the tile start location.\n * @private\n */\n _this.mLocation = new PointF(0, 0);\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n var rect = null;\n if (arg1 instanceof Rectangle) {\n rect = arg1;\n }\n else if (arg1 instanceof SizeF) {\n rect = new Rectangle(0, 0, arg1.width, arg1.height);\n }\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n }\n _this.brushStream = new PdfStream();\n _this.mResources = new PdfResources();\n _this.brushStream.items.setValue(_this.mDictionaryProperties.resources, _this.mResources);\n _this.setBox(rect);\n _this.setObligatoryFields();\n if (arg2 !== null && arg2 instanceof PdfPage) {\n _this.mPage = arg2;\n _this.graphics.colorSpace = arg2.document.colorSpace;\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfTilingBrush` class.\n * @private\n * @param rectangle The size of the smallest brush cell.\n * @param page The Current Page Object.\n * @param location The Tile start location.\n * @param matrix The matrix.\n */\n PdfTilingBrush.prototype.initialize = function (rectangle, page, location, matrix) {\n this.mPage = page;\n this.mLocation = location;\n this.mTransformationMatrix = matrix;\n this.tempBrushStream = this.brushStream;\n this.brushStream = new PdfStream();\n var tempResource = new PdfResources();\n this.brushStream.items.setValue(this.mDictionaryProperties.resources, tempResource);\n this.setBox(rectangle);\n this.setObligatoryFields();\n return this;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"location\", {\n //Properties\n /**\n * Location representing the start position of the tiles.\n * @public\n */\n get: function () {\n return this.mLocation;\n },\n set: function (value) {\n this.mLocation = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the obligatory fields.\n * @private\n */\n PdfTilingBrush.prototype.setObligatoryFields = function () {\n this.brushStream.items.setValue(this.mDictionaryProperties.patternType, new PdfNumber(1));\n // Tiling brush.\n this.brushStream.items.setValue(this.mDictionaryProperties.paintType, new PdfNumber(1));\n // Coloured.\n this.brushStream.items.setValue(this.mDictionaryProperties.tilingType, new PdfNumber(1));\n // Constant spacing.\n this.brushStream.items.setValue(this.mDictionaryProperties.xStep, new PdfNumber((this.mBox.right - this.mBox.left)));\n this.brushStream.items.setValue(this.mDictionaryProperties.yStep, new PdfNumber((this.mBox.bottom - this.mBox.top)));\n if ((this.mPage != null) && (this.mLocation != null)) {\n if ((this.mTransformationMatrix == null && typeof this.mTransformationMatrix === 'undefined')) {\n // Transform the tile origin to fit the location\n var tileTransform = (this.mPage.size.height % this.rectangle.size.height) - (this.mLocation.y);\n /* tslint:disable-next-line:max-line-length */\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([1, 0, 0, 1, this.mLocation.x, tileTransform]));\n }\n else {\n var tileTransform = 0;\n // Transform the tile origin to fit the location\n var elements = this.mTransformationMatrix.matrix.elements;\n if ((this.mPage.size.height > this.rectangle.size.height)) {\n tileTransform = (this.mTransformationMatrix.matrix.offsetY\n - (this.mPage.size.height % this.rectangle.size.height));\n }\n else {\n tileTransform = ((this.mPage.size.height % this.rectangle.size.height) + this.mTransformationMatrix.matrix.offsetY);\n }\n this.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray([\n elements[0], elements[1], elements[2], elements[3], elements[4], tileTransform\n ]));\n }\n }\n };\n /**\n * Sets the BBox coordinates.\n * @private\n */\n PdfTilingBrush.prototype.setBox = function (box) {\n this.mBox = box;\n var rect = new RectangleF(this.mBox.left, this.mBox.top, this.mBox.right, this.mBox.bottom);\n this.brushStream.items.setValue(this.mDictionaryProperties.bBox, PdfArray.fromRectangle(rect));\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"rectangle\", {\n //Properties\n /**\n * Gets the boundary box of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"size\", {\n /**\n * Gets the size of the smallest brush cell.\n * @public\n */\n get: function () {\n return this.mBox.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTilingBrush.prototype, \"graphics\", {\n /**\n * Gets Graphics context of the brush.\n */\n get: function () {\n if ((this.mGraphics == null && typeof this.mGraphics === 'undefined')) {\n var gr = new GetResourceEventHandler(this);\n var g = new PdfGraphics(this.size, gr, this.brushStream);\n this.mGraphics = g;\n this.mResources = this.getResources();\n this.mGraphics.initializeCoordinates();\n }\n return this.mGraphics;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the resources and modifies the template dictionary.\n * @public\n */\n PdfTilingBrush.prototype.getResources = function () {\n return this.mResources;\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"stroking\", {\n /**\n * Gets or sets a value indicating whether this PdfTilingBrush\n * is used for stroking operations.\n */\n get: function () {\n return this.mStroking;\n },\n set: function (value) {\n this.mStroking = value;\n },\n enumerable: true,\n configurable: true\n });\n //PdfBrush methods\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfTilingBrush.prototype.clone = function () {\n var brush = this.initialize(this.rectangle, this.mPage, this.location, this.mTransformationMatrix);\n if ((this.mTransformationMatrix != null) && (this.mTransformationMatrix.matrix != null)) {\n /* tslint:disable-next-line:max-line-length */\n brush.brushStream.items.setValue(this.mDictionaryProperties.matrix, new PdfArray(this.mTransformationMatrix.matrix.elements));\n }\n brush.brushStream.data = this.tempBrushStream.data;\n brush.mResources = new PdfResources(this.mResources);\n brush.brushStream.items.setValue(this.mDictionaryProperties.resources, brush.mResources);\n return brush;\n };\n /**\n * Monitors the changes of the brush and modify PDF state respectfully.\n * @param brush The brush\n * @param streamWriter The stream writer\n * @param getResources The get resources delegate.\n * @param saveChanges if set to true the changes should be saved anyway.\n * @param currentColorSpace The current color space.\n */\n /* tslint:disable-next-line:max-line-length */\n PdfTilingBrush.prototype.monitorChanges = function (brush, streamWriter, getResources, saveChanges, currentColorSpace) {\n var diff = false;\n if (brush !== this) {\n // Set the Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources1 = getResources.getResources();\n var name1 = resources1.getName(this);\n streamWriter.setColourWithPattern(null, name1, this.mStroking);\n diff = true;\n }\n else if (brush instanceof PdfTilingBrush) {\n // Set the /Pattern colour space.\n streamWriter.setColorSpace('Pattern', this.mStroking);\n // Set the pattern for non-stroking operations.\n var resources = getResources.getResources();\n var name_1 = resources.getName(this);\n streamWriter.setColourWithPattern(null, name_1, this.mStroking);\n diff = true;\n }\n return diff;\n };\n /**\n * Resets the changes, which were made by the brush.\n * In other words resets the state to the initial one.\n * @param streamWriter The stream writer.\n */\n PdfTilingBrush.prototype.resetChanges = function (streamWriter) {\n // We shouldn't do anything to reset changes.\n // All changes will be reset automatically by setting a new colour space.\n };\n Object.defineProperty(PdfTilingBrush.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @public\n */\n get: function () {\n return this.brushStream;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTilingBrush;\n}(PdfBrush));\n\n/**\n * PdfGraphics.ts class for EJ2-PDF\n */\n/**\n * `PdfGraphics` class represents a graphics context of the objects.\n * It's used for performing all the graphics operations.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * //graphics of the page\n * let page1Graphics : PdfGraphics = page1.graphics;\n * // draw the text on the page1 graphics\n * page1Graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfGraphics = /** @__PURE__ @class */ (function () {\n function PdfGraphics(arg1, arg2, arg3) {\n /**\n * Represents the `Current color space`.\n * @private\n */\n this.currentColorSpace = PdfColorSpace.Rgb;\n /**\n * Stores `previous rendering mode`.\n * @private\n */\n this.previousTextRenderingMode = TextRenderingMode.Fill;\n /**\n * Previous `character spacing` value or 0.\n * @private\n */\n this.previousCharacterSpacing = 0.0;\n /**\n * Previous `word spacing` value or 0.\n * @private\n */\n this.previousWordSpacing = 0.0;\n /**\n * The `previously used text scaling` value.\n * @private\n */\n this.previousTextScaling = 100.0;\n /**\n * Instance of `ProcedureSets` class.\n * @private\n */\n this.procedureSets = new ProcedureSets();\n /**\n * To check wihether it is a `direct text rendering`.\n * @default true\n * @private\n */\n this.isNormalRender = true;\n /**\n * check whether to `use font size` to calculate the shift.\n * @default false\n * @private\n */\n this.isUseFontSize = false;\n /**\n * check whether the font is in `italic type`.\n * @default false\n * @private\n */\n this.isItalic = false;\n /**\n * Check whether it is an `emf Text Matrix`.\n * @default false\n * @private\n */\n this.isEmfTextScaled = false;\n /**\n * Check whether it is an `emf` call.\n * @default false\n * @private\n */\n this.isEmf = false;\n /**\n * Check whether it is an `emf plus` call.\n * @default false\n * @private\n */\n this.isEmfPlus = false;\n /**\n * Check whether it is in `base line format`.\n * @default true\n * @private\n */\n this.isBaselineFormat = true;\n /**\n * Emf Text `Scaling Factor`.\n * @private\n */\n this.emfScalingFactor = new SizeF(0, 0);\n /**\n * To check whether the `last color space` of document and garphics is saved.\n * @private\n */\n this.colorSpaceChanged = false;\n /**\n * Stores an instance of `DictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isOverloadWithPosition = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n this.isPointOverload = false;\n /**\n * Current colorspaces.\n * @hidden\n * @private\n */\n this.currentColorSpaces = ['RGB', 'CMYK', 'GrayScale', 'Indexed'];\n /**\n * Checks the current image `is optimized` or not.\n * @default false.\n * @private\n */\n this.isImageOptimized = false;\n /**\n * Stores the `graphics states`.\n * @private\n */\n this.graphicsState = [];\n /**\n * Indicates whether the object `had trasparency`.\n * @default false\n * @private\n */\n this.istransparencySet = false;\n /**\n * Stores the instance of `PdfAutomaticFieldInfoCollection` class .\n * @default null\n * @private\n */\n this.internalAutomaticFields = null;\n /**\n * Stores the index of the start line that should draw with in the next page.\n * @private\n */\n this.startCutIndex = -1;\n this.getResources = arg2;\n this.canvasSize = arg1;\n if (arg3 instanceof PdfStreamWriter) {\n this.pdfStreamWriter = arg3;\n }\n else {\n this.pdfStreamWriter = new PdfStreamWriter(arg3);\n }\n this.initialize();\n }\n Object.defineProperty(PdfGraphics.prototype, \"stringLayoutResult\", {\n // Properties\n /**\n * Returns the `result` after drawing string.\n * @private\n */\n get: function () {\n return this.pdfStringLayoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"size\", {\n /**\n * Gets the `size` of the canvas.\n * @private\n */\n get: function () {\n return this.canvasSize;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"mediaBoxUpperRightBound\", {\n /**\n * Gets and Sets the value of `MediaBox upper right bound`.\n * @private\n */\n get: function () {\n if (typeof this.internalMediaBoxUpperRightBound === 'undefined') {\n this.internalMediaBoxUpperRightBound = 0;\n }\n return this.internalMediaBoxUpperRightBound;\n },\n set: function (value) {\n this.internalMediaBoxUpperRightBound = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"clientSize\", {\n /**\n * Gets the `size` of the canvas reduced by margins and page templates.\n * @private\n */\n get: function () {\n return new SizeF(this.clipBounds.width, this.clipBounds.height);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"colorSpace\", {\n /**\n * Gets or sets the current `color space` of the document\n * @private\n */\n get: function () {\n return this.currentColorSpace;\n },\n set: function (value) {\n this.currentColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"streamWriter\", {\n /**\n * Gets the `stream writer`.\n * @private\n */\n get: function () {\n return this.pdfStreamWriter;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"matrix\", {\n /**\n * Gets the `transformation matrix` reflecting current transformation.\n * @private\n */\n get: function () {\n if (this.transformationMatrix == null) {\n this.transformationMatrix = new PdfTransformationMatrix();\n }\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"layer\", {\n /**\n * Gets the `layer` for the graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"page\", {\n /**\n * Gets the `page` for this graphics, if exists.\n * @private\n */\n get: function () {\n return this.pageLayer.page;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphics.prototype, \"automaticFields\", {\n get: function () {\n if (this.internalAutomaticFields == null || typeof this.internalAutomaticFields === 'undefined') {\n this.internalAutomaticFields = new PdfAutomaticFieldInfoCollection();\n }\n return this.internalAutomaticFields;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` this instance.\n * @private\n */\n PdfGraphics.prototype.initialize = function () {\n this.bStateSaved = false;\n this.currentPen = null;\n this.currentBrush = null;\n this.currentFont = null;\n this.currentColorSpace = PdfColorSpace.Rgb;\n this.bCSInitialized = false;\n this.transformationMatrix = null;\n this.previousTextRenderingMode = (-1); //.Fill;\n this.previousCharacterSpacing = -1.0;\n this.previousWordSpacing = -1.0;\n this.previousTextScaling = -100.0;\n // this.m_trasparencies = null;\n this.currentStringFormat = null;\n this.clipBounds = new RectangleF(new PointF(0, 0), this.size);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n };\n PdfGraphics.prototype.drawPdfTemplate = function (template, location, size) {\n if (typeof size === 'undefined') {\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n this.drawPdfTemplate(template, location, template.size);\n }\n else {\n // let crossTable : PdfCrossTable = null;\n // if (this.pageLayer != null) {\n // crossTable = (this.page as PdfPage).section.parentDocument.crossTable;\n // }\n if (template == null) {\n throw Error('ArgumentNullException-template');\n }\n var scaleX = (template.width > 0) ? size.width / template.width : 1;\n var scaleY = (template.height > 0) ? size.height / template.height : 1;\n var bNeedScale = !(scaleX === 1 && scaleY === 1);\n // Save state.\n var state = this.save();\n // Take into consideration that rect location is bottom/left.\n var matrix = new PdfTransformationMatrix();\n if (this.pageLayer != null) {\n this.getTranslateTransform(location.x, location.y + size.height, matrix);\n }\n if (bNeedScale) {\n this.getScaleTransform(scaleX, scaleY, matrix);\n }\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n var name_1 = resources.getName(template);\n this.pdfStreamWriter.executeObject(name_1);\n // Restore state.\n this.restore(state);\n //Transfer automatic fields from template.\n var g = template.graphics;\n if (g != null) {\n for (var index = 0; index < g.automaticFields.automaticFields.length; index++) {\n var fieldInfo = g.automaticFields.automaticFields[index];\n var newLocation = new PointF(fieldInfo.location.x + location.x, fieldInfo.location.y + location.y);\n var scalingX = template.size.width == 0 ? 0 : size.width / template.size.width;\n var scalingY = template.size.height == 0 ? 0 : size.height / template.size.height;\n this.automaticFields.add(new PdfAutomaticFieldInfo(fieldInfo.field, newLocation, scalingX, scalingY));\n this.page.dictionary.modify();\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageB);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageC);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.imageI);\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n }\n };\n /* tslint:disable */\n /**\n * @public\n */\n PdfGraphics.prototype.drawString = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9) {\n if (typeof arg1 === 'string' && arg2 instanceof PdfFont && (arg3 instanceof PdfPen || arg3 === null) && (arg4 instanceof PdfBrush || arg4 === null) && typeof arg5 === 'number' && typeof arg6 === 'number' && (arg7 instanceof PdfStringFormat || arg7 === null) && typeof arg8 === 'undefined') {\n this.isOverloadWithPosition = true;\n this.drawString(arg1, arg2, arg3, arg4, arg5, arg6, (this.clientSize.width - arg5), 0, arg7);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n var temparg7 = arg7;\n var temparg8 = arg8;\n var temparg9 = arg9;\n var layouter = new PdfStringLayouter();\n var result = layouter.layout(arg1, arg2, temparg9, new SizeF(temparg7, temparg8), this.isOverloadWithPosition, this.clientSize);\n if (!result.empty) {\n var rect = this.checkCorrectLayoutRectangle(result.actualSize, temparg5, temparg6, temparg9);\n if (temparg7 <= 0) {\n temparg5 = rect.x;\n temparg7 = rect.width;\n }\n if (temparg8 <= 0) {\n temparg6 = rect.y;\n temparg8 = rect.height;\n }\n this.drawStringLayoutResult(result, arg2, temparg3, temparg4, new RectangleF(temparg5, temparg6, temparg7, temparg8), temparg9);\n this.isEmfTextScaled = false;\n this.emfScalingFactor = new SizeF(0, 0);\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n this.isNormalRender = true;\n this.pdfStringLayoutResult = result;\n this.isUseFontSize = false;\n }\n }; /* tslint:enable */\n PdfGraphics.prototype.drawLine = function (arg1, arg2, arg3, arg4, arg5) {\n if (arg2 instanceof PointF) {\n var temparg2 = arg2;\n var temparg3 = arg3;\n this.drawLine(arg1, temparg2.x, temparg2.y, temparg3.x, temparg3.y);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n this.stateControl(arg1, null, null);\n var sw = this.streamWriter;\n sw.beginPath(temparg2, temparg3);\n sw.appendLineSegment(temparg4, temparg5);\n sw.strokePath();\n this.getResources.getResources().requireProcedureSet(this.procedureSets.pdf);\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawRectangle = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof PdfPen && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(arg1, null, arg2, temparg3, arg4, arg5);\n }\n else if (arg1 instanceof PdfBrush && typeof arg2 === 'number') {\n var temparg3 = arg3;\n this.drawRectangle(null, arg1, arg2, temparg3, arg4, arg5);\n }\n else {\n var temparg3 = arg3;\n var temparg4 = arg4;\n var temparg5 = arg5;\n var temparg6 = arg6;\n if ((arg2 instanceof PdfTilingBrush)) {\n this.bCSInitialized = false;\n var xOffset = (this.matrix.matrix.offsetX + temparg3);\n var yOffset = void 0;\n if (((this.layer != null) && (this.layer.page != null))) {\n yOffset = ((this.layer.page.size.height - this.matrix.matrix.offsetY) + temparg4);\n }\n else {\n yOffset = ((this.clientSize.height - this.matrix.matrix.offsetY) + temparg4);\n }\n (arg2).location = new PointF(xOffset, yOffset);\n (arg2).graphics.colorSpace = this.colorSpace;\n }\n else if ((arg2 instanceof PdfGradientBrush)) {\n arg2.colorSpace = this.colorSpace;\n }\n if (arg2 instanceof PdfSolidBrush && arg2.color.isEmpty) {\n arg2 = null;\n }\n var temparg1 = arg1;\n var temparg2 = arg2;\n this.stateControl(temparg1, temparg2, null);\n this.streamWriter.appendRectangle(temparg3, temparg4, temparg5, temparg6);\n this.drawPathHelper(temparg1, temparg2, false);\n }\n };\n PdfGraphics.prototype.drawPathHelper = function (arg1, arg2, arg3, arg4) {\n if (typeof arg3 === 'boolean') {\n var temparg3 = arg3;\n this.drawPathHelper(arg1, arg2, PdfFillMode.Winding, temparg3);\n }\n else {\n var temparg3 = arg3;\n var isPen = arg1 != null;\n var isBrush = arg2 != null;\n var isEvenOdd = (temparg3 === PdfFillMode.Alternate);\n if (isPen && isBrush) {\n this.streamWriter.fillStrokePath(isEvenOdd);\n }\n else if (!isPen && !isBrush) {\n this.streamWriter.endPath();\n }\n else if (isPen) {\n this.streamWriter.strokePath();\n }\n else {\n this.streamWriter.fillPath(isEvenOdd);\n }\n }\n };\n /* tslint:disable */\n PdfGraphics.prototype.drawImage = function (arg1, arg2, arg3, arg4, arg5) {\n if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n var size = arg1.physicalDimension;\n this.drawImage(arg1, arg2, arg3, size.width, size.height);\n }\n else {\n var temparg2 = arg2;\n var temparg3 = arg3;\n var temparg5 = arg5;\n arg1.save();\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(temparg2, (temparg3 + temparg5), matrix);\n this.getScaleTransform(arg4, arg5, matrix);\n this.pdfStreamWriter.write('q');\n this.pdfStreamWriter.modifyCtm(matrix);\n // Output template.\n var resources = this.getResources.getResources();\n if (typeof this.pageLayer !== 'undefined' && this.page != null) {\n resources.document = this.page.document;\n }\n var name_2 = resources.getName(arg1);\n if (typeof this.pageLayer !== 'undefined') {\n this.page.setResources(resources);\n }\n this.pdfStreamWriter.executeObject(name_2);\n this.pdfStreamWriter.write(Operators.restoreState);\n this.pdfStreamWriter.write(Operators.newLine);\n var resource = this.getResources.getResources();\n resource.requireProcedureSet(this.procedureSets.imageB);\n resource.requireProcedureSet(this.procedureSets.imageC);\n resource.requireProcedureSet(this.procedureSets.imageI);\n resource.requireProcedureSet(this.procedureSets.text);\n }\n };\n //Implementation\n /* tslint:disable */\n /**\n * Returns `bounds` of the line info.\n * @private\n */\n PdfGraphics.prototype.getLineBounds = function (lineIndex, result, font, layoutRectangle, format) {\n var bounds;\n if (!result.empty && lineIndex < result.lineCount && lineIndex >= 0) {\n var line = result.lines[lineIndex];\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var y = vShift + layoutRectangle.y + (result.lineHeight * lineIndex);\n var lineWidth = line.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(line, format, layoutRectangle, (lineIndex === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x = layoutRectangle.x + hShift;\n /* tslint:disable */\n var width = (!this.shouldJustify(line, layoutRectangle.width, format)) ? lineWidth - lineIndent : layoutRectangle.width - lineIndent; /* tslint:enable */\n var height = result.lineHeight;\n bounds = new RectangleF(x, y, width, height);\n }\n else {\n bounds = new RectangleF(0, 0, 0, 0);\n }\n return bounds;\n };\n /**\n * Creates `lay outed rectangle` depending on the text settings.\n * @private\n */\n PdfGraphics.prototype.checkCorrectLayoutRectangle = function (textSize, x, y, format) {\n var layoutedRectangle = new RectangleF(x, y, textSize.width, textSize.width);\n if (format != null) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n layoutedRectangle.x -= layoutedRectangle.width / 2;\n break;\n case PdfTextAlignment.Right:\n layoutedRectangle.x -= layoutedRectangle.width;\n break;\n }\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n layoutedRectangle.y -= layoutedRectangle.height / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n layoutedRectangle.y -= layoutedRectangle.height;\n break;\n }\n }\n return layoutedRectangle;\n };\n /**\n * Sets the `layer` for the graphics.\n * @private\n */\n PdfGraphics.prototype.setLayer = function (layer) {\n this.pageLayer = layer;\n var page = layer.page;\n if (page != null && typeof page !== 'undefined') {\n page.beginSave = this.pageSave;\n }\n };\n /**\n * Adding page number field before page saving.\n * @private\n */\n /* tslint:disable */\n PdfGraphics.prototype.pageSave = function (page) {\n if (page.graphics.automaticFields != null) {\n for (var i = 0; i < page.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = page.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(page.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n };\n /**\n * `Draws a layout result`.\n * @private\n */\n PdfGraphics.prototype.drawStringLayoutResult = function (result, font, pen, brush, layoutRectangle, format) {\n if (!result.empty) {\n this.applyStringSettings(font, pen, brush, format, layoutRectangle);\n // Set text scaling\n var textScaling = (format != null) ? format.horizontalScalingFactor : 100.0;\n if (textScaling !== this.previousTextScaling && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setTextScaling(textScaling);\n this.previousTextScaling = textScaling;\n }\n var height = (format == null || format.lineSpacing === 0) ? font.height : format.lineSpacing + font.height;\n var subScript = (format != null && format.subSuperScript === PdfSubSuperScript.SubScript);\n var shift = 0;\n shift = (subScript) ? height - (font.height + font.metrics.getDescent(format)) : (height - font.metrics.getAscent(format));\n this.shift = shift;\n this.pdfStreamWriter.startNextLine(layoutRectangle.x, layoutRectangle.y - shift);\n this.pdfStreamWriter.setLeading(+height);\n var resultHeight = 0;\n var remainingString = '';\n for (var i = 0; i < result.lines.length; i++) {\n resultHeight += result.lineHeight;\n if ((layoutRectangle.y + resultHeight) > this.clientSize.height) {\n this.startCutIndex = i;\n break;\n }\n }\n for (var j = this.startCutIndex; (j < result.lines.length && j >= 0); j++) {\n remainingString += result.lines[j].text;\n }\n var bounds = new RectangleF(layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height);\n this.drawLayoutResult(result, font, format, layoutRectangle);\n this.underlineStrikeoutText(pen, brush, result, font, bounds, format);\n this.isEmfPlus = false;\n this.isUseFontSize = false;\n if (this.startCutIndex !== -1) {\n var page = this.getNextPage();\n page.graphics.drawString(remainingString, font, pen, brush, layoutRectangle.x, 0, layoutRectangle.width, 0, format);\n }\n }\n else {\n throw new Error('ArgumentNullException:result');\n }\n };\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGraphics.prototype.getNextPage = function () {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n return nextPage;\n };\n PdfGraphics.prototype.setClip = function (rectangle, mode) {\n if (typeof mode === 'undefined') {\n this.setClip(rectangle, PdfFillMode.Winding);\n }\n else {\n this.pdfStreamWriter.appendRectangle(rectangle);\n this.pdfStreamWriter.clipPath((mode === PdfFillMode.Alternate));\n }\n };\n /**\n * Applies all the `text settings`.\n * @private\n */\n PdfGraphics.prototype.applyStringSettings = function (font, pen, brush, format, bounds) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if ((brush instanceof PdfGradientBrush)) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n var tm = this.getTextRenderingMode(pen, brush, format);\n this.stateControl(pen, brush, font, format);\n this.pdfStreamWriter.beginText();\n if ((tm) !== this.previousTextRenderingMode) {\n this.pdfStreamWriter.setTextRenderingMode(tm);\n this.previousTextRenderingMode = tm;\n }\n // Set character spacing.\n var cs = (format != null) ? format.characterSpacing : 0;\n if (cs !== this.previousCharacterSpacing && !this.isEmfTextScaled) {\n this.pdfStreamWriter.setCharacterSpacing(cs);\n this.previousCharacterSpacing = cs;\n }\n // Set word spacing.\n // NOTE: it works only if the space code is equal to 32 (0x20).\n var ws = (format != null) ? format.wordSpacing : 0;\n if (ws !== this.previousWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(ws);\n this.previousWordSpacing = ws;\n }\n };\n /**\n * Calculates `shift value` if the text is vertically aligned.\n * @private\n */\n PdfGraphics.prototype.getTextVerticalAlignShift = function (textHeight, boundsHeight, format) {\n var shift = 0;\n if (boundsHeight >= 0 && format != null && format.lineAlignment !== PdfVerticalAlignment.Top) {\n switch (format.lineAlignment) {\n case PdfVerticalAlignment.Middle:\n shift = (boundsHeight - textHeight) / 2;\n break;\n case PdfVerticalAlignment.Bottom:\n shift = boundsHeight - textHeight;\n break;\n }\n }\n return shift;\n };\n /* tslint:disable */\n /**\n * `Draws layout result`.\n * @private\n */\n PdfGraphics.prototype.drawLayoutResult = function (result, font, format, layoutRectangle) {\n var vAlignShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, vAlignShift);\n }\n var ttfFont = font;\n var unicode = (ttfFont != null && ttfFont.isUnicode);\n var embed = (ttfFont != null && ttfFont.isEmbedFont);\n var lines = result.lines;\n for (var i = 0, len = lines.length; (i < len && i !== this.startCutIndex); i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hAlignShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hAlignShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(hAlignShift, 0);\n }\n if (unicode) {\n this.drawUnicodeLine(lineInfo, layoutRectangle, font, format);\n }\n else {\n this.drawAsciiLine(lineInfo, layoutRectangle, font, format);\n }\n if (hAlignShift !== 0 && !this.isEmfTextScaled) {\n this.pdfStreamWriter.startNextLine(-hAlignShift, 0);\n }\n if (this.isOverloadWithPosition && lines.length > 1) {\n this.pdfStreamWriter.startNextLine(-(layoutRectangle.x), 0);\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n this.isOverloadWithPosition = false;\n this.isPointOverload = true;\n }\n }\n this.getResources.getResources().requireProcedureSet(this.procedureSets.text);\n if (vAlignShift !== 0) {\n this.pdfStreamWriter.startNextLine(0, -(vAlignShift - result.lineHeight));\n }\n this.pdfStreamWriter.endText();\n };\n /**\n * `Draws Ascii line`.\n * @private\n */\n PdfGraphics.prototype.drawAsciiLine = function (lineInfo, layoutRectangle, font, format) {\n this.justifyLine(lineInfo, layoutRectangle.width, format);\n var value = '';\n if (lineInfo.text.indexOf('(') !== -1 || lineInfo.text.indexOf(')') !== -1) {\n for (var i = 0; i < lineInfo.text.length; i++) {\n if (lineInfo.text[i] === '(') {\n value += '\\\\\\(';\n }\n else if (lineInfo.text[i] === ')') {\n value += '\\\\\\)';\n }\n else {\n value += lineInfo.text[i];\n }\n }\n }\n if (value === '') {\n value = lineInfo.text;\n }\n var line = '(' + value + ')';\n this.pdfStreamWriter.showNextLineText(new PdfString(line));\n };\n /**\n * Draws unicode line.\n * @private\n */\n PdfGraphics.prototype.drawUnicodeLine = function (lineInfo, layoutRectangle, font, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n var useWordSpace = (format !== null && typeof format !== 'undefined' && (format.wordSpacing !== 0 || format.alignment === PdfTextAlignment.Justify));\n var ttfFont = font;\n var wordSpacing = this.justifyLine(lineInfo, layoutRectangle.width, format);\n var rtlRender = new RtlRenderer();\n if (rtl || (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None)) {\n var blocks = null;\n var rightAlign = (format !== null && typeof format !== 'undefined' && format.alignment === PdfTextAlignment.Right);\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n blocks = rtlRender.layout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n blocks = rtlRender.layout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n var words = null;\n if (blocks.length > 1) {\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n /* tslint:disable-next-line:max-line-length */\n words = rtlRender.splitLayout(line, ttfFont, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, useWordSpace, format);\n }\n else {\n words = rtlRender.splitLayout(line, ttfFont, rightAlign, useWordSpace, format);\n }\n }\n else {\n words = [line];\n }\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n if (useWordSpace) {\n var result = this.breakUnicodeLine(line, ttfFont, null);\n var blocks = result.tokens;\n var words = result.words;\n this.drawUnicodeBlocks(blocks, words, ttfFont, format, wordSpacing);\n }\n else {\n var token = this.convertToUnicode(line, ttfFont);\n var value = this.getUnicodeString(token);\n this.streamWriter.showNextLineText(value);\n }\n }\n };\n /**\n * Draws array of unicode tokens.\n */\n /* tslint:disable */\n PdfGraphics.prototype.drawUnicodeBlocks = function (blocks, words, font, format, wordSpacing) {\n /* tslint:enable */\n if (blocks == null) {\n throw new Error('Argument Null Exception : blocks');\n }\n if (words == null) {\n throw new Error('Argument Null Exception : words');\n }\n if (font == null) {\n throw new Error('Argument Null Exception : font');\n }\n this.streamWriter.startNextLine();\n var x = 0;\n var xShift = 0;\n var firstLineIndent = 0;\n var paragraphIndent = 0;\n try {\n if (format !== null && typeof format !== 'undefined') {\n firstLineIndent = format.firstLineIndent;\n paragraphIndent = format.paragraphIndent;\n format.firstLineIndent = 0;\n format.paragraphIndent = 0;\n }\n var spaceWidth = font.getCharWidth(StringTokenizer.whiteSpace, format) + wordSpacing;\n var characterSpacing = (format != null) ? format.characterSpacing : 0;\n var wordSpace = (format !== null && typeof format !== 'undefined' && wordSpacing === 0) ? format.wordSpacing : 0;\n spaceWidth += characterSpacing + wordSpace;\n for (var i = 0; i < blocks.length; i++) {\n var token = blocks[i];\n var word = words[i];\n var tokenWidth = 0;\n if (x !== 0) {\n this.streamWriter.startNextLine(x, 0);\n }\n if (word.length > 0) {\n tokenWidth += /*Utils.Round(*/ font.measureString(word, format).width /*)*/;\n tokenWidth += characterSpacing;\n var val = this.getUnicodeString(token);\n this.streamWriter.showText(val);\n }\n if (i !== blocks.length - 1) {\n x = tokenWidth + spaceWidth;\n xShift += x;\n }\n }\n // Rolback current line position.\n if (xShift > 0) {\n this.streamWriter.startNextLine(-xShift, 0);\n }\n }\n finally {\n if (format !== null && typeof format !== 'undefined') {\n format.firstLineIndent = firstLineIndent;\n format.paragraphIndent = paragraphIndent;\n }\n }\n };\n /**\n * Breakes the unicode line to the words and converts symbols to glyphs.\n */\n PdfGraphics.prototype.breakUnicodeLine = function (line, ttfFont, words) {\n if (line === null) {\n throw new Error('Argument Null Exception : line');\n }\n words = line.split(null);\n var tokens = [];\n for (var i = 0; i < words.length; i++) {\n // Reconvert string according to unicode standard.\n var word = words[i];\n var token = this.convertToUnicode(word, ttfFont);\n tokens[i] = token;\n }\n return { tokens: tokens, words: words };\n };\n /**\n * Creates PdfString from the unicode text.\n */\n PdfGraphics.prototype.getUnicodeString = function (token) {\n if (token === null) {\n throw new Error('Argument Null Exception : token');\n }\n var val = new PdfString(token);\n val.converted = true;\n val.encode = InternalEnum.ForceEncoding.Ascii;\n return val;\n };\n /**\n * Converts to unicode format.\n */\n PdfGraphics.prototype.convertToUnicode = function (text, ttfFont) {\n var token = null;\n if (text == null) {\n throw new Error('Argument Null Exception : text');\n }\n if (ttfFont == null) {\n throw new Error('Argument Null Exception : ttfFont');\n }\n if (ttfFont.fontInternal instanceof UnicodeTrueTypeFont) {\n var ttfReader = ttfFont.fontInternal.ttfReader;\n ttfFont.setSymbols(text);\n token = ttfReader.convertString(text);\n var bytes = PdfString.toUnicodeArray(token, false);\n token = PdfString.byteToString(bytes);\n }\n return token;\n };\n /**\n * `Justifies` the line if needed.\n * @private\n */\n PdfGraphics.prototype.justifyLine = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var shouldJustify = this.shouldJustify(lineInfo, boundsWidth, format);\n var hasWordSpacing = (format != null && format.wordSpacing !== 0);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var wordSpace = 0;\n if (shouldJustify) {\n // Correct line width.\n if (hasWordSpacing) {\n lineWidth -= (whitespacesCount * format.wordSpacing);\n }\n var difference = boundsWidth - lineWidth;\n wordSpace = difference / whitespacesCount;\n this.pdfStreamWriter.setWordSpacing(wordSpace);\n }\n else {\n // If there is justifying, but the line shouldn't be justified, restore default word spacing.\n if (hasWordSpacing) {\n this.pdfStreamWriter.setWordSpacing(format.wordSpacing);\n }\n else {\n this.pdfStreamWriter.setWordSpacing(0);\n }\n }\n return wordSpace;\n };\n /**\n * `Reset` or reinitialize the current graphic value.\n * @private\n */\n PdfGraphics.prototype.reset = function (size) {\n this.canvasSize = size;\n this.streamWriter.clear();\n this.initialize();\n this.initializeCoordinates();\n };\n /**\n * Checks whether the line should be `justified`.\n * @private\n */\n PdfGraphics.prototype.shouldJustify = function (lineInfo, boundsWidth, format) {\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var justifyStyle = (format != null && format.alignment === PdfTextAlignment.Justify);\n var goodWidth = (boundsWidth >= 0 && lineWidth < boundsWidth);\n var symbols = StringTokenizer.spaces;\n var whitespacesCount = StringTokenizer.getCharsCount(line, symbols);\n var hasSpaces = (whitespacesCount > 0 && line[0] !== StringTokenizer.whiteSpace);\n var goodLineBreakStyle = ((lineInfo.lineType & LineType.LayoutBreak) > 0);\n /* tslint:disable */\n var shouldJustify = (justifyStyle && goodWidth && hasSpaces && (goodLineBreakStyle || format.alignment === PdfTextAlignment.Justify)); /* tslint:enable */\n return shouldJustify;\n };\n /* tslint:disable */\n /**\n * Emulates `Underline, Strikeout` of the text if needed.\n * @private\n */\n PdfGraphics.prototype.underlineStrikeoutText = function (pen, brush, result, font, layoutRectangle, format) {\n if (font.underline || font.strikeout) {\n // Calculate line width.\n var linePen = this.createUnderlineStikeoutPen(pen, brush, font, format);\n if (linePen != null) {\n // Approximate line positions.\n var vShift = this.getTextVerticalAlignShift(result.actualSize.height, layoutRectangle.height, format);\n var underlineYOffset = 0;\n underlineYOffset = layoutRectangle.y + vShift + font.metrics.getAscent(format) + 1.5 * linePen.width;\n var strikeoutYOffset = layoutRectangle.y + vShift + font.metrics.getHeight(format) / 2 + 1.5 * linePen.width;\n var lines = result.lines;\n // Run through the text and draw lines.\n for (var i = 0, len = result.lineCount; i < len; i++) {\n var lineInfo = lines[i];\n var line = lineInfo.text;\n var lineWidth = lineInfo.width;\n var hShift = this.getHorizontalAlignShift(lineWidth, layoutRectangle.width, format);\n var lineIndent = this.getLineIndent(lineInfo, format, layoutRectangle, (i === 0));\n hShift += (!this.rightToLeft(format)) ? lineIndent : 0;\n var x1 = layoutRectangle.x + hShift;\n /* tslint:disable */\n var x2 = (!this.shouldJustify(lineInfo, layoutRectangle.width, format)) ? x1 + lineWidth - lineIndent : x1 + layoutRectangle.width - lineIndent;\n /* tslint:enable */\n if (font.underline) {\n var y = underlineYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n underlineYOffset += result.lineHeight;\n }\n if (font.strikeout) {\n var y = strikeoutYOffset;\n this.drawLine(linePen, x1, y, x2, y);\n strikeoutYOffset += result.lineHeight;\n }\n if (this.isPointOverload && lines.length > 1) {\n layoutRectangle.x = 0;\n layoutRectangle.width = this.clientSize.width;\n }\n }\n this.isPointOverload = false;\n }\n }\n };\n /**\n * `Creates a pen` for drawing lines in the text.\n * @private\n */\n PdfGraphics.prototype.createUnderlineStikeoutPen = function (pen, brush, font, format) {\n // Calculate line width.\n var lineWidth = font.metrics.getSize(format) / 20;\n var linePen = null;\n // Create a pen fo the lines.\n if (pen != null) {\n linePen = new PdfPen(pen.color, lineWidth);\n }\n else if (brush != null) {\n linePen = new PdfPen(brush, lineWidth);\n }\n return linePen;\n };\n /**\n * Return `text rendering mode`.\n * @private\n */\n PdfGraphics.prototype.getTextRenderingMode = function (pen, brush, format) {\n var tm = TextRenderingMode.None;\n if (pen != null && brush != null) {\n tm = TextRenderingMode.FillStroke;\n }\n else if (pen != null) {\n tm = TextRenderingMode.Stroke;\n }\n else {\n tm = TextRenderingMode.Fill;\n }\n if (format != null && format.clipPath) {\n tm |= TextRenderingMode.ClipFlag;\n }\n return tm;\n };\n /**\n * Returns `line indent` for the line.\n * @private\n */\n PdfGraphics.prototype.getLineIndent = function (lineInfo, format, layoutBounds, firstLine) {\n var lineIndent = 0;\n var firstParagraphLine = ((lineInfo.lineType & LineType.FirstParagraphLine) > 0);\n if (format != null && firstParagraphLine) {\n lineIndent = (firstLine) ? format.firstLineIndent : format.paragraphIndent;\n lineIndent = (layoutBounds.width > 0) ? Math.min(layoutBounds.width, lineIndent) : lineIndent;\n }\n return lineIndent;\n };\n /**\n * Calculates shift value if the line is `horizontaly aligned`.\n * @private\n */\n PdfGraphics.prototype.getHorizontalAlignShift = function (lineWidth, boundsWidth, format) {\n var shift = 0;\n if (boundsWidth >= 0 && format != null && format.alignment !== PdfTextAlignment.Left) {\n switch (format.alignment) {\n case PdfTextAlignment.Center:\n shift = (boundsWidth - lineWidth) / 2;\n break;\n case PdfTextAlignment.Right:\n shift = boundsWidth - lineWidth;\n break;\n }\n }\n return shift;\n };\n /**\n * Gets or sets the value that indicates `text direction` mode.\n * @private\n */\n PdfGraphics.prototype.rightToLeft = function (format) {\n var rtl = (format !== null && typeof format !== 'undefined' && format.rightToLeft);\n if (format !== null && typeof format !== 'undefined') {\n if (format.textDirection !== PdfTextDirection.None && typeof format.textDirection !== 'undefined') {\n rtl = true;\n }\n }\n return rtl;\n };\n PdfGraphics.prototype.stateControl = function (pen, brush, font, format) {\n if (typeof format === 'undefined') {\n this.stateControl(pen, brush, font, null);\n }\n else {\n if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n var saveState = false;\n if (brush !== null) {\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n if (this.colorSpaceChanged === false) {\n this.lastDocumentCS = this.pageLayer.page.document.colorSpace;\n this.lastGraphicsCS = this.pageLayer.page.graphics.colorSpace;\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n this.colorSpaceChanged = true;\n }\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n else if (pen != null) {\n if (typeof this.pageLayer !== 'undefined' && this.pageLayer != null) {\n /* tslint:disable */\n this.colorSpace = this.pageLayer.page.document.colorSpace;\n this.currentColorSpace = this.pageLayer.page.document.colorSpace;\n }\n this.initCurrentColorSpace(this.currentColorSpace);\n }\n this.penControl(pen, saveState);\n this.brushControl(brush, saveState);\n this.fontControl(font, format, saveState);\n }\n };\n /**\n * Initializes the `current color space`.\n * @private\n */\n PdfGraphics.prototype.initCurrentColorSpace = function (colorspace) {\n var re = this.getResources.getResources();\n if (!this.bCSInitialized) {\n if (this.currentColorSpace != PdfColorSpace.GrayScale) {\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], true);\n this.pdfStreamWriter.setColorSpace('Device' + this.currentColorSpaces[this.currentColorSpace], false);\n this.bCSInitialized = true;\n }\n else {\n this.pdfStreamWriter.setColorSpace('DeviceGray', true);\n this.pdfStreamWriter.setColorSpace('DeviceGray', false);\n this.bCSInitialized = true;\n }\n }\n };\n /**\n * Controls the `pen state`.\n * @private\n */\n PdfGraphics.prototype.penControl = function (pen, saveState) {\n if (pen != null) {\n this.currentPen = pen;\n /* tslint:disable */\n pen.monitorChanges(this.currentPen, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace, this.matrix.clone());\n /* tslint:enable */\n this.currentPen = pen.clone();\n }\n };\n /**\n * Controls the `brush state`.\n * @private\n */\n PdfGraphics.prototype.brushControl = function (brush, saveState) {\n if (brush != null && typeof brush !== 'undefined') {\n var b = brush.clone();\n var lgb = b;\n if (lgb !== null && typeof lgb !== 'undefined' && !(brush instanceof PdfSolidBrush) && !(brush instanceof PdfTilingBrush)) {\n var m = lgb.matrix;\n var matrix = this.matrix.clone();\n if ((m != null)) {\n m.multiply(matrix);\n matrix = m;\n }\n lgb.matrix = matrix;\n }\n this.currentBrush = lgb;\n b.monitorChanges(this.currentBrush, this.pdfStreamWriter, this.getResources, saveState, this.colorSpace);\n /* tslint:enable */\n this.currentBrush = brush;\n brush = null;\n }\n };\n /**\n * Saves the font and other `font settings`.\n * @private\n */\n PdfGraphics.prototype.fontControl = function (font, format, saveState) {\n if (font != null) {\n var curSubSuper = (format != null) ? format.subSuperScript : PdfSubSuperScript.None;\n /* tslint:disable */\n var prevSubSuper = (this.currentStringFormat != null) ? this.currentStringFormat.subSuperScript : PdfSubSuperScript.None; /* tslint:enable */\n if (saveState || font !== this.currentFont || curSubSuper !== prevSubSuper) {\n var resources = this.getResources.getResources();\n this.currentFont = font;\n this.currentStringFormat = format;\n var size = font.metrics.getSize(format);\n /* tslint:disable */\n this.isEmfTextScaled = false;\n var fontName = resources.getName(font);\n this.pdfStreamWriter.setFont(font, fontName, size);\n }\n }\n };\n PdfGraphics.prototype.setTransparency = function (arg1, arg2, arg3) {\n if (typeof arg2 === 'undefined') {\n this.istransparencySet = true;\n this.setTransparency(arg1, arg1, PdfBlendMode.Normal);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.setTransparency(arg1, arg2, PdfBlendMode.Normal);\n }\n else {\n if (this.trasparencies == null) {\n this.trasparencies = new TemporaryDictionary();\n }\n var transp = null;\n var td = new TransparencyData(arg1, arg2, arg3);\n if (this.trasparencies.containsKey(td)) {\n transp = this.trasparencies.getValue(td);\n }\n if (transp == null) {\n transp = new PdfTransparency(arg1, arg2, arg3);\n this.trasparencies.setValue(td, transp);\n }\n var resources = this.getResources.getResources();\n var name_3 = resources.getName(transp);\n var sw = this.streamWriter;\n sw.setGraphicsState(name_3);\n }\n };\n PdfGraphics.prototype.clipTranslateMargins = function (x, y, left, top, right, bottom) {\n if (x instanceof RectangleF && typeof y === 'undefined') {\n this.clipBounds = x;\n this.pdfStreamWriter.writeComment('Clip margins.');\n this.pdfStreamWriter.appendRectangle(x);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment('Translate co-ordinate system.');\n this.translateTransform(x.x, x.y);\n }\n else if (typeof x === 'number') {\n var clipArea = new RectangleF(left, top, this.size.width - left - right, this.size.height - top - bottom);\n this.clipBounds = clipArea;\n this.pdfStreamWriter.writeComment(\"Clip margins.\");\n this.pdfStreamWriter.appendRectangle(clipArea);\n this.pdfStreamWriter.closePath();\n this.pdfStreamWriter.clipPath(false);\n this.pdfStreamWriter.writeComment(\"Translate co-ordinate system.\");\n this.translateTransform(x, y);\n }\n };\n /**\n * `Updates y` co-ordinate.\n * @private\n */\n PdfGraphics.prototype.updateY = function (y) {\n return -y;\n };\n /**\n * Used to `translate the transformation`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set translate transform\n * page1.graphics.translateTransform(100, 100);\n * //\n * // draw the rectangle after applying translate transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 0, y : 0}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param offsetX The x-coordinate of the translation.\n * @param offsetY The y-coordinate of the translation.\n */\n PdfGraphics.prototype.translateTransform = function (offsetX, offsetY) {\n var matrix = new PdfTransformationMatrix();\n this.getTranslateTransform(offsetX, offsetY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Translates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getTranslateTransform = function (x, y, input) {\n input.translate(x, this.updateY(y));\n return input;\n };\n /* tslint:disable */\n /**\n * Applies the specified `scaling operation` to the transformation matrix of this Graphics by prepending it to the object's transformation matrix.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // apply scaling trasformation\n * page1.graphics.scaleTransform(1.5, 2);\n * //\n * // draw the rectangle after applying scaling transform\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param scaleX Scale factor in the x direction.\n * @param scaleY Scale factor in the y direction.\n */\n /* tslint:enable */\n PdfGraphics.prototype.scaleTransform = function (scaleX, scaleY) {\n var matrix = new PdfTransformationMatrix();\n this.getScaleTransform(scaleX, scaleY, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Scales` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getScaleTransform = function (x, y, input) {\n if (input == null) {\n input = new PdfTransformationMatrix();\n }\n input.scale(x, y);\n return input;\n };\n /**\n * Applies the specified `rotation` to the transformation matrix of this Graphics.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // set RotateTransform with 25 degree of angle\n * page1.graphics.rotateTransform(25);\n * //\n * // draw the rectangle after RotateTransformation\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param angle Angle of rotation in degrees.\n */\n PdfGraphics.prototype.rotateTransform = function (angle) {\n var matrix = new PdfTransformationMatrix();\n this.getRotateTransform(angle, matrix);\n this.pdfStreamWriter.modifyCtm(matrix);\n this.matrix.multiply(matrix);\n };\n /**\n * `Initializes coordinate system`.\n * @private\n */\n PdfGraphics.prototype.initializeCoordinates = function () {\n // Matrix equation: TM(T-1)=M', where T=[1 0 0 -1 0 h]\n this.pdfStreamWriter.writeComment('Change co-ordinate system to left/top.');\n // Translate co-ordinates only, don't flip.\n if (this.mediaBoxUpperRightBound !== -(this.size.height)) {\n if (this.cropBox == null) {\n if (this.mediaBoxUpperRightBound === this.size.height || this.mediaBoxUpperRightBound === 0) {\n this.translateTransform(0, this.updateY(this.size.height));\n }\n else {\n this.translateTransform(0, this.updateY(this.mediaBoxUpperRightBound));\n }\n }\n }\n };\n /**\n * `Rotates` coordinates of the input matrix.\n * @private\n */\n PdfGraphics.prototype.getRotateTransform = function (angle, input) {\n if (input == null || typeof input === 'undefined') {\n input = new PdfTransformationMatrix();\n }\n input.rotate(this.updateY(angle));\n return input;\n };\n /**\n * `Saves` the current state of this Graphics and identifies the saved state with a GraphicsState.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create a new page\n * let page1 : PdfPage = document.pages.add();\n * // create pen\n * let pen : PdfPen = new PdfPen(new PdfColor(0, 0, 0));\n * //\n * // save the graphics state\n * let state1 : PdfGraphicsState = page1.graphics.save();\n * //\n * page1.graphics.scaleTransform(1.5, 2);\n * // draw the rectangle\n * page1.graphics.drawRectangle(pen, new RectangleF({x : 100, y : 100}, {width : 100, height : 50}));\n * // restore the graphics state\n * page1.graphics.restore(state1);\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfGraphics.prototype.save = function () {\n var state = new PdfGraphicsState(this, this.matrix.clone());\n state.brush = this.currentBrush;\n state.pen = this.currentPen;\n state.font = this.currentFont;\n state.colorSpace = this.currentColorSpace;\n state.characterSpacing = this.previousCharacterSpacing;\n state.wordSpacing = this.previousWordSpacing;\n state.textScaling = this.previousTextScaling;\n state.textRenderingMode = this.previousTextRenderingMode;\n this.graphicsState.push(state);\n this.pdfStreamWriter.saveGraphicsState();\n return state;\n };\n PdfGraphics.prototype.restore = function (state) {\n if (typeof state === 'undefined') {\n if (this.graphicsState.length > 0) {\n this.doRestoreState();\n }\n }\n else {\n if (this.graphicsState.indexOf(state) !== -1) {\n for (;;) {\n if (this.graphicsState.length === 0) {\n break;\n }\n var popState = this.doRestoreState();\n if (popState === state) {\n break;\n }\n }\n }\n }\n };\n /**\n * `Restores graphics state`.\n * @private\n */\n PdfGraphics.prototype.doRestoreState = function () {\n var state = this.graphicsState.pop();\n this.transformationMatrix = state.matrix;\n this.currentBrush = state.brush;\n this.currentPen = state.pen;\n this.currentFont = state.font;\n this.currentColorSpace = state.colorSpace;\n this.previousCharacterSpacing = state.characterSpacing;\n this.previousWordSpacing = state.wordSpacing;\n this.previousTextScaling = state.textScaling;\n this.previousTextRenderingMode = state.textRenderingMode;\n this.pdfStreamWriter.restoreGraphicsState();\n return state;\n };\n /* tslint:enable */\n /**\n * `Draws the specified path`, using its original physical size, at the location specified by a coordinate pair.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * //Create new PDF path.\n * let path : PdfPath = new PdfPath();\n * //Add line path points.\n * path.addLine(new PointF(10, 100), new PointF(10, 200));\n * path.addLine(new PointF(100, 100), new PointF(100, 200));\n * path.addLine(new PointF(100, 200), new PointF(55, 150));\n * // set pen\n * let pen : PdfPen = new PdfPen(new PdfColor(255, 0, 0));\n * // set brush\n * let brush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the path\n * page1.graphics.drawPath(pen, brush, path);\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @param pen Color of the text.\n * @param brush Color of the text.\n * @param path Draw path.\n */\n PdfGraphics.prototype.drawPath = function (pen, brush, path) {\n if (brush instanceof PdfTilingBrush) {\n this.bCSInitialized = false;\n brush.graphics.colorSpace = this.colorSpace;\n }\n else if (brush instanceof PdfGradientBrush) {\n this.bCSInitialized = false;\n brush.colorSpace = this.colorSpace;\n }\n this.stateControl(pen, brush, null);\n this.buildUpPath(path.pathPoints, path.pathTypes);\n this.drawPathHelper(pen, brush, path.fillMode, false);\n };\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.drawArc = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n if (arg2 instanceof RectangleF) {\n this.drawArc(arg1, arg2.x, arg2.y, arg2.width, arg2.height, arg3, arg4);\n }\n else {\n if ((arg7 !== 0)) {\n this.stateControl(arg1, null, null);\n this.constructArcPath(arg2, arg3, (arg2 + arg4), (arg3 + arg5), arg6, arg7);\n this.drawPathHelper(arg1, null, false);\n }\n }\n };\n /**\n * Builds up the path.\n * @private\n */\n PdfGraphics.prototype.buildUpPath = function (arg1, arg2) {\n var cnt = arg1.length;\n for (var i = 0; i < cnt; ++i) {\n var typeValue = 0;\n var point = arg1[i];\n switch (((arg2[i] & (PdfGraphics.pathTypesValuesMask)))) {\n case PathPointType.Start:\n this.pdfStreamWriter.beginPath(point.x, point.y);\n break;\n case PathPointType.Bezier3:\n var p2 = new PointF(0, 0);\n var p3 = new PointF(0, 0);\n var result1 = this.getBezierPoints(arg1, arg2, i, p2, p3);\n this.pdfStreamWriter.appendBezierSegment(point, result1.p2, result1.p3);\n i = result1.i;\n break;\n case PathPointType.Line:\n this.pdfStreamWriter.appendLineSegment(point);\n break;\n default:\n throw new Error('ArithmeticException - Incorrect path formation.');\n }\n typeValue = arg2[i];\n this.checkFlags(typeValue);\n }\n };\n /**\n * Gets the bezier points from respective arrays.\n * @private\n */\n /* tslint:disable-next-line:max-line-length */\n PdfGraphics.prototype.getBezierPoints = function (points, types, i, p2, p3) {\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p2 = points[i];\n ++i;\n if ((((types[i] & PdfGraphics.pathTypesValuesMask)) === PathPointType.Bezier3)) {\n p3 = points[i];\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n }\n else {\n throw new Error('ArgumentException : errorMsg');\n }\n return { i: i, p2: p2, p3: p3 };\n };\n /**\n * Checks path point type flags.\n * @private\n */\n PdfGraphics.prototype.checkFlags = function (type) {\n if ((((type & (PathPointType.CloseSubpath))) === PathPointType.CloseSubpath)) {\n this.pdfStreamWriter.closePath();\n }\n };\n /**\n * Constructs the arc path using Bezier curves.\n * @private\n */\n PdfGraphics.prototype.constructArcPath = function (x1, y1, x2, y2, startAng, sweepAngle) {\n var points = this.getBezierArc(x1, y1, x2, y2, startAng, sweepAngle);\n if ((points.length === 0)) {\n return;\n }\n var pt = [points[0], points[1], points[2], points[3], points[4], points[5], points[6], points[7]];\n this.pdfStreamWriter.beginPath(pt[0], pt[1]);\n var i = 0;\n for (i = 0; i < points.length; i = i + 8) {\n pt = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.pdfStreamWriter.appendBezierSegment(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);\n }\n };\n /**\n * Gets the bezier points for arc constructing.\n * @private\n */\n PdfGraphics.prototype.getBezierArc = function (numX1, numY1, numX2, numY2, s1, e1) {\n if ((numX1 > numX2)) {\n var tmp = void 0;\n tmp = numX1;\n numX1 = numX2;\n numX2 = tmp;\n }\n if ((numY2 > numY1)) {\n var tmp = void 0;\n tmp = numY1;\n numY1 = numY2;\n numY2 = tmp;\n }\n var fragAngle1;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle1 = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle1 = (e1 / numFragments);\n }\n var xcen = ((numX1 + numX2) / 2);\n var ycen = ((numY1 + numY2) / 2);\n var rx = ((numX2 - numX1) / 2);\n var ry = ((numY2 - numY1) / 2);\n var halfAng = ((fragAngle1 * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointsList = [];\n for (var i = 0; (i < numFragments); i++) {\n var thetaValue0 = (((s1 + (i * fragAngle1)) * (Math.PI / 180)));\n var thetaValue1 = (((s1 + ((i + 1) * fragAngle1)) * (Math.PI / 180)));\n var cos0 = (Math.cos(thetaValue0));\n var cos1 = (Math.cos(thetaValue1));\n var sin0 = (Math.sin(thetaValue0));\n var sin1 = (Math.sin(thetaValue1));\n if ((fragAngle1 > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointsList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointsList;\n };\n // Constants\n /**\n * Specifies the mask of `path type values`.\n * @private\n */\n PdfGraphics.pathTypesValuesMask = 0xf;\n /**\n * Checks whether the object is `transparencyObject`.\n * @hidden\n * @private\n */\n PdfGraphics.transparencyObject = false;\n return PdfGraphics;\n}());\n/**\n * `GetResourceEventHandler` class is alternate for event handlers and delegates.\n * @private\n * @hidden\n */\nvar GetResourceEventHandler = /** @__PURE__ @class */ (function () {\n /**\n * Initialize instance of `GetResourceEventHandler` class.\n * Alternate for event handlers and delegates.\n * @private\n */\n function GetResourceEventHandler(sender) {\n this.sender = sender;\n }\n /**\n * Return the instance of `PdfResources` class.\n * @private\n */\n GetResourceEventHandler.prototype.getResources = function () {\n return this.sender.getResources();\n };\n return GetResourceEventHandler;\n}());\nvar PdfGraphicsState = /** @__PURE__ @class */ (function () {\n function PdfGraphicsState(graphics, matrix) {\n /**\n * Stores `previous rendering mode`.\n * @default TextRenderingMode.Fill\n * @private\n */\n this.internalTextRenderingMode = TextRenderingMode.Fill;\n /**\n * `Previous character spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalCharacterSpacing = 0.0;\n /**\n * `Previous word spacing` value or 0.\n * @default 0.0\n * @private\n */\n this.internalWordSpacing = 0.0;\n /**\n * The previously used `text scaling value`.\n * @default 100.0\n * @private\n */\n this.internalTextScaling = 100.0;\n /**\n * `Current color space`.\n * @default PdfColorSpace.Rgb\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n if (typeof graphics !== 'undefined') {\n this.pdfGraphics = graphics;\n this.transformationMatrix = matrix;\n }\n }\n Object.defineProperty(PdfGraphicsState.prototype, \"graphics\", {\n // Properties\n /**\n * Gets the parent `graphics object`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"matrix\", {\n /**\n * Gets the `current matrix`.\n * @private\n */\n get: function () {\n return this.transformationMatrix;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"characterSpacing\", {\n /**\n * Gets or sets the `current character spacing`.\n * @private\n */\n get: function () {\n return this.internalCharacterSpacing;\n },\n set: function (value) {\n this.internalCharacterSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"wordSpacing\", {\n /**\n * Gets or sets the `word spacing` value.\n * @private\n */\n get: function () {\n return this.internalWordSpacing;\n },\n set: function (value) {\n this.internalWordSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textScaling\", {\n /**\n * Gets or sets the `text scaling` value.\n * @private\n */\n get: function () {\n return this.internalTextScaling;\n },\n set: function (value) {\n this.internalTextScaling = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"pen\", {\n /**\n * Gets or sets the `current pen` object.\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"brush\", {\n /**\n * Gets or sets the `brush`.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"font\", {\n /**\n * Gets or sets the `current font` object.\n * @private\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"colorSpace\", {\n /**\n * Gets or sets the `current color space` value.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGraphicsState.prototype, \"textRenderingMode\", {\n /**\n * Gets or sets the `text rendering mode`.\n * @private\n */\n get: function () {\n return this.internalTextRenderingMode;\n },\n set: function (value) {\n this.internalTextRenderingMode = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGraphicsState;\n}());\nvar TransparencyData = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `TransparencyData` class.\n * @private\n */\n function TransparencyData(alphaPen, alphaBrush, blendMode) {\n this.alphaPen = alphaPen;\n this.alphaBrush = alphaBrush;\n this.blendMode = blendMode;\n }\n return TransparencyData;\n}());\n\n/**\n * The `PdfPageLayer` used to create layers in PDF document.\n * @private\n */\nvar PdfPageLayer = /** @__PURE__ @class */ (function () {\n function PdfPageLayer(page, streamClipPageTemplates) {\n // private bSaved : boolean;\n /**\n * Local Variable to store the `color space` of the document.\n * @private\n */\n this.pdfColorSpace = PdfColorSpace.Rgb;\n /**\n * Local Variable to set `visibility`.\n * @default true\n * @private\n */\n this.isVisible = true;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n this.sublayer = false;\n /**\n * Local variable to store `length` of the graphics.\n * @default 0\n * @private\n */\n this.contentLength = 0;\n /**\n * Instance for `PdfDictionaryProperties` Class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n if (page === null) {\n throw new Error('ArgumentNullException:page');\n }\n this.pdfPage = page;\n this.clipPageTemplates = true;\n if (typeof streamClipPageTemplates === 'undefined') {\n this.content = new PdfStream();\n }\n else if (streamClipPageTemplates instanceof PdfStream || streamClipPageTemplates === null) {\n if (streamClipPageTemplates === null) {\n throw new Error('ArgumentNullException:stream');\n }\n this.content = streamClipPageTemplates;\n }\n else {\n this.content = new PdfStream();\n this.clipPageTemplates = streamClipPageTemplates;\n }\n }\n Object.defineProperty(PdfPageLayer.prototype, \"colorSpace\", {\n // Properties\n /**\n * Get or set the `color space`.\n * @private\n */\n get: function () {\n return this.pdfColorSpace;\n },\n set: function (value) {\n this.pdfColorSpace = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"page\", {\n /**\n * Gets parent `page` of the layer.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layerId\", {\n /**\n * Gets and Sets the `id of the layer`.\n * @private\n */\n get: function () {\n return this.layerid;\n },\n set: function (value) {\n this.layerid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"name\", {\n /**\n * Gets or sets the `name` of the layer.\n * @private\n */\n get: function () {\n return this.layerName;\n },\n set: function (value) {\n this.layerName = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"visible\", {\n /**\n * Gets or sets the `visibility` of the layer.\n * @private\n */\n get: function () {\n return this.isVisible;\n },\n set: function (value) {\n this.isVisible = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"graphics\", {\n /**\n * Gets `Graphics` context of the layer, used to draw various graphical content on layer.\n * @private\n */\n get: function () {\n if ((this.pdfGraphics == null)) {\n this.initializeGraphics(this.page);\n }\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageLayer.prototype, \"layers\", {\n /**\n * Gets the collection of `PdfPageLayer`, this collection handle by the class 'PdfPageLayerCollection'.\n * @private\n */\n get: function () {\n if (this.layer == null) {\n this.layer = new PdfPageLayerCollection(this.page);\n this.layer.sublayer = true;\n return this.layer;\n }\n else {\n return this.layer;\n }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Adds` a new PDF Page layer.\n * @private\n */\n PdfPageLayer.prototype.add = function () {\n var layer = new PdfPageLayer(this.pdfPage);\n layer.name = '';\n return layer;\n };\n /**\n * Returns a value indicating the `sign` of a single-precision floating-point number.\n * @private\n */\n PdfPageLayer.prototype.sign = function (number) {\n if (number === 0) {\n return 0;\n }\n else if (number > 0) {\n return 1;\n }\n else {\n return -1;\n }\n };\n /**\n * `Initializes Graphics context` of the layer.\n * @private\n */\n PdfPageLayer.prototype.initializeGraphics = function (page) {\n var oPage = page;\n var gr = new GetResourceEventHandler(this.page);\n this.pdfGraphics = new PdfGraphics(page.size, gr, this.content);\n this.pdfGraphics.mediaBoxUpperRightBound = 0;\n if (oPage != null) {\n var sc = oPage.section.parent;\n if (sc != null) {\n this.pdfGraphics.colorSpace = sc.document.colorSpace;\n this.colorSpace = sc.document.colorSpace;\n }\n }\n // Transform coordinates to the left/top and activate margins.\n var isSame = (this.sign(page.origin.y) === this.sign(page.origin.x));\n // if (page != null) {\n if (page.origin.x >= 0 && page.origin.y >= 0 || !(isSame)) {\n this.pdfGraphics.initializeCoordinates();\n }\n else {\n // this.m_graphics.InitializeCoordinates(page);\n }\n var clipRect = oPage.section.getActualBounds(oPage, true);\n var margins = oPage.section.pageSettings.margins;\n if (this.clipPageTemplates) {\n if (page.origin.x >= 0 && page.origin.y >= 0) {\n this.pdfGraphics.clipTranslateMargins(clipRect);\n }\n }\n else {\n this.graphics.clipTranslateMargins(clipRect.x, clipRect.y, margins.left, margins.top, margins.right, margins.bottom);\n }\n this.pdfGraphics.setLayer(this);\n // this.bSaved = false;\n };\n Object.defineProperty(PdfPageLayer.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.content;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPageLayer;\n}());\n\n/**\n * PdfCollection.ts class for EJ2-PDF\n * The class used to handle the collection of PdF objects.\n */\nvar PdfCollection = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `Collection` class.\n * @private\n */\n function PdfCollection() {\n //\n }\n Object.defineProperty(PdfCollection.prototype, \"count\", {\n // Properties\n /**\n * Gets the `Count` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCollection.prototype, \"list\", {\n /**\n * Gets the `list` of stored objects.\n * @private\n */\n get: function () {\n if (typeof this.collection === 'undefined') {\n this.collection = [];\n }\n return this.collection;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCollection;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfPageLayerCollection.ts class for EJ2-PDF\n */\n/**\n * The class provides methods and properties to handle the collections of `PdfPageLayer`.\n */\nvar PdfPageLayerCollection = /** @__PURE__ @class */ (function (_super) {\n __extends$9(PdfPageLayerCollection, _super);\n function PdfPageLayerCollection(page) {\n var _this = _super.call(this) || this;\n /**\n * Stores the `number of first level layers` in the document.\n * @default 0\n * @private\n */\n _this.parentLayerCount = 0;\n /**\n * Indicates if `Sublayer` is present.\n * @default false\n * @private\n */\n _this.sublayer = false;\n /**\n * Stores the `optional content dictionary`.\n * @private\n */\n _this.optionalContent = new PdfDictionary();\n if (page instanceof PdfPageBase) {\n // if (page == null) {\n // throw new Error('ArgumentNullException:page');\n // }\n _this.page = page;\n var lPage = page;\n // if (lPage != null) {\n _this.parseLayers(lPage);\n // }\n }\n return _this;\n }\n PdfPageLayerCollection.prototype.items = function (index, value) {\n if (typeof index === 'number' && typeof value === 'undefined') {\n var obj = this.list[index];\n return obj;\n }\n else {\n if (value == null) {\n throw new Error('ArgumentNullException: layer');\n }\n if (value.page !== this.page) {\n throw new Error('ArgumentException: The layer belongs to another page');\n }\n // // Add/remove the layer.\n // let layer : PdfPageLayer = this.items(index);\n // if (layer != null) {\n // this.RemoveLayer(layer);\n // }\n // this.List[index] = value;\n // this.InsertLayer(index, value);\n }\n };\n PdfPageLayerCollection.prototype.add = function (firstArgument, secondArgument) {\n if (typeof firstArgument === 'undefined') {\n var layer = new PdfPageLayer(this.page);\n layer.name = '';\n this.add(layer);\n return layer;\n }\n else if (firstArgument instanceof PdfPageLayer) {\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var index = this.list.push(firstArgument);\n // Register layer.\n this.addLayer(index, firstArgument);\n return index;\n }\n else {\n return 0;\n }\n };\n /**\n * Registers `layer` at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.addLayer = function (index, layer) {\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.add(reference);\n };\n // private RemoveLayer(layer : PdfPageLayer) : void {\n // if (layer == null) {\n // throw new Error('ArgumentNullException:layer');\n // }\n // let reference : PdfReferenceHolder = new PdfReferenceHolder(layer);\n // if (this.page != null) {\n // this.page.Contents.Remove(reference);\n // }\n // }\n /**\n * Inserts `PdfPageLayer` into the collection at specified index.\n * @private\n */\n PdfPageLayerCollection.prototype.insert = function (index, layer) {\n // if (index < 0)\n // throw new ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\");\n // if (layer == null)\n // throw new ArgumentNullException(\"layer\");\n // if (layer.Page != m_page)\n // throw new ArgumentException(\"The layer belongs to another page\");\n var list = [];\n var length = this.list.length;\n for (var i = index; i < length; i++) {\n list.push(this.list.pop());\n }\n this.list.push(layer);\n for (var i = 0; i < list.length; i++) {\n this.list.push(list[i]);\n }\n // Register layer.\n this.insertLayer(index, layer);\n };\n /**\n * Registers layer at the page.\n * @private\n */\n PdfPageLayerCollection.prototype.insertLayer = function (index, layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException:layer');\n }\n var reference = new PdfReferenceHolder(layer);\n this.page.contents.insert(index, reference);\n };\n // tslint:disable\n /**\n * `Parses the layers`.\n * @private\n */\n PdfPageLayerCollection.prototype.parseLayers = function (loadedPage) {\n // if (loadedPage == null) {\n // throw new Error('ArgumentNullException:loadedPage');\n // }\n var contents = this.page.contents;\n var resource = this.page.getResources();\n var crossTable = null;\n crossTable = loadedPage.crossTable;\n // } else {\n // crossTable = (loadedPage as PdfLoadedPage).CrossTable;\n // Propertie = PdfCrossTable.Dereference(Resource[DictionaryProperties.Properties]) as PdfDictionary;\n // ocproperties = PdfCrossTable.Dereference((loadedPage as PdfLoadedPage).\n // Document.Catalog[DictionaryProperties.OCProperties]) as PdfDictionary;\n // }\n var saveStream = new PdfStream();\n var restoreStream = new PdfStream();\n var saveState = 'q';\n var restoreState = 'Q';\n // for (let index : number = 0; index < contents.Items.length; index++) {\n // let obj : IPdfPrimitive = contents[index];\n // let stream : PdfStream = crossTable.GetObject(obj) as PdfStream;\n // if (stream == null)\n // throw new PdfDocumentException(\"Invalid contents array.\");\n // // if (stream.Compress)\n // {\n // if (!loadedPage.Imported)\n // stream.Decompress();\n // }\n // byte[] contentId = stream.Data;\n // string str = PdfString.ByteToString(contentId);\n // if (!loadedPage.Imported && (contents.Count == 1) && ((stream.Data[stream.Data.Length - 2] ==\n // RestoreState) || (stream.Data[stream.Data.Length - 1] == RestoreState)))\n // {\n // byte[] content = stream.Data;\n // byte[] data = new byte[content.Length + 4];\n // data[0] = SaveState;\n // data[1] = NewLine;\n // content.CopyTo(data, 2);\n // data[data.Length - 2] = NewLine;\n // data[data.Length - 1] = RestoreState;\n // stream.Data = data;\n // }\n // if (ocproperties != null)\n // {\n // if (Propertie != null)\n // {\n // foreach (KeyValuePair prop in Propertie.Items)\n // {\n // String Key = prop.Key.ToString();\n // PdfReferenceHolder refh = prop.Value as PdfReferenceHolder;\n // PdfDictionary Dict = null;\n // if (refh != null)\n // {\n // Dict = refh.Object as PdfDictionary;\n // }\n // else\n // {\n // Dict = prop.Value as PdfDictionary;\n // }\n // PdfDictionary m_usage = PdfCrossTable.Dereference(Dict[DictionaryProperties.Usage]) as PdfDictionary;\n // if (m_usage != null)\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // PdfDictionary printoption = PdfCrossTable.Dereference(m_usage[DictionaryProperties.Print])\n // as PdfDictionary;\n // if (printoption != null)\n // {\n // layer.m_printOption = printoption;\n // foreach (KeyValuePair value in printoption.Items)\n // {\n // if (value.Key.Value.Equals(DictionaryProperties.PrintState))\n // {\n // string printState = (value.Value as PdfName).Value;\n // if (printState.Equals(DictionaryProperties.OCGON))\n // {\n // layer.PrintState = PdfPrintState.AlwaysPrint;\n // break;\n // }\n // else\n // {\n // layer.PrintState = PdfPrintState.NeverPrint;\n // break;\n // }\n // }\n // }\n // }\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // List.add(layer);\n // isLayerAdded = true;\n // if(!str.Contains(\"EMC\"))\n // break;\n // }\n // }\n // else\n // {\n // if (str.Contains(Key))\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // if(Dict.ContainsKey(DictionaryProperties.Name))\n // {\n // PdfString layerName = PdfCrossTable.Dereference(Dict[DictionaryProperties.Name]) as PdfString;\n // layer.Name = layerName.Value;\n // }\n // isLayerAdded = true;\n // break;\n // }\n // }\n // }\n // }\n // }\n // if (!isLayerAdded)\n // {\n // PdfPageLayer layer = new PdfPageLayer(loadedPage, stream);\n // List.add(layer);\n // }\n // else\n // isLayerAdded = false;\n // }\n var saveData = [];\n saveData.push(saveState);\n saveStream.data = saveData;\n contents.insert(0, new PdfReferenceHolder(saveStream));\n saveData = [];\n saveData.push(restoreState);\n restoreStream.data = saveData;\n contents.insert(contents.count, new PdfReferenceHolder(restoreStream));\n };\n /**\n * Returns `index of` the `PdfPageLayer` in the collection if exists, -1 otherwise.\n * @private\n */\n PdfPageLayerCollection.prototype.indexOf = function (layer) {\n if (layer == null) {\n throw new Error('ArgumentNullException: layer');\n }\n var index = this.list.indexOf(layer);\n return index;\n };\n return PdfPageLayerCollection;\n}(PdfCollection));\n\n/**\n * The abstract base class for all pages,\n * `PdfPageBase` class provides methods and properties to create PDF pages and its elements.\n * @private\n */\nvar PdfPageBase = /** @__PURE__ @class */ (function () {\n //constructors\n /**\n * Initializes a new instance of the `PdfPageBase` class.\n * @private\n */\n function PdfPageBase(dictionary) {\n /**\n * `Index` of the default layer.\n * @default -1.\n * @private\n */\n this.defLayerIndex = -1;\n /**\n * Local variable to store if page `updated`.\n * @default false.\n * @private\n */\n this.modified = false;\n /**\n * Instance of `DictionaryProperties` class.\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pageDictionary = dictionary;\n }\n Object.defineProperty(PdfPageBase.prototype, \"section\", {\n //Properties\n /**\n * Gets the `section` of a page.\n * @private\n */\n get: function () {\n // if (this.pdfSection === null) {\n // throw new Error('PdfException : Page must be added to some section before using.');\n // }\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"dictionary\", {\n /**\n * Gets the page `dictionary`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pageDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayer\", {\n /**\n * Gets the `default layer` of the page (Read only).\n * @private\n */\n get: function () {\n var layer = this.layers;\n var index = this.defaultLayerIndex;\n var returnlayer = layer.items(index);\n return returnlayer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"defaultLayerIndex\", {\n /**\n * Gets or sets `index of the default layer`.\n * @private\n */\n get: function () {\n if (this.layerCollection.count === 0 || this.defLayerIndex === -1) {\n var layer = this.layerCollection.add();\n this.defLayerIndex = this.layerCollection.indexOf(layer);\n }\n return this.defLayerIndex;\n },\n /**\n * Gets or sets` index of the default layer`.\n * @private\n */\n set: function (value) {\n if (value < 0 || value > this.layers.count - 1) {\n throw new Error('ArgumentOutOfRangeException : value, Index can not be less 0 and greater Layers.Count - 1');\n }\n else {\n this.defLayerIndex = value;\n this.modified = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageBase.prototype, \"layers\", {\n /**\n * Gets the collection of the page's `layers` (Read only).\n * @private\n */\n get: function () {\n if (this.layerCollection == null || typeof this.layerCollection === 'undefined') {\n this.layerCollection = new PdfPageLayerCollection(this);\n }\n return this.layerCollection;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return an instance of `PdfResources` class.\n * @private\n */\n PdfPageBase.prototype.getResources = function () {\n if (this.resources == null) {\n this.resources = new PdfResources();\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n }\n return this.resources;\n };\n Object.defineProperty(PdfPageBase.prototype, \"contents\", {\n /**\n * Gets `array of page's content`.\n * @private\n */\n get: function () {\n var obj = this.pageDictionary.items.getValue(this.dictionaryProperties.contents);\n var contents = obj;\n if (contents == null) {\n contents = new PdfArray();\n this.pageDictionary.items.setValue(this.dictionaryProperties.contents, contents);\n }\n return contents;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Sets the `resources`.\n * @private\n */\n PdfPageBase.prototype.setResources = function (res) {\n this.resources = res;\n this.dictionary.items.setValue(this.dictionaryProperties.resources, this.resources);\n this.modified = true;\n };\n return PdfPageBase;\n}());\n\n/**\n * `PdfAnnotationCollection` class represents the collection of 'PdfAnnotation' objects.\n * @private\n */\nvar PdfAnnotationCollection = /** @__PURE__ @class */ (function () {\n function PdfAnnotationCollection(page) {\n // Constants\n /**\n * `Error` constant message.\n * @private\n */\n this.alreadyExistsAnnotationError = 'This annotatation had been already added to page';\n /**\n * `Error` constant message.\n * @private\n */\n this.missingAnnotationException = 'Annotation is not contained in collection.';\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Array of the `annotations`.\n * @private\n */\n this.internalAnnotations = new PdfArray();\n /**\n * privte `list` for the annotations.\n * @private\n */\n this.lists = [];\n if (typeof page !== 'undefined') {\n this.page = page;\n }\n }\n Object.defineProperty(PdfAnnotationCollection.prototype, \"annotations\", {\n /**\n * Gets the `PdfAnnotation` object at the specified index. Read-Only.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n set: function (value) {\n this.internalAnnotations = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public methods\n /**\n * `Adds` a new annotation to the collection.\n * @private\n */\n PdfAnnotationCollection.prototype.add = function (annotation) {\n // this.SetPrint(annotation);\n this.doAdd(annotation);\n };\n /**\n * `Adds` a Annotation to collection.\n * @private\n */\n /* tslint:disable */\n PdfAnnotationCollection.prototype.doAdd = function (annotation) {\n if (typeof annotation.destination !== 'undefined') {\n var layout = new PdfStringLayouter();\n var layoutResult = layout.layout(annotation.text, annotation.font, annotation.stringFormat, new SizeF((annotation.bounds.width), 0), false, new SizeF(0, 0));\n var lastPosition = annotation.bounds.y;\n if (layoutResult.lines.length === 1) {\n var size = annotation.font.measureString(layoutResult.lines[0].text);\n annotation.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annotation.text = layoutResult.lines[0].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, annotation.bounds.y, annotation.bounds.width, annotation.bounds.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n }\n else {\n for (var i = 0; i < layoutResult.lines.length; i++) {\n var size = annotation.font.measureString(layoutResult.lines[i].text);\n if (i === 0) {\n annotation.bounds = new RectangleF(annotation.bounds.x, lastPosition, size.width, size.height);\n annotation.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annotation.text, annotation.font, null, annotation.brush, annotation.bounds.x, lastPosition, size.width, size.height, null);\n //Add annotation to dictionary.\n annotation.setPage(this.page);\n this.setColor(annotation);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n this.lists.push(annotation);\n //Update y for drawing next line of the text.\n lastPosition += annotation.bounds.height;\n }\n else {\n var annot = annotation.clone();\n annot.bounds = new RectangleF(new PointF(annotation.bounds.x, lastPosition), size);\n annot.text = layoutResult.lines[i].text;\n //Draw Annotation Text.\n this.page.graphics.drawString(annot.text, annot.font, null, annot.brush, annot.bounds.x, annot.bounds.y, annot.bounds.width, annot.bounds.height, null);\n //Add annotation to dictionary.\n annot.setPage(this.page);\n this.setColor(annot);\n this.internalAnnotations.add(new PdfReferenceHolder(annot));\n this.lists.push(annot);\n //Update y for drawing next line of the text.\n lastPosition += annot.bounds.height;\n }\n }\n }\n }\n else {\n annotation.setPage(this.page);\n this.internalAnnotations.add(new PdfReferenceHolder(annotation));\n return this.lists.push(annotation);\n }\n };\n /* tslint:enable */\n /**\n * `Set a color of an annotation`.\n * @private\n */\n PdfAnnotationCollection.prototype.setColor = function (annotation) {\n var cs = PdfColorSpace.Rgb;\n var colours = annotation.color.toArray(cs);\n annotation.dictionary.items.setValue(this.dictionaryProperties.c, colours);\n };\n Object.defineProperty(PdfAnnotationCollection.prototype, \"element\", {\n // IPdfWrapper Members\n /**\n * Gets the `Element` representing this object.\n * @private\n */\n get: function () {\n return this.internalAnnotations;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotationCollection;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Provides methods and properties to create pages and its elements.\n * `PdfPage` class inherited from the `PdfPageBase` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfPage = /** @__PURE__ @class */ (function (_super) {\n __extends$8(PdfPage, _super);\n //constructors\n /**\n * Initialize the new instance for `PdfPage` class.\n * @private\n */\n function PdfPage() {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Stores the instance of `PdfAnnotationCollection` class.\n * @hidden\n * @default null\n * @private\n */\n _this.annotationCollection = null;\n /**\n * Stores the instance of `PageBeginSave` event for Page Number Field.\n * @default null\n * @private\n */\n _this.beginSave = null;\n _this.initialize();\n return _this;\n }\n Object.defineProperty(PdfPage.prototype, \"document\", {\n //Properties\n /**\n * Gets current `document`.\n * @private\n */\n get: function () {\n if (this.section !== null && this.section.parent !== null) {\n return this.section.parent.document;\n }\n else {\n return null;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"graphics\", {\n /**\n * Get the current `graphics`.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // get graphics\n * let graphics : PdfGraphics = page1.graphics;\n * //\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n var result = this.defaultLayer.graphics;\n result.currentPage = this;\n return result;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"crossTable\", {\n /**\n * Gets the `cross table`.\n * @private\n */\n get: function () {\n if (this.section === null) {\n throw new Error('PdfDocumentException : Page is not created');\n }\n return this.section.parent === null ? this.section.parentDocument.crossTable : this.section.parent.document.crossTable;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"size\", {\n /**\n * Gets the size of the PDF page- Read only.\n * @public\n */\n get: function () {\n return this.section.pageSettings.size;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"origin\", {\n /**\n * Gets the `origin` of the page.\n * @private\n */\n get: function () {\n return this.section.pageSettings.origin;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPage.prototype, \"annotations\", {\n /**\n * Gets a collection of the `annotations` of the page- Read only.\n * @private\n */\n get: function () {\n if (this.annotationCollection == null) {\n this.annotationCollection = new PdfAnnotationCollection(this);\n // if (!this.Dictionary.ContainsKey(this.dictionaryProperties.annots)) {\n this.dictionary.items.setValue(this.dictionaryProperties.annots, this.annotationCollection.element);\n // }\n this.annotationCollection.annotations = this.dictionary.items.getValue(this.dictionaryProperties.annots);\n }\n return this.annotationCollection;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Initializes` a page.\n * @private\n */\n PdfPage.prototype.initialize = function () {\n this.dictionary.items.setValue(this.dictionaryProperties.type, new PdfName('Page'));\n this.dictionary.pageBeginDrawTemplate = new SaveTemplateEventHandler(this);\n };\n /**\n * Sets parent `section` to the page.\n * @private\n */\n PdfPage.prototype.setSection = function (section) {\n this.section = section;\n this.dictionary.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(section));\n };\n /**\n * `Resets the progress`.\n * @private\n */\n PdfPage.prototype.resetProgress = function () {\n this.isProgressOn = false;\n };\n /**\n * Get the page size reduced by page margins and page template dimensions.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * //\n * // set the specified point using `getClientSize` method\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * //\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfPage.prototype.getClientSize = function () {\n var returnValue = this.section.getActualBounds(this, true);\n return new SizeF(returnValue.width, returnValue.height);\n };\n /**\n * Helper method to retrive the instance of `PageBeginSave` event for header and footer elements.\n * @private\n */\n PdfPage.prototype.pageBeginSave = function () {\n var doc = this.document;\n if (typeof doc !== undefined && doc != null) {\n this.drawPageTemplates(doc);\n }\n if (this.beginSave != null && typeof this.beginSave !== 'undefined') {\n this.beginSave(this);\n }\n };\n /**\n * Helper method to draw template elements.\n * @private\n */\n PdfPage.prototype.drawPageTemplates = function (document) {\n // Draw Background templates.\n var hasBackTemplates = this.section.containsTemplates(document, this, false);\n if (hasBackTemplates) {\n var backLayer = new PdfPageLayer(this, false);\n this.layers.insert(0, backLayer);\n this.section.drawTemplates(this, backLayer, document, false);\n if (backLayer.graphics !== null && typeof backLayer.graphics !== 'undefined') {\n for (var i = 0; i < backLayer.graphics.automaticFields.automaticFields.length; i++) {\n var fieldInfo = backLayer.graphics.automaticFields.automaticFields[i];\n fieldInfo.field.performDraw(backLayer.graphics, fieldInfo.location, fieldInfo.scalingX, fieldInfo.scalingY);\n }\n }\n }\n // Draw Foreground templates.\n var hasFrontTemplates = this.section.containsTemplates(document, this, true);\n if (hasFrontTemplates) {\n var frontLayer = new PdfPageLayer(this, false);\n this.layers.add(frontLayer);\n this.section.drawTemplates(this, frontLayer, document, true);\n }\n };\n return PdfPage;\n}(PdfPageBase));\n\n/**\n * Provides data for `PageAddedEventHandler` event.\n * This event raises when adding the new PDF page to the PDF document.\n */\nvar PageAddedEventArgs = /** @__PURE__ @class */ (function () {\n function PageAddedEventArgs(page) {\n if (typeof page !== 'undefined') {\n this.pdfPage = page;\n }\n else {\n this.pdfPage = null;\n }\n }\n Object.defineProperty(PageAddedEventArgs.prototype, \"page\", {\n /**\n * Gets the `newly added page`.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return PageAddedEventArgs;\n}());\n\n/**\n * Represents the `collection of pages in a section`.\n * @private\n */\nvar PdfSectionPageCollection = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfSectionPageCollection` class.\n * @private\n */\n function PdfSectionPageCollection(section) {\n // Fields\n /**\n * @hidden\n * @private\n */\n this.pdfSection = null;\n if (section == null) {\n throw Error('ArgumentNullException(\"section\")');\n }\n this.section = section;\n }\n Object.defineProperty(PdfSectionPageCollection.prototype, \"section\", {\n // Properties\n /**\n * Gets the `PdfPage` at the specified index.\n * @private\n */\n get: function () {\n return this.pdfSection;\n },\n set: function (value) {\n this.pdfSection = value;\n },\n enumerable: true,\n configurable: true\n });\n // Public Methods\n /**\n * `Determines` whether the specified page is within the collection.\n * @private\n */\n PdfSectionPageCollection.prototype.contains = function (page) {\n return this.section.contains(page);\n };\n /**\n * `Removes` the specified page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.remove = function (page) {\n this.section.remove(page);\n };\n /**\n * `Adds` a new page from collection.\n * @private\n */\n PdfSectionPageCollection.prototype.add = function () {\n return this.section.add();\n };\n return PdfSectionPageCollection;\n}());\n\n// import { PdfStampCollection } from `./../Pages/PdfStampCollection`;\n/**\n * `PdfDocumentTemplate` class encapsulates a page template for all the pages in the document.\n * @private\n */\nvar PdfDocumentTemplate = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfDocumentTemplate` class.\n * @public\n */\n function PdfDocumentTemplate() {\n //\n }\n Object.defineProperty(PdfDocumentTemplate.prototype, \"left\", {\n // private m_stamps : PdfStampCollection;\n // Properties\n /**\n * `Left` page template object.\n * @public\n */\n get: function () {\n return this.leftTemplate;\n },\n set: function (value) {\n this.leftTemplate = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"top\", {\n /**\n * `Top` page template object.\n * @public\n */\n get: function () {\n return this.topTemplate;\n },\n set: function (value) {\n this.topTemplate = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"right\", {\n /**\n * `Right` page template object.\n * @public\n */\n get: function () {\n return this.rightTemplate;\n },\n set: function (value) {\n this.rightTemplate = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"bottom\", {\n /**\n * `Bottom` page template object.\n * @public\n */\n get: function () {\n return this.bottomTemplate;\n },\n set: function (value) {\n this.bottomTemplate = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenLeft\", {\n /**\n * `EvenLeft` page template object.\n * @public\n */\n get: function () {\n return this.evenLeft;\n },\n set: function (value) {\n this.evenLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenTop\", {\n /**\n * `EvenTop` page template object.\n * @public\n */\n get: function () {\n return this.evenTop;\n },\n set: function (value) {\n this.evenTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenRight\", {\n /**\n * `EvenRight` page template object.\n * @public\n */\n get: function () {\n return this.evenRight;\n },\n set: function (value) {\n this.evenRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"EvenBottom\", {\n /**\n * `EvenBottom` page template object.\n * @public\n */\n get: function () {\n return this.evenBottom;\n },\n set: function (value) {\n this.evenBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddLeft\", {\n /**\n * `OddLeft` page template object.\n * @public\n */\n get: function () {\n return this.oddLeft;\n },\n set: function (value) {\n this.oddLeft = this.checkElement(value, TemplateType.Left);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddTop\", {\n /**\n * `OddTop` page template object.\n * @public\n */\n get: function () {\n return this.oddTop;\n },\n set: function (value) {\n this.oddTop = this.checkElement(value, TemplateType.Top);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddRight\", {\n /**\n * `OddRight` page template object.\n * @public\n */\n get: function () {\n return this.oddRight;\n },\n set: function (value) {\n this.oddRight = this.checkElement(value, TemplateType.Right);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentTemplate.prototype, \"OddBottom\", {\n /**\n * `OddBottom` page template object.\n * @public\n */\n get: function () {\n return this.oddBottom;\n },\n set: function (value) {\n this.oddBottom = this.checkElement(value, TemplateType.Bottom);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Returns `left` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getLeft = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenLeft != null) ? this.EvenLeft : this.left;\n }\n else {\n template = (this.OddLeft != null) ? this.OddLeft : this.left;\n }\n // }\n return template;\n };\n /**\n * Returns `top` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getTop = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenTop != null) ? this.EvenTop : this.top;\n }\n else {\n template = (this.OddTop != null) ? this.OddTop : this.top;\n }\n // }\n return template;\n };\n /**\n * Returns `right` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getRight = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenRight != null) ? this.EvenRight : this.right;\n }\n else {\n template = (this.OddRight != null) ? this.OddRight : this.right;\n }\n // }\n return template;\n };\n /**\n * Returns `bottom` template.\n * @public\n */\n PdfDocumentTemplate.prototype.getBottom = function (page) {\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var template = null;\n // if (page.Document.Pages != null) {\n var even = this.isEven(page);\n if (even) {\n template = (this.EvenBottom != null) ? this.EvenBottom : this.bottom;\n }\n else {\n template = (this.OddBottom != null) ? this.OddBottom : this.bottom;\n }\n // }\n return template;\n };\n /**\n * Checks whether the page `is even`.\n * @private\n */\n PdfDocumentTemplate.prototype.isEven = function (page) {\n var pages = page.section.document.pages;\n var index = 0;\n if (pages.pageCollectionIndex.containsKey(page)) {\n index = pages.pageCollectionIndex.getValue(page) + 1;\n }\n else {\n index = pages.indexOf(page) + 1;\n }\n var even = ((index % 2) === 0);\n return even;\n };\n /**\n * Checks a `template element`.\n * @private\n */\n PdfDocumentTemplate.prototype.checkElement = function (templateElement, type) {\n if (templateElement != null) {\n if ((typeof templateElement.type !== 'undefined') && (templateElement.type !== TemplateType.None)) {\n throw new Error('NotSupportedException:Can not reassign the template element. Please, create new one.');\n }\n templateElement.type = type;\n }\n return templateElement;\n };\n return PdfDocumentTemplate;\n}());\n\nvar __extends$16 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfSectionTemplate.ts class for EJ2-PDF\n */\n/**\n * Represents a `page template` for all the pages in the section.\n */\nvar PdfSectionTemplate = /** @__PURE__ @class */ (function (_super) {\n __extends$16(PdfSectionTemplate, _super);\n // Constructors\n /**\n * `Creates a new object`.\n * @private\n */\n function PdfSectionTemplate() {\n var _this = _super.call(this) || this;\n _this.leftValue = _this.topValue = _this.rightValue = _this.bottomValue = _this.stampValue = true;\n return _this;\n }\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentLeftTemplate\", {\n // Properties\n /**\n * Gets or sets value indicating whether parent `Left page template should be used or not`.\n * @private\n */\n get: function () {\n return this.leftValue;\n },\n set: function (value) {\n this.leftValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentTopTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Top page template should be used or not`.\n * @private\n */\n get: function () {\n return this.topValue;\n },\n set: function (value) {\n this.topValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentRightTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Right page template should be used or not`.\n * @private\n */\n get: function () {\n return this.rightValue;\n },\n set: function (value) {\n this.rightValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentBottomTemplate\", {\n /**\n * Gets or sets value indicating whether parent `Bottom page template should be used or not`.\n * @private\n */\n get: function () {\n return this.bottomValue;\n },\n set: function (value) {\n this.bottomValue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionTemplate.prototype, \"applyDocumentStamps\", {\n /**\n * Gets or sets value indicating whether the `stamp value` is true or not.\n * @private\n */\n get: function () {\n return this.stampValue;\n },\n set: function (value) {\n this.stampValue = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfSectionTemplate;\n}(PdfDocumentTemplate));\n\n/**\n * Represents a `section` entity. A section it's a set of the pages with similar page settings.\n */\nvar PdfSection = /** @__PURE__ @class */ (function () {\n function PdfSection(document, pageSettings) {\n //Fields\n //public PageAdded() : PageAddedEventArgs.PageAddedEventHandler = new PageAddedEventArgs.PageAddedEventHandler(Object,args)\n /**\n * @hidden\n * @private\n */\n this.pageAdded = new PageAddedEventArgs();\n /**\n * @hidden\n * @private\n */\n this.pdfPages = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n this.pdfDocument = document;\n if (typeof pageSettings === 'undefined') {\n this.settings = document.pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n else {\n this.settings = pageSettings.clone();\n this.initialSettings = this.settings.clone();\n }\n this.initialize();\n }\n Object.defineProperty(PdfSection.prototype, \"parent\", {\n //Property\n /**\n * Gets or sets the `parent`.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n set: function (value) {\n this.sectionCollection = value;\n this.section.items.setValue(this.dictionaryProperties.parent, new PdfReferenceHolder(value));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"parentDocument\", {\n /**\n * Gets the `parent document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pageSettings\", {\n /**\n * Gets or sets the `page settings` of the section.\n * @private\n */\n get: function () {\n return this.settings;\n },\n set: function (value) {\n if (value != null) {\n this.settings = value;\n }\n else {\n throw Error('Value can not be null.');\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.section;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"count\", {\n /**\n * Gets the `count` of the pages in the section.\n * @private\n */\n get: function () {\n return this.pagesReferences.count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"template\", {\n /**\n * Gets or sets a `template` for the pages in the section.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfSectionTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"document\", {\n /**\n * Gets the `document`.\n * @private\n */\n get: function () {\n return this.sectionCollection.document;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSection.prototype, \"pages\", {\n /**\n * Gets the collection of `pages` in a section (Read only)\n * @private\n */\n get: function () {\n if (this.pagesCollection == null || typeof this.pagesCollection === 'undefined') {\n this.pagesCollection = new PdfSectionPageCollection(this);\n }\n return this.pagesCollection;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * `Return the page collection` of current section.\n * @private\n */\n PdfSection.prototype.getPages = function () {\n return this.pdfPages;\n };\n /**\n * `Translates` point into native coordinates of the page.\n * @private\n */\n PdfSection.prototype.pointToNativePdf = function (page, point) {\n var bounds = this.getActualBounds(page, true);\n point.x += bounds.x;\n point.y = this.pageSettings.height - (point.y);\n return point;\n };\n /**\n * Sets the page setting of the current section.\n * @public\n * @param settings Instance of `PdfPageSettings`\n */\n PdfSection.prototype.setPageSettings = function (settings) {\n this.settings = settings;\n this.state.orientation = settings.orientation;\n this.state.rotate = settings.rotate;\n this.state.size = settings.size;\n this.state.origin = settings.origin;\n };\n /**\n * `Initializes` the object.\n * @private\n */\n PdfSection.prototype.initialize = function () {\n this.pagesReferences = new PdfArray();\n this.section = new PdfDictionary();\n this.state = new PageSettingsState(this.pdfDocument);\n this.section.sectionBeginSave = new SaveSectionEventHandler(this, this.state);\n this.pageCount = new PdfNumber(0);\n this.section.items.setValue(this.dictionaryProperties.count, this.pageCount);\n this.section.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.pages));\n this.section.items.setValue(this.dictionaryProperties.kids, this.pagesReferences);\n };\n /**\n * Checks whether any template should be printed on this layer.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param foreground Layer z-order.\n * @returns True - if some content should be printed on the layer, False otherwise.\n */\n PdfSection.prototype.containsTemplates = function (document, page, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionTemplates = this.getSectionTemplates(page, foreground);\n return (documentHeaders.length > 0 || sectionTemplates.length > 0);\n };\n /**\n * Returns array of the document templates.\n * @private\n * @param document The parent document.\n * @param page The parent page.\n * @param headers If true - return headers/footers, if false - return simple templates.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the document templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getDocumentTemplates = function (document, page, foreground) {\n var templates = [];\n if (this.template.applyDocumentTopTemplate && document.template.getTop(page) != null) {\n if ((!(document.template.getTop(page).foreground || foreground)) || (document.template.getTop(page).foreground && foreground)) {\n templates.push(document.template.getTop(page));\n }\n }\n if (this.template.applyDocumentBottomTemplate && document.template.getBottom(page) != null) {\n if ((!(document.template.getBottom(page).foreground || foreground)) || (document.template.getBottom(page).foreground && foreground)) {\n templates.push(document.template.getBottom(page));\n }\n }\n if (this.template.applyDocumentLeftTemplate && document.template.getLeft(page) != null) {\n if ((!(document.template.getLeft(page).foreground || foreground)) || (document.template.getLeft(page).foreground && foreground)) {\n templates.push(document.template.getLeft(page));\n }\n }\n if (this.template.applyDocumentRightTemplate && document.template.getRight(page) != null) {\n if ((!(document.template.getRight(page).foreground || foreground)) || (document.template.getRight(page).foreground && foreground)) {\n templates.push(document.template.getRight(page));\n }\n }\n return templates;\n };\n /**\n * Returns array of the section templates.\n * @private\n * @param page The parent page.\n * @param foreground If true - return foreground templates, if false - return background templates.\n * @returns Returns array of the section templates.\n */\n /* tslint:disable */\n PdfSection.prototype.getSectionTemplates = function (page, foreground) {\n var templates = [];\n if (this.template.getTop(page) != null) {\n var pageTemplate = this.template.getTop(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getBottom(page) != null) {\n var pageTemplate = this.template.getBottom(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getLeft(page) != null) {\n var pageTemplate = this.template.getLeft(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n if (this.template.getRight(page) != null) {\n var pageTemplate = this.template.getRight(page);\n if ((!(pageTemplate.foreground || foreground)) || (pageTemplate.foreground && foreground)) {\n templates.push(pageTemplate);\n }\n }\n return templates;\n };\n /* tslint:enable */\n /**\n * `Adds` the specified page.\n * @private\n */\n PdfSection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var r = this.checkPresence(page);\n this.pdfPages.push(page);\n this.pagesReferences.add(r);\n page.setSection(this);\n page.resetProgress();\n this.pageAddedMethod(page);\n }\n };\n /**\n * `Checks the presence`.\n * @private\n */\n PdfSection.prototype.checkPresence = function (page) {\n var rh = new PdfReferenceHolder(page);\n var contains = false;\n var sc = this.parent;\n for (var index = 0; index < sc.section.length; index++) {\n var section = sc.section[index];\n contains = contains || section.contains(page);\n }\n return rh;\n };\n /**\n * `Determines` whether the page in within the section.\n * @private\n */\n PdfSection.prototype.contains = function (page) {\n var index = this.indexOf(page);\n return (0 <= index);\n };\n /**\n * Get the `index of` the page.\n * @private\n */\n PdfSection.prototype.indexOf = function (page) {\n for (var index = 0; index < this.pdfPages.length; index++) {\n if (this.pdfPages[index] === page) {\n return this.pdfPages.indexOf(page);\n }\n }\n var r = new PdfReferenceHolder(page);\n return this.pagesReferences.indexOf(r);\n };\n /**\n * Call two event's methods.\n * @hidden\n * @private\n */\n PdfSection.prototype.pageAddedMethod = function (page) {\n //Create event's arguments\n var args = new PageAddedEventArgs(page);\n this.onPageAdded(args);\n var parent = this.parent;\n parent.document.pages.onPageAdded(args);\n this.pageCount.intValue = this.count;\n };\n /**\n * Called when the page has been added.\n * @hidden\n * @private\n */\n PdfSection.prototype.onPageAdded = function (args) {\n //\n };\n PdfSection.prototype.getActualBounds = function (arg1, arg2, arg3) {\n if (arg1 instanceof PdfPage && typeof arg2 === 'boolean') {\n var result = void 0;\n var document_1 = this.parent.document;\n result = this.getActualBounds(document_1, arg1, arg2);\n return result;\n }\n else {\n arg1 = arg1;\n arg2 = arg2;\n arg3 = arg3;\n var bounds = new RectangleF(0, 0, 0, 0);\n bounds.height = (arg3) ? this.pageSettings.size.height : this.pageSettings.getActualSize().height;\n bounds.width = (arg3) ? this.pageSettings.size.width : this.pageSettings.getActualSize().width;\n var left = this.getLeftIndentWidth(arg1, arg2, arg3);\n var top_1 = this.getTopIndentHeight(arg1, arg2, arg3);\n var right = this.getRightIndentWidth(arg1, arg2, arg3);\n var bottom = this.getBottomIndentHeight(arg1, arg2, arg3);\n bounds.x += left;\n bounds.y += top_1;\n bounds.width -= (left + right);\n bounds.height -= (top_1 + bottom);\n return bounds;\n }\n };\n /**\n * Calculates width of the `left indent`.\n * @private\n */\n PdfSection.prototype.getLeftIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.left : 0;\n var templateWidth = (this.template.getLeft(page) != null) ? this.template.getLeft(page).width : 0;\n var docTemplateWidth = (document.template.getLeft(page) != null) ? document.template.getLeft(page).width : 0;\n value += (this.template.applyDocumentLeftTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the top indent.\n * @private\n */\n PdfSection.prototype.getTopIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.top : 0;\n var templateHeight = (this.template.getTop(page) != null) ? this.template.getTop(page).height : 0;\n var docTemplateHeight = (document.template.getTop(page) != null) ? document.template.getTop(page).height : 0;\n value += (this.template.applyDocumentTopTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * Calculates `width` of the right indent.\n * @private\n */\n PdfSection.prototype.getRightIndentWidth = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.right : 0;\n var templateWidth = (this.template.getRight(page) != null) ? this.template.getRight(page).width : 0;\n var docTemplateWidth = (document.template.getRight(page) != null) ? document.template.getRight(page).width : 0;\n value += (this.template.applyDocumentRightTemplate) ? Math.max(templateWidth, docTemplateWidth) : templateWidth;\n return value;\n };\n /**\n * Calculates `Height` of the bottom indent.\n * @private\n */\n PdfSection.prototype.getBottomIndentHeight = function (document, page, includeMargins) {\n if (document == null) {\n throw new Error('ArgumentNullException:document');\n }\n if (page == null) {\n throw new Error('ArgumentNullException:page');\n }\n var value = (includeMargins) ? this.pageSettings.margins.bottom : 0;\n var templateHeight = (this.template.getBottom(page) != null) ? this.template.getBottom(page).height : 0;\n var docTemplateHeight = (document.template.getBottom(page) != null) ? document.template.getBottom(page).height : 0;\n value += (this.template.applyDocumentBottomTemplate) ? Math.max(templateHeight, docTemplateHeight) : templateHeight;\n return value;\n };\n /**\n * `Removes` the page from the section.\n * @private\n */\n PdfSection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var index = this.pdfPages.indexOf(page);\n this.pagesReferences.removeAt(index);\n var temproaryPages = [];\n for (var j = 0; j < index; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n for (var j = index + 1; j < this.pdfPages.length; j++) {\n temproaryPages.push(this.pdfPages[j]);\n }\n this.pdfPages = temproaryPages;\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSection.prototype.applyPageSettings = function (container, parentSettings, state) {\n var bounds = new RectangleF(state.origin, state.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n var rotate = 0;\n rotate = PdfSectionCollection.rotateFactor * state.rotate;\n var angle = new PdfNumber(rotate);\n container.items.setValue(this.dictionaryProperties.rotate, angle);\n };\n /**\n * Catches the Save event of the dictionary.\n * @hidden\n * @private\n */\n PdfSection.prototype.beginSave = function (state, writer) {\n var doc = writer.document;\n this.applyPageSettings(this.section, doc.pageSettings, state);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplates = function (page, layer, document, foreground) {\n var documentHeaders = this.getDocumentTemplates(document, page, foreground);\n var sectionHeaders = this.getSectionTemplates(page, foreground);\n this.drawTemplatesHelper(layer, document, documentHeaders);\n this.drawTemplatesHelper(layer, document, sectionHeaders);\n };\n /**\n * Draws page templates on the page.\n * @private\n */\n PdfSection.prototype.drawTemplatesHelper = function (layer, document, templates) {\n if (templates != null && templates.length > 0) {\n var len = templates.length;\n for (var i = 0; i < len; i++) {\n var template = templates[i];\n template.draw(layer, document);\n }\n }\n };\n return PdfSection;\n}());\nvar PageSettingsState = /** @__PURE__ @class */ (function () {\n //Public Constructor\n /**\n * New instance to store the `PageSettings`.\n * @private\n */\n function PageSettingsState(document) {\n this.pageOrientation = document.pageSettings.orientation;\n this.pageRotate = document.pageSettings.rotate;\n this.pageSize = document.pageSettings.size;\n this.pageOrigin = document.pageSettings.origin;\n }\n Object.defineProperty(PageSettingsState.prototype, \"orientation\", {\n //public Properties\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrientation;\n },\n set: function (value) {\n this.pageOrientation = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"rotate\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageRotate;\n },\n set: function (value) {\n this.pageRotate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"size\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageSize;\n },\n set: function (value) {\n this.pageSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PageSettingsState.prototype, \"origin\", {\n /**\n * @hidden\n * @private\n */\n get: function () {\n return this.pageOrigin;\n },\n set: function (value) {\n this.pageOrigin = value;\n },\n enumerable: true,\n configurable: true\n });\n return PageSettingsState;\n}());\n\n/**\n * Represents the `collection of the sections`.\n * @private\n */\nvar PdfSectionCollection = /** @__PURE__ @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n function PdfSectionCollection(document) {\n /**\n * @hidden\n * @private\n */\n this.sections = [];\n /**\n * @hidden\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n // if (document === null) {\n // throw new Error('ArgumentNullException : document');\n // }\n this.pdfDocument = document.clone();\n this.initialize();\n }\n Object.defineProperty(PdfSectionCollection.prototype, \"section\", {\n //Properties\n /**\n * Gets the `Section` collection.\n */\n get: function () {\n return this.sections;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"document\", {\n /**\n * Gets a parent `document`.\n * @private\n */\n get: function () {\n return this.pdfDocument;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"count\", {\n /**\n * Gets the `number of sections` in a document.\n * @private\n */\n get: function () {\n return this.sections.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfSectionCollection.prototype, \"element\", {\n /**\n * Gets the wrapped `element`.\n * @private\n */\n get: function () {\n return this.pages;\n },\n enumerable: true,\n configurable: true\n });\n //Methods\n /**\n * `Initializes the object`.\n * @private\n */\n PdfSectionCollection.prototype.initialize = function () {\n this.sectionCount = new PdfNumber(0);\n this.sectionCollection = new PdfArray();\n this.pages = new PdfDictionary();\n this.pages.beginSave = new SaveSectionCollectionEventHandler(this);\n this.pages.items.setValue(this.dictionaryProperties.type, new PdfName('Pages'));\n this.pages.items.setValue(this.dictionaryProperties.kids, this.sectionCollection);\n this.pages.items.setValue(this.dictionaryProperties.count, this.sectionCount);\n this.pages.items.setValue(this.dictionaryProperties.resources, new PdfDictionary());\n this.setPageSettings(this.pages, this.pdfDocument.pageSettings);\n };\n /**\n * Initializes a new instance of the `PdfSectionCollection` class.\n * @private\n */\n PdfSectionCollection.prototype.pdfSectionCollection = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException()');\n }\n return this.sections[index];\n };\n /**\n * In fills dictionary by the data from `Page settings`.\n * @private\n */\n PdfSectionCollection.prototype.setPageSettings = function (container, pageSettings) {\n // if (container === null) {\n // throw new Error('ArgumentNullException : container');\n // }\n // if (pageSettings === null) {\n // throw new Error('ArgumentNullException : pageSettings');\n // }\n var bounds = new RectangleF(new PointF(), pageSettings.size);\n container.items.setValue(this.dictionaryProperties.mediaBox, PdfArray.fromRectangle(bounds));\n };\n /**\n * `Adds` the specified section.\n * @private\n */\n PdfSectionCollection.prototype.add = function (section) {\n if (typeof section === 'undefined') {\n var section_1 = new PdfSection(this.pdfDocument);\n this.add(section_1);\n return section_1;\n }\n else {\n // if (section === null) {\n // throw new Error('ArgumentNullException : section');\n // }\n var r = this.checkSection(section);\n this.sections.push(section);\n section.parent = this;\n this.sectionCollection.add(r);\n return this.sections.indexOf(section);\n }\n };\n /**\n * `Checks` if the section is within the collection.\n * @private\n */\n PdfSectionCollection.prototype.checkSection = function (section) {\n var r = new PdfReferenceHolder(section);\n var contains = this.sectionCollection.contains(r);\n // if (contains) {\n // throw new Error('ArgumentException : The object can not be added twice to the collection,section');\n // }\n return r;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @private\n */\n PdfSectionCollection.prototype.countPages = function () {\n var count = 0;\n this.sections.forEach(function (n) { return (count += n.count); });\n return count;\n };\n /**\n * Catches the Save event of the dictionary to `count the pages`.\n * @hidden\n * @private\n */\n PdfSectionCollection.prototype.beginSave = function () {\n this.sectionCount.intValue = this.countPages();\n };\n //Fields\n /**\n * Rotate factor for page `rotation`.\n * @default 90\n * @private\n */\n PdfSectionCollection.rotateFactor = 90;\n return PdfSectionCollection;\n}());\n\n/**\n * Represents a virtual collection of all the pages in the document.\n * @private\n */\nvar PdfDocumentPageCollection = /** @__PURE__ @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfPageCollection` class.\n * @private\n */\n function PdfDocumentPageCollection(document) {\n /**\n * It holds the page collection with the `index`.\n * @private\n */\n this.pdfPageCollectionIndex = new Dictionary();\n this.document = document;\n }\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"count\", {\n //Property\n /**\n * Gets the total `number of the pages`.\n * @private\n */\n get: function () {\n return this.countPages();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocumentPageCollection.prototype, \"pageCollectionIndex\", {\n /**\n * Gets a `page index` from the document.\n * @private\n */\n get: function () {\n return this.pdfPageCollectionIndex;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocumentPageCollection.prototype.add = function (page) {\n if (typeof page === 'undefined') {\n var page_1 = new PdfPage();\n this.add(page_1);\n return page_1;\n }\n else {\n var section = this.getLastSection();\n section.add(page);\n }\n };\n /**\n * Returns `last section` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getLastSection = function () {\n var sc = this.document.sections;\n if (sc.section.length === 0) {\n sc.add();\n }\n var section = sc.section[sc.section.length - 1];\n return section;\n };\n /**\n * Called when `new page has been added`.\n * @private\n */\n PdfDocumentPageCollection.prototype.onPageAdded = function (args) {\n // if (PageAdded !== null)\n // {\n // PageAdded(this, args);\n // }\n };\n /**\n * Gets the `total number of pages`.\n * @private\n */\n PdfDocumentPageCollection.prototype.countPages = function () {\n var sc = this.document.sections;\n var count = 0;\n for (var index = 0; index < sc.section.length; index++) {\n count += sc.section[index].count;\n }\n return count;\n };\n /**\n * Gets the `page object` from page index.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPageByIndex = function (index) {\n return this.getPage(index);\n };\n /**\n * Gets a page by its `index` in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.getPage = function (index) {\n if ((index < 0) || (index >= this.count)) {\n throw Error('ArgumentOutOfRangeException(\"index\", \"Value can not be less 0\")');\n }\n var page = null;\n var sectionStartIndex = 0;\n var sectionCount = 0;\n var pageIndex = 0;\n var length = this.document.sections.count;\n for (var i = 0; i < length; i++) {\n var section = this.document.sections.section[i];\n sectionCount = section.count;\n pageIndex = index - sectionStartIndex;\n // We found a section containing the page.\n if ((index >= sectionStartIndex && pageIndex < sectionCount)) {\n page = section.getPages()[pageIndex];\n break;\n }\n sectionStartIndex += sectionCount;\n }\n return page;\n };\n /**\n * Gets the `index of` the page in the document.\n * @private\n */\n PdfDocumentPageCollection.prototype.indexOf = function (page) {\n var index = -1;\n if (page == null) {\n throw new Error('ArgumentNullException: page');\n }\n else {\n var numPages = 0;\n for (var i = 0, len = this.document.sections.count; i < len; i++) {\n var section = this.document.sections.pdfSectionCollection(i);\n index = section.indexOf(page);\n if (index >= 0) {\n index += numPages;\n break;\n }\n else {\n index = -1;\n }\n numPages += section.count;\n }\n }\n return index;\n };\n /**\n * `Removes` the specified page.\n * @private\n */\n PdfDocumentPageCollection.prototype.remove = function (page) {\n if (page == null) {\n throw Error('ArgumentNullException(\"page\")');\n }\n var section = null;\n for (var i = 0, len_1 = this.document.sections.count; i < len_1; i++) {\n section = this.document.sections.pdfSectionCollection(i);\n if (section.pages.contains(page)) {\n section.pages.remove(page);\n break;\n }\n }\n return section;\n };\n return PdfDocumentPageCollection;\n}());\n\n/**\n * PdfCacheCollection.ts class for EJ2-PDF\n */\n/**\n * `Collection of the cached objects`.\n * @private\n */\nvar PdfCacheCollection = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes a new instance of the `PdfCacheCollection` class.\n * @private\n */\n function PdfCacheCollection() {\n this.referenceObjects = [];\n this.pdfFontCollection = new Dictionary();\n }\n // Public methods\n /**\n * `Searches` for the similar cached object. If is not found - adds the object to the cache.\n * @private\n */\n PdfCacheCollection.prototype.search = function (obj) {\n var result = null;\n var group = this.getGroup(obj);\n if (group == null) {\n group = this.createNewGroup();\n }\n else if (group.length > 0) {\n result = group[0];\n }\n group.push(obj);\n return result;\n };\n // Implementation\n /**\n * `Creates` a new group.\n * @private\n */\n PdfCacheCollection.prototype.createNewGroup = function () {\n var group = [];\n this.referenceObjects.push(group);\n return group;\n };\n /**\n * `Find and Return` a group.\n * @private\n */\n PdfCacheCollection.prototype.getGroup = function (result) {\n var group = null;\n if (result !== null) {\n var len = this.referenceObjects.length;\n for (var i = 0; i < len; i++) {\n if (this.referenceObjects.length > 0) {\n var tGroup = this.referenceObjects[i];\n if (tGroup.length > 0) {\n var representative = tGroup[0];\n if (result.equalsTo(representative)) {\n group = tGroup;\n break;\n }\n }\n else {\n this.removeGroup(tGroup);\n }\n }\n len = this.referenceObjects.length;\n }\n }\n return group;\n };\n /**\n * Remove a group from the storage.\n */\n PdfCacheCollection.prototype.removeGroup = function (group) {\n if (group !== null) {\n var index = this.referenceObjects.indexOf(group);\n this.referenceObjects.slice(index, index + 1);\n }\n };\n PdfCacheCollection.prototype.destroy = function () {\n this.pdfFontCollection = undefined;\n this.referenceObjects = undefined;\n };\n return PdfCacheCollection;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Represents a PDF document and can be used to create a new PDF document from the scratch.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocument = /** @__PURE__ @class */ (function (_super) {\n __extends$6(PdfDocument, _super);\n function PdfDocument(isMerging) {\n var _this = _super.call(this) || this;\n /**\n * Default `margin` value.\n * @default 40.0\n * @private\n */\n _this.defaultMargin = 40.0;\n /**\n * Internal variable to store instance of `StreamWriter` classes..\n * @default null\n * @private\n */\n _this.streamWriter = null;\n _this.document = _this;\n var isMerge = false;\n if (typeof isMerging === 'undefined') {\n PdfDocument.cacheCollection = new PdfCacheCollection();\n isMerge = false;\n }\n else {\n isMerge = isMerging;\n }\n var objects = new PdfMainObjectCollection();\n _this.setMainObjectCollection(objects);\n var crossTable = new PdfCrossTable();\n crossTable.isMerging = isMerge;\n crossTable.document = _this;\n _this.setCrossTable(crossTable);\n var catalog = new PdfCatalog();\n _this.setCatalog(catalog);\n objects.add(catalog);\n catalog.position = -1;\n _this.sectionCollection = new PdfSectionCollection(_this);\n _this.documentPageCollection = new PdfDocumentPageCollection(_this);\n catalog.pages = _this.sectionCollection;\n return _this;\n }\n Object.defineProperty(PdfDocument, \"defaultFont\", {\n //Properties\n /**\n * Gets the `default font`. It is used for complex objects when font is not explicitly defined.\n * @private\n */\n get: function () {\n if (this.defaultStandardFont == null) {\n this.defaultStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 8);\n }\n return this.defaultStandardFont;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"sections\", {\n /**\n * Gets the collection of the `sections` in the document.\n * @private\n */\n get: function () {\n return this.sectionCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pageSettings\", {\n /**\n * Gets the document's page setting.\n * @public\n */\n get: function () {\n if (this.settings == null) {\n this.settings = new PdfPageSettings(this.defaultMargin);\n }\n return this.settings;\n },\n /**\n * Sets the document's page setting.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n *\n * // sets the right margin of the page\n * document.pageSettings.margins.right = 0;\n * // set the page size.\n * document.pageSettings.size = new SizeF(500, 500);\n * // change the page orientation to landscape\n * document.pageSettings.orientation = PdfPageOrientation.Landscape;\n * // apply 90 degree rotation on the page\n * document.pageSettings.rotate = PdfPageRotateAngle.RotateAngle90;\n *\n * // add a pages to the document\n * let page1 : PdfPage = document.pages.add();\n * // set font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // set brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // set the specified Point\n * let point : PointF = new PointF(page1.getClientSize().width - 200, page1.getClientSize().height - 200);\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, point);\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n set: function (value) {\n this.settings = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"pages\", {\n /**\n * Represents the collection of pages in the PDF document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * //\n * // get the collection of pages in the document\n * let pageCollection : PdfDocumentPageCollection = document.pages;\n * //\n * // add pages\n * let page1 : PdfPage = pageCollection.add();\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.documentPageCollection;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"cache\", {\n /**\n * Gets collection of the `cached objects`.\n * @private\n */\n get: function () {\n if (typeof PdfDocument.cacheCollection === 'undefined' || PdfDocument.cacheCollection == null) {\n return new PdfCacheCollection();\n }\n return PdfDocument.cacheCollection;\n },\n /**\n * Sets collection of the `cached objects`.\n * @private\n */\n set: function (value) {\n this.cacheCollection = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument, \"enableCache\", {\n /**\n * Gets the value of enable cache.\n * @private\n */\n get: function () {\n return this.isCacheEnabled;\n },\n /**\n * Sets thie value of enable cache.\n * @private\n */\n set: function (value) {\n this.isCacheEnabled = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"colorSpace\", {\n /* tslint:disable */\n /**\n * Gets or sets the `color space` of the document. This property can be used to create PDF document in RGB, Gray scale or CMYK color spaces.\n * @private\n */\n get: function () {\n if ((this.pdfColorSpace === PdfColorSpace.Rgb) || ((this.pdfColorSpace === PdfColorSpace.Cmyk)\n || (this.pdfColorSpace === PdfColorSpace.GrayScale))) {\n return this.pdfColorSpace;\n }\n else {\n return PdfColorSpace.Rgb;\n }\n },\n set: function (value) {\n if ((value === PdfColorSpace.Rgb) || ((value === PdfColorSpace.Cmyk) ||\n (value === PdfColorSpace.GrayScale))) {\n this.pdfColorSpace = value;\n }\n else {\n this.pdfColorSpace = PdfColorSpace.Rgb;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDocument.prototype, \"template\", {\n /* tslint:enable */\n /**\n * Gets or sets a `template` to all pages in the document.\n * @private\n */\n get: function () {\n if (this.pageTemplate == null) {\n this.pageTemplate = new PdfDocumentTemplate();\n }\n return this.pageTemplate;\n },\n set: function (value) {\n this.pageTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfDocument.prototype.docSave = function (stream, arg2, arg3) {\n this.checkPagesPresence();\n if (stream === null) {\n throw new Error('ArgumentNullException : stream');\n }\n this.streamWriter = stream;\n var writer = new PdfWriter(stream);\n writer.document = this;\n if (typeof arg2 === 'boolean' && typeof arg3 === 'undefined') {\n return this.crossTable.save(writer);\n }\n else {\n this.crossTable.save(writer, arg2);\n }\n };\n /**\n * Checks the pages `presence`.\n * @private\n */\n PdfDocument.prototype.checkPagesPresence = function () {\n if (this.pages.count === 0) {\n this.pages.add();\n }\n };\n /**\n * disposes the current instance of `PdfDocument` class.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * // set the font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n PdfDocument.prototype.destroy = function () {\n this.catalog = undefined;\n this.colorSpace = undefined;\n this.currentSavingObj = undefined;\n this.documentPageCollection = undefined;\n this.isStreamCopied = undefined;\n this.pageSettings = undefined;\n this.pageTemplate = undefined;\n this.pdfColorSpace = undefined;\n this.sectionCollection = undefined;\n PdfDocument.cache.destroy();\n this.crossTable.pdfObjects.destroy();\n PdfDocument.cache = undefined;\n this.streamWriter.destroy();\n };\n /**\n * `Font` used in complex objects to draw strings and text when it is not defined explicitly.\n * @default null\n * @private\n */\n PdfDocument.defaultStandardFont = null;\n /**\n * Indicates whether enable cache or not\n * @default true\n * @private\n */\n PdfDocument.isCacheEnabled = true;\n return PdfDocument;\n}(PdfDocumentBase));\n\n/**\n * PdfStandardFontMetricsFactory.ts class for EJ2-PDF\n */\n/**\n * @private\n * `Factory of the standard fonts metrics`.\n */\nvar PdfStandardFontMetricsFactory = /** @__PURE__ @class */ (function () {\n function PdfStandardFontMetricsFactory() {\n }\n /**\n * Returns `metrics` of the font.\n * @private\n */\n PdfStandardFontMetricsFactory.getMetrics = function (fontFamily, fontStyle, size) {\n var metrics = null;\n switch (fontFamily) {\n case PdfFontFamily.Helvetica:\n metrics = this.getHelveticaMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Courier:\n metrics = this.getCourierMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.TimesRoman:\n metrics = this.getTimesMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.Symbol:\n metrics = this.getSymbolMetrics(fontFamily, fontStyle, size);\n break;\n case PdfFontFamily.ZapfDingbats:\n metrics = this.getZapfDingbatsMetrics(fontFamily, fontStyle, size);\n break;\n default:\n metrics = this.getHelveticaMetrics(PdfFontFamily.Helvetica, fontStyle, size);\n break;\n }\n metrics.name = fontFamily.toString();\n metrics.subScriptSizeFactor = this.subSuperScriptFactor;\n metrics.superscriptSizeFactor = this.subSuperScriptFactor;\n return metrics;\n };\n // Implementation\n /**\n * Creates `Helvetica font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getHelveticaMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaBoldItalicAscent;\n metrics.descent = this.helveticaBoldItalicDescent;\n metrics.postScriptName = this.helveticaBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.helveticaBoldAscent;\n metrics.descent = this.helveticaBoldDescent;\n metrics.postScriptName = this.helveticaBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.helveticaItalicAscent;\n metrics.descent = this.helveticaItalicDescent;\n metrics.postScriptName = this.helveticaItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.helveticaAscent;\n metrics.descent = this.helveticaDescent;\n metrics.postScriptName = this.helveticaName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.arialWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Courier font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getCourierMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierBoldItalicAscent;\n metrics.descent = this.courierBoldItalicDescent;\n metrics.postScriptName = this.courierBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.courierBoldAscent;\n metrics.descent = this.courierBoldDescent;\n metrics.postScriptName = this.courierBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.courierItalicAscent;\n metrics.descent = this.courierItalicDescent;\n metrics.postScriptName = this.courierItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.courierAscent;\n metrics.descent = this.courierDescent;\n metrics.postScriptName = this.courierName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.fixedWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Times font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getTimesMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n if ((fontStyle & PdfFontStyle.Bold) > 0 && (fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesBoldItalicAscent;\n metrics.descent = this.timesBoldItalicDescent;\n metrics.postScriptName = this.timesBoldItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldItalicWidths);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Bold) > 0) {\n metrics.ascent = this.timesBoldAscent;\n metrics.descent = this.timesBoldDescent;\n metrics.postScriptName = this.timesBoldName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanBoldWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else if ((fontStyle & PdfFontStyle.Italic) > 0) {\n metrics.ascent = this.timesItalicAscent;\n metrics.descent = this.timesItalicDescent;\n metrics.postScriptName = this.timesItalicName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanItalicWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n else {\n metrics.ascent = this.timesAscent;\n metrics.descent = this.timesDescent;\n metrics.postScriptName = this.timesName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.timesRomanWidth);\n metrics.height = metrics.ascent - metrics.descent;\n }\n return metrics;\n };\n /**\n * Creates `Symbol font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getSymbolMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.symbolAscent;\n metrics.descent = this.symbolDescent;\n metrics.postScriptName = this.symbolName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.symbolWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * Creates `ZapfDingbats font metrics`.\n * @private\n */\n PdfStandardFontMetricsFactory.getZapfDingbatsMetrics = function (fontFamily, fontStyle, size) {\n var metrics = new PdfFontMetrics();\n metrics.ascent = this.zapfDingbatsAscent;\n metrics.descent = this.zapfDingbatsDescent;\n metrics.postScriptName = this.zapfDingbatsName;\n metrics.size = size;\n metrics.widthTable = new StandardWidthTable(this.zapfDingbatsWidth);\n metrics.height = metrics.ascent - metrics.descent;\n return metrics;\n };\n /**\n * `Multiplier` os subscript superscript.\n * @private\n */\n PdfStandardFontMetricsFactory.subSuperScriptFactor = 1.52;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaName = 'Helvetica';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldName = 'Helvetica-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicAscent = 931;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicDescent = -225;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaItalicName = 'Helvetica-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicAscent = 962;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicDescent = -228;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.helveticaBoldItalicName = 'Helvetica-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierName = 'Courier';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldName = 'Courier-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicAscent = 805;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierItalicName = 'Courier-Oblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicAscent = 801;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicDescent = -250;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.courierBoldItalicName = 'Courier-BoldOblique';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesAscent = 898;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesName = 'Times-Roman';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldAscent = 935;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldName = 'Times-Bold';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicAscent = 883;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicDescent = -217;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesItalicName = 'Times-Italic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicAscent = 921;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicDescent = -218;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.timesBoldItalicName = 'Times-BoldItalic';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolAscent = 1010;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolDescent = -293;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolName = 'Symbol';\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsAscent = 820;\n /**\n * `Ascender` value for the font.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsDescent = -143;\n /**\n * `Font type`.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsName = 'ZapfDingbats';\n /**\n * `Arial` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialWidth = [\n 278, 278, 355, 556, 556, 889, 667, 191, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 278, 278, 584, 584,\n 584, 556, 1015, 667, 667, 722, 722, 667, 611, 778, 722, 278, 500, 667, 556, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 278, 278, 278,\n 469, 556, 333, 556, 556, 500, 556, 556, 278, 556, 556, 222, 222, 500, 222, 833,\n 556, 556, 556, 556, 333, 500, 278, 556, 500, 722, 500, 500, 500, 334, 260, 334,\n 584, 0, 556, 0, 222, 556, 333, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 222, 222, 333, 333, 350, 556, 1000, 333, 1000, 500, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 260, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 556, 537, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 667, 667, 667, 667, 667, 667, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 500, 556, 556, 556, 556, 278, 278,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 584, 611, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Arial bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.arialBoldWidth = [\n 278, 333, 474, 556, 556, 889, 722, 238, 333, 333, 389, 584, 278, 333,\n 278, 278, 556, 556, 556, 556, 556, 556, 556, 556, 556, 556, 333, 333, 584, 584,\n 584, 611, 975, 722, 722, 722, 722, 667, 611, 778, 722, 278, 556, 722, 611, 833,\n 722, 778, 667, 778, 722, 667, 611, 722, 667, 944, 667, 667, 611, 333, 278, 333,\n 584, 556, 333, 556, 611, 556, 611, 556, 333, 611, 611, 278, 278, 556, 278, 889,\n 611, 611, 611, 611, 389, 556, 333, 611, 556, 778, 556, 556, 500, 389, 280, 389,\n 584, 0, 556, 0, 278, 556, 500, 1000, 556, 556, 333, 1000, 667, 333, 1000, 0,\n 611, 0, 0, 278, 278, 500, 500, 350, 556, 1000, 333, 1000, 556, 333, 944, 0,\n 500, 667, 0, 333, 556, 556, 556, 556, 280, 556, 333, 737, 370, 556, 584, 0,\n 737, 333, 400, 584, 333, 333, 333, 611, 556, 278, 333, 333, 365, 556, 834, 834,\n 834, 611, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 278, 278,\n 278, 278, 722, 722, 778, 778, 778, 778, 778, 584, 778, 722, 722, 722, 722, 667,\n 667, 611, 556, 556, 556, 556, 556, 556, 889, 556, 556, 556, 556, 556, 278, 278,\n 278, 278, 611, 611, 611, 611, 611, 611, 611, 584, 611, 611, 611, 611, 611, 556,\n 611, 556\n ];\n /**\n * `Fixed` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.fixedWidth = [\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600,\n 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600, 600\n ];\n /**\n * `Times` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanWidth = [\n 250, 333, 408, 500, 500, 833, 778, 180, 333, 333, 500, 564, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278, 564, 564,\n 564, 444, 921, 722, 667, 667, 722, 611, 556, 722, 722, 333, 389, 722, 611, 889,\n 722, 722, 556, 722, 667, 556, 611, 722, 722, 944, 722, 722, 611, 333, 278, 333,\n 469, 500, 333, 444, 500, 444, 500, 444, 333, 500, 500, 278, 278, 500, 278, 778,\n 500, 500, 500, 500, 333, 389, 278, 500, 500, 722, 500, 500, 444, 480, 200, 480,\n 541, 0, 500, 0, 333, 500, 444, 1000, 500, 500, 333, 1000, 556, 333, 889, 0,\n 611, 0, 0, 333, 333, 444, 444, 350, 500, 1000, 333, 980, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 200, 500, 333, 760, 276, 500, 564, 0,\n 760, 333, 400, 564, 300, 300, 333, 500, 453, 250, 333, 300, 310, 500, 750, 750,\n 750, 444, 722, 722, 722, 722, 722, 722, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 722, 722, 722, 722, 722, 722, 564, 722, 722, 722, 722, 722, 722,\n 556, 500, 444, 444, 444, 444, 444, 444, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 564, 500, 500, 500, 500, 500, 500,\n 500, 500\n ];\n /**\n * `Times bold` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldWidth = [\n 250, 333, 555, 500, 500, 1000, 833, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 930, 722, 667, 722, 722, 667, 611, 778, 778, 389, 500, 778, 667, 944,\n 722, 778, 611, 778, 722, 556, 667, 722, 722, 1000, 722, 722, 667, 333, 278, 333,\n 581, 500, 333, 500, 556, 444, 556, 444, 333, 500, 556, 278, 333, 556, 278, 833,\n 556, 500, 556, 556, 444, 389, 333, 556, 500, 722, 500, 500, 444, 394, 220, 394,\n 520, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 1000, 0,\n 667, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 444, 722, 0, 333, 500, 500, 500, 500, 220, 500, 333, 747, 300, 500, 570, 0,\n 747, 333, 400, 570, 300, 300, 333, 556, 540, 250, 333, 300, 330, 500, 750, 750,\n 750, 500, 722, 722, 722, 722, 722, 722, 1000, 722, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 778, 778, 778, 778, 778, 570, 778, 722, 722, 722, 722, 722,\n 611, 556, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 500,\n 556, 500\n ];\n /**\n * `Times italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanItalicWidth = [\n 250, 333, 420, 500, 500, 833, 778, 214, 333, 333, 500, 675, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 675, 675,\n 675, 500, 920, 611, 611, 667, 722, 611, 611, 722, 722, 333, 444, 667, 556, 833,\n 667, 722, 611, 722, 611, 500, 556, 722, 611, 833, 611, 556, 556, 389, 278, 389,\n 422, 500, 333, 500, 500, 444, 500, 444, 278, 500, 500, 278, 278, 444, 278, 722,\n 500, 500, 500, 500, 389, 389, 278, 500, 444, 667, 444, 444, 389, 400, 275, 400,\n 541, 0, 500, 0, 333, 500, 556, 889, 500, 500, 333, 1000, 500, 333, 944, 0,\n 556, 0, 0, 333, 333, 556, 556, 350, 500, 889, 333, 980, 389, 333, 667, 0,\n 389, 556, 0, 389, 500, 500, 500, 500, 275, 500, 333, 760, 276, 500, 675, 0,\n 760, 333, 400, 675, 300, 300, 333, 500, 523, 250, 333, 300, 310, 500, 750, 750,\n 750, 500, 611, 611, 611, 611, 611, 611, 889, 667, 611, 611, 611, 611, 333, 333,\n 333, 333, 722, 667, 722, 722, 722, 722, 722, 675, 722, 722, 722, 722, 722, 556,\n 611, 500, 500, 500, 500, 500, 500, 500, 667, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 500, 500, 500, 500, 500, 500, 675, 500, 500, 500, 500, 500, 444,\n 500, 444\n ];\n /**\n * `Times bold italic` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.timesRomanBoldItalicWidths = [\n 250, 389, 555, 500, 500, 833, 778, 278, 333, 333, 500, 570, 250, 333,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 333, 333, 570, 570,\n 570, 500, 832, 667, 667, 667, 722, 667, 667, 722, 778, 389, 500, 667, 611, 889,\n 722, 722, 611, 722, 667, 556, 611, 722, 667, 889, 667, 611, 611, 333, 278, 333,\n 570, 500, 333, 500, 500, 444, 500, 444, 333, 500, 556, 278, 278, 500, 278, 778,\n 556, 500, 500, 500, 389, 389, 278, 556, 444, 667, 500, 444, 389, 348, 220, 348,\n 570, 0, 500, 0, 333, 500, 500, 1000, 500, 500, 333, 1000, 556, 333, 944, 0,\n 611, 0, 0, 333, 333, 500, 500, 350, 500, 1000, 333, 1000, 389, 333, 722, 0,\n 389, 611, 0, 389, 500, 500, 500, 500, 220, 500, 333, 747, 266, 500, 606, 0,\n 747, 333, 400, 570, 300, 300, 333, 576, 500, 250, 333, 300, 300, 500, 750, 750,\n 750, 500, 667, 667, 667, 667, 667, 667, 944, 667, 667, 667, 667, 667, 389, 389,\n 389, 389, 722, 722, 722, 722, 722, 722, 722, 570, 722, 722, 722, 722, 722, 611,\n 611, 500, 500, 500, 500, 500, 500, 500, 722, 444, 444, 444, 444, 444, 278, 278,\n 278, 278, 500, 556, 500, 500, 500, 500, 500, 570, 500, 556, 556, 556, 556, 444,\n 500, 444\n ];\n /**\n * `Symbol` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.symbolWidth = [\n 250, 333, 713, 500, 549, 833, 778, 439, 333, 333, 500, 549, 250, 549,\n 250, 278, 500, 500, 500, 500, 500, 500, 500, 500, 500, 500, 278, 278,\n 549, 549, 549, 444, 549, 722, 667, 722, 612, 611, 763, 603, 722, 333,\n 631, 722, 686, 889, 722, 722, 768, 741, 556, 592, 611, 690, 439, 768,\n 645, 795, 611, 333, 863, 333, 658, 500, 500, 631, 549, 549, 494, 439,\n 521, 411, 603, 329, 603, 549, 549, 576, 521, 549, 549, 521, 549, 603,\n 439, 576, 713, 686, 493, 686, 494, 480, 200, 480, 549, 750, 620, 247,\n 549, 167, 713, 500, 753, 753, 753, 753, 1042, 987, 603, 987, 603, 400,\n 549, 411, 549, 549, 713, 494, 460, 549, 549, 549, 549, 1000, 603, 1000,\n 658, 823, 686, 795, 987, 768, 768, 823, 768, 768, 713, 713, 713, 713,\n 713, 713, 713, 768, 713, 790, 790, 890, 823, 549, 250, 713, 603, 603,\n 1042, 987, 603, 987, 603, 494, 329, 790, 790, 786, 713, 384, 384, 384,\n 384, 384, 384, 494, 494, 494, 494, 329, 274, 686, 686, 686, 384, 384,\n 384, 384, 384, 384, 494, 494, 494, -1\n ];\n /**\n * `Zip dingbats` widths table.\n * @private\n */\n PdfStandardFontMetricsFactory.zapfDingbatsWidth = [\n 278, 974, 961, 974, 980, 719, 789, 790, 791, 690, 960, 939, 549, 855,\n 911, 933, 911, 945, 974, 755, 846, 762, 761, 571, 677, 763, 760, 759,\n 754, 494, 552, 537, 577, 692, 786, 788, 788, 790, 793, 794, 816, 823,\n 789, 841, 823, 833, 816, 831, 923, 744, 723, 749, 790, 792, 695, 776,\n 768, 792, 759, 707, 708, 682, 701, 826, 815, 789, 789, 707, 687, 696,\n 689, 786, 787, 713, 791, 785, 791, 873, 761, 762, 762, 759, 759, 892,\n 892, 788, 784, 438, 138, 277, 415, 392, 392, 668, 668, 390, 390, 317,\n 317, 276, 276, 509, 509, 410, 410, 234, 234, 334, 334, 732, 544, 544,\n 910, 667, 760, 760, 776, 595, 694, 626, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788, 788,\n 788, 788, 788, 788, 788, 788, 894, 838, 1016, 458, 748, 924, 748, 918,\n 927, 928, 928, 834, 873, 828, 924, 924, 917, 930, 931, 463, 883, 836,\n 836, 867, 867, 696, 696, 874, 874, 760, 946, 771, 865, 771, 888, 967,\n 888, 831, 873, 927, 970, 918\n ];\n return PdfStandardFontMetricsFactory;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Represents one of the 14 standard fonts.\n * It's used to create a standard PDF font to draw the text in to the PDF.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // add a new page to the document\n * let page1 : PdfPage = document.pages.add();\n * //\n * // create new standard font\n * let font : PdfStandardFont = new PdfStandardFont(PdfFontFamily.Helvetica, 20);\n * //\n * // create black brush\n * let blackBrush : PdfSolidBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n * // draw the text\n * page1.graphics.drawString('Hello World', font, blackBrush, new PointF(0, 0));\n * // save the document\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfStandardFont = /** @__PURE__ @class */ (function (_super) {\n __extends$5(PdfStandardFont, _super);\n function PdfStandardFont(fontFamilyPrototype, size, style) {\n var _this = _super.call(this, size, (typeof style === 'undefined') ? ((fontFamilyPrototype instanceof PdfStandardFont) ? fontFamilyPrototype.style : PdfFontStyle.Regular) : style) || this;\n /**\n * Gets `ascent` of the font.\n * @private\n */\n _this.dictionaryProperties = new DictionaryProperties();\n /**\n * Gets `encodings` for internal class use.\n * @hidden\n * @private\n */\n _this.encodings = ['Unknown', 'StandardEncoding', 'MacRomanEncoding', 'MacExpertEncoding',\n 'WinAnsiEncoding', 'PDFDocEncoding', 'IdentityH'];\n if (typeof fontFamilyPrototype === 'undefined') {\n _this.pdfFontFamily = PdfFontFamily.Helvetica;\n }\n else if ((fontFamilyPrototype instanceof PdfStandardFont)) {\n _this.pdfFontFamily = fontFamilyPrototype.fontFamily;\n }\n else {\n _this.pdfFontFamily = fontFamilyPrototype;\n }\n _this.checkStyle();\n _this.initializeInternals();\n return _this;\n }\n Object.defineProperty(PdfStandardFont.prototype, \"fontFamily\", {\n /* tslint:enable */\n //Properties\n /**\n * Gets the `FontFamily`.\n * @private\n */\n get: function () {\n return this.pdfFontFamily;\n },\n enumerable: true,\n configurable: true\n });\n //methods\n /**\n * Checks font `style` of the font.\n * @private\n */\n PdfStandardFont.prototype.checkStyle = function () {\n if (this.fontFamily === PdfFontFamily.Symbol || this.fontFamily === PdfFontFamily.ZapfDingbats) {\n var style = this.style;\n style &= ~(PdfFontStyle.Bold | PdfFontStyle.Italic);\n this.setStyle(style);\n }\n };\n /**\n * Returns `width` of the line.\n * @public\n */\n PdfStandardFont.prototype.getLineWidth = function (line, format) {\n if (line == null) {\n throw new Error('ArgumentNullException:line');\n }\n var width = 0;\n var name = this.name;\n line = PdfStandardFont.convert(line);\n for (var i = 0, len = line.length; i < len; i++) {\n var ch = line[i];\n var charWidth = this.getCharWidthInternal(ch, format);\n width += charWidth;\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Checks whether fonts are `equals`.\n * @private\n */\n PdfStandardFont.prototype.equalsToFont = function (font) {\n var equal = false;\n var stFont = font;\n if (stFont != null) {\n var fontFamilyEqual = (this.fontFamily === stFont.fontFamily);\n var lineReducer = (~(PdfFontStyle.Underline | PdfFontStyle.Strikeout));\n var styleEqual = (this.style & lineReducer) === (stFont.style & lineReducer);\n equal = (fontFamilyEqual && styleEqual);\n }\n return equal;\n };\n /**\n * `Initializes` font internals..\n * @private\n */\n PdfStandardFont.prototype.initializeInternals = function () {\n var equalFont = null;\n // if (PdfDocument.EnableCache) {\n equalFont = PdfDocument.cache.search(this);\n // }\n var internals = null;\n // if (equalFont == null) {\n // Create font metrics.\n var metrics = PdfStandardFontMetricsFactory.getMetrics(this.pdfFontFamily, this.style, this.size);\n this.metrics = metrics;\n internals = this.createInternals();\n this.setInternals(internals);\n };\n /**\n * `Creates` font`s dictionary.\n * @private\n */\n PdfStandardFont.prototype.createInternals = function () {\n var dictionary = new PdfDictionary();\n dictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.font));\n dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.type1));\n dictionary.items.setValue(this.dictionaryProperties.baseFont, new PdfName(this.metrics.postScriptName));\n if (this.fontFamily !== PdfFontFamily.Symbol && this.fontFamily !== PdfFontFamily.ZapfDingbats) {\n var encoding = this.encodings[FontEncoding.WinAnsiEncoding];\n dictionary.items.setValue(this.dictionaryProperties.encoding, new PdfName(encoding));\n }\n return dictionary;\n };\n /**\n * Returns `width` of the char. This methods doesn`t takes into consideration font`s size.\n * @private\n */\n PdfStandardFont.prototype.getCharWidthInternal = function (charCode, format) {\n var width = 0;\n var code = 0;\n code = charCode.charCodeAt(0);\n if (this.name === '0' || this.name === '1' || this.name === '2' ||\n this.name === '3' || this.name === '4') {\n code = code - PdfStandardFont.charOffset;\n }\n code = (code >= 0 && code !== 128) ? code : 0;\n var metrics = this.metrics;\n var widthTable = metrics.widthTable;\n width = widthTable.items(code);\n return width;\n };\n /**\n * `Converts` the specified text.\n * @private\n */\n PdfStandardFont.convert = function (text) {\n return text;\n };\n //Constants\n /**\n * First character `position`.\n * @private\n */\n PdfStandardFont.charOffset = 32;\n return PdfStandardFont;\n}(PdfFont));\n\n/**\n * `PdfAnnotation` class represents the base class for annotation objects.\n * @private\n */\nvar PdfAnnotation = /** @__PURE__ @class */ (function () {\n function PdfAnnotation(arg1) {\n // Fields\n /**\n * Specifies the Internal variable to store fields of `PdfDictionaryProperties`.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * `Color` of the annotation\n * @private\n */\n this.pdfColor = new PdfColor(255, 255, 255);\n /**\n * `Bounds` of the annotation.\n * @private\n */\n this.rectangle = new RectangleF(0, 0, 0, 0);\n /**\n * Parent `page` of the annotation.\n * @private\n */\n this.pdfPage = null;\n /**\n * `Brush of the text` of the annotation.\n * @default new PdfSolidBrush(new PdfColor(0, 0, 0))\n * @private\n */\n this.textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n /**\n * `Font of the text` of the annotation.\n * @default new PdfStandardFont(PdfFontFamily.TimesRoman, 10)\n * @private\n */\n this.textFont = new PdfStandardFont(PdfFontFamily.TimesRoman, 10);\n /**\n * `StringFormat of the text` of the annotation.\n * @default new PdfStringFormat(PdfTextAlignment.Left)\n * @private\n */\n this.format = new PdfStringFormat(PdfTextAlignment.Left);\n /**\n * `Text` of the annotation.\n * @private\n */\n this.content = '';\n /**\n * Internal variable to store `dictionary`.\n * @private\n */\n this.pdfDictionary = new PdfDictionary();\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n this.internalColor = new PdfColor();\n /**\n * `opacity or darkness` of the annotation.\n * @private\n * @default 1.0\n */\n this.darkness = 1.0;\n if (typeof arg1 === 'undefined') {\n this.initialize();\n }\n else {\n this.initialize();\n this.bounds = arg1;\n }\n }\n Object.defineProperty(PdfAnnotation.prototype, \"color\", {\n // Properties\n /**\n * `Color` of the annotation\n * @private\n */\n get: function () {\n return this.pdfColor;\n },\n set: function (value) {\n this.pdfColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"innerColor\", {\n /**\n * To specifying the `Inner color` with which to fill the annotation\n * @private\n */\n get: function () {\n return this.internalColor;\n },\n set: function (value) {\n this.internalColor = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"bounds\", {\n /**\n * `bounds` of the annotation.\n * @private\n */\n get: function () {\n return this.rectangle;\n },\n set: function (value) {\n this.rectangle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"page\", {\n /**\n * Parent `page` of the annotation.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"font\", {\n /**\n * To specifying the `Font of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textFont;\n },\n set: function (value) {\n this.textFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"stringFormat\", {\n /**\n * To specifying the `StringFormat of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"brush\", {\n /**\n * To specifying the `Brush of the text` in the annotation.\n * @private\n */\n get: function () {\n return this.textBrush;\n },\n set: function (value) {\n this.textBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"text\", {\n /**\n * `Text` of the annotation.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n this.dictionary.items.setValue(this.dictionaryProperties.contents, new PdfString(this.content));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfAnnotation.prototype, \"dictionary\", {\n /**\n * Internal variable to store `dictionary`.\n * @hidden\n */\n get: function () {\n return this.pdfDictionary;\n },\n set: function (value) {\n this.pdfDictionary = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initialize` the annotation event handler and specifies the type of the annotation.\n * @private\n */\n PdfAnnotation.prototype.initialize = function () {\n this.pdfDictionary.annotationBeginSave = new SaveAnnotationEventHandler(this);\n this.pdfDictionary.items.setValue(this.dictionaryProperties.type, new PdfName(this.dictionaryProperties.annot));\n };\n /**\n * Sets related `page` of the annotation.\n * @private\n */\n PdfAnnotation.prototype.setPage = function (page) {\n this.pdfPage = page;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.p, new PdfReferenceHolder(this.pdfPage));\n };\n /**\n * Handles the `BeginSave` event of the Dictionary.\n * @private\n */\n PdfAnnotation.prototype.beginSave = function () {\n this.save();\n };\n /**\n * `Saves` an annotation.\n * @private\n */\n /* tslint:disable */\n PdfAnnotation.prototype.save = function () {\n var nativeRectangle = new RectangleF(this.rectangle.x, this.rectangle.y, this.rectangle.width, this.rectangle.height);\n var section = this.pdfPage.section;\n var initialHeight = nativeRectangle.height;\n var tempLoacation = section.pointToNativePdf(this.page, new PointF(nativeRectangle.x, nativeRectangle.y));\n nativeRectangle.x = tempLoacation.x;\n nativeRectangle.width = tempLoacation.x + nativeRectangle.width;\n nativeRectangle.y = (tempLoacation.y - this.page.document.pageSettings.margins.top);\n nativeRectangle.height = nativeRectangle.y - initialHeight;\n this.pdfDictionary.items.setValue(this.dictionaryProperties.rect, PdfArray.fromRectangle(nativeRectangle));\n this.dictionary.items.setValue(this.dictionaryProperties.ca, new PdfNumber(this.darkness));\n };\n Object.defineProperty(PdfAnnotation.prototype, \"element\", {\n /* tslint:enable */\n // IPdfWrapper Members\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.pdfDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfAnnotation;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfLinkAnnotation` class represents the ink annotation class.\n * @private\n */\nvar PdfLinkAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$3(PdfLinkAnnotation, _super);\n function PdfLinkAnnotation(rectangle) {\n return _super.call(this, rectangle) || this;\n }\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfLinkAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n };\n return PdfLinkAnnotation;\n}(PdfAnnotation));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Represents base class for `link annotations` with associated action.\n * @private\n */\nvar PdfActionLinkAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$2(PdfActionLinkAnnotation, _super);\n // Constructors\n /**\n * Specifies the constructor for `ActionLinkAnnotation`.\n * @private\n */\n function PdfActionLinkAnnotation(rectangle) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * Internal variable to store annotation's `action`.\n * @default null\n * @private\n */\n _this.pdfAction = null;\n return _this;\n }\n //Public method\n /**\n * get and set the `action`.\n * @hidden\n */\n PdfActionLinkAnnotation.prototype.getSetAction = function (value) {\n if (typeof value === 'undefined') {\n return this.pdfAction;\n }\n else {\n this.pdfAction = value;\n }\n };\n return PdfActionLinkAnnotation;\n}(PdfLinkAnnotation));\n\nvar __extends$17 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfDocumentLinkAnnotation` class represents an annotation object with holds link on another location within a document.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfDocumentLinkAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$17(PdfDocumentLinkAnnotation, _super);\n function PdfDocumentLinkAnnotation(rectangle, destination) {\n var _this = _super.call(this, rectangle) || this;\n // Fields\n /**\n * `Destination` of the annotation.\n * @default null\n * @private\n */\n _this.pdfDestination = null;\n if (typeof destination !== 'undefined') {\n _this.destination = destination;\n }\n return _this;\n }\n Object.defineProperty(PdfDocumentLinkAnnotation.prototype, \"destination\", {\n // Properties\n /**\n * Gets or sets the `destination` of the annotation.\n * ```typescript\n * // create a new PDF document\n * let document : PdfDocument = new PdfDocument();\n * // create new pages\n * let page1 : PdfPage = document.pages.add();\n * let page2 : PdfPage = document.pages.add();\n * // create a new rectangle\n * let bounds : RectangleF = new RectangleF({x : 10, y : 200}, {width : 300, height : 25});\n * //\n * // create a new document link annotation\n * let documentLinkAnnotation : PdfDocumentLinkAnnotation = new PdfDocumentLinkAnnotation(bounds);\n * // set the annotation text\n * documentLinkAnnotation.text = 'Document link annotation';\n * // set the destination\n * documentLinkAnnotation.destination = new PdfDestination(page2);\n * // set the documentlink annotation location\n * documentLinkAnnotation.destination.location = new PointF(10, 0);\n * // add this annotation to a new page\n * page1.annotations.add(documentLinkAnnotation);\n * //\n * // save the document to disk\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n * @default null\n */\n get: function () {\n return this.pdfDestination;\n },\n set: function (value) {\n // if (this.pdfDestination !== value) {\n this.pdfDestination = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Saves` annotation object.\n * @private\n */\n PdfDocumentLinkAnnotation.prototype.save = function () {\n _super.prototype.save.call(this);\n if (this.pdfDestination != null) {\n this.dictionary.items.setValue(this.dictionaryProperties.dest, this.pdfDestination.element);\n }\n };\n /**\n * `Clone` the document link annotation.\n * @private\n */\n PdfDocumentLinkAnnotation.prototype.clone = function () {\n var annot = new PdfDocumentLinkAnnotation(this.bounds, this.destination);\n annot.color = this.color;\n annot.brush = this.brush;\n annot.destination = this.destination;\n annot.font = this.font;\n return annot;\n };\n return PdfDocumentLinkAnnotation;\n}(PdfLinkAnnotation));\n\n/**\n * ElementLayouter.ts class for EJ2-PDF\n */\n/**\n * Base class for `elements lay outing`.\n * @private\n */\nvar ElementLayouter = /** @__PURE__ @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `ElementLayouter` class.\n * @private\n */\n function ElementLayouter(element) {\n this.layoutElement = element;\n }\n Object.defineProperty(ElementLayouter.prototype, \"elements\", {\n // Properties\n /**\n * Gets the `element`.\n * @private\n */\n get: function () {\n return this.layoutElement;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `element`.\n * @private\n */\n ElementLayouter.prototype.getElement = function () {\n return this.layoutElement;\n };\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n ElementLayouter.prototype.layout = function (param) {\n return this.layoutInternal(param);\n };\n ElementLayouter.prototype.Layouter = function (param) {\n return this.layoutInternal(param);\n };\n /**\n * Returns the `next page`.\n * @private\n */\n ElementLayouter.prototype.getNextPage = function (currentPage) {\n var section = currentPage.section;\n var nextPage = section.add();\n return nextPage;\n };\n ElementLayouter.prototype.getPaginateBounds = function (param) {\n if ((param == null)) {\n throw new Error('ArgumentNullException : param');\n }\n var result = param.format.usePaginateBounds ? param.format.paginateBounds\n : new RectangleF(param.bounds.x, 0, param.bounds.width, param.bounds.height);\n return result;\n };\n return ElementLayouter;\n}());\nvar PdfLayoutFormat = /** @__PURE__ @class */ (function () {\n function PdfLayoutFormat(baseFormat) {\n if (typeof baseFormat === 'undefined') {\n //\n }\n else {\n this.break = baseFormat.break;\n this.layout = baseFormat.layout;\n this.paginateBounds = baseFormat.paginateBounds;\n this.boundsSet = baseFormat.usePaginateBounds;\n }\n }\n Object.defineProperty(PdfLayoutFormat.prototype, \"layout\", {\n // Properties\n /**\n * Gets or sets `layout` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.layoutType === 'undefined' || this.layoutType == null) {\n // this.layoutType = PdfLayoutType.Paginate;\n // }\n return this.layoutType;\n },\n set: function (value) {\n this.layoutType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"break\", {\n /**\n * Gets or sets `break` type of the element.\n * @private\n */\n get: function () {\n // if (typeof this.breakType === 'undefined' || this.boundsSet == null) {\n // this.breakType = PdfLayoutBreakType.FitPage;\n // }\n return this.breakType;\n },\n set: function (value) {\n this.breakType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"paginateBounds\", {\n /**\n * Gets or sets the `bounds` on the next page.\n * @private\n */\n get: function () {\n if (typeof this.layoutPaginateBounds === 'undefined' && this.layoutPaginateBounds == null) {\n this.layoutPaginateBounds = new RectangleF(0, 0, 0, 0);\n }\n return this.layoutPaginateBounds;\n },\n set: function (value) {\n this.layoutPaginateBounds = value;\n this.boundsSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutFormat.prototype, \"usePaginateBounds\", {\n /**\n * Gets a value indicating whether [`use paginate bounds`].\n * @private\n */\n get: function () {\n // if (typeof this.boundsSet === 'undefined' || this.boundsSet == null) {\n // this.boundsSet = false;\n // }\n return this.boundsSet;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutFormat;\n}());\nvar PdfLayoutParams = /** @__PURE__ @class */ (function () {\n function PdfLayoutParams() {\n }\n Object.defineProperty(PdfLayoutParams.prototype, \"page\", {\n // Properties\n /**\n * Gets or sets the layout `page` for the element.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"bounds\", {\n /**\n * Gets or sets layout `bounds` for the element.\n * @private\n */\n get: function () {\n return new RectangleF(this.layoutBounds.x, this.layoutBounds.y, this.layoutBounds.width, this.layoutBounds.height);\n },\n set: function (value) {\n this.layoutBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutParams.prototype, \"format\", {\n /**\n * Gets or sets `layout settings` for the element.\n * @private\n */\n get: function () {\n return this.layoutFormat;\n },\n set: function (value) {\n this.layoutFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutParams;\n}());\nvar PdfLayoutResult = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initializes the new instance of `PdfLayoutResult` class.\n * @private\n */\n function PdfLayoutResult(page, bounds) {\n this.pdfPage = page;\n this.layoutBounds = bounds;\n }\n Object.defineProperty(PdfLayoutResult.prototype, \"page\", {\n // Properties\n /**\n * Gets the last `page` where the element was drawn.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutResult.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of the element on the last page where it was drawn.\n * @private\n */\n get: function () {\n return this.layoutBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfLayoutResult;\n}());\n\n/**\n * PdfBorders.ts class for EJ2-PDF\n */\n/**\n * `PdfBorders` class used represents the cell border of the PDF grid.\n */\nvar PdfBorders = /** @__PURE__ @class */ (function () {\n // Constructor\n /**\n * Create a new instance for `PdfBorders` class.\n * @private\n */\n function PdfBorders() {\n var defaultBorderPenLeft = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenLeft.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenRight = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenRight.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenTop = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenTop.dashStyle = PdfDashStyle.Solid;\n var defaultBorderPenBottom = new PdfPen(new PdfColor(0, 0, 0));\n defaultBorderPenBottom.dashStyle = PdfDashStyle.Solid;\n this.leftPen = defaultBorderPenLeft;\n this.rightPen = defaultBorderPenRight;\n this.topPen = defaultBorderPenTop;\n this.bottomPen = defaultBorderPenBottom;\n }\n Object.defineProperty(PdfBorders.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `Left`.\n * @private\n */\n get: function () {\n return this.leftPen;\n },\n set: function (value) {\n this.leftPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"right\", {\n /**\n * Gets or sets the `Right`.\n * @private\n */\n get: function () {\n return this.rightPen;\n },\n set: function (value) {\n this.rightPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"top\", {\n /**\n * Gets or sets the `Top`.\n * @private\n */\n get: function () {\n return this.topPen;\n },\n set: function (value) {\n this.topPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"bottom\", {\n /**\n * Gets or sets the `Bottom`.\n * @private\n */\n get: function () {\n return this.bottomPen;\n },\n set: function (value) {\n this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"all\", {\n /**\n * sets the `All`.\n * @private\n */\n set: function (value) {\n this.leftPen = this.rightPen = this.topPen = this.bottomPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders.prototype, \"isAll\", {\n /**\n * Gets a value indicating whether this instance `is all`.\n * @private\n */\n get: function () {\n return ((this.leftPen === this.rightPen) && (this.leftPen === this.topPen) && (this.leftPen === this.bottomPen));\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBorders, \"default\", {\n /**\n * Gets the `default`.\n * @private\n */\n get: function () {\n return new PdfBorders();\n },\n enumerable: true,\n configurable: true\n });\n return PdfBorders;\n}());\nvar PdfPaddings = /** @__PURE__ @class */ (function () {\n function PdfPaddings(left, right, top, bottom) {\n /**\n * The 'left' border padding set.\n * @private\n */\n this.hasLeftPad = false;\n /**\n * The 'right' border padding set.\n * @private\n */\n this.hasRightPad = false;\n /**\n * The 'top' border padding set.\n * @private\n */\n this.hasTopPad = false;\n /**\n * The 'bottom' border padding set.\n * @private\n */\n this.hasBottomPad = false;\n if (typeof left === 'undefined') {\n //5.76 and 0 are taken from ms-word default table margins.\n this.leftPad = this.rightPad = 5.76;\n //0.5 is set for top and bottom by default.\n this.bottomPad = this.topPad = 0.5;\n }\n else {\n this.leftPad = left;\n this.rightPad = right;\n this.topPad = top;\n this.bottomPad = bottom;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n }\n }\n Object.defineProperty(PdfPaddings.prototype, \"left\", {\n // Properties\n /**\n * Gets or sets the `left` value of the edge\n * @private\n */\n get: function () {\n return this.leftPad;\n },\n set: function (value) {\n this.leftPad = value;\n this.hasLeftPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"right\", {\n /**\n * Gets or sets the `right` value of the edge.\n * @private\n */\n get: function () {\n return this.rightPad;\n },\n set: function (value) {\n this.rightPad = value;\n this.hasRightPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"top\", {\n /**\n * Gets or sets the `top` value of the edge\n * @private\n */\n get: function () {\n return this.topPad;\n },\n set: function (value) {\n this.topPad = value;\n this.hasTopPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"bottom\", {\n /**\n * Gets or sets the `bottom` value of the edge.\n * @private\n */\n get: function () {\n return this.bottomPad;\n },\n set: function (value) {\n this.bottomPad = value;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPaddings.prototype, \"all\", {\n /**\n * Sets value to all sides `left,right,top and bottom`.s\n * @private\n */\n set: function (value) {\n this.leftPad = this.rightPad = this.topPad = this.bottomPad = value;\n this.hasLeftPad = true;\n this.hasRightPad = true;\n this.hasTopPad = true;\n this.hasBottomPad = true;\n },\n enumerable: true,\n configurable: true\n });\n return PdfPaddings;\n}());\n\n/**\n * `PdfLayoutElement` class represents the base class for all elements that can be layout on the pages.\n * @private\n */\nvar PdfLayoutElement = /** @__PURE__ @class */ (function () {\n function PdfLayoutElement() {\n }\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseBeginPageLayout\", {\n // Property\n /**\n * Gets a value indicating whether the `start page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLayoutElement.prototype, \"raiseEndPageLayout\", {\n /**\n * Gets a value indicating whether the `ending page layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endPageLayout !== 'undefined');\n },\n enumerable: true,\n configurable: true\n });\n //Event Handlers\n PdfLayoutElement.prototype.onBeginPageLayout = function (args) {\n if (this.beginPageLayout) {\n this.beginPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.onEndPageLayout = function (args) {\n if (this.endPageLayout) {\n this.endPageLayout(this, args);\n }\n };\n PdfLayoutElement.prototype.drawHelper = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n return this.drawHelper(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawHelper(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n this.bEmbedFonts = arg4;\n return this.drawHelper(arg2, arg3, null);\n }\n else {\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n if (param != null) {\n var x = param.bounds.x;\n var y = param.bounds.y;\n if (param.bounds.x === 0) {\n x = PdfBorders.default.right.width / 2;\n }\n if (param.bounds.y === 0) {\n y = PdfBorders.default.top.width / 2;\n }\n var newBound = new RectangleF(x, y, param.bounds.width, param.bounds.height);\n param.bounds = newBound;\n }\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n var result = this.layout(param);\n return result;\n }\n };\n return PdfLayoutElement;\n}());\n\nvar __extends$20 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * TextLayouter.ts class for EJ2-PDF\n */\n/**\n * Class that `layouts the text`.\n * @private\n */\nvar TextLayouter = /** @__PURE__ @class */ (function (_super) {\n __extends$20(TextLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `TextLayouter` class.\n * @private\n */\n function TextLayouter(element) {\n return _super.call(this, element) || this;\n }\n Object.defineProperty(TextLayouter.prototype, \"element\", {\n /**\n * Gets the layout `element`.\n * @private\n */\n get: function () {\n return _super.prototype.getElement.call(this);\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Layouts` the element.\n * @private\n */\n TextLayouter.prototype.layoutInternal = function (param) {\n /* tslint:disable */\n this.format = (this.element.stringFormat !== null && typeof this.element.stringFormat !== 'undefined') ? this.element.stringFormat : null;\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var text = this.element.value;\n var result = null;\n var pageResult = new TextPageLayoutResult();\n pageResult.page = currentPage;\n pageResult.remainder = text;\n for (;;) {\n pageResult = this.layoutOnPage(text, currentPage, currentBounds, param);\n result = this.getLayoutResult(pageResult);\n break;\n }\n /* tslint:enable */\n return result;\n };\n /**\n * Raises `PageLayout` event if needed.\n * @private\n */\n TextLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfTextLayoutResult(pageResult.page, pageResult.bounds, pageResult.remainder, pageResult.lastLineBounds);\n return result;\n };\n /* tslint:disable */\n /**\n * `Layouts` the text on the page.\n * @private\n */\n TextLayouter.prototype.layoutOnPage = function (text, currentPage, currentBounds, param) {\n var result = new TextPageLayoutResult();\n result.remainder = text;\n result.page = currentPage;\n currentBounds = this.checkCorrectBounds(currentPage, currentBounds);\n var layouter = new PdfStringLayouter();\n var stringResult = layouter.layout(text, this.element.font, this.format, currentBounds, currentPage.getClientSize().height, false, new SizeF(0, 0));\n var textFinished = (stringResult.remainder == null);\n var doesntFit = (param.format.break === PdfLayoutBreakType.FitElement);\n var canDraw = !(doesntFit || stringResult.empty);\n // Draw the text.\n var graphics = currentPage.graphics;\n var brush = this.element.getBrush();\n if (this.element instanceof PdfTextWebLink) {\n brush.color = new PdfColor(0, 0, 255);\n }\n graphics.drawStringLayoutResult(stringResult, this.element.font, this.element.pen, brush, currentBounds, this.format);\n var lineInfo = stringResult.lines[stringResult.lineCount - 1];\n result.lastLineBounds = graphics.getLineBounds(stringResult.lineCount - 1, stringResult, this.element.font, currentBounds, this.format);\n result.bounds = this.getTextPageBounds(currentPage, currentBounds, stringResult);\n result.remainder = stringResult.remainder;\n result.end = (textFinished);\n return result;\n };\n /* tslint:enable */\n /**\n * `Corrects current bounds` on the page.\n * @private\n */\n TextLayouter.prototype.checkCorrectBounds = function (currentPage, currentBounds) {\n var pageSize = currentPage.graphics.clientSize;\n currentBounds.height = (currentBounds.height > 0) ? currentBounds.height : pageSize.height - currentBounds.y;\n return currentBounds;\n };\n /**\n * Returns a `rectangle` where the text was printed on the page.\n * @private\n */\n /* tslint:disable */\n TextLayouter.prototype.getTextPageBounds = function (currentPage, currentBounds, stringResult) {\n var textSize = stringResult.actualSize;\n var x = currentBounds.x;\n var y = currentBounds.y;\n var width = (currentBounds.width > 0) ? currentBounds.width : textSize.width;\n var height = textSize.height;\n var shiftedRect = currentPage.graphics.checkCorrectLayoutRectangle(textSize, currentBounds.x, currentBounds.y, this.format);\n // if (currentBounds.width <= 0) {\n x = shiftedRect.x;\n // }\n var verticalShift = currentPage.graphics.getTextVerticalAlignShift(textSize.height, currentBounds.height, this.format);\n y += verticalShift;\n var bounds = new RectangleF(x, y, width, height);\n return bounds;\n };\n return TextLayouter;\n}(ElementLayouter));\nvar TextPageLayoutResult = /** @__PURE__ @class */ (function () {\n function TextPageLayoutResult() {\n }\n return TextPageLayoutResult;\n}());\nvar PdfTextLayoutResult = /** @__PURE__ @class */ (function (_super) {\n __extends$20(PdfTextLayoutResult, _super);\n // Constructors\n /**\n * Initializes the new instance of `PdfTextLayoutResult` class.\n * @private\n */\n function PdfTextLayoutResult(page, bounds, remainder, lastLineBounds) {\n var _this = _super.call(this, page, bounds) || this;\n _this.remainderText = remainder;\n _this.lastLineTextBounds = lastLineBounds;\n return _this;\n }\n Object.defineProperty(PdfTextLayoutResult.prototype, \"remainder\", {\n // Properties\n /**\n * Gets a value that contains the `text` that was not printed.\n * @private\n */\n get: function () {\n return this.remainderText;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextLayoutResult.prototype, \"lastLineBounds\", {\n /**\n * Gets a value that indicates the `bounds` of the last line that was printed on the page.\n * @private\n */\n get: function () {\n return this.lastLineTextBounds;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTextLayoutResult;\n}(PdfLayoutResult));\n\nvar __extends$19 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfTextElement.ts class for EJ2-PDF\n */\n/**\n * `PdfTextElement` class represents the text area with the ability to span several pages\n * and inherited from the 'PdfLayoutElement' class.\n * @private\n */\nvar PdfTextElement = /** @__PURE__ @class */ (function (_super) {\n __extends$19(PdfTextElement, _super);\n function PdfTextElement(arg1, arg2, arg3, arg4, arg5) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * `Text` data.\n * @private\n */\n _this.content = '';\n /**\n * `Value` of text data.\n * @private\n */\n _this.elementValue = '';\n /**\n * indicate whether the drawText with PointF overload is called or not.\n * @default false\n * @private\n */\n _this.hasPointOverload = false;\n /**\n * indicate whether the PdfGridCell value is `PdfTextElement`\n * @default false\n * @private\n */\n _this.isPdfTextElement = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (typeof arg1 === 'string' && typeof arg2 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && typeof arg3 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfPen && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n }\n else if (typeof arg1 === 'string' && arg2 instanceof PdfFont && arg3 instanceof PdfBrush && typeof arg4 === 'undefined') {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfBrush = arg3;\n }\n else {\n _this.content = arg1;\n _this.elementValue = arg1;\n _this.pdfFont = arg2;\n _this.pdfPen = arg3;\n _this.pdfBrush = arg4;\n _this.format = arg5;\n }\n return _this;\n }\n Object.defineProperty(PdfTextElement.prototype, \"text\", {\n // Properties\n /**\n * Gets or sets a value indicating the `text` that should be printed.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.elementValue = value;\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"value\", {\n //get value\n /**\n * Gets or sets a `value` indicating the text that should be printed.\n * @private\n */\n get: function () {\n return this.elementValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"pen\", {\n //get pen\n /**\n * Gets or sets a `PdfPen` that determines the color, width, and style of the text\n * @private\n */\n get: function () {\n return this.pdfPen;\n },\n //Set pen value\n set: function (value) {\n this.pdfPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"brush\", {\n //get brush\n /**\n * Gets or sets the `PdfBrush` that will be used to draw the text with color and texture.\n * @private\n */\n get: function () {\n return this.pdfBrush;\n },\n //Set brush value\n set: function (value) {\n this.pdfBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"font\", {\n //get font\n /**\n * Gets or sets a `PdfFont` that defines the text format.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * //\n * // set the font\n * textLink.font = font;\n * //\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.pdfFont;\n },\n set: function (value) {\n this.pdfFont = value;\n if (this.pdfFont instanceof PdfStandardFont && this.content != null) {\n this.elementValue = PdfStandardFont.convert(this.content);\n }\n else {\n this.elementValue = this.content;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTextElement.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `PdfStringFormat` that will be used to set the string format\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets a `brush` for drawing.\n * @private\n */\n PdfTextElement.prototype.getBrush = function () {\n return (this.pdfBrush == null || typeof this.pdfBrush === 'undefined') ? new PdfSolidBrush(new PdfColor(0, 0, 0)) : this.pdfBrush;\n };\n // /**\n // * `Draws` an element on the Graphics.\n // * @private\n // */\n // public drawInternal(graphics : PdfGraphics) : void {\n // graphics.drawString(this.elementValue, this.pdfFont, this.pdfPen, this.getBrush(), 0, 0, this.stringFormat);\n // }\n /**\n * `Layouts` the element.\n * @private\n */\n PdfTextElement.prototype.layout = function (param) {\n var layouter = new TextLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n PdfTextElement.prototype.drawText = function (arg2, arg3, arg4, arg5) {\n if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && typeof arg4 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3, arg4, null);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'undefined') {\n return this.drawText(arg2, arg3, null);\n }\n else if (arg3 instanceof PointF && typeof arg3.width === 'undefined' && arg4 instanceof PdfLayoutFormat) {\n this.hasPointOverload = true;\n return this.drawText(arg2, arg3.x, arg3.y, arg4);\n }\n else if (typeof arg3 === 'number' && typeof arg4 === 'number' && (arg5 instanceof PdfLayoutFormat || arg5 == null)) {\n this.hasPointOverload = true;\n var width = (arg2.graphics.clientSize.width - arg3);\n var layoutRectangle = new RectangleF(arg3, arg4, width, 0);\n return this.drawText(arg2, layoutRectangle, arg5);\n }\n else if (arg3 instanceof RectangleF && typeof arg3.width !== 'undefined' && typeof arg4 === 'boolean') {\n return this.drawText(arg2, arg3, null);\n }\n else {\n var layout = new PdfStringLayouter();\n if (this.hasPointOverload) {\n var stringLayoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg2.graphics.clientSize.width - arg3.x), 0), true, arg2.graphics.clientSize);\n var layoutResult = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (stringLayoutResult.lines.length > 1) {\n this.text = stringLayoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n layoutResult = this.layout(param);\n var bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, arg2.graphics.clientSize.width, stringLayoutResult.lineHeight);\n for (var i = 1; i < stringLayoutResult.lines.length; i++) {\n param.page = layoutResult.page;\n param.bounds = new RectangleF(new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n this.text = stringLayoutResult.layoutLines[i].text;\n if (bounds.y + stringLayoutResult.lineHeight > layoutResult.page.graphics.clientSize.height) {\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (layoutResult.page.graphics.clientSize.height - layoutResult.bounds.height)) {\n bounds = new RectangleF(0, layoutResult.bounds.height, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(0, 0, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n layoutResult = this.layout(param);\n if (i !== (stringLayoutResult.lines.length - 1)) {\n bounds = new RectangleF(0, layoutResult.bounds.y + stringLayoutResult.lineHeight, layoutResult.page.graphics.clientSize.width, stringLayoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n layoutResult = this.calculateResultBounds(layoutResult, lineWidth, layoutResult.page.graphics.clientSize.width, 0);\n }\n }\n }\n return layoutResult;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n layoutResult = this.layout(param);\n layoutResult = this.calculateResultBounds(layoutResult, lineSize.width, layoutResult.page.graphics.clientSize.width, 0);\n }\n return layoutResult;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg3.width, 0), false, arg2.graphics.clientSize);\n var result = void 0;\n var param = new PdfLayoutParams();\n var temparg3 = arg3;\n var temparg4 = arg4;\n param.page = arg2;\n param.bounds = temparg3;\n param.format = (temparg4 != null) ? temparg4 : new PdfLayoutFormat();\n if (layoutResult.lines.length > 1) {\n this.text = layoutResult.layoutLines[0].text;\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n var previousPosition = new PointF(param.bounds.x, param.bounds.y);\n result = this.layout(param);\n var bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n for (var i = 1; i < layoutResult.lines.length; i++) {\n param.page = result.page;\n param.bounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n this.text = layoutResult.layoutLines[i].text;\n if (bounds.y + layoutResult.lineHeight > result.page.graphics.clientSize.height) {\n param.page = param.page.graphics.getNextPage();\n if (previousPosition.y > (result.page.graphics.clientSize.height - result.bounds.height)) {\n bounds = new RectangleF(temparg3.x, layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n bounds = new RectangleF(temparg3.x, 0, temparg3.width, layoutResult.lineHeight);\n }\n param.bounds = bounds;\n }\n result = this.layout(param);\n if (i !== (layoutResult.lines.length - 1)) {\n bounds = new RectangleF(temparg3.x, result.bounds.y + layoutResult.lineHeight, temparg3.width, layoutResult.lineHeight);\n }\n else {\n var lineWidth = this.font.measureString(this.text, this.format).width;\n result = this.calculateResultBounds(result, lineWidth, temparg3.width, temparg3.x);\n }\n }\n }\n return result;\n }\n else {\n var lineSize = this.font.measureString(this.text, this.format);\n if (param.bounds.y <= param.page.graphics.clientSize.height) {\n result = this.layout(param);\n result = this.calculateResultBounds(result, lineSize.width, temparg3.width, temparg3.x);\n }\n return result;\n }\n }\n }\n };\n PdfTextElement.prototype.calculateResultBounds = function (result, lineWidth, maximumWidth, startPosition) {\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n result.bounds.x = startPosition + (maximumWidth - lineWidth);\n result.bounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n result.bounds.x = startPosition;\n result.bounds.width = maximumWidth;\n }\n else {\n result.bounds.width = startPosition;\n result.bounds.width = lineWidth;\n }\n return result;\n };\n return PdfTextElement;\n}(PdfLayoutElement));\n\nvar __extends$21 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfUriAnnotation` class represents the Uri annotation.\n * @private\n */\nvar PdfUriAnnotation = /** @__PURE__ @class */ (function (_super) {\n __extends$21(PdfUriAnnotation, _super);\n function PdfUriAnnotation(rectangle, uri) {\n var _this = _super.call(this, rectangle) || this;\n if (typeof uri !== 'undefined') {\n _this.uri = uri;\n }\n return _this;\n }\n Object.defineProperty(PdfUriAnnotation.prototype, \"uriAction\", {\n /**\n * Get `action` of the annotation.\n * @private\n */\n get: function () {\n if (typeof this.pdfUriAction === 'undefined') {\n this.pdfUriAction = new PdfUriAction();\n }\n return this.pdfUriAction;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"uri\", {\n // Properties\n /**\n * Gets or sets the `Uri` address.\n * @private\n */\n get: function () {\n return this.uriAction.uri;\n },\n set: function (value) {\n if (this.uriAction.uri !== value) {\n this.uriAction.uri = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfUriAnnotation.prototype, \"action\", {\n /**\n * Gets or sets the `action`.\n * @private\n */\n get: function () {\n return this.getSetAction();\n },\n set: function (value) {\n this.getSetAction(value);\n this.uriAction.next = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * `Initializes` annotation object.\n * @private\n */\n PdfUriAnnotation.prototype.initialize = function () {\n _super.prototype.initialize.call(this);\n this.dictionary.items.setValue(this.dictionaryProperties.subtype, new PdfName(this.dictionaryProperties.link));\n var tempPrimitive = this.uriAction.element;\n this.dictionary.items.setValue(this.dictionaryProperties.a, this.uriAction.element);\n };\n return PdfUriAnnotation;\n}(PdfActionLinkAnnotation));\n\nvar __extends$18 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfTextWebLink` class represents the class for text web link annotation.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * //\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * //\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\nvar PdfTextWebLink = /** @__PURE__ @class */ (function (_super) {\n __extends$18(PdfTextWebLink, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfTextWebLink` class.\n * @private\n */\n function PdfTextWebLink() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store `Url`.\n * @default ''\n * @private\n */\n _this.uniformResourceLocator = '';\n /**\n * Internal variable to store `Uri Annotation` object.\n * @default null\n * @private\n */\n _this.uriAnnotation = null;\n /**\n * Checks whether the drawTextWebLink method with `PointF` overload is called or not.\n * If it set as true, then the start position of each lines excluding firest line is changed as (0, Y).\n * @private\n * @hidden\n */\n _this.recalculateBounds = false;\n _this.defaultBorder = new PdfArray();\n for (var i = 0; i < 3; i++) {\n _this.defaultBorder.add(new PdfNumber(0));\n }\n return _this;\n }\n Object.defineProperty(PdfTextWebLink.prototype, \"url\", {\n // Properties\n /**\n * Gets or sets the `Uri address`.\n * ```typescript\n * // create a new PDF document.\n * let document : PdfDocument = new PdfDocument();\n * // add a page to the document.\n * let page1 : PdfPage = document.pages.add();\n * // create the font\n * let font : PdfFont = new PdfStandardFont(PdfFontFamily.Helvetica, 12);\n * // create the Text Web Link\n * let textLink : PdfTextWebLink = new PdfTextWebLink();\n * //\n * // set the hyperlink\n * textLink.url = 'http://www.google.com';\n * //\n * // set the link text\n * textLink.text = 'Google';\n * // set the font\n * textLink.font = font;\n * // draw the hyperlink in PDF page\n * textLink.draw(page1, new PointF(10, 40));\n * // save the document.\n * document.save('output.pdf');\n * // destroy the document\n * document.destroy();\n * ```\n */\n get: function () {\n return this.uniformResourceLocator;\n },\n set: function (value) {\n if (value.length === 0) {\n throw new Error('ArgumentException : Url - string can not be empty');\n }\n this.uniformResourceLocator = value;\n },\n enumerable: true,\n configurable: true\n });\n PdfTextWebLink.prototype.draw = function (arg1, arg2) {\n if (arg1 instanceof PdfPage) {\n var layout = new PdfStringLayouter();\n var previousFontStyle = this.font.style;\n if (arg2 instanceof PointF) {\n this.recalculateBounds = true;\n this.font.style = PdfFontStyle.Underline;\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF((arg1.graphics.clientSize.width - arg2.x), 0), true, arg1.graphics.clientSize);\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(arg2, textSize);\n rect = this.calculateBounds(rect, textSize.width, arg1.graphics.clientSize.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var result = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n else {\n var result = this.drawMultipleLineWithPoint(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return result;\n }\n }\n else {\n var layoutResult = layout.layout(this.value, this.font, this.stringFormat, new SizeF(arg2.width, 0), false, new SizeF(0, 0));\n this.font.style = PdfFontStyle.Underline;\n if (layoutResult.lines.length === 1) {\n var textSize = this.font.measureString(this.value);\n var rect = new RectangleF(new PointF(arg2.x, arg2.y), textSize);\n rect = this.calculateBounds(rect, textSize.width, arg2.width, arg2.x);\n this.uriAnnotation = new PdfUriAnnotation(rect, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n arg1.annotations.add(this.uriAnnotation);\n var returnValue = this.drawText(arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n else {\n var returnValue = this.drawMultipleLineWithBounds(layoutResult, arg1, arg2);\n this.font.style = previousFontStyle;\n return returnValue;\n }\n }\n }\n else {\n var page = new PdfPage();\n page = arg1.page;\n return this.draw(page, arg2);\n }\n };\n /* tslint:enable */\n //Private methods\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified location.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithPoint = function (result, page, location) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var bounds = new RectangleF(location, size);\n if (i !== 0) {\n bounds.x = 0;\n }\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(0, 0, page.graphics.clientSize.width, size.height);\n location.y = 0;\n }\n else {\n break;\n }\n }\n bounds = this.calculateBounds(bounds, size.width, page.graphics.clientSize.width, bounds.x);\n this.uriAnnotation = new PdfUriAnnotation(bounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n if (i !== 0) {\n layoutResult = this.drawText(page, new PointF(0, bounds.y));\n }\n else {\n layoutResult = this.drawText(page, bounds.x, bounds.y);\n }\n location.y += size.height;\n }\n return layoutResult;\n };\n /**\n * Helper method `Draw` a Multiple Line Text Web Link on the Graphics with the specified bounds.\n * @private\n */\n PdfTextWebLink.prototype.drawMultipleLineWithBounds = function (result, page, bounds) {\n var layoutResult;\n for (var i = 0; i < result.layoutLines.length; i++) {\n var size = this.font.measureString(result.lines[i].text);\n var internalBounds = new RectangleF(new PointF(bounds.x, bounds.y), size);\n internalBounds = this.calculateBounds(internalBounds, size.width, bounds.width, bounds.x);\n this.text = result.lines[i].text;\n if (bounds.y + size.height > page.graphics.clientSize.height) {\n if (i !== 0) {\n page = page.graphics.getNextPage();\n bounds = new RectangleF(bounds.x, 0, bounds.width, size.height);\n internalBounds.y = 0;\n }\n else {\n break;\n }\n }\n this.uriAnnotation = new PdfUriAnnotation(internalBounds, this.url);\n this.uriAnnotation.dictionary.items.setValue('Border', this.defaultBorder);\n page.annotations.add(this.uriAnnotation);\n layoutResult = this.drawText(page, bounds);\n bounds.y += size.height;\n }\n return layoutResult;\n };\n /* tslint:disable */\n PdfTextWebLink.prototype.calculateBounds = function (currentBounds, lineWidth, maximumWidth, startPosition) {\n if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Center) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth) / 2;\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Right) {\n currentBounds.x = startPosition + (maximumWidth - lineWidth);\n currentBounds.width = lineWidth;\n }\n else if (this.stringFormat != null && typeof this.stringFormat !== 'undefined' && this.stringFormat.alignment === PdfTextAlignment.Justify) {\n currentBounds.x = startPosition;\n currentBounds.width = maximumWidth;\n }\n else {\n currentBounds.width = startPosition;\n currentBounds.width = lineWidth;\n }\n return currentBounds;\n };\n return PdfTextWebLink;\n}(PdfTextElement));\n\n/**\n * PdfNumbersConvertor.ts class for EJ2-PDF\n * @private\n */\n/**\n * `PdfNumbersConvertor` for convert page number into numbers, roman letters, etc.,\n * @private\n */\nvar PdfNumbersConvertor = /** @__PURE__ @class */ (function () {\n function PdfNumbersConvertor() {\n }\n // Static methods\n /**\n * Convert string value from page number with correct format.\n * @private\n */\n PdfNumbersConvertor.convert = function (intArabic, numberStyle) {\n var result = '';\n switch (numberStyle) {\n case PdfNumberStyle.None:\n result = '';\n break;\n case PdfNumberStyle.Numeric:\n result = intArabic.toString();\n break;\n case PdfNumberStyle.LowerLatin:\n result = this.arabicToLetter(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.LowerRoman:\n result = this.arabicToRoman(intArabic).toLowerCase();\n break;\n case PdfNumberStyle.UpperLatin:\n result = this.arabicToLetter(intArabic);\n break;\n case PdfNumberStyle.UpperRoman:\n result = this.arabicToRoman(intArabic);\n break;\n }\n return result;\n };\n /**\n * Converts `arabic to roman` letters.\n * @private\n */\n PdfNumbersConvertor.arabicToRoman = function (intArabic) {\n var retval = '';\n var retvalM = this.generateNumber(intArabic, 1000, 'M');\n retval += retvalM.returnValue;\n intArabic = retvalM.intArabic;\n var retvalCM = this.generateNumber(intArabic, 900, 'CM');\n retval += retvalCM.returnValue;\n intArabic = retvalCM.intArabic;\n var retvalD = this.generateNumber(intArabic, 500, 'D');\n retval += retvalD.returnValue;\n intArabic = retvalD.intArabic;\n var retvalCD = this.generateNumber(intArabic, 400, 'CD');\n retval += retvalCD.returnValue;\n intArabic = retvalCD.intArabic;\n var retvalC = this.generateNumber(intArabic, 100, 'C');\n retval += retvalC.returnValue;\n intArabic = retvalC.intArabic;\n var retvalXC = this.generateNumber(intArabic, 90, 'XC');\n retval += retvalXC.returnValue;\n intArabic = retvalXC.intArabic;\n var retvalL = this.generateNumber(intArabic, 50, 'L');\n retval += retvalL.returnValue;\n intArabic = retvalL.intArabic;\n var retvalXL = this.generateNumber(intArabic, 40, 'XL');\n retval += retvalXL.returnValue;\n intArabic = retvalXL.intArabic;\n var retvalX = this.generateNumber(intArabic, 10, 'X');\n retval += retvalX.returnValue;\n intArabic = retvalX.intArabic;\n var retvalIX = this.generateNumber(intArabic, 9, 'IX');\n retval += retvalIX.returnValue;\n intArabic = retvalIX.intArabic;\n var retvalV = this.generateNumber(intArabic, 5, 'V');\n retval += retvalV.returnValue;\n intArabic = retvalV.intArabic;\n var retvalIV = this.generateNumber(intArabic, 4, 'IV');\n retval += retvalIV.returnValue;\n intArabic = retvalIV.intArabic;\n var retvalI = this.generateNumber(intArabic, 1, 'I');\n retval += retvalI.returnValue;\n intArabic = retvalI.intArabic;\n return retval.toString();\n };\n /**\n * Converts `arabic to normal letters`.\n * @private\n */\n PdfNumbersConvertor.arabicToLetter = function (arabic) {\n var stack = this.convertToLetter(arabic);\n var result = '';\n while (stack.length > 0) {\n var num = stack.pop();\n result = this.appendChar(result, num);\n }\n return result.toString();\n };\n /**\n * Generate a string value of an input number.\n * @private\n */\n PdfNumbersConvertor.generateNumber = function (value, magnitude, letter) {\n var numberstring = '';\n while (value >= magnitude) {\n value -= magnitude;\n numberstring += letter;\n }\n return { returnValue: numberstring.toString(), intArabic: value };\n };\n /**\n * Convert a input number into letters.\n * @private\n */\n PdfNumbersConvertor.convertToLetter = function (arabic) {\n if (arabic <= 0) {\n throw Error('ArgumentOutOfRangeException-arabic, Value can not be less 0');\n }\n var stack = [];\n while (arabic > this.letterLimit) {\n var remainder = arabic % this.letterLimit;\n if (remainder === 0.0) {\n arabic = arabic / this.letterLimit - 1;\n remainder = this.letterLimit;\n }\n else {\n arabic /= this.letterLimit;\n }\n stack.push(remainder);\n }\n stack.push(arabic);\n return stack;\n };\n /**\n * Convert number to actual string value.\n * @private\n */\n PdfNumbersConvertor.appendChar = function (builder, value) {\n var letter = String.fromCharCode(PdfNumbersConvertor.acsiiStartIndex + value);\n builder += letter;\n return builder;\n };\n // Fields\n /**\n * numbers of letters in english [readonly].\n * @default = 26.0\n * @private\n */\n PdfNumbersConvertor.letterLimit = 26.0;\n /**\n * Resturns `acsii start index` value.\n * @default 64\n * @private\n */\n PdfNumbersConvertor.acsiiStartIndex = (65 - 1);\n return PdfNumbersConvertor;\n}());\n\n/**\n * Represent class to store information about `template and value pairs`.\n * @private\n */\nvar PdfTemplateValuePair = /** @__PURE__ @class */ (function () {\n function PdfTemplateValuePair(template, value) {\n // Fields\n /**\n * Internal variable to store template.\n * @default null\n * @private\n */\n this.pdfTemplate = null;\n /**\n * Intenal variable to store value.\n * @private\n */\n this.content = '';\n if (typeof template === 'undefined') {\n //\n }\n else {\n this.template = template;\n this.value = value;\n }\n }\n Object.defineProperty(PdfTemplateValuePair.prototype, \"template\", {\n // Properties\n /**\n * Gets or sets the template.\n * @private\n */\n get: function () {\n return this.pdfTemplate;\n },\n set: function (value) {\n this.pdfTemplate = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfTemplateValuePair.prototype, \"value\", {\n /**\n * Gets or sets the value.\n * @private\n */\n get: function () {\n return this.content;\n },\n set: function (value) {\n this.content = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfTemplateValuePair;\n}());\n\nvar __extends$23 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfAutomaticField.ts class for EJ2-PDF\n */\n/**\n * Represents automatic field which has the same value within the `PdfGraphics`.\n */\nvar PdfMultipleValueField = /** @__PURE__ @class */ (function (_super) {\n __extends$23(PdfMultipleValueField, _super);\n function PdfMultipleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the instance of dictionary values of `graphics and template value pair`.\n * @private\n */\n _this.list = new TemporaryDictionary();\n return _this;\n }\n // Implementation\n /* tslint:disable */\n PdfMultipleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var value = this.getValue(graphics);\n var template = new PdfTemplate(this.getSize());\n this.list.setValue(graphics, new PdfTemplateValuePair(template, value));\n var size = this.getSize();\n template.graphics.drawString(value, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n };\n return PdfMultipleValueField;\n}(PdfAutomaticField));\n\nvar __extends$22 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Represents PDF document `page number field`.\n * @public\n */\nvar PdfPageNumberField = /** @__PURE__ @class */ (function (_super) {\n __extends$22(PdfPageNumberField, _super);\n function PdfPageNumberField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the page number field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageNumberField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the page number field.\n * @private\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Return the `string` value of page number field.\n * @public\n */\n PdfPageNumberField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n result = this.internalGetValue(page);\n return result;\n };\n /**\n * Internal method to `get actual value of page number`.\n * @private\n */\n PdfPageNumberField.prototype.internalGetValue = function (page) {\n var document = page.document;\n var pageIndex = document.pages.indexOf(page) + 1;\n return PdfNumbersConvertor.convert(pageIndex, this.numberStyle);\n };\n return PdfPageNumberField;\n}(PdfMultipleValueField));\n\nvar __extends$24 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfCompositeField.ts class for EJ2-PDF\n */\n/**\n * Represents class which can concatenate multiple automatic fields into single string.\n */\nvar PdfCompositeField = /** @__PURE__ @class */ (function (_super) {\n __extends$24(PdfCompositeField, _super);\n // Constructor\n /**\n * Initialize a new instance of `PdfCompositeField` class.\n * @param font Font of the field.\n * @param brush Color of the field.\n * @param text Content of the field.\n * @param list List of the automatic fields in specific order based on the text content.\n */\n function PdfCompositeField(font, brush, text) {\n var list = [];\n for (var _i = 3; _i < arguments.length; _i++) {\n list[_i - 3] = arguments[_i];\n }\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the array of automatic fields.\n * @private\n */\n _this.internalAutomaticFields = null;\n /**\n * Stores the text value of the field.\n * @private\n */\n _this.internalText = '';\n _this.font = font;\n _this.brush = brush;\n _this.text = text;\n _this.automaticFields = list;\n return _this;\n }\n Object.defineProperty(PdfCompositeField.prototype, \"text\", {\n // Properties\n /**\n * Gets and sets the content of the field.\n * @public\n */\n get: function () {\n return this.internalText;\n },\n set: function (value) {\n this.internalText = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfCompositeField.prototype, \"automaticFields\", {\n /**\n * Gets and sets the list of the field to drawn.\n * @public\n */\n get: function () {\n return this.internalAutomaticFields;\n },\n set: function (value) {\n this.internalAutomaticFields = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value generated from the list of automatic fields.\n * @public\n */\n PdfCompositeField.prototype.getValue = function (graphics) {\n var text = this.text.toString();\n if (typeof this.automaticFields !== 'undefined' && this.automaticFields != null && this.automaticFields.length > 0) {\n for (var i = 0; i < this.automaticFields.length; i++) {\n var automaticField = this.automaticFields[i];\n text = text.replace('{' + i + '}', automaticField.getValue(graphics));\n }\n }\n return text;\n };\n return PdfCompositeField;\n}(PdfMultipleValueField));\n\nvar __extends$26 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfSingleValueField.ts class for EJ2-PDF\n */\n/**\n * Represents automatic field which has the same value in the whole document.\n */\nvar PdfSingleValueField = /** @__PURE__ @class */ (function (_super) {\n __extends$26(PdfSingleValueField, _super);\n // Constructors\n function PdfSingleValueField() {\n var _this = _super.call(this) || this;\n // Fields\n /* tslint:disable */\n _this.list = new TemporaryDictionary();\n /* tslint:enable */\n _this.painterGraphics = [];\n return _this;\n }\n PdfSingleValueField.prototype.performDraw = function (graphics, location, scalingX, scalingY) {\n _super.prototype.performDrawHelper.call(this, graphics, location, scalingX, scalingY);\n var page = this.getPageFromGraphics(graphics);\n var document = page.document;\n var textValue = this.getValue(graphics);\n /* tslint:disable */\n if (this.list.containsKey(document)) {\n var pair = this.list.getValue(document);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(pair.template, drawLocation, new SizeF(pair.template.width * scalingX, pair.template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n else {\n var size = this.getSize();\n var template = new PdfTemplate(size);\n this.list.setValue(document, new PdfTemplateValuePair(template, textValue));\n template.graphics.drawString(textValue, this.getFont(), this.pen, this.getBrush(), 0, 0, size.width, size.height, this.stringFormat);\n var drawLocation = new PointF(location.x + this.location.x, location.y + this.location.y);\n graphics.drawPdfTemplate(template, drawLocation, new SizeF(template.width * scalingX, template.height * scalingY));\n this.painterGraphics.push(graphics);\n }\n /* tslint:enable */\n };\n return PdfSingleValueField;\n}(PdfAutomaticField));\n\nvar __extends$25 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfPageCountField.ts class for EJ2-PDF\n */\n/**\n * Represents total PDF document page count automatic field.\n */\nvar PdfPageCountField = /** @__PURE__ @class */ (function (_super) {\n __extends$25(PdfPageCountField, _super);\n function PdfPageCountField(font, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Stores the number style of the field.\n * @private\n */\n _this.internalNumberStyle = PdfNumberStyle.Numeric;\n if (typeof arg2 === 'undefined') {\n _this.font = font;\n }\n else if (arg2 instanceof PdfBrush) {\n _this.font = font;\n _this.brush = arg2;\n }\n else {\n _this.font = font;\n _this.bounds = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfPageCountField.prototype, \"numberStyle\", {\n // Properties\n /**\n * Gets and sets the number style of the field.\n * @public\n */\n get: function () {\n return this.internalNumberStyle;\n },\n set: function (value) {\n this.internalNumberStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Return the actual value of the content to drawn.\n * @public\n */\n PdfPageCountField.prototype.getValue = function (graphics) {\n var result = null;\n var page = this.getPageFromGraphics(graphics);\n var document = page.section.parent.document;\n var count = document.pages.count;\n result = PdfNumbersConvertor.convert(count, this.numberStyle);\n return result;\n };\n return PdfPageCountField;\n}(PdfSingleValueField));\n\n/**\n * public Enum for `PdfDestinationMode`.\n * @private\n */\nvar PdfDestinationMode;\n(function (PdfDestinationMode) {\n /**\n * Specifies the type of `Location`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"Location\"] = 0] = \"Location\";\n /**\n * Specifies the type of `FitToPage`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitToPage\"] = 1] = \"FitToPage\";\n /**\n * Specifies the type of `FitR`.\n * @private\n */\n PdfDestinationMode[PdfDestinationMode[\"FitR\"] = 2] = \"FitR\";\n})(PdfDestinationMode || (PdfDestinationMode = {}));\n\n/**\n * `PdfDestination` class represents an anchor in the document\n * where bookmarks or annotations can direct when clicked.\n */\nvar PdfDestination = /** @__PURE__ @class */ (function () {\n function PdfDestination(arg1, arg2) {\n // Fields\n /**\n * Internal variable for accessing fields from `DictionryProperties` class.\n * @private\n */\n this.dictionaryProperties = new DictionaryProperties();\n /**\n * Type of the `destination`.\n * @private\n */\n this.destinationMode = PdfDestinationMode.Location;\n /**\n * `Zoom` factor.\n * @private\n * @default 0\n */\n this.zoomFactor = 0;\n /**\n * `Location` of the destination.\n * @default new PointF() with 0 ,0 as co-ordinates\n * @private\n */\n this.destinationLocation = new PointF(0, 0);\n /**\n * `Bounds` of the destination as RectangleF.\n * @default RectangleF.Empty\n * @private\n */\n this.bounds = new RectangleF();\n /**\n * Pdf primitive representing `this` object.\n * @private\n */\n this.array = new PdfArray();\n var angle = PdfPageRotateAngle.RotateAngle0;\n this.destinationLocation = new PointF(0, this.destinationLocation.y);\n this.pdfPage = arg1;\n if (arg2 instanceof PointF) {\n this.destinationLocation = arg2;\n }\n else {\n this.bounds = arg2;\n }\n }\n Object.defineProperty(PdfDestination.prototype, \"zoom\", {\n // Properties\n /**\n * Gets and Sets the `zoom` factor.\n * @private\n */\n get: function () {\n return this.zoomFactor;\n },\n set: function (value) {\n this.zoomFactor = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"page\", {\n /**\n * Gets and Sets the `page` object.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n set: function (value) {\n this.pdfPage = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"mode\", {\n /**\n * Gets and Sets the destination `mode`.\n * @private\n */\n get: function () {\n return this.destinationMode;\n },\n set: function (value) {\n this.destinationMode = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfDestination.prototype, \"location\", {\n /**\n * Gets and Sets the `location`.\n * @private\n */\n get: function () {\n return this.destinationLocation;\n },\n set: function (value) {\n this.destinationLocation = value;\n this.initializePrimitive();\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Translates` co-ordinates to PDF co-ordinate system (lower/left).\n * @private\n */\n PdfDestination.prototype.pointToNativePdf = function (page, point) {\n var section = page.section;\n return section.pointToNativePdf(page, point);\n };\n /**\n * `In fills` array by correct values.\n * @private\n */\n PdfDestination.prototype.initializePrimitive = function () {\n this.array.clear();\n this.array.add(new PdfReferenceHolder(this.pdfPage));\n switch (this.destinationMode) {\n case PdfDestinationMode.Location:\n var simplePage = this.pdfPage;\n var point = new PointF();\n point = this.pointToNativePdf(simplePage, this.destinationLocation);\n this.array.add(new PdfName(this.dictionaryProperties.xyz));\n this.array.add(new PdfNumber(point.x));\n this.array.add(new PdfNumber(point.y));\n this.array.add(new PdfNumber(this.zoomFactor));\n break;\n case PdfDestinationMode.FitToPage:\n this.array.add(new PdfName(this.dictionaryProperties.fit));\n break;\n }\n };\n Object.defineProperty(PdfDestination.prototype, \"element\", {\n /**\n * Gets the `element` representing this object.\n * @private\n */\n get: function () {\n this.initializePrimitive();\n return this.array;\n },\n enumerable: true,\n configurable: true\n });\n return PdfDestination;\n}());\n\nvar PdfFunction = /** @__PURE__ @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfFunction` class.\n * @public\n */\n function PdfFunction(dictionary) {\n //Field\n /**\n * Internal variable to store dictionary.\n * @private\n */\n this.mDictionary = null;\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n this.mDictionaryProperties = new DictionaryProperties();\n this.mDictionary = dictionary;\n }\n Object.defineProperty(PdfFunction.prototype, \"domain\", {\n //Properties\n /**\n * Gets or sets the domain of the function.\n * @public\n */\n get: function () {\n var domain = this.mDictionary.items.getValue(this.mDictionaryProperties.domain);\n return domain;\n },\n set: function (value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.domain, value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"range\", {\n /**\n * Gets or sets the range.\n * @public\n */\n get: function () {\n var range = (this.mDictionary.items.getValue(this.mDictionaryProperties.range));\n return range;\n },\n set: function (value) {\n this.mDictionary.items.setValue(this.mDictionaryProperties.range, value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"dictionary\", {\n /**\n * Gets the dictionary.\n */\n get: function () {\n return this.mDictionary;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfFunction.prototype, \"element\", {\n //IPdfWrapper Members\n /**\n * Gets the element.\n */\n get: function () {\n return this.mDictionary;\n },\n enumerable: true,\n configurable: true\n });\n return PdfFunction;\n}());\n\nvar __extends$27 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfSampledFunction.ts class for EJ2-PDF\n * Implements PDF Sampled Function.\n */\nvar PdfSampledFunction = /** @__PURE__ @class */ (function (_super) {\n __extends$27(PdfSampledFunction, _super);\n /**\n * Initializes a new instance of the `PdfSampledFunction` class.\n * @public\n */\n function PdfSampledFunction(domain, range, sizes, samples) {\n var _this = _super.call(this, new PdfStream()) || this;\n if (typeof domain === 'undefined') {\n _this.dictionary.items.setValue(_this.mDictionaryProperties.functionType, new PdfNumber(0));\n }\n else {\n _this.dictionary.items.setValue(_this.mDictionaryProperties.functionType, new PdfNumber(0));\n _this.checkParams(domain, range, sizes, samples);\n _this.setDomainAndRange(domain, range);\n _this.setSizeAndValues(sizes, samples);\n }\n return _this;\n }\n // Helper methods\n /**\n * Checks the input parameters.\n */\n PdfSampledFunction.prototype.checkParams = function (domain, range, sizes, samples) {\n var rLength = range.length;\n var dLength = domain.length;\n var sLength = samples.length;\n \n };\n /**\n * Sets the domain and range.\n */\n PdfSampledFunction.prototype.setDomainAndRange = function (domain, range) {\n this.domain = new PdfArray(domain);\n this.range = new PdfArray(range);\n };\n /**\n * Sets the size and values.\n */\n PdfSampledFunction.prototype.setSizeAndValues = function (sizes, samples) {\n var s = (this.dictionary);\n this.dictionary.items.setValue(this.mDictionaryProperties.size, new PdfArray(sizes));\n this.dictionary.items.setValue(this.mDictionaryProperties.bitsPerSample, new PdfNumber(8));\n s.writeBytes(samples);\n };\n return PdfSampledFunction;\n}(PdfFunction));\n\n/**\n * Specifies the constant values specifying whether to extend the shading\n * beyond the starting and ending points of the axis.\n */\nvar PdfExtend;\n(function (PdfExtend) {\n /**\n * Do not extend any point.\n */\n PdfExtend[PdfExtend[\"None\"] = 0] = \"None\";\n /**\n * Extend start point.\n */\n PdfExtend[PdfExtend[\"Start\"] = 1] = \"Start\";\n /**\n * Extend end point.\n */\n PdfExtend[PdfExtend[\"End\"] = 2] = \"End\";\n /**\n * Extend both start and end points.\n */\n PdfExtend[PdfExtend[\"Both\"] = 3] = \"Both\";\n})(PdfExtend || (PdfExtend = {}));\n/**\n * Specifies the gradient direction of the linear gradient brush.\n */\nvar PdfLinearGradientMode;\n(function (PdfLinearGradientMode) {\n /**\n * Specifies a gradient from upper right to lower left.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"BackwardDiagonal\"] = 0] = \"BackwardDiagonal\";\n /**\n * Specifies a gradient from upper left to lower right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"ForwardDiagonal\"] = 1] = \"ForwardDiagonal\";\n /**\n * Specifies a gradient from left to right.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Horizontal\"] = 2] = \"Horizontal\";\n /**\n * Specifies a gradient from top to bottom.\n */\n PdfLinearGradientMode[PdfLinearGradientMode[\"Vertical\"] = 3] = \"Vertical\";\n})(PdfLinearGradientMode || (PdfLinearGradientMode = {}));\n/**\n * Shading type constants.\n */\nvar ShadingType;\n(function (ShadingType) {\n /**\n * Function-based shading.\n */\n ShadingType[ShadingType[\"Function\"] = 1] = \"Function\";\n /**\n * Axial shading.\n */\n ShadingType[ShadingType[\"Axial\"] = 2] = \"Axial\";\n /**\n * Radial shading.\n */\n ShadingType[ShadingType[\"Radial\"] = 3] = \"Radial\";\n})(ShadingType || (ShadingType = {}));\nvar KnownColor;\n(function (KnownColor) {\n KnownColor[KnownColor[\"ActiveBorder\"] = 1] = \"ActiveBorder\";\n KnownColor[KnownColor[\"ActiveCaption\"] = 2] = \"ActiveCaption\";\n KnownColor[KnownColor[\"ActiveCaptionText\"] = 3] = \"ActiveCaptionText\";\n KnownColor[KnownColor[\"AppWorkspace\"] = 4] = \"AppWorkspace\";\n KnownColor[KnownColor[\"Control\"] = 5] = \"Control\";\n KnownColor[KnownColor[\"ControlDark\"] = 6] = \"ControlDark\";\n KnownColor[KnownColor[\"ControlDarkDark\"] = 7] = \"ControlDarkDark\";\n KnownColor[KnownColor[\"ControlLight\"] = 8] = \"ControlLight\";\n KnownColor[KnownColor[\"ControlLightLight\"] = 9] = \"ControlLightLight\";\n KnownColor[KnownColor[\"ControlText\"] = 10] = \"ControlText\";\n KnownColor[KnownColor[\"Desktop\"] = 11] = \"Desktop\";\n KnownColor[KnownColor[\"GrayText\"] = 12] = \"GrayText\";\n KnownColor[KnownColor[\"Highlight\"] = 13] = \"Highlight\";\n KnownColor[KnownColor[\"HighlightText\"] = 14] = \"HighlightText\";\n KnownColor[KnownColor[\"HotTrack\"] = 15] = \"HotTrack\";\n KnownColor[KnownColor[\"InactiveBorder\"] = 16] = \"InactiveBorder\";\n KnownColor[KnownColor[\"InactiveCaption\"] = 17] = \"InactiveCaption\";\n KnownColor[KnownColor[\"InactiveCaptionText\"] = 18] = \"InactiveCaptionText\";\n KnownColor[KnownColor[\"Info\"] = 19] = \"Info\";\n KnownColor[KnownColor[\"InfoText\"] = 20] = \"InfoText\";\n KnownColor[KnownColor[\"Menu\"] = 21] = \"Menu\";\n KnownColor[KnownColor[\"MenuText\"] = 22] = \"MenuText\";\n KnownColor[KnownColor[\"ScrollBar\"] = 23] = \"ScrollBar\";\n KnownColor[KnownColor[\"Window\"] = 24] = \"Window\";\n KnownColor[KnownColor[\"WindowFrame\"] = 25] = \"WindowFrame\";\n KnownColor[KnownColor[\"WindowText\"] = 26] = \"WindowText\";\n KnownColor[KnownColor[\"Transparent\"] = 27] = \"Transparent\";\n KnownColor[KnownColor[\"AliceBlue\"] = 28] = \"AliceBlue\";\n KnownColor[KnownColor[\"AntiqueWhite\"] = 29] = \"AntiqueWhite\";\n KnownColor[KnownColor[\"Aqua\"] = 30] = \"Aqua\";\n KnownColor[KnownColor[\"Aquamarine\"] = 31] = \"Aquamarine\";\n KnownColor[KnownColor[\"Azure\"] = 32] = \"Azure\";\n KnownColor[KnownColor[\"Beige\"] = 33] = \"Beige\";\n KnownColor[KnownColor[\"Bisque\"] = 34] = \"Bisque\";\n KnownColor[KnownColor[\"Black\"] = 35] = \"Black\";\n KnownColor[KnownColor[\"BlanchedAlmond\"] = 36] = \"BlanchedAlmond\";\n KnownColor[KnownColor[\"Blue\"] = 37] = \"Blue\";\n KnownColor[KnownColor[\"BlueViolet\"] = 38] = \"BlueViolet\";\n KnownColor[KnownColor[\"Brown\"] = 39] = \"Brown\";\n KnownColor[KnownColor[\"BurlyWood\"] = 40] = \"BurlyWood\";\n KnownColor[KnownColor[\"CadetBlue\"] = 41] = \"CadetBlue\";\n KnownColor[KnownColor[\"Chartreuse\"] = 42] = \"Chartreuse\";\n KnownColor[KnownColor[\"Chocolate\"] = 43] = \"Chocolate\";\n KnownColor[KnownColor[\"Coral\"] = 44] = \"Coral\";\n KnownColor[KnownColor[\"CornflowerBlue\"] = 45] = \"CornflowerBlue\";\n KnownColor[KnownColor[\"Cornsilk\"] = 46] = \"Cornsilk\";\n KnownColor[KnownColor[\"Crimson\"] = 47] = \"Crimson\";\n KnownColor[KnownColor[\"Cyan\"] = 48] = \"Cyan\";\n KnownColor[KnownColor[\"DarkBlue\"] = 49] = \"DarkBlue\";\n KnownColor[KnownColor[\"DarkCyan\"] = 50] = \"DarkCyan\";\n KnownColor[KnownColor[\"DarkGoldenrod\"] = 51] = \"DarkGoldenrod\";\n KnownColor[KnownColor[\"DarkGray\"] = 52] = \"DarkGray\";\n KnownColor[KnownColor[\"DarkGreen\"] = 53] = \"DarkGreen\";\n KnownColor[KnownColor[\"DarkKhaki\"] = 54] = \"DarkKhaki\";\n KnownColor[KnownColor[\"DarkMagenta\"] = 55] = \"DarkMagenta\";\n KnownColor[KnownColor[\"DarkOliveGreen\"] = 56] = \"DarkOliveGreen\";\n KnownColor[KnownColor[\"DarkOrange\"] = 57] = \"DarkOrange\";\n KnownColor[KnownColor[\"DarkOrchid\"] = 58] = \"DarkOrchid\";\n KnownColor[KnownColor[\"DarkRed\"] = 59] = \"DarkRed\";\n KnownColor[KnownColor[\"DarkSalmon\"] = 60] = \"DarkSalmon\";\n KnownColor[KnownColor[\"DarkSeaGreen\"] = 61] = \"DarkSeaGreen\";\n KnownColor[KnownColor[\"DarkSlateBlue\"] = 62] = \"DarkSlateBlue\";\n KnownColor[KnownColor[\"DarkSlateGray\"] = 63] = \"DarkSlateGray\";\n KnownColor[KnownColor[\"DarkTurquoise\"] = 64] = \"DarkTurquoise\";\n KnownColor[KnownColor[\"DarkViolet\"] = 65] = \"DarkViolet\";\n KnownColor[KnownColor[\"DeepPink\"] = 66] = \"DeepPink\";\n KnownColor[KnownColor[\"DeepSkyBlue\"] = 67] = \"DeepSkyBlue\";\n KnownColor[KnownColor[\"DimGray\"] = 68] = \"DimGray\";\n KnownColor[KnownColor[\"DodgerBlue\"] = 69] = \"DodgerBlue\";\n KnownColor[KnownColor[\"Firebrick\"] = 70] = \"Firebrick\";\n KnownColor[KnownColor[\"FloralWhite\"] = 71] = \"FloralWhite\";\n KnownColor[KnownColor[\"ForestGreen\"] = 72] = \"ForestGreen\";\n KnownColor[KnownColor[\"Fuchsia\"] = 73] = \"Fuchsia\";\n KnownColor[KnownColor[\"Gainsboro\"] = 74] = \"Gainsboro\";\n KnownColor[KnownColor[\"GhostWhite\"] = 75] = \"GhostWhite\";\n KnownColor[KnownColor[\"Gold\"] = 76] = \"Gold\";\n KnownColor[KnownColor[\"Goldenrod\"] = 77] = \"Goldenrod\";\n KnownColor[KnownColor[\"Gray\"] = 78] = \"Gray\";\n KnownColor[KnownColor[\"Green\"] = 79] = \"Green\";\n KnownColor[KnownColor[\"GreenYellow\"] = 80] = \"GreenYellow\";\n KnownColor[KnownColor[\"Honeydew\"] = 81] = \"Honeydew\";\n KnownColor[KnownColor[\"HotPink\"] = 82] = \"HotPink\";\n KnownColor[KnownColor[\"IndianRed\"] = 83] = \"IndianRed\";\n KnownColor[KnownColor[\"Indigo\"] = 84] = \"Indigo\";\n KnownColor[KnownColor[\"Ivory\"] = 85] = \"Ivory\";\n KnownColor[KnownColor[\"Khaki\"] = 86] = \"Khaki\";\n KnownColor[KnownColor[\"Lavender\"] = 87] = \"Lavender\";\n KnownColor[KnownColor[\"LavenderBlush\"] = 88] = \"LavenderBlush\";\n KnownColor[KnownColor[\"LawnGreen\"] = 89] = \"LawnGreen\";\n KnownColor[KnownColor[\"LemonChiffon\"] = 90] = \"LemonChiffon\";\n KnownColor[KnownColor[\"LightBlue\"] = 91] = \"LightBlue\";\n KnownColor[KnownColor[\"LightCoral\"] = 92] = \"LightCoral\";\n KnownColor[KnownColor[\"LightCyan\"] = 93] = \"LightCyan\";\n KnownColor[KnownColor[\"LightGoldenrodYellow\"] = 94] = \"LightGoldenrodYellow\";\n KnownColor[KnownColor[\"LightGray\"] = 95] = \"LightGray\";\n KnownColor[KnownColor[\"LightGreen\"] = 96] = \"LightGreen\";\n KnownColor[KnownColor[\"LightPink\"] = 97] = \"LightPink\";\n KnownColor[KnownColor[\"LightSalmon\"] = 98] = \"LightSalmon\";\n KnownColor[KnownColor[\"LightSeaGreen\"] = 99] = \"LightSeaGreen\";\n KnownColor[KnownColor[\"LightSkyBlue\"] = 100] = \"LightSkyBlue\";\n KnownColor[KnownColor[\"LightSlateGray\"] = 101] = \"LightSlateGray\";\n KnownColor[KnownColor[\"LightSteelBlue\"] = 102] = \"LightSteelBlue\";\n KnownColor[KnownColor[\"LightYellow\"] = 103] = \"LightYellow\";\n KnownColor[KnownColor[\"Lime\"] = 104] = \"Lime\";\n KnownColor[KnownColor[\"LimeGreen\"] = 105] = \"LimeGreen\";\n KnownColor[KnownColor[\"Linen\"] = 106] = \"Linen\";\n KnownColor[KnownColor[\"Magenta\"] = 107] = \"Magenta\";\n KnownColor[KnownColor[\"Maroon\"] = 108] = \"Maroon\";\n KnownColor[KnownColor[\"MediumAquamarine\"] = 109] = \"MediumAquamarine\";\n KnownColor[KnownColor[\"MediumBlue\"] = 110] = \"MediumBlue\";\n KnownColor[KnownColor[\"MediumOrchid\"] = 111] = \"MediumOrchid\";\n KnownColor[KnownColor[\"MediumPurple\"] = 112] = \"MediumPurple\";\n KnownColor[KnownColor[\"MediumSeaGreen\"] = 113] = \"MediumSeaGreen\";\n KnownColor[KnownColor[\"MediumSlateBlue\"] = 114] = \"MediumSlateBlue\";\n KnownColor[KnownColor[\"MediumSpringGreen\"] = 115] = \"MediumSpringGreen\";\n KnownColor[KnownColor[\"MediumTurquoise\"] = 116] = \"MediumTurquoise\";\n KnownColor[KnownColor[\"MediumVioletRed\"] = 117] = \"MediumVioletRed\";\n KnownColor[KnownColor[\"MidnightBlue\"] = 118] = \"MidnightBlue\";\n KnownColor[KnownColor[\"MintCream\"] = 119] = \"MintCream\";\n KnownColor[KnownColor[\"MistyRose\"] = 120] = \"MistyRose\";\n KnownColor[KnownColor[\"Moccasin\"] = 121] = \"Moccasin\";\n KnownColor[KnownColor[\"NavajoWhite\"] = 122] = \"NavajoWhite\";\n KnownColor[KnownColor[\"Navy\"] = 123] = \"Navy\";\n KnownColor[KnownColor[\"OldLace\"] = 124] = \"OldLace\";\n KnownColor[KnownColor[\"Olive\"] = 125] = \"Olive\";\n KnownColor[KnownColor[\"OliveDrab\"] = 126] = \"OliveDrab\";\n KnownColor[KnownColor[\"Orange\"] = 127] = \"Orange\";\n KnownColor[KnownColor[\"OrangeRed\"] = 128] = \"OrangeRed\";\n KnownColor[KnownColor[\"Orchid\"] = 129] = \"Orchid\";\n KnownColor[KnownColor[\"PaleGoldenrod\"] = 130] = \"PaleGoldenrod\";\n KnownColor[KnownColor[\"PaleGreen\"] = 131] = \"PaleGreen\";\n KnownColor[KnownColor[\"PaleTurquoise\"] = 132] = \"PaleTurquoise\";\n KnownColor[KnownColor[\"PaleVioletRed\"] = 133] = \"PaleVioletRed\";\n KnownColor[KnownColor[\"PapayaWhip\"] = 134] = \"PapayaWhip\";\n KnownColor[KnownColor[\"PeachPuff\"] = 135] = \"PeachPuff\";\n KnownColor[KnownColor[\"Peru\"] = 136] = \"Peru\";\n KnownColor[KnownColor[\"Pink\"] = 137] = \"Pink\";\n KnownColor[KnownColor[\"Plum\"] = 138] = \"Plum\";\n KnownColor[KnownColor[\"PowderBlue\"] = 139] = \"PowderBlue\";\n KnownColor[KnownColor[\"Purple\"] = 140] = \"Purple\";\n KnownColor[KnownColor[\"Red\"] = 141] = \"Red\";\n KnownColor[KnownColor[\"RosyBrown\"] = 142] = \"RosyBrown\";\n KnownColor[KnownColor[\"RoyalBlue\"] = 143] = \"RoyalBlue\";\n KnownColor[KnownColor[\"SaddleBrown\"] = 144] = \"SaddleBrown\";\n KnownColor[KnownColor[\"Salmon\"] = 145] = \"Salmon\";\n KnownColor[KnownColor[\"SandyBrown\"] = 146] = \"SandyBrown\";\n KnownColor[KnownColor[\"SeaGreen\"] = 147] = \"SeaGreen\";\n KnownColor[KnownColor[\"SeaShell\"] = 148] = \"SeaShell\";\n KnownColor[KnownColor[\"Sienna\"] = 149] = \"Sienna\";\n KnownColor[KnownColor[\"Silver\"] = 150] = \"Silver\";\n KnownColor[KnownColor[\"SkyBlue\"] = 151] = \"SkyBlue\";\n KnownColor[KnownColor[\"SlateBlue\"] = 152] = \"SlateBlue\";\n KnownColor[KnownColor[\"SlateGray\"] = 153] = \"SlateGray\";\n KnownColor[KnownColor[\"Snow\"] = 154] = \"Snow\";\n KnownColor[KnownColor[\"SpringGreen\"] = 155] = \"SpringGreen\";\n KnownColor[KnownColor[\"SteelBlue\"] = 156] = \"SteelBlue\";\n KnownColor[KnownColor[\"Tan\"] = 157] = \"Tan\";\n KnownColor[KnownColor[\"Teal\"] = 158] = \"Teal\";\n KnownColor[KnownColor[\"Thistle\"] = 159] = \"Thistle\";\n KnownColor[KnownColor[\"Tomato\"] = 160] = \"Tomato\";\n KnownColor[KnownColor[\"Turquoise\"] = 161] = \"Turquoise\";\n KnownColor[KnownColor[\"Violet\"] = 162] = \"Violet\";\n KnownColor[KnownColor[\"Wheat\"] = 163] = \"Wheat\";\n KnownColor[KnownColor[\"White\"] = 164] = \"White\";\n KnownColor[KnownColor[\"WhiteSmoke\"] = 165] = \"WhiteSmoke\";\n KnownColor[KnownColor[\"Yellow\"] = 166] = \"Yellow\";\n KnownColor[KnownColor[\"YellowGreen\"] = 167] = \"YellowGreen\";\n KnownColor[KnownColor[\"ButtonFace\"] = 168] = \"ButtonFace\";\n KnownColor[KnownColor[\"ButtonHighlight\"] = 169] = \"ButtonHighlight\";\n KnownColor[KnownColor[\"ButtonShadow\"] = 170] = \"ButtonShadow\";\n KnownColor[KnownColor[\"GradientActiveCaption\"] = 171] = \"GradientActiveCaption\";\n KnownColor[KnownColor[\"GradientInactiveCaption\"] = 172] = \"GradientInactiveCaption\";\n KnownColor[KnownColor[\"MenuBar\"] = 173] = \"MenuBar\";\n KnownColor[KnownColor[\"MenuHighlight\"] = 174] = \"MenuHighlight\";\n})(KnownColor || (KnownColor = {}));\n\n/**\n * PdfBrushes.ts class for EJ2-PDF\n */\n/**\n * `PdfBrushes` class provides objects used to fill the interiors of graphical shapes such as rectangles,\n * ellipses, pies, polygons, and paths.\n * @private\n */\nvar PdfBrushes = /** @__PURE__ @class */ (function () {\n function PdfBrushes() {\n }\n Object.defineProperty(PdfBrushes, \"AliceBlue\", {\n //Static Properties\n /**\n * Gets the AliceBlue brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.AliceBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.AliceBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AliceBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"AntiqueWhite\", {\n /**\n * Gets the antique white brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.AntiqueWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.AntiqueWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.AntiqueWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Aqua\", {\n /**\n * Gets the Aqua default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aqua)) {\n brush = (this.sBrushes.getValue(KnownColor.Aqua));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aqua);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Aquamarine\", {\n /**\n * Gets the Aquamarine default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Aquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.Aquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Aquamarine);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Azure\", {\n /**\n * Gets the Azure default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Azure)) {\n brush = (this.sBrushes.getValue(KnownColor.Azure));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Azure);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Beige\", {\n /**\n * Gets the Beige default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Beige)) {\n brush = (this.sBrushes.getValue(KnownColor.Beige));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Beige);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Bisque\", {\n /**\n * Gets the Bisque default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Bisque)) {\n brush = (this.sBrushes.getValue(KnownColor.Bisque));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Bisque);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Black\", {\n /**\n * Gets the Black default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Black)) {\n brush = (this.sBrushes.getValue(KnownColor.Black));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Black);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BlanchedAlmond\", {\n /**\n * Gets the BlanchedAlmond default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlanchedAlmond)) {\n brush = (this.sBrushes.getValue(KnownColor.BlanchedAlmond));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlanchedAlmond);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Blue\", {\n /**\n * Gets the Blue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Blue)) {\n brush = (this.sBrushes.getValue(KnownColor.Blue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Blue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BlueViolet\", {\n /**\n * Gets the BlueViolet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BlueViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.BlueViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BlueViolet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Brown\", {\n /**\n * Gets the Brown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Brown)) {\n brush = (this.sBrushes.getValue(KnownColor.Brown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Brown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"BurlyWood\", {\n /**\n * Gets the BurlyWood default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.BurlyWood)) {\n brush = (this.sBrushes.getValue(KnownColor.BurlyWood));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.BurlyWood);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"CadetBlue\", {\n /**\n * Gets the CadetBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.CadetBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CadetBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CadetBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Chartreuse\", {\n /**\n * Gets the Chartreuse default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chartreuse)) {\n brush = (this.sBrushes.getValue(KnownColor.Chartreuse));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chartreuse);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Chocolate\", {\n /**\n * Gets the Chocolate default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Chocolate)) {\n brush = (this.sBrushes.getValue(KnownColor.Chocolate));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Chocolate);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Coral\", {\n /**\n * Gets the Coral default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Coral)) {\n brush = (this.sBrushes.getValue(KnownColor.Coral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Coral);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"CornflowerBlue\", {\n /**\n * Gets the CornflowerBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.CornflowerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.CornflowerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.CornflowerBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Cornsilk\", {\n /**\n * Gets the Corn silk default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cornsilk)) {\n brush = (this.sBrushes.getValue(KnownColor.Cornsilk));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cornsilk);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Crimson\", {\n /**\n * Gets the Crimson default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Crimson)) {\n brush = (this.sBrushes.getValue(KnownColor.Crimson));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Crimson);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Cyan\", {\n /**\n * Gets the Cyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Cyan)) {\n brush = (this.sBrushes.getValue(KnownColor.Cyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Cyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkBlue\", {\n /**\n * Gets the DarkBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkCyan\", {\n /**\n * Gets the DarkCyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkCyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGoldenrod\", {\n /**\n * Gets the DarkGoldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGoldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGray\", {\n /**\n * Gets the DarkGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkGreen\", {\n /**\n * Gets the DarkGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkKhaki\", {\n /**\n * Gets the DarkKhaki default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkKhaki)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkKhaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkKhaki);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkMagenta\", {\n /**\n * Gets the DarkMagenta default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkMagenta)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkMagenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkMagenta);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOliveGreen\", {\n /**\n * Gets the DarkOliveGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOliveGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOliveGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOliveGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOrange\", {\n /**\n * Gets the DarkOrange default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrange)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrange);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkOrchid\", {\n /**\n * Gets the DarkOrchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkOrchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkRed\", {\n /**\n * Gets the DarkRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkRed)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSalmon\", {\n /**\n * Gets the DarkSalmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSalmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSeaGreen\", {\n /**\n * Gets the DarkSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSlateBlue\", {\n /**\n * Gets the DarkSlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkSlateGray\", {\n /**\n * Gets the DarkSlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkSlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkTurquoise\", {\n /**\n * Gets the DarkTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DarkViolet\", {\n /**\n * Gets the DarkViolet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DarkViolet)) {\n brush = (this.sBrushes.getValue(KnownColor.DarkViolet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DarkViolet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DeepPink\", {\n /**\n * Gets the DeepPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepPink)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DeepSkyBlue\", {\n /**\n * Gets the DeepSkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DeepSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DeepSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DeepSkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DimGray\", {\n /**\n * Gets the DimGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DimGray)) {\n brush = (this.sBrushes.getValue(KnownColor.DimGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DimGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"DodgerBlue\", {\n /**\n * Gets the DodgerBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.DodgerBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.DodgerBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.DodgerBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Firebrick\", {\n /**\n * Gets the Firebrick default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Firebrick)) {\n brush = (this.sBrushes.getValue(KnownColor.Firebrick));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Firebrick);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"FloralWhite\", {\n /**\n * Gets the FloralWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.FloralWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.FloralWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.FloralWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"ForestGreen\", {\n /**\n * Gets the ForestGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.ForestGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.ForestGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.ForestGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Fuchsia\", {\n /**\n * Gets the Fuchsia default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Fuchsia)) {\n brush = (this.sBrushes.getValue(KnownColor.Fuchsia));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Fuchsia);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gainsboro\", {\n /**\n * Gets the Gainsborough default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gainsboro)) {\n brush = (this.sBrushes.getValue(KnownColor.Gainsboro));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gainsboro);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"GhostWhite\", {\n /**\n * Gets the GhostWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.GhostWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.GhostWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GhostWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gold\", {\n /**\n * Gets the Gold default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gold)) {\n brush = (this.sBrushes.getValue(KnownColor.Gold));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gold);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Goldenrod\", {\n /**\n * Gets the Goldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Goldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.Goldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Goldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Gray\", {\n /**\n * Gets the Gray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Gray)) {\n brush = (this.sBrushes.getValue(KnownColor.Gray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Gray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Green\", {\n /**\n * Gets the Green default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Green)) {\n brush = (this.sBrushes.getValue(KnownColor.Green));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Green);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"GreenYellow\", {\n /**\n * Gets the GreenYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.GreenYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.GreenYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.GreenYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Honeydew\", {\n /**\n * Gets the Honeydew default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Honeydew)) {\n brush = (this.sBrushes.getValue(KnownColor.Honeydew));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Honeydew);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"HotPink\", {\n /**\n * Gets the HotPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.HotPink)) {\n brush = (this.sBrushes.getValue(KnownColor.HotPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.HotPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"IndianRed\", {\n /**\n * Gets the IndianRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.IndianRed)) {\n brush = (this.sBrushes.getValue(KnownColor.IndianRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.IndianRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Indigo\", {\n /**\n * Gets the Indigo default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Indigo)) {\n brush = (this.sBrushes.getValue(KnownColor.Indigo));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Indigo);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Ivory\", {\n /**\n * Gets the Ivory default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Ivory)) {\n brush = (this.sBrushes.getValue(KnownColor.Ivory));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Ivory);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Khaki\", {\n /**\n * Gets the Khaki default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Khaki)) {\n brush = (this.sBrushes.getValue(KnownColor.Khaki));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Khaki);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Lavender\", {\n /**\n * Gets the Lavender default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lavender)) {\n brush = (this.sBrushes.getValue(KnownColor.Lavender));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lavender);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LavenderBlush\", {\n /**\n * Gets the LavenderBlush default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LavenderBlush)) {\n brush = (this.sBrushes.getValue(KnownColor.LavenderBlush));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LavenderBlush);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LawnGreen\", {\n /**\n * Gets the LawnGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LawnGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LawnGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LawnGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LemonChiffon\", {\n /**\n * Gets the LemonChiffon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LemonChiffon)) {\n brush = (this.sBrushes.getValue(KnownColor.LemonChiffon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LemonChiffon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightBlue\", {\n /**\n * Gets the LightBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightCoral\", {\n /**\n * Gets the LightCoral default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCoral)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCoral));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCoral);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightCyan\", {\n /**\n * Gets the LightCyan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightCyan)) {\n brush = (this.sBrushes.getValue(KnownColor.LightCyan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightCyan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGoldenrodYellow\", {\n /**\n * Gets the LightGoldenrodYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGoldenrodYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGoldenrodYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGoldenrodYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGray\", {\n /**\n * Gets the LightGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightGreen\", {\n /**\n * Gets the LightGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightPink\", {\n /**\n * Gets the LightPink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightPink)) {\n brush = (this.sBrushes.getValue(KnownColor.LightPink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightPink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSalmon\", {\n /**\n * Gets the LightSalmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSalmon)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSalmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSalmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSeaGreen\", {\n /**\n * Gets the LightSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSkyBlue\", {\n /**\n * Gets the LightSkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSlateGray\", {\n /**\n * Gets the LightSlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightSteelBlue\", {\n /**\n * Gets the LightSteelBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightSteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.LightSteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightSteelBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LightYellow\", {\n /**\n * Gets the LightYellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LightYellow)) {\n brush = (this.sBrushes.getValue(KnownColor.LightYellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LightYellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Lime\", {\n /**\n * Gets the Lime default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Lime)) {\n brush = (this.sBrushes.getValue(KnownColor.Lime));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Lime);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"LimeGreen\", {\n /**\n * Gets the LimeGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.LimeGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.LimeGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.LimeGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Linen\", {\n /**\n * Gets the Linen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Linen)) {\n brush = (this.sBrushes.getValue(KnownColor.Linen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Linen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Magenta\", {\n /**\n * Gets the Magenta default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Magenta)) {\n brush = (this.sBrushes.getValue(KnownColor.Magenta));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Magenta);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Maroon\", {\n /**\n * Gets the Maroon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Maroon)) {\n brush = (this.sBrushes.getValue(KnownColor.Maroon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Maroon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumAquamarine\", {\n /**\n * Gets the MediumAquamarine default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumAquamarine)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumAquamarine));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumAquamarine);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumBlue\", {\n /**\n * Gets the MediumBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumOrchid\", {\n /**\n * Gets the MediumOrchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumOrchid)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumOrchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumOrchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumPurple\", {\n /**\n * Gets the MediumPurple default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumPurple)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumPurple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumPurple);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSeaGreen\", {\n /**\n * Gets the MediumSeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSlateBlue\", {\n /**\n * Gets the MediumSlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumSpringGreen\", {\n /**\n * Gets the MediumSpringGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumSpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumSpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumSpringGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumTurquoise\", {\n /**\n * Gets the MediumTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MediumVioletRed\", {\n /**\n * Gets the MediumVioletRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MediumVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.MediumVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MediumVioletRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MidnightBlue\", {\n /**\n * Gets the MidnightBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MidnightBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.MidnightBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MidnightBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MintCream\", {\n /**\n * Gets the MintCream default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MintCream)) {\n brush = (this.sBrushes.getValue(KnownColor.MintCream));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MintCream);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"MistyRose\", {\n /**\n * Gets the MistyRose default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.MistyRose)) {\n brush = (this.sBrushes.getValue(KnownColor.MistyRose));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.MistyRose);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Moccasin\", {\n /**\n * Gets the Moccasin default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Moccasin)) {\n brush = (this.sBrushes.getValue(KnownColor.Moccasin));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Moccasin);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"NavajoWhite\", {\n /**\n * Gets the NavajoWhite default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.NavajoWhite)) {\n brush = (this.sBrushes.getValue(KnownColor.NavajoWhite));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.NavajoWhite);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Navy\", {\n /**\n * Gets the Navy default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Navy)) {\n brush = (this.sBrushes.getValue(KnownColor.Navy));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Navy);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OldLace\", {\n /**\n * Gets the OldLace default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OldLace)) {\n brush = (this.sBrushes.getValue(KnownColor.OldLace));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OldLace);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Olive\", {\n /**\n * Gets the Olive default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Olive)) {\n brush = (this.sBrushes.getValue(KnownColor.Olive));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Olive);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OliveDrab\", {\n /**\n * Gets the OliveDrab default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OliveDrab)) {\n brush = (this.sBrushes.getValue(KnownColor.OliveDrab));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OliveDrab);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Orange\", {\n /**\n * Gets the Orange default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orange)) {\n brush = (this.sBrushes.getValue(KnownColor.Orange));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orange);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"OrangeRed\", {\n /**\n * Gets the OrangeRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.OrangeRed)) {\n brush = (this.sBrushes.getValue(KnownColor.OrangeRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.OrangeRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Orchid\", {\n /**\n * Gets the Orchid default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Orchid)) {\n brush = (this.sBrushes.getValue(KnownColor.Orchid));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Orchid);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleGoldenrod\", {\n /**\n * Gets the PaleGoldenrod default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGoldenrod)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGoldenrod));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGoldenrod);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleGreen\", {\n /**\n * Gets the PaleGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleTurquoise\", {\n /**\n * Gets the PaleTurquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleTurquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleTurquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleTurquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PaleVioletRed\", {\n /**\n * Gets the PaleVioletRed default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PaleVioletRed)) {\n brush = (this.sBrushes.getValue(KnownColor.PaleVioletRed));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PaleVioletRed);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PapayaWhip\", {\n /**\n * Gets the PapayaWhip default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PapayaWhip)) {\n brush = (this.sBrushes.getValue(KnownColor.PapayaWhip));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PapayaWhip);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PeachPuff\", {\n /**\n * Gets the PeachPuff default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PeachPuff)) {\n brush = (this.sBrushes.getValue(KnownColor.PeachPuff));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PeachPuff);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Peru\", {\n /**\n * Gets the Peru default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Peru)) {\n brush = (this.sBrushes.getValue(KnownColor.Peru));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Peru);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Pink\", {\n /**\n * Gets the Pink default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Pink)) {\n brush = (this.sBrushes.getValue(KnownColor.Pink));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Pink);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Plum\", {\n /**\n * Gets the Plum default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Plum)) {\n brush = (this.sBrushes.getValue(KnownColor.Plum));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Plum);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"PowderBlue\", {\n /**\n * Gets the PowderBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.PowderBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.PowderBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.PowderBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Purple\", {\n /**\n * Gets the Purple default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Purple)) {\n brush = (this.sBrushes.getValue(KnownColor.Purple));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Purple);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Red\", {\n /**\n * Gets the Red default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Red)) {\n brush = (this.sBrushes.getValue(KnownColor.Red));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Red);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"RosyBrown\", {\n /**\n * Gets the RosyBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.RosyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.RosyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RosyBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"RoyalBlue\", {\n /**\n * Gets the RoyalBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.RoyalBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.RoyalBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.RoyalBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SaddleBrown\", {\n /**\n * Gets the SaddleBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SaddleBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SaddleBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SaddleBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Salmon\", {\n /**\n * Gets the Salmon default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Salmon)) {\n brush = (this.sBrushes.getValue(KnownColor.Salmon));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Salmon);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SandyBrown\", {\n /**\n * Gets the SandyBrown default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SandyBrown)) {\n brush = (this.sBrushes.getValue(KnownColor.SandyBrown));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SandyBrown);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SeaGreen\", {\n /**\n * Gets the SeaGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SeaShell\", {\n /**\n * Gets the SeaShell default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SeaShell)) {\n brush = (this.sBrushes.getValue(KnownColor.SeaShell));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SeaShell);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Sienna\", {\n /**\n * Gets the Sienna default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Sienna)) {\n brush = (this.sBrushes.getValue(KnownColor.Sienna));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Sienna);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Silver\", {\n /**\n * Gets the Silver default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Silver)) {\n brush = (this.sBrushes.getValue(KnownColor.Silver));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Silver);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SkyBlue\", {\n /**\n * Gets the SkyBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SkyBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SkyBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SkyBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SlateBlue\", {\n /**\n * Gets the SlateBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SlateGray\", {\n /**\n * Gets the SlateGray default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SlateGray)) {\n brush = (this.sBrushes.getValue(KnownColor.SlateGray));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SlateGray);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Snow\", {\n /**\n * Gets the Snow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Snow)) {\n brush = (this.sBrushes.getValue(KnownColor.Snow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Snow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SpringGreen\", {\n /**\n * Gets the SpringGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SpringGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.SpringGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SpringGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"SteelBlue\", {\n /**\n * Gets the SteelBlue default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.SteelBlue)) {\n brush = (this.sBrushes.getValue(KnownColor.SteelBlue));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.SteelBlue);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Tan\", {\n /**\n * Gets the Tan default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tan)) {\n brush = (this.sBrushes.getValue(KnownColor.Tan));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tan);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Teal\", {\n /**\n * Gets the Teal default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Teal)) {\n brush = (this.sBrushes.getValue(KnownColor.Teal));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Teal);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Thistle\", {\n /**\n * Gets the Thistle default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Thistle)) {\n brush = (this.sBrushes.getValue(KnownColor.Thistle));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Thistle);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Tomato\", {\n /**\n * Gets the Tomato default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Tomato)) {\n brush = (this.sBrushes.getValue(KnownColor.Tomato));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Tomato);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Transparent\", {\n /**\n * Gets the Transparent default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Transparent)) {\n brush = (this.sBrushes.getValue(KnownColor.Transparent));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Transparent);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Turquoise\", {\n /**\n * Gets the Turquoise default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Turquoise)) {\n brush = (this.sBrushes.getValue(KnownColor.Turquoise));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Turquoise);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Violet\", {\n /**\n * Gets the Violet default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Violet)) {\n brush = (this.sBrushes.getValue(KnownColor.Violet));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Violet);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Wheat\", {\n /**\n * Gets the Wheat default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Wheat)) {\n brush = (this.sBrushes.getValue(KnownColor.Wheat));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Wheat);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"White\", {\n /**\n * Gets the White default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.White)) {\n brush = (this.sBrushes.getValue(KnownColor.White));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.White);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"WhiteSmoke\", {\n /**\n * Gets the WhiteSmoke default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.WhiteSmoke)) {\n brush = (this.sBrushes.getValue(KnownColor.WhiteSmoke));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.WhiteSmoke);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"Yellow\", {\n /**\n * Gets the Yellow default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.Yellow)) {\n brush = (this.sBrushes.getValue(KnownColor.Yellow));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.Yellow);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBrushes, \"YellowGreen\", {\n /**\n * Gets the YellowGreen default brush.\n * @public\n */\n get: function () {\n var brush = null;\n if (this.sBrushes.containsKey(KnownColor.YellowGreen)) {\n brush = (this.sBrushes.getValue(KnownColor.YellowGreen));\n }\n if ((brush == null)) {\n brush = this.getBrush(KnownColor.YellowGreen);\n }\n return brush;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Get the brush.\n */\n PdfBrushes.getBrush = function (colorName) {\n var pdfColor = this.getColorValue(colorName);\n var brush = new PdfSolidBrush(pdfColor);\n this.sBrushes.setValue(colorName, brush);\n return brush;\n };\n /**\n * Get the color value.\n * @param colorName The KnownColor name.\n */\n /* tslint:disable */\n PdfBrushes.getColorValue = function (colorName) {\n var color = new PdfColor();\n switch (colorName) {\n case KnownColor.Transparent:\n color = new PdfColor(0, 255, 255, 255);\n break;\n case KnownColor.AliceBlue:\n color = new PdfColor(255, 240, 248, 255);\n break;\n case KnownColor.AntiqueWhite:\n color = new PdfColor(255, 250, 235, 215);\n break;\n case KnownColor.Aqua:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.Aquamarine:\n color = new PdfColor(255, 127, 255, 212);\n break;\n case KnownColor.Azure:\n color = new PdfColor(255, 240, 255, 255);\n break;\n case KnownColor.Beige:\n color = new PdfColor(255, 245, 245, 220);\n break;\n case KnownColor.Bisque:\n color = new PdfColor(255, 255, 228, 196);\n break;\n case KnownColor.Black:\n color = new PdfColor(255, 0, 0, 0);\n break;\n case KnownColor.BlanchedAlmond:\n color = new PdfColor(255, 255, 235, 205);\n break;\n case KnownColor.Blue:\n color = new PdfColor(255, 0, 0, 255);\n break;\n case KnownColor.BlueViolet:\n color = new PdfColor(255, 138, 43, 226);\n break;\n case KnownColor.Brown:\n color = new PdfColor(255, 165, 42, 42);\n break;\n case KnownColor.BurlyWood:\n color = new PdfColor(255, 222, 184, 135);\n break;\n case KnownColor.CadetBlue:\n color = new PdfColor(255, 95, 158, 160);\n break;\n case KnownColor.Chartreuse:\n color = new PdfColor(255, 127, 255, 0);\n break;\n case KnownColor.Chocolate:\n color = new PdfColor(255, 210, 105, 30);\n break;\n case KnownColor.Coral:\n color = new PdfColor(255, 255, 127, 80);\n break;\n case KnownColor.CornflowerBlue:\n color = new PdfColor(255, 100, 149, 237);\n break;\n case KnownColor.Cornsilk:\n color = new PdfColor(255, 255, 248, 220);\n break;\n case KnownColor.Crimson:\n color = new PdfColor(255, 220, 20, 60);\n break;\n case KnownColor.Cyan:\n color = new PdfColor(255, 0, 255, 255);\n break;\n case KnownColor.DarkBlue:\n color = new PdfColor(255, 0, 0, 139);\n break;\n case KnownColor.DarkCyan:\n color = new PdfColor(255, 0, 139, 139);\n break;\n case KnownColor.DarkGoldenrod:\n color = new PdfColor(255, 184, 134, 11);\n break;\n case KnownColor.DarkGray:\n color = new PdfColor(255, 169, 169, 169);\n break;\n case KnownColor.DarkGreen:\n color = new PdfColor(255, 0, 100, 0);\n break;\n case KnownColor.DarkKhaki:\n color = new PdfColor(255, 189, 183, 107);\n break;\n case KnownColor.DarkMagenta:\n color = new PdfColor(255, 139, 0, 139);\n break;\n case KnownColor.DarkOliveGreen:\n color = new PdfColor(255, 85, 107, 47);\n break;\n case KnownColor.DarkOrange:\n color = new PdfColor(255, 255, 140, 0);\n break;\n case KnownColor.DarkOrchid:\n color = new PdfColor(255, 153, 50, 204);\n break;\n case KnownColor.DarkRed:\n color = new PdfColor(255, 139, 0, 0);\n break;\n case KnownColor.DarkSalmon:\n color = new PdfColor(255, 233, 150, 122);\n break;\n case KnownColor.DarkSeaGreen:\n color = new PdfColor(255, 143, 188, 139);\n break;\n case KnownColor.DarkSlateBlue:\n color = new PdfColor(255, 72, 61, 139);\n break;\n case KnownColor.DarkSlateGray:\n color = new PdfColor(255, 47, 79, 79);\n break;\n case KnownColor.DarkTurquoise:\n color = new PdfColor(255, 0, 206, 209);\n break;\n case KnownColor.DarkViolet:\n color = new PdfColor(255, 148, 0, 211);\n break;\n case KnownColor.DeepPink:\n color = new PdfColor(255, 255, 20, 147);\n break;\n case KnownColor.DeepSkyBlue:\n color = new PdfColor(255, 0, 191, 255);\n break;\n case KnownColor.DimGray:\n color = new PdfColor(255, 105, 105, 105);\n break;\n case KnownColor.DodgerBlue:\n color = new PdfColor(255, 30, 144, 255);\n break;\n case KnownColor.Firebrick:\n color = new PdfColor(255, 178, 34, 34);\n break;\n case KnownColor.FloralWhite:\n color = new PdfColor(255, 255, 250, 240);\n break;\n case KnownColor.ForestGreen:\n color = new PdfColor(255, 34, 139, 34);\n break;\n case KnownColor.Fuchsia:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Gainsboro:\n color = new PdfColor(255, 220, 220, 220);\n break;\n case KnownColor.GhostWhite:\n color = new PdfColor(255, 248, 248, 255);\n break;\n case KnownColor.Gold:\n color = new PdfColor(255, 255, 215, 0);\n break;\n case KnownColor.Goldenrod:\n color = new PdfColor(255, 218, 165, 32);\n break;\n case KnownColor.Gray:\n color = new PdfColor(255, 128, 128, 128);\n break;\n case KnownColor.Green:\n color = new PdfColor(255, 0, 128, 0);\n break;\n case KnownColor.GreenYellow:\n color = new PdfColor(255, 173, 255, 47);\n break;\n case KnownColor.Honeydew:\n color = new PdfColor(255, 240, 255, 240);\n break;\n case KnownColor.HotPink:\n color = new PdfColor(255, 255, 105, 180);\n break;\n case KnownColor.IndianRed:\n color = new PdfColor(255, 205, 92, 92);\n break;\n case KnownColor.Indigo:\n color = new PdfColor(255, 75, 0, 130);\n break;\n case KnownColor.Ivory:\n color = new PdfColor(255, 255, 255, 240);\n break;\n case KnownColor.Khaki:\n color = new PdfColor(255, 240, 230, 140);\n break;\n case KnownColor.Lavender:\n color = new PdfColor(255, 230, 230, 250);\n break;\n case KnownColor.LavenderBlush:\n color = new PdfColor(255, 255, 240, 245);\n break;\n case KnownColor.LawnGreen:\n color = new PdfColor(255, 124, 252, 0);\n break;\n case KnownColor.LemonChiffon:\n color = new PdfColor(255, 255, 250, 205);\n break;\n case KnownColor.LightBlue:\n color = new PdfColor(255, 173, 216, 230);\n break;\n case KnownColor.LightCoral:\n color = new PdfColor(255, 240, 128, 128);\n break;\n case KnownColor.LightCyan:\n color = new PdfColor(255, 224, 255, 255);\n break;\n case KnownColor.LightGoldenrodYellow:\n color = new PdfColor(255, 250, 250, 210);\n break;\n case KnownColor.LightGreen:\n color = new PdfColor(255, 144, 238, 144);\n break;\n case KnownColor.LightGray:\n color = new PdfColor(255, 211, 211, 211);\n break;\n case KnownColor.LightPink:\n color = new PdfColor(255, 255, 182, 193);\n break;\n case KnownColor.LightSalmon:\n color = new PdfColor(255, 255, 160, 122);\n break;\n case KnownColor.LightSeaGreen:\n color = new PdfColor(255, 32, 178, 170);\n break;\n case KnownColor.LightSkyBlue:\n color = new PdfColor(255, 135, 206, 250);\n break;\n case KnownColor.LightSlateGray:\n color = new PdfColor(255, 119, 136, 153);\n break;\n case KnownColor.LightSteelBlue:\n color = new PdfColor(255, 176, 196, 222);\n break;\n case KnownColor.LightYellow:\n color = new PdfColor(255, 255, 255, 224);\n break;\n case KnownColor.Lime:\n color = new PdfColor(255, 0, 255, 0);\n break;\n case KnownColor.LimeGreen:\n color = new PdfColor(255, 50, 205, 50);\n break;\n case KnownColor.Linen:\n color = new PdfColor(255, 250, 240, 230);\n break;\n case KnownColor.Magenta:\n color = new PdfColor(255, 255, 0, 255);\n break;\n case KnownColor.Maroon:\n color = new PdfColor(255, 128, 0, 0);\n break;\n case KnownColor.MediumAquamarine:\n color = new PdfColor(255, 102, 205, 170);\n break;\n case KnownColor.MediumBlue:\n color = new PdfColor(255, 0, 0, 205);\n break;\n case KnownColor.MediumOrchid:\n color = new PdfColor(255, 186, 85, 211);\n break;\n case KnownColor.MediumPurple:\n color = new PdfColor(255, 147, 112, 219);\n break;\n case KnownColor.MediumSeaGreen:\n color = new PdfColor(255, 60, 179, 113);\n break;\n case KnownColor.MediumSlateBlue:\n color = new PdfColor(255, 123, 104, 238);\n break;\n case KnownColor.MediumSpringGreen:\n color = new PdfColor(255, 0, 250, 154);\n break;\n case KnownColor.MediumTurquoise:\n color = new PdfColor(255, 72, 209, 204);\n break;\n case KnownColor.MediumVioletRed:\n color = new PdfColor(255, 199, 21, 133);\n break;\n case KnownColor.MidnightBlue:\n color = new PdfColor(255, 25, 25, 112);\n break;\n case KnownColor.MintCream:\n color = new PdfColor(255, 245, 255, 250);\n break;\n case KnownColor.MistyRose:\n color = new PdfColor(255, 255, 228, 225);\n break;\n case KnownColor.Moccasin:\n color = new PdfColor(255, 255, 228, 181);\n break;\n case KnownColor.NavajoWhite:\n color = new PdfColor(255, 255, 222, 173);\n break;\n case KnownColor.Navy:\n color = new PdfColor(255, 0, 0, 128);\n break;\n case KnownColor.OldLace:\n color = new PdfColor(255, 253, 245, 230);\n break;\n case KnownColor.Olive:\n color = new PdfColor(255, 128, 128, 0);\n break;\n case KnownColor.OliveDrab:\n color = new PdfColor(255, 107, 142, 35);\n break;\n case KnownColor.Orange:\n color = new PdfColor(255, 255, 165, 0);\n break;\n case KnownColor.OrangeRed:\n color = new PdfColor(255, 255, 69, 0);\n break;\n case KnownColor.Orchid:\n color = new PdfColor(255, 218, 112, 214);\n break;\n case KnownColor.PaleGoldenrod:\n color = new PdfColor(255, 238, 232, 170);\n break;\n case KnownColor.PaleGreen:\n color = new PdfColor(255, 152, 251, 152);\n break;\n case KnownColor.PaleTurquoise:\n color = new PdfColor(255, 175, 238, 238);\n break;\n case KnownColor.PaleVioletRed:\n color = new PdfColor(255, 219, 112, 147);\n break;\n case KnownColor.PapayaWhip:\n color = new PdfColor(255, 255, 239, 213);\n break;\n case KnownColor.PeachPuff:\n color = new PdfColor(255, 255, 218, 185);\n break;\n case KnownColor.Peru:\n color = new PdfColor(255, 205, 133, 63);\n break;\n case KnownColor.Pink:\n color = new PdfColor(255, 255, 192, 203);\n break;\n case KnownColor.Plum:\n color = new PdfColor(255, 221, 160, 221);\n break;\n case KnownColor.PowderBlue:\n color = new PdfColor(255, 176, 224, 230);\n break;\n case KnownColor.Purple:\n color = new PdfColor(255, 128, 0, 128);\n break;\n case KnownColor.Red:\n color = new PdfColor(255, 255, 0, 0);\n break;\n case KnownColor.RosyBrown:\n color = new PdfColor(255, 188, 143, 143);\n break;\n case KnownColor.RoyalBlue:\n color = new PdfColor(255, 65, 105, 225);\n break;\n case KnownColor.SaddleBrown:\n color = new PdfColor(255, 139, 69, 19);\n break;\n case KnownColor.Salmon:\n color = new PdfColor(255, 250, 128, 114);\n break;\n case KnownColor.SandyBrown:\n color = new PdfColor(255, 244, 164, 96);\n break;\n case KnownColor.SeaGreen:\n color = new PdfColor(255, 46, 139, 87);\n break;\n case KnownColor.SeaShell:\n color = new PdfColor(255, 255, 245, 238);\n break;\n case KnownColor.Sienna:\n color = new PdfColor(255, 160, 82, 45);\n break;\n case KnownColor.Silver:\n color = new PdfColor(255, 192, 192, 192);\n break;\n case KnownColor.SkyBlue:\n color = new PdfColor(255, 135, 206, 235);\n break;\n case KnownColor.SlateBlue:\n color = new PdfColor(255, 106, 90, 205);\n break;\n case KnownColor.SlateGray:\n color = new PdfColor(255, 112, 128, 144);\n break;\n case KnownColor.Snow:\n color = new PdfColor(255, 255, 250, 250);\n break;\n case KnownColor.SpringGreen:\n color = new PdfColor(255, 0, 255, 127);\n break;\n case KnownColor.SteelBlue:\n color = new PdfColor(255, 70, 130, 180);\n break;\n case KnownColor.Tan:\n color = new PdfColor(255, 210, 180, 140);\n break;\n case KnownColor.Teal:\n color = new PdfColor(255, 0, 128, 128);\n break;\n case KnownColor.Thistle:\n color = new PdfColor(255, 216, 191, 216);\n break;\n case KnownColor.Tomato:\n color = new PdfColor(255, 255, 99, 71);\n break;\n case KnownColor.Turquoise:\n color = new PdfColor(255, 64, 224, 208);\n break;\n case KnownColor.Violet:\n color = new PdfColor(255, 238, 130, 238);\n break;\n case KnownColor.Wheat:\n color = new PdfColor(255, 245, 222, 179);\n break;\n case KnownColor.White:\n color = new PdfColor(255, 255, 255, 255);\n break;\n case KnownColor.WhiteSmoke:\n color = new PdfColor(255, 245, 245, 245);\n break;\n case KnownColor.Yellow:\n color = new PdfColor(255, 255, 255, 0);\n break;\n case KnownColor.YellowGreen:\n color = new PdfColor(255, 154, 205, 50);\n break;\n }\n return color;\n };\n //Static Fields\n /**\n * Local variable to store the brushes.\n */\n PdfBrushes.sBrushes = new Dictionary();\n return PdfBrushes;\n}());\n\n/**\n * PdfBlend.ts class for EJ2-PDF\n */\n/**\n * `PdfBlend` Represents the blend color space\n * @private\n */\nvar PdfBlend = /** @__PURE__ @class */ (function () {\n function PdfBlend(count) {\n //Constants\n /**\n * precision of the GCD calculations.\n * @private\n */\n this.precision = 1000;\n //\n }\n Object.defineProperty(PdfBlend.prototype, \"factors\", {\n //Properties\n /**\n * Gets or sets the array of factor to the blend.\n * @public\n */\n get: function () {\n return this.mFactors;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Factors');\n }\n this.mFactors = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBlend.prototype, \"positions\", {\n /**\n * 'positions' Gets or sets the array of positions\n * @public\n */\n get: function () {\n return this.mPositions;\n },\n set: function (value) {\n var positionarray = value;\n for (var i = 0; i < positionarray.length; i++) {\n if (((positionarray[i] < 0) || (positionarray[i] > 1))) {\n positionarray[i] = 0;\n }\n }\n this.mPositions = positionarray;\n this.mPositions = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfBlend.prototype, \"count\", {\n /**\n * Gets the number of elements that specify the blend.\n * @protected\n */\n get: function () {\n return this.mCount;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Generates a correct color blend.\n * @param colours The colours.\n * @param colorSpace The color space.\n */\n PdfBlend.prototype.generateColorBlend = function (colours, colorSpace) {\n if ((colours == null)) {\n throw new Error('ArgumentNullException : colours');\n }\n if ((this.positions == null)) {\n this.positions = [0];\n }\n var cBlend = new PdfColorBlend(this.count);\n var positions = this.positions;\n var clrs = null;\n if ((positions.length === 1)) {\n positions = [3];\n positions[0] = 0;\n positions[1] = this.positions[0];\n positions[2] = 1;\n /* tslint:disable */\n clrs = new Array(3);\n clrs[0] = colours[0];\n clrs[1] = colours[0];\n clrs[2] = colours[1];\n }\n else {\n var c1 = colours[0];\n var c2 = colours[1];\n /* tslint:disable */\n clrs = new Array(this.count);\n var i = 0;\n var count = this.count;\n for (i = 0; i < count; ++i) {\n clrs[i] = this.interpolate(this.mFactors[i], c1, c2, colorSpace);\n }\n }\n cBlend.positions = positions;\n cBlend.colors = clrs;\n return cBlend;\n };\n /**\n * 'clonePdfBlend' Clones this instance.\n * @public\n */\n PdfBlend.prototype.clonePdfBlend = function () {\n var blend = this;\n if ((this.mFactors != null)) {\n blend.factors = (this.mFactors);\n }\n if ((this.positions != null)) {\n blend.positions = (this.positions);\n }\n return blend;\n };\n PdfBlend.prototype.gcd = function (u, v) {\n if (typeof u === 'number' && typeof v === 'number' && typeof v !== 'undefined') {\n if (((u < 0) || (u > 1))) {\n throw new Error('ArgumentOutOfRangeException : u');\n }\n if (((v < 0) || (v > 1))) {\n throw new Error('ArgumentOutOfRangeException : v');\n }\n var iU = (Math.max(1, (u * this.precision)));\n var iV = (Math.max(1, (v * this.precision)));\n var iResult = this.gcdInt(iU, iV);\n var result = ((iResult) / this.precision);\n return result;\n }\n else {\n var values = u;\n if ((values == null)) {\n throw new Error('ArgumentNullException : values');\n }\n if ((values.length < 1)) {\n throw new Error('ArgumentException : Not enough values in the array. - values');\n }\n var gcd = values[0];\n if ((values.length > 1)) {\n var count = values.length;\n for (var i = 1; i < count; ++i) {\n gcd = this.gcd(values[i], gcd);\n if ((gcd === (1 / this.precision))) {\n break;\n }\n }\n }\n return gcd;\n }\n };\n /**\n * Calculate the GCD int of the specified values.\n * @param u The u.\n * @param v The v.\n */\n PdfBlend.prototype.gcdInt = function (u, v) {\n if ((u <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + u + 'The arguments cannot be less or equal to zero.');\n }\n if ((v <= 0)) {\n throw new Error('ArgumentOutOfRangeException' + v + 'The arguments cannot be less or equal to zero.');\n }\n if (((u === 1) || (v === 1))) {\n return 1;\n }\n var shift = 0;\n while (this.isEven(u, v)) {\n ++shift;\n u >>= 1;\n v >>= 1;\n }\n while (((u & 1) <= 0)) {\n u >>= 1;\n }\n do {\n while ((v & 1) <= 0) {\n v >>= 1;\n }\n if (u > v) {\n var t = v;\n v = u;\n u = t;\n }\n v = v - u;\n } while (v !== 0);\n return (u << shift);\n };\n PdfBlend.prototype.isEven = function (arg1, arg2) {\n if (typeof arg2 === 'number' && typeof arg2 !== 'undefined') {\n var result = true;\n result = (result && ((arg1 & 1) <= 0)); // Is u even?\n result = (result && ((arg2 & 1) <= 0)); // Is v even?\n return result;\n }\n else {\n return ((arg1 & 1) <= 0);\n }\n };\n PdfBlend.prototype.interpolate = function (t, color1, color2, colorSpace) {\n if (color1 instanceof PdfColor) {\n var color = new PdfColor();\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n var red = (this.interpolate(t, color1.red, color2.red));\n var green = (this.interpolate(t, color1.green, color2.green));\n var blue = (this.interpolate(t, color1.blue, color2.blue));\n color = new PdfColor(red, green, blue);\n break;\n case PdfColorSpace.GrayScale:\n var gray = (this.interpolate(t, color1.gray, color2.gray));\n color = new PdfColor(gray);\n break;\n case PdfColorSpace.Cmyk:\n var cyan = (this.interpolate(t, color1.c, color2.c));\n var magenta = (this.interpolate(t, color1.m, color2.m));\n var yellow = (this.interpolate(t, color1.y, color2.y));\n var black = (this.interpolate(t, color1.k, color2.k));\n color = new PdfColor(cyan, magenta, yellow, black);\n break;\n }\n return color;\n }\n else {\n var t0 = 0;\n var t1 = 1;\n var result = 0;\n if ((t === t0)) {\n result = color1;\n }\n else if ((t === t1)) {\n result = color2;\n }\n else {\n result = (color1 + ((t - t0) * ((color2 - color1) / (t1 - t0))));\n }\n return result;\n }\n };\n return PdfBlend;\n}());\n\nvar __extends$29 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfColorBlend.ts class for EJ2-PDF\n */\n/**\n * `PdfColorBlend` Represents the arrays of colors and positions used for\n * interpolating color blending in a multicolor gradient.\n * @private\n */\nvar PdfColorBlend = /** @__PURE__ @class */ (function (_super) {\n __extends$29(PdfColorBlend, _super);\n function PdfColorBlend(count) {\n var _this = _super.call(this) || this;\n if (typeof count === 'number') {\n _this = _super.call(this, count) || this;\n }\n return _this;\n }\n Object.defineProperty(PdfColorBlend.prototype, \"colors\", {\n //Properties\n /**\n * Gets or sets the array of colors.\n * @public\n */\n get: function () {\n return this.mcolors;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Colors');\n }\n this.mcolors = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Gets the function.\n * @param colorSpace The color space.\n * @public\n */\n PdfColorBlend.prototype.getFunction = function (colorSpace) {\n var domain = [0, 1];\n var colourComponents = this.getColorComponentsCount(colorSpace);\n var maxComponentValue = this.getMaxComponentValue(colorSpace);\n var range = this.setRange(colourComponents, maxComponentValue);\n var func = null;\n if ((this.mbrush == null && typeof this.mbrush === 'undefined')) {\n var sizes = [1];\n var samplesCount = void 0;\n var step = 1;\n if (this.positions.length === 2) {\n samplesCount = 2;\n }\n else {\n var positions = this.positions;\n var intervals = this.getIntervals(positions);\n var gcd = this.gcd(intervals);\n step = gcd;\n samplesCount = (((1 / gcd)) + 1);\n }\n sizes[0] = samplesCount;\n var samples = this.getSamplesValues(colorSpace, samplesCount, maxComponentValue, step);\n func = new PdfSampledFunction(domain, range, sizes, samples);\n return func;\n }\n return func;\n };\n /**\n * 'cloneColorBlend' Clones this instance.\n * @public\n */\n PdfColorBlend.prototype.cloneColorBlend = function () {\n var cBlend = this;\n if ((this.mcolors != null && typeof this.mcolors !== 'undefined')) {\n cBlend.colors = (this.mcolors);\n }\n if ((this.positions != null && typeof this.positions !== 'undefined')) {\n cBlend.positions = (this.positions);\n }\n return cBlend;\n };\n /**\n * Sets the range.\n * @param colourComponents The colour components.\n * @param maxValue The max value.\n */\n PdfColorBlend.prototype.setRange = function (colourComponents, maxValue) {\n var range = [(colourComponents * 2)];\n for (var i = 0; (i < colourComponents); ++i) {\n range[(i * 2)] = 0;\n range[((i * 2) + 1)] = 1;\n }\n return range;\n };\n /**\n * Calculates the color components count according to colour space.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getColorComponentsCount = function (colorSpace) {\n var count = 0;\n switch (colorSpace) {\n case PdfColorSpace.Rgb:\n count = 3;\n break;\n case PdfColorSpace.Cmyk:\n count = 4;\n break;\n case PdfColorSpace.GrayScale:\n count = 1;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return count;\n };\n /**\n * Gets samples values for specified colour space.\n * @param colorSpace The color space.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getSamplesValues = function (colorSpace, sampleCount, maxComponentValue, step) {\n var values;\n switch (colorSpace) {\n case PdfColorSpace.GrayScale:\n values = this.getGrayscaleSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Cmyk:\n values = this.getCmykSamples(sampleCount, maxComponentValue, step);\n break;\n case PdfColorSpace.Rgb:\n values = this.getRgbSamples(sampleCount, maxComponentValue, step);\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + ' colorSpace');\n }\n return values;\n };\n /**\n * Gets the grayscale samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getGrayscaleSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 2)];\n for (var i = 0; (i < sampleCount); ++i) {\n var color = this.getNextColor(i, step, PdfColorSpace.GrayScale);\n \n }\n return values;\n };\n /**\n * Gets the RGB samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getRgbSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 3)];\n for (var i = 0; (i < sampleCount); ++i) {\n var color = this.getNextColor(i, step, PdfColorSpace.Rgb);\n var index = (i * 3);\n values[index] = color.r;\n values[(index + 1)] = color.g;\n values[(index + 2)] = color.b;\n }\n return values;\n };\n /**\n * Gets the CMYK samples.\n * @param sampleCount The sample count.\n * @param maxComponentValue The max component value.\n * @param step The step.\n */\n PdfColorBlend.prototype.getCmykSamples = function (sampleCount, maxComponentValue, step) {\n var values = [(sampleCount * 4)];\n for (var i = 0; (i < sampleCount); i++) {\n var color = this.getNextColor(i, step, PdfColorSpace.Cmyk);\n var index = (i * 4);\n values[index] = ((color.c * maxComponentValue));\n values[(index + 1)] = ((color.m * maxComponentValue));\n values[(index + 2)] = ((color.y * maxComponentValue));\n values[(index + 3)] = ((color.k * maxComponentValue));\n }\n return values;\n };\n /**\n * Calculates the color that should be at the specified index.\n * @param index The index.\n * @param step The step.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getNextColor = function (index, step, colorSpace) {\n var position = (step * index);\n var indexHi;\n var indexLow;\n var result = this.getIndices(position, indexLow, indexHi);\n indexLow = result.indexLow;\n indexHi = result.indexHi;\n var color;\n if (indexLow === indexHi) {\n color = this.mcolors[indexLow];\n }\n else {\n var positionLow = this.positions[indexLow];\n var positionHi = this.positions[indexHi];\n var colorLow = this.mcolors[indexLow];\n var colorHi = this.mcolors[indexHi];\n var t = ((position - positionLow) / (positionHi - positionLow));\n color = this.interpolate(t, colorLow, colorHi, colorSpace);\n }\n return color;\n };\n /**\n * Gets the indices.\n * @param position The position.\n * @param indexLow The index low.\n * @param indexHi The index hi.\n */\n PdfColorBlend.prototype.getIndices = function (position, indexLow, indexHi) {\n var positions = this.positions;\n indexLow = 0;\n indexHi = 0;\n for (var i = 0; (i < this.mcolors.length); ++i) {\n var currPos = positions[i];\n if ((currPos === position)) {\n indexHi = i;\n indexLow = i;\n break;\n }\n else if ((currPos > position)) {\n indexHi = i;\n break;\n }\n indexLow = i;\n indexHi = i;\n }\n return { indexLow: indexLow, indexHi: indexHi };\n };\n /**\n * Calculates the max component value.\n * @param colorSpace The color space.\n */\n PdfColorBlend.prototype.getMaxComponentValue = function (colorSpace) {\n var result = 0;\n switch (colorSpace) {\n case PdfColorSpace.Cmyk:\n case PdfColorSpace.Rgb:\n result = 255;\n break;\n case PdfColorSpace.GrayScale:\n result = 65535;\n break;\n default:\n throw new Error('ArgumentException - Unsupported color space: ' + colorSpace + 'colorSpace');\n }\n return result;\n };\n /**\n * Gets an intervals array from the positions array.\n * @param positions The positions array.\n */\n PdfColorBlend.prototype.getIntervals = function (positions) {\n var count = positions.length;\n var intervals = [(count - 1)];\n var prev = positions[0];\n for (var i = 1; (i < count); ++i) {\n var v = positions[i];\n intervals[(i - 1)] = (v - prev);\n prev = v;\n }\n return intervals;\n };\n return PdfColorBlend;\n}(PdfBlend));\n\nvar __extends$28 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfLinearGradientBrush.ts class for EJ2-PDF\n */\n/**\n * `PdfLinearGradientBrush` Implements linear gradient brush by using PDF axial shading pattern.\n * @private\n */\nvar PdfLinearGradientBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$28(PdfLinearGradientBrush, _super);\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfLinearGradientBrush(arg1, arg2, arg3, arg4) {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Local variable to store the dictionary properties.\n * @private\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PdfColor && arg4 instanceof PdfColor) {\n _this.initialize(arg3, arg4);\n _this.mPointStart = arg1;\n _this.mPointEnd = arg2;\n _this.setPoints(_this.mPointStart, _this.mPointEnd);\n }\n else if (arg1 instanceof Rectangle) {\n _this.initialize(arg2, arg3);\n /* tslint:disable-next-line:max-line-length */\n if ((arg4 === PdfLinearGradientMode.BackwardDiagonal || arg4 === PdfLinearGradientMode.ForwardDiagonal || arg4 === PdfLinearGradientMode.Horizontal || arg4 === PdfLinearGradientMode.Vertical)) {\n _this.mBoundaries = arg1;\n switch (arg4) {\n case PdfLinearGradientMode.BackwardDiagonal:\n _this.mPointStart = new PointF(arg1.right, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n case PdfLinearGradientMode.ForwardDiagonal:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.bottom);\n break;\n case PdfLinearGradientMode.Horizontal:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.top);\n break;\n case PdfLinearGradientMode.Vertical:\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n break;\n default:\n throw new Error('ArgumentException -- Unsupported linear gradient mode: ' + arg4 + ' mode');\n }\n _this.setPoints(_this.mPointStart, _this.mPointEnd);\n }\n else if (typeof arg4 === 'number' && typeof arg4 !== 'undefined') {\n _this.mBoundaries = arg1;\n arg4 = arg4 % 360;\n if ((arg4 === 0)) {\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 90)) {\n _this.mPointStart = new PointF(arg1.left, arg1.top);\n _this.mPointEnd = new PointF(arg1.left, arg1.bottom);\n }\n else if ((arg4 === 180)) {\n _this.mPointEnd = new PointF(arg1.left, arg1.top);\n _this.mPointStart = new PointF(arg1.right, arg1.top);\n }\n else if ((arg4 === 270)) {\n _this.mPointEnd = new PointF(arg1.left, arg1.top);\n _this.mPointStart = new PointF(arg1.left, arg1.bottom);\n }\n else {\n var d2r = (Math.PI / 180);\n var radAngle = (arg4 * d2r);\n var k = Math.tan(radAngle);\n var x = (_this.mBoundaries.left\n + ((_this.mBoundaries.right - _this.mBoundaries.left) / 2));\n var y = (_this.mBoundaries.top\n + ((_this.mBoundaries.bottom - _this.mBoundaries.top) / 2));\n var centre = new PointF(x, y);\n x = (_this.mBoundaries.width / (2 * (Math.cos(radAngle))));\n y = ((k * x));\n x = (x + centre.x);\n y = (y + centre.y);\n var p1 = new PointF(x, y);\n var cp1 = _this.subPoints(p1, centre);\n // P1 - P0\n var p = _this.choosePoint(arg4);\n var coef = (_this.mulPoints(_this.subPoints(p, centre), cp1)\n / _this.mulPoints(cp1, cp1));\n _this.mPointEnd = _this.addPoints(centre, _this.mulPoint(cp1, coef));\n // Parametric line equation.\n _this.mPointStart = _this.addPoints(centre, _this.mulPoint(cp1, (coef * -1)));\n }\n _this.setPoints(_this.mPointEnd, _this.mPointStart);\n }\n }\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfLinearGradientBrush` class.\n * @param color1 The starting color of the gradient.\n * @param color2 The end color of the gradient.\n */\n PdfLinearGradientBrush.prototype.initialize = function (color1, color2) {\n this.mColours = [color1, color2];\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.positions = [0, 1];\n this.mColourBlend.colors = this.mColours;\n this.initShading();\n };\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"blend\", {\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions\n * and factors that define a custom falloff for the gradient.\n * @public\n */\n get: function () {\n return this.mBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColours == null)) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n // TODO: generate correct colour blend.\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"interpolationColors\", {\n /**\n * Gets or sets a ColorBlend that defines a multicolor linear gradient.\n * @public\n */\n get: function () {\n return this.mColourBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColours = null;\n this.mColourBlend = value;\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"linearColors\", {\n /**\n * Gets or sets the starting and ending colors of the gradient.\n * @public\n */\n get: function () {\n return this.mColours;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small - LinearColors');\n }\n if ((this.mColours == null && typeof this.mColours === 'undefined')) {\n this.mColours = [value[0], value[1]];\n }\n else {\n this.mColours[0] = value[0];\n this.mColours[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlend = new PdfColorBlend(2);\n this.mColourBlend.colors = this.mColours;\n this.mColourBlend.positions = [0, 1];\n }\n else {\n this.mColourBlend = this.mBlend.generateColorBlend(this.mColours, this.colorSpace);\n }\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"rectangle\", {\n /**\n * Gets a rectangular region that defines the boundaries of the gradient.\n * @public\n */\n get: function () {\n return this.mBoundaries;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfLinearGradientBrush.prototype, \"extend\", {\n /**\n * Gets or sets the value indicating whether the gradient should extend starting and ending points.\n * @public\n */\n get: function () {\n var result = PdfExtend.None;\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if ((extend != null)) {\n var extStart = (extend.items(0));\n var extEnd = (extend.items(1));\n if (extStart.value) {\n result = (result | PdfExtend.Start);\n }\n if (extEnd.value) {\n result = (result | PdfExtend.End);\n }\n }\n return result;\n },\n set: function (value) {\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n var extStart;\n var extEnd;\n if ((extend == null)) {\n extStart = new PdfBoolean(false);\n extEnd = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd = (extend.items(1));\n }\n // extStart.value = ((value && PdfExtend.Start) > 0);\n // extEnd.value = ((value && PdfExtend.End) > 0);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Adds two points to each other.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.addPoints = function (point1, point2) {\n var x = (point1.x + point2.x);\n var y = (point1.y + point2.y);\n var result = new PointF(x, y);\n return result;\n };\n /**\n * Subs the second point from the first one.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.subPoints = function (point1, point2) {\n var x = (point1.x - point2.x);\n var y = (point1.y - point2.y);\n var result = new PointF(x, y);\n return result;\n };\n /**\n * Makes scalar multiplication of two points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.mulPoints = function (point1, point2) {\n var result = ((point1.x * point2.x) + (point1.y * point2.y));\n return result;\n };\n /**\n * Multiplies the point by the value specified.\n * @param point The point1.\n * @param value The value.\n */\n PdfLinearGradientBrush.prototype.mulPoint = function (point, value) {\n point.x = (point.x * value);\n point.y = (point.y * value);\n return point;\n };\n /**\n * Choose the point according to the angle.\n * @param angle The angle.\n */\n PdfLinearGradientBrush.prototype.choosePoint = function (angle) {\n var point = new PointF(0, 0);\n // Choose the correct point.\n if ((angle < 90) && (angle > 0)) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.bottom);\n }\n else if ((angle < 180) && (angle > 90)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.bottom);\n }\n else if ((angle < 270) && (angle > 180)) {\n point = new PointF(this.mBoundaries.left, this.mBoundaries.top);\n }\n else if (angle > 270) {\n point = new PointF(this.mBoundaries.right, this.mBoundaries.top);\n }\n else {\n throw new Error('PdfException - Internal error.');\n }\n return point;\n };\n /**\n * Sets the start and end points.\n * @param point1 The point1.\n * @param point2 The point2.\n */\n PdfLinearGradientBrush.prototype.setPoints = function (point1, point2) {\n var points = new PdfArray();\n points.add(new PdfNumber(point1.x));\n points.add(new PdfNumber(this.updateY(point1.y)));\n points.add(new PdfNumber(point2.x));\n points.add(new PdfNumber(this.updateY(point2.y)));\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n };\n /**\n * Updates y co-ordinate.\n * @param y Y co-ordinate..\n */\n PdfLinearGradientBrush.prototype.updateY = function (y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n };\n //Overrides\n /**\n * Initializes the shading dictionary.\n * @private\n */\n PdfLinearGradientBrush.prototype.initShading = function () {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Axial)));\n };\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfLinearGradientBrush.prototype.clone = function () {\n var brush = this;\n brush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n brush.shading = new PdfDictionary();\n brush.initShading();\n brush.setPoints(brush.mPointStart, brush.mPointEnd);\n if (brush !== null && brush instanceof PdfLinearGradientBrush) {\n if ((this.matrix != null && typeof this.matrix !== 'undefined')) {\n brush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColours != null && typeof this.mColours !== 'undefined')) {\n brush.mColours = (this.mColours);\n }\n if ((this.blend != null && typeof this.blend !== 'undefined')) {\n brush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors != null && typeof this.interpolationColors !== 'undefined')) {\n brush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n brush.extend = this.extend;\n this.cloneBackgroundValue(brush);\n this.cloneAntiAliasingValue(brush);\n return brush;\n };\n /**\n * Resets the function.\n * @public\n */\n PdfLinearGradientBrush.prototype.resetFunction = function () {\n this.function = this.mColourBlend.getFunction(this.colorSpace);\n };\n return PdfLinearGradientBrush;\n}(PdfGradientBrush));\n\nvar __extends$30 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfRadialGradientBrush.ts class for EJ2-PDF\n */\n/**\n * `PdfRadialGradientBrush` Represent radial gradient brush.\n * @private\n */\nvar PdfRadialGradientBrush = /** @__PURE__ @class */ (function (_super) {\n __extends$30(PdfRadialGradientBrush, _super);\n //Constructor\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfRadialGradientBrush(centerStart, radiusStart, centerEnd, radiusEnd, colorStart, colorEnd) {\n var _this = _super.call(this, new PdfDictionary()) || this;\n /**\n * Local varaible to store the dictionary properties.\n */\n _this.mDictionaryProperties = new DictionaryProperties();\n _this.initialize(colorStart, colorEnd);\n if (radiusStart < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusStart - The radius cannot be less then zero.');\n }\n if (radiusEnd < 0) {\n throw new Error('ArgumentOutOfRangeException : radiusEnd - The radius cannpt be less then zero.');\n }\n _this.mPointEnd = centerEnd;\n _this.mPointStart = centerStart;\n _this.mRadiusStart = radiusStart;\n _this.mRadiusEnd = radiusEnd;\n _this.setPoints(_this.mPointStart, _this.mPointEnd, _this.mRadiusStart, _this.mRadiusEnd);\n return _this;\n }\n /**\n * Initializes a new instance of the `PdfRadialGradientBrush` class.\n * @param color1 The color1.\n * @param color2 The color2.\n */\n PdfRadialGradientBrush.prototype.initialize = function (color1, color2) {\n this.mColour = [color1, color2];\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.positions = [0, 1];\n this.mColourBlends.colors = this.mColour;\n this.initShading();\n };\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"blend\", {\n //Properties\n /**\n * Gets or sets a PdfBlend that specifies positions and factors that define a custom falloff for the gradient.\n * @public\n */\n get: function () {\n return this.mBlend;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : Blend');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n throw new Error('NotSupportedException : There is no starting and ending colours specified.');\n }\n this.mBlend = value;\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"interpolationColors\", {\n /**\n * Gets or sets a ColorBlend that defines a multicolor radial gradient.\n * @public\n */\n get: function () {\n return this.mColourBlends;\n },\n set: function (value) {\n if (value == null) {\n throw new Error('ArgumentNullException : InterpolationColors');\n }\n this.mBlend = null;\n this.mColour = null;\n this.mColourBlends = value;\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"linearColors\", {\n /**\n * Gets or sets the starting and ending colors of the radial gradient.\n * @public\n */\n get: function () {\n return this.mColour;\n },\n set: function (value) {\n if ((value == null)) {\n throw new Error('ArgumentNullException : radial LinearColors');\n }\n if ((value.length < 2)) {\n throw new Error('ArgumentException : The array is too small LinearColors');\n }\n if ((this.mColour == null && typeof this.mColour === 'undefined')) {\n this.mColour = [value[0], value[1]];\n }\n else {\n this.mColour[0] = value[0];\n this.mColour[1] = value[1];\n }\n if ((this.mBlend == null && typeof this.mBlend === 'undefined')) {\n // Set correct colour blend.\n this.mColourBlends = new PdfColorBlend(2);\n this.mColourBlends.colors = this.mColour;\n this.mColourBlends.positions = [0, 1];\n }\n else {\n this.mColourBlends = this.mBlend.generateColorBlend(this.mColour, this.colorSpace);\n }\n this.resetFunction();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"rectangle\", {\n /**\n * Gets or sets the rectangle.\n * @public\n */\n get: function () {\n return this.mBoundaries;\n },\n set: function (value) {\n this.mBoundaries = value;\n this.bBox = PdfArray.fromRectangle(value);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRadialGradientBrush.prototype, \"extend\", {\n /**\n * Gets or sets the value indicating whether the gradient\n * should extend starting and ending points.\n * @public\n */\n get: function () {\n var result1 = PdfExtend.None;\n var extend1 = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n if (extend1 !== null && typeof extend1 !== 'undefined') {\n var extStart = (extend1.items(0));\n var extEnd = (extend1.items(1));\n if (extStart.value) {\n result1 = (result1 | PdfExtend.Start);\n }\n if (extEnd.value) {\n result1 = (result1 | PdfExtend.End);\n }\n }\n return result1;\n },\n set: function (value) {\n var extend = (this.shading.items.getValue(this.mDictionaryProperties.extend));\n var extStart;\n var extEnd1;\n if (extend == null && typeof extend === 'undefined') {\n extStart = new PdfBoolean(false);\n extEnd1 = new PdfBoolean(false);\n extend = new PdfArray();\n extend.add(extStart);\n extend.add(extEnd1);\n this.shading.items.setValue(this.mDictionaryProperties.extend, extend);\n }\n else {\n extStart = (extend.items(0));\n extEnd1 = (extend.items(1));\n }\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * Sets the points.\n * @param pointStart The point start.\n * @param pointEnd The point end.\n * @param radiusStart The radius start.\n * @param radiusEnd The radius end.\n */\n PdfRadialGradientBrush.prototype.setPoints = function (pointStart, pointEnd, radiusStart, radiusEnd) {\n var points = new PdfArray();\n points.add(new PdfNumber(pointStart.x));\n points.add(new PdfNumber(this.updateY(pointStart.y)));\n points.add(new PdfNumber(radiusStart));\n points.add(new PdfNumber(pointEnd.x));\n points.add(new PdfNumber(this.updateY(pointEnd.y)));\n if ((radiusStart !== radiusEnd)) {\n points.add(new PdfNumber(radiusEnd));\n }\n else {\n points.add(new PdfNumber(0));\n }\n this.shading.items.setValue(this.mDictionaryProperties.coords, points);\n };\n /**\n * Update y co-ordinate.\n * @param y Y co-ordinate.\n */\n PdfRadialGradientBrush.prototype.updateY = function (y) {\n if (y !== 0) {\n return -y;\n }\n else {\n return y;\n }\n };\n /**\n * Initializess the shading dictionary.\n * @private\n */\n PdfRadialGradientBrush.prototype.initShading = function () {\n this.colorSpace = PdfColorSpace.Rgb;\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n this.shading.items.setValue(this.mDictionaryProperties.shadingType, new PdfNumber((ShadingType.Radial)));\n };\n //Overrides\n /**\n * Creates a new copy of a brush.\n * @public\n */\n PdfRadialGradientBrush.prototype.clone = function () {\n var rBrush = this;\n rBrush.resetPatternDictionary(new PdfDictionary(this.patternDictionary));\n rBrush.shading = new PdfDictionary();\n rBrush.initShading();\n rBrush.setPoints(this.mPointStart, this.mPointEnd, this.mRadiusStart, this.mRadiusEnd);\n if (rBrush instanceof PdfRadialGradientBrush) {\n if ((this.matrix !== null && typeof this.matrix !== 'undefined')) {\n rBrush.matrix = this.matrix.clone();\n }\n }\n if ((this.mColour !== null && typeof this.mColour !== 'undefined')) {\n rBrush.mColour = (this.mColour);\n }\n if ((this.blend !== null && typeof this.blend !== 'undefined')) {\n rBrush.blend = this.blend.clonePdfBlend();\n }\n else if ((this.interpolationColors !== null && typeof this.interpolationColors !== 'undefined')) {\n rBrush.interpolationColors = this.interpolationColors.cloneColorBlend();\n }\n rBrush.extend = this.extend;\n this.cloneBackgroundValue(rBrush);\n this.cloneAntiAliasingValue(rBrush);\n return rBrush;\n };\n /**\n * Resets the function.\n * @public\n */\n PdfRadialGradientBrush.prototype.resetFunction = function () {\n this.function = this.mColourBlends.getFunction(this.colorSpace);\n };\n return PdfRadialGradientBrush;\n}(PdfGradientBrush));\n\n/**\n * public Enum for `PdfBorderOverlapStyle`.\n * @private\n */\nvar PdfBorderOverlapStyle;\n(function (PdfBorderOverlapStyle) {\n /**\n * Specifies the type of `Overlap`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Overlap\"] = 0] = \"Overlap\";\n /**\n * Specifies the type of `Inside`.\n * @private\n */\n PdfBorderOverlapStyle[PdfBorderOverlapStyle[\"Inside\"] = 1] = \"Inside\";\n})(PdfBorderOverlapStyle || (PdfBorderOverlapStyle = {}));\n\nvar __extends$38 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Base class for the `grid style`,\n */\nvar PdfGridStyleBase = /** @__PURE__ @class */ (function () {\n function PdfGridStyleBase() {\n }\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridBackgroundBrush;\n },\n set: function (value) {\n this.gridBackgroundBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridTextBrush;\n },\n set: function (value) {\n this.gridTextBrush = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridTextPen;\n },\n set: function (value) {\n this.gridTextPen = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridFont;\n },\n set: function (value) {\n this.gridFont = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyleBase.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `background Image`.\n * @private\n */\n get: function () {\n return this.gridBackgroundImage;\n },\n set: function (value) {\n this.gridBackgroundImage = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyleBase;\n}());\n/**\n * `PdfGridStyle` class provides customization of the appearance for the 'PdfGrid'.\n */\nvar PdfGridStyle = /** @__PURE__ @class */ (function (_super) {\n __extends$38(PdfGridStyle, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGridStyle` class.\n * @private\n */\n function PdfGridStyle() {\n var _this = _super.call(this) || this;\n _this.gridBorderOverlapStyle = PdfBorderOverlapStyle.Overlap;\n _this.bAllowHorizontalOverflow = false;\n _this.gridHorizontalOverflowType = PdfHorizontalOverflowType.LastPage;\n return _this;\n }\n Object.defineProperty(PdfGridStyle.prototype, \"cellSpacing\", {\n //Properties\n /**\n * Gets or sets the `cell spacing` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n if (typeof this.gridCellSpacing === 'undefined') {\n this.gridCellSpacing = 0;\n }\n return this.gridCellSpacing;\n },\n set: function (value) {\n this.gridCellSpacing = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"horizontalOverflowType\", {\n /**\n * Gets or sets the type of the `horizontal overflow` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridHorizontalOverflowType;\n },\n set: function (value) {\n this.gridHorizontalOverflowType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"allowHorizontalOverflow\", {\n /**\n * Gets or sets a value indicating whether to `allow horizontal overflow`.\n * @private\n */\n get: function () {\n return this.bAllowHorizontalOverflow;\n },\n set: function (value) {\n this.bAllowHorizontalOverflow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n return this.gridCellPadding;\n },\n set: function (value) {\n if (typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n this.gridCellPadding = value;\n }\n else {\n this.gridCellPadding = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridStyle.prototype, \"borderOverlapStyle\", {\n /**\n * Gets or sets the `border overlap style` of the 'PdfGrid'.\n * @private\n */\n get: function () {\n return this.gridBorderOverlapStyle;\n },\n set: function (value) {\n this.gridBorderOverlapStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridStyle;\n}(PdfGridStyleBase));\n/**\n * `PdfGridCellStyle` class provides customization of the appearance for the 'PdfGridCell'.\n */\nvar PdfGridCellStyle = /** @__PURE__ @class */ (function (_super) {\n __extends$38(PdfGridCellStyle, _super);\n /**\n * Initializes a new instance of the `PdfGridCellStyle` class.\n * @private\n */\n function PdfGridCellStyle() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridCellBorders = PdfBorders.default;\n return _this;\n }\n Object.defineProperty(PdfGridCellStyle.prototype, \"stringFormat\", {\n //Properties\n /**\n * Gets the `string format` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"borders\", {\n /**\n * Gets or sets the `border` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridCellBorders;\n },\n set: function (value) {\n this.gridCellBorders = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCellStyle.prototype, \"cellPadding\", {\n /**\n * Gets or sets the `cell padding`.\n * @private\n */\n get: function () {\n return this.gridCellPadding;\n },\n set: function (value) {\n if (this.gridCellPadding == null || typeof this.gridCellPadding === 'undefined') {\n this.gridCellPadding = new PdfPaddings();\n }\n this.gridCellPadding = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridCellStyle;\n}(PdfGridStyleBase));\n/**\n * `PdfGridRowStyle` class provides customization of the appearance for the `PdfGridRow`.\n */\nvar PdfGridRowStyle = /** @__PURE__ @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowStyle` class.\n * @private\n */\n function PdfGridRowStyle() {\n //\n }\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundBrush\", {\n // Properties\n /**\n * Gets or sets the `background brush`.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBackgroundBrush = function (value) {\n this.gridRowBackgroundBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.backgroundBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textBrush\", {\n /**\n * Gets or sets the `text brush`.\n * @private\n */\n get: function () {\n return this.gridRowTextBrush;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextBrush = function (value) {\n this.gridRowTextBrush = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textBrush = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"textPen\", {\n /**\n * Gets or sets the `text pen`.\n * @private\n */\n get: function () {\n return this.gridRowTextPen;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setTextPen = function (value) {\n this.gridRowTextPen = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.textPen = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"font\", {\n /**\n * Gets or sets the `font`.\n * @private\n */\n get: function () {\n return this.gridRowFont;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setFont = function (value) {\n this.gridRowFont = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.font = value;\n }\n }\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"border\", {\n /**\n * Gets or sets the `border` of the current row.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBorder === 'undefined') {\n this.setBorder(new PdfBorders());\n }\n return this.gridRowBorder;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowStyle.prototype.setBorder = function (value) {\n this.gridRowBorder = value;\n if (typeof this.parent !== 'undefined') {\n for (var i = 0; i < this.parent.cells.count; i++) {\n this.parent.cells.getCell(i).style.borders = value;\n }\n }\n };\n /**\n * sets the `parent row` of the current object.\n * @private\n */\n PdfGridRowStyle.prototype.setParent = function (parent) {\n this.parent = parent;\n };\n Object.defineProperty(PdfGridRowStyle.prototype, \"backgroundImage\", {\n /**\n * Gets or sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n get: function () {\n return this.gridRowBackgroundImage;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * sets the `backgroundImage` of the 'PdfGridCell'.\n * @private\n */\n PdfGridRowStyle.prototype.setBackgroundImage = function (value) {\n this.gridRowBackgroundImage = value;\n };\n return PdfGridRowStyle;\n}());\n/**\n * public Enum for `PdfHorizontalOverflowType`.\n * @private\n */\nvar PdfHorizontalOverflowType;\n(function (PdfHorizontalOverflowType) {\n /**\n * Specifies the type of `NextPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"NextPage\"] = 0] = \"NextPage\";\n /**\n * Specifies the type of `LastPage`.\n * @private\n */\n PdfHorizontalOverflowType[PdfHorizontalOverflowType[\"LastPage\"] = 1] = \"LastPage\";\n})(PdfHorizontalOverflowType || (PdfHorizontalOverflowType = {}));\n\n/**\n * `PdfGridCell` class represents the schema of a cell in a 'PdfGrid'.\n */\nvar PdfGridCell = /** @__PURE__ @class */ (function () {\n function PdfGridCell(row) {\n /**\n * `Width` of the cell.\n * @default 0\n * @private\n */\n this.cellWidth = 0;\n /**\n * `Height` of the cell.\n * @default 0\n * @private\n */\n this.cellHeight = 0;\n /**\n * `tempval`to stores current width .\n * @default 0\n * @private\n */\n this.tempval = 0;\n this.fontSpilt = false;\n /**\n * Specifies weather the `cell is drawn`.\n * @default true\n * @private\n */\n this.finsh = true;\n /**\n * The `remaining height` of row span.\n * @default 0\n * @private\n */\n this.rowSpanRemainingHeight = 0;\n this.hasRowSpan = false;\n this.hasColSpan = false;\n /**\n * the 'isFinish' is set to page finish\n */\n this.isFinish = true;\n /**\n * The `present' to store the current cell.\n * @default false\n * @private\n */\n this.present = false;\n this.gridRowSpan = 1;\n this.colSpan = 1;\n if (typeof row !== 'undefined') {\n this.gridRow = row;\n }\n }\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeContinue\", {\n //Properties\n get: function () {\n return this.internalIsCellMergeContinue;\n },\n set: function (value) {\n this.internalIsCellMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeContinue\", {\n get: function () {\n return this.internalIsRowMergeContinue;\n },\n set: function (value) {\n this.internalIsRowMergeContinue = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isCellMergeStart\", {\n get: function () {\n return this.internalIsCellMergeStart;\n },\n set: function (value) {\n this.internalIsCellMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"isRowMergeStart\", {\n get: function () {\n return this.internalIsRowMergeStart;\n },\n set: function (value) {\n this.internalIsRowMergeStart = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"remainingString\", {\n /**\n * Gets or sets the `remaining string` after the row split between pages.\n * @private\n */\n get: function () {\n return this.remaining;\n },\n set: function (value) {\n this.remaining = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"FinishedDrawingCell\", {\n /**\n * Gets or sets the `FinishedDrawingCell` .\n * @private\n */\n get: function () {\n return this.isFinish;\n },\n set: function (value) {\n this.isFinish = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"stringFormat\", {\n /**\n * Gets or sets the `string format`.\n * @private\n */\n get: function () {\n if (this.format == null) {\n this.format = new PdfStringFormat();\n }\n return this.format;\n },\n set: function (value) {\n this.format = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"row\", {\n /**\n * Gets or sets the parent `row`.\n * @private\n */\n get: function () {\n return this.gridRow;\n },\n set: function (value) {\n this.gridRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"value\", {\n /**\n * Gets or sets the `value` of the cell.\n * @private\n */\n get: function () {\n return this.objectValue;\n },\n set: function (value) {\n this.objectValue = value;\n if (this.objectValue instanceof PdfGrid) {\n this.row.grid.isSingleGrid = false;\n var grid = this.objectValue;\n grid.ParentCell = this;\n this.objectValue.isChildGrid = true;\n var rowCount = this.row.grid.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.row.grid.rows.getRow(i);\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cell.parent = this;\n }\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"rowSpan\", {\n /**\n * Gets or sets a value that indicates the total number of rows that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.gridRowSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw new Error('ArgumentException : Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.gridRowSpan = value;\n this.row.rowSpanExists = true;\n this.row.grid.hasRowSpanSpan = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"style\", {\n /**\n * Gets or sets the cell `style`.\n * @private\n */\n get: function () {\n if (this.cellStyle == null) {\n this.cellStyle = new PdfGridCellStyle();\n }\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"height\", {\n /**\n * Gets the `height` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellHeight === 0) {\n this.cellHeight = this.measureHeight();\n }\n return this.cellHeight;\n },\n set: function (value) {\n this.cellHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"columnSpan\", {\n /**\n * Gets or sets a value that indicates the total number of columns that cell `spans` within a PdfGrid.\n * @private\n */\n get: function () {\n return this.colSpan;\n },\n set: function (value) {\n if (value < 1) {\n throw Error('Invalid span specified, must be greater than or equal to 1');\n }\n else {\n this.colSpan = value;\n this.row.columnSpanExists = true;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridCell.prototype, \"width\", {\n /**\n * Gets the `width` of the PdfGrid cell.[Read-Only].\n * @private\n */\n get: function () {\n if (this.cellWidth === 0 || this.row.grid.isComplete) {\n this.cellWidth = this.measureWidth();\n }\n return Math.round(this.cellWidth);\n },\n set: function (value) {\n this.cellWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the width`.\n * @private\n */\n PdfGridCell.prototype.measureWidth = function () {\n // .. Calculate the cell text width.\n // .....Add border widths, cell spacings and paddings to the width.\n var width = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string') {\n /* tslint:disable */\n var slr = layouter.layout(this.objectValue, this.getTextFont(), this.stringFormat, new SizeF(Number.MAX_VALUE, Number.MAX_VALUE), false, new SizeF(0, 0));\n width += slr.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n width = this.objectValue.size.width;\n //width += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n width += this.objectValue.width;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n var result = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(0, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n width += result.actualSize.width;\n width += (this.style.borders.left.width + this.style.borders.right.width) * 2;\n }\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding != null) {\n width += (this.style.cellPadding.left + this.style.cellPadding.right);\n }\n else {\n width += (this.row.grid.style.cellPadding.left + this.row.grid.style.cellPadding.right);\n }\n }\n else {\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n width += this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n width += this.style.cellPadding.right;\n }\n }\n else {\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n width += this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n width += this.row.grid.style.cellPadding.right;\n }\n }\n }\n width += this.row.grid.style.cellSpacing;\n return width;\n };\n /**\n * Draw the `cell background`.\n * @private\n */\n PdfGridCell.prototype.drawCellBackground = function (graphics, bounds) {\n var backgroundBrush = this.getBackgroundBrush();\n //graphics.isTemplateGraphics = true;\n if (backgroundBrush != null) {\n graphics.save();\n graphics.drawRectangle(backgroundBrush, bounds.x, bounds.y, bounds.width, bounds.height);\n graphics.restore();\n }\n if (this.style.backgroundImage != null) {\n var image = this.getBackgroundImage();\n graphics.drawImage(this.style.backgroundImage, bounds.x, bounds.y, bounds.width, bounds.height);\n }\n };\n /**\n * `Adjusts the text layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustContentLayoutArea = function (bounds) {\n //Add Padding value to its Cell Bounds\n var returnBounds = new RectangleF(bounds.x, bounds.y, bounds.width, bounds.height);\n if (!(this.objectValue instanceof PdfGrid)) {\n if (typeof this.style.cellPadding === 'undefined' || this.style.cellPadding == null) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n returnBounds.height -= (this.gridRow.grid.style.cellPadding.bottom + this.gridRow.grid.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n else {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.style.cellPadding.bottom + this.style.cellPadding.top);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n if (this.rowSpan === 1) {\n returnBounds.width -= (this.style.borders.left.width);\n }\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.gridRow.grid.style.cellPadding.left !== 'undefined' && this.gridRow.grid.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.gridRow.grid.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.gridRow.grid.style.cellPadding.left;\n }\n if (typeof this.gridRow.grid.style.cellPadding.top !== 'undefined' && this.gridRow.grid.style.cellPadding.hasTopPad) {\n returnBounds.y += this.gridRow.grid.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.gridRow.grid.style.cellPadding.top;\n }\n if (typeof this.gridRow.grid.style.cellPadding.right !== 'undefined' && this.gridRow.grid.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.gridRow.grid.style.cellPadding.right;\n }\n if (typeof this.gridRow.grid.style.cellPadding.bottom !== 'undefined' && this.gridRow.grid.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.gridRow.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n returnBounds.x += this.style.cellPadding.left + this.cellStyle.borders.left.width;\n returnBounds.width -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n returnBounds.y += this.style.cellPadding.top + this.cellStyle.borders.top.width;\n returnBounds.height -= this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n returnBounds.width -= this.style.cellPadding.right;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n returnBounds.height -= this.style.cellPadding.bottom;\n }\n }\n returnBounds.width -= (this.cellStyle.borders.left.width + this.cellStyle.borders.right.width);\n returnBounds.height -= (this.cellStyle.borders.top.width + this.cellStyle.borders.bottom.width);\n }\n return returnBounds;\n };\n /**\n * `Draws` the specified graphics.\n * @private\n */\n PdfGridCell.prototype.draw = function (graphics, bounds, cancelSubsequentSpans) {\n var result = null;\n /*if (cancelSubsequentSpans)\n {\n //..Cancel all subsequent cell spans, if no space exists.\n let currentCellIndex : number = this.row.cells.indexOf(this);\n for (let i : number = currentCellIndex + 1; i <= currentCellIndex + this.colSpan; i++)\n {\n this.row.cells.getCell(i).isCellMergeContinue = false;\n this.row.cells.getCell(i).isRowMergeContinue = false;\n }\n this.colSpan = 1;\n }*/\n //..Skip cells which were already covered by spanmap.\n if (this.internalIsCellMergeContinue || this.internalIsRowMergeContinue) {\n if (this.internalIsCellMergeContinue && this.row.grid.style.allowHorizontalOverflow) {\n if ((this.row.rowOverflowIndex > 0 && (this.row.cells.indexOf(this) != this.row.rowOverflowIndex + 1)) || (this.row.rowOverflowIndex == 0 && this.internalIsCellMergeContinue)) {\n return result;\n }\n }\n else {\n return result;\n }\n }\n //Adjust bounds with Row and Column Spacing\n bounds = this.adjustOuterLayoutArea(bounds, graphics);\n this.drawCellBackground(graphics, bounds);\n var textPen = this.getTextPen();\n var textBrush = this.getTextBrush();\n if (typeof textPen === 'undefined' && typeof textBrush === 'undefined') {\n textBrush = new PdfSolidBrush(new PdfColor(0, 0, 0));\n }\n var font = this.getTextFont();\n var strFormat = this.getStringFormat();\n var innerLayoutArea = bounds;\n if (innerLayoutArea.height >= graphics.clientSize.height) {\n // If to break row to next page.\n if (this.row.grid.allowRowBreakAcrossPages) {\n innerLayoutArea.height -= innerLayoutArea.y;\n //bounds.height -= bounds.y;\n // if(this.row.grid.isChildGrid)\n // {\n // innerLayoutArea.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n // if user choose to cut the row whose height is more than page height.\n // else\n // {\n // innerLayoutArea.height = graphics.clientSize.height;\n // bounds.height = graphics.clientSize.height;\n // }\n }\n innerLayoutArea = this.adjustContentLayoutArea(innerLayoutArea);\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var temp = void 0;\n var layoutRectangle = void 0;\n if (innerLayoutArea.height < font.height)\n layoutRectangle = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, font.height);\n else\n layoutRectangle = innerLayoutArea;\n if (innerLayoutArea.height < font.height && this.row.grid.isChildGrid && this.row.grid.ParentCell != null) {\n var height = layoutRectangle.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom - this.row.grid.style.cellPadding.bottom;\n if (this.row.grid.splitChildRowIndex != -1) {\n this.fontSpilt = true;\n this.row.rowFontSplit = true;\n }\n if (height > 0 && height < font.height)\n layoutRectangle.height = height;\n // else if (height + this.row.grid.style.cellPadding.bottom > 0 && height + this.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = height + this.row.grid.style.cellPadding.bottom;\n // else if (bounds.height < font.height)\n // layoutRectangle.height = bounds.height;\n // else if (bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom < font.height)\n // layoutRectangle.height = bounds.height - this.row.grid.ParentCell.row.grid.style.cellPadding.bottom; \n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n layoutRectangle.width -= this.gridRow.grid.style.cellSpacing;\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n if (this.isFinish) {\n // if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined'){\n // this.remaining = '';\n // graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // } else {\n temp = this.remaining === '' ? this.remaining : this.objectValue;\n graphics.drawString(temp, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n if (this.row.grid.splitChildRowIndex != -1 && !this.row.grid.isChildGrid && typeof this.remaining === 'undefined') {\n this.remaining = '';\n //graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n }\n else {\n if (typeof this.remaining == 'undefined' || this.remaining === null) {\n this.remaining = '';\n }\n if (this.row.repeatFlag) {\n graphics.drawString(this.remaining, font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n // else {\n // if(this.row.grid.ParentCell.row.repeatFlag) {\n // graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat); \n // } else {\n // layoutRectangle.height = this.row.height;\n // graphics.drawString((this.objectValue as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n // bounds.height = this.row.height;\n // }\n // }\n this.isFinish = true;\n //graphics.drawString((this.remaining as string), font, textPen, textBrush, layoutRectangle.x, layoutRectangle.y, layoutRectangle.width, layoutRectangle.height, strFormat);\n }\n result = graphics.stringLayoutResult;\n // if(this.row.grid.isChildGrid && this.row.rowBreakHeight > 0 && result !=null) {\n // bounds.height -= this.row.grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n }\n else if (this.objectValue instanceof PdfGrid) {\n var childGrid = this.objectValue;\n childGrid.isChildGrid = true;\n childGrid.ParentCell = this;\n var layoutRect = void 0;\n layoutRect = innerLayoutArea;\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n // layoutRect = bounds;\n // if (this.style.cellPadding != null){\n // layoutRect = bounds; \n // } else if((this.row.grid.style.cellPadding != null) && (childGrid.style.cellPadding.bottom === 0.5) && (childGrid.style.cellPadding.top === 0.5)\n // && (childGrid.style.cellPadding.left === 5.76) && (childGrid.style.cellPadding.right === 5.76)\n // && (this.gridRow.grid.style.cellSpacing === 0) && (childGrid.style.cellSpacing === 0)) {\n // layoutRect = innerLayoutArea;\n // }\n // if(this.objectValue.style.cellPadding != null && typeof this.objectValue.style.cellPadding !== 'undefined'){\n // layoutRect = bounds;\n // } \n var layouter = new PdfGridLayouter(childGrid);\n var format = new PdfGridLayoutFormat();\n if (this.row.grid.LayoutFormat != null)\n format = this.row.grid.LayoutFormat;\n else\n format.layout = PdfLayoutType.Paginate;\n var param = new PdfLayoutParams();\n if (graphics.layer != null) {\n // Define layout parameters.\n param.page = graphics.page;\n param.bounds = layoutRect;\n param.format = format;\n //Set the span \n childGrid.setSpan();\n childGrid.checkSpan();\n // Draw the child grid.\n var childGridResult = layouter.Layouter(param);\n //let childGridResult : PdfLayoutResult = layouter.innerLayout(param);\n this.value = childGrid;\n if (this.row.grid.splitChildRowIndex !== -1) {\n this.height = this.row.rowBreakHeightValue;\n }\n if (param.page != childGridResult.page) //&& (isWidthGreaterthanParent != true))\n {\n childGridResult.bounds.height = this.row.rowBreakHeightValue;\n if (this.row.rowBreakHeight == 0)\n this.row.NestedGridLayoutResult = childGridResult;\n else\n this.row.rowBreakHeight = this.row.rowBreakHeightValue;\n //bounds.height = this.row.rowBreakHeight;\n //After drawing paginated nested grid, the bounds of the parent grid in start page should be corrected for borders.\n //bounds.height = graphics.clientSize.height - bounds.y;\n }\n }\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n var imageBounds = void 0;\n if (this.objectValue.width <= innerLayoutArea.width) {\n imageBounds = new RectangleF(innerLayoutArea.x, innerLayoutArea.y, this.objectValue.width, innerLayoutArea.height);\n }\n else {\n imageBounds = innerLayoutArea;\n }\n graphics.drawImage(this.objectValue, imageBounds.x, imageBounds.y, imageBounds.width, imageBounds.height);\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n this.objectValue.draw(graphics.currentPage, innerLayoutArea);\n }\n else if (typeof this.objectValue === 'undefined') {\n this.objectValue = \"\";\n graphics.drawString(this.objectValue, font, textPen, textBrush, innerLayoutArea.x, innerLayoutArea.y, innerLayoutArea.width, innerLayoutArea.height, strFormat);\n if (this.style.cellPadding != null && this.style.cellPadding.bottom == 0 && this.style.cellPadding.left == 0 && this.style.cellPadding.right == 0 && this.style.cellPadding.top == 0) {\n bounds.width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n if (this.gridRow.grid.style.cellSpacing != 0) {\n bounds.width -= this.gridRow.grid.style.cellSpacing;\n }\n }\n if (this.style.borders != null) {\n if (!this.fontSpilt)\n this.drawCellBorders(graphics, bounds);\n else {\n if (this.row.grid.ParentCell.row.grid.splitChildRowIndex != -1) {\n this.row.rowFontSplit = false;\n this.drawCellBorders(graphics, bounds);\n }\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Draws the `cell border` constructed by drawing lines.\n * @private\n */\n PdfGridCell.prototype.drawCellBorders = function (graphics, bounds) {\n if (this.row.grid.style.borderOverlapStyle === PdfBorderOverlapStyle.Inside) {\n bounds.x += this.style.borders.left.width;\n bounds.y += this.style.borders.top.width;\n bounds.width -= this.style.borders.right.width;\n bounds.height -= this.style.borders.bottom.width;\n }\n var p1 = new PointF(bounds.x, bounds.y + bounds.height);\n var p2 = new PointF(bounds.x, bounds.y);\n var pen = this.cellStyle.borders.left;\n if (this.cellStyle.borders.left.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n // SetTransparency(ref graphics, pen);\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n pen = this.cellStyle.borders.right;\n if ((bounds.x + bounds.width) > (graphics.clientSize.width - (pen.width / 2))) {\n p1 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y);\n p2 = new PointF(graphics.clientSize.width - (pen.width / 2), bounds.y + bounds.height);\n }\n if (this.cellStyle.borders.right.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x, bounds.y);\n p2 = new PointF(bounds.x + bounds.width, bounds.y);\n pen = this.cellStyle.borders.top;\n if (this.cellStyle.borders.top.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n p1 = new PointF(bounds.x + bounds.width, bounds.y + bounds.height);\n p2 = new PointF(bounds.x, bounds.y + bounds.height);\n pen = this.cellStyle.borders.bottom;\n if ((bounds.y + bounds.height) > (graphics.clientSize.height - (pen.width / 2))) {\n p1 = new PointF((bounds.x + bounds.width), (graphics.clientSize.height - (pen.width / 2)));\n p2 = new PointF(bounds.x, (graphics.clientSize.height - (pen.width / 2)));\n }\n if (this.cellStyle.borders.bottom.dashStyle === PdfDashStyle.Solid) {\n pen.lineCap = PdfLineCap.Square;\n }\n if (pen.width !== 0) {\n graphics.drawLine(pen, p1, p2);\n }\n };\n // private setTransparency(graphics : PdfGraphics, pen : PdfPen) : void {\n // let alpha : number = (pen.color.a / 255) as number;\n // graphics.save();\n // graphics.setTransparency(alpha);\n // }\n /**\n * `Adjusts the outer layout area`.\n * @private\n */\n /* tslint:disable */\n PdfGridCell.prototype.adjustOuterLayoutArea = function (bounds, g) {\n var isHeader = false;\n var cellSpacing = this.row.grid.style.cellSpacing;\n if (cellSpacing > 0) {\n bounds = new RectangleF(bounds.x + cellSpacing, bounds.y + cellSpacing, bounds.width - cellSpacing, bounds.height - cellSpacing);\n }\n var currentColIndex = this.row.cells.indexOf(this);\n if (this.columnSpan > 1 || (this.row.rowOverflowIndex > 0 && (currentColIndex == this.row.rowOverflowIndex + 1) && this.isCellMergeContinue)) {\n var span = this.columnSpan;\n if (span == 1 && this.isCellMergeContinue) {\n for (var j = currentColIndex + 1; j < this.row.grid.columns.count; j++) {\n if (this.row.cells.getCell(j).isCellMergeContinue)\n span++;\n else\n break;\n }\n }\n var totalWidth = 0;\n for (var i = currentColIndex; i < currentColIndex + span; i++) {\n if (this.row.grid.style.allowHorizontalOverflow) {\n var width = void 0;\n var compWidth = this.row.grid.size.width < g.clientSize.width ? this.row.grid.size.width : g.clientSize.width;\n if (this.row.grid.size.width > g.clientSize.width) {\n width = bounds.x + totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n else {\n width = totalWidth + this.row.grid.columns.getColumn(i).width;\n }\n if (width > compWidth) {\n break;\n }\n }\n totalWidth += this.row.grid.columns.getColumn(i).width;\n }\n totalWidth -= this.row.grid.style.cellSpacing;\n bounds.width = totalWidth;\n }\n if (this.rowSpan > 1 || this.row.rowSpanExists) {\n var span = this.rowSpan;\n var currentRowIndex = this.row.grid.rows.rowCollection.indexOf(this.row);\n if (currentRowIndex == -1) {\n currentRowIndex = this.row.grid.headers.indexOf(this.row);\n if (currentRowIndex != -1) {\n isHeader = true;\n }\n }\n // if (span == 1 && this.isCellMergeContinue) {\n // for (let j : number = currentRowIndex + 1; j < this.row.grid.rows.count; j++)\n // {\n // let flag : boolean = (isHeader ? this.row.grid.headers.getHeader(j).cells.getCell(currentColIndex).isCellMergeContinue : this.row.grid.rows.getRow(j).cells.getCell(currentColIndex).isCellMergeContinue);\n // if (flag)\n // span++;\n // else\n // break;\n // }\n // }\n var totalHeight = 0;\n for (var i = currentRowIndex; i < currentRowIndex + span; i++) {\n totalHeight += (isHeader ? this.row.grid.headers.getHeader(i).height : this.row.grid.rows.getRow(i).height);\n var row = this.row.grid.rows.getRow(i);\n var rowIndex = this.row.grid.rows.rowCollection.indexOf(row);\n /*if (this.rowSpan > 1)\n {\n for (let k : number = 0; k < this.row.cells.count; k++) {\n let cell : PdfGridCell = this.row.cells.getCell(k);\n if(cell.rowSpan>1)\n {\n let tempHeight : number =0;\n \n for (let j :number = i; j < i +cell.rowSpan; j++)\n {\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = false;\n tempHeight += this.row.grid.rows.getRow(j).height;\n if (!this.row.grid.rows.getRow(j).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(j).isRowHeightSet = true;\n }\n //To check the Row spanned cell height is greater than the total spanned row height.\n if(cell.height>tempHeight)\n {\n if (max < (cell.height - tempHeight))\n {\n max = cell.height - tempHeight;\n if (this.rowSpanRemainingHeight != 0 && max > this.rowSpanRemainingHeight)\n {\n max += this.rowSpanRemainingHeight;\n }\n let index :number = row.cells.indexOf(cell);\n //set the m_rowspanRemainingHeight to last rowspanned row.\n this.row.grid.rows.getRow((rowIndex +cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight = max;\n this.rowSpanRemainingHeight = this.row.grid.rows.getRow((rowIndex + cell.rowSpan) - 1).cells.getCell(index).rowSpanRemainingHeight;\n }\n }\n }\n }\n }\n if (!this.row.grid.rows.getRow(i).isRowSpanRowHeightSet)\n this.row.grid.rows.getRow(i).isRowHeightSet = true;*/\n }\n var cellIndex = this.row.cells.indexOf(this);\n totalHeight -= this.row.grid.style.cellSpacing;\n // if (this.row.cells.getCell(cellIndex).height > totalHeight && (!this.row.grid.rows.getRow((currentRowIndex + span) - 1).isRowHeightSet)) {\n // this.row.grid.rows.getRow((currentRowIndex + span) - 1).cells.getCell(cellIndex).rowSpanRemainingHeight = this.row.cells.getCell(cellIndex).height - totalHeight;\n // totalHeight = this.row.cells.getCell(cellIndex).height;\n // bounds.height = totalHeight;\n // } else {\n bounds.height = totalHeight;\n // }\n if (!this.row.rowMergeComplete) {\n bounds.height = totalHeight;\n }\n }\n return bounds;\n };\n /* tslint:enable */\n /**\n * Gets the `text font`.\n * @private\n */\n PdfGridCell.prototype.getTextFont = function () {\n if (typeof this.style.font !== 'undefined' && this.style.font != null) {\n return this.style.font;\n }\n else if (typeof this.row.style.font !== 'undefined' && this.row.style.font != null) {\n return this.row.style.font;\n }\n else if (typeof this.row.grid.style.font !== 'undefined' && this.row.grid.style.font != null) {\n return this.row.grid.style.font;\n }\n else {\n return PdfDocument.defaultFont;\n }\n };\n /**\n * Gets the `text brush`.\n * @private\n */\n PdfGridCell.prototype.getTextBrush = function () {\n if (typeof this.style.textBrush !== 'undefined' && this.style.textBrush != null) {\n return this.style.textBrush;\n }\n else if (typeof this.row.style.textBrush !== 'undefined' && this.row.style.textBrush != null) {\n return this.row.style.textBrush;\n }\n else {\n return this.row.grid.style.textBrush;\n }\n };\n /**\n * Gets the `text pen`.\n * @private\n */\n PdfGridCell.prototype.getTextPen = function () {\n if (typeof this.style.textPen !== 'undefined' && this.style.textPen != null) {\n return this.style.textPen;\n }\n else if (typeof this.row.style.textPen !== 'undefined' && this.row.style.textPen != null) {\n return this.row.style.textPen;\n }\n else {\n return this.row.grid.style.textPen;\n }\n };\n /**\n * Gets the `background brush`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundBrush = function () {\n if (typeof this.style.backgroundBrush !== 'undefined' && this.style.backgroundBrush != null) {\n return this.style.backgroundBrush;\n }\n else if (typeof this.row.style.backgroundBrush !== 'undefined' && this.row.style.backgroundBrush != null) {\n return this.row.style.backgroundBrush;\n }\n else {\n return this.row.grid.style.backgroundBrush;\n }\n };\n /**\n * Gets the `background image`.\n * @private\n */\n PdfGridCell.prototype.getBackgroundImage = function () {\n if (typeof this.style.backgroundImage !== 'undefined' && this.style.backgroundImage != null) {\n return this.style.backgroundImage;\n }\n else if (typeof this.row.style.backgroundImage !== 'undefined' && this.row.style.backgroundImage != null) {\n return this.row.style.backgroundImage;\n }\n else {\n return this.row.grid.style.backgroundImage;\n }\n };\n /**\n * Gets the current `StringFormat`.\n * @private\n */\n PdfGridCell.prototype.getStringFormat = function () {\n if (typeof this.style.stringFormat !== 'undefined' && this.style.stringFormat != null) {\n return this.style.stringFormat;\n }\n else {\n return this.stringFormat;\n }\n };\n /**\n * Calculates the `height`.\n * @private\n */\n PdfGridCell.prototype.measureHeight = function () {\n // .. Calculate the cell text height.\n // .....Add border widths, cell spacings and paddings to the height.\n var width = this.calculateWidth();\n // //check whether the Current PdfGridCell has padding\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n //width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n var height = 0;\n var layouter = new PdfStringLayouter();\n if (typeof this.objectValue === 'string' || typeof this.remaining === 'string') {\n var currentValue = this.objectValue;\n /* tslint:disable */\n if (!this.isFinish)\n currentValue = !(this.remaining === null || this.remaining === '' ||\n typeof this.remaining === 'undefined') ? this.remaining : this.objectValue;\n var slr = null;\n var cellIndex = this.row.cells.indexOf(this);\n if (this.gridRow.grid.style.cellSpacing != 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n }\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n if (this.gridRow.grid.isChildGrid) {\n if (width < 0) {\n this.tempval = width;\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n this.tempval += (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n this.tempval += (this.style.cellPadding.right + this.style.cellPadding.left);\n this.tempval += (this.style.borders.left.width + this.style.borders.right.width);\n }\n }\n else {\n this.tempval = width;\n }\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(this.tempval, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n else {\n slr = layouter.layout(currentValue, this.getTextFont(), this.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n height += slr.actualSize.height;\n }\n }\n /* tslint:enable */\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (this.objectValue instanceof PdfGrid) {\n var cellIndex = this.row.cells.indexOf(this);\n var internalWidth = 0;\n if ((this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.style.cellPadding.left !== 'undefined' && this.style.cellPadding.hasLeftPad) {\n internalWidth -= this.style.cellPadding.left;\n }\n if (typeof this.style.cellPadding.right !== 'undefined' && this.style.cellPadding.hasRightPad) {\n internalWidth -= this.style.cellPadding.right;\n }\n }\n else if ((this.row.grid.style.cellPadding != null || typeof this.row.grid.style.cellPadding !== 'undefined')) {\n internalWidth = this.calculateWidth();\n if (typeof this.row.grid.style.cellPadding.left !== 'undefined' && this.row.grid.style.cellPadding.hasLeftPad) {\n internalWidth -= this.row.grid.style.cellPadding.left;\n }\n if (typeof this.row.grid.style.cellPadding.right !== 'undefined' && this.row.grid.style.cellPadding.hasRightPad) {\n internalWidth -= this.row.grid.style.cellPadding.right;\n }\n }\n else {\n internalWidth = this.calculateWidth();\n }\n this.objectValue.tempWidth = internalWidth;\n if (!this.row.cells.getCell(cellIndex).hasColSpan && !this.row.cells.getCell(cellIndex).hasRowSpan) {\n height = this.objectValue.size.height;\n }\n else {\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n if (this.gridRow.grid.style.cellSpacing !== 0) {\n width -= this.gridRow.grid.style.cellSpacing * 2;\n //height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n if (this.style.cellPadding != null || typeof this.style.cellPadding !== 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (this.row.grid.style.cellPadding.hasBottomPad && typeof this.row.grid.style.cellPadding.bottom !== 'undefined') {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n height += this.objectValue.style.cellSpacing;\n }\n else if (this.objectValue instanceof PdfImage || this.objectValue instanceof PdfBitmap) {\n height += this.objectValue.height;\n }\n else if (this.objectValue instanceof PdfTextWebLink) {\n var webLink = this.objectValue;\n /* tslint:disable */\n var slr = layouter.layout(webLink.text, webLink.font, webLink.stringFormat, new SizeF(width, 0), false, new SizeF(0, 0));\n /* tslint:enable */\n height += slr.actualSize.height;\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n else if (typeof this.objectValue === 'undefined') {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n width -= (this.gridRow.grid.style.cellPadding.right + this.gridRow.grid.style.cellPadding.left);\n }\n else {\n width -= (this.style.cellPadding.right + this.style.cellPadding.left);\n width -= (this.style.borders.left.width + this.style.borders.right.width);\n }\n height += (this.style.borders.top.width + this.style.borders.bottom.width) * 2;\n }\n //Add padding top and bottom value to height\n if (!(this.objectValue instanceof PdfGrid)) {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n height += (this.row.grid.style.cellPadding.top + this.row.grid.style.cellPadding.bottom);\n }\n else {\n height += (this.style.cellPadding.top + this.style.cellPadding.bottom);\n }\n }\n else {\n if (this.style.cellPadding == null || typeof this.style.cellPadding === 'undefined') {\n if (typeof this.row.grid.style.cellPadding.top !== 'undefined' && this.row.grid.style.cellPadding.hasTopPad) {\n height += this.row.grid.style.cellPadding.top;\n }\n if (typeof this.row.grid.style.cellPadding.bottom !== 'undefined' && this.row.grid.style.cellPadding.hasBottomPad) {\n height += this.row.grid.style.cellPadding.bottom;\n }\n }\n else {\n if (typeof this.style.cellPadding.top !== 'undefined' && this.style.cellPadding.hasTopPad) {\n height += this.style.cellPadding.top;\n }\n if (typeof this.style.cellPadding.bottom !== 'undefined' && this.style.cellPadding.hasBottomPad) {\n height += this.style.cellPadding.bottom;\n }\n }\n }\n height += this.row.grid.style.cellSpacing;\n return height;\n };\n /**\n * return the calculated `width` of the cell.\n * @private\n */\n PdfGridCell.prototype.calculateWidth = function () {\n var cellIndex = this.row.cells.indexOf(this);\n var rowindex = this.row.grid.rows.rowCollection.indexOf(this.row);\n var columnSpan = this.columnSpan;\n var width = 0;\n if (columnSpan === 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n }\n }\n else if (columnSpan > 1) {\n for (var i = 0; i < columnSpan; i++) {\n width += this.row.grid.columns.getColumn(cellIndex + i).width;\n if ((i + 1) < columnSpan) {\n this.row.cells.getCell(cellIndex + i + 1).hasColSpan = true;\n }\n }\n }\n if (this.parent != null && this.parent.row.width > 0) {\n if ((this.row.grid.isChildGrid) && this.parent != null && (this.row.width > this.parent.row.width)) {\n width = 0;\n for (var j = 0; j < this.parent.columnSpan; j++) {\n width += this.parent.row.grid.columns.getColumn(j).width;\n }\n width = width / this.row.cells.count;\n }\n }\n return width;\n };\n return PdfGridCell;\n}());\n/**\n * `PdfGridCellCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridCell' objects.\n * @private\n */\nvar PdfGridCellCollection = /** @__PURE__ @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridCellCollection` class with the row.\n * @private\n */\n function PdfGridCellCollection(row) {\n /**\n * @hidden\n * @private\n */\n this.cells = [];\n this.gridRow = row;\n }\n //Properties\n /**\n * Gets the current `cell`.\n * @private\n */\n PdfGridCellCollection.prototype.getCell = function (index) {\n if (index < 0 || index >= this.count) {\n throw new Error('IndexOutOfRangeException');\n }\n return this.cells[index];\n };\n Object.defineProperty(PdfGridCellCollection.prototype, \"count\", {\n /**\n * Gets the cells `count`.[Read-Only].\n * @private\n */\n get: function () {\n return this.cells.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridCellCollection.prototype.add = function (cell) {\n if (typeof cell === 'undefined') {\n var tempcell = new PdfGridCell();\n this.add(tempcell);\n return cell;\n }\n else {\n cell.row = this.gridRow;\n this.cells.push(cell);\n }\n };\n /**\n * Returns the `index of` a particular cell in the collection.\n * @private\n */\n PdfGridCellCollection.prototype.indexOf = function (cell) {\n return this.cells.indexOf(cell);\n };\n return PdfGridCellCollection;\n}());\n\n/**\n * `PdfGridColumn` class represents the schema of a column in a 'PdfGrid'.\n */\nvar PdfGridColumn = /** @__PURE__ @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumn` class with the parent grid.\n * @private\n */\n function PdfGridColumn(grid) {\n /**\n * The `width` of the column.\n * @default 0\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n }\n Object.defineProperty(PdfGridColumn.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the 'PdfGridColumn'.\n * @private\n */\n get: function () {\n return this.columnWidth;\n },\n set: function (value) {\n this.isCustomWidth = true;\n this.columnWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumn.prototype, \"format\", {\n /**\n * Gets or sets the information about the text `formatting`.\n * @private\n */\n get: function () {\n if (this.stringFormat == null) {\n this.stringFormat = new PdfStringFormat(); //GetDefaultFormat();\n }\n return this.stringFormat;\n },\n set: function (value) {\n this.stringFormat = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridColumn;\n}());\n/**\n * `PdfGridColumnCollection` class provides access to an ordered,\n * strongly typed collection of 'PdfGridColumn' objects.\n * @private\n */\nvar PdfGridColumnCollection = /** @__PURE__ @class */ (function () {\n //properties\n //Constructors\n /**\n * Initializes a new instance of the `PdfGridColumnCollection` class with the parent grid.\n * @private\n */\n function PdfGridColumnCollection(grid) {\n /**\n * @hidden\n * @private\n */\n this.internalColumns = [];\n /**\n * @hidden\n * @private\n */\n this.columnWidth = 0;\n this.grid = grid;\n this.internalColumns = [];\n }\n //Iplementation\n /**\n * `Add` a new column to the 'PdfGrid'.\n * @private\n */\n PdfGridColumnCollection.prototype.add = function (count) {\n // public add(column : PdfGridColumn) : void\n // public add(arg : number|PdfGridColumn) : void {\n // if (typeof arg === 'number') {\n for (var i = 0; i < count; i++) {\n this.internalColumns.push(new PdfGridColumn(this.grid));\n for (var index = 0; index < this.grid.rows.count; index++) {\n var row = this.grid.rows.getRow(index);\n var cell = new PdfGridCell();\n cell.value = '';\n row.cells.add(cell);\n }\n }\n // } else {\n // let column : PdfGridColumn = new PdfGridColumn(this.grid);\n // this.columns.push(column);\n // return column;\n // }\n };\n Object.defineProperty(PdfGridColumnCollection.prototype, \"count\", {\n /**\n * Gets the `number of columns` in the 'PdfGrid'.[Read-Only].\n * @private\n */\n get: function () {\n return this.internalColumns.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"width\", {\n /**\n * Gets the `widths`.\n * @private\n */\n get: function () {\n if (this.columnWidth === 0) {\n this.columnWidth = this.measureColumnsWidth();\n }\n if (this.grid.initialWidth !== 0 && this.columnWidth !== this.grid.initialWidth && !this.grid.style.allowHorizontalOverflow) {\n this.columnWidth = this.grid.initialWidth;\n this.grid.isPageWidth = true;\n }\n return this.columnWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridColumnCollection.prototype, \"columns\", {\n /**\n * Gets the `array of PdfGridColumn`.[Read-Only]\n * @private\n */\n get: function () {\n return this.internalColumns;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * Gets the `PdfGridColumn` from the specified index.[Read-Only]\n * @private\n */\n PdfGridColumnCollection.prototype.getColumn = function (index) {\n if (index >= 0 && index <= this.columns.length) {\n return this.columns[index];\n }\n else {\n throw Error('can not get the column from the index: ' + index);\n }\n };\n //Implementation\n /**\n * `Calculates the column widths`.\n * @private\n */\n PdfGridColumnCollection.prototype.measureColumnsWidth = function () {\n var totalWidth = 0;\n this.grid.measureColumnsWidth();\n for (var i = 0, count = this.internalColumns.length; i < count; i++) {\n totalWidth += this.internalColumns[i].width;\n }\n return totalWidth;\n };\n /**\n * Gets the `widths of the columns`.\n * @private\n */\n PdfGridColumnCollection.prototype.getDefaultWidths = function (totalWidth) {\n var widths = [];\n var subFactor = this.count;\n for (var i = 0; i < this.count; i++) {\n if (this.grid.isPageWidth && totalWidth >= 0 && !this.internalColumns[i].isCustomWidth) {\n this.internalColumns[i].width = 0;\n }\n else {\n widths[i] = this.internalColumns[i].width;\n if (this.internalColumns[i].width > 0 && this.internalColumns[i].isCustomWidth) {\n totalWidth -= this.internalColumns[i].width;\n subFactor--;\n }\n else {\n widths[i] = 0;\n }\n }\n }\n for (var i = 0; i < this.count; i++) {\n var width = totalWidth / subFactor;\n if (widths[i] <= 0) {\n widths[i] = width;\n }\n }\n return widths;\n };\n return PdfGridColumnCollection;\n}());\n\n/**\n * `PdfGridRow` class provides customization of the settings for the particular row.\n */\nvar PdfGridRow = /** @__PURE__ @class */ (function () {\n //Constructor\n /**\n * Initializes a new instance of the `PdfGridRow` class with the parent grid.\n * @private\n */\n function PdfGridRow(grid) {\n /**\n * Stores the index of the overflowing row.\n * @private\n */\n this.gridRowOverflowIndex = 0;\n /**\n * The `height` of the row.\n * @private\n */\n this.rowHeight = 0;\n /**\n * The `width` of the row.\n * @private\n */\n this.rowWidth = 0;\n /**\n * The `isFinish` of the row.\n * @private\n */\n this.isrowFinish = false;\n /**\n * Check whether the Row span row height `is set explicitly`.\n * @default false\n * @public\n */\n this.isRowSpanRowHeightSet = false;\n /**\n * The `page count` of the row.\n * @public\n */\n this.noOfPageCount = 0;\n /**\n * Check whether the row height `is set explicitly`.\n * @default false\n * @private\n */\n this.isRowHeightSet = false;\n this.isPageBreakRowSpanApplied = false;\n /**\n * Check weather the row merge `is completed` or not.\n * @default true\n * @private\n */\n this.isRowMergeComplete = true;\n this.repeatFlag = false;\n this.rowFontSplit = false;\n this.isHeaderRow = false;\n this.pdfGrid = grid;\n }\n Object.defineProperty(PdfGridRow.prototype, \"rowSpanExists\", {\n //Properties\n /**\n * Gets or sets a value indicating [`row span exists`].\n * @private\n */\n get: function () {\n return this.bRowSpanExists;\n },\n set: function (value) {\n this.bRowSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"cells\", {\n /**\n * Gets the `cells` from the selected row.[Read-Only].\n * @private\n */\n get: function () {\n if (this.gridCells == null) {\n this.gridCells = new PdfGridCellCollection(this);\n }\n return this.gridCells;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"grid\", {\n /**\n * Gets or sets the parent `grid`.\n * @private\n */\n get: function () {\n return this.pdfGrid;\n },\n set: function (value) {\n this.pdfGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"style\", {\n /**\n * Gets or sets the row `style`.\n * @private\n */\n get: function () {\n if (typeof this.rowStyle === 'undefined') {\n this.rowStyle = new PdfGridRowStyle();\n this.rowStyle.setParent(this);\n }\n return this.rowStyle;\n },\n set: function (value) {\n this.rowStyle = value;\n for (var i = 0; i < this.cells.count; i++) {\n this.cells.getCell(i).style.borders = value.border;\n if (typeof value.font !== 'undefined') {\n this.cells.getCell(i).style.font = value.font;\n }\n if (typeof value.backgroundBrush !== 'undefined') {\n this.cells.getCell(i).style.backgroundBrush = value.backgroundBrush;\n }\n if (typeof value.backgroundImage !== 'undefined') {\n this.cells.getCell(i).style.backgroundImage = value.backgroundImage;\n }\n if (typeof value.textBrush !== 'undefined') {\n this.cells.getCell(i).style.textBrush = value.textBrush;\n }\n if (typeof value.textPen !== 'undefined') {\n this.cells.getCell(i).style.textPen = value.textPen;\n }\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowBreakHeight\", {\n /**\n * `Height` of the row yet to be drawn after split.\n * @private\n */\n get: function () {\n if (typeof this.gridRowBreakHeight === 'undefined') {\n this.gridRowBreakHeight = 0;\n }\n return this.gridRowBreakHeight;\n },\n set: function (value) {\n this.gridRowBreakHeight = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowOverflowIndex\", {\n /**\n * `over flow index` of the row.\n * @private\n */\n get: function () {\n return this.gridRowOverflowIndex;\n },\n set: function (value) {\n this.gridRowOverflowIndex = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"height\", {\n /**\n * Gets or sets the `height` of the row.\n * @private\n */\n get: function () {\n if (!this.isRowHeightSet) {\n this.rowHeight = this.measureHeight();\n }\n return this.rowHeight;\n },\n set: function (value) {\n this.rowHeight = value;\n this.isRowHeightSet = true;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"width\", {\n /**\n * Gets or sets the `width` of the row.\n * @private\n */\n get: function () {\n if (this.rowWidth === 0 || typeof this.rowWidth === 'undefined') {\n this.rowWidth = this.measureWidth();\n }\n return this.rowWidth;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"NestedGridLayoutResult\", {\n /**\n * Gets or sets the row `Nested grid Layout Result`.\n * @private\n */\n get: function () {\n return this.gridResult;\n },\n set: function (value) {\n this.gridResult = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"columnSpanExists\", {\n /**\n * Gets or sets a value indicating [`column span exists`].\n * @private\n */\n get: function () {\n return this.bColumnSpanExists;\n },\n set: function (value) {\n this.bColumnSpanExists = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowMergeComplete\", {\n /**\n * Check whether the Row `has row span or row merge continue`.\n * @private\n */\n get: function () {\n return this.isRowMergeComplete;\n },\n set: function (value) {\n this.isRowMergeComplete = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRow.prototype, \"rowIndex\", {\n /**\n * Returns `index` of the row.\n * @private\n */\n get: function () {\n return this.grid.rows.rowCollection.indexOf(this);\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n /**\n * `Calculates the height`.\n * @private\n */\n PdfGridRow.prototype.measureHeight = function () {\n var rowSpanRemainingHeight = 0;\n var rowHeight;\n var maxHeight = 0;\n if (this.cells.getCell(0).rowSpan > 1) {\n rowHeight = 0;\n }\n else {\n rowHeight = this.cells.getCell(0).height;\n }\n for (var i = 0; i < this.cells.count; i++) {\n var cell = this.cells.getCell(i);\n //get the maximum rowspan remaining height.\n if (cell.rowSpanRemainingHeight > rowSpanRemainingHeight) {\n rowSpanRemainingHeight = cell.rowSpanRemainingHeight;\n }\n //skip the cell if row spanned.\n // if (cell.isRowMergeContinue) {\n // continue;\n // }\n // if (!cell.isRowMergeContinue) {\n // this.rowMergeComplete = false;\n // }\n this.rowMergeComplete = false;\n if (cell.rowSpan > 1) {\n var cellIn = i;\n var rowin = this.isHeaderRow ? this.grid.headers.indexOf(this) : this.grid.rows.rowCollection.indexOf(this);\n for (var j = 0; j < cell.rowSpan; j++) {\n if ((j + 1) < cell.rowSpan) {\n (this.isHeaderRow ? this.grid.headers.getHeader(rowin + j + 1) : this.grid.rows.getRow(rowin + j + 1)).cells.getCell(cellIn).hasRowSpan = true;\n }\n }\n if (maxHeight < cell.height) {\n maxHeight = cell.height;\n }\n continue;\n }\n rowHeight = Math.max(rowHeight, cell.height);\n }\n if (maxHeight > rowHeight) {\n rowHeight = maxHeight;\n }\n if (rowHeight === 0) {\n rowHeight = maxHeight;\n }\n else if (rowSpanRemainingHeight > 0) {\n rowHeight += rowSpanRemainingHeight;\n }\n return rowHeight;\n };\n PdfGridRow.prototype.measureWidth = function () {\n var rowWid = 0;\n for (var i = 0; i < this.grid.columns.count; i++) {\n var column = this.grid.columns.getColumn(i);\n rowWid += column.width;\n }\n return rowWid;\n };\n return PdfGridRow;\n}());\n/**\n * `PdfGridRowCollection` class provides access to an ordered, strongly typed collection of 'PdfGridRow' objects.\n * @private\n */\nvar PdfGridRowCollection = /** @__PURE__ @class */ (function () {\n // Constructor\n /**\n * Initializes a new instance of the `PdfGridRowCollection` class with the parent grid.\n * @private\n */\n function PdfGridRowCollection(grid) {\n this.rows = [];\n this.grid = grid;\n }\n Object.defineProperty(PdfGridRowCollection.prototype, \"count\", {\n //Properties\n /**\n * Gets the number of header in the `PdfGrid`.[Read-Only].\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridRowCollection.prototype, \"rowCollection\", {\n //Implementation\n /**\n * Return the row collection of the `grid`.\n * @private\n */\n get: function () {\n return this.rows;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridRowCollection.prototype.addRow = function (arg) {\n if (typeof arg === 'undefined') {\n var temprow = new PdfGridRow(this.grid);\n this.addRow(temprow);\n return temprow;\n }\n else {\n arg.style.setBackgroundBrush(this.grid.style.backgroundBrush);\n arg.style.setFont(this.grid.style.font);\n arg.style.setTextBrush(this.grid.style.textBrush);\n arg.style.setTextPen(this.grid.style.textPen);\n if (arg.cells.count === 0) {\n for (var i = 0; i < this.grid.columns.count; i++) {\n arg.cells.add(new PdfGridCell());\n }\n }\n this.rows.push(arg);\n }\n };\n /**\n * Return the row by index.\n * @private\n */\n PdfGridRowCollection.prototype.getRow = function (index) {\n return this.rows[index];\n };\n return PdfGridRowCollection;\n}());\n/**\n * `PdfGridHeaderCollection` class provides customization of the settings for the header.\n * @private\n */\nvar PdfGridHeaderCollection = /** @__PURE__ @class */ (function () {\n //constructor\n /**\n * Initializes a new instance of the `PdfGridHeaderCollection` class with the parent grid.\n * @private\n */\n function PdfGridHeaderCollection(grid) {\n /**\n * The array to store the `rows` of the grid header.\n * @private\n */\n this.rows = [];\n this.grid = grid;\n this.rows = [];\n }\n //Properties\n /**\n * Gets a 'PdfGridRow' object that represents the `header` row in a 'PdfGridHeaderCollection' control.[Read-Only].\n * @private\n */\n PdfGridHeaderCollection.prototype.getHeader = function (index) {\n // if (index < 0 || index >= Count) {\n // throw new IndexOutOfRangeException();\n // }\n return (this.rows[index]);\n };\n Object.defineProperty(PdfGridHeaderCollection.prototype, \"count\", {\n /**\n * Gets the `number of header` in the 'PdfGrid'.[Read-Only]\n * @private\n */\n get: function () {\n return this.rows.length;\n },\n enumerable: true,\n configurable: true\n });\n PdfGridHeaderCollection.prototype.add = function (arg) {\n if (typeof arg === 'number') {\n var row = void 0;\n for (var i = 0; i < arg; i++) {\n row = new PdfGridRow(this.grid);\n row.isHeaderRow = true;\n for (var j = 0; j < this.grid.columns.count; j++) {\n row.cells.add(new PdfGridCell());\n }\n this.rows.push(row);\n }\n return this.rows;\n }\n else {\n this.rows.push(arg);\n }\n };\n PdfGridHeaderCollection.prototype.indexOf = function (row) {\n return this.rows.indexOf(row);\n };\n return PdfGridHeaderCollection;\n}());\n\nvar __extends$37 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfGrid.ts class for EJ2-PDF\n */\nvar PdfGrid = /** @__PURE__ @class */ (function (_super) {\n __extends$37(PdfGrid, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGrid() {\n var _this = _super.call(this) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n /**\n * Check the child grid is ' split or not'\n */\n _this.isGridSplit = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.splitChildRowIndex = -1;\n /**\n * The event raised on `begin cell lay outing`.\n * @event\n * @private\n */\n //public beginPageLayout : Function;\n /**\n * The event raised on `end cell lay outing`.\n * @event\n * @private\n */\n //public endPageLayout : Function;\n _this.hasRowSpanSpan = false;\n _this.hasColumnSpan = false;\n _this.isSingleGrid = true;\n return _this;\n }\n Object.defineProperty(PdfGrid.prototype, \"raiseBeginCellDraw\", {\n //Properties\n /**\n * Gets a value indicating whether the `start cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.beginCellDraw !== 'undefined' && typeof this.beginCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"raiseEndCellDraw\", {\n /**\n * Gets a value indicating whether the `end cell layout event` should be raised.\n * @private\n */\n get: function () {\n return (typeof this.endCellDraw !== 'undefined' && typeof this.endCellDraw !== null);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"repeatHeader\", {\n /**\n * Gets or sets a value indicating whether to `repeat header`.\n * @private\n */\n get: function () {\n if (this.bRepeatHeader == null || typeof this.bRepeatHeader === 'undefined') {\n this.bRepeatHeader = false;\n }\n return this.bRepeatHeader;\n },\n set: function (value) {\n this.bRepeatHeader = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"allowRowBreakAcrossPages\", {\n /**\n * Gets or sets a value indicating whether to split or cut rows that `overflow a page`.\n * @private\n */\n get: function () {\n return this.breakRow;\n },\n set: function (value) {\n this.breakRow = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"columns\", {\n /**\n * Gets the `column` collection of the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridColumns == null || typeof this.gridColumns === 'undefined') {\n this.gridColumns = new PdfGridColumnCollection(this);\n }\n return this.gridColumns;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"rows\", {\n /**\n * Gets the `row` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridRows == null) {\n this.gridRows = new PdfGridRowCollection(this);\n }\n return this.gridRows;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"headers\", {\n /**\n * Gets the `headers` collection from the PdfGrid.[Read-Only]\n * @private\n */\n get: function () {\n if (this.gridHeaders == null || typeof this.gridHeaders === 'undefined') {\n this.gridHeaders = new PdfGridHeaderCollection(this);\n }\n return this.gridHeaders;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"initialWidth\", {\n /**\n * Indicating `initial width` of the page.\n * @private\n */\n get: function () {\n return this.gridInitialWidth;\n },\n set: function (value) {\n this.gridInitialWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"style\", {\n /**\n * Gets or sets the `grid style`.\n * @private\n */\n get: function () {\n if (this.gridStyle == null) {\n this.gridStyle = new PdfGridStyle();\n }\n return this.gridStyle;\n },\n set: function (value) {\n if (this.gridStyle == null) {\n this.gridStyle = value;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isPageWidth\", {\n /**\n * Gets a value indicating whether the grid column width is considered to be `page width`.\n * @private\n */\n get: function () {\n return this.ispageWidth;\n },\n set: function (value) {\n this.ispageWidth = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"isChildGrid\", {\n /**\n * Gets or set if grid `is nested grid`.\n * @private\n */\n get: function () {\n return this.ischildGrid;\n },\n set: function (value) {\n this.ischildGrid = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"size\", {\n /**\n * Gets or set if grid ' is split or not'\n * @public\n */\n // public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }public get isGridSplit() : boolean {\n // return this.isgridSplit;\n // }\n // public set isGridSplit(value : boolean) {\n // this.isgridSplit = value;\n // }\n /**\n * Gets the `size`.\n * @private\n */\n get: function () {\n if ((this.gridSize.width === 0 || typeof this.gridSize.width === 'undefined') && this.gridSize.height === 0) {\n this.gridSize = this.measure();\n }\n return this.gridSize;\n // } else {\n // return this.gridSize;\n // }\n },\n set: function (value) {\n this.gridSize = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"ParentCell\", {\n get: function () {\n return this.parentCell;\n },\n set: function (value) {\n this.parentCell = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGrid.prototype, \"LayoutFormat\", {\n get: function () {\n return this.layoutFormat;\n },\n enumerable: true,\n configurable: true\n });\n PdfGrid.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null)) {\n var width = (arg1.graphics.clientSize.width - arg2);\n var layoutRectangle = new RectangleF(arg2, arg3, width, 0);\n return this.drawHelper(arg1, layoutRectangle, arg4);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'boolean') {\n return this.drawHelper(arg1, arg2, null);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n /**\n * `measures` this instance.\n * @private\n */\n PdfGrid.prototype.measure = function () {\n var height = 0;\n var width = this.columns.width;\n for (var i = 0; i < this.headers.count; i++) {\n var row = this.headers.getHeader(i);\n height += row.height;\n }\n for (var i = 0; i < this.rows.count; i++) {\n var row = this.rows.getRow(i);\n height += row.height;\n }\n return new SizeF(width, height);\n };\n PdfGrid.prototype.onBeginCellDraw = function (args) {\n if (this.raiseBeginCellDraw) {\n this.beginCellDraw(this, args);\n }\n };\n PdfGrid.prototype.onEndCellDraw = function (args) {\n if (this.raiseEndCellDraw) {\n this.endCellDraw(this, args);\n }\n };\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n PdfGrid.prototype.layout = function (param) {\n var width = param.bounds.width;\n var height = param.bounds.height;\n var hasChanged = false;\n if (typeof param.bounds.width === 'undefined' || param.bounds.width === 0) {\n width = param.page.getClientSize().width - param.bounds.x;\n hasChanged = true;\n }\n if (typeof param.bounds.height === 'undefined' || param.bounds.height === 0) {\n height = param.page.getClientSize().height - param.bounds.y;\n hasChanged = true;\n }\n if (hasChanged) {\n param.bounds = new RectangleF(param.bounds.x, param.bounds.y, width, height);\n }\n if (this.rows.count !== 0) {\n var currentRow = this.rows.getRow(0).cells.getCell(0).style;\n if (currentRow.borders != null && ((currentRow.borders.left != null && currentRow.borders.left.width !== 1) ||\n (currentRow.borders.top != null && currentRow.borders.top.width !== 1))) {\n var x = currentRow.borders.left.width / 2;\n var y = currentRow.borders.top.width / 2;\n if (param.bounds.x === PdfBorders.default.right.width / 2 && param.bounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.gridSize.width, this.gridSize.height);\n param.bounds = newBound;\n }\n }\n }\n this.setSpan();\n this.checkSpan();\n this.layoutFormat = param.format;\n this.gridLocation = param.bounds;\n var layouter = new PdfGridLayouter(this);\n var result = (layouter.Layouter(param));\n return result;\n };\n PdfGrid.prototype.setSpan = function () {\n var colSpan = 1;\n var rowSpan = 1;\n var currentCellIndex = 0;\n var currentRowIndex = 0;\n var maxSpan = 0;\n var rowCount = this.headers.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.headers.getHeader(i);\n maxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.headers.count) {\n throw new Error('Invalid span specified at Header ' + j.toString() + ' column ' + i.toString());\n }\n // if (this.rows.count !== 0 && cell.rowSpan + i > this.rows.count) {\n // throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n // }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n colSpan = cell.columnSpan;\n rowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n row.cells.getCell(currentCellIndex).rowSpan = rowSpan;\n colSpan--;\n }\n currentCellIndex = j;\n colSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n rowSpan--;\n while (colSpan > 1) {\n currentCellIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.headers.getHeader(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n colSpan--;\n }\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n colSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (colSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n colSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n rowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (rowSpan > 1) {\n currentRowIndex++;\n this.headers.getHeader(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n rowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = maxSpan;\n }\n };\n PdfGrid.prototype.checkSpan = function () {\n var cellcolSpan;\n var cellrowSpan = 1;\n var cellmaxSpan = 0;\n var currentCellIndex;\n var currentRowIndex = 0;\n cellcolSpan = cellrowSpan = 1;\n currentCellIndex = currentRowIndex = 0;\n if (this.hasRowSpanSpan || this.hasColumnSpan) {\n var rowCount = this.rows.count;\n for (var i = 0; i < rowCount; i++) {\n var row = this.rows.getRow(i);\n cellmaxSpan = 0;\n var colCount = row.cells.count;\n for (var j = 0; j < colCount; j++) {\n var cell = row.cells.getCell(j);\n cellmaxSpan = Math.max(cellmaxSpan, cell.rowSpan);\n //Skip setting span map for already coverted rows/columns.\n if (!cell.isCellMergeContinue && !cell.isRowMergeContinue\n && (cell.columnSpan > 1 || cell.rowSpan > 1)) {\n if (cell.columnSpan + j > row.cells.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.rowSpan + i > this.rows.count) {\n throw new Error('Invalid span specified at row ' + j.toString() + ' column ' + i.toString());\n }\n if (cell.columnSpan > 1 && cell.rowSpan > 1) {\n cellcolSpan = cell.columnSpan;\n cellrowSpan = cell.rowSpan;\n currentCellIndex = j;\n currentRowIndex = i;\n cell.isCellMergeStart = true;\n cell.isRowMergeStart = true;\n //Set Column merges for first row\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n row.cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n currentCellIndex = j;\n cellcolSpan = cell.columnSpan;\n //Set Row Merges and column merges foreach subsequent rows.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellrowSpan--;\n while (cellcolSpan > 1) {\n currentCellIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isCellMergeContinue = true;\n this.rows.getRow(currentRowIndex).cells.getCell(currentCellIndex).isRowMergeContinue = true;\n cellcolSpan--;\n }\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n }\n }\n else if (cell.columnSpan > 1 && cell.rowSpan === 1) {\n cellcolSpan = cell.columnSpan;\n currentCellIndex = j;\n cell.isCellMergeStart = true;\n //Set Column merges.\n while (cellcolSpan > 1) {\n currentCellIndex++;\n row.cells.getCell(currentCellIndex).isCellMergeContinue = true;\n cellcolSpan--;\n }\n }\n else if (cell.columnSpan === 1 && cell.rowSpan > 1) {\n cellrowSpan = cell.rowSpan;\n currentRowIndex = i;\n //Set row Merges.\n while (cellrowSpan > 1) {\n currentRowIndex++;\n this.rows.getRow(currentRowIndex).cells.getCell(j).isRowMergeContinue = true;\n cellrowSpan--;\n }\n }\n }\n }\n row.maximumRowSpan = cellmaxSpan;\n }\n }\n };\n PdfGrid.prototype.measureColumnsWidth = function (bounds) {\n if (typeof bounds !== 'undefined') {\n this.isPageWidth = false;\n var widths = this.columns.getDefaultWidths(bounds.width - bounds.x);\n //let tempWidth : number = this.columns.getColumn(0).width;\n for (var i = 0, count = this.columns.count; i < count; i++) {\n // if (this.columns.getColumn(i).width < 0)\n // this.columns.getColumn(i).columnWidth = widths[i];\n // else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth && widths[i]>0 && this.isComplete)\n this.columns.getColumn(i).columnWidth = widths[i];\n this.tempWidth = widths[i];\n }\n if (this.ParentCell != null && this.style.allowHorizontalOverflow == false && this.ParentCell.row.grid.style.allowHorizontalOverflow == false) {\n var padding = 0;\n var columnWidth = 0;\n var columnCount = this.columns.count;\n var childGridColumnWidth = 0;\n if (this.ParentCell.style.cellPadding != null || typeof this.ParentCell.style.cellPadding !== 'undefined') {\n if (typeof this.ParentCell.style.cellPadding.left != 'undefined' && this.ParentCell.style.cellPadding.hasLeftPad) {\n padding += this.ParentCell.style.cellPadding.left;\n }\n if (typeof this.ParentCell.style.cellPadding.right != 'undefined' && this.ParentCell.style.cellPadding.hasRightPad) {\n padding += this.ParentCell.style.cellPadding.right;\n }\n }\n for (var i = 0; i < this.ParentCell.columnSpan; i++) {\n columnWidth += this.ParentCell.row.grid.columns.getColumn(this.parentCellIndex + i).width;\n }\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n columnWidth -= this.gridColumns.getColumn(j).width;\n columnCount--;\n }\n }\n if ((this.ParentCell.row.grid.style.cellPadding != null || typeof this.ParentCell.row.grid.style.cellPadding != 'undefined')) {\n if (typeof this.ParentCell.row.grid.style.cellPadding.top != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasTopPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.top;\n }\n if (typeof this.ParentCell.row.grid.style.cellPadding.bottom != 'undefined' && this.ParentCell.row.grid.style.cellPadding.hasBottomPad) {\n padding += this.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n columnWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n if (columnWidth > padding) {\n childGridColumnWidth = (columnWidth - padding) / columnCount;\n this.tempWidth = childGridColumnWidth;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColumnWidth;\n }\n }\n }\n }\n // if (this.ParentCell != null && this.ParentCell.row.width > 0)\n // {\n // if (this.isChildGrid && this.gridSize.width > this.ParentCell.row.width)\n // {\n // widths = this.columns.getDefaultWidths(bounds.width);\n // for (let i : number = 0; i < this.columns.count; i++)\n // {\n // this.columns.getColumn(i).width = widths[i];\n // }\n // }\n // }\n }\n else {\n var widths = [this.columns.count];\n for (var n = 0; n < this.columns.count; n++) {\n widths[n] = 0;\n }\n var cellWidth = 0;\n if ((typeof this.isChildGrid === 'undefined' && typeof this.gridLocation !== 'undefined') || (this.isChildGrid === null && typeof this.gridLocation !== 'undefined')) {\n this.initialWidth = this.gridLocation.width;\n }\n if (this.headers.count > 0) {\n var colCount_1 = this.headers.getHeader(0).cells.count;\n var rowCount = this.headers.count;\n for (var i = 0; i < colCount_1; i++) {\n cellWidth = 0;\n for (var j = 0; j < rowCount; j++) {\n var rowWidth = Math.min(this.initialWidth, this.headers.getHeader(j).cells.getCell(i).width);\n cellWidth = Math.max(cellWidth, rowWidth);\n }\n widths[i] = cellWidth;\n }\n }\n // else {\n // let colCount : number = this.rows.getRow(0).cells.count;\n // let rowCount : number = this.rows.count;\n // for (let i : number = 0; i < colCount; i++) {\n // cellWidth = 0;\n // for (let j : number = 0; j < rowCount; j++) {\n // let rowWidth : number = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n // cellWidth = Math.max(cellWidth, rowWidth);\n // }\n // widths[i] = cellWidth;\n // }\n // }\n cellWidth = 0;\n for (var i = 0, colCount_2 = this.columns.count; i < colCount_2; i++) {\n for (var j = 0, rowCount = this.rows.count; j < rowCount; j++) {\n if ((this.rows.getRow(j).cells.getCell(i).columnSpan == 1 && !this.rows.getRow(j).cells.getCell(i).isCellMergeContinue) || this.rows.getRow(j).cells.getCell(i).value != null) {\n if (this.rows.getRow(j).cells.getCell(i).value != null && !this.rows.getRow(j).grid.style.allowHorizontalOverflow) {\n var value = this.rows.getRow(j).grid.style.cellPadding.right +\n this.rows.getRow(j).grid.style.cellPadding.left\n + this.rows.getRow(j).cells.getCell(i).style.borders.left.width / 2;\n // if (this.initialWidth != 0 )\n // (this.rows.getRow(j).cells.getCell(i).value as PdfGrid).initialWidth = this.initialWidth - value;\n }\n var rowWidth = 0;\n rowWidth = this.initialWidth > 0.0 ? Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width) : this.rows.getRow(j).cells.getCell(i).width;\n // let internalWidth : number = this.rows.getRow(j).cells.getCell(i).width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.left.width;\n // internalWidth += this.rows.getRow(j).cells.getCell(i).style.borders.right.width;\n // let internalHeight : number = this.rows.getRow(j).cells.getCell(i).height;\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.top.width);\n // internalHeight += (this.rows.getRow(j).cells.getCell(i).style.borders.bottom.width);\n // let isCorrectWidth : boolean = (internalWidth + this.gridLocation.x) > this.currentGraphics.clientSize.width;\n // let isCorrectHeight : boolean = (internalHeight + this.gridLocation.y) > this.currentGraphics.clientSize.height;\n // if (isCorrectWidth || isCorrectHeight) {\n // throw Error('Image size exceeds client size of the page. Can not insert this image');\n // }\n // rowWidth = Math.min(this.initialWidth, this.rows.getRow(j).cells.getCell(i).width);\n cellWidth = Math.max(widths[i], Math.max(cellWidth, rowWidth));\n cellWidth = Math.max(this.columns.getColumn(i).width, cellWidth);\n }\n }\n if (this.rows.count != 0)\n widths[i] = cellWidth;\n cellWidth = 0;\n }\n for (var i = 0, RowCount = this.rows.count; i < RowCount; i++) {\n for (var j = 0, ColCount = this.columns.count; j < ColCount; j++) {\n if (this.rows.getRow(i).cells.getCell(j).columnSpan > 1) {\n var total = widths[j];\n for (var k = 1; k < this.rows.getRow(i).cells.getCell(j).columnSpan; k++) {\n total += widths[j + k];\n }\n // if (this.rows.getRow(i).cells.getCell(j).width > total)\n // {\n // let extendedWidth : number = this.rows.getRow(i).cells.getCell(j).width - total;\n // extendedWidth = extendedWidth / this.rows.getRow(i).cells.getCell(j).columnSpan;\n // for (let k : number = j; k < j + this.rows.getRow(i).cells.getCell(j).columnSpan; k++)\n // widths[k] += extendedWidth;\n // }\n }\n }\n }\n // if (this.isChildGrid && this.initialWidth != 0)\n // {\n // widths = this.columns.getDefaultWidths(this.initialWidth);\n // }\n for (var i = 0, count = this.columns.count; i < count; i++) {\n if (this.columns.getColumn(i).width <= 0)\n this.columns.getColumn(i).columnWidth = widths[i];\n else if (this.columns.getColumn(i).width > 0 && !this.columns.getColumn(i).isCustomWidth)\n this.columns.getColumn(i).columnWidth = widths[i];\n }\n var padding = 0;\n var colWidth = 0;\n var colCount = this.columns.count;\n var childGridColWidth = 0;\n colWidth = this.tempWidth;\n for (var j = 0; j < this.columns.count; j++) {\n if (this.gridColumns.getColumn(j).width > 0 && this.gridColumns.getColumn(j).isCustomWidth) {\n colWidth -= this.gridColumns.getColumn(j).width;\n colCount--;\n }\n }\n // if (this.style.cellSpacing != 0){\n // colWidth -= this.style.cellSpacing * 2;\n // }\n if (colWidth > 0) {\n if (this.ParentCell.row.grid.style.cellSpacing != 0) {\n colWidth -= this.ParentCell.row.grid.style.cellSpacing * 2;\n }\n }\n if (colWidth > padding) {\n childGridColWidth = (colWidth) / colCount;\n if (this.ParentCell != null) {\n for (var j = 0; j < this.columns.count; j++) {\n if (!this.columns.getColumn(j).isCustomWidth)\n this.columns.getColumn(j).columnWidth = childGridColWidth;\n }\n }\n }\n }\n };\n return PdfGrid;\n}(PdfLayoutElement));\n\nvar __extends$36 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Class `lay outing the text`.\n *\n */\nvar PdfGridLayouter = /** @__PURE__ @class */ (function (_super) {\n __extends$36(PdfGridLayouter, _super);\n //constructor\n /**\n * Initialize a new instance for `PdfGrid` class.\n * @private\n */\n function PdfGridLayouter(baseFormat) {\n var _this = _super.call(this, baseFormat) || this;\n /**\n * @hidden\n * @private\n */\n _this.gridInitialWidth = 0;\n /**\n * @hidden\n * @private\n */\n _this.gridSize = new SizeF(0, 0);\n _this.parentCellIndex = 0;\n _this.tempWidth = 0;\n _this.childheight = 0;\n /**\n * Check weather it is `child grid or not`.\n * @private\n */\n _this.isChildGrid = false;\n /**\n * @hidden\n * @private\n */\n _this.hasRowSpanSpan = false;\n /**\n * @hidden\n * @private\n */\n _this.isRearranged = false;\n /**\n * @hidden\n * @private\n */\n _this.pageBounds = new RectangleF();\n /**\n * @hidden\n * @private\n */\n _this.listOfNavigatePages = [];\n /**\n * @hidden\n * @private\n */\n _this.flag = true;\n /**\n * @hidden\n * @private\n */\n _this.columnRanges = [];\n /**\n * @hidden\n * @private\n */\n _this.currentLocation = new PointF(0, 0);\n /**\n * @hidden\n * @private\n */\n _this.breakRow = true;\n _this.slr = null;\n _this.remainderText = null;\n _this.isPaginate = false;\n /**\n * Checks whether the x co-ordinate is need to set as client size or not.\n * @hidden\n * @private\n */\n _this.isOverloadWithPosition = false;\n return _this;\n }\n Object.defineProperty(PdfGridLayouter.prototype, \"Grid\", {\n //Properties\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Constructors\n /**\n * Initializes a new instance of the `StringLayouter` class.\n * @private\n */\n //Public methods\n /**\n * `Layouts` the text.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /**\n * `Layouts` the specified graphics.\n * @private\n */\n /*public layout(graphics : PdfLayoutParams) : PdfLayoutResult\n public layout(graphics : PdfGraphics, bounds : RectangleF) : void\n public layout(graphics : PdfGraphics, bounds : PointF) : void\n public layout(graphics ?: PdfGraphics | PdfLayoutParams, bounds ?: PointF | RectangleF) : void | PdfLayoutResult {\n if (graphics instanceof PdfGraphics) {\n if (bounds instanceof PointF) {\n if (bounds.x === 0) {\n bounds.x = PdfBorders.default.right.width / 2;\n }\n if (bounds.y === 0) {\n bounds.y = PdfBorders.default.top.width / 2;\n }\n let boundaries : RectangleF = new RectangleF(bounds, new SizeF(0, 0));\n this.layout(graphics, boundaries);\n } else {\n let width : number = graphics.clientSize.width;\n let parameter : PdfLayoutParams = new PdfLayoutParams();\n parameter.bounds = bounds;\n this.currentGraphics = graphics;\n if (graphics.layer != null) {\n let index : number = 0;\n if (this.currentGraphics.page instanceof PdfPage) {\n index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n } else {\n index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n }\n } else {\n this.layoutInternal(parameter);\n }\n }\n }\n }*/\n /**\n * Gets the `format`.\n * @private\n */\n PdfGridLayouter.prototype.getFormat = function (format) {\n var f = format;\n return f;\n };\n /**\n * `Layouts` the element.\n * @private\n */\n PdfGridLayouter.prototype.layoutInternal = function (param) {\n var format = this.getFormat(param.format);\n this.gridLayoutFormat = this.getFormat(param.format);\n this.currentPage = param.page;\n if (this.currentPage !== null) {\n var pageHeight = this.currentPage.getClientSize().height;\n var pageWidth = this.currentPage.getClientSize().width;\n this.currentPageBounds = this.currentPage.getClientSize();\n }\n else {\n throw Error('Can not set page as null');\n //this.currentPageBounds = this.currentGraphics.clientSize;\n }\n this.currentGraphics = this.currentPage.graphics;\n //this.currentGraphics = (this.currentPage != null ) ? this.currentPage.graphics : this.currentGraphics;\n // if (this.currentGraphics.layer !== null) {\n // let index : number = 0;\n // if (this.currentGraphics.page instanceof PdfPage) {\n // index = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n // } else {\n // index = (this.currentGraphics.page as PdfPageBase).defaultLayerIndex;\n // }\n // this.listOfNavigatePages.push(index);\n // }\n var index = 0;\n index = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n this.listOfNavigatePages.push(index);\n if (format != null && format.break === PdfLayoutBreakType.FitColumnsToPage) {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), new SizeF(this.Grid.columns.width, this.currentGraphics.clientSize.height));\n }\n else {\n this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n }\n //this.currentBounds = new RectangleF(new PointF(param.bounds.x, param.bounds.y), this.currentGraphics.clientSize);\n if (this.Grid.rows.count !== 0) {\n this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width :\n (this.currentBounds.width - this.Grid.rows.getRow(0).cells.getCell(0).style.borders.left.width / 2);\n }\n else if (this.Grid.headers.count !== 0) {\n // this.currentBounds.width = (param.bounds.width > 0) ? param.bounds.width : (this.currentBounds.width -\n // this.Grid.headers.getHeader(0).cells.getCell(0).style.borders.left.width / 2);\n this.currentBounds.width = param.bounds.width;\n }\n else {\n throw Error('Please add row or header into grid');\n }\n this.startLocation = new PointF(param.bounds.x, param.bounds.y);\n // if (this.Grid.style.allowHorizontalOverflow && this.currentBounds.width > this.currentGraphics.clientSize.width) {\n // this.currentBounds.width = this.currentGraphics.clientSize.width;\n // this.currentBounds.width -= this.currentBounds.x;\n // }\n // if (this.Grid.isChildGrid) {\n // this.childheight = param.bounds.height;\n // }\n // if (param.format !== null && param.format.usePaginateBounds) {\n // if (param.format.paginateBounds.height > 0) {\n // this.currentBounds.height = param.format.paginateBounds.height;\n // }\n //} else \n if (param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (!this.Grid.isChildGrid) {\n this.hType = this.Grid.style.horizontalOverflowType;\n }\n if (!this.Grid.style.allowHorizontalOverflow) {\n this.columnRanges = [];\n if (typeof this.Grid.isChildGrid !== 'undefined' && typeof this.Grid.isChildGrid) {\n this.Grid.measureColumnsWidth(this.currentBounds);\n }\n else {\n this.Grid.measureColumnsWidth(new RectangleF(this.currentBounds.x, this.currentBounds.y, this.currentBounds.x + this.currentBounds.width, this.currentBounds.height));\n }\n this.columnRanges.push([0, this.Grid.columns.count - 1]);\n }\n else {\n this.Grid.measureColumnsWidth();\n this.determineColumnDrawRanges();\n }\n if (this.Grid.hasRowSpanSpan) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n if (this.Grid.rows.getRow(i).height !== -1 && !this.Grid.rows.getRow(i).isRowHeightSet) {\n this.Grid.rows.getRow(i).isRowHeightSet = true;\n }\n }\n }\n var result = this.layoutOnPage(param);\n return result;\n };\n // /* tslint:enable */\n /**\n * `Determines the column draw ranges`.\n * @private\n */\n PdfGridLayouter.prototype.determineColumnDrawRanges = function () {\n var startColumn = 0;\n var endColumn = 0;\n var cellWidths = 0;\n var availableWidth = this.currentGraphics.clientSize.width - this.currentBounds.x;\n for (var i = 0; i < this.Grid.columns.count; i++) {\n cellWidths += this.Grid.columns.getColumn(i).width;\n if (cellWidths >= availableWidth) {\n var subWidths = 0;\n for (var j = startColumn; j <= i; j++) {\n subWidths += this.Grid.columns.getColumn(j).width;\n if (subWidths > availableWidth) {\n break;\n }\n endColumn = j;\n }\n this.columnRanges.push([startColumn, endColumn]);\n startColumn = endColumn + 1;\n endColumn = startColumn;\n cellWidths = (endColumn <= i) ? this.Grid.columns.getColumn(i).width : 0;\n }\n }\n // if (startColumn !== this.columns.Count) {\n this.columnRanges.push([startColumn, this.Grid.columns.count - 1]);\n // }\n };\n /**\n * `Layouts the on page`.\n * @private\n */\n PdfGridLayouter.prototype.layoutOnPage = function (param) {\n /* tslint:disable */\n this.pageBounds.x = param.bounds.x;\n this.pageBounds.y = param.bounds.y;\n this.pageBounds.height = param.bounds.height;\n var format = this.getFormat(param.format);\n var endArgs = null;\n var result = null;\n var layoutedPages = new TemporaryDictionary();\n var startPage = param.page;\n var isParentCell = false;\n var cellBounds = [];\n for (var index = 0; index < this.columnRanges.length; index++) {\n var range = this.columnRanges[index];\n this.cellStartIndex = range[0];\n this.cellEndIndex = range[1];\n var returnObject = this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex);\n this.currentBounds = returnObject.currentBounds;\n this.currentRowIndex = returnObject.currentRowIndex;\n // if (returnObject.returnValue) {\n // result = new PdfGridLayoutResult(this.currentPage, this.currentBounds);\n // break;\n // }\n //Draw Headers.\n var drawHeader = void 0;\n for (var i_1 = 0; i_1 < this.Grid.headers.count; i_1++) {\n var row = this.Grid.headers.getHeader(i_1);\n var headerHeight = this.currentBounds.y;\n this.isHeader = true;\n if (startPage != this.currentPage) {\n for (var k = this.cellStartIndex; k <= this.cellEndIndex; k++) {\n if (row.cells.getCell(k).isCellMergeContinue) {\n row.cells.getCell(k).isCellMergeContinue = false;\n row.cells.getCell(k).value = \"\";\n }\n }\n }\n // RowLayoutResult\n var headerResult = this.drawRow(row);\n if (headerHeight === this.currentBounds.y) {\n drawHeader = true;\n if (PdfGridLayouter.repeatRowIndex === -1) {\n PdfGridLayouter.repeatRowIndex = i_1;\n }\n }\n else {\n drawHeader = false;\n }\n if (!headerResult.isFinish && startPage !== null\n && format.layout !== PdfLayoutType.OnePage && drawHeader) {\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n this.startLocation.y = this.currentBounds.y;\n if (typeof format.paginateBounds !== 'undefined' && format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 && format.paginateBounds.height === 0)\n this.currentBounds.x += this.startLocation.x;\n this.drawRow(row);\n }\n this.isHeader = false;\n }\n var i = 0;\n var length_1 = this.Grid.rows.count;\n var repeatRow = void 0;\n var flag = true;\n //Here is to draw parent Grid and Cells\n cellBounds = [];\n //Draw row by row with the specified cell range.\n for (var j = 0; j < this.Grid.rows.count; j++) {\n var row = this.Grid.rows.getRow(j);\n i++;\n this.currentRowIndex = i - 1;\n var originalHeight = this.currentBounds.y;\n startPage = this.currentPage;\n PdfGridLayouter.repeatRowIndex = -1;\n if (flag && row.grid.isChildGrid) {\n flag = false;\n }\n var rowResult = null;\n ///rowResult = this.drawRow(row);\n /*if(!row.isrowFinish) {\n if(!row.grid.isgridSplit){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n } else {\n if(!row.isrowDraw){\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n row.isrowDraw = true;\n row.grid.isgridSplit = false;\n } else {\n rowResult = null;\n break;\n }\n }\n }\n else {\n //row.isrowFinish = false;\n //rowResult = this.drawRow(row);\n rowResult = null;\n break;\n \n } */\n if (this.Grid.splitChildRowIndex == -1) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else {\n if (row.grid.ParentCell.row.grid.isGridSplit && this.Grid.splitChildRowIndex <= row.rowIndex) {\n rowResult = this.drawRow(row);\n row.isrowFinish = true;\n }\n else if (row.isrowFinish) {\n continue;\n }\n else {\n break;\n }\n }\n //rowResult = this.drawRow(row);\n cellBounds.push(rowResult.bounds.width);\n /*if (row.isRowBreaksNextPage)\n {\n let x : number = 0;\n for (let l : number = 0; l < row.cells.count; l++)\n {\n let isNestedRowBreak : boolean = false;\n if (row.height == row.cells.getCell(l).height)\n {\n let n : number;\n let grid : PdfGrid = row.cells.getCell(l).value as PdfGrid;\n for (let m : number = grid.rows.count; 0 < m; m--)\n {\n if ((grid.rows.getRow(m - 1).rowBreakHeight > 0))\n {\n isNestedRowBreak = true;\n break;\n }\n if (grid.rows.getRow(m - 1).isRowBreaksNextPage)\n {\n row.rowBreakHeightValue = grid.rows.getRow(m - 1).rowBreakHeightValue;\n break;\n }\n row.rowBreakHeightValue += grid.rows.getRow(m - 1).height;\n }\n }\n if (isNestedRowBreak)\n break;\n }\n for (let j : number = 0; j < row.cells.count; j++)\n {\n\n if (row.height > row.cells.getCell(j).height)\n {\n row.cells.getCell(j).value = \" \";\n let rect : RectangleF ;\n let page : PdfPage = this.getNextPage(this.currentPage);\n let section : PdfSection = this.currentPage.section;\n let index : number = section.indexOf(page);\n for (let k : number = 0; k < (section.count - 1) - index; k++)\n {\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, page.getClientSize().height);\n PdfGridLayouter.repeatRowIndex = -1;\n row.cells.getCell(j).draw(page.graphics, rect, false);\n page = this.getNextPage(page);\n }\n rect = new RectangleF(x, 0, row.grid.columns.getColumn(j).width, row.rowBreakHeightValue);\n\n row.cells.getCell(j).draw(page.graphics, rect, false);\n }\n x += row.grid.columns.getColumn(j).width;\n }\n }*/\n //if height remains same, it is understood that row is not drawn in the page\n if (originalHeight === this.currentBounds.y) {\n repeatRow = true;\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n else {\n repeatRow = false;\n PdfGridLayouter.repeatRowIndex = -1;\n }\n while (!rowResult.isFinish && startPage != null) {\n var tempResult = this.getLayoutResult();\n /*if (startPage != this.currentPage)\n {\n if (row.grid.isChildGrid && row.grid.ParentCell != null)\n {\n let bounds : RectangleF= new RectangleF(new PointF(format.paginateBounds.x,format.paginateBounds.y), new SizeF(param.bounds.width, tempResult.bounds.height));\n bounds.x += param.bounds.x;\n if (row.grid.ParentCell.row.grid.style.cellPadding != null)\n {\n bounds.y += row.grid.ParentCell.row.grid.style.cellPadding.top;\n if (bounds.height > this.currentPageBounds.height)\n {\n bounds.height = this.currentPageBounds.height - bounds.y;\n bounds.height -= (row.grid.ParentCell.row.grid.style.cellPadding.bottom);\n }\n }\n // Draw border for cells in the nested grid cell's row.\n for (let c : number = 0; c < row.cells.count; c++)\n {\n let cell : PdfGridCell = row.cells.getCell(c);\n let cellWidth : number= 0;\n if (cell.columnSpan > 1)\n {\n for (; c < cell.columnSpan; c++)\n cellWidth += row.grid.columns.getColumn(c).width;\n }\n else\n cellWidth = Math.max(cell.width, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(this.currentGraphics, new RectangleF(new PointF(bounds.x,bounds.y), new SizeF(cellWidth, bounds.height)));\n bounds.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n }\n */\n endArgs = this.raisePageLayouted(tempResult);\n if (endArgs.cancel || repeatRow)\n break;\n else if (this.Grid.allowRowBreakAcrossPages) {\n //If there is no space in the current page, add new page and then draw the remaining row.\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n var location_1 = new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n if ((format.paginateBounds.x === 0 && format.paginateBounds.y === 0 && format.paginateBounds.width === 0 &&\n format.paginateBounds.height === 0) && (this.startLocation.x === location_1.x && this.startLocation.y === location_1.y)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n }\n if (this.isPaginate) {\n this.startLocation.y = this.currentBounds.y;\n this.isPaginate = false;\n }\n if (this.Grid.isChildGrid && row.grid.ParentCell != null) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n if (row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top < this.currentBounds.height) {\n this.currentBounds.y = this.Grid.ParentCell.row.grid.style.cellPadding.top;\n }\n }\n }\n if (row.grid.ParentCell != null) {\n row.grid.ParentCell.row.isRowBreaksNextPage = true;\n row.grid.ParentCell.row.rowBreakHeightValue = row.rowBreakHeight + this.Grid.ParentCell.row.grid.style.cellPadding.top + this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n for (var i_2 = row.rowIndex + 1; i_2 < row.grid.rows.count; i_2++) {\n row.grid.ParentCell.row.rowBreakHeightValue += row.grid.rows.getRow(i_2).height;\n }\n //row.rowBreakHeight = row.grid.ParentCell.row.rowBreakHeightValue;\n }\n /*if (row.noOfPageCount > 1)\n {\n let temp : number = row.rowBreakHeightValue;\n for (let j : number = 1; j < row.noOfPageCount; j++)\n {\n row.rowBreakHeightValue = 0;\n row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n this.currentPage = this.getNextPageformat(format);\n startPage = this.currentPage;\n }\n row.rowBreakHeightValue = temp;\n row.noOfPageCount = 1;\n rowResult = this.drawRow(row);\n } else {\n rowResult = this.drawRow(row);\n }\n /*if(row.grid.isChildGrid){\n row.isrowFinish = false;\n row.isrowDraw = false;\n row.grid.isgridSplit = true;\n row.grid.ParentCell.row.grid.isgridSplit = true;\n //rowResult.isFinish = false;\n break;\n }*/\n if (row.grid.isChildGrid) {\n //row.grid.isgridSplit = true;\n row.isrowFinish = false;\n //row.grid.ParentCell.row.grid.isgridSplit = true;\n row.grid.splitChildRowIndex = row.rowIndex;\n row.grid.ParentCell.row.grid.splitChildRowIndex = row.grid.ParentCell.row.rowIndex;\n if (row.grid.ParentCell.row.grid.isGridSplit) {\n row.grid.ParentCell.row.noOfPageCount += 1;\n row.grid.ParentCell.row.grid.isGridSplit = false;\n }\n break;\n }\n if (row.noOfPageCount < 1) {\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n if (row.style.border != null && ((row.style.border.left != null && row.style.border.left.width !== 1)\n || (row.style.border.top != null && row.style.border.top.width !== 1))) {\n var x = row.style.border.left.width / 2;\n var y = row.style.border.top.width / 2;\n if (this.currentBounds.x === PdfBorders.default.right.width / 2 && this.currentBounds.y === PdfBorders.default.right.width / 2) {\n var newBound = new RectangleF(x, y, this.currentBounds.width, this.currentBounds.height);\n this.currentBounds = newBound;\n }\n }\n if (this.Grid.repeatHeader) {\n for (var j_1 = 0; j_1 < this.Grid.headers.count; j_1++) {\n var headerRepeat = this.Grid.headers.getHeader(j_1);\n this.drawRow(headerRepeat);\n }\n }\n rowResult = this.drawRow(row);\n if (row.noOfPageCount >= 1) {\n var temp = row.rowBreakHeightValue;\n for (var j_2 = 0; j_2 < row.noOfPageCount; j_2++) {\n //this.currentPage.section.add();\n var tempResult1 = this.getLayoutResult();\n endArgs = this.raisePageLayouted(tempResult1);\n this.currentPage = this.getNextPageformat(format);\n originalHeight = this.currentBounds.y;\n //row.rowBreakHeightValue = 0;\n if (row.grid.splitChildRowIndex != -1) {\n row.grid.isGridSplit = true;\n }\n this.currentBounds.y = 0.5;\n if (this.Grid.repeatHeader) {\n for (var i_3 = 0; i_3 < this.Grid.headers.count; i_3++) {\n var header = this.Grid.headers.getHeader(i_3);\n this.drawRow(header);\n }\n }\n //row.height = ((row.noOfPageCount - 1) * this.currentPage.getClientSize().height);\n this.drawRow(row);\n }\n // row.rowBreakHeight = temp;\n // row.noOfPageCount = 1;\n // rowResult = this.drawRow(row);\n }\n row.grid.splitChildRowIndex = -1;\n row.grid.isGridSplit = false;\n rowResult.isFinish = this.checkIsFisished(row);\n //row.NestedGridLayoutResult.bounds.height = row.rowBreakHeightValue;\n //this.currentBounds.y = rowResult.bounds.y;\n for (var i_4 = 0; i_4 < row.cells.count; i_4++) {\n if (row.cells.getCell(i_4).value instanceof PdfGrid) {\n row.cells.getCell(i_4).value.splitChildRowIndex = -1;\n }\n }\n }\n }\n // else if (!this.Grid.allowRowBreakAcrossPages && i < length)\n // {\n // this.currentPage = this.getNextPageformat(format);\n // break;\n // }\n // else if (i >= length)\n // break;\n }\n if (!rowResult.isFinish && startPage !== null && format.layout !== PdfLayoutType.OnePage && repeatRow) {\n // During pagination, cell position is maintained here.\n this.startLocation.x = this.currentBounds.x;\n this.currentPage = this.getNextPageformat(format);\n /*if (!this.Grid.isSingleGrid)\n {\n for ( let j : number= 0; j < this.Grid.rows.count; j++)\n {\n let isWidthGreaterthanParent : boolean = false;\n for (let k : number = 0; k < this.Grid.rows.getRow(j).cells.count; k++)\n {\n if (this.Grid.rows.getRow(j).cells.getCell(k).width > this.currentPageBounds.width)\n isWidthGreaterthanParent = true;\n }\n if (isWidthGreaterthanParent && this.Grid.rows.getRow(j).cells.getCell(this.rowBreakPageHeightCellIndex).pageCount > 0)\n {\n isAddNextPage = true;\n }\n }\n }\n if (!this.Grid.isRearranged && isAddNextPage)\n {\n let section : PdfSection = this.currentPage.section;\n \n //this.currentPage = section.add();\n \n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0,0), this.currentPage.getClientSize());\n \n let pageindex : number = (this.currentGraphics.page as PdfPage).section.indexOf(this.currentGraphics.page as PdfPage);\n }\n else\n {\n this.currentPage = this.getNextPageformat(format);\n }\n if (format.paginateBounds.y == 0)\n this.currentBounds.y = PdfBorders.default.top.width/2;\n else\n {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n \n }*/\n if (this.raiseBeforePageLayout(this.currentPage, this.currentBounds, this.currentRowIndex).returnValue) {\n break;\n }\n if ((param.format !== null) && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.height > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.height = param.bounds.height;\n }\n if (typeof param.format !== 'undefined' && param.format != null && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && !(param.format.paginateBounds.x === 0 && param.format.paginateBounds.y === 0 && param.format.paginateBounds.width === 0 && param.format.paginateBounds.height === 0) && param.format.paginateBounds.y === 0) {\n this.currentBounds.y = PdfBorders.default.top.width / 2;\n }\n else {\n this.currentBounds.y = format == null ? 0 : format.paginateBounds.y;\n if (format != null && (format.paginateBounds.x !== 0 || format.paginateBounds.y !== 0 || format.paginateBounds.height !== 0 || format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.width = format.paginateBounds.width;\n this.currentBounds.height = format.paginateBounds.height;\n }\n }\n if (typeof param.format !== 'undefined' && (param.format !== null) && typeof param.format.usePaginateBounds !== 'undefined' && !param.format.usePaginateBounds && param.bounds !== null &&\n param.bounds.y > 0 && !this.Grid.isChildGrid) {\n this.currentBounds.y = param.bounds.y;\n }\n this.startLocation.y = this.currentBounds.y;\n if ((format.paginateBounds.x === format.paginateBounds.y) &&\n (format.paginateBounds.y === format.paginateBounds.height) &&\n (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n }\n if (this.currentBounds.x === PdfBorders.default.left.width / 2) {\n this.currentBounds.y += this.startLocation.x;\n }\n if (this.Grid.repeatHeader) {\n for (var i_5 = 0; i_5 < this.Grid.headers.count; i_5++) {\n var header = this.Grid.headers.getHeader(i_5);\n this.drawRow(header);\n }\n }\n this.drawRow(row);\n if (this.currentPage !== null && !layoutedPages.containsKey(this.currentPage)) {\n layoutedPages.add(this.currentPage, range);\n }\n }\n if (row.NestedGridLayoutResult != null) {\n // Position for next row in the grid.\n this.currentPage = row.NestedGridLayoutResult.page;\n this.currentGraphics = this.currentPage.graphics; //If not, next row will not be drawn in the layouted page.\n this.startLocation = new PointF(row.NestedGridLayoutResult.bounds.x, row.NestedGridLayoutResult.bounds.y);\n var recalHeight = this.ReCalculateHeight(row, row.NestedGridLayoutResult.bounds.height);\n this.currentBounds.y = recalHeight;\n //this.currentBounds.y = row.NestedGridLayoutResult.bounds.height;\n if (startPage != this.currentPage) {\n var secion = this.currentPage.section;\n var startIndex = secion.indexOf(startPage) + 1;\n var endIndex = secion.indexOf(this.currentPage);\n for (var page = startIndex; page < endIndex + 1; page++) {\n var pageGraphics = this.currentPage.graphics;\n var location_2 = new PointF(format.paginateBounds.x, format.paginateBounds.y);\n var height = page == endIndex ? (row.NestedGridLayoutResult.bounds.height - param.bounds.y) :\n (this.currentBounds.height - location_2.y);\n if (height <= pageGraphics.clientSize.height)\n height += param.bounds.y;\n // if (row.grid.isChildGrid && row.grid.ParentCell != null)\n // location.x += param.bounds.x;\n location_2.y = format == null ? 0.5 : format.paginateBounds.y;\n // Draw border for last paginated row containing nested grid.\n for (var c = 0; c < row.cells.count; c++) {\n var cell = row.cells.getCell(c);\n var cellWidth = 0;\n var totalwidth = 0;\n if (cell.value instanceof PdfGrid) {\n for (var i_6 = 0; i_6 < cell.value.columns.count; i_6++) {\n totalwidth += cell.value.columns.getColumn(i_6).columnWidth;\n }\n }\n else {\n totalwidth = cell.width;\n }\n // if (cell.columnSpan > 1)\n // {\n // for (; c < cell.columnSpan; c++)\n // cellWidth += row.grid.columns.getColumn(c).width;\n // }\n // else\n cellWidth = Math.max(totalwidth, row.grid.columns.getColumn(c).width);\n cell.drawCellBorders(pageGraphics, new RectangleF(location_2, new SizeF(cellWidth, height)));\n location_2.x += cellWidth;\n c += (cell.columnSpan - 1);\n }\n }\n // So, nested grid drawing is completed for the current row. Update page.\n // Otherwise, the next nested grid of the parent will draw borders from start.\n startPage = this.currentPage;\n }\n }\n }\n var isPdfGrid = false;\n var maximumCellBoundsWidth = 0;\n if (cellBounds.length > 0) {\n maximumCellBoundsWidth = cellBounds[0];\n }\n var largeNavigatePage = [[1, 2]];\n for (var c = 0; c < this.Grid.rows.count; c++) {\n if (this.cellEndIndex != -1 && this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value instanceof PdfGrid) {\n var grid = this.Grid.rows.getRow(c).cells.getCell(this.cellEndIndex).value;\n this.rowLayoutBoundsWidth = grid.rowLayoutBoundsWidth;\n isPdfGrid = true;\n // if (largeNavigatePage[0][0] < grid.listOfNavigatePages.length)\n // {\n // largeNavigatePage[0][0] = grid.listOfNavigatePages.length;\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n // else if ((largeNavigatePage[0][0] == grid.listOfNavigatePages.length) && (largeNavigatePage[0][1] < cellBounds[c]))\n // {\n // largeNavigatePage[0][1] = cellBounds[c];\n // }\n }\n }\n if (!isPdfGrid && cellBounds.length > 0) {\n for (var c = 0; c < i - 1; c++) {\n if (maximumCellBoundsWidth < cellBounds[c]) {\n maximumCellBoundsWidth = cellBounds[c];\n }\n }\n this.rowLayoutBoundsWidth = maximumCellBoundsWidth;\n }\n else {\n this.rowLayoutBoundsWidth = largeNavigatePage[0][1];\n }\n if (this.columnRanges.indexOf(range) < this.columnRanges.length - 1\n && startPage != null && format.layout != PdfLayoutType.OnePage) {\n isParentCell = this.Grid.isChildGrid;\n if (largeNavigatePage[0][0] != 0) {\n var section = this.currentPage.section;\n var pageIndex = section.indexOf(this.currentPage);\n this.currentGraphics = this.currentPage.graphics;\n this.currentBounds = new RectangleF(new PointF(0, 0), this.currentPage.getClientSize());\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n }\n else {\n this.currentPage = this.getNextPageformat(format);\n }\n // let locationGrid : PointF= new PointF(PdfBorders.default.right.width / 2, PdfBorders.default.top.width / 2);\n // if (format.paginateBounds == new RectangleF(0,0,0,0) && this.startLocation == locationGrid)\n // {\n // this.currentBounds.x += this.startLocation.x;\n // this.currentBounds.y += this.startLocation.y;\n // }\n }\n if (this.columnRanges.length - 1 !== index && this.columnRanges.length > 1 && format.layout !== PdfLayoutType.OnePage) {\n this.currentPage = this.getNextPageformat(format);\n if ((format.paginateBounds.x === format.paginateBounds.y) && (format.paginateBounds.y === format.paginateBounds.height)\n && (format.paginateBounds.height === format.paginateBounds.width) && (format.paginateBounds.width === 0)) {\n this.currentBounds.x += this.startLocation.x;\n this.currentBounds.y += this.startLocation.y;\n //this.currentBounds.height = this.pageBounds.height;\n }\n }\n }\n result = this.getLayoutResult();\n if (this.Grid.style.allowHorizontalOverflow && this.Grid.style.horizontalOverflowType == PdfHorizontalOverflowType.NextPage) {\n this.reArrangePages(layoutedPages);\n }\n this.raisePageLayouted(result);\n return result;\n };\n PdfGridLayouter.prototype.checkIsFisished = function (row) {\n var result = true;\n for (var i = 0; i < row.cells.count; i++) {\n if (!row.cells.getCell(i).FinishedDrawingCell) {\n result = false;\n }\n }\n return result;\n };\n /* tslint:enable */\n /**\n * Gets the `next page`.\n * @private\n */\n PdfGridLayouter.prototype.getNextPageformat = function (format) {\n var section = this.currentPage.section;\n var nextPage = null;\n var index = section.indexOf(this.currentPage);\n this.flag = false;\n if (index === section.count - 1) {\n nextPage = section.add();\n }\n else {\n nextPage = section.getPages()[index + 1];\n }\n this.currentGraphics = nextPage.graphics;\n var pageindex = this.currentGraphics.page.section.indexOf(this.currentGraphics.page);\n if (!(this.listOfNavigatePages.indexOf(pageindex) !== -1)) {\n this.listOfNavigatePages.push(pageindex);\n }\n this.currentBounds = new RectangleF(new PointF(0, 0), nextPage.getClientSize());\n if ((typeof format !== 'undefined') && format != null && format.usePaginateBounds && (typeof format.paginateBounds !== 'undefined') && format.paginateBounds != null && (format.paginateBounds.x !== format.paginateBounds.y) && (format.paginateBounds.y !== format.paginateBounds.height)\n && (format.paginateBounds.height !== format.paginateBounds.width) && (format.paginateBounds.width !== 0)) {\n this.currentBounds.x = format.paginateBounds.x;\n this.currentBounds.y = format.paginateBounds.y;\n this.currentBounds.height = format.paginateBounds.height;\n }\n return nextPage;\n };\n PdfGridLayouter.prototype.CheckIfDefaultFormat = function (format) {\n var defaultFormat = new PdfStringFormat();\n return (format.alignment === defaultFormat.alignment && format.characterSpacing === defaultFormat.characterSpacing &&\n format.clipPath === defaultFormat.clipPath && format.firstLineIndent === defaultFormat.firstLineIndent &&\n format.horizontalScalingFactor === defaultFormat.horizontalScalingFactor &&\n format.lineAlignment === defaultFormat.lineAlignment\n && format.lineLimit === defaultFormat.lineLimit && format.lineSpacing === defaultFormat.lineSpacing &&\n format.measureTrailingSpaces === defaultFormat.measureTrailingSpaces && format.noClip === defaultFormat.noClip &&\n format.paragraphIndent === defaultFormat.paragraphIndent && format.rightToLeft === defaultFormat.rightToLeft &&\n format.subSuperScript === defaultFormat.subSuperScript && format.wordSpacing === defaultFormat.wordSpacing &&\n format.wordWrap === defaultFormat.wordWrap);\n };\n /**\n * `Raises BeforeCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.RaiseBeforeCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, style) {\n var args = null;\n if (this.Grid.raiseBeginCellDraw) {\n args = new PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style);\n this.Grid.onBeginCellDraw(args);\n style = args.style;\n }\n return style;\n };\n /**\n * `Raises AfterCellDraw event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseAfterCellDraw = function (graphics, rowIndex, cellIndex, bounds, value, cellstyle) {\n var args = null;\n if (this.Grid.raiseEndCellDraw) {\n args = new PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, cellstyle);\n this.Grid.onEndCellDraw(args);\n }\n };\n PdfGridLayouter.prototype.reArrangePages = function (layoutedPages) {\n var document = this.currentPage.document;\n var pages = [];\n var keys = layoutedPages.keys();\n var values = layoutedPages.values();\n for (var i = 0; i < keys.length; i++) {\n var page = keys[i];\n page.section = null;\n pages.push(page);\n document.pages.remove(page);\n }\n /* tslint:disable */\n for (var i = 0; i < layoutedPages.size(); i++) {\n for (var j = i, count_1 = (layoutedPages.size() / this.columnRanges.length); j < layoutedPages.size(); j += count_1) {\n var page = pages[j];\n if (typeof page !== 'undefined' && document.pages.indexOf(page) === -1) {\n document.pages.add(page);\n }\n }\n }\n /* tslint:enable */\n };\n /**\n * Gets the `layout result`.\n * @private\n */\n PdfGridLayouter.prototype.getLayoutResult = function () {\n if (this.Grid.isChildGrid && this.Grid.allowRowBreakAcrossPages) {\n for (var i = 0; i < this.Grid.rows.count; i++) {\n var row = this.Grid.rows.getRow(i);\n if (row.rowBreakHeight > 0 && row.repeatFlag) {\n this.startLocation.y = this.currentPage.origin.y;\n }\n }\n }\n var bounds;\n if (!this.isChanged) {\n bounds = new RectangleF(this.startLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n this.startLocation.y));\n }\n // else {\n // bounds = new RectangleF(this.currentLocation, new SizeF(this.currentBounds.width, this.currentBounds.y -\n // this.currentLocation.y));\n // }\n /* tslint:enable */\n return new PdfGridLayoutResult(this.currentPage, bounds);\n };\n /**\n * `Recalculate row height` for the split cell to be drawn.\n * @private\n */\n PdfGridLayouter.prototype.ReCalculateHeight = function (row, height) {\n var newHeight = 0.0;\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n if (!(row.cells.getCell(i).remainingString === null || row.cells.getCell(i).remainingString === '' ||\n typeof row.cells.getCell(i).remainingString === 'undefined')) {\n newHeight = Math.max(newHeight, row.cells.getCell(i).measureHeight());\n }\n }\n return Math.max(height, newHeight);\n };\n /**\n * `Raises BeforePageLayout event`.\n * @private\n */\n PdfGridLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds, currentRow) {\n var cancel = false;\n if (this.Grid.raiseBeginPageLayout) {\n var args = new PdfGridBeginPageLayoutEventArgs(currentBounds, currentPage, currentRow);\n this.Grid.onBeginPageLayout(args);\n // if (currentBounds !== args.Bounds) {\n // this.isChanged = true;\n // this.currentLocation = new PointF(args.Bounds.x, args.Bounds.y);\n // this.measureColumnsWidth(new RectangleF(new PointF(args.Bounds.x, args.Bounds.y) ,\n // new SizeF(args.Bounds.width + args.Bounds.x ,\n // args.Bounds.height)));\n // }\n cancel = (typeof args.cancel === 'undefined' ? false : args.cancel);\n currentBounds = args.bounds;\n currentRow = args.startRowIndex;\n }\n return { returnValue: cancel, currentBounds: currentBounds, currentRowIndex: currentRow };\n };\n /**\n * `Raises PageLayout event` if needed.\n * @private\n */\n PdfGridLayouter.prototype.raisePageLayouted = function (result) {\n var args = new PdfGridEndPageLayoutEventArgs(result);\n if (this.Grid.raiseEndPageLayout) {\n this.Grid.onEndPageLayout(args);\n }\n return args;\n };\n PdfGridLayouter.prototype.drawRow = function (row, result, height) {\n if (typeof result === 'undefined') {\n //.. Check if required space available.\n //.....If the row conains spans which falls through more than one page, then draw the row to next page. \n var result_1 = new RowLayoutResult();\n var rowHeightWithSpan = 0;\n var size = new SizeF(0, 0);\n var isHeader = false;\n if (row.rowSpanExists) {\n var maxSpan = 0;\n var currRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n if (currRowIndex === -1) {\n currRowIndex = this.Grid.headers.indexOf(row);\n if (currRowIndex !== -1) {\n isHeader = true;\n }\n }\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n maxSpan = Math.max(maxSpan, cell.rowSpan);\n }\n for (var i = currRowIndex; i < currRowIndex + maxSpan; i++) {\n rowHeightWithSpan += (isHeader ? this.Grid.headers.getHeader(i).height : this.Grid.rows.getRow(i).height);\n }\n // let rowMaxHeight : number = rowHeightWithSpan;\n // for (let i : number = 0; i < row.cells.count; i++ ) {\n // rowMaxHeight = rowMaxHeight > row.cells.getCell(i).height ? rowMaxHeight : row.cells.getCell(i).height;\n // }\n // let flag : boolean = true;\n // let nextRow : PdfGridRow = this.Grid.headers.getHeader(this.Grid.headers.indexOf(row) + 1);\n // for (let i : number = 0; i < nextRow.cells.count; i++ ) {\n // if (nextRow.cells.getCell(i).value !== '' && nextRow.cells.getCell(i).value !== undefined) {\n // flag = false;\n // break;\n // }\n // }\n // if ((rowMaxHeight > rowHeightWithSpan) && flag) {\n // row.height += (rowMaxHeight - rowHeightWithSpan);\n // } \n }\n var calculatedHeight = row.rowBreakHeight > 0.0 ? row.rowBreakHeight : row.height;\n if (typeof this.Grid.isChildGrid !== 'undefined' && this.Grid.isChildGrid && typeof this.Grid.ParentCell !== 'undefined' && this.Grid.ParentCell != null) {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n // if (calculatedHeight + this.Grid.ParentCell.row.grid.style.cellPadding.bottom +\n // this.Grid.ParentCell.row.grid.style.cellPadding.top > this.currentPageBounds.height) {\n // if (this.Grid.allowRowBreakAcrossPages) {\n // result.isFinish = true;\n // if ( this.Grid.isChildGrid && row.rowBreakHeight > 0 ) {\n // if (this.Grid.ParentCell.row.grid.style.cellPadding !== null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n // result.bounds = this.currentBounds ;\n // this.drawRowWithBreak(result, row, calculatedHeight);\n // } else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page. \n // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // calculatedHeight = this.currentBounds.height - this.currentBounds.y -\n // this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n // }\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n // } else\n if (this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom + calculatedHeight >\n this.currentPageBounds.height || this.currentBounds.y + this.Grid.ParentCell.row.grid.style.cellPadding.bottom\n + calculatedHeight > this.currentBounds.height || this.currentBounds.y +\n this.Grid.ParentCell.row.grid.style.cellPadding.bottom + rowHeightWithSpan > this.currentPageBounds.height) {\n //If a row is repeated and still cannot fit in page, proceed draw.\n if (typeof this.Grid.ParentCell.row.grid.LayoutFormat !== 'undefined' && this.Grid.ParentCell.row.grid.LayoutFormat.break === PdfLayoutBreakType.FitPage) {\n PdfGridLayouter.repeatRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n this.Grid.splitChildRowIndex = this.Grid.rows.rowCollection.indexOf(row);\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n // if (this.Grid.isChildGrid && row.rowBreakHeightValue > 0) {\n // // if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n // // this.currentBounds.y += this.Grid.ParentCell.row.grid.style.cellPadding.top;\n // // }\n // this.currentBounds.x = this.startLocation.x;\n // }\n result_1.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n }\n // else {\n // result.isFinish = false;\n // row.repeatFlag = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n // else {\n // result.isFinish = false;\n // }\n }\n else {\n result_1.isFinish = true;\n if (row.grid.ParentCell.row.rowBreakHeightValue > 0) {\n row.repeatFlag = true;\n }\n else {\n row.repeatFlag = false;\n calculatedHeight = row.height;\n }\n if (this.Grid.isChildGrid && row.rowBreakHeight > 0) {\n if (this.Grid.ParentCell.row.grid.style.cellPadding != null) {\n calculatedHeight += this.Grid.ParentCell.row.grid.style.cellPadding.bottom;\n }\n }\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n //Split row only if row height exceeds page height and AllowRowBreakAcrossPages is true.\n if (calculatedHeight > this.currentPageBounds.height) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n //result.bounds = this.currentBounds;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.isrowFinish = true;\n row.repeatFlag = true;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n // else {\n // //If AllowRowBreakAcrossPages is not true, draw the row till it fits the page.\n // result.isFinish = false;\n // this.drawRow( row, result, calculatedHeight);\n // }\n }\n else if (this.currentBounds.y + calculatedHeight > this.currentPageBounds.height ||\n this.currentBounds.y + calculatedHeight > (this.currentBounds.height + this.startLocation.y) ||\n this.currentBounds.y + rowHeightWithSpan > this.currentPageBounds.height) {\n // If a row is repeated and still cannot fit in page, proceed draw.\n var isFit = false;\n if ((this.Grid.allowRowBreakAcrossPages && !this.Grid.repeatHeader && !row.isRowHeightSet && !row.rowMergeComplete)) {\n if (this.Grid.LayoutFormat !== null && this.Grid.LayoutFormat.paginateBounds.height > 0) {\n isFit = this.isFitToCell((this.currentBounds.height + this.startLocation.y) - this.currentBounds.y, this.Grid, row);\n }\n else\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (isFit) {\n this.isPaginate = true;\n }\n }\n else if (this.Grid.allowRowBreakAcrossPages && this.Grid.LayoutFormat != null && this.Grid.LayoutFormat.layout == PdfLayoutType.Paginate && this.Grid.LayoutFormat.break != PdfLayoutBreakType.FitElement && row.isRowHeightSet && this.currentBounds.y + height > this.currentPageBounds.height) {\n isFit = this.isFitToCell(this.currentPageBounds.height - this.currentBounds.y, this.Grid, row);\n if (!isFit)\n isFit = !(this.slr !== null && this.slr.actualSize.height == 0 && this.slr.remainder != null && this.slr.remainder.length > 0 && this.remainderText == this.slr.remainder);\n if (isFit && this.slr != null && this.slr.lineCount > 1) {\n //It may text cutoff issue\n isFit = false;\n }\n this.remainderText = null;\n }\n if (PdfGridLayouter.repeatRowIndex > -1 && PdfGridLayouter.repeatRowIndex === row.rowIndex || isFit) {\n if (this.Grid.allowRowBreakAcrossPages) {\n result_1.isFinish = true;\n this.drawRowWithBreak(result_1, row, calculatedHeight);\n row.repeatFlag = true;\n row.repeatRowNumber = PdfGridLayouter.repeatRowIndex;\n if (row.grid.splitChildRowIndex !== -1) {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = false;\n this.drawRow(row, result_1, calculatedHeight);\n }\n }\n else {\n result_1.isFinish = false;\n }\n }\n else {\n result_1.isFinish = true;\n this.drawRow(row, result_1, calculatedHeight);\n row.repeatFlag = false;\n }\n }\n return result_1;\n }\n else {\n var skipcell = false;\n var location_4 = new PointF(this.currentBounds.x, this.currentBounds.y);\n // if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x && row.width <\n // this.currentPage.getClientSize().width) {\n // location.x = this.startLocation.x;\n // }\n result.bounds = new RectangleF(location_4, new SizeF(0, 0));\n height = this.ReCalculateHeight(row, height);\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((i > this.cellEndIndex + 1) && (row.cells.getCell(i).columnSpan > 1));\n // let cancelSpans : boolean = false;\n if (!cancelSpans) {\n for (var j = 1; j < row.cells.getCell(i).columnSpan; j++) {\n row.cells.getCell(i + j).isCellMergeContinue = true;\n }\n }\n var size = new SizeF(this.Grid.columns.getColumn(i).width, height);\n // if (size.width > this.currentGraphics.clientSize.width) {\n // size.width = this.currentGraphics.clientSize.width;\n // }\n // if (this.Grid.isChildGrid && this.Grid.style.allowHorizontalOverflow) {\n // if (size.width >= this.currentGraphics.clientSize.width) {\n // size.width -= 2 * this.currentBounds.x;\n // }\n // }\n /* tslint:disable */\n if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n this.CheckIfDefaultFormat(row.cells.getCell(i).stringFormat)) {\n row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n }\n var cellstyle = row.cells.getCell(i).style;\n var tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n row.cells.getCell(i).style = this.RaiseBeforeCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, cellstyle);\n //row.cells.getCell(i).style = cellstyle;\n if (!skipcell) {\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n grid.parentCellIndex = i;\n }\n var stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location_4, size), cancelSpans);\n if (row.grid.style.allowHorizontalOverflow && (row.cells.getCell(i).columnSpan > this.cellEndIndex ||\n i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1) && this.cellEndIndex < row.cells.count - 1) {\n row.rowOverflowIndex = this.cellEndIndex;\n }\n if (row.grid.style.allowHorizontalOverflow && (row.rowOverflowIndex > 0 && (row.cells.getCell(i).columnSpan >\n this.cellEndIndex || i + row.cells.getCell(i).columnSpan > this.cellEndIndex + 1)) &&\n row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1 > 0) {\n row.cells.getCell(row.rowOverflowIndex + 1).value = stringResult !== null ? (stringResult.remainder !== undefined) ?\n stringResult.remainder : '' : '';\n row.cells.getCell(row.rowOverflowIndex + 1).stringFormat = row.cells.getCell(i).stringFormat;\n row.cells.getCell(row.rowOverflowIndex + 1).style = row.cells.getCell(i).style;\n row.cells.getCell(row.rowOverflowIndex + 1).columnSpan = row.cells.getCell(i).columnSpan - this.cellEndIndex + i - 1;\n }\n }\n /* tslint:enable */\n tempValue = ((typeof row.cells.getCell(i).value === 'string' &&\n row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '');\n if (!cancelSpans) {\n this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location_4, size), tempValue, row.cells.getCell(i).style);\n }\n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n if (this.Grid.columns.getColumn(i).width >= this.currentGraphics.clientSize.width) {\n location_4.x = grid.rowLayoutBoundsWidth;\n location_4.x += grid.style.cellSpacing;\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location_4.x += this.Grid.columns.getColumn(i).width;\n }\n }\n if (!row.rowMergeComplete || row.isRowHeightSet) {\n this.currentBounds.y += height;\n }\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location_4.x, location_4.y));\n }\n };\n PdfGridLayouter.prototype.isFitToCell = function (currentHeight, grid, gridRow) {\n var isFit = false;\n var layouter = new PdfStringLayouter();\n for (var i = 0; i < gridRow.cells.count; i++) {\n var cell = gridRow.cells.getCell(i);\n if (typeof cell.value !== 'undefined' && cell.value !== null && typeof cell.value === 'string') {\n var font = null;\n if (typeof cell.style.font !== 'undefined' && cell.style.font != null) {\n font = cell.style.font;\n }\n else if (typeof cell.row.style.font !== 'undefined' && cell.row.style.font != null) {\n font = cell.row.style.font;\n }\n else if (typeof cell.row.grid.style.font !== 'undefined' && cell.row.grid.style.font != null) {\n font = cell.row.grid.style.font;\n }\n else {\n font = PdfDocument.defaultFont;\n }\n this.remainderText = gridRow.cells.getCell(i).value;\n var width = gridRow.cells.getCell(i).width;\n if (grid.columns.getColumn(i).isCustomWidth && gridRow.cells.getCell(i).width > grid.columns.getColumn(i).width) {\n width = grid.columns.getColumn(i).width;\n }\n this.slr = layouter.layout(gridRow.cells.getCell(i).value, font, gridRow.cells.getCell(i).stringFormat, new SizeF(width, currentHeight), false, this.currentPageBounds);\n var height = this.slr.actualSize.height;\n if (height == 0) {\n isFit = false;\n break;\n }\n if (gridRow.cells.getCell(i).style != null && gridRow.cells.getCell(i).style.borders != null && gridRow.cells.getCell(i).style.borders.top != null && gridRow.cells.getCell(i).style.borders.bottom != null)\n height += (gridRow.cells.getCell(i).style.borders.top.width + gridRow.cells.getCell(i).style.borders.bottom.width) * 2;\n if (this.slr.lineCount > 1 && gridRow.cells.getCell(i).stringFormat != null && gridRow.cells.getCell(i).stringFormat.lineSpacing != 0)\n height += (this.slr.lineCount - 1) * (gridRow.cells.getCell(i).style.stringFormat.lineSpacing);\n if (gridRow.cells.getCell(i).style.cellPadding == null) {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n else {\n height += (grid.style.cellPadding.top + grid.style.cellPadding.bottom);\n }\n height += grid.style.cellSpacing;\n if (currentHeight > height || (typeof this.slr.remainder !== 'undefined' && this.slr.remainder !== null)) {\n isFit = true;\n break;\n }\n }\n }\n return isFit;\n };\n PdfGridLayouter.prototype.drawRowWithBreak = function (result, row, calculateHeight) {\n var location = new PointF(this.currentBounds.x, this.currentBounds.y);\n if (row.grid.isChildGrid && row.grid.allowRowBreakAcrossPages && this.startLocation.x !== this.currentBounds.x) {\n location.x = this.startLocation.x;\n }\n result.bounds = new RectangleF(location, new SizeF(0, 0));\n this.gridHeight = row.rowBreakHeight > 0 ? this.currentPageBounds.height : 0;\n // Calculate the remaining height.\n if (row.grid.style.cellPadding.top + this.currentBounds.y + row.grid.style.cellPadding.bottom < this.currentPageBounds.height) {\n row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n }\n // else {\n // row.rowBreakHeight = calculateHeight;\n // result.isFinish = false;\n // return;\n // }\n // No need to explicit break if the row height is equal to grid height.\n for (var i = 0; i < row.cells.count; i++) {\n var cell = row.cells.getCell(i);\n var cellHeight = cell.measureHeight();\n if (cellHeight === calculateHeight && cell.value instanceof PdfGrid) {\n row.rowBreakHeight = 0;\n }\n // else if (cellHeight === calculateHeight && (cell.value as PdfGrid) === null) {\n // row.rowBreakHeight = this.currentBounds.y + calculateHeight - this.currentPageBounds.height;\n // }\n }\n for (var i = this.cellStartIndex; i <= this.cellEndIndex; i++) {\n var cancelSpans = ((row.cells.getCell(i).columnSpan + i > this.cellEndIndex + 1) &&\n (row.cells.getCell(i).columnSpan > 1));\n // if (!cancelSpans) {\n // for (let k : number = 1; k < row.cells.getCell(i).columnSpan; k++) {\n // row.cells.getCell(i + k).isCellMergeContinue = true;\n // }\n //}\n var size = new SizeF(this.Grid.columns.getColumn(i).width, this.gridHeight > 0.0 ? this.gridHeight :\n this.currentPageBounds.height);\n // if (size.width === 0) {\n // size = new SizeF(row.cells.getCell(i).width, size.height);\n // }\n // if (!this.CheckIfDefaultFormat(this.Grid.columns.getColumn(i).format) &&\n // this.CheckIfDefaultFormat((row.cells.getCell(i).stringFormat))) {\n // row.cells.getCell(i).stringFormat = this.Grid.columns.getColumn(i).format;\n // }\n var cellstyle1 = row.cells.getCell(i).style;\n row.cells.getCell(i).style = cellstyle1;\n var skipcell = false;\n var stringResult = null;\n if (!skipcell) {\n stringResult = row.cells.getCell(i).draw(this.currentGraphics, new RectangleF(location, size), cancelSpans);\n }\n //If still row is to be drawn, set cell finished drawing cell as false and update the text to be drawn.\n if (row.rowBreakHeight > 0.0) {\n if (stringResult != null && typeof stringResult.remainder !== 'undefined') {\n row.cells.getCell(i).FinishedDrawingCell = false;\n row.cells.getCell(i).remainingString = stringResult.remainder == null ? ' ' : stringResult.remainder;\n row.rowBreakHeight = calculateHeight - stringResult.actualSize.height;\n }\n }\n result.isFinish = (!result.isFinish) ? result.isFinish : row.cells.getCell(i).FinishedDrawingCell;\n // let tempValue : string = ((typeof row.cells.getCell(i).value === 'string' &&\n //row.cells.getCell(i).value !== null) ? row.cells.getCell(i).value : '') as string;\n // if (!cancelSpans) {\n // // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i,\n // // new RectangleF(location, size), tempValue, row.cells.getCell(i).style); \n // this.raiseAfterCellDraw(this.currentGraphics, this.currentRowIndex, i, new RectangleF(location, size),\n // (row.cells.getCell(i).value as string) ? row.cells.getCell(i).value.toString() : ' ',\n // row.cells.getCell(i).style);\n // } \n if (row.cells.getCell(i).value instanceof PdfGrid) {\n var grid = row.cells.getCell(i).value;\n this.rowBreakPageHeightCellIndex = i;\n // row.cells.getCell(i).pageCount = grid.listOfNavigatePages.length;\n // for (let j : number = 0;j= this.currentGraphics.clientSize.width) {\n location.x = this.rowLayoutBoundsWidth;\n location.x += grid.style.cellSpacing;\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n else {\n location.x += this.Grid.columns.getColumn(i).width;\n }\n }\n this.currentBounds.y += this.gridHeight > 0.0 ? this.gridHeight : calculateHeight;\n result.bounds = new RectangleF(new PointF(result.bounds.x, result.bounds.y), new SizeF(location.x, location.y));\n };\n /**\n * @hidden\n * @private\n */\n PdfGridLayouter.repeatRowIndex = -1;\n return PdfGridLayouter;\n}(ElementLayouter));\n// recalculateBounds : boolean, clientSize : SizeF\n//Implementation\n/**\n * `Initializes` internal data.\n * @private\n */\n//Internal declaration\nvar PdfGridLayoutResult = /** @__PURE__ @class */ (function (_super) {\n __extends$36(PdfGridLayoutResult, _super);\n /**\n * Constructor\n * @private\n */\n function PdfGridLayoutResult(page, bounds) {\n return _super.call(this, page, bounds) || this;\n }\n return PdfGridLayoutResult;\n}(PdfLayoutResult));\n/**\n * `PdfGridLayoutFormat` class represents a flexible grid that consists of columns and rows.\n */\nvar PdfGridLayoutFormat = /** @__PURE__ @class */ (function (_super) {\n __extends$36(PdfGridLayoutFormat, _super);\n /**\n * Initializes a new instance of the `PdfGridLayoutFormat` class.\n * @private\n */\n function PdfGridLayoutFormat(baseFormat) {\n return _super.call(this, baseFormat) || this;\n }\n return PdfGridLayoutFormat;\n}(PdfLayoutFormat));\nvar GridCellEventArgs = /** @__PURE__ @class */ (function () {\n // Constructors\n /**\n * Initialize a new instance for `GridCellEventArgs` class.\n * @private\n */\n function GridCellEventArgs(graphics, rowIndex, cellIndex, bounds, value) {\n this.gridRowIndex = rowIndex;\n this.gridCellIndex = cellIndex;\n this.internalValue = value;\n this.gridBounds = bounds;\n this.pdfGraphics = graphics;\n }\n Object.defineProperty(GridCellEventArgs.prototype, \"rowIndex\", {\n // Properties\n /**\n * Gets the value of current `row index`.\n * @private\n */\n get: function () {\n return this.gridRowIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"cellIndex\", {\n /**\n * Gets the value of current `cell index`.\n * @private\n */\n get: function () {\n return this.gridCellIndex;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"value\", {\n /**\n * Gets the actual `value` of current cell.\n * @private\n */\n get: function () {\n return this.internalValue;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"bounds\", {\n /**\n * Gets the `bounds` of current cell.\n * @private\n */\n get: function () {\n return this.gridBounds;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(GridCellEventArgs.prototype, \"graphics\", {\n /**\n * Gets the instance of `current graphics`.\n * @private\n */\n get: function () {\n return this.pdfGraphics;\n },\n enumerable: true,\n configurable: true\n });\n return GridCellEventArgs;\n}());\nvar PdfGridBeginCellDrawEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$36(PdfGridBeginCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `StartCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.style = style;\n return _this;\n }\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"skip\", {\n // Properties\n /**\n * Gets or sets a value indicating whether the value of this cell should be `skipped`.\n * @private\n */\n get: function () {\n return this.bSkip;\n },\n set: function (value) {\n this.bSkip = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfGridBeginCellDrawEventArgs.prototype, \"style\", {\n /**\n * Gets or sets a `style` value of the cell.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n set: function (value) {\n this.cellStyle = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginCellDrawEventArgs;\n}(GridCellEventArgs));\nvar PdfGridEndCellDrawEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$36(PdfGridEndCellDrawEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `PdfGridEndCellLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndCellDrawEventArgs(graphics, rowIndex, cellIndex, bounds, value, style) {\n var _this = _super.call(this, graphics, rowIndex, cellIndex, bounds, value) || this;\n _this.cellStyle = style;\n return _this;\n }\n Object.defineProperty(PdfGridEndCellDrawEventArgs.prototype, \"style\", {\n // Propertise\n /**\n * Get the `PdfGridCellStyle`.\n * @private\n */\n get: function () {\n return this.cellStyle;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridEndCellDrawEventArgs;\n}(GridCellEventArgs));\nvar PdfCancelEventArgs = /** @__PURE__ @class */ (function () {\n function PdfCancelEventArgs() {\n }\n Object.defineProperty(PdfCancelEventArgs.prototype, \"cancel\", {\n // Properties\n /**\n * Gets and Sets the value of `cancel`.\n * @private\n */\n get: function () {\n return this.isCancel;\n },\n set: function (value) {\n this.isCancel = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfCancelEventArgs;\n}());\nvar BeginPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$36(BeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `BeginPageLayoutEventArgs` class with the specified rectangle and page.\n * @private\n */\n function BeginPageLayoutEventArgs(bounds, page) {\n var _this = _super.call(this) || this;\n _this.bounds = bounds;\n _this.pdfPage = page;\n return _this;\n }\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"bounds\", {\n // Properties\n /**\n * Gets or sets value that indicates the lay outing `bounds` on the page.\n * @private\n */\n get: function () {\n return this.cellBounds;\n },\n set: function (value) {\n this.cellBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(BeginPageLayoutEventArgs.prototype, \"page\", {\n /**\n * Gets the `page` where the lay outing should start.\n * @private\n */\n get: function () {\n return this.pdfPage;\n },\n enumerable: true,\n configurable: true\n });\n return BeginPageLayoutEventArgs;\n}(PdfCancelEventArgs));\n/**\n * `EndPageLayoutEventArgs` class is alternate for end page layout events.\n */\nvar EndPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$36(EndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initializes a new instance of the `EndPageLayoutEventArgs` class. with the specified 'PdfLayoutResult'.\n * @private\n */\n function EndPageLayoutEventArgs(result) {\n var _this = _super.call(this) || this;\n _this.layoutResult = result;\n return _this;\n }\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"result\", {\n // Properties\n /**\n * Gets the lay outing `result` of the page.\n * @private\n */\n get: function () {\n return this.layoutResult;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(EndPageLayoutEventArgs.prototype, \"nextPage\", {\n /**\n * Gets or sets a value indicating the `next page` where the element should be layout.\n * @private\n */\n get: function () {\n return this.nextPdfPage;\n },\n set: function (value) {\n this.nextPdfPage = value;\n },\n enumerable: true,\n configurable: true\n });\n return EndPageLayoutEventArgs;\n}(PdfCancelEventArgs));\n/**\n * `PdfGridBeginPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridBeginPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$36(PdfGridBeginPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridBeginPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridBeginPageLayoutEventArgs(bounds, page, startRow) {\n var _this = _super.call(this, bounds, page) || this;\n _this.startRow = startRow;\n return _this;\n }\n Object.defineProperty(PdfGridBeginPageLayoutEventArgs.prototype, \"startRowIndex\", {\n // Properties\n /**\n * Gets the `start row index`.\n * @private\n */\n get: function () {\n return this.startRow;\n },\n enumerable: true,\n configurable: true\n });\n return PdfGridBeginPageLayoutEventArgs;\n}(BeginPageLayoutEventArgs));\n/**\n * `PdfGridEndPageLayoutEventArgs` class is alternate for begin page layout events.\n */\nvar PdfGridEndPageLayoutEventArgs = /** @__PURE__ @class */ (function (_super) {\n __extends$36(PdfGridEndPageLayoutEventArgs, _super);\n // Constructors\n /**\n * Initialize a new instance of `PdfGridEndPageLayoutEventArgs` class.\n * @private\n */\n function PdfGridEndPageLayoutEventArgs(result) {\n return _super.call(this, result) || this;\n }\n return PdfGridEndPageLayoutEventArgs;\n}(EndPageLayoutEventArgs));\nvar RowLayoutResult = /** @__PURE__ @class */ (function () {\n //Constructors\n /**\n * Initializes a new instance of the `RowLayoutResult` class.\n * @private\n */\n function RowLayoutResult() {\n this.layoutedBounds = new RectangleF(0, 0, 0, 0);\n }\n Object.defineProperty(RowLayoutResult.prototype, \"isFinish\", {\n /**\n * Gets or sets a value indicating whether this instance `is finish`.\n * @private\n */\n get: function () {\n return this.bIsFinished;\n },\n set: function (value) {\n this.bIsFinished = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(RowLayoutResult.prototype, \"bounds\", {\n /**\n * Gets or sets the `bounds`.\n * @private\n */\n get: function () {\n return this.layoutedBounds;\n },\n set: function (value) {\n this.layoutedBounds = value;\n },\n enumerable: true,\n configurable: true\n });\n return RowLayoutResult;\n}());\n\nvar __extends$35 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * ShapeLayouter.ts class for EJ2-PDF\n * @private\n */\n/**\n * ShapeLayouter class.\n * @private\n */\nvar ShapeLayouter = /** @__PURE__ @class */ (function (_super) {\n __extends$35(ShapeLayouter, _super);\n // Constructors\n /**\n * Initializes a new instance of the `ShapeLayouter` class.\n * @private\n */\n function ShapeLayouter(element) {\n var _this = _super.call(this, element) || this;\n // Fields\n /**\n * Initializes the object to store `older form elements` of previous page.\n * @default 0\n * @private\n */\n _this.olderPdfForm = 0;\n /**\n * The `bounds` of the shape element.\n * * @default new RectangleF()\n * @private\n */\n _this.shapeBounds = new RectangleF();\n /**\n * Total Page size of the web page.\n * * @default 0\n * @private\n */\n _this.totalPageSize = 0;\n return _this;\n }\n Object.defineProperty(ShapeLayouter.prototype, \"element\", {\n // Properties\n /**\n * Gets shape element.\n * @private\n */\n get: function () {\n return this.elements;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Layouts the element.\n * @private\n */\n ShapeLayouter.prototype.layoutInternal = function (param) {\n var currentPage = param.page;\n var currentBounds = param.bounds;\n var shapeLayoutBounds = this.element.getBounds();\n shapeLayoutBounds.x = 0;\n shapeLayoutBounds.y = 0;\n /* tslint:disable */\n var isEmpty = (this.shapeBounds.x === this.shapeBounds.y && this.shapeBounds.y === this.shapeBounds.width && this.shapeBounds.width === this.shapeBounds.height && this.shapeBounds.height === 0) ? true : false;\n /* tslint:enable */\n if ((this.isPdfGrid) && (!(isEmpty))) {\n shapeLayoutBounds = this.shapeBounds;\n }\n var result = null;\n var pageResult = new ShapeLayoutResult();\n pageResult.page = currentPage;\n /*tslint:disable:no-constant-condition */\n while (true) {\n // Raise event.\n var result1 = this.raiseBeforePageLayout(currentPage, currentBounds);\n currentBounds = result1.currentBounds;\n var endArgs = null;\n if (!result1.cancel) {\n pageResult = this.layoutOnPage(currentPage, currentBounds, shapeLayoutBounds, param);\n // Raise event.\n endArgs = this.raiseEndPageLayout(pageResult);\n result1.cancel = (endArgs === null) ? false : endArgs.cancel;\n }\n if (!pageResult.end && !result1.cancel) {\n currentBounds = this.getPaginateBounds(param);\n shapeLayoutBounds = this.getNextShapeBounds(shapeLayoutBounds, pageResult);\n currentPage = (endArgs === null || endArgs.nextPage === null) ?\n this.getNextPage(currentPage) : endArgs.nextPage;\n if (this.isPdfGrid) {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n else {\n result = this.getLayoutResult(pageResult);\n break;\n }\n }\n return result;\n };\n /**\n * Raises BeforePageLayout event.\n * @private\n */\n ShapeLayouter.prototype.raiseBeforePageLayout = function (currentPage, currentBounds) {\n var cancel = false;\n if (this.element.raiseBeginPageLayout) {\n var args = new BeginPageLayoutEventArgs(currentBounds, currentPage);\n this.element.onBeginPageLayout(args);\n cancel = args.cancel;\n currentBounds = args.bounds;\n }\n return { currentBounds: currentBounds, cancel: cancel };\n };\n /**\n * Raises PageLayout event if needed.\n * @private\n */\n ShapeLayouter.prototype.raiseEndPageLayout = function (pageResult) {\n var args = null;\n if (this.element.raiseEndPageLayout) {\n var res = this.getLayoutResult(pageResult);\n args = new EndPageLayoutEventArgs(res);\n this.element.onEndPageLayout(args);\n }\n return args;\n };\n /**\n * Creates layout result.\n * @private\n */\n ShapeLayouter.prototype.getLayoutResult = function (pageResult) {\n var result = new PdfLayoutResult(pageResult.page, pageResult.bounds);\n return result;\n };\n /**\n * Calculates the next active shape bounds.\n * @private\n */\n ShapeLayouter.prototype.getNextShapeBounds = function (shapeLayoutBounds, pageResult) {\n var layoutedBounds = pageResult.bounds;\n shapeLayoutBounds.y = (shapeLayoutBounds.y + layoutedBounds.height);\n shapeLayoutBounds.height = (shapeLayoutBounds.height - layoutedBounds.height);\n return shapeLayoutBounds;\n };\n /**\n * Layouts the element on the current page.\n * @private\n */\n ShapeLayouter.prototype.layoutOnPage = function (currentPage, curBounds, sBounds, param) {\n var result = new ShapeLayoutResult();\n curBounds = this.checkCorrectCurrentBounds(currentPage, curBounds, param);\n var fitToPage = this.fitsToBounds(curBounds, sBounds);\n var canDraw = !((param.format.break === PdfLayoutBreakType.FitElement)\n && (!fitToPage && (currentPage === param.page)));\n var shapeFinished = false;\n if (canDraw) {\n var drawRectangle = this.getDrawBounds(curBounds, sBounds);\n this.drawShape(currentPage.graphics, curBounds, drawRectangle);\n result.bounds = this.getPageResultBounds(curBounds, sBounds);\n shapeFinished = ((curBounds.height) >= (sBounds.height));\n }\n result.end = (shapeFinished || (param.format.layout === PdfLayoutType.OnePage));\n result.page = currentPage;\n return result;\n };\n /**\n * Returns Rectangle for element drawing on the page.\n * @private\n */\n ShapeLayouter.prototype.getDrawBounds = function (currentBounds, shapeLayoutBounds) {\n var result = currentBounds;\n result.y = (result.y - shapeLayoutBounds.y);\n result.height = (result.height + shapeLayoutBounds.y);\n return result;\n };\n /**\n * Draws the shape.\n * @private\n */\n ShapeLayouter.prototype.drawShape = function (g, currentBounds, drawRectangle) {\n var gState = g.save();\n try {\n g.setClip(currentBounds);\n this.element.drawGraphicsHelper(g, new PointF(drawRectangle.x, drawRectangle.y));\n }\n finally {\n g.restore(gState);\n }\n };\n /**\n * Corrects current bounds on the page.\n * @protected\n */\n ShapeLayouter.prototype.checkCorrectCurrentBounds = function (currentPage, curBounds, param) {\n var pageSize = currentPage.graphics.clientSize;\n curBounds.width = (curBounds.width > 0) ? curBounds.width : (pageSize.width - curBounds.x);\n curBounds.height = (curBounds.height > 0) ? curBounds.height : (pageSize.height - curBounds.y);\n if (this.isPdfGrid) {\n curBounds.height = (curBounds.height - this.bottomCellPadding);\n }\n return curBounds;\n };\n /**\n * Calculates bounds where the shape was layout on the page.\n * @private\n */\n ShapeLayouter.prototype.getPageResultBounds = function (currentBounds, shapeLayoutBounds) {\n var result = currentBounds;\n result.height = Math.min(result.height, shapeLayoutBounds.height);\n return result;\n };\n /**\n * Checks whether shape rectangle fits to the lay outing bounds.\n * @private\n */\n ShapeLayouter.prototype.fitsToBounds = function (currentBounds, shapeLayoutBounds) {\n var fits = (shapeLayoutBounds.height <= currentBounds.height);\n return fits;\n };\n /**\n * Initializes the offset `index`.\n * * @default 0\n * @private\n */\n ShapeLayouter.index = 0;\n /**\n * Initializes the `difference in page height`.\n * * @default 0\n * @private\n */\n ShapeLayouter.splitDiff = 0;\n /**\n * Determines the `end of Vertical offset` values.\n * * @default false\n * @private\n */\n ShapeLayouter.last = false;\n /**\n * Determines the document link annotation `border width`.\n * * @default 0\n * @private\n */\n ShapeLayouter.borderWidth = 0;\n return ShapeLayouter;\n}(ElementLayouter));\n/**\n * Contains lay outing result settings.\n * @private\n */\nvar ShapeLayoutResult = /** @__PURE__ @class */ (function () {\n function ShapeLayoutResult() {\n }\n return ShapeLayoutResult;\n}());\n\nvar __extends$34 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Base class for the main shapes.\n * @private\n */\nvar PdfShapeElement = /** @__PURE__ @class */ (function (_super) {\n __extends$34(PdfShapeElement, _super);\n function PdfShapeElement() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // methods\n /**\n * Gets the bounds.\n * @private\n */\n PdfShapeElement.prototype.getBounds = function () {\n var rect = this.getBoundsInternal();\n return rect;\n };\n /**\n * `drawGraphicsHelper` the graphics.\n * @public\n */\n PdfShapeElement.prototype.drawGraphicsHelper = function (graphics, location) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n this.drawShapeHelper(graphics, location.x, location.y);\n };\n /**\n * `drawShapeHelper` the graphics.\n * @private\n */\n PdfShapeElement.prototype.drawShapeHelper = function (graphics, x, y) {\n var bNeedSave = (x !== 0.5 || y !== 0.5);\n var gState = null;\n // Translate co-ordinates.\n if (bNeedSave) {\n // Save state.\n gState = graphics.save();\n graphics.translateTransform(x, y);\n }\n this.drawInternal(graphics);\n if (bNeedSave) {\n // Restore state.\n graphics.restore(gState);\n }\n };\n /**\n * Layouts the element.\n * @private\n */\n PdfShapeElement.prototype.layout = function (param) {\n var layouter = new ShapeLayouter(this);\n var result = layouter.layout(param);\n return result;\n };\n return PdfShapeElement;\n}(PdfLayoutElement));\n\nvar __extends$33 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfDrawElement.ts class for EJ2-PDF\n */\n/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfDrawElement = /** @__PURE__ @class */ (function (_super) {\n __extends$33(PdfDrawElement, _super);\n /**\n * Initializes a new instance of the `PdfDrawElement` class.\n * @protected\n */\n function PdfDrawElement(pen) {\n var _this = _super.call(this) || this;\n if (typeof pen !== 'undefined') {\n _this.mpen = pen;\n }\n return _this;\n }\n Object.defineProperty(PdfDrawElement.prototype, \"pen\", {\n // Properties\n /**\n * Gets or sets a pen that will be used to draw the element.\n * @public\n */\n get: function () {\n return this.mpen;\n },\n set: function (value) {\n this.mpen = value;\n },\n enumerable: true,\n configurable: true\n });\n return PdfDrawElement;\n}(PdfShapeElement));\n\nvar __extends$32 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfFillElement.ts class for EJ2-PDF\n */\n/**\n * Represents a base class for all page graphics elements.\n */\nvar PdfFillElement = /** @__PURE__ @class */ (function (_super) {\n __extends$32(PdfFillElement, _super);\n /**\n * Initializes a new instance of the `PdfFillElement` class.\n * @protected\n */\n function PdfFillElement(arg1, arg2) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Internal variable to store pen.\n * @private\n */\n _this.mbrush = null;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1) || this;\n }\n else {\n _this.mbrush = arg2;\n }\n return _this;\n }\n Object.defineProperty(PdfFillElement.prototype, \"brush\", {\n // Properties\n /**\n * Gets or sets a brush of the element.\n * @public\n */\n get: function () {\n return this.mbrush;\n },\n set: function (value) {\n this.mbrush = value;\n },\n enumerable: true,\n configurable: true\n });\n // Implementation\n /**\n * Gets the pen. If both pen and brush are not explicitly defined, default pen will be used.\n * @protected\n */\n PdfFillElement.prototype.obtainPen = function () {\n return ((this.mbrush == null) && (this.pen == null)) ? new PdfPen(new PdfColor(0, 0, 0)) : this.pen;\n };\n return PdfFillElement;\n}(PdfDrawElement));\n\nvar __extends$31 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Path.ts class for EJ2-PDF\n */\n/**\n * `PdfPath` class Implements graphics path, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfPath = /** @__PURE__ @class */ (function (_super) {\n __extends$31(PdfPath, _super);\n /**\n * Initializes a new instance of the `PdfPath` class.\n * @public\n */\n /* tslint:disable-next-line:max-line-length */\n function PdfPath(arg1, arg2, arg3, arg4) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * Local variable to store the points.\n * @private\n */\n _this.mpoints = null;\n /**\n * Local variable to store the path Types.\n * @private\n */\n _this.mpathTypes = null;\n /**\n * Local variable to store the Start Figure.\n * @private\n */\n _this.mStartFigure = true;\n /**\n * Local variable to store the fill Mode.\n * @private\n */\n _this.mfillMode = PdfFillMode.Alternate;\n /**\n * Local variable to store the Beziers.\n * @private\n */\n _this.isBeziers3 = false;\n /**\n * Local variable to store the xps.\n * @private\n */\n _this.isXps = false;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1) || this;\n if (arg2 instanceof PdfBrush) {\n _this = _super.call(this, arg1, arg2) || this;\n _this.fillMode = arg3;\n }\n else if (arg2 !== null && typeof arg2 !== 'undefined' && arg3 !== null && typeof arg3 !== 'undefined') {\n _this.addPath(arg2, arg3);\n }\n }\n else if (arg1 instanceof PdfBrush) {\n _this = _super.call(this, arg1) || this;\n if (arg2 !== null && typeof arg2 !== 'undefined') {\n _this.fillMode = arg2;\n }\n if (arg3 !== null && typeof arg3 !== 'undefined' && arg4 !== null && typeof arg4 !== 'undefined') {\n _this.addPath(arg3, arg4);\n }\n }\n else {\n _this.addPath(arg1, arg2);\n }\n return _this;\n }\n Object.defineProperty(PdfPath.prototype, \"fillMode\", {\n // Properties\n /**\n * Gets or sets the fill mode.\n * @public\n */\n get: function () {\n return this.mfillMode;\n },\n set: function (value) {\n this.mfillMode = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pathPoints\", {\n /**\n * Gets the path points.\n * @public\n */\n get: function () {\n return this.points;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pathTypes\", {\n /**\n * Gets the path point types.\n * @public\n */\n get: function () {\n return this.types;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"pointCount\", {\n /**\n * Gets the point count.\n * @public\n */\n get: function () {\n var count = 0;\n if ((this.mpoints != null)) {\n count = this.mpoints.length;\n }\n return count;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"lastPoint\", {\n /**\n * Gets the last points.\n * @public\n */\n get: function () {\n return this.getLastPoint();\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"points\", {\n /**\n * Gets the points list.\n * @private\n */\n get: function () {\n if ((this.mpoints == null)) {\n this.mpoints = [];\n }\n return this.mpoints;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPath.prototype, \"types\", {\n /**\n * Gets the types.\n * @private\n */\n get: function () {\n if ((this.mpathTypes == null)) {\n this.mpathTypes = [];\n }\n return this.mpathTypes;\n },\n enumerable: true,\n configurable: true\n });\n PdfPath.prototype.draw = function (arg1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2.x, arg2.y);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(arg1, arg2, null);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(arg1, arg2, arg3, null);\n }\n else if (arg2 instanceof PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n var widthValue = (arg1.graphics.clientSize.width - arg2);\n var layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(arg1, layoutRect, arg4);\n }\n else if (arg2 instanceof RectangleF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(arg1, arg2, arg3);\n }\n else {\n return this.drawHelper(arg1, arg2, arg3);\n }\n };\n PdfPath.prototype.addArc = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addArc(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n var points = this.getBezierArcPoints(arg1, arg2, (arg2 + arg3), (arg2 + arg4), arg5, arg6);\n for (var i = 0; i < points.length; i = i + 8) {\n /* tslint:disable-next-line:max-line-length */\n var point = [points[i], points[i + 1], points[i + 2], points[i + 3], points[i + 4], points[i + 5], points[i + 6], points[i + 7]];\n this.addPoints(point, PathPointType.Bezier3);\n }\n }\n };\n /* tslint:disable-next-line:max-line-length */\n PdfPath.prototype.addBezier = function (arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n if (arg1 instanceof PointF && arg2 instanceof PointF && arg3 instanceof PointF && arg4 instanceof PointF) {\n this.addBezier(arg1.x, arg1.y, arg2.x, arg2.y, arg3.x, arg3.y, arg4.x, arg4.y);\n }\n else {\n var points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n points.push(arg5);\n points.push(arg6);\n points.push(arg7);\n points.push(arg8);\n this.addPoints(points, PathPointType.Bezier3);\n }\n };\n PdfPath.prototype.addEllipse = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof RectangleF) {\n this.addEllipse(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, 0, 360);\n this.closeFigure();\n }\n };\n PdfPath.prototype.addLine = function (arg1, arg2, arg3, arg4) {\n if (arg1 instanceof PointF && arg2 instanceof PointF) {\n this.addLine(arg1.x, arg1.y, arg2.x, arg2.y);\n }\n else {\n var points = [];\n points.push(arg1);\n points.push(arg2);\n points.push(arg3);\n points.push(arg4);\n this.addPoints(points, PathPointType.Line);\n }\n };\n PdfPath.prototype.addPath = function (arg1, arg2) {\n if (arg1 instanceof PdfPath) {\n this.addPath(arg1.pathPoints, arg1.pathTypes);\n }\n else {\n if ((arg1 == null)) {\n throw new Error('ArgumentNullException:pathPoints');\n }\n if ((arg2 == null)) {\n throw new Error('ArgumentNullException:pathTypes');\n }\n var count = arg1.length;\n if ((count !== arg2.length)) {\n throw new Error('The argument arrays should be of equal length.');\n }\n }\n };\n PdfPath.prototype.addPie = function (arg1, arg2, arg3, arg4, arg5, arg6) {\n if (arg1 instanceof RectangleF) {\n this.addPie(arg1.x, arg1.y, arg1.width, arg1.height, arg2, arg3);\n }\n else {\n this.startFigure();\n this.addArc(arg1, arg2, arg3, arg4, arg5, arg6);\n this.addPoint(new PointF((arg1 + (arg3 / 2)), (arg2 + (arg4 / 2))), PathPointType.Line);\n this.closeFigure();\n }\n };\n /**\n * `add a polygon` specified by points.\n * @param points The points of the polygon\n */\n PdfPath.prototype.addPolygon = function (points) {\n var count = (points.length * 2);\n var p = [];\n this.startFigure();\n for (var i = 0; i < points.length; i++) {\n p.push(points[i].x);\n p.push(points[i].y);\n }\n this.addPoints(p, PathPointType.Line);\n this.closeFigure();\n };\n PdfPath.prototype.addRectangle = function (arg1, y, width, height) {\n if (arg1 instanceof RectangleF) {\n this.addRectangle(arg1.x, arg1.y, arg1.width, arg1.height);\n }\n else {\n var points = [];\n this.startFigure();\n points.push(arg1);\n points.push(y);\n points.push((arg1 + width));\n points.push(y);\n points.push((arg1 + width));\n points.push((y + height));\n points.push(arg1);\n points.push((y + height));\n this.addPoints(points, PathPointType.Line);\n this.closeFigure();\n }\n };\n /**\n * Starts a new figure.\n * @public\n */\n PdfPath.prototype.startFigure = function () {\n this.mStartFigure = true;\n };\n /**\n * Closed all non-closed figures.\n * @public\n */\n PdfPath.prototype.closeAllFigures = function () {\n var startPath = this.pathPoints[0];\n for (var i = 0; i < this.mpathTypes.length; i++) {\n var pt = ((this.types[i]));\n var flag = false;\n if (((i !== 0) && (pt === PathPointType.Start))) {\n this.closeFigure((i - 1));\n flag = true;\n }\n else if (((i === (this.mpathTypes.length - 1)) && (!flag && this.isXps))) {\n if ((startPath.x === this.pathPoints[i].y)) {\n this.closeFigure(i);\n }\n }\n }\n };\n /**\n * Gets the last point.\n * @public\n */\n PdfPath.prototype.getLastPoint = function () {\n var lastPoint = new PointF(0, 0);\n var count = this.pointCount;\n if (((count > 0) && (this.mpoints != null))) {\n lastPoint.x = this.mpoints[(count - 1)].x;\n lastPoint.y = this.mpoints[(count - 1)].y;\n }\n return lastPoint;\n };\n /**\n * Gets the bezier points for arc constructing.\n * @public\n */\n PdfPath.prototype.getBezierArcPoints = function (x1, y1, x2, y2, s1, e1) {\n if ((x1 > x2)) {\n var tmp = void 0;\n tmp = x1;\n x1 = x2;\n x2 = tmp;\n }\n if ((y2 > y1)) {\n var tmp = void 0;\n tmp = y1;\n y1 = y2;\n y2 = tmp;\n }\n var fragAngle;\n var numFragments;\n if ((Math.abs(e1) <= 90)) {\n fragAngle = e1;\n numFragments = 1;\n }\n else {\n numFragments = (Math.ceil((Math.abs(e1) / 90)));\n fragAngle = (e1 / numFragments);\n }\n var xcen = ((x1 + x2) / 2);\n var ycen = ((y1 + y2) / 2);\n var rx = ((x2 - x1) / 2);\n var ry = ((y2 - y1) / 2);\n var halfAng = ((fragAngle * (Math.PI / 360)));\n var kappa = (Math.abs(4.0 / 3.0 * (1.0 - Math.cos(halfAng)) / Math.sin(halfAng)));\n var pointList = [];\n for (var i = 0; (i < numFragments); i++) {\n var theta0 = (((s1 + (i * fragAngle)) * (Math.PI / 180)));\n var theta1 = (((s1 + ((i + 1) * fragAngle)) * (Math.PI / 180)));\n var cos0 = (Math.cos(theta0));\n var cos1 = (Math.cos(theta1));\n var sin0 = (Math.sin(theta0));\n var sin1 = (Math.sin(theta1));\n if ((fragAngle > 0)) {\n /* tslint:disable-next-line:max-line-length */\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 - (kappa * sin0)))), (ycen - (ry * (sin0 + (kappa * cos0)))), (xcen + (rx * (cos1 + (kappa * sin1)))), (ycen - (ry * (sin1 - (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n else {\n /* tslint:disable-next-line:max-line-length */\n pointList.push((xcen + (rx * cos0)), (ycen - (ry * sin0)), (xcen + (rx * (cos0 + (kappa * sin0)))), (ycen - (ry * (sin0 - (kappa * cos0)))), (xcen + (rx * (cos1 - (kappa * sin1)))), (ycen - (ry * (sin1 + (kappa * cos1)))), (xcen + (rx * cos1)), (ycen - (ry * sin1)));\n }\n }\n return pointList;\n };\n /**\n * `getBoundsInternal` Returns a rectangle that bounds this element.\n * @public\n */\n PdfPath.prototype.getBoundsInternal = function () {\n var points = this.pathPoints;\n var bounds = new RectangleF(0, 0, 0, 0);\n if ((points.length > 0)) {\n var xmin = points[0].x;\n var xmax = points[0].x;\n var ymin = points[0].y;\n var ymax = points[0].y;\n for (var i = 1; i < points.length; i++) {\n var point = points[i];\n xmin = Math.min(point.x, xmin);\n xmax = Math.max(point.x, xmax);\n ymin = Math.min(point.y, ymin);\n ymax = Math.max(point.y, ymax);\n }\n bounds = new RectangleF(xmin, ymin, (xmax - xmin), (ymax - ymin));\n }\n return bounds;\n };\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n * @public\n */\n PdfPath.prototype.drawInternal = function (graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException :graphics');\n }\n graphics.drawPath(this.obtainPen(), this.brush, this);\n };\n PdfPath.prototype.addPoints = function (points, pointType, startIndex, endIndex) {\n if (typeof startIndex === 'undefined' && typeof endIndex === 'undefined') {\n this.addPoints(points, pointType, 0, points.length);\n }\n else {\n for (var i = startIndex; i < endIndex; i++) {\n var point = new PointF(points[i], points[(i + 1)]);\n if ((i === startIndex)) {\n if (((this.pointCount <= 0) || this.mStartFigure)) {\n this.addPoint(point, PathPointType.Start);\n this.mStartFigure = false;\n }\n else if (((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y) && !this.isBeziers3)) {\n this.addPoint(point, PathPointType.Line);\n }\n else if ((point.x !== this.lastPoint.x) && (point.y !== this.lastPoint.y)) {\n this.addPoint(point, PathPointType.Bezier3);\n }\n }\n else {\n this.addPoint(point, pointType);\n }\n i++;\n }\n }\n };\n /**\n * `add a point` Adds the point and its type\n * @param points The points.\n * @param pointType Type of the points.\n * @private\n */\n PdfPath.prototype.addPoint = function (point, pointType) {\n this.points.push(point);\n this.types.push((pointType));\n };\n PdfPath.prototype.closeFigure = function (index) {\n if (typeof index === 'undefined') {\n if ((this.pointCount > 0)) {\n this.closeFigure(this.pointCount - 1);\n }\n this.startFigure();\n }\n else {\n if ((index < 0)) {\n throw new Error('IndexOutOfRangeException()');\n }\n var pt = ((this.types[index]));\n pt = (pt | PathPointType.CloseSubpath);\n this.types[index] = (pt);\n }\n };\n return PdfPath;\n}(PdfFillElement));\n\nvar __extends$41 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfRectangleArea` class Implements graphics rectangle area, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfRectangleArea = /** @__PURE__ @class */ (function (_super) {\n __extends$41(PdfRectangleArea, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfRectangleArea(arg1, arg2, arg3, arg4, arg5, arg6) {\n var _this = _super.call(this) || this;\n //Fields\n /**\n * public variable to store the rectangle.\n * @public\n */\n _this.bounds = new RectangleF(0, 0, 0, 0);\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof PdfPen) {\n _this = _super.call(this, arg1, arg2) || this;\n if (arg3 instanceof RectangleF) {\n _this.bounds = arg3;\n }\n else {\n _this.bounds = new RectangleF(arg3, arg4, arg5, arg6);\n }\n }\n else if (arg1 instanceof RectangleF) {\n _this.bounds = arg1;\n }\n else {\n _this.bounds = new RectangleF(arg1, arg2, arg3, arg4);\n }\n return _this;\n }\n Object.defineProperty(PdfRectangleArea.prototype, \"x\", {\n //Properties\n /**\n * Gets or sets the X co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get: function () {\n return this.bounds.x;\n },\n set: function (value) {\n this.bounds.x = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"y\", {\n /**\n * Gets or sets the Y co-ordinate of the upper-left corner of this the element.\n * @public\n */\n get: function () {\n return this.bounds.y;\n },\n set: function (value) {\n this.bounds.y = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"width\", {\n /**\n * Gets or sets the width of this element.\n * @public\n */\n get: function () {\n return this.bounds.width;\n },\n set: function (value) {\n this.bounds.width = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfRectangleArea.prototype, \"height\", {\n /**\n * Gets or sets the height of this element.\n * @public\n */\n get: function () {\n return this.bounds.height;\n },\n set: function (value) {\n this.bounds.height = value;\n },\n enumerable: true,\n configurable: true\n });\n //Implementation\n PdfRectangleArea.prototype.getBoundsInternal = function () {\n return this.bounds;\n };\n return PdfRectangleArea;\n}(PdfFillElement));\n\nvar __extends$40 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * `PdfEllipsePart` class Implements graphics ellipse part, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfEllipsePart = /** @__PURE__ @class */ (function (_super) {\n __extends$40(PdfEllipsePart, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfEllipsePart(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8) {\n var _this = _super.call(this) || this;\n // Fields\n /**\n * public variable to store the start angle.\n * @public\n */\n _this.startAngle = 0;\n /**\n * public variable to store the sweep angle.\n * @public\n */\n _this.sweepAngle = 0;\n if (typeof arg1 === 'undefined') {\n //\n }\n else if (arg1 instanceof RectangleF && typeof arg2 !== 'undefined' && typeof arg3 !== 'undefined') {\n _this = _super.call(this, arg1) || this;\n _this.startAngle = arg2;\n _this.sweepAngle = arg3;\n }\n else if (arg1 instanceof PdfPen) {\n if (arg3 instanceof RectangleF) {\n _this = _super.call(this, arg1, arg2, arg3) || this;\n _this.startAngle = arg4;\n _this.sweepAngle = arg5;\n }\n else {\n _this = _super.call(this, arg1, arg2, arg3, arg4, arg5, arg6) || this;\n _this.startAngle = arg7;\n _this.sweepAngle = arg8;\n }\n }\n else {\n _this = _super.call(this, arg1, arg2, arg3, arg4) || this;\n _this.startAngle = arg5;\n _this.sweepAngle = arg6;\n }\n return _this;\n }\n return PdfEllipsePart;\n}(PdfRectangleArea));\n\nvar __extends$39 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * arc.ts class for EJ2-PDF\n */\n/**\n * `PdfArc` class Implements graphics arc, which is a sequence of primitive graphics elements.\n * @private\n */\nvar PdfArc = /** @__PURE__ @class */ (function (_super) {\n __extends$39(PdfArc, _super);\n /* tslint:disable-next-line:max-line-length */\n function PdfArc(arg1, arg2, arg3, arg4, arg5, arg6, arg7) {\n var _this = this;\n if (typeof arg1 === 'undefined') {\n _this = _super.call(this) || this;\n }\n else if (arg1 instanceof RectangleF) {\n _this = _super.call(this, arg1, arg2, arg3) || this;\n }\n else if (arg1 instanceof PdfPen) {\n if (arg2 instanceof RectangleF) {\n _this = _super.call(this, arg1, null, arg2, arg3, arg4) || this;\n }\n else if (typeof arg6 === 'undefined' && typeof arg7 === 'undefined') {\n _this = _super.call(this, arg1, null, 0, 0, arg2, arg3, arg4, arg5) || this;\n }\n else if (typeof arg6 !== 'undefined' && typeof arg7 !== 'undefined') {\n _this = _super.call(this, arg1, null, arg2, arg3, arg4, arg5, arg6, arg7) || this;\n }\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 === 'undefined' && typeof arg6 === 'undefined') {\n _this = _super.call(this, 0, 0, arg1, arg2, arg3, arg4) || this;\n }\n else if (typeof arg1 !== 'undefined' && typeof arg5 !== 'undefined' && typeof arg6 !== 'undefined') {\n _this = _super.call(this, arg1, arg2, arg3, arg4, arg5, arg6) || this;\n }\n return _this;\n }\n PdfArc.prototype.draw = function (argu1, arg2, arg3, arg4) {\n if (arg2 instanceof PointF && typeof arg2.width === 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2.x, arg2.y);\n }\n else if (arg2 instanceof RectangleF && typeof arg2.width !== 'undefined' && typeof arg3 === 'undefined') {\n return this.drawHelper(argu1, arg2, null);\n }\n else if (typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'undefined') {\n return this.drawHelper(argu1, arg2, arg3, null);\n }\n else if (arg2 instanceof PointF && arg3 instanceof PdfLayoutFormat) {\n return this.drawHelper(argu1, arg2.x, arg2.y, arg3);\n }\n else if (typeof arg2 === 'number' && (arg4 instanceof PdfLayoutFormat || arg4 == null) && typeof arg3 === 'number') {\n var widthValue = (argu1.graphics.clientSize.width - arg2);\n var layoutRect = new RectangleF(arg2, arg3, widthValue, 0);\n return this.drawHelper(argu1, layoutRect, arg4);\n }\n else {\n return this.drawHelper(argu1, arg2, arg3);\n }\n };\n // Implementation\n /**\n * `drawInternal` Draws an element on the Graphics.\n * @param graphics Graphics context where the element should be printed.\n *\n */\n PdfArc.prototype.drawInternal = function (graphics) {\n if ((graphics == null)) {\n throw new Error('ArgumentNullException : graphics');\n }\n graphics.drawArc(this.obtainPen(), this.bounds, this.startAngle, this.sweepAngle);\n };\n return PdfArc;\n}(PdfEllipsePart));\n\nvar __extends$42 = (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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * PdfTrueTypeFont.ts class for EJ2-PDF\n */\n//https://www.giftofspeed.com/base64-encoder/\nvar PdfTrueTypeFont = /** @__PURE__ @class */ (function (_super) {\n __extends$42(PdfTrueTypeFont, _super);\n function PdfTrueTypeFont(base64String, size, style) {\n var _this = _super.call(this, size) || this;\n /**\n * Indicates whether the font is embedded or not.\n * @private\n */\n _this.isEmbedFont = false;\n /**\n * Indicates whether the font is unicoded or not.\n * @private\n */\n _this.isUnicode = true;\n if (style !== undefined) {\n _this.createFontInternal(base64String, style);\n }\n else {\n _this.createFontInternal(base64String, PdfFontStyle.Regular);\n }\n return _this;\n }\n PdfTrueTypeFont.prototype.equalsToFont = function (font) {\n var result = false;\n //let result : boolean = this.fontInternal.equalsToFont(font);\n return result;\n };\n PdfTrueTypeFont.prototype.getLineWidth = function (line, format) {\n var width = 0;\n if (format !== null && typeof format !== 'undefined' && format.textDirection !== PdfTextDirection.None) {\n var returnValue = this.getUnicodeLineWidth(line, /*out*/ width, format);\n width = returnValue.width;\n }\n else {\n width = this.fontInternal.getLineWidth(line);\n }\n var size = this.metrics.getSize(format);\n width *= (PdfFont.charSizeMultiplier * size);\n width = this.applyFormatSettings(line, format, width);\n return width;\n };\n /**\n * Returns width of the char.\n */\n PdfTrueTypeFont.prototype.getCharWidth = function (charCode, format) {\n var codeWidth = this.fontInternal.getCharWidth(charCode);\n var size = this.metrics.getSize(format);\n codeWidth *= (0.001 * size);\n return codeWidth;\n };\n //Implementation\n PdfTrueTypeFont.prototype.createFontInternal = function (base64String, style) {\n this.fontInternal = new UnicodeTrueTypeFont(base64String, this.size);\n this.calculateStyle(style);\n this.initializeInternals();\n };\n PdfTrueTypeFont.prototype.calculateStyle = function (style) {\n var iStyle = this.fontInternal.ttfMetrics.macStyle;\n if ((style & PdfFontStyle.Underline) !== 0) {\n iStyle |= PdfFontStyle.Underline;\n }\n if ((style & PdfFontStyle.Strikeout) !== 0) {\n iStyle |= PdfFontStyle.Strikeout;\n }\n this.setStyle(iStyle);\n };\n PdfTrueTypeFont.prototype.initializeInternals = function () {\n var equalFont = null;\n if (PdfDocument.enableCache) {\n // Search for the similar fonts.\n equalFont = PdfDocument.cache.search(this);\n }\n var internals = null;\n // There is not equal font in the cache.\n if (equalFont !== null && equalFont !== undefined) {\n // Get the settings from the cached font.\n internals = equalFont.getInternals();\n var metrics = equalFont.metrics;\n metrics = metrics.clone();\n metrics.size = this.size;\n this.metrics = metrics;\n this.fontInternal = equalFont.fontInternal;\n }\n else {\n if (equalFont == null) {\n if (this.fontInternal instanceof UnicodeTrueTypeFont) {\n this.fontInternal.isEmbed = this.isEmbedFont;\n }\n this.fontInternal.createInternals();\n internals = this.fontInternal.getInternals();\n this.metrics = this.fontInternal.metrics;\n }\n }\n this.metrics.isUnicodeFont = true;\n this.setInternals(internals);\n //this.ttfReader = (this.fontInternal as UnicodeTrueTypeFont).ttfReader;\n };\n /**\n * Stores used symbols.\n */\n PdfTrueTypeFont.prototype.setSymbols = function (text) {\n var internalFont = this.fontInternal;\n if (internalFont != null) {\n internalFont.setSymbols(text);\n }\n };\n Object.defineProperty(PdfTrueTypeFont.prototype, \"Unicode\", {\n /**\n * Property\n *\n */\n get: function () {\n return this.isUnicode;\n },\n enumerable: true,\n configurable: true\n });\n // public get Font() : UnicodeTrueTypeFont {\n // return this.fontInternal as UnicodeTrueTypeFont;\n // }\n PdfTrueTypeFont.prototype.getUnicodeLineWidth = function (line, /*out*/ width, format) {\n // if (line == null) {\n // throw new Error('ArgumentNullException : line');\n // }\n width = 0;\n var glyphIndices = null;\n var rtlRender = new RtlRenderer();\n /* tslint:disable-next-line:max-line-length */\n var result = rtlRender.getGlyphIndex(line, this, (format.textDirection === PdfTextDirection.RightToLeft) ? true : false, /*out*/ glyphIndices, true);\n var resultGlyph = result.success;\n glyphIndices = result.glyphs;\n if (resultGlyph && glyphIndices !== null) {\n var ttfReader = this.fontInternal.ttfReader;\n for (var i = 0, len = glyphIndices.length; i < len; i++) {\n var glyphIndex = glyphIndices[i];\n var glyph = ttfReader.getGlyph(glyphIndex);\n if (glyph !== null && typeof glyph !== 'undefined') {\n width += glyph.width;\n }\n }\n }\n return { success: resultGlyph, width: width };\n };\n return PdfTrueTypeFont;\n}(PdfFont));\n\n/**\n * PdfPageTemplateElement.ts class for EJ2-Pdf\n */\n/**\n * Describes a `page template` object that can be used as header/footer, watermark or stamp.\n */\nvar PdfPageTemplateElement = /** @__PURE__ @class */ (function () {\n /* tslint:disable */\n function PdfPageTemplateElement(arg1, arg2, arg3, arg4, arg5) {\n if (arg1 instanceof RectangleF && typeof arg2 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, null);\n }\n else if (arg1 instanceof RectangleF && arg2 instanceof PdfPage && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg1.width, arg1.height, arg2);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && typeof arg3 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, null);\n }\n else if (arg1 instanceof PointF && arg2 instanceof SizeF && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(arg1.x, arg1.y, arg2.width, arg2.height, arg3);\n }\n else if (arg1 instanceof SizeF && typeof arg2 === 'undefined') {\n this.InitiateBounds(0, 0, arg1.width, arg1.height, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, null);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && arg3 instanceof PdfPage && typeof arg4 === 'undefined') {\n this.InitiateBounds(0, 0, arg1, arg2, arg3);\n }\n else if (typeof arg1 === 'number' && typeof arg2 === 'number' && typeof arg3 === 'number' && typeof arg4 === 'number' && typeof arg5 === 'undefined') {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n }\n else {\n this.InitiateBounds(arg1, arg2, arg3, arg4, null);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n }\n /* tslint:enable */\n }\n Object.defineProperty(PdfPageTemplateElement.prototype, \"dock\", {\n // Properties\n /**\n * Gets or sets the `dock style` of the page template element.\n * @private\n */\n get: function () {\n return this.dockStyle;\n },\n set: function (value) {\n // if (this.dockStyle !== value && this.Type === TemplateType.None) {\n this.dockStyle = value;\n // Reset alignment.\n this.resetAlignment();\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"alignment\", {\n /**\n * Gets or sets `alignment` of the page template element.\n * @private\n */\n get: function () {\n return this.alignmentStyle;\n },\n set: function (value) {\n // if (this.alignmentStyle !== value) {\n this.setAlignment(value);\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"foreground\", {\n /**\n * Indicates whether the page template is located `in front of the page layers or behind of it`.\n * @private\n */\n get: function () {\n return this.isForeground;\n },\n set: function (value) {\n // if (this.foreground !== value) {\n this.isForeground = value;\n // }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"background\", {\n /**\n * Indicates whether the page template is located `behind of the page layers or in front of it`.\n * @private\n */\n get: function () {\n return !this.isForeground;\n },\n set: function (value) {\n this.isForeground = !value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"location\", {\n /**\n * Gets or sets `location` of the page template element.\n * @private\n */\n get: function () {\n return this.currentLocation;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"x\", {\n /**\n * Gets or sets `X` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.x : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.x = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"y\", {\n /**\n * Gets or sets `Y` co-ordinate of the template element on the page.\n * @private\n */\n get: function () {\n var value = (typeof this.currentLocation !== 'undefined') ? this.currentLocation.y : 0;\n return value;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.currentLocation.y = value;\n }\n else {\n //\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"size\", {\n /**\n * Gets or sets `size` of the page template element.\n * @private\n */\n get: function () {\n return this.template.size;\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.template.reset(value);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"width\", {\n /**\n * Gets or sets `width` of the page template element.\n * @private\n */\n get: function () {\n return this.template.width;\n },\n set: function (value) {\n if (this.template.width !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.width = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"height\", {\n /**\n * Gets or sets `height` of the page template element.\n * @private\n */\n get: function () {\n return this.template.height;\n },\n set: function (value) {\n if (this.template.height !== value && this.type === TemplateType.None) {\n var size = this.template.size;\n size.height = value;\n this.template.reset(size);\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"graphics\", {\n /**\n * Gets `graphics` context of the page template element.\n * @private\n */\n get: function () {\n return this.template.graphics;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"template\", {\n /**\n * Gets Pdf `template` object.\n * @private\n */\n get: function () {\n // if (typeof this.pdfTemplate === 'undefined' || this.pdfTemplate == null) {\n // this.pdfTemplate = new PdfTemplate(this.size);\n // }\n return this.pdfTemplate;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"type\", {\n /**\n * Gets or sets `type` of the usage of this page template.\n * @private\n */\n get: function () {\n return this.templateType;\n },\n set: function (value) {\n this.updateDocking(value);\n this.templateType = value;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfPageTemplateElement.prototype, \"bounds\", {\n /**\n * Gets or sets `bounds` of the page template.\n * @public\n */\n get: function () {\n return new RectangleF(new PointF(this.x, this.y), this.size);\n },\n set: function (value) {\n if (this.type === TemplateType.None) {\n this.location = new PointF(value.x, value.y);\n this.size = new SizeF(value.width, value.height);\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * `Initialize Bounds` Initialize the bounds value of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.InitiateBounds = function (arg1, arg2, arg3, arg4, arg5) {\n this.x = arg1;\n this.y = arg2;\n this.pdfTemplate = new PdfTemplate(arg3, arg4);\n // this.graphics.colorSpace = this.page.document.colorSpace;\n };\n /**\n * `Updates Dock` property if template is used as header/footer.\n * @private\n */\n PdfPageTemplateElement.prototype.updateDocking = function (type) {\n if (type !== TemplateType.None) {\n switch (type) {\n case TemplateType.Top:\n this.dock = PdfDockStyle.Top;\n break;\n case TemplateType.Bottom:\n this.dock = PdfDockStyle.Bottom;\n break;\n case TemplateType.Left:\n this.dock = PdfDockStyle.Left;\n break;\n case TemplateType.Right:\n this.dock = PdfDockStyle.Right;\n break;\n }\n this.resetAlignment();\n }\n };\n /**\n * `Resets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.resetAlignment = function () {\n this.alignment = PdfAlignmentStyle.None;\n };\n /**\n * `Sets alignment` of the template.\n * @private\n */\n PdfPageTemplateElement.prototype.setAlignment = function (alignment) {\n if (this.dock === PdfDockStyle.None) {\n this.alignmentStyle = alignment;\n }\n else {\n // Template is docked and alignment has been changed.\n var canBeSet = false;\n switch (this.dock) {\n case PdfDockStyle.Left:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.MiddleLeft ||\n alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Top:\n canBeSet = (alignment === PdfAlignmentStyle.TopLeft || alignment === PdfAlignmentStyle.TopCenter ||\n alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Right:\n canBeSet = (alignment === PdfAlignmentStyle.TopRight || alignment === PdfAlignmentStyle.MiddleRight ||\n alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Bottom:\n canBeSet = (alignment === PdfAlignmentStyle.BottomLeft || alignment === PdfAlignmentStyle.BottomCenter\n || alignment === PdfAlignmentStyle.BottomRight || alignment === PdfAlignmentStyle.None);\n break;\n case PdfDockStyle.Fill:\n canBeSet = (alignment === PdfAlignmentStyle.MiddleCenter || alignment === PdfAlignmentStyle.None);\n break;\n }\n if (canBeSet) {\n this.alignmentStyle = alignment;\n }\n }\n };\n /**\n * Draws the template.\n * @private\n */\n PdfPageTemplateElement.prototype.draw = function (layer, document) {\n var page = layer.page;\n var bounds = this.calculateBounds(page, document);\n if (bounds.x === -0) {\n bounds.x = 0;\n }\n layer.graphics.drawPdfTemplate(this.template, new PointF(bounds.x, bounds.y), new SizeF(bounds.width, bounds.height));\n };\n /**\n * Calculates bounds of the page template.\n * @private\n */\n PdfPageTemplateElement.prototype.calculateBounds = function (page, document) {\n var result = this.bounds;\n if (this.alignmentStyle !== PdfAlignmentStyle.None) {\n result = this.getAlignmentBounds(page, document);\n }\n else if (this.dockStyle !== PdfDockStyle.None) {\n result = this.getDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getAlignmentBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleAlignmentBounds(page, document);\n }\n else {\n result = this.getTemplateAlignmentBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleAlignmentBounds = function (page, document) {\n var bounds = this.bounds;\n var pdfSection = page.section;\n var actualBounds = pdfSection.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n x = 0;\n y = 0;\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = 0;\n break;\n case PdfAlignmentStyle.TopRight:\n x = actualBounds.width - this.width;\n y = 0;\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = 0;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n x = 0;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n x = actualBounds.width - this.width;\n y = actualBounds.height - this.height;\n break;\n }\n bounds.x = x;\n bounds.y = y;\n return bounds;\n };\n /**\n * Calculates bounds according to the alignment.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateAlignmentBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n switch (this.alignmentStyle) {\n case PdfAlignmentStyle.TopLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = -actualBounds.x;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.TopCenter:\n x = (actualBounds.width - this.width) / 2;\n y = -actualBounds.y;\n break;\n case PdfAlignmentStyle.TopRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n }\n else if (this.type === TemplateType.Top) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = -actualBounds.y;\n }\n break;\n case PdfAlignmentStyle.MiddleLeft:\n x = -actualBounds.x;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleCenter:\n x = (actualBounds.width - this.width) / 2;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.MiddleRight:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = (actualBounds.height - this.height) / 2;\n break;\n case PdfAlignmentStyle.BottomLeft:\n if (this.type === TemplateType.Left) {\n x = -actualBounds.x;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n case PdfAlignmentStyle.BottomCenter:\n x = (actualBounds.width - this.width) / 2;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n break;\n case PdfAlignmentStyle.BottomRight:\n if (this.type === TemplateType.Right) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height - this.height;\n }\n else if (this.type === TemplateType.Bottom) {\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n }\n break;\n }\n result.x = x;\n result.y = y;\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getDockBounds = function (page, document) {\n var result = this.bounds;\n if (this.type === TemplateType.None) {\n result = this.getSimpleDockBounds(page, document);\n }\n else {\n result = this.getTemplateDockBounds(page, document);\n }\n return result;\n };\n /**\n * Calculates bounds according to the docking.\n * @private\n */\n PdfPageTemplateElement.prototype.getSimpleDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = 0;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = 0;\n y = 0;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = 0;\n y = actualBounds.height - this.height;\n width = actualBounds.width;\n height = this.height;\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n /**\n * Calculates template bounds basing on docking if template is a page template.\n * @private\n */\n PdfPageTemplateElement.prototype.getTemplateDockBounds = function (page, document) {\n var result = this.bounds;\n var section = page.section;\n var actualBounds = section.getActualBounds(document, page, false);\n var actualSize = section.pageSettings.getActualSize();\n var x = this.x;\n var y = this.y;\n var width = this.width;\n var height = this.height;\n switch (this.dockStyle) {\n case PdfDockStyle.Left:\n x = -actualBounds.x;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Top:\n x = -actualBounds.x;\n y = -actualBounds.y;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y = -actualBounds.y + actualSize.height;\n }\n break;\n case PdfDockStyle.Right:\n x = actualBounds.width + section.getRightIndentWidth(document, page, false) - this.width;\n y = 0;\n width = this.width;\n height = actualBounds.height;\n break;\n case PdfDockStyle.Bottom:\n x = -actualBounds.x;\n y = actualBounds.height + section.getBottomIndentHeight(document, page, false) - this.height;\n width = actualSize.width;\n height = this.height;\n if (actualBounds.height < 0) {\n y -= actualSize.height;\n }\n break;\n case PdfDockStyle.Fill:\n x = 0;\n x = 0;\n width = actualBounds.width;\n height = actualBounds.height;\n break;\n }\n result = new RectangleF(x, y, width, height);\n return result;\n };\n return PdfPageTemplateElement;\n}());\n\n/**\n * Pdf all modules\n * @hidden\n */\n\nexport { PdfAction, PdfUriAction, PdfActionLinkAnnotation, PdfAnnotation, PdfAnnotationCollection, PdfDocumentLinkAnnotation, PdfLinkAnnotation, PdfTextWebLink, PdfUriAnnotation, Dictionary, defaultToString, PdfCatalog, PdfDocument, PdfDocumentBase, PdfDocumentTemplate, PdfPageNumberField, PdfCompositeField, PdfPageCountField, PointF, SizeF, RectangleF, Rectangle, PdfCacheCollection, PdfCollection, PdfDestination, PdfFunction, PdfSampledFunction, PdfDestinationMode, ProcedureSets, PdfHorizontalAlignment, PdfVerticalAlignment, PdfTextAlignment, TextRenderingMode, PdfLineJoin, PdfLineCap, PdfDashStyle, PdfFillMode, PdfColorSpace, PdfBlendMode, PdfGraphicsUnit, PdfGridImagePosition, PdfTextDirection, PdfColor, PdfGraphics, GetResourceEventHandler, PdfGraphicsState, PdfMargins, PdfPen, PdfResources, Guid, PdfTransformationMatrix, Matrix, PdfBrush, PdfBrushes, PdfSolidBrush, PdfLinearGradientBrush, PdfRadialGradientBrush, PdfTilingBrush, PdfGradientBrush, PdfColorBlend, PdfBlend, PdfTemplate, PdfLayoutElement, PdfPath, PdfArc, PdfTextElement, ElementLayouter, PdfLayoutFormat, PdfLayoutParams, PdfLayoutResult, TextLayouter, TextPageLayoutResult, PdfTextLayoutResult, PdfLayoutType, PdfLayoutBreakType, PathPointType, PdfFontStyle, PdfFontFamily, PdfFontType, PdfWordWrapType, PdfSubSuperScript, FontEncoding, TtfCmapFormat, TtfCmapEncoding, TtfPlatformID, TtfMicrosoftEncodingID, TtfMacintoshEncodingID, FontDescriptorFlags, TtfCompositeGlyphFlags, PdfFont, PdfFontMetrics, WidthTable, StandardWidthTable, PdfStandardFont, PdfStandardFontMetricsFactory, PdfStringFormat, PdfStringLayouter, PdfStringLayoutResult, LineInfo, LineType, StringTokenizer, PdfTrueTypeFont, RtlRenderer, ArabicShapeRenderer, ArabicShape, Bidi, RtlCharacters, ByteArray, ImageFormat, ImageDecoder, PdfBitmap, PdfImage, PdfTransparency, ObjectStatus, ObjectType, PdfCrossTable, RegisteredObject, DictionaryProperties, PdfMainObjectCollection, ObjectInfo, Operators, PdfStreamWriter, PdfWriter, PdfPageOrientation, PdfPageRotateAngle, PdfNumberStyle, PdfDockStyle, PdfAlignmentStyle, TemplateType, PageAddedEventArgs, PdfDocumentPageCollection, PdfPage, PdfPageBase, PdfPageLayer, PdfPageLayerCollection, PdfPageSettings, PdfPageSize, PdfPageTemplateElement, PdfSection, PageSettingsState, PdfSectionCollection, PdfSectionPageCollection, PdfSectionTemplate, PdfArray, PdfDictionary, SaveSectionCollectionEventHandler, SaveDescendantFontEventHandler, SaveFontDictionaryEventHandler, SaveAnnotationEventHandler, SaveSectionEventHandler, SaveTemplateEventHandler, PdfName, PdfNumber, PdfReference, PdfReferenceHolder, PdfStream, SaveCmapEventHandler, SaveFontProgramEventHandler, InternalEnum, PdfString, PdfGridStyleBase, PdfGridStyle, PdfGridCellStyle, PdfGridRowStyle, PdfHorizontalOverflowType, PdfBorders, PdfPaddings, PdfBorderOverlapStyle, PdfGridLayouter, PdfGridLayoutResult, PdfGridLayoutFormat, GridCellEventArgs, PdfGridBeginCellDrawEventArgs, PdfGridEndCellDrawEventArgs, PdfCancelEventArgs, BeginPageLayoutEventArgs, EndPageLayoutEventArgs, PdfGridBeginPageLayoutEventArgs, PdfGridEndPageLayoutEventArgs, RowLayoutResult, PdfGrid, PdfGridColumn, PdfGridColumnCollection, PdfGridRow, PdfGridRowCollection, PdfGridHeaderCollection, PdfGridCell, PdfGridCellCollection };\n","import { Browser, ChildProperty, Collection, Complex, Component, Event, Internationalization, L10n, NotifyPropertyChanges, Property, classList, closest, compile, createElement, getValue, isBlazor, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { Canvas, Container, DrawingElement, DrawingRenderer, ImageElement, PathElement, Point, Rect, RotateTransform, Size, SvgRenderer, TextElement, ThumbsConstraints, contains, cornersPointsBeforeRotation, createHtmlElement, createMeasureElements, createSvgElement, getDiagramElement, getPathString, identityMatrix, intersect3, processPathData, randomId, refreshDiagramElements, rotateMatrix, rotatePoint, scaleMatrix, setAttributeSvg, splitArrayCollection, transformPointByMatrix } from '@syncfusion/ej2-drawings';\nimport { ColorPicker, NumericTextBox, Slider, TextBox } from '@syncfusion/ej2-inputs';\nimport { Dialog, Tooltip } from '@syncfusion/ej2-popups';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { InPlaceEditor } from '@syncfusion/ej2-inplace-editor';\nimport { Accordion, ContextMenu, Menu, Tab, Toolbar, TreeView } from '@syncfusion/ej2-navigations';\nimport { Toast } from '@syncfusion/ej2-notifications';\nimport { Button, CheckBox } from '@syncfusion/ej2-buttons';\nimport { ComboBox, DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { Query } from '@syncfusion/ej2-data';\nimport { ListView } from '@syncfusion/ej2-lists';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * The `PdfBounds` is base for annotation bounds.\n *\n * @hidden\n */\nvar PdfBounds = /** @__PURE__ @class */ (function (_super) {\n __extends(PdfBounds, _super);\n function PdfBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"x\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"y\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"width\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"height\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"top\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"right\", void 0);\n __decorate([\n Property(0)\n ], PdfBounds.prototype, \"bottom\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, Point)\n ], PdfBounds.prototype, \"location\", void 0);\n __decorate([\n Complex(new Size(0, 0), Size)\n ], PdfBounds.prototype, \"size\", void 0);\n return PdfBounds;\n}(ChildProperty));\n/**\n * The `PdfFont` is base for annotation Text styles.\n *\n * @hidden\n */\nvar PdfFont = /** @__PURE__ @class */ (function (_super) {\n __extends(PdfFont, _super);\n function PdfFont() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isBold\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isItalic\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isUnderline\", void 0);\n __decorate([\n Property(false)\n ], PdfFont.prototype, \"isStrikeout\", void 0);\n return PdfFont;\n}(ChildProperty));\n/**\n * Defines the common behavior of PdfAnnotationBase\n *\n * @hidden\n */\nvar PdfAnnotationBase = /** @__PURE__ @class */ (function (_super) {\n __extends(PdfAnnotationBase, _super);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function PdfAnnotationBase(parent, propName, defaultValue, isArray) {\n return _super.call(this, parent, propName, defaultValue, isArray) || this;\n }\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"id\", void 0);\n __decorate([\n Property('Rectangle')\n ], PdfAnnotationBase.prototype, \"shapeAnnotationType\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"formFieldAnnotationType\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"measureType\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"author\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"modifiedDate\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"subject\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"notes\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isCommentLock\", void 0);\n __decorate([\n Property('black')\n ], PdfAnnotationBase.prototype, \"strokeColor\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"fillColor\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"stampFillColor\", void 0);\n __decorate([\n Property('black')\n ], PdfAnnotationBase.prototype, \"stampStrokeColor\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"data\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"opacity\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"thickness\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"borderStyle\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"borderDashArray\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"rotateAngle\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isCloudShape\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"cloudIntensity\", void 0);\n __decorate([\n Property(40)\n ], PdfAnnotationBase.prototype, \"leaderHeight\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"lineHeadStart\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"lineHeadEnd\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"vertexPoints\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"sourcePoint\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"sourceDecoraterShapes\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"taregetDecoraterShapes\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"targetPoint\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"segments\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfAnnotationBase.prototype, \"bounds\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"pageIndex\", void 0);\n __decorate([\n Property(-1)\n ], PdfAnnotationBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"wrapper\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isDynamicStamp\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"dynamicText\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotName\", void 0);\n __decorate([\n Property({})\n ], PdfAnnotationBase.prototype, \"review\", void 0);\n __decorate([\n Property([])\n ], PdfAnnotationBase.prototype, \"comments\", void 0);\n __decorate([\n Property('#000')\n ], PdfAnnotationBase.prototype, \"fontColor\", void 0);\n __decorate([\n Property(16)\n ], PdfAnnotationBase.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], PdfAnnotationBase.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('None')\n ], PdfAnnotationBase.prototype, \"fontStyle\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"enableShapeLabel\", void 0);\n __decorate([\n Property('label')\n ], PdfAnnotationBase.prototype, \"labelContent\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"labelFillColor\", void 0);\n __decorate([\n Property(15)\n ], PdfAnnotationBase.prototype, \"labelMaxLength\", void 0);\n __decorate([\n Property(1)\n ], PdfAnnotationBase.prototype, \"labelOpacity\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotationSelectorSettings\", void 0);\n __decorate([\n Property('#ffffff00')\n ], PdfAnnotationBase.prototype, \"labelBorderColor\", void 0);\n __decorate([\n Property('left')\n ], PdfAnnotationBase.prototype, \"textAlign\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"signatureName\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isLock\", void 0);\n __decorate([\n Property('UI Drawn Annotation')\n ], PdfAnnotationBase.prototype, \"annotationAddMode\", void 0);\n __decorate([\n Property('')\n ], PdfAnnotationBase.prototype, \"annotationSettings\", void 0);\n __decorate([\n Property(16)\n ], PdfAnnotationBase.prototype, \"previousFontSize\", void 0);\n __decorate([\n Complex({ isBold: false, isItalic: false, isStrikeout: false, isUnderline: false }, PdfFont)\n ], PdfAnnotationBase.prototype, \"font\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfAnnotationBase.prototype, \"labelBounds\", void 0);\n __decorate([\n Property(null)\n ], PdfAnnotationBase.prototype, \"customData\", void 0);\n __decorate([\n Property(['None'])\n ], PdfAnnotationBase.prototype, \"allowedInteractions\", void 0);\n __decorate([\n Property(true)\n ], PdfAnnotationBase.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isReadonly\", void 0);\n __decorate([\n Property(0)\n ], PdfAnnotationBase.prototype, \"pageRotation\", void 0);\n __decorate([\n Property(false)\n ], PdfAnnotationBase.prototype, \"isAddAnnotationProgrammatically\", void 0);\n return PdfAnnotationBase;\n}(ChildProperty));\n/**\n * Defines the common behavior of PdfFormFieldBase\n *\n * @hidden\n */\nvar PdfFormFieldBase = /** @__PURE__ @class */ (function (_super) {\n __extends(PdfFormFieldBase, _super);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n function PdfFormFieldBase(parent, propName, defaultValue, isArray) {\n return _super.call(this, parent, propName, defaultValue, isArray) || this;\n }\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"signatureType\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], PdfFormFieldBase.prototype, \"formFieldAnnotationType\", void 0);\n __decorate([\n Property('#daeaf7ff')\n ], PdfFormFieldBase.prototype, \"backgroundColor\", void 0);\n __decorate([\n Property('black')\n ], PdfFormFieldBase.prototype, \"color\", void 0);\n __decorate([\n Property('#303030')\n ], PdfFormFieldBase.prototype, \"borderColor\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"tooltip\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"opacity\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"thickness\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"rotateAngle\", void 0);\n __decorate([\n Complex({ x: 0, y: 0 }, PdfBounds)\n ], PdfFormFieldBase.prototype, \"bounds\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"pageIndex\", void 0);\n __decorate([\n Property(1)\n ], PdfFormFieldBase.prototype, \"pageNumber\", void 0);\n __decorate([\n Property(-1)\n ], PdfFormFieldBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], PdfFormFieldBase.prototype, \"wrapper\", void 0);\n __decorate([\n Property(16)\n ], PdfFormFieldBase.prototype, \"fontSize\", void 0);\n __decorate([\n Property('Helvetica')\n ], PdfFormFieldBase.prototype, \"fontFamily\", void 0);\n __decorate([\n Property('None')\n ], PdfFormFieldBase.prototype, \"fontStyle\", void 0);\n __decorate([\n Property('left')\n ], PdfFormFieldBase.prototype, \"alignment\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"minHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"minWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxHeight\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxWidth\", void 0);\n __decorate([\n Property(0)\n ], PdfFormFieldBase.prototype, \"maxLength\", void 0);\n __decorate([\n Property('visible')\n ], PdfFormFieldBase.prototype, \"visibility\", void 0);\n __decorate([\n Property(true)\n ], PdfFormFieldBase.prototype, \"isPrint\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isReadonly\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isChecked\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isSelected\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isRequired\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isMultiline\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"isTransparent\", void 0);\n __decorate([\n Property(false)\n ], PdfFormFieldBase.prototype, \"insertSpaces\", void 0);\n __decorate([\n Property('')\n ], PdfFormFieldBase.prototype, \"options\", void 0);\n __decorate([\n Property()\n ], PdfFormFieldBase.prototype, \"signatureIndicatorSettings\", void 0);\n __decorate([\n Complex({ isBold: false, isItalic: false, isStrikeout: false, isUnderline: false }, PdfFont)\n ], PdfFormFieldBase.prototype, \"font\", void 0);\n __decorate([\n Property()\n ], PdfFormFieldBase.prototype, \"selectedIndex\", void 0);\n return PdfFormFieldBase;\n}(ChildProperty));\n/**\n * @hidden\n */\nvar ZOrderPageTable = /** @__PURE__ @class */ (function () {\n function ZOrderPageTable() {\n this.pageIdTemp = 0;\n this.zIndexTemp = -1;\n this.childNodesTemp = [];\n this.objects = [];\n this.zIndexTemp = -1;\n this.pageIdTemp = 0;\n }\n Object.defineProperty(ZOrderPageTable.prototype, \"pageId\", {\n /**\n * @private\n * @returns {number} - Returns the page Id.\n */\n get: function () {\n return this.pageIdTemp;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.pageIdTemp = offset;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZOrderPageTable.prototype, \"zIndex\", {\n /**\n * @private\n * @returns {number} - Returns the z-index value.\n */\n get: function () {\n return this.zIndexTemp;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.zIndexTemp = offset;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(ZOrderPageTable.prototype, \"objects\", {\n /**\n * @private\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation childNodes.\n */\n get: function () {\n return this.childNodesTemp;\n },\n /**\n * @private\n * @param {PdfAnnotationBaseModel[]} childNodes - Specified the annotation child nodes.\n */\n set: function (childNodes) {\n this.childNodesTemp = childNodes;\n },\n enumerable: true,\n configurable: true\n });\n return ZOrderPageTable;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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};\n/**\n * Defines the size and position of selected items and defines the appearance of selector\n *\n * @hidden\n */\nvar Selector = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Selector, _super);\n function Selector() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Initializes the UI of the container\n *\n * @param {any} diagram - diagram element.\n * @returns {Container} - Returns the container element.\n */\n // eslint-disable-next-line\n Selector.prototype.init = function (diagram) {\n var container = new Container();\n container.measureChildren = false;\n container.children = [];\n if (this.formFields && this.formFields.length > 0) {\n for (var i = 0; i < this.formFields.length; i++) {\n var node = diagram.pdfViewer.nameTable[this.formFields[parseInt(i.toString(), 10)].id];\n var wrapper = node.wrapper;\n container.children.push(wrapper);\n }\n }\n else if (this.annotations) {\n for (var i = 0; i < this.annotations.length; i++) {\n if (!isNullOrUndefined(this.annotations[parseInt(i.toString(), 10)])) {\n var node = diagram.pdfViewer.nameTable[this.annotations[parseInt(i.toString(), 10)].id];\n var wrapper = node.wrapper;\n container.children.push(wrapper);\n }\n }\n }\n this.wrapper = container;\n return container;\n };\n __decorate$1([\n Property(null)\n ], Selector.prototype, \"wrapper\", void 0);\n __decorate$1([\n Collection([], PdfAnnotationBase)\n ], Selector.prototype, \"annotations\", void 0);\n __decorate$1([\n Collection([], PdfFormFieldBase)\n ], Selector.prototype, \"formFields\", void 0);\n __decorate$1([\n Property()\n ], Selector.prototype, \"width\", void 0);\n __decorate$1([\n Property()\n ], Selector.prototype, \"height\", void 0);\n __decorate$1([\n Property(0)\n ], Selector.prototype, \"rotateAngle\", void 0);\n __decorate$1([\n Property(0)\n ], Selector.prototype, \"offsetX\", void 0);\n __decorate$1([\n Property(0)\n ], Selector.prototype, \"offsetY\", void 0);\n __decorate$1([\n Complex({ x: 0.5, y: 0.5 }, Point)\n ], Selector.prototype, \"pivot\", void 0);\n return Selector;\n}(ChildProperty));\n\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the shape annotation object.\n * @hidden\n * @returns {void}\n */\nfunction isLineShapes(obj) {\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead'\n || obj.shapeAnnotationType === 'Distance' || obj.shapeAnnotationType === 'Polygon') {\n return true;\n }\n return false;\n}\n/**\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation or form fields object.\n * @param {DrawingElement} element - Specified the annotation drawing element.\n * @returns {void}\n * @hidden\n */\nfunction setElementStype(obj, element) {\n if (obj && element) {\n if (obj.formFieldAnnotationType) {\n if (obj.id.indexOf('diagram_helper') !== -1) {\n element.style.fill = 'transparent';\n element.style.strokeWidth = 1;\n element.style.strokeDashArray = obj.borderDashArray;\n }\n else {\n element.style.fill = 'transparent';\n element.style.strokeWidth = 0;\n }\n }\n else {\n var fillColor = (obj.fillColor === '#ffffff00' ? 'transparent' : obj.fillColor);\n element.style.fill = fillColor ? fillColor : 'white';\n // eslint-disable-next-line max-len\n element.style.strokeColor = obj.strokeColor ? obj.strokeColor : obj.borderColor;\n // eslint-disable-next-line max-len\n element.style.color = obj.strokeColor ? obj.strokeColor : obj.borderColor;\n element.style.strokeWidth = obj.thickness;\n if (obj.shapeAnnotationType === 'Image' || obj.shapeAnnotationType === 'SignatureText' || obj.shapeAnnotationType === 'SignatureImage') {\n element.style.strokeWidth = 0;\n }\n element.style.strokeDashArray = obj.borderDashArray;\n element.style.opacity = obj.opacity;\n }\n }\n}\n/**\n * @param {PointModel[]} points - Specified the annotation points value.\n * @hidden\n * @returns {number} - Returns the points length.\n */\nfunction findPointsLength(points) {\n var length = 0;\n for (var i = 0; i < points.length - 1; i++) {\n length += Point.findLength(points[parseInt(i.toString(), 10)], points[i + 1]);\n }\n return length;\n}\n/**\n * @param {PointModel[]} points - Specified the annotation points value.\n * @hidden\n * @returns {number} - Returns the points length.\n */\nfunction findPerimeterLength(points) {\n var length = Point.getLengthFromListOfPoints(points);\n return length;\n}\n/**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {Transforms} transform - Specified the transform value.\n * @returns {BaseAttributes} - Returns the base attributes value.\n */\nfunction getBaseShapeAttributes(element, transform) {\n var baseShapeAttributes = {\n width: element.actualSize.width, height: element.actualSize.height,\n x: element.offsetX - element.actualSize.width * element.pivot.x + 0.5,\n y: element.offsetY - element.actualSize.height * element.pivot.y + 0.5,\n angle: element.rotateAngle + element.parentTransform, fill: element.style.fill, stroke: element.style.strokeColor,\n pivotX: element.pivot.x, pivotY: element.pivot.y, strokeWidth: 1,\n opacity: element.style.opacity, dashArray: element.style.strokeDashArray || '',\n visible: element.visible, id: element.id\n };\n if (transform) {\n baseShapeAttributes.x += transform.tx;\n baseShapeAttributes.y += transform.ty;\n }\n return baseShapeAttributes;\n}\n/**\n * Get function\n *\n * @private\n * @param {Function | string} value - Type of the function.\n * @returns {Function} - Returns the function.\n */\nfunction getFunction(value) {\n if (value !== undefined) {\n if (typeof value === 'string') {\n value = getValue(value, window);\n }\n }\n return value;\n}\n/**\n * @private\n * @param {any} obj - Specified the annotation object.\n * @param {Function | string} additionalProp - Specified the annotation additional properties.\n * @param {string} key - Specified the annotation key value.\n * @returns {Object} - Returns the cloned object.\n */\n// eslint-disable-next-line\nfunction cloneObject(obj, additionalProp, key) {\n // eslint-disable-next-line\n var newObject = {};\n var keys = 'properties';\n var prop = 'propName';\n if (obj) {\n key = obj[\"\" + prop];\n var sourceObject = obj[\"\" + keys] || obj;\n var properties = [];\n properties = properties.concat(Object.keys(sourceObject));\n var customProperties = [];\n properties.push('version');\n if (key) {\n var propAdditional = getFunction(additionalProp);\n if (propAdditional) {\n customProperties = propAdditional(key);\n }\n else {\n customProperties = [];\n }\n properties = properties.concat(customProperties);\n }\n var internalProp = getInternalProperties(key);\n properties = properties.concat(internalProp);\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var property = properties_1[_i];\n if (property !== 'historyManager') {\n if (property !== 'wrapper') {\n // eslint-disable-next-line\n var isEventEmmitter = obj[property] && obj.hasOwnProperty('observers') ? true : false;\n if (!isEventEmmitter) {\n if (obj[\"\" + property] instanceof Array) {\n newObject[\"\" + property] = cloneArray((internalProp.indexOf(property) === -1 && obj[\"\" + key]) ? obj[\"\" + key][\"\" + property] : obj[\"\" + property], additionalProp, property);\n }\n else if (obj[\"\" + property] instanceof Array === false && obj[\"\" + property] instanceof HTMLElement) {\n newObject[\"\" + property] = obj[\"\" + property].cloneNode(true).innerHtml;\n }\n else if (obj[\"\" + property] instanceof Array === false && obj[\"\" + property] instanceof Object) {\n newObject[\"\" + property] = cloneObject((internalProp.indexOf(property) === -1 && obj[\"\" + key]) ? obj[\"\" + key][\"\" + property] : obj[\"\" + property]);\n }\n else {\n newObject[\"\" + property] = obj[\"\" + property];\n }\n }\n }\n else {\n if (obj[\"\" + property]) {\n newObject[\"\" + property] = {\n actualSize: {\n width: obj[\"\" + property].actualSize.width, height: obj[\"\" + property].actualSize.height\n }, offsetX: obj[\"\" + property].offsetX, offsetY: obj[\"\" + property].offsetY\n };\n }\n }\n }\n }\n }\n return newObject;\n}\n/**\n * @private\n * @param {Object[]} sourceArray - Specified the annotation source collections.\n * @param {Function | string} additionalProp - Specified the annotation additional properties.\n * @param {string} key - Specified the annotation key value.\n * @returns {Object[]} - Returns the cloned object array.\n */\nfunction cloneArray(sourceArray, additionalProp, key) {\n var clonedArray;\n if (sourceArray) {\n clonedArray = [];\n for (var i = 0; i < sourceArray.length; i++) {\n if (sourceArray[parseInt(i.toString(), 10)] instanceof Array) {\n clonedArray.push(sourceArray[parseInt(i.toString(), 10)]);\n }\n else if (sourceArray[parseInt(i.toString(), 10)] instanceof Object) {\n clonedArray.push(cloneObject(sourceArray[parseInt(i.toString(), 10)], additionalProp, key));\n }\n else {\n clonedArray.push(sourceArray[parseInt(i.toString(), 10)]);\n }\n }\n }\n return clonedArray;\n}\n/**\n * @private\n * @param {string} propName - Specified the annotation property name.\n * @returns {string[]} - Returns the internal properties.\n */\nfunction getInternalProperties(propName) {\n switch (propName) {\n case 'nodes':\n case 'children':\n return ['inEdges', 'outEdges', 'parentId', 'processId', 'nodeId', 'umlIndex', 'isPhase', 'isLane'];\n case 'connectors':\n return ['parentId'];\n case 'annotation':\n return ['nodeId'];\n case 'annotations':\n return ['nodeId'];\n case 'shape':\n return ['hasHeader'];\n }\n return [];\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {string} position - Specified the annotation position.\n * @hidden\n * @returns {Leader} - Returns the leader value.\n */\nfunction isLeader(obj, position) {\n var rotatedPoint;\n if (obj.shapeAnnotationType === 'Distance') {\n var leaderCount = 0;\n var newPoint1 = void 0;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var angle = Point.findAngle(obj.sourcePoint, obj.targetPoint);\n // eslint-disable-next-line\n var segment = obj.wrapper.children[i];\n if (segment.id.indexOf('leader') > -1) {\n var center = obj.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: obj.sourcePoint.x, y: obj.sourcePoint.y - obj.leaderHeight };\n center = obj.sourcePoint;\n }\n else {\n newPoint1 = { x: obj.targetPoint.x, y: obj.targetPoint.y - obj.leaderHeight };\n center = obj.targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n if (position === 'Leader' + leaderCount) {\n return { leader: 'leader' + leaderCount, point: rotatedPoint };\n }\n leaderCount++;\n }\n }\n }\n return { leader: '', point: rotatedPoint };\n}\n\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation points.\n * @returns {PointModel[]} - Returns the annotation points model array.\n */\nfunction getConnectorPoints(obj, points) {\n points = obj.vertexPoints;\n var newPoints = points.slice(0);\n if (newPoints && newPoints.length > 0) {\n obj.sourcePoint = newPoints[0];\n obj.targetPoint = newPoints[newPoints.length - 1];\n }\n return newPoints;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector model.\n * @param {PointModel[]} points - Specified the annotation points.\n * @returns {string} - Returns the annotation path value.\n */\nfunction getSegmentPath(connector, points) {\n var path = '';\n var getPt;\n var pts = [];\n var j = 0;\n while (j < points.length) {\n pts.push({ x: points[parseInt(j.toString(), 10)].x, y: points[parseInt(j.toString(), 10)].y });\n j++;\n }\n pts = clipDecorators(connector, pts);\n for (var k = 0; k < pts.length; k++) {\n getPt = pts[parseInt(k.toString(), 10)];\n if (k === 0) {\n path = 'M' + getPt.x + ' ' + getPt.y;\n }\n if (k > 0) {\n path += ' ' + 'L' + getPt.x + ' ' + getPt.y;\n }\n }\n return path;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector model.\n * @param {PointModel[]} points - Specified the annotation points.\n * @param {PathElement} element - Specified the annotation element.\n * @returns {PathElement} - Returns the annotation path element.\n */\nfunction updateSegmentElement(connector, points, element) {\n var bounds = new Rect();\n var segmentPath = getSegmentPath(connector, points);\n bounds = Rect.toBounds(points);\n element.width = bounds.width;\n element.height = bounds.height;\n element.offsetX = bounds.x + element.width / 2;\n element.offsetY = bounds.y + element.height / 2;\n element.data = segmentPath;\n if (connector.wrapper) {\n connector.wrapper.offsetX = element.offsetX;\n connector.wrapper.offsetY = element.offsetY;\n connector.wrapper.width = bounds.width;\n connector.wrapper.height = bounds.height;\n }\n return element;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector model.\n * @param {PathElement} segmentElement - Specified the annotation segment element.\n * @returns {PathElement} - Returns the annotation path element.\n */\nfunction getSegmentElement(connector, segmentElement) {\n var points = [];\n points = getConnectorPoints(connector);\n segmentElement.staticSize = true;\n segmentElement = updateSegmentElement(connector, points, segmentElement);\n setElementStype(connector, segmentElement);\n return segmentElement;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {DrawingElement} element - Specified the annotation drawing element.\n * @param {PointModel} pt - Specified the annotation point.\n * @param {PointModel} adjacentPoint - Specified the annotation adjacent point.\n * @param {boolean} isSource - Specified the is source value or not.\n * @returns {void}\n */\nfunction updateDecoratorElement(obj, element, pt, adjacentPoint, isSource) {\n element.offsetX = pt.x;\n element.offsetY = pt.y;\n var angle = Point.findAngle(pt, adjacentPoint);\n var getPath = getDecoratorShape(isSource ? obj.sourceDecoraterShapes : obj.taregetDecoraterShapes);\n var thickness = 0;\n var size;\n if (obj.shapeAnnotationType === 'LineWidthArrowHead') {\n thickness = obj.thickness;\n size = new Size(thickness * 12, thickness * 12);\n }\n else {\n thickness = obj.thickness <= 5 ? 5 : obj.thickness;\n size = new Size(thickness * 2, thickness * 2);\n }\n element.transform = RotateTransform.Self;\n setElementStype(obj, element);\n element.style.fill = (obj.fillColor !== 'tranparent') ? obj.fillColor : 'white';\n element.rotateAngle = angle;\n element.data = getPath;\n element.canMeasurePath = true;\n element.width = size.width;\n element.height = size.height;\n if (obj.sourceDecoraterShapes === 'Butt') {\n element.width = size.width - 10;\n element.height = size.height + 10;\n }\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel} offsetPoint - Specified the annotation offset point.\n * @param {PointModel} adjacentPoint - Specified the annotation adjacent point.\n * @param {boolean} isSource - Specified the is source value or not.\n * @returns {PathElement} - Returns the annotation path element.\n */\nfunction getDecoratorElement(obj, offsetPoint, adjacentPoint, isSource) {\n var decEle = new PathElement();\n updateDecoratorElement(obj, decEle, offsetPoint, adjacentPoint, isSource);\n return decEle;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation object.\n * @param {PointModel[]} pts - Specified the annotation point model array.\n * @returns {PointModel[]} - Returns the annotation point model array.\n */\nfunction clipDecorators(connector, pts) {\n pts[0] = clipDecorator(connector, pts, true);\n pts[pts.length - 1] = clipDecorator(connector, pts, false);\n return pts;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector object.\n * @param {PointModel[]} points - Specified the annotation offset point.\n * @param {boolean} isSource - Specified the is source value or not.\n * @returns {PointModel} - Returns the annotation point model.\n */\nfunction clipDecorator(connector, points, isSource) {\n var point = { x: 0, y: 0 };\n var start = { x: 0, y: 0 };\n var end = { x: 0, y: 0 };\n var length = points.length;\n start = !isSource ? points[length - 1] : points[0];\n end = !isSource ? points[length - 2] : points[1];\n var len = Point.distancePoints(start, end);\n len = (len === 0) ? 1 : len;\n var width = connector.thickness;\n point.x = (Math.round(start.x + width * (end.x - start.x) / len));\n point.y = (Math.round(start.y + width * (end.y - start.y) / len));\n var strokeWidth = 1;\n point = Point.adjustPoint(point, end, true, (strokeWidth / 2));\n return point;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @param {PdfViewer} pdfviewer - Specified the pdfviewer element.\n * @hidden\n * @returns {TextElement[]} - Returns the text element collections.\n */\n// eslint-disable-next-line max-len\nfunction initDistanceLabel(obj, points, measure, pdfviewer) {\n var labels = [];\n var angle = Point.findAngle(points[0], points[1]);\n var textele = textElement(obj, angle);\n if (!pdfviewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n textele.content = obj.notes;\n }\n else {\n textele.content = measure.setConversion(findPointsLength([points[0], points[1]]) * measure.pixelToPointFactor, obj);\n }\n textele.rotateValue = { y: -10, angle: angle };\n if (obj.enableShapeLabel === true) {\n textele.style.strokeColor = obj.labelBorderColor;\n textele.style.fill = obj.labelFillColor;\n textele.style.fontSize = obj.fontSize;\n textele.style.color = obj.fontColor;\n textele.style.fontFamily = obj.fontFamily;\n }\n labels.push(textele);\n return labels;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @hidden\n * @returns {string} - Returns the distance value.\n */\nfunction updateDistanceLabel(obj, points, measure) {\n var distance;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_1 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_1 && !isNullOrUndefined(textElement_1.content)) {\n distance = measure.setConversion(findPointsLength([points[0], points[1]]) * measure.pixelToPointFactor, obj);\n textElement_1.content = distance;\n textElement_1.childNodes[0].text = textElement_1.content;\n textElement_1.refreshTextElement();\n }\n }\n return distance;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @hidden\n * @returns {string} - Returns the radius label value.\n */\nfunction updateRadiusLabel(obj, measure) {\n var radius;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_2 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_2 && !isNullOrUndefined(textElement_2.content)) {\n radius = measure.setConversion((obj.bounds.width / 2) * measure.pixelToPointFactor, obj);\n textElement_2.content = radius;\n if (textElement_2.childNodes.length === 2) {\n textElement_2.childNodes[0].text = radius;\n textElement_2.childNodes.splice(textElement_2.childNodes.length - 1, 1);\n }\n else {\n textElement_2.childNodes[0].text = radius;\n }\n textElement_2.refreshTextElement();\n }\n }\n return radius;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @param {PdfViewer} pdfviewer - Specified the pdfviewer element.\n * @hidden\n * @returns {TextElement[]} - Returns the text element collections.\n */\n// eslint-disable-next-line max-len\nfunction initPerimeterLabel(obj, points, measure, pdfviewer) {\n var labels = [];\n var angle = Point.findAngle(points[0], points[1]);\n var textele = textElement(obj, angle);\n if (!pdfviewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n textele.content = obj.notes;\n }\n else {\n textele.content = measure.calculatePerimeter(obj);\n }\n if (obj.enableShapeLabel === true) {\n textele.style.strokeColor = obj.labelBorderColor;\n textele.style.fill = obj.labelFillColor;\n textele.style.fontSize = obj.fontSize;\n textele.style.color = obj.fontColor;\n textele.style.fontFamily = obj.fontFamily;\n }\n textele.rotateValue = { y: -10, angle: angle };\n labels.push(textele);\n return labels;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotation point model array.\n * @param {MeasureAnnotation} measure - Specified the measure annotation object.\n * @hidden\n * @returns {string} - Returns the perimeter label value.\n */\nfunction updatePerimeterLabel(obj, points, measure) {\n var perimeter;\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_3 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_3 && !isNullOrUndefined(textElement_3.content)) {\n perimeter = measure.calculatePerimeter(obj);\n textElement_3.content = perimeter;\n textElement_3.childNodes[0].text = textElement_3.content;\n textElement_3.refreshTextElement();\n }\n }\n return perimeter;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @hidden\n * @returns {void}\n */\nfunction removePerimeterLabel(obj) {\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_4 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_4 && !isNullOrUndefined(textElement_4.content)) {\n obj.wrapper.children.splice(i, 1);\n }\n }\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @hidden\n * @returns {void}\n */\nfunction updateCalibrateLabel(obj) {\n if (obj.wrapper && obj.wrapper.children) {\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var textElement_5 = obj.wrapper.children[parseInt(i.toString(), 10)];\n if (textElement_5 && !isNullOrUndefined(textElement_5.content)) {\n textElement_5.content = obj.notes;\n textElement_5.childNodes[0].text = textElement_5.content;\n textElement_5.refreshTextElement();\n }\n }\n }\n}\n/**\n * Used to find the path for polygon shapes\n *\n * @param {PointModel[]} collection - Specified the polygon annotaion points collection.\n * @hidden\n * @returns {string} - Returns the polygon annotation path.\n */\nfunction getPolygonPath(collection) {\n var path = '';\n var seg;\n path = 'M' + collection[0].x + ' ' + collection[0].y;\n var i;\n for (i = 1; i < collection.length; i++) {\n seg = collection[parseInt(i.toString(), 10)];\n path += 'L' + seg.x + ' ' + seg.y;\n }\n path += 'Z';\n return path;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {number} angle - Specified the annotaion rotation angle.\n * @hidden\n * @returns {TextElement} - Returns the annotation text element.\n */\nfunction textElement(obj, angle) {\n var textele = new TextElement();\n setElementStype(obj, textele);\n textele.style.fill = 'transparent';\n textele.id = randomId();\n textele.horizontalAlignment = 'Center';\n textele.rotateValue = { y: 10, angle: angle };\n textele.verticalAlignment = 'Top';\n textele.relativeMode = 'Object';\n textele.setOffsetWithRespectToBounds(.5, .5, 'Absolute');\n // eslint-disable-next-line\n textele.style.textWrapping = 'NoWrap';\n return textele;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel[]} points - Specified the annotaion leader points.\n * @hidden\n * @returns {PathElement[]} - Returns the annotation path elements.\n */\nfunction initLeaders(obj, points) {\n var leaders = [];\n var leader = initLeader(obj, points[0], points[1]);\n leaders.push(leader);\n leader = initLeader(obj, points[1], points[0], true);\n leaders.push(leader);\n return leaders;\n}\n/**\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {PointModel} point1 - Specified the annotaion leader point1.\n * @param {PointModel} point2 - Specified the annotaion leader point2.\n * @param {boolean} isSecondLeader - Specified the is second leader or not.\n * @hidden\n * @returns {PathElement} - Returns the annotation path element.\n */\nfunction initLeader(obj, point1, point2, isSecondLeader) {\n var element = new PathElement();\n element.offsetX = point1.x;\n element.offsetY = point1.y;\n var angle = Point.findAngle(point1, point2);\n var center = { x: (point1.x + point2.x) / 2, y: (point1.y + point2.y) / 2 };\n var matrix = identityMatrix();\n rotateMatrix(matrix, 0 - angle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, point1);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y - obj.leaderHeight };\n matrix = identityMatrix();\n rotateMatrix(matrix, angle, element.offsetX, element.offsetY);\n rotatedPoint = transformPointByMatrix(matrix, newPoint1);\n var finalPoint = { x: point1.x, y: point1.y };\n element.offsetX = finalPoint.x;\n element.offsetY = finalPoint.y;\n element.transform = RotateTransform.Self;\n var getPath = 'M' + point1.x + ',' + point1.y + ',L' + rotatedPoint.x + ',' + rotatedPoint.y + 'Z';\n var size = new Size(0, obj.leaderHeight);\n element.pivot.x = .5;\n if (isSecondLeader) {\n element.id = 'leader2_' + randomId();\n element.pivot.y = 0;\n }\n else {\n element.id = 'leader1_' + randomId();\n element.pivot.y = 1;\n }\n setElementStype(obj, element);\n element.rotateAngle = angle;\n element.data = getPath;\n element.canMeasurePath = true;\n element.width = size.width;\n element.height = size.height;\n return element;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the annotation connector object.\n * @param {PointModel} reference - Specified the pointer reference value.\n * @returns {boolean} - Returns true or false.\n */\nfunction isPointOverConnector(connector, reference) {\n var vertexPoints = connector.vertexPoints;\n if (!isNullOrUndefined(vertexPoints)) {\n for (var i = 0; i < vertexPoints.length - 1; i++) {\n var start = vertexPoints[parseInt(i.toString(), 10)];\n var end = vertexPoints[i + 1];\n var rect = Rect.toBounds([start, end]);\n rect.Inflate(10);\n if (rect.containsPoint(reference)) {\n var intersectinPt = findNearestPoint(reference, start, end);\n var segment1 = { x1: start.x, x2: end.x, y1: start.y, y2: end.y };\n var segment2 = { x1: reference.x, x2: intersectinPt.x, y1: reference.y, y2: intersectinPt.y };\n var intersectDetails = intersect3(segment1, segment2);\n if (intersectDetails.enabled) {\n var distance = Point.findLength(reference, intersectDetails.intersectPt);\n if (Math.abs(distance) < 10) {\n return true;\n }\n }\n else {\n var rect_1 = Rect.toBounds([reference, reference]);\n rect_1.Inflate(3);\n if (rect_1.containsPoint(start) || rect_1.containsPoint(end)) {\n return true;\n }\n }\n if (Point.equals(reference, intersectinPt)) {\n return true;\n }\n }\n }\n }\n return false;\n}\n/**\n * @param {PointModel} reference - Specified the pointer reference value.\n * @param {PointModel} start - Specified the pointer start value.\n * @param {PointModel} end - Specified the pointer end value.\n * @private\n * @returns {PointModel} - Returns annotation point model.\n */\nfunction findNearestPoint(reference, start, end) {\n var shortestPoint;\n var shortest = Point.findLength(start, reference);\n var shortest1 = Point.findLength(end, reference);\n if (shortest > shortest1) {\n shortestPoint = end;\n }\n else {\n shortestPoint = start;\n }\n var angleBWStAndEnd = Point.findAngle(start, end);\n var angleBWStAndRef = Point.findAngle(shortestPoint, reference);\n var r = Point.findLength(shortestPoint, reference);\n var vaAngle = angleBWStAndRef + ((angleBWStAndEnd - angleBWStAndRef) * 2);\n return {\n x: (shortestPoint.x + r * Math.cos(vaAngle * Math.PI / 180)),\n y: (shortestPoint.y + r * Math.sin(vaAngle * Math.PI / 180))\n };\n}\n/**\n * @param {DecoratorShapes} shape - Specified the annotation decorator shapes.\n * @hidden\n * @returns {string} - Returns the annotation decorator shape value.\n */\nfunction getDecoratorShape(shape) {\n // eslint-disable-next-line\n return decoratorShapes[shape];\n}\nvar decoratorShapes = {\n 'OpenArrow': 'M15.9,23 L5,16 L15.9,9 L17,10.7 L8.7,16 L17,21.3Z',\n 'Square': 'M0,0 L10,0 L10,10 L0,10 z',\n 'Fletch': 'M14.8,10c0,0-3.5,6,0.2,12c0,0-2.5-6-10.9-6C4.1,16,11.3,16,14.8,10z',\n 'OpenFetch': 'M6,17c-0.6,0-1-0.4-1-1s0.4-1,1-1c10.9,0,11-5,11-5' +\n 'c0-0.6,0.4-1,1-1s1,0.4,1,1C19,10.3,18.9,17,6,17C6,17,6,17,6,17z ' +\n 'M18,23c-0.5,0-1-0.4-1-1c0-0.2-0.3-5-11-5c-0.6,0-1-0.5-1-1s0.4-1,1-1c0,0,0,0,0,0' +\n 'c12.9,0,13,6.7,13,7 C19,22.6,18.6,23,18,23z',\n 'IndentedArrow': 'M17,10c0,0-4.5,5.5,0,12L5,16L17,10z',\n 'OutdentedArrow': 'M14.6,10c0,0,5.4,6,0,12L5,16L14.6,10z',\n 'DoubleArrow': 'M19,10 L19,22 L13,16Z M12,10 L12,22 L6,16Z',\n 'Arrow': 'M15,10 L15,22 L5,16Z',\n 'Diamond': 'M12,23l-7-7l7-7l6.9,7L12,23z',\n 'Circle': 'M0,50 A50,50,0 1 1 100,50 A50,50,0 1 1 0,50 Z',\n 'Butt': 'M0,0 L0,90'\n};\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * HTMLElement defines the basic html elements\n */\nvar DiagramHtmlElement = /** @__PURE__ @class */ (function (_super) {\n __extends$2(DiagramHtmlElement, _super);\n /**\n * set the id for each element\n *\n * @param {string} nodeTemplate - Set the id for each element.\n * @returns {void}\n *\n * @private\n */\n function DiagramHtmlElement(nodeTemplate) {\n var _this = _super.call(this) || this;\n _this.templateFn = _this.templateCompiler(nodeTemplate);\n return _this;\n }\n DiagramHtmlElement.prototype.templateCompiler = function (template) {\n if (template) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n try {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n };\n /**\n * getNodeTemplate method \\\n *\n * @returns { Function } getNodeTemplate method .\\\n *\n * @private\n */\n DiagramHtmlElement.prototype.getNodeTemplate = function () {\n return this.templateFn;\n };\n return DiagramHtmlElement;\n}(DrawingElement));\n\n/**\n * Renderer module is used to render basic diagram elements\n *\n * @hidden\n */\nvar Drawing = /** @__PURE__ @class */ (function () {\n function Drawing(viewer) {\n this.isDynamicStamps = false;\n this.pdfViewer = viewer;\n this.renderer = new DrawingRenderer('this.pdfViewer.element.id', false);\n this.svgRenderer = new SvgRenderer();\n }\n /**\n * @private\n * @param {PdfViewer} viewer - Specified the pdfViewer element.\n * @returns {void}\n */\n Drawing.prototype.renderLabels = function (viewer) {\n var annotations = viewer.annotations;\n if (annotations) {\n for (var i = 0; i < annotations.length; i++) {\n var annotation = annotations[parseInt(i.toString(), 10)];\n this.initObject(annotation);\n }\n }\n };\n Drawing.prototype.createNewZindexTable = function (pageId) {\n var zIndexTable = new ZOrderPageTable();\n this.pdfViewer.zIndex++;\n zIndexTable.pageId = this.pdfViewer.zIndex;\n this.pdfViewer.zIndexTable.push(zIndexTable);\n return zIndexTable;\n };\n /**\n * @private\n * @param {number} pageId - Specified the page Id.\n * @returns {ZOrderPageTable} - Returns the ZOrder page table.\n */\n Drawing.prototype.getPageTable = function (pageId) {\n var zIndexTable;\n if (this.pdfViewer.zIndexTable.length !== undefined) {\n var notFound = true;\n for (var i = 0; i < this.pdfViewer.zIndexTable.length; i++) {\n if (this.pdfViewer.zIndexTable[parseInt(i.toString(), 10)].pageId === pageId) {\n notFound = false;\n zIndexTable = this.pdfViewer.zIndexTable[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (notFound) {\n zIndexTable = this.createNewZindexTable(pageId);\n zIndexTable.pageId = pageId;\n }\n }\n else {\n zIndexTable = this.createNewZindexTable(pageId);\n }\n return zIndexTable;\n };\n /**\n * @private\n * @param {number} index - Specified the page index value.\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {void}\n */\n Drawing.prototype.setZIndex = function (index, obj) {\n if (obj.pageIndex !== undefined) {\n var pageTable = this.getPageTable(obj.pageIndex);\n if (obj.zIndex === -1) {\n pageTable.zIndex++;\n obj.zIndex = pageTable.zIndex;\n pageTable.objects.push(obj);\n }\n else {\n var index_1 = obj.zIndex;\n var tabelLength = pageTable.objects.length;\n obj.zIndex = tabelLength++;\n pageTable.objects.push(obj);\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation object.\n * @returns {PdfAnnotationBaseModel | PdfFormFieldBaseModel} - Returns the annotaion or form fields model.\n */\n Drawing.prototype.initObject = function (obj) {\n //Move the common properties like zindex and id to an abstract class\n this.setZIndex(this.pdfViewer.zIndex, obj);\n createMeasureElements();\n if (!isLineShapes(obj)) {\n this.initNode(obj);\n }\n else {\n this.initLine(obj);\n obj.wrapper.measure(new Size(undefined, undefined));\n obj.wrapper.arrange(obj.wrapper.desiredSize);\n }\n if (obj.wrapper === null) {\n //Init default wrapper\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.pdfViewer.nameTable[obj.id] = obj;\n if (obj.formFieldAnnotationType) {\n this.nodePropertyChange(obj, { bounds: { width: obj.bounds.width, height: obj.bounds.height } });\n }\n //Add some methodologies to add the children of group to name table\n return obj;\n };\n Drawing.prototype.initNode = function (obj) {\n var canvas = this.initContainer(obj);\n var content;\n if (!canvas.children) {\n canvas.children = [];\n }\n if (!content) {\n content = this.init(obj, canvas);\n }\n //canvas.children.push(content);\n canvas.rotateAngle = obj.rotateAngle;\n // eslint-disable-next-line max-len\n canvas.measure(new Size(obj.wrapper.width, obj.wrapper.height));\n canvas.arrange(canvas.desiredSize);\n if (this.isDynamicStamps) {\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(obj, null, 'dynamicStamp');\n this.isDynamicStamps = false;\n }\n };\n /**\n * Allows to initialize the UI of a node\n */\n /**\n * @private\n * @param {PdfAnnotationBaseModel | PdfFormFieldBaseModel} obj - Specified the annotation object.\n * @param {Container} canvas - Specified the canvas element.\n * @returns {DrawingElement} - Returns the drawing element.\n */\n Drawing.prototype.init = function (obj, canvas) {\n var content;\n content = new DrawingElement();\n var pathContent;\n var basicElement;\n var isStamp = false;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule ? this.pdfViewer.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n var isAnnotationSet = false;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n isAnnotationSet = true;\n }\n if (obj.formFieldAnnotationType) {\n content = this.initFormFields(obj, content, canvas);\n }\n else {\n // eslint-disable-next-line max-len\n content = this.initAnnotationObject(obj, pathContent, content, canvas, isStamp, basicElement, isAnnotationSet, annotationMaxHeight, annotationMaxWidth, annotationMinWidth, annotationMinHeight);\n }\n content.id = obj.id + '_content';\n content.relativeMode = 'Object';\n if (obj.shapeAnnotationType !== 'Stamp') {\n if (obj.bounds.width !== undefined) {\n content.width = obj.bounds.width;\n if (isAnnotationSet) {\n if ((content.width < annotationMinWidth) || (content.width > annotationMaxWidth)) {\n if (content.width < annotationMinWidth) {\n content.width = annotationMinWidth;\n }\n if (content.width > annotationMaxWidth) {\n content.width = annotationMaxWidth;\n }\n }\n }\n }\n content.horizontalAlignment = 'Stretch';\n if (obj.bounds.height !== undefined) {\n content.height = obj.bounds.height;\n if (isAnnotationSet) {\n if ((content.height < annotationMinHeight) || (content.width > annotationMaxHeight)) {\n if (content.height < annotationMinHeight) {\n content.height = annotationMinHeight;\n }\n if (content.height > annotationMaxHeight) {\n content.height = annotationMaxHeight;\n }\n }\n }\n }\n setElementStype(obj, content);\n if (this.pdfViewer.viewerBase.drawSignatureWithTool && obj.shapeAnnotationType === 'SignatureText') {\n content.style.strokeWidth = 0;\n }\n }\n content.isRectElement = true;\n content.verticalAlignment = 'Stretch';\n return content;\n };\n Drawing.prototype.initFormFields = function (obj, content, canvas) {\n switch (obj.formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'Checkbox':\n case 'RadioButton':\n case 'DropdownList':\n case 'ListBox':\n case 'SignatureField':\n case 'InitialField':\n // eslint-disable-next-line\n var htmlContent = new DiagramHtmlElement();\n content = htmlContent;\n content.id = obj.id + '_content';\n canvas.children.push(content);\n break;\n }\n return content;\n };\n // eslint-disable-next-line\n Drawing.prototype.initAnnotationObject = function (obj, pathContent, content, canvas, isStamp, basicElement, isAnnotationSet, annotationMaxHeight, annotationMaxWidth, annotationMinWidth, annotationMinHeight) {\n switch (obj.shapeAnnotationType) {\n case 'Ellipse':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n canvas.children.push(content);\n if (obj.enableShapeLabel) {\n var textLabel = this.textElement(obj);\n textLabel.content = obj.labelContent;\n textLabel.style.color = obj.fontColor;\n textLabel.style.strokeColor = obj.labelBorderColor;\n textLabel.style.fill = obj.labelFillColor;\n textLabel.style.fontSize = obj.fontSize;\n textLabel.style.fontFamily = obj.fontFamily;\n textLabel.style.opacity = obj.labelOpacity;\n canvas.children.push(textLabel);\n }\n break;\n case 'Path':\n pathContent = new PathElement();\n pathContent.data = obj.data;\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'HandWrittenSignature':\n case 'Ink':\n pathContent = new PathElement();\n pathContent.data = obj.data;\n pathContent.style.strokeColor = obj.strokeColor;\n pathContent.style.strokeWidth = obj.thickness;\n pathContent.style.opacity = obj.opacity;\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'Polygon':\n pathContent = new PathElement();\n pathContent.data = getPolygonPath(obj.vertexPoints);\n content = pathContent;\n canvas.children.push(content);\n break;\n case 'Stamp':\n isStamp = true;\n this.isDynamicStamps = true;\n if (obj && obj.annotationAddMode && (obj.annotationAddMode === 'Existing Annotation' || obj.annotationAddMode === 'Imported Annotation')) {\n obj.bounds.width = obj.bounds.width - 20;\n obj.bounds.height = obj.bounds.height - 20;\n }\n if (obj.isDynamicStamp) {\n canvas.horizontalAlignment = 'Left';\n basicElement = new DrawingElement();\n content = basicElement;\n content.cornerRadius = 10;\n content.style.fill = obj.stampFillColor;\n content.style.strokeColor = obj.stampStrokeColor;\n canvas.children.push(content);\n var textele_1 = this.textElement(obj);\n textele_1 = new TextElement();\n textele_1.style.fontFamily = 'Helvetica';\n textele_1.style.fontSize = 14;\n textele_1.style.italic = true;\n textele_1.style.bold = true;\n textele_1.style.color = obj.fillColor;\n textele_1.rotateValue = undefined;\n textele_1.content = obj.dynamicText;\n textele_1.relativeMode = 'Point';\n textele_1.margin.left = 10;\n textele_1.margin.bottom = -7;\n textele_1.setOffsetWithRespectToBounds(0, 0.57, null);\n textele_1.relativeMode = 'Point';\n canvas.children.push(textele_1);\n // eslint-disable-next-line\n var pathContent1 = new PathElement();\n pathContent1.id = randomId() + '_stamp';\n pathContent1.data = obj.data;\n pathContent1.width = obj.bounds.width;\n if (isAnnotationSet && (obj.bounds.width > annotationMaxWidth)) {\n pathContent1.width = annotationMaxWidth;\n obj.bounds.width = annotationMaxWidth;\n }\n pathContent1.height = obj.bounds.height / 2;\n if (isAnnotationSet && (obj.bounds.height > annotationMaxHeight)) {\n pathContent1.height = annotationMaxHeight / 2;\n obj.bounds.height = annotationMaxHeight / 2;\n }\n pathContent1.rotateValue = undefined;\n pathContent1.margin.left = 10;\n pathContent1.margin.bottom = -5;\n pathContent1.relativeMode = 'Point';\n pathContent1.setOffsetWithRespectToBounds(0, 0.1, null);\n // eslint-disable-next-line\n var content1 = pathContent1;\n pathContent1.style.fill = obj.fillColor;\n pathContent1.style.strokeColor = obj.strokeColor;\n pathContent1.style.opacity = obj.opacity;\n content.width = obj.bounds.width + 20;\n content.height = obj.bounds.height + 20;\n content.style.opacity = obj.opacity;\n canvas.children.push(content1);\n }\n else {\n canvas.horizontalAlignment = 'Left';\n basicElement = new DrawingElement();\n content = basicElement;\n content.cornerRadius = 10;\n content.style.fill = obj.stampFillColor;\n content.style.strokeColor = obj.stampStrokeColor;\n canvas.children.push(content);\n // eslint-disable-next-line\n var pathContent1 = new PathElement();\n pathContent1.id = randomId() + '_stamp';\n pathContent1.data = obj.data;\n pathContent1.width = obj.bounds.width;\n if (isAnnotationSet && (obj.bounds.width > annotationMaxWidth)) {\n pathContent1.width = annotationMaxWidth;\n obj.bounds.width = annotationMaxWidth;\n }\n pathContent1.height = obj.bounds.height;\n if (isAnnotationSet && (obj.bounds.height > annotationMaxHeight)) {\n pathContent1.height = annotationMaxHeight;\n obj.bounds.height = annotationMaxHeight;\n }\n pathContent1.minWidth = pathContent1.width / 2;\n pathContent1.minHeight = pathContent1.height / 2;\n // eslint-disable-next-line\n var content1 = pathContent1;\n pathContent1.style.fill = obj.fillColor;\n pathContent1.style.strokeColor = obj.strokeColor;\n pathContent1.style.opacity = obj.opacity;\n content.width = obj.bounds.width + 20;\n content.height = obj.bounds.height + 20;\n content.minWidth = pathContent1.width / 2;\n content.minHeight = pathContent1.height / 2;\n content.style.opacity = obj.opacity;\n canvas.children.push(content1);\n canvas.minHeight = content.minHeight + 20;\n canvas.minWidth = content.minWidth + 20;\n }\n break;\n case 'Image':\n case 'SignatureImage':\n // eslint-disable-next-line\n var pathContent11 = new ImageElement();\n pathContent11.source = obj.data;\n content = pathContent11;\n content.style.strokeWidth = 0;\n canvas.children.push(content);\n break;\n case 'Rectangle':\n basicElement = new DrawingElement();\n content = basicElement;\n canvas.children.push(content);\n if (obj.enableShapeLabel) {\n var textLabel = this.textElement(obj);\n textLabel.content = obj.labelContent;\n textLabel.style.color = obj.fontColor;\n textLabel.style.strokeColor = obj.labelBorderColor;\n textLabel.style.fill = obj.labelFillColor;\n textLabel.style.fontSize = obj.fontSize;\n textLabel.style.fontFamily = obj.fontFamily;\n textLabel.style.opacity = obj.labelOpacity;\n canvas.children.push(textLabel);\n }\n break;\n case 'Perimeter':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n setElementStype(obj, pathContent);\n canvas.children.push(content);\n basicElement = new DrawingElement();\n basicElement.id = 'perimeter_' + randomId();\n basicElement.height = .2;\n basicElement.width = .2;\n basicElement.transform = RotateTransform.Self;\n basicElement.horizontalAlignment = 'Stretch';\n this.setNodePosition(basicElement, obj);\n basicElement.rotateAngle = obj.rotateAngle;\n setElementStype(obj, basicElement);\n canvas.children.push(basicElement);\n // eslint-disable-next-line\n var textele = this.textElement(obj);\n textele = new TextElement();\n textele.content = textele.content = findPointsLength([\n { x: obj.bounds.x, y: obj.bounds.y },\n { x: obj.bounds.x + obj.bounds.width, y: obj.bounds.y + obj.bounds.height }\n ]).toString();\n textele.rotateValue = { y: -10, angle: obj.rotateAngle };\n canvas.children.push(textele);\n break;\n case 'Radius':\n pathContent = new PathElement();\n pathContent.data = 'M80.5,12.5 C80.5,19.127417 62.59139,24.5 40.5,24.5 C18.40861,24.5 0.5,19.127417 0.5,12.5' +\n 'C0.5,5.872583 18.40861,0.5 40.5,0.5 C62.59139,0.5 80.5,5.872583 80.5,12.5 z';\n content = pathContent;\n setElementStype(obj, pathContent);\n canvas.children.push(content);\n basicElement = new DrawingElement();\n basicElement.id = 'radius_' + randomId();\n basicElement.height = .2;\n basicElement.width = obj.bounds.width / 2;\n basicElement.transform = RotateTransform.Self;\n this.setNodePosition(basicElement, obj);\n basicElement.rotateAngle = obj.rotateAngle;\n setElementStype(obj, basicElement);\n canvas.children.push(basicElement);\n // eslint-disable-next-line\n var radiusTextEle = this.textElement(obj);\n if (obj.enableShapeLabel) {\n radiusTextEle.style.color = obj.fontColor;\n radiusTextEle.style.strokeColor = obj.labelBorderColor;\n radiusTextEle.style.fill = obj.labelFillColor;\n radiusTextEle.style.fontSize = obj.fontSize;\n radiusTextEle.style.fontFamily = obj.fontFamily;\n radiusTextEle.style.opacity = obj.labelOpacity;\n }\n // eslint-disable-next-line\n var length_1 = findPointsLength([\n { x: obj.bounds.x, y: obj.bounds.y },\n { x: obj.bounds.x + obj.bounds.width, y: obj.bounds.y + obj.bounds.height }\n ]);\n if (!this.pdfViewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n radiusTextEle.content = obj.notes;\n }\n else {\n // eslint-disable-next-line max-len\n radiusTextEle.content = this.pdfViewer.annotation.measureAnnotationModule.setConversion((obj.bounds.width / 2) * this.pdfViewer.annotation.measureAnnotationModule.pixelToPointFactor, obj);\n }\n radiusTextEle.rotateValue = { y: -10, x: obj.bounds.width / 4, angle: obj.rotateAngle };\n canvas.children.push(radiusTextEle);\n break;\n case 'StickyNotes':\n // eslint-disable-next-line\n var pathContent2 = new ImageElement();\n pathContent2.source = obj.data;\n pathContent2.width = obj.bounds.width;\n pathContent2.height = obj.bounds.height;\n pathContent2.style.strokeColor = obj.strokeColor;\n pathContent2.style.strokeWidth = 0;\n content = pathContent2;\n canvas.children.push(content);\n break;\n case 'SignatureText':\n //eslint-disable-next-line\n var rectElements = new DrawingElement();\n rectElements.style.strokeWidth = 0;\n content = rectElements;\n content.style.strokeWidth = 0;\n canvas.style.strokeWidth = 0;\n canvas.children.push(content);\n // eslint-disable-next-line\n var signatureText = this.textElement(obj);\n signatureText.style.fontFamily = obj.fontFamily;\n signatureText.style.fontSize = obj.fontSize;\n signatureText.style.textAlign = 'Left';\n signatureText.rotateValue = undefined;\n signatureText.content = obj.data;\n signatureText.style.strokeWidth = 0;\n canvas.children.push(signatureText);\n break;\n case 'FreeText':\n // eslint-disable-next-line\n var rectElement = new DrawingElement();\n content = rectElement;\n canvas.children.push(content);\n // eslint-disable-next-line\n var freeTextEle = this.textElement(obj);\n freeTextEle = new TextElement();\n freeTextEle.style.fontFamily = obj.fontFamily;\n freeTextEle.style.fontSize = obj.fontSize;\n freeTextEle.style.textAlign = 'Left';\n if (obj.textAlign.toLowerCase() === 'center') {\n freeTextEle.style.textAlign = 'Center';\n }\n else if (obj.textAlign.toLowerCase() === 'right') {\n freeTextEle.style.textAlign = 'Right';\n }\n else if (obj.textAlign.toLowerCase() === 'justify') {\n freeTextEle.style.textAlign = 'Justify';\n }\n freeTextEle.style.color = obj.fontColor;\n freeTextEle.style.bold = obj.font.isBold;\n freeTextEle.style.italic = obj.font.isItalic;\n if (obj.font.isUnderline === true) {\n freeTextEle.style.textDecoration = 'Underline';\n }\n else if (obj.font.isStrikeout === true) {\n freeTextEle.style.textDecoration = 'LineThrough';\n }\n freeTextEle.rotateValue = undefined;\n freeTextEle.content = obj.dynamicText;\n freeTextEle.style.opacity = obj.opacity;\n freeTextEle.margin.left = 4;\n freeTextEle.margin.top = 5 * (obj.fontSize / 16);\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n freeTextEle.style.textWrapping = 'Wrap';\n }\n else {\n freeTextEle.style.textWrapping = 'WrapWithOverflow';\n }\n freeTextEle.relativeMode = 'Point';\n freeTextEle.setOffsetWithRespectToBounds(0, 0, null);\n freeTextEle.relativeMode = 'Point';\n canvas.children.push(freeTextEle);\n break;\n }\n content.id = obj.id + '_content';\n content.relativeMode = 'Object';\n if (!isStamp) {\n if (obj.bounds.width !== undefined) {\n content.width = obj.bounds.width;\n if (isAnnotationSet) {\n if ((content.width < annotationMinWidth) || (content.width > annotationMaxWidth)) {\n if (content.width < annotationMinWidth) {\n content.width = annotationMinWidth;\n }\n if (content.width > annotationMaxWidth) {\n content.width = annotationMaxWidth;\n }\n }\n }\n }\n content.horizontalAlignment = 'Stretch';\n if (obj.bounds.height !== undefined) {\n content.height = obj.bounds.height;\n if (isAnnotationSet) {\n if ((content.height < annotationMinHeight) || (content.width > annotationMaxHeight)) {\n if (content.height < annotationMinHeight) {\n content.height = annotationMinHeight;\n }\n if (content.height > annotationMaxHeight) {\n content.height = annotationMaxHeight;\n }\n }\n }\n }\n setElementStype(obj, content);\n }\n content.isRectElement = true;\n content.verticalAlignment = 'Stretch';\n return content;\n };\n Drawing.prototype.textElement = function (obj) {\n var textele = new TextElement();\n setElementStype(obj, textele);\n textele.horizontalAlignment = 'Center';\n obj.shapeAnnotationType === 'SignatureText' ? textele.verticalAlignment = 'Center' : textele.verticalAlignment = 'Top';\n textele.relativeMode = 'Object';\n textele.setOffsetWithRespectToBounds(.5, .5, 'Absolute');\n return textele;\n };\n /**\n * @private\n * @param {DrawingElement} obj - Specified the drawing element.\n * @param {PdfAnnotationBaseModel} node - Specified the node element.\n * @returns {void}\n */\n Drawing.prototype.setNodePosition = function (obj, node) {\n if (node.shapeAnnotationType === 'Perimeter') {\n obj.offsetX = node.bounds.x + node.bounds.width / 2;\n obj.offsetY = node.bounds.y + node.bounds.height / 2;\n }\n else if (node.shapeAnnotationType === 'Radius') {\n // eslint-disable-next-line max-len\n var trasPoint = { x: node.bounds.x + (node.bounds.width / 2) + (node.bounds.width / 4), y: node.bounds.y + (node.bounds.height / 2) };\n var center = { x: (node.bounds.x + (node.bounds.width / 2)), y: (node.bounds.y + (node.bounds.height / 2)) };\n var matrix = identityMatrix();\n rotateMatrix(matrix, node.rotateAngle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, trasPoint);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y };\n obj.offsetX = newPoint1.x;\n obj.offsetY = newPoint1.y;\n obj.width = node.bounds.width / 2;\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {Container} - Returns the container element.\n */\n Drawing.prototype.initContainer = function (obj) {\n if (!obj.id) {\n obj.id = randomId();\n }\n // Creates canvas element\n var canvas = new Canvas();\n canvas.id = obj.id;\n canvas.offsetX = obj.bounds.x + (obj.bounds.width * 0.5);\n canvas.offsetY = obj.bounds.y + (obj.bounds.height * 0.5);\n canvas.style.fill = 'transparent';\n canvas.style.strokeColor = 'transparent';\n canvas.rotateAngle = obj.rotateAngle;\n obj.wrapper = canvas;\n return canvas;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {Canvas} - Returns the canvas element.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n Drawing.prototype.initLine = function (obj) {\n if (!obj.id) {\n obj.id = randomId();\n }\n var container = new Canvas();\n var segment = new PathElement();\n segment.id = obj.id + '_path';\n var srcDecorator = new PathElement();\n var targetDecorator = new PathElement();\n if (obj.vertexPoints.length) {\n obj.sourcePoint = obj.vertexPoints[0];\n obj.targetPoint = obj.vertexPoints[obj.vertexPoints.length - 1];\n for (var i = 0; i < obj.vertexPoints.length; i++) {\n if (i !== 0 && i !== obj.vertexPoints.length - 1) {\n obj.segments.push(obj.vertexPoints[parseInt(i.toString(), 10)]);\n }\n }\n }\n segment = getSegmentElement(obj, segment);\n var points = [];\n points = getConnectorPoints(obj);\n // points = this.clipDecorators(this, points);\n var leaders = [];\n var labels = [];\n if (obj.shapeAnnotationType === 'Distance') {\n leaders = initLeaders(obj, points);\n labels = initDistanceLabel(obj, points, this.pdfViewer.annotation.measureAnnotationModule, this.pdfViewer);\n }\n if ((obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead') && obj.measureType === 'Perimeter') {\n labels = initPerimeterLabel(obj, points, this.pdfViewer.annotation.measureAnnotationModule, this.pdfViewer);\n }\n if (obj.enableShapeLabel === true && !(obj.shapeAnnotationType === 'Distance') && !(obj.measureType === 'Perimeter')) {\n var angle = Point.findAngle(points[0], points[1]);\n var textele = this.textElement(obj);\n textele.id = randomId();\n if (!this.pdfViewer.enableImportAnnotationMeasurement && obj.notes && obj.notes !== '') {\n textele.content = obj.notes;\n }\n else {\n textele.content = obj.labelContent;\n }\n textele.style.strokeColor = obj.labelBorderColor;\n textele.style.fill = obj.labelFillColor;\n textele.style.fontSize = obj.fontSize;\n textele.style.color = obj.fontColor;\n textele.style.fontFamily = obj.fontFamily;\n textele.style.opacity = obj.labelOpacity;\n textele.rotateValue = { y: -10, angle: angle };\n labels.push(textele);\n }\n points = clipDecorators(obj, points);\n var bounds = Rect.toBounds(points);\n container.width = bounds.width;\n container.height = bounds.height;\n container.offsetX = bounds.x + container.pivot.x * bounds.width;\n container.offsetY = bounds.y + container.pivot.y * bounds.height;\n var anglePoints = obj.vertexPoints;\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead' || obj.shapeAnnotationType === 'Distance') {\n srcDecorator = getDecoratorElement(obj, points[0], anglePoints[1], true);\n targetDecorator = getDecoratorElement(obj, points[points.length - 1], anglePoints[anglePoints.length - 2], false);\n }\n srcDecorator.id = obj.id + '_srcDec';\n targetDecorator.id = obj.id + '_tarDec';\n /* eslint-disable @typescript-eslint/dot-notation */\n segment.style['fill'] = 'transparent';\n container.style.strokeColor = 'transparent';\n container.style.fill = 'transparent';\n container.style.strokeWidth = 0;\n container.children = [];\n setElementStype(obj, segment);\n container.children.push(segment);\n if (leaders.length > 0) {\n for (var i = 0; i < leaders.length; i++) {\n container.children.push(leaders[parseInt(i.toString(), 10)]);\n }\n }\n if (labels.length > 0) {\n for (var i = 0; i < labels.length; i++) {\n container.children.push(labels[parseInt(i.toString(), 10)]);\n }\n }\n container.children.push(srcDecorator);\n container.children.push(targetDecorator);\n if (obj.shapeAnnotationType === 'LineWidthArrowHead') {\n container.children[1].width = 12 * obj.thickness;\n container.children[1].height = 12 * obj.thickness;\n container.children[2].width = 12 * obj.thickness;\n container.children[2].height = 12 * obj.thickness;\n }\n container.id = obj.id;\n container.offsetX = segment.offsetX;\n container.offsetY = segment.offsetY;\n container.width = segment.width;\n container.height = segment.height;\n points = getConnectorPoints(obj);\n obj.wrapper = container;\n return container;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {PdfAnnotationBaseModel} - Returns the added annotaion object.\n */\n Drawing.prototype.add = function (obj) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (obj.formFieldAnnotationType && this.pdfViewer.formDesignerModule) {\n obj = new PdfFormFieldBase(this.pdfViewer, 'formFields', obj, true);\n obj = this.initObject(obj);\n this.pdfViewer.formFields.push(obj);\n }\n else {\n obj = new PdfAnnotationBase(this.pdfViewer, 'annotations', obj, true);\n obj = this.initObject(obj);\n this.pdfViewer.annotations.push(obj);\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n return obj;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @returns {void}\n */\n Drawing.prototype.remove = function (obj) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var index = obj.pageIndex;\n for (var i = 0; i < this.pdfViewer.annotations.length; i++) {\n var annotation = this.pdfViewer.annotations[parseInt(i.toString(), 10)];\n if ((annotation.id && (annotation.id === obj.id || annotation.id.split('_')[0] === obj.id)) || (annotation.wrapper && annotation.wrapper.id === obj.id)) {\n this.pdfViewer.annotations.splice(i, 1);\n var objects = this.getPageObjects(obj.pageIndex);\n for (var j = 0; j < objects.length; j++) {\n if (objects[parseInt(j.toString(), 10)].id === obj.id) {\n objects.splice(j, 1);\n if (obj.shapeAnnotationType === 'Path' || obj.shapeAnnotationType === 'SignatureImage' || obj.shapeAnnotationType === 'SignatureText') {\n this.refreshCanvasDiagramLayer(undefined, index, obj.id);\n }\n else {\n this.pdfViewer.renderDrawing(undefined, index);\n }\n }\n }\n // need to add code snippet to remove from z index table \n }\n }\n for (var i = 0; i < this.pdfViewer.formFields.length; i++) {\n var element = this.pdfViewer.formFields[parseInt(i.toString(), 10)];\n if (element.id === obj.id || element.wrapper.id === obj.id) {\n this.pdfViewer.formFields.splice(i, 1);\n if (this.pdfViewer.formDesignerModule && obj.formFieldAnnotationType) {\n this.pdfViewer.formFieldCollection.splice(i, 1);\n }\n var objects = this.getPageObjects(obj.pageIndex);\n for (var j = 0; j < objects.length; j++) {\n if (objects[parseInt(j.toString(), 10)].id === obj.id) {\n objects.splice(j, 1);\n break;\n }\n if (objects[parseInt(j.toString(), 10)] && objects[parseInt(j.toString(), 10)].id && objects[parseInt(j.toString(), 10)].id.indexOf(obj.id) !== -1) {\n objects.splice(j, 1);\n }\n }\n }\n }\n if (obj.formFieldAnnotationType === 'Textbox' || obj.formFieldAnnotationType === 'Checkbox' || obj.formFieldAnnotationType === 'RadioButton'\n || obj.formFieldAnnotationType === 'PasswordField' || obj.formFieldAnnotationType === 'DropdownList' || obj.formFieldAnnotationType === 'ListBox' || obj.formFieldAnnotationType === 'SignatureField' || obj.formFieldAnnotationType === 'InitialField') {\n for (var i = 0; i < this.pdfViewer.formFieldCollections.length; i++) {\n // eslint-disable-next-line\n var element = this.pdfViewer.formFieldCollections[i];\n if (element.id === obj.id) {\n this.pdfViewer.formFieldCollections.splice(i, 1);\n }\n }\n }\n if (obj.formFieldAnnotationType === 'Textbox' || obj.formFieldAnnotationType === 'Checkbox' || obj.formFieldAnnotationType === 'RadioButton'\n || obj.formFieldAnnotationType === 'PasswordField' || obj.formFieldAnnotationType === 'DropdownList' || obj.formFieldAnnotationType === 'ListBox' || obj.formFieldAnnotationType === 'SignatureField' || obj.formFieldAnnotationType === 'InitialField') {\n // eslint-disable-next-line\n var inputField = document.getElementById('form_field_' + obj.id + '_content_html_element');\n if (inputField) {\n inputField.remove();\n this.pdfViewer.renderDrawing(undefined, index);\n var field = {\n // eslint-disable-next-line\n name: obj.name, id: obj.id, value: obj.value, fontFamily: obj.fontFamily, fontSize: obj.fontSize, fontStyle: obj.fontStyle,\n // eslint-disable-next-line\n color: obj.color, backgroundColor: obj.backgroundColor, alignment: obj.alignment, isReadonly: obj.isReadonly, visibility: obj.visibility,\n // eslint-disable-next-line\n maxLength: obj.maxLength, isRequired: obj.isRequired, isPrint: obj.isPrint, rotation: obj.rotateAngle, tooltip: obj.tooltip,\n // eslint-disable-next-line\n options: obj.options, isChecked: obj.isChecked, isSelected: obj.isSelected\n };\n this.pdfViewer.fireFormFieldRemoveEvent('formFieldRemove', field, obj.pageIndex);\n this.pdfViewer.formDesignerModule.removeFieldsFromAnnotationCollections(obj.id);\n }\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n * @param {number} pageIndex - Specified the page index.\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation base model collections.\n */\n Drawing.prototype.getPageObjects = function (pageIndex) {\n var pageTable = this.getPageTable(pageIndex);\n return pageTable.objects;\n };\n /**\n * @private\n * @param {HTMLCanvasElement} diagramLayer - Specified the diagram layer element.\n * @param {number} pageIndex - Specified the page index.\n * @param {string} objectId - Specified the object id.\n * @returns {void}\n */\n Drawing.prototype.refreshCanvasDiagramLayer = function (diagramLayer, pageIndex, objectId) {\n if (!diagramLayer) {\n diagramLayer = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n }\n if (diagramLayer) {\n var zoom = this.pdfViewer.viewerBase.getZoomFactor();\n var width = diagramLayer.width / zoom;\n var height = diagramLayer.height / zoom;\n var ctx = diagramLayer.getContext('2d');\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n if (zoom < 1) {\n ctx.lineWidth = ctx.lineWidth / zoom;\n }\n var devicePixelRatio_1 = this.pdfViewer.viewerBase.getWindowDevicePixelRatio();\n var zoomRatio = zoom * devicePixelRatio_1;\n if (!Browser.isDevice || (Browser.isDevice && zoom <= 0.7)) {\n ctx.setTransform(zoomRatio, 0, 0, zoomRatio, 0, 0);\n }\n else {\n ctx.setTransform(zoom, 0, 0, zoom, 0, 0);\n }\n ctx.clearRect(0, 0, width, height);\n var objects = this.getPageObjects(pageIndex);\n for (var i = 0; i < objects.length; i++) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var renderElement = void 0;\n if (diagramLayer.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageIndex) {\n if (objects[parseInt(i.toString(), 10)].isPrint) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n renderElement = this.pdfViewer.nameTable[objects[parseInt(i.toString(), 10)].id].wrapper;\n if (!isNullOrUndefined(renderElement)) {\n refreshDiagramElements(diagramLayer, [renderElement], this.renderer);\n }\n }\n }\n else {\n // eslint-disable-next-line\n renderElement = this.pdfViewer.nameTable[objects[i].id].wrapper;\n refreshDiagramElements(diagramLayer, [renderElement], this.renderer);\n }\n }\n }\n };\n /**\n * @private\n * @param {number} index - Specified the page index.\n * @returns {void}\n */\n Drawing.prototype.clearHighlighter = function (index) {\n var adornerSvg = this.getAdornerLayerSvg(this.pdfViewer.element.id + index + '_diagramAdornerLayer', index);\n if (adornerSvg) {\n var highlighter = adornerSvg.getElementById(adornerSvg.id + '_highlighter');\n if (highlighter) {\n highlighter.parentNode.removeChild(highlighter);\n }\n }\n };\n /**\n * @private\n * @param {string} diagramId - Specified the diagram id.\n * @param {number} index - Specified the page index.\n * @returns {SVGSVGElement} Return the svg element.\n */\n Drawing.prototype.getSelectorElement = function (diagramId, index) {\n var adornerLayer = null;\n var adornerSvg = this.getAdornerLayerSvg(diagramId, index);\n if (adornerSvg) {\n adornerLayer = adornerSvg.getElementById(diagramId + index + '_SelectorElement');\n }\n return adornerLayer;\n };\n /**\n * @private\n * @param {string} diagramId - Specified the diagram id.\n * @param {number} index - Specified the page index.\n * @returns {SVGSVGElement} Return the svg element.\n */\n Drawing.prototype.getAdornerLayerSvg = function (diagramId, index) {\n var adornerLayerSvg = null;\n var diagramElement = getDiagramElement(diagramId + index + '_diagramAdornerLayer');\n // eslint-disable-next-line\n var elementcoll;\n if (diagramElement) {\n elementcoll = diagramElement.getElementsByClassName('e-adorner-layer' + index);\n adornerLayerSvg = elementcoll[0];\n }\n return adornerLayerSvg;\n };\n /**\n * @private\n * @param {number} index - Specified the page index.\n * @returns {void}\n */\n Drawing.prototype.clearSelectorLayer = function (index) {\n var adornerSvg = this.getAdornerLayerSvg(this.pdfViewer.element.id, index);\n if (adornerSvg) {\n var selectionRect = adornerSvg.getElementById(this.pdfViewer.adornerSvgLayer.id + '_selected_region');\n if (selectionRect) {\n selectionRect.parentNode.removeChild(selectionRect);\n }\n this.clearHighlighter(index);\n var childNodes = this.getSelectorElement(this.pdfViewer.element.id, index).childNodes;\n var child = void 0;\n for (var i = childNodes.length; i > 0; i--) {\n child = childNodes[i - 1];\n child.parentNode.removeChild(child);\n }\n }\n };\n /**\n * @private\n * @param {number} select - Specified the select value.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the annotation selector element.\n * @param {PdfAnnotationBaseModel} helper - Specified the annotation helper element.\n * @param {boolean} isSelect - Specified the is select or not.\n * @returns {void}\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.renderSelector = function (select, currentSelector, helper, isSelect) {\n if (!helper || isSelect) {\n var size = new Size();\n var selectorModel = this.pdfViewer.selectedItems;\n this.clearSelectorLayer(select);\n if (selectorModel.wrapper) {\n selectorModel.wrapper.measure(size);\n var zoom = this.pdfViewer.viewerBase.getZoomFactor();\n selectorModel.wrapper.arrange(selectorModel.wrapper.desiredSize);\n selectorModel.width = selectorModel.wrapper.actualSize.width;\n selectorModel.height = selectorModel.wrapper.actualSize.height;\n selectorModel.offsetX = selectorModel.wrapper.offsetX;\n selectorModel.offsetY = selectorModel.wrapper.offsetY;\n if (selectorModel.annotations.length === 1) {\n selectorModel.rotateAngle = selectorModel.annotations[0].rotateAngle;\n selectorModel.wrapper.rotateAngle = selectorModel.annotations[0].rotateAngle;\n //selectorModel.pivot = selectorModel.annotations[0].pivot;\n }\n var bounds = selectorModel.wrapper.bounds;\n // eslint-disable-next-line\n var selectorElement = void 0;\n if (selectorModel.formFields.length) {\n for (var i = 0; i < selectorModel.formFields.length; i++) {\n var node = selectorModel.formFields[parseInt(i.toString(), 10)];\n selectorElement = this.getSelectorElement(this.pdfViewer.element.id, select);\n if (selectorElement && node.pageIndex === select && this.pdfViewer.designerMode) {\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, false, true, null, null, currentSelector);\n }\n if (this.pdfViewer.formDesignerModule && node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isFormFieldSelect && !this.pdfViewer.viewerBase.isFormFieldMouseDown && !this.pdfViewer.viewerBase.isFormFieldMouseMove) {\n this.pdfViewer.viewerBase.isFormFieldSelect = true;\n var field = {\n // eslint-disable-next-line\n name: node.name, id: node.id, value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle, color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected\n };\n this.pdfViewer.fireFormFieldSelectEvent('formFieldSelect', field, node.pageIndex, this.pdfViewer.formDesignerModule.isProgrammaticSelection);\n }\n }\n }\n }\n if (selectorModel.annotations.length) {\n for (var j = 0; j < selectorModel.annotations.length; j++) {\n var node = selectorModel.annotations[parseInt(j.toString(), 10)];\n selectorElement = this.getSelectorElement(this.pdfViewer.element.id, select);\n if (selectorElement && node.pageIndex === select) {\n if (node.shapeAnnotationType === 'Distance' || node.shapeAnnotationType === 'Line' ||\n node.shapeAnnotationType === 'LineWidthArrowHead' || node.shapeAnnotationType === 'Polygon') {\n this.renderEndPointHandle(node, selectorElement, selectorModel.thumbsConstraints, { scale: zoom, tx: 0, ty: 0 }, undefined, undefined, true, currentSelector);\n }\n else {\n if (node.shapeAnnotationType === 'StickyNotes') {\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, false, true, null, null, currentSelector);\n }\n else {\n if (this.pdfViewer.tool !== 'Stamp') {\n // eslint-disable-next-line\n var isSignature = node.shapeAnnotationType === 'Path' || node.formFieldAnnotationType === 'SignatureField' || node.formFieldAnnotationType === 'InitialField';\n this.renderResizeHandle(node.wrapper.children[0], selectorElement, selectorModel.thumbsConstraints, zoom, undefined, undefined, undefined, node.shapeAnnotationType === 'Stamp', false, isSignature, (node.shapeAnnotationType === 'FreeText' || node.shapeAnnotationType === 'HandWrittenSignature' || node.shapeAnnotationType === 'SignatureImage' || node.shapeAnnotationType === 'Image' || node.shapeAnnotationType === 'SignatureText'), currentSelector);\n }\n }\n }\n if (!this.pdfViewer.viewerBase.isNewSignatureAdded && (node.shapeAnnotationType === 'HandWrittenSignature' || node.shapeAnnotationType === 'SignatureText' || node.shapeAnnotationType === 'SignatureImage')) {\n this.pdfViewer.annotationModule.selectSignature(node.signatureName, node.pageIndex, node);\n }\n if (this.pdfViewer.formDesignerModule && node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isFormFieldSelect && !this.pdfViewer.viewerBase.isFormFieldMouseDown && !this.pdfViewer.viewerBase.isFormFieldMouseMove) {\n this.pdfViewer.viewerBase.isFormFieldSelect = true;\n var field = {\n // eslint-disable-next-line\n value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected\n };\n this.pdfViewer.fireFormFieldSelectEvent('formFieldSelect', field, node.pageIndex, this.pdfViewer.formDesignerModule.isProgrammaticSelection);\n }\n }\n if (node.annotName !== '' && node.annotName !== 'SignatureText') {\n if (helper && (node === helper) && !node.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.viewerBase.isAddComment && !this.pdfViewer.viewerBase.isAnnotationSelect && !this.pdfViewer.viewerBase.isAnnotationMouseDown && !this.pdfViewer.viewerBase.isAnnotationMouseMove && !this.pdfViewer.viewerBase.isInkAdded && !this.pdfViewer.viewerBase.isNewStamp) {\n this.pdfViewer.viewerBase.isAnnotationSelect = true;\n this.pdfViewer.annotationModule.annotationSelect(node.annotName, node.pageIndex, node);\n }\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * Rotates the given nodes/connectors by the given angle\n *\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} obj - Specified the objects to be rotated.\n * @param {number} angle - Specified the angle by which the objects have to be rotated.\n * @param {PointModel} pivot - Specified the reference point with reference to which the objects have to be rotated.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.rotate = function (obj, angle, pivot, currentSelector) {\n var checkBoundaryConstraints;\n if (obj) {\n pivot = pivot || { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY };\n if (obj instanceof Selector) {\n obj.rotateAngle += angle;\n obj.wrapper.rotateAngle += angle;\n var objects = [];\n objects = objects.concat(obj.annotations);\n this.rotateObjects(obj, objects, angle, pivot, null, currentSelector);\n }\n else {\n this.rotateObjects(obj, [obj], angle, pivot);\n }\n }\n return checkBoundaryConstraints;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} parent - Specified the annotation object.\n * @param {PdfAnnotationBaseModel[]} objects - Specified the annotation objects.\n * @param {number} angle - Specified the annotation angle.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {boolean} includeParent - Specified the include parent value.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n Drawing.prototype.rotateObjects = function (parent, objects, angle, pivot, includeParent, currentSelector) {\n pivot = pivot || {};\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, pivot.x, pivot.y);\n for (var _i = 0, objects_1 = objects; _i < objects_1.length; _i++) {\n var obj = objects_1[_i];\n if (obj instanceof PdfAnnotationBase) {\n if (includeParent !== false || parent !== obj) {\n obj.rotateAngle += angle;\n obj.rotateAngle = (obj.rotateAngle + 360) % 360;\n var newOffset = transformPointByMatrix(matrix, { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY });\n obj.wrapper.offsetX = newOffset.x;\n obj.wrapper.offsetY = newOffset.y;\n this.nodePropertyChange(obj, { rotateAngle: obj.rotateAngle });\n }\n this.renderSelector(obj.pageIndex, currentSelector);\n }\n }\n };\n Drawing.prototype.getParentSvg = function (element, targetElement, canvas) {\n if (element && element.id) {\n if (targetElement && targetElement === 'selector') {\n return this.pdfViewer.adornerSvgLayer;\n }\n }\n return canvas;\n };\n /**\n * @private\n * @param {DrawingElement} selector - Specified the annotation selector object.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} transform - Specfied the transform value.\n * @param {number} enableNode - Specified the node number.\n * @param {boolean} isBorderTickness - Specified is thickness or not.\n * @param {boolean} isSwimlane - Specified is swimlane annotation or not.\n * @param {boolean} isSticky - Specified is sticky annotation or not.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.renderBorder = function (selector, canvas, currentSelector, transform, enableNode, isBorderTickness, isSwimlane, isSticky) {\n var wrapper = selector;\n var options = getBaseShapeAttributes(wrapper, transform);\n transform = transform || { scale: 1, tx: 0, ty: 0 };\n if (!isSticky) {\n options.x *= transform.scale;\n options.y *= transform.scale;\n options.width *= transform.scale;\n options.height *= transform.scale;\n options.fill = 'transparent';\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType;\n if (currentSelector && (typeof (currentSelector) !== 'object') && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = currentSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n if (!this.pdfViewer.designerMode) {\n if ((shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') || shapeType === 'Ink') {\n // eslint-disable-next-line\n var formField = this.pdfViewer.nameTable[selector.id.split('_')[0]];\n var isFormFieldSign = this.pdfViewer.viewerBase.checkSignatureFormField(selector.id);\n // if (isFormFieldSign && options.width + 21 !== formField.bounds.width && options.height + 21 !== formField.bounds.height) {\n // if (this.pdfViewer.signatureFitMode === 'Default') {\n // let selectorBounds: any = this.pdfViewer.formFieldsModule.getDefaultBoundsforSign(formField.bounds);\n // options.x = selectorBounds.x; options.y = selectorBounds.y; options.width = selectorBounds.width; options.height = selectorBounds.height;\n // } else {\n // options.x = formField.bounds.x; options.y = formField.bounds.y; options.width = formField.bounds.width; options.height = formField.bounds.height;\n // }\n // }\n this.getSignBorder(shapeType, options, isFormFieldSign);\n }\n else {\n this.getBorderSelector(shapeType, options);\n }\n }\n }\n options.class = 'e-pv-diagram-border';\n if (isSwimlane) {\n options.class += ' e-diagram-lane';\n }\n options.id = 'borderRect';\n options.id = 'borderRect';\n if (!enableNode) {\n options.class += ' e-disabled';\n }\n if (isBorderTickness) {\n options.class += ' e-thick-border';\n }\n options.cornerRadius = 0;\n }\n else {\n options.x *= transform.scale;\n options.y *= transform.scale;\n options.width *= transform.scale;\n options.height *= transform.scale;\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations.length > 0 ? this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType\n : this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n if (currentSelector && (typeof (currentSelector) !== 'object') && currentSelector !== '') {\n var annotationSelector = JSON.parse(currentSelector);\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = currentSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n this.getBorderSelector(shapeType, options);\n }\n }\n var parentSvg = this.getParentSvg(selector, 'selector');\n // eslint-disable-next-line max-len\n this.svgRenderer.drawRectangle(canvas, options, this.pdfViewer.element.id, undefined, true, parentSvg);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {BaseAttributes} options - Specified the options value.\n * @param {boolean} isFormFieldSign - Specified is form field sign or not.\n * @returns {void}\n */\n Drawing.prototype.getSignBorder = function (type, options, isFormFieldSign) {\n if (!isFormFieldSign && (type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n var borderColor = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n var borderColor = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n else {\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n var borderColor = annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n options.strokeWidth = annotationSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {BaseAttributes} options - Specified the base attributes.\n * @returns {void}\n */\n Drawing.prototype.getBorderSelector = function (type, options) {\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n var borderColor = isNullOrUndefined(annotationSelector.selectionBorderColor) || annotationSelector.selectionBorderColor === '' ? 'black' : annotationSelector.selectionBorderColor;\n options.stroke = borderColor;\n // eslint-disable-next-line max-len\n options.strokeWidth = isNullOrUndefined(annotationSelector.selectionBorderThickness) || annotationSelector.selectionBorderThickness === 1 ? 1 : annotationSelector.selectionBorderThickness;\n // eslint-disable-next-line max-len\n var lineDash = isNullOrUndefined(annotationSelector.selectorLineDashArray) || annotationSelector.selectorLineDashArray.length === 0 ? [6, 3] : annotationSelector.selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n options.dashArray = lineDash.toString();\n if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n var borderColor_1 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_1;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_1 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_1.length > 2) {\n lineDash_1 = [lineDash_1[0], lineDash_1[1]];\n }\n options.dashArray = lineDash_1.toString();\n }\n else if ((type === 'Textbox' || type === 'Checkbox' || type === 'RadioButton' || type === 'SignatureField' || type === 'InitialField' || type === 'DropdownList' || type === 'ListBox' || type === 'PasswordField') && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n var borderColor_2 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_2;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_2 = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.rectangleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_2.length > 2) {\n lineDash_2 = [lineDash_2[0], lineDash_2[1]];\n }\n options.dashArray = lineDash_2.toString();\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n var borderColor_3 = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_3;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.circleSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_3 = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.circleSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_3.length > 2) {\n lineDash_3 = [lineDash_3[0], lineDash_3[1]];\n }\n options.dashArray = lineDash_3.toString();\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n var borderColor_4 = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_4;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_4 = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.radiusSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_4.length > 2) {\n lineDash_4 = [lineDash_4[0], lineDash_4[1]];\n }\n options.dashArray = lineDash_4.toString();\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n var borderColor_5 = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_5;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_5 = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.freeTextSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_5.length > 2) {\n lineDash_5 = [lineDash_5[0], lineDash_5[1]];\n }\n options.dashArray = lineDash_5.toString();\n }\n else if (type === 'StickyNotes' && this.pdfViewer.stickyNotesSettings.annotationSelectorSettings) {\n var borderColor_6 = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor === '' ? 'black' : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_6;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_6 = isNullOrUndefined(this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [6, 3] : this.pdfViewer.stickyNotesSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_6.length > 2) {\n lineDash_6 = [lineDash_6[0], lineDash_6[1]];\n }\n options.dashArray = lineDash_6.toString();\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n var borderColor_7 = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor === '' ? '#0000ff' : this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderColor;\n options.stroke = borderColor_7;\n // eslint-disable-next-line max-len\n var thickness = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderThickness) ? 1 : this.pdfViewer.stampSettings.annotationSelectorSettings.selectionBorderThickness;\n options.strokeWidth = thickness;\n // eslint-disable-next-line max-len\n var lineDash_7 = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray) || this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray.length === 0 ? [4] : this.pdfViewer.stampSettings.annotationSelectorSettings.selectorLineDashArray;\n if (lineDash_7.length > 2) {\n lineDash_7 = [lineDash_7[0], lineDash_7[1]];\n }\n options.dashArray = lineDash_7.toString();\n }\n };\n /**\n * @private\n * @param {string} id - Specified the annotaion id.\n * @param {DrawingElement} selector - Specified the drawing element.\n * @param {number} cx - Specified the cx number.\n * @param {number} cy - Specified the cy number.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the html canvas element.\n * @param {boolean} visible - Specified the annotation visible or not.\n * @param {number} enableSelector - Specified the enable selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @param {boolean} connected - Specified is connected or not.\n * @param {boolean} canMask - Specified is mask or not.\n * @param {Object} ariaLabel - Specified the aria label object.\n * @param {number} count - Specified the count value.\n * @param {string} className - Specified the class name.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the annotation selector settings.\n * @returns {void}\n */\n Drawing.prototype.renderCircularHandle = function (id, selector, cx, cy, canvas, visible, enableSelector, t, connected, canMask, ariaLabel, count, className, currentSelector) {\n var wrapper = selector;\n var newPoint = { x: cx, y: cy };\n t = t || { scale: 1, tx: 0, ty: 0 };\n if (wrapper.rotateAngle !== 0 || wrapper.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, wrapper.rotateAngle + wrapper.parentTransform, wrapper.offsetX, wrapper.offsetY);\n newPoint = transformPointByMatrix(matrix, newPoint);\n }\n var options = getBaseShapeAttributes(wrapper);\n var shapeType;\n if (this.pdfViewer.selectedItems.annotations.length > 0 && this.pdfViewer.selectedItems.annotations[0].measureType) {\n shapeType = this.pdfViewer.selectedItems.annotations[0].measureType;\n }\n else if (this.pdfViewer.selectedItems.formFields.length > 0) {\n shapeType = this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n }\n else {\n shapeType = this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType;\n }\n this.getResizerColors(shapeType, options, currentSelector, t);\n this.getShapeSize(shapeType, options, currentSelector, t);\n options.strokeWidth = 1;\n if (count !== undefined) {\n options.id = 'segmentEnd_' + count;\n }\n options.centerX = (newPoint.x + t.tx) * t.scale;\n options.centerY = (newPoint.y + t.ty) * t.scale;\n options.angle = 0;\n options.id = id;\n options.visible = visible;\n options.class = className;\n options.opacity = 1;\n if (connected) {\n options.class += ' e-connected';\n }\n if (canMask) {\n options.visible = false;\n }\n options.x = (newPoint.x * t.scale) - (options.width / 2);\n options.y = (newPoint.y * t.scale) - (options.height / 2);\n var parentSvg = this.getParentSvg(selector, 'selector');\n if (this.getShape(shapeType, currentSelector) === 'Square') {\n this.svgRenderer.drawRectangle(canvas, options, id, undefined, true, parentSvg);\n }\n else if (this.getShape(shapeType, currentSelector) === 'Circle') {\n this.svgRenderer.drawCircle(canvas, options, 1);\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotaion object.\n * @param {CircleAttributes} options - Specified the circle attributes value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.getShapeSize = function (type, options, currentSelector, t) {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(annotationSelector.resizerSize) || annotationSelector.resizerSize === 8 ? 8 : annotationSelector.resizerSize) * t.scale;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n options.radius = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) / 2;\n // eslint-disable-next-line max-len\n options.width = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) * t.scale;\n // eslint-disable-next-line max-len\n options.height = (isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize === 8 ? 8 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerSize) * t.scale;\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation object.\n * @param {any} currentSelector - Specified the current selector value.\n * @returns {AnnotationSelectorSettingsModel} - Specified the annotation selector settings model.\n */\n // eslint-disable-next-line\n Drawing.prototype.getShape = function (type, currentSelector) {\n // eslint-disable-next-line\n var shapeType;\n {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n shapeType = isNullOrUndefined(annotationSelector.resizerShape) || annotationSelector.resizerShape === 'Square' ? 'Square' : annotationSelector.resizerShape;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n shapeType = isNullOrUndefined(annotationSelector.resizerShape) || annotationSelector.resizerShape === 'Square' ? 'Square' : annotationSelector.resizerShape;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerShape;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerShape;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n shapeType = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape === 'Square' ? 'Square' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerShape;\n }\n }\n return shapeType;\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotaion object.\n * @param {CircleAttributes} options - Specified the circle attributes value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {Transforms} t - Specified the transforms value.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.getResizerColors = function (type, options, currentSelector, t) {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n options.stroke = isNullOrUndefined(annotationSelector.resizerBorderColor) || annotationSelector.resizerBorderColor === 'black' ? 'black' : annotationSelector.resizerBorderColor;\n options.fill = isNullOrUndefined(annotationSelector.resizerFillColor) || annotationSelector.resizerFillColor === '#FF4081' ? '#FF4081' : annotationSelector.resizerFillColor;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n options.stroke = isNullOrUndefined(annotationSelector.resizerBorderColor) || annotationSelector.resizerBorderColor === 'black' ? 'black' : annotationSelector.resizerBorderColor;\n options.fill = isNullOrUndefined(annotationSelector.resizerFillColor) || annotationSelector.resizerFillColor === '#FF4081' ? '#FF4081' : annotationSelector.resizerFillColor;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Distance' && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Perimeter' && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Area' && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.areaSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Volume' && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerFillColor;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n options.stroke = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor === 'black' ? 'black' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerBorderColor;\n options.fill = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor === '#FF4081' ? '#FF4081' : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerFillColor;\n }\n }\n };\n /**\n * @private\n * @param {DrawingElement} wrapper - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {Transforms} transform - Specified the transform value.\n * @param {SelectorConstraints} selectorConstraints - Specified the selector constraints value.\n * @param {boolean} canMask - Specified the is mask or not.\n * @returns {void}\n */\n Drawing.prototype.renderRotateThumb = function (wrapper, canvas, transform, selectorConstraints, canMask) {\n var element = new PathElement();\n var newPoint;\n var top = wrapper.offsetY - wrapper.actualSize.height * wrapper.pivot.y;\n var left = wrapper.offsetX - wrapper.actualSize.width * wrapper.pivot.x;\n var pivotX = left + wrapper.pivot.x * wrapper.actualSize.width;\n var pivotY = top;\n pivotX = (pivotX + transform.tx) * transform.scale;\n pivotY = (pivotY + transform.ty) * transform.scale;\n newPoint = { x: pivotX, y: pivotY - 25 };\n if (wrapper.rotateAngle !== 0 || wrapper.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, wrapper.rotateAngle + wrapper.parentTransform, (transform.tx + wrapper.offsetX) * transform.scale, (transform.ty + wrapper.offsetY) * transform.scale);\n newPoint = transformPointByMatrix(matrix, newPoint);\n }\n var options = getBaseShapeAttributes(wrapper);\n options.stroke = 'black';\n options.strokeWidth = 1;\n options.opacity = 1;\n options.fill = '#FF4081';\n options.centerX = newPoint.x;\n options.centerY = newPoint.y;\n options.radius = 4;\n options.angle = 0;\n options.visible = true;\n options.class = 'e-diagram-rotate-handle';\n options.id = 'rotateThumb';\n this.svgRenderer.drawCircle(canvas, options, ThumbsConstraints.Rotate, { 'aria-label': 'Thumb to rotate the selected object' });\n var circleHandle = canvas.querySelector('#' + options.id);\n if (circleHandle) {\n circleHandle.setAttribute('role', 'separator');\n }\n };\n /**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGElement} canvas - Specified the canvas element.\n * @param {ThumbsConstraints} constraints - Specified the thumbs constraints element.\n * @param {number} currentZoom - Specified the current zoom value.\n * @param {boolean} canMask - Specified the is mask or not.\n * @param {number} enableNode - Specified the node number.\n * @param {boolean} nodeConstraints - Specified the node constraints or not.\n * @param {boolean} isStamp - Specified is stamp or not.\n * @param {boolean} isSticky - Specified is sticky or not.\n * @param {boolean} isPath - Specified is path or not.\n * @param {boolean} isFreeText - Specified is free text or not.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector settings value.\n * @returns {void}\n */\n Drawing.prototype.renderResizeHandle = function (element, canvas, constraints, currentZoom, canMask, enableNode, nodeConstraints, isStamp, isSticky, isPath, isFreeText, currentSelector) {\n var left = element.offsetX - element.actualSize.width * element.pivot.x;\n var top = element.offsetY - element.actualSize.height * element.pivot.y;\n var height = element.actualSize.height;\n var width = element.actualSize.width;\n var transform = { scale: currentZoom, tx: 0, ty: 0 };\n if (isStamp) {\n this.renderPivotLine(element, canvas, transform);\n this.renderRotateThumb(element, canvas, transform);\n }\n if (isFreeText) {\n isStamp = true;\n }\n this.renderBorder(element, canvas, currentSelector, transform, enableNode, nodeConstraints, true, isSticky);\n var nodeWidth = element.actualSize.width * currentZoom;\n var nodeHeight = element.actualSize.height * currentZoom;\n // eslint-disable-next-line max-len\n var shapeType = this.pdfViewer.selectedItems.annotations.length > 0 ? this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType : this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType;\n var allowPermission = false;\n if (!this.pdfViewer.formDesignerModule) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line\n var allowedInteraction = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isLock = this.pdfViewer.annotationModule.checkIsLockSettings(annotation);\n if ((isLock || annotation.annotationSettings.isLock) && this.getAllowedInteractions(allowedInteraction)) {\n allowPermission = true;\n }\n }\n var resizerLocation = this.getResizerLocation(shapeType, currentSelector);\n if (resizerLocation < 1 || resizerLocation > 3) {\n resizerLocation = 3;\n }\n var isNodeShape = false;\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Radius' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink')) {\n isNodeShape = true;\n }\n if (!this.pdfViewer.viewerBase.checkSignatureFormField(element.id) && !nodeConstraints && !isSticky && !isPath && !allowPermission) {\n if (isStamp || (isNodeShape && (nodeWidth >= 40 && nodeHeight >= 40) && (resizerLocation === 1 || resizerLocation === 3))) {\n //Hide corners when the size is less than 40\n this.renderCircularHandle('resizeNorthWest', element, left, top, canvas, true, constraints & ThumbsConstraints.ResizeNorthWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top left side direction' }, undefined, 'e-pv-diagram-resize-handle e-northwest', currentSelector);\n this.renderCircularHandle('resizeNorthEast', element, left + width, top, canvas, true, constraints & ThumbsConstraints.ResizeNorthEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top right side direction' }, undefined, 'e-pv-diagram-resize-handle e-northeast', currentSelector);\n this.renderCircularHandle('resizeSouthWest', element, left, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouthWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom left side direction' }, undefined, 'e-pv-diagram-resize-handle e-southwest', currentSelector);\n this.renderCircularHandle('resizeSouthEast', element, left + width, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouthEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom right side direction' }, undefined, 'e-pv-diagram-resize-handle e-southeast', currentSelector);\n }\n // eslint-disable-next-line max-len\n if ((!isStamp && !isNodeShape) || (isNodeShape && (resizerLocation === 2 || resizerLocation === 3 || (!(nodeWidth >= 40 && nodeHeight >= 40) && resizerLocation === 1)))) {\n this.renderCircularHandle('resizeNorth', element, left + width / 2, top, canvas, true, constraints & ThumbsConstraints.ResizeNorth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top side direction' }, undefined, 'e-pv-diagram-resize-handle e-north', currentSelector);\n this.renderCircularHandle('resizeSouth', element, left + width / 2, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom side direction' }, undefined, 'e-pv-diagram-resize-handle e-south', currentSelector);\n this.renderCircularHandle('resizeWest', element, left, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on left side direction' }, undefined, 'e-pv-diagram-resize-handle e-west', currentSelector);\n this.renderCircularHandle('resizeEast', element, left + width, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on right side direction' }, undefined, 'e-pv-diagram-resize-handle e-east', currentSelector);\n }\n }\n if ((shapeType === 'Textbox' || shapeType === 'Checkbox' || shapeType === 'RadioButton' || shapeType === 'SignatureField' || shapeType === 'InitialField' || shapeType === 'DropdownList' ||\n shapeType === 'ListBox' || shapeType === 'PasswordField')) {\n this.renderCircularHandle('resizeNorth', element, left + width / 2, top, canvas, true, constraints & ThumbsConstraints.ResizeNorth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on top side direction' }, undefined, 'e-pv-diagram-resize-handle e-north', currentSelector);\n this.renderCircularHandle('resizeSouth', element, left + width / 2, top + height, canvas, true, constraints & ThumbsConstraints.ResizeSouth, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on bottom side direction' }, undefined, 'e-pv-diagram-resize-handle e-south', currentSelector);\n this.renderCircularHandle('resizeWest', element, left, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeWest, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on left side direction' }, undefined, 'e-pv-diagram-resize-handle e-west', currentSelector);\n this.renderCircularHandle('resizeEast', element, left + width, top + height / 2, canvas, true, constraints & ThumbsConstraints.ResizeEast, transform, undefined, canMask, { 'aria-label': 'Thumb to resize the selected object on right side direction' }, undefined, 'e-pv-diagram-resize-handle e-east', currentSelector);\n }\n };\n // eslint-disable-next-line\n Drawing.prototype.getAllowedInteractions = function (allowedInteraction) {\n if (allowedInteraction && allowedInteraction.length > 0) {\n for (var i = 0; i < allowedInteraction.length; i++) {\n if (allowedInteraction[0] !== 'None' && allowedInteraction[parseInt(i.toString(), 10)] === 'Resize') {\n return false;\n }\n }\n }\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} type - Specified the annotation base model.\n * @param {any} currentSelector - Specified the current selector value\n * @returns {AnnotationResizerLocation} - Returns the annotation resizer location value.\n */\n // eslint-disable-next-line\n Drawing.prototype.getResizerLocation = function (type, currentSelector) {\n // eslint-disable-next-line\n var resizerLocation;\n {\n if (currentSelector && typeof (currentSelector) !== 'object' && currentSelector !== '') {\n // eslint-disable-next-line\n var annotationSelector = JSON.parse(currentSelector);\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(annotationSelector.resizerLocation) || annotationSelector.resizerLocation === 3 ? 3 : annotationSelector.resizerLocation;\n }\n else {\n // eslint-disable-next-line\n var annotationSelector = this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(annotationSelector.resizerLocation) || annotationSelector.resizerLocation === 3 ? 3 : annotationSelector.resizerLocation;\n if (type === 'Line' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.lineSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'LineWidthArrowHead' && this.pdfViewer.arrowSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Rectangle' && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Ellipse' && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.circleSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Distance') {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Radius' && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Stamp' && this.pdfViewer.stampSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.stampSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'FreeText' && this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerLocation;\n }\n else if ((type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') && this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerLocation;\n }\n else if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n // eslint-disable-next-line max-len\n resizerLocation = isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation) || this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation === 3 ? 3 : this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerLocation;\n }\n }\n return resizerLocation;\n }\n };\n /**\n * @private\n * @param {DrawingElement} element - Specified the drawing element.\n * @param {HTMLCanvasElement | SVGAElement} canvas - Specified the canvas element.\n * @param {Transforms} transform - Specified the transform values.\n * @param {SelectorConstraints} selectorConstraints - Specified the selector constraints value.\n * @param {boolean} canMask - Specified is mask value or not.\n * @returns {void}\n */\n Drawing.prototype.renderPivotLine = function (element, canvas, transform, selectorConstraints, canMask) {\n var wrapper = element;\n var dashArray = '2,3';\n var visible = true;\n if (canMask) {\n visible = false;\n }\n var options = getBaseShapeAttributes(wrapper, transform);\n options.fill = 'None';\n options.stroke = 'black';\n options.strokeWidth = 1;\n options.dashArray = dashArray;\n options.visible = visible;\n var scale = transform.scale;\n options.x *= scale;\n options.y *= scale;\n options.width *= scale;\n options.height *= scale;\n options.id = 'pivotLine';\n options.class = 'e-diagram-pivot-line';\n var startPoint = { x: wrapper.actualSize.width * wrapper.pivot.x * scale, y: -20 };\n var endPoint = { x: wrapper.actualSize.width * wrapper.pivot.x * scale, y: 0 };\n options.startPoint = startPoint;\n options.endPoint = endPoint;\n this.svgRenderer.drawLine(canvas, options);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} selector - Specified the annotation element.\n * @param {HTMLCanvasElement | SVGAElement} canvas - Specified the canvas element.\n * @param {SelectorConstraints} constraints - Specified the selector constraints value.\n * @param {Transforms} transform - Specified the transform values.\n * @param {boolean} connectedSource - Specified is connected source or not.\n * @param {boolean} connectedTarget - Specified is connected target or not.\n * @param {boolean} isSegmentEditing - Specified is segment editing or not.\n * @param {AnnotationSelectorSettingsModel} currentSelector - Specified the current selector value.\n * @returns {void}\n */\n Drawing.prototype.renderEndPointHandle = function (selector, canvas, constraints, transform, connectedSource, connectedTarget, isSegmentEditing, currentSelector) {\n transform = transform || { tx: 0, ty: 0, scale: 1 };\n var sourcePoint = selector.sourcePoint;\n var targetPoint = selector.targetPoint;\n var wrapper = selector.wrapper;\n var i;\n for (i = 0; i < selector.vertexPoints.length; i++) {\n var segment = selector.vertexPoints[parseInt(i.toString(), 10)];\n this.renderCircularHandle(('segementThumb_' + (i + 1)), wrapper, segment.x, segment.y, canvas, true, constraints & ThumbsConstraints.ConnectorSource, transform, connectedSource, null, null, i, null, currentSelector);\n }\n var leaderCount = 0;\n if (selector.shapeAnnotationType === 'Distance') {\n for (i = 0; i < selector.wrapper.children.length; i++) {\n var segment = selector.wrapper.children[parseInt(i.toString(), 10)];\n var newPoint1 = void 0;\n var angle = Point.findAngle(selector.sourcePoint, selector.targetPoint);\n if (segment.id.indexOf('leader') > -1) {\n var center = selector.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: selector.sourcePoint.x, y: selector.sourcePoint.y - selector.leaderHeight };\n center = sourcePoint;\n }\n else {\n newPoint1 = { x: selector.targetPoint.x, y: selector.targetPoint.y - selector.leaderHeight };\n center = targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n this.renderCircularHandle(('leaderThumb_' + (i + 1)), wrapper, rotatedPoint.x, rotatedPoint.y, canvas, true, constraints & ThumbsConstraints.ConnectorSource, transform, connectedSource, null, null, i, null, currentSelector);\n leaderCount++;\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Drawing.prototype.initSelectorWrapper = function () {\n var selectorModel = this.pdfViewer.selectedItems;\n selectorModel.init(this);\n };\n /**\n * @private\n * @param {string[]} objArray - Specified the annotation object array.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {boolean} multipleSelection - Specified the multiple selection or not.\n * @param {boolean} preventUpdate - Specified the prevent update or not.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.select = function (objArray, currentSelector, multipleSelection, preventUpdate) {\n var selectorModel = this.pdfViewer.selectedItems;\n for (var i = 0; i < objArray.length; i++) {\n // eslint-disable-next-line\n var obj = this.pdfViewer.nameTable[objArray[i]];\n if (obj.formFieldAnnotationType && this.pdfViewer.designerMode) {\n selectorModel.formFields.push(obj);\n this.initSelectorWrapper();\n selectorModel.wrapper.children.push(obj.wrapper);\n this.renderSelector(obj.pageIndex, currentSelector, obj, true);\n }\n else if (obj && !obj.formFieldAnnotationType) {\n if (!(obj instanceof Selector) && obj.wrapper.visible && this.pdfViewer.annotationModule) {\n // eslint-disable-next-line\n var annotationSettings = void 0;\n if (obj.annotationSettings) {\n annotationSettings = obj.annotationSettings;\n annotationSettings.isLock = JSON.parse(annotationSettings.isLock);\n }\n else if (!obj.formFieldAnnotationType) {\n annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(obj, true);\n obj.annotationSettings = annotationSettings;\n }\n var isLock = !obj.formFieldAnnotationType ? annotationSettings.isLock : false;\n if (annotationSettings && annotationSettings.isLock && this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n isLock = false;\n }\n if (!isLock) {\n selectorModel.annotations.push(obj);\n this.initSelectorWrapper();\n selectorModel.wrapper.rotateAngle = selectorModel.rotateAngle = 0;\n selectorModel.wrapper.children.push(obj.wrapper);\n if (!preventUpdate) {\n this.renderSelector(obj.pageIndex, currentSelector, obj, true);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {number} pageIndex - Specified the page index value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {PdfAnnotationBaseModel} helper - Specified the helper object.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.dragSelectedObjects = function (tx, ty, pageIndex, currentSelector, helper) {\n var obj = this.pdfViewer.selectedItems;\n this.drag(obj, tx, ty, currentSelector, helper);\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {any} currentSelector - Specified the current selector value.\n * @param {PdfAnnotationBaseModel} helper - Specified the helper object.\n * @returns {void}\n */\n // eslint-disable-next-line\n Drawing.prototype.drag = function (obj, tx, ty, currentSelector, helper) {\n if (obj instanceof Selector) {\n if (obj.annotations.length) {\n for (var _i = 0, _a = obj.annotations; _i < _a.length; _i++) {\n var node = _a[_i];\n this.drag(node, tx, ty, currentSelector, helper);\n this.renderSelector(node.pageIndex, currentSelector, helper);\n }\n }\n else if (obj.formFields.length) {\n for (var _b = 0, _c = obj.formFields; _b < _c.length; _b++) {\n var node = _c[_b];\n this.drag(node, tx, ty, currentSelector, helper);\n this.renderSelector(node.pageIndex, currentSelector, helper);\n }\n }\n }\n else {\n this.dragAnnotation(obj, tx, ty);\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @returns {void}\n */\n Drawing.prototype.dragAnnotation = function (obj, tx, ty) {\n var oldValues = { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY };\n //bug (EJ2-62649) : fixed an issue with difficulty on moving/ resizing free text annotation that added in edge of viewer\n var newDiff = this.moveInsideViewer(obj, tx, ty);\n obj.wrapper.offsetX += newDiff.tx;\n obj.wrapper.offsetY += newDiff.ty;\n if (isLineShapes(obj) || obj.shapeAnnotationType === 'Polygon') {\n if (obj.wrapper.children.length) {\n var nodes = obj.wrapper.children;\n for (var i = 0; i < nodes.length; i++) {\n nodes[parseInt(i.toString(), 10)].offsetX += tx;\n nodes[parseInt(i.toString(), 10)].offsetY += ty;\n }\n }\n this.dragControlPoint(obj, tx, ty, true);\n }\n this.nodePropertyChange(obj, { bounds: { x: obj.wrapper.offsetX, y: obj.wrapper.offsetY } });\n obj.wrapper.measureChildren = false;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + obj.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvas, obj.pageIndex);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {boolean} preventUpdate - Specified the prevent update or not.\n * @param {number} segmentNumber - Specified the segment value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.dragControlPoint = function (obj, tx, ty, preventUpdate, segmentNumber) {\n // eslint-disable-next-line\n var connector = this.pdfViewer.nameTable[obj.id];\n for (var i = 0; i < connector.vertexPoints.length; i++) {\n (connector.vertexPoints[parseInt(i.toString(), 10)]).x += tx;\n (connector.vertexPoints[parseInt(i.toString(), 10)]).y += ty;\n }\n if (!preventUpdate) {\n this.updateEndPoint(connector);\n }\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the connector object.\n * @returns {void}\n */\n Drawing.prototype.updateEndPoint = function (connector) {\n this.nodePropertyChange(connector, { vertexPoints: connector.vertexPoints });\n this.renderSelector(connector.pageIndex);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} actualObject - Specified the actual annotaion object.\n * @param {PdfAnnotationBaseModel} node - Specified the node annotation object.\n * @returns {void}\n */\n Drawing.prototype.nodePropertyChange = function (actualObject, node) {\n var existingBounds = actualObject.wrapper.outerBounds;\n var existingInnerBounds = actualObject.wrapper.bounds;\n var i;\n if (node.bounds) {\n if (node.bounds.width !== undefined) {\n actualObject.bounds.width = actualObject.wrapper.width = node.bounds.width;\n }\n if (node.bounds.height !== undefined) {\n actualObject.bounds.height = actualObject.wrapper.height = node.bounds.height;\n }\n if (node.bounds.x !== undefined) {\n actualObject.bounds.x = node.bounds.x - (actualObject.bounds.width * 0.5);\n actualObject.wrapper.offsetX = node.bounds.x;\n \n }\n if (node.bounds.y !== undefined) {\n actualObject.bounds.y = node.bounds.y - (actualObject.bounds.height * 0.5);\n actualObject.wrapper.offsetY = node.bounds.y;\n \n }\n if (node.leaderHeight !== undefined) {\n actualObject.leaderHeight = node.leaderHeight;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (actualObject.wrapper.children.length) {\n var children = actualObject.wrapper.children;\n for (var i_1 = 0; i_1 < children.length; i_1++) {\n if (children[parseInt(i_1.toString(), 10)].id) {\n var names = children[parseInt(i_1.toString(), 10)].id.split('_');\n if (names.length && (names.indexOf('perimeter') > -1 || names.indexOf('radius') > -1)) {\n this.setNodePosition(children[parseInt(i_1.toString(), 10)], actualObject);\n }\n else if (names.length && (names.indexOf('srcDec') > -1)) {\n children[parseInt(i_1.toString(), 10)].offsetX = actualObject.vertexPoints[0].x;\n children[parseInt(i_1.toString(), 10)].offsetY = actualObject.vertexPoints[0].y;\n }\n else if (names.length && names.indexOf('tarDec') > -1) {\n children[parseInt(i_1.toString(), 10)].offsetX = actualObject.vertexPoints[actualObject.vertexPoints.length - 1].x;\n children[parseInt(i_1.toString(), 10)].offsetY = actualObject.vertexPoints[actualObject.vertexPoints.length - 1].y;\n }\n else if (names.length && (names.indexOf('stamp') > -1)) {\n // eslint-disable-next-line\n var ratio = 0;\n if (actualObject.wrapper.width !== undefined && actualObject.wrapper.height !== undefined) {\n ratio = 20;\n \n }\n if (actualObject.isDynamicStamp) {\n children[parseInt(i_1.toString(), 10)].width = actualObject.bounds.width - ratio;\n children[parseInt(i_1.toString(), 10)].height = (actualObject.bounds.height / 2) - ratio;\n // eslint-disable-next-line\n var element = children[1];\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.stampSettings ? this.pdfViewer.stampSettings : this.pdfViewer.annotationSettings;\n // eslint-disable-next-line max-len\n if (annotationSettings && (annotationSettings.maxHeight || annotationSettings.maxWidth) && (actualObject.bounds.height > 60)) {\n if (ratio != 0) {\n element.style.fontSize = (actualObject.bounds.width / ratio);\n }\n else {\n element.style.fontSize = (actualObject.wrapper.bounds.width / 20);\n }\n }\n else {\n if (ratio != 0) {\n element.style.fontSize = this.fontSizeCalculation(actualObject, element, (actualObject.bounds.width - 20));\n }\n else {\n element.style.fontSize = this.fontSizeCalculation(actualObject, element, (actualObject.wrapper.bounds.width - 20));\n }\n }\n if (ratio !== 0) {\n element.margin.bottom = -(children[parseInt(i_1.toString(), 10)].height / 2);\n }\n }\n else {\n children[parseInt(i_1.toString(), 10)].width = actualObject.bounds.width - ratio;\n children[parseInt(i_1.toString(), 10)].height = actualObject.bounds.height - ratio;\n }\n children[parseInt(i_1.toString(), 10)].offsetX = actualObject.wrapper.offsetX;\n children[parseInt(i_1.toString(), 10)].offsetY = actualObject.wrapper.offsetX;\n children[parseInt(i_1.toString(), 10)].isDirt = true;\n }\n }\n }\n }\n }\n if (node.sourceDecoraterShapes !== undefined) {\n actualObject.sourceDecoraterShapes = node.sourceDecoraterShapes;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.isReadonly !== undefined && actualObject.shapeAnnotationType === 'FreeText') {\n actualObject.isReadonly = node.isReadonly;\n }\n if (node.taregetDecoraterShapes !== undefined) {\n actualObject.taregetDecoraterShapes = node.taregetDecoraterShapes;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.fillColor !== undefined) {\n actualObject.fillColor = node.fillColor;\n actualObject.wrapper.children[0].style.fill = node.fillColor;\n if ((actualObject.enableShapeLabel || actualObject.measureType) && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_2 = 0; i_2 < children.length; i_2++) {\n if (children[parseInt(i_2.toString(), 10)].textNodes) {\n if (actualObject.enableShapeLabel) {\n actualObject.labelFillColor = node.fillColor;\n children[parseInt(i_2.toString(), 10)].style.fill = node.fillColor;\n }\n if (actualObject.measureType) {\n children[parseInt(i_2.toString(), 10)].style.fill = node.fillColor;\n }\n }\n }\n }\n \n }\n if (actualObject.enableShapeLabel && node.labelFillColor !== undefined) {\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_3 = 0; i_3 < children.length; i_3++) {\n if (children[parseInt(i_3.toString(), 10)].textNodes) {\n actualObject.labelFillColor = node.labelFillColor;\n children[parseInt(i_3.toString(), 10)].style.fill = node.labelFillColor;\n }\n }\n }\n }\n if (node.opacity !== undefined) {\n if (actualObject.shapeAnnotationType === 'Stamp' || actualObject.shapeAnnotationType === 'FreeText') {\n actualObject.wrapper.children[1].style.opacity = node.opacity;\n if (actualObject.wrapper.children[2]) {\n actualObject.wrapper.children[2].style.opacity = node.opacity;\n }\n }\n else {\n if (actualObject.shapeAnnotationType === 'StickyNotes') {\n // eslint-disable-next-line\n this.pdfViewer.nameTable[actualObject.annotName].wrapper.children[0].style.opacity = node.opacity;\n }\n actualObject.opacity = node.opacity;\n }\n actualObject.wrapper.children[0].style.opacity = node.opacity;\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_4 = 0; i_4 < children.length; i_4++) {\n if (children[parseInt(i_4.toString(), 10)].textNodes) {\n children[parseInt(i_4.toString(), 10)].style.opacity = node.labelOpacity;\n }\n }\n }\n \n }\n if (actualObject.enableShapeLabel && node.labelOpacity !== undefined) {\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_5 = 0; i_5 < children.length; i_5++) {\n if (children[parseInt(i_5.toString(), 10)].textNodes) {\n children[parseInt(i_5.toString(), 10)].style.opacity = node.labelOpacity;\n }\n }\n }\n }\n if (node.rotateAngle !== undefined) {\n actualObject.rotateAngle = node.rotateAngle;\n actualObject.wrapper.rotateAngle = node.rotateAngle;\n \n }\n if (node.strokeColor !== undefined) {\n actualObject.strokeColor = node.strokeColor;\n actualObject.wrapper.children[0].style.strokeColor = node.strokeColor;\n \n }\n if (node.fontColor !== undefined) {\n actualObject.fontColor = node.fontColor;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.color = node.fontColor;\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else {\n children[1].horizontalAlignment = 'Auto';\n }\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_6 = 0; i_6 < children.length; i_6++) {\n if (children[parseInt(i_6.toString(), 10)].textNodes) {\n children[parseInt(i_6.toString(), 10)].style.color = node.fontColor;\n }\n }\n }\n \n }\n if (node.fontFamily !== undefined) {\n actualObject.fontFamily = node.fontFamily;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.fontFamily = node.fontFamily;\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_7 = 0; i_7 < children.length; i_7++) {\n if (children[parseInt(i_7.toString(), 10)].textNodes) {\n children[parseInt(i_7.toString(), 10)].style.fontFamily = node.fontFamily;\n }\n }\n }\n \n }\n if (node.fontSize !== undefined) {\n actualObject.fontSize = node.fontSize;\n if ((actualObject.shapeAnnotationType === 'FreeText' || actualObject.shapeAnnotationType === 'SignatureText') && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.fontSize = node.fontSize;\n if (actualObject.shapeAnnotationType === 'SignatureText') {\n actualObject.wrapper.children[1].bounds.width = actualObject.bounds.width;\n actualObject.wrapper.children[1].desiredSize.width = actualObject.bounds.width;\n actualObject.wrapper.children[1].actualSize.width = actualObject.bounds.width;\n children[1].horizontalAlignment = 'Center';\n children[1].verticalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n }\n }\n if (actualObject.enableShapeLabel && actualObject.wrapper && actualObject.wrapper.children) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_8 = 0; i_8 < children.length; i_8++) {\n if (children[parseInt(i_8.toString(), 10)].textNodes) {\n children[parseInt(i_8.toString(), 10)].style.fontSize = node.fontSize;\n }\n }\n }\n \n }\n if (node.font !== undefined) {\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (node.font.isBold !== undefined) {\n children[1].style.bold = node.font.isBold;\n actualObject.font.isBold = node.font.isBold;\n }\n if (node.font.isItalic !== undefined) {\n children[1].style.italic = node.font.isItalic;\n actualObject.font.isItalic = node.font.isItalic;\n }\n if (node.font.isUnderline !== undefined) {\n if (node.font.isUnderline) {\n actualObject.font.isStrikeout = false;\n }\n if (node.font.isUnderline === true) {\n children[1].style.textDecoration = 'Underline';\n }\n else {\n if (!node.font.isStrikeout) {\n children[1].style.textDecoration = 'None';\n }\n }\n actualObject.font.isUnderline = node.font.isUnderline;\n }\n if (node.font.isStrikeout !== undefined) {\n if (node.font.isStrikeout) {\n actualObject.font.isUnderline = false;\n }\n if (node.font.isStrikeout === true) {\n children[1].style.textDecoration = 'LineThrough';\n }\n else {\n if (!node.font.isUnderline) {\n children[1].style.textDecoration = 'None';\n }\n }\n actualObject.font.isStrikeout = node.font.isStrikeout;\n }\n }\n \n }\n if (node.textAlign !== undefined) {\n actualObject.textAlign = node.textAlign;\n if (actualObject.shapeAnnotationType === 'FreeText' && actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n children[1].style.textAlign = node.textAlign;\n if (children[1].childNodes.length === 1) {\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Right') {\n children[1].horizontalAlignment = 'Right';\n children[1].setOffsetWithRespectToBounds(0.97, 0, null);\n }\n else if (actualObject.textAlign === 'Left') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Center') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0.46, 0, null);\n }\n }\n else if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else {\n children[1].horizontalAlignment = 'Auto';\n }\n }\n \n }\n if (node.thickness !== undefined) {\n actualObject.thickness = node.thickness;\n actualObject.wrapper.children[0].style.strokeWidth = node.thickness;\n if (actualObject.shapeAnnotationType === 'LineWidthArrowHead') {\n actualObject.wrapper.children[1].width = 12 * node.thickness;\n actualObject.wrapper.children[1].height = 12 * node.thickness;\n actualObject.wrapper.children[2].width = 12 * node.thickness;\n actualObject.wrapper.children[2].height = 12 * node.thickness;\n }\n \n }\n if (node.borderDashArray !== undefined) {\n actualObject.borderDashArray = node.borderDashArray;\n actualObject.wrapper.children[0].style.strokeDashArray = node.borderDashArray;\n }\n if (node.borderStyle !== undefined) {\n actualObject.borderStyle = node.borderStyle;\n }\n if (node.author !== undefined) {\n actualObject.author = node.author;\n }\n if (node.modifiedDate !== undefined) {\n actualObject.modifiedDate = node.modifiedDate;\n }\n if (node.subject !== undefined) {\n actualObject.subject = node.subject;\n }\n if (node.vertexPoints !== undefined) {\n actualObject.vertexPoints = node.vertexPoints;\n // eslint-disable-next-line\n this.pdfViewer.nameTable[actualObject.id].vertexPoints = node.vertexPoints;\n this.updateConnector(actualObject, node.vertexPoints);\n }\n if (node.leaderHeight !== undefined && actualObject.shapeAnnotationType !== 'Polygon') {\n actualObject.leaderHeight = node.leaderHeight;\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (node.notes !== undefined) {\n actualObject.notes = node.notes;\n }\n if (node.annotName !== undefined) {\n actualObject.annotName = node.annotName;\n }\n if (actualObject.shapeAnnotationType === 'Distance') {\n for (i = 0; i < actualObject.wrapper.children.length; i++) {\n // eslint-disable-next-line\n var segment = actualObject.wrapper.children[i];\n // eslint-disable-next-line\n var points = getConnectorPoints(actualObject);\n if (segment.id.indexOf('leader1') > -1) {\n this.setLineDistance(actualObject, points, segment, false);\n }\n if (segment.id.indexOf('leader2') > -1) {\n this.setLineDistance(actualObject, points, segment, true);\n }\n }\n this.updateConnector(actualObject, actualObject.vertexPoints);\n }\n if (actualObject.shapeAnnotationType === 'Polygon' && node.vertexPoints) {\n actualObject.data = getPolygonPath(actualObject.vertexPoints);\n // eslint-disable-next-line\n var path = actualObject.wrapper.children[0];\n path.data = actualObject.data;\n path.canMeasurePath = true;\n }\n if (isLineShapes(actualObject)) {\n for (var i_9 = 0; i_9 < actualObject.wrapper.children.length; i_9++) {\n // eslint-disable-next-line\n var childElement = actualObject.wrapper.children[i_9];\n if (!childElement.textNodes) {\n setElementStype(actualObject, actualObject.wrapper.children[parseInt(i_9.toString(), 10)]);\n }\n if (actualObject.enableShapeLabel === true) {\n if (actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof TextElement) {\n actualObject.wrapper.children[parseInt(i_9.toString(), 10)].style.fill = actualObject.labelFillColor;\n }\n if ((actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof PathElement && actualObject.measureType === 'Perimeter')) {\n actualObject.wrapper.children[parseInt(i_9.toString(), 10)].style.fill = 'transparent';\n }\n }\n else {\n if ((actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof PathElement && actualObject.measureType === 'Perimeter') || actualObject.wrapper.children[parseInt(i_9.toString(), 10)] instanceof TextElement) {\n actualObject.wrapper.children[parseInt(i_9.toString(), 10)].style.fill = 'transparent';\n }\n }\n }\n }\n if (actualObject && (actualObject.shapeAnnotationType === 'FreeText' || actualObject.enableShapeLabel === true)) {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n for (var i_10 = 0; i_10 < children.length; i_10++) {\n if (children[parseInt(i_10.toString(), 10)].textNodes) {\n if (actualObject.shapeAnnotationType === 'FreeText') {\n if (node.dynamicText) {\n children[parseInt(i_10.toString(), 10)].content = node.dynamicText;\n actualObject.dynamicText = node.dynamicText;\n }\n else {\n children[parseInt(i_10.toString(), 10)].content = actualObject.dynamicText;\n }\n children[parseInt(i_10.toString(), 10)].width = actualObject.bounds.width;\n }\n else if (actualObject.enableShapeLabel === true && actualObject.measureType) {\n if (node.labelContent) {\n children[parseInt(i_10.toString(), 10)].content = node.labelContent;\n actualObject.labelContent = node.labelContent;\n }\n else {\n children[parseInt(i_10.toString(), 10)].content = actualObject.labelContent;\n }\n actualObject.notes = children[parseInt(i_10.toString(), 10)].content;\n }\n else if (actualObject.enableShapeLabel === true) {\n if (node.labelContent) {\n children[parseInt(i_10.toString(), 10)].content = node.labelContent;\n actualObject.labelContent = node.labelContent;\n }\n else {\n children[parseInt(i_10.toString(), 10)].content = actualObject.labelContent;\n }\n actualObject.notes = children[parseInt(i_10.toString(), 10)].content;\n }\n children[parseInt(i_10.toString(), 10)].isDirt = true;\n }\n /** set text node width less than the parent */\n }\n }\n }\n if (actualObject && actualObject.shapeAnnotationType === \"SignatureText\" && actualObject.wrapper) {\n if (actualObject.wrapper.children && actualObject.wrapper.children.length > 1) {\n actualObject.wrapper.children[1].isDirt = true;\n }\n }\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n actualObject.wrapper.arrange(actualObject.wrapper.desiredSize);\n if (actualObject && actualObject.formFieldAnnotationType) {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children[0];\n children.actualSize.width = actualObject.wrapper.desiredSize.width;\n children.actualSize.height = actualObject.wrapper.desiredSize.height;\n }\n }\n if (actualObject && actualObject.shapeAnnotationType === 'FreeText' && actualObject.subject === 'Text Box') {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n }\n else if (children[1].childNodes.length === 1) {\n if (actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Right') {\n children[1].horizontalAlignment = 'Right';\n children[1].setOffsetWithRespectToBounds(0.97, 0, null);\n }\n else if (actualObject.textAlign === 'Left') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n else if (actualObject.textAlign === 'Center') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0.46, 0, null);\n }\n }\n for (var i_11 = 0; i_11 < children.length; i_11++) {\n if (children[parseInt(i_11.toString(), 10)].textNodes && children[parseInt(i_11.toString(), 10)].textNodes.length > 0) {\n children[parseInt(i_11.toString(), 10)].isDirt = true;\n var childNodeHeight = children[parseInt(i_11.toString(), 10)].textNodes.length * children[parseInt(i_11.toString(), 10)].textNodes[0].dy;\n var heightDiff = actualObject.bounds.height - childNodeHeight;\n if (heightDiff > 0 && heightDiff < children[parseInt(i_11.toString(), 10)].textNodes[0].dy) {\n childNodeHeight = childNodeHeight + children[parseInt(i_11.toString(), 10)].textNodes[0].dy;\n }\n if (childNodeHeight > actualObject.bounds.height) {\n var contString = '';\n for (var index = 0; index < children[parseInt(i_11.toString(), 10)].textNodes.length; index++) {\n // eslint-disable-next-line\n var childHeight = children[i_11].textNodes[0].dy * (index + 1);\n // eslint-disable-next-line\n childHeight = childHeight;\n contString = contString + children[parseInt(i_11.toString(), 10)].textNodes[parseInt(index.toString(), 10)].text;\n }\n children[parseInt(i_11.toString(), 10)].content = contString;\n }\n }\n /** set text node width less than the parent */\n children[parseInt(i_11.toString(), 10)].width = actualObject.bounds.width;\n }\n }\n actualObject.wrapper.measure(new Size(actualObject.wrapper.bounds.width, actualObject.wrapper.bounds.height));\n actualObject.wrapper.arrange(actualObject.wrapper.desiredSize);\n }\n this.pdfViewer.renderDrawing(undefined, actualObject.pageIndex);\n if (actualObject && actualObject.shapeAnnotationType === 'FreeText') {\n if (actualObject.wrapper && actualObject.wrapper.children && actualObject.wrapper.children.length) {\n // eslint-disable-next-line\n var children = actualObject.wrapper.children;\n if (children[1].childNodes.length === 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Left';\n children[1].setOffsetWithRespectToBounds(0.5, 0, null);\n }\n else if (children[1].childNodes.length > 1 && actualObject.textAlign === 'Justify') {\n children[1].horizontalAlignment = 'Center';\n children[1].setOffsetWithRespectToBounds(0, 0, null);\n }\n }\n }\n };\n Drawing.prototype.fontSizeCalculation = function (actualObject, element, boundsWidth) {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + actualObject.pageIndex);\n var context = canvas.getContext(\"2d\");\n var textwidth = 0;\n var newsize = 0;\n var fontStyle = '';\n if (element.style.italic && element.style.bold) {\n fontStyle = 'bold italic ';\n }\n else if (element.style.bold) {\n fontStyle = 'bold ';\n }\n else if (element.style.italic) {\n fontStyle = 'italic ';\n }\n while (boundsWidth > textwidth) {\n context.font = fontStyle + newsize + 'px ' + element.style.fontFamily;\n textwidth = context.measureText(actualObject.dynamicText).width;\n newsize += 0.1;\n }\n newsize -= 0.1;\n return newsize;\n };\n // eslint-disable-next-line\n Drawing.prototype.setLineDistance = function (actualObject, points, segment, leader) {\n var node1;\n if (leader) {\n node1 = initLeader(actualObject, points[1], points[0], leader);\n }\n else {\n node1 = initLeader(actualObject, points[0], points[1], leader);\n }\n segment.data = node1.data;\n segment.offsetX = node1.offsetX;\n segment.offsetY = node1.offsetY;\n segment.rotateAngle = node1.rotateAngle;\n segment.width = node1.width;\n segment.height = node1.height;\n segment.pivot = node1.pivot;\n segment.canMeasurePath = true;\n segment.isDirt = true;\n };\n /**\n * @private\n * @param {number} sx - Specified the sx value.\n * @param {number} sy - Specified the sy value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scaleSelectedItems = function (sx, sy, pivot) {\n var obj = this.pdfViewer.selectedItems;\n return this.scale(obj, sx, sy, pivot);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel | SelectorModel} obj - Specified the annotaion object.\n * @param {number} sx - Specified the sx value.\n * @param {number} sy - Specified the sy value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scale = function (obj, sx, sy, pivot) {\n var checkBoundaryConstraints = true;\n if (obj instanceof Selector) {\n if (obj.annotations && obj.annotations.length) {\n for (var _i = 0, _a = obj.annotations; _i < _a.length; _i++) {\n var node = _a[_i];\n checkBoundaryConstraints = this.scaleAnnotation(node, sx, sy, pivot, obj);\n }\n }\n else if (obj.formFields && obj.formFields.length) {\n for (var _b = 0, _c = obj.formFields; _b < _c.length; _b++) {\n var node = _c[_b];\n checkBoundaryConstraints = this.scaleAnnotation(node, sx, sy, pivot, obj);\n }\n }\n }\n else {\n checkBoundaryConstraints = this.scaleAnnotation(obj, sx, sy, pivot, undefined);\n }\n return checkBoundaryConstraints;\n };\n /**\n * @private\n * @param {number} sw - Specified the sw value.\n * @param {number} sh - Specified the sh value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {IElement} obj - Specified the annotation object.\n * @param {DrawingElement} element - Specified the annotation element.\n * @param {IElement} refObject - Specified the annotation reference object.\n * @returns {void}\n */\n Drawing.prototype.scaleObject = function (sw, sh, pivot, obj, element, refObject) {\n sw = sw < 0 ? 1 : sw;\n sh = sh < 0 ? 1 : sh;\n if (sw !== 1 || sh !== 1) {\n var width = void 0;\n var height = void 0;\n if (!isLineShapes(obj)) {\n var node = obj;\n var isResize = void 0;\n var bound = void 0;\n width = node.wrapper.actualSize.width * sw;\n height = node.wrapper.actualSize.height * sh;\n if (isResize) {\n width = Math.max(width, (bound.right - node.wrapper.bounds.x));\n height = Math.max(height, (bound.bottom - node.wrapper.bounds.y));\n }\n sw = width / node.wrapper.actualSize.width;\n sh = height / node.wrapper.actualSize.height;\n }\n var matrix = identityMatrix();\n if (!refObject) {\n refObject = obj;\n }\n var refWrapper = refObject.wrapper;\n rotateMatrix(matrix, -refWrapper.rotateAngle, pivot.x, pivot.y);\n scaleMatrix(matrix, sw, sh, pivot.x, pivot.y);\n rotateMatrix(matrix, refWrapper.rotateAngle, pivot.x, pivot.y);\n if (!isLineShapes(obj)) {\n var node = obj;\n var newPosition = transformPointByMatrix(matrix, { x: node.wrapper.offsetX, y: node.wrapper.offsetY });\n if (width > 0) {\n node.wrapper.width = width;\n node.wrapper.offsetX = newPosition.x;\n }\n if (height > 0) {\n node.wrapper.height = height;\n node.wrapper.offsetY = newPosition.y;\n }\n this.nodePropertyChange(obj, {\n bounds: { width: node.wrapper.width, height: node.wrapper.height, x: node.wrapper.offsetX, y: node.wrapper.offsetY }\n });\n }\n }\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotaion object.\n * @param {number} sw - Specified the sw value.\n * @param {number} sh - Specified the sh value.\n * @param {PointModel} pivot - Specified the pivot value.\n * @param {IElement} refObject - Specified the reference object.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.scaleAnnotation = function (obj, sw, sh, pivot, refObject) {\n // eslint-disable-next-line\n var node = this.pdfViewer.nameTable[obj.id];\n var element = node.wrapper;\n if (!refObject) {\n refObject = obj;\n }\n var refWrapper = refObject.wrapper;\n var x = refWrapper.offsetX - refWrapper.actualSize.width * refWrapper.pivot.x;\n var y = refWrapper.offsetY - refWrapper.actualSize.height * refWrapper.pivot.y;\n var refPoint = this.getShapePoint(x, y, refWrapper.actualSize.width, refWrapper.actualSize.height, refWrapper.rotateAngle, refWrapper.offsetX, refWrapper.offsetY, pivot);\n if (element.actualSize.width !== undefined && element.actualSize.height !== undefined) {\n this.scaleObject(sw, sh, refPoint, node, element, refObject);\n }\n // eslint-disable-next-line max-len\n var constraints = this.checkBoundaryConstraints(undefined, undefined, obj.pageIndex, obj.wrapper.bounds);\n if (!constraints) {\n this.scaleObject(1 / sw, 1 / sh, refPoint, node, element, refObject);\n //bug (EJ2-62649) : fixed an issue with difficulty on moving/ resizing free text annotation that added in edge of viewer \n // eslint-disable-next-line\n if (obj.shapeAnnotationType === 'FreeText' && (obj.id.slice(0, 9) === 'free_text' || obj.id.slice(0, 8) === 'freetext')) {\n var newDiff = this.moveInsideViewer(obj);\n this.nodePropertyChange(obj, {\n bounds: { width: obj.wrapper.width, height: obj.wrapper.height, x: obj.wrapper.offsetX + newDiff.tx, y: obj.wrapper.offsetY + newDiff.ty }\n });\n }\n }\n return constraints;\n };\n //bug (EJ2-62649) : Implemnted method for calculating optimal bound for free text annotation that outside viewer container \n Drawing.prototype.moveInsideViewer = function (obj, tx, ty) {\n tx = tx ? tx : 0;\n ty = ty ? ty : 0;\n if (obj.shapeAnnotationType === 'FreeText' && (obj.id.slice(0, 9) === 'free_text' || obj.id.slice(0, 8) === 'freetext')) {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + obj.pageIndex);\n if (canvas) {\n var bounds = obj.wrapper.bounds;\n var width = canvas.clientWidth / this.pdfViewer.viewerBase.getZoomFactor();\n var height = canvas.clientHeight / this.pdfViewer.viewerBase.getZoomFactor();\n var right = bounds.right;\n var left = bounds.left;\n var top_1 = bounds.top;\n var bottom = bounds.bottom;\n // eslint-disable-next-line\n if (!(right + tx <= width - 3 && left + tx >= 1 && bottom + ty <= height - 3 && top_1 + ty >= 1)) {\n var txNew = 0;\n var tyNew = 0;\n if (!(right <= width - 3)) {\n txNew = width - right - 3;\n }\n if (!(left >= 1)) {\n txNew = txNew - left + 1;\n }\n if (!(bottom <= height - 3)) {\n tyNew = height - bottom - 3;\n }\n if (!(top_1 >= 1)) {\n tyNew = tyNew - top_1 + 1;\n }\n if (txNew !== 0) {\n tx = txNew;\n }\n if (tyNew !== 0) {\n ty = tyNew;\n }\n }\n }\n }\n return { tx: tx, ty: ty };\n };\n /**\n * @private\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the ty value.\n * @param {number} pageIndex - Specified the page index value.\n * @param {Rect} nodeBounds - Specified the node bounds value.\n * @param {boolean} isStamp - Specified the annotation is stamp or not.\n * @param {boolean} isSkip - Specified the annotaion is skip or not.\n * @returns {boolean} - Returns true or false.\n */\n // eslint-disable-next-line max-len\n Drawing.prototype.checkBoundaryConstraints = function (tx, ty, pageIndex, nodeBounds, isStamp, isSkip) {\n var selectorBounds = !nodeBounds ? this.pdfViewer.selectedItems.wrapper.bounds : undefined;\n var bounds = nodeBounds;\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n var heightDifference = 1;\n if (canvas) {\n var width = canvas.clientWidth / this.pdfViewer.viewerBase.getZoomFactor();\n var height = canvas.clientHeight / this.pdfViewer.viewerBase.getZoomFactor();\n var right = (nodeBounds ? bounds.right : selectorBounds.right) + (tx || 0);\n var left = (nodeBounds ? bounds.left : selectorBounds.left) + (tx || 0);\n var top_2 = (nodeBounds ? bounds.top : selectorBounds.top) + (ty || 0);\n var bottom = (nodeBounds ? bounds.bottom : selectorBounds.bottom) + (ty || 0);\n if (isStamp) {\n heightDifference = 50;\n if (this.pdfViewer.viewerBase.eventArgs && this.pdfViewer.viewerBase.eventArgs.source) {\n if (this.RestrictStamp(this.pdfViewer.viewerBase.eventArgs.source)) {\n return false;\n }\n }\n }\n if ((right <= width - 3 && left >= 1 && bottom <= height - 3 && top_2 >= heightDifference) || isSkip) {\n return true;\n }\n }\n return false;\n };\n // eslint-disable-next-line\n Drawing.prototype.RestrictStamp = function (source) {\n // eslint-disable-next-line max-len\n if (source && source.pageIndex !== undefined && this.pdfViewer.viewerBase.activeElements && source.pageIndex !== this.pdfViewer.viewerBase.activeElements.activePageID) {\n return true;\n }\n return false;\n };\n /**\n * @private\n * @param {DrawingElement} shapeElement - Specified the shape element.\n * @returns {Rect} - Returns the rectangle object.\n */\n Drawing.prototype.getShapeBounds = function (shapeElement) {\n var shapeBounds = new Rect();\n var shapeCorners = cornersPointsBeforeRotation(shapeElement);\n var shapeMiddleLeft = shapeCorners.middleLeft;\n var shapeTopCenter = shapeCorners.topCenter;\n var shapeBottomCenter = shapeCorners.bottomCenter;\n var shapeMiddleRight = shapeCorners.middleRight;\n var shapeTopLeft = shapeCorners.topLeft;\n var shapeTopRight = shapeCorners.topRight;\n var shapeBottomLeft = shapeCorners.bottomLeft;\n var shapeBottomRight = shapeCorners.bottomRight;\n shapeElement.corners = {\n topLeft: shapeTopLeft, topCenter: shapeTopCenter, topRight: shapeTopRight, middleLeft: shapeMiddleLeft,\n middleRight: shapeMiddleRight, bottomLeft: shapeBottomLeft, bottomCenter: shapeBottomCenter, bottomRight: shapeBottomRight\n };\n if (shapeElement.rotateAngle !== 0 || shapeElement.parentTransform !== 0) {\n var matrix = identityMatrix();\n rotateMatrix(matrix, shapeElement.rotateAngle + shapeElement.parentTransform, shapeElement.offsetX, shapeElement.offsetY);\n shapeElement.corners.topLeft = shapeTopLeft = transformPointByMatrix(matrix, shapeTopLeft);\n shapeElement.corners.topCenter = shapeTopCenter = transformPointByMatrix(matrix, shapeTopCenter);\n shapeElement.corners.topRight = shapeTopRight = transformPointByMatrix(matrix, shapeTopRight);\n shapeElement.corners.middleLeft = shapeMiddleLeft = transformPointByMatrix(matrix, shapeMiddleLeft);\n shapeElement.corners.middleRight = shapeMiddleRight = transformPointByMatrix(matrix, shapeMiddleRight);\n shapeElement.corners.bottomLeft = shapeBottomLeft = transformPointByMatrix(matrix, shapeBottomLeft);\n shapeElement.corners.bottomCenter = shapeBottomCenter = transformPointByMatrix(matrix, shapeBottomCenter);\n shapeElement.corners.bottomRight = shapeBottomRight = transformPointByMatrix(matrix, shapeBottomRight);\n //Set corners based on rotate angle\n }\n shapeBounds = Rect.toBounds([shapeTopLeft, shapeTopRight, shapeBottomLeft, shapeBottomRight]);\n shapeElement.corners.left = shapeBounds.left;\n shapeElement.corners.right = shapeBounds.right;\n shapeElement.corners.top = shapeBounds.top;\n shapeElement.corners.bottom = shapeBounds.bottom;\n shapeElement.corners.center = shapeBounds.center;\n shapeElement.corners.width = shapeBounds.width;\n shapeElement.corners.height = shapeBounds.height;\n return shapeBounds;\n };\n /**\n * @private\n * @param {number} x - Specified the x value.\n * @param {number} y - Specified the y value.\n * @param {number} w - Specified the w value.\n * @param {number} h - Specified the h value.\n * @param {number} angle - Specified the angle value.\n * @param {number} offsetX - Specified the offset x value.\n * @param {number} offsetY - Specified the offset y value.\n * @param {PointModel} cornerPoint - Specified the corner point value.\n * @returns {PointModel} - Returns the point model.\n */\n Drawing.prototype.getShapePoint = function (x, y, w, h, angle, offsetX, offsetY, cornerPoint) {\n var pivotPoint = { x: 0, y: 0 };\n var transformMatrix = identityMatrix();\n rotateMatrix(transformMatrix, angle, offsetX, offsetY);\n switch (cornerPoint.x) {\n case 1:\n switch (cornerPoint.y) {\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y + h }));\n break;\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y }));\n break;\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w, y: y + h / 2 }));\n break;\n }\n break;\n case 0:\n switch (cornerPoint.y) {\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y + h / 2 }));\n break;\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y + h }));\n break;\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x, y: y }));\n break;\n }\n break;\n case 0.5:\n switch (cornerPoint.y) {\n case 0:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y }));\n break;\n case 0.5:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y + h / 2 }));\n break;\n case 1:\n pivotPoint = transformPointByMatrix(transformMatrix, ({ x: x + w / 2, y: y + h }));\n break;\n }\n break;\n }\n return { x: pivotPoint.x, y: pivotPoint.y };\n };\n /**\n * @private\n * @param {string} endPoint - Specified the end point value.\n * @param {IElement} obj - Specified the annotaion object.\n * @param {PointModel} point - Specified the annotation points.\n * @param {PointModel} segment - Specified the annotaion segment.\n * @param {IElement} target - Specified the target element.\n * @param {string} targetPortId - Specified the target port id.\n * @param {any} currentSelector - Specified the current selector value.\n * @returns {boolean} - Returns true or false.\n */\n // eslint-disable-next-line\n Drawing.prototype.dragConnectorEnds = function (endPoint, obj, point, segment, target, targetPortId, currentSelector) {\n var selectorModel;\n var connector;\n var tx;\n var ty;\n if (obj instanceof Selector) {\n selectorModel = obj;\n connector = selectorModel.annotations[0];\n }\n else {\n connector = obj;\n }\n point = { x: point.x / this.pdfViewer.viewerBase.getZoomFactor(), y: point.y / this.pdfViewer.viewerBase.getZoomFactor() };\n if (this.checkBoundaryConstraints(undefined, undefined, connector.pageIndex, connector.wrapper.bounds)) {\n if (connector.shapeAnnotationType === 'Distance') {\n var leader = isLeader(connector, endPoint);\n if (endPoint === 'Leader0') {\n if (this.pdfViewer.viewerBase.tool instanceof LineTool) {\n connector.vertexPoints[0].x = point.x;\n connector.vertexPoints[0].y = point.y;\n }\n else {\n tx = point.x - leader.point.x;\n ty = point.y - leader.point.y;\n connector.vertexPoints[0].x += tx;\n connector.vertexPoints[0].y += ty;\n }\n }\n else if (endPoint === 'Leader1') {\n var length_2 = connector.vertexPoints.length - 1;\n if (this.pdfViewer.viewerBase.tool instanceof LineTool) {\n connector.vertexPoints[parseInt(length_2.toString(), 10)].x = point.x;\n connector.vertexPoints[parseInt(length_2.toString(), 10)].y = point.y;\n }\n else {\n tx = point.x - leader.point.x;\n ty = point.y - leader.point.y;\n connector.vertexPoints[parseInt(length_2.toString(), 10)].x += tx;\n connector.vertexPoints[parseInt(length_2.toString(), 10)].y += ty;\n }\n }\n else {\n // eslint-disable-next-line\n var angle = Point.findAngle(connector.sourcePoint, connector.targetPoint);\n // eslint-disable-next-line\n var center = obj.wrapper.children[0].bounds.center;\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, -angle, center.x, center.y);\n // eslint-disable-next-line\n var rotatedPoint = transformPointByMatrix(matrix, { x: point.x, y: point.y });\n if (endPoint.split('_')[0] === 'ConnectorSegmentPoint') {\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, -angle, center.x, center.y);\n // eslint-disable-next-line\n var rotatedPoint1 = transformPointByMatrix(matrix, connector.vertexPoints[0]);\n // eslint-disable-next-line\n var rotatedPoint2 = transformPointByMatrix(matrix, connector.vertexPoints[connector.vertexPoints.length - 1]);\n ty = rotatedPoint.y - rotatedPoint1.y;\n if (connector.leaderHeight === 0 && connector.leaderHeight != null) {\n connector.leaderHeight = this.pdfViewer.distanceSettings.leaderLength;\n }\n else {\n connector.leaderHeight += ty;\n rotatedPoint1.y += ty;\n rotatedPoint2.y += ty;\n // eslint-disable-next-line\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n connector.vertexPoints[0] = transformPointByMatrix(matrix, rotatedPoint1);\n connector.vertexPoints[connector.vertexPoints.length - 1] = transformPointByMatrix(matrix, rotatedPoint2);\n }\n }\n }\n }\n else if (endPoint.split('_')[0] === 'ConnectorSegmentPoint') {\n var i = Number(endPoint.split('_')[1]);\n tx = point.x - connector.vertexPoints[parseInt(i.toString(), 10)].x;\n ty = point.y - connector.vertexPoints[parseInt(i.toString(), 10)].y;\n connector.vertexPoints[parseInt(i.toString(), 10)].x += tx;\n connector.vertexPoints[parseInt(i.toString(), 10)].y += ty;\n if (connector.vertexPoints.length > 2 && obj.measureType !== 'Perimeter') {\n if (parseFloat(endPoint.split('_')[1]) === 0) {\n connector.vertexPoints[connector.vertexPoints.length - 1].x += tx;\n connector.vertexPoints[connector.vertexPoints.length - 1].y += ty;\n }\n else if (parseFloat(endPoint.split('_')[1]) === connector.vertexPoints.length - 1) {\n connector.vertexPoints[0].x += tx;\n connector.vertexPoints[0].y += ty;\n }\n }\n }\n this.nodePropertyChange(connector, { vertexPoints: connector.vertexPoints });\n this.renderSelector(connector.pageIndex, currentSelector);\n }\n this.pdfViewer.renderDrawing();\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {number} tx - Specified the tx value.\n * @param {number} ty - Specified the y value.\n * @param {number} i - Specified the index value.\n * @returns {boolean} - Returns true or false.\n */\n Drawing.prototype.dragSourceEnd = function (obj, tx, ty, i) {\n // eslint-disable-next-line\n var connector = this.pdfViewer.nameTable[obj.id];\n connector.vertexPoints[parseInt(i.toString(), 10)].x += tx;\n connector.vertexPoints[parseInt(i.toString(), 10)].y += ty;\n this.pdfViewer.renderDrawing();\n return true;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} connector - Specified the connector object.\n * @param {PointModel[]} points - Specified the points value.\n * @returns {void}\n */\n Drawing.prototype.updateConnector = function (connector, points) {\n var targetPoint;\n connector.vertexPoints = points;\n updateSegmentElement(connector, points, connector.wrapper.children[0]);\n var srcPoint = connector.sourcePoint;\n var anglePoint = connector.vertexPoints;\n // points = this.clipDecorators(connector, points);\n var element = connector.wrapper.children[0];\n element.canMeasurePath = true;\n for (var i = 0; i < connector.wrapper.children.length; i++) {\n element = connector.wrapper.children[parseInt(i.toString(), 10)];\n if (connector.shapeAnnotationType !== 'Polygon') {\n if (element.id.indexOf('srcDec') > -1) {\n updateDecoratorElement(connector, element, points[0], anglePoint[1], true);\n }\n targetPoint = connector.targetPoint;\n if (element.id.indexOf('tarDec') > -1) {\n updateDecoratorElement(connector, element, points[points.length - 1], anglePoint[anglePoint.length - 2], false);\n }\n }\n }\n };\n /**\n * @private\n * @returns {Object} - Returns the object.\n */\n Drawing.prototype.copy = function () {\n if (((this.pdfViewer.formDesignerModule && !this.pdfViewer.formDesigner.isPropertyDialogOpen) || this.pdfViewer.annotationModule) && (this.pdfViewer.designerMode || this.pdfViewer.enableAnnotation) && (this.pdfViewer.selectedItems.formFields.length !== 0 || this.pdfViewer.selectedItems.annotations.length !== 0)) {\n this.pdfViewer.clipboardData.pasteIndex = 1;\n this.pdfViewer.clipboardData.clipObject = this.copyObjects();\n }\n var isSearchboxDialogOpen;\n var searchBoxId = document.getElementById(this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isPropertyDialogOpen || isSearchboxDialogOpen) {\n this.pdfViewer.clipboardData.clipObject = {};\n }\n return this.pdfViewer.clipboardData.clipObject;\n };\n /**\n * @private\n * @returns {Object[]} - Returns the object array.\n */\n Drawing.prototype.copyObjects = function () {\n var selectedItems = [];\n var obj = [];\n this.pdfViewer.clipboardData.childTable = {};\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n selectedItems = this.pdfViewer.selectedItems.annotations;\n for (var j = 0; j < selectedItems.length; j++) {\n var element = cloneObject((selectedItems[parseInt(j.toString(), 10)]));\n obj.push(element);\n }\n }\n if (this.pdfViewer.selectedItems.formFields.length > 0) {\n selectedItems = this.pdfViewer.selectedItems.formFields;\n for (var j = 0; j < selectedItems.length; j++) {\n var element = cloneObject((selectedItems[parseInt(j.toString(), 10)]));\n obj.push(element);\n }\n }\n if (this.pdfViewer.clipboardData.pasteIndex === 0) {\n for (var _i = 0, selectedItems_1 = selectedItems; _i < selectedItems_1.length; _i++) {\n var item = selectedItems_1[_i];\n // eslint-disable-next-line\n if (this.pdfViewer.nameTable[item.id]) {\n if (!item.formFieldAnnotationType) {\n if (item.annotName)\n this.pdfViewer.annotationModule.deleteAnnotationById(item.annotName);\n else\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n else {\n this.pdfViewer.clearSelection(item.pageIndex);\n this.pdfViewer.formDesignerModule.deleteFormField(item.id);\n }\n }\n }\n //this.endGroupAction();\n }\n this.sortByZIndex(obj, 'zIndex');\n return obj;\n };\n Drawing.prototype.getNewObject = function (obj) {\n var newObj;\n var newobjs = [];\n this.pdfViewer.clipboardData.pasteIndex = 1;\n for (var i = 0; i < obj.length; i++) {\n newObj = cloneObject(obj[parseInt(i.toString(), 10)]);\n newobjs.push(newObj);\n }\n return newobjs;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel[]} obj - Specified the annotation object.\n * @param {number} index - Specified the annotation index.\n * @returns {void}\n */\n Drawing.prototype.paste = function (obj, index) {\n var zoomfactor = this.pdfViewer.viewerBase.getZoomFactor();\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var fieldId;\n if (obj || this.pdfViewer.clipboardData.clipObject) {\n var copiedItems = obj ? this.getNewObject(obj) :\n this.pdfViewer.clipboardData.clipObject;\n if (copiedItems) {\n var objectTable = {};\n if (this.pdfViewer.clipboardData.pasteIndex !== 0) {\n this.pdfViewer.clearSelection(index);\n }\n for (var _i = 0, copiedItems_1 = copiedItems; _i < copiedItems_1.length; _i++) {\n var copy = copiedItems_1[_i];\n fieldId = copy.id;\n copy.id += randomId();\n var fieldName = this.splitFormFieldName(copy);\n var maxNumber = 0; // this.pdfViewer.formFieldCollection.length;\n if (this.pdfViewer.formDesigner) {\n this.pdfViewer.formDesigner.setFormFieldIndex();\n maxNumber = this.pdfViewer.formDesigner.formFieldIndex;\n copy.name = fieldName + maxNumber;\n }\n // eslint-disable-next-line\n objectTable[copy.id] = copy;\n }\n for (var j = 0; j < copiedItems.length; j++) {\n var copy = copiedItems[parseInt(j.toString(), 10)];\n var pageDiv = this.pdfViewer.viewerBase.getElement('_pageDiv_' + copy.pageIndex);\n // eslint-disable-next-line\n var events = event;\n if (events && !events.clientX && !events.clientY) {\n events = { clientX: this.pdfViewer.viewerBase.mouseLeft, clientY: this.pdfViewer.viewerBase.mouseTop };\n }\n if (isBlazor()) {\n events = this.pdfViewer.viewerBase.mouseDownEvent;\n }\n if (isLineShapes(copy)) {\n this.calculateCopyPosition(copy, pageDiv, events);\n }\n else {\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n copy.bounds.x = (events.clientX - pageCurrentRect.left) / zoomfactor;\n copy.bounds.y = (events.clientY - pageCurrentRect.top) / zoomfactor;\n }\n }\n var newNode = cloneObject(copy);\n if (this.pdfViewer.viewerBase.contextMenuModule.previousAction !== 'Cut') {\n newNode.id += randomId();\n if (this.pdfViewer.annotationModule && newNode.shapeAnnotationType !== 'HandWrittenSignature') {\n newNode.annotName = newNode.id;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationCollection(newNode, copiedItems[0], false);\n }\n if (newNode.shapeAnnotationType === 'SignatureText' || newNode.shapeAnnotationType === 'HandWrittenSignature' || newNode.shapeAnnotationType === 'SignatureImage') {\n this.pdfViewer.viewerBase.signatureModule.storeSignatureData(newNode.pageIndex, newNode);\n }\n if (!newNode.formFieldAnnotationType) {\n this.pdfViewer.annotation.addAction(this.pdfViewer.viewerBase.getActivePage(false), null, newNode, 'Addition', '', newNode, newNode);\n }\n }\n else {\n if (this.pdfViewer.annotationModule) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationCollection(newNode, copiedItems[0], true);\n }\n if (newNode.shapeAnnotationType === 'SignatureText' || newNode.shapeAnnotationType === 'HandWrittenSignature' || newNode.shapeAnnotationType === 'SignatureImage') {\n this.pdfViewer.viewerBase.signatureModule.storeSignatureData(newNode.pageIndex, newNode);\n }\n }\n var addedAnnot = this.add(newNode);\n if (this.pdfViewer.formDesigner && addedAnnot.formFieldAnnotationType) {\n this.pdfViewer.annotation.addAction(this.pdfViewer.viewerBase.getActivePage(true), null, addedAnnot, 'Addition', '', addedAnnot, addedAnnot);\n }\n if ((newNode.shapeAnnotationType === 'FreeText' || newNode.enableShapeLabel) && addedAnnot) {\n this.nodePropertyChange(addedAnnot, {});\n }\n if (addedAnnot.formFieldAnnotationType && addedAnnot.pageIndex === index) {\n this.pdfViewer.formFieldCollection.push(addedAnnot);\n // eslint-disable-next-line max-len\n var formField = {\n id: addedAnnot.id, name: addedAnnot.name, value: addedAnnot.value, type: addedAnnot.formFieldAnnotationType,\n isReadOnly: addedAnnot.isReadonly, fontFamily: addedAnnot.fontFamily,\n // eslint-disable-next-line max-len\n fontSize: addedAnnot.fontSize, fontStyle: addedAnnot.fontStyle, color: addedAnnot.color, backgroundColor: addedAnnot.backgroundColor,\n // eslint-disable-next-line max-len\n alignment: addedAnnot.alignment, visibility: addedAnnot.visibility, maxLength: addedAnnot.maxLength, isRequired: addedAnnot.isRequired,\n // eslint-disable-next-line max-len\n isPrint: addedAnnot.isPrint, isSelected: addedAnnot.isSelected, isChecked: addedAnnot.isChecked, tooltip: addedAnnot.tooltip, bounds: addedAnnot.bounds, thickness: addedAnnot.thickness, borderColor: addedAnnot.borderColor, signatureIndicatorSettings: addedAnnot.signatureIndicatorSettings\n };\n if (addedAnnot.options && addedAnnot.options.length > 0) {\n formField.options = addedAnnot.options;\n }\n this.pdfViewer.formFieldCollections.push(formField);\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesigner.drawHTMLContent(addedAnnot.formFieldAnnotationType, addedAnnot.wrapper.children[0], addedAnnot, addedAnnot.pageIndex, this.pdfViewer, fieldId);\n }\n this.pdfViewer.select([newNode.id], this.pdfViewer.annotationSelectorSettings);\n if (!addedAnnot.formFieldAnnotationType) {\n this.pdfViewer.annotationModule.triggerAnnotationAddEvent(newNode);\n }\n \n }\n }\n this.pdfViewer.renderDrawing(undefined, index);\n this.pdfViewer.clipboardData.pasteIndex++;\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n Drawing.prototype.splitFormFieldName = function (obj) {\n // eslint-disable-next-line\n var field = null;\n if (obj) {\n switch (obj.formFieldAnnotationType) {\n case 'Textbox':\n field = \"Textbox\";\n break;\n case 'PasswordField':\n field = \"Password\";\n break;\n case 'Checkbox':\n field = \"Check Box\";\n break;\n case 'RadioButton':\n field = \"Radio Button\";\n break;\n case 'DropdownList':\n field = \"Dropdown\";\n break;\n case 'ListBox':\n field = \"List Box\";\n break;\n case 'SignatureField':\n field = \"Signature\";\n break;\n case 'InitialField':\n field = \"Initial\";\n break;\n }\n }\n return field;\n };\n Drawing.prototype.calculateCopyPosition = function (copy, pageDiv, events) {\n var zoomfactor = this.pdfViewer.viewerBase.getZoomFactor();\n var x1;\n var y1;\n var x2;\n var y2;\n for (var i = 0; i < copy.vertexPoints.length; i++) {\n if (pageDiv) {\n if (i === 0) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n x1 = copy.vertexPoints[parseInt(i.toString(), 10)].x;\n y1 = copy.vertexPoints[parseInt(i.toString(), 10)].y;\n copy.vertexPoints[parseInt(i.toString(), 10)].x = (events.clientX - pageCurrentRect.left) / zoomfactor;\n copy.vertexPoints[parseInt(i.toString(), 10)].y = (events.clientY - pageCurrentRect.top) / zoomfactor;\n x2 = copy.vertexPoints[parseInt(i.toString(), 10)].x;\n y2 = copy.vertexPoints[parseInt(i.toString(), 10)].y;\n }\n else {\n copy.vertexPoints[parseInt(i.toString(), 10)].x += x2 - x1;\n copy.vertexPoints[parseInt(i.toString(), 10)].y += y2 - y1;\n }\n }\n }\n };\n /**\n * @private\n * @param {number} index - Specified the annotaion index.\n * @returns {void}\n */\n Drawing.prototype.cut = function (index) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.removedAnnotationCollection = [];\n }\n if (((this.pdfViewer.formDesignerModule && !this.pdfViewer.formDesigner.isPropertyDialogOpen) || this.pdfViewer.selectedItems.annotations.length > 0) && (this.pdfViewer.designerMode || this.pdfViewer.selectedItems.annotations.length > 0) && (this.pdfViewer.selectedItems.formFields.length !== 0 || this.pdfViewer.selectedItems.annotations.length !== 0)) {\n this.pdfViewer.clipboardData.pasteIndex = 0;\n this.pdfViewer.clipboardData.clipObject = this.copyObjects();\n this.pdfViewer.renderDrawing(undefined, index);\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n }\n var isSearchboxDialogOpen;\n var searchBoxId = document.getElementById(this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isPropertyDialogOpen || isSearchboxDialogOpen) {\n this.pdfViewer.clipboardData.clipObject = {};\n }\n };\n /**\n * @private\n * @param {Object[]} nodeArray - Specified the node array.\n * @param {string} sortID - Specified the sort id.\n * @returns {Object[]} - Returns the node array.\n */\n Drawing.prototype.sortByZIndex = function (nodeArray, sortID) {\n var id = sortID ? sortID : 'zIndex';\n nodeArray = nodeArray.sort(function (a, b) {\n // eslint-disable-next-line\n return a[id] - b[id];\n });\n return nodeArray;\n };\n return Drawing;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Defines the interactive tools\n *\n * @hidden\n */\nvar ToolBase = /** @__PURE__ @class */ (function () {\n /**\n * Initializes the tool\n *\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer component.\n * @param {PdfViewerBase} pdfViewerBase - Specified the pdfViewer base component.\n * @param {boolean} protectChange - Set the default value as false.\n */\n function ToolBase(pdfViewer, pdfViewerBase, protectChange) {\n if (protectChange === void 0) { protectChange = false; }\n /**\n * Command that is corresponding to the current action\n */\n this.commandHandler = null;\n /**\n * Sets/Gets whether the interaction is being done\n */\n this.inAction = false;\n /**\n * Sets/Gets the protect change\n */\n this.pdfViewerBase = null;\n /**\n * Sets/Gets the current element that is under mouse\n */\n /** @private */\n this.currentElement = null;\n /** @private */\n this.blocked = false;\n this.isTooltipVisible = false;\n /** @private */\n this.childTable = {};\n /** @private */\n this.helper = undefined;\n /**\n * Sets/Gets the previous object when mouse down\n */\n this.undoElement = { annotations: [] };\n this.undoParentElement = { annotations: [] };\n this.commandHandler = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param {IElement} currentElement - Specified the current element.\n * @returns {void}\n */\n ToolBase.prototype.startAction = function (currentElement) {\n this.currentElement = currentElement;\n this.inAction = true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseDown = function (args) {\n this.currentElement = args.source;\n this.startPosition = this.currentPosition = this.prevPosition = args.position;\n this.isTooltipVisible = true;\n this.startAction(args.source);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ToolBase.prototype.mouseMove = function (args) {\n this.currentPosition = args.position;\n //this.currentElement = currentElement;\n this.prevPageId = this.pdfViewerBase.activeElements.activePageID;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseUp = function (args) {\n this.currentPosition = args.position;\n // this.currentElement = currentElement;\n this.isTooltipVisible = false;\n //At the end\n this.endAction();\n this.helper = null;\n };\n ToolBase.prototype.endAction = function () {\n //remove helper\n if (this.commandHandler) {\n this.commandHandler.tool = '';\n if (this.helper) {\n this.commandHandler.remove(this.helper);\n }\n }\n this.commandHandler = null;\n this.currentElement = null;\n this.currentPosition = null;\n this.inAction = false;\n this.blocked = false;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse wheel event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseWheel = function (args) {\n this.currentPosition = args.position;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse leave event arguments.\n * @returns {void}\n */\n ToolBase.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n // eslint-disable-next-line\n ToolBase.prototype.updateSize = function (shape, startPoint, endPoint, corner, initialBounds, angle, isMouseUp) {\n var zoom = this.commandHandler.viewerBase.getZoomFactor();\n var difx = this.currentPosition.x / zoom - this.startPosition.x / zoom;\n var dify = this.currentPosition.y / zoom - this.startPosition.y / zoom;\n var rotateAngle = (shape instanceof TextElement) ? angle : shape.rotateAngle;\n var matrix = identityMatrix();\n rotateMatrix(matrix, -rotateAngle, 0, 0);\n var deltaWidth = 0;\n var deltaHeight = 0;\n var diff;\n var width = (shape instanceof TextElement) ? shape.actualSize.width : shape.wrapper.bounds.width;\n var height = (shape instanceof TextElement) ? shape.actualSize.height : shape.wrapper.bounds.height;\n // eslint-disable-next-line\n var obj = shape;\n if (!shape.formFieldAnnotationType) {\n if (!shape.annotName && !shape.shapeAnnotationType) {\n if (shape) {\n // eslint-disable-next-line\n obj = shape.annotations[0];\n }\n }\n }\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n var isAnnotationSet = false;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n isAnnotationSet = true;\n }\n if (isAnnotationSet && isMouseUp) {\n // eslint-disable-next-line\n var size = this.getPositions(corner, difx, dify);\n var newWidth = width + size.x;\n var newHeight = height + size.y;\n // eslint-disable-next-line max-len\n if ((newHeight > annotationMinHeight && newHeight < annotationMaxHeight) && (newWidth > annotationMinWidth && newWidth < annotationMaxWidth)) {\n // eslint-disable-next-line\n difx = difx;\n // eslint-disable-next-line\n dify = dify;\n }\n else {\n if (newHeight < annotationMinHeight || newHeight > annotationMaxHeight) {\n if (newHeight < annotationMinHeight) {\n dify = annotationMinHeight - height;\n }\n else {\n dify = annotationMaxHeight - height;\n }\n }\n if (newWidth < annotationMinWidth || newWidth > annotationMaxWidth) {\n if (newWidth < annotationMinWidth) {\n difx = annotationMinWidth - width;\n }\n else {\n difx = annotationMaxWidth - width;\n }\n }\n }\n }\n switch (corner) {\n case 'ResizeWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n deltaHeight = 1;\n // eslint-disable-next-line\n difx = difx;\n dify = 0;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n break;\n case 'ResizeEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n dify = 0;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n }\n deltaWidth = (initialBounds.width + difx) / width;\n deltaHeight = 1;\n break;\n case 'ResizeNorth':\n deltaWidth = 1;\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeSouth':\n deltaWidth = 1;\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height + dify) / height;\n break;\n case 'ResizeNorthEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width + difx) / width;\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeNorthWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height - dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n deltaHeight = (initialBounds.height - dify) / height;\n break;\n case 'ResizeSouthEast':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width + difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaHeight = (initialBounds.height + dify) / height;\n deltaWidth = (initialBounds.width + difx) / width;\n break;\n case 'ResizeSouthWest':\n diff = transformPointByMatrix(matrix, ({ x: difx, y: dify }));\n difx = diff.x;\n dify = diff.y;\n if (isAnnotationSet) {\n if (initialBounds.width - difx > annotationMaxWidth) {\n difx = annotationMaxWidth - initialBounds.width;\n }\n if (initialBounds.height + dify > annotationMaxHeight) {\n dify = annotationMaxHeight - initialBounds.height;\n }\n }\n deltaWidth = (initialBounds.width - difx) / width;\n deltaHeight = (initialBounds.height + dify) / height;\n break;\n }\n return { width: deltaWidth, height: deltaHeight };\n };\n ToolBase.prototype.getPivot = function (corner) {\n switch (corner) {\n case 'ResizeWest':\n return { x: 1, y: 0.5 };\n case 'ResizeEast':\n return { x: 0, y: 0.5 };\n case 'ResizeNorth':\n return { x: 0.5, y: 1 };\n case 'ResizeSouth':\n return { x: 0.5, y: 0 };\n case 'ResizeNorthEast':\n return { x: 0, y: 1 };\n case 'ResizeNorthWest':\n return { x: 1, y: 1 };\n case 'ResizeSouthEast':\n return { x: 0, y: 0 };\n case 'ResizeSouthWest':\n return { x: 1, y: 0 };\n }\n return { x: 0.5, y: 0.5 };\n };\n ToolBase.prototype.getPositions = function (corner, x, y) {\n switch (corner) {\n case 'ResizeEast':\n return { x: x, y: 0 };\n case 'ResizeSouthEast':\n return { x: x, y: y };\n case 'ResizeSouth':\n return { x: 0, y: y };\n case 'ResizeNorth':\n return { x: 0, y: -y };\n case 'ResizeNorthEast':\n return { x: x, y: -y };\n case 'ResizeNorthWest':\n return { x: -x, y: -y };\n case 'ResizeWest':\n return { x: -x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -x, y: y };\n }\n return { x: x, y: y };\n };\n return ToolBase;\n}());\n/**\n * Helps to select the objects\n *\n * @hidden\n */\nvar SelectTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(SelectTool, _super);\n function SelectTool(commandHandler, base) {\n return _super.call(this, commandHandler, base, true) || this;\n // this.action = action;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse down event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.mouseEventHelper(args);\n _super.prototype.mouseDown.call(this, args);\n };\n SelectTool.prototype.mouseEventHelper = function (args) {\n if (this.commandHandler && this.commandHandler.annotationModule) {\n // eslint-disable-next-line\n this.commandHandler.annotationModule.overlappedCollections = findActiveElement(args, this.pdfViewerBase, this.commandHandler, true);\n }\n // eslint-disable-next-line\n var object = findActiveElement(args, this.pdfViewerBase, this.commandHandler);\n // if (!isNullOrUndefined(object) && (object as any).shapeAnnotationType != 'Path'){\n var isLock = false;\n // eslint-disable-next-line\n if (object && object.shapeAnnotationType === 'StickyNotes') {\n // eslint-disable-next-line\n if (object.annotationSettings && object.annotationSettings.isLock) {\n if (this.commandHandler.annotationModule.checkAllowedInteractions('Select', object)) {\n isLock = false;\n }\n else {\n isLock = true;\n }\n }\n }\n if (!isLock) {\n // eslint-disable-next-line\n var currentSelctor = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelctor = args.source.annotationSelectorSettings;\n }\n else {\n currentSelctor = '';\n }\n if (this.commandHandler) {\n var selectedObject = this.commandHandler.selectedItems;\n if (selectedObject) {\n // eslint-disable-next-line\n var annotation = selectedObject.annotations[0];\n // eslint-disable-next-line\n var formField = selectedObject.formFields[0];\n var currentAnnot = this.commandHandler.selectedItems.annotations[0];\n var currentSource = args.source;\n if ((selectedObject.annotations.length) && args.info && !args.info.ctrlKey\n // eslint-disable-next-line\n && this.commandHandler.annotationModule && this.commandHandler.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === false) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n else if (args.info && args.info.ctrlKey && ((currentSource && currentSource.shapeAnnotationType === 'FreeText') || (currentAnnot && currentAnnot.shapeAnnotationType === 'FreeText'))) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n else if (isNullOrUndefined(object) && this.commandHandler.formDesignerModule && !((currentSource && currentSource.shapeAnnotationType === 'FreeText') || (currentAnnot && (currentAnnot.shapeAnnotationType === 'FreeText' || currentAnnot.shapeAnnotationType === 'Image' || currentAnnot.shapeAnnotationType === 'StickyNotes')))) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n }\n if (object) {\n if (!isNullOrUndefined(this.pdfViewerBase.isFreeTextSelected) && !this.pdfViewerBase.isFreeTextSelected) {\n this.commandHandler.select([object.id], currentSelctor);\n this.commandHandler.viewerBase.isAnnotationMouseDown = true;\n }\n this.pdfViewerBase.isFreeTextSelected = false;\n this.commandHandler.viewerBase.isFormFieldMouseDown = true;\n }\n if (selectedObject.annotations.length === 0 && annotation && annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage' && annotation.shapeAnnotationType !== 'Path' && !annotation.formFieldAnnotationType) {\n if (this.commandHandler.enableToolbar && Browser.isDevice && !this.commandHandler.enableDesktopMode) {\n this.commandHandler.toolbarModule.showToolbar(true);\n }\n this.commandHandler.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n // eslint-disable-next-line max-len\n if (selectedObject.formFields.length === 0 && this.commandHandler.formDesignerModule && formField && formField.formFieldAnnotationType) {\n // eslint-disable-next-line\n var field = { name: formField.name, id: formField.id, value: formField.value, fontFamily: formField.fontFamily, fontSize: formField.fontSize, fontStyle: formField.fontStyle,\n // eslint-disable-next-line\n color: formField.color, backgroundColor: formField.backgroundColor, alignment: formField.alignment, isReadonly: formField.isReadOnly, visibility: formField.visibility,\n // eslint-disable-next-line\n maxLength: formField.maxLength, isRequired: formField.isRequired, isPrint: formField.isPrint, rotation: formField.rotation, tooltip: formField.tooltip,\n // eslint-disable-next-line\n options: formField.options, isChecked: formField.isChecked, isSelected: formField.isSelected };\n this.commandHandler.fireFormFieldUnselectEvent('formFieldUnselect', field, formField.pageIndex);\n }\n else if (this.pdfViewerBase.currentTarget && this.pdfViewerBase.currentTarget.id && this.commandHandler.formFields && event.type === 'mousedown') {\n for (var i = 0; i < this.commandHandler.formFields.length; i++) {\n var formField_1 = this.commandHandler.formFields[parseInt(i.toString(), 10)];\n if (this.pdfViewerBase.currentTarget && this.pdfViewerBase.currentTarget.id === formField_1.id) {\n // eslint-disable-next-line\n var field = {\n value: formField_1.value, fontFamily: formField_1.fontFamily, fontSize: formField_1.fontSize, fontStyle: formField_1.fontStyle,\n // eslint-disable-next-line\n color: formField_1.color, backgroundColor: formField_1.backgroundColor, alignment: formField_1.alignment, isReadonly: formField_1.isReadonly, visibility: formField_1.visibility,\n // eslint-disable-next-line\n maxLength: formField_1.maxLength, isRequired: formField_1.isRequired, isPrint: formField_1.isPrint, rotation: formField_1.rotateAngle, tooltip: formField_1.tooltip,\n // eslint-disable-next-line\n options: formField_1.options, isChecked: formField_1.isChecked, isSelected: formField_1.isSelected\n };\n if (!object) {\n this.commandHandler.fireFocusOutFormField(field, formField_1.pageIndex);\n this.pdfViewerBase.currentTarget = null;\n }\n else {\n if (this.pdfViewerBase.currentTarget.id != event.target.id && event.target.className != 'e-pv-text-layer') {\n this.commandHandler.fireFocusOutFormField(field, formField_1.pageIndex);\n this.pdfViewerBase.currentTarget = null;\n }\n }\n }\n }\n }\n }\n }\n }\n // } else {\n // if (!isNullOrUndefined(this.commandHandler))\n // this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n // }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse move event arguments.\n * @returns {boolean} - Returns true or false.\n */\n SelectTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n //draw selected region\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse up event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseUp = function (args) {\n this.mouseEventHelper(args);\n this.inAction = false;\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse leave event arguments.\n * @returns {void}\n */\n SelectTool.prototype.mouseLeave = function (args) {\n if (this.inAction) {\n this.mouseUp(args);\n }\n };\n return SelectTool;\n}(ToolBase));\n/** @hidden */\nvar MoveTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(MoveTool, _super);\n function MoveTool(commandHandler, base) {\n var _this = _super.call(this, commandHandler, base) || this;\n /** @private */\n _this.currentTarget = null;\n /** @private */\n _this.prevNode = null;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Mouse down event arguments.\n * @returns {void}\n */\n MoveTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.offset = { x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY };\n this.startPosition = args.position;\n var nodeMouseDown = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: nodeMouseDown.wrapper.offsetX, y: nodeMouseDown.wrapper.offsetY,\n width: nodeMouseDown.wrapper.actualSize.width, height: nodeMouseDown.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(nodeMouseDown)) {\n this.redoElement.vertexPoints = nodeMouseDown.vertexPoints;\n this.redoElement.leaderHeight = nodeMouseDown.leaderHeight;\n }\n this.inAction = true;\n };\n /**\n * @private\n * @param {any} args - Specified the mouse event arguments.\n * @returns {void}\n */\n // eslint-disable-next-line\n MoveTool.prototype.mouseUp = function (args) {\n if (this.commandHandler && args.source) {\n this.checkisAnnotationMove(args);\n var currentSelctor = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([args.source.id], currentSelctor);\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.activeElements.activePageID == args.source.pageIndex) {\n this.commandHandler.dragSelectedObjects(this.calculateMouseActionXDiff(args), this.calculateMouseActionYDiff(args), this.pdfViewerBase.activeElements.activePageID, currentSelctor, null);\n }\n if (args.source && (args.source.formFieldAnnotationType === 'Textbox' || args.source.formFieldAnnotationType === 'Checkbox'\n || args.source.formFieldAnnotationType === 'RadioButton' || args.source.formFieldAnnotationType === 'ListBox'\n || args.source.formFieldAnnotationType === 'SignatureField' || args.source.formFieldAnnotationType === 'InitialField' || args.source.formFieldAnnotationType === 'DropdownList'\n || args.source.formFieldAnnotationType === 'PasswordField')) {\n this.commandHandler.formDesignerModule.updateHTMLElement(args.source);\n }\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n this.commandHandler.viewerBase.isAnnotationMouseMove = false;\n this.commandHandler.viewerBase.isFormFieldMouseMove = false;\n // eslint-disable-next-line\n var newShapeObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }, modifiedDate: args.source.modifiedDate\n };\n if (isLineShapes(args.source)) {\n newShapeObject.vertexPoints = args.source.vertexPoints;\n newShapeObject.leaderHeight = args.source.leaderHeight;\n }\n if (args.target && args.target.formFieldAnnotationType) {\n var node = args.target;\n var field = {\n // eslint-disable-next-line\n value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, borderColor: node.borderColor,\n // eslint-disable-next-line\n thickness: node.thickness, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip, options: node.options,\n // eslint-disable-next-line\n isChecked: node.isChecked, isSelected: node.isSelected\n };\n // eslint-disable-next-line max-len\n var currentPosition = { X: args.source.wrapper.offsetX, Y: args.source.wrapper.offsetY, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n // eslint-disable-next-line max-len\n var previousPosition = { X: this.offset.x, Y: this.offset.y, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n this.commandHandler.fireFormFieldMoveEvent('formFieldMove', field, node.pageIndex, previousPosition, currentPosition);\n }\n if (this.commandHandler.annotation) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, args.source, 'Drag', '', this.redoElement, newShapeObject);\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, null, 'Drag');\n this.commandHandler.annotation.stickyNotesAnnotationModule.updateStickyNotes(args.source, null);\n }\n }\n var shapeAnnotationType = this.commandHandler && this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].shapeAnnotationType : null;\n if (shapeAnnotationType && shapeAnnotationType !== 'Image' && shapeAnnotationType !== 'SignatureImage') {\n _super.prototype.mouseUp.call(this, args);\n }\n else if (this.commandHandler && this.commandHandler.selectedItems && this.commandHandler.selectedItems.formFields && this.commandHandler.selectedItems.formFields.length > 0) {\n _super.prototype.mouseUp.call(this, args);\n }\n };\n MoveTool.prototype.calculateMouseXDiff = function () {\n if (this.currentPosition && this.startPosition) {\n return this.currentPosition.x - this.startPosition.x;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseYDiff = function () {\n if (this.currentPosition && this.startPosition) {\n return this.currentPosition.y - this.startPosition.y;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseActionXDiff = function (args) {\n var x = this.calculateMouseXDiff() / this.commandHandler.viewerBase.getZoomFactor();\n // let y: number = this.calculateMouseYDiff() / this.commandHandler.magnification.zoomFactor;\n if (this.offset) {\n var requiredX = this.offset.x + x;\n // let requiredY: number = this.offset.y + y;\n return requiredX - args.source.wrapper.offsetX;\n //let diffY: number = requiredY - args.source.wrapper.offsetY;\n }\n else {\n return 0;\n }\n };\n MoveTool.prototype.calculateMouseActionYDiff = function (args) {\n // let x: number = this.calculateMouseXDiff() / this.commandHandler.magnification.zoomFactor;\n var y = this.calculateMouseYDiff() / this.commandHandler.viewerBase.getZoomFactor();\n if (this.offset) {\n // let requiredX: number = this.offset.x + x;\n var requiredY = this.offset.y + y;\n // let diffX: number = requiredX - args.source.wrapper.offsetX;\n return requiredY - args.source.wrapper.offsetY;\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isStamp - Specified the stamp annotation or not.\n * @param {boolean} isSkip - Specified the annotation skip or not.\n * @returns {boolean} - Returns the true or false.\n */\n MoveTool.prototype.mouseMove = function (args, isStamp, isSkip) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction) {\n this.currentPosition = args.position;\n this.currentTarget = args.target;\n var currentSelctor = args.source.annotationSelectorSettings;\n var x = this.calculateMouseXDiff() / this.commandHandler.viewerBase.getZoomFactor();\n var y = this.calculateMouseYDiff() / this.commandHandler.viewerBase.getZoomFactor();\n var requiredX = this.offset.x + x;\n var requiredY = this.offset.y + y;\n var diffX = this.calculateMouseActionXDiff(args);\n var diffY = this.calculateMouseActionYDiff(args);\n var selectedItem = this.commandHandler.selectedItems.annotations[0];\n var cobject = void 0;\n if (!this.helper) {\n // eslint-disable-next-line\n cobject = this.commandHandler.selectedItems.annotations.length > 0 ? cloneObject(this.commandHandler.selectedItems.annotations[0]) : cloneObject(this.commandHandler.selectedItems.formFields[0]);\n if (cobject.wrapper) {\n diffX = requiredX - cobject.wrapper.offsetX;\n diffY = requiredY - cobject.wrapper.offsetY;\n // eslint-disable-next-line max-len\n cobject.bounds = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].wrapper.bounds : this.commandHandler.selectedItems.formFields[0].wrapper.bounds;\n }\n cobject.wrapper = undefined;\n cobject.id = 'diagram_helper';\n if (cobject.shapeAnnotationType === 'Stamp') {\n cobject.strokeColor = '';\n cobject.borderDashArray = '';\n cobject.fillColor = 'transparent';\n cobject.stampFillColor = 'transparent';\n cobject.data = '';\n }\n else if (cobject.shapeAnnotationType === 'FreeText') {\n cobject.strokeColor = 'blue';\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.dynamicText = '';\n }\n else if (cobject.shapeAnnotationType === 'SignatureText') {\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n cobject.data = '';\n }\n else {\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n }\n if (cobject.enableShapeLabel === true) {\n cobject.labelContent = '';\n }\n var shapeAnnotationType = cobject.shapeAnnotationType;\n if (!isStamp && shapeAnnotationType !== 'Image' && shapeAnnotationType !== 'SignatureImage') {\n this.helper = cobject = this.commandHandler.add(cobject);\n }\n else {\n cobject = this.helper = args.source;\n }\n if (this.commandHandler.selectedItems.annotations.length > 0) {\n this.commandHandler.selectedItems.annotations = [cobject];\n }\n else {\n this.commandHandler.selectedItems.formFields = [cobject];\n }\n }\n else {\n diffX = requiredX - this.helper.wrapper.offsetX;\n diffY = requiredY - this.helper.wrapper.offsetY;\n }\n if (this.helper && this.helper.shapeAnnotationType === 'Stamp') {\n isStamp = true;\n }\n // eslint-disable-next-line max-len\n if (this.commandHandler.checkBoundaryConstraints(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, this.helper.wrapper.bounds, isStamp, isSkip)) {\n var shapeAnnotationType = this.helper.shapeAnnotationType;\n if (this.helper && (shapeAnnotationType === 'Image' || shapeAnnotationType === 'SignatureImage')) {\n this.checkisAnnotationMove(args);\n // eslint-disable-next-line max-len\n var currentSelctor_1 = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([args.source.id], currentSelctor_1);\n // eslint-disable-next-line max-len\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, currentSelctor_1, this.helper);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor_1);\n }\n else {\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.pdfViewerBase.activeElements.activePageID, currentSelctor, this.helper);\n }\n this.prevNode = this.helper;\n this.prevPosition = this.currentPosition;\n }\n else {\n this.currentPosition = this.prevPosition;\n }\n if (selectedItem && selectedItem.annotName) {\n this.commandHandler.annotation.triggerAnnotationMove(selectedItem, true);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n MoveTool.prototype.mouseLeave = function (args) {\n var currentSelctor = args.source.annotationSelectorSettings;\n var requiredX = this.offset.x + this.calculateMouseXDiff();\n var requiredY = this.offset.y + this.calculateMouseYDiff();\n var diffX = requiredX - args.source.wrapper.offsetX;\n var diffY = requiredY - args.source.wrapper.offsetY;\n this.commandHandler.dragSelectedObjects(diffX, diffY, this.prevPageId, currentSelctor, null);\n this.commandHandler.renderSelector(this.prevPageId, currentSelctor);\n _super.prototype.mouseLeave.call(this, args);\n };\n /**\n * @private\n * @returns {void}\n */\n MoveTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.currentTarget = null;\n this.prevPosition = null;\n };\n MoveTool.prototype.checkisAnnotationMove = function (args) {\n // eslint-disable-next-line max-len\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0) {\n if (this.commandHandler.selectedItems.annotations[0].annotName === args.source.annotName) {\n this.commandHandler.viewerBase.isAnnotationMouseMove = true;\n }\n }\n else {\n this.commandHandler.viewerBase.isAnnotationMouseMove = false;\n }\n // eslint-disable-next-line max-len\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.formFields && this.commandHandler.selectedItems.formFields.length > 0) {\n if (this.commandHandler.selectedItems.formFields[0].name === args.source.name) {\n this.commandHandler.viewerBase.isFormFieldMouseMove = true;\n }\n }\n else {\n this.commandHandler.viewerBase.isFormFieldMouseMove = false;\n }\n };\n return MoveTool;\n}(ToolBase));\n/** @hidden */\nvar StampTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(StampTool, _super);\n function StampTool() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {any} - Returns the mouse up event.\n */\n // eslint-disable-next-line\n StampTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns the true or false.\n */\n StampTool.prototype.mouseMove = function (args) {\n // eslint-disable-next-line\n var newObject;\n if (!this.inAction) {\n var pageIndex = this.pdfViewerBase.activeElements.activePageID;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n // eslint-disable-next-line max-len\n var nodeElement = this.commandHandler.annotation.stampAnnotationModule.moveStampElement(args.position.x, args.position.y, pageIndex);\n if (nodeElement.shapeAnnotationType === 'SignatureText') {\n var textWidth = this.getTextWidth(nodeElement.data, nodeElement.fontSize, nodeElement.fontFamily);\n var widthRatio = 1;\n if (textWidth > nodeElement.bounds.width)\n widthRatio = nodeElement.bounds.width / textWidth;\n nodeElement.fontSize = this.getFontSize(Math.floor((nodeElement.fontSize * widthRatio)));\n var defaultFontSize = 32; // default font size.\n nodeElement.bounds.height = nodeElement.fontSize < defaultFontSize ? nodeElement.fontSize * 2 : nodeElement.bounds.height;\n nodeElement.thickness = 0;\n }\n newObject = this.commandHandler.add(nodeElement);\n args.source = this.commandHandler.annotations[this.commandHandler.annotations.length - 1];\n args.sourceWrapper = args.source.wrapper;\n this.inAction = true;\n // eslint-disable-next-line\n var currentSource = args.source;\n if (currentSource && (currentSource.shapeAnnotationType === 'HandWrittenSignature' || currentSource.shapeAnnotationType === 'SignatureText' || currentSource.shapeAnnotationType === 'SignatureImage')) {\n this['offset'] = { x: args.source.wrapper.offsetX - (args.source.wrapper.bounds.width / 2), y: args.source.wrapper.offsetY - (args.source.wrapper.bounds.height / 2) };\n }\n else {\n this['offset'] = { x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY };\n }\n this.startPosition = args.position;\n this.commandHandler.select([newObject.id]);\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n _super.prototype.mouseMove.call(this, args, true, true);\n this.commandHandler.renderSelector(args.source.pageIndex, currentSelctor);\n return this.inAction;\n };\n StampTool.prototype.getTextWidth = function (text, font, fontFamily) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var fontName;\n if (font) {\n fontName = font + 'px' + ' ' + fontFamily;\n }\n context.font = fontName || getComputedStyle(document.body).font;\n return context.measureText(text).width;\n };\n /**\n * @param {number} fontSize - Font size.\n * @returns {number} - Returns the font size.\n */\n StampTool.prototype.getFontSize = function (fontSize) {\n return (fontSize % 2 === 0) ? fontSize : --fontSize;\n };\n return StampTool;\n}(MoveTool));\n/**\n * Draws a node that is defined by the user\n *\n * @hidden\n */\nvar InkDrawingTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(InkDrawingTool, _super);\n function InkDrawingTool(commandHandler, base, sourceObject) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.sourceObject = sourceObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n InkDrawingTool.prototype.mouseDown = function (args) {\n this.pdfViewerBase.disableTextSelectionMode();\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n // eslint-disable-next-line\n var node = { currentPosition: this.currentPosition, prevPosition: this.prevPosition };\n this.commandHandler.annotation.inkAnnotationModule.drawInkInCanvas(node, this.pdfViewerBase.activeElements.activePageID);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n InkDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction) {\n // eslint-disable-next-line\n var node = { currentPosition: this.currentPosition, prevPosition: this.pdfViewerBase.prevPosition };\n this.commandHandler.annotation.inkAnnotationModule.drawInkInCanvas(node, this.pdfViewerBase.activeElements.activePageID);\n }\n return this.inAction;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true.\n */\n InkDrawingTool.prototype.mouseUp = function (args) {\n this.commandHandler.annotation.inkAnnotationModule.storePathData();\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n InkDrawingTool.prototype.mouseLeave = function (args) {\n //this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n InkDrawingTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n return InkDrawingTool;\n}(ToolBase));\n/**\n * Helps to edit the selected connectors\n *\n * @hidden\n */\nvar ConnectTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(ConnectTool, _super);\n function ConnectTool(commandHandler, base, endPoint) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n _this.endPoint = endPoint;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.undoElement = undefined;\n _super.prototype.mouseDown.call(this, args);\n var oldValue;\n var connectors;\n if (args.source && args.source.annotations) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n oldValue = { x: this.prevPosition.x, y: this.prevPosition.y };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n connectors = args.source.annotations[0];\n }\n this.initialPosition = args.position;\n this.prevSource = this.commandHandler.selectedItems.annotations[0];\n var nodeElement = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: nodeElement.wrapper.offsetX, y: nodeElement.wrapper.offsetY,\n width: nodeElement.wrapper.actualSize.width, height: nodeElement.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(nodeElement)) {\n this.redoElement.vertexPoints = nodeElement.vertexPoints;\n this.redoElement.leaderHeight = nodeElement.leaderHeight;\n if (nodeElement.measureType === 'Distance' || nodeElement.measureType === 'Perimeter' || nodeElement.measureType === 'Area' || nodeElement.measureType === 'Volume') {\n this.redoElement.notes = nodeElement.notes;\n }\n }\n this.currentPosition = args.position;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseUp = function (args) {\n if (this.commandHandler) {\n var node = this.commandHandler.selectedItems.annotations[0];\n if (node) {\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule.findAnnotationSettings(node);\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n // eslint-disable-next-line max-len\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (node.vertexPoints.length > 3) {\n // eslint-disable-next-line\n var sizeObject = this.commandHandler.viewerBase.checkAnnotationWidth(node.vertexPoints);\n var width = sizeObject.width;\n var height = sizeObject.height;\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n // eslint-disable-next-line max-len\n if ((height > annotationMinHeight && height < annotationMaxHeight) || (width > annotationMinWidth && width < annotationMaxWidth)) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n if (node.shapeAnnotationType === 'Line' || node.shapeAnnotationType === 'Distance' || node.shapeAnnotationType === 'LineWidthArrowHead') {\n var x = 0;\n var y = 0;\n if (node.vertexPoints[0].x > node.vertexPoints[1].x) {\n x = node.vertexPoints[0].x - node.vertexPoints[1].x;\n }\n else {\n x = node.vertexPoints[1].x - node.vertexPoints[0].x;\n }\n if (node.vertexPoints[0].y > node.vertexPoints[1].y) {\n y = node.vertexPoints[0].y - node.vertexPoints[1].y;\n }\n else {\n y = node.vertexPoints[1].y - node.vertexPoints[0].y;\n }\n var diff = (x > y) ? x : y;\n if (diff < (annotationMaxHeight || annotationMaxWidth) && diff > (annotationMinHeight || annotationMinWidth)) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.prevSource, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n }\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([this.prevSource.id], currentSelctor);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n // eslint-disable-next-line\n var newShapeElementObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }\n };\n if (node.measureType === 'Distance' || node.measureType === 'Perimeter' || node.measureType === 'Area' || node.measureType === 'Volume') {\n this.commandHandler.annotation.updateCalibrateValues(this.commandHandler.selectedItems.annotations[0]);\n newShapeElementObject.notes = args.source.notes;\n }\n if (isLineShapes(args.source)) {\n newShapeElementObject.vertexPoints = args.source.vertexPoints;\n newShapeElementObject.leaderHeight = args.source.leaderHeight;\n }\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.prevSource, 'Resize', '', this.redoElement, newShapeElementObject);\n }\n }\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ConnectTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var connector;\n this.currentPosition = args.position;\n if (this.currentPosition && this.prevPosition) {\n var diffX = this.currentPosition.x - this.prevPosition.x;\n var diffY = this.currentPosition.y - this.prevPosition.y;\n var newValue = void 0;\n var oldValue = void 0;\n if (args.source && args.source.annotations) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n newValue = {\n x: this.currentPosition.x, y: this.currentPosition.y\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n oldValue = {\n x: this.prevPosition.x, y: this.prevPosition.y\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n connector = args.source.annotations[0];\n }\n if (this.inAction && this.endPoint !== undefined && diffX !== 0 || diffY !== 0) {\n if (!this.helper) {\n // eslint-disable-next-line\n var cloneShapebject = cloneObject(this.commandHandler.selectedItems.annotations[0]);\n cloneShapebject.id = 'diagram_helper';\n cloneShapebject.strokeColor = 'red';\n cloneShapebject.borderDashArray = '5,5';\n cloneShapebject.fillColor = 'transparent';\n cloneShapebject.thickness = 2;\n cloneShapebject.opacity = 1;\n if (cloneShapebject.enableShapeLabel === true) {\n cloneShapebject.labelContent = '';\n }\n this.helper = cloneShapebject = this.commandHandler.add(cloneShapebject);\n this.commandHandler.selectedItems.annotations = [cloneShapebject];\n }\n var currentSelctor = args.source.annotationSelectorSettings;\n this.blocked = !this.commandHandler.dragConnectorEnds(this.endPoint, this.helper, this.currentPosition, this.selectedSegment, args.target, null, currentSelctor);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelctor);\n }\n }\n this.prevPosition = this.currentPosition;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ConnectTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n ConnectTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.prevPosition = null;\n this.endPoint = null;\n };\n return ConnectTool;\n}(ToolBase));\n/**\n * Scales the selected objects\n *\n * @hidden\n */\nvar ResizeTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(ResizeTool, _super);\n function ResizeTool(commandHandler, base, corner) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n /** @private */\n _this.initialBounds = new Rect();\n _this.corner = corner;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void} - Returns true or false.\n */\n ResizeTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.initialBounds.x = args.source.wrapper.offsetX;\n this.initialBounds.y = args.source.wrapper.offsetY;\n this.initialBounds.height = args.source.wrapper.actualSize.height;\n this.initialBounds.width = args.source.wrapper.actualSize.width;\n this.initialPosition = args.position;\n var node = cloneObject(args.source);\n this.redoElement = {\n bounds: {\n x: node.wrapper.offsetX, y: node.wrapper.offsetY,\n width: node.wrapper.actualSize.width, height: node.wrapper.actualSize.height\n }\n // eslint-disable-next-line\n };\n if (isLineShapes(node)) {\n this.redoElement.vertexPoints = node.vertexPoints;\n this.redoElement.leaderHeight = node.leaderHeight;\n }\n if (node.measureType === 'Radius') {\n this.redoElement.notes = node.notes;\n }\n // eslint-disable-next-line max-len\n this.prevSource = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0] : this.commandHandler.selectedItems.formFields[0];\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isPreventHistory - Specified the prevent history value.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.mouseUp = function (args, isPreventHistory) {\n var object = args.source;\n var oldObject = cloneObject(args.source);\n if (this.commandHandler && this.prevSource) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.viewerBase.isAnnotationSelect = true;\n this.commandHandler.viewerBase.isFormFieldSelect = true;\n this.commandHandler.select([this.prevSource.id], this.prevSource.annotationSelectorSettings);\n // eslint-disable-next-line max-len\n var deltaValues = this.updateSize(this.prevSource, this.currentPosition, this.initialPosition, this.corner, this.initialBounds, null, true);\n this.blocked = this.scaleObjects(deltaValues.width, deltaValues.height, this.corner, this.currentPosition, this.initialPosition, this.prevSource, args.info.ctrlKey);\n if (this.commandHandler.selectedItems && this.commandHandler.selectedItems.annotations &&\n this.commandHandler.selectedItems.annotations[0] && this.commandHandler.selectedItems.annotations[0].shapeAnnotationType === 'Stamp') {\n if (this.commandHandler.stampSettings.minHeight || this.commandHandler.stampSettings.minWidth) {\n this.commandHandler.select([this.prevSource.id], this.prevSource.annotationSelectorSettings);\n }\n }\n if (this.commandHandler.selectedItems.formFields.length > 0 && (this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'Textbox' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'Checkbox'\n || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'RadioButton' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'InitialField' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'SignatureField'\n || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'DropdownList' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'ListBox' || this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'PasswordField')) {\n if (this.commandHandler.selectedItems.formFields[0].formFieldAnnotationType === 'SignatureField') {\n this.commandHandler.selectedItems.formFields[0].signatureIndicatorSettings = this.commandHandler.selectedItems.formFields[0].signatureIndicatorSettings ? this.commandHandler.selectedItems.formFields[0].signatureIndicatorSettings : { opacity: 1, backgroundColor: 'rgba(255, 228, 133, 0.35)', width: 19, height: 10, fontSize: 10, text: null, color: 'black' };\n }\n this.commandHandler.formDesignerModule.updateHTMLElement(this.commandHandler.selectedItems.formFields[0]);\n }\n this.commandHandler.renderSelector(this.prevPageId, this.prevSource.annotationSelectorSettings);\n if (this.commandHandler.annotation && args.source.wrapper) {\n // eslint-disable-next-line\n var newObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }\n };\n if (isLineShapes(args.source)) {\n newObject.vertexPoints = args.source.vertexPoints;\n newObject.leaderHeight = args.source.leaderHeight;\n }\n if (this.prevSource.measureType === 'Radius') {\n newObject.notes = args.source.notes;\n this.commandHandler.annotation.updateCalibrateValues(this.prevSource);\n }\n if (this.prevSource.shapeAnnotationType === 'SignatureText') {\n var boundsRatio = newObject.bounds.width / oldObject.width;\n newObject.fontSize = this.prevSource.wrapper.children[1].style.fontSize * boundsRatio;\n if (args.target != null) {\n args.target.fontSize = newObject.fontSize;\n // eslint-disable-next-line\n args.target.wrapper.children[1].style.fontSize = newObject.fontSize;\n args.target.wrapper.children[1].horizontalAlignment = 'Center';\n args.target.wrapper.children[1].verticalAlignment = 'Center';\n args.target.wrapper.children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n // eslint-disable-next-line\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].style.fontSize = newObject.fontSize;\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].horizontalAlignment = 'Center';\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].verticalAlignment = 'Center';\n this.commandHandler.selectedItems.annotations[0].wrapper.children[1].setOffsetWithRespectToBounds(0, 0, 'Absolute');\n this.commandHandler.selectedItems.annotations[0].fontSize = newObject.fontSize;\n }\n }\n if ((this.prevSource.shapeAnnotationType === 'SignatureText') && this.commandHandler.selectedItems.annotations && this.commandHandler.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.commandHandler.selectedItems.annotations[0], { fontSize: newObject.fontSize });\n }\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.prevSource, 'Resize', '', this.redoElement, newObject);\n }\n if (args.target && args.target.formFieldAnnotationType) {\n var node = args.target;\n // eslint-disable-next-line\n var field = { value: node.value, fontFamily: node.fontFamily, fontSize: node.fontSize, fontStyle: node.fontStyle,\n // eslint-disable-next-line\n color: node.color, backgroundColor: node.backgroundColor, alignment: node.alignment, isReadonly: node.isReadonly, visibility: node.visibility,\n // eslint-disable-next-line\n maxLength: node.maxLength, isRequired: node.isRequired, isPrint: node.isPrint, rotation: node.rotateAngle, tooltip: node.tooltip,\n // eslint-disable-next-line\n options: node.options, isChecked: node.isChecked, isSelected: node.isSelected };\n // eslint-disable-next-line max-len\n var currentPosition = { X: args.source.wrapper.offsetX, Y: args.source.wrapper.offsetY, Width: args.source.wrapper.actualSize.width, Height: args.source.wrapper.actualSize.height };\n // eslint-disable-next-line max-len\n var previousPosition = { X: this.initialBounds.x, Y: this.initialBounds.y, Width: this.initialBounds.width, Height: this.initialBounds.height };\n this.commandHandler.fireFormFieldResizeEvent('formFieldResize', field, node.pageIndex, previousPosition, currentPosition);\n }\n if (this.commandHandler.annotation && this.commandHandler.annotation.stampAnnotationModule) {\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, this.prevSource.id, 'Resize');\n }\n }\n _super.prototype.mouseUp.call(this, args);\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var object = args.source;\n this.currentPosition = args.position;\n var x = this.currentPosition.x - this.startPosition.x;\n var y = this.currentPosition.y - this.startPosition.y;\n x = x / this.commandHandler.viewerBase.getZoomFactor();\n y = y / this.commandHandler.viewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annotationElement = args.source;\n // eslint-disable-next-line\n var size = this.getPoints(x, y);\n var width = annotationElement.width + size.x;\n var height = annotationElement.height + size.y;\n // eslint-disable-next-line\n var obj = object;\n if (object && object.annotations) {\n // eslint-disable-next-line\n obj = object.annotations[0];\n }\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (annotationMinHeight || annotationMinWidth || annotationMaxHeight || annotationMaxWidth) {\n // eslint-disable-next-line max-len\n if ((height >= annotationMinHeight && height <= annotationMaxHeight) && (width >= annotationMinWidth && width <= annotationMaxWidth)) {\n // eslint-disable-next-line\n x = x;\n // eslint-disable-next-line\n y = y;\n }\n else {\n if (height < annotationMinHeight || height > annotationMaxHeight) {\n if (height < annotationMinHeight) {\n y = annotationMinHeight - annotationElement.height;\n }\n else {\n y = annotationMaxHeight - annotationElement.height;\n }\n }\n if (width < annotationMinWidth || width > annotationMaxWidth) {\n if (width < annotationMinWidth) {\n x = annotationMinWidth - annotationElement.width;\n }\n else {\n x = annotationMaxWidth - annotationElement.width;\n }\n }\n }\n }\n var changes = { x: x, y: y };\n if (this.currentElement.wrapper) {\n changes = rotatePoint(-this.currentElement.wrapper.rotateAngle, undefined, undefined, changes);\n }\n changes = this.getChanges(changes);\n this.commandHandler.renderSelector(this.prevPageId, this.prevSource.annotationSelectorSettings);\n if (!this.helper) {\n // eslint-disable-next-line\n var cobject = this.commandHandler.selectedItems.annotations.length > 0 ? cloneObject(this.commandHandler.selectedItems.annotations[0]) : cloneObject(this.commandHandler.selectedItems.formFields[0]);\n cobject.id = 'diagram_helper';\n if (cobject.shapeAnnotationType === 'Stamp') {\n cobject.strokeColor = '';\n cobject.borderDashArray = '';\n cobject.fillColor = 'transparent';\n cobject.stampFillColor = 'transparent';\n cobject.data = '';\n }\n else if (cobject.shapeAnnotationType === 'FreeText') {\n cobject.strokeColor = 'blue';\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.dynamicText = '';\n }\n else {\n // eslint-disable-next-line max-len\n cobject.bounds = this.commandHandler.selectedItems.annotations.length > 0 ? this.commandHandler.selectedItems.annotations[0].wrapper.bounds : this.commandHandler.selectedItems.formFields[0].wrapper.bounds;\n cobject.strokeColor = 'red';\n cobject.borderDashArray = '5,5';\n cobject.fillColor = 'transparent';\n cobject.thickness = 2;\n cobject.opacity = 1;\n }\n if (cobject.enableShapeLabel === true) {\n cobject.labelContent = '';\n }\n if (cobject.shapeAnnotationType === 'SignatureText') {\n cobject.fillColor = 'transparent';\n cobject.thickness = 1;\n cobject.opacity = 1;\n cobject.data = '';\n }\n this.helper = cobject = this.commandHandler.add(cobject);\n if (this.commandHandler.selectedItems.annotations.length > 0) {\n this.commandHandler.selectedItems.annotations = [cobject];\n }\n else {\n this.commandHandler.selectedItems.formFields = [cobject];\n }\n }\n var deltaValues = this.updateSize(this.helper, this.startPosition, this.currentPosition, this.corner, this.initialBounds);\n // eslint-disable-next-line max-len\n this.blocked = !(this.scaleObjects(deltaValues.width, deltaValues.height, this.corner, this.startPosition, this.currentPosition, this.helper, args.info.ctrlKey));\n this.prevPosition = this.currentPosition;\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n ResizeTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n ResizeTool.prototype.getTooltipContent = function (pdfAnnotationBaseModel) {\n return 'W:' + Math.round(pdfAnnotationBaseModel.wrapper.bounds.width) + ' ' + 'H:' + Math.round(pdfAnnotationBaseModel.wrapper.bounds.height);\n };\n ResizeTool.prototype.getChanges = function (change) {\n switch (this.corner) {\n case 'ResizeEast':\n return { x: change.x, y: 0 };\n case 'ResizeSouthEast':\n return change;\n case 'ResizeSouth':\n return { x: 0, y: change.y };\n case 'ResizeNorth':\n return { x: 0, y: -change.y };\n case 'ResizeNorthEast':\n return { x: change.x, y: -change.y };\n case 'ResizeNorthWest':\n return { x: -change.x, y: -change.y };\n case 'ResizeWest':\n return { x: -change.x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -change.x, y: change.y };\n }\n return change;\n };\n ResizeTool.prototype.getPoints = function (x, y) {\n switch (this.corner) {\n case 'ResizeEast':\n return { x: x, y: 0 };\n case 'ResizeSouthEast':\n return { x: x, y: y };\n case 'ResizeSouth':\n return { x: 0, y: y };\n case 'ResizeNorth':\n return { x: 0, y: -y };\n case 'ResizeNorthEast':\n return { x: x, y: -y };\n case 'ResizeNorthWest':\n return { x: -x, y: -y };\n case 'ResizeWest':\n return { x: -x, y: 0 };\n case 'ResizeSouthWest':\n return { x: -x, y: y };\n }\n return { x: x, y: y };\n };\n /**\n * Updates the size with delta width and delta height using scaling.\n * Aspect ratio used to resize the width or height based on resizing the height or width.\n *\n * @param {number} deltaWidth - Specified the delta width.\n * @param {number} deltaHeight - Specified the delta height.\n * @param {string} corner - Specified the corner value.\n * @param {PointModel} startPoint - Specified the start point of the annotation.\n * @param {PointModel} endPoint - Specified the end point of the annotation.\n * @param {SelectorModel | PdfAnnotationBaseModel} source - Specified the annotation object.\n * @param {boolean} isCtrlKeyPressed - becomes true when ctrl Key is pressed.\n * @returns {boolean} - Returns true or false.\n */\n ResizeTool.prototype.scaleObjects = function (deltaWidth, deltaHeight, corner, startPoint, endPoint, source, isCtrlKeyPressed) {\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(source) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n var annotationMinHeight = 0;\n var annotationMinWidth = 0;\n var x = this.currentPosition.x - this.startPosition.x;\n var y = this.currentPosition.y - this.startPosition.y;\n x = x / this.commandHandler.viewerBase.getZoomFactor();\n y = y / this.commandHandler.viewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annotationElement = source;\n // eslint-disable-next-line\n var size = this.getPoints(x, y);\n var width = annotationElement.bounds.width + size.x;\n var height = annotationElement.bounds.height + size.y;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n annotationMinHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n annotationMinWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n if (source instanceof Selector && source.annotations.length === 1 &&\n (source.annotations[0].shapeAnnotationType === 'Perimeter' || source.annotations[0].shapeAnnotationType === 'Radius' || source.shapeAnnotationType === 'Stamp')) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n deltaHeight = deltaWidth = Math.max(deltaHeight === 1 ? 0 : deltaHeight, deltaWidth === 1 ? 0 : deltaWidth);\n }\n else if (startPoint !== endPoint) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n else {\n deltaHeight = deltaWidth = 0;\n }\n }\n else if (source.shapeAnnotationType === 'Image' || (source.shapeAnnotationType === 'HandWrittenSignature' || source.shapeAnnotationType === 'SignatureText' || source.shapeAnnotationType === 'SignatureImage')) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n if (isCtrlKeyPressed) {\n if (width >= annotationMaxWidth && height < annotationMaxHeight) {\n deltaHeight = Math.max(deltaHeight, deltaWidth);\n }\n if (height >= annotationMaxHeight && width < annotationMaxWidth) {\n deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n if (width < annotationMaxWidth && height < annotationMaxHeight) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n }\n }\n if (!isCtrlKeyPressed) {\n deltaHeight = deltaWidth = Math.max(deltaHeight, deltaWidth);\n }\n }\n else {\n if (source.shapeAnnotationType === 'Perimeter' || source.shapeAnnotationType === 'Radius'\n || source.shapeAnnotationType === 'Stamp') {\n if (source.shapeAnnotationType === 'Stamp') {\n if (!annotationMaxHeight && !deltaHeight) {\n deltaHeight = Math.max(deltaHeight === 1 ? 0 : deltaHeight);\n }\n if (!annotationMaxWidth && !deltaWidth) {\n deltaWidth = Math.max(deltaWidth === 1 ? 0 : deltaWidth);\n }\n }\n else {\n if (!annotationMaxHeight || !annotationMaxWidth) {\n if (!(deltaHeight === 1 && deltaWidth === 1)) {\n deltaHeight = deltaWidth = Math.max(deltaHeight === 1 ? 0 : deltaHeight, deltaWidth === 1 ? 0 : deltaWidth);\n }\n }\n }\n }\n }\n this.blocked = this.commandHandler.scaleSelectedItems(deltaWidth, deltaHeight, this.getPivot(this.corner));\n return this.blocked;\n };\n return ResizeTool;\n}(ToolBase));\n/**\n * Draws a node that is defined by the user\n *\n * @hidden\n */\nvar NodeDrawingTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(NodeDrawingTool, _super);\n function NodeDrawingTool(commandHandler, base, sourceObject) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.sourceObject = sourceObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n NodeDrawingTool.prototype.mouseDown = function (args) {\n if (!isNaN(this.pdfViewerBase.activeElements.activePageID) && event.target.className != 'e-pv-page-container') {\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n var node = { bounds: { x: 100, y: 300, width: 100, height: 100 }, pageIndex: 0, strokeColor: 'red', thickness: 3 };\n node.id = randomId();\n this.sourceObject.pageIndex = node.pageIndex = this.pdfViewerBase.activeElements.activePageID || 0;\n this.sourceObject.enableShapeLabel = this.commandHandler.enableShapeLabel;\n this.pdfViewerBase.updateFreeTextProperties(this.sourceObject);\n this.isFormDesign = false;\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (formFieldElement) {\n formFieldElement.remove();\n }\n // eslint-disable-next-line\n this.commandHandler.drawingObject = this.drawingObject = this.commandHandler.add(this.sourceObject || node);\n if (this.drawingObject.formFieldAnnotationType === 'Textbox' || this.drawingObject.formFieldAnnotationType === 'SignatureField' || this.drawingObject.formFieldAnnotationType === 'InitialField' ||\n this.drawingObject.formFieldAnnotationType === 'Checkbox' || this.drawingObject.formFieldAnnotationType === 'ListBox' || this.drawingObject.formFieldAnnotationType === 'RadioButton' ||\n this.drawingObject.formFieldAnnotationType === 'DropdownList' || this.drawingObject.formFieldAnnotationType === 'PasswordField') {\n this.inAction = false;\n // eslint-disable-next-line\n this.drawingObject.pageNumber = this.pdfViewerBase.getActivePage(true);\n // eslint-disable-next-line\n var bounds = this.commandHandler.formDesignerModule.updateFormFieldInitialSize(this.drawingObject.wrapper.children[0], this.drawingObject.formFieldAnnotationType);\n var pageWidth = this.pdfViewerBase.pageContainer.firstElementChild.clientWidth - bounds.width;\n var pageHeight = this.pdfViewerBase.pageContainer.firstElementChild.clientHeight - bounds.height;\n // eslint-disable-next-line\n var left = this.pdfViewerBase.pageContainer.firstElementChild.offsetLeft;\n var offsetX = void 0;\n // eslint-disable-next-line\n if (this.currentPosition.y >= pageHeight && event.target && event.target.parentElement && event.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = event.path[3].getBoundingClientRect();\n // eslint-disable-next-line\n offsetX = event.clientX - targetParentRect.left;\n }\n else {\n offsetX = this.currentPosition.x - left;\n }\n // eslint-disable-next-line\n var rect = void 0;\n if (this.currentPosition.x >= pageWidth && this.currentPosition.y >= pageHeight) {\n // eslint-disable-next-line max-len\n rect = { x: pageWidth, y: pageHeight, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else if (this.currentPosition.x >= pageWidth) {\n // eslint-disable-next-line max-len\n rect = { x: pageWidth, y: this.currentPosition.y, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else if (this.currentPosition.y >= pageHeight) {\n // eslint-disable-next-line max-len\n rect = { x: offsetX, y: pageHeight, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n else {\n // eslint-disable-next-line max-len\n rect = { x: this.currentPosition.x, y: this.currentPosition.y, width: this.drawingObject.wrapper.children[0].width, height: this.drawingObject.wrapper.children[0].height };\n }\n this.updateNodeDimension(this.drawingObject, rect);\n this.drawingObject.bounds.x = this.drawingObject.bounds.x - (this.drawingObject.bounds.width / 2);\n this.drawingObject.bounds.y = this.drawingObject.bounds.y - (this.drawingObject.bounds.height / 2);\n this.commandHandler.formFieldCollection.push(this.drawingObject);\n var drawingObject = this.drawingObject;\n // eslint-disable-next-line max-len\n var formField = {\n id: drawingObject.id, name: drawingObject.name, value: drawingObject.value,\n // eslint-disable-next-line max-len\n type: drawingObject.formFieldAnnotationType, isReadOnly: drawingObject.isReadonly, fontFamily: drawingObject.fontFamily,\n // eslint-disable-next-line max-len\n fontSize: drawingObject.fontSize, fontStyle: drawingObject.fontStyle, color: drawingObject.color, backgroundColor: drawingObject.backgroundColor,\n // eslint-disable-next-line max-len\n alignment: drawingObject.alignment, visibility: drawingObject.visibility, maxLength: drawingObject.maxLength, isRequired: drawingObject.isRequired,\n // eslint-disable-next-line max-len\n isPrint: drawingObject.isPrint, isSelected: drawingObject.isSelected, isChecked: drawingObject.isChecked, tooltip: drawingObject.tooltip, bounds: drawingObject.bounds, thickness: drawingObject.thickness, borderColor: drawingObject.borderColor,\n signatureIndicatorSettings: drawingObject.signatureIndicatorSettings, pageIndex: drawingObject.pageIndex\n };\n this.commandHandler.formFieldCollections.push(formField);\n // eslint-disable-next-line max-len\n this.commandHandler.formDesignerModule.drawHTMLContent(this.drawingObject.formFieldAnnotationType, this.drawingObject.wrapper.children[0], this.drawingObject, this.drawingObject.pageIndex, this.commandHandler);\n this.commandHandler.select([this.commandHandler.drawingObject.id], this.commandHandler.annotationSelectorSettings);\n if (this.commandHandler.annotation) {\n this.commandHandler.annotation.addAction(this.pdfViewerBase.getActivePage(true), null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n }\n this.endAction();\n this.pdfViewerBase.tool = null;\n this.pdfViewerBase.action = 'Select';\n this.drawingObject = null;\n this.pdfViewerBase.isMouseDown = false;\n this.pdfViewerBase.pdfViewer.drawingObject = null;\n this.isFormDesign = true;\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n NodeDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.dragging = true;\n var rect = Rect.toBounds([this.prevPosition, this.currentPosition]);\n this.updateNodeDimension(this.drawingObject, rect);\n if (this.drawingObject.shapeAnnotationType === 'Radius') {\n this.updateRadiusLinePosition(this.drawingObject.wrapper.children[1], this.drawingObject);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n NodeDrawingTool.prototype.mouseUp = function (args) {\n if (this.drawingObject && this.dragging) {\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([this.drawingObject.id], this.commandHandler.annotationSelectorSettings);\n var drawnAnnotation = this.commandHandler.selectedItems.annotations[0];\n this.commandHandler.nodePropertyChange(drawnAnnotation, { bounds: { x: drawnAnnotation.wrapper.offsetX, y: drawnAnnotation.wrapper.offsetY } });\n this.commandHandler.annotation.updateCalibrateValues(this.drawingObject, true);\n if (this.commandHandler && !this.isFormDesign) {\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n }\n this.dragging = false;\n _super.prototype.mouseUp.call(this, args);\n this.inAction = false;\n }\n else {\n _super.prototype.mouseUp.call(this, args);\n }\n this.drawingObject = null;\n };\n /**\n * @private\n * @returns {void}\n */\n NodeDrawingTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object.\n * @param {Rect} rect - Specified the annotation rect element.\n * @returns {void}\n */\n NodeDrawingTool.prototype.updateNodeDimension = function (obj, rect) {\n var zoom = this.commandHandler.viewerBase.getZoomFactor();\n obj.bounds.x = (rect.x / zoom) + rect.width / zoom;\n obj.bounds.y = (rect.y / zoom) + rect.height / zoom;\n obj.bounds.width = rect.width / zoom;\n obj.bounds.height = rect.height / zoom;\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule ? this.commandHandler.annotationModule.findAnnotationSettings(obj) : {};\n var annotationMaxHeight = 0;\n var annotationMaxWidth = 0;\n if (annotationSettings.maxWidth || annotationSettings.maxHeight) {\n annotationMaxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n if (obj.bounds.width > annotationMaxWidth) {\n obj.bounds.width = annotationMaxWidth;\n }\n if (obj.bounds.height > annotationMaxHeight) {\n obj.bounds.height = annotationMaxHeight;\n }\n if (obj.bounds.height <= annotationMaxHeight && obj.bounds.width <= annotationMaxWidth) {\n this.commandHandler.nodePropertyChange(obj, { bounds: obj.bounds });\n }\n }\n else {\n this.commandHandler.nodePropertyChange(obj, { bounds: obj.bounds });\n }\n };\n /**\n * @private\n * @param {DrawingElement} obj - Specified the drawing element.\n * @param {PdfAnnotationBaseModel} node - Specified the annotation object.\n * @returns {void}\n */\n NodeDrawingTool.prototype.updateRadiusLinePosition = function (obj, node) {\n var trasPoint = { x: node.bounds.x + (node.bounds.width / 4), y: node.bounds.y };\n var center = { x: (node.bounds.x + (node.bounds.width / 2)), y: (node.bounds.y + (node.bounds.height / 2)) };\n var matrix = identityMatrix();\n rotateMatrix(matrix, node.rotateAngle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, trasPoint);\n var newPoint1 = { x: rotatedPoint.x, y: rotatedPoint.y };\n obj.offsetX = newPoint1.x;\n obj.offsetY = newPoint1.y;\n obj.width = node.bounds.width / 2;\n // eslint-disable-next-line\n var annotationSettings = this.commandHandler.annotationModule.findAnnotationSettings(node);\n var annotationMaxWidth = 0;\n if (annotationSettings.maxWidth) {\n annotationMaxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n if (node.bounds.width > annotationMaxWidth) {\n node.bounds.width = annotationMaxWidth;\n obj.width = node.bounds.width / 2;\n }\n }\n this.commandHandler.renderDrawing(undefined, node.pageIndex);\n };\n return NodeDrawingTool;\n}(ToolBase));\n/**\n * Draws a Polygon shape node dynamically using polygon Tool\n *\n * @hidden\n */\nvar PolygonDrawingTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(PolygonDrawingTool, _super);\n function PolygonDrawingTool(commandHandler, base, action) {\n var _this = _super.call(this, commandHandler, base) || this;\n _this.action = action;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseDown = function (args) {\n _super.prototype.mouseDown.call(this, args);\n this.inAction = true;\n if (!this.drawingObject) {\n this.startPoint = { x: this.startPosition.x, y: this.startPosition.y };\n var nodeAnnotElement = {\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPoint.x / this.pdfViewerBase.getZoomFactor(), y: this.startPoint.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n shapeAnnotationType: 'Line', fillColor: this.commandHandler.drawingObject.fillColor,\n strokeColor: this.commandHandler.drawingObject.strokeColor, pageIndex: this.pdfViewerBase.activeElements.activePageID,\n // eslint-disable-next-line max-len\n notes: this.commandHandler.drawingObject.notes, thickness: this.commandHandler.drawingObject.thickness, author: this.commandHandler.drawingObject.author,\n subject: this.commandHandler.drawingObject.subject, borderDashArray: this.commandHandler.drawingObject.borderDashArray,\n modifiedDate: this.commandHandler.drawingObject.modifiedDate, borderStyle: this.commandHandler.drawingObject.borderStyle,\n // eslint-disable-next-line max-len\n measureType: this.commandHandler.drawingObject.measureType, enableShapeLabel: this.commandHandler.enableShapeLabel, opacity: this.commandHandler.drawingObject.opacity\n };\n this.pdfViewerBase.updateFreeTextProperties(nodeAnnotElement);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(nodeAnnotElement);\n }\n else {\n var pt = void 0;\n var obj = (this.drawingObject);\n pt = obj.vertexPoints[obj.vertexPoints.length - 1];\n pt = { x: pt.x, y: pt.y };\n var lastPoint = this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1];\n if (!(lastPoint.x === pt.x && lastPoint.x === pt.y)) {\n this.drawingObject.vertexPoints.push(pt);\n }\n this.commandHandler.nodePropertyChange(obj, { vertexPoints: obj.vertexPoints });\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n PolygonDrawingTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.dragging = true;\n var obj = (this.drawingObject);\n if (this.drawingObject && this.currentPosition) {\n obj.vertexPoints[obj.vertexPoints.length - 1].x = this.currentPosition.x / this.pdfViewerBase.getZoomFactor();\n obj.vertexPoints[obj.vertexPoints.length - 1].y = this.currentPosition.y / this.pdfViewerBase.getZoomFactor();\n this.commandHandler.nodePropertyChange(obj, { vertexPoints: obj.vertexPoints });\n }\n if (obj.measureType === 'Perimeter') {\n updatePerimeterLabel(obj, obj.vertexPoints, this.commandHandler.annotation.measureAnnotationModule);\n }\n }\n return true;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @param {boolean} isDoubleClineck - Specified the double click event or not.\n * @param {boolean} isMouseLeave - Specified the mouse leave event or not.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseUp = function (args, isDoubleClineck, isMouseLeave) {\n _super.prototype.mouseMove.call(this, args);\n // eslint-disable-next-line\n var currentSelector;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n if (this.drawingObject) {\n // eslint-disable-next-line max-len\n var bounds = new Rect(this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1].x - 20, this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1].y - 20, 40, 40);\n var point = { x: this.drawingObject.vertexPoints[0].x, y: this.drawingObject.vertexPoints[0].y };\n if ((bounds.containsPoint(point) || isDoubleClineck) && this.dragging) {\n if (this.inAction) {\n this.inAction = false;\n if (this.drawingObject) {\n if (!isMouseLeave) {\n if (this.drawingObject.vertexPoints.length > 2) {\n this.drawingObject.vertexPoints.splice(this.drawingObject.vertexPoints.length - 1, 1);\n }\n }\n if (this.action === 'Polygon') {\n if (!isMouseLeave) {\n // eslint-disable-next-line max-len\n this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length - 1] = this.drawingObject.vertexPoints[0];\n }\n else {\n // eslint-disable-next-line max-len\n this.drawingObject.vertexPoints[this.drawingObject.vertexPoints.length] = this.drawingObject.vertexPoints[0];\n }\n this.commandHandler.nodePropertyChange(this.drawingObject, { vertexPoints: this.drawingObject.vertexPoints });\n var cobject = cloneObject(this.drawingObject);\n cobject.shapeAnnotationType = 'Polygon';\n cobject.bounds.width = cobject.wrapper.actualSize.width;\n cobject.bounds.height = cobject.wrapper.actualSize.height;\n cobject.bounds.x = this.drawingObject.wrapper.bounds.x;\n cobject.bounds.y = this.drawingObject.wrapper.bounds.y;\n this.commandHandler.add(cobject);\n this.commandHandler.remove(this.drawingObject);\n this.commandHandler.select([cobject.id], currentSelector);\n var drawingObject = this.commandHandler.selectedItems.annotations[0];\n if (drawingObject) {\n if (this.commandHandler.enableShapeAnnotation && (isNullOrUndefined(drawingObject.measureType) || drawingObject.measureType === '')) {\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.shapeAnnotationModule.renderShapeAnnotations(drawingObject, drawingObject.pageIndex);\n }\n if (this.commandHandler.enableMeasureAnnotation && (drawingObject.measureType === 'Area' || drawingObject.measureType === 'Volume')) {\n if (drawingObject.measureType === 'Area') {\n // eslint-disable-next-line max-len\n drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculateArea(drawingObject.vertexPoints);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(drawingObject.annotName, drawingObject.notes);\n }\n else if (drawingObject.measureType === 'Volume') {\n // eslint-disable-next-line max-len\n drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculateVolume(drawingObject.vertexPoints);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(drawingObject.annotName, drawingObject.notes);\n }\n if (drawingObject.enableShapeLabel) {\n drawingObject.labelContent = drawingObject.notes;\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(drawingObject, { vertexPoints: drawingObject.vertexPoints, notes: drawingObject.notes });\n }\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.measureAnnotationModule.renderMeasureShapeAnnotations(drawingObject, drawingObject.pageIndex);\n }\n }\n }\n else {\n if (!isMouseLeave) {\n if (isDoubleClineck) {\n this.drawingObject.vertexPoints.splice(this.drawingObject.vertexPoints.length - 1, 1);\n }\n }\n this.commandHandler.nodePropertyChange(this.drawingObject, {\n // eslint-disable-next-line max-len\n vertexPoints: this.drawingObject.vertexPoints, sourceDecoraterShapes: this.commandHandler.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.commandHandler.drawingObject.taregetDecoraterShapes\n });\n this.commandHandler.select([this.drawingObject.id], currentSelector);\n if (this.commandHandler.enableMeasureAnnotation && this.drawingObject.measureType === 'Perimeter') {\n this.commandHandler.renderDrawing(null, this.drawingObject.pageIndex);\n // eslint-disable-next-line max-len\n this.drawingObject.notes = this.commandHandler.annotation.measureAnnotationModule.calculatePerimeter(this.drawingObject);\n if (this.drawingObject.enableShapeLabel) {\n this.drawingObject.labelContent = this.drawingObject.notes;\n // eslint-disable-next-line max-len\n this.commandHandler.nodePropertyChange(this.drawingObject, { vertexPoints: this.drawingObject.vertexPoints, notes: this.drawingObject.notes });\n }\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.stickyNotesAnnotationModule.addTextToComments(this.drawingObject.annotName, this.drawingObject.notes);\n // eslint-disable-next-line max-len\n this.commandHandler.annotation.measureAnnotationModule.renderMeasureShapeAnnotations(this.drawingObject, this.drawingObject.pageIndex);\n }\n }\n var annotationObject = this.commandHandler.selectedItems.annotations[0];\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, annotationObject, 'Addition', '', annotationObject, annotationObject);\n this.drawingObject = null;\n }\n }\n this.endAction();\n }\n else if (this.inAction && !this.dragging) {\n this.commandHandler.remove(this.drawingObject);\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args, true, true);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n PolygonDrawingTool.prototype.mouseWheel = function (args) {\n _super.prototype.mouseWheel.call(this, args);\n this.mouseMove(args);\n };\n /**\n * @private\n * @returns {void}\n */\n PolygonDrawingTool.prototype.endAction = function () {\n this.inAction = false;\n this.drawingObject = null;\n this.commandHandler.tool = '';\n };\n return PolygonDrawingTool;\n}(ToolBase));\n/**\n * Helps to edit the selected connectors\n *\n * @hidden\n */\nvar LineTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(LineTool, _super);\n function LineTool(commandHandler, base, endPoint, drawingObject) {\n var _this = _super.call(this, commandHandler, base, true) || this;\n _this.endPoint = endPoint;\n _this.drawingObject = drawingObject;\n return _this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseDown = function (args) {\n this.inAction = true;\n this.undoElement = undefined;\n _super.prototype.mouseDown.call(this, args);\n var oldPointValue;\n var connectorsShape;\n if (args.source && args.source.annotations) {\n oldPointValue = { x: this.prevPosition.x, y: this.prevPosition.y };\n connectorsShape = this.drawingObject;\n }\n this.initialPosition = args.position;\n this.prevSource = this.drawingObject;\n this.currentPosition = args.position;\n if (!this.drawingObject) {\n var measureModule = this.commandHandler.annotation.measureAnnotationModule;\n var annotationNode = {\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.startPosition.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n sourceDecoraterShapes: this.commandHandler.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.commandHandler.drawingObject.taregetDecoraterShapes, measureType: 'Distance',\n // eslint-disable-next-line max-len\n fillColor: this.commandHandler.drawingObject.fillColor, notes: this.commandHandler.drawingObject.notes, strokeColor: this.commandHandler.drawingObject.strokeColor,\n // eslint-disable-next-line max-len\n opacity: this.commandHandler.drawingObject.opacity, thickness: this.commandHandler.drawingObject.thickness, borderDashArray: this.commandHandler.drawingObject.borderDashArray,\n shapeAnnotationType: 'Distance', pageIndex: this.pdfViewerBase.activeElements.activePageID,\n author: this.commandHandler.drawingObject.author, subject: this.commandHandler.drawingObject.subject,\n enableShapeLabel: this.commandHandler.enableShapeLabel, leaderHeight: measureModule.leaderLength\n };\n this.pdfViewerBase.updateFreeTextProperties(annotationNode);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(annotationNode);\n }\n else if (!this.dragging) {\n var nodeAnnot = {\n bounds: { x: this.currentPosition.x, y: this.currentPosition.y, width: 5, height: 5 },\n // eslint-disable-next-line max-len\n vertexPoints: [{ x: this.startPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.startPosition.y / this.pdfViewerBase.getZoomFactor() }, { x: this.currentPosition.x / this.pdfViewerBase.getZoomFactor(), y: this.currentPosition.y / this.pdfViewerBase.getZoomFactor() }],\n // eslint-disable-next-line max-len\n shapeAnnotationType: this.drawingObject.shapeAnnotationType, sourceDecoraterShapes: this.drawingObject.sourceDecoraterShapes,\n taregetDecoraterShapes: this.drawingObject.taregetDecoraterShapes, fillColor: this.drawingObject.fillColor,\n strokeColor: this.drawingObject.strokeColor, pageIndex: this.pdfViewerBase.activeElements.activePageID,\n // eslint-disable-next-line max-len\n opacity: this.drawingObject.opacity || 1, borderDashArray: this.drawingObject.borderDashArray, thickness: this.drawingObject.thickness,\n modifiedDate: this.drawingObject.modifiedDate, author: this.drawingObject.author, subject: this.drawingObject.subject,\n lineHeadEnd: this.drawingObject.lineHeadEnd, lineHeadStart: this.drawingObject.lineHeadStart,\n measureType: this.commandHandler.drawingObject.measureType, enableShapeLabel: this.commandHandler.enableShapeLabel\n };\n this.pdfViewerBase.updateFreeTextProperties(nodeAnnot);\n // eslint-disable-next-line\n this.drawingObject = this.commandHandler.add(nodeAnnot);\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseUp = function (args) {\n if (this.dragging) {\n _super.prototype.mouseMove.call(this, args);\n if (this.commandHandler) {\n // eslint-disable-next-line\n var currentSelector = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n else {\n currentSelector = '';\n }\n // eslint-disable-next-line\n var node = this.drawingObject;\n this.commandHandler.nodePropertyChange(node, { vertexPoints: node.vertexPoints, leaderHeight: node.leaderHeight });\n this.commandHandler.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.commandHandler.select([node.id], currentSelector);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n }\n if (this.endPoint && this.endPoint.indexOf('ConnectorSegmentPoint') > -1 && this.dragging) {\n this.commandHandler.annotation.updateCalibrateValues(this.drawingObject);\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, this.drawingObject, 'Addition', '', this.drawingObject, this.drawingObject);\n this.drawingObject = null;\n this.dragging = false;\n _super.prototype.mouseUp.call(this, args);\n }\n if (this.drawingObject) {\n this.endPoint = 'ConnectorSegmentPoint_1';\n }\n }\n else {\n if (this.drawingObject) {\n this.commandHandler.remove(this.drawingObject);\n }\n }\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n LineTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n if (this.inAction && Point.equals(this.currentPosition, this.prevPosition) === false) {\n this.currentPosition = args.position;\n this.dragging = true;\n if (this.currentPosition && this.prevPosition) {\n var diffX = this.currentPosition.x - this.prevPosition.x;\n var diffY = this.currentPosition.y - this.prevPosition.y;\n // eslint-disable-next-line\n var currentSelector = void 0;\n if (args.source && args.annotationSelectorSettings !== null) {\n currentSelector = args.source.annotationSelectorSettings;\n }\n else {\n currentSelector = '';\n }\n // eslint-disable-next-line max-len\n if (this.inAction && this.commandHandler && this.drawingObject && this.endPoint !== undefined && diffX !== 0 || diffY !== 0) {\n // eslint-disable-next-line max-len\n this.blocked = !this.commandHandler.dragConnectorEnds(this.endPoint, this.drawingObject, this.currentPosition, this.selectedSegment, args.target, null, currentSelector);\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n }\n }\n this.prevPosition = this.currentPosition;\n }\n return !this.blocked;\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n LineTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n LineTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n this.prevPosition = null;\n this.endPoint = null;\n };\n return LineTool;\n}(ToolBase));\n/**\n * Rotates the selected objects\n *\n * @hidden\n */\nvar RotateTool = /** @__PURE__ @class */ (function (_super) {\n __extends$3(RotateTool, _super);\n function RotateTool(commandHandler, base) {\n return _super.call(this, commandHandler, base, true) || this;\n }\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseDown = function (args) {\n var nodeMouseDown = cloneObject(args.source);\n this.undoElement = {\n bounds: {\n x: nodeMouseDown.wrapper.offsetX, y: nodeMouseDown.wrapper.offsetY,\n width: nodeMouseDown.wrapper.actualSize.width, height: nodeMouseDown.wrapper.actualSize.height\n }, rotateAngle: nodeMouseDown.rotateAngle\n // eslint-disable-next-line\n };\n _super.prototype.mouseDown.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseUp = function (args) {\n var object = args.source;\n // eslint-disable-next-line\n var newShapeObject;\n if (this.undoElement.rotateAngle !== object.wrapper.rotateAngle) {\n // eslint-disable-next-line\n var currentSelector = args.source.annotations[0].annotationSelectorSettings;\n this.commandHandler.renderSelector(this.pdfViewerBase.activeElements.activePageID, currentSelector);\n newShapeObject = {\n bounds: {\n x: args.source.wrapper.offsetX, y: args.source.wrapper.offsetY,\n width: args.source.wrapper.actualSize.width, height: args.source.wrapper.actualSize.height\n }, rotateAngle: args.source.wrapper.rotateAngle\n };\n }\n // eslint-disable-next-line\n this.commandHandler.annotation.addAction(this.pageIndex, null, args.source, 'Rotate', '', this.undoElement, newShapeObject);\n this.commandHandler.annotation.stampAnnotationModule.updateSessionStorage(args.source, null, 'Rotate');\n this.commandHandler.annotation.stickyNotesAnnotationModule.updateStickyNotes(args.source, null);\n _super.prototype.mouseUp.call(this, args);\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {boolean} - Returns true or false.\n */\n RotateTool.prototype.mouseMove = function (args) {\n _super.prototype.mouseMove.call(this, args);\n var object = args.source;\n // eslint-disable-next-line\n var currentSelector = args.source.annotations[0].annotationSelectorSettings;\n this.currentPosition = args.position;\n if (object.wrapper) {\n var refPoint = { x: object.wrapper.offsetX, y: object.wrapper.offsetY };\n var angle = Point.findAngle(refPoint, this.currentPosition) + 90;\n angle = (angle + 360) % 360;\n this.blocked = !(this.commandHandler.rotate(angle - object.wrapper.rotateAngle, currentSelector));\n }\n return !this.blocked;\n };\n RotateTool.prototype.getTooltipContent = function (node) {\n return Math.round((node.rotateAngle % 360)).toString() + '\\xB0';\n };\n /**\n * @private\n * @param {MouseEventArgs} args - Specified the mouse event arguments.\n * @returns {void}\n */\n RotateTool.prototype.mouseLeave = function (args) {\n this.mouseUp(args);\n };\n /**\n * @private\n * @returns {void}\n */\n RotateTool.prototype.endAction = function () {\n _super.prototype.endAction.call(this);\n };\n return RotateTool;\n}(ToolBase));\n\n/**\n * @private\n * @param {MouseEvent | TouchEvent} event - Specified the annotaion event.\n * @param {PdfViewerBase} pdfBase - Specified the pdfviewer base element.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @param {boolean} isOverlapped - Specified the overlapped element or not.\n * @returns {any} - Returns the active element.\n */\n// eslint-disable-next-line\nfunction findActiveElement(event, pdfBase, pdfViewer, isOverlapped) {\n if (pdfViewer && pdfBase.activeElements.activePageID > -1) {\n var objects = findObjectsUnderMouse(pdfBase, pdfViewer, event);\n var object = findObjectUnderMouse(objects, event, pdfBase, pdfViewer);\n if (isOverlapped) {\n return objects;\n }\n return object;\n }\n return undefined;\n}\n/**\n * @private\n * @param {PdfViewerBase} pdfBase - Specified the pdfviewer base element.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @param {MouseEvent} event - Specified the annotaion event.\n * @returns {IElement[]} - Returns the annotaion elements.\n */\nfunction findObjectsUnderMouse(pdfBase, pdfViewer, event) {\n var pt = pdfBase.currentPosition || { x: event.offsetX, y: event.offsetY };\n pt = { x: pt.x / pdfBase.getZoomFactor(), y: pt.y / pdfBase.getZoomFactor() };\n var pageTable = pdfViewer.getPageTable(pdfBase.activeElements.activePageID);\n var objArray = findObjects(pt, pageTable.objects, pdfViewer.touchPadding);\n return objArray;\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel[]} objects - Specified the annotaion object model.\n * @param {any} event - Specified the annotaion event.\n * @param {PdfViewerBase} pdfBase - Specified the pdfviewer base element.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @returns {IElement} - Returns the annotaion element.\n */\nfunction findObjectUnderMouse(\n// eslint-disable-next-line\nobjects, event, pdfBase, pdfViewer) {\n var actualTarget = null;\n var touchArg;\n var offsetX;\n var offsetY;\n if (event && event.type && event.type.indexOf('touch') !== -1) {\n touchArg = event;\n if (pdfViewer.annotation) {\n var pageDiv = pdfBase.getElement('_pageDiv_' + pdfViewer.annotation.getEventPageNumber(event));\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = touchArg.changedTouches[0].clientX - pageCurrentRect.left;\n offsetY = touchArg.changedTouches[0].clientY - pageCurrentRect.top;\n }\n }\n // eslint-disable-next-line\n }\n else if (event && event.target && event.path && event.target.parentElement && event.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = event.path[4].getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n }\n else if (event.target && event.target.parentElement && event.target.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = event.target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (event.target && event.target.parentElement && event.target.parentElement.parentElement && event.target.parentElement.parentElement.classList.contains('foreign-object')) {\n // eslint-disable-next-line\n var targetParentRect = event.target.offsetParent.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n offsetX = event.clientX - targetParentRect.left;\n offsetY = event.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else {\n offsetX = !isNaN(event.offsetX) ? event.offsetX : (event.position ? event.position.x : 0);\n offsetY = !isNaN(event.offsetY) ? event.offsetY : (event.position ? event.position.y : 0);\n }\n //EJ2-63562 - Reduced the offset selector by half to improve selection of fields in mobile devices\n var offsetForSelector = pdfViewer.touchPadding / 2;\n var boundsDiff = 0;\n for (var i = 0; i < objects.length; i++) {\n if (!(objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Distance' || objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Line' || objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'LineWidthArrowHead' || pdfBase.tool instanceof LineTool)) {\n var bounds = objects[parseInt(i.toString(), 10)].wrapper.bounds;\n var rotationValue = 0;\n if (objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Stamp' || objects[parseInt(i.toString(), 10)].shapeAnnotationType === 'Image') {\n rotationValue = 25;\n }\n // eslint-disable-next-line max-len\n if ((((bounds.x - offsetForSelector) * pdfBase.getZoomFactor()) < offsetX) && (((bounds.x + bounds.width + offsetForSelector) * pdfBase.getZoomFactor()) > offsetX) &&\n // eslint-disable-next-line max-len\n (((bounds.y - offsetForSelector - rotationValue) * pdfBase.getZoomFactor()) < offsetY) && (((bounds.y + bounds.height + offsetForSelector) * pdfBase.getZoomFactor()) > offsetY)) {\n if (pdfBase.tool instanceof NodeDrawingTool || pdfBase.tool instanceof StampTool) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n }\n else {\n if (!boundsDiff) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n // eslint-disable-next-line max-len\n boundsDiff = (offsetX - ((bounds.x - offsetForSelector) * pdfBase.getZoomFactor())) + (((bounds.x + bounds.width + offsetForSelector) * pdfBase.getZoomFactor()) - offsetX) +\n // eslint-disable-next-line max-len\n (offsetY - ((bounds.y - offsetForSelector - rotationValue) * pdfBase.getZoomFactor())) + (((bounds.y + bounds.height + offsetForSelector) * pdfBase.getZoomFactor()) - offsetY);\n }\n else {\n // eslint-disable-next-line max-len\n var objectBounds = (offsetX - ((bounds.x - offsetForSelector) * pdfBase.getZoomFactor())) + (((bounds.x + bounds.width + offsetForSelector) * pdfBase.getZoomFactor()) - offsetX) +\n // eslint-disable-next-line max-len\n (offsetY - ((bounds.y - offsetForSelector - rotationValue) * pdfBase.getZoomFactor())) + (((bounds.y + bounds.height + offsetForSelector) * pdfBase.getZoomFactor()) - offsetY);\n if (boundsDiff > objectBounds) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n boundsDiff = objectBounds;\n }\n else if (boundsDiff === objectBounds) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n boundsDiff = objectBounds;\n }\n else if ((objects[parseInt(i.toString(), 10)].shapeAnnotationType === \"Image\") || (objects[parseInt(i.toString(), 10)].shapeAnnotationType === \"Stamp\")) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n else {\n var pt = { x: offsetX / pdfBase.getZoomFactor(), y: offsetY / pdfBase.getZoomFactor() };\n var obj = findElementUnderMouse(objects[parseInt(i.toString(), 10)], pt, offsetForSelector);\n var isOver = isPointOverConnector(objects[parseInt(i.toString(), 10)], pt);\n if (obj && !isOver) {\n var newpoint = CalculateLeaderPoints(objects[parseInt(i.toString(), 10)], obj);\n if (newpoint) {\n var rect = Rect.toBounds([newpoint, newpoint]);\n rect.Inflate(10);\n if (rect.containsPoint(pt)) {\n isOver = true;\n }\n }\n }\n if (obj && isOver) {\n actualTarget = objects[parseInt(i.toString(), 10)];\n }\n }\n }\n return actualTarget;\n}\n/**\n * @private\n * @param {any} selector - Specified the annotaion selctor.\n * @param {any} currentobject - Specified the current annotaion object.\n * @returns {any} - Returns the leader points.\n */\n// eslint-disable-next-line\nfunction CalculateLeaderPoints(selector, currentobject) {\n var leaderCount = 0;\n var sourcePoint = selector.sourcePoint;\n var targetPoint = selector.targetPoint;\n if (selector.shapeAnnotationType === 'Distance') {\n var segment = currentobject;\n var newPoint1 = void 0;\n var angle = Point.findAngle(selector.sourcePoint, selector.targetPoint);\n if (segment.id.indexOf('leader') > -1) {\n var center = selector.wrapper.children[0].bounds.center;\n if (leaderCount === 0 && segment.id.indexOf('leader1') > -1) {\n newPoint1 = { x: selector.sourcePoint.x, y: selector.sourcePoint.y - selector.leaderHeight };\n center = sourcePoint;\n }\n else {\n newPoint1 = { x: selector.targetPoint.x, y: selector.targetPoint.y - selector.leaderHeight };\n center = targetPoint;\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, angle, center.x, center.y);\n var rotatedPoint = transformPointByMatrix(matrix, { x: newPoint1.x, y: newPoint1.y });\n return rotatedPoint;\n }\n }\n}\n/**\n * @private\n * @param {IElement} obj - Specified the annotation element.\n * @param {PointModel} position - Specified the annotation position value.\n * @param {number} padding - Specified the annotation padding.\n * @returns {DrawingElement} - Returns the annotation drawing element.\n */\nfunction findElementUnderMouse(obj, position, padding) {\n return findTargetShapeElement(obj.wrapper, position, padding);\n}\n/**\n * @private\n * @param {PdfAnnotationBaseModel} obj - Specified the annotation object model.\n * @param {string} key - Specified the annotation key value.\n * @param {Object[]} collection - Specified the annotation collection.\n * @returns {void}\n */\nfunction insertObject(obj, key, collection) {\n if (collection.length === 0) {\n collection.push(obj);\n }\n else if (collection.length === 1) {\n // eslint-disable-next-line\n if (collection[0][key] > obj[key]) {\n collection.splice(0, 0, obj);\n }\n else {\n collection.push(obj);\n }\n }\n else if (collection.length > 1) {\n var low = 0;\n var high = collection.length - 1;\n var mid = Math.floor((low + high) / 2);\n while (mid !== low) {\n // eslint-disable-next-line\n if (collection[mid][key] < obj[key]) {\n low = mid;\n mid = Math.floor((low + high) / 2);\n // eslint-disable-next-line\n }\n else if (collection[mid][key] > obj[key]) {\n high = mid;\n mid = Math.floor((low + high) / 2);\n }\n }\n // eslint-disable-next-line\n if (collection[high][key] < obj[key]) {\n collection.push(obj);\n // eslint-disable-next-line\n }\n else if (collection[low][key] > obj[key]) {\n collection.splice(low, 0, obj);\n // eslint-disable-next-line\n }\n else if ((collection[low][key] < obj[key]) && collection[high][key] > obj[key]) {\n collection.splice(high, 0, obj);\n }\n }\n}\n/**\n * @private\n * @param {Container} container - Specified the annotaion container.\n * @param {PointModel} position - Specified the annotation position.\n * @param {number} padding - Specified the annotaion padding value.\n * @returns {DrawingElement} - Returns the annotation drawing element.\n */\nfunction findTargetShapeElement(container, position, padding) {\n if (container && container.children) {\n for (var i = container.children.length - 1; i >= 0; i--) {\n var shapeElement = container.children[parseInt(i.toString(), 10)];\n var touchPadding = padding;\n // eslint-disable-next-line\n if (!isNullOrUndefined(shapeElement.children) && shapeElement.children.length > 0) {\n // eslint-disable-next-line\n for (var j = shapeElement.children.length - 1; j >= 0; j--) {\n // eslint-disable-next-line\n var currentTarget = shapeElement.children[j];\n if (currentTarget && currentTarget.bounds.containsPoint(position, touchPadding)) {\n if (currentTarget instanceof Container) {\n var targetElement = this.findTargetElement(currentTarget, position);\n if (targetElement) {\n return targetElement;\n }\n }\n if (currentTarget.bounds.containsPoint(position, touchPadding)) {\n return currentTarget;\n }\n }\n }\n }\n else {\n if (shapeElement && shapeElement.bounds.containsPoint(position, touchPadding)) {\n if (shapeElement instanceof Container) {\n var targetElement = this.findTargetElement(shapeElement, position);\n if (targetElement) {\n return targetElement;\n }\n }\n if (shapeElement.bounds.containsPoint(position, touchPadding)) {\n return shapeElement;\n }\n }\n }\n }\n }\n if (container && container.bounds.containsPoint(position, padding) && container.style.fill !== 'none') {\n var element = container;\n var paddingValue = 10;\n var rotateThumbDistance = 30;\n var matrix = identityMatrix();\n rotateMatrix(matrix, element.parentTransform, element.offsetX, element.offsetY);\n var x = element.offsetX - element.pivot.x * element.actualSize.width;\n var y = element.offsetY - element.pivot.y * element.actualSize.height;\n var rotateThumb = {\n x: x + ((element.pivot.x === 0.5 ? element.pivot.x * 2 : element.pivot.x) * element.actualSize.width / 2),\n y: y - rotateThumbDistance\n };\n rotateThumb = transformPointByMatrix(matrix, rotateThumb);\n if (contains(position, rotateThumb, paddingValue)) {\n return container;\n }\n }\n return null;\n}\n/**\n * @private\n * @param {PointModel} region - Specified the annotation region point model.\n * @param {PdfAnnotationBaseModel[]} objCollection - Specified the annotation object collections.\n * @returns {PdfAnnotationBaseModel[]} - Returns the annotation object collections.\n */\nfunction findObjects(region, objCollection, touchPadding) {\n var objects = [];\n for (var _i = 0, objCollection_1 = objCollection; _i < objCollection_1.length; _i++) {\n var obj = objCollection_1[_i];\n if (findElementUnderMouse(obj, region, touchPadding) || ((obj.shapeAnnotationType === 'Stamp') && findElementUnderMouse(obj, region, 40))) {\n insertObject(obj, 'zIndex', objects);\n }\n }\n return objects;\n}\n/**\n * @private\n * @param {MouseEvent} event - Specified the annotaion mouse event.\n * @param {PdfViewerBase} pdfBase - Specified the pdfBase element.\n * @returns {number} - Returns the active page Id.\n */\nfunction findActivePage(event, pdfBase) {\n var activePageID = undefined;\n if (event.target && event.target.wrapper) {\n return event.target.pageIndex;\n }\n if (event.target) {\n var elementIdColl = event.target.id.split('_');\n if (elementIdColl.length > 0) {\n // eslint-disable-next-line radix\n activePageID = parseInt(elementIdColl[elementIdColl.length - 1]);\n }\n }\n return activePageID;\n}\n/**\n * @hidden\n */\nvar ActiveElements = /** @__PURE__ @class */ (function () {\n function ActiveElements() {\n this.activePage = undefined;\n this.activePageID = undefined;\n }\n Object.defineProperty(ActiveElements.prototype, \"activePageID\", {\n /**\n * @private\n * @returns {number} - Returns the active page Id.\n */\n get: function () {\n return this.activePage;\n },\n /**\n * @private\n * @param {number} offset - The page offset value.\n */\n set: function (offset) {\n this.activePage = offset;\n // eslint-disable-next-line\n if (offset !== this.activePage) { }\n },\n enumerable: true,\n configurable: true\n });\n return ActiveElements;\n}());\n\n/**\n * @param {ClientRect} bounds - Specified the bounds of the annotation.\n * @param {string} commonStyle - Specified the annotation styles.\n * @param {HTMLElement} cavas - Specified the annotation canvas element.\n * @param {number} index - Specified the page index value.\n * @param {PdfViewer} pdfViewer - Specified the pdfviewer element.\n * @hidden\n * @returns {void}\n */\nfunction renderAdornerLayer(bounds, commonStyle, cavas, index, pdfViewer) {\n var divElement = createHtmlElement('div', {\n 'id': pdfViewer.element.id + index + '_diagramAdornerLayer',\n 'style': 'width:' + bounds.width + 'px;height:' + bounds.height + 'px;' + commonStyle\n });\n if (!getDiagramElement(divElement.id)) {\n var nextElement = pdfViewer.viewerBase.getElement('_pageDiv_' + index);\n var pageBound = nextElement.getBoundingClientRect();\n var svgAdornerSvg = createSvg(pdfViewer.element.id + index + '_diagramAdorner_svg', pageBound.width, pageBound.height);\n svgAdornerSvg.setAttribute('class', 'e-adorner-layer' + index);\n svgAdornerSvg.setAttribute('style', 'pointer-events:none;');\n pdfViewer.adornerSvgLayer = createSvgElement('g', { 'id': pdfViewer.element.id + index + '_diagramAdorner' });\n pdfViewer.adornerSvgLayer.setAttribute('style', ' pointer-events: all; ');\n svgAdornerSvg.appendChild(pdfViewer.adornerSvgLayer);\n divElement.appendChild(svgAdornerSvg);\n divElement.style.width = pageBound.width + 'px';\n divElement.style.height = pageBound.height + 'px';\n if (nextElement) {\n nextElement.insertBefore(divElement, nextElement.childNodes[0]);\n }\n else {\n cavas.parentElement.appendChild(divElement);\n }\n var svgSelector = createSvgElement('g', { 'id': pdfViewer.element.id + index + '_SelectorElement' });\n pdfViewer.adornerSvgLayer.appendChild(svgSelector);\n setAttributeSvg(svgAdornerSvg, { style: 'pointer-events:none;' });\n }\n pdfViewer.viewerBase.applyElementStyles(divElement, index);\n}\n/**\n * @param {string} id - Specified the Id of the svg element.\n * @param {string | number} width - Specified the width of the svg element.\n * @param {string | number} height - Specified the height of the svg element.\n * @hidden\n * @returns {SVGElement} - Returns the svg element.\n */\nfunction createSvg(id, width, height) {\n var svgObj = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n setAttributeSvg(svgObj, { 'id': id, 'width': width, 'height': height });\n return svgObj;\n}\n\n/**\n * PdfViewer diagram component exported items\n */\n\n/**\n * Enum for comment status of the annotation\n */\nvar CommentStatus;\n(function (CommentStatus) {\n CommentStatus[CommentStatus[\"None\"] = 1] = \"None\";\n CommentStatus[CommentStatus[\"Accepted\"] = 2] = \"Accepted\";\n CommentStatus[CommentStatus[\"Canceled\"] = 3] = \"Canceled\";\n CommentStatus[CommentStatus[\"Completed\"] = 4] = \"Completed\";\n CommentStatus[CommentStatus[\"Rejected\"] = 5] = \"Rejected\";\n})(CommentStatus || (CommentStatus = {}));\n/**\n * Enum for font styles\n */\nvar FontStyle;\n(function (FontStyle) {\n FontStyle[FontStyle[\"None\"] = 0] = \"None\";\n FontStyle[FontStyle[\"Bold\"] = 1] = \"Bold\";\n FontStyle[FontStyle[\"Italic\"] = 2] = \"Italic\";\n FontStyle[FontStyle[\"Underline\"] = 4] = \"Underline\";\n FontStyle[FontStyle[\"Strikethrough\"] = 8] = \"Strikethrough\";\n})(FontStyle || (FontStyle = {}));\n/**\n * Enum for context menu items\n */\nvar ContextMenuItem;\n(function (ContextMenuItem) {\n ContextMenuItem[ContextMenuItem[\"Copy\"] = 0] = \"Copy\";\n ContextMenuItem[ContextMenuItem[\"Highlight\"] = 1] = \"Highlight\";\n ContextMenuItem[ContextMenuItem[\"Cut\"] = 2] = \"Cut\";\n ContextMenuItem[ContextMenuItem[\"Underline\"] = 4] = \"Underline\";\n ContextMenuItem[ContextMenuItem[\"Paste\"] = 8] = \"Paste\";\n ContextMenuItem[ContextMenuItem[\"Delete\"] = 16] = \"Delete\";\n ContextMenuItem[ContextMenuItem[\"ScaleRatio\"] = 32] = \"ScaleRatio\";\n ContextMenuItem[ContextMenuItem[\"Strikethrough\"] = 64] = \"Strikethrough\";\n ContextMenuItem[ContextMenuItem[\"Properties\"] = 128] = \"Properties\";\n ContextMenuItem[ContextMenuItem[\"Comment\"] = 256] = \"Comment\";\n})(ContextMenuItem || (ContextMenuItem = {}));\n/**\n * Enum for signature type\n */\nvar SignatureType;\n(function (SignatureType) {\n SignatureType[\"Draw\"] = \"Draw\";\n SignatureType[\"Type\"] = \"Type\";\n SignatureType[\"Image\"] = \"Image\";\n})(SignatureType || (SignatureType = {}));\n/**\n * Enum for annotation resizer location\n */\nvar AnnotationResizerLocation;\n(function (AnnotationResizerLocation) {\n AnnotationResizerLocation[AnnotationResizerLocation[\"Corners\"] = 1] = \"Corners\";\n AnnotationResizerLocation[AnnotationResizerLocation[\"Edges\"] = 2] = \"Edges\";\n})(AnnotationResizerLocation || (AnnotationResizerLocation = {}));\n/**\n * Enum for displaying the signature dialog\n */\nvar DisplayMode;\n(function (DisplayMode) {\n /** Draw - Display only the draw option in the signature dialog. */\n DisplayMode[DisplayMode[\"Draw\"] = 1] = \"Draw\";\n /** Text - Display only the type option in the signature dialog. */\n DisplayMode[DisplayMode[\"Text\"] = 2] = \"Text\";\n /** Upload - Display only the upload option in the signature dialog. */\n DisplayMode[DisplayMode[\"Upload\"] = 4] = \"Upload\";\n})(DisplayMode || (DisplayMode = {}));\n/**\n * Enum for cursor type\n */\nvar CursorType;\n(function (CursorType) {\n CursorType[\"auto\"] = \"auto\";\n CursorType[\"crossHair\"] = \"crosshair\";\n // eslint-disable-next-line\n CursorType[\"e_resize\"] = \"e-resize\";\n // eslint-disable-next-line\n CursorType[\"ew_resize\"] = \"ew-resize\";\n CursorType[\"grab\"] = \"grab\";\n CursorType[\"grabbing\"] = \"grabbing\";\n CursorType[\"move\"] = \"move\";\n // eslint-disable-next-line\n CursorType[\"n_resize\"] = \"n-resize\";\n // eslint-disable-next-line\n CursorType[\"ne_resize\"] = \"ne-resize\";\n // eslint-disable-next-line\n CursorType[\"ns_resize\"] = \"ns-resize\";\n // eslint-disable-next-line\n CursorType[\"nw_resize\"] = \"nw-resize\";\n CursorType[\"pointer\"] = \"pointer\";\n // eslint-disable-next-line\n CursorType[\"s_resize\"] = \"s-resize\";\n // eslint-disable-next-line\n CursorType[\"se_resize\"] = \"se-resize\";\n // eslint-disable-next-line\n CursorType[\"sw_resize\"] = \"sw-resize\";\n CursorType[\"text\"] = \"text\";\n // eslint-disable-next-line\n CursorType[\"w_resize\"] = \"w-resize\";\n})(CursorType || (CursorType = {}));\n/**\n * Enum type for Dynamic Stamp Items\n */\nvar DynamicStampItem;\n(function (DynamicStampItem) {\n DynamicStampItem[\"Revised\"] = \"Revised\";\n DynamicStampItem[\"Reviewed\"] = \"Reviewed\";\n DynamicStampItem[\"Received\"] = \"Received\";\n DynamicStampItem[\"Approved\"] = \"Approved\";\n DynamicStampItem[\"Confidential\"] = \"Confidential\";\n DynamicStampItem[\"NotApproved\"] = \"NotApproved\";\n})(DynamicStampItem || (DynamicStampItem = {}));\n/**\n * Enum type for Sign Stamp Items\n */\nvar SignStampItem;\n(function (SignStampItem) {\n SignStampItem[\"Witness\"] = \"Witness\";\n SignStampItem[\"InitialHere\"] = \"InitialHere\";\n SignStampItem[\"SignHere\"] = \"SignHere\";\n SignStampItem[\"Accepted\"] = \"Accepted\";\n SignStampItem[\"Rejected\"] = \"Rejected\";\n})(SignStampItem || (SignStampItem = {}));\n/**\n * Enum type for Standard Business Stamp Items\n */\nvar StandardBusinessStampItem;\n(function (StandardBusinessStampItem) {\n StandardBusinessStampItem[\"Approved\"] = \"Approved\";\n StandardBusinessStampItem[\"NotApproved\"] = \"NotApproved\";\n StandardBusinessStampItem[\"Draft\"] = \"Draft\";\n StandardBusinessStampItem[\"Final\"] = \"Final\";\n StandardBusinessStampItem[\"Completed\"] = \"Completed\";\n StandardBusinessStampItem[\"Confidential\"] = \"Confidential\";\n StandardBusinessStampItem[\"ForPublicRelease\"] = \"ForPublicRelease\";\n StandardBusinessStampItem[\"NotForPublicRelease\"] = \"NotForPublicRelease\";\n StandardBusinessStampItem[\"ForComment\"] = \"ForComment\";\n StandardBusinessStampItem[\"Void\"] = \"Void\";\n StandardBusinessStampItem[\"PreliminaryResults\"] = \"PreliminaryResults\";\n StandardBusinessStampItem[\"InformationOnly\"] = \"InformationOnly\";\n})(StandardBusinessStampItem || (StandardBusinessStampItem = {}));\n/**\n * Enum type for allowed interactions for locked annotations\n */\nvar AllowedInteraction;\n(function (AllowedInteraction) {\n AllowedInteraction[\"Select\"] = \"Select\";\n AllowedInteraction[\"Move\"] = \"Move\";\n AllowedInteraction[\"Resize\"] = \"Resize\";\n AllowedInteraction[\"Delete\"] = \"Delete\";\n AllowedInteraction[\"None\"] = \"None\";\n AllowedInteraction[\"PropertyChange\"] = \"PropertyChange\";\n})(AllowedInteraction || (AllowedInteraction = {}));\n/**\n * Enum type for export annotation file types\n */\nvar AnnotationDataFormat;\n(function (AnnotationDataFormat) {\n AnnotationDataFormat[\"Json\"] = \"Json\";\n AnnotationDataFormat[\"Xfdf\"] = \"Xfdf\";\n})(AnnotationDataFormat || (AnnotationDataFormat = {}));\n/**\n * Represents the format type of form data.\n */\nvar FormFieldDataFormat;\n(function (FormFieldDataFormat) {\n FormFieldDataFormat[\"Xml\"] = \"Xml\";\n FormFieldDataFormat[\"Fdf\"] = \"Fdf\";\n FormFieldDataFormat[\"Xfdf\"] = \"Xfdf\";\n FormFieldDataFormat[\"Json\"] = \"Json\";\n})(FormFieldDataFormat || (FormFieldDataFormat = {}));\n\n/* eslint-disable */\n/**\n * @hidden\n */\nvar FreeTextAnnotation = /** @__PURE__ @class */ (function () {\n function FreeTextAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.inputBoxCount = 0;\n /**\n * @private\n */\n this.isFreeTextValueChange = false;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.isInuptBoxInFocus = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.freeTextPageNumbers = [];\n /**\n * @private\n */\n this.selectedText = '';\n /**\n * @private\n */\n this.isTextSelected = false;\n this.selectionStart = 0;\n this.selectionEnd = 0;\n /**\n * @private\n */\n this.isBold = false;\n /**\n * @private\n */\n this.isItalic = false;\n /**\n * @private\n */\n this.isUnderline = false;\n /**\n * @private\n */\n this.isStrikethrough = false;\n this.isReadonly = false;\n this.isMaximumWidthReached = false;\n this.freeTextPaddingLeft = 4;\n this.freeTextPaddingTop = 5;\n this.defaultFontSize = 16;\n /**\n * @private\n */\n this.previousText = 'Type Here';\n /**\n * @private\n */\n this.currentPosition = [];\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n this.updateTextProperties();\n this.inputBoxElement = document.createElement('textarea');\n this.inputBoxElement.style.position = 'absolute';\n this.inputBoxElement.style.Width = this.defautWidth;\n this.inputBoxElement.style.Height = this.defaultHeight;\n this.inputBoxElement.style.zIndex = '5';\n this.inputBoxElement.style.fontSize = this.fontSize + 'px';\n this.inputBoxElement.className = 'free-text-input';\n this.inputBoxElement.style.resize = 'none';\n this.inputBoxElement.style.borderColor = this.borderColor;\n this.inputBoxElement.style.background = this.fillColor;\n this.inputBoxElement.style.borderStyle = this.borderStyle;\n this.inputBoxElement.style.borderWidth = this.borderWidth + 'px';\n this.inputBoxElement.style.padding = this.padding;\n this.inputBoxElement.style.paddingLeft = this.freeTextPaddingLeft + 'px';\n this.inputBoxElement.style.paddingTop = this.freeTextPaddingTop * (parseFloat(this.inputBoxElement.style.fontSize) / this.defaultFontSize) + 'px';\n this.inputBoxElement.style.borderRadius = '2px';\n this.inputBoxElement.style.verticalAlign = 'middle';\n this.inputBoxElement.style.fontFamily = this.fontFamily;\n this.inputBoxElement.style.color = this.pdfViewer.freeTextSettings.fontColor ?\n this.pdfViewer.freeTextSettings.fontColor : '#000';\n this.inputBoxElement.style.overflow = 'hidden';\n this.inputBoxElement.style.wordBreak = this.wordBreak;\n this.inputBoxElement.readOnly = this.isReadonly;\n this.inputBoxElement.addEventListener('focusout', this.onFocusOutInputBox.bind(this));\n this.inputBoxElement.addEventListener('keydown', this.onKeyDownInputBox.bind(this));\n this.inputBoxElement.addEventListener('mouseup', this.onMouseUpInputBox.bind(this));\n this.freeTextPageNumbers = [];\n }\n /**\n * @private\n */\n FreeTextAnnotation.prototype.updateTextProperties = function () {\n this.defautWidth = this.pdfViewer.freeTextSettings.width ? this.pdfViewer.freeTextSettings.width : 151;\n this.defaultHeight = this.pdfViewer.freeTextSettings.height ? this.pdfViewer.freeTextSettings.height : 24.6;\n this.borderColor = this.pdfViewer.freeTextSettings.borderColor ? this.pdfViewer.freeTextSettings.borderColor : '#ffffff00';\n this.fillColor = this.pdfViewer.freeTextSettings.fillColor ? this.pdfViewer.freeTextSettings.fillColor : '#fff';\n this.borderStyle = this.pdfViewer.freeTextSettings.borderStyle ? this.pdfViewer.freeTextSettings.borderStyle : 'solid';\n this.borderWidth = this.pdfViewer.freeTextSettings.borderWidth ? this.pdfViewer.freeTextSettings.borderWidth : 1;\n this.fontSize = this.pdfViewer.freeTextSettings.fontSize ? this.pdfViewer.freeTextSettings.fontSize : 16;\n this.opacity = this.pdfViewer.freeTextSettings.opacity ? this.pdfViewer.freeTextSettings.opacity : 1;\n this.fontColor = this.pdfViewer.freeTextSettings.fontColor ? this.pdfViewer.freeTextSettings.fontColor : '#000';\n // eslint-disable-next-line max-len\n this.author = (this.pdfViewer.freeTextSettings.author !== 'Guest') ? this.pdfViewer.freeTextSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n if (!isNullOrUndefined(this.pdfViewer.annotationModule)) {\n if (this.getRgbCode(this.borderColor).a === 0) {\n this.borderWidth = 0;\n }\n }\n if (this.pdfViewer.freeTextSettings.fontFamily) {\n var fontName = this.pdfViewer.freeTextSettings.fontFamily;\n if (fontName === 'Helvetica' || fontName === 'Times New Roman' || fontName === 'Courier' || fontName === 'Symbol' || fontName === 'ZapfDingbats') {\n this.fontFamily = fontName;\n }\n else {\n this.fontFamily = 'Helvetica';\n }\n }\n else {\n this.fontFamily = 'Helvetica';\n }\n this.textAlign = this.pdfViewer.freeTextSettings.textAlignment ? this.pdfViewer.freeTextSettings.textAlignment : 'Left';\n this.defaultText = this.pdfViewer.freeTextSettings.defaultText ? this.pdfViewer.freeTextSettings.defaultText : 'Type here';\n this.isReadonly = false;\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.wordBreak = 'break-all';\n this.padding = '2px';\n }\n else {\n this.padding = '0px';\n this.wordBreak = 'break-word';\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.freeTextSettings.isLock || this.pdfViewer.annotationSettings.isLock || this.pdfViewer.freeTextSettings.isReadonly) {\n this.isReadonly = true;\n }\n if (this.pdfViewer.freeTextSettings.fontStyle === 1) {\n this.isBold = true;\n }\n else if (this.pdfViewer.freeTextSettings.fontStyle === 2) {\n this.isItalic = true;\n }\n else if (this.pdfViewer.freeTextSettings.fontStyle === 4) {\n this.isUnderline = true;\n }\n else if (this.pdfViewer.freeTextSettings.fontStyle === 8) {\n this.isStrikethrough = true;\n }\n else if (3 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isItalic = true;\n }\n else if (5 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isUnderline = true;\n }\n else if (9 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isStrikethrough = true;\n }\n else if (7 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isItalic = true;\n this.isUnderline = true;\n }\n else if (11 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isItalic = true;\n this.isStrikethrough = true;\n }\n else if (14 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isBold = true;\n this.isUnderline = true;\n this.isStrikethrough = true;\n }\n else if (6 === this.pdfViewer.freeTextSettings.fontStyle) {\n this.isUnderline = true;\n this.isItalic = true;\n }\n };\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAction\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.renderFreeTextAnnotations = function (shapeAnnotations, pageNumber, isImportAction) {\n var isFreeTextAdded = false;\n if (!isImportAction) {\n for (var p = 0; p < this.freeTextPageNumbers.length; p++) {\n if (this.freeTextPageNumbers[p] === pageNumber) {\n isFreeTextAdded = true;\n break;\n }\n }\n }\n if (shapeAnnotations && !isFreeTextAdded) {\n if (shapeAnnotations.length >= 1) {\n this.freeTextPageNumbers.push(pageNumber);\n for (var i = 0; i < shapeAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations[i];\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n if (annotation.AnnotType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n var annot = void 0;\n var paddingValue = 0.5;\n var annotationBoundsX = !isNullOrUndefined(annotation.Bounds.X) ? annotation.Bounds.X - paddingValue : annotation.Bounds.x;\n var annotationBoundsY = !isNullOrUndefined(annotation.Bounds.Y) ? annotation.Bounds.Y - paddingValue : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n var isAddedProgramatically = annotation.isAddAnnotationProgramatically ? annotation.isAddAnnotationProgramatically : false;\n var rotateValue = this.getRotationValue(pageNumber, isAddedProgramatically);\n var originalRotation = annotation.Rotate;\n var pageRotate = annotation.PageRotation;\n if (Math.sign(annotation.Rotate) === 1) {\n annotation.Rotate = -annotation.Rotate + rotateValue;\n }\n else {\n annotation.Rotate = annotation.Rotate + rotateValue;\n }\n // eslint-disable-next-line\n var rotateAngle = Math.abs(annotation.Rotate);\n if (isImportAction && rotateValue !== pageRotate) {\n if (this.pdfViewerBase.isJsonImported) {\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n var boundsX = annotation.Bounds.X;\n var boundsY = annotation.Bounds.Y;\n var annotationWidth = width;\n var annotationHeight = height;\n if (pageRotate > 0) {\n var rotatation = pageRotate / 90;\n if (rotatation === 1) {\n height = width;\n width = annotation.Bounds.Height;\n annotationBoundsX = annotation.Bounds.Y;\n if (rotateValue !== 270) {\n annotationBoundsY = pageDetails.height - annotation.Bounds.X - annotation.Bounds.Width;\n }\n else {\n annotationBoundsY = pageDetails.width - annotation.Bounds.X - annotation.Bounds.Width;\n }\n }\n else if (rotatation === 2) {\n if (rotateValue !== 270 && rotateValue !== 90) {\n annotationBoundsX = pageDetails.width - annotation.Bounds.X - annotation.Bounds.Width;\n annotationBoundsY = pageDetails.height - annotation.Bounds.Y - annotation.Bounds.Height;\n }\n else {\n annotationBoundsX = pageDetails.height - annotation.Bounds.X - annotation.Bounds.Width;\n annotationBoundsY = pageDetails.width - annotation.Bounds.Y - annotation.Bounds.Height;\n }\n }\n else if (rotatation === 3) {\n height = width;\n width = annotation.Bounds.Height;\n if (rotateValue !== 90) {\n annotationBoundsX = pageDetails.width - annotation.Bounds.Y - width;\n }\n else {\n annotationBoundsX = pageDetails.height - annotation.Bounds.Y - width;\n }\n annotationBoundsY = annotation.Bounds.X;\n }\n boundsX = annotationBoundsX;\n boundsY = annotationBoundsY;\n annotationWidth = width;\n annotationHeight = height;\n }\n rotateAngle = (rotateValue / 90) % 4;\n if (rotateAngle === 1) {\n height = width;\n width = annotationHeight;\n annotationBoundsX = pageDetails.width - boundsY - annotationHeight - paddingValue;\n annotationBoundsY = boundsX - paddingValue;\n rotateAngle = 90;\n }\n else if (rotateAngle === 2) {\n annotationBoundsX = pageDetails.width - boundsX - annotationWidth - paddingValue;\n annotationBoundsY = pageDetails.height - boundsY - annotationHeight - paddingValue;\n rotateAngle = 180;\n }\n else if (rotateAngle === 3) {\n height = width;\n width = annotationHeight;\n annotationBoundsX = boundsY - paddingValue;\n annotationBoundsY = pageDetails.height - boundsX - height - paddingValue;\n rotateAngle = 270;\n }\n else if (rotateAngle === 0) {\n annotationBoundsX = boundsX - paddingValue;\n annotationBoundsY = boundsY - paddingValue;\n }\n }\n }\n if (rotateAngle === 90 || rotateAngle === 270) {\n var rotationHeight = height;\n var rotationWidth = width;\n height = rotationWidth;\n width = rotationHeight;\n annotationBoundsX = (annotationBoundsX - (width / 2)) + (height / 2);\n annotationBoundsY = (annotationBoundsY) + (width / 2 - height / 2);\n }\n // eslint-disable-next-line\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line\n annot = {\n author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, id: 'freetext' + this.inputBoxCount,\n rotateAngle: annotation.Rotate, dynamicText: annotation.MarkupText, strokeColor: annotation.StrokeColor,\n thickness: annotation.Thickness, fillColor: annotation.FillColor,\n bounds: {\n x: annotationBoundsX, y: annotationBoundsY, left: annotationBoundsX, top: annotationBoundsY,\n width: width, height: height, right: annotation.Bounds.Right,\n bottom: annotation.Bounds.Bottom\n }, annotName: annotation.AnnotName, shapeAnnotationType: 'FreeText',\n // eslint-disable-next-line\n pageIndex: pageNumber, opacity: annotation.Opacity, fontColor: annotation.FontColor, fontSize: annotation.FontSize, pageRotation: rotateValue,\n fontFamily: annotation.FontFamily, notes: annotation.MarkupText, textAlign: annotation.TextAlign,\n // eslint-disable-next-line\n comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n // eslint-disable-next-line max-len\n font: { isBold: annotation.Font.Bold, isItalic: annotation.Font.Italic, isStrikeout: annotation.Font.Strikeout, isUnderline: annotation.Font.Underline },\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings,\n // eslint-disable-next-line\n customData: this.pdfViewer.annotation.getCustomData(annotation), annotationAddMode: annotation.annotationAddMode, allowedInteractions: annotation.allowedInteractions,\n isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock, isReadonly: annotation.IsReadonly,\n isAddAnnotationProgrammatically: isAddedProgramatically\n };\n if (isImportAction) {\n annot.id = annotation.AnnotName;\n annot.previousFontSize = annotation.FontSize ? annotation.FontSize : this.fontSize;\n }\n var addedAnnot = this.pdfViewer.add(annot);\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annot, '_annotations_freetext');\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'FreeText', annot.bounds, settings);\n }\n this.inputBoxCount += 1;\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = true;\n this.pdfViewer.nodePropertyChange(addedAnnot, {});\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else if (this.pdfViewer.freeTextSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.freeTextSettings.annotationSelectorSettings;\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n FreeTextAnnotation.prototype.setAnnotationType = function (type) {\n this.pdfViewerBase.disableTextSelectionMode();\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n switch (type) {\n case 'FreeText':\n this.currentAnnotationMode = 'FreeText';\n this.updateTextProperties();\n // eslint-disable-next-line max-len\n var modifiedDateRect = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: 'FreeText', strokeColor: this.borderColor,\n fillColor: this.fillColor, opacity: this.opacity, notes: '', isCommentLock: false,\n thickness: this.borderWidth, borderDashArray: '0', modifiedDate: modifiedDateRect,\n // eslint-disable-next-line max-len\n author: this.pdfViewer.freeTextSettings.author, subject: 'Text Box', font: { isBold: this.isBold, isItalic: this.isItalic, isStrikeout: this.isStrikethrough, isUnderline: this.isUnderline }, textAlign: this.textAlign\n };\n this.pdfViewer.tool = 'Select';\n break;\n }\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewAdded\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase, isNewAdded) {\n if (!isNullOrUndefined(annotationBase.formFieldAnnotationType) && annotationBase.formFieldAnnotationType !== \"\") {\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n }\n else {\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n }\n if (!isNewAdded) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else if (property === 'fill') {\n pageAnnotations[i].fillColor = annotationBase.wrapper.children[0].style.fill;\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'notes') {\n pageAnnotations[i].note = annotationBase.notes;\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n else if (property === 'dynamicText') {\n pageAnnotations[i].dynamicText = annotationBase.dynamicText;\n }\n else if (property === 'fontColor') {\n pageAnnotations[i].fontColor = annotationBase.fontColor;\n }\n else if (property === 'fontSize') {\n pageAnnotations[i].fontSize = annotationBase.fontSize;\n }\n else if (property === 'fontFamily') {\n pageAnnotations[i].fontFamily = annotationBase.fontFamily;\n }\n else if (property === 'textPropertiesChange') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].font = { isBold: annotationBase.font.isBold, isItalic: annotationBase.font.isItalic, isStrikeout: annotationBase.font.isStrikeout, isUnderline: annotationBase.font.isUnderline };\n }\n else if (property === 'textAlign') {\n pageAnnotations[i].textAlign = annotationBase.textAlign;\n }\n // eslint-disable-next-line max-len\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n FreeTextAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n if (annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n };\n /**\n * @private\n */\n FreeTextAnnotation.prototype.saveFreeTextAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = this.getBoundsBasedOnRotation(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.annotations[z].rotateAngle, pageAnnotationObject.pageIndex, pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n var fillColorString = pageAnnotationObject.annotations[z].fillColor;\n pageAnnotationObject.annotations[z].fillColor = JSON.stringify(this.getRgbCode(fillColorString));\n var fontColorString = pageAnnotationObject.annotations[z].fontColor;\n pageAnnotationObject.annotations[z].fontColor = JSON.stringify(this.getRgbCode(fontColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].vertexPoints = JSON.stringify(pageAnnotationObject.annotations[z].vertexPoints);\n if (pageAnnotationObject.annotations[z].rectangleDifference !== null) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].rectangleDifference = JSON.stringify(pageAnnotationObject.annotations[z].rectangleDifference);\n }\n pageAnnotationObject.annotations[z].padding = this.getPaddingValues(this.fontSize);\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getRotationValue = function (pageIndex, isAddedProgrammatically) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (!isNullOrUndefined(isAddedProgrammatically) && isAddedProgrammatically) {\n return 0;\n }\n else {\n if (pageDetails.rotation === 0) {\n return 0;\n }\n else if (pageDetails.rotation === 1) {\n return 90;\n }\n else if (pageDetails.rotation === 2) {\n return 180;\n }\n else if (pageDetails.rotation === 3) {\n return 270;\n }\n return 0;\n }\n };\n FreeTextAnnotation.prototype.getBoundsBasedOnRotation = function (bounds, rotateAngle, pageIndex, annotation, isAddedProgrammatically) {\n var rotateValue = this.getRotationValue(pageIndex, isAddedProgrammatically);\n var paddingValue = 0.5;\n annotation.rotateAngle = rotateAngle - rotateValue;\n annotation.pageRotation = rotateValue;\n if (rotateAngle === 90 || rotateAngle === -90 || rotateAngle === 270 || rotateAngle === -270) {\n var x = bounds.left + (bounds.width / 2) - (bounds.height / 2);\n var y = bounds.top - (bounds.width / 2 - bounds.height / 2);\n return { x: x + paddingValue, y: y + paddingValue, left: x + paddingValue, top: y + paddingValue, width: bounds.height, height: bounds.width };\n }\n else {\n return { x: bounds.left + paddingValue, y: bounds.top + paddingValue, left: bounds.left + paddingValue, top: bounds.top + paddingValue, width: bounds.width, height: bounds.height };\n }\n };\n FreeTextAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_freetext', annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_freetext'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseInt(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.onFocusOutInputBox = function () {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n if (!this.pdfViewerBase.isFreeTextContextMenu) {\n this.pdfViewer.fireBeforeAddFreeTextAnnotation(this.inputBoxElement.value);\n // eslint-disable-next-line\n var pageIndex = this.inputBoxElement.id && this.inputBoxElement.id.split(\"_freeText_\")[1] && this.inputBoxElement.id.split(\"_freeText_\")[1].split(\"_\")[0] ? parseFloat(this.inputBoxElement.id.split(\"_freeText_\")[1].split(\"_\")[0]) : this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var width = parseFloat(this.inputBoxElement.style.width);\n var padding = parseFloat(this.inputBoxElement.style.paddingLeft);\n if (this.pdfViewer.freeTextSettings.enableAutoFit && !this.isMaximumWidthReached && !this.isNewFreeTextAnnot) {\n var fontsize = parseFloat(this.inputBoxElement.style.fontSize);\n this.inputBoxElement.style.width = ((width + padding) - fontsize) + 'px';\n }\n if (this.pdfViewer.freeTextSettings.enableAutoFit && !this.isMaximumWidthReached && this.isNewFreeTextAnnot) {\n width = parseFloat(this.inputBoxElement.style.width);\n var characterLength = 8;\n this.inputBoxElement.style.width = (width - characterLength) + 'px';\n }\n var inputEleHeight = parseFloat(this.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n var inputEleLeft = parseFloat(this.inputBoxElement.style.left);\n if (this.pdfViewerBase.isMixedSizeDocument) {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n inputEleLeft = inputEleLeft - canvas.offsetLeft;\n }\n var inputEleTop = parseFloat(this.inputBoxElement.style.top);\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n if (this.pdfViewer.isValidFreeText) {\n this.inputBoxElement.value = 'Type Here';\n this.pdfViewer.isValidFreeText = false;\n }\n var inputValue = this.inputBoxElement.value;\n var isNewlyAdded = false;\n if (this.isNewFreeTextAnnot === true) {\n // eslint-disable-next-line max-len\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.isNewFreeTextAnnot = false;\n isNewlyAdded = true;\n var annot = void 0;\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('freeText', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n // eslint-disable-next-line\n var annotationSelectorSettings = this.pdfViewer.freeTextSettings.annotationSelectorSettings ? this.pdfViewer.freeTextSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n // eslint-disable-next-line\n this.author = this.author ? this.author : this.pdfViewer.freeTextSettings.author ? this.pdfViewer.freeTextSettings.author : 'Guest';\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.freeTextSettings.allowedInteractions ? this.pdfViewer.freeTextSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n // eslint-disable-next-line\n annot = {\n author: this.author, modifiedDate: currentDateString, subject: 'Text Box', id: 'free_text' + this.inputBoxCount,\n // eslint-disable-next-line max-len\n rotateAngle: 0, dynamicText: inputValue, strokeColor: this.borderColor, thickness: this.borderWidth, fillColor: this.fillColor,\n bounds: {\n left: inputEleLeft / zoomFactor, top: inputEleTop / zoomFactor, x: inputEleLeft / zoomFactor,\n y: inputEleTop / zoomFactor, width: inputEleWidth / zoomFactor, height: inputEleHeight / zoomFactor\n }, annotName: annotationName,\n shapeAnnotationType: 'FreeText', pageIndex: pageIndex, fontColor: this.fontColor, fontSize: this.fontSize,\n fontFamily: this.fontFamily, opacity: this.opacity, comments: [], textAlign: this.textAlign,\n // eslint-disable-next-line max-len\n font: { isBold: this.isBold, isItalic: this.isItalic, isStrikeout: this.isStrikethrough, isUnderline: this.isUnderline },\n review: { state: 'Unmarked', stateModel: 'None', modifiedDate: currentDateString, author: this.author },\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: annotationSettings,\n customData: this.pdfViewer.annotationModule.getData('FreeText'), isPrint: this.pdfViewer.freeTextSettings.isPrint,\n allowedInteractions: allowedInteractions, isReadonly: this.isReadonly\n };\n if (this.pdfViewer.enableRtl) {\n annot.textAlign = 'Right';\n }\n var annotation = this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var bounds = { left: annot.bounds.x, top: annot.bounds.y, width: annot.bounds.width, height: annot.bounds.height };\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.annotation.storeAnnotations(pageIndex, annot, '_annotations_freetext');\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'FreeText', bounds, settings);\n // eslint-disable-next-line\n this.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n this.pdfViewer.renderSelector(annot.pageIndex);\n this.pdfViewer.clearSelection(annot.pageIndex);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.selectedAnnotation = annotation;\n }\n this.isInuptBoxInFocus = false;\n // eslint-disable-next-line\n if (this.selectedAnnotation && this.pdfViewer.selectedItems.annotations) {\n inputEleWidth = (inputEleWidth / zoomFactor);\n inputEleHeight = (inputEleHeight / zoomFactor);\n var heightDiff = (inputEleHeight - this.selectedAnnotation.bounds.height);\n var y = undefined;\n if (heightDiff > 0) {\n y = this.selectedAnnotation.wrapper.offsetY + (heightDiff / 2);\n y = y > 0 ? y : undefined;\n }\n var widthDiff = (inputEleWidth - this.selectedAnnotation.bounds.width);\n var x = undefined;\n if (widthDiff > 0) {\n x = this.selectedAnnotation.wrapper.offsetX + (widthDiff / 2);\n x = x > 0 ? x : undefined;\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x = this.selectedAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n this.selectedAnnotation.bounds.width = inputEleWidth;\n this.selectedAnnotation.bounds.height = inputEleHeight;\n var lineSpace = 0;\n lineSpace = ((parseFloat(this.inputBoxElement.style.fontSize) / zoomFactor) / (this.defaultFontSize / 2));\n this.selectedAnnotation.wrapper.children[1].margin.left = this.freeTextPaddingLeft;\n this.selectedAnnotation.wrapper.children[1].margin.top = ((parseFloat(this.inputBoxElement.style.paddingTop) / zoomFactor)) + lineSpace;\n this.pdfViewer.annotation.modifyDynamicTextValue(inputValue, this.selectedAnnotation.annotName);\n this.selectedAnnotation.dynamicText = inputValue;\n this.modifyInCollection('dynamicText', pageIndex, this.selectedAnnotation, isNewlyAdded);\n this.modifyInCollection('bounds', pageIndex, this.selectedAnnotation, isNewlyAdded);\n // eslint-disable-next-line\n this.pdfViewer.nodePropertyChange(this.selectedAnnotation, { bounds: { width: this.selectedAnnotation.bounds.width, height: this.selectedAnnotation.bounds.height, y: y, x: x } });\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(this.selectedAnnotation.annotName);\n if (commentsDiv && commentsDiv.childNodes) {\n if (commentsDiv.childNodes[0].ej2_instances) {\n commentsDiv.childNodes[0].ej2_instances[0].value = inputValue;\n }\n else if (commentsDiv.childNodes[0].childNodes && commentsDiv.childNodes[0].childNodes[1].ej2_instances) {\n commentsDiv.childNodes[0].childNodes[1].ej2_instances[0].value = inputValue;\n }\n }\n this.pdfViewer.renderSelector(this.selectedAnnotation.pageIndex, this.selectedAnnotation.annotationSelectorSettings);\n }\n if (this.inputBoxElement.parentElement) {\n if (pageDiv && (pageDiv.id === this.inputBoxElement.parentElement.id)) {\n pageDiv.removeChild(this.inputBoxElement);\n }\n else {\n this.inputBoxElement.parentElement.removeChild(this.inputBoxElement);\n }\n }\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, pageIndex);\n this.inputBoxCount += 1;\n if (!isNewlyAdded && this.previousText !== inputValue) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.triggerAnnotationPropChange(this.selectedAnnotation, false, false, false, false, false, false, false, true, this.previousText, inputValue);\n }\n }\n else {\n this.inputBoxElement.focus();\n if (!this.isTextSelected) {\n window.getSelection().removeAllRanges();\n }\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @param event\n * @private\n */\n FreeTextAnnotation.prototype.onKeyDownInputBox = function (event) {\n var inuptEleObj = this;\n if (event.which === 9 || (isNullOrUndefined(this.pdfViewer.selectedItems.annotations[0]) && !this.isNewFreeTextAnnot)) {\n event.preventDefault();\n }\n this.selectedAnnotation = this.pdfViewer.selectedItems.annotations && this.isNewFreeTextAnnot ? this.pdfViewer.selectedItems.annotations[0]\n : this.selectedAnnotation;\n setTimeout(function () {\n if (inuptEleObj.defaultHeight < inuptEleObj.inputBoxElement.scrollHeight\n // eslint-disable-next-line radix\n && parseInt(inuptEleObj.inputBoxElement.style.height) < inuptEleObj.inputBoxElement.scrollHeight) {\n inuptEleObj.updateFreeTextAnnotationSize(true);\n }\n else {\n inuptEleObj.updateFreeTextAnnotationSize(false);\n }\n // eslint-disable-next-line\n }, 0);\n };\n FreeTextAnnotation.prototype.updateFreeTextAnnotationSize = function (isSize) {\n var inuptEleObj = this;\n var enableAutoFit = inuptEleObj.pdfViewer.freeTextSettings.enableAutoFit;\n if (enableAutoFit) {\n this.autoFitFreeText();\n }\n else {\n this.isMaximumWidthReached = true;\n }\n if (this.isMaximumWidthReached) {\n // eslint-disable-next-line max-len\n var previousHeight = inuptEleObj.inputBoxElement.getBoundingClientRect().height;\n if (!isSize && !inuptEleObj.inputBoxElement.readOnly) {\n inuptEleObj.inputBoxElement.style.height = 'auto';\n }\n var currentHeight = inuptEleObj.inputBoxElement.getBoundingClientRect().height;\n var difference = currentHeight - previousHeight;\n var fontSize = parseFloat(inuptEleObj.inputBoxElement.style.fontSize);\n // eslint-disable-next-line max-len\n inuptEleObj.inputBoxElement.style.height = inuptEleObj.inputBoxElement.readOnly ? inuptEleObj.inputBoxElement.style.height : inuptEleObj.inputBoxElement.scrollHeight + (fontSize / 2) + 'px';\n inuptEleObj.inputBoxElement.style.height = (difference < 0 && !inuptEleObj.inputBoxElement.readOnly) ? (previousHeight + 'px') : inuptEleObj.inputBoxElement.style.height;\n }\n var zoomFactor = inuptEleObj.pdfViewerBase.getZoomFactor();\n var inputEleHeight = parseFloat(this.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n inputEleHeight = ((inputEleHeight) / zoomFactor);\n inputEleWidth = ((inputEleWidth) / zoomFactor);\n if (this.selectedAnnotation) {\n var heightDiff = (inputEleHeight - inuptEleObj.selectedAnnotation.bounds.height);\n var y = 0;\n if (heightDiff > 0) {\n y = inuptEleObj.selectedAnnotation.wrapper.offsetY + (heightDiff / 2);\n }\n else {\n heightDiff = Math.abs(heightDiff);\n y = inuptEleObj.selectedAnnotation.wrapper.offsetY - (heightDiff / 2);\n }\n if (enableAutoFit) {\n var widthDiff = (inputEleWidth - inuptEleObj.selectedAnnotation.bounds.width);\n var x = 0;\n if (widthDiff > 0) {\n x = inuptEleObj.selectedAnnotation.wrapper.offsetX + (widthDiff / 2);\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x = inuptEleObj.selectedAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n }\n inuptEleObj.selectedAnnotation.bounds.width = inputEleWidth;\n inuptEleObj.selectedAnnotation.bounds.height = inputEleHeight;\n if (enableAutoFit) {\n // eslint-disable-next-line\n inuptEleObj.pdfViewer.nodePropertyChange(inuptEleObj.selectedAnnotation, { bounds: { width: inuptEleObj.selectedAnnotation.bounds.width, height: inuptEleObj.selectedAnnotation.bounds.height, y: y, x: x } });\n }\n else {\n // eslint-disable-next-line\n inuptEleObj.pdfViewer.nodePropertyChange(inuptEleObj.selectedAnnotation, { bounds: { width: inuptEleObj.selectedAnnotation.bounds.width, height: inuptEleObj.selectedAnnotation.bounds.height, y: y } });\n }\n inuptEleObj.pdfViewer.renderSelector(inuptEleObj.selectedAnnotation.pageIndex, this.selectedAnnotation.annotationSelectorSettings);\n }\n };\n /**\n * @param event\n * @private\n */\n FreeTextAnnotation.prototype.autoFitFreeText = function (xPosition, yPosition) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n // eslint-disable-next-line\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var context = canvas.getContext(\"2d\");\n // eslint-disable-next-line\n var fontSize = this.inputBoxElement.style.fontSize;\n if (this.pdfViewer.freeTextSettings.fontStyle === FontStyle.Bold || this.inputBoxElement.style.fontWeight === 'bold') {\n context.font = 'bold' + ' ' + fontSize + ' ' + this.inputBoxElement.style.fontFamily;\n }\n else {\n context.font = fontSize + ' ' + this.inputBoxElement.style.fontFamily;\n }\n var highestTextNode = \"\";\n // eslint-disable-next-line\n var textNodes = [];\n var textboxValue = this.inputBoxElement.value;\n if (textboxValue.indexOf('\\n') > -1) {\n textNodes = textboxValue.split('\\n');\n for (var j = 0; j < textNodes.length; j++) {\n // eslint-disable-next-line\n var textNodeData = context.measureText(textNodes[j]);\n // eslint-disable-next-line\n var highestTextNodeData = context.measureText(highestTextNode);\n if (textNodeData.width > highestTextNodeData.width) {\n highestTextNode = textNodes[j];\n }\n }\n this.isMaximumWidthReached = true;\n }\n else {\n highestTextNode = textboxValue;\n this.isMaximumWidthReached = false;\n }\n // eslint-disable-next-line\n var textwidth = context.measureText(highestTextNode);\n fontSize = parseFloat(this.inputBoxElement.style.fontSize);\n var inputEleWidth;\n var characterLength = 8;\n var inputEleHeight = (fontSize + (fontSize / 2));\n if (this.isNewFreeTextAnnot) {\n inputEleWidth = Math.ceil(textwidth.width + ((characterLength + 1) * 2));\n this.inputBoxElement.style.height = inputEleHeight + 'px';\n this.inputBoxElement.style.top = (yPosition) - (inputEleHeight / 2) + 'px';\n }\n else {\n inputEleWidth = Math.ceil(textwidth.width) + fontSize + Math.ceil(characterLength / 2);\n }\n if (!xPosition) {\n this.inputBoxElement.style.height = inputEleHeight + 'px';\n }\n this.inputBoxElement.style.width = inputEleWidth + 'px';\n var maxWidth = this.pdfViewerBase.getPageWidth(pageIndex) - parseFloat(this.inputBoxElement.style.left);\n if (parseFloat(this.inputBoxElement.style.width) > maxWidth) {\n this.isMaximumWidthReached = true;\n if (this.isNewAddedAnnot && xPosition) {\n inputEleWidth = inputEleWidth - characterLength;\n this.inputBoxElement.style.width = inputEleWidth + 'px';\n var width = xPosition + (inputEleWidth * this.pdfViewerBase.getZoomFactor());\n var x = parseFloat(this.inputBoxElement.style.left);\n if (width >= this.pdfViewerBase.getPageWidth(pageIndex)) {\n x = this.pdfViewerBase.getPageWidth(pageIndex) - inputEleWidth;\n }\n this.inputBoxElement.style.left = x + 'px';\n }\n else {\n this.inputBoxElement.style.width = maxWidth + 'px';\n }\n }\n };\n /**\n * @param event\n * @private\n */\n FreeTextAnnotation.prototype.onMouseUpInputBox = function (event) {\n // eslint-disable-next-line\n var target = event.target;\n this.selectionStart = 0;\n this.selectionEnd = 0;\n if (event.which === 3 && target) {\n this.selectionStart = target.selectionStart;\n this.selectionEnd = target.selectionEnd;\n }\n if (event.which === 3 && window.getSelection() != null && window.getSelection().toString() !== '') {\n this.isTextSelected = true;\n }\n else {\n this.isTextSelected = false;\n }\n };\n /**\n * @param currentPosition\n * @param annotation\n * @param pageIndex\n * @private\n */\n FreeTextAnnotation.prototype.addInuptElemet = function (currentPosition, annotation, pageIndex) {\n if (annotation === void 0) { annotation = null; }\n this.currentPosition = [];\n if (isNullOrUndefined(pageIndex)) {\n pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n }\n if (annotation) {\n pageIndex = annotation.pageIndex;\n }\n if (isBlazor() && annotation === null && this.pdfViewer.selectedItems.annotations.length === 0) {\n this.updateTextProperties();\n }\n this.inputBoxElement.id = this.pdfViewer.element.id + '_freeText_' + pageIndex + '_' + this.inputBoxCount;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n this.inputBoxElement.value = (annotation && annotation.dynamicText) ? annotation.dynamicText : this.defaultText;\n this.inputBoxElement.style.boxSizing = 'border-box';\n this.inputBoxElement.style.left = ((currentPosition.x)) + 'px';\n this.inputBoxElement.style.top = ((currentPosition.y)) - ((this.defaultHeight * zoomFactor) / 2) + 'px';\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.inputBoxElement.style.wordBreak = 'break-all';\n }\n else {\n this.inputBoxElement.style.wordBreak = 'break-word';\n }\n if (annotation) {\n this.applyFreetextStyles(zoomFactor, annotation.isReadonly);\n }\n else {\n this.applyFreetextStyles(zoomFactor);\n }\n if (this.isBold) {\n this.inputBoxElement.style.fontWeight = 'bold';\n }\n else {\n this.inputBoxElement.style.fontWeight = 'normal';\n }\n if (this.isItalic) {\n this.inputBoxElement.style.fontStyle = 'italic';\n }\n else {\n this.inputBoxElement.style.fontStyle = 'normal';\n }\n this.inputBoxElement.style.textDecoration = 'none';\n if (this.isUnderline) {\n this.inputBoxElement.style.textDecoration = 'underline';\n }\n if (this.isStrikethrough) {\n this.inputBoxElement.style.textDecoration = 'line-through';\n }\n if (this.pdfViewer.enableRtl) {\n this.inputBoxElement.style.textAlign = 'right';\n this.inputBoxElement.style.direction = 'rtl';\n this.inputBoxElement.style.left = ((currentPosition.x)) - ((this.defautWidth * zoomFactor / 2));\n }\n else {\n this.inputBoxElement.style.textAlign = this.textAlign.toLowerCase();\n }\n this.inputBoxElement.style.borderColor = this.borderColor;\n this.inputBoxElement.style.color = this.fontColor;\n this.inputBoxElement.style.background = this.fillColor;\n if (annotation && annotation.wrapper && annotation.wrapper.children[0]) {\n this.inputBoxElement.style.opacity = annotation.wrapper.children[0].style.opacity;\n }\n if (this.isNewFreeTextAnnot === true) {\n this.pdfViewer.clearSelection(pageIndex);\n }\n if (annotation && annotation.wrapper && annotation.wrapper.bounds) {\n var annotationBounds = annotation.wrapper.bounds;\n if (annotationBounds.left) {\n this.inputBoxElement.style.left = ((annotationBounds.left) * zoomFactor) + 'px';\n }\n if (annotationBounds.top) {\n this.inputBoxElement.style.top = ((annotationBounds.top) * zoomFactor) + 'px';\n }\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.height = annotationBounds.height ? (annotationBounds.height * zoomFactor) + 'px' : (this.defaultHeight * zoomFactor) + 'px';\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.width = annotationBounds.width ? (annotationBounds.width * zoomFactor) + 'px' : (this.defautWidth * zoomFactor) + 'px';\n this.selectedAnnotation = annotation;\n this.previousText = this.selectedAnnotation.dynamicText;\n this.selectedAnnotation.dynamicText = '';\n this.inputBoxElement.style.borderColor = this.selectedAnnotation.strokeColor;\n this.inputBoxElement.style.color = this.selectedAnnotation.fontColor;\n this.inputBoxElement.style.background = this.selectedAnnotation.fillColor;\n if (this.selectedAnnotation.font.isBold === true) {\n this.inputBoxElement.style.fontWeight = 'bold';\n }\n if (this.selectedAnnotation.font.isItalic === true) {\n this.inputBoxElement.style.fontStyle = 'italic';\n }\n if (this.selectedAnnotation.font.isUnderline === true) {\n this.inputBoxElement.style.textDecoration = 'underline';\n }\n if (this.selectedAnnotation.font.isStrikeout === true) {\n this.inputBoxElement.style.textDecoration = 'line-through';\n }\n if (this.pdfViewer.enableRtl) {\n this.inputBoxElement.style.textAlign = 'right';\n this.inputBoxElement.style.direction = 'rtl';\n }\n else if (this.selectedAnnotation.textAlign) {\n this.inputBoxElement.style.textAlign = this.selectedAnnotation.textAlign;\n }\n this.inputBoxElement.style.fontSize = (this.selectedAnnotation.fontSize * zoomFactor) + 'px';\n this.inputBoxElement.style.fontFamily = this.selectedAnnotation.fontFamily;\n this.pdfViewer.nodePropertyChange(this.selectedAnnotation, {});\n }\n if (this.pdfViewerBase.isMixedSizeDocument) {\n this.inputBoxElement.style.left = (parseFloat(this.inputBoxElement.style.left)) + canvass.offsetLeft + 'px';\n }\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.autoFitFreeText(currentPosition.x, currentPosition.y);\n }\n this.inputBoxElement.style.paddingLeft = (this.freeTextPaddingLeft * zoomFactor) + 'px';\n this.inputBoxElement.style.paddingTop = (this.freeTextPaddingTop * ((parseFloat(this.inputBoxElement.style.fontSize) / zoomFactor) / this.defaultFontSize) / zoomFactor) + 'px';\n var lineSpace = 0;\n lineSpace = ((parseFloat(this.inputBoxElement.style.fontSize) / zoomFactor) / (this.defaultFontSize / 2));\n this.inputBoxElement.style.paddingTop = ((parseFloat(this.inputBoxElement.style.paddingTop)) - lineSpace) + 'px';\n pageDiv.appendChild(this.inputBoxElement);\n // eslint-disable-next-line\n if (!this.pdfViewer.freeTextSettings.enableAutoFit && (this.defaultHeight * zoomFactor) < this.inputBoxElement.scrollHeight && parseInt(this.inputBoxElement.style.height) < this.inputBoxElement.scrollHeight) {\n this.inputBoxElement.style.height = this.inputBoxElement.scrollHeight + 'px';\n this.inputBoxElement.style.top = ((currentPosition.y)) - (parseFloat(this.inputBoxElement.style.height) / 2) + 'px';\n }\n this.isInuptBoxInFocus = true;\n this.inputBoxElement.focus();\n if (this.isNewFreeTextAnnot === true || this.inputBoxElement.value === this.defaultText) {\n this.inputBoxElement.select();\n this.pdfViewerBase.isFreeTextSelected = true;\n }\n this.currentPosition.push(parseInt(this.inputBoxElement.style.left) / zoomFactor, parseInt(this.inputBoxElement.style.top) / zoomFactor, parseInt(this.inputBoxElement.style.width) / zoomFactor, parseInt(this.inputBoxElement.style.height) / zoomFactor);\n };\n FreeTextAnnotation.prototype.applyFreetextStyles = function (zoomFactor, isReadonly) {\n this.inputBoxElement.style.height = (this.defaultHeight * zoomFactor) + 'px';\n this.inputBoxElement.style.width = (this.defautWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.borderWidth = (this.borderWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.fontSize = (this.fontSize * zoomFactor) + 'px';\n this.inputBoxElement.style.fontFamily = this.fontFamily;\n this.inputBoxElement.readOnly = isNullOrUndefined(isReadonly) ? this.isReadonly : isReadonly;\n };\n /**\n * @private\n */\n FreeTextAnnotation.prototype.copySelectedText = function () {\n if (window.getSelection() !== null) {\n this.selectedText = window.getSelection().toString();\n var textArea = document.createElement('textarea');\n textArea.contentEditable = 'true';\n textArea.textContent = this.selectedText;\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('copy');\n }\n catch (ex) {\n console.warn('Copy to clipboard failed.', ex);\n }\n finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n }\n };\n /**\n * @param target\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.pasteSelectedText = function (target) {\n if (this.selectedText !== '' && target) {\n // eslint-disable-next-line\n var text = target.value;\n target.value = text.slice(0, this.selectionStart) + this.selectedText + text.slice(this.selectionEnd, text.length);\n }\n // eslint-disable-next-line\n var events = event;\n this.onKeyDownInputBox(events);\n };\n /**\n * @param target\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.cutSelectedText = function (target) {\n if (window.getSelection() !== null) {\n // eslint-disable-next-line\n var text = target.value;\n this.selectedText = window.getSelection().toString();\n target.value = text.slice(0, target.selectionStart) + text.slice(target.selectionEnd);\n var textArea = document.createElement('textarea');\n textArea.contentEditable = 'true';\n textArea.textContent = this.selectedText;\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('cut');\n }\n catch (ex) {\n console.warn('Copy to clipboard failed.', ex);\n }\n finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n }\n };\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.saveImportedFreeTextAnnotations = function (shapeAnnotations, pageNumber) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations;\n if (annotation.AnnotType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n var annot = void 0;\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var annotationBoundsX = !isNullOrUndefined(annotation.Bounds.X) ? annotation.Bounds.X : annotation.Bounds.x;\n var annotationBoundsY = !isNullOrUndefined(annotation.Bounds.Y) ? annotation.Bounds.Y : annotation.Bounds.y;\n var annotationBoundsWidth = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var annotationBoundsHeight = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n // eslint-disable-next-line\n annot = {\n author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, id: 'freetext',\n rotateAngle: annotation.Rotate, dynamicText: annotation.MarkupText, strokeColor: annotation.StrokeColor,\n thickness: annotation.Thickness, fillColor: annotation.FillColor,\n bounds: {\n x: annotationBoundsX, y: annotationBoundsY, left: annotationBoundsX, top: annotationBoundsY,\n width: annotationBoundsWidth, height: annotationBoundsHeight, right: annotation.Bounds.Right,\n bottom: annotation.Bounds.Bottom\n }, annotName: annotation.AnnotName, shapeAnnotationType: 'FreeText',\n // eslint-disable-next-line\n pageIndex: pageNumber, opacity: annotation.Opacity, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n fontFamily: annotation.FontFamily, notes: annotation.MarkupText, textAlign: annotation.TextAlign,\n // eslint-disable-next-line\n comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n font: { isBold: annotation.Font.Bold, isItalic: annotation.Font.Italic, isStrikeout: annotation.Font.Strikeout, isUnderline: annotation.Font.Underline },\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings,\n // eslint-disable-next-line max-len\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock, isReadonly: annotation.IsReadonly\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annot, '_annotations_freetext');\n }\n };\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n FreeTextAnnotation.prototype.updateFreeTextAnnotationCollections = function (shapeAnnotations, pageNumber) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations;\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n if (annotation.AnnotType) {\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var annotationBoundsX = annotation.Bounds.X ? annotation.Bounds.X : annotation.Bounds.x;\n var annotationBoundsY = annotation.Bounds.Y ? annotation.Bounds.Y : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n // eslint-disable-next-line\n var annot = void 0;\n // eslint-disable-next-line\n annot = {\n author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, id: 'freetext',\n rotateAngle: annotation.Rotate, dynamicText: annotation.MarkupText, strokeColor: annotation.StrokeColor,\n thickness: annotation.Thickness, fillColor: annotation.FillColor,\n bounds: {\n x: annotationBoundsX, y: annotationBoundsY, left: annotationBoundsX, top: annotationBoundsY,\n width: width, height: height, right: annotation.Bounds.Right,\n bottom: annotation.Bounds.Bottom\n }, annotationId: annotation.AnnotName, shapeAnnotationType: 'FreeText',\n // eslint-disable-next-line\n pageIndex: pageNumber, opacity: annotation.Opacity, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n fontFamily: annotation.FontFamily, notes: annotation.MarkupText,\n // eslint-disable-next-line\n comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n customData: this.pdfViewer.annotation.getCustomData(annotation),\n font: { isBold: annotation.Font.Bold, isItalic: annotation.Font.Italic, isStrikeout: annotation.Font.Strikeout, isUnderline: annotation.Font.Underline }, pageNumber: pageNumber, annotationSettings: annotation.AnnotationSettings, isCommentLock: annotation.IsCommentLock, isReadonly: annotation.IsReadonly, isPrint: annotation.IsPrint,\n };\n return annot;\n }\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes type of annotation\n * @param offset - It describes about the annotation bounds\n * @returns Object\n * @private\n */\n FreeTextAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 1, y: 1 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 1, y: 1 };\n else\n offset = annotationObject.offset;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n var fontStyle = annotationObject.fontStyle ? annotationObject.fontStyle : FontStyle.None;\n //Creating annotation settings\n var annotationSelectorSettings = this.pdfViewer.freeTextSettings.annotationSelectorSettings ? this.pdfViewer.freeTextSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.freeTextSettings);\n var allowedInteractions = this.pdfViewer.freeTextSettings.allowedInteractions ? this.pdfViewer.freeTextSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n annotationObject.width = annotationObject.width ? annotationObject.width : 150;\n annotationObject.height = annotationObject.height ? annotationObject.height : 24.6;\n //Creating Annotation objects with it's proper properties\n var freeTextAnnotation = [];\n var freeText = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'freeText',\n AnnotationFlags: 'Default',\n AnnotationIntent: null,\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Border: { HorizontalRadius: 0, VerticalRadius: 0, Width: annotationObject.borderWidth ? annotationObject.borderWidth : 1 },\n BorderColor: { IsEmpty: true, B: 255, Blue: 1, C: 0, G: 255 },\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Right: offset.x + annotationObject.width, Bottom: offset.y + annotationObject.height },\n CalloutLines: null,\n Color: { IsEmpty: false, B: 51, Blue: 0.2, C: 0, G: 255 },\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n FillColor: annotationObject.fillColor ? annotationObject.fillColor : '#ffffff00',\n Flatten: false,\n FlattenPopups: false,\n Font: { Bold: fontStyle == FontStyle.Bold ? true : false, Italic: fontStyle == FontStyle.Italic ? true : false, Strikeout: fontStyle == FontStyle.Strikethrough ? true : false, Underline: fontStyle == FontStyle.Underline ? true : false },\n FontColor: annotationObject.fontColor ? annotationObject.fontColor : '#000',\n FontFamily: annotationObject.fontFamily ? annotationObject.fontFamily : 'Helvetica',\n FontSize: annotationObject.fontSize ? annotationObject.fontSize : 16,\n FreeTextAnnotationType: 'Text Box',\n InnerColor: null,\n IsCommentLock: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: (annotationObject.isPrint !== null && annotationObject.isPrint !== undefined) ? annotationObject.isPrint : true,\n Layer: null,\n LineEndingStyle: 'OpenArrow',\n Location: null,\n MarkupText: annotationObject.defaultText ? annotationObject.defaultText : 'Type Here',\n ModifiedDate: currentDateString,\n Name: annotationName,\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Page: null,\n PageTags: null,\n ReviewHistory: null,\n Rotate: 0,\n IsReadonly: annotationObject.isReadonly ? annotationObject.isReadonly : false,\n State: 'Unmarked',\n StateModel: 'None',\n StrokeColor: annotationObject.borderColor ? annotationObject.borderColor : '#ffffff00',\n Subject: 'Text Box',\n Text: annotationObject.defaultText ? annotationObject.defaultText : 'Type Here',\n TextAlign: annotationObject.textAlignment ? annotationObject.textAlignment : 'Left',\n TextMarkupColor: null,\n Thickness: annotationObject.borderWidth ? annotationObject.borderWidth : 1,\n isAddAnnotationProgramatically: true\n };\n //Adding the annotation object to an array and return it\n freeTextAnnotation[0] = freeText;\n return { freeTextAnnotation: freeTextAnnotation };\n };\n /**\n * This method used to get the padding.\n */\n FreeTextAnnotation.prototype.getPaddingValues = function (fontSize) {\n var leftPadding = 4; // Left padding used in the drawing.js\n var topPadding = 5; // Top padding used in the drawing.js\n var inputBoxpadding = 2; // we have set the input box padding for the free text.\n topPadding = (topPadding - inputBoxpadding) * (fontSize / 16);\n return [leftPadding, topPadding];\n };\n /**\n * @private\n * This method used tp get the current position of x and y.\n */\n FreeTextAnnotation.prototype.addInputInZoom = function (currentPosition) {\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n this.inputBoxElement.style.left = (currentPosition.x * zoomFactor) + 'px';\n this.inputBoxElement.style.top = (currentPosition.y * zoomFactor) + 'px';\n this.inputBoxElement.style.height = (currentPosition.height * zoomFactor) + 'px';\n this.inputBoxElement.style.width = (currentPosition.width * zoomFactor) + 'px';\n this.inputBoxElement.style.borderWidth = (this.borderWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.fontSize = (this.fontSize * zoomFactor) + 'px';\n };\n return FreeTextAnnotation;\n}());\n\n/**\n * @hidden\n */\nvar InputElement = /** @__PURE__ @class */ (function () {\n function InputElement(pdfviewer, pdfViewerBase) {\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n this.inputBoxElement = document.createElement('input');\n this.inputBoxElement.addEventListener('focusout', this.onFocusOutInputBox.bind(this));\n this.maxHeight = 24.6;\n this.maxWidth = 151;\n this.fontSize = 16;\n this.isInFocus = false;\n this.inputBoxElement.style.position = 'absolute';\n this.inputBoxElement.style.fontFamily = 'Helvetica';\n }\n /**\n * @param currentPosition\n * @param annotation\n * @private\n */\n InputElement.prototype.editLabel = function (currentPosition, annotation) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n this.inputBoxElement.value = annotation.labelContent;\n this.inputBoxElement.select();\n annotation.labelContent = '';\n this.pdfViewer.nodePropertyChange(annotation, {});\n this.inputBoxElement.style.left = ((currentPosition.x) * zoomFactor) + 'px';\n this.inputBoxElement.style.top = ((currentPosition.y) * zoomFactor) + 'px';\n this.inputBoxElement.style.maxHeight = (this.maxHeight * zoomFactor) + 'px';\n this.inputBoxElement.style.maxWidth = (this.maxWidth * zoomFactor) + 'px';\n this.inputBoxElement.style.fontSize = (this.fontSize * zoomFactor) + 'px';\n this.inputBoxElement.style.textAlign = 'center';\n if (annotation && annotation.wrapper && annotation.wrapper.bounds) {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.width = annotation.wrapper.bounds.width ? (annotation.wrapper.bounds.width / 2 * zoomFactor) + 1 + 'px' : (this.maxWidth * zoomFactor) + 'px';\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n inputEleWidth = inputEleWidth > (this.maxWidth * zoomFactor) ? (this.maxWidth * zoomFactor) : inputEleWidth;\n if (annotation.wrapper.bounds.left) {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.left = ((annotation.wrapper.bounds.left + (annotation.wrapper.bounds.width / 2) - (inputEleWidth / (zoomFactor * 2))) * zoomFactor) + 'px';\n }\n if (annotation.wrapper.bounds.top) {\n // eslint-disable-next-line max-len\n if (annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'LineWidthArrowHead' ||\n annotation.shapeAnnotationType === 'Distance' || annotation.shapeAnnotationType === 'Polygon') {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.top = ((annotation.wrapper.bounds.top + (annotation.wrapper.bounds.height / 2) - (this.maxHeight)) * zoomFactor) + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.inputBoxElement.style.top = ((annotation.wrapper.bounds.top + (annotation.wrapper.bounds.height / 2) - (this.maxHeight / 2)) * zoomFactor) + 'px';\n }\n }\n this.inputBoxElement.maxLength = annotation.labelMaxLength;\n this.inputBoxElement.fontFamily = annotation.fontFamily;\n this.inputBoxElement.style.color = annotation.fontColor;\n this.inputBoxElement.style.border = '1px solid #ffffff00';\n this.inputBoxElement.style.padding = '2px';\n this.inputBoxElement.style.background = annotation.labelFillColor;\n }\n pageDiv.appendChild(this.inputBoxElement);\n this.isInFocus = true;\n this.inputBoxElement.focus();\n };\n /**\n * @private\n */\n InputElement.prototype.onFocusOutInputBox = function () {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (pageIndex));\n var inputEleHeight = parseFloat(this.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(this.inputBoxElement.style.width);\n this.isInFocus = false;\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line\n if (selectedAnnotation) {\n inputEleWidth = ((inputEleWidth - 1) / this.pdfViewerBase.getZoomFactor());\n inputEleHeight = ((inputEleHeight - 1) / this.pdfViewerBase.getZoomFactor());\n // this.pdfViewer.annotation.modifyDynamicTextValue(this.inputBoxElement.value, this.selectedAnnotation.annotName);\n selectedAnnotation.labelContent = this.inputBoxElement.value;\n selectedAnnotation.notes = this.inputBoxElement.value;\n // eslint-disable-next-line max-len\n if (selectedAnnotation.shapeAnnotationType === 'Rectangle' || selectedAnnotation.shapeAnnotationType === 'Ellipse' || selectedAnnotation.shapeAnnotationType === 'Line'\n || selectedAnnotation.shapeAnnotationType === 'LineWidthArrowHead') {\n this.pdfViewer.annotation.shapeAnnotationModule.modifyInCollection('labelContent', pageIndex, selectedAnnotation);\n }\n else if (selectedAnnotation.shapeAnnotationType === 'Radius' && selectedAnnotation.measureType) {\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('labelContent', pageIndex, selectedAnnotation);\n }\n // eslint-disable-next-line\n this.pdfViewer.nodePropertyChange(selectedAnnotation, {});\n this.pdfViewer.renderSelector(selectedAnnotation.pageIndex, this.pdfViewer.annotationSelectorSettings);\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv && commentsDiv.childNodes && this.inputBoxElement.value !== 'label') {\n if (commentsDiv.childNodes[0].ej2_instances) {\n commentsDiv.childNodes[0].ej2_instances[0].value = this.inputBoxElement.value;\n }\n else if (commentsDiv.childNodes[0].childNodes && commentsDiv.childNodes[0].childNodes[1].ej2_instances) {\n commentsDiv.childNodes[0].childNodes[1].ej2_instances[0].value = this.inputBoxElement.value;\n }\n }\n }\n pageDiv.removeChild(this.inputBoxElement);\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, pageIndex);\n };\n /**\n * @param bounds\n * @param pageIndex\n * @param bounds\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n InputElement.prototype.calculateLabelBounds = function (bounds, pageIndex) {\n // eslint-disable-next-line\n var labelBounds = {};\n if (bounds) {\n var labelTop = 0;\n var labelLeft = 0;\n var labelWidth = 0;\n var labelHeight = 24.6;\n var labelMaxWidth = 151;\n if (pageIndex === undefined) {\n pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n }\n var rotation = this.pdfViewerBase.pageSize[pageIndex].rotation;\n if (bounds.width) {\n // eslint-disable-next-line max-len\n labelWidth = (bounds.width / 2);\n labelWidth = (labelWidth > 0 && labelWidth < labelMaxWidth) ? labelWidth : labelMaxWidth;\n }\n if (bounds.left) {\n // eslint-disable-next-line max-len\n labelLeft = (bounds.left + (bounds.width / 2) - (labelWidth / 2));\n }\n if (bounds.top) {\n // eslint-disable-next-line max-len\n labelTop = (bounds.top + (bounds.height / 2) - (labelHeight / 2));\n }\n if (rotation === 1 || rotation === 3) {\n // eslint-disable-next-line max-len\n labelBounds = { left: labelLeft, top: labelTop, width: (labelWidth - labelHeight) + (labelWidth / 2), height: (labelHeight * 2) + labelWidth, right: 0, bottom: 0 };\n }\n else {\n // eslint-disable-next-line max-len\n labelBounds = { left: labelLeft, top: labelTop, width: labelWidth, height: labelHeight, right: 0, bottom: 0 };\n }\n }\n return labelBounds;\n };\n /**\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n InputElement.prototype.calculateLabelBoundsFromLoadedDocument = function (bounds) {\n // eslint-disable-next-line\n var labelBounds = {};\n if (bounds) {\n var labelTop = 0;\n var labelLeft = 0;\n var labelWidth = 0;\n var labelHeight = 24.6;\n var labelMaxWidth = 151;\n if (bounds.Width) {\n // eslint-disable-next-line max-len\n labelWidth = (bounds.Width / 2);\n labelWidth = (labelWidth > 0 && labelWidth < labelMaxWidth) ? labelWidth : labelMaxWidth;\n }\n if (bounds.Left) {\n // eslint-disable-next-line max-len\n labelLeft = (bounds.Left + (bounds.Width / 2) - (labelWidth / 2));\n }\n if (bounds.Top) {\n // eslint-disable-next-line max-len\n labelTop = (bounds.Top + (bounds.Height / 2) - (labelHeight / 2));\n }\n // eslint-disable-next-line max-len\n labelBounds = { left: labelLeft, top: labelTop, width: labelWidth, height: labelHeight, right: 0, bottom: 0 };\n }\n return labelBounds;\n };\n return InputElement;\n}());\n\n/**\n * The `Annotation` module is used to handle annotation actions of PDF viewer.\n */\nvar Annotation = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function Annotation(pdfViewer, viewerBase) {\n this.isUndoRedoAction = false;\n this.isUndoAction = false;\n this.annotationSelected = true;\n this.isAnnotDeletionApiCall = false;\n this.removedDocumentAnnotationCollection = [];\n /**\n * @private\n */\n this.isShapeCopied = false;\n /**\n * @private\n */\n this.actionCollection = [];\n /**\n * @private\n */\n this.redoCollection = [];\n /**\n * @private\n */\n this.isPopupNoteVisible = false;\n /**\n * @private\n */\n this.undoCommentsElement = [];\n /**\n * @private\n */\n this.redoCommentsElement = [];\n /**\n * @private\n */\n this.selectAnnotationId = null;\n /**\n * @private\n */\n this.isAnnotationSelected = false;\n /**\n * @private\n */\n this.annotationPageIndex = null;\n this.previousIndex = null;\n // eslint-disable-next-line\n this.overlappedAnnotations = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.overlappedCollections = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isFormFieldShape = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.removedAnnotationCollection = [];\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.textMarkupAnnotationModule = new TextMarkupAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n if (this.pdfViewer.enableShapeAnnotation) {\n this.shapeAnnotationModule = new ShapeAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n if (this.pdfViewer.enableMeasureAnnotation) {\n this.measureAnnotationModule = new MeasureAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n this.stampAnnotationModule = new StampAnnotation(this.pdfViewer, this.pdfViewerBase);\n this.stickyNotesAnnotationModule = new StickyNotesAnnotation(this.pdfViewer, this.pdfViewerBase);\n this.freeTextAnnotationModule = new FreeTextAnnotation(this.pdfViewer, this.pdfViewerBase);\n this.inputElementModule = new InputElement(this.pdfViewer, this.pdfViewerBase);\n this.inkAnnotationModule = new InkAnnotation(this.pdfViewer, this.pdfViewerBase);\n }\n /**\n * Set annotation type to be added in next user interaction in PDF Document.\n *\n * @param type\n * @param dynamicStampItem\n * @param signStampItem\n * @param standardBusinessStampItem\n * @returns void\n */\n // eslint-disable-next-line max-len\n Annotation.prototype.setAnnotationMode = function (type, dynamicStampItem, signStampItem, standardBusinessStampItem) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n type !== 'None' ? this.triggerAnnotationUnselectEvent() : null;\n if (type === 'None') {\n this.clearAnnotationMode();\n }\n else if (type === 'Highlight' || type === 'Strikethrough' || type === 'Underline') {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.isSelectionMaintained = false;\n this.textMarkupAnnotationModule.drawTextMarkupAnnotations(type.toString());\n }\n }\n else if (type === 'Line' || type === 'Arrow' || type === 'Rectangle' || type === 'Circle' || type === 'Polygon') {\n if (this.shapeAnnotationModule) {\n this.shapeAnnotationModule.setAnnotationType(type);\n }\n }\n else if (type === 'Distance' || type === 'Perimeter' || type === 'Area' || type === 'Radius' || type === 'Volume') {\n if (this.measureAnnotationModule) {\n this.measureAnnotationModule.setAnnotationType(type);\n }\n }\n else if (type === 'FreeText' && this.freeTextAnnotationModule) {\n this.freeTextAnnotationModule.setAnnotationType('FreeText');\n this.freeTextAnnotationModule.isNewFreeTextAnnot = true;\n this.freeTextAnnotationModule.isNewAddedAnnot = true;\n }\n else if (type === 'HandWrittenSignature') {\n this.pdfViewerBase.signatureModule.setAnnotationMode();\n }\n else if (type === 'Initial') {\n this.pdfViewerBase.signatureModule.setInitialMode();\n }\n else if (type === 'Ink') {\n this.inkAnnotationModule.setAnnotationMode();\n }\n else if (type === 'StickyNotes') {\n this.pdfViewerBase.isCommentIconAdded = true;\n this.pdfViewerBase.isAddComment = true;\n // eslint-disable-next-line max-len\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1));\n if (pageDiv) {\n pageDiv.addEventListener('mousedown', this.pdfViewer.annotationModule.stickyNotesAnnotationModule.drawIcons.bind(this));\n }\n }\n else if (type === 'Stamp') {\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n if (dynamicStampItem) {\n // eslint-disable-next-line\n var stampName = DynamicStampItem[dynamicStampItem];\n this.pdfViewerBase.isDynamicStamp = true;\n this.stampAnnotationModule.retrieveDynamicStampAnnotation(stampName);\n }\n else if (signStampItem) {\n // eslint-disable-next-line\n var stampName = SignStampItem[signStampItem];\n this.pdfViewerBase.isDynamicStamp = false;\n this.stampAnnotationModule.retrievestampAnnotation(stampName);\n }\n else if (standardBusinessStampItem) {\n // eslint-disable-next-line\n var stampName = StandardBusinessStampItem[standardBusinessStampItem];\n this.pdfViewerBase.isDynamicStamp = false;\n this.stampAnnotationModule.retrievestampAnnotation(stampName);\n }\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n this.pdfViewerBase.initiateTextSelection();\n };\n Annotation.prototype.deleteAnnotationById = function (annotationId) {\n if (annotationId) {\n this.isAnnotDeletionApiCall = true;\n this.annotationSelected = false;\n this.selectAnnotation(annotationId);\n this.deleteAnnotation();\n this.isAnnotDeletionApiCall = false;\n }\n };\n Annotation.prototype.clearAnnotationMode = function () {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n if (this.freeTextAnnotationModule) {\n this.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n this.freeTextAnnotationModule.isNewAddedAnnot = false;\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n }\n if (this.pdfViewerBase.isShapeAnnotationModule()) {\n this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode = '';\n }\n if (this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.currentAnnotationMode = '';\n }\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n Annotation.prototype.deleteAnnotation = function () {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.deleteTextMarkupAnnotation();\n }\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n if (selectedAnnotation) {\n var data = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_formfields');\n var formFieldsData = JSON.parse(data);\n var newFormFieldsData = [];\n if (formFieldsData) {\n for (var x = 0; x < formFieldsData.length; x++) {\n if (formFieldsData[x].uniqueID == selectedAnnotation.id) {\n formFieldsData[x].Value = '';\n for (var y = 0; y < formFieldsData.length; y++) {\n if (formFieldsData[x].FieldName === formFieldsData[y].FieldName && formFieldsData[y].Name === 'ink') {\n formFieldsData.splice(y, 1);\n }\n }\n newFormFieldsData.push(formFieldsData[x]);\n }\n else {\n newFormFieldsData.push(formFieldsData[x]);\n }\n }\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_formfields', JSON.stringify(newFormFieldsData));\n }\n }\n var isLock = false;\n var isReadOnly = false;\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line\n var annotation_1 = this.pdfViewer.selectedItems.annotations[0];\n var type = annotation_1.shapeAnnotationType;\n if (type === 'Path' || annotation_1.formFieldAnnotationType === 'SignatureField' || annotation_1.formFieldAnnotationType === 'InitialField' || type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') {\n var inputFields = document.getElementById(annotation_1.id);\n if (inputFields && inputFields.disabled) {\n isReadOnly = true;\n }\n }\n if (annotation_1.annotationSettings) {\n isLock = annotation_1.annotationSettings.isLock;\n if (isLock && this.checkAllowedInteractions('Delete', annotation_1)) {\n isLock = false;\n }\n }\n if (!isLock && !isReadOnly) {\n var pageNumber = annotation_1.pageIndex;\n // eslint-disable-next-line\n var shapeType = annotation_1.shapeAnnotationType;\n // eslint-disable-next-line\n var undoElement = void 0;\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n // eslint-disable-next-line max-len\n if (isNullOrUndefined(annotation_1.measureType) || annotation_1.measureType === '') {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'shape');\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'shapeAnnotation');\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'measure');\n // eslint-disable-next-line max-len\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'measureShapeAnnotation');\n }\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n }\n else if (shapeType === 'FreeText') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'FreeText', 'delete');\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'freeTextAnnotation');\n }\n else if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureImage' || shapeType === 'SignatureText') {\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n }\n else if (shapeType === 'Ink') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(annotation_1, 'Ink', 'delete');\n undoElement = this.modifyInCollections(annotation_1, 'delete');\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'signatureInkAnnotation');\n }\n else {\n undoElement = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(undoElement, undoElement.shapeAnnotationType, 'delete');\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(annotation_1, null, 'delete');\n }\n if (shapeType === 'StickyNotes') {\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'stickyNotesAnnotation');\n }\n if (shapeType === 'Stamp' || 'Image') {\n this.updateImportAnnotationCollection(annotation_1, pageNumber, 'stampAnnotations');\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageNumber, null, annotation_1, 'Delete', '', undoElement, annotation_1);\n // eslint-disable-next-line\n var removeDiv = void 0;\n if (annotation_1.annotName !== '') {\n removeDiv = document.getElementById(annotation_1.annotName);\n }\n else {\n if (undoElement) {\n if (undoElement.annotName !== '') {\n removeDiv = document.getElementById(undoElement.annotName);\n }\n }\n }\n this.removeCommentPanelDiv(removeDiv);\n var selectedAnnot = this.pdfViewer.selectedItems.annotations[0];\n var annotationId = selectedAnnot.annotName;\n var annotType = this.getAnnotationType(selectedAnnot.shapeAnnotationType, selectedAnnot.measureType);\n if (shapeType === 'Path' || selectedAnnot.formFieldAnnotationType === 'SignatureField' || selectedAnnot.formFieldAnnotationType === 'InitialField' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') { // eslint-disable-next-line\n var formFieldCollection = this.pdfViewer.retrieveFormFields();\n var index = formFieldCollection.findIndex(function (el) { return el.id === annotation_1.id; });\n var formFieldName = void 0;\n if (index > -1) {\n formFieldName = formFieldCollection[index].name;\n }\n for (var m = 0; m < formFieldCollection.length; m++) {\n if (selectedAnnot.id === formFieldCollection[m].id || (isNullOrUndefined(formFieldName) && formFieldName === formFieldCollection[m].name)) {\n formFieldCollection[m].value = '';\n formFieldCollection[m].signatureType = '';\n var annotation_2 = this.getAnnotationsFromCollections(formFieldCollection[m].id);\n this.updateInputFieldDivElement(annotation_2);\n undoElement = this.modifyInCollections(annotation_2, 'delete');\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(annotation_2.pageIndex, null, annotation_2, 'Delete', '', undoElement, annotation_2);\n if (this.pdfViewer.formDesignerModule && selectedAnnot.formFieldAnnotationType)\n this.updateFormFieldCollection(annotation_2);\n else\n this.updateAnnotationCollection(annotation_2);\n this.pdfViewer.remove(annotation_2);\n }\n }\n if (this.pdfViewer.formDesignerModule && selectedAnnot.formFieldAnnotationType)\n this.updateFormFieldCollection(annotation_1);\n else\n this.updateAnnotationCollection(annotation_1);\n }\n if (this.pdfViewer.formDesignerModule && selectedAnnot.formFieldAnnotationType)\n this.updateFormFieldCollection(annotation_1);\n else\n this.updateAnnotationCollection(annotation_1);\n var formFieldObj = this.pdfViewer.nameTable[annotation_1.id.split(\"_\")[0]];\n if (formFieldObj != null && (formFieldObj.formFieldAnnotationType === 'SignatureField' || formFieldObj.formFieldAnnotationType === 'InitialField')) {\n var index = this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === annotation_1.id.split(\"_\")[0]; });\n var formFieldName = void 0;\n if (index > -1) {\n formFieldName = this.pdfViewer.formFieldCollections[index].name;\n }\n for (var i = 0; i < this.pdfViewer.formFieldCollections.length; i++) {\n if (formFieldName === this.pdfViewer.formFieldCollections[i].name) {\n var formFieldsIndex = this.pdfViewer.formFieldCollections[i];\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", formFieldsIndex, formFieldsIndex.pageIndex, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, formFieldsIndex.value, \"\");\n formFieldsIndex.value = \"\";\n formFieldsIndex.signatureType = \"\";\n this.pdfViewer.formDesignerModule.updateFormFieldCollections(formFieldsIndex);\n var annotation_3 = this.getAnnotationsFromCollections(formFieldsIndex.id + '_content');\n undoElement = this.modifyInCollections(annotation_3, 'delete');\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(annotation_3.pageIndex, null, annotation_3, 'Delete', '', undoElement, annotation_3);\n this.updateInputFieldDivElement(annotation_3);\n var formFieldObject = this.pdfViewer.nameTable[annotation_3.id.split(\"_\")[0]];\n formFieldObject.wrapper.children.splice(formFieldObject.wrapper.children.indexOf(annotation_3.wrapper.children[0]), 1);\n this.pdfViewer.remove(annotation_3);\n }\n }\n }\n this.pdfViewer.remove(annotation_1);\n this.pdfViewer.renderDrawing();\n this.pdfViewer.clearSelection(pageNumber);\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.pdfViewerBase.tool = null;\n this.pdfViewer.tool = null;\n if (selectedAnnot.shapeAnnotationType === 'HandWrittenSignature' || selectedAnnot.shapeAnnotationType === 'SignatureText' || selectedAnnot.shapeAnnotationType === 'SignatureImage' || selectedAnnot.shapeAnnotationType === 'Path') {\n // eslint-disable-next-line max-len\n var bounds = { left: selectedAnnot.bounds.x, top: selectedAnnot.bounds.y, width: selectedAnnot.bounds.width, height: selectedAnnot.bounds.height };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureRemove(pageNumber, selectedAnnot.id, selectedAnnot.shapeAnnotationType, bounds);\n }\n else if (this.pdfViewer.annotationModule) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationRemove(pageNumber, annotationId, annotType, selectedAnnot.bounds);\n }\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n }\n }\n this.updateToolbar(true);\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule && !isLock) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(false, true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(false);\n }\n }\n };\n /**\n * @param annotationId\n */\n // eslint-disable-next-line max-len\n Annotation.prototype.getAnnotationsFromCollections = function (annotationId) {\n var collections = this.pdfViewer.annotations;\n if (collections && annotationId) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].id === annotationId) {\n return collections[i];\n }\n }\n }\n };\n \n /**\n * @param annotation\n */\n Annotation.prototype.updateInputFieldDivElement = function (annotation) {\n var inputFields = document.getElementById(annotation.id);\n var signatureFieldElement = document.getElementById(annotation.id + \"_html_element\");\n if (inputFields === null && !isNullOrUndefined(signatureFieldElement)) {\n inputFields = signatureFieldElement.children[0].children[0];\n }\n if (inputFields && inputFields.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n inputFields.className = 'e-pdfviewer-signatureformfields';\n inputFields.style.pointerEvents = '';\n inputFields.parentElement.style.pointerEvents = '';\n if (this.pdfViewer.formDesignerModule) {\n this.pdfViewer.formDesignerModule.updateSignatureValue(annotation.id);\n }\n else {\n this.pdfViewer.formFieldsModule.updateDataInSession(inputFields, '');\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.storeAnnotationCollections = function (annotation, pageNumber) {\n if (this.isFormFieldShape) {\n var collectionDetails = this.checkFormDesignCollection(annotation);\n var selectAnnotation = cloneObject(annotation);\n selectAnnotation.formFieldId = annotation.annotName;\n selectAnnotation.pageNumber = pageNumber;\n delete selectAnnotation.annotName;\n if (annotation.id) {\n selectAnnotation.uniqueKey = annotation.id;\n delete selectAnnotation.id;\n }\n if (collectionDetails.isExisting) {\n this.pdfViewer.formFieldCollection.splice(collectionDetails.position, 0, selectAnnotation);\n }\n else {\n this.pdfViewer.formFieldCollection.push(selectAnnotation);\n }\n }\n else {\n // eslint-disable-next-line\n var collectionDetails = this.checkAnnotationCollection(annotation);\n // eslint-disable-next-line\n var selectAnnotation = cloneObject(annotation);\n selectAnnotation.annotationId = annotation.annotName;\n selectAnnotation.pageNumber = pageNumber;\n delete selectAnnotation.annotName;\n if (annotation.shapeAnnotationType === 'stamp') {\n selectAnnotation.uniqueKey = annotation.randomId;\n delete selectAnnotation.randomId;\n }\n if (annotation.shapeAnnotationType === 'sticky') {\n selectAnnotation.uniqueKey = annotation.annotName;\n }\n if (annotation.id) {\n selectAnnotation.uniqueKey = annotation.id;\n delete selectAnnotation.id;\n }\n // eslint-disable-next-line\n if (selectAnnotation.customData && annotation.customData && JSON.stringify(selectAnnotation.customData) !== JSON.stringify(annotation.customData)) {\n selectAnnotation.customData = annotation.customData;\n }\n if (collectionDetails.isExisting) {\n this.pdfViewer.annotationCollection.splice(collectionDetails.position, 0, selectAnnotation);\n }\n else {\n this.pdfViewer.annotationCollection.push(selectAnnotation);\n }\n }\n };\n Annotation.prototype.checkFormDesignCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.formFieldCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].formFieldId === annotation.annotName) {\n this.pdfViewer.formFieldCollection.splice(i, 1);\n return { isExisting: true, position: i };\n }\n }\n }\n return { isExisting: false, position: null };\n };\n Annotation.prototype.updateFormFieldCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.formFieldCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].formFieldId === annotation.annotName) {\n this.removedAnnotationCollection.push(collections[i]);\n this.pdfViewer.formFieldCollection.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getCustomData = function (annotation) {\n var customData;\n if (annotation.ExistingCustomData && !annotation.CustomData) {\n customData = JSON.parse(annotation.ExistingCustomData);\n }\n else if (annotation.CustomData === null) {\n if (annotation.shapeAnnotationType === 'sticky') {\n customData = this.pdfViewer.stickyNotesSettings.customData;\n }\n if (annotation.shapeAnnotationType === 'Stamp') {\n customData = this.pdfViewer.stampSettings.customData;\n }\n if (annotation.shapeAnnotationType === 'FreeText') {\n customData = this.pdfViewer.freeTextSettings.customData;\n }\n if (annotation.id === 'shape') {\n customData = this.getShapeData(annotation.ShapeAnnotationType, annotation.subject);\n }\n if (annotation.id === 'measure') {\n customData = this.getMeasureData(annotation.Subject);\n }\n if (annotation.shapeAnnotationType === 'textMarkup') {\n customData = this.getTextMarkupData(annotation.subject);\n }\n if (annotation.shapeAnnotationType === 'Ink') {\n customData = this.pdfViewer.inkAnnotationSettings.customData;\n }\n }\n else {\n customData = annotation.CustomData;\n }\n return customData;\n };\n /**\n * @param type\n * @param subject\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getShapeData = function (type, subject) {\n var customData;\n if (type === 'Line' && subject !== 'Arrow' && this.pdfViewer.lineSettings.customData) {\n customData = this.pdfViewer.lineSettings.customData;\n }\n else if ((type === 'LineWidthArrowHead' || subject === 'Arrow') && this.pdfViewer.arrowSettings.customData) {\n customData = this.pdfViewer.arrowSettings.customData;\n }\n else if ((type === 'Rectangle' || type === 'Square') && this.pdfViewer.rectangleSettings.customData) {\n customData = this.pdfViewer.rectangleSettings.customData;\n }\n else if ((type === 'Ellipse' || type === 'Circle') && this.pdfViewer.circleSettings.customData) {\n customData = this.pdfViewer.circleSettings.customData;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.customData) {\n customData = this.pdfViewer.polygonSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getMeasureData = function (type) {\n var customData;\n if ((type === 'Distance' || type === 'Distance calculation') && this.pdfViewer.distanceSettings.customData) {\n customData = this.pdfViewer.distanceSettings.customData;\n }\n else if ((type === 'Line' || type === 'Perimeter calculation') && this.pdfViewer.lineSettings.customData) {\n customData = this.pdfViewer.lineSettings.customData;\n // eslint-disable-next-line max-len\n }\n else if ((type === 'Polygon' || type === 'Area calculation' || type === 'Volume calculation') && this.pdfViewer.polygonSettings.customData) {\n customData = this.pdfViewer.polygonSettings.customData;\n }\n else if ((type === 'Radius' || type === 'Radius calculation') && this.pdfViewer.radiusSettings.customData) {\n customData = this.pdfViewer.radiusSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getTextMarkupData = function (type) {\n var customData;\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.customData) {\n customData = this.pdfViewer.highlightSettings.customData;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.customData) {\n customData = this.pdfViewer.underlineSettings.customData;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.customData) {\n customData = this.pdfViewer.strikethroughSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getData = function (type) {\n var customData;\n if (type === 'FreeText' && this.pdfViewer.freeTextSettings.customData) {\n customData = this.pdfViewer.freeTextSettings.customData;\n }\n else if ((type === 'image' || type === 'Stamp') && this.pdfViewer.stampSettings.customData) {\n customData = this.pdfViewer.stampSettings.customData;\n }\n else if (type === 'sticky' && this.pdfViewer.stickyNotesSettings.customData) {\n customData = this.pdfViewer.stickyNotesSettings.customData;\n }\n else if (this.pdfViewer.annotationSettings.customData) {\n customData = this.pdfViewer.annotationSettings.customData;\n }\n return customData;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.clearAnnotationStorage = function () {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var maxSessionSize = 4500;\n if (sessionSize > maxSessionSize) {\n var storageLength = window.sessionStorage.length;\n // eslint-disable-next-line\n var annotationList = [];\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'annotations') {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n annotationList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n window.sessionStorage.removeItem(annotationList[i]);\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkAnnotationCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotationCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === annotation.annotName) {\n this.pdfViewer.annotationCollection.splice(i, 1);\n return { isExisting: true, position: i };\n }\n }\n }\n return { isExisting: false, position: null };\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateAnnotationCollection = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotationCollection;\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === annotation.annotName || collections[i].annotationId === annotation.annotationId) {\n this.removedAnnotationCollection.push(collections[i]);\n this.pdfViewer.annotationCollection.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotationType\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateImportAnnotationCollection = function (annotation, pageNumber, annotationType) {\n if (this.pdfViewerBase.isImportAction) {\n if (this.pdfViewerBase.importedAnnotation && this.pdfViewerBase.importedAnnotation[pageNumber]) {\n // eslint-disable-next-line\n var currentPageAnnotations = this.pdfViewerBase.importedAnnotation[pageNumber];\n if (currentPageAnnotations[annotationType]) {\n for (var i = 0; i < currentPageAnnotations[annotationType].length; i++) {\n // eslint-disable-next-line max-len\n if (annotation.annotName === currentPageAnnotations[annotationType][i].AnnotName || annotation.annotName === currentPageAnnotations[annotationType][i].annotName) {\n this.pdfViewerBase.importedAnnotation[pageNumber][annotationType].splice(i, 1);\n break;\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var documentcollections = this.pdfViewerBase.documentAnnotationCollections;\n if (documentcollections && documentcollections[pageNumber]) {\n // eslint-disable-next-line\n var documentPageCollections = documentcollections[pageNumber];\n if (documentPageCollections && documentPageCollections[annotationType]) {\n for (var i = 0; i < documentPageCollections[annotationType].length; i++) {\n // eslint-disable-next-line max-len\n if (annotation.annotName === documentPageCollections[annotationType][i].AnnotName) {\n this.pdfViewerBase.documentAnnotationCollections[pageNumber][annotationType].splice(i, 1);\n break;\n }\n }\n }\n }\n };\n /**\n * Select the annotations using annotation object or annotation Id.\n *\n * @param annotationId\n * @returns void\n */\n Annotation.prototype.selectAnnotation = function (annotationId) {\n // eslint-disable-next-line\n var annotation;\n var id;\n if (typeof annotationId === 'object') {\n annotation = annotationId;\n id = annotation.annotationId;\n annotation = this.getAnnotationsFromAnnotationCollections(id);\n }\n if (typeof annotationId === 'string') {\n annotation = this.getAnnotationsFromAnnotationCollections(annotationId);\n id = annotationId;\n }\n if (annotation) {\n var pageIndex = isNullOrUndefined(annotation.pageNumber) ? annotation.pageIndex : annotation.pageNumber;\n var isRender = false;\n isRender = this.findRenderPageList(pageIndex);\n var currentSelector = this.pdfViewer.annotationSelectorSettings;\n //let pageIndex: number = this.getPageNumberFromAnnotationCollections(annotation);\n if (annotation && pageIndex >= 0) {\n if (annotation.shapeAnnotationType === 'textMarkup') {\n if (annotation.rect || annotation.bounds) {\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + (this.getAnnotationTop(annotation)) * this.pdfViewerBase.getZoomFactor();\n if (!this.isAnnotDeletionApiCall) {\n var scroll_1 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_1);\n this.pdfViewerBase.viewerContainer.scrollLeft = this.getAnnotationLeft(annotation) * this.pdfViewerBase.getZoomFactor();\n }\n }\n else {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n }\n }\n }\n else {\n if (annotation.bounds) {\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + (annotation.bounds.top) * this.pdfViewerBase.getZoomFactor();\n var scrollLeft = annotation.bounds.left * this.pdfViewerBase.getZoomFactor();\n if (annotation.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + (annotation.bounds.y) * this.pdfViewerBase.getZoomFactor();\n scrollLeft = annotation.bounds.x * this.pdfViewerBase.getZoomFactor();\n }\n if (!this.isAnnotDeletionApiCall) {\n var scroll_2 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_2);\n this.pdfViewerBase.viewerContainer.scrollLeft = scrollLeft;\n }\n }\n else {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n }\n }\n }\n if (isRender) {\n if (this.previousIndex) {\n this.pdfViewer.clearSelection(this.previousIndex);\n }\n this.pdfViewer.clearSelection(pageIndex);\n this.previousIndex = pageIndex;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(pageIndex, true);\n // eslint-disable-next-line max-len\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var textMarkupAnnotation = this.getTextMarkupAnnotations(pageIndex, annotation);\n if (textMarkupAnnotation) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.isSelectedAnnotation = true;\n this.textMarkupAnnotationModule.showHideDropletDiv(true);\n this.textMarkupAnnotationModule.annotationClickPosition = null;\n this.textMarkupAnnotationModule.selectAnnotation(textMarkupAnnotation, canvas, pageIndex, null, true);\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = textMarkupAnnotation;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = pageIndex;\n this.textMarkupAnnotationModule.enableAnnotationPropertiesTool(true);\n this.textMarkupAnnotationModule.isSelectedAnnotation = false;\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n else if (annotation.shapeAnnotationType === 'stamp' || annotation.ShapeAnnotationType === 'stamp') {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (annotation.shapeAnnotationType === 'sticky' || annotation.ShapeAnnotationType === 'sticky') {\n this.pdfViewer.select([annotation.annotationId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n // eslint-disable-next-line max-len\n var commentElement = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentElement && commentElement.style.display === 'block') {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(id);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n else if (annotation.uniqueKey || (annotation.shapeAnnotationType === \"textMarkup\" && annotation.annotationAddMode === \"Imported Annotation\")) {\n this.selectAnnotationId = id;\n this.isAnnotationSelected = true;\n this.annotationPageIndex = pageIndex;\n this.selectAnnotationFromCodeBehind();\n }\n }\n if (!isRender && !annotation.uniqueKey) {\n var collections = this.updateCollectionForNonRenderedPages(annotation, id, pageIndex);\n collections.pageIndex = pageIndex;\n this.pdfViewer.annotation.addAction(pageIndex, null, collections, 'Delete', '', collections, collections);\n this.undoCommentsElement.push(collections);\n var removeDiv = document.getElementById(annotation.annotationId);\n this.removeCommentPanelDiv(removeDiv);\n }\n }\n };\n // To update the collections for the non-rendered pages.\n Annotation.prototype.updateCollectionForNonRenderedPages = function (annotation, id, pageIndex) {\n var collections;\n var annotationCollection = this.pdfViewer.annotationCollection;\n if (annotationCollection.length) {\n var collectionDetails = annotationCollection.filter(function (annotCollection) {\n return annotCollection.annotationId === id;\n });\n collections = collectionDetails[0];\n this.updateAnnotationCollection(collectionDetails[0]);\n }\n var annotationType = this.getTypeOfAnnotation(annotation);\n var collection = this.pdfViewerBase.documentAnnotationCollections[pageIndex];\n if (collection[annotationType].length) {\n for (var x = 0; x < collection[annotationType].length; x++) {\n if (collection[annotationType][x].AnnotName === annotation.annotationId) {\n var type = collection[annotationType][x];\n this.removedDocumentAnnotationCollection.push(type);\n collection[annotationType].splice(x, 1);\n break;\n }\n }\n }\n return collections;\n };\n // To get the annotation type to update the document Annotation collections\n Annotation.prototype.getTypeOfAnnotation = function (annotation) {\n var annotationType;\n if (annotation.id && annotation.id.toLowerCase() === \"shape\") {\n annotationType = \"shapeAnnotation\";\n }\n else if (annotation.id && annotation.id.toLowerCase() === \"measure\") {\n annotationType = \"measureShapeAnnotation\";\n }\n else if (annotation.id && annotation.id.toLowerCase() === \"freetext\") {\n annotationType = \"freeTextAnnotation\";\n }\n else if (annotation.shapeAnnotationType && annotation.shapeAnnotationType.toLowerCase() === \"textmarkup\") {\n annotationType = \"textMarkupAnnotation\";\n }\n else if (annotation.shapeAnnotationType && annotation.shapeAnnotationType.toLowerCase() === \"stamp\") {\n annotationType = \"stampAnnotations\";\n }\n else if (annotation.shapeAnnotationType && annotation.shapeAnnotationType.toLowerCase() === \"ink\") {\n annotationType = \"signatureInkAnnotation\";\n }\n else if (annotation.shapeAnnotationType && annotation.shapeAnnotationType.toLowerCase() === \"sticky\") {\n annotationType = \"stickyNotesAnnotation\";\n }\n return annotationType;\n };\n // To remove the commnet panel div\n Annotation.prototype.removeCommentPanelDiv = function (removeDiv) {\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n };\n /**\n * Clear the annotation selection.\n *\n * @returns void\n */\n Annotation.prototype.clearSelection = function () {\n if (this.textMarkupAnnotationModule && this.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.textMarkupAnnotationModule.clearCurrentSelectedAnnotation();\n this.textMarkupAnnotationModule.clearCurrentAnnotationSelection(this.textMarkupAnnotationModule.selectTextMarkupCurrentPage);\n }\n else {\n if (this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.annotations[0]) {\n // eslint-disable-next-line\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n this.pdfViewer.clearSelection(currentAnnotation.pageIndex);\n }\n else {\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationTop = function (annotation) {\n if (annotation.rect) {\n if (annotation.rect.Top) {\n return annotation.rect.Top;\n }\n else {\n return annotation.rect.top;\n }\n }\n else {\n if (annotation.bounds[0].Top) {\n return annotation.bounds[0].Top;\n }\n else {\n return annotation.bounds[0].top;\n }\n }\n };\n /**\n * @param annotation\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationLeft = function (annotation) {\n if (annotation.rect) {\n if (annotation.rect.Left) {\n return annotation.rect.Left;\n }\n else {\n return annotation.rect.left;\n }\n }\n else {\n if (annotation.bounds[0].Left) {\n return annotation.bounds[0].Left;\n }\n else {\n return annotation.bounds[0].left;\n }\n }\n };\n /**\n * @private\n */\n Annotation.prototype.selectAnnotationFromCodeBehind = function () {\n if (this.isAnnotationSelected && this.selectAnnotationId) {\n // eslint-disable-next-line\n var annotation = this.getAnnotationsFromAnnotationCollections(this.selectAnnotationId);\n var id = this.selectAnnotationId;\n var pageIndex = annotation.pageNumber;\n var currentSelector = this.pdfViewer.annotationSelectorSettings;\n if (annotation && (this.annotationPageIndex >= 0) && this.annotationPageIndex === pageIndex) {\n if (this.previousIndex) {\n this.pdfViewer.clearSelection(this.previousIndex);\n }\n this.pdfViewer.clearSelection(pageIndex);\n this.previousIndex = pageIndex;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(pageIndex, true);\n // eslint-disable-next-line max-len\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var textMarkupAnnotation = this.getTextMarkupAnnotations(pageIndex, annotation);\n if (textMarkupAnnotation) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.isSelectedAnnotation = true;\n this.textMarkupAnnotationModule.showHideDropletDiv(true);\n this.textMarkupAnnotationModule.annotationClickPosition = null;\n this.textMarkupAnnotationModule.selectAnnotation(textMarkupAnnotation, canvas, pageIndex);\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = textMarkupAnnotation;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = pageIndex;\n this.textMarkupAnnotationModule.enableAnnotationPropertiesTool(true);\n this.textMarkupAnnotationModule.isSelectedAnnotation = false;\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n else if (annotation.shapeAnnotationType === 'stamp' || annotation.ShapeAnnotationType === 'stamp') {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (annotation.shapeAnnotationType === 'sticky' || annotation.ShapeAnnotationType === 'sticky') {\n this.pdfViewer.select([annotation.annotationId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (annotation.uniqueKey) {\n this.pdfViewer.select([annotation.uniqueKey], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else {\n this.pdfViewer.select([annotation.annotationId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n // eslint-disable-next-line max-len\n var commentElement = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentElement && commentElement.style.display === 'block') {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(id);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n this.isAnnotationSelected = false;\n this.selectAnnotationId = null;\n this.annotationPageIndex = null;\n }\n };\n /**\n * @param pageIndex\n * @private\n */\n Annotation.prototype.findRenderPageList = function (pageIndex) {\n var isRender = false;\n // eslint-disable-next-line\n var pageList = this.pdfViewerBase.renderedPagesList;\n if (pageList) {\n for (var i = 0; i < pageList.length; i++) {\n if (pageList[i] === pageIndex) {\n isRender = true;\n return isRender;\n }\n }\n }\n return isRender;\n };\n // eslint-disable-next-line\n Annotation.prototype.getPageNumberFromAnnotationCollections = function (annotation) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotations;\n if (annotation) {\n if (annotation.shapeAnnotationType === 'textMarkup') {\n return annotation.pageNumber;\n }\n else {\n if (collections) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotName === annotation.annotationId) {\n return collections[i].pageIndex;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationsFromAnnotationCollections = function (annotationId) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.annotationCollection;\n if (collections && annotationId) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].annotationId === annotationId) {\n return collections[i];\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 0)\n this.pdfViewer.selectedItems.annotations.push(this.pdfViewer.nameTable[annotationId]);\n };\n // eslint-disable-next-line\n Annotation.prototype.getTextMarkupAnnotations = function (pageIndex, annotation) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'];\n }\n if (storeObject) {\n // eslint-disable-next-line\n var annotObject = JSON.parse(storeObject);\n var index = this.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n for (var i = 0; i < annotObject[index].annotations.length; i++) {\n if (annotObject[index].annotations[i].annotName === annotation.annotationId) {\n return annotObject[index].annotations[i];\n }\n }\n return null;\n }\n }\n else {\n return null;\n }\n };\n /**\n * @param type\n * @param measureType\n * @param type\n * @param measureType\n * @private\n */\n Annotation.prototype.getAnnotationType = function (type, measureType) {\n var annotType;\n if (measureType === '' || isNullOrUndefined(measureType)) {\n switch (type) {\n case 'Line':\n annotType = 'Line';\n break;\n case 'LineWidthArrowHead':\n annotType = 'Arrow';\n break;\n case 'Rectangle':\n annotType = 'Rectangle';\n break;\n case 'Ellipse':\n annotType = 'Circle';\n break;\n case 'Polygon':\n annotType = 'Polygon';\n break;\n case 'Stamp':\n annotType = 'Stamp';\n break;\n case 'Image':\n annotType = 'Image';\n break;\n case 'FreeText':\n annotType = 'FreeText';\n break;\n case 'Ink':\n annotType = 'Ink';\n break;\n case 'StickyNotes':\n annotType = 'StickyNotes';\n break;\n }\n }\n else {\n switch (measureType) {\n case 'Distance':\n annotType = 'Distance';\n break;\n case 'Perimeter':\n annotType = 'Perimeter';\n break;\n case 'Area':\n annotType = 'Area';\n break;\n case 'Radius':\n annotType = 'Radius';\n break;\n case 'Volume':\n annotType = 'Volume';\n break;\n }\n }\n return annotType;\n };\n /**\n * @param pageNumber\n * @param annotationId\n * @private\n */\n Annotation.prototype.getAnnotationIndex = function (pageNumber, annotationId) {\n var pageAnnotationBases = this.pdfViewer.drawing.getPageObjects(pageNumber);\n var index = null;\n for (var i = 0; i < pageAnnotationBases.length; i++) {\n if (pageAnnotationBases[i].id === annotationId) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * @private\n */\n Annotation.prototype.initializeCollection = function () {\n this.actionCollection = [];\n this.redoCollection = [];\n this.pdfViewerBase.customStampCollection = [];\n if (!this.popupNote) {\n this.createNote();\n }\n };\n /**\n * @private\n */\n Annotation.prototype.showCommentsPanel = function () {\n if (this.pdfViewer.enableCommentPanel) {\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanel) {\n if (commentPanel.style.display === 'none') {\n commentPanel.style.display = 'block';\n if (Browser.isDevice && !isBlazor()) {\n // eslint:disable-next-line\n var viewer = document.getElementById(this.pdfViewer.element.id + '_viewerMainContainer');\n // eslint:disable-next-line\n viewer.insertBefore(this.pdfViewerBase.navigationPane.commentPanelContainer, this.pdfViewer.toolbarModule.toolbarElement);\n }\n if (this.pdfViewerBase.navigationPane.commentPanelResizer) {\n this.pdfViewerBase.navigationPane.commentPanelResizer.style.display = 'block';\n }\n this.pdfViewerBase.navigationPane.setCommentPanelResizeIconTop();\n this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelTextTop();\n var viewerContainer = document.getElementById(this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(this.pdfViewer.element.id + '_pageViewContainer');\n if (viewerContainer) {\n if (this.pdfViewer.enableRtl) {\n viewerContainer.style.left = this.pdfViewerBase.navigationPane.getViewerContainerRight() + 'px';\n }\n else {\n viewerContainer.style.right = this.pdfViewerBase.navigationPane.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n viewerContainer.style.width = (this.pdfViewer.element.clientWidth - this.pdfViewerBase.navigationPane.getViewerContainerLeft() - this.pdfViewerBase.navigationPane.getViewerContainerRight()) + 'px';\n pageContainer.style.width = (viewerContainer.offsetWidth - this.pdfViewerBase.navigationPane.getViewerContainerScrollbarWidth()) + 'px';\n }\n this.pdfViewerBase.updateZoomValue();\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (Browser.isDevice && !isBlazor()) {\n commentPanel.style.height = this.pdfViewerBase.viewerMainContainer.clientHeight + 'px';\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n // eslint:disable-next-line\n var commentDiv = document.getElementById(this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentDiv && commentDiv.lastElementChild.children[1] && commentDiv.lastElementChild.children[1].ej2_instances) {\n commentDiv.lastElementChild.children[1].ej2_instances[0].enableEditMode = true;\n }\n else if (commentDiv && commentDiv.lastElementChild.ej2_instances) {\n commentDiv.lastElementChild.ej2_instances[0].enableEditMode = true;\n commentDiv.lastElementChild.style.display = 'block';\n commentDiv.lastElementChild.children[1] ? commentDiv.lastElementChild.children[1].style.display = 'block' : null;\n }\n }\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'none';\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar.element.style.display = 'none';\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param annotation\n * @param actionString\n * @param property\n * @param node\n * @param redo\n * @param pageNumber\n * @param index\n * @param annotation\n * @param actionString\n * @param property\n * @param node\n * @param redo\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.addAction = function (\n // eslint-disable-next-line\n pageNumber, index, annotation, actionString, property, node, redo) {\n var action = {\n pageIndex: pageNumber, index: index, annotation: annotation,\n action: actionString, modifiedProperty: property, undoElement: node, redoElement: redo\n };\n this.actionCollection.push(action);\n this.updateToolbar();\n };\n /**\n * @private\n */\n Annotation.prototype.undo = function () {\n var actionObject = this.actionCollection.pop();\n if (actionObject) {\n // eslint-disable-next-line\n var shapeType = actionObject.annotation.shapeAnnotationType;\n this.isUndoRedoAction = true;\n this.isUndoAction = true;\n switch (actionObject.action) {\n case 'Text Markup Added':\n case 'Text Markup Deleted':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n this.textMarkupAnnotationModule.undoTextMarkupAction(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.action);\n }\n break;\n case 'Text Markup Property modified':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n actionObject.annotation = this.textMarkupAnnotationModule.undoRedoPropertyChange(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.modifiedProperty, true);\n }\n break;\n case 'Drag':\n case 'Resize':\n if (isLineShapes(actionObject.annotation)) {\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { bounds: actionObject.undoElement.bounds, vertexPoints: actionObject.undoElement.vertexPoints, leaderHeight: actionObject.undoElement.leaderHeight });\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { bounds: actionObject.undoElement.bounds });\n }\n // eslint-disable-next-line max-len\n if (actionObject.annotation.measureType === 'Distance' || actionObject.annotation.measureType === 'Perimeter' || actionObject.annotation.measureType === 'Area' ||\n actionObject.annotation.measureType === 'Radius' || actionObject.annotation.measureType === 'Volume') {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { notes: actionObject.undoElement.notes });\n this.updateCalibrateValues(actionObject.annotation);\n }\n if (actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.updateHTMLElement(actionObject.annotation);\n }\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.select([actionObject.annotation.id]);\n // eslint-disable-next-line max-len\n if (actionObject.annotation.shapeAnnotationType === 'Line' || actionObject.annotation.shapeAnnotationType === 'Rectangle' || actionObject.annotation.shapeAnnotationType === 'Ellipse' || actionObject.annotation.shapeAnnotationType === 'Polygon' || actionObject.annotation.shapeAnnotationType === 'LineWidthArrowHead' ||\n actionObject.annotation.shapeAnnotationType === 'Radius' || actionObject.annotation.shapeAnnotationType === 'FreeText' || actionObject.annotation.shapeAnnotationType === 'HandWrittenSignature' || actionObject.annotation.shapeAnnotationType === 'SignatureText' || actionObject.annotation.shapeAnnotationType === 'SignatureImage' || actionObject.annotation.shapeAnnotationType === 'Ink') {\n this.modifyInCollections(actionObject.annotation, 'bounds');\n }\n break;\n case 'Addition':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.deleteFormField(actionObject.undoElement.id, false);\n }\n else {\n var isAnnotationUpdate = false;\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, 'shape');\n }\n else {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, 'measure');\n }\n isAnnotationUpdate = true;\n // eslint-disable-next-line\n var annotationObject = actionObject.annotation;\n // eslint-disable-next-line\n var wrapper = annotationObject.wrapper ? annotationObject.wrapper : null;\n if (wrapper && wrapper.bounds) {\n actionObject.annotation.bounds = wrapper.bounds;\n }\n actionObject.duplicate = this.modifyInCollections(actionObject.annotation, 'delete');\n }\n if (shapeType === 'Stamp' || shapeType === 'Image') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, actionObject.annotation.shapeAnnotationType, 'delete');\n // eslint-disable-next-line max-len\n this.stampAnnotationModule.updateSessionStorage(actionObject.annotation, null, 'delete');\n isAnnotationUpdate = true;\n }\n if (shapeType === 'FreeText' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureImage' || shapeType === 'SignatureText' || shapeType === 'Ink') {\n isAnnotationUpdate = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, actionObject.annotation.shapeAnnotationType, 'delete');\n actionObject.duplicate = this.modifyInCollections(actionObject.annotation, 'delete');\n }\n if (!isAnnotationUpdate) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, actionObject.annotation.shapeAnnotationType, 'delete');\n }\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.remove(actionObject.annotation);\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line\n var removeDiv = document.getElementById(actionObject.annotation.annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.parentElement.removeChild(removeDiv);\n }\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_propertyToolbar');\n if (mobileAnnotationToolbar && mobileAnnotationToolbar.children.length > 0) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbarCreated = false;\n this.pdfViewer.toolbarModule.annotationToolbarModule.createAnnotationToolbarForMobile();\n }\n }\n }\n break;\n case 'Delete':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n actionObject.undoElement.bounds.x = actionObject.undoElement.wrapper.bounds.x;\n actionObject.undoElement.bounds.y = actionObject.undoElement.wrapper.bounds.y;\n this.pdfViewer.formDesigner.drawFormField(actionObject.undoElement);\n }\n else {\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n shapeType = 'shape';\n this.shapeAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n else {\n shapeType = 'shape_measure';\n this.measureAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n }\n if (shapeType === 'Stamp' || shapeType === 'Image') {\n this.stampAnnotationModule.updateDeleteItems(actionObject.annotation.pageIndex, actionObject.annotation);\n }\n else if (shapeType === 'FreeText') {\n this.freeTextAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n else if (shapeType === 'Ink') {\n this.inkAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.undoElement);\n }\n if (!actionObject.annotation.annotationId) {\n var addedAnnot = this.pdfViewer.add(actionObject.annotation);\n if ((shapeType === 'FreeText' || addedAnnot.enableShapeLabel) && addedAnnot) {\n this.pdfViewer.nodePropertyChange(addedAnnot, {});\n }\n }\n var formFieldObj = void 0;\n if (actionObject.annotation.id) {\n formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n }\n if (formFieldObj != null && (formFieldObj.formFieldAnnotationType === 'SignatureField' || formFieldObj.formFieldAnnotationType === 'InitialField')) {\n formFieldObj.wrapper.children.push(actionObject.annotation.wrapper.children[0]);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.push(actionObject.annotation.wrapper.children[1]);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\") {\n formFieldsData[i].FormField.signatureType = \"Text\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Text\";\n }\n else if (actionObject.annotation.shapeAnnotationType === \"SignatureImage\") {\n formFieldsData[i].FormField.signatureType = \"Image\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Image\";\n }\n else {\n formFieldsData[i].FormField.signatureType = \"Path\";\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Path\";\n var collectionData = processPathData(actionObject.annotation.data);\n var csData = splitArrayCollection(collectionData);\n formFieldsData[i].FormField.value = JSON.stringify(csData);\n this.pdfViewerBase.formFieldCollection[i].FormField.value = JSON.stringify(csData);\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(actionObject.annotation.pageIndex, shapeType);\n if (actionObject.annotation.annotationId) {\n var removedAnnotationCollection = this.removedAnnotationCollection[this.removedAnnotationCollection.length - 1];\n var annotationType = this.getTypeOfAnnotation(removedAnnotationCollection);\n this.pdfViewer.annotationCollection.push(removedAnnotationCollection);\n this.removedAnnotationCollection.splice(this.removedAnnotationCollection.length - 1);\n var pageNumber = actionObject.annotation.pageNumber >= 0 ? actionObject.annotation.pageNumber : actionObject.annotation.pageIndex;\n this.pdfViewerBase.documentAnnotationCollections[pageNumber][annotationType].push(this.removedDocumentAnnotationCollection[this.removedDocumentAnnotationCollection.length - 1]);\n this.removedDocumentAnnotationCollection.splice(this.removedDocumentAnnotationCollection.length - 1);\n }\n }\n break;\n case 'stampOpacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.undoElement.opacity });\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n actionObject.annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n break;\n case 'Shape Stroke':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { strokeColor: actionObject.undoElement.strokeColor });\n this.modifyInCollections(actionObject.annotation, 'stroke');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Fill':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fillColor: actionObject.undoElement.fillColor });\n this.modifyInCollections(actionObject.annotation, 'fill');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Opacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.undoElement.opacity });\n if (actionObject.annotation.shapeAnnotationType === 'StickyNotes') {\n this.stickyNotesAnnotationModule.updateOpacityValue(actionObject.annotation);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n actionObject.annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n else {\n this.modifyInCollections(actionObject.annotation, 'opacity');\n }\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Thickness':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { thickness: actionObject.undoElement.thickness });\n this.modifyInCollections(actionObject.annotation, 'thickness');\n this.pdfViewer.renderDrawing();\n break;\n case 'Line properties change':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {\n // eslint-disable-next-line max-len\n fillColor: actionObject.undoElement.fillColor, borderDashArray: actionObject.undoElement.borderDashArray, borderStyle: actionObject.undoElement.borderStyle,\n // eslint-disable-next-line max-len\n strokeColor: actionObject.undoElement.strokeColor, opacity: actionObject.undoElement.opacity, thickness: actionObject.undoElement.thickness,\n sourceDecoraterShapes: this.getArrowType(actionObject.undoElement.lineHeadStart), taregetDecoraterShapes: this.getArrowType(actionObject.undoElement.lineHeadEnd)\n });\n this.updateCollectionForLineProperty(actionObject.annotation);\n this.pdfViewer.renderDrawing();\n break;\n case 'Text Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n actionObject.annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n break;\n case 'Comments Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'Status Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'Comments Reply Deleted':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'dynamicText Change':\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = true;\n actionObject.annotation.dynamicText = actionObject.undoElement.dynamicText;\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.selectedItems.annotations[0].dynamicText = actionObject.undoElement.dynamicText;\n }\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.undoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n this.modifyInCollections(actionObject.annotation, 'dynamicText');\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], {});\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {});\n }\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n break;\n case 'fontColor':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontColor: actionObject.undoElement.fontColor });\n this.modifyInCollections(actionObject.annotation, 'fontColor');\n this.pdfViewer.renderDrawing();\n break;\n case 'fontSize':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontSize: actionObject.undoElement.fontSize });\n this.modifyInCollections(actionObject.annotation, 'fontSize');\n this.pdfViewer.renderDrawing();\n break;\n case 'fontFamily':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontFamily: actionObject.undoElement.fontFamily });\n this.modifyInCollections(actionObject.annotation, 'fontFamily');\n this.pdfViewer.renderDrawing();\n break;\n case 'textAlign':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { textAlign: actionObject.undoElement.textAlign });\n this.modifyInCollections(actionObject.annotation, 'textAlign');\n this.pdfViewer.renderDrawing();\n break;\n case 'textPropertiesChange':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { font: actionObject.undoElement.font });\n this.modifyInCollections(actionObject.annotation, 'textPropertiesChange');\n this.pdfViewer.renderDrawing();\n break;\n case 'Rotate':\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(actionObject.annotation.annotations[0], { bounds: actionObject.undoElement.bounds, rotateAngle: actionObject.undoElement.rotateAngle });\n this.modifyInCollections(actionObject.annotation.annotations[0], 'bounds');\n this.pdfViewer.renderDrawing();\n break;\n case 'FormDesigner Properties Change':\n if (actionObject.undoElement && actionObject.undoElement.isMultiline !== actionObject.redoElement.isMultiline) {\n this.undoRedoMultiline(actionObject.undoElement);\n }\n this.updateFormFieldPropertiesChanges(actionObject.undoElement.formFieldAnnotationType, actionObject.undoElement);\n break;\n case 'FormField Value Change':\n if (actionObject.annotation.formFieldAnnotationType) {\n if (actionObject.annotation.formFieldAnnotationType == \"RadioButton\") {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.undoElement, false);\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.redoElement, true);\n }\n else {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.annotation, actionObject.undoElement);\n }\n }\n else {\n var spanElement = document.getElementById(actionObject.annotation.id + \"_html_element\").children[0].children[0];\n spanElement.className = 'e-pdfviewer-signatureformfields';\n var formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n var annotationObj = this.pdfViewer.nameTable[actionObject.annotation.id];\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(annotationObj.wrapper.children[0]), 1);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(annotationObj.wrapper.children[1]), 1);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n formFieldsData[i].FormField.value = '';\n formFieldsData[i].FormField.signatureType = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.value = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = '';\n }\n }\n this.pdfViewer.remove(actionObject.annotation);\n this.pdfViewer.renderDrawing();\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n }\n this.redoCollection.push(actionObject);\n this.updateToolbar();\n this.isUndoRedoAction = false;\n this.isUndoAction = false;\n }\n };\n /**\n * @private\n */\n Annotation.prototype.redo = function () {\n var actionObject = this.redoCollection.pop();\n if (actionObject) {\n // eslint-disable-next-line\n var shapeType = actionObject.annotation.shapeAnnotationType;\n this.isUndoRedoAction = true;\n switch (actionObject.action) {\n case 'Text Markup Property modified':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n actionObject.annotation = this.textMarkupAnnotationModule.undoRedoPropertyChange(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.modifiedProperty);\n }\n break;\n case 'Text Markup Added':\n case 'Text Markup Deleted':\n if (this.textMarkupAnnotationModule) {\n // eslint-disable-next-line max-len\n this.textMarkupAnnotationModule.redoTextMarkupAction(actionObject.annotation, actionObject.pageIndex, actionObject.index, actionObject.action);\n }\n break;\n case 'Drag':\n case 'Resize':\n if (isLineShapes(actionObject.annotation)) {\n this.pdfViewer.nodePropertyChange(\n // eslint-disable-next-line max-len\n actionObject.annotation, { bounds: actionObject.redoElement.bounds, vertexPoints: actionObject.redoElement.vertexPoints, leaderHeight: actionObject.redoElement.leaderHeight });\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { bounds: actionObject.redoElement.bounds });\n }\n // eslint-disable-next-line max-len\n if (actionObject.annotation.measureType === 'Distance' || actionObject.annotation.measureType === 'Perimeter' || actionObject.annotation.measureType === 'Area' ||\n actionObject.annotation.measureType === 'Radius' || actionObject.annotation.measureType === 'Volume') {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { notes: actionObject.redoElement.notes });\n this.updateCalibrateValues(actionObject.annotation);\n }\n if (actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.updateHTMLElement(actionObject.annotation);\n }\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.select([actionObject.annotation.id]);\n // eslint-disable-next-line max-len\n if (actionObject.annotation.shapeAnnotationType === 'Line' || actionObject.annotation.shapeAnnotationType === 'Rectangle' || actionObject.annotation.shapeAnnotationType === 'Ellipse' || actionObject.annotation.shapeAnnotationType === 'Polygon' || actionObject.annotation.shapeAnnotationType === 'LineWidthArrowHead'\n || actionObject.annotation.shapeAnnotationType === 'Radius' || actionObject.annotation.shapeAnnotationType === 'FreeText' || actionObject.annotation.shapeAnnotationType === 'HandWrittenSignature' || actionObject.annotation.shapeAnnotationType === 'SignatureText' || actionObject.annotation.shapeAnnotationType === 'SignatureImage' || actionObject.annotation.shapeAnnotationType === 'Ink') {\n this.modifyInCollections(actionObject.annotation, 'bounds');\n }\n break;\n case 'Addition':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n actionObject.redoElement.bounds.x = actionObject.redoElement.wrapper.bounds.x;\n actionObject.redoElement.bounds.y = actionObject.redoElement.wrapper.bounds.y;\n this.pdfViewer.formDesigner.drawFormField(actionObject.redoElement);\n }\n else {\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n shapeType = 'shape';\n this.shapeAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n else {\n shapeType = 'shape_measure';\n this.measureAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n }\n if (shapeType === 'FreeText') {\n this.freeTextAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n if (shapeType === 'Stamp') {\n this.stampAnnotationModule.updateDeleteItems(actionObject.annotation.pageIndex, actionObject.redoElement);\n }\n if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') {\n this.pdfViewerBase.signatureModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n if (shapeType === 'Ink') {\n this.inkAnnotationModule.addInCollection(actionObject.annotation.pageIndex, actionObject.duplicate);\n }\n var addedAnnot = this.pdfViewer.add(actionObject.annotation);\n this.pdfViewer.select([actionObject.annotation.id]);\n if ((shapeType === 'FreeText' || addedAnnot.enableShapeLabel) && addedAnnot) {\n this.pdfViewer.nodePropertyChange(addedAnnot, {});\n }\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(actionObject.annotation.pageIndex, shapeType);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_propertyToolbar');\n if (mobileAnnotationToolbar && mobileAnnotationToolbar.children.length > 0) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbarCreated = false;\n this.pdfViewer.toolbarModule.annotationToolbarModule.createAnnotationToolbarForMobile();\n }\n }\n }\n break;\n case 'Delete':\n if (this.pdfViewer.formDesigner && actionObject.annotation.formFieldAnnotationType) {\n this.pdfViewer.formDesigner.deleteFormField(actionObject.redoElement.id, false);\n }\n else {\n var isUpdate = false;\n var sType = actionObject.annotation.shapeAnnotationType;\n // eslint-disable-next-line max-len\n if (shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Polygon' || shapeType === 'Ellipse' || shapeType === 'Rectangle' || shapeType === 'Radius' || shapeType === 'Distance') {\n if (actionObject.annotation.measureType === '' || isNullOrUndefined(actionObject.annotation.measureType)) {\n sType = 'shape';\n }\n else {\n sType = 'measure';\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n this.modifyInCollections(actionObject.annotation, 'delete');\n isUpdate = true;\n }\n if (shapeType === 'Stamp') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n this.stampAnnotationModule.updateSessionStorage(actionObject.annotation, null, 'delete');\n isUpdate = true;\n }\n if (shapeType === 'FreeText' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText' || shapeType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n this.modifyInCollections(actionObject.annotation, 'delete');\n }\n if (!isUpdate) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(actionObject.annotation, sType, 'delete');\n }\n var formFieldObj = void 0;\n if (actionObject.annotation.id) {\n formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n }\n if (formFieldObj != null && (formFieldObj.formFieldAnnotationType === 'SignatureField' || formFieldObj.formFieldAnnotationType === 'InitialField')) {\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(actionObject.annotation.wrapper.children[0]), 1);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.splice(formFieldObj.wrapper.children.indexOf(actionObject.annotation.wrapper.children[1]), 1);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n formFieldsData[i].FormField.value = '';\n formFieldsData[i].FormField.signatureType = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.value = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = '';\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n this.pdfViewer.clearSelection(actionObject.annotation.pageIndex);\n this.pdfViewer.remove(actionObject.annotation);\n this.pdfViewer.renderDrawing(null, actionObject.annotation.pageIndex);\n // eslint-disable-next-line\n var id = actionObject.annotation.annotName ? actionObject.annotation.annotName : actionObject.annotation.annotationId;\n var removeDiv = document.getElementById(id);\n this.removeCommentPanelDiv(removeDiv);\n if (actionObject.annotation.annotationId) {\n var collections = this.updateCollectionForNonRenderedPages(actionObject.annotation, id, actionObject.annotation.pageIndex);\n this.undoCommentsElement.push(collections);\n }\n }\n break;\n case 'stampOpacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.redoElement.opacity });\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n break;\n case 'Shape Stroke':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { strokeColor: actionObject.redoElement.strokeColor });\n this.modifyInCollections(actionObject.annotation, 'stroke');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Fill':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fillColor: actionObject.redoElement.fillColor });\n this.modifyInCollections(actionObject.annotation, 'fill');\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Opacity':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { opacity: actionObject.redoElement.opacity });\n if (actionObject.annotation.shapeAnnotationType === 'StickyNotes') {\n this.stickyNotesAnnotationModule.updateOpacityValue(actionObject.annotation);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n }\n else {\n this.modifyInCollections(actionObject.annotation, 'opacity');\n }\n this.pdfViewer.renderDrawing();\n break;\n case 'Shape Thickness':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { thickness: actionObject.redoElement.thickness });\n this.modifyInCollections(actionObject.annotation, 'thickness');\n this.pdfViewer.renderDrawing();\n break;\n case 'Line properties change':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {\n // eslint-disable-next-line max-len\n fillColor: actionObject.redoElement.fillColor, strokeColor: actionObject.redoElement.strokeColor, opacity: actionObject.redoElement.opacity, thickness: actionObject.redoElement.thickness,\n sourceDecoraterShapes: this.getArrowType(actionObject.redoElement.lineHeadStart), taregetDecoraterShapes: this.getArrowType(actionObject.redoElement.lineHeadEnd),\n borderDashArray: actionObject.redoElement.borderDashArray, borderStyle: actionObject.redoElement.borderStyle\n });\n this.updateCollectionForLineProperty(actionObject.annotation);\n this.pdfViewer.renderDrawing();\n break;\n case 'Text Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n break;\n case 'Comments Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n break;\n case 'Status Property Added':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action);\n break;\n case 'Comments Reply Deleted':\n // eslint-disable-next-line max-len\n actionObject.annotation = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action);\n break;\n case 'dynamicText Change':\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = true;\n actionObject.annotation.dynamicText = actionObject.redoElement.dynamicText;\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation) {\n annotation.dynamicText = actionObject.redoElement.dynamicText;\n annotation.bounds.height = actionObject.redoElement.bounds.height;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.redoAction(actionObject.annotation, actionObject.action, actionObject.undoElement);\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(actionObject.annotation, null, true);\n this.modifyInCollections(actionObject.annotation, 'dynamicText');\n if (annotation) {\n this.pdfViewer.nodePropertyChange(annotation, {});\n }\n else {\n this.pdfViewer.nodePropertyChange(actionObject.annotation, {});\n }\n this.pdfViewer.annotation.freeTextAnnotationModule.isFreeTextValueChange = false;\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.pdfViewer.select([actionObject.annotation.id]);\n break;\n case 'fontColor':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontColor: actionObject.redoElement.fontColor });\n this.modifyInCollections(actionObject.annotation, 'fontColor');\n this.pdfViewer.renderDrawing();\n break;\n case 'fontSize':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { fontSize: actionObject.redoElement.fontSize });\n this.modifyInCollections(actionObject.annotation, 'fontSize');\n this.pdfViewer.renderDrawing();\n break;\n case 'textAlign':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { textAlign: actionObject.redoElement.textAlign });\n this.modifyInCollections(actionObject.annotation, 'textAlign');\n this.pdfViewer.renderDrawing();\n break;\n case 'textPropertiesChange':\n this.pdfViewer.nodePropertyChange(actionObject.annotation, { font: actionObject.redoElement.font });\n this.modifyInCollections(actionObject.annotation, 'textPropertiesChange');\n this.pdfViewer.renderDrawing();\n break;\n case 'Rotate':\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(actionObject.annotation.annotations[0], { bounds: actionObject.redoElement.bounds, rotateAngle: actionObject.redoElement.rotateAngle });\n this.modifyInCollections(actionObject.annotation.annotations[0], 'bounds');\n this.pdfViewer.renderDrawing();\n break;\n case 'FormDesigner Properties Change':\n if (actionObject.redoElement && actionObject.undoElement.isMultiline !== actionObject.redoElement.isMultiline) {\n this.undoRedoMultiline(actionObject.redoElement);\n }\n this.updateFormFieldPropertiesChanges(actionObject.redoElement.formFieldAnnotationType, actionObject.redoElement);\n break;\n case 'FormField Value Change':\n if (actionObject.annotation.formFieldAnnotationType) {\n if (actionObject.annotation.formFieldAnnotationType == \"RadioButton\") {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.undoElement, true);\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.redoElement, false);\n }\n else {\n this.updateFormFieldValueChange(actionObject.annotation.formFieldAnnotationType, actionObject.annotation, actionObject.redoElement);\n }\n }\n else {\n var spanElement = document.getElementById(actionObject.annotation.id + \"_html_element\").children[0].children[0];\n spanElement.className = 'e-pdfviewer-signatureformfields-signature';\n var formFieldObj = this.pdfViewer.nameTable[actionObject.annotation.id.split(\"_\")[0]];\n var annotationObj = this.pdfViewer.nameTable[actionObject.annotation.id];\n formFieldObj.wrapper.children.push(annotationObj.wrapper.children[0]);\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\")\n formFieldObj.wrapper.children.push(annotationObj.wrapper.children[1]);\n var key = actionObject.annotation.id.split('_')[0] + '_content';\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key === key) {\n if (actionObject.annotation.shapeAnnotationType === \"SignatureText\") {\n formFieldsData[i].FormField.signatureType = \"Text\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Text\";\n }\n else if (actionObject.annotation.shapeAnnotationType === \"SignatureImage\") {\n formFieldsData[i].FormField.signatureType = \"Image\";\n formFieldsData[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = actionObject.annotation.data;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Image\";\n }\n else {\n formFieldsData[i].FormField.signatureType = \"Path\";\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Path\";\n var collectionData = processPathData(actionObject.annotation.data);\n var csData = splitArrayCollection(collectionData);\n formFieldsData[i].FormField.value = JSON.stringify(csData);\n this.pdfViewerBase.formFieldCollection[i].FormField.value = JSON.stringify(csData);\n }\n }\n }\n this.pdfViewer.add(actionObject.annotation);\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + actionObject.pageIndex);\n this.pdfViewer.renderDrawing(canvass, actionObject.pageIndex);\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n }\n if (actionObject.redoElement && actionObject.redoElement.modifiedDate !== undefined) {\n actionObject.annotation.modifiedDate = actionObject.redoElement.modifiedDate;\n }\n this.actionCollection.push(actionObject);\n this.updateToolbar();\n this.isUndoRedoAction = false;\n }\n };\n Annotation.prototype.undoRedoMultiline = function (element) {\n if (element.isMultiline && element.formFieldAnnotationType === 'Textbox') {\n this.pdfViewer.formDesignerModule.renderMultilineText(element, true);\n }\n else if (element.formFieldAnnotationType === 'Textbox') {\n this.pdfViewer.formDesignerModule.renderTextbox(element, true);\n }\n };\n Annotation.prototype.updateFormFieldValueChange = function (formFieldAnnotationType, annotation, value) {\n if (annotation) {\n var formFieldModel = this.pdfViewer.formDesigner.getFormField(annotation.id.split(\"_\")[0]);\n var data = null;\n if (this.pdfViewer.formDesignerModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (data) {\n var formFieldsData = JSON.parse(data);\n var index = this.pdfViewer.formDesigner.getFormFiledIndex(annotation.id.split('_')[0]);\n switch (formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'RadioButton':\n case 'DropdownList':\n case 'ListBox':\n var inputElement = document.getElementById(annotation.id.split(\"_\")[0] + \"_content_html_element\").firstElementChild.firstElementChild;\n if (formFieldAnnotationType == 'Textbox' || formFieldAnnotationType == 'PasswordField') {\n formFieldModel.value = value;\n this.pdfViewer.formDesigner.updateValuePropertyChange(formFieldModel, inputElement, true, index, formFieldsData);\n }\n else if (formFieldAnnotationType == 'RadioButton') {\n formFieldModel.isSelected = value;\n this.pdfViewer.formDesigner.updateIsSelectedPropertyChange(formFieldModel, inputElement.firstElementChild, true, index, formFieldsData);\n }\n else if (formFieldAnnotationType == 'DropdownList' || formFieldAnnotationType == 'ListBox') {\n formFieldModel.selectedIndex = value;\n formFieldsData[index].FormField.selectedIndex = value;\n this.pdfViewerBase.formFieldCollection[index].FormField.selectedIndex = value;\n this.pdfViewer.nameTable[formFieldsData[index].Key.split(\"_\")[0]].selectedIndex = value;\n if (formFieldAnnotationType == 'ListBox') {\n for (var k = 0; k < inputElement.options.length; k++) {\n inputElement.options[k].selected = value.includes(k) ? true : false;\n }\n }\n else {\n inputElement.selectedIndex = value;\n }\n }\n break;\n case 'Checkbox':\n var checkboxDivElement = document.getElementById(annotation.id.split(\"_\")[0] + \"_content_html_element\").firstElementChild.firstElementChild.lastElementChild;\n formFieldModel.isChecked = value;\n this.pdfViewer.formDesigner.updateIsCheckedPropertyChange(formFieldModel, checkboxDivElement, true, index, formFieldsData);\n break;\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n };\n Annotation.prototype.updateFormFieldPropertiesChanges = function (formFieldAnnotationType, element) {\n switch (formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n this.pdfViewer.formDesigner.updateTextboxFormDesignerProperties(element, true);\n break;\n case 'Checkbox':\n this.pdfViewer.formDesigner.updateCheckboxFormDesignerProperties(element, true);\n break;\n case 'RadioButton':\n this.pdfViewer.formDesigner.updateRadioButtonDesignerProperties(element, true);\n break;\n case 'DropdownList':\n this.pdfViewer.formDesigner.updateDropdownFormDesignerProperties(element, true);\n break;\n case 'ListBox':\n this.pdfViewer.formDesigner.updateListBoxFormDesignerProperties(element, true);\n break;\n case 'SignatureField':\n case 'InitialField':\n this.pdfViewer.formDesigner.updateSignatureTextboxProperties(element, true);\n }\n };\n Annotation.prototype.updateCollectionForLineProperty = function (pdfAnnotationBase) {\n this.modifyInCollections(pdfAnnotationBase, 'fill');\n this.modifyInCollections(pdfAnnotationBase, 'stroke');\n this.modifyInCollections(pdfAnnotationBase, 'opacity');\n this.modifyInCollections(pdfAnnotationBase, 'thickness');\n this.modifyInCollections(pdfAnnotationBase, 'dashArray');\n this.modifyInCollections(pdfAnnotationBase, 'startArrow');\n this.modifyInCollections(pdfAnnotationBase, 'endArrow');\n };\n Annotation.prototype.updateToolbar = function (isAnnotationDelete) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateUndoRedoButtons();\n }\n if (this.actionCollection && this.actionCollection.length == 0) {\n this.pdfViewerBase.updateDocumentEditedProperty(false);\n }\n else {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n if (isAnnotationDelete) {\n //This below lines are commented for the below task -EJ2-61754-IsDocumentEdited API is not Properly working for delete annotations\n //Also refer EJ2-55205-The isDocumentEdited property is False on adding handwritten signature\n // let isEdited: boolean = false;\n // if (this.pdfViewer.annotationCollection && this.pdfViewer.annotationCollection.length > 0 && this.pdfViewer.signatureCollection && this.pdfViewer.signatureCollection.length > 0) {\n // isEdited = true;\n // }\n // if (!isEdited && this.pdfViewer.isDocumentEdited) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // }\n }\n };\n Annotation.prototype.createNote = function () {\n // eslint-disable-next-line max-len\n this.popupNote = createElement('div', { id: this.pdfViewer.element.id + '_annotation_note', className: 'e-pv-annotation-note', styles: 'display:none' });\n this.popupNoteAuthor = createElement('div', { id: this.pdfViewer.element.id + '_annotation_note_author', className: 'e-pv-annotation-note-author' });\n this.popupNote.appendChild(this.popupNoteAuthor);\n // eslint-disable-next-line max-len\n this.popupNoteContent = createElement('div', { id: this.pdfViewer.element.id + '_annotation_note_content', className: 'e-pv-annotation-note-content' });\n this.popupNote.appendChild(this.popupNoteContent);\n this.pdfViewerBase.mainContainer.appendChild(this.popupNote);\n };\n /**\n * @param event\n * @param color\n * @param author\n * @param note\n * @param type\n * @param event\n * @param color\n * @param author\n * @param note\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.showPopupNote = function (event, color, author, note, type) {\n var mainContainerPosition = this.pdfViewerBase.mainContainer.getBoundingClientRect();\n var popupNoteClientRect = this.popupNote.getBoundingClientRect();\n if (author) {\n this.popupNoteAuthor.textContent = author;\n }\n this.popupNoteContent.textContent = note;\n if (type === 'Highlight') {\n this.popupNote.style.backgroundColor = 'rgb(237, 232, 177)';\n }\n else if (type === 'Underline') {\n this.popupNote.style.backgroundColor = 'rgb(187, 241, 191)';\n }\n else if (type === 'Strikethrough') {\n this.popupNote.style.backgroundColor = 'rgb(242, 188, 207)';\n }\n this.popupNote.style.display = 'block';\n var topPosition = (event.pageY - mainContainerPosition.top + 5);\n var leftPosition = (event.pageX - mainContainerPosition.left + 5);\n if (leftPosition + popupNoteClientRect.width > mainContainerPosition.width) {\n leftPosition = leftPosition - popupNoteClientRect.width;\n }\n if (topPosition + popupNoteClientRect.height > mainContainerPosition.height) {\n topPosition = topPosition - popupNoteClientRect.height;\n }\n this.popupNote.style.top = topPosition + 'px';\n this.popupNote.style.left = leftPosition + 'px';\n };\n /**\n * @private\n */\n Annotation.prototype.hidePopupNote = function () {\n if (this.popupNote) {\n this.popupNote.style.display = 'none';\n }\n };\n Annotation.prototype.createTextMarkupPopup = function () {\n var _this = this;\n var elementId = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n this.popupElement = createElement('div', { id: elementId + '_popup_annotation_note', className: 'e-pv-annotation-popup-menu', styles: 'display:none' });\n var headerElement = createElement('div', { id: elementId + '_popup_header', className: 'e-pv-annotation-popup-header' });\n // eslint-disable-next-line max-len\n this.authorPopupElement = createElement('div', { id: elementId + '_popup_author', className: 'e-pv-annotation-popup-author' });\n headerElement.appendChild(this.authorPopupElement);\n // eslint-disable-next-line max-len\n var closeBtn = createElement('span', { id: elementId + '_popup_close', className: 'e-pv-annotation-popup-close e-pv-icon' });\n headerElement.appendChild(closeBtn);\n this.popupElement.appendChild(headerElement);\n // eslint-disable-next-line max-len\n this.modifiedDateElement = createElement('div', { id: elementId + '_popup_modified_time', className: 'e-pv-annotation-modified-time' });\n this.popupElement.appendChild(this.modifiedDateElement);\n // eslint-disable-next-line max-len\n var contentContainer = createElement('div', { id: elementId + '_popup_content_container', className: 'e-pv-annotation-popup-note-container' });\n this.noteContentElement = createElement('div', { id: elementId + '_popup_content', className: 'e-pv-annotation-popup-content' });\n this.noteContentElement.contentEditable = 'true';\n contentContainer.appendChild(this.noteContentElement);\n this.popupElement.appendChild(contentContainer);\n this.pdfViewerBase.viewerContainer.appendChild(this.popupElement);\n closeBtn.addEventListener('click', this.saveClosePopupMenu.bind(this));\n closeBtn.addEventListener('touchend', this.saveClosePopupMenu.bind(this));\n this.popupElement.addEventListener('mousedown', this.onPopupElementMoveStart.bind(this));\n this.popupElement.addEventListener('mousemove', this.onPopupElementMove.bind(this));\n window.addEventListener('mouseup', this.onPopupElementMoveEnd.bind(this));\n this.popupElement.addEventListener('touchstart', this.onPopupElementMoveStart.bind(this));\n this.popupElement.addEventListener('touchmove', this.onPopupElementMove.bind(this));\n window.addEventListener('touchend', this.onPopupElementMoveEnd.bind(this));\n this.noteContentElement.addEventListener('mousedown', function () {\n _this.noteContentElement.focus();\n });\n };\n // eslint-disable-next-line\n Annotation.prototype.onPopupElementMoveStart = function (event) {\n if (event.type === 'touchstart') {\n event = event.changedTouches[0];\n }\n if ((event.target.id !== (this.noteContentElement.id) || !(event.target.contains(this.noteContentElement.childNodes[0])))) {\n this.isPopupMenuMoved = true;\n var popupElementClientRect = this.popupElement.getBoundingClientRect();\n this.clientX = event.clientX - popupElementClientRect.left;\n // eslint-disable-next-line max-len\n this.clientY = (event.clientY - popupElementClientRect.top) + (this.pdfViewerBase.pageSize[this.currentAnnotPageNumber].top * this.pdfViewerBase.getZoomFactor());\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.onPopupElementMove = function (event) {\n if (event.type === 'touchmove') {\n event = event.changedTouches[0];\n }\n // eslint-disable-next-line max-len\n if (this.isPopupMenuMoved && (event.target.id !== (this.noteContentElement.id) || !(event.target.contains(this.noteContentElement.childNodes[0])))) {\n var left = (event.clientX - this.clientX) + parseFloat(this.popupElement.style.left);\n var top_1 = ((event.clientY - this.clientY) + parseFloat(this.popupElement.style.top));\n this.clientX = event.clientX;\n this.clientY = event.clientY;\n var clientPosition = this.popupElement.getBoundingClientRect();\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + this.currentAnnotPageNumber);\n // eslint-disable-next-line max-len\n if (left > parseFloat(pageDiv.style.left) && (left + clientPosition.width) < (parseFloat(pageDiv.style.left) + parseFloat(pageDiv.style.width))) {\n this.popupElement.style.left = (left) + 'px';\n }\n else {\n this.popupElement.style.left = parseFloat(this.popupElement.style.left) + 'px';\n }\n // eslint-disable-next-line max-len\n if (top_1 > parseFloat(pageDiv.style.top) && (top_1 + clientPosition.height) < (parseFloat(pageDiv.style.top) + parseFloat(pageDiv.style.height))) {\n this.popupElement.style.top = (top_1) + 'px';\n }\n else {\n this.popupElement.style.top = parseFloat(this.popupElement.style.top) + 'px';\n }\n }\n };\n Annotation.prototype.onPopupElementMoveEnd = function () {\n this.isPopupMenuMoved = false;\n };\n Annotation.prototype.saveClosePopupMenu = function () {\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.saveNoteContent(this.currentAnnotPageNumber, this.noteContentElement.innerText);\n }\n this.closePopupMenu();\n };\n /**\n * @private\n */\n Annotation.prototype.closePopupMenu = function () {\n if (this.popupElement) {\n this.popupElement.parentElement.removeChild(this.popupElement);\n this.popupElement = null;\n this.isPopupNoteVisible = false;\n }\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.showAnnotationPopup = function (event) {\n if (this.textMarkupAnnotationModule) {\n this.currentAnnotPageNumber = this.getEventPageNumber(event);\n // eslint-disable-next-line max-len\n if (this.textMarkupAnnotationModule && (event.target !== (this.noteContentElement) || (event.target.contains(this.noteContentElement.childNodes[0])))) {\n this.hidePopupNote();\n if (!this.popupElement) {\n this.createTextMarkupPopup();\n this.popupElement.style.display = 'block';\n this.authorPopupElement.textContent = this.textMarkupAnnotationModule.currentTextMarkupAnnotation.author;\n // eslint-disable-next-line max-len\n this.modifiedDateElement.textContent = this.getProperDate(this.textMarkupAnnotationModule.currentTextMarkupAnnotation.modifiedDate);\n this.noteContentElement.textContent = this.textMarkupAnnotationModule.currentTextMarkupAnnotation.note;\n var clientPosition = this.popupElement.getBoundingClientRect();\n // eslint-disable-next-line max-len\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + this.currentAnnotPageNumber);\n var canvasPosition = pageDiv.getBoundingClientRect();\n var topPosition = ((event.clientY) - canvasPosition.top) + parseFloat(pageDiv.style.top);\n var leftPosition = (event.clientX);\n if ((leftPosition + clientPosition.width) > (parseFloat(pageDiv.style.left) + parseFloat(pageDiv.style.width))) {\n this.popupElement.style.left = (leftPosition - clientPosition.width) + 'px';\n }\n else {\n this.popupElement.style.left = leftPosition + 'px';\n }\n if ((topPosition + clientPosition.height) > (parseFloat(pageDiv.style.top) + parseFloat(pageDiv.style.height))) {\n this.popupElement.style.top = (topPosition - clientPosition.height) + 'px';\n }\n else {\n this.popupElement.style.top = topPosition + 'px';\n }\n this.isPopupNoteVisible = true;\n }\n }\n }\n };\n /**\n * @param args\n * @param isOpacity\n * @param args\n * @param isOpacity\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.modifyOpacity = function (args, isOpacity) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n var opacityValue = 1;\n if (isOpacity) {\n opacityValue = args / 100;\n }\n else {\n opacityValue = args.value / 100;\n }\n if (currentAnnotation.opacity !== opacityValue) {\n redoClonedObject.opacity = opacityValue;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { opacity: opacityValue });\n if (currentAnnotation.shapeAnnotationType === 'StickyNotes') {\n this.stickyNotesAnnotationModule.updateOpacityValue(currentAnnotation);\n }\n else {\n this.modifyInCollections(currentAnnotation, 'opacity');\n }\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureImage' || currentAnnotation.shapeAnnotationType === 'SignatureText') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, true, false, clonedObject.opacity, redoClonedObject.opacity);\n }\n else {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Opacity', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n }\n };\n /**\n * @param currentColor\n * @private\n */\n Annotation.prototype.modifyFontColor = function (currentColor) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fontColor = currentColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontColor: currentColor });\n this.modifyInCollections(currentAnnotation, 'fontColor');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'fontColor', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param currentValue\n * @private\n */\n Annotation.prototype.modifyFontFamily = function (currentValue) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fontFamily = currentValue;\n if (this.pdfViewer.freeTextSettings.enableAutoFit) {\n this.updateFontFamilyRenderSize(currentAnnotation, currentValue);\n }\n else {\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontFamily: currentValue });\n }\n this.modifyInCollections(currentAnnotation, 'fontFamily');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'fontFamily', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param currentValue\n * @private\n */\n Annotation.prototype.modifyFontSize = function (currentValue, isInteracted) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fontSize = currentValue;\n var freeTextAnnotation = this.freeTextAnnotationModule;\n var x = currentAnnotation.bounds.x;\n var y = currentAnnotation.bounds.y;\n currentAnnotation.fontSize = currentValue;\n if (freeTextAnnotation && !freeTextAnnotation.isNewFreeTextAnnot && currentAnnotation.dynamicText !== '') {\n freeTextAnnotation.addInuptElemet({ x: x, y: y }, currentAnnotation);\n if (currentAnnotation) {\n if (currentAnnotation.previousFontSize > currentValue) {\n freeTextAnnotation.inputBoxElement.style.height = 'auto';\n if (isInteracted) {\n freeTextAnnotation.inputBoxElement.style.height = freeTextAnnotation.inputBoxElement.scrollHeight + 5 + 'px';\n }\n else {\n if (freeTextAnnotation.inputBoxElement.scrollHeight + 5 > currentAnnotation.bounds.height) {\n freeTextAnnotation.inputBoxElement.style.height = freeTextAnnotation.inputBoxElement.scrollHeight + 5 + 'px';\n }\n else {\n freeTextAnnotation.inputBoxElement.style.height = currentAnnotation.bounds.height + 'px';\n }\n }\n }\n var inputEleHeight = parseFloat(freeTextAnnotation.inputBoxElement.style.height);\n var inputEleWidth = parseFloat(freeTextAnnotation.inputBoxElement.style.width);\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n inputEleWidth = ((inputEleWidth) / zoomFactor);\n inputEleHeight = ((inputEleHeight) / zoomFactor);\n var heightDiff = (inputEleHeight - currentAnnotation.bounds.height);\n var y_1 = undefined;\n if (heightDiff > 0) {\n y_1 = currentAnnotation.wrapper.offsetY + (heightDiff / 2);\n y_1 = y_1 > 0 ? y_1 : undefined;\n }\n else {\n heightDiff = Math.abs(heightDiff);\n y_1 = currentAnnotation.wrapper.offsetY - (heightDiff / 2);\n y_1 = y_1 > 0 ? y_1 : undefined;\n }\n var widthDiff = (inputEleWidth - currentAnnotation.bounds.width);\n var x_1 = undefined;\n if (widthDiff > 0) {\n x_1 = currentAnnotation.wrapper.offsetX + (widthDiff / 2);\n x_1 = x_1 > 0 ? x_1 : undefined;\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x_1 = currentAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n currentAnnotation.bounds.width = inputEleWidth;\n currentAnnotation.bounds.height = inputEleHeight;\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontSize: currentValue, bounds: { width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height, y: y_1, x: x_1 } });\n this.pdfViewer.renderSelector(currentAnnotation.pageIndex, this.pdfViewer.annotationSelectorSettings);\n currentAnnotation.previousFontSize = currentValue;\n }\n this.modifyInCollections(currentAnnotation, 'fontSize');\n this.modifyInCollections(currentAnnotation, 'bounds');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'fontSize', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n }\n };\n /**\n * @param currentValue\n * @private\n */\n Annotation.prototype.modifyTextAlignment = function (currentValue) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.textAlign = currentValue;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { textAlign: currentValue });\n this.modifyInCollections(currentAnnotation, 'textAlign');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'textAlign', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param fontInfo\n * @param action\n * @private\n */\n Annotation.prototype.modifyTextProperties = function (fontInfo, action) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n if (action === 'bold') {\n redoClonedObject.font.isBold = fontInfo.isBold;\n }\n else if (action === 'italic') {\n redoClonedObject.font.isItalic = fontInfo.isItalic;\n }\n else if (action === 'underline') {\n redoClonedObject.font.isUnderline = fontInfo.isUnderline;\n if (redoClonedObject.font.isUnderline && redoClonedObject.font.isStrikeout) {\n redoClonedObject.font.isStrikeout = false;\n }\n }\n else if (action === 'strikeout') {\n redoClonedObject.font.isStrikeout = fontInfo.isStrikeout;\n if (redoClonedObject.font.isUnderline && redoClonedObject.font.isStrikeout) {\n redoClonedObject.font.isUnderline = false;\n }\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, { font: fontInfo });\n this.modifyInCollections(currentAnnotation, 'textPropertiesChange');\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'textPropertiesChange', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param thicknessValue\n * @private\n */\n Annotation.prototype.modifyThickness = function (thicknessValue) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n if (currentAnnotation.thickness !== thicknessValue) {\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.thickness = thicknessValue;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { thickness: thicknessValue });\n this.modifyInCollections(currentAnnotation, 'thickness');\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureText' || currentAnnotation.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, false, true, clonedObject.thickness, redoClonedObject.thickness);\n }\n else {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, true, false);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Thickness', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n }\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.modifyStrokeColor = function (color) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.strokeColor = color;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { strokeColor: color });\n this.modifyInCollections(currentAnnotation, 'stroke');\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureText' || currentAnnotation.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, true, false, false, clonedObject.strokeColor, redoClonedObject.strokeColor);\n }\n else {\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.modifyFillColor = function (color) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n redoClonedObject.fillColor = color;\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], { fillColor: color });\n this.modifyInCollections(currentAnnotation, 'fill');\n this.triggerAnnotationPropChange(currentAnnotation, true, false, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Fill', '', clonedObject, redoClonedObject);\n this.pdfViewer.renderDrawing();\n };\n /**\n * @param dynamicText\n * @param annotName\n * @private\n */\n Annotation.prototype.modifyDynamicTextValue = function (dynamicText, annotName) {\n var currentAnnotation = null;\n currentAnnotation = this.pdfViewer.selectedItems.annotations.filter(function (s) { return s.annotName === annotName; })[0];\n if (currentAnnotation) {\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n currentAnnotation.dynamicText = dynamicText;\n redoClonedObject.dynamicText = dynamicText;\n if (clonedObject.dynamicText === '') {\n clonedObject.dynamicText = this.freeTextAnnotationModule.previousText;\n }\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], { dynamicText: dynamicText });\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'dynamicText Change', '', clonedObject, redoClonedObject);\n this.modifyInCollections(currentAnnotation, 'dynamicText');\n this.pdfViewer.renderDrawing();\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.modifyInCollections = function (annotationBase, property) {\n // eslint-disable-next-line\n var returnObj;\n if (annotationBase.measureType === '' || isNullOrUndefined(annotationBase.measureType)) {\n if (annotationBase.shapeAnnotationType === 'FreeText') {\n returnObj = this.freeTextAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else if (annotationBase.shapeAnnotationType === 'HandWrittenSignature' || annotationBase.shapeAnnotationType === 'SignatureText' || annotationBase.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n returnObj = this.pdfViewerBase.signatureModule.modifySignatureCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else if (annotationBase.shapeAnnotationType === 'Stamp') {\n returnObj = this.stampAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else if (annotationBase.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n returnObj = this.inkAnnotationModule.modifySignatureInkCollection(property, annotationBase.pageIndex, annotationBase);\n }\n else {\n returnObj = this.shapeAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n }\n else if (annotationBase.measureType === 'Distance' || annotationBase.measureType === 'Perimeter' ||\n annotationBase.measureType === 'Radius' || annotationBase.measureType === 'Area' || annotationBase.measureType === 'Volume') {\n returnObj = this.measureAnnotationModule.modifyInCollection(property, annotationBase.pageIndex, annotationBase);\n }\n if (this.isUndoRedoAction) {\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase, null, true);\n if (this.isUndoAction) {\n annotationBase.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n }\n else {\n if (property !== 'bounds') {\n this.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase);\n }\n }\n return returnObj;\n };\n /**\n * @private\n */\n Annotation.prototype.createPropertiesWindow = function () {\n var _this = this;\n if (!isBlazor()) {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_properties_window', className: 'e-pv-properties-window' });\n var appearanceTab = this.createAppearanceTab();\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n this.propertiesDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: this.pdfViewer.localeObj.getConstant('Line Properties'),\n target: this.pdfViewer.element, content: appearanceTab, close: function () {\n _this.destroyPropertiesWindow();\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.propertiesDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) }\n ];\n }\n else {\n this.propertiesDialog.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.propertiesDialog.enableRtl = true;\n }\n this.propertiesDialog.appendTo(dialogDiv);\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n // eslint-disable-next-line\n var fillColor = document.getElementById(this.pdfViewer.element.id + '_properties_fill_color');\n fillColor.disabled = true;\n }\n // eslint-disable-next-line max-len\n this.startArrowDropDown.content = this.createContent(this.getArrowString(this.pdfViewer.selectedItems.annotations[0].sourceDecoraterShapes)).outerHTML;\n this.endArrowDropDown.content = this.createContent(this.getArrowString(this.pdfViewer.selectedItems.annotations[0].taregetDecoraterShapes)).outerHTML;\n this.thicknessBox.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n this.fillColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill;\n this.refreshColorPicker(this.fillColorPicker);\n this.strokeColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n this.refreshColorPicker(this.strokeColorPicker);\n this.updateColorInIcon(this.fillDropDown.element, this.fillColorPicker.value);\n this.updateColorInIcon(this.strokeDropDown.element, this.strokeColorPicker.value);\n this.opacitySlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n this.updateOpacityIndicator();\n // eslint-disable-next-line\n if (parseInt(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray) >= 3) {\n this.lineStyleDropDown.content = this.createDropDownContent('dashed').outerHTML;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '2') {\n this.lineStyleDropDown.content = this.createDropDownContent('dotted').outerHTML;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '0') {\n this.lineStyleDropDown.content = this.createDropDownContent('solid').outerHTML;\n }\n this.selectedLineStyle = this.pdfViewer.selectedItems.annotations[0].borderStyle;\n this.selectedLineDashArray = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray;\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n this.leaderLengthBox.value = this.pdfViewer.selectedItems.annotations[0].leaderHeight;\n }\n }\n else {\n var opacityValue = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n var lineStartElement = this.getArrowString(this.pdfViewer.selectedItems.annotations[0].sourceDecoraterShapes);\n var lineEndElement = this.getArrowString(this.pdfViewer.selectedItems.annotations[0].taregetDecoraterShapes);\n var lineStyleElement = void 0;\n // eslint-disable-next-line\n if (parseInt(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray) >= 3) {\n lineStyleElement = 'Dashed';\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '2') {\n lineStyleElement = 'Dotted';\n }\n else if (this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeDashArray === '0') {\n lineStyleElement = 'Solid';\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenPropertiesDialog', opacityValue, lineStartElement, lineEndElement, lineStyleElement);\n }\n };\n Annotation.prototype.updatePropertiesWindowInBlazor = function () {\n // eslint-disable-next-line\n var thicknessElement = document.querySelector('#' + this.pdfViewer.element.id + '_line_thickness');\n // eslint-disable-next-line\n var fillColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_fill_color_button');\n // eslint-disable-next-line\n var strokeColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_stroke_color_button');\n // eslint-disable-next-line\n var leaderLengthElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_leader_length');\n thicknessElement.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n fillColorElement.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill;\n strokeColorElement.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n this.onStrokeColorChange(strokeColorElement.value);\n this.onFillColorChange(fillColorElement.value);\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n // eslint-disable-next-line\n leaderLengthElement.value = parseInt(this.pdfViewer.selectedItems.annotations[0].leaderHeight.toString());\n }\n };\n Annotation.prototype.destroyPropertiesWindow = function () {\n if (this.strokeColorPicker) {\n this.strokeColorPicker.destroy();\n this.strokeColorPicker = null;\n }\n if (this.fillColorPicker) {\n this.fillColorPicker.destroy();\n this.fillColorPicker = null;\n }\n if (this.endArrowDropDown) {\n this.endArrowDropDown.destroy();\n this.endArrowDropDown = null;\n }\n if (this.startArrowDropDown) {\n this.startArrowDropDown.destroy();\n this.startArrowDropDown = null;\n }\n if (this.opacitySlider) {\n this.opacitySlider.destroy();\n this.opacitySlider = null;\n }\n if (this.thicknessBox) {\n this.thicknessBox.destroy();\n this.thicknessBox = null;\n }\n if (this.lineStyleDropDown) {\n this.lineStyleDropDown.destroy();\n this.lineStyleDropDown = null;\n }\n if (this.leaderLengthBox) {\n this.leaderLengthBox.destroy();\n this.leaderLengthBox = null;\n }\n if (this.propertiesDialog) {\n this.propertiesDialog.destroy();\n this.propertiesDialog = null;\n }\n var dialogElement = this.pdfViewerBase.getElement('_properties_window');\n if (dialogElement) {\n dialogElement.parentElement.removeChild(dialogElement);\n }\n };\n Annotation.prototype.refreshColorPicker = function (colorPick) {\n colorPick.setProperties({ 'value': colorPick.value }, true);\n colorPick.refresh();\n };\n Annotation.prototype.createAppearanceTab = function () {\n var _this = this;\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var items = [{ text: this.pdfViewer.localeObj.getConstant('None') }, { text: this.pdfViewer.localeObj.getConstant('Open Arrow') }, { text: this.pdfViewer.localeObj.getConstant('Closed Arrow') },\n { text: this.pdfViewer.localeObj.getConstant('Round Arrow') }, { text: this.pdfViewer.localeObj.getConstant('Square Arrow') }, { text: this.pdfViewer.localeObj.getConstant('Diamond Arrow') }];\n // eslint-disable-next-line max-len\n var appearanceDiv = createElement('div', { id: elementID + '_properties_appearance' });\n var lineStyleContainer = createElement('div', { className: 'e-pv-properties-line-style-prop' });\n appearanceDiv.appendChild(lineStyleContainer);\n // eslint-disable-next-line max-len\n var lineHeadStartElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Start Arrow'), lineStyleContainer, 'text', 'button', true, 'e-pv-properties-line-start', elementID + '_properties_line_start');\n // eslint-disable-next-line max-len\n this.startArrowDropDown = new DropDownButton({ items: items, cssClass: 'e-pv-properties-line-start', select: this.onStartArrowHeadStyleSelect.bind(this) }, lineHeadStartElement);\n var lineHeadEndElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('End Arrow'), lineStyleContainer, 'text', 'button', true, 'e-pv-properties-line-end', elementID + '_properties_line_end');\n // eslint-disable-next-line max-len\n var borderStyleContainer = createElement('div', { className: 'e-pv-properties-border-style' });\n appearanceDiv.appendChild(borderStyleContainer);\n // eslint-disable-next-line max-len\n this.endArrowDropDown = new DropDownButton({ items: items, cssClass: 'e-pv-properties-line-end', select: this.onEndArrowHeadStyleSelect.bind(this) }, lineHeadEndElement);\n var lineStyleElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Line Style'), borderStyleContainer, 'text', 'button', true, 'e-pv-properties-line-style', elementID + '_properties_line_style');\n var dropDownTarget = this.createStyleList();\n // eslint-disable-next-line max-len\n this.lineStyleDropDown = new DropDownButton({ cssClass: 'e-pv-properties-line-style', target: dropDownTarget }, lineStyleElement);\n // eslint-disable-next-line max-len\n var thicknessElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Line Thickness'), borderStyleContainer, 'text', 'input', true, 'e-pv-properties-line-thickness', elementID + '_properties_thickness');\n this.thicknessBox = new NumericTextBox({ value: 0, format: '## pt', cssClass: 'e-pv-properties-line-thickness', min: 0, max: 12 }, thicknessElement);\n var colorStyleContainer = createElement('div', { className: 'e-pv-properties-color-style' });\n appearanceDiv.appendChild(colorStyleContainer);\n // eslint-disable-next-line max-len\n var fillColorElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Fill Color'), colorStyleContainer, 'color', 'button', true, 'e-pv-properties-line-fill-color', elementID + '_properties_fill_color');\n this.fillColorPicker = this.createColorPicker(elementID + '_properties_fill_color', true);\n this.fillColorPicker.change = function (args) {\n var currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n _this.fillDropDown.toggle();\n _this.updateColorInIcon(_this.fillDropDown.element, currentColor);\n };\n // eslint-disable-next-line max-len\n this.fillDropDown = this.createDropDownButton(fillColorElement, 'e-pv-properties-fill-color-icon', this.fillColorPicker.element.parentElement);\n this.fillDropDown.beforeOpen = this.onFillDropDownBeforeOpen.bind(this);\n this.fillDropDown.open = function () {\n _this.fillColorPicker.refresh();\n };\n // eslint-disable-next-line max-len\n var strokeColorElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Line Color'), colorStyleContainer, 'color', 'button', true, 'e-pv-properties-line-stroke-color', elementID + '_properties_stroke_color');\n this.strokeColorPicker = this.createColorPicker(elementID + '_properties_stroke_color', false);\n this.strokeColorPicker.change = function (args) {\n var currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n _this.strokeDropDown.toggle();\n _this.updateColorInIcon(_this.strokeDropDown.element, currentColor);\n };\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(strokeColorElement, 'e-pv-properties-stroke-color-icon', this.strokeColorPicker.element.parentElement);\n this.strokeDropDown.beforeOpen = this.onStrokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = function () {\n _this.strokeColorPicker.refresh();\n };\n var opacityContainer = createElement('div', { className: 'e-pv-properties-opacity-style' });\n appearanceDiv.appendChild(opacityContainer);\n // eslint-disable-next-line max-len\n var opacityElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Opacity'), opacityContainer, '', 'div', true, 'e-pv-properties-line-opacity', elementID + '_properties_opacity');\n this.opacitySlider = new Slider({\n type: 'MinRange', max: 100, min: 0, cssClass: 'e-pv-properties-line-opacity', change: function () {\n _this.updateOpacityIndicator();\n }\n }, opacityElement);\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n // eslint-disable-next-line max-len\n var lineLengthElement = this.createInputElement(this.pdfViewer.localeObj.getConstant('Leader Length'), opacityContainer, 'text', 'input', true, 'e-pv-properties-line-leader-length', elementID + '_properties_leader_length');\n this.leaderLengthBox = new NumericTextBox({ value: 0, format: '## pt', cssClass: 'e-pv-properties-line-leader-length', min: 0, max: 100 }, lineLengthElement);\n }\n return appearanceDiv;\n };\n Annotation.prototype.createContent = function (text) {\n var divElement = createElement('div', { className: 'e-pv-properties-line-style-content' });\n divElement.textContent = text;\n return divElement;\n };\n Annotation.prototype.onStrokeDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.strokeColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n }\n this.strokeColorPicker.refresh();\n };\n Annotation.prototype.onFillDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.fillColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n }\n this.fillColorPicker.refresh();\n };\n Annotation.prototype.createStyleList = function () {\n var _this = this;\n var ulElement = createElement('ul');\n document.body.appendChild(ulElement);\n var solidLi = this.createListForStyle('solid');\n solidLi.addEventListener('click', function () {\n _this.setThickness('0', 'solid');\n });\n ulElement.appendChild(solidLi);\n var dottedLi = this.createListForStyle('dotted');\n dottedLi.addEventListener('click', function () {\n _this.setThickness('2', 'dotted');\n });\n ulElement.appendChild(dottedLi);\n var dashedLi = this.createListForStyle('dashed');\n dashedLi.addEventListener('click', function () {\n _this.setThickness('3', 'dashed');\n });\n ulElement.appendChild(dashedLi);\n return ulElement;\n };\n Annotation.prototype.createColorPicker = function (idString, isNoColor) {\n var inputElement = createElement('input', { id: idString + '_target' });\n document.body.appendChild(inputElement);\n var colorPicker = new ColorPicker({\n inline: true, mode: 'Palette', enableOpacity: false, value: '#000000', showButtons: false, modeSwitcher: false,\n noColor: isNoColor\n });\n if (this.pdfViewer.enableRtl) {\n colorPicker.enableRtl = true;\n }\n colorPicker.appendTo(inputElement);\n return colorPicker;\n };\n Annotation.prototype.createDropDownButton = function (element, iconClass, target) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n return dropDownButton;\n };\n Annotation.prototype.updateColorInIcon = function (element, color) {\n element.childNodes[0].style.borderBottomColor = color;\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.onFillColorChange = function (color) {\n // eslint-disable-next-line\n var colorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_fill_color_button');\n if (color !== 'transparent') {\n colorElement.children[0].style.borderBottomColor = color;\n }\n };\n /**\n * @param color\n * @private\n */\n Annotation.prototype.onStrokeColorChange = function (color) {\n // eslint-disable-next-line\n var colorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_stroke_color_button');\n if (color !== 'transparent') {\n colorElement.children[0].style.borderBottomColor = color;\n }\n };\n Annotation.prototype.setThickness = function (value, style, isBlazor$$1) {\n if (!isBlazor$$1) {\n this.lineStyleDropDown.content = this.createDropDownContent(style).outerHTML;\n }\n this.selectedLineDashArray = value;\n if (value === '0') {\n this.selectedLineStyle = 'Solid';\n }\n else if (value === '2' || value === '3') {\n this.selectedLineStyle = 'Dashed';\n }\n };\n Annotation.prototype.createDropDownContent = function (style) {\n var divElement = createElement('div', { className: 'e-pv-line-styles-content-container' });\n // eslint-disable-next-line max-len\n var spanElement = createElement('span', { className: 'e-pv-line-styles-content', styles: 'border-bottom-style:' + style });\n divElement.appendChild(spanElement);\n return divElement;\n };\n Annotation.prototype.createListForStyle = function (style) {\n var liElement = createElement('li', { className: 'e-menu-item' });\n var divElement = createElement('div', { className: 'e-pv-line-styles-container' });\n // eslint-disable-next-line max-len\n var spanElement = createElement('span', { className: 'e-pv-line-styles-item', styles: 'border-bottom-style:' + style });\n divElement.appendChild(spanElement);\n liElement.appendChild(divElement);\n return liElement;\n };\n Annotation.prototype.onStartArrowHeadStyleSelect = function (args) {\n this.startArrowDropDown.content = this.createContent(args.item.text).outerHTML;\n };\n Annotation.prototype.onEndArrowHeadStyleSelect = function (args) {\n this.endArrowDropDown.content = this.createContent(args.item.text).outerHTML;\n };\n // eslint-disable-next-line max-len\n Annotation.prototype.createInputElement = function (labelText, parentElement, inputType, input, isLabelNeeded, className, idString) {\n var container = createElement('div', { id: idString + '_container', className: className + '-container' });\n if (isLabelNeeded) {\n var label = createElement('div', { id: idString + '_label', className: className + '-label' });\n label.textContent = labelText;\n container.appendChild(label);\n }\n if (this.pdfViewer.localeObj.getConstant('Opacity') === labelText) {\n this.opacityIndicator = createElement('span', { className: 'e-pv-properties-opacity-indicator' });\n container.appendChild(this.opacityIndicator);\n }\n var textBoxInput = createElement(input, { id: idString });\n if (input === 'input') {\n textBoxInput.type = inputType;\n }\n container.appendChild(textBoxInput);\n parentElement.appendChild(container);\n return textBoxInput;\n };\n Annotation.prototype.updateOpacityIndicator = function () {\n this.opacityIndicator.textContent = this.opacitySlider.value + '%';\n };\n /**\n * @private\n */\n Annotation.prototype.onOkClicked = function (opacityValue) {\n var startArrow;\n var endArrow;\n var thickness;\n var strokeColor;\n var fillColor;\n var opacity;\n if (!isBlazor()) {\n startArrow = this.getArrowTypeFromDropDown(this.startArrowDropDown.content);\n endArrow = this.getArrowTypeFromDropDown(this.endArrowDropDown.content);\n thickness = this.thicknessBox.value;\n strokeColor = this.strokeColorPicker.getValue(this.strokeColorPicker.value, 'hex');\n strokeColor = (strokeColor === '') ? '#ffffff00' : strokeColor;\n fillColor = this.fillColorPicker.getValue(this.fillColorPicker.value, 'hex');\n // eslint-disable-next-line max-len\n fillColor = (fillColor === '' || fillColor === '#transp' || this.fillColorPicker.value === '#ffffff00') ? '#ffffff00' : fillColor;\n opacity = this.opacitySlider.value / 100;\n }\n else {\n // eslint-disable-next-line\n var lineStartElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_line_start');\n // eslint-disable-next-line\n var lineEndElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_line_end');\n // eslint-disable-next-line\n var thicknessElement = document.querySelector('#' + this.pdfViewer.element.id + '_line_thickness');\n // eslint-disable-next-line\n var lineStyleElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_style');\n // eslint-disable-next-line\n var fillColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_fill_color_button');\n // eslint-disable-next-line\n var strokeColorElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_stroke_color_button');\n // eslint-disable-next-line\n var opacityElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_opacity');\n startArrow = this.getArrowTypeFromDropDown(lineStartElement.value, true);\n endArrow = this.getArrowTypeFromDropDown(lineEndElement.value, true);\n // eslint-disable-next-line\n thickness = parseInt(thicknessElement.value);\n strokeColor = this.getValue(strokeColorElement.children[0].style.borderBottomColor, 'hex');\n strokeColor = (strokeColor === '') ? '#ffffff00' : strokeColor;\n fillColor = this.getValue(fillColorElement.children[0].style.borderBottomColor, 'hex');\n fillColor = (fillColor === '') ? '#ffffff00' : fillColor;\n if (opacityValue) {\n opacity = (opacityValue) / 100;\n }\n else {\n opacity = opacityElement.value / 100;\n }\n if (lineStyleElement.value) {\n if (lineStyleElement.value === 'Solid') {\n this.setThickness('0', 'solid', true);\n }\n else if (lineStyleElement.value === 'Dotted') {\n this.setThickness('2', 'dotted', true);\n }\n else if (lineStyleElement.value === 'Dashed') {\n this.setThickness('3', 'dashed', true);\n }\n }\n }\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n var clonedObject = cloneObject(currentAnnotation);\n var redoClonedObject = cloneObject(currentAnnotation);\n var newNode = {};\n var isColorChanged = false;\n var isStrokeColorChanged = false;\n var isThicknessChanged = false;\n var isOpacityChanged = false;\n var isLineHeadStartStyleChanged = false;\n var isLineHeadEndStyleChanged = false;\n var isBorderDashArrayChanged = false;\n if (startArrow !== currentAnnotation.sourceDecoraterShapes) {\n newNode.sourceDecoraterShapes = startArrow;\n redoClonedObject.lineHeadStart = this.getArrowString(startArrow);\n isLineHeadStartStyleChanged = true;\n }\n if (endArrow !== currentAnnotation.taregetDecoraterShapes) {\n newNode.taregetDecoraterShapes = endArrow;\n redoClonedObject.lineHeadEnd = this.getArrowString(endArrow);\n isLineHeadEndStyleChanged = true;\n }\n if (thickness !== currentAnnotation.wrapper.children[0].style.strokeWidth) {\n newNode.thickness = thickness;\n redoClonedObject.thickness = thickness;\n isThicknessChanged = true;\n }\n if (strokeColor !== currentAnnotation.wrapper.children[0].style.strokeColor) {\n newNode.strokeColor = strokeColor;\n redoClonedObject.strokeColor = strokeColor;\n isStrokeColorChanged = true;\n }\n if (fillColor !== currentAnnotation.wrapper.children[0].style.fill) {\n newNode.fillColor = fillColor;\n redoClonedObject.fillColor = fillColor;\n isColorChanged = true;\n }\n if (opacity !== currentAnnotation.wrapper.children[0].style.opacity) {\n newNode.opacity = opacity;\n redoClonedObject.opacity = opacity;\n isOpacityChanged = true;\n }\n if (this.selectedLineDashArray !== currentAnnotation.wrapper.children[0].style.strokeDashArray) {\n newNode.borderDashArray = this.selectedLineDashArray;\n newNode.borderStyle = this.selectedLineStyle;\n redoClonedObject.borderDashArray = newNode.borderDashArray;\n redoClonedObject.borderStyle = newNode.borderStyle;\n isBorderDashArrayChanged = true;\n }\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance' && this.leaderLengthBox.value !== this.pdfViewer.selectedItems.annotations[0].leaderHeight) {\n newNode.leaderHeight = this.leaderLengthBox.value;\n }\n }\n else {\n // eslint-disable-next-line\n var leaderLengthElement = document.querySelector('#' + this.pdfViewer.element.id + '_properties_leader_length');\n // eslint-disable-next-line\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance' && parseInt(leaderLengthElement.value) !== this.pdfViewer.selectedItems.annotations[0].leaderHeight) {\n // eslint-disable-next-line\n newNode.leaderHeight = parseInt(leaderLengthElement.value);\n }\n }\n this.pdfViewer.nodePropertyChange(this.pdfViewer.selectedItems.annotations[0], newNode);\n this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill = fillColor;\n // eslint-disable-next-line max-len\n this.triggerAnnotationPropChange(this.pdfViewer.selectedItems.annotations[0], isColorChanged, isStrokeColorChanged, isThicknessChanged, isOpacityChanged, isLineHeadStartStyleChanged, isLineHeadEndStyleChanged, isBorderDashArrayChanged);\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'thickness');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'stroke');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'fill');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'opacity');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'dashArray');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'startArrow');\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'endArrow');\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance') {\n this.modifyInCollections(this.pdfViewer.selectedItems.annotations[0], 'leaderLength');\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Line properties change', '', clonedObject, redoClonedObject);\n this.renderAnnotations(currentAnnotation.pageIndex, null, null, null);\n if (!isBlazor()) {\n this.propertiesDialog.hide();\n }\n };\n Annotation.prototype.onCancelClicked = function () {\n this.propertiesDialog.hide();\n };\n Annotation.prototype.getArrowTypeFromDropDown = function (arrowType, isBlazor$$1) {\n if (!isBlazor$$1) {\n arrowType = arrowType.split('
    ')[0].split('\">')[1];\n }\n var arrow = 'None';\n switch (arrowType) {\n case this.pdfViewer.localeObj.getConstant('None'):\n arrow = 'None';\n break;\n case this.pdfViewer.localeObj.getConstant('Open Arrow'):\n arrow = 'OpenArrow';\n break;\n case this.pdfViewer.localeObj.getConstant('Closed Arrow'):\n arrow = 'Arrow';\n break;\n case this.pdfViewer.localeObj.getConstant('Round Arrow'):\n arrow = 'Circle';\n break;\n case this.pdfViewer.localeObj.getConstant('Square Arrow'):\n arrow = 'Square';\n break;\n case this.pdfViewer.localeObj.getConstant('Diamond Arrow'):\n arrow = 'Diamond';\n break;\n case this.pdfViewer.localeObj.getConstant('Butt'):\n arrow = 'Butt';\n break;\n }\n return arrow;\n };\n /**\n * @param arrow\n * @private\n */\n Annotation.prototype.getArrowString = function (arrow) {\n var arrowType = this.pdfViewer.localeObj.getConstant('None');\n switch (arrow) {\n case 'Arrow':\n arrowType = this.pdfViewer.localeObj.getConstant('Closed');\n break;\n case 'OpenArrow':\n arrowType = this.pdfViewer.localeObj.getConstant('Open Arrow');\n break;\n case 'Circle':\n arrowType = this.pdfViewer.localeObj.getConstant('Round');\n break;\n case 'None':\n case 'Square':\n case 'Diamond':\n arrowType = this.pdfViewer.localeObj.getConstant(arrow);\n break;\n case 'Butt':\n arrowType = this.pdfViewer.localeObj.getConstant('Butt');\n break;\n }\n return arrowType;\n };\n /**\n * @private\n */\n Annotation.prototype.onAnnotationMouseUp = function () {\n if (this.pdfViewer.selectedItems.annotations.length !== 0) {\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.enableBasedOnType();\n this.pdfViewer.toolbar.annotationToolbarModule.selectAnnotationDeleteItem(true);\n if (!Browser.isDevice) {\n this.pdfViewer.toolbar.annotationToolbarModule.updateAnnnotationPropertyItems();\n }\n }\n this.pdfViewerBase.disableTextSelectionMode();\n }\n else {\n if (this.pdfViewer.textSelectionModule && !this.pdfViewerBase.isPanMode && !this.pdfViewer.designerMode) {\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line max-len\n var isSkip = this.pdfViewer.toolbar.annotationToolbarModule.inkAnnotationSelected;\n if (this.pdfViewer.annotation.freeTextAnnotationModule && !this.pdfViewer.annotation.freeTextAnnotationModule.isInuptBoxInFocus && !isSkip) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationPropertiesTools(false);\n this.pdfViewer.toolbar.annotationToolbarModule.enableFreeTextAnnotationPropertiesTools(false);\n }\n this.pdfViewer.toolbar.annotationToolbarModule.updateAnnnotationPropertyItems();\n this.pdfViewer.toolbar.annotationToolbarModule.selectAnnotationDeleteItem(false);\n }\n }\n };\n /**\n * @param pdfAnnotationBase\n * @param event\n * @param pdfAnnotationBase\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.onShapesMouseup = function (pdfAnnotationBase, event) {\n // eslint-disable-next-line max-len\n pdfAnnotationBase = !isNullOrUndefined(this.pdfViewer.selectedItems.annotations[0]) ? this.pdfViewer.selectedItems.annotations[0] : pdfAnnotationBase;\n if (pdfAnnotationBase) {\n if (this.textMarkupAnnotationModule && this.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n }\n // eslint-disable-next-line max-len\n if ((this.pdfViewerBase.tool instanceof NodeDrawingTool || this.pdfViewerBase.tool instanceof LineTool) && !this.pdfViewerBase.tool.dragging) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n var index = this.getAnnotationIndex(pdfAnnotationBase.pageIndex, pdfAnnotationBase.id);\n // eslint-disable-next-line\n var bounds = { left: pdfAnnotationBase.bounds.x, top: pdfAnnotationBase.bounds.y, width: pdfAnnotationBase.bounds.width, height: pdfAnnotationBase.bounds.height };\n if (this.pdfViewerBase.tool instanceof LineTool) {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n if (!this.pdfViewerBase.isAnnotationAdded || pdfAnnotationBase.measureType === 'Distance') {\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n // eslint-disable-next-line max-len\n this.shapeAnnotationModule.renderShapeAnnotations(pdfAnnotationBase, this.pdfViewer.annotation.getEventPageNumber(event));\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' ||\n pdfAnnotationBase.measureType === 'Radius') {\n // eslint-disable-next-line max-len\n this.measureAnnotationModule.renderMeasureShapeAnnotations(pdfAnnotationBase, this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n else if (this.pdfViewerBase.tool instanceof MoveTool || this.pdfViewerBase.tool instanceof ResizeTool) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n if (pdfAnnotationBase.shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.freeTextAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else if (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText') {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.signatureModule.modifySignatureCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else if (pdfAnnotationBase.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n this.inkAnnotationModule.modifySignatureInkCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else if (pdfAnnotationBase.shapeAnnotationType === 'Stamp' || pdfAnnotationBase.shapeAnnotationType === 'Image') {\n // eslint-disable-next-line max-len\n this.stampAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.shapeAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' || pdfAnnotationBase.measureType === 'Radius' || pdfAnnotationBase.measureType === 'Area' || pdfAnnotationBase.measureType === 'Volume') {\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n if (this.pdfViewerBase.tool instanceof ResizeTool) {\n if (!pdfAnnotationBase.formFieldAnnotationType) {\n this.triggerAnnotationResize(pdfAnnotationBase);\n }\n }\n if (this.pdfViewerBase.tool instanceof MoveTool) {\n if (this.pdfViewerBase.action !== 'Select') {\n if (!pdfAnnotationBase.formFieldAnnotationType) {\n this.triggerAnnotationMove(pdfAnnotationBase);\n }\n }\n }\n }\n else if (this.pdfViewerBase.tool instanceof ConnectTool) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n // eslint-disable-next-line max-len\n if ((pdfAnnotationBase.shapeAnnotationType === 'Line' || pdfAnnotationBase.shapeAnnotationType === 'LineWidthArrowHead' || pdfAnnotationBase.shapeAnnotationType === 'Polygon')) {\n this.pdfViewer.annotation.shapeAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' || pdfAnnotationBase.measureType === 'Area' || pdfAnnotationBase.measureType === 'Volume') {\n if (pdfAnnotationBase.measureType === 'Distance') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('leaderLength', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('bounds', this.pdfViewer.annotation.getEventPageNumber(event), pdfAnnotationBase);\n }\n this.triggerAnnotationResize(pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane && this.pdfViewerBase.navigationPane.annotationMenuObj && this.pdfViewer.isSignatureEditable && (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage')) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n }\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearTextMarkupMode();\n if (pdfAnnotationBase.measureType === '' || isNullOrUndefined(pdfAnnotationBase.measureType)) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearMeasureMode();\n }\n else if (pdfAnnotationBase.measureType === 'Distance' || pdfAnnotationBase.measureType === 'Perimeter' || pdfAnnotationBase.measureType === 'Area' || pdfAnnotationBase.measureType === 'Volume' || pdfAnnotationBase.measureType === 'Radius') {\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearShapeMode();\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && this.pdfViewer.selectedItems.annotations[0].formFieldAnnotationType === null) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableAnnotationPropertiesTools(true);\n }\n if (!isBlazor()) {\n if (this.pdfViewer.selectedItems.annotations.length === 1 && !this.pdfViewer.designerMode) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.formDesignerModule && pdfAnnotationBase.properties.id != '' && pdfAnnotationBase.properties.id != null && pdfAnnotationBase.properties.id.slice(0, 4) != 'sign') {\n var id = document.getElementById(pdfAnnotationBase.properties.id);\n var isFieldReadOnly = id && id.disabled;\n if (!isFieldReadOnly) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n else if (this.pdfViewer.annotation && isFieldReadOnly) {\n this.pdfViewer.annotation.clearSelection();\n }\n }\n else {\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var formDesignerMainDiv = document.getElementById(this.pdfViewer.element.id + \"_formdesigner_toolbar\");\n formDesignerMainDiv.style.display = \"none\";\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.formDesignerToolbarModule.isToolbarHidden = false;\n this.pdfViewer.toolbarModule.formDesignerToolbarModule.showFormDesignerToolbar(this.pdfViewer.toolbarModule.formDesignerItem);\n this.pdfViewer.toolbarModule.annotationToolbarModule.adjustViewer(true);\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param pdfAnnotationBase\n * @param isNewlyAdded\n * @param pdfAnnotationBase\n * @param isNewlyAdded\n * @private\n */\n Annotation.prototype.updateCalibrateValues = function (pdfAnnotationBase, isNewlyAdded) {\n if (pdfAnnotationBase.measureType === 'Distance') {\n pdfAnnotationBase.notes = updateDistanceLabel(pdfAnnotationBase, pdfAnnotationBase.vertexPoints, this.measureAnnotationModule);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Radius') {\n pdfAnnotationBase.notes = updateRadiusLabel(pdfAnnotationBase, this.measureAnnotationModule);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Perimeter') {\n pdfAnnotationBase.notes = updatePerimeterLabel(pdfAnnotationBase, pdfAnnotationBase.vertexPoints, this.measureAnnotationModule);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Area') {\n // eslint-disable-next-line max-len\n pdfAnnotationBase.notes = this.measureAnnotationModule.calculateArea(pdfAnnotationBase.vertexPoints, pdfAnnotationBase.id, pdfAnnotationBase.pageIndex);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n updateCalibrateLabel(pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n else if (pdfAnnotationBase.measureType === 'Volume') {\n // eslint-disable-next-line max-len\n pdfAnnotationBase.notes = this.measureAnnotationModule.calculateVolume(pdfAnnotationBase.vertexPoints, pdfAnnotationBase.id, pdfAnnotationBase.pageIndex);\n if (pdfAnnotationBase.enableShapeLabel === true) {\n pdfAnnotationBase.labelContent = pdfAnnotationBase.notes;\n updateCalibrateLabel(pdfAnnotationBase);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.measureAnnotationModule.modifyInCollection('notes', pdfAnnotationBase.pageIndex, pdfAnnotationBase, isNewlyAdded);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(pdfAnnotationBase.annotName, pdfAnnotationBase.notes);\n this.renderAnnotations(pdfAnnotationBase.pageIndex, null, null, null, null);\n }\n };\n /**\n * @private\n */\n Annotation.prototype.onAnnotationMouseDown = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1 && this.pdfViewer.selectedItems.annotations[0].formFieldAnnotationType === null) {\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n if (!isBlazor() && Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanel.style.display === 'none') {\n if (this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(\"\");\n }\n else {\n if (this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.createAnnotationToolbarForMobile();\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType);\n var editIcon = document.getElementById(this.pdfViewer.element.id + '_annotationIcon');\n if (editIcon && !editIcon.parentElement.classList.contains('e-pv-select')) {\n editIcon.parentElement.classList.add('e-pv-select');\n }\n }\n }\n }\n }\n this.enableBasedOnType();\n this.pdfViewer.toolbar.annotationToolbarModule.selectAnnotationDeleteItem(true);\n }\n }\n };\n Annotation.prototype.enableBasedOnType = function () {\n var isLock = false;\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n isLock = annotation.annotationSettings.isLock;\n if (isLock && this.checkAllowedInteractions('PropertyChange', annotation)) {\n isLock = false;\n }\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!isLock) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableStampAnnotationPropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableStampAnnotationPropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationPropertiesTools(false);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableFreeTextAnnotationPropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableSignaturePropertiesTools(true);\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n this.pdfViewer.toolbar.annotationToolbarModule.enableSignaturePropertiesTools(true);\n }\n else {\n if (this.pdfViewer.selectedItems.annotations.length === 1 && this.pdfViewer.selectedItems.annotations[0].formFieldAnnotationType === null) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationPropertiesTools(true);\n }\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation && !(this.pdfViewer.selectedItems.annotations[0].propName === 'annotations') && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createMobileAnnotationToolbar(true, true);\n }\n };\n Annotation.prototype.getProperDate = function (date) {\n var dateObject = new Date(date.toString());\n if (isNaN(dateObject.getFullYear())) {\n var dateString = date.slice(2, 16);\n // eslint-disable-next-line max-len\n dateString = dateString.slice(0, 4) + '/' + dateString.slice(4, 6) + '/' + dateString.slice(6, 8) + ' ' + dateString.slice(8, 10) + ':' + dateString.slice(10, 12) + ':' + dateString.slice(12, 14);\n dateObject = new Date(dateString);\n }\n // eslint-disable-next-line max-len\n return (dateObject.getMonth() + 1) + '/' + dateObject.getDate() + '/' + dateObject.getFullYear() + ' ' + dateObject.getHours() + ':' + dateObject.getMinutes() + ':' + dateObject.getSeconds();\n };\n /**\n * @param pageAnnotations\n * @param pageNumber\n * @private\n */\n Annotation.prototype.getPageCollection = function (pageAnnotations, pageNumber) {\n var index = null;\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].pageIndex === pageNumber) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * @param annotations\n * @param id\n * @param annotations\n * @param id\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationWithId = function (annotations, id) {\n // eslint-disable-next-line\n var annotation;\n for (var i = 0; i < annotations.length; i++) {\n if (id === annotations[i].id) {\n annotation = annotations[i];\n }\n }\n return annotation;\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getEventPageNumber = function (event) {\n var eventTarget = event.target;\n if (eventTarget.classList.contains('e-pv-hyperlink')) {\n eventTarget = eventTarget.parentElement;\n }\n else if (eventTarget.parentElement && eventTarget.parentElement.classList.contains('foreign-object')) {\n eventTarget = eventTarget.parentElement.parentElement.parentElement.parentElement;\n }\n else if (eventTarget.classList.contains('e-pdfviewer-formFields')) {\n eventTarget = eventTarget.parentElement;\n }\n var pageString;\n if (eventTarget) {\n // eslint-disable-next-line\n pageString = eventTarget.id.split('_text_')[1] || eventTarget.id.split('_textLayer_')[1] || eventTarget.id.split('_annotationCanvas_')[1] || eventTarget.id.split('_pageDiv_')[1];\n }\n if (isNaN(pageString)) {\n event = this.pdfViewerBase.annotationEvent;\n if (event) {\n eventTarget = event.target;\n // eslint-disable-next-line\n pageString = eventTarget.id.split('_text_')[1] || eventTarget.id.split('_textLayer_')[1] || eventTarget.id.split('_annotationCanvas_')[1] || eventTarget.id.split('_pageDiv_')[1];\n }\n }\n // eslint-disable-next-line\n return parseInt(pageString);\n };\n /**\n * @param commentsAnnotations\n * @param parentAnnotation\n * @param author\n * @param commentsAnnotations\n * @param parentAnnotation\n * @param author\n * @param commentsAnnotations\n * @param parentAnnotation\n * @param author\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getAnnotationComments = function (commentsAnnotations, parentAnnotation, author) {\n var newArray = [];\n var annotationObject = null;\n if (commentsAnnotations) {\n if (commentsAnnotations.length > 0) {\n for (var i = 0; i < commentsAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = commentsAnnotations[i];\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: annotation.Author, modifiedDate: annotation.ModifiedDate, note: annotation.Note, state: annotation.state, stateModel: annotation.stateModel,\n comments: [], review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n annotName: annotation.AnnotName, parentId: parentAnnotation.AnnotName, subject: 'Comments',\n isLock: annotation.IsLock\n };\n newArray[newArray.length] = annotationObject;\n }\n }\n }\n return newArray;\n };\n Annotation.prototype.getRandomNumber = function () {\n // eslint-disable-next-line\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line\n var random = Math.random() * 16 | 0;\n return random.toString(16);\n });\n };\n /**\n * @private\n */\n Annotation.prototype.createGUID = function () {\n // eslint-disable-next-line max-len\n return this.getRandomNumber();\n };\n /**\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @private\n */\n // eslint-disable-next-line max-len\n Annotation.prototype.createAnnotationLayer = function (pageDiv, pageWidth, pageHeight, pageNumber, displayMode) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n this.updateCanvas(canvas, pageWidth, pageHeight, pageNumber);\n return canvas;\n }\n else {\n // eslint-disable-next-line max-len\n var annotationCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_annotationCanvas_' + pageNumber, className: 'e-pv-annotation-canvas' });\n this.updateCanvas(annotationCanvas, pageWidth, pageHeight, pageNumber);\n pageDiv.appendChild(annotationCanvas);\n return annotationCanvas;\n }\n };\n /**\n * @param width\n * @param height\n * @param pageNumber\n * @private\n */\n Annotation.prototype.resizeAnnotations = function (width, height, pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n this.pdfViewerBase.applyElementStyles(canvas, pageNumber);\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n Annotation.prototype.clearAnnotationCanvas = function (pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n var zoom = this.pdfViewerBase.getZoomFactor();\n var ratio = this.pdfViewerBase.getZoomRatio(zoom);\n if (canvas) {\n var width = this.pdfViewerBase.pageSize[pageNumber].width;\n var height = this.pdfViewerBase.pageSize[pageNumber].height;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n canvas.style.width = width * zoom + 'px';\n canvas.style.height = height * zoom + 'px';\n }\n };\n /**\n * @param pageNumber\n * @param shapeAnnotation\n * @param measureShapeAnnotation\n * @param textMarkupAnnotation\n * @param canvas\n * @param isImportAnnotations\n * @param pageNumber\n * @param shapeAnnotation\n * @param measureShapeAnnotation\n * @param textMarkupAnnotation\n * @param canvas\n * @param isImportAnnotations\n * @param pageNumber\n * @param shapeAnnotation\n * @param measureShapeAnnotation\n * @param textMarkupAnnotation\n * @param canvas\n * @param isImportAnnotations\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.renderAnnotations = function (pageNumber, shapeAnnotation, measureShapeAnnotation, textMarkupAnnotation, canvas, isImportAnnotations) {\n this.clearAnnotationCanvas(pageNumber);\n if (this.shapeAnnotationModule) {\n if (isImportAnnotations) {\n this.shapeAnnotationModule.renderShapeAnnotations(shapeAnnotation, pageNumber, true);\n }\n else {\n this.shapeAnnotationModule.renderShapeAnnotations(shapeAnnotation, pageNumber);\n }\n }\n if (this.measureAnnotationModule) {\n if (isImportAnnotations) {\n this.measureAnnotationModule.renderMeasureShapeAnnotations(measureShapeAnnotation, pageNumber, true);\n }\n else {\n this.measureAnnotationModule.renderMeasureShapeAnnotations(measureShapeAnnotation, pageNumber);\n }\n }\n if (canvas !== null && canvas !== undefined) {\n canvas = canvas;\n }\n else {\n canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n }\n this.pdfViewer.drawing.refreshCanvasDiagramLayer(canvas, pageNumber);\n if (this.textMarkupAnnotationModule) {\n if (isImportAnnotations) {\n // eslint-disable-next-line\n this.textMarkupAnnotationModule.renderTextMarkupAnnotationsInPage(textMarkupAnnotation, pageNumber, true);\n }\n else {\n // eslint-disable-next-line\n this.textMarkupAnnotationModule.renderTextMarkupAnnotationsInPage(textMarkupAnnotation, pageNumber);\n }\n }\n };\n /**\n * @param pageNumber\n * @param annotation\n * @param annotationId\n * @param pageNumber\n * @param annotation\n * @param annotationId\n * @param pageNumber\n * @param annotation\n * @param annotationId\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.storeAnnotations = function (pageNumber, annotation, annotationId) {\n // let annotationId: string = '_annotations_textMarkup';\n // if (annotation is ITextMarkupAnnotation) {\n // annotationId = '_annotations_textMarkup';\n // } else if (annotation as IShapeAnnotation) {\n // annotationId = '_annotations_shape';\n // } else {\n // annotationId = '_annotations_stamp';\n // }\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (sessionSize > 4500) {\n this.clearAnnotationStorage();\n this.pdfViewerBase.isStorageExceed = true;\n if (!(this.pdfViewerBase.isFormStorageExceed)) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n }\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + annotationId);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + annotationId];\n }\n var index = 0;\n if (!storeObject) {\n this.storeAnnotationCollections(annotation, pageNumber);\n var pageAnnotation = { pageIndex: pageNumber, annotations: [] };\n pageAnnotation.annotations.push(annotation);\n index = pageAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(pageAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + annotationId] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + annotationId, annotationStringified);\n }\n }\n else {\n this.storeAnnotationCollections(annotation, pageNumber);\n var annotObject_1 = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + annotationId);\n }\n var pageIndex_1 = this.pdfViewer.annotationModule.getPageCollection(annotObject_1, pageNumber);\n if (annotObject_1[pageIndex_1]) {\n annotObject_1[pageIndex_1].annotations.filter(function (item, index) {\n if (item.annotName === annotation.annotName) {\n annotObject_1[pageIndex_1].annotations.splice(index, 1);\n }\n });\n annotObject_1[pageIndex_1].annotations.push(annotation);\n index = annotObject_1[pageIndex_1].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject_1.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject_1);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + annotationId] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + annotationId, annotationStringified);\n }\n }\n return index;\n };\n /**\n * @param type\n * @private\n */\n Annotation.prototype.getArrowType = function (type) {\n var decoratorShapes = 'None';\n switch (type) {\n case 'ClosedArrow':\n case 'Closed':\n decoratorShapes = 'Arrow';\n break;\n case 'OpenArrow':\n case 'Open':\n decoratorShapes = 'OpenArrow';\n break;\n case 'Square':\n decoratorShapes = 'Square';\n break;\n case 'Circle':\n case 'Round':\n decoratorShapes = 'Circle';\n break;\n case 'Diamond':\n decoratorShapes = 'Diamond';\n break;\n case 'Butt':\n decoratorShapes = 'Butt';\n break;\n case 'Slash':\n // decoratorShapes = 'Slash';\n break;\n }\n return decoratorShapes;\n };\n /**\n * @param arrow\n * @private\n */\n Annotation.prototype.getArrowTypeForCollection = function (arrow) {\n var arrowType;\n switch (arrow) {\n case 'Arrow':\n arrowType = 'ClosedArrow';\n break;\n case 'OpenArrow':\n case 'Square':\n case 'Circle':\n case 'Diamond':\n case 'None':\n arrowType = arrow.toString();\n break;\n case 'Butt':\n arrowType = 'Butt';\n break;\n }\n return arrowType;\n };\n /**\n * @param bound\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getBounds = function (bound, pageIndex) {\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails) {\n if (pageDetails.rotation === 1) {\n return { left: bound.top, top: pageDetails.width - (bound.left + bound.width), width: bound.height, height: bound.width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n return { left: pageDetails.height - bound.top - bound.height, top: bound.left, width: bound.height, height: bound.width };\n }\n else {\n return bound;\n }\n }\n else {\n return bound;\n }\n };\n /**\n * @param bound\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getInkBounds = function (bound, pageIndex) {\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails) {\n if (pageDetails.rotation === 1) {\n return { x: bound.y, y: pageDetails.width - (bound.x + bound.width), width: bound.height, height: bound.width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.x - bound.width, y: pageDetails.height - bound.y - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n return { x: pageDetails.height - bound.y - bound.height, y: bound.x, width: bound.height, height: bound.width };\n }\n else {\n return bound;\n }\n }\n else {\n return bound;\n }\n };\n /**\n * @param points\n * @param pageIndex\n * @param points\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getVertexPoints = function (points, pageIndex) {\n if (points) {\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails.rotation === 1) {\n var points1 = [];\n for (var i = 0; i < points.length; i++) {\n var point = { x: points[i].y, y: pageDetails.width - points[i].x };\n points1.push(point);\n }\n return points1;\n }\n else if (pageDetails.rotation === 2) {\n var points2 = [];\n for (var i = 0; i < points.length; i++) {\n var point = { x: pageDetails.width - points[i].x, y: pageDetails.height - points[i].y };\n points2.push(point);\n }\n return points2;\n }\n else if (pageDetails.rotation === 3) {\n var points3 = [];\n for (var i = 0; i < points.length; i++) {\n var point = { x: pageDetails.height - points[i].y, y: points[i].x };\n points3.push(point);\n }\n return points3;\n }\n else {\n return points;\n }\n }\n };\n /**\n * @param pageIndex\n * @param shapeAnnotations\n * @param idString\n * @param pageIndex\n * @param shapeAnnotations\n * @param idString\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.getStoredAnnotations = function (pageIndex, shapeAnnotations, idString) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + idString);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + idString];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = null;\n }\n }\n else {\n annotationCollection = null;\n }\n return annotationCollection;\n };\n /**\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @param pdfAnnotationBase\n * @param isColor\n * @param isStroke\n * @param isThickness\n * @param isOpacity\n * @param isLineStart\n * @param isLineEnd\n * @param isDashArray\n * @param isFreeText\n * @param previousText\n * @param currentText\n * @private\n */\n // eslint-disable-next-line max-len\n Annotation.prototype.triggerAnnotationPropChange = function (pdfAnnotationBase, isColor, isStroke, isThickness, isOpacity, isLineStart, isLineEnd, isDashArray, isFreeText, previousText, currentText) {\n var index = this.getAnnotationIndex(pdfAnnotationBase.pageIndex, pdfAnnotationBase.id);\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationPropertiesChange', pageIndex: pdfAnnotationBase.pageIndex, annotationId: pdfAnnotationBase.annotName, annotationType: type, isColorChanged: isColor, isOpacityChanged: isOpacity, isThicknessChanged: isThickness, isStrokeColorChanged: isStroke };\n if (isFreeText) {\n eventArgs.isFreeTextChanged = isFreeText;\n eventArgs.previousText = previousText;\n eventArgs.currentText = currentText;\n }\n if (isLineStart) {\n eventArgs.isLineHeadStartStyleChanged = isLineStart;\n }\n if (isLineEnd) {\n eventArgs.isLineHeadEndStyleChanged = isLineEnd;\n }\n if (isDashArray) {\n eventArgs.isBorderDashArrayChanged = isDashArray;\n }\n this.pdfViewer.trigger('annotationPropertiesChange', eventArgs);\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n Annotation.prototype.triggerAnnotationAdd = function (pdfAnnotationBase) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n // eslint-disable-next-line\n var bounds = { left: pdfAnnotationBase.wrapper.bounds.x, top: pdfAnnotationBase.wrapper.bounds.y, width: pdfAnnotationBase.wrapper.bounds.width, height: pdfAnnotationBase.wrapper.bounds.height };\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n var labelSettings;\n if (this.pdfViewer.enableShapeLabel) {\n labelSettings = {\n // eslint-disable-next-line max-len\n fontColor: pdfAnnotationBase.fontColor, fontSize: pdfAnnotationBase.fontSize, fontFamily: pdfAnnotationBase.fontFamily,\n opacity: pdfAnnotationBase.labelOpacity, labelContent: pdfAnnotationBase.labelContent, fillColor: pdfAnnotationBase.labelFillColor\n };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, bounds, setting, null, null, null, labelSettings);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, bounds, setting);\n }\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n Annotation.prototype.triggerAnnotationResize = function (pdfAnnotationBase) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n var index = this.getAnnotationIndex(pdfAnnotationBase.pageIndex, pdfAnnotationBase.id);\n // eslint-disable-next-line\n var annotationBounds = pdfAnnotationBase.bounds;\n var currentPosition = { left: annotationBounds.x, top: annotationBounds.y, x: annotationBounds.x, y: annotationBounds.y, width: annotationBounds.width, height: annotationBounds.height };\n // eslint-disable-next-line max-len\n var previousPosition = { left: annotationBounds.oldProperties.x, top: annotationBounds.oldProperties.y, width: annotationBounds.oldProperties.width, height: annotationBounds.oldProperties.height };\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n var labelSettings;\n if (this.pdfViewer.enableShapeLabel && (pdfAnnotationBase.shapeAnnotationType !== 'HandWrittenSignature')) {\n labelSettings = {\n // eslint-disable-next-line max-len\n fontColor: pdfAnnotationBase.fontColor, fontSize: pdfAnnotationBase.fontSize, fontFamily: pdfAnnotationBase.fontFamily,\n opacity: pdfAnnotationBase.labelOpacity, labelContent: pdfAnnotationBase.labelContent, fillColor: pdfAnnotationBase.labelFillColor, notes: pdfAnnotationBase.notes\n };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, currentPosition, setting, null, null, null, labelSettings);\n }\n else {\n if (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureResize(pdfAnnotationBase.pageIndex, pdfAnnotationBase.signatureName, pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.opacity, pdfAnnotationBase.strokeColor, pdfAnnotationBase.thickness, currentPosition, previousPosition);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, currentPosition, setting);\n }\n }\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.triggerAnnotationMove = function (pdfAnnotationBase, isMoving) {\n // eslint-disable-next-line\n var setting = {\n opacity: pdfAnnotationBase.opacity, fillColor: pdfAnnotationBase.fillColor, strokeColor: pdfAnnotationBase.strokeColor,\n thickness: pdfAnnotationBase.thickness, author: pdfAnnotationBase.author, subject: pdfAnnotationBase.subject,\n modifiedDate: pdfAnnotationBase.modifiedDate\n };\n // eslint-disable-next-line\n var annotationBounds = pdfAnnotationBase.bounds;\n var currentPosition = { left: annotationBounds.x, top: annotationBounds.y, x: annotationBounds.x, y: annotationBounds.y, width: annotationBounds.width, height: annotationBounds.height };\n // eslint-disable-next-line max-len\n var previousPosition = { left: annotationBounds.oldProperties.x ? annotationBounds.oldProperties.x : annotationBounds.x, top: annotationBounds.oldProperties.y ? annotationBounds.oldProperties.y : annotationBounds.y, width: annotationBounds.width, height: annotationBounds.height };\n var type = this.getAnnotationType(pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(pdfAnnotationBase.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(pdfAnnotationBase.taregetDecoraterShapes);\n setting.borderDashArray = pdfAnnotationBase.borderDashArray;\n }\n if (pdfAnnotationBase.shapeAnnotationType === 'HandWrittenSignature' || pdfAnnotationBase.shapeAnnotationType === 'SignatureText' || pdfAnnotationBase.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureMove(pdfAnnotationBase.pageIndex, pdfAnnotationBase.signatureName, pdfAnnotationBase.shapeAnnotationType, pdfAnnotationBase.opacity, pdfAnnotationBase.strokeColor, pdfAnnotationBase.thickness, previousPosition, currentPosition);\n }\n else {\n // eslint-disable-next-line max-len\n isMoving ? this.pdfViewer.fireAnnotationMoving(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, setting, previousPosition, currentPosition) : this.pdfViewer.fireAnnotationMove(pdfAnnotationBase.pageIndex, pdfAnnotationBase.annotName, type, setting, previousPosition, currentPosition);\n }\n };\n /**\n * @param annotationId\n * @param pageNumber\n * @param annotation\n * @param annotationCollection\n * @param isDblClick\n * @param isSelected\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.annotationSelect = function (annotationId, pageNumber, annotation, annotationCollection, isDblClick, isSelected) {\n // eslint-disable-next-line\n var annotSettings;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'TextMarkup', subType: annotation.subject, opacity: annotation.opacity, color: annotation.color, textMarkupContent: annotation.textMarkupContent, textMarkupStartIndex: annotation.textMarkupStartIndex, textMarkupEndIndex: annotation.textMarkupEndIndex, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'StickyNotes') {\n annotSettings = { type: 'StickyNotes', opacity: annotation.opacity, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n annotSettings = { type: 'Stamp', opacity: annotation.opacity, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Ink') {\n annotSettings = {\n // eslint-disable-next-line max-len\n type: 'Ink', opacity: annotation.opacity, strokeColor: annotation.strokeColor, thickness: annotation.thickness, modifiedDate: annotation.modifiedDate,\n width: annotation.bounds.width, height: annotation.bounds.height, left: annotation.bounds.x, top: annotation.bounds.y, data: annotation.data, customData: annotation.customData\n };\n }\n else if (annotation.shapeAnnotationType === 'FreeText') {\n annotSettings = {\n type: 'FreeText', opacity: annotation.opacity, fillColor: annotation.fillColor,\n // eslint-disable-next-line max-len\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, content: annotation.dynamicText,\n // eslint-disable-next-line max-len\n fontFamily: annotation.fontFamily, fontSize: annotation.fontSize, fontColor: annotation.fontColor, textAlign: annotation.textAlign, fontStyle: this.updateFreeTextFontStyle(annotation.font), customData: annotation.customData\n };\n }\n else if (annotation.measureType === '') {\n if (annotation.shapeAnnotationType === 'Line') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Shape', subType: 'Line', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Arrow' || annotation.shapeAnnotationType === 'LineWidthArrowHead') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Shape', subType: 'Arrow', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.shapeAnnotationType === 'Rectangle') {\n annotSettings = {\n type: 'Shape', subType: 'Rectangle', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Ellipse') {\n annotSettings = {\n type: 'Shape', subType: 'Circle', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.shapeAnnotationType === 'Polygon') {\n annotSettings = {\n type: 'Shape', subType: 'Polygon', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n }\n else if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Measure', subType: 'Distance', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.measureType === 'Perimeter') {\n // eslint-disable-next-line max-len\n annotSettings = { type: 'Measure', subType: 'Perimeter', opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor, thickness: annotation.thickness, borderDashArray: annotation.borderDashArray, lineHeadStartStyle: annotation.sourceDecoraterShapes, lineHeadEndStyle: annotation.taregetDecoraterShapes, customData: annotation.customData };\n }\n else if (annotation.measureType === 'Area') {\n annotSettings = {\n type: 'Measure', subType: 'Area', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.measureType === 'Radius') {\n annotSettings = {\n type: 'Measure', subType: 'Radius', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, customData: annotation.customData\n };\n }\n else if (annotation.measureType === 'Volume') {\n annotSettings = {\n type: 'Measure', subType: 'Volume', opacity: annotation.opacity, fillColor: annotation.fillColor,\n strokeColor: annotation.strokeColor, thickness: annotation.thickness, calibrate: annotation.calibrate,\n annotationId: annotation.annotName, customData: annotation.customData\n };\n }\n }\n // eslint-disable-next-line\n var overlappedCollection = [];\n // eslint-disable-next-line\n var overlappedAnnotations = this.getOverlappedAnnotations(annotation, pageNumber);\n if (overlappedAnnotations && this.overlappedCollections) {\n // eslint-disable-next-line\n var overlappedCollections = [];\n // eslint-disable-next-line\n for (var i = 0; i < overlappedAnnotations.length; i++) {\n if (overlappedAnnotations[i].shapeAnnotationType !== 'textMarkup' && this.overlappedCollections || isSelected) {\n for (var j = 0; j < this.overlappedCollections.length; j++) {\n if (overlappedAnnotations[i].annotName === this.overlappedCollections[j].annotName) {\n overlappedCollections.push(overlappedAnnotations[i]);\n break;\n }\n }\n }\n else {\n overlappedCollections.push(overlappedAnnotations[i]);\n }\n }\n overlappedAnnotations = overlappedCollections;\n }\n if (this.pdfViewer.enableMultiLineOverlap) {\n // eslint-disable-next-line\n for (var i = 0; i < overlappedAnnotations.length; i++) {\n if (overlappedAnnotations[i].shapeAnnotationType === 'textMarkup') {\n var isOverlapped = false;\n for (var j = 0; j < overlappedAnnotations[i].bounds.length; j++) {\n // eslint-disable-next-line\n var bounds = this.orderTextMarkupBounds(overlappedAnnotations[i].bounds[j]);\n // eslint-disable-next-line\n var clickedPosition = this.textMarkupAnnotationModule.annotationClickPosition;\n if (clickedPosition && (clickedPosition.x || clickedPosition.y)) {\n if (bounds.left <= clickedPosition.x && (bounds.left + bounds.width) >= clickedPosition.x) {\n if (bounds.top <= clickedPosition.y && (bounds.top + bounds.height) >= clickedPosition.y) {\n isOverlapped = true;\n }\n }\n }\n else {\n isOverlapped = true;\n }\n }\n if (!isOverlapped) {\n overlappedAnnotations.splice(i, 1);\n }\n }\n }\n }\n if (overlappedAnnotations && overlappedAnnotations.length > 0) {\n annotationCollection = overlappedAnnotations;\n // eslint-disable-next-line\n for (var i = 0; i < annotationCollection.length; i++) {\n // eslint-disable-next-line\n var overlappedObject = cloneObject(annotationCollection[i]);\n overlappedObject.annotationId = annotationCollection[i].annotName;\n if (annotationId === annotationCollection[i].annotName && annotation.measureType && annotation.measureType === 'Volume') {\n annotSettings.calibrate = annotationCollection[i].calibrate;\n }\n delete overlappedObject.annotName;\n overlappedCollection.push(overlappedObject);\n }\n }\n else {\n overlappedCollection = null;\n }\n this.addFreeTextProperties(annotation, annotSettings);\n var annotationAddMode = annotation.annotationAddMode;\n if (!isDblClick) {\n if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n if (!this.pdfViewerBase.isNewStamp && this.annotationSelected) {\n if (overlappedCollection) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, overlappedCollection, null, null, annotationAddMode);\n }\n else {\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, null, null, null, annotationAddMode);\n }\n }\n }\n else {\n var module = this.textMarkupAnnotationModule;\n var multiPageCollection = module && module.multiPageCollectionList(annotation);\n if (multiPageCollection && multiPageCollection.length === 0) {\n multiPageCollection = null;\n }\n if (this.annotationSelected) {\n if (overlappedCollection) {\n isSelected = false;\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, overlappedCollection, multiPageCollection, isSelected, annotationAddMode);\n }\n else {\n isSelected = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationSelect(annotationId, pageNumber, annotSettings, null, multiPageCollection, isSelected, annotationAddMode);\n }\n }\n }\n }\n else {\n if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n if (!this.pdfViewerBase.isNewStamp) {\n this.pdfViewer.fireAnnotationDoubleClick(annotationId, pageNumber, annotSettings);\n }\n }\n else {\n this.pdfViewer.fireAnnotationDoubleClick(annotationId, pageNumber, annotSettings);\n }\n }\n this.annotationSelected = true;\n };\n // eslint-disable-next-line\n Annotation.prototype.selectSignature = function (signatureId, pageNumber, signatureModule) {\n // eslint-disable-next-line\n var annotBounds = signatureModule.bounds;\n // eslint-disable-next-line\n var bounds = { height: annotBounds.height, width: annotBounds.width, x: annotBounds.x, y: annotBounds.y };\n if (!this.pdfViewerBase.signatureAdded) {\n // eslint-disable-next-line max-len\n var signature = { bounds: bounds, opacity: signatureModule.opacity, thickness: signatureModule.thickness, strokeColor: signatureModule.strokeColor };\n this.pdfViewer.fireSignatureSelect(signatureId, pageNumber, signature);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.editSignature = function (signature) {\n // eslint-disable-next-line\n var currentAnnotation;\n if (signature.uniqueKey) {\n // eslint-disable-next-line\n currentAnnotation = this.pdfViewer.nameTable[signature.uniqueKey];\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n var pageNumber = currentAnnotation.pageIndex;\n if (currentAnnotation.shapeAnnotationType === 'HandWrittenSignature' || currentAnnotation.shapeAnnotationType === 'SignatureText' || currentAnnotation.shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n // eslint-disable-next-line\n var redoClonedObject = cloneObject(currentAnnotation);\n if (currentAnnotation.opacity !== signature.opacity) {\n redoClonedObject.opacity = signature.opacity;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { opacity: signature.opacity });\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, true, false, clonedObject.opacity, redoClonedObject.opacity);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Opacity', '', clonedObject, redoClonedObject);\n }\n if (currentAnnotation.strokeColor !== signature.strokeColor) {\n redoClonedObject.strokeColor = signature.strokeColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { strokeColor: signature.strokeColor });\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, true, false, false, clonedObject.strokeColor, redoClonedObject.strokeColor);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n }\n if (currentAnnotation.thickness !== signature.thickness) {\n redoClonedObject.thickness = signature.thickness;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { thickness: signature.thickness });\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignaturePropertiesChange(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, false, false, true, clonedObject.thickness, redoClonedObject.thickness);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Thickness', '', clonedObject, redoClonedObject);\n }\n currentAnnotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.renderDrawing();\n this.pdfViewerBase.signatureModule.modifySignatureCollection(null, pageNumber, currentAnnotation, true);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.deletComment = function (commentDiv) {\n if (commentDiv.parentElement.firstChild === commentDiv) {\n this.deleteAnnotation();\n }\n else {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.modifyCommentDeleteProperty(commentDiv.parentElement, commentDiv);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.addReplyComments = function (currentAnnotation, replyComment, commentType) {\n if (commentType === 'add') {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(currentAnnotation.annotName);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.createCommentDiv(commentsMainDiv);\n for (var j = 0; j < replyComment.length; j++) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveCommentDiv(commentsMainDiv, replyComment[j]);\n }\n }\n else if (commentType === 'next') {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(currentAnnotation.annotationId);\n this.selectAnnotation(currentAnnotation);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveCommentDiv(commentsMainDiv, replyComment);\n }\n };\n Annotation.prototype.editComments = function (commentId, editComment) {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(commentId);\n commentDiv.childNodes[1].ej2_instances[0].value = editComment;\n };\n // eslint-disable-next-line\n Annotation.prototype.editAnnotation = function (annotation) {\n // eslint-disable-next-line\n var currentAnnotation;\n var annotationId;\n var annotationType;\n var pageNumber;\n var isTextMarkupUpdate = false;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n annotationId = currentAnnotation.annotName;\n pageNumber = this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n }\n else {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n annotationId = currentAnnotation.annotName;\n pageNumber = currentAnnotation.pageIndex;\n }\n }\n if (annotation.uniqueKey !== undefined) {\n // eslint-disable-next-line\n currentAnnotation = this.pdfViewer.nameTable[annotation.uniqueKey];\n currentAnnotation.annotationSettings.isLock = annotation.annotationSettings.isLock;\n annotationId = currentAnnotation.annotName;\n pageNumber = currentAnnotation.pageIndex;\n if (isBlazor()) {\n if (annotation.allowedInteractions) {\n var allowedInteractionsCount = annotation.allowedInteractions.length;\n for (var i = 0; i < allowedInteractionsCount; i++) {\n if (annotation.allowedInteractions[i] === 0) {\n annotation.allowedInteractions[i] = AllowedInteraction.Select;\n }\n if (annotation.allowedInteractions[i] === 1) {\n annotation.allowedInteractions[i] = AllowedInteraction.Move;\n }\n if (annotation.allowedInteractions[i] === 2) {\n annotation.allowedInteractions[i] = AllowedInteraction.Resize;\n }\n if (annotation.allowedInteractions[i] === 3) {\n annotation.allowedInteractions[i] = AllowedInteraction.Delete;\n }\n if (annotation.allowedInteractions[i] === 4) {\n annotation.allowedInteractions[i] = AllowedInteraction.PropertyChange;\n }\n if (annotation.allowedInteractions[i] === 5) {\n annotation.allowedInteractions[i] = AllowedInteraction.None;\n }\n }\n }\n }\n // eslint-disable-next-line\n currentAnnotation.allowedInteractions = annotation.allowedInteractions ? annotation.allowedInteractions : this.updateAnnotationAllowedInteractions(annotation);\n }\n if (!currentAnnotation) {\n if (annotation.shapeAnnotationType === 'sticky' && annotation.annotationId !== undefined) {\n // eslint-disable-next-line\n currentAnnotation = this.pdfViewer.nameTable[annotation.annotationId];\n currentAnnotation.annotationSettings.isLock = annotation.annotationSettings.isLock;\n annotationId = currentAnnotation.annotName;\n pageNumber = currentAnnotation.pageIndex;\n }\n }\n if (annotation.shapeAnnotationType === 'textMarkup') {\n if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line max-len\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.getAnnotations(annotation.pageNumber, annotation);\n for (var i = 0; i < currentAnnotation.length; i++) {\n if (annotation.annotationId === currentAnnotation[i].annotName) {\n isTextMarkupUpdate = true;\n currentAnnotation = currentAnnotation[i];\n currentAnnotation.isPrint = annotation.isPrint;\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = currentAnnotation;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = currentAnnotation.pageNumber;\n currentAnnotation.allowedInteractions = annotation.allowedInteractions;\n pageNumber = currentAnnotation.pageNumber;\n annotationId = annotation.annotationId;\n break;\n }\n }\n }\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n // eslint-disable-next-line\n var redoClonedObject = cloneObject(currentAnnotation);\n if (annotation.shapeAnnotationType === 'textMarkup') {\n annotationType = 'textMarkup';\n }\n if (annotation && annotation.isCommentLock === true) {\n currentAnnotation.isCommentLock = annotation.isCommentLock;\n }\n if (annotation.comments) {\n for (var j_1 = 0; j_1 < annotation.comments.length; j_1++) {\n if (annotation.comments[j_1].isLock === true) {\n if (annotationType) {\n currentAnnotation.comments = annotation.comments;\n currentAnnotation.comments[j_1].isLock = annotation.comments[j_1].isLock;\n }\n else {\n currentAnnotation.properties.comments = annotation.comments;\n currentAnnotation.properties.comments[j_1].isLock = annotation.comments[j_1].isLock;\n }\n }\n }\n }\n if (annotation && annotation.note !== '' && annotation.note !== undefined) {\n if (annotationType) {\n currentAnnotation.note = annotation.note;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, currentAnnotation.note);\n }\n else {\n currentAnnotation.notes = annotation.note;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, currentAnnotation.notes);\n }\n }\n else {\n if (annotation && annotation.isCommentLock && ((annotation.type && annotation.type !== 'FreeText') || annotation.shapeAnnotationType !== 'FreeText')) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, ' ');\n }\n }\n if (annotation.commentId && annotation.editComment && annotation.commentType === 'edit') {\n this.editComments(annotation.commentId, annotation.editComment);\n }\n if (annotation.replyComment && annotation.commentType === 'add') {\n this.addReplyComments(currentAnnotation, annotation.replyComment, annotation.commentType);\n this.pdfViewer.annotationCollection[0].note = annotation.note;\n }\n if (annotation.nextComment && annotation.commentType === 'next') {\n this.addReplyComments(annotation, annotation.nextComment, annotation.commentType);\n }\n if (annotation.note === '' && annotation.commentType === 'delete') {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(annotation.annotationId);\n this.deletComment(commentDiv);\n }\n if (annotation.comments) {\n for (var j_2 = 0; j_2 < annotation.comments.length; j_2++) {\n if (annotation.comments[j_2].note === '' && annotation.commentType === 'delete') {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(annotation.comments[j_2].annotName);\n this.deletComment(commentDiv);\n }\n }\n }\n if (annotation.type === 'TextMarkup' || annotation.shapeAnnotationType === 'textMarkup') {\n if (currentAnnotation.annotationSettings && annotation.annotationSettings) {\n if (currentAnnotation.annotationSettings.isLock !== annotation.annotationSettings.isLock) {\n // eslint-disable-next-line max-len\n var pageAnnotations = this.textMarkupAnnotationModule.modifyAnnotationProperty('AnnotationSettings', annotation.annotationSettings.isLock, null);\n // eslint-disable-next-line max-len\n this.textMarkupAnnotationModule.manageAnnotations(pageAnnotations, this.textMarkupAnnotationModule.selectTextMarkupCurrentPage);\n }\n }\n if (currentAnnotation.opacity !== annotation.opacity) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(null, annotation.opacity);\n }\n if (currentAnnotation.color !== annotation.color) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyColorProperty(annotation.color);\n }\n annotationType = 'textMarkup';\n if (isTextMarkupUpdate) {\n this.textMarkupAnnotationModule.currentTextMarkupAnnotation = null;\n this.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n }\n // eslint-disable-next-line max-len\n }\n else if (annotation && annotation.stampAnnotationType === 'image' && annotation.shapeAnnotationType === 'stamp' && annotation.stampAnnotationPath) {\n annotationType = 'stamp';\n if (currentAnnotation.data !== annotation.stampAnnotationPath) {\n currentAnnotation.data = annotation.stampAnnotationPath;\n currentAnnotation.wrapper.children[0].imageSource = annotation.stampAnnotationPath;\n }\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.annotationPropertyChange(currentAnnotation, annotation.opacity, 'Shape Opacity', clonedObject, redoClonedObject);\n }\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n // eslint-disable-next-line max-len\n }\n else if (annotation.type === 'StickyNotes' || annotation.type === 'Stamp' || annotation.shapeAnnotationType === 'sticky' || annotation.shapeAnnotationType === 'stamp') {\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.annotationPropertyChange(currentAnnotation, annotation.opacity, 'Shape Opacity', clonedObject, redoClonedObject);\n }\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n if (annotation.type === 'StickyNotes' || annotation.shapeAnnotationType === 'sticky') {\n annotationType = 'sticky';\n }\n else {\n annotationType = 'stamp';\n }\n // eslint-disable-next-line max-len\n }\n else if (annotation.type === 'Ink' || annotation.type === 'Shape' || annotation.type === 'Measure' || annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'Square' || annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Polygon' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Ink') {\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.annotationPropertyChange(currentAnnotation, annotation.opacity, 'Shape Opacity', clonedObject, redoClonedObject);\n }\n if (annotation.fillColor && currentAnnotation.fillColor !== annotation.fillColor) {\n redoClonedObject.fillColor = annotation.fillColor;\n if (annotation.labelSettings && annotation.labelSettings.fillColor) {\n annotation.labelSettings.fillColor = annotation.fillColor;\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fillColor: annotation.fillColor });\n this.triggerAnnotationPropChange(currentAnnotation, true, false, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Fill', '', clonedObject, redoClonedObject);\n }\n if (annotation.strokeColor && currentAnnotation.strokeColor !== annotation.strokeColor) {\n redoClonedObject.strokeColor = annotation.strokeColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { strokeColor: annotation.strokeColor });\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n }\n if (annotation.thickness && currentAnnotation.thickness !== annotation.thickness) {\n redoClonedObject.thickness = annotation.thickness;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { thickness: annotation.thickness });\n this.triggerAnnotationPropChange(currentAnnotation, false, false, true, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Thickness', '', clonedObject, redoClonedObject);\n }\n if (currentAnnotation.author !== annotation.author) {\n redoClonedObject.author = annotation.author;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { author: annotation.author });\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n }\n if (currentAnnotation.modifiedDate !== annotation.modifiedDate) {\n redoClonedObject.modifiedDate = annotation.modifiedDate;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { modifiedDate: annotation.modifiedDate });\n }\n if (currentAnnotation.subject !== annotation.subject) {\n redoClonedObject.subject = annotation.subject;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { subject: annotation.subject });\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Shape Stroke', '', clonedObject, redoClonedObject);\n }\n if (this.pdfViewer.enableShapeLabel && currentAnnotation.fontColor !== annotation.fontColor) {\n redoClonedObject.fontColor = annotation.fontColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontColor: annotation.fontColor });\n }\n if (this.pdfViewer.enableShapeLabel && annotation.labelSettings && annotation.labelSettings.fillColor) {\n if (currentAnnotation.labelFillColor !== annotation.labelSettings.fillColor) {\n redoClonedObject.labelFillColor = annotation.labelSettings.fillColor;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { labelFillColor: annotation.labelSettings.fillColor });\n }\n }\n // eslint-disable-next-line max-len\n if (annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Polygon') {\n if (JSON.stringify(currentAnnotation.vertexPoints) !== JSON.stringify(annotation.vertexPoints)) {\n currentAnnotation.vertexPoints = annotation.vertexPoints;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { vertexPoints: annotation.vertexPoints });\n }\n }\n // eslint-disable-next-line max-len\n if (annotation.subType === 'Line' || annotation.subType === 'Arrow' || annotation.subType === 'Distance' || annotation.subType === 'Perimeter') {\n var isSourceDecoraterShapesChanged = false;\n var isTargetDecoraterShapesChanged = false;\n var isBorderDashArrayChanged = false;\n clonedObject.lineHeadStart = currentAnnotation.sourceDecoraterShapes;\n clonedObject.lineHeadEnd = currentAnnotation.taregetDecoraterShapes;\n redoClonedObject.lineHeadStart = annotation.lineHeadStartStyle;\n redoClonedObject.lineHeadEnd = annotation.lineHeadEndStyle;\n redoClonedObject.borderDashArray = annotation.borderDashArray;\n if (currentAnnotation.taregetDecoraterShapes !== annotation.lineHeadEndStyle) {\n isTargetDecoraterShapesChanged = true;\n }\n if (currentAnnotation.sourceDecoraterShapes !== annotation.lineHeadStartStyle) {\n isSourceDecoraterShapesChanged = true;\n }\n if (currentAnnotation.borderDashArray !== annotation.borderDashArray) {\n isBorderDashArrayChanged = true;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(currentAnnotation, { sourceDecoraterShapes: annotation.lineHeadStartStyle, taregetDecoraterShapes: annotation.lineHeadEndStyle, borderDashArray: annotation.borderDashArray });\n // eslint-disable-next-line max-len\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, false, isSourceDecoraterShapesChanged, isTargetDecoraterShapesChanged, isBorderDashArrayChanged);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, 'Line properties change', '', clonedObject, redoClonedObject);\n }\n // eslint-disable-next-line max-len\n if (annotation.type === 'Shape' || annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'Square' || annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Polygon') {\n annotationType = 'shape';\n }\n if (annotation.type === 'Ink' || annotation.shapeAnnotationType === 'Ink') {\n annotationType = 'ink';\n }\n // eslint-disable-next-line max-len\n if (annotation.type === 'Measure' || annotation.subject === 'Distance calculation' || annotation.subject === 'Perimeter calculation' || annotation.subject === 'Radius calculation' || annotation.subject === 'Area calculation' || annotation.subject === 'Volume calculation') {\n annotationType = 'shape_measure';\n }\n if (annotation.labelSettings && this.pdfViewer.enableShapeLabel) {\n this.updateFreeTextProperties(currentAnnotation);\n this.pdfViewer.nodePropertyChange(currentAnnotation, {\n // eslint-disable-next-line max-len\n labelOpacity: annotation.labelSettings.opacity, fontColor: annotation.labelSettings.fontColor, fontSize: annotation.labelSettings.fontSize, fontFamily: annotation.labelSettings.fontFamily,\n labelContent: currentAnnotation.notes, labelFillColor: annotation.labelSettings.fillColor\n });\n }\n if (this.pdfViewer.enableShapeLabel && annotation.calibrate && annotation.calibrate.depth) {\n if (this.pdfViewer.annotationModule.measureAnnotationModule.volumeDepth !== annotation.calibrate.depth) {\n this.pdfViewer.annotationModule.measureAnnotationModule.volumeDepth = annotation.calibrate.depth;\n // eslint-disable-next-line max-len\n currentAnnotation.notes = this.pdfViewer.annotationModule.measureAnnotationModule.calculateVolume(currentAnnotation.vertexPoints, currentAnnotation.id, currentAnnotation.pageIndex);\n currentAnnotation.labelContent = currentAnnotation.notes;\n if (annotation.labelSettings && annotation.labelSettings.labelContent) {\n annotation.labelSettings.labelContent = currentAnnotation.notes;\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, { labelContent: currentAnnotation.labelContent });\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addTextToComments(currentAnnotation.annotName, currentAnnotation.notes);\n }\n }\n }\n else if (annotation.type === 'FreeText' || annotation.shapeAnnotationType === 'FreeText') {\n annotationType = 'freetext';\n if (this.pdfViewer.freeTextSettings.enableAutoFit && currentAnnotation.dynamicText !== annotation.content) {\n // eslint-disable-next-line\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + currentAnnotation.pageIndex);\n var context = canvas.getContext(\"2d\");\n var fontSize = annotation.fontSize;\n var font = void 0;\n var fontFamily = annotation.fontFamily;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n annotation.font.isBold ? font = 'bold' + ' ' + fontSize + 'px' + ' ' + fontFamily : font = fontSize + 'px' + ' ' + fontFamily;\n context.font = font;\n var characterLength = 8;\n var highestTextNode = \"\";\n // eslint-disable-next-line\n var textNodes = [];\n var textboxValue = annotation.content ? annotation.content : annotation.dynamicText;\n if (textboxValue.indexOf('\\n') > -1) {\n textNodes = textboxValue.split('\\n');\n for (var j = 0; j < textNodes.length; j++) {\n // eslint-disable-next-line\n var textNodeData = context.measureText(textNodes[j]);\n // eslint-disable-next-line\n var highestTextNodeData = context.measureText(highestTextNode);\n if (textNodeData.width > highestTextNodeData.width) {\n highestTextNode = textNodes[j];\n }\n }\n }\n else {\n highestTextNode = textboxValue;\n }\n // eslint-disable-next-line\n var textwidth = context.measureText(highestTextNode);\n annotation.bounds.width = Math.ceil(textwidth.width + ((characterLength + 1) * 2));\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + (annotation.pageIndex));\n var maxWidth = pageDiv.clientWidth - (annotation.bounds.left * zoomFactor);\n if (annotation.bounds.width > maxWidth) {\n annotation.bounds.width = maxWidth / zoomFactor;\n }\n var height = annotation.bounds.height;\n annotation.bounds.height = height >= currentAnnotation.bounds.height ? height : currentAnnotation.bounds.height;\n }\n this.calculateAnnotationBounds(currentAnnotation, annotation);\n this.pdfViewer.nodePropertyChange(currentAnnotation, {\n // eslint-disable-next-line max-len\n opacity: annotation.opacity, fontColor: annotation.fontColor, fontSize: annotation.fontSize, fontFamily: annotation.fontFamily,\n // eslint-disable-next-line max-len\n dynamicText: annotation.content ? annotation.content : annotation.dynamicText, fillColor: annotation.fillColor, textAlign: annotation.textAlign, strokeColor: annotation.strokeColor, thickness: annotation.thickness, font: annotation.fontStyle ? this.setFreeTextFontStyle(annotation.fontStyle) : this.setFreeTextFontStyle(annotation.font),\n isReadonly: annotation.isReadonly\n });\n if (annotation.opacity && currentAnnotation.opacity !== annotation.opacity) {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n }\n if (annotation.fillColor && currentAnnotation.fillColor !== annotation.fillColor) {\n this.triggerAnnotationPropChange(currentAnnotation, true, false, false, false);\n }\n if (annotation.strokeColor && currentAnnotation.strokeColor !== annotation.strokeColor) {\n this.triggerAnnotationPropChange(currentAnnotation, false, true, false, false);\n }\n if (annotation.thickness && currentAnnotation.thickness !== annotation.thickness) {\n this.triggerAnnotationPropChange(currentAnnotation, false, false, true, false);\n }\n if (annotation.content && this.pdfViewer.selectedItems.annotations[0]) {\n this.updateAnnotationComments(this.pdfViewer.selectedItems.annotations[0].annotName, annotation.content);\n }\n // eslint-disable-next-line\n var newCommentDiv = document.getElementById(this.pdfViewer.element.id + '_commenttextbox_editor');\n // eslint-disable-next-line\n var commentObj = new InPlaceEditor({\n value: annotation.content\n });\n commentObj.appendTo(newCommentDiv);\n }\n currentAnnotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n if (currentAnnotation.customData !== annotation.customData) {\n currentAnnotation.customData = annotation.customData;\n }\n currentAnnotation.isPrint = annotation.isPrint;\n if (annotation.type !== 'TextMarkup') {\n this.pdfViewer.renderDrawing();\n this.updateCollection(annotationId, pageNumber, annotation, annotationType);\n }\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.annotationPropertyChange = function (currentAnnotation, opacity, actionString, clonedObject, redoClonedObject) {\n this.pdfViewer.nodePropertyChange(currentAnnotation, { opacity: opacity });\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(currentAnnotation.pageIndex, null, currentAnnotation, actionString, '', clonedObject, redoClonedObject);\n };\n // eslint-disable-next-line\n Annotation.prototype.calculateAnnotationBounds = function (currentAnnotation, annotation) {\n // eslint-disable-next-line\n var bounds = this.pdfViewerBase.convertBounds(currentAnnotation.wrapper.bounds);\n // eslint-disable-next-line\n var annotBounds = this.pdfViewerBase.convertBounds(annotation.bounds);\n if (bounds && annotBounds) {\n // eslint-disable-next-line\n if (JSON.stringify(bounds) !== JSON.stringify(annotBounds) && (Math.abs(bounds.Y - annotBounds.Y) > 2) || (Math.abs(bounds.X - annotBounds.X) > 2) || (Math.abs(bounds.Width - annotBounds.Width) > 2) || (Math.abs(bounds.Height - annotBounds.Height) > 2)) {\n // eslint-disable-next-line\n var annotationBounds = { x: annotBounds.X + (annotBounds.Width / 2), y: annotBounds.Y + (annotBounds.Height / 2), width: annotBounds.Width, height: annotBounds.Height };\n this.pdfViewer.nodePropertyChange(currentAnnotation, { bounds: annotationBounds });\n this.pdfViewer.clearSelection(this.pdfViewerBase.activeElements.activePageID);\n this.triggerAnnotationPropChange(currentAnnotation, false, false, false, false);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateFreeTextProperties = function (annotation) {\n if (annotation.labelSettings) {\n if (annotation.labelSettings.fillColor) {\n annotation.labelFillColor = annotation.labelSettings.fillColor;\n }\n if (annotation.labelSettings.fontColor) {\n annotation.fontColor = annotation.labelSettings.fontColor;\n }\n if (annotation.labelSettings.fontSize) {\n annotation.fontSize = annotation.labelSettings.fontSize;\n }\n if (annotation.labelSettings.fontFamily) {\n annotation.fontFamily = annotation.labelSettings.fontFamily;\n }\n if (annotation.labelSettings.opacity) {\n annotation.labelOpacity = annotation.labelSettings.opacity;\n }\n if (annotation.labelSettings.labelContent) {\n annotation.labelContent = annotation.labelSettings.labelContent;\n }\n }\n };\n Annotation.prototype.updateAnnotationComments = function (annotationId, noteContent) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotationId);\n if (commentsDiv && commentsDiv.childNodes) {\n if (commentsDiv.childNodes[0].ej2_instances) {\n commentsDiv.childNodes[0].ej2_instances[0].value = noteContent;\n }\n else if (commentsDiv.childNodes[0].childNodes && commentsDiv.childNodes[0].childNodes[1].ej2_instances) {\n commentsDiv.childNodes[0].childNodes[1].ej2_instances[0].value = noteContent;\n }\n }\n };\n /**\n * @param annotation\n * @param currentAnnotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.addFreeTextProperties = function (annotation, currentAnnotation) {\n if (this.pdfViewer.enableShapeLabel && annotation && currentAnnotation) {\n currentAnnotation.labelSettings = {\n fontColor: annotation.fontColor, fontSize: annotation.fontSize, fontFamily: annotation.fontFamily,\n opacity: annotation.labelOpacity, labelContent: annotation.labelContent, fillColor: annotation.labelFillColor\n };\n }\n };\n Annotation.prototype.updateMeasurementSettings = function () {\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableMeasureAnnotation) {\n // eslint-disable-next-line max-len\n var ratioString = '1 ' + this.pdfViewer.measurementSettings.conversionUnit + ' = ' + this.pdfViewer.measurementSettings.scaleRatio + ' ' + this.pdfViewer.measurementSettings.displayUnit;\n this.measureAnnotationModule.updateMeasureValues(ratioString, this.pdfViewer.measurementSettings.displayUnit, this.pdfViewer.measurementSettings.conversionUnit, this.pdfViewer.measurementSettings.depth);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.updateCollection = function (annotationId, pageNumber, annotation, annotationType) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + annotationType);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + annotationType];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n if (annotationCollection !== null) {\n for (var i = 0; i < annotationCollection.length; i++) {\n if (annotationCollection[i].annotName === annotationId) {\n // eslint-disable-next-line\n var newAnnot = this.modifyAnnotationProperties(annotationCollection[i], annotation, annotationType);\n annotationCollection[i] = newAnnot;\n }\n }\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_' + annotationType);\n }\n if (annotObject[index]) {\n annotObject[index].annotations = annotationCollection;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + annotationType] = annotationStringified;\n }\n else {\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_' + annotationType, annotationStringified);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.modifyAnnotationProperties = function (newAnnotation, annotation, annotationType) {\n if (annotation && annotation.isCommentLock === true) {\n newAnnotation.isCommentLock = annotation.isCommentLock;\n }\n if (annotation.comments) {\n for (var j = 0; j < annotation.comments.length; j++) {\n if (annotation.comments[j].isLock === true) {\n newAnnotation.comments[j].isLock = annotation.comments[j].isLock;\n }\n }\n }\n if (annotation && annotation.note !== '' && annotation.note !== undefined) {\n newAnnotation.note = annotation.note;\n }\n if (annotation.commentId && annotation.editComment && annotation.commentType === 'edit') {\n // eslint-disable-next-line\n var commentDiv = document.getElementById(annotation.commentId);\n if (annotation.annotationId === annotation.commentId) {\n newAnnotation.note = commentDiv.childNodes[1].ej2_instances[0].value;\n }\n for (var j = 0; j < annotation.comments.length; j++) {\n if (annotation.comments[j].annotName === annotation.commentId) {\n newAnnotation.comments[j].note = commentDiv.childNodes[1].ej2_instances[0].value;\n }\n }\n }\n if (annotationType === 'textMarkup') {\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.color = annotation.color;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n }\n else if (annotationType === 'sticky' || annotationType === 'stamp') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n if (annotation.stampAnnotationPath) {\n newAnnotation.stampAnnotationPath = annotation.stampAnnotationPath;\n }\n }\n else if (annotationType === 'ink') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n }\n else if (annotationType === 'shape' || annotationType === 'shape_measure') {\n if (annotation.subType === 'Line' || annotation.subType === 'Arrow' || annotation.subType === 'Distance' ||\n annotation.subType === 'Perimeter') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n if (annotation.vertexPoints) {\n newAnnotation.vertexPoints = annotation.vertexPoints;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.fillColor = annotation.fillColor;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n newAnnotation.borderDashArray = annotation.borderDashArray;\n newAnnotation.lineHeadStart = this.getArrowTypeForCollection(annotation.lineHeadStartStyle);\n newAnnotation.lineHeadEnd = this.getArrowTypeForCollection(annotation.lineHeadEndStyle);\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n }\n else {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n if (annotation.vertexPoints) {\n newAnnotation.vertexPoints = annotation.vertexPoints;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.fillColor = annotation.fillColor;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n if (annotation.calibrate) {\n if (newAnnotation.annotName === annotation.annotationId) {\n if (newAnnotation.calibrate.depth !== annotation.calibrate.depth) {\n newAnnotation.calibrate.depth = annotation.calibrate.depth;\n this.pdfViewer.annotationModule.measureAnnotationModule.volumeDepth = annotation.calibrate.depth;\n // eslint-disable-next-line max-len\n newAnnotation.note = this.pdfViewer.annotationModule.measureAnnotationModule.calculateVolume(newAnnotation.vertexPoints);\n }\n }\n }\n }\n if (this.pdfViewer.enableShapeLabel && annotation.labelSettings) {\n var text = annotation.labelSettings.labelContent;\n newAnnotation.note = text;\n newAnnotation.fontSize = annotation.labelSettings.fontSize;\n newAnnotation.labelFillColor = annotation.labelSettings.fillColor;\n if (newAnnotation.labelContent) {\n newAnnotation.labelContent = text;\n }\n if (newAnnotation.labelSettings) {\n newAnnotation.labelSettings = annotation.labelSettings;\n }\n this.updateAnnotationComments(newAnnotation.annotName, text);\n }\n }\n else if (annotationType === 'freetext') {\n if (annotation.bounds) {\n newAnnotation.bounds = annotation.bounds;\n }\n newAnnotation.opacity = annotation.opacity;\n newAnnotation.strokeColor = annotation.strokeColor;\n newAnnotation.thickness = annotation.thickness;\n if (annotation.content) {\n newAnnotation.dynamicText = annotation.content;\n }\n newAnnotation.fontFamily = annotation.fontFamily;\n newAnnotation.fontSize = annotation.fontSize;\n newAnnotation.fontColor = annotation.fontColor;\n newAnnotation.fillColor = annotation.fillColor;\n newAnnotation.font = annotation.font ? annotation.font : annotation.fontStyle;\n newAnnotation.textAlign = annotation.textAlign;\n newAnnotation.annotationSettings = annotation.annotationSettings;\n newAnnotation.allowedInteractions = annotation.allowedInteractions;\n newAnnotation.isReadonly = annotation.isReadonly;\n }\n newAnnotation.customData = annotation.customData;\n newAnnotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n newAnnotation.isPrint = annotation.isPrint;\n if (annotation.annotationSettings && !isNullOrUndefined(annotation.annotationSettings.isLock)) {\n newAnnotation.isLocked = annotation.annotationSettings.isLock;\n }\n return newAnnotation;\n };\n /**\n * @param annotationType\n * @param annotationSubType\n * @param annotationType\n * @param annotationSubType\n * @private\n */\n Annotation.prototype.updateAnnotationAuthor = function (annotationType, annotationSubType) {\n var annotationAuthor;\n if (annotationType === 'sticky') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.stickyNotesSettings.author !== 'Guest') ? this.pdfViewer.stickyNotesSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationType === 'stamp') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.stampSettings.author !== 'Guest') ? this.pdfViewer.stampSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationType === 'shape') {\n if (annotationSubType === 'Line') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.lineSettings.author !== 'Guest') ? this.pdfViewer.lineSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'LineWidthArrowHead' || annotationSubType === 'Arrow') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.arrowSettings.author !== 'Guest') ? this.pdfViewer.arrowSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Circle' || annotationSubType === 'Ellipse' || annotationSubType === 'Oval') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.circleSettings.author !== 'Guest') ? this.pdfViewer.circleSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Rectangle' || annotationSubType === 'Square') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.rectangleSettings.author !== 'Guest') ? this.pdfViewer.rectangleSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Polygon') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.polygonSettings.author !== 'Guest') ? this.pdfViewer.polygonSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n }\n else if (annotationType === 'measure') {\n if (annotationSubType === 'Distance' || annotationSubType === 'Distance calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.distanceSettings.author !== 'Guest') ? this.pdfViewer.distanceSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Perimeter' || annotationSubType === 'Perimeter calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.perimeterSettings.author !== 'Guest') ? this.pdfViewer.perimeterSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Radius' || annotationSubType === 'Radius calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.radiusSettings.author !== 'Guest') ? this.pdfViewer.radiusSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Area' || annotationSubType === 'Area calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.areaSettings.author !== 'Guest') ? this.pdfViewer.areaSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Volume' || annotationSubType === 'Volume calculation') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.volumeSettings.author !== 'Guest') ? this.pdfViewer.volumeSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n }\n else if (annotationType === 'textMarkup') {\n if (annotationSubType === 'Highlight') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.highlightSettings.author !== 'Guest') ? this.pdfViewer.highlightSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Underline') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.underlineSettings.author !== 'Guest') ? this.pdfViewer.underlineSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationSubType === 'Strikethrough') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.strikethroughSettings.author !== 'Guest') ? this.pdfViewer.strikethroughSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else {\n // eslint-disable-next-line max-len\n annotationAuthor = this.pdfViewer.annotationSettings.author;\n }\n }\n else if (annotationType === 'freeText') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.freeTextSettings.author !== 'Guest') ? this.pdfViewer.freeTextSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n else if (annotationType === 'ink') {\n // eslint-disable-next-line max-len\n annotationAuthor = (this.pdfViewer.inkAnnotationSettings.author !== 'Guest') ? this.pdfViewer.inkAnnotationSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n }\n if (!annotationAuthor) {\n // eslint-disable-next-line max-len\n annotationAuthor = this.pdfViewer.annotationSettings.author;\n }\n return annotationAuthor;\n };\n /**\n * @param colour\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.nameToHash = function (colour) {\n // eslint-disable-next-line\n var colours = {\n 'aliceblue': '#f0f8ff', 'antiquewhite': '#faebd7', 'aqua': '#00ffff', 'aquamarine': '#7fffd4', 'azure': '#f0ffff',\n 'beige': '#f5f5dc', 'bisque': '#ffe4c4', 'black': '#000000', 'blanchedalmond': '#ffebcd', 'blue': '#0000ff',\n 'blueviolet': '#8a2be2', 'brown': '#a52a2a', 'burlywood': '#deb887', 'yellow': '#ffff00', 'yellowgreen': '#9acd32',\n 'cadetblue': '#5f9ea0', 'chartreuse': '#7fff00', 'chocolate': '#d2691e', 'coral': '#ff7f50',\n 'cornflowerblue': '#6495ed', 'cornsilk': '#fff8dc', 'crimson': '#dc143c',\n 'cyan': '#00ffff', 'darkblue': '#00008b', 'darkcyan': '#008b8b', 'darkgoldenrod': '#b8860b', 'darkgray': '#a9a9a9',\n 'darkred': '#8b0000', 'darksalmon': '#e9967a', 'darkgreen': '#006400', 'darkkhaki': '#bdb76b',\n 'darkmagenta': '#8b008b', 'darkolivegreen': '#556b2f', 'darkorange': '#ff8c00', 'darkorchid': '#9932cc',\n 'darkseagreen': '#8fbc8f', 'darkslateblue': '#483d8b', 'darkslategray': '#2f4f4f', 'darkturquoise': '#00ced1',\n 'darkviolet': '#9400d3', 'deeppink': '#ff1493', 'deepskyblue': '#00bfff', 'dimgray': '#696969',\n 'dodgerblue': '#1e90ff', 'firebrick': '#b22222', 'floralwhite': '#fffaf0',\n 'forestgreen': '#228b22', 'fuchsia': '#ff00ff', 'gainsboro': '#dcdcdc', 'ghostwhite': '#f8f8ff',\n 'gold': '#ffd700', 'goldenrod': '#daa520', 'gray': '#808080', 'green': '#008000',\n 'greenyellow': '#adff2f', 'honeydew': '#f0fff0', 'hotpink': '#ff69b4', 'indianred ': '#cd5c5c',\n 'mediumorchid': '#ba55d3', 'mediumpurple': '#9370d8', 'indigo': '#4b0082', 'ivory': '#fffff0',\n 'navy': '#000080', 'oldlace': '#fdf5e6', 'olive': '#808000', 'khaki': '#f0e68c',\n 'lavender': '#e6e6fa', 'lavenderblush': '#fff0f5', 'lawngreen': '#7cfc00', 'lemonchiffon': '#fffacd',\n 'lightblue': '#add8e6', 'lightcoral': '#f08080', 'lightcyan': '#e0ffff',\n 'lightgoldenrodyellow': '#fafad2', 'lightgrey': '#d3d3d3', 'lightgreen': '#90ee90',\n 'lightpink': '#ffb6c1', 'lightsalmon': '#ffa07a', 'lightseagreen': '#20b2aa',\n 'lightskyblue': '#87cefa', 'lightslategray': '#778899', 'lightsteelblue': '#b0c4de',\n 'lightyellow': '#ffffe0', 'lime': '#00ff00', 'limegreen': '#32cd32', 'linen': '#faf0e6',\n 'magenta': '#ff00ff', 'maroon': '#800000', 'mediumaquamarine': '#66cdaa', 'mediumblue': '#0000cd',\n 'mediumseagreen': '#3cb371', 'mediumslateblue': '#7b68ee', 'mediumspringgreen': '#00fa9a',\n 'mediumturquoise': '#48d1cc', 'mediumvioletred': '#c71585', 'midnightblue': '#191970',\n 'mintcream': '#f5fffa', 'mistyrose': '#ffe4e1', 'moccasin': '#ffe4b5', 'navajowhite': '#ffdead',\n 'rebeccapurple': '#663399', 'red': '#ff0000', 'rosybrown': '#bc8f8f', 'royalblue': '#4169e1',\n 'olivedrab': '#6b8e23', 'orange': '#ffa500', 'orangered': '#ff4500', 'orchid': '#da70d6',\n 'palegoldenrod': '#eee8aa', 'palegreen': '#98fb98', 'paleturquoise': '#afeeee',\n 'palevioletred': '#d87093', 'papayawhip': '#ffefd5', 'peachpuff': '#ffdab9', 'peru': '#cd853f',\n 'wheat': '#f5deb3', 'white': '#ffffff', 'whitesmoke': '#f5f5f5', 'pink': '#ffc0cb', 'plum': '#dda0dd',\n 'steelblue': '#4682b4', 'violet': '#ee82ee', 'powderblue': '#b0e0e6', 'purple': '#800080',\n 'saddlebrown': '#8b4513', 'salmon': '#fa8072', 'sandybrown': '#f4a460', 'seagreen': '#2e8b57',\n 'seashell': '#fff5ee', 'sienna': '#a0522d', 'silver': '#c0c0c0', 'skyblue': '#87ceeb',\n 'slateblue': '#6a5acd', 'slategray': '#708090', 'snow': '#fffafa', 'springgreen': '#00ff7f',\n 'tan': '#d2b48c', 'teal': '#008080', 'thistle': '#d8bfd8', 'tomato': '#ff6347', 'turquoise': '#40e0d0'\n };\n if (typeof colours[colour.toLowerCase()] !== 'undefined') {\n return colours[colour.toLowerCase()];\n }\n return '';\n };\n // eslint-disable-next-line\n Annotation.prototype.updateFreeTextFontStyle = function (font) {\n // eslint-disable-next-line\n var fontStyle = 0;\n if (font.isBold === 1) {\n fontStyle = 1;\n }\n else if (font.isItalic === 2) {\n fontStyle = 2;\n }\n else if (font.isUnderline === 4) {\n fontStyle = 4;\n }\n else if (font.isStrikeout) {\n fontStyle = 8;\n }\n else {\n fontStyle = { isBold: font.isBold, isItalic: font.isItalic, isUnderline: font.isUnderline, isStrikeout: font.isUnderline };\n }\n return fontStyle;\n };\n // eslint-disable-next-line\n Annotation.prototype.setFreeTextFontStyle = function (fontStyle) {\n if (fontStyle === 1) {\n return { isBold: true };\n }\n else if (fontStyle === 2) {\n return { isItalic: true };\n }\n else if (fontStyle === 4) {\n return { isUnderline: true };\n }\n else if (fontStyle === 8) {\n return { isStrikeout: true };\n }\n else {\n return { isBold: fontStyle.isBold, isItalic: fontStyle.isItalic, isUnderline: fontStyle.isUnderline, isStrikeout: fontStyle.isStrikeout };\n }\n };\n /**\n * @param annotation\n * @param isSettings\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.findAnnotationSettings = function (annotation, isSettings) {\n // eslint-disable-next-line\n var annotSettings = this.pdfViewer.annotationSettings;\n if (annotation) {\n // eslint-disable-next-line\n var shapeType = annotation.shapeAnnotationType;\n if (shapeType === 'StickyNotes' && this.pdfViewer.stickyNotesSettings) {\n annotSettings = this.pdfViewer.stickyNotesSettings;\n }\n else if (shapeType === 'Stamp' || shapeType === 'Image') {\n annotSettings = this.pdfViewer.stampSettings;\n // eslint-disable-next-line max-len\n if ((shapeType === 'image' || shapeType === 'Image')) {\n annotSettings = this.pdfViewer.customStampSettings;\n }\n }\n else if (shapeType === 'FreeText') {\n annotSettings = this.pdfViewer.freeTextSettings;\n }\n else if (annotation.measureType === '') {\n if (shapeType === 'Line') {\n annotSettings = this.pdfViewer.lineSettings;\n // eslint-disable-next-line max-len\n }\n else if ((shapeType === 'Arrow' || shapeType === 'LineWidthArrowHead')) {\n annotSettings = this.pdfViewer.arrowSettings;\n }\n else if (shapeType === 'Rectangle') {\n annotSettings = this.pdfViewer.rectangleSettings;\n // eslint-disable-next-line max-len\n }\n else if ((shapeType === 'Circle' || shapeType === 'Ellipse')) {\n annotSettings = this.pdfViewer.circleSettings;\n }\n else if (shapeType === 'Polygon' && this.pdfViewer.polygonSettings) {\n annotSettings = this.pdfViewer.polygonSettings;\n }\n }\n else if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance') {\n annotSettings = this.pdfViewer.distanceSettings;\n }\n else if (annotation.measureType === 'Perimeter') {\n annotSettings = this.pdfViewer.perimeterSettings;\n }\n else if (annotation.measureType === 'Area') {\n annotSettings = this.pdfViewer.areaSettings;\n }\n else if (annotation.measureType === 'Radius') {\n annotSettings = this.pdfViewer.radiusSettings;\n }\n else if (annotation.measureType === 'Volume') {\n annotSettings = this.pdfViewer.volumeSettings;\n }\n }\n }\n var settings = annotation ? annotation.annotationSettings : {};\n if (settings && (settings.minWidth || settings.maxWidth || settings.minHeight || settings.maxHeight)) {\n return this.updateSettings(settings);\n }\n else if (isSettings) {\n return this.updateSettings(annotSettings);\n }\n else {\n return annotSettings;\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateAnnotationSettings = function (annotation) {\n // eslint-disable-next-line\n var annotSettings = this.pdfViewer.annotationSettings;\n if (annotation.AnnotType === 'sticky') {\n annotSettings = this.pdfViewer.stickyNotesSettings;\n }\n else if (annotation.AnnotType === 'stamp' || annotation.AnnotType === 'image' || annotation.AnnotType === 'Image') {\n annotSettings = this.pdfViewer.stampSettings;\n // eslint-disable-next-line max-len\n if ((annotation.Subject === 'image' || annotation.Subject === 'Image')) {\n annotSettings = this.pdfViewer.customStampSettings;\n }\n }\n else if (annotation.AnnotType === 'freeText') {\n annotSettings = this.pdfViewer.freeTextSettings;\n }\n else if (annotation.AnnotType === 'shape') {\n if (annotation.Subject === 'Line') {\n annotSettings = this.pdfViewer.lineSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Arrow' || annotation.Subject === 'LineWidthArrowHead')) {\n annotSettings = this.pdfViewer.arrowSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Rectangle' || annotation.Subject === 'Square')) {\n annotSettings = this.pdfViewer.rectangleSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Circle' || annotation.Subject === 'Ellipse' || annotation.Subject === 'Oval')) {\n annotSettings = this.pdfViewer.circleSettings;\n }\n else if (annotation.Subject === 'Polygon') {\n annotSettings = this.pdfViewer.polygonSettings;\n }\n }\n else if (annotation.AnnotType === 'shape_measure') {\n // eslint-disable-next-line max-len\n if ((annotation.Subject === 'Distance' || annotation.Subject === 'Distance calculation')) {\n annotSettings = this.pdfViewer.distanceSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Perimeter' || annotation.Subject === 'Perimeter calculation')) {\n annotSettings = this.pdfViewer.perimeterSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Area' || annotation.Subject === 'Area calculation')) {\n annotSettings = this.pdfViewer.areaSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Radius' || annotation.Subject === 'Radius calculation')) {\n annotSettings = this.pdfViewer.radiusSettings;\n // eslint-disable-next-line max-len\n }\n else if ((annotation.Subject === 'Volume' || annotation.Subject === 'Volume calculation')) {\n annotSettings = this.pdfViewer.volumeSettings;\n }\n }\n return this.updateSettings(annotSettings);\n };\n /**\n * @param annotationSettings\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateSettings = function (annotationSettings) {\n var maxHeight = 0;\n var maxWidth = 0;\n var minHeight = 0;\n var minWidth = 0;\n var isLock = false;\n var isPrint = true;\n // eslint-disable-next-line\n var settings = this.pdfViewer.annotationSettings;\n if (annotationSettings.minWidth || annotationSettings.maxWidth || annotationSettings.minHeight || annotationSettings.maxHeight) {\n maxHeight = annotationSettings.maxHeight ? annotationSettings.maxHeight : 2000;\n maxWidth = annotationSettings.maxWidth ? annotationSettings.maxWidth : 2000;\n minHeight = annotationSettings.minHeight ? annotationSettings.minHeight : 0;\n minWidth = annotationSettings.minWidth ? annotationSettings.minWidth : 0;\n }\n else if (settings.minWidth || settings.maxWidth || settings.minHeight || settings.maxHeight) {\n maxHeight = settings.maxHeight ? settings.maxHeight : 2000;\n maxWidth = settings.maxWidth ? settings.maxWidth : 2000;\n minHeight = settings.minHeight ? settings.minHeight : 0;\n minWidth = settings.minWidth ? settings.minWidth : 0;\n }\n isLock = annotationSettings.isLock ? annotationSettings.isLock : settings.isLock ? settings.isLock : false;\n isPrint = annotationSettings.isPrint;\n return { minWidth: minWidth, maxWidth: maxWidth, minHeight: minHeight, maxHeight: maxHeight, isLock: isLock, isPrint: isPrint };\n };\n // eslint-disable-next-line\n Annotation.prototype.getOverlappedAnnotations = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = this.getPageShapeAnnotations(pageNumber);\n // eslint-disable-next-line\n var selectedAnnotation;\n for (var i = 0; i < pageCollections.length; i++) {\n if (annotation.annotName === pageCollections[i].annotName) {\n selectedAnnotation = pageCollections[i];\n break;\n }\n }\n // eslint-disable-next-line\n var annotationCollection = this.findOverlappedAnnotations(selectedAnnotation, pageCollections);\n return annotationCollection;\n };\n // eslint-disable-next-line\n Annotation.prototype.getPageShapeAnnotations = function (pageNumber) {\n // eslint-disable-next-line\n var pageCollections = [];\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n if (inkObject) {\n var inkAnnotObject = JSON.parse(inkObject);\n if (inkAnnotObject) {\n var index = this.getPageCollection(inkAnnotObject, pageNumber);\n if (inkAnnotObject[index]) {\n // eslint-disable-next-line\n var inkAnnotations = inkAnnotObject[index].annotations;\n if (inkAnnotations && inkAnnotations.length > 0) {\n for (var i = 0; i < inkAnnotations.length; i++) {\n pageCollections.push(inkAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (shapeObject) {\n var shapeAnnotObject = JSON.parse(shapeObject);\n if (shapeAnnotObject) {\n var index = this.getPageCollection(shapeAnnotObject, pageNumber);\n if (shapeAnnotObject[index]) {\n // eslint-disable-next-line\n var shapeAnnotations = shapeAnnotObject[index].annotations;\n if (shapeAnnotations && shapeAnnotations.length > 0) {\n for (var i = 0; i < shapeAnnotations.length; i++) {\n pageCollections.push(shapeAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var measureObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (measureObject) {\n var measureAnnotationObject = JSON.parse(measureObject);\n if (measureAnnotationObject) {\n var index = this.getPageCollection(measureAnnotationObject, pageNumber);\n if (measureAnnotationObject[index]) {\n // eslint-disable-next-line\n var measureAnnotations = measureAnnotationObject[index].annotations;\n if (measureAnnotations && measureAnnotations.length > 0) {\n for (var i = 0; i < measureAnnotations.length; i++) {\n pageCollections.push(measureAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (stampObject) {\n var stampAnnotationObject = JSON.parse(stampObject);\n if (stampAnnotationObject) {\n var index = this.getPageCollection(stampAnnotationObject, pageNumber);\n if (stampAnnotationObject[index]) {\n // eslint-disable-next-line\n var stampAnnotations = stampAnnotationObject[index].annotations;\n if (stampAnnotations && stampAnnotations.length > 0) {\n for (var i = 0; i < stampAnnotations.length; i++) {\n pageCollections.push(stampAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_freetext');\n if (freeTextObject) {\n var freeTextAnnotationObject = JSON.parse(freeTextObject);\n if (freeTextAnnotationObject) {\n var index = this.getPageCollection(freeTextAnnotationObject, pageNumber);\n if (freeTextAnnotationObject[index]) {\n // eslint-disable-next-line\n var freeTextAnnotations = freeTextAnnotationObject[index].annotations;\n if (freeTextAnnotations && freeTextAnnotations.length > 0) {\n for (var i = 0; i < freeTextAnnotations.length; i++) {\n pageCollections.push(freeTextAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (stickyObject) {\n var stickyNotesAnnotationObject = JSON.parse(stickyObject);\n if (stickyNotesAnnotationObject) {\n var index = this.getPageCollection(stickyNotesAnnotationObject, pageNumber);\n if (stickyNotesAnnotationObject[index]) {\n // eslint-disable-next-line\n var stickyNotesAnnotations = stickyNotesAnnotationObject[index].annotations;\n if (stickyNotesAnnotations && stickyNotesAnnotations.length > 0) {\n for (var i = 0; i < stickyNotesAnnotations.length; i++) {\n pageCollections.push(stickyNotesAnnotations[i]);\n }\n }\n }\n }\n }\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (textMarkupObject) {\n var textMarkupAnnotationObject = JSON.parse(textMarkupObject);\n if (textMarkupAnnotationObject) {\n var index = this.getPageCollection(textMarkupAnnotationObject, pageNumber);\n if (textMarkupAnnotationObject[index]) {\n // eslint-disable-next-line\n var textMarkupAnnotations = textMarkupAnnotationObject[index].annotations;\n if (textMarkupAnnotations && textMarkupAnnotations.length > 0) {\n for (var i = 0; i < textMarkupAnnotations.length; i++) {\n pageCollections.push(textMarkupAnnotations[i]);\n }\n }\n }\n }\n }\n return pageCollections;\n };\n // eslint-disable-next-line\n Annotation.prototype.findOverlappedAnnotations = function (annotation, pageCollections) {\n this.overlappedAnnotations = [];\n if (annotation && annotation.bounds) {\n if (annotation.shapeAnnotationType === 'textMarkup') {\n for (var i = 0; i < annotation.bounds.length; i++) {\n // eslint-disable-next-line\n var bounds = this.orderTextMarkupBounds(annotation.bounds[i]);\n this.calculateOverlappedAnnotationBounds(annotation, bounds, pageCollections);\n }\n }\n else {\n this.calculateOverlappedAnnotationBounds(annotation, annotation.bounds, pageCollections);\n }\n }\n return this.overlappedAnnotations;\n };\n // eslint-disable-next-line\n Annotation.prototype.calculateOverlappedAnnotationBounds = function (annotation, bounds, pageCollections) {\n // eslint-disable-next-line\n var selectBounds = bounds;\n if (annotation.shapeAnnotationType === 'Ink') {\n selectBounds = { left: bounds.x, top: bounds.y, height: bounds.height, width: bounds.width };\n }\n // eslint-disable-next-line\n var left = parseInt(selectBounds.left);\n // eslint-disable-next-line\n var top = parseInt(selectBounds.top);\n // eslint-disable-next-line\n var totalHeight = parseInt(selectBounds.top + selectBounds.height);\n // eslint-disable-next-line\n var totalWidth = parseInt(selectBounds.left + selectBounds.width);\n for (var i = 0; i < pageCollections.length; i++) {\n if (annotation.annotName === pageCollections[i].annotName) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n var boundsCount = 1;\n if (pageCollections[i].shapeAnnotationType === 'textMarkup') {\n boundsCount = pageCollections[i].bounds.length;\n }\n for (var j = 0; j < boundsCount; j++) {\n // eslint-disable-next-line\n var annotationBounds = void 0;\n // eslint-disable-next-line\n var annotationBoundsCollection = pageCollections[i].bounds;\n if (pageCollections[i].shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line\n annotationBoundsCollection = { left: annotationBoundsCollection.x, top: annotationBoundsCollection.y, height: annotationBoundsCollection.height, width: annotationBoundsCollection.width };\n }\n if (pageCollections[i].shapeAnnotationType !== 'textMarkup' && boundsCount === 1) {\n annotationBounds = annotationBoundsCollection;\n }\n else {\n // eslint-disable-next-line\n annotationBounds = this.orderTextMarkupBounds(annotationBoundsCollection[j]);\n }\n if (annotationBounds) {\n var isOverlapped = false;\n // eslint-disable-next-line\n if (((left <= parseInt(annotationBounds.left)) && (totalWidth >= parseInt(annotationBounds.left))) || ((left <= parseInt(annotationBounds.left + annotationBounds.width)) && (totalWidth >= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((top <= parseInt(annotationBounds.top)) && (totalHeight >= parseInt(annotationBounds.top))) || ((top <= parseInt(annotationBounds.top + annotationBounds.height)) && (totalHeight >= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.left) <= left) && (parseInt(annotationBounds.left + annotationBounds.width) >= left)) || ((totalWidth >= parseInt(annotationBounds.left)) && (totalWidth <= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.top) <= top) && parseInt(annotationBounds.top + annotationBounds.height) >= top) || ((totalHeight >= parseInt(annotationBounds.top)) && (totalHeight <= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n // eslint-disable-next-line\n if (((left <= parseInt(annotationBounds.left)) && (totalWidth >= parseInt(annotationBounds.left))) || ((left <= parseInt(annotationBounds.left + annotationBounds.width)) && (totalWidth >= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.top) <= top) && parseInt(annotationBounds.top + annotationBounds.height) >= top) || ((totalHeight >= parseInt(annotationBounds.top)) && (totalHeight <= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n else {\n // eslint-disable-next-line\n if (((parseInt(annotationBounds.left) <= left) && (parseInt(annotationBounds.left + annotationBounds.width) >= left)) || ((totalWidth >= parseInt(annotationBounds.left)) && (totalWidth <= parseInt(annotationBounds.left + annotationBounds.width)))) {\n isOverlapped = true;\n }\n if (isOverlapped) {\n // eslint-disable-next-line\n if (((top <= parseInt(annotationBounds.top)) && (totalHeight >= parseInt(annotationBounds.top))) || ((top <= parseInt(annotationBounds.top + annotationBounds.height)) && (totalHeight >= parseInt(annotationBounds.top + annotationBounds.height)))) {\n isOverlapped = true;\n }\n else {\n isOverlapped = false;\n }\n }\n if (isOverlapped) {\n this.checkOverlappedCollections(pageCollections[i], this.overlappedAnnotations);\n }\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param type\n * @param annotation\n * @param pageNumber\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.findAnnotationMode = function (annotation, pageNumber, type) {\n // eslint-disable-next-line\n var importCollection = this.pdfViewer.viewerBase.importedAnnotation[pageNumber];\n if (importCollection) {\n // eslint-disable-next-line\n var collection = void 0;\n if (type === 'shape') {\n collection = importCollection.shapeAnnotation;\n }\n else if (type === 'shape_measure') {\n collection = importCollection.measureShapeAnnotation;\n }\n else if (type === 'freeText') {\n collection = importCollection.freeTextAnnotation;\n }\n else if (type === 'stamp') {\n collection = importCollection.stampAnnotations;\n }\n else if (type === 'sticky') {\n collection = importCollection.stickyNotesAnnotation;\n }\n else if (type === 'textMarkup') {\n collection = importCollection.textMarkupAnnotation;\n }\n if (collection) {\n for (var i = 0; i < collection.length; i++) {\n if (collection[i].AnnotName === annotation.AnnotName) {\n return 'Imported Annotation';\n }\n }\n }\n }\n return 'Existing Annotation';\n };\n // eslint-disable-next-line\n Annotation.prototype.checkOverlappedCollections = function (annotation, overlappedCollections) {\n if (overlappedCollections.length > 0) {\n var isAdded = false;\n for (var i = 0; i < overlappedCollections.length; i++) {\n if (annotation.annotName === overlappedCollections[i].annotName && annotation.bounds === overlappedCollections[i].bounds) {\n isAdded = true;\n break;\n }\n }\n if (!isAdded) {\n overlappedCollections.push(annotation);\n }\n }\n else {\n overlappedCollections.push(annotation);\n }\n };\n // eslint-disable-next-line\n Annotation.prototype.orderTextMarkupBounds = function (bounds) {\n if (bounds.Left || bounds.Width) {\n return { left: bounds.Left, top: bounds.Top, height: bounds.Height, width: bounds.Width };\n }\n else {\n return { left: bounds.left, top: bounds.top, height: bounds.height, width: bounds.width };\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateModifiedDate = function (annotation) {\n if (annotation.modifiedDate) {\n annotation.modifiedDate = this.setAnnotationModifiedDate(annotation.modifiedDate);\n }\n if (annotation.comments && annotation.comments.length > 0) {\n for (var i = 0; i < annotation.comments.length; i++) {\n if (annotation.comments[i].modifiedDate) {\n annotation.comments[i].modifiedDate = this.setAnnotationModifiedDate(annotation.comments[i].modifiedDate);\n if (annotation.comments[i].review && annotation.comments[i].review.modifiedDate) {\n // eslint-disable-next-line max-len\n annotation.comments[i].review.modifiedDate = this.setAnnotationModifiedDate(annotation.comments[i].review.modifiedDate);\n }\n }\n }\n }\n if (annotation.review && annotation.review.modifiedDate) {\n annotation.review.modifiedDate = this.setAnnotationModifiedDate(annotation.review.modifiedDate);\n }\n };\n Annotation.prototype.setAnnotationModifiedDate = function (date) {\n var modifiedTime;\n var modifiedDateTime;\n if (date !== '') {\n // eslint-disable-next-line\n var time = parseInt(date.split(' ')[1].split(':')[0]);\n if (date.split(' ').length === 3) {\n // eslint-disable-next-line max-len\n modifiedTime = time + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' ' + date.split(' ')[2];\n }\n else {\n if (time >= 12) {\n if (time === 12) {\n modifiedTime = time + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' PM';\n }\n else {\n // eslint-disable-next-line max-len\n modifiedTime = (time - 12) + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' PM';\n }\n }\n else {\n modifiedTime = time + ':' + date.split(' ')[1].split(':')[1] + ':' + date.split(' ')[1].split(':')[2] + ' AM';\n }\n }\n // eslint-disable-next-line\n var dateString = date.split(' ')[0];\n // eslint-disable-next-line\n var dateStringSpilt = date.split(',');\n if (dateStringSpilt.length > 1) {\n modifiedDateTime = dateString + (' ') + modifiedTime;\n }\n else {\n modifiedDateTime = dateString + (', ') + modifiedTime;\n }\n }\n else {\n return date;\n }\n return modifiedDateTime;\n };\n /**\n * @private\n */\n Annotation.prototype.clear = function () {\n if (this.shapeAnnotationModule) {\n this.shapeAnnotationModule.shapeCount = 0;\n }\n if (this.measureAnnotationModule) {\n this.measureAnnotationModule.measureShapeCount = 0;\n }\n if (this.textMarkupAnnotationModule) {\n this.textMarkupAnnotationModule.clear();\n }\n if (this.stickyNotesAnnotationModule) {\n this.stickyNotesAnnotationModule.clear();\n }\n this.pdfViewer.refresh();\n this.undoCommentsElement = [];\n this.redoCommentsElement = [];\n this.overlappedAnnotations = [];\n this.previousIndex = null;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n this.pdfViewer.annotation.stampAnnotationModule.stampPageNumber = [];\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.freeTextPageNumbers = [];\n this.freeTextAnnotationModule.previousText = 'Type Here';\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.inkAnnotationModule) {\n this.pdfViewer.annotation.inkAnnotationModule.inkAnnotationindex = [];\n }\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n };\n // eslint-disable-next-line\n Annotation.prototype.retrieveAnnotationCollection = function () {\n return this.pdfViewer.annotationCollection;\n };\n /**\n * @param interaction\n * @param annotation\n * @param interaction\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkAllowedInteractions = function (interaction, annotation) {\n // eslint-disable-next-line\n var annotationInteraction = this.updateAnnotationAllowedInteractions(annotation);\n if (annotationInteraction && annotationInteraction.length > 0) {\n for (var i = 0; i < annotationInteraction.length; i++) {\n if (interaction === 'Select') {\n // eslint-disable-next-line max-len\n if (annotationInteraction[i] === 'Move' || annotationInteraction[i] === 'Resize' || annotationInteraction[i] === 'Delete' || annotationInteraction[i] === 'PropertyChange' || annotationInteraction[i] === 'Select') {\n return true;\n }\n }\n else {\n if (annotationInteraction[i] === interaction) {\n return true;\n }\n }\n }\n }\n return false;\n };\n /**\n * @param menuObj\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkContextMenuDeleteItem = function (menuObj) {\n // eslint-disable-next-line\n var annotation = this.findCurrentAnnotation();\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n if (annotation.annotationSettings.isLock) {\n if (this.checkAllowedInteractions('Delete', annotation)) {\n menuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n }\n else {\n menuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], false);\n }\n }\n else {\n menuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.isEnableDelete = function () {\n // eslint-disable-next-line\n var annotation = this.findCurrentAnnotation();\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n if (annotation.annotationSettings.isLock) {\n if (this.checkAllowedInteractions('Delete', annotation)) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n }\n return false;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.findCurrentAnnotation = function () {\n if (this.textMarkupAnnotationModule && this.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n return this.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n if (this.pdfViewer.selectedItems.annotations && this.pdfViewer.selectedItems.annotations[0]) {\n return this.pdfViewer.selectedItems.annotations[0];\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.updateAnnotationAllowedInteractions = function (annotation) {\n // eslint-disable-next-line\n var annotationInteraction = ['None'];\n if (annotation) {\n if (annotation.shapeAnnotationType === 'FreeText' && this.pdfViewer.freeTextSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.freeTextSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Ink' && this.pdfViewer.inkAnnotationSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.inkAnnotationSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'StickyNotes' && this.pdfViewer.stickyNotesSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.stickyNotesSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Stamp' && this.pdfViewer.stampSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.stampSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Image' && this.pdfViewer.customStampSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.customStampSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'textMarkup') {\n if (annotation.textMarkupAnnotationType === 'Highlight' && this.pdfViewer.highlightSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.highlightSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.textMarkupAnnotationType === 'Underline' && this.pdfViewer.underlineSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.underlineSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.textMarkupAnnotationType === 'Strikethrough' && this.pdfViewer.strikethroughSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.strikethroughSettings.allowedInteractions, annotation.allowedInteractions);\n }\n }\n else {\n if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance' && this.pdfViewer.distanceSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.distanceSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Perimeter' && this.pdfViewer.perimeterSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.perimeterSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Radius' && this.pdfViewer.radiusSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.radiusSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Area' && this.pdfViewer.areaSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.areaSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.measureType === 'Volume' && this.pdfViewer.volumeSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.volumeSettings.allowedInteractions, annotation.allowedInteractions);\n }\n }\n else {\n if (annotation.shapeAnnotationType === 'Line' && this.pdfViewer.lineSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.lineSettings.allowedInteractions, annotation.allowedInteractions);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Arrow' || annotation.shapeAnnotationType === 'LineWidthArrowHead') && this.pdfViewer.arrowSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.arrowSettings.allowedInteractions, annotation.allowedInteractions);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Ellipse' || annotation.shapeAnnotationType === 'Oval') && this.pdfViewer.circleSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.circleSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if ((annotation.shapeAnnotationType === 'Rectangle' || annotation.shapeAnnotationType === 'Square') && this.pdfViewer.rectangleSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.rectangleSettings.allowedInteractions, annotation.allowedInteractions);\n }\n else if (annotation.shapeAnnotationType === 'Polygon' && this.pdfViewer.polygonSettings.allowedInteractions) {\n // eslint-disable-next-line max-len\n annotationInteraction = this.checkAllowedInteractionSettings(this.pdfViewer.polygonSettings.allowedInteractions, annotation.allowedInteractions);\n }\n }\n }\n }\n return annotationInteraction;\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.checkIsLockSettings = function (annotation) {\n // eslint-disable-next-line\n var isLocked = false;\n if (annotation) {\n if (annotation.shapeAnnotationType === 'FreeText') {\n isLocked = this.checkLockSettings(this.pdfViewer.freeTextSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.inkAnnotationSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'StickyNotes') {\n isLocked = this.checkLockSettings(this.pdfViewer.stickyNotesSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Stamp') {\n isLocked = this.checkLockSettings(this.pdfViewer.stampSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Image') {\n isLocked = this.checkLockSettings(this.pdfViewer.customStampSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'textMarkup') {\n if (annotation.textMarkupAnnotationType === 'Highlight') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.highlightSettings.isLock);\n }\n else if (annotation.textMarkupAnnotationType === 'Underline') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.underlineSettings.isLock);\n }\n else if (annotation.textMarkupAnnotationType === 'Strikethrough') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.strikethroughSettings.isLock);\n }\n }\n else {\n if (annotation.measureType !== '') {\n if (annotation.measureType === 'Distance') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.distanceSettings.isLock);\n }\n else if (annotation.measureType === 'Perimeter') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.perimeterSettings.isLock);\n }\n else if (annotation.measureType === 'Radius') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.radiusSettings.isLock);\n }\n else if (annotation.measureType === 'Area') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.areaSettings.isLock);\n }\n else if (annotation.measureType === 'Volume') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.volumeSettings.isLock);\n }\n }\n else {\n if (annotation.shapeAnnotationType === 'Line') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.lineSettings.isLock);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Arrow' || annotation.shapeAnnotationType === 'LineWidthArrowHead')) {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.arrowSettings.isLock);\n // eslint-disable-next-line max-len\n }\n else if ((annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Ellipse' || annotation.shapeAnnotationType === 'Oval')) {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.circleSettings.isLock);\n }\n else if ((annotation.shapeAnnotationType === 'Rectangle' || annotation.shapeAnnotationType === 'Square')) {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.rectangleSettings.isLock);\n }\n else if (annotation.shapeAnnotationType === 'Polygon') {\n // eslint-disable-next-line max-len\n isLocked = this.checkLockSettings(this.pdfViewer.polygonSettings.isLock);\n }\n }\n }\n }\n return isLocked;\n };\n // eslint-disable-next-line\n Annotation.prototype.checkLockSettings = function (locked) {\n var islock = false;\n if (locked || this.pdfViewer.annotationSettings.isLock) {\n islock = true;\n }\n return islock;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.restrictContextMenu = function () {\n // eslint-disable-next-line\n var isRestrict = false;\n // eslint-disable-next-line\n var annotation = this.findCurrentAnnotation();\n if (annotation && this.checkIsLockSettings(annotation) && this.checkAllowedInteractions('Select', annotation)) {\n isRestrict = true;\n }\n return isRestrict;\n };\n // eslint-disable-next-line\n Annotation.prototype.checkAllowedInteractionSettings = function (annotationInteraction, annotationAllowedInteraction) {\n if (annotationAllowedInteraction) {\n if (annotationAllowedInteraction.length === 1) {\n if (annotationAllowedInteraction[0] !== 'None') {\n return annotationAllowedInteraction;\n }\n }\n else {\n return annotationAllowedInteraction;\n }\n }\n if (annotationInteraction) {\n if (annotationInteraction.length === 1) {\n if (annotationInteraction[0] !== 'None') {\n return annotationInteraction;\n }\n }\n else {\n return annotationInteraction;\n }\n }\n if (this.pdfViewer.annotationSettings.allowedInteractions) {\n return this.pdfViewer.annotationSettings.allowedInteractions;\n }\n return ['None'];\n };\n /**\n * @param value\n * @param type\n * @param value\n * @param type\n * @private\n */\n Annotation.prototype.getValue = function (value, type) {\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n Annotation.prototype.convertRgbToNumberArray = function (value) {\n // eslint-disable-next-line max-len\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n Annotation.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n Annotation.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n Annotation.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n Annotation.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n Annotation.prototype.rgbToHsv = function (r, g, b, opacity) {\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n Annotation.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n i = Math.floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n Annotation.prototype.rgbToHex = function (rgb) {\n // eslint-disable-next-line max-len\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n /**\n * @param dataFormat\n * @private\n */\n Annotation.prototype.exportAnnotationsAsStream = function (dataFormat) {\n var _this = this;\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.pdfViewer.viewerBase.updateExportItem();\n if (isAnnotations) {\n return new Promise(function (resolve, reject) {\n _this.pdfViewer.viewerBase.createRequestForExportAnnotations(true, dataFormat, true).then(function (value) {\n resolve(value);\n });\n });\n }\n }\n return null;\n };\n Annotation.prototype.hex = function (x) {\n if (!isNullOrUndefined(x)) {\n return ('0' + x.toString(16)).slice(-2);\n }\n else {\n return '0';\n }\n };\n /**\n * @param obj\n * @private\n */\n // eslint-disable-next-line\n Annotation.prototype.cloneObject = function (obj) {\n return JSON.parse(JSON.stringify(obj));\n };\n /**\n * @private\n */\n Annotation.prototype.destroy = function () {\n this.destroyPropertiesWindow();\n this.textMarkupAnnotationModule.clear();\n };\n /**\n * @private\n */\n Annotation.prototype.getModuleName = function () {\n return 'Annotation';\n };\n /**\n * Get vertex points properties\n * @private\n */\n Annotation.prototype.getVertexPointsXY = function (points) {\n var vertexPoints = [];\n //Converting points model into vertex property\n for (var j = 0; j < points.length; j++) {\n vertexPoints[j] = { X: points[j].x, Y: points[j].y };\n }\n return vertexPoints;\n };\n /**\n * Method used to add annotations using program.\n *\n * @param annotationType - It describes type of annotation object.\n * @param options - It describes about the annotation objects and it's property.\n * @param dynamicStampItem - It describe which type of dynamic stamp.\n * @param signStampItem - It describe which type of sign stamp.\n * @param standardBusinessStampItem - It describe which type of standard business stamp.\n * @returns void\n */\n Annotation.prototype.addAnnotation = function (annotationType, options, dynamicStampItem, signStampItem, standardBusinessStampItem) {\n //Initialize the bounds and pageNumber\n var offset = { x: 1, y: 1 };\n var pageNumber = 0;\n if (options) {\n if (options.pageNumber && options.pageNumber > 0)\n pageNumber = options.pageNumber ? options.pageNumber - 1 : 0;\n }\n //Initialize the pdf annotation object array\n var annotationObject = null;\n var pdfAnnotation = [];\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n //Seperate the annotation type with it's method\n if (annotationType == 'FreeText') {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.freeTextAnnotationModule.updateAddAnnotationDetails(options, offset);\n this.pdfViewer.annotation.freeTextAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType == 'StickyNotes') {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.stickyNotesAnnotationModule.updateAddAnnotationDetails(options, offset);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType == 'Highlight' || annotationType == 'Underline' || annotationType == 'Strikethrough') {\n if (annotationType == 'Highlight')\n annotationObject = options;\n else if (annotationType == 'Underline')\n annotationObject = options;\n else if (annotationType == 'Strikethrough')\n annotationObject = options;\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.textMarkupAnnotationModule.updateAddAnnotationDetails(annotationType, annotationObject);\n this.pdfViewer.annotation.textMarkupAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Line' || annotationType === 'Arrow' || annotationType === 'Rectangle' || annotationType === 'Circle' || annotationType === 'Polygon') {\n if (annotationType == 'Line')\n annotationObject = options;\n else if (annotationType == 'Arrow')\n annotationObject = options;\n else if (annotationType == 'Rectangle')\n annotationObject = options;\n else if (annotationType == 'Circle')\n annotationObject = options;\n else if (annotationType == 'Polygon')\n annotationObject = options;\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.shapeAnnotationModule.updateAddAnnotationDetails(annotationType, annotationObject, offset);\n this.pdfViewer.annotation.shapeAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Distance' || annotationType === 'Perimeter' || annotationType === 'Area' || annotationType === 'Radius' || annotationType === 'Volume') {\n if (annotationType == 'Distance')\n annotationObject = options;\n else if (annotationType == 'Perimeter')\n annotationObject = options;\n else if (annotationType == 'Area')\n annotationObject = options;\n else if (annotationType == 'Radius')\n annotationObject = options;\n else if (annotationType == 'Volume')\n annotationObject = options;\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.measureAnnotationModule.updateAddAnnotationDetails(annotationType, annotationObject, offset);\n this.pdfViewer.annotation.measureAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Stamp') {\n if (options && options.customStamps) {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.stampAnnotationModule.updateAddAnnotationDetails(options, offset, pageNumber, dynamicStampItem, signStampItem, standardBusinessStampItem);\n }\n else {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.stampAnnotationModule.updateAddAnnotationDetails(options, offset, pageNumber, dynamicStampItem, signStampItem, standardBusinessStampItem);\n }\n this.pdfViewer.annotation.stampAnnotationModule.isAddAnnotationProgramatically = true;\n }\n else if (annotationType === 'Ink') {\n pdfAnnotation[pageNumber] = this.pdfViewer.annotation.inkAnnotationModule.updateAddAnnotationDetails(options, offset, pageNumber);\n this.pdfViewer.annotation.inkAnnotationModule.isAddAnnotationProgramatically = true;\n }\n //Annotation rendering can be done with the import annotation method.\n var pdf = { pdfAnnotation: pdfAnnotation };\n this.pdfViewerBase.isAddAnnotation = true;\n this.pdfViewerBase.importAnnotations(pdf);\n this.pdfViewerBase.isAddAnnotation = false;\n };\n /**\n * @param annotation\n * @private\n */\n Annotation.prototype.triggerAnnotationAddEvent = function (annotation) {\n var annotationType = annotation.shapeAnnotationType;\n if (annotationType === 'Stamp' || annotationType === 'Image' || annotationType === 'Path' || annotationType === 'FreeText' || annotationType === 'StickyNotes' || annotationType === 'Ink') {\n var settings = void 0;\n if (annotationType === 'FreeText') {\n settings = {\n opacity: annotation.opacity, borderColor: annotation.strokeColor, borderWidth: annotation.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n fillColor: annotation.fillColor, fontSize: annotation.fontSize, width: annotation.bounds.width, height: annotation.bounds.height, fontColor: annotation.fontColor, fontFamily: annotation.fontFamily, defaultText: annotation.dynamicText, fontStyle: annotation.font, textAlignment: annotation.textAlign\n };\n }\n else {\n settings = {\n opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor,\n thickness: annotation.thickness, author: annotation.author, subject: annotation.subject,\n modifiedDate: annotation.modifiedDate, data: annotation.data\n };\n }\n // eslint-disable-next-line\n var bounds = { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height };\n var type = this.getAnnotationType(annotation.shapeAnnotationType, annotation.measureType);\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(annotation.pageIndex, annotation.annotName, type, bounds, settings);\n }\n else if (annotationType === 'SignatureText' || annotationType === 'SignatureImage' || annotationType === 'HandWrittenSignature') {\n // eslint-disable-next-line\n var bounds = { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureAdd(annotation.pageIndex, annotation.signatureName, annotation.shapeAnnotationType, bounds, annotation.opacity, annotation.strokeColor, annotation.thickness, annotation.data);\n }\n else {\n // eslint-disable-next-line\n var setting = {\n opacity: annotation.opacity, fillColor: annotation.fillColor, strokeColor: annotation.strokeColor,\n thickness: annotation.thickness, author: annotation.author, subject: annotation.subject,\n modifiedDate: annotation.modifiedDate\n };\n var bounds = { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height };\n var type = this.getAnnotationType(annotation.shapeAnnotationType, annotation.measureType);\n if (type === 'Line' || type === 'Arrow' || type === 'Distance' || type === 'Perimeter') {\n setting.lineHeadStartStyle = this.getArrowString(annotation.sourceDecoraterShapes);\n setting.lineHeadEndStyle = this.getArrowString(annotation.taregetDecoraterShapes);\n setting.borderDashArray = annotation.borderDashArray;\n }\n var labelSettings = void 0;\n if (this.pdfViewer.enableShapeLabel) {\n labelSettings = {\n // eslint-disable-next-line max-len\n fontColor: annotation.fontColor, fontSize: annotation.fontSize, fontFamily: annotation.fontFamily,\n opacity: annotation.labelOpacity, labelContent: annotation.labelContent, fillColor: annotation.labelFillColor\n };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(annotation.pageIndex, annotation.annotName, type, bounds, setting, null, null, null, labelSettings);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(annotation.pageIndex, annotation.annotName, type, bounds, setting);\n }\n }\n };\n /**\n * @private\n */\n Annotation.prototype.triggerAnnotationUnselectEvent = function () {\n if (this.pdfViewer.selectedItems.annotations && this.pdfViewer.selectedItems.annotations[0]) {\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage' && annotation.shapeAnnotationType !== 'Path') {\n this.pdfViewer.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n this.pdfViewer.clearSelection(annotation.pageIndex);\n }\n }\n };\n /**\n * @private\n */\n Annotation.prototype.updateFontFamilyRenderSize = function (currentAnnotation, currentValue) {\n var freeTextAnnotation = this.freeTextAnnotationModule;\n freeTextAnnotation.inputBoxElement.style.fontFamily = currentValue;\n freeTextAnnotation.autoFitFreeText();\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n var padding = parseFloat(freeTextAnnotation.inputBoxElement.style.paddingLeft);\n var inputEleHeight = currentAnnotation.bounds.height * zoomFactor;\n var characterLength = 8;\n var inputEleWidth = parseFloat(freeTextAnnotation.inputBoxElement.style.width) - characterLength;\n inputEleWidth = ((inputEleWidth) / zoomFactor);\n inputEleHeight = ((inputEleHeight) / zoomFactor);\n var heightDiff = (inputEleHeight - currentAnnotation.bounds.height);\n var y = undefined;\n if (heightDiff > 0) {\n y = currentAnnotation.wrapper.offsetY + (heightDiff / 2);\n y = y > 0 ? y : undefined;\n }\n else {\n heightDiff = Math.abs(heightDiff);\n y = currentAnnotation.wrapper.offsetY - (heightDiff / 2);\n y = y > 0 ? y : undefined;\n }\n var widthDiff = (inputEleWidth - currentAnnotation.bounds.width);\n var x = undefined;\n if (widthDiff > 0) {\n x = currentAnnotation.wrapper.offsetX + (widthDiff / 2);\n x = x > 0 ? x : undefined;\n }\n else {\n widthDiff = Math.abs(widthDiff);\n x = currentAnnotation.wrapper.offsetX - (widthDiff / 2);\n }\n currentAnnotation.bounds.width = inputEleWidth;\n currentAnnotation.bounds.height = inputEleHeight;\n this.pdfViewer.nodePropertyChange(currentAnnotation, { fontFamily: currentValue, bounds: { width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height, y: y, x: x } });\n this.pdfViewer.renderSelector(currentAnnotation.pageIndex, this.pdfViewer.annotationSelectorSettings);\n this.modifyInCollections(currentAnnotation, 'bounds');\n };\n Annotation.prototype.updateCanvas = function (canvas, pageWidth, pageHeight, pageNumber) {\n var ratio = this.pdfViewerBase.getZoomRatio();\n canvas.width = pageWidth * ratio;\n canvas.height = pageHeight * ratio;\n canvas.style.width = pageWidth + 'px';\n canvas.style.height = pageHeight + 'px';\n canvas.style.position = 'absolute';\n canvas.style.zIndex = '1';\n this.pdfViewerBase.applyElementStyles(canvas, pageNumber);\n };\n return Annotation;\n}());\n\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(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};\n/**\n * The `LinkAnnotation` module is used to handle link annotation actions of PDF viewer.\n *\n * @hidden\n */\nvar LinkAnnotation = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function LinkAnnotation(pdfViewer, viewerBase) {\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * @param data\n * @param pageIndex\n * @param data\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n LinkAnnotation.prototype.renderHyperlinkContent = function (data, pageIndex) {\n if (this.pdfViewer.enableHyperlink) {\n var hyperlinks = data.hyperlinks;\n var hyperlinksBounds = data.hyperlinkBounds;\n this.linkAnnotation = data.linkAnnotation;\n this.linkPage = data.linkPage;\n this.annotationY = data.annotationLocation;\n if (hyperlinks && hyperlinks.length > 0 && hyperlinksBounds.length > 0) {\n this.renderWebLink(hyperlinks, hyperlinksBounds, pageIndex);\n }\n if (this.linkAnnotation && this.linkAnnotation.length > 0 && this.linkPage.length > 0) {\n this.renderDocumentLink(this.linkAnnotation, this.linkPage, this.annotationY, pageIndex);\n }\n }\n };\n /**\n * @private\n */\n LinkAnnotation.prototype.disableHyperlinkNavigationUnderObjects = function (eventTarget, evt, element) {\n var objects = findObjectsUnderMouse(element, element.pdfViewer, evt);\n if (objects.length > 0) {\n if (evt.target.classList.contains('e-pv-hyperlink')) {\n eventTarget.style.cursor = 'move';\n eventTarget.style.pointerEvents = 'none';\n eventTarget.title = '';\n }\n }\n else {\n var hyperlinkObjects = document.getElementsByClassName('e-pv-hyperlink');\n if (hyperlinkObjects && hyperlinkObjects.length > 0) {\n for (var i = 0; i < hyperlinkObjects.length; i++) {\n if (hyperlinkObjects[i].style.pointerEvents === 'none')\n hyperlinkObjects[i].style.pointerEvents = 'all';\n if (!hyperlinkObjects[i].title)\n hyperlinkObjects[i].title = hyperlinkObjects[i].href;\n }\n }\n }\n };\n LinkAnnotation.prototype.renderWebLink = function (hyperlinks, hyperlinksBounds, pageIndex) {\n var _this = this;\n var proxy = this;\n var isHyperlinkClicked = false;\n var _loop_1 = function (i) {\n var aTag = createElement('a', { id: 'weblinkdiv_' + i + '_' + pageIndex });\n // eslint-disable-next-line\n var rect = hyperlinksBounds[i];\n aTag = this_1.setHyperlinkProperties(aTag, rect, pageIndex);\n aTag.title = hyperlinks[i];\n if (hyperlinks[i] && hyperlinks[i].split('http').length === 1) {\n var hyperlinkText = \"http://\" + hyperlinks[i];\n aTag.setAttribute('href', hyperlinkText);\n }\n else {\n aTag.setAttribute('href', hyperlinks[i]);\n }\n if (this_1.pdfViewer.hyperlinkOpenState === 'CurrentTab') {\n aTag.target = '_self';\n aTag.onclick = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var isCancel;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!isHyperlinkClicked) return [3 /*break*/, 4];\n e.preventDefault();\n if (!(proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool)) return [3 /*break*/, 1];\n return [2 /*return*/, false];\n case 1: return [4 /*yield*/, proxy.pdfViewer.fireHyperlinkClick(hyperlinks[i], aTag)];\n case 2:\n isCancel = _a.sent();\n if (isCancel) {\n isHyperlinkClicked = true;\n aTag.click();\n }\n return [2 /*return*/, isCancel];\n case 3: return [3 /*break*/, 5];\n case 4:\n isHyperlinkClicked = false;\n return [2 /*return*/, true];\n case 5: return [2 /*return*/];\n }\n });\n }); };\n aTag.onmouseover = function () {\n proxy.triggerHyperlinkEvent(aTag);\n };\n }\n else if (this_1.pdfViewer.hyperlinkOpenState === 'NewTab') {\n aTag.target = '_blank';\n aTag.onclick = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var isCancel;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!!isHyperlinkClicked) return [3 /*break*/, 4];\n e.preventDefault();\n if (!(proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool)) return [3 /*break*/, 1];\n return [2 /*return*/, false];\n case 1: return [4 /*yield*/, proxy.pdfViewer.fireHyperlinkClick(hyperlinks[i], aTag)];\n case 2:\n isCancel = _a.sent();\n if (isCancel) {\n isHyperlinkClicked = true;\n aTag.click();\n }\n return [2 /*return*/, isCancel];\n case 3: return [3 /*break*/, 5];\n case 4:\n isHyperlinkClicked = false;\n return [2 /*return*/, true];\n case 5: return [2 /*return*/];\n }\n });\n }); };\n aTag.onmouseover = function () {\n proxy.triggerHyperlinkEvent(aTag);\n };\n }\n else if (this_1.pdfViewer.hyperlinkOpenState === 'NewWindow') {\n aTag.onclick = function (e) { return __awaiter(_this, void 0, void 0, function () {\n var isCancel;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n e.preventDefault();\n if (!(proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool)) return [3 /*break*/, 1];\n return [2 /*return*/, false];\n case 1: return [4 /*yield*/, proxy.pdfViewer.fireHyperlinkClick(hyperlinks[i], aTag)];\n case 2:\n isCancel = _a.sent();\n if (isCancel) {\n window.open(aTag.href, '_blank', 'scrollbars=yes,resizable=yes');\n }\n return [2 /*return*/, false];\n }\n });\n }); };\n aTag.onmouseover = function () {\n proxy.triggerHyperlinkEvent(aTag);\n };\n }\n var pageDiv = document.getElementById(this_1.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n pageDiv.appendChild(aTag);\n };\n var this_1 = this;\n for (var i = 0; i < hyperlinks.length; i++) {\n _loop_1(i);\n }\n };\n LinkAnnotation.prototype.triggerHyperlinkEvent = function (aTag) {\n if (this.pdfViewerBase.tool instanceof LineTool || this.pdfViewerBase.tool instanceof PolygonDrawingTool) {\n return false;\n }\n else {\n this.pdfViewer.fireHyperlinkHover(aTag);\n return true;\n }\n };\n LinkAnnotation.prototype.renderDocumentLink = function (linkAnnotation, linkPage, annotationY, pageIndex) {\n var proxy = this;\n var _loop_2 = function (i) {\n var aTag = createElement('a', { id: 'linkdiv_' + i + '_' + pageIndex });\n // eslint-disable-next-line\n var rect = linkAnnotation[i];\n aTag = this_2.setHyperlinkProperties(aTag, rect, pageIndex);\n aTag.setAttribute('href', 'javascript:void(0)');\n if (linkPage[i] !== undefined && linkPage[i] >= 0) {\n var destPageHeight = (this_2.pdfViewerBase.pageSize[pageIndex].height);\n var destLocation = void 0;\n var scrollValue = void 0;\n var pageSize = this_2.pdfViewerBase.pageSize[linkPage[i]];\n if (pageSize) {\n if (annotationY.length !== 0) {\n destLocation = (annotationY[i]);\n // eslint-disable-next-line max-len\n scrollValue = pageSize.top * this_2.pdfViewerBase.getZoomFactor() + ((destPageHeight - destLocation) * this_2.pdfViewerBase.getZoomFactor());\n }\n else {\n // eslint-disable-next-line max-len\n scrollValue = pageSize.top * this_2.pdfViewerBase.getZoomFactor();\n }\n }\n if (scrollValue !== undefined) {\n aTag.name = scrollValue.toString();\n aTag.setAttribute('aria-label', scrollValue.toString());\n aTag.onclick = function () {\n if (proxy.pdfViewerBase.tool instanceof LineTool || proxy.pdfViewerBase.tool instanceof PolygonDrawingTool) {\n return false;\n }\n else {\n // eslint-disable-next-line radix\n proxy.pdfViewerBase.viewerContainer.scrollTop = parseInt(aTag.name);\n return false;\n }\n };\n }\n var pageDiv = document.getElementById(this_2.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n pageDiv.appendChild(aTag);\n }\n };\n var this_2 = this;\n for (var i = 0; i < linkAnnotation.length; i++) {\n _loop_2(i);\n }\n };\n // eslint-disable-next-line\n LinkAnnotation.prototype.setHyperlinkProperties = function (aTag, rect, pageIndex) {\n aTag.className = 'e-pv-hyperlink';\n aTag.style.background = 'transparent';\n aTag.style.position = 'absolute';\n aTag.style.left = (rect.Left * this.pdfViewerBase.getZoomFactor()) + 'px';\n aTag.style.top = (rect.Top * this.pdfViewerBase.getZoomFactor()) + 'px';\n aTag.style.width = (rect.Width * this.pdfViewerBase.getZoomFactor()) + 'px';\n if (rect.Height < 0) {\n aTag.style.height = (-rect.Height * this.pdfViewerBase.getZoomFactor()) + 'px';\n aTag.style.top = ((rect.Top + rect.Height) * this.pdfViewerBase.getZoomFactor()) + 'px';\n }\n else {\n aTag.style.height = ((rect.Height < 0 ? -rect.Height : rect.Height) * this.pdfViewerBase.getZoomFactor()) + 'px';\n }\n aTag.style.color = 'transparent';\n this.pdfViewerBase.applyElementStyles(aTag, pageIndex);\n return aTag;\n };\n /**\n * @param pageNumber\n * @param isAdd\n * @param pageNumber\n * @param isAdd\n * @private\n */\n LinkAnnotation.prototype.modifyZindexForTextSelection = function (pageNumber, isAdd) {\n if (this.pdfViewerBase.pageCount > 0) {\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + pageNumber);\n if (pageDiv) {\n var pageChildNodes = pageDiv.childNodes;\n for (var i = 0; i < pageChildNodes.length; i++) {\n var childElement = pageChildNodes[i];\n if (childElement.tagName === 'A') {\n if (isAdd) {\n childElement.classList.add('e-pv-onselection');\n }\n else {\n childElement.classList.remove('e-pv-onselection');\n }\n }\n }\n }\n }\n };\n /**\n * @param element\n * @param isAdd\n * @param element\n * @param isAdd\n * @private\n */\n LinkAnnotation.prototype.modifyZindexForHyperlink = function (element, isAdd) {\n if (isAdd) {\n element.classList.add('e-pv-onselection');\n }\n else {\n element.classList.remove('e-pv-onselection');\n }\n };\n /**\n * @private\n */\n LinkAnnotation.prototype.destroy = function () {\n for (var i = 0; i < this.pdfViewerBase.pageCount - 1; i++) {\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + i);\n if (pageDiv) {\n // eslint-disable-next-line max-len\n var aElement = pageDiv.getElementsByTagName('a');\n if (aElement.length !== 0) {\n for (var index = aElement.length - 1; index >= 0; index--) {\n aElement[index].parentNode.removeChild(aElement[index]);\n }\n }\n }\n }\n };\n /**\n * @private\n */\n LinkAnnotation.prototype.getModuleName = function () {\n return 'LinkAnnotation';\n };\n return LinkAnnotation;\n}());\n\n/**\n * The `TextMarkupAnnotation` module is used to handle text markup annotation actions of PDF viewer.\n *\n * @hidden\n */\nvar TextMarkupAnnotation = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function TextMarkupAnnotation(pdfViewer, viewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.currentTextMarkupAddMode = '';\n /**\n * @private\n */\n this.selectTextMarkupCurrentPage = null;\n /**\n * @private\n */\n this.currentTextMarkupAnnotation = null;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n this.currentAnnotationIndex = null;\n this.isAnnotationSelect = false;\n /**\n * @private\n */\n this.isDropletClicked = false;\n /**\n * @private\n */\n this.isRightDropletClicked = false;\n /**\n * @private\n */\n this.isLeftDropletClicked = false;\n /**\n * @private\n */\n this.isSelectionMaintained = false;\n this.isExtended = false;\n this.isNewAnnotation = false;\n this.selectedTextMarkup = null;\n this.multiPageCollection = [];\n this.triggerAddEvent = false;\n /**\n * @private\n */\n this.isSelectedAnnotation = false;\n this.dropletHeight = 20;\n /**\n * @private\n */\n this.annotationClickPosition = {};\n // eslint-disable-next-line\n this.maintainSelection = function (event) {\n _this.isDropletClicked = true;\n _this.pdfViewer.textSelectionModule.initiateSelectionByTouch();\n _this.isExtended = true;\n _this.pdfViewer.textSelectionModule.selectionRangeArray = [];\n };\n // eslint-disable-next-line\n this.selectionEnd = function (event) {\n if (_this.isDropletClicked) {\n _this.isDropletClicked = false;\n }\n };\n // eslint-disable-next-line\n this.annotationLeftMove = function (event) {\n if (_this.isDropletClicked) {\n _this.isLeftDropletClicked = true;\n }\n };\n // eslint-disable-next-line\n this.annotationRightMove = function (event) {\n if (_this.isDropletClicked) {\n _this.isRightDropletClicked = true;\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.createAnnotationSelectElement = function () {\n // eslint-disable-next-line max-len\n this.dropDivAnnotationLeft = createElement('div', { id: this.pdfViewer.element.id + '_droplet_left', className: 'e-pv-drop' });\n this.dropDivAnnotationLeft.style.borderRight = '2px solid';\n // eslint-disable-next-line max-len\n this.dropDivAnnotationRight = createElement('div', { id: this.pdfViewer.element.id + '_droplet_right', className: 'e-pv-drop' });\n this.dropDivAnnotationRight.style.borderLeft = '2px solid';\n this.dropElementLeft = createElement('div', { className: 'e-pv-droplet', id: this.pdfViewer.element.id + '_dropletspan_left' });\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n this.dropDivAnnotationLeft.appendChild(this.dropElementLeft);\n this.dropElementRight = createElement('div', { className: 'e-pv-droplet', id: this.pdfViewer.element.id + '_dropletspan_right' });\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n this.dropDivAnnotationRight.appendChild(this.dropElementRight);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivAnnotationLeft);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivAnnotationRight);\n this.dropElementLeft.style.top = '20px';\n this.dropElementRight.style.top = '20px';\n this.dropElementRight.style.left = '-8px';\n this.dropElementLeft.style.left = '-8px';\n this.dropDivAnnotationLeft.style.display = 'none';\n this.dropDivAnnotationRight.style.display = 'none';\n this.dropDivAnnotationLeft.addEventListener('mousedown', this.maintainSelection);\n this.dropDivAnnotationLeft.addEventListener('mousemove', this.annotationLeftMove);\n this.dropDivAnnotationLeft.addEventListener('mouseup', this.selectionEnd);\n this.dropDivAnnotationRight.addEventListener('mousedown', this.maintainSelection);\n this.dropDivAnnotationRight.addEventListener('mousemove', this.annotationRightMove);\n this.dropDivAnnotationRight.addEventListener('mouseup', this.selectionEnd);\n };\n /**\n * @param target\n * @param x\n * @param y\n * @param target\n * @param x\n * @param y\n * @param target\n * @param x\n * @param y\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.textSelect = function (target, x, y) {\n if (this.isLeftDropletClicked) {\n var leftElement = this.dropDivAnnotationRight.getBoundingClientRect();\n var rightElement = this.dropDivAnnotationLeft.getBoundingClientRect();\n var clientX = x;\n var clientY = y;\n if (target.classList.contains('e-pv-text')) {\n if ((rightElement.top - 25) > leftElement.top) {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, true);\n }\n else {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, false);\n }\n this.updateLeftposition(clientX, clientY);\n }\n }\n else if (this.isRightDropletClicked) {\n var leftElement = this.dropDivAnnotationLeft.getBoundingClientRect();\n var clientX = x;\n var clientY = y;\n if (target.classList.contains('e-pv-text')) {\n if ((clientY) >= leftElement.top) {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, true);\n }\n else {\n this.pdfViewer.textSelectionModule.textSelectionOnDrag(target, clientX, clientY, false);\n }\n this.updatePosition(clientX, clientY);\n }\n }\n };\n /**\n * @param hide\n * @private\n */\n TextMarkupAnnotation.prototype.showHideDropletDiv = function (hide) {\n var type = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode;\n var isEnableResizer = this.isEnableTextMarkupResizer(type);\n if (isEnableResizer && this.dropDivAnnotationLeft && this.dropDivAnnotationRight) {\n if (hide) {\n this.dropDivAnnotationLeft.style.display = 'none';\n this.dropDivAnnotationRight.style.display = 'none';\n }\n else {\n this.dropDivAnnotationLeft.style.display = '';\n this.dropDivAnnotationRight.style.display = '';\n this.updateDropletStyles(type);\n }\n }\n };\n /**\n * @param type\n * @private\n */\n TextMarkupAnnotation.prototype.isEnableTextMarkupResizer = function (type) {\n var isEnableResizer = false;\n if (type) {\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n }\n else {\n if (this.pdfViewer.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.highlightSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.underlineSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n else if (this.pdfViewer.strikethroughSettings.enableTextMarkupResizer) {\n isEnableResizer = true;\n }\n }\n return isEnableResizer;\n };\n TextMarkupAnnotation.prototype.updateDropletStyles = function (type) {\n if (this.isEnableTextMarkupResizer(type) && this.dropDivAnnotationLeft && this.dropDivAnnotationLeft.offsetWidth > 0) {\n this.dropDivAnnotationLeft.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivAnnotationRight.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementLeft.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementRight.style.width = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivAnnotationLeft.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivAnnotationRight.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementLeft.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementRight.style.height = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementLeft.style.top = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropElementRight.style.top = this.dropletHeight * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n };\n TextMarkupAnnotation.prototype.updateAnnotationBounds = function () {\n this.isSelectionMaintained = false;\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n if (annotation && annotation.isMultiSelect) {\n this.showHideDropletDiv(true);\n this.updateMultiAnnotBounds(annotation);\n }\n else if (annotation && annotation.bounds) {\n this.retreieveSelection(annotation, null);\n this.pdfViewer.textSelectionModule.maintainSelection(this.selectTextMarkupCurrentPage, false);\n this.isSelectionMaintained = true;\n window.getSelection().removeAllRanges();\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateMultiAnnotBounds = function (annotation) {\n if (!annotation.annotpageNumbers) {\n var annotationList = this.getAnnotations(annotation.pageNumber, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === annotation.annotName) {\n annotation = annotationList[z];\n break;\n }\n }\n }\n }\n var lowestNumber = annotation.annotpageNumbers[0];\n var highestNumber = annotation.annotpageNumbers[0];\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n if (currentPage >= highestNumber) {\n highestNumber = currentPage;\n }\n if (currentPage <= lowestNumber) {\n lowestNumber = currentPage;\n }\n }\n for (var k = lowestNumber; k <= highestNumber; k++) {\n var annotationList = this.getAnnotations(k, null);\n if (annotationList) {\n for (var j = 0; j < annotation.annotNameCollection.length; j++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[j];\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n // eslint-disable-next-line\n var newAnnotation = annotationList[z];\n this.retreieveSelection(newAnnotation, null);\n this.pdfViewer.textSelectionModule.maintainSelection(newAnnotation.pageNumber, false);\n }\n }\n }\n }\n }\n this.isSelectionMaintained = true;\n window.getSelection().removeAllRanges();\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.retreieveSelection = function (annotation, element) {\n for (var k = 0; k < annotation.bounds.length; k++) {\n // eslint-disable-next-line\n var bound = annotation.bounds[k];\n var x = (bound.left ? bound.left : bound.Left) * this.pdfViewerBase.getZoomFactor();\n var y = (bound.top ? bound.top : bound.Top) * this.pdfViewerBase.getZoomFactor();\n var width = (bound.width ? bound.width : bound.Width) * this.pdfViewerBase.getZoomFactor();\n var height = bound.height ? bound.height : bound.Height;\n // eslint-disable-next-line\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + annotation.pageNumber);\n if (textLayer) {\n // eslint-disable-next-line\n var textDivs = textLayer.childNodes;\n for (var n = 0; n < textDivs.length; n++) {\n if (textDivs[n]) {\n // eslint-disable-next-line\n var rangebounds = textDivs[n].getBoundingClientRect();\n var top_1 = this.getClientValueTop(rangebounds.top, annotation.pageNumber);\n // eslint-disable-next-line max-len\n var currentLeft = rangebounds.left - this.pdfViewerBase.getElement('_pageDiv_' + annotation.pageNumber).getBoundingClientRect().left;\n var totalLeft = currentLeft + rangebounds.width;\n // eslint-disable-next-line\n var textDiVLeft = parseInt(textDivs[n].style.left);\n // eslint-disable-next-line\n var currentTop = parseInt(textDivs[n].style.top);\n var isLeftBounds = this.pdfViewer.textSelectionModule.checkLeftBounds(currentLeft, textDiVLeft, totalLeft, x);\n var isTopBounds = this.pdfViewer.textSelectionModule.checkTopBounds(top_1, currentTop, y);\n if (isLeftBounds && isTopBounds) {\n element = textDivs[n];\n break;\n }\n }\n }\n if (element != null) {\n // eslint-disable-next-line\n var boundingRect = this.pdfViewerBase.getElement('_textLayer_' + annotation.pageNumber).getBoundingClientRect();\n this.pdfViewer.textSelectionModule.textSelectionOnMouseMove(element, x + boundingRect.left, y + boundingRect.top, false);\n if ((annotation.bounds.length - 1) === k) {\n // eslint-disable-next-line max-len\n this.pdfViewer.textSelectionModule.textSelectionOnMouseMove(element, x + boundingRect.left + width, y + boundingRect.top, false);\n }\n }\n }\n }\n };\n /**\n * @param x\n * @param y\n * @param isSelected\n * @private\n */\n TextMarkupAnnotation.prototype.updatePosition = function (x, y, isSelected) {\n this.showHideDropletDiv(false);\n var pageTopValue = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = this.getClientValueTop(y, this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line\n var rightDivElement = document.getElementById(this.pdfViewer.element.id + '_droplet_right');\n if (isSelected) {\n // eslint-disable-next-line max-len\n rightDivElement.style.top = topClientValue * this.pdfViewerBase.getZoomFactor() + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n rightDivElement.style.top = topClientValue + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n // eslint-disable-next-line max-len\n rightDivElement.style.left = x + this.pdfViewerBase.viewerContainer.scrollLeft - this.pdfViewerBase.viewerContainer.getBoundingClientRect().left + 'px';\n };\n /**\n * @param x\n * @param y\n * @param isSelected\n * @param x\n * @param y\n * @param isSelected\n * @private\n */\n TextMarkupAnnotation.prototype.updateLeftposition = function (x, y, isSelected) {\n this.showHideDropletDiv(false);\n var pageTopValue = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = this.getClientValueTop(y, this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line\n var leftDivElement = document.getElementById(this.pdfViewer.element.id + '_droplet_left');\n leftDivElement.style.display = '';\n if (isSelected) {\n // eslint-disable-next-line max-len\n leftDivElement.style.top = topClientValue * this.pdfViewerBase.getZoomFactor() + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n leftDivElement.style.top = topClientValue + pageTopValue * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n // eslint-disable-next-line max-len\n leftDivElement.style.left = x + this.pdfViewerBase.viewerContainer.scrollLeft - this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (this.dropletHeight * this.pdfViewerBase.getZoomFactor()) + 'px';\n };\n TextMarkupAnnotation.prototype.getClientValueTop = function (clientValue, pageNumber) {\n if (this.pdfViewerBase.getElement('_pageDiv_' + pageNumber)) {\n // eslint-disable-next-line max-len\n return clientValue - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().top;\n }\n else {\n return clientValue;\n }\n };\n /**\n * @param textMarkupAnnotations\n * @param pageNumber\n * @param isImportTextMarkup\n * @param textMarkupAnnotations\n * @param pageNumber\n * @param isImportTextMarkup\n * @param textMarkupAnnotations\n * @param pageNumber\n * @param isImportTextMarkup\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderTextMarkupAnnotationsInPage = function (textMarkupAnnotations, pageNumber, isImportTextMarkup) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (isImportTextMarkup) {\n this.renderTextMarkupAnnotations(null, pageNumber, canvas, this.pdfViewerBase.getZoomFactor());\n this.renderTextMarkupAnnotations(textMarkupAnnotations, pageNumber, canvas, this.pdfViewerBase.getZoomFactor(), true);\n }\n else {\n this.renderTextMarkupAnnotations(textMarkupAnnotations, pageNumber, canvas, this.pdfViewerBase.getZoomFactor());\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderTextMarkupAnnotations = function (textMarkupAnnotations, pageNumber, canvas, factor, isImportAction) {\n if (canvas) {\n var context = canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.setLineDash([]);\n // eslint-disable-next-line\n var annotations = void 0;\n if (!isImportAction) {\n annotations = this.getAnnotations(pageNumber, textMarkupAnnotations);\n }\n else {\n annotations = textMarkupAnnotations;\n }\n if (annotations) {\n for (var i = 0; i < annotations.length; i++) {\n // eslint-disable-next-line\n var annotation = annotations[i];\n var annotationObject = null;\n var isAnnotationRotated = void 0;\n if (annotation.TextMarkupAnnotationType) {\n if (isImportAction) {\n if (this.pdfViewerBase.isJsonImported) {\n var newArray = [];\n for (var i_1 = 0; i_1 < annotation.Bounds.length; i_1++) {\n // eslint-disable-next-line\n annotation.Bounds[i_1] = this.pdfViewerBase.importJsonForRotatedDocuments(annotation.Rotate, pageNumber, annotation.Bounds[i_1], annotation.AnnotationRotation);\n annotation.Bounds[i_1].left = annotation.Bounds[i_1].X;\n annotation.Bounds[i_1].top = annotation.Bounds[i_1].Y;\n newArray.push(annotation.Bounds[i_1]);\n }\n annotation.Bounds = newArray;\n isAnnotationRotated = this.pdfViewerBase.isPageRotated;\n }\n }\n // eslint-disable-next-line max-len\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n if (!annotation.Author) {\n // eslint-disable-next-line max-len\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('textMarkup', annotation.TextMarkupAnnotationType);\n }\n if (!annotation.Subject) {\n annotation.Subject = annotation.TextMarkupAnnotationType;\n }\n if (annotation.AnnotationSettings && annotation.AnnotationSettings.isLock) {\n annotation.AnnotationSettings = { isLock: annotation.AnnotationSettings.isLock };\n }\n else {\n annotation.AnnotationSettings = this.getAnnotationSettings(annotation.TextMarkupAnnotationType);\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n textMarkupAnnotationType: annotation.TextMarkupAnnotationType, color: annotation.Color, allowedInteractions: annotation.allowedInteractions, opacity: annotation.Opacity, bounds: annotation.Bounds, author: annotation.Author, subject: annotation.Subject, modifiedDate: annotation.ModifiedDate, note: annotation.Note, rect: annotation.Rect,\n // eslint-disable-next-line max-len\n annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, shapeAnnotationType: 'textMarkup', pageNumber: pageNumber,\n textMarkupContent: annotation.TextMarkupContent, textMarkupStartIndex: 0, textMarkupEndIndex: 0, annotationSelectorSettings: this.getSettings(annotation),\n // eslint-disable-next-line max-len\n customData: this.pdfViewer.annotation.getCustomData(annotation), annotationAddMode: annotation.annotationAddMode, annotationSettings: annotation.AnnotationSettings, isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock, isAnnotationRotated: isAnnotationRotated, annotationRotation: annotation.AnnotationRotation\n };\n if (annotation.IsMultiSelect) {\n annotationObject.annotNameCollection = annotation.AnnotNameCollection;\n annotationObject.annotpageNumbers = annotation.AnnotpageNumbers;\n annotationObject.isMultiSelect = annotation.IsMultiSelect;\n }\n if (annotation.textMarkupContent && annotation.textMarkupContent !== '') {\n annotationObject.textMarkupContent = annotation.textMarkupContent;\n annotationObject.textMarkupStartIndex = annotation.textMarkupStartIndex;\n annotationObject.textMarkupEndIndex = annotation.textMarkupEndIndex;\n }\n if (isNullOrUndefined(annotation.TextMarkupContent) && isNullOrUndefined(annotation.textMarkupContent)) {\n var markedBounds = annotation.Bounds[0];\n var storedData = this.pdfViewerBase.getStoredData(pageNumber, true);\n if (isNullOrUndefined(storedData)) {\n this.pdfViewerBase.requestForTextExtraction(pageNumber, annotationObject);\n }\n else {\n var pageCharText = storedData.pageText.split('');\n var characterBounds = this.pdfViewerBase.textLayer.characterBound[pageNumber];\n var textMarkupContent = this.pdfViewerBase.textMarkUpContent(markedBounds, pageCharText, characterBounds);\n annotationObject.textMarkupContent = textMarkupContent;\n }\n }\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_textMarkup');\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annotationObject.opacity, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n width: annotationObject.bounds.width, height: annotationObject.bounds.height\n };\n this.pdfViewer.fireAnnotationAdd(annotationObject.pageNumber, annotationObject.annotName, annotation.TextMarkupAnnotationType, annotationObject.bounds, settings);\n }\n }\n // eslint-disable-next-line max-len\n var type = annotation.TextMarkupAnnotationType ? annotation.TextMarkupAnnotationType : annotation.textMarkupAnnotationType;\n // eslint-disable-next-line\n var annotBounds = annotation.Bounds ? annotation.Bounds : annotation.bounds;\n var opacity = annotation.Opacity ? annotation.Opacity : annotation.opacity;\n var color = annotation.Color ? annotation.Color : annotation.color;\n var annotationRotation = annotation.AnnotationRotation ? annotation.AnnotationRotation : annotation.annotationRotation;\n var isPrint = true;\n if (annotation.TextMarkupAnnotationType) {\n isPrint = annotation.IsPrint;\n }\n if (annotation.textMarkupAnnotationType) {\n isPrint = annotation.isPrint;\n }\n switch (type) {\n case 'Highlight':\n this.renderHighlightAnnotation(annotBounds, opacity, color, context, factor, isPrint, pageNumber);\n break;\n case 'Strikethrough':\n this.renderStrikeoutAnnotation(annotBounds, opacity, color, context, factor, pageNumber, isPrint, annotationRotation);\n break;\n case 'Underline':\n this.renderUnderlineAnnotation(annotBounds, opacity, color, context, factor, pageNumber, isPrint, annotationRotation);\n break;\n }\n }\n }\n var isMaintainedSelector = false;\n if (this.currentTextMarkupAnnotation && this.currentTextMarkupAnnotation.annotpageNumbers) {\n for (var m = 0; m < this.currentTextMarkupAnnotation.annotpageNumbers.length; m++) {\n if (pageNumber === this.currentTextMarkupAnnotation.annotpageNumbers[m]) {\n isMaintainedSelector = true;\n this.isAnnotationSelect = false;\n break;\n }\n }\n }\n if ((pageNumber === this.selectTextMarkupCurrentPage) || isMaintainedSelector) {\n if (!this.isAnnotationSelect) {\n this.maintainAnnotationSelection();\n }\n else {\n this.isAnnotationSelect = false;\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getSettings = function (annotation) {\n var selector;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else {\n selector = this.getSelector(annotation.TextMarkupAnnotationType);\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n TextMarkupAnnotation.prototype.drawTextMarkupAnnotations = function (type) {\n this.isTextMarkupAnnotationMode = true;\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n this.currentTextMarkupAddMode = type;\n var isCleared = true;\n this.multiPageCollection = [];\n var selectionObject = this.pdfViewer.textSelectionModule ? this.pdfViewer.textSelectionModule.selectionRangeArray : [];\n if (selectionObject.length > 0 && !this.isSelectionMaintained) {\n this.convertSelectionToTextMarkup(type, selectionObject, this.pdfViewerBase.getZoomFactor());\n }\n var selection = window.getSelection();\n var targetElement;\n if (selection && selection.anchorNode) {\n targetElement = selection.anchorNode.parentElement;\n }\n if (this.isEnableTextMarkupResizer(type) && this.isExtended && window.getSelection().toString()) {\n var pageBounds = this.getDrawnBounds();\n if (pageBounds[0] && pageBounds[0].bounds) {\n // eslint-disable-next-line\n var currentAnnot = this.currentTextMarkupAnnotation;\n for (var k = 0; k < pageBounds.length; k++) {\n if (currentAnnot && currentAnnot.pageNumber === pageBounds[k].pageIndex) {\n this.currentTextMarkupAnnotation = currentAnnot;\n this.selectTextMarkupCurrentPage = pageBounds[k].pageIndex;\n this.updateTextMarkupAnnotationBounds(pageBounds, k);\n }\n else {\n if (currentAnnot) {\n if (type === '') {\n type = currentAnnot.textMarkupAnnotationType;\n }\n }\n if (!currentAnnot.isMultiSelect) {\n var isMultiSelect = false;\n if (this.isMultiAnnotation(type)) {\n this.multiPageCollection.push(currentAnnot);\n isMultiSelect = true;\n }\n // eslint-disable-next-line max-len\n this.drawTextMarkups(type, pageBounds[k].bounds, pageBounds[k].pageIndex, pageBounds[k].rect, this.pdfViewerBase.getZoomFactor(), pageBounds[k].textContent, pageBounds[k].startIndex, pageBounds[k].endIndex, isMultiSelect, targetElement);\n }\n else {\n if (currentAnnot.isMultiSelect && currentAnnot.annotNameCollection) {\n this.modifyCurrentAnnotation(currentAnnot, pageBounds, k);\n }\n }\n }\n }\n }\n }\n else if (window.getSelection().toString()) {\n var pageBounds = this.getDrawnBounds();\n var isMultiSelect = this.isMultiPageAnnotations(pageBounds, type);\n if (pageBounds.length > 0) {\n for (var i = 0; i < pageBounds.length; i++) {\n if (type === '') {\n isCleared = false;\n }\n // eslint-disable-next-line max-len\n this.drawTextMarkups(type, pageBounds[i].bounds, pageBounds[i].pageIndex, pageBounds[i].rect, this.pdfViewerBase.getZoomFactor(), pageBounds[i].textContent, pageBounds[i].startIndex, pageBounds[i].endIndex, isMultiSelect, targetElement);\n }\n }\n }\n if (this.multiPageCollection) {\n for (var j = 0; j < this.multiPageCollection.length; j++) {\n this.updateAnnotationNames(this.multiPageCollection[j], this.multiPageCollection[j].pageNumber);\n }\n }\n this.isExtended = false;\n this.isSelectionMaintained = false;\n // this.pdfViewerBase.annotationHelper.redoCollection = [];\n if (isCleared && this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n if (this.isEnableTextMarkupResizer(type)) {\n this.updateAnnotationBounds();\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.isMultiPageAnnotations = function (pageBounds, type) {\n var isMultiSelect = false;\n for (var n = 0; n < pageBounds.length; n++) {\n if (pageBounds[n].pageIndex !== pageBounds[0].pageIndex && this.isMultiAnnotation(type)) {\n isMultiSelect = true;\n break;\n }\n }\n return isMultiSelect;\n };\n TextMarkupAnnotation.prototype.isMultiAnnotation = function (type) {\n var isSelection = false;\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.enableMultiPageAnnotation) {\n isSelection = true;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.enableMultiPageAnnotation) {\n isSelection = true;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.enableMultiPageAnnotation) {\n isSelection = true;\n }\n else if (this.pdfViewer.enableMultiPageAnnotation) {\n isSelection = true;\n }\n return isSelection;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.modifyCurrentAnnotation = function (currentAnnot, pageBounds, index) {\n for (var c = 0; c < currentAnnot.annotNameCollection.length; c++) {\n // eslint-disable-next-line\n var currentAnnots = currentAnnot.annotNameCollection[c];\n var annotationList = this.getAnnotations(pageBounds[index].pageIndex, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnots) {\n this.currentTextMarkupAnnotation = annotationList[z];\n this.selectTextMarkupCurrentPage = pageBounds[index].pageIndex;\n this.updateTextMarkupAnnotationBounds(pageBounds, index);\n break;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.drawAnnotationSelector = function (newAnnotation, annotation, newcanvas) {\n var newBounds = [];\n var x = 0;\n var y = 0;\n var width = 0;\n var height = 0;\n var currentTop = 0;\n var nextTop = 0;\n for (var i = 0; i < newAnnotation.bounds.length; i++) {\n currentTop = newAnnotation.bounds[i].top ? newAnnotation.bounds[i].top : newAnnotation.bounds[i].Top;\n nextTop = !isNullOrUndefined(newAnnotation.bounds[i + 1]) ? newAnnotation.bounds[i + 1].top ? newAnnotation.bounds[i + 1].top : newAnnotation.bounds[i + 1].Top : 0;\n if (newAnnotation.bounds.length > 1 && i < newAnnotation.bounds.length - 1 && currentTop === nextTop) {\n newBounds.push(newAnnotation.bounds[i]);\n }\n else {\n if (i === newAnnotation.bounds.length - 1 || newAnnotation.bounds.length >= 1) {\n newBounds.push(newAnnotation.bounds[i]);\n }\n if (newBounds.length >= 1) {\n x = newBounds[0].left ? newBounds[0].left : newBounds[0].Left;\n y = newBounds[0].top ? newBounds[0].top : newBounds[0].Top;\n height = newBounds[0].height ? newBounds[0].height : newBounds[0].Height;\n for (var j = 0; j < newBounds.length; j++) {\n if ((!isNaN(newBounds[j].width) && newBounds[j].width > 0) || (!isNaN(newBounds[j].Width) && newBounds[j].Width > 0)) {\n width += newBounds[j].width ? newBounds[j].width : newBounds[j].Width;\n }\n }\n if (!newcanvas) {\n newcanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + newAnnotation.pageNumber);\n }\n // eslint-disable-next-line max-len\n this.drawAnnotationSelectRect(newcanvas, this.getMagnifiedValue(x - 0.5, this.pdfViewerBase.getZoomFactor()), this.getMagnifiedValue(y - 0.5, this.pdfViewerBase.getZoomFactor()), this.getMagnifiedValue(width + 0.5, this.pdfViewerBase.getZoomFactor()), this.getMagnifiedValue(height + 0.5, this.pdfViewerBase.getZoomFactor()), annotation);\n newBounds = [];\n width = 0;\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.selectMultiPageAnnotations = function (annotation) {\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n // eslint-disable-next-line\n var newAnnotation = annotationList[z];\n this.drawAnnotationSelector(newAnnotation, annotation);\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.deletMultiPageAnnotation = function (annotation) {\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n // eslint-disable-next-line\n var newAnnotation = annotationList[z];\n var deletedAnnotation = null;\n deletedAnnotation = annotationList.splice(z, 1)[0];\n this.pdfViewer.annotationModule.addAction(currentPage, z, deletedAnnotation, 'Text Markup Deleted', null);\n this.currentAnnotationIndex = z;\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(deletedAnnotation, 'textMarkup');\n var removeDiv = document.getElementById(deletedAnnotation.annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n this.pdfViewer.annotationModule.updateAnnotationCollection(newAnnotation);\n this.manageAnnotations(annotationList, currentPage);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.updateImportAnnotationCollection(newAnnotation, newAnnotation.pageNumber, 'textMarkupAnnotation');\n var annotationId = newAnnotation.annotName;\n // eslint-disable-next-line\n var annotationBounds = newAnnotation.bounds;\n this.pdfViewer.annotationModule.renderAnnotations(currentPage, null, null, null);\n }\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.modifyMultiPageAnnotations = function (annotation, property, value) {\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n if (property === 'Color') {\n annotationList[z].color = value;\n }\n else {\n annotationList[z].opacity = value;\n }\n annotationList[z].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentAnnotationIndex = z;\n if (status === null || status === 'changed') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.addAction(annotationList[z].pageNumber, z, annotationList[z], 'Text Markup Property modified', property);\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationList[z]);\n this.manageAnnotations(annotationList, currentPage);\n this.pdfViewer.annotationModule.renderAnnotations(currentPage, null, null, null);\n }\n }\n }\n }\n }\n }\n };\n TextMarkupAnnotation.prototype.convertSelectionToTextMarkup = function (type, selectionObject, factor) {\n var isMultiSelect = false;\n this.triggerAddEvent = false;\n this.multiPageCollection = [];\n for (var i = 0; i < selectionObject.length; i++) {\n var textValue = selectionObject[i].textContent;\n // eslint-disable-next-line\n var indexes = void 0;\n if (selectionObject[i].startNode === selectionObject[i].endNode) {\n var parentText = document.getElementById(selectionObject[i].startNode).textContent;\n indexes = this.getIndexNumbers(selectionObject[i].pageNumber, textValue, parentText);\n }\n else {\n indexes = this.getIndexNumbers(selectionObject[i].pageNumber, textValue);\n }\n if (!isMultiSelect) {\n for (var n = 1; n < selectionObject.length; n++) {\n if (selectionObject[n].pageNumber !== selectionObject[0].pageNumber && this.isMultiAnnotation(type)) {\n isMultiSelect = true;\n break;\n }\n }\n }\n if (this.isMultiAnnotation(type) && (selectionObject.length - 1) === i) {\n this.triggerAddEvent = true;\n }\n // eslint-disable-next-line max-len\n this.drawTextMarkups(type, selectionObject[i].rectangleBounds, selectionObject[i].pageNumber, selectionObject[i].bound, factor, textValue, indexes.startIndex, indexes.endIndex, isMultiSelect, document.getElementById(selectionObject[i].startNode));\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateTextMarkupAnnotationBounds = function (pageBounds, currentIndex) {\n if (this.currentTextMarkupAnnotation) {\n var pageAnnotations = this.getAnnotations(pageBounds[currentIndex].pageIndex, null);\n var annotation = null;\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n pageAnnotations[i].bounds = pageBounds[currentIndex].bounds;\n pageAnnotations[i].textMarkupContent = pageBounds[currentIndex].textContent;\n pageAnnotations[i].textMarkupStartIndex = pageBounds[currentIndex].startIndex;\n pageAnnotations[i].textMarkupEndIndex = pageBounds[currentIndex].endIndex;\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n annotation = pageAnnotations[i];\n }\n }\n this.manageAnnotations(pageAnnotations, pageBounds[currentIndex].pageIndex);\n this.currentTextMarkupAnnotation = null;\n this.pdfViewer.annotationModule.renderAnnotations(pageBounds[currentIndex].pageIndex, null, null, null);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n if (annotation) {\n // eslint-disable-next-line\n var settings = { opacity: annotation.opacity, color: annotation.color, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate };\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n if ((pageBounds.length - 1) === currentIndex) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pageBounds[currentIndex].pageIndex, annotation.annotName, annotation.textMarkupAnnotationType, annotation.bounds, settings, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, null, multiPageCollection);\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationResize(pageBounds[currentIndex].pageIndex, annotation.annotName, annotation.textMarkupAnnotationType, annotation.bounds, settings, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, null);\n }\n }\n // eslint-disable-next-line max-len\n this.currentAnnotationIndex = null;\n this.selectTextMarkupCurrentPage = null;\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.multiPageCollectionList = function (annotation) {\n var multiPageCollectionList = [];\n if (annotation.isMultiSelect && annotation.annotNameCollection) {\n multiPageCollectionList.push(annotation);\n for (var k = 0; k < annotation.annotNameCollection.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotation.annotNameCollection[k];\n if (currentAnnot !== annotation.annotName) {\n for (var p = 0; p < annotation.annotpageNumbers.length; p++) {\n var currentPage = annotation.annotpageNumbers[p];\n var annotationList = this.getAnnotations(currentPage, null);\n if (annotationList) {\n for (var z = 0; z < annotationList.length; z++) {\n if (annotationList[z].annotName === currentAnnot) {\n multiPageCollectionList.push(annotationList[z]);\n }\n }\n }\n }\n }\n }\n }\n return multiPageCollectionList;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateAnnotationNames = function (annotations, pageNumber) {\n if (annotations) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n var annotation = null;\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotations.annotName === pageAnnotations[i].annotName) {\n // eslint-disable-next-line\n var annotNamesCollections = [];\n // eslint-disable-next-line\n var annotpageNumbers = [];\n for (var p = 0; p < this.multiPageCollection.length; p++) {\n annotNamesCollections.push(this.multiPageCollection[p].annotName);\n annotpageNumbers.push(this.multiPageCollection[p].pageNumber);\n }\n pageAnnotations[i].isMultiSelect = true;\n pageAnnotations[i].annotNameCollection = annotNamesCollections;\n pageAnnotations[i].annotpageNumbers = annotpageNumbers;\n annotation = pageAnnotations[i];\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateAnnotationContent = function (annotation, pageBound) {\n if (annotation) {\n var pageAnnotations = this.getAnnotations(this.selectTextMarkupCurrentPage, null);\n var annotation_1 = null;\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n pageAnnotations[i].textMarkupContent = pageBound.textContent;\n pageAnnotations[i].textMarkupStartIndex = pageBound.startIndex;\n pageAnnotations[i].textMarkupEndIndex = pageBound.endIndex;\n annotation_1 = pageAnnotations[i];\n }\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], this.selectTextMarkupCurrentPage);\n }\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.drawTextMarkups = function (type, bounds, pageNumber, rect, factor, textContent, startIndex, endIndex, isMultiSelect, targetElement) {\n var annotation = null;\n this.isNewAnnotation = false;\n var author = 'Guest';\n var subject;\n var context = this.getPageContext(pageNumber);\n var modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.highlightColor = this.highlightColor ? this.highlightColor : this.pdfViewer.highlightSettings.color;\n this.underlineColor = this.underlineColor ? this.underlineColor : this.pdfViewer.underlineSettings.color;\n this.strikethroughColor = this.strikethroughColor ? this.strikethroughColor : this.pdfViewer.strikethroughSettings.color;\n this.highlightOpacity = this.pdfViewer.highlightSettings.opacity;\n this.underlineOpacity = this.pdfViewer.underlineSettings.opacity;\n this.strikethroughOpacity = this.pdfViewer.strikethroughSettings.opacity;\n this.annotationAddMode = 'UI Drawn Annotation';\n // eslint-disable-next-line\n var allowedInteractions;\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n var annotationRotate = 0;\n var pageRotation = this.getAngle(pageDetails.rotation);\n if (context) {\n context.setLineDash([]);\n switch (type) {\n case 'Highlight':\n this.isNewAnnotation = true;\n subject = 'Highlight';\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.highlightSettings.author !== 'Guest' && this.pdfViewer.highlightSettings.author) ? this.pdfViewer.highlightSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n allowedInteractions = this.pdfViewer.highlightSettings.allowedInteractions ? this.pdfViewer.highlightSettings.allowedInteractions : ['None'];\n // eslint-disable-next-line max-len\n if (isNullOrUndefined(this.highlightOpacity)) {\n this.highlightOpacity = 1;\n }\n annotation = this.getAddedAnnotation(type, this.highlightColor, this.highlightOpacity, bounds, author, subject, modifiedDate, '', false, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions, annotationRotate);\n if (annotation) {\n // eslint-disable-next-line max-len\n this.renderHighlightAnnotation(annotation.bounds, annotation.opacity, annotation.color, context, factor, annotation.isPrint, pageNumber);\n }\n break;\n case 'Strikethrough':\n this.isNewAnnotation = true;\n subject = 'Strikethrough';\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.strikethroughSettings.author !== 'Guest' && this.pdfViewer.strikethroughSettings.author) ? this.pdfViewer.strikethroughSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n allowedInteractions = this.pdfViewer.strikethroughSettings.allowedInteractions ? this.pdfViewer.strikethroughSettings.allowedInteractions : ['None'];\n // eslint-disable-next-line max-len\n if (targetElement && targetElement.style.transform !== '') {\n if (targetElement.style.transform.startsWith('rotate(90deg)')) {\n annotationRotate = Math.abs(pageRotation - 90);\n }\n else if (targetElement.style.transform.startsWith('rotate(180deg)')) {\n annotationRotate = Math.abs(pageRotation - 180);\n }\n else if (targetElement.style.transform.startsWith('rotate(-90deg)')) {\n annotationRotate = Math.abs(pageRotation - 270);\n }\n else {\n annotationRotate = pageRotation;\n }\n }\n if (isNullOrUndefined(this.strikethroughOpacity)) {\n this.strikethroughOpacity = 1;\n }\n annotation = this.getAddedAnnotation(type, this.strikethroughColor, this.strikethroughOpacity, bounds, author, subject, modifiedDate, '', false, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions, annotationRotate);\n if (annotation) {\n // eslint-disable-next-line max-len\n this.renderStrikeoutAnnotation(annotation.bounds, annotation.opacity, annotation.color, context, factor, pageNumber, annotation.isPrint, annotation.annotationRotation);\n }\n break;\n case 'Underline':\n this.isNewAnnotation = true;\n subject = 'Underline';\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.underlineSettings.author !== 'Guest' && this.pdfViewer.underlineSettings.author) ? this.pdfViewer.underlineSettings.author : this.pdfViewer.annotationSettings.author ? this.pdfViewer.annotationSettings.author : 'Guest';\n allowedInteractions = this.pdfViewer.underlineSettings.allowedInteractions ? this.pdfViewer.underlineSettings.allowedInteractions : ['None'];\n // eslint-disable-next-line max-len\n if (targetElement && targetElement.style.transform !== '') {\n if (targetElement.style.transform.startsWith('rotate(90deg)')) {\n annotationRotate = Math.abs(pageRotation - 90);\n }\n else if (targetElement.style.transform.startsWith('rotate(180deg)')) {\n annotationRotate = Math.abs(pageRotation - 180);\n }\n else if (targetElement.style.transform.startsWith('rotate(-90deg)')) {\n annotationRotate = Math.abs(pageRotation - 270);\n }\n else {\n annotationRotate = pageRotation;\n }\n }\n if (isNullOrUndefined(this.underlineOpacity)) {\n this.underlineOpacity = 1;\n }\n annotation = this.getAddedAnnotation(type, this.underlineColor, this.underlineOpacity, bounds, author, subject, modifiedDate, '', false, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions, annotationRotate);\n if (annotation) {\n // eslint-disable-next-line max-len\n this.renderUnderlineAnnotation(annotation.bounds, annotation.opacity, annotation.color, context, factor, pageNumber, annotation.isPrint, annotation.annotationRotation);\n }\n break;\n }\n this.isNewAnnotation = false;\n if (annotation) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var settings = { opacity: annotation.opacity, color: annotation.color, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate };\n var index = this.pdfViewer.annotationModule.actionCollection[this.pdfViewer.annotationModule.actionCollection.length - 1].index;\n // eslint-disable-next-line max-len\n if (this.isMultiAnnotation(type)) {\n if (this.triggerAddEvent) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pageNumber, annotation.annotName, type, annotation.bounds, settings, textContent, startIndex, endIndex, null, this.multiPageCollection);\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationAdd(pageNumber, annotation.annotName, type, annotation.bounds, settings, textContent, startIndex, endIndex);\n }\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(type);\n }\n }\n };\n TextMarkupAnnotation.prototype.getAngle = function (rotation) {\n // eslint-disable-next-line\n var angle = 0;\n if (rotation) {\n switch (rotation) {\n case 0:\n angle = 0;\n break;\n case 1:\n angle = 90;\n break;\n case 2:\n angle = 180;\n break;\n case 3:\n angle = 270;\n break;\n }\n }\n return angle;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.retreiveTextIndex = function (annotation) {\n if (annotation.textMarkupContent === '') {\n this.retreieveSelection(annotation, null);\n var pageBounds = this.getDrawnBounds();\n window.getSelection().removeAllRanges();\n if (pageBounds[0] && pageBounds[0].bounds) {\n this.updateAnnotationContent(annotation, pageBounds[0]);\n annotation.textMarkupContent = pageBounds[0].textContent;\n annotation.textMarkupStartIndex = pageBounds[0].startIndex;\n annotation.textMarkupEndIndex = pageBounds[0].endIndex;\n }\n }\n return annotation;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderHighlightAnnotation = function (bounds, opacity, color, context, factor, isPrint, pageIndex) {\n var zoomRatio = this.pdfViewerBase.getZoomRatio(factor);\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var bound = bounds[i];\n context.beginPath();\n var x = bound.X ? bound.X : bound.left;\n var y = bound.Y ? bound.Y : bound.top;\n var width = bound.Width ? bound.Width : bound.width;\n var height = bound.Height ? bound.Height : bound.height;\n x = x ? x : bound.x;\n y = y ? y : bound.y;\n // The highlighted position is slightly increased. So Subtract -1 from the height. \n height = height - 1;\n if (context.canvas.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageIndex) {\n if (isPrint) {\n // eslint-disable-next-line max-len\n context.rect((x * zoomRatio), (y * zoomRatio), (width * zoomRatio), (height * zoomRatio));\n context.globalAlpha = opacity * 0.5;\n context.closePath();\n context.fillStyle = color;\n context.msFillRule = 'nonzero';\n context.fill();\n }\n }\n else {\n // eslint-disable-next-line max-len\n context.rect((x * zoomRatio), (y * zoomRatio), (width * zoomRatio), (height * zoomRatio));\n context.globalAlpha = opacity * 0.5;\n context.closePath();\n context.fillStyle = color;\n context.msFillRule = 'nonzero';\n context.fill();\n }\n }\n context.save();\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderStrikeoutAnnotation = function (bounds, opacity, color, context, factor, pageNumber, isPrint, annotationRotation) {\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var bound = this.getProperBounds(bounds[i]);\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n var factorRatio = this.pdfViewerBase.getZoomRatio(factor);\n var rotation = pageDetails.rotation;\n if (annotationRotation) {\n var pageRotation = this.getAngle(rotation);\n rotation = Math.abs(annotationRotation - pageRotation) / 90;\n }\n if (context.canvas.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageNumber) {\n if (isPrint) {\n if (rotation === 1) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, (bound.x + (bound.width / 2)), bound.y, bound.width, bound.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n else if (rotation === 2) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, bound.x, (bound.y + (bound.height / 2)), bound.width, bound.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n else if (rotation === 3) {\n this.drawLine(opacity, bound.x, bound.y, (bound.width / 2), bound.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n else {\n this.drawLine(opacity, bound.x, bound.y, bound.width, (bound.height / 2), color, factorRatio, context, pageNumber, annotationRotation);\n }\n }\n }\n else {\n if (rotation === 1) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, (bound.x + (bound.width / 2)), bound.y, bound.width, bound.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n else if (rotation === 2) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, bound.x, (bound.y + (bound.height / 2)), bound.width, bound.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n else if (rotation === 3) {\n this.drawLine(opacity, bound.x, bound.y, (bound.width / 2), bound.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n else {\n this.drawLine(opacity, bound.x, bound.y, bound.width, (bound.height / 2), color, factorRatio, context, pageNumber, annotationRotation);\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.renderUnderlineAnnotation = function (bounds, opacity, color, context, factor, pageNumber, isPrint, annotationRotation) {\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var boundValues = this.getProperBounds(bounds[i]);\n var factorRatio = this.pdfViewerBase.getZoomRatio(factor);\n if (context.canvas.id === this.pdfViewer.element.id + '_print_annotation_layer_' + pageNumber) {\n if (isPrint) {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, boundValues.x, boundValues.y, boundValues.width, boundValues.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n }\n else {\n // eslint-disable-next-line max-len\n this.drawLine(opacity, boundValues.x, boundValues.y, boundValues.width, boundValues.height, color, factorRatio, context, pageNumber, annotationRotation);\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getProperBounds = function (bound) {\n var x = bound.X ? bound.X : bound.left;\n var y = bound.Y ? bound.Y : bound.top;\n var width = bound.Width ? bound.Width : bound.width;\n var height = bound.Height ? bound.Height : bound.height;\n x = x ? x : bound.x;\n y = y ? y : bound.y;\n return { x: x, y: y, width: width, height: height };\n };\n // eslint-disable-next-line max-len\n TextMarkupAnnotation.prototype.drawLine = function (opacity, x, y, width, height, color, factor, context, pageNumber, annotationRotation) {\n context.globalAlpha = opacity;\n if (isBlazor()) {\n y = y - 1;\n }\n height = height - 1;\n context.beginPath();\n var pageDetails = this.pdfViewerBase.pageSize[pageNumber];\n var rotation = pageDetails.rotation;\n if (annotationRotation) {\n var pageRotation = this.getAngle(rotation);\n rotation = Math.abs(annotationRotation - pageRotation) / 90;\n }\n if (rotation === 1) {\n context.moveTo((x * factor), (y * factor));\n context.lineTo((x * factor), (y + height) * factor);\n }\n else if (rotation === 2) {\n context.moveTo((x * factor), (y * factor));\n context.lineTo((width + x) * factor, (y * factor));\n }\n else if (rotation === 3) {\n context.moveTo((width + x) * factor, (y * factor));\n context.lineTo((width + x) * factor, (y + height) * factor);\n }\n else {\n context.moveTo((x * factor), (y + height) * factor);\n context.lineTo((width + x) * factor, (y + height) * factor);\n }\n context.lineWidth = 1;\n context.strokeStyle = color;\n context.closePath();\n context.msFillRule = 'nonzero';\n context.stroke();\n };\n /**\n * @param textMarkupAnnotations\n * @param pageIndex\n * @param stampData\n * @param shapeData\n * @param measureShapeData\n * @param stickyData\n * @param textMarkupAnnotations\n * @param pageIndex\n * @param stampData\n * @param shapeData\n * @param measureShapeData\n * @param stickyData\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.printTextMarkupAnnotations = function (textMarkupAnnotations, pageIndex, stampData, shapeData, measureShapeData, stickyData) {\n var canvas = createElement('canvas', { id: this.pdfViewer.element.id + '_print_annotation_layer_' + pageIndex });\n canvas.style.width = 816 + 'px';\n canvas.style.height = 1056 + 'px';\n var pageWidth = this.pdfViewerBase.pageSize[pageIndex].width;\n var pageHeight = this.pdfViewerBase.pageSize[pageIndex].height;\n var zoom = this.pdfViewerBase.getZoomFactor();\n var zoomRatio = this.pdfViewerBase.getZoomRatio(zoom);\n canvas.height = pageHeight * zoomRatio;\n canvas.width = pageWidth * zoomRatio;\n // eslint-disable-next-line\n var textMarkupannotations = this.getAnnotations(pageIndex, null, '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeAnnotation = this.getAnnotations(pageIndex, null, '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeAnnotation = this.getAnnotations(pageIndex, null, '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampAnnotation = this.getAnnotations(pageIndex, null, '_annotations_stamp');\n // eslint-disable-next-line\n var stickyNoteAnnotation = this.getAnnotations(pageIndex, null, '_annotations_sticky');\n if (stampAnnotation || shapeAnnotation || stickyNoteAnnotation || measureShapeAnnotation) {\n this.pdfViewer.renderDrawing(canvas, pageIndex);\n }\n else {\n this.pdfViewer.annotation.renderAnnotations(pageIndex, shapeData, measureShapeData, null, canvas);\n this.pdfViewer.annotation.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex, canvas);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.renderStickyNotesAnnotations(stickyData, pageIndex, canvas);\n }\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n if (textMarkupannotations) {\n this.renderTextMarkupAnnotations(null, pageIndex, canvas, zoomFactor);\n }\n else {\n this.renderTextMarkupAnnotations(textMarkupAnnotations, pageIndex, canvas, zoomFactor);\n }\n var imageSource = canvas.toDataURL();\n return imageSource;\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.saveTextMarkupAnnotations = function () {\n // eslint-disable-next-line\n var storeTextMarkupObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (this.pdfViewerBase.isStorageExceed) {\n storeTextMarkupObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'];\n }\n // eslint-disable-next-line\n var textMarkupAnnotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n textMarkupAnnotations[j] = [];\n }\n if (storeTextMarkupObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var textMarkupAnnotationCollection = JSON.parse(storeTextMarkupObject);\n for (var i = 0; i < textMarkupAnnotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = textMarkupAnnotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n if (this.pdfViewerBase.isJsonExported) {\n if (pageAnnotationObject.annotations[z].isAnnotationRotated) {\n pageAnnotationObject.annotations[z].bounds = this.getBoundsForSave(pageAnnotationObject.annotations[z].bounds, i);\n }\n else {\n var pageDetails = this.pdfViewerBase.pageSize[pageAnnotationObject.pageIndex];\n if (pageDetails) {\n pageAnnotationObject.annotations[z].annotationRotation = pageDetails.rotation;\n }\n }\n }\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.getBoundsForSave(pageAnnotationObject.annotations[z].bounds, i));\n var colorString = pageAnnotationObject.annotations[z].color;\n pageAnnotationObject.annotations[z].color = JSON.stringify(this.getRgbCode(colorString));\n pageAnnotationObject.annotations[z].rect = JSON.stringify(pageAnnotationObject.annotations[z].rect);\n }\n newArray = pageAnnotationObject.annotations;\n }\n textMarkupAnnotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(textMarkupAnnotations);\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.deleteTextMarkupAnnotation = function () {\n if (this.currentTextMarkupAnnotation) {\n var isLock = false;\n if (this.currentTextMarkupAnnotation.annotationSettings) {\n // eslint-disable-next-line\n isLock = this.currentTextMarkupAnnotation.annotationSettings.isLock;\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', this.currentTextMarkupAnnotation)) {\n isLock = false;\n }\n }\n if (!isLock) {\n var deletedAnnotation = null;\n this.showHideDropletDiv(true);\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n if (this.currentTextMarkupAnnotation.isMultiSelect && annotation.annotNameCollection) {\n this.deletMultiPageAnnotation(annotation);\n }\n var pageAnnotations = this.getAnnotations(this.selectTextMarkupCurrentPage, null);\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (this.currentTextMarkupAnnotation.annotName === pageAnnotations[i].annotName) {\n deletedAnnotation = pageAnnotations.splice(i, 1)[0];\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.addAction(this.selectTextMarkupCurrentPage, i, deletedAnnotation, 'Text Markup Deleted', null);\n this.currentAnnotationIndex = i;\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(deletedAnnotation, 'textMarkup');\n var removeDiv = document.getElementById(deletedAnnotation.annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n }\n }\n this.pdfViewer.annotationModule.updateAnnotationCollection(this.currentTextMarkupAnnotation);\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.updateImportAnnotationCollection(this.currentTextMarkupAnnotation, this.currentTextMarkupAnnotation.pageNumber, 'textMarkupAnnotation');\n var annotationId = this.currentTextMarkupAnnotation.annotName;\n // eslint-disable-next-line\n var annotationBounds = this.currentTextMarkupAnnotation.bounds;\n this.currentTextMarkupAnnotation = null;\n this.pdfViewer.annotationModule.renderAnnotations(this.selectTextMarkupCurrentPage, null, null, null);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n multiPageCollection.push(deletedAnnotation);\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationRemove(this.selectTextMarkupCurrentPage, annotationId, deletedAnnotation.textMarkupAnnotationType, annotationBounds, deletedAnnotation.textMarkupContent, deletedAnnotation.textMarkupStartIndex, deletedAnnotation.textMarkupEndIndex, multiPageCollection);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationRemove(this.selectTextMarkupCurrentPage, annotationId, deletedAnnotation.textMarkupAnnotationType, annotationBounds, deletedAnnotation.textMarkupContent, deletedAnnotation.textMarkupStartIndex, deletedAnnotation.textMarkupEndIndex);\n }\n this.currentAnnotationIndex = null;\n this.selectTextMarkupCurrentPage = null;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n }\n }\n };\n /**\n * @param color\n * @private\n */\n TextMarkupAnnotation.prototype.modifyColorProperty = function (color) {\n if (this.currentTextMarkupAnnotation) {\n var pageAnnotations = this.modifyAnnotationProperty('Color', color, null);\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n this.pdfViewer.annotationModule.renderAnnotations(this.selectTextMarkupCurrentPage, null, null, null);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, true, false, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, multiPageCollection);\n this.currentAnnotationIndex = null;\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, true, false, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex);\n this.currentAnnotationIndex = null;\n }\n }\n };\n /**\n * @param args\n * @param isOpacity\n * @private\n */\n TextMarkupAnnotation.prototype.modifyOpacityProperty = function (args, isOpacity) {\n if (this.currentTextMarkupAnnotation) {\n var pageAnnotations = void 0;\n if (isOpacity) {\n pageAnnotations = this.modifyAnnotationProperty('Opacity', isOpacity, 'changed');\n }\n else {\n pageAnnotations = this.modifyAnnotationProperty('Opacity', args.value / 100, args.name);\n }\n if (pageAnnotations) {\n this.manageAnnotations(pageAnnotations, this.selectTextMarkupCurrentPage);\n this.pdfViewer.annotationModule.renderAnnotations(this.selectTextMarkupCurrentPage, null, null, null);\n if (isOpacity || args.name === 'changed') {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n // eslint-disable-next-line max-len\n var multiPageCollection = this.multiPageCollectionList(annotation);\n if (multiPageCollection.length > 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, false, true, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex, multiPageCollection);\n this.currentAnnotationIndex = null;\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationPropertiesChange(this.selectTextMarkupCurrentPage, annotation.annotName, annotation.textMarkupAnnotationType, false, true, false, false, annotation.textMarkupContent, annotation.textMarkupStartIndex, annotation.textMarkupEndIndex);\n this.currentAnnotationIndex = null;\n }\n }\n }\n }\n };\n /**\n * @param property\n * @param value\n * @param status\n * @param annotName\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.modifyAnnotationProperty = function (property, value, status, annotName) {\n // eslint-disable-next-line\n var annotation = this.currentTextMarkupAnnotation;\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n if (annotation.isMultiSelect && annotation.annotNameCollection) {\n this.modifyMultiPageAnnotations(annotation, property, value);\n }\n var pageAnnotations = this.getAnnotations(this.selectTextMarkupCurrentPage, null);\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n if (property === 'Color') {\n pageAnnotations[i].color = value;\n }\n else if (property === 'Opacity') {\n pageAnnotations[i].opacity = value;\n }\n else if (property === 'AnnotationSettings') {\n pageAnnotations[i].annotationSettings = { isLock: value };\n }\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentAnnotationIndex = i;\n if (status === null || status === 'changed') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.addAction(this.selectTextMarkupCurrentPage, i, this.currentTextMarkupAnnotation, 'Text Markup Property modified', property);\n }\n this.currentTextMarkupAnnotation = pageAnnotations[i];\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(pageAnnotations[i]);\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], this.selectTextMarkupCurrentPage);\n }\n }\n }\n return pageAnnotations;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param index\n * @param action\n * @private\n */\n TextMarkupAnnotation.prototype.undoTextMarkupAction = function (annotation, pageNumber, index, action) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n if (action === 'Text Markup Added') {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(pageAnnotations[index], 'textMarkup');\n // eslint-disable-next-line\n var removeDiv = document.getElementById(pageAnnotations[index].annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.parentElement.removeChild(removeDiv);\n }\n }\n pageAnnotations.splice(index, 1);\n }\n else if (action === 'Text Markup Deleted') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(pageNumber, annotation.shapeAnnotationType);\n pageAnnotations.splice(index, 0, annotation);\n }\n }\n this.clearCurrentAnnotation();\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @param annotation\n * @param pageNumber\n * @param index\n * @param property\n * @param isUndoAction\n * @private\n */\n // eslint-disable-next-line max-len\n TextMarkupAnnotation.prototype.undoRedoPropertyChange = function (annotation, pageNumber, index, property, isUndoAction) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n if (property === 'Color') {\n var tempColor = pageAnnotations[index].color;\n pageAnnotations[index].color = annotation.color;\n annotation.color = tempColor;\n }\n else {\n var tempOpacity = pageAnnotations[index].opacity;\n pageAnnotations[index].opacity = annotation.opacity;\n annotation.opacity = tempOpacity;\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotation, null, true);\n if (isUndoAction) {\n annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n }\n this.clearCurrentAnnotation();\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n return annotation;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param index\n * @param action\n * @private\n */\n TextMarkupAnnotation.prototype.redoTextMarkupAction = function (annotation, pageNumber, index, action) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n if (action === 'Text Markup Added') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.addAnnotationComments(pageNumber, annotation.shapeAnnotationType);\n pageAnnotations.push(annotation);\n }\n else if (action === 'Text Markup Deleted') {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.findPosition(pageAnnotations[index], 'textMarkup');\n // eslint-disable-next-line\n var removeDiv = document.getElementById(pageAnnotations[index].annotName);\n if (removeDiv) {\n if (removeDiv.parentElement.childElementCount === 1) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAccordionContainer(removeDiv);\n }\n else {\n removeDiv.remove();\n }\n }\n pageAnnotations.splice(index, 1);\n }\n }\n this.clearCurrentAnnotation();\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n };\n /**\n * @param pageNumber\n * @param note\n * @param pageNumber\n * @param note\n * @private\n */\n TextMarkupAnnotation.prototype.saveNoteContent = function (pageNumber, note) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (JSON.stringify(this.currentTextMarkupAnnotation) === JSON.stringify(pageAnnotations[i])) {\n pageAnnotations[i].note = note;\n }\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n };\n TextMarkupAnnotation.prototype.clearCurrentAnnotation = function () {\n if (!this.isExtended) {\n if (this.pdfViewer.isMaintainSelection && !this.pdfViewer.textSelectionModule.isTextSelection) {\n this.selectTextMarkupCurrentPage = this.selectTextMarkupCurrentPage;\n this.currentTextMarkupAnnotation = this.currentTextMarkupAnnotation;\n }\n else {\n this.selectTextMarkupCurrentPage = null;\n this.currentTextMarkupAnnotation = null;\n }\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.isInuptBoxInFocus) {\n isSkip = true;\n }\n if (!isSkip) {\n this.enableAnnotationPropertiesTool(false);\n }\n }\n };\n /**\n * @param pageNumber\n * @param isSelect\n * @param pageNumber\n * @param isSelect\n * @private\n */\n TextMarkupAnnotation.prototype.clearCurrentAnnotationSelection = function (pageNumber, isSelect) {\n if (isSelect) {\n this.isAnnotationSelect = true;\n }\n else {\n this.isAnnotationSelect = false;\n }\n var lowerPageIndex = (pageNumber - 2) >= 0 ? (pageNumber - 2) : 0;\n // eslint-disable-next-line max-len\n var higherPageIndex = (pageNumber + 2) < this.pdfViewerBase.pageCount ? (pageNumber + 2) : this.pdfViewerBase.pageCount - 1;\n for (var k = lowerPageIndex; k <= higherPageIndex; k++) {\n this.clearAnnotationSelection(k);\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getBoundsForSave = function (bounds, pageIndex) {\n // eslint-disable-next-line\n var newArray = [];\n for (var i = 0; i < bounds.length; i++) {\n // eslint-disable-next-line\n var bound = this.getAnnotationBounds(bounds[i], pageIndex);\n newArray.push(bound);\n }\n return newArray;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getAnnotationBounds = function (bounds, pageIndex) {\n var left = bounds.left ? bounds.left : bounds.Left;\n var top = bounds.top ? bounds.top : bounds.Top;\n var height = bounds.height ? bounds.height : bounds.Height;\n var width = bounds.width ? bounds.width : bounds.Width;\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n left = left ? left : bounds.x;\n top = top ? top : bounds.y;\n if (pageDetails) {\n if (pageDetails.rotation === 1) {\n return { left: top, top: pageDetails.width - (left + width), width: height, height: width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { left: pageDetails.width - left - width, top: pageDetails.height - top - height, width: width, height: height };\n }\n else if (pageDetails.rotation === 3) {\n return { left: pageDetails.height - top - height, top: left, width: height, height: width };\n }\n else {\n return { left: left, top: top, width: width, height: height };\n }\n }\n else {\n return { left: left, top: top, width: width, height: height };\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var markupStringArray = colorString.split(',');\n if (isNullOrUndefined(markupStringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n markupStringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var textMarkupR = parseInt(markupStringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var textMarkupG = parseInt(markupStringArray[1]);\n // eslint-disable-next-line radix\n var textMarkupB = parseInt(markupStringArray[2]);\n // eslint-disable-next-line radix\n var textMarkupA = parseInt(markupStringArray[3]);\n return { a: textMarkupA, r: textMarkupR, g: textMarkupG, b: textMarkupB };\n };\n TextMarkupAnnotation.prototype.getDrawnBounds = function () {\n var pageBounds = [];\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var range = document.createRange();\n var isBackWardSelection = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (selection.anchorNode === selection.focusNode) {\n var pageId = this.pdfViewerBase.textLayer.getPageIndex(selection.anchorNode);\n var startIndex = 0;\n var endIndex = 0;\n if (!isNaN(pageId)) {\n var pageRect = this.pdfViewerBase.getElement('_pageDiv_' + pageId).getBoundingClientRect();\n if (this.pdfViewerBase.isMixedSizeDocument) {\n pageRect = this.pdfViewerBase.getElement('_textLayer_' + pageId).getBoundingClientRect();\n }\n if (isBackWardSelection) {\n range.setStart(selection.focusNode, selection.focusOffset);\n range.setEnd(selection.anchorNode, selection.anchorOffset);\n }\n else {\n if (selection.anchorOffset < selection.focusOffset) {\n startIndex = selection.anchorOffset;\n endIndex = selection.focusOffset;\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n startIndex = selection.focusOffset;\n endIndex = selection.anchorOffset;\n range.setStart(selection.focusNode, selection.focusOffset);\n range.setEnd(selection.anchorNode, selection.anchorOffset);\n }\n }\n var boundingRect = range.getBoundingClientRect();\n // eslint-disable-next-line\n var indexes = this.getIndexNumbers(pageId, range.toString(), range.commonAncestorContainer.textContent.toString());\n // eslint-disable-next-line max-len\n var rectangle = { left: this.getDefaultValue(boundingRect.left - pageRect.left), top: this.getDefaultValue(boundingRect.top - pageRect.top), width: this.getDefaultValue(boundingRect.width), height: this.getDefaultValue(boundingRect.height), right: this.getDefaultValue(boundingRect.right - pageRect.left), bottom: this.getDefaultValue(boundingRect.bottom - pageRect.top) };\n var rectangleArray = [];\n rectangleArray.push(rectangle);\n // eslint-disable-next-line\n var rect = { left: rectangle.left, top: rectangle.top, right: rectangle.right, bottom: rectangle.bottom };\n pageBounds.push({ pageIndex: pageId, bounds: rectangleArray, rect: rect, startIndex: indexes.startIndex, endIndex: indexes.endIndex, textContent: range.toString() });\n }\n }\n else {\n var startNode = void 0;\n var endNode = void 0;\n var selectionStartOffset = void 0;\n var selectionEndOffset = void 0;\n if (isBackWardSelection) {\n startNode = selection.focusNode;\n selectionStartOffset = selection.focusOffset;\n endNode = selection.anchorNode;\n selectionEndOffset = selection.anchorOffset;\n }\n else {\n startNode = selection.anchorNode;\n selectionStartOffset = selection.anchorOffset;\n endNode = selection.focusNode;\n selectionEndOffset = selection.focusOffset;\n }\n var anchorPageId = this.pdfViewerBase.textLayer.getPageIndex(startNode);\n var anchorTextId = this.pdfViewerBase.textLayer.getTextIndex(startNode, anchorPageId);\n var focusPageId = this.pdfViewerBase.textLayer.getPageIndex(endNode);\n var focusTextId = this.pdfViewerBase.textLayer.getTextIndex(endNode, focusPageId);\n var startOffset = 0;\n var endOffset = 0;\n var currentId = 0;\n for (var i = anchorPageId; i <= focusPageId; i++) {\n var selectionRects = [];\n var pageStartId = void 0;\n var pageEndId = void 0;\n var pageStartOffset = void 0;\n var pageEndOffset = void 0;\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + i).childNodes;\n var pageRect = this.pdfViewerBase.getElement('_pageDiv_' + i).getBoundingClientRect();\n if (this.pdfViewerBase.isMixedSizeDocument) {\n pageRect = this.pdfViewerBase.getElement('_textLayer_' + i).getBoundingClientRect();\n }\n if (i === anchorPageId) {\n currentId = anchorTextId;\n }\n else {\n currentId = 0;\n }\n for (var j = currentId; j < textDivs.length; j++) {\n var textElement = textDivs[j];\n if (j === currentId) {\n pageStartId = currentId;\n pageStartOffset = (i === anchorPageId) ? selectionStartOffset : 0;\n }\n else {\n pageEndId = j;\n pageEndOffset = (i === focusPageId) ? selectionEndOffset : textElement.textContent.length;\n }\n if (j === anchorTextId && i === anchorPageId) {\n startOffset = selectionStartOffset;\n }\n else {\n startOffset = 0;\n }\n if (j === focusTextId && i === focusPageId) {\n endOffset = selectionEndOffset;\n }\n else {\n endOffset = textElement.textContent.length;\n }\n for (var k = 0; k < textElement.childNodes.length; k++) {\n var node = textElement.childNodes[k];\n range.setStart(node, startOffset);\n range.setEnd(node, endOffset);\n }\n var boundingRect = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n var rectangle = { left: this.getDefaultValue(boundingRect.left - pageRect.left), top: this.getDefaultValue(boundingRect.top - pageRect.top), width: this.getDefaultValue(boundingRect.width), height: this.getDefaultValue(boundingRect.height), right: this.getDefaultValue(boundingRect.right - pageRect.left), bottom: this.getDefaultValue(boundingRect.bottom - pageRect.top) };\n selectionRects.push(rectangle);\n range.detach();\n if (i === focusPageId && j === focusTextId) {\n break;\n }\n }\n if (!pageEndId) {\n pageEndId = pageStartId;\n }\n if (!pageEndOffset) {\n pageEndOffset = endOffset;\n }\n var startElementNode = this.pdfViewerBase.getElement('_text_' + i + '_' + pageStartId).childNodes[0];\n var endElementNode = this.pdfViewerBase.getElement('_text_' + i + '_' + pageEndId).childNodes[0];\n var pageRange = document.createRange();\n pageRange.setStart(startElementNode, pageStartOffset);\n pageRange.setEnd(endElementNode, pageEndOffset);\n var pageRectBounds = pageRange.getBoundingClientRect();\n var textValue = pageRange.toString();\n // eslint-disable-next-line\n var indexes = this.getIndexNumbers(i, textValue);\n // eslint-disable-next-line max-len\n var pageRectangle = { left: this.getDefaultValue(pageRectBounds.left - pageRect.left), top: this.getDefaultValue(pageRectBounds.top - pageRect.top), width: this.getDefaultValue(pageRectBounds.width), height: this.getDefaultValue(pageRectBounds.height), right: this.getDefaultValue(pageRectBounds.right - pageRect.left), bottom: this.getDefaultValue(pageRectBounds.bottom - pageRect.top) };\n // eslint-disable-next-line\n var rect = { left: pageRectangle.left, top: pageRectangle.top, right: pageRectangle.right, bottom: pageRectangle.bottom };\n pageBounds.push({ pageIndex: i, bounds: selectionRects, rect: rect, startIndex: indexes.startIndex, endIndex: indexes.endIndex, textContent: textValue });\n }\n }\n }\n selection.removeAllRanges();\n return pageBounds;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getIndexNumbers = function (pageNumber, content, parentText) {\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.getStoredData(pageNumber);\n var startIndex;\n var endIndex;\n if (storedData) {\n var previousIndex = 0;\n var pageText = storedData.pageText;\n for (var p = 0; p < pageNumber; p++) {\n if (this.pdfViewer.isExtractText) {\n // eslint-disable-next-line\n var documentIndex = this.pdfViewer.textSearchModule.documentTextCollection[p][p];\n var pageTextData = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.textSearchModule && this.pdfViewer.textSearchModule.documentTextCollection && this.pdfViewer.textSearchModule.isTextRetrieved) {\n if (this.pdfViewer.textSearchModule.documentTextCollection[p]) {\n previousIndex = previousIndex + pageTextData.length;\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.textSearchModule && this.pdfViewer.textSearchModule.documentTextCollection) {\n if (pageNumber <= this.pdfViewer.textSearchModule.documentTextCollection.length) {\n if (this.pdfViewer.textSearchModule.documentTextCollection[p]) {\n // eslint-disable-next-line max-len\n previousIndex = previousIndex + pageTextData.length;\n }\n }\n else {\n previousIndex = 0;\n break;\n }\n }\n }\n }\n }\n if (!isNullOrUndefined(parentText)) {\n var parentIndex = pageText.indexOf(parentText);\n var initialIndex = parentText.indexOf(content);\n startIndex = (parentIndex + initialIndex) + previousIndex;\n }\n else {\n startIndex = (pageText.indexOf(content)) + previousIndex;\n }\n endIndex = startIndex + (content.length - 1);\n }\n return { startIndex: startIndex, endIndex: endIndex };\n };\n /**\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.rerenderAnnotationsPinch = function (pageNumber) {\n var annotCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (annotCanvas) {\n var oldAnnotCanvas = this.pdfViewerBase.getElement('_old_annotationCanvas_' + pageNumber);\n if (oldAnnotCanvas) {\n if (annotCanvas) {\n oldAnnotCanvas.id = annotCanvas.id;\n annotCanvas.parentElement.removeChild(annotCanvas);\n }\n else {\n oldAnnotCanvas.id = this.pdfViewer.element.id + '_annotationCanvas_' + pageNumber;\n }\n annotCanvas = oldAnnotCanvas;\n }\n annotCanvas.style.width = '';\n annotCanvas.style.height = '';\n if (this.pdfViewer.restrictZoomRequest) {\n // eslint-disable-next-line max-len\n annotCanvas.style.width = this.pdfViewerBase.pageSize[pageNumber].width * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line max-len\n annotCanvas.style.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n annotCanvas.width = this.pdfViewerBase.pageSize[pageNumber].width * this.pdfViewerBase.getZoomFactor();\n annotCanvas.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor();\n }\n this.renderTextMarkupAnnotations(null, pageNumber, annotCanvas, this.pdfViewerBase.getZoomFactor());\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.rerenderAnnotations = function (pageNumber) {\n // eslint-disable-next-line\n var oldCanvasCollection = document.querySelectorAll('#' + this.pdfViewer.element.id + '_old_annotationCanvas_' + pageNumber);\n for (var i = 0; i < oldCanvasCollection.length; i++) {\n if (oldCanvasCollection[i]) {\n oldCanvasCollection[i].parentElement.removeChild(oldCanvasCollection[i]);\n }\n }\n var newCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (newCanvas) {\n newCanvas.style.display = 'block';\n }\n };\n /**\n * @param event\n * @private\n */\n TextMarkupAnnotation.prototype.onTextMarkupAnnotationMouseUp = function (event) {\n var pageNumber = this.pdfViewer.annotationModule.getEventPageNumber(event);\n if (!isNullOrUndefined(pageNumber) && !isNaN(pageNumber)) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (this.currentTextMarkupAnnotation) {\n this.selectedTextMarkup = this.currentTextMarkupAnnotation;\n }\n else {\n this.selectedTextMarkup = null;\n }\n this.clearCurrentSelectedAnnotation();\n var currentAnnot = this.getCurrentMarkupAnnotation(event.clientX, event.clientY, pageNumber, canvas);\n if (currentAnnot && !window.getSelection().toString()) {\n var isLock = false;\n var isSelection = false;\n if (currentAnnot.annotationSettings && currentAnnot.annotationSettings.isLock) {\n isLock = currentAnnot.annotationSettings.isLock;\n if (isLock && this.pdfViewer.annotationModule.checkAllowedInteractions('Select', currentAnnot)) {\n isLock = false;\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('PropertyChange', currentAnnot)) {\n isSelection = false;\n }\n else {\n isSelection = true;\n }\n }\n }\n if (!isLock) {\n var canvasParentPosition = canvas.parentElement.getBoundingClientRect();\n var leftClickPosition = event.clientX - canvasParentPosition.left;\n var topClickPosition = event.clientY - canvasParentPosition.top;\n this.annotationClickPosition = { x: leftClickPosition, y: topClickPosition };\n this.selectAnnotation(currentAnnot, canvas, pageNumber, event);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(this.currentTextMarkupAnnotation.textMarkupAnnotationType);\n }\n this.currentTextMarkupAnnotation = currentAnnot;\n this.selectTextMarkupCurrentPage = pageNumber;\n if (!isSelection) {\n this.enableAnnotationPropertiesTool(true);\n }\n var commentPanelDiv = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanelDiv && commentPanelDiv.style.display === 'block') {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + (pageNumber + 1));\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var comments = document.getElementById(currentAnnot.annotName);\n if (comments) {\n comments.firstChild.click();\n }\n }\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n }\n else {\n this.clearCurrentAnnotation();\n }\n if (this.pdfViewer.isMaintainSelection && !this.pdfViewer.textSelectionModule.isTextSelection) {\n if (currentAnnot) {\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n }\n else {\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n }\n else {\n if (!this.pdfViewerBase.isClickedOnScrollBar(event, true)) {\n this.clearCurrentAnnotation();\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n }\n };\n /**\n * @param event\n * @private\n */\n TextMarkupAnnotation.prototype.onTextMarkupAnnotationTouchEnd = function (event) {\n var pageNumber = this.pdfViewer.annotationModule.getEventPageNumber(event);\n if (!isNullOrUndefined(pageNumber) && !isNaN(pageNumber)) {\n if (this.currentTextMarkupAnnotation) {\n this.selectedTextMarkup = this.currentTextMarkupAnnotation;\n }\n else {\n this.selectedTextMarkup = null;\n }\n this.clearCurrentAnnotationSelection(pageNumber);\n var touchCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n this.clearCurrentSelectedAnnotation();\n // eslint-disable-next-line max-len\n var currentAnnot = this.getCurrentMarkupAnnotation(event.touches[0].clientX, event.touches[0].clientY, pageNumber, touchCanvas);\n if (currentAnnot) {\n var isLock = false;\n if (currentAnnot.annotationSettings && currentAnnot.annotationSettings.isLock) {\n isLock = currentAnnot.annotationSettings.isLock;\n }\n if (!isLock) {\n var canvasParentPosition = touchCanvas.parentElement.getBoundingClientRect();\n var leftClickPosition = event.touches[0].clientX - canvasParentPosition.left;\n var topClickPosition = event.touches[0].clientY - canvasParentPosition.top;\n this.annotationClickPosition = { x: leftClickPosition, y: topClickPosition };\n this.selectAnnotation(currentAnnot, touchCanvas, pageNumber, event);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(this.currentTextMarkupAnnotation.textMarkupAnnotationType);\n }\n this.currentTextMarkupAnnotation = currentAnnot;\n this.selectTextMarkupCurrentPage = pageNumber;\n this.enableAnnotationPropertiesTool(true);\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + (pageNumber + 1));\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var comments = document.getElementById(currentAnnot.annotName);\n if (comments) {\n if (!Browser.isDevice) {\n comments.firstChild.click();\n }\n }\n }\n }\n else {\n this.clearCurrentAnnotation();\n }\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n else if (this.selectTextMarkupCurrentPage != null && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var number = this.selectTextMarkupCurrentPage;\n this.selectTextMarkupCurrentPage = null;\n this.clearAnnotationSelection(number);\n }\n else {\n this.clearCurrentAnnotation();\n this.clearCurrentAnnotationSelection(pageNumber);\n }\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.clearCurrentSelectedAnnotation = function () {\n if (this.currentTextMarkupAnnotation) {\n this.clearAnnotationSelection(this.selectTextMarkupCurrentPage);\n // eslint-disable-next-line\n var currentAnnot = this.currentTextMarkupAnnotation;\n this.pdfViewer.fireAnnotationUnSelect(currentAnnot.annotName, currentAnnot.pageNumber, currentAnnot);\n this.clearCurrentAnnotation();\n }\n };\n /**\n * @param event\n * @private\n */\n TextMarkupAnnotation.prototype.onTextMarkupAnnotationMouseMove = function (event) {\n var eventTarget = event.target;\n // eslint-disable-next-line\n var pageIndex = parseInt(eventTarget.id.split('_text_')[1]) || parseInt(eventTarget.id.split('_textLayer_')[1]) || parseInt(eventTarget.id.split('_annotationCanvas_')[1]);\n if (event.target && (eventTarget.id.indexOf('_text') > -1 || eventTarget.id.indexOf('_annotationCanvas') > -1 || eventTarget.classList.contains('e-pv-hyperlink')) && this.pdfViewer.annotation) {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageIndex);\n var currentAnnot = this.getCurrentMarkupAnnotation(event.clientX, event.clientY, pageIndex, canvas);\n if (currentAnnot) {\n eventTarget.style.cursor = 'pointer';\n // eslint-disable-next-line\n var currentPosition = this.pdfViewerBase.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.pdfViewerBase.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentAnnot.opacity, color: currentAnnot.color, author: currentAnnot.author, subject: currentAnnot.subject, modifiedDate: currentAnnot.modifiedDate };\n // eslint-disable-next-line max-len\n this.pdfViewerBase.isMousedOver = true;\n this.pdfViewer.fireAnnotationMouseover(currentAnnot.annotName, currentAnnot.pageNumber, currentAnnot.textMarkupAnnotationType, currentAnnot.bounds, annotationSettings, mousePositions, viewerPositions);\n // this.showPopupNote(event, currentAnnot);\n }\n else {\n this.pdfViewer.annotationModule.hidePopupNote();\n if (this.pdfViewerBase.isPanMode && !this.pdfViewerBase.getAnnotationToolStatus()) {\n eventTarget.style.cursor = 'grab';\n }\n if (this.pdfViewerBase.isMousedOver && !this.pdfViewerBase.isFormFieldMousedOver) {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n this.pdfViewerBase.isMousedOver = false;\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.showPopupNote = function (event, annotation) {\n if (annotation.note) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.showPopupNote(event, annotation.color, annotation.author, annotation.note, annotation.textMarkupAnnotationType);\n }\n };\n TextMarkupAnnotation.prototype.getCurrentMarkupAnnotation = function (clientX, clientY, pageNumber, canvas) {\n var currentTextMarkupAnnotations = [];\n if (canvas) {\n var canvasParentPosition = canvas.parentElement.getBoundingClientRect();\n if (canvas.clientWidth !== canvas.parentElement.clientWidth) {\n canvasParentPosition = canvas.getBoundingClientRect();\n }\n var leftClickPosition = clientX - canvasParentPosition.left;\n var topClickPosition = clientY - canvasParentPosition.top;\n var annotationList = this.getAnnotations(pageNumber, null);\n var isAnnotationGot = false;\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n var annotation = annotationList[i];\n for (var j = 0; j < annotation.bounds.length; j++) {\n // eslint-disable-next-line\n var bound = annotation.bounds[j];\n var left = bound.left ? bound.left : bound.Left;\n var top_2 = bound.top ? bound.top : bound.Top;\n var width = bound.width ? bound.width : bound.Width;\n var height = bound.height ? bound.height : bound.Height;\n // eslint-disable-next-line max-len\n if (leftClickPosition >= this.getMagnifiedValue(left, this.pdfViewerBase.getZoomFactor()) && leftClickPosition <= this.getMagnifiedValue(left + width, this.pdfViewerBase.getZoomFactor()) && topClickPosition >= this.getMagnifiedValue(top_2, this.pdfViewerBase.getZoomFactor()) && topClickPosition <= this.getMagnifiedValue(top_2 + height, this.pdfViewerBase.getZoomFactor())) {\n currentTextMarkupAnnotations.push(annotation);\n isAnnotationGot = true;\n }\n else {\n if (isAnnotationGot) {\n isAnnotationGot = false;\n break;\n }\n }\n }\n }\n }\n var currentAnnot = null;\n if (currentTextMarkupAnnotations.length > 1) {\n currentAnnot = this.compareCurrentAnnotations(currentTextMarkupAnnotations);\n }\n else if (currentTextMarkupAnnotations.length === 1) {\n currentAnnot = currentTextMarkupAnnotations[0];\n }\n return currentAnnot;\n }\n else {\n return null;\n }\n };\n TextMarkupAnnotation.prototype.compareCurrentAnnotations = function (annotations) {\n var previousX;\n var currentAnnotation = null;\n for (var i = 0; i < annotations.length; i++) {\n if (i === annotations.length - 1) {\n break;\n }\n // eslint-disable-next-line\n var firstAnnotBounds = annotations[i].bounds;\n var firstXposition = firstAnnotBounds[0].left ? firstAnnotBounds[0].left : firstAnnotBounds[0].Left;\n var firstYposition = firstAnnotBounds[0].top ? firstAnnotBounds[0].top : firstAnnotBounds[0].Top;\n // eslint-disable-next-line\n var secondAnnotBounds = annotations[i + 1].bounds;\n var secondXposition = secondAnnotBounds[0].left ? secondAnnotBounds[0].left : secondAnnotBounds[0].Left;\n var secondYposition = secondAnnotBounds[0].top ? secondAnnotBounds[0].top : secondAnnotBounds[0].Top;\n if ((firstXposition < secondXposition) || (firstYposition < secondYposition)) {\n previousX = secondXposition;\n currentAnnotation = annotations[i + 1];\n }\n else {\n previousX = firstXposition;\n currentAnnotation = annotations[i];\n }\n if (previousX && (i === (annotations.length - 2))) {\n if ((previousX === firstXposition) && (previousX === secondXposition)) {\n previousX = secondXposition;\n currentAnnotation = annotations[i + 1];\n }\n }\n }\n return currentAnnotation;\n };\n /**\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.clearAnnotationSelection = function (pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n var context = canvas.getContext('2d');\n context.setLineDash([]);\n this.pdfViewer.annotationModule.renderAnnotations(pageNumber, null, null, null);\n }\n };\n /**\n * @param annotation\n * @param canvas\n * @param pageNumber\n * @param event\n * @param isProgrammaticSelection\n * @param annotation\n * @param canvas\n * @param pageNumber\n * @param event\n * @param isProgrammaticSelection\n * @private\n */\n // eslint-disable-next-line max-len\n TextMarkupAnnotation.prototype.selectAnnotation = function (annotation, canvas, pageNumber, event, isProgrammaticSelection) {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.annotations[0].pageIndex);\n this.pdfViewer.clearSelection(this.selectTextMarkupCurrentPage);\n }\n var isLock = false;\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n isLock = annotation.annotationSettings.isLock;\n if (isLock && this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLock = false;\n }\n }\n if (!isLock) {\n var isCurrentTextMarkup = false;\n if (!this.currentTextMarkupAnnotation) {\n isCurrentTextMarkup = true;\n }\n if (this.selectedTextMarkup && annotation && !isProgrammaticSelection) {\n if (this.selectedTextMarkup.annotName === annotation.annotName) {\n isCurrentTextMarkup = false;\n }\n else {\n isCurrentTextMarkup = true;\n }\n }\n if (!isNaN(pageNumber)) {\n this.selectTextMarkupCurrentPage = pageNumber;\n this.currentTextMarkupAnnotation = annotation;\n annotation = this.retreiveTextIndex(annotation);\n this.currentTextMarkupAnnotation = annotation;\n }\n if (this.isSelectedAnnotation && this.pdfViewer.textSelectionModule) {\n this.pdfViewerBase.isSelection = true;\n this.updateAnnotationBounds();\n }\n // eslint-disable-next-line\n var currentEvent = event;\n if (this.isEnableTextMarkupResizer(annotation.textMarkupAnnotationType) && annotation && currentEvent && !currentEvent.touches) {\n this.updateCurrentResizerPosition(annotation);\n }\n this.drawAnnotationSelector(annotation, this.currentTextMarkupAnnotation, canvas);\n if (annotation.isMultiSelect && annotation.annotNameCollection) {\n this.selectMultiPageAnnotations(annotation);\n }\n if (annotation.annotName !== '' && !this.isNewAnnotation) {\n if (isCurrentTextMarkup) {\n var isSelected = false;\n if (!currentEvent) {\n isSelected = true;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.annotationSelect(annotation.annotName, this.selectTextMarkupCurrentPage, annotation, null, false, isSelected);\n this.selectedTextMarkup = null;\n }\n }\n if (annotation && this.isEnableTextMarkupResizer(annotation.textMarkupAnnotationType)) {\n this.isTextMarkupAnnotationMode = true;\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateCurrentResizerPosition = function (annotation) {\n if (!annotation) {\n annotation = this.currentTextMarkupAnnotation;\n }\n if (annotation) {\n if (this.isEnableTextMarkupResizer(annotation.textMarkupAnnotationType) && annotation) {\n // eslint-disable-next-line\n var textElement = this.pdfViewerBase.getElement('_textLayer_' + this.selectTextMarkupCurrentPage);\n if (textElement) {\n // eslint-disable-next-line\n var boundingRect = textElement.getBoundingClientRect();\n var left = annotation.bounds[0].left ? annotation.bounds[0].left : annotation.bounds[0].Left;\n var top_3 = annotation.bounds[0].top ? annotation.bounds[0].top : annotation.bounds[0].Top;\n this.updateLeftposition(left * this.pdfViewerBase.getZoomFactor() + boundingRect.left, (boundingRect.top + top_3), true);\n // eslint-disable-next-line\n var endPosition = annotation.bounds[annotation.bounds.length - 1];\n var endLeft = endPosition.left ? endPosition.left : endPosition.Left;\n var endTop = endPosition.top ? endPosition.top : endPosition.Top;\n var endWidth = endPosition.width ? endPosition.width : endPosition.Width;\n // eslint-disable-next-line max-len\n this.updatePosition((endLeft + endWidth) * this.pdfViewerBase.getZoomFactor() + boundingRect.left, (endTop + boundingRect.top), true);\n }\n }\n }\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.drawAnnotationSelectRect = function (canvas, x, y, width, height, annotation) {\n var ratio = this.pdfViewerBase.getZoomRatio();\n if (canvas) {\n var context = canvas.getContext('2d');\n context.setTransform(1, 0, 0, 1, 0, 0);\n context.beginPath();\n if (typeof (annotation).annotationSelectorSettings === 'string') {\n // eslint-disable-next-line max-len\n var lineDash = JSON.parse(annotation.annotationSelectorSettings).selectorLineDashArray.length === 0 ? [4] : JSON.parse(annotation.annotationSelectorSettings).selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n context.setLineDash(lineDash);\n context.globalAlpha = 1;\n context.rect(x * ratio, y * ratio, width * ratio, height * ratio);\n context.closePath();\n // eslint-disable-next-line max-len\n var borderColor = JSON.parse(annotation.annotationSelectorSettings).selectionBorderColor === '' ? '#0000ff' : JSON.parse(annotation.annotationSelectorSettings).selectionBorderColor;\n context.strokeStyle = borderColor;\n // eslint-disable-next-line max-len\n context.lineWidth = JSON.parse(annotation.annotationSelectorSettings).selectionBorderThickness === 1 ? 1 : (annotation.annotationSelectorSettings).selectionBorderThickness;\n context.stroke();\n context.save();\n }\n else {\n // eslint-disable-next-line max-len\n var lineDash = (annotation.annotationSelectorSettings).selectorLineDashArray.length === 0 ? [4] : (annotation.annotationSelectorSettings).selectorLineDashArray;\n if (lineDash.length > 2) {\n lineDash = [lineDash[0], lineDash[1]];\n }\n context.setLineDash(lineDash);\n context.globalAlpha = 1;\n context.rect(x * ratio, y * ratio, width * ratio, height * ratio);\n context.closePath();\n // eslint-disable-next-line max-len\n var borderColor = (annotation.annotationSelectorSettings).selectionBorderColor === '' ? '#0000ff' : (annotation.annotationSelectorSettings).selectionBorderColor;\n context.strokeStyle = borderColor;\n // eslint-disable-next-line max-len\n context.lineWidth = (annotation.annotationSelectorSettings).selectionBorderThickness ? 1 : (annotation.annotationSelectorSettings).selectionBorderThickness;\n context.stroke();\n context.save();\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n TextMarkupAnnotation.prototype.enableAnnotationPropertiesTool = function (isEnable) {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n if (!Browser.isDevice) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createMobileAnnotationToolbar(isEnable);\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule.isMobileAnnotEnabled && this.pdfViewer.selectedItems.annotations.length === 0) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(isEnable);\n var enable = isEnable;\n if (this.isTextMarkupAnnotationMode) {\n enable = true;\n }\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(enable);\n if (this.currentTextMarkupAnnotation) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElement, this.currentTextMarkupAnnotation.color);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElementInBlazor, this.currentTextMarkupAnnotation.color);\n }\n }\n else {\n if (!isNullOrUndefined(this.isTextMarkupAnnotationMode) && !this.isTextMarkupAnnotationMode) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElement, '#000000');\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.updateColorInIcon(this.pdfViewer.toolbarModule.annotationToolbarModule.colorDropDownElementInBlazor, '#000000');\n }\n }\n else {\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n }\n }\n }\n }\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.maintainAnnotationSelection = function () {\n if (this.currentTextMarkupAnnotation) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + this.selectTextMarkupCurrentPage);\n if (canvas) {\n this.selectAnnotation(this.currentTextMarkupAnnotation, canvas, this.selectTextMarkupCurrentPage);\n }\n }\n };\n // private storeAnnotations(pageNumber: number, annotation: ITextMarkupAnnotation): number {\n // eslint-disable-next-line\n // let storeObject: any = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n // let index: number = 0;\n // if (!storeObject) {\n // let markupAnnotation: IPageAnnotations = { pageIndex: pageNumber, annotations: [] };\n // markupAnnotation.annotations.push(annotation);\n // index = markupAnnotation.annotations.indexOf(annotation);\n // let annotationCollection: IPageAnnotations[] = [];\n // annotationCollection.push(markupAnnotation);\n // let annotationStringified: string = JSON.stringify(annotationCollection);\n // window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_textMarkup', annotationStringified);\n // } else {\n // let annotObject: IPageAnnotations[] = JSON.parse(storeObject);\n // window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n // let pageIndex: number = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n // if (annotObject[pageIndex]) {\n // (annotObject[pageIndex] as IPageAnnotations).annotations.push(annotation);\n // index = (annotObject[pageIndex] as IPageAnnotations).annotations.indexOf(annotation);\n // } else {\n // let markupAnnotation: IPageAnnotations = { pageIndex: pageNumber, annotations: [] };\n // markupAnnotation.annotations.push(annotation);\n // index = markupAnnotation.annotations.indexOf(annotation);\n // annotObject.push(markupAnnotation);\n // }\n // let annotationStringified: string = JSON.stringify(annotObject);\n // window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_textMarkup', annotationStringified);\n // }\n // return index;\n // }\n /**\n * @param pageAnnotations\n * @param pageNumber\n * @private\n */\n TextMarkupAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_textMarkup'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_textMarkup', annotationStringified);\n }\n }\n };\n /**\n * @param pageIndex\n * @param textMarkupAnnotations\n * @param id\n * @param pageIndex\n * @param textMarkupAnnotations\n * @param id\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getAnnotations = function (pageIndex, textMarkupAnnotations, id) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n if (id == null || id == undefined) {\n id = '_annotations_textMarkup';\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + id);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + id];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = textMarkupAnnotations;\n }\n }\n else {\n annotationCollection = textMarkupAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.getAddedAnnotation = function (type, color, opacity, bounds, author, subject, predefinedDate, note, isCommentLock, rect, pageNumber, textContent, startIndex, endIndex, isMultiSelect, allowedInteractions, annotationRotate) {\n // eslint-disable-next-line max-len\n var modifiedDate = predefinedDate ? predefinedDate : this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('textMarkup', pageNumber + 1, type);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n // eslint-disable-next-line\n var annotationSettings = this.getAnnotationSettings(type);\n var isPrint = this.getIsPrintValue(type);\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotationType: type, color: color, opacity: opacity, bounds: bounds, author: author, allowedInteractions: allowedInteractions, subject: subject, modifiedDate: modifiedDate, note: note, rect: rect,\n annotName: annotationName, comments: [], review: { state: '', stateModel: '', author: author, modifiedDate: modifiedDate }, shapeAnnotationType: 'textMarkup', pageNumber: pageNumber,\n // eslint-disable-next-line max-len\n textMarkupContent: textContent, textMarkupStartIndex: startIndex, textMarkupEndIndex: endIndex, isMultiSelect: isMultiSelect, annotationSelectorSettings: this.getSelector(type),\n customData: this.pdfViewer.annotation.getTextMarkupData(subject), annotationAddMode: this.annotationAddMode, annotationSettings: annotationSettings, isPrint: isPrint, isCommentLock: isCommentLock, isAnnotationRotated: false, annotationRotation: annotationRotate\n };\n if (isMultiSelect) {\n this.multiPageCollection.push(annotation);\n }\n var isSkip = false;\n if (isMultiSelect && this.isExtended) {\n isSkip = true;\n }\n if (document.getElementById(annotationName) && !isSkip) {\n document.getElementById(annotationName).addEventListener('mouseup', this.annotationDivSelect(annotation, pageNumber));\n }\n var storedIndex = this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotation, '_annotations_textMarkup');\n this.pdfViewer.annotationModule.addAction(pageNumber, storedIndex, annotation, 'Text Markup Added', null);\n return annotation;\n };\n TextMarkupAnnotation.prototype.getSelector = function (type) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.highlightSettings.annotationSelectorSettings;\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.underlineSettings.annotationSelectorSettings;\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.strikethroughSettings.annotationSelectorSettings;\n }\n return selector;\n };\n TextMarkupAnnotation.prototype.getAnnotationSettings = function (type) {\n var annotationSettings = { isLock: false };\n if (type === 'Highlight' && this.pdfViewer.highlightSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n else if (type === 'Underline' && this.pdfViewer.underlineSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n else if (type === 'Strikethrough' && this.pdfViewer.strikethroughSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n else if (this.pdfViewer.annotationSettings.isLock) {\n annotationSettings = { isLock: true };\n }\n return annotationSettings;\n };\n TextMarkupAnnotation.prototype.getIsPrintValue = function (type) {\n var isPrint = true;\n if (type === 'Highlight') {\n isPrint = this.pdfViewer.highlightSettings.isPrint;\n }\n if (type === 'Underline') {\n isPrint = this.pdfViewer.underlineSettings.isPrint;\n }\n if (type === 'Strikethrough') {\n isPrint = this.pdfViewer.strikethroughSettings.isPrint;\n }\n if (isNullOrUndefined(isPrint)) {\n isPrint = true;\n }\n return isPrint;\n };\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.annotationDivSelect = function (annotation, pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n this.selectAnnotation(annotation, canvas, pageNumber);\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearShapeMode();\n this.pdfViewer.toolbarModule.annotationToolbarModule.clearMeasureMode();\n var isLock = false;\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n isLock = annotation.annotationSettings.isLock;\n }\n if (isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('PropertyChange', annotation)) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n }\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(true);\n }\n }\n else {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.selectAnnotationDeleteItem(true);\n this.pdfViewer.toolbarModule.annotationToolbarModule.setCurrentColorInPicker();\n }\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n if (!isBlazor()) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n }\n };\n TextMarkupAnnotation.prototype.getPageContext = function (pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n var context = null;\n if (canvas) {\n context = canvas.getContext('2d');\n }\n return context;\n };\n TextMarkupAnnotation.prototype.getDefaultValue = function (value) {\n return value / this.pdfViewerBase.getZoomFactor();\n };\n TextMarkupAnnotation.prototype.getMagnifiedValue = function (value, factor) {\n return value * factor;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.saveImportedTextMarkupAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('textMarkup', annotation.Subject);\n if (annotation.AnnotationSettings && annotation.AnnotationSettings.isLock) {\n annotation.AnnotationSettings = { isLock: annotation.AnnotationSettings.isLock };\n }\n else {\n annotation.AnnotationSettings = this.getAnnotationSettings(annotation.TextMarkupAnnotationType);\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n // eslint-disable-next-line max-len\n textMarkupAnnotationType: annotation.TextMarkupAnnotationType, color: annotation.Color, opacity: annotation.Opacity, allowedInteractions: annotation.allowedInteractions, bounds: annotation.Bounds, author: annotation.Author, subject: annotation.Subject, modifiedDate: annotation.ModifiedDate, note: annotation.Note, rect: annotation.Rect,\n annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n shapeAnnotationType: 'textMarkup',\n pageNumber: pageNumber, textMarkupContent: '', textMarkupStartIndex: 0,\n // eslint-disable-next-line max-len\n textMarkupEndIndex: 0, annotationSelectorSettings: this.getSettings(annotation), customData: this.pdfViewer.annotation.getCustomData(annotation),\n isMultiSelect: annotation.IsMultiSelect, annotNameCollection: annotation.AnnotNameCollection, annotpageNumbers: annotation.AnnotpageNumbers,\n // eslint-disable-next-line max-len\n annotationAddMode: this.annotationAddMode, annotationSettings: annotation.AnnotationSettings, isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock, isAnnotationRotated: false\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_textMarkup');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateTextMarkupAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n textMarkupAnnotationType: annotation.TextMarkupAnnotationType, allowedInteractions: annotation.allowedInteractions, color: annotation.Color, opacity: annotation.Opacity, bounds: annotation.Bounds, author: annotation.Author, subject: annotation.Subject, modifiedDate: annotation.ModifiedDate, note: annotation.Note, rect: annotation.Rect,\n annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, shapeAnnotationType: 'textMarkup', pageNumber: pageNumber, isMultiSelect: annotation.IsMultiSelect, annotNameCollection: annotation.AnnotNameCollection, annotpageNumbers: annotation.AnnotpageNumbers, customData: this.pdfViewer.annotation.getCustomData(annotation),\n isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock\n };\n return annotationObject;\n };\n /**\n * @param textMarkUpSettings\n * @private\n */\n // eslint-disable-next-line\n TextMarkupAnnotation.prototype.updateTextMarkupSettings = function (textMarkUpSettings) {\n if (textMarkUpSettings === 'highlightSettings') {\n // eslint-disable-next-line max-len\n this.highlightColor = this.pdfViewer.highlightSettings.color ? this.pdfViewer.highlightSettings.color : this.highlightColor;\n // eslint-disable-next-line max-len\n this.highlightOpacity = this.pdfViewer.highlightSettings.opacity ? this.pdfViewer.highlightSettings.opacity : this.highlightOpacity;\n }\n if (textMarkUpSettings === 'underlineSettings') {\n // eslint-disable-next-line max-len\n this.underlineColor = this.pdfViewer.underlineSettings.color ? this.pdfViewer.underlineSettings.color : this.underlineColor;\n // eslint-disable-next-line max-len\n this.underlineOpacity = this.pdfViewer.underlineSettings.opacity ? this.pdfViewer.underlineSettings.opacity : this.underlineOpacity;\n }\n if (textMarkUpSettings === 'strikethroughSettings') {\n // eslint-disable-next-line max-len\n this.strikethroughColor = this.pdfViewer.strikethroughSettings.color ? this.pdfViewer.strikethroughSettings.color : this.strikethroughColor;\n // eslint-disable-next-line max-len\n this.strikethroughOpacity = this.pdfViewer.strikethroughSettings.opacity ? this.pdfViewer.strikethroughSettings.opacity : this.strikethroughOpacity;\n }\n };\n /**\n * @private\n */\n TextMarkupAnnotation.prototype.clear = function () {\n this.selectTextMarkupCurrentPage = null;\n this.currentTextMarkupAnnotation = null;\n this.annotationClickPosition = null;\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_textMarkup');\n };\n /**\n * Get vertex points properties\n * @private\n */\n TextMarkupAnnotation.prototype.getOffsetPoints = function (points) {\n var offsetPoints = [];\n //Converting points model into vertex property\n for (var j = 0; j < points.length; j++) {\n offsetPoints[j] = { X: points[j].x, Y: points[j].y, Width: points[j].width, Height: points[j].height, Left: points[j].x, Top: points[j].y };\n }\n return offsetPoints;\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes the annotation type\n * @param annotationObject - It describes type of annotation object\n * @returns Object\n * @private\n */\n TextMarkupAnnotation.prototype.updateAddAnnotationDetails = function (annotationType, annotationObject) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { pageNumber: 0 };\n }\n //Initialize the annotation settings\n var annotSelectorSettings = null;\n var annotallowedInteractions = null;\n var textMarkupAnnotationType = '';\n var annotSettings = null;\n var color = '';\n var bounds = [];\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (annotationType == 'Highlight') {\n //Creating annotation settings\n annotSelectorSettings = this.pdfViewer.highlightSettings.annotationSelectorSettings ? this.pdfViewer.highlightSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.highlightSettings);\n annotallowedInteractions = this.pdfViewer.highlightSettings.allowedInteractions ? this.pdfViewer.highlightSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n textMarkupAnnotationType = 'Highlight';\n color = annotationObject.color ? annotationObject.color : '#ffff00';\n }\n else if (annotationType == 'Underline') {\n //Creating annotation settings\n annotSelectorSettings = this.pdfViewer.underlineSettings.annotationSelectorSettings ? this.pdfViewer.underlineSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.underlineSettings);\n annotallowedInteractions = this.pdfViewer.underlineSettings.allowedInteractions ? this.pdfViewer.underlineSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n textMarkupAnnotationType = 'Underline';\n color = annotationObject.color ? annotationObject.color : '#00ff00';\n }\n else if (annotationType == 'Strikethrough') {\n //Creating annotation settings\n annotSelectorSettings = this.pdfViewer.strikethroughSettings.annotationSelectorSettings ? this.pdfViewer.strikethroughSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.strikethroughSettings);\n annotallowedInteractions = this.pdfViewer.strikethroughSettings.allowedInteractions ? this.pdfViewer.strikethroughSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n textMarkupAnnotationType = 'Strikethrough';\n color = annotationObject.color ? annotationObject.color : '#ff0000';\n }\n annotSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n //Creating the offset points\n if (annotationObject.bounds) {\n bounds = this.getOffsetPoints(annotationObject.bounds);\n }\n else\n bounds = [{ X: 1, Y: 1, Width: 100, Height: 14, Left: 1, Top: 1, Location: { X: 1, Y: 1 }, Size: { Height: 14, IsEmpty: false, Width: 100 } }];\n //Creating Annotation objects with it's proper properties \n var textMarkupAnnotation = [];\n var textmarkup = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : annotallowedInteractions,\n AnnotName: annotationName,\n AnnotNameCollection: null,\n AnnotType: 'textMarkup',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotSelectorSettings,\n AnnotationSettings: annotSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Bounds: bounds,\n Color: annotationObject.color ? annotationObject.color : color,\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n EnableMultiPageAnnotation: annotationObject.enableMultiPageAnnotation ? annotationObject.enableMultiPageAnnotation : false,\n EnableTextMarkupResizer: annotationObject.enableTextMarkupResizer ? annotationObject.enableTextMarkupResizer : false,\n IsCommentLock: false,\n IsMultiSelect: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: currentDateString,\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Rect: {},\n State: '',\n StateModel: '',\n Subject: textMarkupAnnotationType,\n TextMarkupAnnotationType: textMarkupAnnotationType,\n };\n //Adding the annotation object to an array and return it\n textMarkupAnnotation[0] = textmarkup;\n return { textMarkupAnnotation: textMarkupAnnotation };\n };\n return TextMarkupAnnotation;\n}());\n\n/**\n * @hidden\n */\nvar MeasureAnnotation = /** @__PURE__ @class */ (function () {\n function MeasureAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.measureShapeCount = 0;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n Object.defineProperty(MeasureAnnotation.prototype, \"pixelToPointFactor\", {\n /**\n * @private\n */\n get: function () {\n return (72 / 96);\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAction\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAction\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.renderMeasureShapeAnnotations = function (shapeAnnotations, pageNumber, isImportAction) {\n if (shapeAnnotations) {\n if (shapeAnnotations.length >= 1) {\n // eslint-disable-next-line\n var measureAnnots = this.pdfViewer.annotation.getStoredAnnotations(pageNumber, shapeAnnotations, '_annotations_shape_measure');\n if (!measureAnnots || isImportAction) {\n for (var i = 0; i < shapeAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations[i];\n var annotationObject = null;\n this.measureShapeCount = this.measureShapeCount + 1;\n // eslint-disable-next-line max-len\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n var isAnnotationRotated = void 0;\n if (annotation.ShapeAnnotationType) {\n if (isImportAction) {\n if (this.pdfViewerBase.isJsonImported) {\n annotation.Bounds = this.pdfViewerBase.importJsonForRotatedDocuments(annotation.Rotate, pageNumber, annotation.Bounds, annotation.AnnotationRotation);\n isAnnotationRotated = this.pdfViewerBase.isPageRotated;\n }\n }\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n if (isImportAction && this.pdfViewerBase.isJsonImported) {\n vertexPoints = this.pdfViewerBase.calculateVertexPoints(annotation.Rotate, pageNumber, annotation.VertexPoints, annotation.AnnotationRotation);\n }\n else {\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var x = annotation.VertexPoints[j].X ? annotation.VertexPoints[j].X : annotation.VertexPoints[j].x;\n var y = annotation.VertexPoints[j].Y ? annotation.VertexPoints[j].Y : annotation.VertexPoints[j].y;\n var point = { x: x, y: y };\n vertexPoints.push(point);\n }\n }\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n // eslint-disable-next-line max-len\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isPrint = annotation.AnnotationSettings.isPrint;\n var measureObject = {\n // eslint-disable-next-line max-len\n ratio: annotation.Calibrate.Ratio, x: this.getNumberFormatArray(annotation.Calibrate.X), distance: this.getNumberFormatArray(annotation.Calibrate.Distance), area: this.getNumberFormatArray(annotation.Calibrate.Area), angle: this.getNumberFormatArray(annotation.Calibrate.Angle), volume: this.getNumberFormatArray(annotation.Calibrate.Volume),\n targetUnitConversion: annotation.Calibrate.TargetUnitConversion\n };\n if (annotation.Calibrate.Depth) {\n measureObject.depth = annotation.Calibrate.Depth;\n }\n var left = annotation.Bounds.X ? annotation.Bounds.X : annotation.Bounds.x;\n var top_1 = annotation.Bounds.Y ? annotation.Bounds.Y : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height;\n annotationObject = {\n // eslint-disable-next-line max-len\n id: 'measure' + this.measureShapeCount, shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n // eslint-disable-next-line max-len\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked,\n // eslint-disable-next-line max-len\n bounds: { left: left, top: top_1, width: width, height: height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n caption: annotation.Caption, captionPosition: annotation.CaptionPosition, calibrate: measureObject, leaderLength: annotation.LeaderLength, leaderLineExtension: annotation.LeaderLineExtension,\n // eslint-disable-next-line max-len\n leaderLineOffset: annotation.LeaderLineOffset, indent: annotation.Indent, annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: isPrint, isCommentLock: annotation.IsCommentLock, isAnnotationRotated: isAnnotationRotated\n };\n var annot = void 0;\n // eslint-disable-next-line\n var vPoints = annotationObject.vertexPoints;\n if (vertexPoints == null) {\n vPoints = [];\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annot = {\n // eslint-disable-next-line max-len\n id: 'measure' + this.measureShapeCount, shapeAnnotationType: this.getShapeType(annotationObject), author: annotationObject.author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotationObject.modifiedDate,\n subject: annotationObject.subject, notes: annotationObject.note, fillColor: annotationObject.fillColor, strokeColor: annotationObject.strokeColor, opacity: annotationObject.opacity,\n // eslint-disable-next-line max-len\n thickness: annotationObject.thickness, borderStyle: annotationObject.borderStyle, borderDashArray: annotationObject.borderDashArray.toString(), rotateAngle: parseFloat(annotationObject.rotateAngle.split('Angle')[1]),\n isCloudShape: annotationObject.isCloudShape, cloudIntensity: annotationObject.cloudIntensity, taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadEnd), sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadStart),\n // eslint-disable-next-line max-len\n vertexPoints: vPoints, bounds: { x: annotationObject.bounds.left, y: annotationObject.bounds.top, width: annotationObject.bounds.width, height: annotationObject.bounds.height }, leaderHeight: annotationObject.leaderLength,\n pageIndex: pageNumber, annotName: annotationObject.annotName, comments: annotationObject.comments, review: annotationObject.review,\n measureType: this.getMeasureType(annotationObject),\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: annotation.AnnotationSelectorSettings,\n annotationSettings: annotationObject.annotationSettings, annotationAddMode: annotation.annotationAddMode,\n isPrint: isPrint, isCommentLock: annotationObject.isCommentLock\n };\n this.pdfViewer.annotation.storeAnnotations(pageNumber, annotationObject, '_annotations_shape_measure');\n if (this.isAddAnnotationProgramatically) {\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, annotation.ShapeAnnotationType, annot.bounds, settings);\n }\n this.pdfViewer.add(annot);\n }\n }\n }\n }\n else if (shapeAnnotations.shapeAnnotationType) {\n var annotationObject = this.createAnnotationObject(shapeAnnotations);\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape_measure');\n this.pdfViewer.annotationModule.triggerAnnotationAdd(shapeAnnotations);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else {\n selector = this.getSelector(annotation.Subject);\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n MeasureAnnotation.prototype.setAnnotationType = function (type) {\n var author = 'Guest';\n this.updateMeasureproperties();\n this.pdfViewerBase.disableTextSelectionMode();\n switch (type) {\n case 'Distance':\n this.currentAnnotationMode = 'Distance';\n var modifiedDateDist = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.distanceSettings.author ? this.pdfViewer.distanceSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.distanceStartHead),\n taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.distanceEndHead), measureType: 'Distance',\n fillColor: this.distanceFillColor, notes: '', strokeColor: this.distanceStrokeColor, leaderHeight: this.leaderLength,\n opacity: this.distanceOpacity, thickness: this.distanceThickness, borderDashArray: this.distanceDashArray.toString(),\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Distance', author: author, subject: 'Distance calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Distance';\n break;\n case 'Perimeter':\n this.currentAnnotationMode = 'Perimeter';\n var modifiedDatePeri = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.perimeterSettings.author ? this.pdfViewer.perimeterSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'LineWidthArrowHead', fillColor: this.perimeterFillColor, notes: '', strokeColor: this.perimeterStrokeColor, opacity: this.perimeterOpacity,\n thickness: this.perimeterThickness, sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.perimeterStartHead),\n // eslint-disable-next-line max-len\n taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.perimeterEndHead), measureType: 'Perimeter', borderDashArray: this.perimeterDashArray.toString(),\n author: author, subject: 'Perimeter calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Perimeter';\n break;\n case 'Area':\n this.currentAnnotationMode = 'Area';\n var modifiedDateArea = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.areaSettings.author ? this.pdfViewer.areaSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Polygon', fillColor: this.areaFillColor, notes: '', strokeColor: this.areaStrokeColor,\n thickness: this.areaThickness, opacity: this.areaOpacity, measureType: 'Area',\n modifiedDate: modifiedDateArea, borderStyle: '', borderDashArray: '0',\n author: author, subject: 'Area calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Polygon';\n break;\n case 'Radius':\n this.currentAnnotationMode = 'Radius';\n var modifiedDateRad = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.radiusSettings.author ? this.pdfViewer.radiusSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Radius', fillColor: this.radiusFillColor, notes: '', strokeColor: this.radiusStrokeColor, opacity: this.radiusOpacity,\n thickness: this.radiusThickness, measureType: 'Radius', modifiedDate: modifiedDateRad, borderStyle: '', borderDashArray: '0',\n author: author, subject: 'Radius calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'DrawTool';\n break;\n case 'Volume':\n this.currentAnnotationMode = 'Volume';\n var modifiedDateVol = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.volumeSettings.author ? this.pdfViewer.volumeSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Polygon', notes: '', fillColor: this.volumeFillColor, strokeColor: this.volumeStrokeColor,\n opacity: this.volumeOpacity, thickness: this.volumeThickness, measureType: 'Volume',\n modifiedDate: modifiedDateVol, borderStyle: '', borderDashArray: '0',\n author: author, subject: 'Volume calculation', isCommentLock: false\n };\n this.pdfViewer.tool = 'Polygon';\n break;\n }\n };\n MeasureAnnotation.prototype.updateMeasureproperties = function () {\n this.distanceFillColor = this.pdfViewer.distanceSettings.fillColor ? this.pdfViewer.distanceSettings.fillColor : '#ff0000';\n this.distanceStrokeColor = this.pdfViewer.distanceSettings.strokeColor ? this.pdfViewer.distanceSettings.strokeColor : '#ff0000';\n this.distanceOpacity = this.pdfViewer.distanceSettings.opacity ? this.pdfViewer.distanceSettings.opacity : 1;\n this.distanceThickness = this.pdfViewer.distanceSettings.thickness ? this.pdfViewer.distanceSettings.thickness : 1;\n this.distanceDashArray = this.pdfViewer.distanceSettings.borderDashArray ? this.pdfViewer.distanceSettings.borderDashArray : 0;\n this.leaderLength = this.pdfViewer.distanceSettings.leaderLength != null ? this.pdfViewer.distanceSettings.leaderLength : 40;\n // eslint-disable-next-line max-len\n this.distanceStartHead = this.pdfViewer.distanceSettings.lineHeadStartStyle ? this.pdfViewer.distanceSettings.lineHeadStartStyle : 'Closed';\n this.distanceEndHead = this.pdfViewer.distanceSettings.lineHeadEndStyle ? this.pdfViewer.distanceSettings.lineHeadEndStyle : 'Closed';\n this.perimeterFillColor = this.pdfViewer.perimeterSettings.fillColor ? this.pdfViewer.perimeterSettings.fillColor : '#ffffff00';\n this.perimeterStrokeColor = this.pdfViewer.perimeterSettings.strokeColor ? this.pdfViewer.perimeterSettings.strokeColor : '#ff0000';\n this.perimeterOpacity = this.pdfViewer.perimeterSettings.opacity ? this.pdfViewer.perimeterSettings.opacity : 1;\n this.perimeterThickness = this.pdfViewer.perimeterSettings.thickness ? this.pdfViewer.perimeterSettings.thickness : 1;\n this.perimeterDashArray = this.pdfViewer.perimeterSettings.borderDashArray ? this.pdfViewer.perimeterSettings.borderDashArray : 0;\n // eslint-disable-next-line max-len\n this.perimeterStartHead = this.pdfViewer.perimeterSettings.lineHeadStartStyle ? this.pdfViewer.perimeterSettings.lineHeadStartStyle : 'Open';\n this.perimeterEndHead = this.pdfViewer.perimeterSettings.lineHeadEndStyle ? this.pdfViewer.perimeterSettings.lineHeadEndStyle : 'Open';\n this.areaFillColor = this.pdfViewer.areaSettings.fillColor ? this.pdfViewer.areaSettings.fillColor : '#ffffff00';\n this.areaStrokeColor = this.pdfViewer.areaSettings.strokeColor ? this.pdfViewer.areaSettings.strokeColor : '#ff0000';\n this.areaOpacity = this.pdfViewer.areaSettings.opacity ? this.pdfViewer.areaSettings.opacity : 1;\n this.areaThickness = this.pdfViewer.areaSettings.thickness ? this.pdfViewer.areaSettings.thickness : 1;\n this.radiusFillColor = this.pdfViewer.radiusSettings.fillColor ? this.pdfViewer.radiusSettings.fillColor : '#ffffff00';\n this.radiusStrokeColor = this.pdfViewer.radiusSettings.strokeColor ? this.pdfViewer.radiusSettings.strokeColor : '#ff0000';\n this.radiusOpacity = this.pdfViewer.radiusSettings.opacity ? this.pdfViewer.radiusSettings.opacity : 1;\n this.radiusThickness = this.pdfViewer.radiusSettings.thickness ? this.pdfViewer.radiusSettings.thickness : 1;\n this.volumeFillColor = this.pdfViewer.volumeSettings.fillColor ? this.pdfViewer.volumeSettings.fillColor : '#ffffff00';\n this.volumeStrokeColor = this.pdfViewer.volumeSettings.strokeColor ? this.pdfViewer.volumeSettings.strokeColor : '#ff0000';\n this.volumeOpacity = this.pdfViewer.volumeSettings.opacity ? this.pdfViewer.volumeSettings.opacity : 1;\n this.volumeThickness = this.pdfViewer.volumeSettings.thickness ? this.pdfViewer.volumeSettings.thickness : 1;\n this.unit = this.pdfViewer.measurementSettings.conversionUnit.toLowerCase();\n this.displayUnit = this.pdfViewer.measurementSettings.displayUnit.toLowerCase();\n this.ratio = this.pdfViewer.measurementSettings.scaleRatio;\n this.volumeDepth = this.pdfViewer.measurementSettings.depth;\n this.scaleRatioString = '1 ' + this.unit + ' = ' + this.ratio.toString() + ' ' + this.displayUnit;\n };\n MeasureAnnotation.prototype.createAnnotationObject = function (annotationModel) {\n var bound;\n var labelBound;\n var annotationName = this.pdfViewer.annotation.createGUID();\n // eslint-disable-next-line max-len\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('shape_measure', (annotationModel.pageIndex + 1), annotationModel.measureType);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annotationModel.annotName = annotationName;\n annotationModel.author = this.pdfViewer.annotationModule.updateAnnotationAuthor('measure', annotationModel.subject);\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(annotationName, annotationModel.notes);\n if (annotationModel.wrapper.bounds) {\n bound = {\n // eslint-disable-next-line max-len\n left: annotationModel.wrapper.bounds.x, top: annotationModel.wrapper.bounds.y, height: annotationModel.wrapper.bounds.height, width: annotationModel.wrapper.bounds.width,\n right: annotationModel.wrapper.bounds.right, bottom: annotationModel.wrapper.bounds.bottom\n };\n labelBound = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(annotationModel.wrapper.bounds);\n }\n else {\n bound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n labelBound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n }\n // eslint-disable-next-line radix\n var borderDashArray = parseInt(annotationModel.borderDashArray);\n borderDashArray = isNaN(borderDashArray) ? 0 : borderDashArray;\n // eslint-disable-next-line max-len\n var measure = { ratio: this.scaleRatioString, x: [this.createNumberFormat('x')], distance: [this.createNumberFormat('d')], area: [this.createNumberFormat('a')] };\n if (annotationModel.measureType === 'Volume') {\n measure.depth = this.volumeDepth;\n }\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(annotationModel, true);\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotationModel);\n annotationModel.isPrint = annotationSettings.isPrint;\n var setting = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotationModel.strokeColor, fillColor: annotationModel.fillColor, fontColor: annotationModel.fontColor,\n fontSize: annotationModel.fontSize, labelContent: annotationModel.labelContent, labelHeight: setting.labelHeight, labelWidth: setting.labelMaxWidth, opacity: annotationModel.opacity\n };\n return {\n // eslint-disable-next-line max-len\n id: annotationModel.id, shapeAnnotationType: this.getShapeAnnotType(annotationModel.measureType), author: annotationModel.author, allowedInteractions: allowedInteractions,\n subject: annotationModel.subject, note: annotationModel.notes, strokeColor: annotationModel.strokeColor,\n fillColor: annotationModel.fillColor, opacity: annotationModel.opacity, thickness: annotationModel.thickness,\n // eslint-disable-next-line max-len\n borderStyle: annotationModel.borderStyle, borderDashArray: borderDashArray, bounds: bound,\n // eslint-disable-next-line max-len\n modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(),\n rotateAngle: 'RotateAngle' + annotationModel.rotateAngle, isCloudShape: annotationModel.isCloudShape, cloudIntensity: annotationModel.cloudIntensity,\n // eslint-disable-next-line max-len\n vertexPoints: annotationModel.vertexPoints, lineHeadStart: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.sourceDecoraterShapes),\n lineHeadEnd: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.taregetDecoraterShapes), rectangleDifference: [], isLocked: annotationSettings.isLock,\n // eslint-disable-next-line max-len\n leaderLength: annotationModel.leaderHeight, leaderLineExtension: 2, leaderLineOffset: 0, calibrate: measure, caption: true, captionPosition: 'Top',\n indent: this.getIndent(annotationModel.measureType), annotName: annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(), author: annotationModel.author },\n // eslint-disable-next-line max-len\n labelContent: annotationModel.labelContent, enableShapeLabel: annotationModel.enableShapeLabel, labelFillColor: annotationModel.labelFillColor,\n labelBorderColor: annotationModel.labelBorderColor, fontColor: annotationModel.fontColor, fontSize: annotationModel.fontSize,\n // eslint-disable-next-line max-len\n labelBounds: labelBound, annotationSelectorSettings: this.getSelector(annotationModel.subject), labelSettings: labelSettings, annotationSettings: annotationSettings,\n customData: this.pdfViewer.annotation.getMeasureData(annotationModel.subject), isPrint: annotationModel.isPrint, isCommentLock: annotationModel.isCommentLock, isAnnotationRotated: false\n };\n };\n MeasureAnnotation.prototype.getSelector = function (type) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if ((type === 'Distance calculation') && this.pdfViewer.distanceSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.distanceSettings.annotationSelectorSettings;\n }\n else if ((type === 'Perimeter calculation') && this.pdfViewer.perimeterSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.perimeterSettings.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n }\n else if ((type === 'Area calculation') && this.pdfViewer.areaSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.areaSettings.annotationSelectorSettings;\n }\n else if ((type === 'Radius calculation') && this.pdfViewer.radiusSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.radiusSettings.annotationSelectorSettings;\n }\n else if ((type === 'Volume calculation') && this.pdfViewer.volumeSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.volumeSettings.annotationSelectorSettings;\n }\n return selector;\n };\n MeasureAnnotation.prototype.getShapeAnnotType = function (measureType) {\n var annotationType;\n switch (measureType) {\n case 'Distance':\n annotationType = 'Line';\n break;\n case 'Perimeter':\n annotationType = 'Polyline';\n break;\n case 'Area':\n case 'Volume':\n annotationType = 'Polygon';\n break;\n case 'Radius':\n annotationType = 'Circle';\n break;\n }\n return annotationType;\n };\n MeasureAnnotation.prototype.getShapeType = function (shape) {\n var shapeType;\n if (shape.shapeAnnotationType === 'Line') {\n shapeType = 'Distance';\n }\n else if (shape.shapeAnnotationType === 'Polyline') {\n shapeType = 'LineWidthArrowHead';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonDimension') {\n shapeType = 'Polygon';\n // eslint-disable-next-line max-len\n }\n else if ((shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonRadius') || shape.shapeAnnotationType === 'Circle') {\n shapeType = 'Radius';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonVolume') {\n shapeType = 'Polygon';\n }\n return shapeType;\n };\n MeasureAnnotation.prototype.getMeasureType = function (shape) {\n var measureType;\n if (shape.shapeAnnotationType === 'Line') {\n measureType = 'Distance';\n }\n else if (shape.shapeAnnotationType === 'Polyline') {\n measureType = 'Perimeter';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonDimension') {\n measureType = 'Area';\n // eslint-disable-next-line max-len\n }\n else if ((shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonRadius') || shape.shapeAnnotationType === 'Circle') {\n measureType = 'Radius';\n }\n else if (shape.shapeAnnotationType === 'Polygon' && shape.indent === 'PolygonVolume') {\n measureType = 'Volume';\n }\n return measureType;\n };\n MeasureAnnotation.prototype.getIndent = function (measureType) {\n var indent;\n switch (measureType) {\n case 'Distance':\n indent = 'LineDimension';\n break;\n case 'Perimeter':\n indent = 'PolyLineDimension';\n break;\n case 'Area':\n indent = 'PolygonDimension';\n break;\n case 'Radius':\n indent = 'PolygonRadius';\n break;\n case 'Volume':\n indent = 'PolygonVolume';\n break;\n }\n return indent;\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getNumberFormatArray = function (list) {\n // eslint-disable-next-line\n var numberFormatArray = new Array();\n if (list) {\n for (var i = 0; i < list.length; i++) {\n // eslint-disable-next-line max-len\n numberFormatArray[i] = { unit: list[i].Unit, fractionalType: list[i].FractionalType, conversionFactor: list[i].ConversionFactor, denominator: list[i].Denominator, formatDenominator: list[i].FormatDenominator };\n }\n }\n return numberFormatArray;\n };\n MeasureAnnotation.prototype.createNumberFormat = function (type) {\n var cFactor = 1;\n var unit = this.displayUnit;\n if (type === 'x') {\n cFactor = this.getFactor(this.unit);\n }\n if (type === 'a') {\n unit = 'sq ' + this.displayUnit;\n }\n // eslint-disable-next-line max-len\n var numberFormat = { unit: unit, fractionalType: 'D', conversionFactor: cFactor, denominator: 100, formatDenominator: false };\n return numberFormat;\n };\n /**\n * @private\n */\n MeasureAnnotation.prototype.saveMeasureShapeAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n if (this.pdfViewerBase.isJsonExported) {\n if (pageAnnotationObject.annotations[z].isAnnotationRotated) {\n pageAnnotationObject.annotations[z].bounds = this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex);\n pageAnnotationObject.annotations[z].vertexPoints = this.pdfViewer.annotation.getVertexPoints(pageAnnotationObject.annotations[z].vertexPoints, pageAnnotationObject.pageIndex);\n }\n else {\n var pageDetails = this.pdfViewerBase.pageSize[pageAnnotationObject.pageIndex];\n if (pageDetails) {\n pageAnnotationObject.annotations[z].annotationRotation = pageDetails.rotation;\n }\n }\n }\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n var fillColorString = pageAnnotationObject.annotations[z].fillColor;\n pageAnnotationObject.annotations[z].fillColor = JSON.stringify(this.getRgbCode(fillColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].vertexPoints = JSON.stringify(this.pdfViewer.annotation.getVertexPoints(pageAnnotationObject.annotations[z].vertexPoints, pageAnnotationObject.pageIndex));\n if (pageAnnotationObject.annotations[z].rectangleDifference !== null) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].rectangleDifference = JSON.stringify(pageAnnotationObject.annotations[z].rectangleDifference);\n }\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].calibrate = this.getStringifiedMeasure(pageAnnotationObject.annotations[z].calibrate);\n if (pageAnnotationObject.annotations[z].enableShapeLabel === true) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].labelBounds = JSON.stringify(this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(JSON.parse(pageAnnotationObject.annotations[z].bounds), pageAnnotationObject.pageIndex));\n var labelFillColorString = pageAnnotationObject.annotations[z].labelFillColor;\n pageAnnotationObject.annotations[z].labelFillColor = JSON.stringify(this.getRgbCode(labelFillColorString));\n var labelBorderColorString = pageAnnotationObject.annotations[z].labelBorderColor;\n pageAnnotationObject.annotations[z].labelBorderColor = JSON.stringify(this.getRgbCode(labelBorderColorString));\n pageAnnotationObject.annotations[z].labelSettings.fillColor = labelFillColorString;\n var fontColorString = pageAnnotationObject.annotations[z].labelSettings.fontColor;\n pageAnnotationObject.annotations[z].fontColor = JSON.stringify(this.getRgbCode(fontColorString));\n }\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n /**\n * @private\n */\n MeasureAnnotation.prototype.createScaleRatioWindow = function () {\n var _this = this;\n if (!isBlazor()) {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_scale_ratio_window', className: 'e-pv-scale-ratio-window' });\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n var contentElement = this.createRatioUI();\n this.scaleRatioDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: this.pdfViewer.localeObj.getConstant('Scale Ratio'),\n target: this.pdfViewer.element, content: contentElement, close: function () {\n _this.sourceTextBox.destroy();\n _this.convertUnit.destroy();\n _this.destTextBox.destroy();\n _this.dispUnit.destroy();\n _this.scaleRatioDialog.destroy();\n var dialogElement = _this.pdfViewerBase.getElement('_scale_ratio_window');\n dialogElement.parentElement.removeChild(dialogElement);\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.scaleRatioDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) }\n ];\n }\n else {\n this.scaleRatioDialog.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.scaleRatioDialog.enableRtl = true;\n }\n this.scaleRatioDialog.appendTo(dialogDiv);\n this.convertUnit.content = this.createContent(this.pdfViewer.localeObj.getConstant(this.unit)).outerHTML;\n this.dispUnit.content = this.createContent(this.pdfViewer.localeObj.getConstant(this.displayUnit)).outerHTML;\n this.depthUnit.content = this.createContent(this.pdfViewer.localeObj.getConstant(this.displayUnit)).outerHTML;\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenScaleRatioDialog');\n }\n };\n MeasureAnnotation.prototype.createRatioUI = function () {\n var element = createElement('div');\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var items = [{ text: this.pdfViewer.localeObj.getConstant('pt'), label: 'pt' }, { text: this.pdfViewer.localeObj.getConstant('in'), label: 'in' }, { text: this.pdfViewer.localeObj.getConstant('mm'), label: 'mm' }, { text: this.pdfViewer.localeObj.getConstant('cm'), label: 'cm' }, { text: this.pdfViewer.localeObj.getConstant('p'), label: 'p' }, { text: this.pdfViewer.localeObj.getConstant('ft'), label: 'ft' }, { text: this.pdfViewer.localeObj.getConstant('ft_in'), label: 'ft_in' }, { text: this.pdfViewer.localeObj.getConstant('m'), label: 'm' }];\n var labelText = createElement('div', { id: elementID + '_scale_ratio_label', className: 'e-pv-scale-ratio-text' });\n labelText.textContent = this.pdfViewer.localeObj.getConstant('Scale Ratio');\n element.appendChild(labelText);\n var sourceContainer = createElement('div', { id: elementID + '_scale_src_container' });\n element.appendChild(sourceContainer);\n // eslint-disable-next-line max-len\n var srcInputElement = this.createInputElement('input', 'e-pv-scale-ratio-src-input', elementID + '_src_input', sourceContainer);\n this.sourceTextBox = new NumericTextBox({ value: 1, format: '##', cssClass: 'e-pv-scale-ratio-src-input', min: 1, max: 100 }, srcInputElement);\n // eslint-disable-next-line max-len\n var srcUnitElement = this.createInputElement('button', 'e-pv-scale-ratio-src-unit', elementID + '_src_unit', sourceContainer);\n this.convertUnit = new DropDownButton({ items: items, cssClass: 'e-pv-scale-ratio-src-unit' }, srcUnitElement);\n this.convertUnit.select = this.convertUnitSelect.bind(this);\n var destinationContainer = createElement('div', { id: elementID + '_scale_dest_container' });\n // eslint-disable-next-line max-len\n var destInputElement = this.createInputElement('input', 'e-pv-scale-ratio-dest-input', elementID + '_dest_input', destinationContainer);\n this.destTextBox = new NumericTextBox({ value: 1, format: '##', cssClass: 'e-pv-scale-ratio-dest-input', min: 1, max: 100 }, destInputElement);\n // eslint-disable-next-line max-len\n var destUnitElement = this.createInputElement('button', 'e-pv-scale-ratio-dest-unit', elementID + '_dest_unit', destinationContainer);\n this.dispUnit = new DropDownButton({ items: items, cssClass: 'e-pv-scale-ratio-dest-unit' }, destUnitElement);\n this.dispUnit.select = this.dispUnitSelect.bind(this);\n element.appendChild(destinationContainer);\n var depthLabelText = createElement('div', { id: elementID + '_depth_label', className: 'e-pv-depth-text' });\n depthLabelText.textContent = this.pdfViewer.localeObj.getConstant('Depth');\n element.appendChild(depthLabelText);\n var depthContainer = createElement('div', { id: elementID + '_depth_container' });\n element.appendChild(depthContainer);\n // eslint-disable-next-line max-len\n var depthInputElement = this.createInputElement('input', 'e-pv-depth-input', elementID + '_depth_input', depthContainer);\n this.depthTextBox = new NumericTextBox({ value: this.volumeDepth, format: '##', cssClass: 'e-pv-depth-input', min: 1 }, depthInputElement);\n // eslint-disable-next-line max-len\n var depthUnitElement = this.createInputElement('button', 'e-pv-depth-unit', elementID + '_depth_unit', depthContainer);\n this.depthUnit = new DropDownButton({ items: items, cssClass: 'e-pv-depth-unit' }, depthUnitElement);\n this.depthUnit.select = this.depthUnitSelect.bind(this);\n return element;\n };\n MeasureAnnotation.prototype.convertUnitSelect = function (args) {\n this.convertUnit.content = this.createContent(args.item.text).outerHTML;\n };\n MeasureAnnotation.prototype.dispUnitSelect = function (args) {\n this.dispUnit.content = this.createContent(args.item.text).outerHTML;\n this.depthUnit.content = this.createContent(args.item.text).outerHTML;\n };\n MeasureAnnotation.prototype.depthUnitSelect = function (args) {\n this.depthUnit.content = this.createContent(args.item.text).outerHTML;\n };\n MeasureAnnotation.prototype.createContent = function (text) {\n var divElement = createElement('div', { className: 'e-pv-scale-unit-content' });\n divElement.textContent = text;\n return divElement;\n };\n MeasureAnnotation.prototype.createInputElement = function (input, className, idString, parentElement) {\n var container = createElement('div', { id: idString + '_container', className: className + '-container' });\n var textBoxInput = createElement(input, { id: idString });\n if (input === 'input') {\n textBoxInput.type = 'text';\n }\n container.appendChild(textBoxInput);\n parentElement.appendChild(container);\n return textBoxInput;\n };\n /**\n * @private\n */\n MeasureAnnotation.prototype.onOkClicked = function () {\n if (isBlazor()) {\n // eslint-disable-next-line\n var unitElement = document.querySelector('#' + this.pdfViewer.element.id + '_src_unit');\n // eslint-disable-next-line\n var displayElement = document.querySelector('#' + this.pdfViewer.element.id + '_dest_unit');\n // eslint-disable-next-line\n var sourceTextBox = document.querySelector('#' + this.pdfViewer.element.id + '_ratio_input');\n // eslint-disable-next-line\n var destTextBox = document.querySelector('#' + this.pdfViewer.element.id + '_dest_input');\n // eslint-disable-next-line\n var depthTextBox = document.querySelector('#' + this.pdfViewer.element.id + '_depth_input');\n if (unitElement && displayElement && sourceTextBox && destTextBox && depthTextBox) {\n this.unit = unitElement.value;\n this.displayUnit = displayElement.value;\n // eslint-disable-next-line\n this.ratio = parseInt(destTextBox.value) / parseInt(sourceTextBox.value);\n // eslint-disable-next-line\n this.volumeDepth = parseInt(depthTextBox.value);\n }\n // eslint-disable-next-line\n this.scaleRatioString = parseInt(sourceTextBox.value) + ' ' + this.unit + ' = ' + parseInt(destTextBox.value) + ' ' + this.displayUnit;\n this.updateMeasureValues(this.scaleRatioString, this.displayUnit, this.unit, this.volumeDepth);\n }\n else {\n this.unit = this.getContent(this.convertUnit.content);\n this.displayUnit = this.getContent(this.dispUnit.content);\n this.ratio = this.destTextBox.value / this.sourceTextBox.value;\n this.volumeDepth = this.depthTextBox.value;\n this.scaleRatioString = this.sourceTextBox.value + ' ' + this.unit + ' = ' + this.destTextBox.value + ' ' + this.displayUnit;\n this.scaleRatioDialog.hide();\n var originalUnit = void 0;\n var originalDisplayUnit = void 0;\n originalUnit = this.restoreUnit(this.convertUnit);\n originalDisplayUnit = this.restoreUnit(this.dispUnit);\n this.updateMeasureValues(this.scaleRatioString, originalDisplayUnit, originalUnit, this.volumeDepth);\n }\n };\n MeasureAnnotation.prototype.restoreUnit = function (dropdownObject) {\n var calibUnit;\n for (var i = 0; i < dropdownObject.items.length; i++) {\n var convertUnitItem = dropdownObject.items[i];\n if (this.unit === convertUnitItem.text) {\n calibUnit = convertUnitItem.label;\n }\n }\n return calibUnit;\n };\n /**\n * @param ratio\n * @param displayUnit\n * @param conversionUnit\n * @param depth\n * @private\n */\n MeasureAnnotation.prototype.updateMeasureValues = function (ratio, displayUnit, conversionUnit, depth) {\n this.scaleRatioString = ratio;\n this.displayUnit = displayUnit;\n this.unit = conversionUnit;\n this.volumeDepth = depth;\n for (var i = 0; i < this.pdfViewerBase.pageCount; i++) {\n var pageAnnotations = this.getAnnotations(i, null);\n if (pageAnnotations) {\n for (var j = 0; j < pageAnnotations.length; j++) {\n pageAnnotations = this.getAnnotations(i, null);\n var measureObject = pageAnnotations[j];\n if (!measureObject.annotationSettings.isLock) {\n measureObject.calibrate.ratio = ratio;\n measureObject.calibrate.x[0].unit = displayUnit;\n measureObject.calibrate.distance[0].unit = displayUnit;\n measureObject.calibrate.area[0].unit = displayUnit;\n measureObject.calibrate.x[0].conversionFactor = this.getFactor(conversionUnit);\n if (measureObject.indent === 'PolygonVolume') {\n measureObject.calibrate.depth = depth;\n }\n pageAnnotations[j] = measureObject;\n this.manageAnnotations(pageAnnotations, i);\n this.pdfViewer.annotation.updateCalibrateValues(this.getAnnotationBaseModel(measureObject.id));\n }\n }\n }\n this.pdfViewer.annotation.renderAnnotations(i, null, null, null, null, false);\n }\n };\n MeasureAnnotation.prototype.getAnnotationBaseModel = function (id) {\n var annotationBase = null;\n for (var i = 0; i < this.pdfViewer.annotations.length; i++) {\n if (id === this.pdfViewer.annotations[i].id) {\n annotationBase = this.pdfViewer.annotations[i];\n break;\n }\n }\n return annotationBase;\n };\n MeasureAnnotation.prototype.getContent = function (unit) {\n return unit.split('
    ')[0].split('\">')[1];\n };\n /**\n * @param value\n * @param currentAnnot\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.setConversion = function (value, currentAnnot) {\n // eslint-disable-next-line\n var values;\n if (currentAnnot) {\n var pageIndex = currentAnnot.pageIndex;\n if (currentAnnot.id === 'diagram_helper') {\n pageIndex = currentAnnot.pageIndex ? currentAnnot.pageIndex : this.pdfViewerBase.activeElements.activePageID;\n currentAnnot = this.getCurrentObject(pageIndex, null, currentAnnot.annotName);\n }\n if (currentAnnot) {\n values = this.getCurrentValues(currentAnnot.id, pageIndex);\n }\n else {\n values = this.getCurrentValues();\n }\n }\n else {\n values = this.getCurrentValues();\n }\n var scaledValue = value * values.ratio;\n return this.convertPointToUnits(values.factor, scaledValue, values.unit);\n };\n MeasureAnnotation.prototype.onCancelClicked = function () {\n this.scaleRatioDialog.hide();\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isNewlyAdded\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase, isNewlyAdded) {\n if (!isNullOrUndefined(annotationBase.formFieldAnnotationType) && annotationBase.formFieldAnnotationType !== \"\") {\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n }\n else {\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n }\n if (!isNewlyAdded) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n }\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase, true);\n if (pageAnnotations[i].shapeAnnotationType === 'Line' || pageAnnotations[i].shapeAnnotationType === 'Polyline') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else if (pageAnnotations[i].shapeAnnotationType === 'Polygon') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n if (pageAnnotations[i].enableShapeLabel === true && annotationBase.wrapper) {\n // eslint-disable-next-line max-len\n pageAnnotations[i].labelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(annotationBase.wrapper.bounds);\n }\n }\n else if (property === 'fill') {\n pageAnnotations[i].fillColor = annotationBase.wrapper.children[0].style.fill;\n if (this.pdfViewer.enableShapeLabel) {\n pageAnnotations[i].labelFillColor = annotationBase.wrapper.children[0].style.fill;\n }\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'dashArray') {\n pageAnnotations[i].borderDashArray = annotationBase.wrapper.children[0].style.strokeDashArray;\n pageAnnotations[i].borderStyle = annotationBase.borderStyle;\n }\n else if (property === 'startArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadStart = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.sourceDecoraterShapes);\n }\n else if (property === 'endArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadEnd = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.taregetDecoraterShapes);\n }\n else if (property === 'leaderLength') {\n pageAnnotations[i].leaderLength = annotationBase.leaderHeight;\n }\n else if (property === 'notes') {\n pageAnnotations[i].note = annotationBase.notes;\n if (pageAnnotations[i].enableShapeLabel === true) {\n pageAnnotations[i].labelContent = annotationBase.notes;\n }\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n else if (property === 'labelContent') {\n pageAnnotations[i].note = annotationBase.labelContent;\n pageAnnotations[i].labelContent = annotationBase.labelContent;\n break;\n }\n else if (property === 'fontColor') {\n pageAnnotations[i].fontColor = annotationBase.fontColor;\n }\n else if (property === 'fontSize') {\n pageAnnotations[i].fontSize = annotationBase.fontSize;\n }\n // eslint-disable-next-line max-len\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n MeasureAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n };\n MeasureAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_shape_measure', annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape_measure');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape_measure'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n MeasureAnnotation.prototype.getCurrentObject = function (pageNumber, id, annotName) {\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (id) {\n if (id === pageAnnotations[i].id) {\n currentAnnotObject = pageAnnotations[i];\n break;\n }\n }\n else if (annotName) {\n if (annotName === pageAnnotations[i].annotName) {\n currentAnnotObject = pageAnnotations[i];\n break;\n }\n }\n }\n }\n return currentAnnotObject;\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getCurrentValues = function (id, pageNumber) {\n var ratio;\n var unit;\n var factor;\n var depth;\n if (id && !isNaN(pageNumber)) {\n var currentAnnotObject = this.getCurrentObject(pageNumber, id);\n if (currentAnnotObject) {\n ratio = this.getCurrentRatio(currentAnnotObject.calibrate.ratio);\n unit = currentAnnotObject.calibrate.x[0].unit;\n factor = currentAnnotObject.calibrate.x[0].conversionFactor;\n depth = currentAnnotObject.calibrate.depth;\n }\n else {\n ratio = this.ratio;\n unit = this.displayUnit;\n factor = this.getFactor(this.unit);\n depth = this.volumeDepth;\n }\n }\n else {\n ratio = this.ratio;\n unit = this.displayUnit;\n factor = this.getFactor(this.unit);\n depth = this.volumeDepth;\n }\n return { ratio: ratio, unit: unit, factor: factor, depth: depth };\n };\n MeasureAnnotation.prototype.getCurrentRatio = function (ratioString) {\n var stringArray = ratioString.split(' ');\n if (stringArray[3] === '=') {\n return parseFloat(stringArray[4]) / parseFloat(stringArray[0]);\n }\n else {\n return parseFloat(stringArray[3]) / parseFloat(stringArray[0]);\n }\n };\n /**\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @private\n */\n MeasureAnnotation.prototype.calculateArea = function (points, id, pageNumber) {\n // eslint-disable-next-line\n var values = this.getCurrentValues(id, pageNumber);\n var area = this.getArea(points, values.factor, values.unit) * values.ratio;\n if (values.unit === 'ft_in') {\n // eslint-disable-next-line\n var calculateValue = Math.round(area * 100) / 100;\n if (calculateValue >= 12) {\n calculateValue = (Math.round(calculateValue / 12 * 100) / 100).toString();\n calculateValue = calculateValue.split('.');\n if (calculateValue[1]) {\n // eslint-disable-next-line\n var inchValue = 0;\n if (calculateValue[1].charAt(1)) {\n // eslint-disable-next-line\n inchValue = parseInt(calculateValue[1].charAt(0)) + '.' + parseInt(calculateValue[1].charAt(1));\n inchValue = Math.round(inchValue);\n }\n else {\n inchValue = calculateValue[1];\n }\n if (!inchValue) {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('ft') + ' ' + inchValue + ' ' + this.pdfViewer.localeObj.getConstant('in'));\n }\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n }\n else {\n return (Math.round(area * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n if (values.unit === 'm') {\n return ((area * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n }\n return (Math.round(area * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n };\n MeasureAnnotation.prototype.getArea = function (points, factor, unit) {\n var area = 0;\n var j = points.length - 1;\n for (var i = 0; i < points.length; i++) {\n // eslint-disable-next-line max-len\n area += (points[j].x * this.pixelToPointFactor * factor + points[i].x * this.pixelToPointFactor * factor) * (points[j].y * this.pixelToPointFactor * factor - points[i].y * this.pixelToPointFactor * factor);\n j = i;\n }\n if (unit === 'ft_in') {\n return (Math.abs((area) * 2.0));\n }\n else {\n return (Math.abs((area) / 2.0));\n }\n };\n /**\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @param points\n * @param id\n * @param pageNumber\n * @private\n */\n MeasureAnnotation.prototype.calculateVolume = function (points, id, pageNumber) {\n // eslint-disable-next-line\n var values = this.getCurrentValues(id, pageNumber);\n var depth = values.depth ? values.depth : this.volumeDepth;\n var area = this.getArea(points, values.factor, values.unit);\n var volume = area * ((depth * this.convertUnitToPoint(values.unit)) * values.factor) * values.ratio;\n if (values.unit === 'ft_in') {\n // eslint-disable-next-line\n var calculateValue = Math.round(volume * 100) / 100;\n if (calculateValue >= 12) {\n calculateValue = (Math.round(calculateValue / 12 * 100) / 100).toString();\n calculateValue = calculateValue.split('.');\n if (calculateValue[1]) {\n // eslint-disable-next-line\n var inchValue = 0;\n if (calculateValue[1].charAt(1)) {\n // eslint-disable-next-line\n inchValue = parseInt(calculateValue[1].charAt(0)) + '.' + parseInt(calculateValue[1].charAt(1));\n inchValue = Math.round(inchValue);\n }\n else {\n inchValue = calculateValue[1];\n }\n if (!inchValue) {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('ft') + ' ' + inchValue + ' ' + this.pdfViewer.localeObj.getConstant('in'));\n }\n }\n else {\n return (calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('ft'));\n }\n }\n else {\n return (Math.round(volume * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n return (Math.round(volume * 100) / 100) + ' ' + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n };\n /**\n * @param pdfAnnotationBase\n * @private\n */\n MeasureAnnotation.prototype.calculatePerimeter = function (pdfAnnotationBase) {\n var perimeter = Point.getLengthFromListOfPoints(pdfAnnotationBase.vertexPoints);\n return this.setConversion(perimeter * this.pixelToPointFactor, pdfAnnotationBase);\n };\n MeasureAnnotation.prototype.getFactor = function (unit) {\n var factor;\n switch (unit) {\n case 'in':\n factor = (1 / 72);\n break;\n case 'cm':\n factor = (1 / 28.346);\n break;\n case 'mm':\n factor = (1 / 2.835);\n break;\n case 'pt':\n factor = 1;\n break;\n case 'p':\n factor = 1 / 12;\n break;\n case 'ft':\n factor = 1 / 864;\n break;\n case 'ft_in':\n factor = 1 / 72;\n break;\n case 'm':\n factor = (1 / 2834.64567);\n break;\n }\n return factor;\n };\n MeasureAnnotation.prototype.convertPointToUnits = function (factor, value, unit) {\n var convertedValue;\n if (unit === 'ft_in') {\n // eslint-disable-next-line\n var calculateValue = Math.round((value * factor) * 100) / 100;\n if (calculateValue >= 12) {\n calculateValue = (Math.round(calculateValue / 12 * 100) / 100).toString();\n calculateValue = calculateValue.split('.');\n if (calculateValue[1]) {\n // eslint-disable-next-line\n var inchValue = 0;\n if (calculateValue[1].charAt(1)) {\n // eslint-disable-next-line\n inchValue = parseInt(calculateValue[1].charAt(0)) + '.' + parseInt(calculateValue[1].charAt(1));\n inchValue = Math.round(inchValue);\n }\n else {\n inchValue = calculateValue[1];\n }\n if (!inchValue) {\n convertedValue = calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('ft');\n }\n else {\n convertedValue = calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('ft') + ' ' + inchValue + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n else {\n convertedValue = calculateValue[0] + ' ' + this.pdfViewer.localeObj.getConstant('ft');\n }\n }\n else {\n convertedValue = Math.round((value * factor) * 100) / 100 + ' ' + this.pdfViewer.localeObj.getConstant('in');\n }\n }\n else {\n convertedValue = Math.round((value * factor) * 100) / 100 + ' ' + this.pdfViewer.localeObj.getConstant(unit);\n }\n return convertedValue;\n };\n MeasureAnnotation.prototype.convertUnitToPoint = function (unit) {\n var factor;\n switch (unit) {\n case 'in':\n factor = 72;\n break;\n case 'cm':\n factor = 28.346;\n break;\n case 'mm':\n factor = 2.835;\n break;\n case 'pt':\n factor = 1;\n break;\n case 'p':\n factor = 12;\n break;\n case 'ft':\n factor = 864;\n break;\n case 'ft_in':\n factor = 72;\n break;\n case 'm':\n factor = 2834.64567;\n break;\n }\n return factor;\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getStringifiedMeasure = function (measure) {\n if (!isNullOrUndefined(measure)) {\n measure.angle = JSON.stringify(measure.angle);\n measure.area = JSON.stringify(measure.area);\n measure.distance = JSON.stringify(measure.distance);\n measure.volume = JSON.stringify(measure.volume);\n }\n return JSON.stringify(measure);\n };\n // eslint-disable-next-line\n MeasureAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseInt(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.saveImportedMeasureAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n var measureObject = {\n // eslint-disable-next-line max-len\n ratio: annotation.Calibrate.Ratio, x: this.getNumberFormatArray(annotation.Calibrate.X), distance: this.getNumberFormatArray(annotation.Calibrate.Distance), area: this.getNumberFormatArray(annotation.Calibrate.Area), angle: this.getNumberFormatArray(annotation.Calibrate.Angle), volume: this.getNumberFormatArray(annotation.Calibrate.Volume),\n targetUnitConversion: annotation.Calibrate.TargetUnitConversion\n };\n if (annotation.Calibrate.Depth) {\n measureObject.depth = annotation.Calibrate.Depth;\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('measure', annotation.Subject);\n annotationObject = {\n // eslint-disable-next-line max-len\n id: 'measure', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n // eslint-disable-next-line max-len\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n caption: annotation.Caption, captionPosition: annotation.CaptionPosition, calibrate: measureObject, leaderLength: annotation.LeaderLength, leaderLineExtension: annotation.LeaderLineExtension,\n // eslint-disable-next-line max-len\n leaderLineOffset: annotation.LeaderLineOffset, indent: annotation.Indent, annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock, isAnnotationRotated: false\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape_measure');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n MeasureAnnotation.prototype.updateMeasureAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n var measureObject = {\n // eslint-disable-next-line max-len\n ratio: annotation.Calibrate.Ratio, x: this.getNumberFormatArray(annotation.Calibrate.X), distance: this.getNumberFormatArray(annotation.Calibrate.Distance), area: this.getNumberFormatArray(annotation.Calibrate.Area), angle: this.getNumberFormatArray(annotation.Calibrate.Angle), volume: this.getNumberFormatArray(annotation.Calibrate.Volume),\n targetUnitConversion: annotation.Calibrate.TargetUnitConversion\n };\n if (annotation.Calibrate.Depth) {\n measureObject.depth = annotation.Calibrate.Depth;\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n var settings = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotation.StrokeColor, fillColor: annotation.FillColor, fontColor: annotation.FontColor,\n fontSize: annotation.FontSize, labelContent: annotation.LabelContent, labelHeight: settings.labelHeight, labelWidth: settings.labelWidth, opacity: annotation.Opacity\n };\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : labelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n id: 'measure', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n // eslint-disable-next-line max-len\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n caption: annotation.Caption, captionPosition: annotation.CaptionPosition, calibrate: measureObject, leaderLength: annotation.LeaderLength, leaderLineExtension: annotation.LeaderLineExtension,\n // eslint-disable-next-line max-len\n leaderLineOffset: annotation.LeaderLineOffset, indent: annotation.Indent, annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author),\n review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, pageNumber: pageNumber, annotationSelectorSettings: annotation.AnnotationSelectorSettings, labelSettings: annotation.labelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint\n };\n return annotationObject;\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes the annotation type\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @returns Object\n * @private\n */\n MeasureAnnotation.prototype.updateAddAnnotationDetails = function (annotationType, annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Initialize the annotation settings\n var annotationSelectorSettings = null;\n var allowedInteractions = null;\n var annotationSettings = null;\n var measureAnnotationType = '';\n var shapeAnnotationType = '';\n var subject = '';\n var isArrow = false;\n var vertexPoints = [];\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (annotationType == 'Distance') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.lineSettings.annotationSelectorSettings ? this.pdfViewer.lineSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.lineSettings);\n allowedInteractions = this.pdfViewer.lineSettings.allowedInteractions ? this.pdfViewer.lineSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'LineDimension';\n shapeAnnotationType = 'Line';\n subject = 'Distance calculation';\n isArrow = true;\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 100, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Perimeter') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.arrowSettings.annotationSelectorSettings ? this.pdfViewer.arrowSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.arrowSettings);\n allowedInteractions = this.pdfViewer.arrowSettings.allowedInteractions ? this.pdfViewer.arrowSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolyLineDimension';\n shapeAnnotationType = 'Polyline';\n subject = 'Perimeter calculation';\n isArrow = true;\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y },\n { x: offset.x + 85, y: offset.y },\n { x: offset.x + 86, y: offset.y + 62 }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Area') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.rectangleSettings.annotationSelectorSettings ? this.pdfViewer.rectangleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.rectangleSettings);\n allowedInteractions = this.pdfViewer.rectangleSettings.allowedInteractions ? this.pdfViewer.rectangleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolygonDimension';\n shapeAnnotationType = 'Polygon';\n subject = 'Area calculation';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y },\n { x: offset.x + 88, y: offset.y - 1 },\n { x: offset.x + 89, y: offset.y + 53 },\n { x: offset.x, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Radius') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.circleSettings.annotationSelectorSettings ? this.pdfViewer.circleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.circleSettings);\n allowedInteractions = this.pdfViewer.circleSettings.allowedInteractions ? this.pdfViewer.circleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolygonRadius';\n shapeAnnotationType = 'Circle';\n subject = 'Radius calculation';\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 100;\n vertexPoints = null;\n }\n else if (annotationType == 'Volume') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.polygonSettings.annotationSelectorSettings ? this.pdfViewer.polygonSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.polygonSettings);\n allowedInteractions = this.pdfViewer.polygonSettings.allowedInteractions ? this.pdfViewer.polygonSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n measureAnnotationType = 'PolygonVolume';\n shapeAnnotationType = 'Polygon';\n subject = 'Volume calculation';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [\n { x: offset.x, y: offset.y },\n { x: offset.x, y: offset.y + 109 },\n { x: offset.x + 120, y: offset.y + 109 },\n { x: offset.x + 120, y: offset.y - 1 },\n { x: offset.x, y: offset.y }\n ];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n //Calculating area for all the measurements\n var values = { depth: 96,\n factor: 0.013888888888888888,\n ratio: 1,\n unit: 'in' };\n var notes = '';\n if (vertexPoints || annotationType == 'Radius' || annotationType == 'Volume') {\n if (annotationType == 'Distance' || annotationType == 'Perimeter' || annotationType == 'Radius') {\n var length_1 = 0;\n if (annotationType == 'Radius') {\n length_1 = (annotationObject.width / 2) * this.pixelToPointFactor;\n }\n else {\n for (var i_1 = 0; i_1 < vertexPoints.length - 1; i_1++) {\n length_1 += Math.sqrt(Math.pow((vertexPoints[i_1].x - vertexPoints[i_1 + 1].x), 2) + Math.pow((vertexPoints[i_1].y - vertexPoints[i_1 + 1].y), 2));\n }\n length_1 = length_1 * this.pixelToPointFactor;\n }\n var scaledValue = length_1 * values.ratio;\n notes = this.convertPointToUnits(values.factor, scaledValue, values.unit);\n }\n else if (annotationType == 'Area' || annotationType == 'Volume') {\n var area = 0;\n var j = vertexPoints.length - 1;\n for (var i = 0; i < vertexPoints.length; i++) {\n area += (vertexPoints[j].x * this.pixelToPointFactor * values.factor + vertexPoints[i].x * this.pixelToPointFactor * values.factor) * (vertexPoints[j].y * this.pixelToPointFactor * values.factor - vertexPoints[i].y * this.pixelToPointFactor * values.factor);\n j = i;\n }\n area = (Math.abs((area) / 2.0));\n if (annotationType == 'Volume') {\n area = area * ((values.depth * this.convertUnitToPoint(values.unit)) * values.factor) * values.ratio;\n notes = Math.round(area * 100) / 100 + this.pdfViewer.localeObj.getConstant('cu') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n }\n else\n notes = Math.round(area * 100) / 100 + this.pdfViewer.localeObj.getConstant('sq') + ' ' + this.pdfViewer.localeObj.getConstant(values.unit);\n }\n }\n //Converting points model into vertex property\n if (vertexPoints)\n vertexPoints = this.pdfViewer.annotation.getVertexPointsXY(vertexPoints);\n //Creating Annotation objects with it's proper properties\n var measureShapeAnnotation = [];\n var shape = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'shape_measure',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n BorderDashArray: annotationObject.borderDashArray ? annotationObject.borderDashArray : 0,\n BorderStyle: 'Solid',\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n Calibrate: {\n Area: [{ ConversionFactor: 1, Denominator: 100, FormatDenominator: false, FractionalType: 'D', Unit: 'sq in' }],\n Depth: annotationObject.depth ? annotationObject.depth : 0,\n Distance: [{ ConversionFactor: 1, Denominator: 100, FormatDenominator: false, FractionalType: 'D', Unit: 'in' }],\n Ratio: '1 in = 1 in',\n TargetUnitConversion: 0,\n Volume: null,\n X: [{ ConversionFactor: 0.013888889, Denominator: 100, FormatDenominator: false, FractionalType: 'D', Unit: 'in' }]\n },\n Caption: true,\n CaptionPosition: 'Top',\n CloudIntensity: 0,\n Comments: null,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n CreatedDate: currentDateString,\n EnableShapeLabel: false,\n ExistingCustomData: null,\n FillColor: annotationObject.fillColor ? annotationObject.fillColor : '#ffffff00',\n FontColor: null,\n FontSize: 0,\n Indent: measureAnnotationType,\n IsCloudShape: false,\n IsCommentLock: false,\n IsLocked: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n LabelBorderColor: null,\n LabelBounds: { X: 0, Y: 0, Width: 0, Height: 0 },\n LabelContent: null,\n LabelFillColor: null,\n LabelSettings: null,\n LeaderLength: 0,\n LeaderLineExtension: 0,\n LeaderLineOffset: 0,\n LineHeadEnd: annotationObject.lineHeadStartStyle ? annotationObject.lineHeadStartStyle : isArrow ? 'ClosedArrow' : 'None',\n LineHeadStart: annotationObject.lineHeadEndStyle ? annotationObject.lineHeadEndStyle : isArrow ? 'ClosedArrow' : 'None',\n ModifiedDate: '',\n Note: notes,\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n RectangleDifference: null,\n RotateAngle: 'RotateAngle0',\n ShapeAnnotationType: shapeAnnotationType,\n State: '',\n StateModel: '',\n StrokeColor: annotationObject.strokeColor ? annotationObject.strokeColor : '#ff0000',\n Subject: subject,\n Thickness: annotationObject.thickness ? annotationObject.thickness : 1,\n VertexPoints: vertexPoints\n };\n //Adding the annotation object to an array and return it\n measureShapeAnnotation[0] = shape;\n return { measureShapeAnnotation: measureShapeAnnotation };\n };\n return MeasureAnnotation;\n}());\n\n/**\n * @hidden\n */\nvar ShapeAnnotation = /** @__PURE__ @class */ (function () {\n function ShapeAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.shapeCount = 0;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param shapeAnnotations\n * @param pageNumber\n * @param isImportAcion\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.renderShapeAnnotations = function (shapeAnnotations, pageNumber, isImportAcion) {\n if (shapeAnnotations) {\n if (shapeAnnotations.length >= 1) {\n // eslint-disable-next-line\n var shapeAnnots = this.pdfViewer.annotation.getStoredAnnotations(pageNumber, shapeAnnotations, '_annotations_shape');\n if (!shapeAnnots || isImportAcion) {\n for (var i = 0; i < shapeAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = shapeAnnotations[i];\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n var annotationObject = null;\n this.shapeCount = this.shapeCount + 1;\n var isAnnotationRotated = void 0;\n if (annotation.ShapeAnnotationType) {\n if (isImportAcion) {\n if (this.pdfViewerBase.isJsonImported) {\n annotation.Bounds = this.pdfViewerBase.importJsonForRotatedDocuments(annotation.Rotate, pageNumber, annotation.Bounds, annotation.AnnotationRotation);\n isAnnotationRotated = this.pdfViewerBase.isPageRotated;\n }\n }\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n if (isImportAcion && this.pdfViewerBase.isJsonImported) {\n vertexPoints = this.pdfViewerBase.calculateVertexPoints(annotation.Rotate, pageNumber, annotation.VertexPoints, annotation.AnnotationRotation);\n }\n else {\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var x = annotation.VertexPoints[j].X ? annotation.VertexPoints[j].X : annotation.VertexPoints[j].x;\n var y = annotation.VertexPoints[j].Y ? annotation.VertexPoints[j].Y : annotation.VertexPoints[j].y;\n var point = { x: x, y: y };\n vertexPoints.push(point);\n }\n }\n }\n // eslint-disable-next-line\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n // eslint-disable-next-line max-len\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n // eslint-disable-next-line max-len\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isPrint = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = annotation.IsPrint;\n }\n else {\n isPrint = annotation.AnnotationSettings.isPrint;\n }\n var left = annotation.Bounds.X ? annotation.Bounds.X : annotation.Bounds.x;\n var top_1 = annotation.Bounds.Y ? annotation.Bounds.Y : annotation.Bounds.y;\n var width = annotation.Bounds.Width ? annotation.Bounds.Width : annotation.Bounds.width;\n var height = annotation.Bounds.Height ? annotation.Bounds.Height : annotation.Bounds.height; // eslint-disable-next-line max-len\n annotationObject = {\n id: 'shape' + this.shapeCount, shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, pageNumber: pageNumber,\n // eslint-disable-next-line max-len\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n // eslint-disable-next-line max-len\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, annotName: annotation.AnnotName,\n bounds: { left: left, top: top_1, width: width, height: height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: isPrint, isCommentLock: annotation.IsCommentLock, isAnnotationRotated: isAnnotationRotated\n };\n var annot = void 0;\n // eslint-disable-next-line\n var vPoints = annotationObject.vertexPoints;\n if (vertexPoints == null) {\n vPoints = [];\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annot = {\n // eslint-disable-next-line max-len\n id: 'shape' + this.shapeCount, shapeAnnotationType: this.getShapeType(annotationObject), author: annotationObject.author, allowedInteractions: annotationObject.allowedInteractions, modifiedDate: annotationObject.modifiedDate, annotName: annotationObject.annotName,\n subject: annotationObject.subject, notes: annotationObject.note, fillColor: annotationObject.fillColor, strokeColor: annotationObject.strokeColor, opacity: annotationObject.opacity,\n // eslint-disable-next-line max-len\n thickness: annotationObject.thickness, borderStyle: annotationObject.borderStyle, borderDashArray: annotationObject.borderDashArray ? annotationObject.borderDashArray.toString() : '0', rotateAngle: parseFloat(annotationObject.rotateAngle.split('Angle')[1]), comments: annotationObject.comments, review: annotationObject.review, isCloudShape: annotationObject.isCloudShape, cloudIntensity: annotationObject.cloudIntensity, taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadEnd),\n // eslint-disable-next-line max-len\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(annotationObject.lineHeadStart), vertexPoints: vPoints, bounds: { x: annotationObject.bounds.left, y: annotationObject.bounds.top, width: annotationObject.bounds.width, height: annotationObject.bounds.height },\n pageIndex: annotationObject.pageNumber,\n // eslint-disable-next-line max-len\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n fontColor: annotation.FontColor, labelBorderColor: annotation.LabelBorderColor, fontSize: annotation.FontSize,\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: annotation.AnnotationSelectorSettings,\n annotationSettings: annotationObject.annotationSettings, annotationAddMode: annotation.annotationAddMode,\n isPrint: isPrint, isCommentLock: annotationObject.isCommentLock\n };\n var addedAnnot = this.pdfViewer.add(annot);\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape');\n if (this.isAddAnnotationProgramatically) {\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, annotation.ShapeAnnotationType, annot.bounds, settings);\n }\n }\n }\n }\n }\n else if (shapeAnnotations.shapeAnnotationType) {\n var annotationObject = this.createAnnotationObject(shapeAnnotations);\n if (!isNullOrUndefined(shapeAnnotations.formFieldAnnotationType) && shapeAnnotations.formFieldAnnotationType !== \"\")\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n else\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape');\n this.pdfViewer.annotationModule.triggerAnnotationAdd(shapeAnnotations);\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else {\n selector = this.getSelector(annotation.ShapeAnnotationType, annotation.Subject);\n }\n return selector;\n };\n /**\n * @param type\n * @private\n */\n ShapeAnnotation.prototype.setAnnotationType = function (type) {\n this.updateShapeProperties();\n this.pdfViewerBase.disableTextSelectionMode();\n var author = 'Guest';\n switch (type) {\n case 'Line':\n this.currentAnnotationMode = 'Line';\n // eslint-disable-next-line max-len\n var modifiedDateLine = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.lineSettings.author ? this.pdfViewer.lineSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: this.setShapeType('Line'), fillColor: this.lineFillColor, notes: '', strokeColor: this.lineStrokeColor, opacity: this.lineOpacity,\n thickness: this.lineThickness, modifiedDate: modifiedDateLine, borderDashArray: this.lineDashArray.toString(),\n // eslint-disable-next-line max-len\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.lineStartHead.toString()), taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.lineEndHead.toString()),\n author: author, subject: 'Line', lineHeadStart: this.lineStartHead, lineHeadEnd: this.lineEndHead, isCommentLock: false\n };\n this.pdfViewer.tool = 'Line';\n break;\n case 'Arrow':\n this.currentAnnotationMode = 'Arrow';\n // eslint-disable-next-line max-len\n var modifiedDateArrow = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.arrowSettings.author ? this.pdfViewer.arrowSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: this.setShapeType('Arrow'), opacity: this.arrowOpacity,\n // eslint-disable-next-line max-len\n sourceDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.arrowStartHead.toString()),\n taregetDecoraterShapes: this.pdfViewer.annotation.getArrowType(this.arrowEndHead.toString()),\n // eslint-disable-next-line max-len\n fillColor: this.arrowFillColor, strokeColor: this.arrowStrokeColor, notes: '', thickness: this.arrowThickness,\n borderDashArray: this.arrowDashArray.toString(), author: author, subject: 'Arrow',\n // eslint-disable-next-line max-len\n modifiedDate: modifiedDateArrow, lineHeadStart: this.arrowStartHead, lineHeadEnd: this.arrowEndHead, isCommentLock: false\n };\n this.pdfViewer.tool = 'Line';\n break;\n case 'Rectangle':\n this.currentAnnotationMode = 'Rectangle';\n // eslint-disable-next-line max-len\n var modifiedDateRect = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.rectangleSettings.author ? this.pdfViewer.rectangleSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: this.setShapeType('Rectangle'), strokeColor: this.rectangleStrokeColor,\n fillColor: this.rectangleFillColor, opacity: this.rectangleOpacity, notes: '',\n thickness: this.rectangleThickness, borderDashArray: '0', modifiedDate: modifiedDateRect,\n author: author, subject: 'Rectangle', isCommentLock: false\n };\n this.pdfViewer.tool = 'DrawTool';\n break;\n case 'Circle':\n this.currentAnnotationMode = 'Circle';\n // eslint-disable-next-line max-len\n var modifiedDateCir = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.circleSettings.author ? this.pdfViewer.circleSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n shapeAnnotationType: this.setShapeType('Circle'), strokeColor: this.circleStrokeColor,\n fillColor: this.circleFillColor, opacity: this.circleOpacity, notes: '',\n thickness: this.circleThickness, borderDashArray: '0', modifiedDate: modifiedDateCir,\n author: author, subject: 'Circle', isCommentLock: false\n };\n this.pdfViewer.tool = 'DrawTool';\n break;\n case 'Polygon':\n this.currentAnnotationMode = 'Polygon';\n // eslint-disable-next-line max-len\n var modifiedDatePolygon = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.polygonSettings.author ? this.pdfViewer.polygonSettings.author : 'Guest';\n this.pdfViewer.drawingObject = {\n strokeColor: this.polygonStrokeColor, fillColor: this.polygonFillColor,\n opacity: this.polygonOpacity, thickness: this.polygonThickness, borderDashArray: '0',\n notes: '', author: author, subject: 'Polygon',\n modifiedDate: modifiedDatePolygon, borderStyle: '', isCommentLock: false\n };\n this.pdfViewer.tool = 'Polygon';\n break;\n }\n };\n ShapeAnnotation.prototype.updateShapeProperties = function () {\n this.lineFillColor = this.pdfViewer.lineSettings.fillColor ? this.pdfViewer.lineSettings.fillColor : '#ffffff00';\n this.lineStrokeColor = this.pdfViewer.lineSettings.strokeColor ? this.pdfViewer.lineSettings.strokeColor : '#ff0000';\n this.lineThickness = this.pdfViewer.lineSettings.thickness ? this.pdfViewer.lineSettings.thickness : 1;\n this.lineOpacity = this.pdfViewer.lineSettings.opacity ? this.pdfViewer.lineSettings.opacity : 1;\n this.lineDashArray = this.pdfViewer.lineSettings.borderDashArray ? this.pdfViewer.lineSettings.borderDashArray : 0;\n this.lineStartHead = this.pdfViewer.lineSettings.lineHeadStartStyle ? this.pdfViewer.lineSettings.lineHeadStartStyle : 'None';\n this.lineEndHead = this.pdfViewer.lineSettings.lineHeadEndStyle ? this.pdfViewer.lineSettings.lineHeadEndStyle : 'None';\n this.arrowFillColor = this.pdfViewer.arrowSettings.fillColor ? this.pdfViewer.arrowSettings.fillColor : '#ffffff00';\n this.arrowStrokeColor = this.pdfViewer.arrowSettings.strokeColor ? this.pdfViewer.arrowSettings.strokeColor : '#ff0000';\n this.arrowThickness = this.pdfViewer.arrowSettings.thickness ? this.pdfViewer.arrowSettings.thickness : 1;\n this.arrowOpacity = this.pdfViewer.arrowSettings.opacity ? this.pdfViewer.arrowSettings.opacity : 1;\n this.arrowDashArray = this.pdfViewer.arrowSettings.borderDashArray ? this.pdfViewer.arrowSettings.borderDashArray : 0;\n this.arrowStartHead = this.pdfViewer.arrowSettings.lineHeadStartStyle ? this.pdfViewer.arrowSettings.lineHeadStartStyle : 'Closed';\n this.arrowEndHead = this.pdfViewer.arrowSettings.lineHeadEndStyle ? this.pdfViewer.arrowSettings.lineHeadEndStyle : 'Closed';\n this.rectangleFillColor = this.pdfViewer.rectangleSettings.fillColor ? this.pdfViewer.rectangleSettings.fillColor : '#ffffff00';\n this.rectangleStrokeColor = this.pdfViewer.rectangleSettings.strokeColor ? this.pdfViewer.rectangleSettings.strokeColor : '#ff0000';\n this.rectangleThickness = this.pdfViewer.rectangleSettings.thickness ? this.pdfViewer.rectangleSettings.thickness : 1;\n this.rectangleOpacity = this.pdfViewer.rectangleSettings.opacity ? this.pdfViewer.rectangleSettings.opacity : 1;\n this.circleFillColor = this.pdfViewer.circleSettings.fillColor ? this.pdfViewer.circleSettings.fillColor : '#ffffff00';\n this.circleStrokeColor = this.pdfViewer.circleSettings.strokeColor ? this.pdfViewer.circleSettings.strokeColor : '#ff0000';\n this.circleThickness = this.pdfViewer.circleSettings.thickness ? this.pdfViewer.circleSettings.thickness : 1;\n this.circleOpacity = this.pdfViewer.circleSettings.opacity ? this.pdfViewer.circleSettings.opacity : 1;\n this.polygonFillColor = this.pdfViewer.polygonSettings.fillColor ? this.pdfViewer.polygonSettings.fillColor : '#ffffff00';\n this.polygonStrokeColor = this.pdfViewer.polygonSettings.strokeColor ? this.pdfViewer.polygonSettings.strokeColor : '#ff0000';\n this.polygonThickness = this.pdfViewer.polygonSettings.thickness ? this.pdfViewer.polygonSettings.thickness : 1;\n this.polygonOpacity = this.pdfViewer.polygonSettings.opacity ? this.pdfViewer.polygonSettings.opacity : 1;\n };\n ShapeAnnotation.prototype.setShapeType = function (shape) {\n var shapeType;\n switch (shape) {\n case 'Line':\n shapeType = 'Line';\n break;\n case 'Circle':\n shapeType = 'Ellipse';\n break;\n case 'Square':\n shapeType = 'Rectangle';\n break;\n case 'Polyline':\n shapeType = 'Line';\n break;\n case 'Arrow':\n shapeType = 'LineWidthArrowHead';\n break;\n }\n return shapeType;\n };\n ShapeAnnotation.prototype.getShapeType = function (shape) {\n var shapeType;\n switch (shape.shapeAnnotationType) {\n case 'Line':\n shapeType = 'Line';\n break;\n case 'Circle':\n shapeType = 'Ellipse';\n break;\n case 'Square':\n shapeType = 'Rectangle';\n break;\n case 'Polyline':\n shapeType = 'Line';\n break;\n case 'Polygon':\n shapeType = 'Polygon';\n break;\n }\n // eslint-disable-next-line max-len\n if ((shape.shapeAnnotationType === 'Line' || shape.shapeAnnotationType === 'Polyline') && (shape.lineHeadStart !== 'None' || shape.lineHeadEnd !== 'None')) {\n shapeType = 'LineWidthArrowHead';\n }\n return shapeType;\n };\n ShapeAnnotation.prototype.getShapeAnnotType = function (shape) {\n var shapeType;\n switch (shape) {\n case 'Line':\n case 'LineWidthArrowHead':\n shapeType = 'Line';\n break;\n case 'Rectangle':\n shapeType = 'Square';\n break;\n case 'Ellipse':\n shapeType = 'Circle';\n break;\n case 'Polygon':\n shapeType = 'Polygon';\n break;\n }\n return shapeType;\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase) {\n if (!isNullOrUndefined(annotationBase.formFieldAnnotationType) && annotationBase.formFieldAnnotationType !== \"\")\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n else\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var currentAnnotObject = null;\n if (annotationBase) {\n if (property === 'bounds') {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationModifiedDate(annotationBase, true);\n }\n }\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n if (pageAnnotations[i].shapeAnnotationType === 'Line') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else if (pageAnnotations[i].shapeAnnotationType === 'Polygon') {\n pageAnnotations[i].vertexPoints = annotationBase.vertexPoints;\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n else {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.bounds.x, top: annotationBase.bounds.y, width: annotationBase.bounds.width, height: annotationBase.bounds.height, right: annotationBase.bounds.right, bottom: annotationBase.bounds.bottom };\n }\n if (pageAnnotations[i].enableShapeLabel === true && annotationBase.wrapper) {\n var labelTop = 0;\n var labelLeft = 0;\n var labelWidth = 0;\n var labelHeight = 24.6;\n var labelMaxWidth = 151;\n if (annotationBase.wrapper.bounds.width) {\n // eslint-disable-next-line max-len\n labelWidth = (annotationBase.wrapper.bounds.width / 2);\n labelWidth = (labelWidth > 0 && labelWidth < labelMaxWidth) ? labelWidth : labelMaxWidth;\n }\n if (annotationBase.wrapper.bounds.left) {\n // eslint-disable-next-line max-len\n labelLeft = (annotationBase.wrapper.bounds.left + (annotationBase.wrapper.bounds.width / 2) - (labelWidth / 2));\n }\n if (annotationBase.wrapper.bounds.top) {\n // eslint-disable-next-line max-len\n labelTop = (annotationBase.wrapper.bounds.top + (annotationBase.wrapper.bounds.height / 2) - 12.3);\n }\n // eslint-disable-next-line max-len\n pageAnnotations[i].labelBounds = { left: labelLeft, top: labelTop, width: labelWidth, height: labelHeight, right: 0, bottom: 0 };\n }\n }\n else if (property === 'fill') {\n pageAnnotations[i].fillColor = annotationBase.wrapper.children[0].style.fill;\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'dashArray') {\n pageAnnotations[i].borderDashArray = annotationBase.wrapper.children[0].style.strokeDashArray;\n pageAnnotations[i].borderStyle = annotationBase.borderStyle;\n }\n else if (property === 'startArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadStart = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.sourceDecoraterShapes);\n }\n else if (property === 'endArrow') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].lineHeadEnd = this.pdfViewer.annotation.getArrowTypeForCollection(annotationBase.taregetDecoraterShapes);\n }\n else if (property === 'notes') {\n pageAnnotations[i].note = annotationBase.notes;\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n else if (property === 'labelContent') {\n pageAnnotations[i].note = annotationBase.labelContent;\n pageAnnotations[i].labelContent = annotationBase.labelContent;\n break;\n }\n else if (property === 'fontColor') {\n pageAnnotations[i].fontColor = annotationBase.fontColor;\n }\n else if (property === 'fontSize') {\n pageAnnotations[i].fontSize = annotationBase.fontSize;\n }\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n ShapeAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n };\n /**\n * @private\n */\n ShapeAnnotation.prototype.saveShapeAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n if (!this.pdfViewerBase.checkFormFieldCollection(pageAnnotationObject.annotations[z].id)) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n if (this.pdfViewerBase.isJsonExported) {\n if (pageAnnotationObject.annotations[z].isAnnotationRotated) {\n pageAnnotationObject.annotations[z].bounds = this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex);\n pageAnnotationObject.annotations[z].vertexPoints = this.pdfViewer.annotation.getVertexPoints(pageAnnotationObject.annotations[z].vertexPoints, pageAnnotationObject.pageIndex);\n }\n else {\n var pageDetails = this.pdfViewerBase.pageSize[pageAnnotationObject.pageIndex];\n if (pageDetails) {\n pageAnnotationObject.annotations[z].annotationRotation = pageDetails.rotation;\n \n }\n }\n }\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n var fillColorString = pageAnnotationObject.annotations[z].fillColor;\n pageAnnotationObject.annotations[z].fillColor = JSON.stringify(this.getRgbCode(fillColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].vertexPoints = JSON.stringify(this.pdfViewer.annotation.getVertexPoints(pageAnnotationObject.annotations[z].vertexPoints, pageAnnotationObject.pageIndex));\n if (pageAnnotationObject.annotations[z].rectangleDifference !== null) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].rectangleDifference = JSON.stringify(pageAnnotationObject.annotations[z].rectangleDifference);\n }\n if (pageAnnotationObject.annotations[z].enableShapeLabel === true) {\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].labelBounds = JSON.stringify(this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(JSON.parse(pageAnnotationObject.annotations[z].bounds)));\n var labelFillColorString = pageAnnotationObject.annotations[z].labelFillColor;\n pageAnnotationObject.annotations[z].labelFillColor = JSON.stringify(this.getRgbCode(labelFillColorString));\n var labelBorderColorString = pageAnnotationObject.annotations[z].labelBorderColor;\n pageAnnotationObject.annotations[z].labelBorderColor = JSON.stringify(this.getRgbCode(labelBorderColorString));\n pageAnnotationObject.annotations[z].labelSettings.fillColor = labelFillColorString;\n var fontColorString = pageAnnotationObject.annotations[z].labelSettings.fontColor;\n pageAnnotationObject.annotations[z].fontColor = JSON.stringify(this.getRgbCode(fontColorString));\n }\n }\n else {\n pageAnnotationObject.annotations[z] = \"\";\n }\n }\n pageAnnotationObject.annotations = pageAnnotationObject.annotations.filter(function (item) { return item; });\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n ShapeAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_shape');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_shape', annotationStringified);\n }\n }\n };\n ShapeAnnotation.prototype.createAnnotationObject = function (annotationModel) {\n var bound;\n var labelBound;\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (!annotationModel.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('shape', (annotationModel.pageIndex + 1), annotationModel.shapeAnnotationType);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n }\n annotationModel.annotName = annotationName;\n if (annotationModel.wrapper.bounds) {\n bound = {\n // eslint-disable-next-line max-len\n left: annotationModel.wrapper.bounds.x, top: annotationModel.wrapper.bounds.y, height: annotationModel.wrapper.bounds.height, width: annotationModel.wrapper.bounds.width,\n right: annotationModel.wrapper.bounds.right, bottom: annotationModel.wrapper.bounds.bottom\n };\n labelBound = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBounds(annotationModel.wrapper.bounds);\n }\n else {\n bound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n labelBound = { left: 0, top: 0, height: 0, width: 0, right: 0, bottom: 0 };\n }\n if (annotationModel.subject === 'Line' && annotationModel.shapeAnnotationType === 'Polygon') {\n annotationModel.author = this.pdfViewer.annotationModule.updateAnnotationAuthor('shape', 'Polygon');\n }\n else {\n annotationModel.author = this.pdfViewer.annotationModule.updateAnnotationAuthor('shape', annotationModel.subject);\n }\n this.pdfViewer.annotation.stickyNotesAnnotationModule.addTextToComments(annotationName, annotationModel.notes);\n // eslint-disable-next-line radix\n var borderDashArray = parseInt(annotationModel.borderDashArray);\n borderDashArray = isNaN(borderDashArray) ? 0 : borderDashArray;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.findAnnotationSettings(annotationModel, true);\n annotationModel.isPrint = annotationSettings.isPrint;\n var setting = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotationModel.strokeColor, fillColor: annotationModel.fillColor, fontColor: annotationModel.fontColor,\n fontSize: annotationModel.fontSize, labelContent: annotationModel.labelContent, labelHeight: setting.labelHeight, labelWidth: setting.labelMaxWidth, opacity: annotationModel.opacity\n };\n return {\n // eslint-disable-next-line max-len\n id: annotationModel.id, shapeAnnotationType: this.getShapeAnnotType(annotationModel.shapeAnnotationType), author: annotationModel.author, allowedInteractions: this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotationModel), subject: annotationModel.subject, note: annotationModel.notes,\n strokeColor: annotationModel.strokeColor, annotName: annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(), author: annotationModel.author },\n fillColor: annotationModel.fillColor, opacity: annotationModel.opacity, thickness: annotationModel.thickness, pageNumber: annotationModel.pageIndex,\n // eslint-disable-next-line max-len\n borderStyle: annotationModel.borderStyle, borderDashArray: borderDashArray, bounds: bound, modifiedDate: this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime(),\n rotateAngle: 'RotateAngle' + annotationModel.rotateAngle, isCloudShape: annotationModel.isCloudShape, cloudIntensity: annotationModel.cloudIntensity,\n // eslint-disable-next-line max-len\n vertexPoints: annotationModel.vertexPoints, lineHeadStart: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.sourceDecoraterShapes),\n lineHeadEnd: this.pdfViewer.annotation.getArrowTypeForCollection(annotationModel.taregetDecoraterShapes), rectangleDifference: [], isLocked: annotationSettings.isLock,\n // eslint-disable-next-line max-len\n labelContent: annotationModel.labelContent, enableShapeLabel: annotationModel.enableShapeLabel, labelFillColor: annotationModel.labelFillColor,\n fontColor: annotationModel.fontColor, labelBorderColor: annotationModel.labelBorderColor, fontSize: annotationModel.fontSize,\n // eslint-disable-next-line max-len\n labelBounds: labelBound, annotationSelectorSettings: this.getSelector(annotationModel.shapeAnnotationType, annotationModel.subject), labelSettings: labelSettings, annotationSettings: annotationSettings,\n customData: this.pdfViewer.annotation.getShapeData(annotationModel.shapeAnnotationType, annotationModel.subject), isPrint: annotationModel.isPrint, isCommentLock: annotationModel.isCommentLock, isAnnotationRotated: false\n };\n };\n ShapeAnnotation.prototype.getSelector = function (type, subject) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (type === 'Line' && subject !== 'Arrow' && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.lineSettings.annotationSelectorSettings;\n }\n else if ((type === 'LineWidthArrowHead' || subject === 'Arrow') && this.pdfViewer.lineSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.arrowSettings.annotationSelectorSettings;\n }\n else if ((type === 'Rectangle' || type === 'Square') && this.pdfViewer.rectangleSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.rectangleSettings.annotationSelectorSettings;\n }\n else if ((type === 'Ellipse' || type === 'Circle') && this.pdfViewer.circleSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.circleSettings.annotationSelectorSettings;\n }\n else if (type === 'Polygon' && this.pdfViewer.polygonSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.polygonSettings.annotationSelectorSettings;\n }\n return selector;\n };\n // eslint-disable-next-line\n ShapeAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_shape'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line\n ShapeAnnotation.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseFloat(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.saveImportedShapeAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n var vertexPoints = null;\n annotation.Author = this.pdfViewer.annotationModule.updateAnnotationAuthor('shape', annotation.Subject);\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n // eslint-disable-next-line max-len\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : this.pdfViewer.shapeLabelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n id: 'shape', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, pageNumber: pageNumber,\n // eslint-disable-next-line max-len\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n // eslint-disable-next-line max-len\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, annotName: annotation.AnnotName,\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, annotationSelectorSettings: this.getSettings(annotation), labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock, isAnnotationRotated: false\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_shape');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n ShapeAnnotation.prototype.updateShapeAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n var vertexPoints = null;\n if (annotation.VertexPoints) {\n vertexPoints = [];\n for (var j = 0; j < annotation.VertexPoints.length; j++) {\n var point = { x: annotation.VertexPoints[j].X, y: annotation.VertexPoints[j].Y };\n vertexPoints.push(point);\n }\n }\n if (annotation.Bounds && annotation.EnableShapeLabel === true) {\n // eslint-disable-next-line max-len\n annotation.LabelBounds = this.pdfViewer.annotationModule.inputElementModule.calculateLabelBoundsFromLoadedDocument(annotation.Bounds);\n // eslint-disable-next-line max-len\n annotation.LabelBorderColor = annotation.LabelBorderColor ? annotation.LabelBorderColor : annotation.StrokeColor;\n annotation.FontColor = annotation.FontColor ? annotation.FontColor : annotation.StrokeColor;\n annotation.LabelFillColor = annotation.LabelFillColor ? annotation.LabelFillColor : annotation.FillColor;\n annotation.FontSize = annotation.FontSize ? annotation.FontSize : 16;\n var settings = this.pdfViewer.shapeLabelSettings;\n var labelSettings = { borderColor: annotation.StrokeColor, fillColor: annotation.FillColor, fontColor: annotation.FontColor,\n fontSize: annotation.FontSize, labelContent: annotation.LabelContent, labelHeight: settings.labelHeight, labelWidth: settings.labelWidth, opacity: annotation.Opacity\n };\n annotation.LabelSettings = annotation.LabelSettings ? annotation.LabelSettings : labelSettings;\n }\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n // eslint-disable-next-line max-len\n annotationObject = {\n id: 'shape', shapeAnnotationType: annotation.ShapeAnnotationType, author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n // eslint-disable-next-line max-len\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, thickness: annotation.Thickness, rectangleDifference: annotation.RectangleDifference,\n borderStyle: annotation.BorderStyle, borderDashArray: annotation.BorderDashArray, rotateAngle: annotation.RotateAngle, isCloudShape: annotation.IsCloudShape,\n // eslint-disable-next-line max-len\n cloudIntensity: annotation.CloudIntensity, vertexPoints: vertexPoints, lineHeadStart: annotation.LineHeadStart, lineHeadEnd: annotation.LineHeadEnd, isLocked: annotation.IsLocked, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, annotationId: annotation.AnnotName,\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n labelContent: annotation.LabelContent, enableShapeLabel: annotation.EnableShapeLabel, labelFillColor: annotation.LabelFillColor,\n labelBorderColor: annotation.LabelBorderColor, fontColor: annotation.FontColor, fontSize: annotation.FontSize,\n // eslint-disable-next-line max-len\n labelBounds: annotation.LabelBounds, pageNumber: pageNumber, labelSettings: annotation.LabelSettings, annotationSettings: annotation.AnnotationSettings,\n customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.IsPrint\n };\n return annotationObject;\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationType - It describes the annotation type\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @returns Object\n * @private\n */\n ShapeAnnotation.prototype.updateAddAnnotationDetails = function (annotationType, annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Initialize the annotation settings\n var annotationSelectorSettings = null;\n var allowedInteractions = null;\n var annotationSettings = null;\n var shapeAnnotationType = '';\n var isArrow = false;\n var vertexPoints = null;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (annotationType == 'Line') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.lineSettings.annotationSelectorSettings ? this.pdfViewer.lineSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.lineSettings);\n allowedInteractions = this.pdfViewer.lineSettings.allowedInteractions ? this.pdfViewer.lineSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Line';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 100, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Arrow') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.arrowSettings.annotationSelectorSettings ? this.pdfViewer.arrowSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.arrowSettings);\n allowedInteractions = this.pdfViewer.arrowSettings.allowedInteractions ? this.pdfViewer.arrowSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Line';\n isArrow = true;\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 100, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n else if (annotationType == 'Rectangle') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.rectangleSettings.annotationSelectorSettings ? this.pdfViewer.rectangleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.rectangleSettings);\n allowedInteractions = this.pdfViewer.rectangleSettings.allowedInteractions ? this.pdfViewer.rectangleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Square';\n annotationObject.width = annotationObject.width ? annotationObject.width : 150;\n annotationObject.height = annotationObject.height ? annotationObject.height : 75;\n }\n else if (annotationType == 'Circle') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.circleSettings.annotationSelectorSettings ? this.pdfViewer.circleSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.circleSettings);\n allowedInteractions = this.pdfViewer.circleSettings.allowedInteractions ? this.pdfViewer.circleSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Circle';\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 90;\n }\n else if (annotationType == 'Polygon') {\n //Creating annotation settings\n annotationSelectorSettings = this.pdfViewer.polygonSettings.annotationSelectorSettings ? this.pdfViewer.polygonSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.polygonSettings);\n allowedInteractions = this.pdfViewer.polygonSettings.allowedInteractions ? this.pdfViewer.polygonSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n shapeAnnotationType = 'Polygon';\n if (annotationObject.vertexPoints)\n vertexPoints = annotationObject.vertexPoints;\n else\n vertexPoints = [{ x: offset.x, y: offset.y }, { x: offset.x + 42, y: offset.y - 29 }, { x: offset.x + 89, y: offset.y - 1 }, { x: offset.x + 78, y: offset.y + 42 }, { x: offset.x + 11, y: offset.y + 42 }, { x: offset.x, y: offset.y }];\n annotationObject.width = annotationObject.width ? annotationObject.width : 1;\n annotationObject.height = annotationObject.height ? annotationObject.height : 1;\n }\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n //Converting points model into vertex property\n if (vertexPoints)\n vertexPoints = this.pdfViewer.annotation.getVertexPointsXY(vertexPoints);\n //Creating Annotation objects with it's proper properties\n var shapeAnnotation = [];\n var shape = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'shape',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n BorderDashArray: annotationObject.borderDashArray ? annotationObject.borderDashArray : 0,\n BorderStyle: 'Solid',\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n CloudIntensity: 0,\n Comments: null,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n CreatedDate: currentDateString,\n EnableShapeLabel: false,\n ExistingCustomData: null,\n FillColor: annotationObject.fillColor ? annotationObject.fillColor : '#ffffff00',\n FontColor: null,\n FontSize: 0,\n IsCloudShape: false,\n IsCommentLock: false,\n IsLocked: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n LabelBorderColor: null,\n LabelBounds: { X: 0, Y: 0, Width: 0, Height: 0 },\n LabelContent: null,\n LabelFillColor: null,\n LabelSettings: null,\n LineHeadEnd: annotationObject.lineHeadStartStyle ? annotationObject.lineHeadStartStyle : isArrow ? 'ClosedArrow' : 'None',\n LineHeadStart: annotationObject.lineHeadEndStyle ? annotationObject.lineHeadEndStyle : isArrow ? 'ClosedArrow' : 'None',\n ModifiedDate: '',\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n RectangleDifference: null,\n RotateAngle: 'RotateAngle0',\n ShapeAnnotationType: shapeAnnotationType,\n State: '',\n StateModel: '',\n StrokeColor: annotationObject.strokeColor ? annotationObject.strokeColor : '#ff0000',\n Subject: annotationType.toString(),\n Thickness: annotationObject.thickness ? annotationObject.thickness : 1,\n VertexPoints: vertexPoints\n };\n //Adding the annotation object to an array and return it\n shapeAnnotation[0] = shape;\n return { shapeAnnotation: shapeAnnotation };\n };\n return ShapeAnnotation;\n}());\n\n/**\n * The `StampAnnotation` module is used to handle annotation actions of PDF viewer.\n *\n * @hidden\n */\nvar StampAnnotation = /** @__PURE__ @class */ (function () {\n function StampAnnotation(pdfviewer, pdfViewerBase) {\n /**\n * @private\n */\n this.isStampAddMode = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.stampPageNumber = [];\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.customStampName = null;\n this.dynamicText = '';\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param stampAnnotations\n * @param pageNumber\n * @param canvass\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.renderStampAnnotations = function (stampAnnotations, pageNumber, canvass, isImport) {\n var isStampAdded = false;\n for (var p = 0; p < this.stampPageNumber.length; p++) {\n if (this.stampPageNumber[p] === pageNumber) {\n isStampAdded = true;\n break;\n }\n }\n if (isImport) {\n isStampAdded = false;\n }\n if (stampAnnotations && !isStampAdded) {\n this.stampPageNumber.push(pageNumber);\n var _loop_1 = function (s) {\n // eslint-disable-next-line\n var annotation = stampAnnotations[s];\n annotation.annotationAddMode = this_1.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n // eslint-disable-next-line\n var Apperance = annotation['Apperarance'];\n // eslint-disable-next-line\n var position = annotation['Rect'];\n // eslint-disable-next-line\n var opacity = annotation['Opacity'];\n // eslint-disable-next-line\n var annotationSelectorSettings = annotation[\"AnnotationSelectorSettings\"];\n // eslint-disable-next-line\n var pageIndex = parseFloat(stampAnnotations[s]['pageNumber']);\n /* eslint-disable */\n if (isNaN(pageIndex)) {\n pageIndex = stampAnnotations[s]['PageNumber'];\n }\n // eslint-disable-next-line\n var stampName = annotation['IsDynamic'];\n var pageDiv = document.getElementById(this_1.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n // eslint-disable-next-line\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this_1.pdfViewer.annotationModule.updateSettings(this_1.pdfViewer.stampSettings);\n // eslint-disable-next-line\n var isImageStamp = this_1.stampImageData(annotation);\n if (stampName && annotation['Subject'] && annotation['Subject'] !== 'Draft' && !isImageStamp) {\n // eslint-disable-next-line\n this_1.retrieveDynamicStampAnnotation(annotation['Subject']);\n this_1.isExistingStamp = true;\n var currentLocation = this_1.calculateImagePosition(position, true);\n // eslint-disable-next-line\n var rotation = annotation['RotateAngle'];\n for (var d = 0; d < Apperance.length; d++) {\n // eslint-disable-next-line\n var stampShapes = Apperance[d];\n // eslint-disable-next-line\n var stampType = stampShapes['type'];\n // eslint-disable-next-line\n if (stampType === 'string' && stampShapes['text'] !== undefined) {\n // eslint-disable-next-line\n var text = void 0;\n if (!isImport) {\n // eslint-disable-next-line\n text = stampShapes['text'].split('(')[1].split(')')[0];\n }\n else {\n // eslint-disable-next-line\n text = stampShapes['text'];\n }\n if (text.split('(').length === 2) {\n if (text.split('(')[1].split(')')[0].toLowerCase() !== annotation['Subject'].toLowerCase()) {\n this_1.dynamicText += text.split('(')[1].split(')')[0];\n }\n }\n else if (text.toLowerCase() !== annotation['Subject'].toLowerCase()) {\n this_1.dynamicText += text;\n }\n }\n }\n // eslint-disable-next-line max-len\n this_1.renderStamp(currentLocation.left, currentLocation.top, currentLocation.width, currentLocation.height, pageIndex, opacity, rotation, canvass, annotation, true);\n }\n // eslint-disable-next-line\n else if (annotation['Subject'] && !isImageStamp) {\n // eslint-disable-next-line\n this_1.retrievestampAnnotation(annotation['Subject']);\n this_1.isExistingStamp = true;\n var currentLocation = this_1.calculateImagePosition(position, true);\n // eslint-disable-next-line\n var rotation = annotation['RotateAngle'];\n // eslint-disable-next-line max-len\n this_1.renderStamp(currentLocation.left, currentLocation.top, currentLocation.width, currentLocation.height, pageIndex, opacity, rotation, canvass, annotation);\n this_1.isExistingStamp = false;\n }\n else {\n if (Apperance) {\n var _loop_2 = function (j) {\n // eslint-disable-next-line\n var stampShapes = Apperance[j];\n // eslint-disable-next-line\n var imageData = stampShapes['imagedata'];\n // eslint-disable-next-line\n var matrix = stampShapes['matrix'];\n // eslint-disable-next-line\n var currentDate = stampShapes['CreationDate'];\n // eslint-disable-next-line\n var modifiedDate = stampShapes['ModifiedDate'];\n // eslint-disable-next-line\n var rotationAngle = stampShapes['RotateAngle'];\n if (imageData) {\n var image_1 = new Image();\n // eslint-disable-next-line\n var proxy_1 = this_1;\n image_1.onload = function () {\n // This code is no more required.Since this issue have neen fixed in server side itself. \n // refer https://syncfusion.atlassian.net/browse/EJ2-54035\n // if (position) {\n // let y: number = parseFloat(position.y ? position.y : position.Y);\n // if (y < 0) {\n // position.Y = (proxy.pdfViewerBase.pageSize[pageIndex].height + y) * (72/96);\n // }\n // }\n var currentLocation = proxy_1.calculateImagePosition(position, true);\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : proxy_1.pdfViewer.customStampSettings.annotationSettings;\n // eslint-disable-next-line max-len\n proxy_1.renderCustomImage(currentLocation, pageIndex, image_1, currentDate, modifiedDate, rotationAngle, opacity, canvass, true, annotation);\n };\n image_1.src = imageData;\n }\n };\n for (var j = 0; j < Apperance.length; j++) {\n _loop_2(j);\n }\n }\n }\n };\n var this_1 = this;\n for (var s = 0; s < stampAnnotations.length; s++) {\n _loop_1(s);\n }\n }\n };\n /**\n * @private\n */\n StampAnnotation.prototype.moveStampElement = function (X, Y, pageIndex) {\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n X = X / zoomFactor;\n Y = Y / zoomFactor;\n // eslint-disable-next-line max-len\n var author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n if (this.pdfViewerBase.isDynamicStamp) {\n if (this.pdfViewer.dateTimeFormat) {\n var dateTime = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n this.dynamicText = 'By ' + author + ' at ' + dateTime + ' ';\n }\n else {\n // eslint-disable-next-line\n var today = (new Date()).toString().split(' ').splice(1, 3).join(' ');\n // eslint-disable-next-line\n var time = (new Date()).toLocaleTimeString();\n this.dynamicText = 'By ' + author + ' at ' + time + ' , ' + today + ' ';\n }\n }\n var annot;\n // eslint-disable-next-line\n var annotation = this.currentStampAnnotation;\n if (annotation && annotation.shapeAnnotationType === 'Image') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data, modifiedDate: annotation.modifiedDate,\n shapeAnnotationType: 'Image', opacity: annotation.opacity, rotateAngle: annotation.RotationAngle, annotName: annotation.annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: annotation.author }\n };\n }\n else if (annotation) {\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, bounds: { x: X, y: Y, width: annotation.width, height: annotation.height }, pageIndex: pageIndex, data: annotation.pathdata,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Stamp', strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: 0.5, stampFillColor: annotation.stampFillColor, stampStrokeColor: annotation.stampStrokeColor, rotateAngle: annotation.RotateAngle, isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText, subject: annotation.iconName,\n annotationSelectorSettings: this.pdfViewer.annotationSelectorSettings\n };\n }\n if (this.pdfViewerBase.currentSignatureAnnot) {\n annotation = this.pdfViewerBase.currentSignatureAnnot;\n if (annotation.shapeAnnotationType === 'SignatureText') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', thickness: annotation.thickness, strokeColor: annotation.strokeColor, opacity: annotation.opacity, signatureName: annotation.signatureName, fontFamily: annotation.fontFamily, fontSize: Math.floor((annotation.bounds.height / 2))\n };\n }\n else if (annotation.shapeAnnotationType === 'SignatureImage') {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', thickness: annotation.thickness, strokeColor: annotation.strokeColor, opacity: annotation.opacity, signatureName: annotation.signatureName,\n };\n }\n else {\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: X, y: Y, width: annotation.bounds.width, height: annotation.bounds.height }, pageIndex: pageIndex, data: annotation.data,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'HandWrittenSignature', thickness: annotation.thickness, strokeColor: annotation.strokeColor, opacity: annotation.opacity, signatureName: annotation.signatureName,\n };\n }\n }\n return annot;\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.calculateImagePosition = function (position, flags) {\n var positions = { width: 0, height: 0, left: 0, top: 0 };\n var x = parseFloat(position.x ? position.x : position.X);\n var y = parseFloat(position.y ? position.y : position.Y);\n var newWidth = parseFloat(position.width ? position.width : position.Width);\n var newHeight = parseFloat(position.height ? position.height : position.Height);\n if (flags) {\n var width = this.ConvertPointToPixel(newWidth);\n var height = this.ConvertPointToPixel(newHeight);\n var left = this.ConvertPointToPixel(x);\n var top_1 = this.ConvertPointToPixel(y);\n positions = { width: width, height: height, left: left, top: top_1 };\n }\n else {\n positions = { width: newWidth, height: newHeight, left: x, top: y };\n }\n return positions;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.createCustomStampAnnotation = function (imageSource, annotName) {\n var _this = this;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var image = new Image();\n // eslint-disable-next-line\n var proxy = this;\n image.onload = function () {\n var zoomFactor = _this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line max-len\n var stampSettings = _this.pdfViewer.customStampSettings;\n var customStampWidth = stampSettings.width > 0 ? stampSettings.width : 0;\n var customStampHeight = stampSettings.height > 0 ? stampSettings.height : 0;\n var standardImageRatio = 100;\n // eslint-disable-next-line max-len\n if (!(customStampWidth > 0 || customStampHeight > 0)) {\n if (image.naturalHeight >= image.naturalWidth) {\n customStampHeight = ((image.naturalHeight / image.naturalHeight) * standardImageRatio);\n customStampWidth = ((image.naturalWidth / image.naturalHeight) * standardImageRatio);\n }\n else {\n customStampHeight = ((image.naturalHeight / image.naturalWidth) * standardImageRatio);\n customStampWidth = ((image.naturalWidth / image.naturalWidth) * standardImageRatio);\n }\n }\n var customStampleft = 0;\n var customStamptop = 0;\n // eslint-disable-next-line max-len\n customStampleft = _this.pdfViewer.customStampSettings.left;\n // eslint-disable-next-line max-len\n customStamptop = _this.pdfViewer.customStampSettings.top;\n // eslint-disable-next-line max-len\n var positions = { width: customStampWidth, height: customStampHeight, left: customStampleft, top: customStamptop };\n // eslint-disable-next-line\n var currentDate = new Date().toLocaleDateString();\n // eslint-disable-next-line\n var modifiedDate = _this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var rotationAngle = 0;\n proxy.renderCustomImage(positions, pageIndex, image, currentDate, modifiedDate, rotationAngle, 1, null, null, null, annotName);\n };\n image.src = imageSource;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.renderStamp = function (X, Y, width, height, pageIndex, opacity, rotation, canvass, existingAnnotation, isDynamic) {\n if (Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n // eslint-disable-next-line max-len\n var author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n if (this.pdfViewerBase.isDynamicStamp) {\n // eslint-disable-next-line\n var today = (new Date()).toString().split(' ').splice(1, 3).join(' ');\n // eslint-disable-next-line\n var time = (new Date()).toLocaleTimeString();\n this.dynamicText = 'By ' + author + ' at ' + time + ' , ' + today + ' ';\n }\n if (isDynamic) {\n this.dynamicText += ' ';\n this.pdfViewerBase.isDynamicStamp = true;\n }\n var annot;\n var annotationObject = null;\n // eslint:disable-next-line\n var annotationAddMode = existingAnnotation ? existingAnnotation.annotationAddMode : 'UI Drawn Annotation';\n // eslint-disable-next-line\n var annotation = this.currentStampAnnotation;\n if (annotation) {\n if (width !== null && height !== null) {\n annotation.width = width;\n annotation.height = height;\n annotation.Opacity = opacity;\n annotation.RotateAngle = rotation;\n // eslint-disable-next-line\n var annotationName = existingAnnotation['AnnotName'];\n annotation.AnnotName = annotationName;\n // eslint-disable-next-line\n var state = existingAnnotation['State'];\n annotation.State = state;\n // eslint-disable-next-line\n var annotationSettings = existingAnnotation[\"AnnotationSettings\"];\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotationSettings ? annotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n // eslint-disable-next-line\n var annotationSelectorSettings = existingAnnotation['AnnotationSelectorSettings'];\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotationSelectorSettings ? annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line\n var modifiedDate = existingAnnotation['ModifiedDate'];\n annotation.ModifiedDate = modifiedDate;\n // eslint-disable-next-line\n var stateModel = existingAnnotation['StateNodel'];\n annotation.StateModel = stateModel;\n // eslint-disable-next-line\n var lock = existingAnnotation['IsCommentLock'];\n annotation.IsCommentLock = lock;\n // eslint-disable-next-line\n var text = existingAnnotation['Note'];\n annotation.Note = text;\n // eslint-disable-next-line\n var author_1 = existingAnnotation['Author'];\n annotation.Author = author_1;\n // eslint-disable-next-line\n var subject = existingAnnotation['Subject'];\n annotation.Subject = subject;\n // eslint-disable-next-line\n var customData = this.pdfViewer.annotation.getCustomData(existingAnnotation);\n // eslint-disable-next-line\n annotation.allowedInteractions = existingAnnotation['AllowedInteractions'] ? existingAnnotation['AllowedInteractions'] : existingAnnotation['allowedInteractions'] ? existingAnnotation['allowedInteractions'] : ['None'];\n annotation.CustomData = customData;\n // eslint-disable-next-line\n var isPrint = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = existingAnnotation['IsPrint'];\n }\n else {\n isPrint = existingAnnotation.AnnotationSettings.isPrint;\n }\n annotation.isPrint = isPrint;\n if (annotation.Author === null) {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n }\n // eslint-disable-next-line\n var annotationComments = existingAnnotation['Comments'];\n annotation.Comments = this.pdfViewer.annotationModule.getAnnotationComments(annotationComments, existingAnnotation, author_1);\n }\n else {\n var annotationName = this.pdfViewer.annotation.createGUID();\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('stamp', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annotation.AnnotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n annotation.AnnotName = annotationName;\n annotation.Comments = [];\n annotation.State = '';\n annotation.StateModel = '';\n annotation.Note = '';\n annotation.Opacity = 1;\n annotation.RotateAngle = 0;\n annotation.ModifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n }\n // eslint-disable-next-line\n var collectionData = processPathData(annotation.pathdata);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n // eslint:disable-next-line\n var annotationAddMode_1 = existingAnnotation ? existingAnnotation.annotationAddMode : 'UI Drawn Annotation';\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, bounds: { x: X, y: Y, width: annotation.width, height: annotation.height }, pageIndex: pageIndex, data: annotation.pathdata, modifiedDate: annotation.ModifiedDate,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Stamp', strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.Opacity, stampFillColor: annotation.stampFillColor, stampStrokeColor: annotation.stampStrokeColor, rotateAngle: annotation.RotateAngle, isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText, annotName: annotation.AnnotName, notes: annotation.Note,\n comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, subject: annotation.iconName,\n // eslint-disable-next-line\n annotationSelectorSettings: annotation.AnnotationSelectorSettings, annotationSettings: annotation.AnnotationSettings, allowedInteractions: annotation.allowedInteractions,\n annotationAddMode: annotationAddMode_1, isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock\n };\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'path', author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.Opacity, stampFillcolor: annotation.stampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: annotation.creationDate, pageNumber: pageIndex, icon: annotation.iconName, stampAnnotationPath: csData, randomId: 'stamp' + this.pdfViewerBase.customStampCount, isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText,\n bounds: { left: X, top: Y, width: annotation.width, height: annotation.height, }, annotName: annotation.AnnotName, comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), allowedInteractions: annotation.allowedInteractions, isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock,\n isMaskedImage: annotation.IsMaskedImage, customStampName: ''\n };\n this.storeStampInSession(pageIndex, annotationObject);\n if (this.isAddAnnotationProgramatically) {\n this.triggerAnnotationAdd(annot, annotation);\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n if (canvass != undefined && canvass != null) {\n canvass = canvass;\n }\n else {\n canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n }\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, pageIndex);\n if (this.pdfViewerBase.stampAdded) {\n this.triggerAnnotationAdd(annot, annotation);\n this.pdfViewerBase.isNewStamp = true;\n this.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n }\n this.pdfViewerBase.stampAdded = false;\n if (!this.isExistingStamp) {\n annotation.creationDate = new Date().toLocaleDateString();\n // eslint-disable-next-line max-len\n annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n }\n this.resetAnnotation();\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else if (this.pdfViewer.stampSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.stampSettings.annotationSelectorSettings;\n }\n return selector;\n };\n /**\n * @private\n */\n StampAnnotation.prototype.resetAnnotation = function () {\n this.pdfViewerBase.isDynamicStamp = false;\n this.dynamicText = '';\n this.currentStampAnnotation = null;\n if (!Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.updateDeleteItems = function (pageNumber, annotation, opacity) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var annotationObject = null;\n var isStampSaved = false;\n annotation.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n // eslint-disable-next-line max-len\n annotation.author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stampSettings.author ? this.pdfViewer.stampSettings.author : 'Guest';\n if (opacity) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('stamp', pageNumber + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annotation.annotName = annotationName;\n annotation.Comments = [];\n annotation.State = '';\n annotation.StateModel = '';\n annotation.Note = '';\n annotation.Opacity = 1;\n annotation.RotateAngle = 0;\n }\n if (annotation.shapeAnnotationType === 'Stamp') {\n annotation.isPrint = this.pdfViewer.stampSettings.isPrint;\n }\n // eslint-disable-next-line\n var annotationSelectorSettings = this.pdfViewer.stampSettings.annotationSelectorSettings ? this.pdfViewer.stampSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.stampSettings.allowedInteractions ? this.pdfViewer.stampSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n if (annotation.shapeAnnotationType === 'Image') {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.customStampSettings.author ? this.pdfViewer.customStampSettings.author : 'Guest';\n annotation.isPrint = this.pdfViewer.customStampSettings.isPrint;\n this.customStampName = this.customStampName ? this.customStampName : this.currentStampAnnotation.signatureName ? this.currentStampAnnotation.signatureName : annotation.id;\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: annotation.author, modifiedDate: annotation.modifiedDate, subject: '',\n note: '', strokeColor: '', fillColor: '', opacity: opacity,\n // eslint-disable-next-line max-len\n rotateAngle: '0', creationDate: annotation.currentDate, pageNumber: pageNumber, icon: '', stampAnnotationPath: annotation.data, randomId: 'stamp' + this.pdfViewerBase.customStampCount,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height }, stampFillcolor: '', isDynamicStamp: false, annotName: annotation.annotName, comments: [], review: { state: '', stateModel: '', author: annotation.author, modifiedDate: annotation.modifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings), customData: this.pdfViewer.annotationModule.getData('image'), isPrint: annotation.isPrint,\n allowedInteractions: allowedInteractions, isCommentLock: false, isMaskedImage: annotation.isMaskedImage, customStampName: this.customStampName\n };\n }\n else if (annotation.stampAnnotationType) {\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: annotation.stampAnnotationType, author: annotation.author, modifiedDate: annotation.modifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.opacity, stampFillcolor: annotation.stampFillcolor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.rotateAngle, creationDate: annotation.creationDate, pageNumber: annotation.pageNumber, icon: annotation.icon, stampAnnotationPath: annotation.stampAnnotationPath, randomId: annotation.randomId, isDynamicStamp: annotation.isDynamicStamp, dynamicText: annotation.dynamicText,\n bounds: { left: annotation.bounds.left, top: annotation.bounds.top, width: annotation.bounds.width, height: annotation.bounds.height }, annotName: annotation.annotName, comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings), customData: this.pdfViewer.annotationModule.getData(annotation.stampAnnotationType), isPrint: annotation.isPrint,\n allowedInteractions: allowedInteractions, isCommentLock: annotation.isCommentLock, isMaskedImage: annotation.isMaskedImage, customStampName: ''\n };\n }\n else {\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: annotation.shapeAnnotationType, author: annotation.author, modifiedDate: annotation.modifiedDate, subject: annotation.subject,\n note: annotation.notes, strokeColor: annotation.strokeColor, fillColor: annotation.fillColor, opacity: annotation.opacity, stampFillcolor: annotation.stampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.rotateAngle, creationDate: annotation.creationDate, pageNumber: annotation.pageIndex, icon: annotation.subject, stampAnnotationPath: annotation.data, randomId: annotation.id, isDynamicStamp: annotation.isDynamicStamp, dynamicText: annotation.dynamicText, shapeAnnotationType: 'stamp',\n bounds: { left: annotation.bounds.x, top: annotation.bounds.y, width: annotation.bounds.width, height: annotation.bounds.height, }, annotName: annotation.annotName, comments: annotation.Comments, review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.author, modifiedDate: annotation.ModifiedDate },\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings), customData: this.pdfViewer.annotationModule.getData(annotation.shapeAnnotationType), isPrint: annotation.isPrint,\n allowedInteractions: allowedInteractions, isCommentLock: annotation.isCommentLock, isMaskedImage: annotation.isMaskedImage, customStampName: ''\n };\n }\n if (opacity) {\n if (annotation.shapeAnnotationType !== 'Image') {\n // eslint-disable-next-line\n var collectionData = processPathData(annotation.data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n annotationObject.stampAnnotationPath = csData;\n }\n annotation.creationDate = new Date().toLocaleDateString();\n if (!Browser.isDevice && annotation.wrapper) {\n annotationObject.bounds.width = annotation.wrapper.actualSize.width;\n annotationObject.bounds.height = annotation.wrapper.actualSize.height;\n annotationObject.bounds.left = annotation.wrapper.bounds.x;\n annotationObject.bounds.top = annotation.wrapper.bounds.y;\n }\n annotationObject.opacity = opacity;\n if (this.pdfViewerBase.stampAdded) {\n this.storeStampInSession(pageNumber, annotationObject);\n isStampSaved = true;\n // eslint-disable-next-line\n var bounds = { left: annotationObject.bounds.left, top: annotationObject.bounds.top, width: annotationObject.bounds.width, height: annotationObject.bounds.height };\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n var settings = { opacity: annotationObject.opacity, author: annotationObject.author, modifiedDate: annotationObject.modifiedDate };\n if (annotation.shapeAnnotationType === 'Image') {\n this.pdfViewerBase.stampAdded = false;\n this.pdfViewer.fireAnnotationAdd(annotationObject.pageNumber, annotationObject.annotName, 'Image', bounds, settings, null, null, null, null, null, this.customStampName);\n this.customStampName = null;\n }\n else {\n this.pdfViewer.fireAnnotationAdd(annotationObject.pageNumber, annotationObject.annotName, 'Stamp', bounds, settings);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageNumber, null, annotation, 'Addition', '', annotation, annotationObject);\n }\n }\n if (!isStampSaved) {\n this.storeStampInSession(pageNumber, annotationObject);\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.renderCustomImage = function (position, pageIndex, image, currentDate, modifiedDate, RotationAngle, opacity, canvas, isExistingStamp, annotation, annotName) {\n var annot;\n var annotationObject = null;\n var annotationName;\n var author;\n var isCommentsLock;\n // eslint-disable-next-line\n var isCustomStamp = this.pdfViewer.customStampSettings.left > 0 && this.pdfViewer.customStampSettings.top > 0 ? true : false;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.stampSettings.allowedInteractions ? this.pdfViewer.stampSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n if (Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n if (isExistingStamp) {\n annotationName = annotation.AnnotName;\n author = annotation.Author;\n isCommentsLock = annotation.IsCommentLock;\n // eslint-disable-next-line max-len\n annotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n // eslint-disable-next-line max-len\n allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n if (author === null) {\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.customStampSettings.author ? this.pdfViewer.customStampSettings.author : 'Guest';\n }\n }\n else {\n annotationName = this.pdfViewer.annotation.createGUID();\n // eslint-disable-next-line max-len\n author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.customStampSettings.author ? this.pdfViewer.customStampSettings.author : 'Guest';\n isCommentsLock = false;\n }\n if (!modifiedDate) {\n modifiedDate = annotation.ModifiedDate ? annotation.ModifiedDate : new Date().toLocaleString();\n }\n var annotationAddMode = annotation ? annotation.annotationAddMode : 'UI Drawn Annotation ';\n var isPrint = true;\n if (!isExistingStamp) {\n isPrint = this.pdfViewer.customStampSettings.isPrint;\n }\n else {\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = annotation.IsPrint;\n }\n else {\n isPrint = annotation.AnnotationSettings.isPrint;\n }\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'stamp' + this.pdfViewerBase.customStampCount, allowedInteractions: allowedInteractions, bounds: { x: position.left, y: position.top, width: position.width, height: position.height }, pageIndex: pageIndex, data: image.src, modifiedDate: modifiedDate,\n shapeAnnotationType: 'Image', opacity: opacity, rotateAngle: RotationAngle, annotName: annotationName, comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: author },\n // eslint-disable-next-line max-len\n annotationSettings: annotationSettings, annotationAddMode: annotationAddMode, signatureName: annotName, isPrint: isPrint, isCommentLock: isCommentsLock\n };\n this.currentStampAnnotation = annot;\n // eslint-disable-next-line\n var annotationSelectorSettings = this.pdfViewer.stampSettings.annotationSelectorSettings ? this.pdfViewer.stampSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n if (isExistingStamp || isCustomStamp) {\n if (!annotation) {\n this.isStampAnnotSelected = false;\n annotation = annot;\n // eslint-disable-next-line\n annotation.Note = '';\n // eslint-disable-next-line\n annotation.State = '';\n // eslint-disable-next-line\n annotation.StateModel = '';\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('stamp', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: author, allowedInteractions: allowedInteractions, modifiedDate: modifiedDate, subject: '',\n note: annotation.Note, strokeColor: '', fillColor: '', opacity: opacity,\n // eslint-disable-next-line max-len\n rotateAngle: '0', creationDate: currentDate, pageNumber: pageIndex, icon: '', stampAnnotationPath: image.src, randomId: 'stamp' + this.pdfViewerBase.customStampCount,\n // eslint-disable-next-line max-len\n bounds: { left: position.left, top: position.top, width: position.width, height: position.height }, stampFillcolor: '', isDynamicStamp: false,\n annotName: annotationName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: author, modifiedDate: modifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: annotationSelectorSettings, annotationSettings: annotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: isPrint, isCommentLock: isCommentsLock, isMaskedImage: annotation.IsMaskedImage, customStampName: annotation.CustomStampName\n };\n this.storeStampInSession(pageIndex, annotationObject);\n annot.comments = this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author);\n annot.review = { state: annotation.State, stateModel: annotation.StateModel, author: author, modifiedDate: modifiedDate };\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.customStampName = this.customStampName ? this.customStampName : this.currentStampAnnotation.signatureName ? this.currentStampAnnotation.signatureName : annotation.id;\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Image', annot.bounds, settings, null, null, null, null, null, this.customStampName);\n this.customStampName = null;\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n if (canvas != undefined && canvas != null) {\n canvas = canvas;\n }\n else {\n canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n }\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvas, pageIndex);\n if (this.pdfViewerBase.stampAdded) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n }\n }\n if (!Browser.isDevice) {\n this.pdfViewerBase.customStampCount += 1;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.retrieveDynamicStampAnnotation = function (icontype) {\n var stampCollection;\n if (icontype) {\n switch (icontype.trim()) {\n case 'Revised':\n {\n stampCollection = {\n iconName: 'Revised',\n // eslint-disable-next-line max-len\n pathdata: 'M19.68,21.22a3.94,3.94,0,0,1-1.1-1.9L16,11.87l-.21-.64a20.77,20.77,0,0,0,2.11-.58,7.24,7.24,0,0,0,2-1.09,5.65,5.65,0,0,0,1.72-2.12,5.4,5.4,0,0,0,.52-2.2A4.15,4.15,0,0,0,19.1,1.05a14.58,14.58,0,0,0-4.72-.6H5.31v.86a7,7,0,0,1,2,.33c.3.14.45.48.45,1a6.1,6.1,0,0,1-.14,1.08l-.21.8L3.31,19.32a3.35,3.35,0,0,1-.94,1.78,3.58,3.58,0,0,1-1.74.57v.86h9.83v-.86a6.22,6.22,0,0,1-2-.35c-.29-.15-.43-.52-.43-1.11,0-.1,0-.21,0-.31a2.36,2.36,0,0,1,0-.28l.28-1.14,1.95-6.86h.93l3.56,10.91h6.25v-.88A3.05,3.05,0,0,1,19.68,21.22ZM13.29,10.31a14,14,0,0,1-2.63.23l2-7.56a2.67,2.67,0,0,1,.52-1.17,1.4,1.4,0,0,1,1-.3,2.74,2.74,0,0,1,2.33.91,3.72,3.72,0,0,1,.69,2.3,6.4,6.4,0,0,1-.49,2.52,6.72,6.72,0,0,1-1.06,1.82A4.11,4.11,0,0,1,13.29,10.31ZM26,.45H43.74l-1.4,6.27-.88-.15a6,6,0,0,0-.78-3.4c-.84-1.12-2.54-1.69-5.11-1.69a2.9,2.9,0,0,0-1.68.32A2.34,2.34,0,0,0,33.26,3l-1.95,7.33a13.55,13.55,0,0,0,4.48-.56c.68-.32,1.44-1.3,2.27-2.92l.91.11-2.44,9-.91-.16a7.27,7.27,0,0,0,.09-.82q0-.35,0-.57a2.69,2.69,0,0,0-1-2.4A7.57,7.57,0,0,0,31,11.38l-2.17,8c0,.2-.09.38-.12.57a2.62,2.62,0,0,0,0,.43.92.92,0,0,0,.35.74,2.54,2.54,0,0,0,1.49.29,13.84,13.84,0,0,0,5.11-.84A9.85,9.85,0,0,0,40.73,16l.81.14-1.95,6.42h-18v-.9a3.43,3.43,0,0,0,1.42-.53A3.42,3.42,0,0,0,24,19.32L28,4.51c.1-.37.18-.72.25-1a4.23,4.23,0,0,0,.09-.78c0-.56-.15-.91-.44-1.06a6.85,6.85,0,0,0-2-.34ZM63.4,3.37,51,23.15H49.9L47.39,6.34a17.25,17.25,0,0,0-.93-4.24c-.25-.43-.93-.7-2.05-.79V.45h9.86v.86a5.47,5.47,0,0,0-1.72.19,1.14,1.14,0,0,0-.81,1.16,3,3,0,0,0,0,.31l0,.32L53.5,16.43l6.24-9.85c.49-.79.94-1.57,1.33-2.36a4.45,4.45,0,0,0,.6-1.85.88.88,0,0,0-.61-.9,6.11,6.11,0,0,0-1.52-.16V.45h6.34v.86a3.88,3.88,0,0,0-1.16.5A5.73,5.73,0,0,0,63.4,3.37ZM70.08,20c0,.11,0,.22,0,.31,0,.56.15.91.45,1.06a6.39,6.39,0,0,0,1.95.35v.86H62.63v-.86a3.58,3.58,0,0,0,1.74-.57,3.35,3.35,0,0,0,.94-1.78l4-14.81q.18-.63.27-1a3.78,3.78,0,0,0,.09-.75c0-.56-.16-.91-.47-1.06a7,7,0,0,0-2-.34V.45h9.83v.86a3.61,3.61,0,0,0-1.75.58,3.37,3.37,0,0,0-.91,1.78L70.4,18.48l-.26,1.14Zm19.26-7.23a6.37,6.37,0,0,1,1.07,3.62,6.58,6.58,0,0,1-2.06,4.71,7.54,7.54,0,0,1-5.65,2.1A10.15,10.15,0,0,1,80.89,23a11.42,11.42,0,0,1-1.8-.49l-.83-.3-.58-.2a2,2,0,0,0-.38,0,1,1,0,0,0-.78.26,3.89,3.89,0,0,0-.52.92H75l1.19-7.4,1,.07a14.63,14.63,0,0,0,.28,2.3,5.27,5.27,0,0,0,2.79,3.44,4.73,4.73,0,0,0,2.06.44,3.85,3.85,0,0,0,3.07-1.26,4.39,4.39,0,0,0,1.09-2.94q0-2.09-4.05-5.25c-2.7-2.22-4-4.26-4-6.14a6.31,6.31,0,0,1,1.78-4.53,6.51,6.51,0,0,1,5-1.87,9.67,9.67,0,0,1,1.82.18A6.54,6.54,0,0,1,88,.45l.84.28.56.13a2.59,2.59,0,0,0,.52.06,1.4,1.4,0,0,0,.88-.24,2.2,2.2,0,0,0,.53-.6h1L91,6.69l-.85-.12L90,5.49a6,6,0,0,0-1-2.62,3.82,3.82,0,0,0-3.38-1.73A3,3,0,0,0,82.9,2.53a3.6,3.6,0,0,0-.58,2,3.44,3.44,0,0,0,.59,2,6,6,0,0,0,1,1l2.85,2.33A12.75,12.75,0,0,1,89.34,12.72ZM110.27,16l.81.14-2,6.42H90.85v-.86a3.66,3.66,0,0,0,1.74-.57,3.42,3.42,0,0,0,.93-1.78l4-14.81c.1-.37.18-.72.25-1a4.23,4.23,0,0,0,.09-.78c0-.56-.14-.91-.44-1.06a6.85,6.85,0,0,0-2-.34V.45h17.77l-1.4,6.27L111,6.57a6,6,0,0,0-.78-3.4c-.84-1.12-2.54-1.69-5.1-1.69a2.92,2.92,0,0,0-1.69.32A2.34,2.34,0,0,0,102.8,3l-2,7.33a13.55,13.55,0,0,0,4.48-.56c.69-.32,1.44-1.3,2.27-2.92l.92.11-2.45,9-.91-.16a7.27,7.27,0,0,0,.09-.82q0-.35,0-.57a2.69,2.69,0,0,0-1-2.4,7.57,7.57,0,0,0-3.79-.64l-2.17,8c0,.2-.09.38-.12.57a2.62,2.62,0,0,0,0,.43.92.92,0,0,0,.35.74,2.54,2.54,0,0,0,1.49.29,13.84,13.84,0,0,0,5.11-.84A9.81,9.81,0,0,0,110.27,16Zm22.65-13Q130.39.45,125.52.45h-9.58v.86a7,7,0,0,1,2,.34c.31.15.47.5.47,1.06a3.61,3.61,0,0,1-.09.74c-.06.29-.15.64-.26,1.06L114,19.31a3.18,3.18,0,0,1-1.15,1.91,3.57,3.57,0,0,1-1.53.45v.86h9.47a14.87,14.87,0,0,0,10.95-4.14,12,12,0,0,0,3.75-8.77A8.94,8.94,0,0,0,132.92,2.94ZM129,15.36q-2.62,6.06-8.52,6.05a2.46,2.46,0,0,1-1.42-.29,1.05,1.05,0,0,1-.4-.93,2.24,2.24,0,0,1,0-.34,2.65,2.65,0,0,1,.08-.43l4.55-16.67a2,2,0,0,1,.54-.92,2.2,2.2,0,0,1,1.44-.35,4.74,4.74,0,0,1,4.47,2.22,7.9,7.9,0,0,1,.83,3.9A19.32,19.32,0,0,1,129,15.36Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.47, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Reviewed':\n {\n stampCollection = {\n iconName: 'Reviewed',\n // eslint-disable-next-line max-len\n pathdata: 'M17.37,18.25a3.47,3.47,0,0,1-1-1.67L14.17,10c0-.07-.1-.26-.19-.56A14.71,14.71,0,0,0,15.83,9a6.08,6.08,0,0,0,1.76-1A4.92,4.92,0,0,0,19.1,6.14a4.71,4.71,0,0,0,.46-1.93A3.65,3.65,0,0,0,16.86.52,12.83,12.83,0,0,0,12.72,0h-8V.75a6.62,6.62,0,0,1,1.72.3c.26.12.39.41.39.88a4.56,4.56,0,0,1-.13.94c0,.2-.1.44-.17.7L3,16.58a2.87,2.87,0,0,1-.82,1.56,3.15,3.15,0,0,1-1.53.51v.75H9.27v-.75a5.88,5.88,0,0,1-1.74-.31c-.25-.13-.37-.46-.37-1a2.53,2.53,0,0,1,0-.28,1.44,1.44,0,0,1,0-.24l.24-1,1.71-6H10l3.13,9.59h5.49v-.77A2.71,2.71,0,0,1,17.37,18.25ZM11.75,8.67a12.06,12.06,0,0,1-2.3.19L11.2,2.22a2.2,2.2,0,0,1,.46-1,1.19,1.19,0,0,1,.87-.27,2.41,2.41,0,0,1,2.05.8,3.29,3.29,0,0,1,.6,2A5.63,5.63,0,0,1,14.75,6a6.06,6.06,0,0,1-.93,1.59A3.65,3.65,0,0,1,11.75,8.67ZM22.9,0H38.52L37.29,5.51l-.78-.13a5.34,5.34,0,0,0-.68-3c-.74-1-2.24-1.48-4.49-1.48a2.68,2.68,0,0,0-1.49.27,2.09,2.09,0,0,0-.54,1L27.59,8.67a12.08,12.08,0,0,0,3.94-.5,5.69,5.69,0,0,0,2-2.56l.81.1-2.16,7.93-.79-.15c0-.27.06-.51.08-.71s0-.37,0-.5a2.34,2.34,0,0,0-.85-2.11A6.61,6.61,0,0,0,27.3,9.6l-1.91,7.08a4.91,4.91,0,0,0-.1.5,2,2,0,0,0,0,.38.83.83,0,0,0,.31.65,2.29,2.29,0,0,0,1.31.25,12.21,12.21,0,0,0,4.49-.73,8.69,8.69,0,0,0,4.51-4.09l.71.12L34.86,19.4H19.05v-.79a2.88,2.88,0,0,0,1.28-.47,2.94,2.94,0,0,0,.82-1.56l3.56-13q.13-.49.21-.9A3.26,3.26,0,0,0,25,2q0-.73-.39-.93A6.44,6.44,0,0,0,22.9.75ZM55.79,2.57,44.86,20h-.93L41.72,5.17a16.05,16.05,0,0,0-.81-3.73c-.22-.37-.82-.6-1.81-.69V0h8.67V.75a5,5,0,0,0-1.52.17,1,1,0,0,0-.7,1,2.53,2.53,0,0,0,0,.28l0,.27L47.09,14l5.48-8.66C53,4.69,53.4,4,53.75,3.32a4,4,0,0,0,.52-1.63.78.78,0,0,0-.54-.8A5.88,5.88,0,0,0,52.4.75V0H58V.75a3.55,3.55,0,0,0-1,.44A5.18,5.18,0,0,0,55.79,2.57ZM62,18.34a6,6,0,0,0,1.71.31v.75H55.12v-.75a3.15,3.15,0,0,0,1.53-.51,2.94,2.94,0,0,0,.82-1.56L61,3.57c.1-.37.18-.68.23-.93A2.81,2.81,0,0,0,61.34,2c0-.49-.13-.8-.41-.93a6.61,6.61,0,0,0-1.71-.3V0h8.63V.75a3.17,3.17,0,0,0-1.53.51,3,3,0,0,0-.8,1.57l-3.58,13-.22,1a2.74,2.74,0,0,0,0,.28,1.41,1.41,0,0,0,0,.28C61.64,17.9,61.78,18.21,62,18.34ZM69.13,0H84.75L83.52,5.51l-.78-.13a5.34,5.34,0,0,0-.68-3c-.74-1-2.24-1.48-4.49-1.48a2.68,2.68,0,0,0-1.49.27,2.09,2.09,0,0,0-.54,1L73.82,8.67a12.08,12.08,0,0,0,3.94-.5,5.69,5.69,0,0,0,2-2.56l.81.1L78.4,13.64l-.79-.15c0-.27.07-.51.08-.71s0-.37,0-.5a2.34,2.34,0,0,0-.85-2.11,6.61,6.61,0,0,0-3.33-.57l-1.91,7.08a4.91,4.91,0,0,0-.1.5,2,2,0,0,0,0,.38.83.83,0,0,0,.31.65,2.29,2.29,0,0,0,1.31.25,12.21,12.21,0,0,0,4.49-.73,8.69,8.69,0,0,0,4.51-4.09l.71.12L81.1,19.4H65v-.75a3.15,3.15,0,0,0,1.53-.51,2.94,2.94,0,0,0,.82-1.56l3.56-13q.14-.49.21-.9A3.26,3.26,0,0,0,71.24,2q0-.73-.39-.93a6.44,6.44,0,0,0-1.72-.3Zm39.15,2.83L100,20h-.84L97.41,5.85,90.67,20h-.84L87.58,3.13A3.83,3.83,0,0,0,87,1.23,2.84,2.84,0,0,0,85.33.71V0h8.06V.75A2.55,2.55,0,0,0,92.27,1a1.33,1.33,0,0,0-.66,1.31c0,.06,0,.13,0,.19s0,.15,0,.26l1.15,10.16,4.32-9a1,1,0,0,0,0-.27,3.33,3.33,0,0,0-.64-2.38A2.5,2.5,0,0,0,95.06.71V0h7.78V.71a2.9,2.9,0,0,0-1.4.34c-.27.19-.41.6-.41,1.24,0,.13,0,.32,0,.55,0,.4.08.88.14,1.47l1,8.47,4.51-9.42a7.12,7.12,0,0,0,.29-.74,2.48,2.48,0,0,0,.14-.79.9.9,0,0,0-.48-.93,3.25,3.25,0,0,0-1.34-.19V0h5.41V.71a2.34,2.34,0,0,0-1.1.35A4.56,4.56,0,0,0,108.28,2.83Zm16.45,10.81.71.12-1.71,5.64H107.66v-.75a3.15,3.15,0,0,0,1.53-.51,2.87,2.87,0,0,0,.82-1.56l3.57-13q.12-.49.21-.9a3.17,3.17,0,0,0,.08-.69q0-.73-.39-.93a6.44,6.44,0,0,0-1.72-.3V0h15.62l-1.23,5.51-.78-.13a5.26,5.26,0,0,0-.68-3C124,1.4,122.46.91,120.2.91a2.64,2.64,0,0,0-1.48.27,2.09,2.09,0,0,0-.55,1l-1.72,6.45a12,12,0,0,0,3.94-.5,5.62,5.62,0,0,0,2-2.56l.81.1L121,13.64l-.79-.15c0-.27.06-.51.07-.71s0-.37,0-.5a2.34,2.34,0,0,0-.86-2.11,6.57,6.57,0,0,0-3.32-.57l-1.91,7.08a5,5,0,0,0-.11.5,3.14,3.14,0,0,0,0,.38.8.8,0,0,0,.31.65,2.25,2.25,0,0,0,1.3.25,12.26,12.26,0,0,0,4.5-.73A8.67,8.67,0,0,0,124.73,13.64ZM144.64,2.19Q142.41,0,138.14,0h-8.42V.75a6.61,6.61,0,0,1,1.71.3c.28.13.41.44.41.93a2.81,2.81,0,0,1-.08.66c0,.25-.12.56-.23.93l-3.56,13a2.78,2.78,0,0,1-1,1.68,3.44,3.44,0,0,1-1.35.4v.75h8.32a13.06,13.06,0,0,0,9.63-3.64,10.49,10.49,0,0,0,3.3-7.7A7.87,7.87,0,0,0,144.64,2.19ZM141.2,13.1q-2.31,5.32-7.48,5.32a2.27,2.27,0,0,1-1.26-.25,1,1,0,0,1-.34-.82,1.62,1.62,0,0,1,0-.3,2.16,2.16,0,0,1,.08-.38l4-14.65a1.63,1.63,0,0,1,.47-.81A2,2,0,0,1,138,.91a4.16,4.16,0,0,1,3.93,1.95,7,7,0,0,1,.72,3.42A16.82,16.82,0,0,1,141.2,13.1Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.70402, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Received':\n {\n stampCollection = {\n iconName: 'Received',\n // eslint-disable-next-line max-len\n pathdata: 'M18.17,8.76a5,5,0,0,0,1.57-1.93,5,5,0,0,0,.47-2A3.76,3.76,0,0,0,17.42,1,13,13,0,0,0,13.13.48H4.89v.78a6.49,6.49,0,0,1,1.77.31c.27.12.41.43.41.91a5.87,5.87,0,0,1-.13,1c-.05.2-.12.44-.19.72L3.06,17.64a3,3,0,0,1-.84,1.61,3.36,3.36,0,0,1-1.59.53v.77H9.57v-.77a6.17,6.17,0,0,1-1.8-.32c-.26-.14-.39-.48-.39-1a2.46,2.46,0,0,1,0-.28,1.78,1.78,0,0,1,0-.26l.25-1,1.78-6.25h.84l3.24,9.92h5.66v-.8A2.76,2.76,0,0,1,18,19.36a3.57,3.57,0,0,1-1-1.72l-2.31-6.78c0-.07-.09-.27-.19-.58.87-.2,1.51-.38,1.92-.52A6.56,6.56,0,0,0,18.17,8.76Zm-2.93-2.1a6.19,6.19,0,0,1-1,1.65,3.85,3.85,0,0,1-2.14,1.14,12.92,12.92,0,0,1-2.39.2l1.81-6.87A2.5,2.5,0,0,1,12,1.72a1.27,1.27,0,0,1,.9-.27,2.5,2.5,0,0,1,2.12.83,3.35,3.35,0,0,1,.62,2.09A5.81,5.81,0,0,1,15.24,6.66ZM30.3,2.78,28.52,9.45a12.53,12.53,0,0,0,4.08-.51,5.91,5.91,0,0,0,2-2.66l.84.11-2.23,8.2-.82-.15c0-.28.07-.53.08-.74a5.17,5.17,0,0,0,0-.52A2.43,2.43,0,0,0,31.66,11a6.87,6.87,0,0,0-3.44-.58l-2,7.32a3.61,3.61,0,0,0-.11.51,2.31,2.31,0,0,0,0,.4.83.83,0,0,0,.32.67,2.32,2.32,0,0,0,1.35.26,12.58,12.58,0,0,0,4.65-.76,9,9,0,0,0,4.67-4.23l.73.13-1.77,5.83H19.8v-.83A2.83,2.83,0,0,0,21,19.25a3.09,3.09,0,0,0,.85-1.61L25.54,4.17c.09-.34.16-.65.22-.93a3.35,3.35,0,0,0,.09-.71c0-.5-.13-.82-.4-1a6.34,6.34,0,0,0-1.78-.31V.48H39.82l-1.27,5.7-.81-.13A5.44,5.44,0,0,0,37,3Q35.9,1.42,32.4,1.42a2.69,2.69,0,0,0-1.54.29A2.08,2.08,0,0,0,30.3,2.78ZM56.56,6.1c0-.07,0-.18,0-.33a4.89,4.89,0,0,0-1.12-3.53,3.75,3.75,0,0,0-2.82-1.16c-2.33,0-4.35,1.55-6.07,4.63a17.09,17.09,0,0,0-2.31,8.43c0,2.08.47,3.5,1.43,4.27a4.89,4.89,0,0,0,3.11,1.15,6.84,6.84,0,0,0,4.14-1.45A11.51,11.51,0,0,0,55,16l.91.66A10.08,10.08,0,0,1,52.26,20a9.33,9.33,0,0,1-4.34,1.11A8.56,8.56,0,0,1,42,19a7.25,7.25,0,0,1-2.35-5.67A13.53,13.53,0,0,1,43.22,4a11.19,11.19,0,0,1,8.56-4A12.34,12.34,0,0,1,55,.44,13.17,13.17,0,0,0,56.9.88a1,1,0,0,0,.71-.24A2.94,2.94,0,0,0,58.06,0H59L57.45,7l-.94-.18C56.54,6.42,56.55,6.17,56.56,6.1Zm18,8.49.74.13-1.78,5.83H56.87v-.77a3.31,3.31,0,0,0,1.58-.53,3.09,3.09,0,0,0,.85-1.61L63,4.17c.09-.34.16-.65.22-.93a3.35,3.35,0,0,0,.09-.71c0-.5-.14-.82-.4-1a6.34,6.34,0,0,0-1.78-.31V.48H77.26L76,6.18l-.81-.13A5.44,5.44,0,0,0,74.48,3q-1.14-1.54-4.64-1.54a2.69,2.69,0,0,0-1.54.29,2.08,2.08,0,0,0-.56,1.07L66,9.45A12.53,12.53,0,0,0,70,8.94a5.91,5.91,0,0,0,2-2.66l.84.11-2.23,8.2-.82-.15c0-.28.07-.53.08-.74a5.17,5.17,0,0,0,0-.52A2.43,2.43,0,0,0,69.1,11a6.87,6.87,0,0,0-3.44-.58l-2,7.32a3.61,3.61,0,0,0-.11.51,2.31,2.31,0,0,0,0,.4.83.83,0,0,0,.32.67,2.32,2.32,0,0,0,1.35.26,12.58,12.58,0,0,0,4.65-.76A8.91,8.91,0,0,0,74.52,14.59Zm31-11.45-11.31,18h-1L91,5.83A16.56,16.56,0,0,0,90.12,2c-.2-.34-.71-.56-1.51-.67a3,3,0,0,0-1.31.48,3.08,3.08,0,0,0-.82,1.62l-3.7,13.47-.24,1c0,.1,0,.2-.05.3s0,.2,0,.28c0,.51.14.83.41,1a6.21,6.21,0,0,0,1.77.32v.77H75.72v-.77a3.31,3.31,0,0,0,1.58-.53,3.09,3.09,0,0,0,.85-1.61L81.83,4.17c.11-.38.19-.7.25-.95a3.75,3.75,0,0,0,.08-.69c0-.5-.15-.82-.43-1A6.49,6.49,0,0,0,80,1.26V.48H97.22v.78a4.92,4.92,0,0,0-1.57.18,1,1,0,0,0-.73,1.05,2.81,2.81,0,0,0,0,.29l0,.28,1.56,12,5.67-9a24.21,24.21,0,0,0,1.21-2.14,4.07,4.07,0,0,0,.54-1.68.79.79,0,0,0-.55-.82A5.69,5.69,0,0,0,102,1.26V.48h5.76v.78a3.5,3.5,0,0,0-1,.46A5.16,5.16,0,0,0,105.52,3.14Zm16.83,11.45.73.13-1.77,5.83H104.69v-.77a3.31,3.31,0,0,0,1.58-.53,3,3,0,0,0,.85-1.61l3.69-13.47c.08-.34.16-.65.22-.93a4,4,0,0,0,.08-.71c0-.5-.13-.82-.4-1a6.34,6.34,0,0,0-1.78-.31V.48h16.16l-1.28,5.7-.8-.13A5.43,5.43,0,0,0,122.3,3q-1.14-1.54-4.64-1.54a2.67,2.67,0,0,0-1.53.29,2.16,2.16,0,0,0-.57,1.07l-1.78,6.67a12.53,12.53,0,0,0,4.08-.51,5.91,5.91,0,0,0,2.06-2.66l.83.11-2.22,8.2-.82-.15c0-.28.06-.53.08-.74s0-.38,0-.52a2.45,2.45,0,0,0-.88-2.18,6.9,6.9,0,0,0-3.44-.58l-2,7.32c-.05.18-.08.35-.11.51a3.58,3.58,0,0,0,0,.4.81.81,0,0,0,.32.67,2.28,2.28,0,0,0,1.35.26,12.62,12.62,0,0,0,4.65-.76A9,9,0,0,0,122.35,14.59ZM142.94,2.75Q140.63.48,136.21.48h-8.7v.78a6.66,6.66,0,0,1,1.77.31q.42.21.42,1a2.91,2.91,0,0,1-.08.68q-.08.39-.24,1L125.7,17.62a2.93,2.93,0,0,1-1,1.75,3.54,3.54,0,0,1-1.39.41v.77h8.61a13.5,13.5,0,0,0,10-3.76,10.84,10.84,0,0,0,3.41-8A8.14,8.14,0,0,0,142.94,2.75ZM139.38,14q-2.38,5.51-7.74,5.5a2.35,2.35,0,0,1-1.29-.26,1,1,0,0,1-.36-.85,1.78,1.78,0,0,1,0-.31,2.08,2.08,0,0,1,.08-.39l4.13-15.15a1.76,1.76,0,0,1,.49-.84A2,2,0,0,1,136,1.42a4.32,4.32,0,0,1,4.07,2A7.17,7.17,0,0,1,140.83,7,17.49,17.49,0,0,1,139.38,14Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.70402, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Approved':\n {\n stampCollection = {\n iconName: 'Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M19,20.22H10.55v-.71a4.26,4.26,0,0,0,1.79-.41,1.37,1.37,0,0,0,.53-1.29c0-.22,0-.75-.16-1.58,0-.17-.11-.89-.29-2.15H6.06l-1.72,3a4,4,0,0,0-.31.66,2,2,0,0,0-.14.69c0,.41.12.67.37.78a5.42,5.42,0,0,0,1.53.3v.71H0v-.71A4,4,0,0,0,1.21,19a5.68,5.68,0,0,0,1.28-1.56L13.45.07h.76L17,17a4.35,4.35,0,0,0,.7,2.08,2.4,2.4,0,0,0,1.31.44Zm-6.83-7.31L11.13,5.73,6.76,12.91Zm7.18,6.52a3,3,0,0,0,1.33-.49,3,3,0,0,0,.84-1.59L25.19,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22,9.53,9.53,0,0,1-5.69,1.58l-.85,0-1.71-.11L26,16.6l-.25,1a1,1,0,0,0-.05.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76H19.39Zm8.52-9.66.54.06h.48a5.81,5.81,0,0,0,2.3-.36,3.47,3.47,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,8.94,8.94,0,0,0,.3-2,3.29,3.29,0,0,0-.58-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.71,2.71,0,0,0-.46,1Zm8,9.69a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59L42,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22A9.53,9.53,0,0,1,47,10.87l-.85,0-1.71-.11L42.79,16.6l-.25,1a1.45,1.45,0,0,0,0,.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76h-8.7Zm8.74-9.69.54.06h.48A5.81,5.81,0,0,0,48,9.48a3.41,3.41,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,9,9,0,0,0,.31-2,3.29,3.29,0,0,0-.59-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.88,2.88,0,0,0-.46,1Zm7.95,9.69a3.27,3.27,0,0,0,1.56-.52A3.06,3.06,0,0,0,55,17.35L58.64,4.11l.18-.71a4.72,4.72,0,0,0,.13-1c0-.47-.13-.77-.4-.9a6.74,6.74,0,0,0-1.74-.3V.48h8.11A13,13,0,0,1,69.14,1a3.7,3.7,0,0,1,2.74,3.75,4.8,4.8,0,0,1-.46,2,5,5,0,0,1-1.54,1.9,6.55,6.55,0,0,1-1.79,1,19.35,19.35,0,0,1-1.89.52c.1.3.16.49.2.57l2.27,6.66a3.49,3.49,0,0,0,1,1.7,3.08,3.08,0,0,0,1.6.41v.76H65.33l-3.19-9.76h-.83L59.57,16.6l-.25,1a1.87,1.87,0,0,0,0,.25,2.64,2.64,0,0,0,0,.28q0,.8.39,1a5.88,5.88,0,0,0,1.76.32v.76H52.62ZM63.94,9.3a3.79,3.79,0,0,0,2.11-1.13A6,6,0,0,0,67,6.55a5.84,5.84,0,0,0,.44-2.26,3.31,3.31,0,0,0-.61-2,2.47,2.47,0,0,0-2.09-.81,1.25,1.25,0,0,0-.88.26,2.34,2.34,0,0,0-.47,1.05L61.59,9.5A13.42,13.42,0,0,0,63.94,9.3ZM76.39,4.53Q80.26,0,85,0a7.34,7.34,0,0,1,5.23,1.92,6.76,6.76,0,0,1,2,5.19,13.9,13.9,0,0,1-3.62,9.07q-3.86,4.61-8.88,4.6a7.06,7.06,0,0,1-5.13-1.92,6.86,6.86,0,0,1-2-5.14A14,14,0,0,1,76.39,4.53ZM77.3,18a2.56,2.56,0,0,0,2.57,1.78A4.62,4.62,0,0,0,83,18.47,14.42,14.42,0,0,0,86,13.54a27.18,27.18,0,0,0,1.52-4.83,20.67,20.67,0,0,0,.54-4.11,4.38,4.38,0,0,0-.73-2.55A2.62,2.62,0,0,0,85,1q-3.68,0-6.19,6.54a24.29,24.29,0,0,0-1.9,8.26A5.91,5.91,0,0,0,77.3,18ZM102.23.48v.76a5.19,5.19,0,0,0-1.55.17,1,1,0,0,0-.72,1,2.46,2.46,0,0,0,0,.28L100,3l1.52,11.76L107.11,6c.44-.71.84-1.41,1.2-2.11a4.06,4.06,0,0,0,.53-1.66.79.79,0,0,0-.55-.81,6.11,6.11,0,0,0-1.35-.14V.48h5.67v.76a3.31,3.31,0,0,0-1,.45,5.33,5.33,0,0,0-1.18,1.4L99.26,20.78h-.94l-2.25-15A15.49,15.49,0,0,0,95.24,2c-.22-.39-.84-.62-1.83-.71V.48Zm7.35,19a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59l3.62-13.24c.09-.34.16-.64.22-.92a3.27,3.27,0,0,0,.09-.7c0-.5-.14-.81-.4-.94a6.13,6.13,0,0,0-1.75-.31V.48h15.89l-1.25,5.6L127.6,6a5.32,5.32,0,0,0-.7-3q-1.12-1.52-4.56-1.51a2.61,2.61,0,0,0-1.51.28,2.12,2.12,0,0,0-.56,1.06L118.52,9.3a12.1,12.1,0,0,0,4-.51,5.8,5.8,0,0,0,2-2.61l.82.1-2.19,8.07-.81-.14c0-.28.07-.52.08-.73s0-.37,0-.51a2.4,2.4,0,0,0-.87-2.15,6.76,6.76,0,0,0-3.38-.57l-1.94,7.2a3.34,3.34,0,0,0-.11.51,3.67,3.67,0,0,0,0,.39.81.81,0,0,0,.32.66,2.3,2.3,0,0,0,1.33.26,12.39,12.39,0,0,0,4.57-.75A8.84,8.84,0,0,0,127,14.35l.72.13-1.74,5.74H109.58Zm18.27,0a3.27,3.27,0,0,0,1.37-.41,2.85,2.85,0,0,0,1-1.71l3.63-13.23c.1-.38.18-.69.23-1a3,3,0,0,0,.09-.67c0-.5-.15-.81-.42-.94A6.38,6.38,0,0,0,132,1.24V.48h8.57c2.9,0,5.1.74,6.62,2.22a8,8,0,0,1,2.26,6,10.72,10.72,0,0,1-3.35,7.84,13.3,13.3,0,0,1-9.8,3.7h-8.47ZM144.4,3.39a4.23,4.23,0,0,0-4-2,2,2,0,0,0-1.29.31,1.74,1.74,0,0,0-.48.83l-4.07,14.9a3.24,3.24,0,0,0-.07.39,1.69,1.69,0,0,0,0,.3,1,1,0,0,0,.36.84,2.27,2.27,0,0,0,1.27.26q5.26,0,7.62-5.42a17.25,17.25,0,0,0,1.43-6.94A7,7,0,0,0,144.4,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 127.70402, height: 55.84601, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Confidential':\n {\n stampCollection = {\n iconName: 'Confidential',\n // eslint-disable-next-line max-len\n pathdata: 'M13.71,0,12.63,6.9,12,6.73c0-.41,0-.66,0-.73s0-.18,0-.32a6.16,6.16,0,0,0-.79-3.47,2.37,2.37,0,0,0-2-1.14c-1.64,0-3.07,1.51-4.29,4.55a22,22,0,0,0-1.64,8.29c0,2,.34,3.44,1,4.2A3,3,0,0,0,6.5,19.24a4.08,4.08,0,0,0,2.93-1.43,10.47,10.47,0,0,0,1.5-2.09l.64.65A8.84,8.84,0,0,1,9,19.72a5.24,5.24,0,0,1-3.08,1.09,5.16,5.16,0,0,1-4.21-2.08A8.68,8.68,0,0,1,0,13.16,16.5,16.5,0,0,1,2.55,3.92Q5.1,0,8.61,0a6.35,6.35,0,0,1,2.25.43,6.62,6.62,0,0,0,1.38.43.55.55,0,0,0,.5-.23A2.61,2.61,0,0,0,13.06,0ZM27.49,7.11a17.19,17.19,0,0,1-2.61,9.07q-2.77,4.61-6.39,4.6a4.42,4.42,0,0,1-3.7-1.92,8.47,8.47,0,0,1-1.43-5.14A17.31,17.31,0,0,1,16,4.53C17.88,1.51,20,0,22.25,0A4.53,4.53,0,0,1,26,1.92,8.27,8.27,0,0,1,27.49,7.11ZM24.42,4.6a5.71,5.71,0,0,0-.53-2.55A1.76,1.76,0,0,0,22.24,1q-2.65,0-4.45,6.54a31.93,31.93,0,0,0-1.37,8.26A8.15,8.15,0,0,0,16.67,18c.34,1.19,1,1.78,1.85,1.78a2.9,2.9,0,0,0,2.28-1.29,15.85,15.85,0,0,0,2.13-4.93A34.08,34.08,0,0,0,24,8.71,28.5,28.5,0,0,0,24.42,4.6ZM42.75,1.3l.3-.06V.48H38.69v.76a2.55,2.55,0,0,1,1.16.33,1.8,1.8,0,0,1,.51,1.48,10.11,10.11,0,0,1-.13,1.34c-.06.41-.14.87-.24,1.39l-1.65,8.34L33.73.48H29.45v.76a2.66,2.66,0,0,1,1,.24,1.88,1.88,0,0,1,.65,1.06l.09.3L28.81,15a20.72,20.72,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.55,2.55,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,.05-.79c.06-.43.17-1.09.34-2L31.89,4.38l5.52,16.33h.52l3-15a22.58,22.58,0,0,1,.87-3.42A1.42,1.42,0,0,1,42.75,1.3ZM55.53.48H44.23v.76a3.63,3.63,0,0,1,1.26.3c.19.13.29.42.29.9a7.08,7.08,0,0,1-.09,1c0,.2-.08.44-.13.71L43,17.34a3.47,3.47,0,0,1-.59,1.58,1.91,1.91,0,0,1-1.13.54v.76h6.29v-.76a2.13,2.13,0,0,1-1-.19A1.23,1.23,0,0,1,46,18.1c0-.1,0-.21,0-.31s0-.23.05-.35l1.4-7.21a3.15,3.15,0,0,1,2.37.64A3.21,3.21,0,0,1,50.38,13c0,.11,0,.28,0,.49s0,.46-.06.75l.58.14,1.58-8.07-.59-.1a5.79,5.79,0,0,1-1.43,2.59,6.17,6.17,0,0,1-2.77.52l1.26-6.54a2.06,2.06,0,0,1,.42-1.08,1.39,1.39,0,0,1,1-.26c1.62,0,2.7.51,3.24,1.54a7.11,7.11,0,0,1,.49,3l.57.13Zm3.69,17.71c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1L62.06,3.36a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H57.44v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1L56.16,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.3,3.3,0,0,1-1.26-.32C59.32,19,59.22,18.69,59.22,18.19Zm18-9.51a13,13,0,0,1-2.42,7.84,8.31,8.31,0,0,1-7,3.7H61.6v-.76a2,2,0,0,0,1-.41,3.14,3.14,0,0,0,.73-1.71L65.93,4.11c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.17A5.52,5.52,0,0,1,75.53,2.7,9.91,9.91,0,0,1,77.17,8.68ZM74,6.87a9.22,9.22,0,0,0-.53-3.48,2.91,2.91,0,0,0-2.87-2,1.12,1.12,0,0,0-.93.31,1.81,1.81,0,0,0-.35.83l-2.93,14.9a3,3,0,0,0-.05.39c0,.11,0,.21,0,.3a1.17,1.17,0,0,0,.25.84,1.3,1.3,0,0,0,.92.26q3.8,0,5.49-5.42A23.26,23.26,0,0,0,74,6.87Zm11.3,11.65a6.72,6.72,0,0,1-3.29.75,1.3,1.3,0,0,1-1-.26,1,1,0,0,1-.23-.66,3.28,3.28,0,0,1,0-.39,4.88,4.88,0,0,1,.08-.51l1.4-7.2a3.73,3.73,0,0,1,2.43.57A2.87,2.87,0,0,1,85.43,13c0,.14,0,.31,0,.51s0,.45-.06.73l.59.14,1.57-8.07-.59-.1a5.79,5.79,0,0,1-1.46,2.61,6.5,6.5,0,0,1-2.89.51l1.26-6.56a2.41,2.41,0,0,1,.41-1.06c.16-.19.52-.28,1.08-.28,1.65,0,2.75.5,3.29,1.51a7,7,0,0,1,.5,3l.57.13.9-5.6H79.14v.76a3.35,3.35,0,0,1,1.26.31c.19.13.29.44.29.94a5,5,0,0,1-.07.7c0,.28-.09.58-.15.92L77.86,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.13.52v.76H87.91l1.25-5.74-.52-.13A7.69,7.69,0,0,1,85.34,18.52ZM105.8,1.24V.48h-4.37v.76a2.55,2.55,0,0,1,1.16.33,1.77,1.77,0,0,1,.52,1.48A10.58,10.58,0,0,1,103,4.39c-.06.41-.13.87-.23,1.39l-1.66,8.34L96.47.48H92.19v.76a2.61,2.61,0,0,1,1,.24,1.83,1.83,0,0,1,.65,1.06l.1.3L91.55,15a19,19,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.59,2.59,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,0-.79c.06-.43.17-1.09.35-2L94.63,4.38l5.52,16.33h.53l2.95-15a22.93,22.93,0,0,1,.86-3.42,1.42,1.42,0,0,1,1-1Zm11.4,4.9L118,.48H106.28l-.82,5,.55.2a8,8,0,0,1,1.87-3.16,3.7,3.7,0,0,1,2.7-1.06l-3.12,15.85a2.94,2.94,0,0,1-.87,1.85,2.48,2.48,0,0,1-1.34.26v.76h7v-.76a4.24,4.24,0,0,1-1.43-.3c-.23-.13-.34-.45-.34-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.18-1,3-15.1a2.73,2.73,0,0,1,1.79.63c.75.7,1.13,2,1.17,3.94Zm3.57,12.05c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1,2.62-13.24a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H119v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1l-2.61,13.24a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.36,3.36,0,0,1-1.26-.32C120.87,19,120.77,18.69,120.77,18.19Zm28.86-3.71-1.24,5.74H130.3v-.71a2.48,2.48,0,0,0,1.3-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.21-2.15h-4.58l-1.24,3a5.1,5.1,0,0,0-.22.66,2.45,2.45,0,0,0-.1.69c0,.41.09.67.26.78a3.05,3.05,0,0,0,1.11.3v.71h-4.17v-.71a2.66,2.66,0,0,0,.87-.53,5.79,5.79,0,0,0,.92-1.56L132.39.07h.55L135,17a5.53,5.53,0,0,0,.5,2.08,1.67,1.67,0,0,0,1.14.46v0a1.93,1.93,0,0,0,1.12-.52,3.52,3.52,0,0,0,.6-1.6l2.61-13.23c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.73v.76a3.23,3.23,0,0,0-1.49.48,3.06,3.06,0,0,0-.64,1.64l-2.77,14.08c0,.16-.05.3-.07.44s0,.29,0,.47a.79.79,0,0,0,.31.71,1.55,1.55,0,0,0,.87.21,6.83,6.83,0,0,0,3.79-1,8.42,8.42,0,0,0,2.81-3.88ZM131.5,12.91l-.78-7.18-3.14,7.18Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 127.70402, height: 55.84601, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'NotApproved':\n case 'Not Approved':\n {\n stampCollection = {\n iconName: 'Not Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M0,19.46a1.56,1.56,0,0,0,1.16-.9A19.84,19.84,0,0,0,2.1,15L4.42,2.84l-.09-.3a1.82,1.82,0,0,0-.64-1.06,2.41,2.41,0,0,0-1-.24V.48H6.88l4.49,13.64L13,5.78c.09-.52.17-1,.22-1.39a10.11,10.11,0,0,0,.13-1.34,1.83,1.83,0,0,0-.49-1.48,2.49,2.49,0,0,0-1.13-.33V.48H16v.76l-.29.06a1.42,1.42,0,0,0-1,1,23.7,23.7,0,0,0-.84,3.42L11,20.71h-.51L5.1,4.38,3,15c-.17.87-.28,1.53-.33,2a5.32,5.32,0,0,0,0,.79,1.69,1.69,0,0,0,.54,1.44,2.48,2.48,0,0,0,1.1.32v.76H0ZM17.73,4.53C19.54,1.51,21.55,0,23.79,0a4.4,4.4,0,0,1,3.66,1.92,8.52,8.52,0,0,1,1.43,5.19,17.56,17.56,0,0,1-2.53,9.07q-2.7,4.61-6.21,4.6a4.24,4.24,0,0,1-3.6-1.92,8.6,8.6,0,0,1-1.39-5.14A17.68,17.68,0,0,1,17.73,4.53ZM18.37,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29,16.41,16.41,0,0,0,2.06-4.93,35.53,35.53,0,0,0,1.06-4.83A28.26,28.26,0,0,0,25.9,4.6a5.86,5.86,0,0,0-.52-2.55A1.7,1.7,0,0,0,23.78,1Q21.2,1,19.45,7.53a33,33,0,0,0-1.33,8.26A8.15,8.15,0,0,0,18.37,18Zm11.08,1.48a2.34,2.34,0,0,0,1.3-.26,3,3,0,0,0,.85-1.85l3-15.85A3.54,3.54,0,0,0,32,2.56a8,8,0,0,0-1.82,3.16l-.53-.2.8-5H41.81l-.74,5.66-.54-.07c0-1.92-.41-3.24-1.13-3.94a2.6,2.6,0,0,0-1.74-.63L34.79,16.6l-.17,1a2.43,2.43,0,0,0,0,.33,2.26,2.26,0,0,0,0,.26c0,.5.11.82.33.95a3.94,3.94,0,0,0,1.39.3v.76H29.45Zm26.65.76H50.18v-.71a2.28,2.28,0,0,0,1.25-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.2-2.15H47l-1.2,3c-.08.2-.15.42-.22.66a2.84,2.84,0,0,0-.09.69c0,.41.08.67.25.78a2.91,2.91,0,0,0,1.08.3v.71H42.79v-.71a2.44,2.44,0,0,0,.85-.53,5.59,5.59,0,0,0,.9-1.56L52.21.07h.53l2,16.88A5.46,5.46,0,0,0,55.2,19a1.36,1.36,0,0,0,.9.43Zm-4.76-7.31-.76-7.18-3,7.18Zm4.95,6.53a1.82,1.82,0,0,0,1-.5,3.56,3.56,0,0,0,.58-1.59L60.42,4.11c.06-.3.1-.6.15-.9a5.46,5.46,0,0,0,.06-.72c0-.52-.13-.86-.4-1a2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.26.73,1.9,2.07,1.9,4a5.81,5.81,0,0,1-1.54,4.22,5.32,5.32,0,0,1-4,1.58l-.59,0-1.2-.11L61,16.6l-.17,1a2.72,2.72,0,0,0,0,.3,2.81,2.81,0,0,0,0,.29c0,.5.09.81.28.94a3.26,3.26,0,0,0,1.23.31v.76h-6Zm6-9.67.38.06H63a3,3,0,0,0,1.62-.36,2.87,2.87,0,0,0,1-1.18,7.28,7.28,0,0,0,.6-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.44,1.44,0,0,0-1.39-.79.71.71,0,0,0-.65.28,3.7,3.7,0,0,0-.32,1Zm5.61,9.69A1.86,1.86,0,0,0,69,18.94a3.54,3.54,0,0,0,.59-1.59L72.15,4.11q.09-.45.15-.9a5.73,5.73,0,0,0,.07-.72,1.1,1.1,0,0,0-.41-1,2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.27.73,1.9,2.07,1.9,4a5.77,5.77,0,0,1-1.54,4.22,5.31,5.31,0,0,1-4,1.58l-.6,0-1.2-.11L72.74,16.6l-.17,1a2.72,2.72,0,0,0,0,.3c0,.1,0,.19,0,.29,0,.5.1.81.29.94a3.15,3.15,0,0,0,1.23.31v.76h-6.1Zm6.12-9.69.38.06h.33a3,3,0,0,0,1.62-.36,3,3,0,0,0,1-1.18,7.67,7.67,0,0,0,.59-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.43,1.43,0,0,0-1.38-.79.73.73,0,0,0-.66.28,3.7,3.7,0,0,0-.32,1Zm5.57,9.69a1.9,1.9,0,0,0,1.09-.52,3.56,3.56,0,0,0,.58-1.59L83.84,4.11c0-.27.09-.51.13-.71a7.08,7.08,0,0,0,.09-1c0-.47-.1-.77-.28-.9a3.53,3.53,0,0,0-1.22-.3V.48h5.68a6.57,6.57,0,0,1,3,.53q1.92,1,1.92,3.75a6.79,6.79,0,0,1-.32,2,5.23,5.23,0,0,1-1.08,1.9,4.56,4.56,0,0,1-1.25,1,11.62,11.62,0,0,1-1.33.52c.07.3.12.49.14.57l1.59,6.66a4.07,4.07,0,0,0,.69,1.7,1.72,1.72,0,0,0,1.13.41v.76H88.52l-2.23-9.76h-.58L84.49,16.6l-.17,1a1,1,0,0,0,0,.25,2.62,2.62,0,0,0,0,.28c0,.53.09.86.26,1a3.11,3.11,0,0,0,1.24.32v.76H79.63ZM87.55,9.3A2.59,2.59,0,0,0,89,8.17a7.24,7.24,0,0,0,.66-1.62A8.18,8.18,0,0,0,90,4.29a4.32,4.32,0,0,0-.43-2,1.5,1.5,0,0,0-1.45-.81.71.71,0,0,0-.62.26,2.78,2.78,0,0,0-.33,1.05L85.91,9.5A6.63,6.63,0,0,0,87.55,9.3Zm8.72-4.77Q99,0,102.32,0A4.37,4.37,0,0,1,106,1.92a8.46,8.46,0,0,1,1.44,5.19,17.58,17.58,0,0,1-2.54,9.07q-2.7,4.61-6.21,4.6a4.27,4.27,0,0,1-3.6-1.92,8.67,8.67,0,0,1-1.38-5.14A17.68,17.68,0,0,1,96.27,4.53ZM96.9,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29A16.63,16.63,0,0,0,103,13.54a37.1,37.1,0,0,0,1.06-4.83,29.49,29.49,0,0,0,.38-4.11,5.86,5.86,0,0,0-.51-2.55A1.71,1.71,0,0,0,102.31,1C100.6,1,99.15,3.17,98,7.53a33.42,33.42,0,0,0-1.33,8.26A8.57,8.57,0,0,0,96.9,18ZM114.35.48v.76a2.57,2.57,0,0,0-1.08.17,1.07,1.07,0,0,0-.5,1,2.53,2.53,0,0,0,0,.28,2.64,2.64,0,0,0,0,.28l1.07,11.76L117.77,6c.31-.71.59-1.41.84-2.11A5.25,5.25,0,0,0,119,2.19a.85.85,0,0,0-.38-.81,3.09,3.09,0,0,0-.95-.14V.48h4v.76a2.08,2.08,0,0,0-.73.45,5.35,5.35,0,0,0-.82,1.4l-7.79,17.69h-.66L110,5.74A22,22,0,0,0,109.46,2c-.16-.39-.58-.62-1.28-.71V.48Zm5.15,19a1.83,1.83,0,0,0,1.08-.52,3.42,3.42,0,0,0,.59-1.59l2.54-13.24c.06-.34.11-.64.15-.92a4.83,4.83,0,0,0,.06-.7c0-.5-.09-.81-.28-.94a3.14,3.14,0,0,0-1.22-.31V.48h11.12l-.87,5.6L132.11,6a7,7,0,0,0-.49-3c-.52-1-1.59-1.51-3.19-1.51-.55,0-.9.09-1.06.28A2.44,2.44,0,0,0,127,2.74L125.76,9.3a6.21,6.21,0,0,0,2.81-.51A6,6,0,0,0,130,6.18l.58.1L129,14.35l-.56-.14c0-.28,0-.52,0-.73s0-.37,0-.51a2.92,2.92,0,0,0-.61-2.15,3.55,3.55,0,0,0-2.37-.57l-1.36,7.2a4.79,4.79,0,0,0-.07.51,3.28,3.28,0,0,0,0,.39,1,1,0,0,0,.22.66,1.24,1.24,0,0,0,.93.26,6.43,6.43,0,0,0,3.21-.75,7.67,7.67,0,0,0,3.21-4.17l.5.13-1.22,5.74H119.5Zm12.79,0a1.87,1.87,0,0,0,1-.41,3.23,3.23,0,0,0,.71-1.71L136.5,4.11c.07-.38.13-.69.17-1a5.89,5.89,0,0,0,.05-.67c0-.5-.1-.81-.29-.94a3.32,3.32,0,0,0-1.22-.31V.48h6a5.35,5.35,0,0,1,4.63,2.22,10.11,10.11,0,0,1,1.58,6,13.3,13.3,0,0,1-2.34,7.84,8,8,0,0,1-6.86,3.7h-5.93ZM143.87,3.39a2.84,2.84,0,0,0-2.79-2,1.08,1.08,0,0,0-.91.31,1.93,1.93,0,0,0-.34.83L137,17.44a3.1,3.1,0,0,0-.06.39c0,.11,0,.21,0,.3a1.22,1.22,0,0,0,.24.84,1.26,1.26,0,0,0,.9.26q3.67,0,5.33-5.42a23.91,23.91,0,0,0,1-6.94A9.45,9.45,0,0,0,143.87,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 127.70402, height: 55.84601, stampFillColor: '#f6dedd', stampStrokeColor: ''\n };\n }\n break;\n }\n if (stampCollection) {\n stampCollection.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentStampAnnotation = stampCollection;\n return stampCollection;\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.retrievestampAnnotation = function (icontype) {\n if (icontype) {\n var stampCollection = void 0;\n switch (icontype.trim()) {\n // eslint-disable-next-line\n case 'Approved':\n {\n stampCollection = {\n iconName: 'Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M19,20.22H10.55v-.71a4.26,4.26,0,0,0,1.79-.41,1.37,1.37,0,0,0,.53-1.29c0-.22,0-.75-.16-1.58,0-.17-.11-.89-.29-2.15H6.06l-1.72,3a4,4,0,0,0-.31.66,2,2,0,0,0-.14.69c0,.41.12.67.37.78a5.42,5.42,0,0,0,1.53.3v.71H0v-.71A4,4,0,0,0,1.21,19a5.68,5.68,0,0,0,1.28-1.56L13.45.07h.76L17,17a4.35,4.35,0,0,0,.7,2.08,2.4,2.4,0,0,0,1.31.44Zm-6.83-7.31L11.13,5.73,6.76,12.91Zm7.18,6.52a3,3,0,0,0,1.33-.49,3,3,0,0,0,.84-1.59L25.19,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22,9.53,9.53,0,0,1-5.69,1.58l-.85,0-1.71-.11L26,16.6l-.25,1a1,1,0,0,0-.05.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76H19.39Zm8.52-9.66.54.06h.48a5.81,5.81,0,0,0,2.3-.36,3.47,3.47,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,8.94,8.94,0,0,0,.3-2,3.29,3.29,0,0,0-.58-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.71,2.71,0,0,0-.46,1Zm8,9.69a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59L42,4.11c.07-.3.14-.6.2-.9a3.14,3.14,0,0,0,.1-.72,1,1,0,0,0-.58-1,5.68,5.68,0,0,0-1.57-.23V.48h8.47a9.68,9.68,0,0,1,3.57.57,4,4,0,0,1,2.71,4,4.93,4.93,0,0,1-2.2,4.22A9.53,9.53,0,0,1,47,10.87l-.85,0-1.71-.11L42.79,16.6l-.25,1a1.45,1.45,0,0,0,0,.3,2.83,2.83,0,0,0,0,.29c0,.5.14.81.4.94a6.31,6.31,0,0,0,1.76.31v.76h-8.7Zm8.74-9.69.54.06h.48A5.81,5.81,0,0,0,48,9.48a3.41,3.41,0,0,0,1.4-1.18,6.24,6.24,0,0,0,.86-2,9,9,0,0,0,.31-2,3.29,3.29,0,0,0-.59-2,2.3,2.3,0,0,0-2-.79,1.23,1.23,0,0,0-.93.28,2.88,2.88,0,0,0-.46,1Zm7.95,9.69a3.27,3.27,0,0,0,1.56-.52A3.06,3.06,0,0,0,55,17.35L58.64,4.11l.18-.71a4.72,4.72,0,0,0,.13-1c0-.47-.13-.77-.4-.9a6.74,6.74,0,0,0-1.74-.3V.48h8.11A13,13,0,0,1,69.14,1a3.7,3.7,0,0,1,2.74,3.75,4.8,4.8,0,0,1-.46,2,5,5,0,0,1-1.54,1.9,6.55,6.55,0,0,1-1.79,1,19.35,19.35,0,0,1-1.89.52c.1.3.16.49.2.57l2.27,6.66a3.49,3.49,0,0,0,1,1.7,3.08,3.08,0,0,0,1.6.41v.76H65.33l-3.19-9.76h-.83L59.57,16.6l-.25,1a1.87,1.87,0,0,0,0,.25,2.64,2.64,0,0,0,0,.28q0,.8.39,1a5.88,5.88,0,0,0,1.76.32v.76H52.62ZM63.94,9.3a3.79,3.79,0,0,0,2.11-1.13A6,6,0,0,0,67,6.55a5.84,5.84,0,0,0,.44-2.26,3.31,3.31,0,0,0-.61-2,2.47,2.47,0,0,0-2.09-.81,1.25,1.25,0,0,0-.88.26,2.34,2.34,0,0,0-.47,1.05L61.59,9.5A13.42,13.42,0,0,0,63.94,9.3ZM76.39,4.53Q80.26,0,85,0a7.34,7.34,0,0,1,5.23,1.92,6.76,6.76,0,0,1,2,5.19,13.9,13.9,0,0,1-3.62,9.07q-3.86,4.61-8.88,4.6a7.06,7.06,0,0,1-5.13-1.92,6.86,6.86,0,0,1-2-5.14A14,14,0,0,1,76.39,4.53ZM77.3,18a2.56,2.56,0,0,0,2.57,1.78A4.62,4.62,0,0,0,83,18.47,14.42,14.42,0,0,0,86,13.54a27.18,27.18,0,0,0,1.52-4.83,20.67,20.67,0,0,0,.54-4.11,4.38,4.38,0,0,0-.73-2.55A2.62,2.62,0,0,0,85,1q-3.68,0-6.19,6.54a24.29,24.29,0,0,0-1.9,8.26A5.91,5.91,0,0,0,77.3,18ZM102.23.48v.76a5.19,5.19,0,0,0-1.55.17,1,1,0,0,0-.72,1,2.46,2.46,0,0,0,0,.28L100,3l1.52,11.76L107.11,6c.44-.71.84-1.41,1.2-2.11a4.06,4.06,0,0,0,.53-1.66.79.79,0,0,0-.55-.81,6.11,6.11,0,0,0-1.35-.14V.48h5.67v.76a3.31,3.31,0,0,0-1,.45,5.33,5.33,0,0,0-1.18,1.4L99.26,20.78h-.94l-2.25-15A15.49,15.49,0,0,0,95.24,2c-.22-.39-.84-.62-1.83-.71V.48Zm7.35,19a3.19,3.19,0,0,0,1.55-.52,3,3,0,0,0,.84-1.59l3.62-13.24c.09-.34.16-.64.22-.92a3.27,3.27,0,0,0,.09-.7c0-.5-.14-.81-.4-.94a6.13,6.13,0,0,0-1.75-.31V.48h15.89l-1.25,5.6L127.6,6a5.32,5.32,0,0,0-.7-3q-1.12-1.52-4.56-1.51a2.61,2.61,0,0,0-1.51.28,2.12,2.12,0,0,0-.56,1.06L118.52,9.3a12.1,12.1,0,0,0,4-.51,5.8,5.8,0,0,0,2-2.61l.82.1-2.19,8.07-.81-.14c0-.28.07-.52.08-.73s0-.37,0-.51a2.4,2.4,0,0,0-.87-2.15,6.76,6.76,0,0,0-3.38-.57l-1.94,7.2a3.34,3.34,0,0,0-.11.51,3.67,3.67,0,0,0,0,.39.81.81,0,0,0,.32.66,2.3,2.3,0,0,0,1.33.26,12.39,12.39,0,0,0,4.57-.75A8.84,8.84,0,0,0,127,14.35l.72.13-1.74,5.74H109.58Zm18.27,0a3.27,3.27,0,0,0,1.37-.41,2.85,2.85,0,0,0,1-1.71l3.63-13.23c.1-.38.18-.69.23-1a3,3,0,0,0,.09-.67c0-.5-.15-.81-.42-.94A6.38,6.38,0,0,0,132,1.24V.48h8.57c2.9,0,5.1.74,6.62,2.22a8,8,0,0,1,2.26,6,10.72,10.72,0,0,1-3.35,7.84,13.3,13.3,0,0,1-9.8,3.7h-8.47ZM144.4,3.39a4.23,4.23,0,0,0-4-2,2,2,0,0,0-1.29.31,1.74,1.74,0,0,0-.48.83l-4.07,14.9a3.24,3.24,0,0,0-.07.39,1.69,1.69,0,0,0,0,.3,1,1,0,0,0,.36.84,2.27,2.27,0,0,0,1.27.26q5.26,0,7.62-5.42a17.25,17.25,0,0,0,1.43-6.94A7,7,0,0,0,144.4,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 149.474, height: 20.783, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Confidential':\n {\n stampCollection = {\n iconName: 'Confidential',\n // eslint-disable-next-line max-len\n pathdata: 'M13.71,0,12.63,6.9,12,6.73c0-.41,0-.66,0-.73s0-.18,0-.32a6.16,6.16,0,0,0-.79-3.47,2.37,2.37,0,0,0-2-1.14c-1.64,0-3.07,1.51-4.29,4.55a22,22,0,0,0-1.64,8.29c0,2,.34,3.44,1,4.2A3,3,0,0,0,6.5,19.24a4.08,4.08,0,0,0,2.93-1.43,10.47,10.47,0,0,0,1.5-2.09l.64.65A8.84,8.84,0,0,1,9,19.72a5.24,5.24,0,0,1-3.08,1.09,5.16,5.16,0,0,1-4.21-2.08A8.68,8.68,0,0,1,0,13.16,16.5,16.5,0,0,1,2.55,3.92Q5.1,0,8.61,0a6.35,6.35,0,0,1,2.25.43,6.62,6.62,0,0,0,1.38.43.55.55,0,0,0,.5-.23A2.61,2.61,0,0,0,13.06,0ZM27.49,7.11a17.19,17.19,0,0,1-2.61,9.07q-2.77,4.61-6.39,4.6a4.42,4.42,0,0,1-3.7-1.92,8.47,8.47,0,0,1-1.43-5.14A17.31,17.31,0,0,1,16,4.53C17.88,1.51,20,0,22.25,0A4.53,4.53,0,0,1,26,1.92,8.27,8.27,0,0,1,27.49,7.11ZM24.42,4.6a5.71,5.71,0,0,0-.53-2.55A1.76,1.76,0,0,0,22.24,1q-2.65,0-4.45,6.54a31.93,31.93,0,0,0-1.37,8.26A8.15,8.15,0,0,0,16.67,18c.34,1.19,1,1.78,1.85,1.78a2.9,2.9,0,0,0,2.28-1.29,15.85,15.85,0,0,0,2.13-4.93A34.08,34.08,0,0,0,24,8.71,28.5,28.5,0,0,0,24.42,4.6ZM42.75,1.3l.3-.06V.48H38.69v.76a2.55,2.55,0,0,1,1.16.33,1.8,1.8,0,0,1,.51,1.48,10.11,10.11,0,0,1-.13,1.34c-.06.41-.14.87-.24,1.39l-1.65,8.34L33.73.48H29.45v.76a2.66,2.66,0,0,1,1,.24,1.88,1.88,0,0,1,.65,1.06l.09.3L28.81,15a20.72,20.72,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.55,2.55,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,.05-.79c.06-.43.17-1.09.34-2L31.89,4.38l5.52,16.33h.52l3-15a22.58,22.58,0,0,1,.87-3.42A1.42,1.42,0,0,1,42.75,1.3ZM55.53.48H44.23v.76a3.63,3.63,0,0,1,1.26.3c.19.13.29.42.29.9a7.08,7.08,0,0,1-.09,1c0,.2-.08.44-.13.71L43,17.34a3.47,3.47,0,0,1-.59,1.58,1.91,1.91,0,0,1-1.13.54v.76h6.29v-.76a2.13,2.13,0,0,1-1-.19A1.23,1.23,0,0,1,46,18.1c0-.1,0-.21,0-.31s0-.23.05-.35l1.4-7.21a3.15,3.15,0,0,1,2.37.64A3.21,3.21,0,0,1,50.38,13c0,.11,0,.28,0,.49s0,.46-.06.75l.58.14,1.58-8.07-.59-.1a5.79,5.79,0,0,1-1.43,2.59,6.17,6.17,0,0,1-2.77.52l1.26-6.54a2.06,2.06,0,0,1,.42-1.08,1.39,1.39,0,0,1,1-.26c1.62,0,2.7.51,3.24,1.54a7.11,7.11,0,0,1,.49,3l.57.13Zm3.69,17.71c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1L62.06,3.36a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H57.44v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1L56.16,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.3,3.3,0,0,1-1.26-.32C59.32,19,59.22,18.69,59.22,18.19Zm18-9.51a13,13,0,0,1-2.42,7.84,8.31,8.31,0,0,1-7,3.7H61.6v-.76a2,2,0,0,0,1-.41,3.14,3.14,0,0,0,.73-1.71L65.93,4.11c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.17A5.52,5.52,0,0,1,75.53,2.7,9.91,9.91,0,0,1,77.17,8.68ZM74,6.87a9.22,9.22,0,0,0-.53-3.48,2.91,2.91,0,0,0-2.87-2,1.12,1.12,0,0,0-.93.31,1.81,1.81,0,0,0-.35.83l-2.93,14.9a3,3,0,0,0-.05.39c0,.11,0,.21,0,.3a1.17,1.17,0,0,0,.25.84,1.3,1.3,0,0,0,.92.26q3.8,0,5.49-5.42A23.26,23.26,0,0,0,74,6.87Zm11.3,11.65a6.72,6.72,0,0,1-3.29.75,1.3,1.3,0,0,1-1-.26,1,1,0,0,1-.23-.66,3.28,3.28,0,0,1,0-.39,4.88,4.88,0,0,1,.08-.51l1.4-7.2a3.73,3.73,0,0,1,2.43.57A2.87,2.87,0,0,1,85.43,13c0,.14,0,.31,0,.51s0,.45-.06.73l.59.14,1.57-8.07-.59-.1a5.79,5.79,0,0,1-1.46,2.61,6.5,6.5,0,0,1-2.89.51l1.26-6.56a2.41,2.41,0,0,1,.41-1.06c.16-.19.52-.28,1.08-.28,1.65,0,2.75.5,3.29,1.51a7,7,0,0,1,.5,3l.57.13.9-5.6H79.14v.76a3.35,3.35,0,0,1,1.26.31c.19.13.29.44.29.94a5,5,0,0,1-.07.7c0,.28-.09.58-.15.92L77.86,17.35a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.13.52v.76H87.91l1.25-5.74-.52-.13A7.69,7.69,0,0,1,85.34,18.52ZM105.8,1.24V.48h-4.37v.76a2.55,2.55,0,0,1,1.16.33,1.77,1.77,0,0,1,.52,1.48A10.58,10.58,0,0,1,103,4.39c-.06.41-.13.87-.23,1.39l-1.66,8.34L96.47.48H92.19v.76a2.61,2.61,0,0,1,1,.24,1.83,1.83,0,0,1,.65,1.06l.1.3L91.55,15a19,19,0,0,1-1,3.61,1.61,1.61,0,0,1-1.19.9v.76h4.42v-.76a2.59,2.59,0,0,1-1.13-.32,1.67,1.67,0,0,1-.56-1.44,7.13,7.13,0,0,1,0-.79c.06-.43.17-1.09.35-2L94.63,4.38l5.52,16.33h.53l2.95-15a22.93,22.93,0,0,1,.86-3.42,1.42,1.42,0,0,1,1-1Zm11.4,4.9L118,.48H106.28l-.82,5,.55.2a8,8,0,0,1,1.87-3.16,3.7,3.7,0,0,1,2.7-1.06l-3.12,15.85a2.94,2.94,0,0,1-.87,1.85,2.48,2.48,0,0,1-1.34.26v.76h7v-.76a4.24,4.24,0,0,1-1.43-.3c-.23-.13-.34-.45-.34-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.18-1,3-15.1a2.73,2.73,0,0,1,1.79.63c.75.7,1.13,2,1.17,3.94Zm3.57,12.05c0-.08,0-.17,0-.27s0-.2,0-.3l.17-1,2.62-13.24a3.44,3.44,0,0,1,.59-1.6,2,2,0,0,1,1.12-.52V.48H119v.76a3.47,3.47,0,0,1,1.26.31c.2.13.3.44.3.94a4.25,4.25,0,0,1-.06.67c0,.26-.09.57-.17,1l-2.61,13.24a3.52,3.52,0,0,1-.6,1.59,2,2,0,0,1-1.12.52v.76h6.33v-.76a3.36,3.36,0,0,1-1.26-.32C120.87,19,120.77,18.69,120.77,18.19Zm28.86-3.71-1.24,5.74H130.3v-.71a2.48,2.48,0,0,0,1.3-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.21-2.15h-4.58l-1.24,3a5.1,5.1,0,0,0-.22.66,2.45,2.45,0,0,0-.1.69c0,.41.09.67.26.78a3.05,3.05,0,0,0,1.11.3v.71h-4.17v-.71a2.66,2.66,0,0,0,.87-.53,5.79,5.79,0,0,0,.92-1.56L132.39.07h.55L135,17a5.53,5.53,0,0,0,.5,2.08,1.67,1.67,0,0,0,1.14.46v0a1.93,1.93,0,0,0,1.12-.52,3.52,3.52,0,0,0,.6-1.6l2.61-13.23c.08-.38.13-.69.17-1a4.36,4.36,0,0,0,.06-.67c0-.5-.1-.81-.3-.94a3.47,3.47,0,0,0-1.26-.31V.48h6.73v.76a3.23,3.23,0,0,0-1.49.48,3.06,3.06,0,0,0-.64,1.64l-2.77,14.08c0,.16-.05.3-.07.44s0,.29,0,.47a.79.79,0,0,0,.31.71,1.55,1.55,0,0,0,.87.21,6.83,6.83,0,0,0,3.79-1,8.42,8.42,0,0,0,2.81-3.88ZM131.5,12.91l-.78-7.18-3.14,7.18Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 149.633, height: 20.811, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Witness':\n {\n stampCollection = {\n iconName: 'Witness',\n // eslint-disable-next-line max-len\n pathdata: 'M19.63,2.67,12.77,16.84h-.69L10.63,5.17,5.05,16.84H4.36L2.5,2.92A3.13,3.13,0,0,0,2,1.35,2.38,2.38,0,0,0,.63.91V.33H7.3V1a2.27,2.27,0,0,0-.92.17A1.11,1.11,0,0,0,5.84,2.2v.16c0,.05,0,.13,0,.22L6.81,11l3.57-7.48a.79.79,0,0,0,0-.23,2.78,2.78,0,0,0-.53-2A2.23,2.23,0,0,0,8.68.91V.33h6.45V.91A2.42,2.42,0,0,0,14,1.2c-.23.16-.34.5-.34,1,0,.11,0,.26,0,.46s.07.73.12,1.21l.8,7L18.3,3.11c.09-.19.17-.4.25-.62a2.11,2.11,0,0,0,.11-.65.73.73,0,0,0-.4-.76,2.73,2.73,0,0,0-1.1-.17V.33h4.47V.91a1.92,1.92,0,0,0-.91.3A3.66,3.66,0,0,0,19.63,2.67ZM29.76.33H22.62V1A5.07,5.07,0,0,1,24,1.2c.23.11.34.36.34.77a2.86,2.86,0,0,1-.06.54c0,.21-.11.47-.19.77L21.17,14.05a2.47,2.47,0,0,1-.68,1.29,2.62,2.62,0,0,1-1.27.42v.62h7.15v-.62A5.09,5.09,0,0,1,25,15.51c-.22-.11-.33-.37-.33-.77a2,2,0,0,1,0-.23c0-.08,0-.16,0-.24l.19-.83,3-10.77a2.5,2.5,0,0,1,.66-1.3A2.76,2.76,0,0,1,29.76,1ZM41.9,4.88l.63,0,.86-4.6H30.2l-.93,4.1.62.16A6.6,6.6,0,0,1,32,2a5.22,5.22,0,0,1,3.06-.86L31.53,14.05a2.24,2.24,0,0,1-1,1.5,3.67,3.67,0,0,1-1.51.21v.62H37v-.62a6,6,0,0,1-1.62-.24c-.26-.1-.39-.36-.39-.77,0-.07,0-.14,0-.21s0-.16.05-.27l.2-.83L38.57,1.16a3.76,3.76,0,0,1,2,.52A3.69,3.69,0,0,1,41.9,4.88ZM59.24,1,59.58,1V.33H54.65V1A3.78,3.78,0,0,1,56,1.22a1.25,1.25,0,0,1,.58,1.2,6.26,6.26,0,0,1-.15,1.09c-.07.33-.16.71-.27,1.13l-1.87,6.79L49.05.33H44.21V1a3.51,3.51,0,0,1,1.13.2,1.51,1.51,0,0,1,.74.85l.1.25L43.49,12.1A13.5,13.5,0,0,1,42.4,15a1.87,1.87,0,0,1-1.35.72v.62h5v-.62a3.62,3.62,0,0,1-1.28-.26,1.19,1.19,0,0,1-.64-1.17,3.55,3.55,0,0,1,.06-.64q.11-.53.39-1.59L47,3.5,53.2,16.78h.59L57.13,4.6a15.29,15.29,0,0,1,1-2.78A1.51,1.51,0,0,1,59.24,1Zm7.26.31a2.11,2.11,0,0,1,1.23-.23c1.87,0,3.1.41,3.71,1.23A4.39,4.39,0,0,1,72,4.78l.64.11,1-4.56H60.75V1a5,5,0,0,1,1.42.25c.22.11.32.36.32.77a2.73,2.73,0,0,1-.07.57c0,.22-.1.47-.17.74l-3,10.77a2.47,2.47,0,0,1-.68,1.29,2.62,2.62,0,0,1-1.27.42v.62h13.3l1.42-4.66-.59-.11A7.1,7.1,0,0,1,67.75,15a10,10,0,0,1-3.72.61A1.86,1.86,0,0,1,63,15.4a.67.67,0,0,1-.26-.54,2.36,2.36,0,0,1,0-.32,3.38,3.38,0,0,1,.09-.41l1.58-5.86a5.48,5.48,0,0,1,2.75.47,2,2,0,0,1,.71,1.75c0,.11,0,.25,0,.41s0,.37-.06.6l.65.11L70.2,5.05,69.54,5a4.69,4.69,0,0,1-1.65,2.12,10.06,10.06,0,0,1-3.26.41l1.42-5.33A1.75,1.75,0,0,1,66.5,1.31ZM80.88.83a2.77,2.77,0,0,1,2.46,1.26A4.36,4.36,0,0,1,84,4l.08.78.62.08,1-4.8H85a1.77,1.77,0,0,1-.38.43A1,1,0,0,1,84,.67a2.76,2.76,0,0,1-.37,0l-.41-.1-.61-.2a4.78,4.78,0,0,0-.79-.2A6.71,6.71,0,0,0,80.46,0a4.76,4.76,0,0,0-3.62,1.36,4.61,4.61,0,0,0-1.29,3.29q0,2.05,2.94,4.47t2.94,3.82a3.19,3.19,0,0,1-.79,2.14,2.8,2.8,0,0,1-2.23.92,3.43,3.43,0,0,1-1.5-.33,3.82,3.82,0,0,1-2-2.5,10.33,10.33,0,0,1-.2-1.67L74,11.45l-.87,5.38h.73a2.85,2.85,0,0,1,.38-.67A.75.75,0,0,1,74.8,16a1.12,1.12,0,0,1,.27,0l.42.15.61.22a8.62,8.62,0,0,0,1.3.35,7.53,7.53,0,0,0,1.32.12,5.48,5.48,0,0,0,4.11-1.53,4.77,4.77,0,0,0,1.49-3.43,4.59,4.59,0,0,0-.77-2.63,9.31,9.31,0,0,0-1.87-2L79.61,5.5a4.31,4.31,0,0,1-.74-.77,2.55,2.55,0,0,1-.43-1.45,2.68,2.68,0,0,1,.42-1.44A2.23,2.23,0,0,1,80.88.83Zm12.31,0a2.8,2.8,0,0,1,2.47,1.26A4.49,4.49,0,0,1,96.35,4l.08.78.62.08,1-4.8h-.71a1.62,1.62,0,0,1-.39.43,1,1,0,0,1-.64.18,2.9,2.9,0,0,1-.38,0l-.41-.1-.61-.2a4.65,4.65,0,0,0-.78-.2A6.88,6.88,0,0,0,92.77,0a4.73,4.73,0,0,0-3.61,1.36,4.57,4.57,0,0,0-1.3,3.29q0,2.05,2.94,4.47c2,1.54,3,2.81,3,3.82a3.2,3.2,0,0,1-.8,2.14,2.78,2.78,0,0,1-2.23.92,3.36,3.36,0,0,1-1.49-.33A3.68,3.68,0,0,1,88,14.73a3.76,3.76,0,0,1-.81-1.56A10.6,10.6,0,0,1,87,11.5l-.7-.05-.86,5.38h.72a2.85,2.85,0,0,1,.38-.67.78.78,0,0,1,.57-.19,1.12,1.12,0,0,1,.27,0l.42.15.61.22a8.74,8.74,0,0,0,1.31.35,7.37,7.37,0,0,0,1.32.12,5.49,5.49,0,0,0,4.11-1.53,4.81,4.81,0,0,0,1.49-3.43,4.67,4.67,0,0,0-.77-2.63A9.57,9.57,0,0,0,94,7.2L91.93,5.5a4,4,0,0,1-.74-.77,2.48,2.48,0,0,1-.43-1.45,2.68,2.68,0,0,1,.42-1.44A2.2,2.2,0,0,1,93.19.83Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 97.39, height: 16.84, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'InitialHere':\n case 'Initial Here':\n {\n stampCollection = {\n iconName: 'Initial Here',\n // eslint-disable-next-line max-len\n pathdata: 'M6.36,15.51a5.09,5.09,0,0,0,1.42.25v.62H.63v-.62a2.62,2.62,0,0,0,1.27-.42,2.47,2.47,0,0,0,.68-1.29l3-10.77c.08-.3.15-.56.19-.77A2.86,2.86,0,0,0,5.78,2c0-.41-.11-.66-.34-.77A5.07,5.07,0,0,0,4,1V.33h7.14V1a2.76,2.76,0,0,0-1.27.42,2.5,2.5,0,0,0-.66,1.3l-3,10.77-.19.83c0,.08,0,.16,0,.24a2,2,0,0,0,0,.23C6,15.14,6.14,15.4,6.36,15.51ZM27,1,27.36,1V.33H22.43V1a3.78,3.78,0,0,1,1.31.27,1.25,1.25,0,0,1,.58,1.2,6.26,6.26,0,0,1-.15,1.09c-.07.33-.16.71-.27,1.13L22,11.43,16.83.33H12V1a3.49,3.49,0,0,1,1.12.2,1.51,1.51,0,0,1,.74.85l.11.25-2.7,9.85A13,13,0,0,1,10.18,15a1.85,1.85,0,0,1-1.35.72v.62h5v-.62a3.62,3.62,0,0,1-1.28-.26,1.19,1.19,0,0,1-.63-1.17,4.72,4.72,0,0,1,.05-.64q.1-.53.39-1.59l2.39-8.6L21,16.78h.6L24.91,4.6a15.29,15.29,0,0,1,1-2.78A1.51,1.51,0,0,1,27,1ZM35.78.33H28.64V1a5.16,5.16,0,0,1,1.41.25c.23.11.34.36.34.77a2.86,2.86,0,0,1-.06.54c0,.21-.11.47-.19.77L27.19,14.05a2.47,2.47,0,0,1-.68,1.29,2.66,2.66,0,0,1-1.27.42v.62h7.15v-.62A5.09,5.09,0,0,1,31,15.51c-.22-.11-.33-.37-.33-.77a2,2,0,0,1,0-.23,2,2,0,0,1,0-.24l.19-.83,3-10.77a2.5,2.5,0,0,1,.66-1.3A2.76,2.76,0,0,1,35.78,1Zm12.76,4.6.87-4.6H36.22l-.93,4.1.62.16A6.52,6.52,0,0,1,38,2a5.21,5.21,0,0,1,3-.86L37.55,14.05a2.24,2.24,0,0,1-1,1.5,3.7,3.7,0,0,1-1.51.21v.62H43v-.62a5.79,5.79,0,0,1-1.61-.24c-.26-.1-.39-.36-.39-.77a1.48,1.48,0,0,1,0-.21,2,2,0,0,1,0-.27l.2-.83L44.58,1.16a3.77,3.77,0,0,1,2,.52,3.74,3.74,0,0,1,1.31,3.2Zm4,9.81a.93.93,0,0,1,0-.23,2,2,0,0,1,0-.24l.18-.83,3-10.77a2.42,2.42,0,0,1,.67-1.3A2.72,2.72,0,0,1,57.72,1V.33H50.57V1A5.26,5.26,0,0,1,52,1.2c.23.11.34.36.34.77a2.28,2.28,0,0,1-.07.54,7.71,7.71,0,0,1-.19.77l-3,10.77a2.4,2.4,0,0,1-.68,1.29,2.58,2.58,0,0,1-1.26.42v.62h7.14v-.62a5.07,5.07,0,0,1-1.41-.25C52.69,15.4,52.58,15.14,52.58,14.74Zm32-3.13.57.11-1.4,4.66H63.34v-.57a3.65,3.65,0,0,0,1.46-.34c.29-.16.43-.51.43-1,0-.18,0-.61-.13-1.29,0-.14-.09-.73-.23-1.75H59.69l-1.4,2.44a3.38,3.38,0,0,0-.25.54,1.64,1.64,0,0,0-.11.56q0,.5.3.63a4.41,4.41,0,0,0,1.25.25v.57H54.76v-.57a3.36,3.36,0,0,0,1-.43,4.58,4.58,0,0,0,1-1.27L65.7,0h.62l2.3,13.72a3.49,3.49,0,0,0,.56,1.7,2.34,2.34,0,0,0,1.29.37v0a2.58,2.58,0,0,0,1.26-.42,2.46,2.46,0,0,0,.68-1.3L75.35,3.28c.09-.3.16-.56.2-.77A2.86,2.86,0,0,0,75.61,2c0-.41-.11-.66-.34-.77A5.17,5.17,0,0,0,73.85,1V.33h7.61V1a4.77,4.77,0,0,0-1.69.39A2.27,2.27,0,0,0,79,2.67L75.92,14.12c0,.13,0,.25-.07.36a2.21,2.21,0,0,0,0,.39.59.59,0,0,0,.35.57,2.33,2.33,0,0,0,1,.17,10.06,10.06,0,0,0,4.28-.84A7.67,7.67,0,0,0,84.6,11.61ZM64.7,10.44,63.81,4.6l-3.55,5.84Zm38,4.32a.71.71,0,0,1,0-.16s0-.16.07-.34l.2-.83L106,2.67a2.43,2.43,0,0,1,.79-1.39A2.78,2.78,0,0,1,107.9,1V.33h-7.15V1a4.45,4.45,0,0,1,1.27.19.81.81,0,0,1,.47.83,2.73,2.73,0,0,1-.07.57c0,.22-.1.47-.17.74l-1.14,4.16h-5.7L96.7,2.67a2.27,2.27,0,0,1,.73-1.33A4.77,4.77,0,0,1,99.12,1V.33H91.51V1a5.09,5.09,0,0,1,1.42.25c.22.11.33.36.33.77a2.93,2.93,0,0,1-.08.58c-.05.24-.1.48-.17.73L90.07,14a2.73,2.73,0,0,1-.65,1.29,2.47,2.47,0,0,1-1.3.43v.62h7.15v-.62a5.13,5.13,0,0,1-1.42-.24c-.21-.1-.31-.34-.31-.72a3.11,3.11,0,0,1,0-.57c0-.16.1-.43.19-.8L95.12,8.5h5.7L99.31,14a2.21,2.21,0,0,1-.74,1.33,4.36,4.36,0,0,1-1.69.39v.62h7.63v-.62a4.72,4.72,0,0,1-1.25-.17A.8.8,0,0,1,102.73,14.76Zm13.38.24a10.07,10.07,0,0,1-3.72.61,1.86,1.86,0,0,1-1.08-.21.67.67,0,0,1-.26-.54,2.36,2.36,0,0,1,0-.32,3.38,3.38,0,0,1,.09-.41l1.58-5.86a5.51,5.51,0,0,1,2.75.47,2,2,0,0,1,.7,1.75c0,.11,0,.25,0,.41s0,.37-.07.6l.66.11,1.78-6.56L117.89,5a4.63,4.63,0,0,1-1.65,2.12A10,10,0,0,1,113,7.5l1.43-5.33a1.6,1.6,0,0,1,.45-.86,2.07,2.07,0,0,1,1.23-.23c1.86,0,3.1.41,3.71,1.23a4.32,4.32,0,0,1,.56,2.47l.65.11,1-4.56H109.1V1a5.1,5.1,0,0,1,1.43.25c.21.11.32.36.32.77a3.63,3.63,0,0,1-.07.57c0,.22-.11.47-.18.74l-2.95,10.77a2.4,2.4,0,0,1-.68,1.29,2.58,2.58,0,0,1-1.26.42v.62H119l1.42-4.66-.58-.11A7.17,7.17,0,0,1,116.11,15ZM144.36,2.17,142.93,7.5a10.13,10.13,0,0,0,3.27-.41A4.69,4.69,0,0,0,147.84,5l.67.08-1.78,6.56-.66-.11c0-.23.06-.43.07-.6s0-.3,0-.41a2,2,0,0,0-.7-1.75,5.51,5.51,0,0,0-2.75-.47l-1.58,5.86a3.38,3.38,0,0,0-.09.41,2.36,2.36,0,0,0,0,.32.67.67,0,0,0,.26.54,1.86,1.86,0,0,0,1.08.21,10.07,10.07,0,0,0,3.72-.61,7.14,7.14,0,0,0,3.73-3.39l.58.11L149,16.38H131l-2.59-7.93h-.68l-1.42,5-.2.83,0,.2a1.77,1.77,0,0,0,0,.23c0,.43.1.7.31.81a4.87,4.87,0,0,0,1.43.25v.62h-7.14v-.62a2.58,2.58,0,0,0,1.26-.42,2.4,2.4,0,0,0,.68-1.29l3-10.77.15-.57a4.09,4.09,0,0,0,.1-.79c0-.38-.11-.62-.32-.72A4.8,4.8,0,0,0,124,1V.33h6.6a10.58,10.58,0,0,1,3.42.43,3,3,0,0,1,2.24,3.05,4,4,0,0,1-.38,1.6A4,4,0,0,1,134.66,7a5.47,5.47,0,0,1-1.45.8c-.33.11-.85.25-1.54.42a4.73,4.73,0,0,0,.16.46l1.85,5.42a2.81,2.81,0,0,0,.8,1.38,2.42,2.42,0,0,0,1.23.32,2.53,2.53,0,0,0,1.22-.41,2.47,2.47,0,0,0,.68-1.29l2.94-10.77c.07-.27.13-.52.18-.74A2.73,2.73,0,0,0,140.8,2c0-.41-.11-.66-.32-.77A5.1,5.1,0,0,0,139.05,1V.33H152l-1,4.56-.65-.11a4.32,4.32,0,0,0-.56-2.47c-.61-.82-1.85-1.23-3.71-1.23a2.07,2.07,0,0,0-1.23.23A1.67,1.67,0,0,0,144.36,2.17ZM131.54,6.59a5,5,0,0,0,.77-1.32,4.68,4.68,0,0,0,.36-1.84,2.74,2.74,0,0,0-.5-1.67,2,2,0,0,0-1.7-.66,1,1,0,0,0-.72.22,2,2,0,0,0-.38.85l-1.45,5.49a10.33,10.33,0,0,0,1.91-.16A3.07,3.07,0,0,0,131.54,6.59Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 151.345, height: 16.781, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'SignHere':\n case 'Sign Here':\n {\n stampCollection = {\n iconName: 'Sign Here',\n // eslint-disable-next-line max-len\n pathdata: 'M6.38,1.9A2.56,2.56,0,0,0,6,3.34a2.49,2.49,0,0,0,.44,1.45,3.9,3.9,0,0,0,.73.76l2.07,1.7a9.34,9.34,0,0,1,1.87,2.06,4.6,4.6,0,0,1,.78,2.63,4.78,4.78,0,0,1-1.5,3.43A5.46,5.46,0,0,1,6.23,16.9a7.34,7.34,0,0,1-1.31-.12,7.48,7.48,0,0,1-1.31-.36L3,16.2l-.42-.14a1.12,1.12,0,0,0-.27,0,.71.71,0,0,0-.57.19,2.85,2.85,0,0,0-.38.67H.63l.87-5.38.69,0a10.34,10.34,0,0,0,.2,1.68,3.82,3.82,0,0,0,2,2.5,3.42,3.42,0,0,0,1.5.32,2.76,2.76,0,0,0,2.23-.92A3.14,3.14,0,0,0,8.94,13c0-1-1-2.29-2.94-3.82S3.06,6.08,3.06,4.71A4.59,4.59,0,0,1,4.35,1.42,4.76,4.76,0,0,1,8,.06,6.71,6.71,0,0,1,9.29.19a4.78,4.78,0,0,1,.79.2l.61.2.41.1a2.76,2.76,0,0,0,.37,0,1,1,0,0,0,.65-.18A1.75,1.75,0,0,0,12.5.12h.72l-1,4.8-.62-.08-.09-.79a4.45,4.45,0,0,0-.69-1.91A2.78,2.78,0,0,0,8.39.89,2.2,2.2,0,0,0,6.38,1.9ZM22.8.39H15.66V1a4.71,4.71,0,0,1,1.41.25c.23.11.34.36.34.77a2.86,2.86,0,0,1-.06.54c0,.21-.11.47-.19.77L14.21,14.11a2.47,2.47,0,0,1-.68,1.29,2.62,2.62,0,0,1-1.27.42v.62h7.15v-.62A4.63,4.63,0,0,1,18,15.56c-.22-.1-.33-.36-.33-.77a1.8,1.8,0,0,1,0-.22c0-.08,0-.16,0-.24l.19-.83,3-10.77a2.5,2.5,0,0,1,.66-1.3A2.76,2.76,0,0,1,22.8,1ZM38.09,9.14V8.52H31.18v.62a5.05,5.05,0,0,1,1.44.28c.22.1.32.35.32.75a13.35,13.35,0,0,1-.54,2.54,19.13,19.13,0,0,1-.54,1.87A1.85,1.85,0,0,1,31,15.66a3.77,3.77,0,0,1-1.78.35A3.71,3.71,0,0,1,27,15.38c-1.09-.77-1.64-2.13-1.64-4.08a13.74,13.74,0,0,1,1.78-6.69q2.05-3.72,5-3.72a2.93,2.93,0,0,1,3,1.86,6.09,6.09,0,0,1,.4,2.48l.69.08L37.44,0h-.71a2.44,2.44,0,0,1-.41.53.82.82,0,0,1-.58.2A9.14,9.14,0,0,1,34.33.36,9.23,9.23,0,0,0,31.73,0a9.4,9.4,0,0,0-7.46,3.42,10.46,10.46,0,0,0-2.65,7,5.88,5.88,0,0,0,2.2,4.83,7.77,7.77,0,0,0,5,1.64A13.06,13.06,0,0,0,32,16.52a14.26,14.26,0,0,0,2.33-.75l.67-.3,1.2-4.36a4.15,4.15,0,0,1,.62-1.59A2.28,2.28,0,0,1,38.09,9.14ZM50.36,1a3.36,3.36,0,0,1,1.31.27,1.25,1.25,0,0,1,.58,1.2,6.26,6.26,0,0,1-.15,1.09c-.07.33-.16.7-.27,1.13L50,11.48,44.76.39H39.93V1a3.49,3.49,0,0,1,1.12.2,1.51,1.51,0,0,1,.74.85l.1.25L39.2,12.16a12.62,12.62,0,0,1-1.09,2.93,1.86,1.86,0,0,1-1.35.73v.62h5v-.62a3.62,3.62,0,0,1-1.28-.26,1.21,1.21,0,0,1-.63-1.17,4.72,4.72,0,0,1,0-.64q.1-.52.39-1.59l2.39-8.6,6.23,13.28h.6L52.84,4.66a15.29,15.29,0,0,1,1-2.78A1.52,1.52,0,0,1,55,1.05l.34,0V.39H50.36Zm22.33,13.8a.66.66,0,0,1,0-.15c0-.05,0-.16.07-.34l.2-.83L75.91,2.73a2.43,2.43,0,0,1,.79-1.39A2.78,2.78,0,0,1,77.86,1V.39H70.71V1A4.45,4.45,0,0,1,72,1.2a.81.81,0,0,1,.47.83,2.73,2.73,0,0,1-.07.57c0,.22-.1.47-.17.74L71.07,7.5h-5.7l1.29-4.77a2.27,2.27,0,0,1,.73-1.33A4.36,4.36,0,0,1,69.08,1V.39H61.47V1a4.73,4.73,0,0,1,1.42.25c.22.11.33.36.33.77a2.93,2.93,0,0,1-.08.58c0,.24-.1.48-.17.73L60,14.1a2.73,2.73,0,0,1-.65,1.29,2.47,2.47,0,0,1-1.3.43v.62h7.15v-.62a5.13,5.13,0,0,1-1.42-.24c-.21-.1-.31-.34-.31-.72a3,3,0,0,1,0-.57c0-.16.1-.43.19-.8l1.35-4.94h5.7L69.27,14.1a2.21,2.21,0,0,1-.74,1.33,4.77,4.77,0,0,1-1.69.39v.62h7.63v-.62a4.72,4.72,0,0,1-1.25-.17A.82.82,0,0,1,72.69,14.81Zm13.38.25a10.28,10.28,0,0,1-3.72.61,1.86,1.86,0,0,1-1.08-.21.67.67,0,0,1-.26-.54,2.23,2.23,0,0,1,0-.32,3.38,3.38,0,0,1,.09-.41l1.58-5.86a5.51,5.51,0,0,1,2.75.47,2,2,0,0,1,.7,1.75c0,.11,0,.24,0,.41s0,.37-.07.59l.66.12,1.78-6.56L87.85,5a4.75,4.75,0,0,1-1.64,2.12,10.13,10.13,0,0,1-3.27.41l1.43-5.33a1.56,1.56,0,0,1,.45-.86,2.07,2.07,0,0,1,1.23-.23c1.86,0,3.1.41,3.71,1.23a4.32,4.32,0,0,1,.56,2.47L91,5,92,.39H79.06V1a4.75,4.75,0,0,1,1.43.25c.21.11.32.36.32.77a2.73,2.73,0,0,1-.07.57c0,.22-.11.47-.18.74l-3,10.77a2.4,2.4,0,0,1-.68,1.29,2.58,2.58,0,0,1-1.26.42v.62H89l1.41-4.66-.58-.11A7.22,7.22,0,0,1,86.07,15.06ZM114.32,2.23l-1.43,5.33a10.13,10.13,0,0,0,3.27-.41A4.75,4.75,0,0,0,117.8,5l.67.08-1.78,6.56-.66-.12c0-.22.06-.42.07-.59s0-.3,0-.41a2,2,0,0,0-.71-1.75,5.51,5.51,0,0,0-2.75-.47l-1.58,5.86a3.38,3.38,0,0,0-.09.41,2.23,2.23,0,0,0,0,.32.67.67,0,0,0,.26.54,1.86,1.86,0,0,0,1.08.21,10.28,10.28,0,0,0,3.72-.61,7.22,7.22,0,0,0,3.73-3.39l.58.11-1.41,4.66h-18L98.33,8.51h-.68l-1.42,5-.2.83,0,.2a1.77,1.77,0,0,0,0,.23c0,.43.1.7.31.8a4.51,4.51,0,0,0,1.43.26v.62H90.59v-.62a2.58,2.58,0,0,0,1.26-.42,2.4,2.4,0,0,0,.68-1.29l3-10.77.15-.57a4.09,4.09,0,0,0,.1-.79c0-.38-.11-.62-.32-.73A5.3,5.3,0,0,0,94,1V.39h6.6A10.58,10.58,0,0,1,104,.82a3,3,0,0,1,2.24,3.05,4,4,0,0,1-.38,1.6A4.06,4.06,0,0,1,104.62,7a5.32,5.32,0,0,1-1.45.8c-.33.11-.84.25-1.54.42.08.24.13.4.16.46l1.85,5.42a2.81,2.81,0,0,0,.8,1.38,2.42,2.42,0,0,0,1.23.32,2.64,2.64,0,0,0,1.22-.41,2.47,2.47,0,0,0,.68-1.29l2.94-10.77c.07-.27.13-.52.18-.74a2.73,2.73,0,0,0,.07-.57c0-.41-.11-.66-.32-.77A4.75,4.75,0,0,0,109,1V.39h12.93l-1,4.56-.64-.11a4.39,4.39,0,0,0-.57-2.47c-.61-.82-1.85-1.23-3.71-1.23a2.07,2.07,0,0,0-1.23.23A1.7,1.7,0,0,0,114.32,2.23ZM101.5,6.64a4.76,4.76,0,0,0,.77-1.31,4.68,4.68,0,0,0,.36-1.84,2.72,2.72,0,0,0-.5-1.67,2,2,0,0,0-1.7-.66.94.94,0,0,0-.71.22,1.81,1.81,0,0,0-.39.85L97.88,7.72a10.33,10.33,0,0,0,1.91-.16A3,3,0,0,0,101.5,6.64Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 121.306, height: 16.899, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Accepted':\n {\n stampCollection = {\n iconName: 'Accepted',\n // eslint-disable-next-line max-len\n pathdata: 'M22.409294,0.00021190348 C22.64747,0.0056831966 22.875833,0.11701412 23.023336,0.32638185 23.631345,1.1873664 25.36437,2.8183636 27.4584,4.1123583 28.000408,4.4483535 28.015407,5.227338 27.477398,5.5713293 23.803344,7.9272954 12.881201,15.464245 9.4751583,23.800168 9.2091556,24.452168 8.3321453,24.542164 7.9521352,23.95016 6.0691143,21.014182 1.8990528,14.526234 0.095028103,11.832258 -0.13796928,11.485277 0.081027784,11.023275 0.49603404,10.97927 1.9670546,10.824272 4.8490969,10.421291,6.5811144,9.5293013 6.9811216,9.3233086 7.4691268,9.5782811 7.5601316,10.019287 7.847138,11.400286 8.4021459,13.83224 8.952148,14.781236 8.952148,14.781236 16.385246,3.2303471 21.985326,0.10638282 22.119951,0.031756414 22.266389,-0.003070501 22.409294,0.00021190348 z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 27.873, height: 24.346, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Rejected':\n {\n stampCollection = {\n iconName: 'Rejected',\n // eslint-disable-next-line max-len\n pathdata: 'M3.8779989,0 L11.294,7.4140023 18.710001,0 22.588001,3.8779911 15.172998,11.293032 22.588001,18.707033 18.710001,22.586 11.294,15.169985 3.8779989,22.586 0,18.707033 7.4150017,11.293032 0,3.8779911 z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 22.588, height: 22.586, stampFillColor: '#f6dedd', stampStrokeColor: '',\n };\n }\n break;\n case 'Rejected_with_border':\n {\n stampCollection = {\n iconName: 'Rejected_with_border',\n // eslint-disable-next-line max-len\n pathdata: 'M3.8779989,0 L11.294,7.4140023 18.710001,0 22.588001,3.8779911 15.172998,11.293032 22.588001,18.707033 18.710001,22.586 11.294,15.169985 3.8779989,22.586 0,18.707033 7.4150017,11.293032 0,3.8779911 z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 22.588, height: 24.346, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'NotApproved':\n case 'Not Approved':\n {\n stampCollection = {\n iconName: 'Not Approved',\n // eslint-disable-next-line max-len\n pathdata: 'M0,19.46a1.56,1.56,0,0,0,1.16-.9A19.84,19.84,0,0,0,2.1,15L4.42,2.84l-.09-.3a1.82,1.82,0,0,0-.64-1.06,2.41,2.41,0,0,0-1-.24V.48H6.88l4.49,13.64L13,5.78c.09-.52.17-1,.22-1.39a10.11,10.11,0,0,0,.13-1.34,1.83,1.83,0,0,0-.49-1.48,2.49,2.49,0,0,0-1.13-.33V.48H16v.76l-.29.06a1.42,1.42,0,0,0-1,1,23.7,23.7,0,0,0-.84,3.42L11,20.71h-.51L5.1,4.38,3,15c-.17.87-.28,1.53-.33,2a5.32,5.32,0,0,0,0,.79,1.69,1.69,0,0,0,.54,1.44,2.48,2.48,0,0,0,1.1.32v.76H0ZM17.73,4.53C19.54,1.51,21.55,0,23.79,0a4.4,4.4,0,0,1,3.66,1.92,8.52,8.52,0,0,1,1.43,5.19,17.56,17.56,0,0,1-2.53,9.07q-2.7,4.61-6.21,4.6a4.24,4.24,0,0,1-3.6-1.92,8.6,8.6,0,0,1-1.39-5.14A17.68,17.68,0,0,1,17.73,4.53ZM18.37,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29,16.41,16.41,0,0,0,2.06-4.93,35.53,35.53,0,0,0,1.06-4.83A28.26,28.26,0,0,0,25.9,4.6a5.86,5.86,0,0,0-.52-2.55A1.7,1.7,0,0,0,23.78,1Q21.2,1,19.45,7.53a33,33,0,0,0-1.33,8.26A8.15,8.15,0,0,0,18.37,18Zm11.08,1.48a2.34,2.34,0,0,0,1.3-.26,3,3,0,0,0,.85-1.85l3-15.85A3.54,3.54,0,0,0,32,2.56a8,8,0,0,0-1.82,3.16l-.53-.2.8-5H41.81l-.74,5.66-.54-.07c0-1.92-.41-3.24-1.13-3.94a2.6,2.6,0,0,0-1.74-.63L34.79,16.6l-.17,1a2.43,2.43,0,0,0,0,.33,2.26,2.26,0,0,0,0,.26c0,.5.11.82.33.95a3.94,3.94,0,0,0,1.39.3v.76H29.45Zm26.65.76H50.18v-.71a2.28,2.28,0,0,0,1.25-.41,1.64,1.64,0,0,0,.37-1.29c0-.22,0-.75-.11-1.58,0-.17-.08-.89-.2-2.15H47l-1.2,3c-.08.2-.15.42-.22.66a2.84,2.84,0,0,0-.09.69c0,.41.08.67.25.78a2.91,2.91,0,0,0,1.08.3v.71H42.79v-.71a2.44,2.44,0,0,0,.85-.53,5.59,5.59,0,0,0,.9-1.56L52.21.07h.53l2,16.88A5.46,5.46,0,0,0,55.2,19a1.36,1.36,0,0,0,.9.43Zm-4.76-7.31-.76-7.18-3,7.18Zm4.95,6.53a1.82,1.82,0,0,0,1-.5,3.56,3.56,0,0,0,.58-1.59L60.42,4.11c.06-.3.1-.6.15-.9a5.46,5.46,0,0,0,.06-.72c0-.52-.13-.86-.4-1a2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.26.73,1.9,2.07,1.9,4a5.81,5.81,0,0,1-1.54,4.22,5.32,5.32,0,0,1-4,1.58l-.59,0-1.2-.11L61,16.6l-.17,1a2.72,2.72,0,0,0,0,.3,2.81,2.81,0,0,0,0,.29c0,.5.09.81.28.94a3.26,3.26,0,0,0,1.23.31v.76h-6Zm6-9.67.38.06H63a3,3,0,0,0,1.62-.36,2.87,2.87,0,0,0,1-1.18,7.28,7.28,0,0,0,.6-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.44,1.44,0,0,0-1.39-.79.71.71,0,0,0-.65.28,3.7,3.7,0,0,0-.32,1Zm5.61,9.69A1.86,1.86,0,0,0,69,18.94a3.54,3.54,0,0,0,.59-1.59L72.15,4.11q.09-.45.15-.9a5.73,5.73,0,0,0,.07-.72,1.1,1.1,0,0,0-.41-1,2.88,2.88,0,0,0-1.1-.23V.48h5.93a5,5,0,0,1,2.5.57c1.27.73,1.9,2.07,1.9,4a5.77,5.77,0,0,1-1.54,4.22,5.31,5.31,0,0,1-4,1.58l-.6,0-1.2-.11L72.74,16.6l-.17,1a2.72,2.72,0,0,0,0,.3c0,.1,0,.19,0,.29,0,.5.1.81.29.94a3.15,3.15,0,0,0,1.23.31v.76h-6.1Zm6.12-9.69.38.06h.33a3,3,0,0,0,1.62-.36,3,3,0,0,0,1-1.18,7.67,7.67,0,0,0,.59-2,11.67,11.67,0,0,0,.22-2,4.4,4.4,0,0,0-.41-2,1.43,1.43,0,0,0-1.38-.79.73.73,0,0,0-.66.28,3.7,3.7,0,0,0-.32,1Zm5.57,9.69a1.9,1.9,0,0,0,1.09-.52,3.56,3.56,0,0,0,.58-1.59L83.84,4.11c0-.27.09-.51.13-.71a7.08,7.08,0,0,0,.09-1c0-.47-.1-.77-.28-.9a3.53,3.53,0,0,0-1.22-.3V.48h5.68a6.57,6.57,0,0,1,3,.53q1.92,1,1.92,3.75a6.79,6.79,0,0,1-.32,2,5.23,5.23,0,0,1-1.08,1.9,4.56,4.56,0,0,1-1.25,1,11.62,11.62,0,0,1-1.33.52c.07.3.12.49.14.57l1.59,6.66a4.07,4.07,0,0,0,.69,1.7,1.72,1.72,0,0,0,1.13.41v.76H88.52l-2.23-9.76h-.58L84.49,16.6l-.17,1a1,1,0,0,0,0,.25,2.62,2.62,0,0,0,0,.28c0,.53.09.86.26,1a3.11,3.11,0,0,0,1.24.32v.76H79.63ZM87.55,9.3A2.59,2.59,0,0,0,89,8.17a7.24,7.24,0,0,0,.66-1.62A8.18,8.18,0,0,0,90,4.29a4.32,4.32,0,0,0-.43-2,1.5,1.5,0,0,0-1.45-.81.71.71,0,0,0-.62.26,2.78,2.78,0,0,0-.33,1.05L85.91,9.5A6.63,6.63,0,0,0,87.55,9.3Zm8.72-4.77Q99,0,102.32,0A4.37,4.37,0,0,1,106,1.92a8.46,8.46,0,0,1,1.44,5.19,17.58,17.58,0,0,1-2.54,9.07q-2.7,4.61-6.21,4.6a4.27,4.27,0,0,1-3.6-1.92,8.67,8.67,0,0,1-1.38-5.14A17.68,17.68,0,0,1,96.27,4.53ZM96.9,18c.33,1.19.93,1.78,1.8,1.78a2.83,2.83,0,0,0,2.22-1.29A16.63,16.63,0,0,0,103,13.54a37.1,37.1,0,0,0,1.06-4.83,29.49,29.49,0,0,0,.38-4.11,5.86,5.86,0,0,0-.51-2.55A1.71,1.71,0,0,0,102.31,1C100.6,1,99.15,3.17,98,7.53a33.42,33.42,0,0,0-1.33,8.26A8.57,8.57,0,0,0,96.9,18ZM114.35.48v.76a2.57,2.57,0,0,0-1.08.17,1.07,1.07,0,0,0-.5,1,2.53,2.53,0,0,0,0,.28,2.64,2.64,0,0,0,0,.28l1.07,11.76L117.77,6c.31-.71.59-1.41.84-2.11A5.25,5.25,0,0,0,119,2.19a.85.85,0,0,0-.38-.81,3.09,3.09,0,0,0-.95-.14V.48h4v.76a2.08,2.08,0,0,0-.73.45,5.35,5.35,0,0,0-.82,1.4l-7.79,17.69h-.66L110,5.74A22,22,0,0,0,109.46,2c-.16-.39-.58-.62-1.28-.71V.48Zm5.15,19a1.83,1.83,0,0,0,1.08-.52,3.42,3.42,0,0,0,.59-1.59l2.54-13.24c.06-.34.11-.64.15-.92a4.83,4.83,0,0,0,.06-.7c0-.5-.09-.81-.28-.94a3.14,3.14,0,0,0-1.22-.31V.48h11.12l-.87,5.6L132.11,6a7,7,0,0,0-.49-3c-.52-1-1.59-1.51-3.19-1.51-.55,0-.9.09-1.06.28A2.44,2.44,0,0,0,127,2.74L125.76,9.3a6.21,6.21,0,0,0,2.81-.51A6,6,0,0,0,130,6.18l.58.1L129,14.35l-.56-.14c0-.28,0-.52,0-.73s0-.37,0-.51a2.92,2.92,0,0,0-.61-2.15,3.55,3.55,0,0,0-2.37-.57l-1.36,7.2a4.79,4.79,0,0,0-.07.51,3.28,3.28,0,0,0,0,.39,1,1,0,0,0,.22.66,1.24,1.24,0,0,0,.93.26,6.43,6.43,0,0,0,3.21-.75,7.67,7.67,0,0,0,3.21-4.17l.5.13-1.22,5.74H119.5Zm12.79,0a1.87,1.87,0,0,0,1-.41,3.23,3.23,0,0,0,.71-1.71L136.5,4.11c.07-.38.13-.69.17-1a5.89,5.89,0,0,0,.05-.67c0-.5-.1-.81-.29-.94a3.32,3.32,0,0,0-1.22-.31V.48h6a5.35,5.35,0,0,1,4.63,2.22,10.11,10.11,0,0,1,1.58,6,13.3,13.3,0,0,1-2.34,7.84,8,8,0,0,1-6.86,3.7h-5.93ZM143.87,3.39a2.84,2.84,0,0,0-2.79-2,1.08,1.08,0,0,0-.91.31,1.93,1.93,0,0,0-.34.83L137,17.44a3.1,3.1,0,0,0-.06.39c0,.11,0,.21,0,.3a1.22,1.22,0,0,0,.24.84,1.26,1.26,0,0,0,.9.26q3.67,0,5.33-5.42a23.91,23.91,0,0,0,1-6.94A9.45,9.45,0,0,0,143.87,3.39Z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 147.425, height: 20.783, stampFillColor: '#f6dedd', stampStrokeColor: ''\n };\n }\n break;\n case 'Draft':\n {\n stampCollection = {\n iconName: 'Draft',\n // eslint-disable-next-line max-len\n pathdata: 'M24.92,3Q22,.46,16.4.46h-11v.87a9.38,9.38,0,0,1,2.24.35q.54.23.54,1.08a3.24,3.24,0,0,1-.1.76c-.07.29-.17.65-.31,1.08L3.08,19.69a3.26,3.26,0,0,1-1.32,1.95A4.67,4.67,0,0,1,0,22.1V23H10.91q7.8,0,12.61-4.22a11.56,11.56,0,0,0,4.32-8.94A8.58,8.58,0,0,0,24.92,3ZM20.41,15.66a10.18,10.18,0,0,1-9.8,6.18A3.18,3.18,0,0,1,9,21.54a1,1,0,0,1-.46-.95,2.47,2.47,0,0,1,0-.35,3,3,0,0,1,.1-.44l5.24-17a1.91,1.91,0,0,1,.62-.95,2.81,2.81,0,0,1,1.66-.35c2.44,0,4.15.76,5.15,2.27a7.29,7.29,0,0,1,.94,4A17.63,17.63,0,0,1,20.41,15.66ZM49.75,9.74a5.84,5.84,0,0,0,2-2.16,5.1,5.1,0,0,0,.59-2.24c0-2.1-1.18-3.53-3.54-4.27A18.67,18.67,0,0,0,43.36.46H32.92v.87a8.79,8.79,0,0,1,2.24.35c.35.14.52.48.52,1a5.36,5.36,0,0,1-.17,1.11c-.06.23-.14.5-.23.8L30.61,19.7a3.26,3.26,0,0,1-1.08,1.81,4.44,4.44,0,0,1-2,.59V23H38.85V22.1a8.54,8.54,0,0,1-2.28-.36c-.32-.15-.49-.53-.49-1.13,0-.11,0-.21,0-.32a1.15,1.15,0,0,1,.06-.28l.31-1.16,2.25-7h1.07L43.89,23h7.64V22.1a4.27,4.27,0,0,1-2.07-.47,3.91,3.91,0,0,1-1.27-1.93l-2.92-7.6a4.67,4.67,0,0,1-.25-.65c1.1-.23,1.91-.42,2.43-.59A8.49,8.49,0,0,0,49.75,9.74ZM46,7.39a6.73,6.73,0,0,1-1.21,1.84,5,5,0,0,1-2.72,1.29,19.56,19.56,0,0,1-3,.23L41.38,3A2.54,2.54,0,0,1,42,1.85a1.76,1.76,0,0,1,1.14-.31,3.38,3.38,0,0,1,2.69.93,3.52,3.52,0,0,1,.79,2.34A5.94,5.94,0,0,1,46,7.39Zm27.9,11.85L70.29,0h-1L55.21,19.78a6.61,6.61,0,0,1-1.66,1.78,5.3,5.3,0,0,1-1.55.6V23h7.45v-.81a8,8,0,0,1-2-.34.85.85,0,0,1-.47-.89,2,2,0,0,1,.17-.79,5.32,5.32,0,0,1,.4-.75L59.8,16H68c.22,1.44.35,2.25.37,2.45a16,16,0,0,1,.2,1.81,1.51,1.51,0,0,1-.67,1.47,6.38,6.38,0,0,1-2.31.46V23H77.1v-.81a4.28,4.28,0,0,1-2.28-.55A4.47,4.47,0,0,1,73.93,19.24ZM60.7,14.64l5.62-8.19,1.4,8.19ZM84,.46h20.2l-1.61,6.39-1-.15a5.61,5.61,0,0,0-.88-3.43Q99.2,1.52,94.86,1.51a3.56,3.56,0,0,0-1.76.3A2.05,2.05,0,0,0,92.34,3L90.1,10.5A16.53,16.53,0,0,0,95,9.91c.77-.33,1.62-1.32,2.56-3l1.06.12-2.82,9.2-1-.17c0-.33.08-.61.1-.85s0-.43,0-.56a2.76,2.76,0,0,0-1-2.38c-.66-.49-2.07-.73-4.23-.73l-2.5,8.22a3.56,3.56,0,0,0-.09.39,1.55,1.55,0,0,0,0,.37,1.32,1.32,0,0,0,1,1.33,5.52,5.52,0,0,0,1.78.21V23H78.58V22.1a4.35,4.35,0,0,0,2-.61,3.33,3.33,0,0,0,1.06-1.8L86.32,4.6c.09-.31.16-.58.23-.81a5.05,5.05,0,0,0,.16-1.1c0-.53-.17-.87-.52-1A8.7,8.7,0,0,0,84,1.33Zm24.1,0h20.89l-1.37,6.46-1-.08c-.07-2.2-.76-3.69-2.09-4.49a6.61,6.61,0,0,0-3.2-.72L116,18.84,115.7,20a2.63,2.63,0,0,0-.07.38,1.51,1.51,0,0,0,0,.3c0,.57.2.94.61,1.08a11.19,11.19,0,0,0,2.56.34V23H106.2V22.1a6.49,6.49,0,0,0,2.4-.3,3.19,3.19,0,0,0,1.56-2.1l5.58-18.07a9.07,9.07,0,0,0-4.83,1.2,9.52,9.52,0,0,0-3.34,3.61l-1-.23Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 128.941, height: 22.97, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Final':\n {\n stampCollection = {\n iconName: 'Final',\n // eslint-disable-next-line max-len\n pathdata: 'M24.94,6l-1.06-.13a4.37,4.37,0,0,0-.91-3q-1.51-1.54-6-1.54a4.28,4.28,0,0,0-1.83.26,1.8,1.8,0,0,0-.78,1.08L12,9.21a20.26,20.26,0,0,0,5.15-.52A6.49,6.49,0,0,0,19.8,6.1l1.1.1L18,14.27l-1.09-.15a6.34,6.34,0,0,0,.11-.74c0-.22,0-.38,0-.5a2.26,2.26,0,0,0-1-2.09c-.68-.42-2.15-.63-4.39-.63L9,17.37a3.09,3.09,0,0,0-.1.34,1.22,1.22,0,0,0,0,.32,1.18,1.18,0,0,0,1,1.17,7,7,0,0,0,1.86.18v.77H0v-.77a5.14,5.14,0,0,0,2.11-.53,3,3,0,0,0,1.1-1.58L8.06,4c.09-.27.17-.5.23-.7a3.74,3.74,0,0,0,.18-1,.83.83,0,0,0-.55-.89,10.94,10.94,0,0,0-2.33-.3V.4h21Zm8.54,12.11a1.49,1.49,0,0,1,0-.28,2.46,2.46,0,0,1,.07-.29l.3-1L38.76,3.29a2.93,2.93,0,0,1,1.09-1.6A5.42,5.42,0,0,1,42,1.17V.4H30.17v.77a10.52,10.52,0,0,1,2.34.31.88.88,0,0,1,.56.94,2.58,2.58,0,0,1-.11.67c-.07.26-.18.57-.32,1L27.79,17.28a2.94,2.94,0,0,1-1.12,1.59,5.28,5.28,0,0,1-2.09.51v.77H36.36v-.77A10.22,10.22,0,0,1,34,19.07.89.89,0,0,1,33.48,18.12ZM66.19,2.24a2.53,2.53,0,0,1,1.87-1l.56-.06V.4H60.5v.77a8,8,0,0,1,2.16.33,1.47,1.47,0,0,1,1,1.48,5.61,5.61,0,0,1-.25,1.34c-.11.4-.25.87-.43,1.38l-3.08,8.35L51.26.4h-8v.77a8.44,8.44,0,0,1,1.86.24,2.26,2.26,0,0,1,1.22,1.05l.17.31L42.11,14.88a13.74,13.74,0,0,1-1.8,3.61,3.36,3.36,0,0,1-2.22.89v.77h8.23v-.77a7.75,7.75,0,0,1-2.1-.31,1.45,1.45,0,0,1-1-1.44,3.56,3.56,0,0,1,.1-.79,16.15,16.15,0,0,1,.64-2L47.85,4.31,58.11,20.64h1l5.5-15A15.48,15.48,0,0,1,66.19,2.24Zm23,17.13v.78H78.08v-.71A7.47,7.47,0,0,0,80.49,19a1.25,1.25,0,0,0,.7-1.29A13.26,13.26,0,0,0,81,16.16c0-.18-.16-.89-.39-2.15H72.06l-2.3,3a3.7,3.7,0,0,0-.42.66,1.54,1.54,0,0,0-.18.69.74.74,0,0,0,.49.78,10.28,10.28,0,0,0,2.06.3v.71H63.94v-.71a6.43,6.43,0,0,0,1.63-.53,6.63,6.63,0,0,0,1.72-1.56L82,0h1l3.78,16.88A3.69,3.69,0,0,0,87.7,19,3.53,3.53,0,0,0,89.24,19.37Zm-8.93-6.53L78.86,5.65,73,12.84Zm32.8,1.44a11.51,11.51,0,0,1-5.23,3.88,21.36,21.36,0,0,1-7,1A4.88,4.88,0,0,1,99.22,19a.74.74,0,0,1-.58-.71,2.33,2.33,0,0,1,0-.48c0-.13.08-.28.13-.43L104,3.29a2.72,2.72,0,0,1,1.19-1.64,9.4,9.4,0,0,1,2.79-.48V.4H95.4v.77a10.42,10.42,0,0,1,2.34.31.88.88,0,0,1,.56.94,2.58,2.58,0,0,1-.11.67c-.07.25-.17.57-.31.94L93,17.27a2.92,2.92,0,0,1-1.12,1.6,4.59,4.59,0,0,1-1.71.47v.81h21.55l2.32-5.74Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 114.058, height: 20.639, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'Completed':\n {\n stampCollection = {\n iconName: 'Completed',\n // eslint-disable-next-line max-len\n pathdata: 'M16.37,0,15.08,6.9l-.79-.17c0-.41,0-.66,0-.73a2.73,2.73,0,0,0,0-.32,5.33,5.33,0,0,0-.94-3.47A3,3,0,0,0,11,1.07c-2,0-3.68,1.51-5.13,4.55a18.84,18.84,0,0,0-2,8.29q0,3.06,1.2,4.2a3.82,3.82,0,0,0,2.64,1.13,5.3,5.3,0,0,0,3.51-1.43,10.75,10.75,0,0,0,1.78-2.09l.77.65a9.32,9.32,0,0,1-3.12,3.35A7,7,0,0,1,7,20.81a6.66,6.66,0,0,1-5-2.08,7.72,7.72,0,0,1-2-5.57A14.57,14.57,0,0,1,3.05,3.92Q6.1,0,10.29,0A8.92,8.92,0,0,1,13,.43a9.09,9.09,0,0,0,1.65.43.72.72,0,0,0,.6-.23A2.55,2.55,0,0,0,15.6,0ZM32.83,7.11a15.24,15.24,0,0,1-3.11,9.07q-3.31,4.61-7.63,4.6a5.63,5.63,0,0,1-4.42-1.92A7.47,7.47,0,0,1,16,13.72a15.27,15.27,0,0,1,3.18-9.19Q22.46,0,26.57,0a5.82,5.82,0,0,1,4.5,1.92A7.35,7.35,0,0,1,32.83,7.11ZM29.16,4.6a4.92,4.92,0,0,0-.63-2.55,2.14,2.14,0,0,0-2-1.06Q23.4,1,21.24,7.53a27.45,27.45,0,0,0-1.63,8.26A6.68,6.68,0,0,0,19.92,18a2.24,2.24,0,0,0,2.2,1.78,3.71,3.71,0,0,0,2.73-1.29,15,15,0,0,0,2.54-4.93,30.56,30.56,0,0,0,1.3-4.83A23,23,0,0,0,29.16,4.6Zm21.2,13.62a3.83,3.83,0,0,1,.08-.75,8.6,8.6,0,0,1,.19-.88L53.75,3.31a3,3,0,0,1,.85-1.67,2.72,2.72,0,0,1,1.21-.4V.48H50.42L42.66,14.39,41.21.48h-5.8v.76a4.65,4.65,0,0,1,1.45.21c.26.11.38.37.38.78a4.57,4.57,0,0,1-.08.75c-.06.28-.13.61-.23,1L34.34,15a16.85,16.85,0,0,1-1.16,3.65,1.9,1.9,0,0,1-1.42.86v.76h5.3v-.76a3.22,3.22,0,0,1-1.32-.29A1.48,1.48,0,0,1,35,17.74a8.32,8.32,0,0,1,.17-1.42c.07-.37.17-.82.3-1.37L38.06,4.23l1.71,16.38h.71L50,3.76l-3.2,13.58A2.84,2.84,0,0,1,46,19a4.06,4.06,0,0,1-1.76.49v.76h7.93v-.76a4.79,4.79,0,0,1-1.49-.31Q50.36,19,50.36,18.22ZM67.69,9.29a7.39,7.39,0,0,1-4.89,1.58l-.73,0-1.48-.11L59.21,16.6l-.21,1a1,1,0,0,0,0,.3,2.83,2.83,0,0,0,0,.29c0,.5.12.81.35.94a4.74,4.74,0,0,0,1.51.31v.76H53.31v-.76a2.52,2.52,0,0,0,1.33-.52,3.18,3.18,0,0,0,.72-1.59L58.48,4.11q.1-.45.18-.9a4.48,4.48,0,0,0,.08-.72,1,1,0,0,0-.49-1,4.36,4.36,0,0,0-1.36-.23V.48h7.29a7.29,7.29,0,0,1,3.07.57,4,4,0,0,1,2.33,4A5.22,5.22,0,0,1,67.69,9.29Zm-1.8-5a3.65,3.65,0,0,0-.51-2,1.85,1.85,0,0,0-1.7-.79,1,1,0,0,0-.8.28,3.27,3.27,0,0,0-.4,1l-1.66,7,.47.06h.41a4.37,4.37,0,0,0,2-.36,3.14,3.14,0,0,0,1.2-1.18,6.51,6.51,0,0,0,.74-2A9.87,9.87,0,0,0,65.89,4.25Zm16.9,10.1a8.71,8.71,0,0,1-3.35,3.88,9.36,9.36,0,0,1-4.53,1,2.15,2.15,0,0,1-1-.21.75.75,0,0,1-.37-.71,3.18,3.18,0,0,1,0-.47c0-.14,0-.28.08-.44l3.3-14.08a2.94,2.94,0,0,1,.77-1.64,4.47,4.47,0,0,1,1.79-.48V.48h-8v.76a4.8,4.8,0,0,1,1.5.31c.23.13.35.44.35.94a4.36,4.36,0,0,1-.06.67c0,.26-.12.57-.21,1L69.9,17.34a3.18,3.18,0,0,1-.72,1.6,2.53,2.53,0,0,1-1.34.52v.76H81.91l1.49-5.74ZM85.73,1.24a4.59,4.59,0,0,1,1.5.31c.23.13.34.44.34.94a3.84,3.84,0,0,1-.07.7c0,.28-.11.58-.19.92L84.2,17.35a3.18,3.18,0,0,1-.72,1.59,2.27,2.27,0,0,1-1.06.47h-.07v.8H96.2l1.5-5.74-.62-.13a8.14,8.14,0,0,1-3.94,4.17,9.39,9.39,0,0,1-3.94.75A1.75,1.75,0,0,1,88.06,19a.87.87,0,0,1-.27-.66,3.28,3.28,0,0,1,0-.39,5,5,0,0,1,.09-.51l1.67-7.2a5.16,5.16,0,0,1,2.91.57A2.58,2.58,0,0,1,93.24,13c0,.14,0,.31,0,.51s0,.45-.07.73l.7.14,1.88-8.07L95,6.18a5.62,5.62,0,0,1-1.74,2.61,9.05,9.05,0,0,1-3.45.51l1.51-6.56a2.23,2.23,0,0,1,.47-1.06,2,2,0,0,1,1.3-.28c2,0,3.29.5,3.93,1.51a6.13,6.13,0,0,1,.6,3l.68.13L99.4.48H85.73ZM114,6.14l.92-5.66h-14l-1,5,.66.2a7.81,7.81,0,0,1,2.23-3.16,4.91,4.91,0,0,1,3.23-1.06l-3.73,15.85a2.84,2.84,0,0,1-1,1.85,3.48,3.48,0,0,1-1.6.26v.76h8.4v-.76a5.82,5.82,0,0,1-1.71-.3c-.27-.13-.41-.45-.41-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.21-1,3.53-15.1a3.65,3.65,0,0,1,2.14.63c.89.7,1.35,2,1.39,3.94Zm9.44,12.38a9.39,9.39,0,0,1-3.94.75,1.77,1.77,0,0,1-1.14-.26.87.87,0,0,1-.27-.66,3.28,3.28,0,0,1,0-.39,5,5,0,0,1,.09-.51l1.67-7.2a5.12,5.12,0,0,1,2.91.57,2.58,2.58,0,0,1,.75,2.15c0,.14,0,.31,0,.51s0,.45-.07.73l.7.14L126,6.28l-.7-.1a5.78,5.78,0,0,1-1.74,2.61,9.16,9.16,0,0,1-3.46.51l1.51-6.56a2.14,2.14,0,0,1,.48-1.06,2,2,0,0,1,1.3-.28c2,0,3.28.5,3.92,1.51a6,6,0,0,1,.6,3l.68.13,1.08-5.6H116v.76a4.67,4.67,0,0,1,1.51.31c.22.13.34.44.34.94a4,4,0,0,1-.08.7c0,.28-.11.58-.18.92l-3.12,13.24a3.18,3.18,0,0,1-.72,1.59,2.56,2.56,0,0,1-1.34.52v.76h14.06l1.5-5.74-.62-.13A8.14,8.14,0,0,1,123.39,18.52Zm23.32-9.84a11.62,11.62,0,0,1-2.89,7.84,10.6,10.6,0,0,1-8.42,3.7h-7.29v-.76a2.58,2.58,0,0,0,1.18-.41,2.94,2.94,0,0,0,.88-1.71l3.11-13.23c.09-.38.16-.69.21-1a4.49,4.49,0,0,0,.07-.67c0-.5-.12-.81-.36-.94a4.8,4.8,0,0,0-1.5-.31V.48h7.36a7.16,7.16,0,0,1,5.69,2.22A8.72,8.72,0,0,1,146.71,8.68ZM143,6.87a8,8,0,0,0-.64-3.48,3.52,3.52,0,0,0-3.44-2,1.52,1.52,0,0,0-1.11.31,1.75,1.75,0,0,0-.41.83l-3.5,14.9c0,.14,0,.27-.07.39s0,.21,0,.3a1.06,1.06,0,0,0,.3.84,1.75,1.75,0,0,0,1.1.26q4.53,0,6.55-5.42A19.84,19.84,0,0,0,143,6.87Z',\n opacity: 1, strokeColor: '', fillColor: '#516c30', width: 146.706, height: 20.811, stampFillColor: '#e6eddf', stampStrokeColor: '',\n };\n }\n break;\n case 'ForPublicRelease':\n case 'For Public Release':\n {\n stampCollection = {\n iconName: 'For Public Release',\n // eslint-disable-next-line max-len\n pathdata: 'M10.33.48l-.65,5.6L9.27,6a9.74,9.74,0,0,0-.36-3A2.27,2.27,0,0,0,6.57,1.4a.85.85,0,0,0-.71.26,2.67,2.67,0,0,0-.3,1.08L4.65,9.28a3.45,3.45,0,0,0,2-.52,6.65,6.65,0,0,0,1-2.59l.43.1L7,14.34l-.42-.14c0-.29,0-.54,0-.75s0-.38,0-.49a4.17,4.17,0,0,0-.39-2.09,1.91,1.91,0,0,0-1.71-.64l-1,7.21c0,.13,0,.24,0,.35s0,.21,0,.31a1.45,1.45,0,0,0,.38,1.17,1.17,1.17,0,0,0,.72.19v.76H0v-.76a1.31,1.31,0,0,0,.82-.54,4.39,4.39,0,0,0,.42-1.58L3.13,4.11c0-.27.06-.51.09-.71,0-.41.07-.73.07-1a1.34,1.34,0,0,0-.21-.9,2.13,2.13,0,0,0-.91-.3V.48ZM20.5,7.11a22.43,22.43,0,0,1-1.88,9.07q-2,4.61-4.62,4.6a3,3,0,0,1-2.67-1.92,10.91,10.91,0,0,1-1-5.14,22.46,22.46,0,0,1,1.92-9.19Q14.23,0,16.71,0a3.11,3.11,0,0,1,2.72,1.92A10.72,10.72,0,0,1,20.5,7.11ZM18.28,4.6a7.7,7.7,0,0,0-.38-2.55c-.26-.7-.65-1-1.19-1-1.28,0-2.35,2.17-3.22,6.53a43.69,43.69,0,0,0-1,8.26,10.72,10.72,0,0,0,.19,2.2c.24,1.18.69,1.77,1.33,1.77s1.16-.43,1.65-1.29a19.35,19.35,0,0,0,1.54-4.93A48.7,48.7,0,0,0,18,8.71,38.21,38.21,0,0,0,18.28,4.6Zm11.59.16a8.73,8.73,0,0,1-.24,2,5.64,5.64,0,0,1-.8,1.9,3.49,3.49,0,0,1-.93,1,7.31,7.31,0,0,1-1,.52c0,.3.08.49.1.57l1.18,6.66a4.54,4.54,0,0,0,.52,1.7,1.1,1.1,0,0,0,.83.41v.76H26.46l-1.65-9.76h-.43l-.91,6.14-.13,1a2,2,0,0,0,0,.25,2.62,2.62,0,0,0,0,.28,1.57,1.57,0,0,0,.2,1,1.77,1.77,0,0,0,.92.32v.76H19.86v-.76a1.33,1.33,0,0,0,.81-.52,4.35,4.35,0,0,0,.43-1.59L23,4.11c0-.27.07-.51.09-.71a8.23,8.23,0,0,0,.07-1,1.3,1.3,0,0,0-.21-.9,2.08,2.08,0,0,0-.91-.3V.48h4.22A3.79,3.79,0,0,1,28.44,1C29.4,1.66,29.87,2.91,29.87,4.76Zm-2.31-.47a5.77,5.77,0,0,0-.32-2,1.12,1.12,0,0,0-1.09-.81.5.5,0,0,0-.46.26,3.87,3.87,0,0,0-.24,1.05L24.52,9.5a3.73,3.73,0,0,0,1.22-.2,2.1,2.1,0,0,0,1.1-1.13,8.41,8.41,0,0,0,.49-1.62A10.75,10.75,0,0,0,27.56,4.29Zm14.92.78a7.06,7.06,0,0,1-1.14,4.22,3.5,3.5,0,0,1-3,1.58l-.44,0-.89-.11-.84,5.86-.12,1a1.45,1.45,0,0,0,0,.3,2.81,2.81,0,0,0,0,.29,1.38,1.38,0,0,0,.21.94,1.93,1.93,0,0,0,.91.31v.76H32.65v-.76a1.28,1.28,0,0,0,.8-.52,4.3,4.3,0,0,0,.44-1.59L35.77,4.11c0-.3.08-.6.11-.9a5.21,5.21,0,0,0,0-.72,1.29,1.29,0,0,0-.3-1,1.82,1.82,0,0,0-.81-.23V.48h4.4a3,3,0,0,1,1.86.57C42,1.78,42.48,3.12,42.48,5.07Zm-2.23-.82a5.74,5.74,0,0,0-.3-2,1.07,1.07,0,0,0-1-.79.5.5,0,0,0-.49.28,5.11,5.11,0,0,0-.24,1l-1,7,.28.06h.25a1.79,1.79,0,0,0,1.2-.36,2.88,2.88,0,0,0,.73-1.18,10.56,10.56,0,0,0,.44-2A15.74,15.74,0,0,0,40.25,4.25Zm12.91-3V.48H50v.76a1.46,1.46,0,0,1,.82.32A2,2,0,0,1,51.24,3a15,15,0,0,1-.14,1.57q0-.17-.15,1.17l-.89,6.16a29.63,29.63,0,0,1-1,4.77c-.55,1.63-1.31,2.44-2.28,2.44a1.59,1.59,0,0,1-1.38-.77,4.16,4.16,0,0,1-.5-2.23q0-.63.15-2c.06-.5.15-1.14.27-1.93l1.26-8.84a4.13,4.13,0,0,1,.46-1.66,1.66,1.66,0,0,1,1-.46V.48H43.34v.76a2,2,0,0,1,.9.3,1.3,1.3,0,0,1,.21.9,7.27,7.27,0,0,1,0,.75c0,.29-.07.59-.11.92l-1,7.24c-.16,1.14-.27,1.93-.32,2.38a19.16,19.16,0,0,0-.12,2,6.13,6.13,0,0,0,1,3.71,2.93,2.93,0,0,0,2.43,1.33c1.39,0,2.45-.9,3.17-2.69a29.58,29.58,0,0,0,1.23-5.61l1-6.74A24.45,24.45,0,0,1,52.3,2.1,1.22,1.22,0,0,1,53.16,1.24Zm7.14,9.82a5.87,5.87,0,0,1,.68,3,8.55,8.55,0,0,1-1,4.27,3.68,3.68,0,0,1-3.48,1.84H51.82v-.76a1.3,1.3,0,0,0,.72-.4,3.94,3.94,0,0,0,.52-1.71L55,4.1c0-.39.09-.72.12-1s0-.46,0-.6c0-.53-.07-.86-.23-1A1.64,1.64,0,0,0,54,1.24V.48h4.17a3.4,3.4,0,0,1,2.67,1,4.91,4.91,0,0,1,1,3.38,5.33,5.33,0,0,1-1.17,3.61,4.8,4.8,0,0,1-1.68,1.22A4.84,4.84,0,0,1,60.3,11.06Zm-1.66,2.45a3.81,3.81,0,0,0-.73-2.74,2.63,2.63,0,0,0-1.58-.52l-1,7.2a4,4,0,0,0-.05.4c0,.15,0,.32,0,.51a.9.9,0,0,0,.33.82,1.13,1.13,0,0,0,.59.12c1,0,1.67-.87,2.1-2.59A13.54,13.54,0,0,0,58.64,13.51Zm.12-5.29A5.92,5.92,0,0,0,59.4,6.1a12.74,12.74,0,0,0,.13-1.74,6.54,6.54,0,0,0-.29-2.11,1.11,1.11,0,0,0-1.13-.81.49.49,0,0,0-.49.32,3.52,3.52,0,0,0-.23,1l-.94,6.62A7.45,7.45,0,0,0,58,9,1.8,1.8,0,0,0,58.76,8.22Zm11.71,6.14a8.78,8.78,0,0,1-2,3.87,4,4,0,0,1-2.74,1,.89.89,0,0,1-.63-.21.93.93,0,0,1-.22-.7,3.4,3.4,0,0,1,0-.48c0-.14,0-.28,0-.44l2-14.08a3.8,3.8,0,0,1,.47-1.64,1.94,1.94,0,0,1,1.08-.48V.48H63.6v.76a2,2,0,0,1,.91.31,1.36,1.36,0,0,1,.22.94c0,.2,0,.42,0,.67s-.07.57-.13,1L62.68,17.34a4.31,4.31,0,0,1-.44,1.6,1.28,1.28,0,0,1-.8.52v.76h8.5l.9-5.74ZM76.89.48H72.32v.76a1.92,1.92,0,0,1,.9.31c.15.13.22.44.22.94a5.56,5.56,0,0,1,0,.67c0,.26-.07.57-.12,1L71.39,17.35A4.35,4.35,0,0,1,71,18.94a1.33,1.33,0,0,1-.81.52v.76h4.57v-.76a1.81,1.81,0,0,1-.91-.32,1.39,1.39,0,0,1-.21-.94c0-.09,0-.18,0-.28l0-.3.12-1L75.65,3.36a4.43,4.43,0,0,1,.43-1.6,1.3,1.3,0,0,1,.81-.52Zm8.46.15A.38.38,0,0,1,85,.87a4.12,4.12,0,0,1-1-.44A3.51,3.51,0,0,0,82.37,0Q79.84,0,78,3.92a21.42,21.42,0,0,0-1.84,9.24,11.15,11.15,0,0,0,1.2,5.57,3.51,3.51,0,0,0,3.05,2.08,3.15,3.15,0,0,0,2.21-1.09,8.92,8.92,0,0,0,1.89-3.35L84,15.72A11.08,11.08,0,0,1,83,17.81a2.71,2.71,0,0,1-2.12,1.43,2,2,0,0,1-1.59-1.13,8.33,8.33,0,0,1-.74-4.2A29.46,29.46,0,0,1,79.7,5.62Q81,1.08,82.8,1.07c.59,0,1.07.38,1.45,1.14a8,8,0,0,1,.57,3.47,2.73,2.73,0,0,1,0,.32c0,.08,0,.32,0,.73l.48.17L86.05,0h-.47A2.93,2.93,0,0,1,85.35.63Zm21.41,13.73.37.12-.9,5.74H94.72l-1.66-9.76h-.43l-.91,6.14-.13,1c0,.08,0,.16,0,.25s0,.19,0,.28a1.57,1.57,0,0,0,.2,1,1.81,1.81,0,0,0,.92.32v.76H88.11v-.76a1.3,1.3,0,0,0,.81-.52,4.35,4.35,0,0,0,.43-1.59L91.24,4.11c0-.27.07-.51.09-.71a8.23,8.23,0,0,0,.07-1,1.3,1.3,0,0,0-.21-.9,2.08,2.08,0,0,0-.91-.3V.48h4.23A3.81,3.81,0,0,1,96.7,1c1,.65,1.43,1.9,1.43,3.75a8.73,8.73,0,0,1-.24,2,5.66,5.66,0,0,1-.81,1.9,3.49,3.49,0,0,1-.93,1,6.73,6.73,0,0,1-1,.52c0,.3.09.49.1.57l1.18,6.66a4.74,4.74,0,0,0,.52,1.7,1,1,0,0,0,.78.39,1.23,1.23,0,0,0,.78-.5A4.3,4.3,0,0,0,99,17.35l1.88-13.24c.05-.34.09-.64.12-.92a6.28,6.28,0,0,0,0-.7,1.45,1.45,0,0,0-.2-.94,2,2,0,0,0-.91-.31V.48h8.26l-.65,5.6L107.1,6a9.57,9.57,0,0,0-.36-3,2.3,2.3,0,0,0-2.38-1.51c-.41,0-.67.09-.78.28a2.87,2.87,0,0,0-.29,1.06l-.91,6.56a3.57,3.57,0,0,0,2.08-.51,6.59,6.59,0,0,0,1.06-2.61l.42.1-1.14,8.08-.42-.15c0-.28,0-.52.05-.73s0-.37,0-.51a3.6,3.6,0,0,0-.46-2.15,2.14,2.14,0,0,0-1.75-.57l-1,7.2a4.7,4.7,0,0,0-.06.51c0,.16,0,.29,0,.39a1.12,1.12,0,0,0,.17.66.77.77,0,0,0,.69.26,3.77,3.77,0,0,0,2.37-.75A7.71,7.71,0,0,0,106.76,14.36ZM95.09,8.17a7.75,7.75,0,0,0,.49-1.62,10.75,10.75,0,0,0,.23-2.26,5.77,5.77,0,0,0-.32-2,1.11,1.11,0,0,0-1.08-.81.48.48,0,0,0-.46.26,3.44,3.44,0,0,0-.25,1.05L92.78,9.5A3.78,3.78,0,0,0,94,9.3,2.08,2.08,0,0,0,95.09,8.17Zm21.32,6.19a8.67,8.67,0,0,1-2,3.87,4,4,0,0,1-2.73,1,.89.89,0,0,1-.63-.21.93.93,0,0,1-.23-.7c0-.19,0-.35,0-.48s0-.28,0-.44l2-14.08a3.84,3.84,0,0,1,.46-1.64,2,2,0,0,1,1.08-.48V.48h-4.86v.76a2,2,0,0,1,.91.31,1.38,1.38,0,0,1,.21.94,5.56,5.56,0,0,1,0,.67c0,.26-.07.57-.12,1l-1.89,13.23a4.16,4.16,0,0,1-.43,1.6,1.27,1.27,0,0,1-.81.52v.76h8.51l.9-5.74Zm8.64,0a7.71,7.71,0,0,1-2.38,4.16,3.82,3.82,0,0,1-2.38.75.77.77,0,0,1-.69-.26,1.2,1.2,0,0,1-.17-.66c0-.1,0-.23,0-.39a4.7,4.7,0,0,1,.06-.51l1-7.2a2.17,2.17,0,0,1,1.76.57,3.69,3.69,0,0,1,.45,2.15c0,.14,0,.31,0,.51s0,.45,0,.73l.42.15,1.13-8.08-.42-.1a6.79,6.79,0,0,1-1,2.61,3.63,3.63,0,0,1-2.09.51l.91-6.56a2.87,2.87,0,0,1,.29-1.06c.12-.19.38-.28.78-.28A2.3,2.3,0,0,1,125,2.91a9.57,9.57,0,0,1,.36,3l.41.13.65-5.6h-8.26v.76a1.93,1.93,0,0,1,.91.31,1.45,1.45,0,0,1,.2.94,6.28,6.28,0,0,1,0,.7c0,.28-.07.58-.11.92l-1.89,13.24a4.35,4.35,0,0,1-.43,1.59,1.33,1.33,0,0,1-.81.52v.76h8.5l.91-5.74Zm10.29,5.15v.71h-4.65v-.71a1.44,1.44,0,0,0,.93-.41,2.08,2.08,0,0,0,.27-1.29c0-.22,0-.75-.08-1.58,0-.17-.06-.89-.15-2.15h-3.31l-.89,3a5.32,5.32,0,0,0-.16.66,3.4,3.4,0,0,0-.08.69,1.06,1.06,0,0,0,.2.78,1.68,1.68,0,0,0,.79.3v.71h-3v-.71a1.8,1.8,0,0,0,.63-.53,6.45,6.45,0,0,0,.67-1.56L132.19.07h.4L134.06,17a7.15,7.15,0,0,0,.36,2.08A1.13,1.13,0,0,0,135.34,19.51Zm-3.79-6.6L131,5.73l-2.27,7.18Zm9.6-4-1.32-2.09a4.57,4.57,0,0,1-.47-.94,5.12,5.12,0,0,1-.28-1.78,5.57,5.57,0,0,1,.27-1.77c.27-.83.7-1.24,1.29-1.24s1.21.51,1.57,1.54A8.78,8.78,0,0,1,142.65,5l.06,1,.39.1.63-5.91h-.46a2.09,2.09,0,0,1-.25.54.46.46,0,0,1-.41.21.57.57,0,0,1-.24-.05,1.23,1.23,0,0,1-.26-.12l-.39-.24a2.34,2.34,0,0,0-.5-.25,2.41,2.41,0,0,0-.85-.16,2.55,2.55,0,0,0-2.31,1.67,9.11,9.11,0,0,0-.83,4.05,10.47,10.47,0,0,0,1.88,5.5A9.21,9.21,0,0,1,141,16a6.49,6.49,0,0,1-.5,2.63,1.59,1.59,0,0,1-1.43,1.14,1.42,1.42,0,0,1-1-.4,3.55,3.55,0,0,1-.78-1.16,7.09,7.09,0,0,1-.52-1.92c-.05-.43-.1-1.12-.13-2.06l-.44-.06-.55,6.62h.46a4.11,4.11,0,0,1,.25-.82.36.36,0,0,1,.36-.23.47.47,0,0,1,.17,0,2.38,2.38,0,0,1,.27.18l.39.27a3.52,3.52,0,0,0,.84.43,2.48,2.48,0,0,0,.84.15,2.91,2.91,0,0,0,2.63-1.88,9.24,9.24,0,0,0,1-4.21,9.85,9.85,0,0,0-.49-3.24A12.1,12.1,0,0,0,141.15,8.92Zm7.75-7.24c.12-.19.38-.28.78-.28a2.3,2.3,0,0,1,2.38,1.51,9.57,9.57,0,0,1,.36,3l.41.13.65-5.6h-8.26v.76a1.93,1.93,0,0,1,.91.31c.14.13.2.44.2.94a6.28,6.28,0,0,1,0,.7c0,.28-.07.58-.11.92l-1.89,13.24a4.35,4.35,0,0,1-.43,1.59,1.33,1.33,0,0,1-.81.52v.76h8.5l.91-5.74-.38-.12a7.71,7.71,0,0,1-2.38,4.16,3.82,3.82,0,0,1-2.38.75.77.77,0,0,1-.69-.26,1.2,1.2,0,0,1-.17-.66c0-.1,0-.23,0-.39a4.7,4.7,0,0,1,.06-.51l1-7.2a2.17,2.17,0,0,1,1.76.57,3.69,3.69,0,0,1,.45,2.15c0,.14,0,.31,0,.51s0,.45,0,.73l.42.15,1.14-8.08-.43-.1a6.79,6.79,0,0,1-1.05,2.61,3.63,3.63,0,0,1-2.09.51l.91-6.56A2.87,2.87,0,0,1,148.9,1.68Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 153.485, height: 20.812, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'NotForPublicRelease':\n case 'Not For Public Release':\n {\n stampCollection = {\n iconName: 'Not For Public Release',\n // eslint-disable-next-line max-len\n pathdata: 'M9,2.35q-.21.9-.51,3.48L6.69,21.05H6.38L3.11,4.45,1.85,15.19c-.1.89-.17,1.56-.2,2s0,.55,0,.81A2.39,2.39,0,0,0,2,19.45a1.09,1.09,0,0,0,.67.33v.77H0v-.77a1.22,1.22,0,0,0,.71-.91,33.91,33.91,0,0,0,.57-3.68L2.7,2.88l-.06-.3a2.09,2.09,0,0,0-.39-1.07,1,1,0,0,0-.59-.25V.48H4.2L6.93,14.36l1-8.49c.06-.53.11-1,.14-1.4.06-.63.08-1.08.08-1.37a2.67,2.67,0,0,0-.3-1.5,1.07,1.07,0,0,0-.69-.34V.48H9.73v.78l-.18.06C9.29,1.41,9.09,1.75,9,2.35ZM16.74,2a13.19,13.19,0,0,1,.87,5.28,27.45,27.45,0,0,1-1.54,9.22q-1.65,4.66-3.79,4.67-1.35,0-2.19-1.95a13.31,13.31,0,0,1-.85-5.23A27.59,27.59,0,0,1,10.82,4.6C11.91,1.53,13.15,0,14.51,0,15.41,0,16.16.65,16.74,2Zm-.95,2.73a9.33,9.33,0,0,0-.31-2.59c-.21-.72-.54-1.08-1-1.08-1.05,0-1.92,2.21-2.64,6.64a54.69,54.69,0,0,0-.81,8.4,14.21,14.21,0,0,0,.15,2.23c.2,1.2.57,1.8,1.1,1.8s.95-.43,1.35-1.31a22.84,22.84,0,0,0,1.26-5c.28-1.55.49-3.19.65-4.91S15.79,5.74,15.79,4.68Zm2.3.93.32.21A10.7,10.7,0,0,1,19.52,2.6a1.87,1.87,0,0,1,1.6-1.08L19.27,17.63a4,4,0,0,1-.52,1.88,1,1,0,0,1-.79.27v.77h4.17v-.77a1.72,1.72,0,0,1-.85-.3,1.56,1.56,0,0,1-.2-1,2.44,2.44,0,0,1,0-.27c0-.08,0-.2,0-.33l.11-1L23,1.52A1.31,1.31,0,0,1,24,2.17a8.49,8.49,0,0,1,.69,4l.33.07L25.5.48H18.57ZM28.75.48v.78a1.39,1.39,0,0,1,.74.31,1.44,1.44,0,0,1,.18.9q0,.36-.06,1c0,.2-.05.44-.07.71L28,17.62a5.34,5.34,0,0,1-.35,1.61,1.05,1.05,0,0,1-.67.55v.77H30.7v-.77a.82.82,0,0,1-.6-.2,1.69,1.69,0,0,1-.31-1.18c0-.11,0-.22,0-.32l0-.35.83-7.33a1.42,1.42,0,0,1,1.4.64,5,5,0,0,1,.33,2.13c0,.12,0,.28,0,.5s0,.47,0,.76l.34.15.94-8.21-.35-.1a8.12,8.12,0,0,1-.85,2.64,2.42,2.42,0,0,1-1.64.52l.74-6.65a3.34,3.34,0,0,1,.25-1.1.64.64,0,0,1,.59-.26A1.91,1.91,0,0,1,34.28,3a11.32,11.32,0,0,1,.29,3.06l.34.13.54-5.7Zm15,6.75a27.46,27.46,0,0,1-1.55,9.22q-1.65,4.66-3.79,4.67-1.35,0-2.19-1.95a13.49,13.49,0,0,1-.85-5.23A27.59,27.59,0,0,1,37,4.6Q38.65,0,40.69,0c.91,0,1.65.65,2.23,2A13.17,13.17,0,0,1,43.8,7.23ZM42,4.68a9.3,9.3,0,0,0-.32-2.59c-.21-.72-.53-1.08-1-1.08Q39.12,1,38,7.65a54.69,54.69,0,0,0-.81,8.4,13,13,0,0,0,.16,2.23c.2,1.2.56,1.8,1.09,1.8s1-.43,1.35-1.31a23.28,23.28,0,0,0,1.27-5c.27-1.55.49-3.19.64-4.91S42,5.74,42,4.68ZM50.32,1c.78.66,1.17,1.93,1.17,3.8a11,11,0,0,1-.19,2,7.2,7.2,0,0,1-.66,1.93,3.45,3.45,0,0,1-.77,1,5.58,5.58,0,0,1-.8.52c0,.31.07.51.08.58l1,6.78a5.63,5.63,0,0,0,.42,1.72.85.85,0,0,0,.69.42v.77H48.69l-1.36-9.92H47l-.75,6.25-.1,1c0,.08,0,.16,0,.26v.28a1.94,1.94,0,0,0,.16,1,1.39,1.39,0,0,0,.75.32v.77H43.27v-.77a1.07,1.07,0,0,0,.66-.53,4.83,4.83,0,0,0,.36-1.61L45.84,4.18c0-.28.06-.52.08-.72,0-.42,0-.75,0-1a1.48,1.48,0,0,0-.17-.91,1.39,1.39,0,0,0-.74-.31V.48h3.46A2.67,2.67,0,0,1,50.32,1Zm-.73,3.34a7.2,7.2,0,0,0-.26-2.09c-.18-.55-.47-.83-.89-.83a.4.4,0,0,0-.38.27,4.46,4.46,0,0,0-.2,1.06L47.1,9.65a2.39,2.39,0,0,0,1-.2A2,2,0,0,0,49,8.31a10,10,0,0,0,.4-1.65A12.71,12.71,0,0,0,49.59,4.37Zm11.1-3.3c.77.74,1.16,2.1,1.16,4.09a8.51,8.51,0,0,1-.94,4.28A2.78,2.78,0,0,1,58.48,11h-.36l-.73-.12-.69,6-.11,1c0,.1,0,.2,0,.3s0,.2,0,.3a1.7,1.7,0,0,0,.17.95,1.47,1.47,0,0,0,.75.32v.77H53.77v-.77a1.07,1.07,0,0,0,.66-.53,4.83,4.83,0,0,0,.36-1.61L56.34,4.17l.09-.9c0-.31,0-.55,0-.74a1.58,1.58,0,0,0-.25-1,1.33,1.33,0,0,0-.67-.23V.48h3.62A2.11,2.11,0,0,1,60.69,1.07ZM60,4.32a7,7,0,0,0-.25-2.06c-.17-.53-.45-.8-.84-.8a.4.4,0,0,0-.4.29,6.14,6.14,0,0,0-.2,1L57.5,9.93l.23.06h.21a1.3,1.3,0,0,0,1-.36,3.17,3.17,0,0,0,.6-1.2,12.69,12.69,0,0,0,.36-2A19.64,19.64,0,0,0,60,4.32Zm10.6-3.06V.48H68v.78a1.17,1.17,0,0,1,.68.32A2.43,2.43,0,0,1,69,3.05c0,.32,0,.85-.11,1.6,0-.12,0,.27-.12,1.18l-.73,6.26a36.28,36.28,0,0,1-.8,4.86c-.45,1.65-1.07,2.47-1.87,2.47a1.27,1.27,0,0,1-1.13-.78,5.05,5.05,0,0,1-.41-2.27c0-.43,0-1.1.13-2,.05-.51.12-1.17.21-2l1-9a4.69,4.69,0,0,1,.38-1.69,1.24,1.24,0,0,1,.8-.47V.48H62.55v.78a1.39,1.39,0,0,1,.74.31,1.56,1.56,0,0,1,.17.91c0,.21,0,.47,0,.76s-.06.6-.1.94l-.85,7.36c-.14,1.15-.23,2-.27,2.42-.06.76-.1,1.44-.1,2a7.4,7.4,0,0,0,.81,3.78,2.35,2.35,0,0,0,2,1.35c1.14,0,2-.91,2.6-2.74a35.69,35.69,0,0,0,1-5.7l.79-6.85a30.83,30.83,0,0,1,.58-3.7A1.15,1.15,0,0,1,70.61,1.26Zm5.86,10a7.16,7.16,0,0,1,.56,3.1,10.31,10.31,0,0,1-.86,4.34,2.93,2.93,0,0,1-2.86,1.87h-3.8v-.77a1.07,1.07,0,0,0,.59-.41,4.64,4.64,0,0,0,.43-1.73L72.08,4.17c0-.4.08-.73.1-1s0-.46,0-.61a1.83,1.83,0,0,0-.19-1,1.22,1.22,0,0,0-.73-.28V.48h3.43a2.58,2.58,0,0,1,2.19,1.06A5.92,5.92,0,0,1,77.69,5a6.3,6.3,0,0,1-1,3.67,4.18,4.18,0,0,1-1.39,1.24A4.36,4.36,0,0,1,76.47,11.24Zm-1.36,2.49a4.59,4.59,0,0,0-.6-2.79,2,2,0,0,0-1.3-.52l-.84,7.32c0,.12,0,.25,0,.4s0,.33,0,.52a1.06,1.06,0,0,0,.27.84.77.77,0,0,0,.48.11c.8,0,1.38-.87,1.73-2.63A17.3,17.3,0,0,0,75.11,13.73Zm.1-5.38a7.33,7.33,0,0,0,.52-2.15,15,15,0,0,0,.11-1.77,7.89,7.89,0,0,0-.24-2.14c-.16-.55-.46-.83-.93-.83a.42.42,0,0,0-.4.33,4.42,4.42,0,0,0-.19,1l-.77,6.73a5.23,5.23,0,0,0,1.27-.36A1.77,1.77,0,0,0,75.21,8.35Zm9.61,6.24a9.73,9.73,0,0,1-1.66,3.94,2.93,2.93,0,0,1-2.25,1,.64.64,0,0,1-.51-.21,1,1,0,0,1-.19-.71c0-.19,0-.35,0-.49s0-.29,0-.44L81.91,3.41a4.53,4.53,0,0,1,.38-1.66,1.47,1.47,0,0,1,.88-.49V.48h-4v.78a1.39,1.39,0,0,1,.75.32,1.59,1.59,0,0,1,.18.95c0,.2,0,.43,0,.68s0,.58-.1,1L78.42,17.62a5.28,5.28,0,0,1-.35,1.63,1.12,1.12,0,0,1-.67.53v.77h7l.73-5.83ZM90.09,1.26V.48H86.34v.78a1.38,1.38,0,0,1,.74.32,1.59,1.59,0,0,1,.18.95q0,.3,0,.69c0,.25-.06.57-.11.95L85.58,17.64a5.41,5.41,0,0,1-.36,1.61,1.07,1.07,0,0,1-.66.53v.77h3.75v-.77a1.47,1.47,0,0,1-.75-.32,1.78,1.78,0,0,1-.17-1c0-.08,0-.18,0-.28s0-.2,0-.3l.1-1L89.07,3.41a5.68,5.68,0,0,1,.35-1.62A1.1,1.1,0,0,1,90.09,1.26Zm7-.62a.33.33,0,0,1-.3.24,3.1,3.1,0,0,1-.82-.44A2.5,2.5,0,0,0,94.59,0Q92.51,0,91,4a26.57,26.57,0,0,0-1.51,9.39,13.57,13.57,0,0,0,1,5.67c.66,1.41,1.49,2.11,2.5,2.11A2.46,2.46,0,0,0,94.79,20a9.66,9.66,0,0,0,1.55-3.4L96,16a12.68,12.68,0,0,1-.89,2.13c-.54,1-1.12,1.45-1.74,1.45-.47,0-.91-.39-1.31-1.15a10.33,10.33,0,0,1-.6-4.27,36.59,36.59,0,0,1,1-8.43c.72-3.08,1.57-4.63,2.54-4.63.48,0,.88.39,1.19,1.16a10,10,0,0,1,.47,3.53V6.1c0,.07,0,.32,0,.74L97,7l.64-7h-.38A4.28,4.28,0,0,1,97,.64Zm17.57,14,.31.13-.75,5.83h-9.45l-1.35-9.92H103l-.74,6.25-.11,1c0,.08,0,.16,0,.26v.28a1.94,1.94,0,0,0,.16,1,1.39,1.39,0,0,0,.75.32v.77H99.3v-.77a1.12,1.12,0,0,0,.67-.53,5.18,5.18,0,0,0,.35-1.61l1.55-13.46c0-.28.06-.52.08-.72,0-.42,0-.75,0-1a1.48,1.48,0,0,0-.17-.91,1.39,1.39,0,0,0-.74-.31V.48h3.46a2.64,2.64,0,0,1,1.8.55c.78.66,1.17,1.93,1.17,3.8a11,11,0,0,1-.19,2,6.57,6.57,0,0,1-.66,1.93,3.61,3.61,0,0,1-.76,1,6.48,6.48,0,0,1-.81.52c0,.31.07.51.08.58l1,6.78a5.63,5.63,0,0,0,.42,1.72.84.84,0,0,0,.65.4,1.06,1.06,0,0,0,.64-.51,5.41,5.41,0,0,0,.36-1.61l1.54-13.47c0-.34.07-.65.1-.92s0-.52,0-.72a1.61,1.61,0,0,0-.17-.95,1.31,1.31,0,0,0-.74-.32V.48h6.78l-.53,5.7-.34-.13a11.8,11.8,0,0,0-.3-3.09,1.92,1.92,0,0,0-2-1.54c-.33,0-.55.1-.64.29a3.46,3.46,0,0,0-.24,1.07L111,9.45a2.6,2.6,0,0,0,1.72-.51,7.79,7.79,0,0,0,.86-2.66l.35.11-.93,8.2-.35-.15c0-.28,0-.53,0-.74v-.52a4.42,4.42,0,0,0-.37-2.18,1.56,1.56,0,0,0-1.44-.58l-.83,7.32c0,.18,0,.35,0,.51s0,.3,0,.4a1.45,1.45,0,0,0,.13.67c.09.18.28.26.57.26a2.72,2.72,0,0,0,2-.76A8.33,8.33,0,0,0,114.61,14.59ZM105,8.31a9.81,9.81,0,0,0,.41-1.65,13.72,13.72,0,0,0,.18-2.29,6.87,6.87,0,0,0-.26-2.09c-.17-.55-.47-.83-.89-.83a.4.4,0,0,0-.38.27,5.05,5.05,0,0,0-.2,1.06l-.76,6.87a2.39,2.39,0,0,0,1-.2A2,2,0,0,0,105,8.31Zm17.51,6.28a9.86,9.86,0,0,1-1.67,3.94,2.93,2.93,0,0,1-2.25,1,.64.64,0,0,1-.51-.21,1.1,1.1,0,0,1-.19-.71c0-.19,0-.35,0-.49s0-.29,0-.44l1.64-14.32A4.53,4.53,0,0,1,120,1.75a1.47,1.47,0,0,1,.89-.49V.48h-4v.78a1.39,1.39,0,0,1,.75.32,1.59,1.59,0,0,1,.18.95c0,.2,0,.43,0,.68s0,.58-.1,1l-1.55,13.45a5.28,5.28,0,0,1-.35,1.63,1.1,1.1,0,0,1-.66.53v.77h7l.74-5.83Zm7.09,0a8.33,8.33,0,0,1-2,4.23,2.73,2.73,0,0,1-2,.76c-.29,0-.48-.08-.57-.26a1.45,1.45,0,0,1-.13-.67c0-.1,0-.23,0-.4s0-.33,0-.51l.83-7.32a1.58,1.58,0,0,1,1.44.58,4.42,4.42,0,0,1,.37,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.34.15.94-8.2-.35-.11a7.71,7.71,0,0,1-.87,2.66,2.56,2.56,0,0,1-1.71.51l.75-6.67A3.46,3.46,0,0,1,127,1.71c.09-.19.31-.29.64-.29a1.92,1.92,0,0,1,2,1.54,11.8,11.8,0,0,1,.3,3.09l.33.13.54-5.7H124v.78a1.31,1.31,0,0,1,.75.32,1.7,1.7,0,0,1,.17.95,6.75,6.75,0,0,1,0,.72c0,.27-.05.58-.09.92l-1.55,13.47a5.18,5.18,0,0,1-.35,1.61,1.12,1.12,0,0,1-.67.53v.77h7l.75-5.83Zm8.45,5.24v.72h-3.83v-.72a1.11,1.11,0,0,0,.77-.41,2.52,2.52,0,0,0,.23-1.31c0-.23,0-.77-.07-1.62,0-.17-.05-.9-.13-2.18h-2.71l-.74,3c0,.2-.09.43-.13.67a4.44,4.44,0,0,0-.06.71,1.27,1.27,0,0,0,.16.79,1.35,1.35,0,0,0,.65.3v.72h-2.47v-.72a1.66,1.66,0,0,0,.52-.54,7.25,7.25,0,0,0,.55-1.58L135.49.07h.33L137,17.23a8.87,8.87,0,0,0,.3,2.11A.9.9,0,0,0,138.08,19.83ZM135,13.12l-.47-7.3-1.86,7.3Zm7.88-4-1.09-2.13a6.38,6.38,0,0,1-.39-1,6.65,6.65,0,0,1-.23-1.82,6.93,6.93,0,0,1,.23-1.8q.33-1.26,1-1.26c.57,0,1,.53,1.3,1.57a10.87,10.87,0,0,1,.36,2.39l0,1,.33.1.51-6h-.38a2.26,2.26,0,0,1-.2.54.38.38,0,0,1-.34.22.54.54,0,0,1-.19-.05l-.22-.13-.32-.25a2.36,2.36,0,0,0-.41-.25,1.82,1.82,0,0,0-.7-.16c-.81,0-1.44.57-1.9,1.7a11.21,11.21,0,0,0-.68,4.12,12.36,12.36,0,0,0,1.55,5.58,10.74,10.74,0,0,1,1.54,4.78,7.8,7.8,0,0,1-.41,2.67c-.28.76-.67,1.15-1.17,1.15a1.07,1.07,0,0,1-.79-.4,3.78,3.78,0,0,1-.64-1.18,7.79,7.79,0,0,1-.42-1.95c-.05-.44-.08-1.14-.11-2.1l-.36-.06-.46,6.73h.38a6.32,6.32,0,0,1,.2-.83.31.31,0,0,1,.3-.24.21.21,0,0,1,.14,0,1.06,1.06,0,0,1,.22.18l.32.27a3,3,0,0,0,.69.44,1.72,1.72,0,0,0,.69.15c.92,0,1.64-.63,2.16-1.91a11.22,11.22,0,0,0,.78-4.28,12.2,12.2,0,0,0-.4-3.29A14.21,14.21,0,0,0,142.85,9.07Zm6.36-7.36c.09-.19.31-.29.64-.29a1.92,1.92,0,0,1,2,1.54,11.8,11.8,0,0,1,.3,3.09l.33.13L153,.48h-6.79v.78a1.31,1.31,0,0,1,.75.32,1.7,1.7,0,0,1,.17.95,6.75,6.75,0,0,1,0,.72c0,.27-.05.58-.09.92l-1.55,13.47a5.18,5.18,0,0,1-.35,1.61,1.12,1.12,0,0,1-.67.53v.77h7l.75-5.83-.31-.13a8.33,8.33,0,0,1-2,4.23,2.73,2.73,0,0,1-2,.76c-.29,0-.48-.08-.57-.26a1.45,1.45,0,0,1-.13-.67c0-.1,0-.23,0-.4s0-.33.05-.51l.83-7.32a1.58,1.58,0,0,1,1.44.58,4.42,4.42,0,0,1,.37,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.34.15.94-8.2-.35-.11a7.71,7.71,0,0,1-.87,2.66,2.56,2.56,0,0,1-1.71.51L149,2.78A3.46,3.46,0,0,1,149.21,1.71Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 152.969, height: 21.152, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'ForComment':\n case 'For Comment':\n {\n stampCollection = {\n iconName: 'For Comment',\n // eslint-disable-next-line max-len\n pathdata: 'M14.1.48l-.89,5.6L12.65,6a7.14,7.14,0,0,0-.48-3c-.54-1-1.6-1.54-3.19-1.54a1.37,1.37,0,0,0-1,.26,2.06,2.06,0,0,0-.42,1.08L6.35,9.28a6,6,0,0,0,2.73-.52,5.92,5.92,0,0,0,1.41-2.59l.58.1L9.52,14.34,9,14.2c0-.29,0-.54.05-.75s0-.38,0-.49a3.15,3.15,0,0,0-.55-2.09,3.07,3.07,0,0,0-2.32-.64L4.77,17.44c0,.13,0,.24-.06.35s0,.21,0,.31a1.23,1.23,0,0,0,.53,1.17,2,2,0,0,0,1,.19v.76H0v-.76a1.91,1.91,0,0,0,1.12-.54,3.56,3.56,0,0,0,.58-1.58L4.27,4.11c.05-.27.09-.51.12-.71a7.42,7.42,0,0,0,.1-1c0-.48-.1-.77-.29-.9A3.54,3.54,0,0,0,3,1.24V.48ZM28,7.11a17.42,17.42,0,0,1-2.57,9.07q-2.75,4.61-6.3,4.6a4.33,4.33,0,0,1-3.65-1.92,8.53,8.53,0,0,1-1.41-5.14,17.56,17.56,0,0,1,2.62-9.19Q19.43,0,22.82,0a4.48,4.48,0,0,1,3.72,1.92A8.46,8.46,0,0,1,28,7.11ZM25,4.6a5.72,5.72,0,0,0-.52-2.55,1.72,1.72,0,0,0-1.63-1c-1.74,0-3.2,2.17-4.39,6.53a32.66,32.66,0,0,0-1.35,8.26,8.24,8.24,0,0,0,.26,2.2c.33,1.18.94,1.77,1.82,1.77a2.88,2.88,0,0,0,2.25-1.29,16.48,16.48,0,0,0,2.1-4.93,37.09,37.09,0,0,0,1.07-4.83A28.26,28.26,0,0,0,25,4.6Zm15.83.16a6.49,6.49,0,0,1-.33,2,5.12,5.12,0,0,1-1.09,1.9,4.65,4.65,0,0,1-1.27,1,11.5,11.5,0,0,1-1.35.52c.07.3.12.49.14.57l1.62,6.66a3.79,3.79,0,0,0,.7,1.7,1.75,1.75,0,0,0,1.14.41v.76H36.13l-2.26-9.76h-.59L32,16.6l-.17,1,0,.25a2.62,2.62,0,0,0,0,.28q0,.8.27,1a3,3,0,0,0,1.25.32v.76H27.11v-.76a1.93,1.93,0,0,0,1.11-.52,3.54,3.54,0,0,0,.59-1.59L31.38,4.11c.06-.27.1-.51.13-.71a6,6,0,0,0,.1-1c0-.47-.1-.77-.29-.9a3.54,3.54,0,0,0-1.24-.3V.48h5.76a6.77,6.77,0,0,1,3,.53Q40.79,2,40.79,4.76Zm-3.16-.47a4.35,4.35,0,0,0-.44-2,1.54,1.54,0,0,0-1.48-.81.75.75,0,0,0-.63.26,2.78,2.78,0,0,0-.33,1.05L33.48,9.5a6.85,6.85,0,0,0,1.67-.2,2.55,2.55,0,0,0,1.49-1.13,6.37,6.37,0,0,0,.67-1.62A7.81,7.81,0,0,0,37.63,4.29ZM58.49,0a2.61,2.61,0,0,1-.32.63.55.55,0,0,1-.49.24A7,7,0,0,1,56.31.43,6.15,6.15,0,0,0,54.1,0q-3.47,0-6,3.92a16.73,16.73,0,0,0-2.51,9.24,8.73,8.73,0,0,0,1.64,5.57,5,5,0,0,0,7.19,1A8.89,8.89,0,0,0,57,16.37l-.64-.65a10.47,10.47,0,0,1-1.47,2.09A4,4,0,0,1,52,19.24a2.89,2.89,0,0,1-2.17-1.13c-.67-.75-1-2.15-1-4.2a22.2,22.2,0,0,1,1.62-8.29q1.8-4.54,4.23-4.55a2.33,2.33,0,0,1,2,1.14,6.16,6.16,0,0,1,.78,3.47c0,.14,0,.25,0,.32s0,.32,0,.73l.66.17L59.12,0ZM72.71,7.11a17.33,17.33,0,0,1-2.57,9.07c-1.82,3.07-3.93,4.6-6.3,4.6a4.34,4.34,0,0,1-3.65-1.92,8.53,8.53,0,0,1-1.4-5.14A17.55,17.55,0,0,1,61.4,4.53Q64.15,0,67.54,0a4.48,4.48,0,0,1,3.72,1.92A8.39,8.39,0,0,1,72.71,7.11Zm-3-2.51a5.72,5.72,0,0,0-.52-2.55,1.72,1.72,0,0,0-1.63-1c-1.74,0-3.2,2.17-4.39,6.53a32.66,32.66,0,0,0-1.35,8.26,8.24,8.24,0,0,0,.26,2.2c.33,1.18.94,1.77,1.82,1.77a2.85,2.85,0,0,0,2.25-1.29,16,16,0,0,0,2.1-4.93,34.08,34.08,0,0,0,1.07-4.83A28.26,28.26,0,0,0,69.68,4.6Zm17.5,13.62a4.63,4.63,0,0,1,.07-.75c0-.3.09-.59.15-.88L90,3.31a3.32,3.32,0,0,1,.7-1.67,2,2,0,0,1,1-.4V.48H87.23l-6.4,13.91L79.63.48H74.84v.76a3.29,3.29,0,0,1,1.2.21c.21.11.31.37.31.78a4.35,4.35,0,0,1-.07.75c0,.28-.11.61-.18,1L74,15a19.63,19.63,0,0,1-1,3.65,1.54,1.54,0,0,1-1.17.86v.76H76.2v-.76a2.31,2.31,0,0,1-1.09-.29,1.6,1.6,0,0,1-.58-1.43,8.8,8.8,0,0,1,.14-1.42c0-.37.14-.82.24-1.37L77,4.24l1.41,16.37H79L86.89,3.76,84.25,17.34A2.94,2.94,0,0,1,83.61,19a2.87,2.87,0,0,1-1.44.49v.76h6.54v-.76a3.39,3.39,0,0,1-1.23-.31Q87.18,19,87.18,18.22Zm17.73,0a4.63,4.63,0,0,1,.07-.75c0-.3.1-.59.16-.88l2.58-13.28a3.24,3.24,0,0,1,.69-1.67,2,2,0,0,1,1-.4V.48H105l-6.4,13.91L97.36.48H92.57v.76a3.29,3.29,0,0,1,1.2.21c.21.11.32.37.32.78A5.65,5.65,0,0,1,94,3c0,.28-.11.61-.19,1L91.69,15a19.63,19.63,0,0,1-1,3.65,1.54,1.54,0,0,1-1.17.86v.76h4.38v-.76a2.33,2.33,0,0,1-1.1-.29,1.6,1.6,0,0,1-.58-1.43,10.12,10.12,0,0,1,.14-1.42c.06-.37.14-.82.25-1.37L94.76,4.24l1.41,16.37h.59l7.86-16.85L102,17.34a3.1,3.1,0,0,1-.64,1.63,3,3,0,0,1-1.45.49v.76h6.55v-.76a3.46,3.46,0,0,1-1.24-.31Q104.91,19,104.91,18.22Zm11.52.3a6.56,6.56,0,0,1-3.25.75,1.27,1.27,0,0,1-.94-.26,1,1,0,0,1-.22-.66,3,3,0,0,1,0-.39,4.88,4.88,0,0,1,.08-.51l1.38-7.2a3.65,3.65,0,0,1,2.4.57,2.92,2.92,0,0,1,.62,2.15c0,.14,0,.31,0,.51s0,.45-.06.73l.58.15,1.55-8.08-.58-.1a5.92,5.92,0,0,1-1.44,2.61,6.32,6.32,0,0,1-2.85.51L115,2.74a2.44,2.44,0,0,1,.39-1.06,1.43,1.43,0,0,1,1.07-.28c1.63,0,2.71.5,3.25,1.51a7.37,7.37,0,0,1,.49,3l.56.13.89-5.6H110.31v.76a3.28,3.28,0,0,1,1.25.31c.19.13.28.44.28.94a4.83,4.83,0,0,1-.06.7c0,.28-.09.58-.16.92l-2.57,13.24a3.54,3.54,0,0,1-.59,1.59,1.93,1.93,0,0,1-1.11.52v.76H119l1.24-5.74-.51-.12A7.7,7.7,0,0,1,116.43,18.52ZM136.6,1.24V.48h-4.3v.76a2.5,2.5,0,0,1,1.14.33A1.8,1.8,0,0,1,134,3.05a10.58,10.58,0,0,1-.14,1.34c-.05.41-.13.87-.22,1.39L132,14.12,127.41.48h-4.22v.76a2.53,2.53,0,0,1,1,.24,1.82,1.82,0,0,1,.64,1.06l.1.3L122.55,15a19.54,19.54,0,0,1-1,3.61,1.59,1.59,0,0,1-1.18.9v.76h4.37v-.76a2.5,2.5,0,0,1-1.12-.32,1.67,1.67,0,0,1-.55-1.44,5.32,5.32,0,0,1,0-.79c0-.43.17-1.09.34-2l2.08-10.57L131,20.71h.52l2.91-15a24.72,24.72,0,0,1,.85-3.42,1.42,1.42,0,0,1,1-1Zm.48-.76-.81,5,.54.2a8.1,8.1,0,0,1,1.85-3.16,3.63,3.63,0,0,1,2.66-1.06l-3.08,15.85a3,3,0,0,1-.86,1.85,2.42,2.42,0,0,1-1.32.26v.76H143v-.76a4,4,0,0,1-1.41-.3c-.23-.13-.34-.45-.34-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.17-1,2.92-15.1a2.64,2.64,0,0,1,1.76.63c.74.7,1.12,2,1.15,3.94l.55.07L148.6.48Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 148.603, height: 20.812, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'Void':\n {\n stampCollection = {\n iconName: 'Void',\n // eslint-disable-next-line max-len\n pathdata: 'M27.88,1.72a6.53,6.53,0,0,0-1.81,1.42L9,21.12H7.54L4.09,5.83A11.83,11.83,0,0,0,2.82,2Q2.3,1.4,0,1.26V.48H13.54v.78a11,11,0,0,0-2.37.18q-1.11.27-1.11,1.05a1.43,1.43,0,0,0,0,.29c0,.09,0,.19,0,.28l2.35,12,8.56-9a25.11,25.11,0,0,0,1.83-2.14,3.15,3.15,0,0,0,.82-1.68c0-.41-.28-.69-.84-.82a12.57,12.57,0,0,0-2.08-.15V.48h8.7v.78A7.11,7.11,0,0,0,27.88,1.72ZM57.37,7.23q0,4.85-5.56,9.22a21.41,21.41,0,0,1-13.62,4.67,14.41,14.41,0,0,1-7.89-1.95,6,6,0,0,1-3-5.23q0-4.92,5.66-9.34A21.12,21.12,0,0,1,46.2,0a15,15,0,0,1,8,2A6,6,0,0,1,57.37,7.23ZM50.82,4.68a3.46,3.46,0,0,0-1.13-2.59A4.93,4.93,0,0,0,46.17,1q-5.64,0-9.49,6.64c-1.94,3.36-2.92,6.16-2.92,8.4a4.27,4.27,0,0,0,.56,2.23q1.08,1.8,3.93,1.8a9.24,9.24,0,0,0,4.87-1.31,15.24,15.24,0,0,0,4.54-5A21.81,21.81,0,0,0,50,8.85,14.23,14.23,0,0,0,50.82,4.68ZM66,18.49a1.49,1.49,0,0,1,0-.28c0-.1,0-.2.08-.3l.35-1L72,3.41a2.94,2.94,0,0,1,1.25-1.62,6.79,6.79,0,0,1,2.4-.53V.48H62.19v.78a13.27,13.27,0,0,1,2.67.32.88.88,0,0,1,.64.95,2.38,2.38,0,0,1-.12.69c-.08.25-.2.57-.36.95L59.45,17.64a3,3,0,0,1-1.28,1.61,6.84,6.84,0,0,1-2.39.53v.77H69.27v-.77a13.72,13.72,0,0,1-2.67-.32A.9.9,0,0,1,66,18.49Zm38.25-9.67q0,4.59-5.15,8-5.73,3.77-15,3.76h-13v-.77a7.4,7.4,0,0,0,2.1-.41,3.08,3.08,0,0,0,1.57-1.75L80.28,4.17c.16-.38.28-.7.37-1a2.27,2.27,0,0,0,.12-.68.89.89,0,0,0-.64-.95,13.41,13.41,0,0,0-2.68-.32V.48H90.6q6.68,0,10.15,2.27A6.92,6.92,0,0,1,104.23,8.82ZM97.58,7a5.28,5.28,0,0,0-1.13-3.54q-1.77-2-6.14-2a4.24,4.24,0,0,0-2,.32,1.77,1.77,0,0,0-.74.84L81.35,17.73a1.72,1.72,0,0,0-.12.39,1.89,1.89,0,0,0,0,.31.89.89,0,0,0,.54.85,5.1,5.1,0,0,0,2,.26q8.07,0,11.68-5.5A12.61,12.61,0,0,0,97.58,7Z',\n opacity: 1, strokeColor: '', fillColor: '#8a251a', width: 104.233, height: 21.123, stampFillColor: '#f6dedd', stampStrokeColor: '',\n };\n }\n break;\n case 'PreliminaryResults':\n case 'Preliminary Results':\n {\n stampCollection = {\n iconName: 'Preliminary Results',\n // eslint-disable-next-line max-len\n pathdata: 'M9.23,5.08q0-3-1.32-4.08A2.6,2.6,0,0,0,6.17.41H2v.78a1.5,1.5,0,0,1,.76.23,1.39,1.39,0,0,1,.28,1c0,.19,0,.43,0,.73s-.07.61-.1.91L1.17,17.56a4.76,4.76,0,0,1-.41,1.62A1.18,1.18,0,0,1,0,19.7v.78H4.25V19.7a1.77,1.77,0,0,1-.86-.31,1.5,1.5,0,0,1-.2-1c0-.09,0-.19,0-.3a1.36,1.36,0,0,1,0-.29l.12-1,.78-6L5,11h.41a3.21,3.21,0,0,0,2.78-1.6A7.57,7.57,0,0,0,9.23,5.08ZM7,6.32a10,10,0,0,1-.42,2,3,3,0,0,1-.68,1.21,1.63,1.63,0,0,1-1.13.36H4.53l-.27-.06,1-7.15a4.75,4.75,0,0,1,.22-1,.45.45,0,0,1,.46-.29,1,1,0,0,1,1,.8,6.22,6.22,0,0,1,.29,2.06A18,18,0,0,1,7,6.32ZM23.4,18.75a3.35,3.35,0,0,1-2.23.76.68.68,0,0,1-.64-.26,1.27,1.27,0,0,1-.16-.68c0-.09,0-.23,0-.39s0-.34.05-.51l.95-7.33a1.92,1.92,0,0,1,1.65.59,4,4,0,0,1,.42,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.4.15,1.07-8.21-.4-.1a7,7,0,0,1-1,2.65,3.15,3.15,0,0,1-2,.52l.85-6.67a3,3,0,0,1,.28-1.08c.11-.19.35-.28.73-.28a2.16,2.16,0,0,1,2.23,1.54A10.27,10.27,0,0,1,26,6l.39.13L27,.41H19.2v.78a1.67,1.67,0,0,1,.86.31,1.52,1.52,0,0,1,.19,1,6.58,6.58,0,0,1,0,.71c0,.28-.07.59-.11.93L18.33,17.56a4.59,4.59,0,0,1-.4,1.62,1.22,1.22,0,0,1-.74.51,1,1,0,0,1-.73-.4A5.08,5.08,0,0,1,16,17.56l-1.1-6.77c0-.08,0-.27-.1-.58a5.14,5.14,0,0,0,.92-.53,3.23,3.23,0,0,0,.87-1,6,6,0,0,0,.76-1.93,9.63,9.63,0,0,0,.22-2c0-1.87-.44-3.14-1.34-3.81a3.4,3.4,0,0,0-2-.54h-4v.78a1.78,1.78,0,0,1,.85.3,1.4,1.4,0,0,1,.19.91c0,.24,0,.56-.06,1,0,.21-.05.45-.09.73L9.31,17.56a4.53,4.53,0,0,1-.41,1.62,1.15,1.15,0,0,1-.75.52v.78h4.28V19.7a1.62,1.62,0,0,1-.86-.32,1.72,1.72,0,0,1-.18-1v-.29c0-.09,0-.18,0-.25l.12-1,.86-6.24h.4l1.55,9.92h10.8L26,14.65l-.35-.13A7.9,7.9,0,0,1,23.4,18.75ZM13.67,9.38a3.35,3.35,0,0,1-1.15.2l.87-6.87a4,4,0,0,1,.23-1.06.45.45,0,0,1,.43-.27,1.05,1.05,0,0,1,1,.83,6.14,6.14,0,0,1,.3,2.08,11.74,11.74,0,0,1-.21,2.29,9,9,0,0,1-.47,1.65A2,2,0,0,1,13.67,9.38ZM35,14.65l-.84,5.83h-8V19.7a1.24,1.24,0,0,0,.76-.52,4.73,4.73,0,0,0,.4-1.63L29.15,4.1q.08-.57.12-1c0-.26,0-.48,0-.68a1.42,1.42,0,0,0-.21-1,1.67,1.67,0,0,0-.85-.31V.41h4.56v.78a1.67,1.67,0,0,0-1,.49,4.17,4.17,0,0,0-.44,1.66L29.49,17.65c0,.16,0,.31,0,.45a3.47,3.47,0,0,0,0,.48,1,1,0,0,0,.21.72.8.8,0,0,0,.59.21,3.54,3.54,0,0,0,2.56-1.05,9.24,9.24,0,0,0,1.91-3.94Zm2.79,4.73a1.61,1.61,0,0,0,.85.32v.78H34.39V19.7a1.18,1.18,0,0,0,.76-.52,4.76,4.76,0,0,0,.41-1.62L37.33,4.1c.05-.38.09-.7.11-1a5.83,5.83,0,0,0,0-.68,1.5,1.5,0,0,0-.2-1,1.71,1.71,0,0,0-.85-.31V.41h4.29v.78a1.22,1.22,0,0,0-.77.52,4.9,4.9,0,0,0-.39,1.63L37.78,16.8l-.11,1,0,.29c0,.11,0,.2,0,.29A1.52,1.52,0,0,0,37.83,19.38Zm12.2,0a1.81,1.81,0,0,0,.85.31v.78h-4.5V19.7a1.64,1.64,0,0,0,1-.49,4,4,0,0,0,.44-1.66l1.81-13.8-5.4,17.12h-.4l-1-16.64L41.39,15.12c-.07.56-.13,1-.17,1.39-.06.61-.09,1.09-.09,1.45a2,2,0,0,0,.4,1.45,1.19,1.19,0,0,0,.75.29v.78h-3V19.7a1.21,1.21,0,0,0,.81-.87,29.47,29.47,0,0,0,.66-3.71L42.21,4c0-.38.09-.71.12-1a5.41,5.41,0,0,0,.05-.75c0-.42-.07-.69-.21-.8a1.69,1.69,0,0,0-.83-.21V.41h3.29l.83,14.14L49.85.41h3.07v.78a1.12,1.12,0,0,0-.69.41,4.08,4.08,0,0,0-.48,1.69L50,16.79c0,.29-.08.59-.11.89s0,.56,0,.76A1.41,1.41,0,0,0,50,19.39Zm5,0a1.61,1.61,0,0,0,.85.32v.78H51.56V19.7a1.18,1.18,0,0,0,.76-.52,4.76,4.76,0,0,0,.41-1.62L54.5,4.1c0-.38.09-.7.11-1a5.83,5.83,0,0,0,0-.68,1.5,1.5,0,0,0-.2-1,1.71,1.71,0,0,0-.85-.31V.41h4.29v.78a1.22,1.22,0,0,0-.77.52,4.9,4.9,0,0,0-.39,1.63L55,16.8l-.11,1,0,.29c0,.11,0,.2,0,.29A1.52,1.52,0,0,0,55,19.38ZM66.13,5.75,64.13,21h-.36L60,4.38,58.6,15.12c-.12.89-.2,1.55-.23,2a7.32,7.32,0,0,0,0,.81,2.17,2.17,0,0,0,.38,1.46,1.32,1.32,0,0,0,.77.32v.78h-3V19.7a1.26,1.26,0,0,0,.81-.91,29,29,0,0,0,.65-3.67L59.56,2.81,59.5,2.5a2,2,0,0,0-.45-1.06,1.21,1.21,0,0,0-.67-.25V.41h2.9L64.4,14.28,65.52,5.8c.07-.53.12-1,.16-1.41.06-.62.09-1.08.09-1.36a2.45,2.45,0,0,0-.34-1.51,1.39,1.39,0,0,0-.79-.33V.41h3v.78l-.21.06c-.29.08-.52.43-.68,1A34.22,34.22,0,0,0,66.13,5.75ZM83.27,1A3.41,3.41,0,0,0,81.21.41h-4v.78a1.74,1.74,0,0,1,.85.3c.14.13.2.43.2.91,0,.24,0,.56-.06,1,0,.21-.06.45-.09.73L76.38,17.56A4.53,4.53,0,0,1,76,19.18a1.18,1.18,0,0,1-.76.52v0a1,1,0,0,1-.67-.45,8.11,8.11,0,0,1-.34-2.12L72.83,0h-.38L67.11,17.64a6.42,6.42,0,0,1-.63,1.58,1.84,1.84,0,0,1-.59.54v.72h2.83v-.72a1.68,1.68,0,0,1-.75-.31,1.16,1.16,0,0,1-.18-.79,3.46,3.46,0,0,1,.07-.7,5.16,5.16,0,0,1,.15-.67l.84-3H72c.08,1.28.13,2,.13,2.18.06.85.08,1.39.08,1.61a2.26,2.26,0,0,1-.25,1.31,1.43,1.43,0,0,1-.88.42v.72H79.5V19.7a1.58,1.58,0,0,1-.86-.32,1.7,1.7,0,0,1-.19-1c0-.1,0-.2,0-.29a1.81,1.81,0,0,1,0-.25l.12-1,.85-6.24h.41l1.55,9.92h2.9V19.7a1,1,0,0,1-.79-.41A5.15,5.15,0,0,1,83,17.56l-1.11-6.77c0-.08,0-.27-.09-.58a5.53,5.53,0,0,0,.92-.53,3.52,3.52,0,0,0,.87-1,6.16,6.16,0,0,0,.75-1.93,9.67,9.67,0,0,0,.23-2C84.61,2.89,84.16,1.62,83.27,1ZM69.19,13.05l2.13-7.3.53,7.3Zm13-6.47a8.39,8.39,0,0,1-.46,1.65,2,2,0,0,1-1,1.15,3.29,3.29,0,0,1-1.14.2l.87-6.87a3.61,3.61,0,0,1,.23-1.06.45.45,0,0,1,.43-.27,1.05,1.05,0,0,1,1,.83,6.14,6.14,0,0,1,.3,2.08A11,11,0,0,1,82.22,6.58ZM90.48.41h3v.78a1.07,1.07,0,0,0-.55.41,6.13,6.13,0,0,0-.77,1.62l-2.72,8-.72,5.55c0,.22-.07.51-.1.86a7.29,7.29,0,0,0-.06.73,1.46,1.46,0,0,0,.29,1.07,1.61,1.61,0,0,0,.83.25v.78H85V19.7a1.56,1.56,0,0,0,.93-.39,3.7,3.7,0,0,0,.53-1.76l.85-6.45-1.26-8a6.07,6.07,0,0,0-.36-1.47.81.81,0,0,0-.7-.4V.41h4v.78a1.32,1.32,0,0,0-.76.23c-.15.12-.23.4-.23.84a4.46,4.46,0,0,0,0,.48c0,.19,0,.39.07.6l1,6.54,1.88-5.55c.1-.29.18-.55.24-.79a4.68,4.68,0,0,0,.14-1.11,1.35,1.35,0,0,0-.31-1,1.14,1.14,0,0,0-.66-.2Zm18.61,1.22c.1-.19.35-.28.73-.28a2.16,2.16,0,0,1,2.23,1.54A10.27,10.27,0,0,1,112.39,6l.38.13.62-5.7h-7.76v.78a1.67,1.67,0,0,1,.86.31,1.59,1.59,0,0,1,.19,1,6.58,6.58,0,0,1,0,.71c0,.28-.07.59-.11.93l-1.77,13.46a4.53,4.53,0,0,1-.41,1.62,1.17,1.17,0,0,1-.73.51,1,1,0,0,1-.73-.4,5.08,5.08,0,0,1-.49-1.73l-1.1-6.77c0-.08,0-.27-.1-.58a5.14,5.14,0,0,0,.92-.53,3.4,3.4,0,0,0,.88-1,6.16,6.16,0,0,0,.75-1.93,9.63,9.63,0,0,0,.22-2c0-1.87-.44-3.14-1.34-3.81a3.38,3.38,0,0,0-2-.54h-4v.78a1.78,1.78,0,0,1,.85.3,1.4,1.4,0,0,1,.19.91c0,.24,0,.56-.06,1,0,.21,0,.45-.09.73L95.74,17.56a4.53,4.53,0,0,1-.41,1.62,1.15,1.15,0,0,1-.75.52v.78h4.28V19.7a1.62,1.62,0,0,1-.86-.32,1.72,1.72,0,0,1-.18-1v-.29c0-.09,0-.18,0-.25l.12-1,.86-6.24h.4l1.55,9.92h10.8l.85-5.83-.35-.13a7.9,7.9,0,0,1-2.24,4.23,3.35,3.35,0,0,1-2.23.76.71.71,0,0,1-.65-.26,1.37,1.37,0,0,1-.15-.68c0-.09,0-.23,0-.39s0-.34.05-.51l.95-7.33a1.92,1.92,0,0,1,1.65.59,4,4,0,0,1,.42,2.18c0,.14,0,.31,0,.52s0,.46,0,.74l.4.15,1.07-8.21-.41-.1a7,7,0,0,1-1,2.65,3.15,3.15,0,0,1-2,.52l.85-6.67A3,3,0,0,1,109.09,1.63Zm-9,7.75a3.35,3.35,0,0,1-1.15.2l.87-6.87a4,4,0,0,1,.23-1.06.45.45,0,0,1,.43-.27,1.05,1.05,0,0,1,1,.83,6.14,6.14,0,0,1,.3,2.08,11.74,11.74,0,0,1-.21,2.29,9,9,0,0,1-.47,1.65A2,2,0,0,1,100.1,9.38ZM120.18.07h.43l-.59,6-.37-.1-.05-1a10.11,10.11,0,0,0-.41-2.39c-.34-1-.83-1.57-1.48-1.57s-.95.42-1.21,1.26a6.17,6.17,0,0,0-.25,1.8,5.92,5.92,0,0,0,.26,1.82,5.23,5.23,0,0,0,.44,1L118.19,9a12.6,12.6,0,0,1,1.12,2.57,10.75,10.75,0,0,1,.47,3.29,10,10,0,0,1-.9,4.29,2.76,2.76,0,0,1-2.46,1.91,2.17,2.17,0,0,1-.79-.15,3.28,3.28,0,0,1-.79-.44l-.36-.28-.26-.18a.38.38,0,0,0-.16,0,.34.34,0,0,0-.34.23,5.5,5.5,0,0,0-.23.84h-.43l.52-6.73.41.06c0,1,.07,1.66.12,2.09a7.13,7.13,0,0,0,.49,1.95,3.52,3.52,0,0,0,.73,1.18,1.25,1.25,0,0,0,.9.41c.57,0,1-.39,1.34-1.15a7.13,7.13,0,0,0,.47-2.68,9.86,9.86,0,0,0-1.76-4.77,11.23,11.23,0,0,1-1.77-5.58,9.8,9.8,0,0,1,.78-4.12A2.41,2.41,0,0,1,117.46,0a2.06,2.06,0,0,1,.79.16,1.9,1.9,0,0,1,.47.25l.37.25a1.15,1.15,0,0,0,.25.12.47.47,0,0,0,.22,0A.44.44,0,0,0,120,.62,2.6,2.6,0,0,0,120.18.07Zm10,2a26.67,26.67,0,0,0-.66,3.7l-.9,6.85a32.12,32.12,0,0,1-1.16,5.7c-.68,1.83-1.67,2.74-3,2.74a2.7,2.7,0,0,1-2.28-1.36,6.67,6.67,0,0,1-.92-3.77,19.46,19.46,0,0,1,.11-2c0-.46.15-1.26.3-2.42l1-7.36c0-.33.08-.64.11-.93s0-.55,0-.77a1.38,1.38,0,0,0-.2-.91,1.74,1.74,0,0,0-.85-.3V.41h4.43v.78a1.39,1.39,0,0,0-.91.47,4.25,4.25,0,0,0-.44,1.68l-1.18,9c-.11.8-.19,1.46-.25,2q-.15,1.37-.15,2a4.41,4.41,0,0,0,.48,2.27,1.44,1.44,0,0,0,1.29.78c.91,0,1.62-.82,2.13-2.48a30.62,30.62,0,0,0,.91-4.85L129,5.76c.1-.91.14-1.3.13-1.19a14.64,14.64,0,0,0,.13-1.6,2.12,2.12,0,0,0-.38-1.46,1.35,1.35,0,0,0-.77-.32V.41H131v.78A1.18,1.18,0,0,0,130.23,2.06Zm8.41,12.59-.84,5.83h-8V19.7a1.24,1.24,0,0,0,.76-.52,4.73,4.73,0,0,0,.4-1.63L132.75,4.1q.08-.57.12-1c0-.26,0-.48,0-.68,0-.51-.06-.83-.2-1a1.67,1.67,0,0,0-.85-.31V.41h4.56v.78a1.67,1.67,0,0,0-1,.49A4.17,4.17,0,0,0,135,3.34l-1.87,14.31c0,.16,0,.31-.05.45s0,.3,0,.48a1,1,0,0,0,.21.72.8.8,0,0,0,.59.21,3.54,3.54,0,0,0,2.56-1.05,9.24,9.24,0,0,0,1.91-3.94Zm7.72-8.56a7.63,7.63,0,0,0-.79-4,1.53,1.53,0,0,0-1.21-.64l-2,15.35-.12,1a2.47,2.47,0,0,0,0,.34,2.35,2.35,0,0,0,0,.26c0,.52.08.84.23,1a2,2,0,0,0,1,.3v.78h-4.76V19.7a1.18,1.18,0,0,0,.9-.26,3.75,3.75,0,0,0,.6-1.88l2.11-16.11a2.17,2.17,0,0,0-1.83,1.08,9.57,9.57,0,0,0-1.27,3.21l-.37-.2.56-5.13h7.91l-.52,5.76Zm3.41-3.79a6.17,6.17,0,0,0-.25,1.8,5.63,5.63,0,0,0,.26,1.82,5.23,5.23,0,0,0,.44,1L151.46,9a13.19,13.19,0,0,1,1.13,2.57,11.08,11.08,0,0,1,.46,3.29,10,10,0,0,1-.9,4.29,2.76,2.76,0,0,1-2.46,1.91,2.21,2.21,0,0,1-.79-.15,3.28,3.28,0,0,1-.79-.44l-.36-.28-.26-.18a.38.38,0,0,0-.16,0,.34.34,0,0,0-.34.23,5.5,5.5,0,0,0-.23.84h-.43l.52-6.73.41.06c0,1,.07,1.66.12,2.09a7.13,7.13,0,0,0,.49,1.95,3.52,3.52,0,0,0,.73,1.18,1.25,1.25,0,0,0,.9.41c.57,0,1-.39,1.34-1.15a7.13,7.13,0,0,0,.47-2.68,9.86,9.86,0,0,0-1.76-4.77,11.23,11.23,0,0,1-1.77-5.58,9.8,9.8,0,0,1,.78-4.12A2.41,2.41,0,0,1,150.73,0a2.06,2.06,0,0,1,.79.16,1.9,1.9,0,0,1,.47.25l.37.25a1.34,1.34,0,0,0,.24.12.56.56,0,0,0,.23,0,.44.44,0,0,0,.39-.21,2.6,2.6,0,0,0,.23-.55h.43l-.59,6-.37-.1,0-1a10.11,10.11,0,0,0-.41-2.39c-.34-1-.83-1.57-1.48-1.57S150,1.46,149.77,2.3Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 153.879, height: 21.051, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n case 'InformationOnly':\n case 'Information Only':\n {\n stampCollection = {\n iconName: 'Information Only',\n // eslint-disable-next-line max-len\n pathdata: 'M4,19.14a2,2,0,0,0,1,.32v.76H0v-.76a1.42,1.42,0,0,0,.87-.52,4,4,0,0,0,.47-1.59l2-13.24c.06-.38.1-.69.13-1a5.73,5.73,0,0,0,0-.67c0-.5-.08-.81-.24-.94a2.2,2.2,0,0,0-1-.31V.48H7.26v.76a1.48,1.48,0,0,0-.88.52,4.14,4.14,0,0,0-.45,1.6l-2,13.24-.13,1c0,.1,0,.19,0,.3a2.72,2.72,0,0,0,0,.28A1.32,1.32,0,0,0,4,19.14ZM18.17,1.3l.24-.06V.48H15v.76a1.66,1.66,0,0,1,.9.33,2.08,2.08,0,0,1,.4,1.48,12.85,12.85,0,0,1-.1,1.34c-.05.41-.11.87-.18,1.39l-1.29,8.34L11.15.48H7.83v.76a1.69,1.69,0,0,1,.77.24,1.9,1.9,0,0,1,.51,1.06l.07.3L7.33,15a24.86,24.86,0,0,1-.76,3.61,1.32,1.32,0,0,1-.92.9v.76H9.09v-.76a1.67,1.67,0,0,1-.88-.32,1.92,1.92,0,0,1-.44-1.44,7.09,7.09,0,0,1,0-.79c0-.43.13-1.09.27-2L9.72,4.38,14,20.71h.41l2.3-15a28.78,28.78,0,0,1,.67-3.42C17.57,1.72,17.83,1.38,18.17,1.3ZM19.33.48v.76a2.32,2.32,0,0,1,1,.3c.15.13.23.42.23.9,0,.23,0,.55-.07,1,0,.2-.06.44-.1.71l-2,13.23a4,4,0,0,1-.46,1.58,1.39,1.39,0,0,1-.88.54v.76h4.89v-.76a1.36,1.36,0,0,1-.78-.19,1.39,1.39,0,0,1-.41-1.17c0-.1,0-.21,0-.31s0-.22,0-.35l1.09-7.21a2.09,2.09,0,0,1,1.83.64A3.81,3.81,0,0,1,24.1,13c0,.11,0,.28,0,.49s0,.46,0,.75l.45.14,1.22-8.07-.46-.1a6.19,6.19,0,0,1-1.11,2.59A3.89,3.89,0,0,1,22,9.28l1-6.54a2.43,2.43,0,0,1,.33-1.08.93.93,0,0,1,.76-.26,2.45,2.45,0,0,1,2.52,1.54A9,9,0,0,1,27,6l.44.13.7-5.6ZM39.06,7.11a21,21,0,0,1-2,9.07q-2.16,4.61-5,4.6a3.28,3.28,0,0,1-2.88-1.92,10.29,10.29,0,0,1-1.11-5.14,21.08,21.08,0,0,1,2.07-9.19Q32.31,0,35,0a3.37,3.37,0,0,1,2.93,1.92A10.14,10.14,0,0,1,39.06,7.11ZM36.68,4.6a7,7,0,0,0-.42-2.55A1.37,1.37,0,0,0,35,1c-1.37,0-2.52,2.17-3.46,6.53a40.81,40.81,0,0,0-1.07,8.26,10,10,0,0,0,.21,2.2c.26,1.18.74,1.77,1.43,1.77s1.24-.43,1.78-1.29a18.75,18.75,0,0,0,1.65-4.93,43.28,43.28,0,0,0,.85-4.83A36.93,36.93,0,0,0,36.68,4.6ZM61,19.15a2.25,2.25,0,0,0,1,.31v.76H56.84v-.76A2,2,0,0,0,58,19a3.6,3.6,0,0,0,.5-1.63L60.56,3.76l-6.2,16.85H53.9L52.78,4.24,51.12,15c-.09.55-.15,1-.2,1.37a13,13,0,0,0-.11,1.42,1.8,1.8,0,0,0,.46,1.43,1.54,1.54,0,0,0,.86.29v.76H45.49l-1.78-9.76h-.47l-1,6.14-.13,1,0,.25c0,.09,0,.19,0,.28a1.47,1.47,0,0,0,.22,1,2,2,0,0,0,1,.32v.76H38.37v-.76a1.42,1.42,0,0,0,.88-.52,4.21,4.21,0,0,0,.46-1.59l2-13.24c0-.27.08-.51.11-.71a8.23,8.23,0,0,0,.07-1,1.23,1.23,0,0,0-.23-.9,2.32,2.32,0,0,0-1-.3V.48h4.54A4.34,4.34,0,0,1,47.62,1c1,.65,1.54,1.9,1.54,3.75a7.78,7.78,0,0,1-.26,2A5.56,5.56,0,0,1,48,8.62a3.87,3.87,0,0,1-1,1,8.06,8.06,0,0,1-1.06.52c.05.3.09.49.11.57l1.27,6.66a4.58,4.58,0,0,0,.55,1.7,1.23,1.23,0,0,0,.83.39,1.31,1.31,0,0,0,.86-.84A23,23,0,0,0,50.36,15L52.05,4c.06-.37.11-.7.15-1a7.42,7.42,0,0,0,0-.75c0-.41-.08-.67-.25-.78a2.09,2.09,0,0,0-.94-.21V.48h3.77l1,13.91,5-13.91h3.51v.76a1.46,1.46,0,0,0-.79.4A3.71,3.71,0,0,0,63,3.31L61,16.59c0,.29-.09.58-.13.88s-.05.55-.05.75Q60.79,19,61,19.15Zm-15.14-11a7.46,7.46,0,0,0,.53-1.62,9.54,9.54,0,0,0,.25-2.26,5.31,5.31,0,0,0-.35-2,1.18,1.18,0,0,0-1.16-.81.54.54,0,0,0-.5.26,3.37,3.37,0,0,0-.26,1.05l-1,6.76a4.28,4.28,0,0,0,1.31-.2A2.17,2.17,0,0,0,45.89,8.17ZM73.21,19.51v.71h-5v-.71a1.61,1.61,0,0,0,1-.41,1.92,1.92,0,0,0,.3-1.29c0-.22,0-.75-.09-1.58,0-.17-.06-.89-.16-2.15H65.68l-1,3c-.06.2-.12.42-.17.66a3.4,3.4,0,0,0-.08.69q0,.62.21.78a1.9,1.9,0,0,0,.86.3v.71H62.29v-.71A2,2,0,0,0,63,19a6.47,6.47,0,0,0,.72-1.56L69.82.07h.43L71.83,17A6.77,6.77,0,0,0,72.22,19,1.23,1.23,0,0,0,73.21,19.51Zm-4.08-6.6-.61-7.18-2.44,7.18ZM82.52,6.14l.6-5.66H74l-.63,5,.42.2a8.71,8.71,0,0,1,1.46-3.16,2.57,2.57,0,0,1,2.1-1.06L75,17.35a3.36,3.36,0,0,1-.68,1.85,1.57,1.57,0,0,1-1,.26v.76H78.7v-.76a2.69,2.69,0,0,1-1.11-.3c-.18-.13-.27-.45-.27-.95a2.26,2.26,0,0,1,0-.26c0-.09,0-.2,0-.33l.14-1L79.8,1.5a1.87,1.87,0,0,1,1.39.63c.58.7.88,2,.91,3.94ZM88.84.48H83.92v.76a2.31,2.31,0,0,1,1,.31c.15.13.23.44.23.94a5.56,5.56,0,0,1,0,.67c0,.26-.08.57-.14,1l-2,13.24a4,4,0,0,1-.47,1.59,1.36,1.36,0,0,1-.87.52v.76H86.5v-.76a2,2,0,0,1-1-.32,1.32,1.32,0,0,1-.23-.94c0-.09,0-.18,0-.28s0-.2,0-.3l.13-1,2-13.24A4.09,4.09,0,0,1,88,1.76a1.45,1.45,0,0,1,.87-.52ZM99.11,7.11a21,21,0,0,1-2,9.07q-2.16,4.61-5,4.6a3.28,3.28,0,0,1-2.88-1.92,10.29,10.29,0,0,1-1.11-5.14,21.08,21.08,0,0,1,2.07-9.19C91.63,1.51,93.25,0,95,0A3.36,3.36,0,0,1,98,1.92,10,10,0,0,1,99.11,7.11ZM96.72,4.6a7.18,7.18,0,0,0-.41-2.55c-.28-.7-.7-1-1.29-1-1.37,0-2.52,2.17-3.46,6.53a40.7,40.7,0,0,0-1.06,8.26,10,10,0,0,0,.2,2.2c.26,1.18.74,1.77,1.43,1.77a2.2,2.2,0,0,0,1.78-1.29,18.75,18.75,0,0,0,1.65-4.93,41.1,41.1,0,0,0,.85-4.83A34.65,34.65,0,0,0,96.72,4.6Zm11.1-3.36a1.66,1.66,0,0,1,.9.33,2.08,2.08,0,0,1,.4,1.48,12.85,12.85,0,0,1-.1,1.34c0,.41-.11.87-.18,1.39l-1.29,8.34L104,.48h-3.33v.76a1.7,1.7,0,0,1,.78.24,2,2,0,0,1,.51,1.06l.07.3L100.13,15a24,24,0,0,1-.75,3.61,1.35,1.35,0,0,1-.93.9v.76h3.45v-.76a1.67,1.67,0,0,1-.88-.32,1.88,1.88,0,0,1-.44-1.44,7.09,7.09,0,0,1,0-.79c0-.43.13-1.09.27-2l1.64-10.57,4.29,16.33h.41l2.3-15a28.78,28.78,0,0,1,.67-3.42c.18-.59.44-.93.78-1l.23-.06V.48h-3.39ZM125,7.11a21,21,0,0,1-2,9.07c-1.45,3.07-3.1,4.6-5,4.6a3.28,3.28,0,0,1-2.87-1.92A10.29,10.29,0,0,1,114,13.72a21.22,21.22,0,0,1,2.06-9.19Q118.22,0,120.91,0a3.36,3.36,0,0,1,2.92,1.92A10,10,0,0,1,125,7.11ZM122.59,4.6a7,7,0,0,0-.41-2.55,1.37,1.37,0,0,0-1.28-1c-1.37,0-2.53,2.17-3.46,6.53a40.11,40.11,0,0,0-1.07,8.26,10.65,10.65,0,0,0,.2,2.2q.39,1.77,1.44,1.77a2.2,2.2,0,0,0,1.77-1.29,18.29,18.29,0,0,0,1.66-4.93,45.71,45.71,0,0,0,.85-4.83A36.53,36.53,0,0,0,122.59,4.6Zm14.26-3.3.24-.06V.48h-3.4v.76a1.74,1.74,0,0,1,.91.33,2.13,2.13,0,0,1,.4,1.48c0,.28,0,.73-.11,1.34,0,.41-.11.87-.18,1.39l-1.29,8.34L129.83.48h-3.32v.76a1.69,1.69,0,0,1,.77.24,1.9,1.9,0,0,1,.51,1.06l.07.3L126,15a27,27,0,0,1-.75,3.61,1.35,1.35,0,0,1-.93.9v.76h3.44v-.76a1.67,1.67,0,0,1-.88-.32,1.92,1.92,0,0,1-.44-1.44c0-.26,0-.52,0-.79.05-.43.13-1.09.27-2l1.65-10.57,4.29,16.33h.41l2.29-15a31.07,31.07,0,0,1,.67-3.42C136.25,1.72,136.52,1.38,136.85,1.3Zm8.52,13.06a8.55,8.55,0,0,1-2.19,3.87,4.44,4.44,0,0,1-2.94,1,1,1,0,0,1-.68-.21.9.9,0,0,1-.24-.7,3.4,3.4,0,0,1,0-.48c0-.14,0-.28,0-.44l2.15-14.08a3.69,3.69,0,0,1,.5-1.64,2.22,2.22,0,0,1,1.16-.48V.48H138v.76a2.2,2.2,0,0,1,1,.31c.16.13.24.44.24.94a5.73,5.73,0,0,1-.05.67c0,.26-.07.57-.13,1l-2,13.23a4,4,0,0,1-.47,1.6,1.36,1.36,0,0,1-.87.52v.76h9.16l1-5.74ZM151.79.48v.76a1.52,1.52,0,0,1,.76.2,1.21,1.21,0,0,1,.37,1,4.09,4.09,0,0,1-.17,1.09c-.07.24-.16.5-.27.79L150.32,9.8l-1.18-6.44a4.51,4.51,0,0,1-.08-.6,4.37,4.37,0,0,1,0-.46c0-.43.09-.71.27-.83a1.75,1.75,0,0,1,.87-.23V.48h-4.63v.76a.94.94,0,0,1,.8.4,5.08,5.08,0,0,1,.42,1.44L148.2,11l-1,6.35a3.35,3.35,0,0,1-.61,1.73,1.91,1.91,0,0,1-1.06.39v.76h5.32v-.76a2,2,0,0,1-.95-.25,1.29,1.29,0,0,1-.33-1.05,7.29,7.29,0,0,1,.06-.73q.06-.51.12-.84l.82-5.46,3.12-7.89a5.54,5.54,0,0,1,.89-1.59,1.28,1.28,0,0,1,.63-.41V.48Z',\n opacity: 1, strokeColor: '', fillColor: '#192760', width: 155.237, height: 20.783, stampFillColor: '#dce3ef', stampStrokeColor: '',\n };\n }\n break;\n }\n if (stampCollection) {\n stampCollection.modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.currentStampAnnotation = stampCollection;\n return stampCollection;\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.saveStampAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.storeStampInSession = function (pageNumber, annotation) {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var currentAnnotation = Math.round(JSON.stringify(annotation).length / 1024);\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n if ((sessionSize + currentAnnotation) > 4500) {\n this.pdfViewerBase.isStorageExceed = true;\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n if (!(this.pdfViewerBase.isFormStorageExceed)) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n }\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n var index = 0;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (!storeObject) {\n this.pdfViewer.annotationModule.storeAnnotationCollections(annotation, pageNumber);\n var shapeAnnotation = { pageIndex: pageNumber, annotations: [] };\n shapeAnnotation.annotations.push(annotation);\n index = shapeAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(shapeAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n }\n else {\n this.pdfViewer.annotationModule.storeAnnotationCollections(annotation, pageNumber);\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n }\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[pageIndex]) {\n annotObject[pageIndex].annotations.push(annotation);\n index = annotObject[pageIndex].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n }\n return index;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.updateSessionStorage = function (annotation, id, type) {\n if (id != null) {\n for (var p = 0; p < annotation.annotations.length; p++) {\n if (annotation.annotations[p].id === id) {\n annotation = annotation.annotations[p];\n break;\n }\n }\n }\n if (type === 'Rotate') {\n annotation = annotation.annotations[0];\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n // eslint-disable-next-line\n var bounds = annotation.bounds;\n var annotObject = JSON.parse(storeObject);\n for (var k = 0; k < annotObject.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotObject[k];\n for (var j = 0; j < currentAnnot.annotations.length; j++) {\n if (annotObject[k].annotations[j] != null && annotObject[k].annotations[j].randomId === annotation.id) {\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n }\n // eslint-disable-next-line max-len\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, annotObject[k].annotations[j].pageNumber);\n if (type !== 'delete') {\n if (annotObject[pageIndex]) {\n // eslint-disable-next-line max-len\n //annotObject[k].annotations[j].modifiedDate = new Date().toLocaleString();\n if (annotation.wrapper.children[1]) {\n annotObject[k].annotations[j].opacity = annotation.wrapper.children[1].style.opacity;\n }\n else {\n annotObject[k].annotations[j].opacity = annotation.wrapper.children[0].style.opacity;\n }\n annotObject[k].annotations[j].rotateAngle = annotation.rotateAngle;\n // eslint-disable-next-line max-len\n annotObject[k].annotations[j].bounds = { left: bounds.x, top: bounds.y, width: annotation.wrapper.actualSize.width, height: annotation.wrapper.actualSize.height, right: bounds.right, bottom: bounds.bottom };\n }\n }\n else {\n annotObject[k].annotations.splice(j, 1);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n break;\n }\n }\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.saveImportedStampAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n var isDynamic = false;\n // eslint-disable-next-line\n var stampAnnotation;\n // eslint-disable-next-line\n var stampName = annotation['IsDynamic'];\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n annotation.allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n if (annotation.Subject && stampName) {\n stampAnnotation = this.retrieveDynamicStampAnnotation(annotation.Subject);\n isDynamic = true;\n }\n else if (annotation.Subject) {\n stampAnnotation = this.retrievestampAnnotation(annotation.Subject);\n if (annotation.Subject === 'Accepted' || annotation.Subject === 'Rejected') {\n // eslint-disable-next-line\n var collectionData = processPathData(stampAnnotation.pathdata);\n stampAnnotation.pathdata = splitArrayCollection(collectionData);\n isDynamic = true;\n }\n }\n else {\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, allowedInteractions: annotation.allowedInteractions,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: annotation.FillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: annotation.ModifiedDate, pageNumber: pageNumber, icon: '', stampAnnotationPath: this.findImageData(annotation.Apperarance), randomId: 'image', isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: ' ',\n bounds: this.calculateImagePosition(annotation.Rect, true), annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.annotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock, isMaskedImage: annotation.IsMaskedImage, customStampName: annotation.CustomStampName\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_stamp');\n }\n if (stampAnnotation) {\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'path', author: annotation.Author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: stampAnnotation.stampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: annotation.ModifiedDate, pageNumber: pageNumber, icon: stampAnnotation.iconName, stampAnnotationPath: stampAnnotation.pathdata, randomId: 'stamp', isDynamicStamp: false, dynamicText: this.dynamicText,\n // eslint-disable-next-line max-len\n bounds: this.calculateImagePosition(annotation.Rect, true), annotName: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp',\n // eslint-disable-next-line max-len\n annotationSelectorSettings: this.getSettings(annotation), annotationSettings: annotation.AnnotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation), isPrint: annotation.isPrint, isCommentLock: annotation.IsCommentLock, isMaskedImage: annotation.IsMaskedImage, customStampName: ''\n };\n if (isDynamic) {\n annotationObject.dynamicText = this.findDynamicText(annotation.Apperarance, annotation.Subject);\n annotationObject.isDynamicStamp = true;\n }\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_stamp');\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.updateStampAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n // eslint-disable-next-line\n var stampAnnotation;\n // eslint-disable-next-line\n var stampName = annotation['IsDynamic'];\n // eslint-disable-next-line\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isImageStamp = this.stampImageData(annotation);\n if (annotation.Subject && stampName && annotation.Subject !== 'Draft' && !isImageStamp) {\n stampAnnotation = this.retrieveDynamicStampAnnotation(annotation.Subject);\n }\n else if (annotation.Subject && !isImageStamp) {\n stampAnnotation = this.retrievestampAnnotation(annotation.Subject);\n }\n else {\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.customStampSettings);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'image', author: annotation.Author, modifiedDate: annotation.ModifiedDate, allowedInteractions: annotation.allowedInteractions,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: annotation.StampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, pageNumber: pageNumber, randomId: 'stamp', isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText,\n // eslint-disable-next-line max-len\n annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp', annotationSettings: annotation.AnnotationSettings, customData: this.pdfViewer.annotation.getCustomData(annotation),\n isPrint: annotation.isPrint, isMaskedImage: annotation.IsMaskedImage, customStampName: annotation.CustomStampName\n };\n return annotationObject;\n }\n if (stampAnnotation) {\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n if (annotation.IsLocked) {\n annotation.AnnotationSettings.isLock = annotation.IsLocked;\n }\n // eslint-disable-next-line max-len\n annotation.allowedInteractions = annotation.AllowedInteractions ? annotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n stampAnnotationType: 'path', author: annotation.Author, allowedInteractions: annotation.allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject,\n note: annotation.Note, strokeColor: annotation.StrokeColor, fillColor: annotation.FillColor, opacity: annotation.Opacity, stampFillcolor: annotation.StampFillColor,\n // eslint-disable-next-line max-len\n rotateAngle: annotation.RotateAngle, creationDate: stampAnnotation.creationDate, pageNumber: pageNumber, icon: stampAnnotation.iconName, stampAnnotationPath: stampAnnotation.pathdata, randomId: 'stamp', isDynamicStamp: this.pdfViewerBase.isDynamicStamp, dynamicText: this.dynamicText,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Rect.X, top: annotation.Rect.Y, width: annotation.Rect.Width, height: annotation.Rect.Height }, annotationId: annotation.AnnotName, comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, author: annotation.Author, modifiedDate: annotation.ModifiedDate }, shapeAnnotationType: 'stamp', customData: this.pdfViewer.annotation.getCustomData(annotation),\n isPrint: annotation.isPrint, isMaskedImage: annotation.IsMaskedImage, customStampName: ''\n };\n return annotationObject;\n }\n };\n StampAnnotation.prototype.stampImageData = function (annot) {\n var isStampImage = false;\n if (annot && annot.Apperarance) {\n for (var j = 0; j < annot.Apperarance.length; j++) {\n if (annot.Apperarance[j].imagedata) {\n isStampImage = true;\n break;\n }\n }\n }\n return isStampImage;\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.findImageData = function (Apperance) {\n if (Apperance) {\n for (var j = 0; j < Apperance.length; j++) {\n // eslint-disable-next-line\n var stampShapes = Apperance[j];\n // eslint-disable-next-line\n var imageData = stampShapes['imagedata'];\n if (imageData) {\n return imageData;\n }\n }\n }\n return '';\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.findDynamicText = function (apperance, subject) {\n var dynamicText = '';\n if (apperance) {\n for (var d = 0; d < apperance.length; d++) {\n // eslint-disable-next-line\n var stampShapes = apperance[d];\n // eslint-disable-next-line\n var stampType = stampShapes['type'];\n // eslint-disable-next-line\n var isImport = stampShapes['isImport'];\n // eslint-disable-next-line\n if (stampType === 'string' && stampShapes['text'] !== undefined) {\n // eslint-disable-next-line\n var text = void 0;\n if (!isImport) {\n // eslint-disable-next-line\n var stampText = stampShapes['text'].split('(');\n if (stampText[1]) {\n // eslint-disable-next-line\n text = stampText[1].split(')')[0];\n }\n else {\n // eslint-disable-next-line\n text = stampShapes['text'];\n }\n }\n else {\n // eslint-disable-next-line\n text = stampShapes['text'];\n }\n // eslint-disable-next-line\n if (text.toLowerCase() !== subject.toLowerCase()) {\n dynamicText += text;\n }\n }\n }\n return dynamicText;\n }\n return dynamicText;\n };\n // eslint-disable-next-line\n StampAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n StampAnnotation.prototype.modifyInCollection = function (property, pageNumber, annotationBase) {\n if (!isNullOrUndefined(annotationBase.formFieldAnnotationType) && annotationBase.formFieldAnnotationType !== \"\") {\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n }\n else {\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n }\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.annotName === pageAnnotations[i].annotName) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { left: annotationBase.wrapper.bounds.x, top: annotationBase.wrapper.bounds.y, width: annotationBase.wrapper.bounds.width, height: annotationBase.wrapper.bounds.height };\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n }\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n StampAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_stamp');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_stamp'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_stamp', annotationStringified);\n }\n }\n };\n /**\n * This method used to add annotations with using programmatically.\n *\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @param pageNumber - It describes about the annotation page number\n * @param dynamicStampItem - It describe which type of dynamic stamp\n * @param signStampItem - It describe which type of sign stamp\n * @param standardBusinessStampItem - It describe which type of standard business stamp\n * @returns Object\n * @private\n */\n StampAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset, pageNumber, dynamicStampItem, signStampItem, standardBusinessStampItem) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Checking the all stamps are present\n if (!dynamicStampItem && !signStampItem && !standardBusinessStampItem) {\n dynamicStampItem = DynamicStampItem.Approved;\n }\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n var page = pageNumber;\n //Creating annotation settings\n var stampAnnotations = [];\n var stampName = '';\n var stampAnnotationtype = 'Stamp';\n var apperarance = [];\n var isDynamic = false;\n var author = annotationObject.author ? annotationObject.author : 'Guest';\n var annotationSelectorSettings = this.pdfViewer.stampSettings.annotationSelectorSettings ? this.pdfViewer.stampSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stampSettings);\n var allowedInteractions = this.pdfViewer.stampSettings.allowedInteractions ? this.pdfViewer.stampSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationSettings.minHeight = annotationObject.minHeight ? annotationObject.minHeight : 0;\n annotationSettings.minWidth = annotationObject.minWidth ? annotationObject.minWidth : 0;\n annotationSettings.maxWidth = annotationObject.maxWidth ? annotationObject.maxWidth : 0;\n annotationSettings.maxHeight = annotationObject.maxHeight ? annotationObject.maxHeight : 0;\n //checking the stamp is custom and Updating the string and datetime values for dynamic stamp\n if (annotationObject.customStamps && annotationObject.customStamps[0].customStampName) {\n apperarance[0] = {\n imagedata: annotationObject.customStamps[0].customStampImageSource,\n isImport: true\n };\n this.customStampName = annotationObject.customStamps[0].customStampName;\n this.pdfViewerBase.customStampCollection.push(annotationObject.customStamps[0]);\n stampAnnotationtype = 'Image';\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 100;\n }\n else if (dynamicStampItem) {\n var dateTime = [];\n dateTime = currentDateString.split(' ');\n stampName = dynamicStampItem.toString();\n apperarance[0] = { baseFontName: 'Helvetica-BoldOblique', currentFontname: '95b303ab-d397-438a-83af-e2ff8a9900f1', fontSize: 10, isImport: true, text: 'By ' + author + ' at ' + dateTime[1] + dateTime[2] + ' , ' + dateTime[0], type: 'string' };\n isDynamic = true;\n annotationObject.width = annotationObject.width ? annotationObject.width : 140;\n annotationObject.height = annotationObject.height ? annotationObject.height : 55;\n }\n else if (signStampItem) {\n stampName = signStampItem.toString();\n if (signStampItem == SignStampItem.Accepted || signStampItem == SignStampItem.Rejected) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 35;\n annotationObject.height = annotationObject.height ? annotationObject.height : 35;\n }\n else if (signStampItem == SignStampItem.SignHere) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 110;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else if (signStampItem == SignStampItem.Witness) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 130;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else if (signStampItem == SignStampItem.InitialHere) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 90;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n }\n else if (standardBusinessStampItem) {\n stampName = standardBusinessStampItem.toString();\n if (standardBusinessStampItem == StandardBusinessStampItem.Final || standardBusinessStampItem == StandardBusinessStampItem.Draft) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 110;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else if (standardBusinessStampItem == StandardBusinessStampItem.Void) {\n annotationObject.width = annotationObject.width ? annotationObject.width : 100;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n else {\n annotationObject.width = annotationObject.width ? annotationObject.width : 130;\n annotationObject.height = annotationObject.height ? annotationObject.height : 30;\n }\n }\n //Creating Annotation objects with it's proper properties\n var stickyNotes = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'stamp',\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Apperarance: apperarance ? apperarance : null,\n Author: author,\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n FillColor: '#192760',\n Icon: 0,\n IsCommentLock: false,\n IsDynamic: isDynamic,\n IsLocked: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: '',\n Name: null,\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Rect: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n RotateAngle: 0,\n StampAnnotationtype: stampAnnotationtype,\n State: '',\n StateModel: '',\n StrokeColor: '#dce3ef',\n Subject: stampName,\n matrix: null,\n CustomStampName: this.customStampName ? this.customStampName : '',\n pageNumber: page\n };\n //Adding the annotation object to an array and return it\n stampAnnotations[0] = stickyNotes;\n return { stampAnnotations: stampAnnotations };\n };\n /**\n * @private\n */\n StampAnnotation.prototype.triggerAnnotationAdd = function (annot, annotation) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Stamp', annot.bounds, settings);\n };\n return StampAnnotation;\n}());\n\n/**\n * StickyNotes module\n */\nvar StickyNotesAnnotation = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function StickyNotesAnnotation(pdfViewer, pdfViewerBase) {\n this.moreButtonId = '';\n this.commentsCount = 0;\n this.commentsreplyCount = 0;\n this.commentContextMenu = [];\n this.isAccordionContainer = true;\n this.isCreateContextMenu = false;\n this.isCommentsSelected = false;\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.isEditableElement = false;\n this.isPageCommentsRendered = false;\n this.isCommentsRendered = false;\n /**\n * @private\n */\n this.isAnnotationRendered = false;\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n this.opacity = this.pdfViewer.stickyNotesSettings.opacity ? this.pdfViewer.stickyNotesSettings.opacity : 1;\n }\n /**\n * @param stickyAnnotations\n * @param pageNumber\n * @param canvas\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderStickyNotesAnnotations = function (stickyAnnotations, pageNumber, canvas) {\n if (stickyAnnotations) {\n if (stickyAnnotations.length > 0) {\n for (var i = 0; i < stickyAnnotations.length; i++) {\n // eslint-disable-next-line\n var annotation = stickyAnnotations[i];\n var isAdded = false;\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null, 'sticky');\n if (pageAnnotations !== null) {\n for (var k = 0; k < pageAnnotations.length; k++) {\n var annotationName = annotation.annotName ? annotation.annotName : annotation.AnnotName;\n var pageAnnotationName = pageAnnotations[k].annotName ? pageAnnotations[k].annotName : pageAnnotations[k].AnnotName;\n if (pageAnnotationName && annotationName && pageAnnotationName === annotationName) {\n isAdded = true;\n break;\n }\n }\n }\n if (!isAdded) {\n annotation.annotationAddMode = this.pdfViewer.annotationModule.findAnnotationMode(annotation, pageNumber, annotation.AnnotType);\n var annotationObject = null;\n // eslint-disable-next-line\n var position = annotation.Bounds;\n var author = annotation.Author;\n // eslint-disable-next-line max-len\n annotation.AnnotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n annotation.allowedInteractions = annotation.AllowedInteraction ? annotation.AllowedInteraction : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var isPrint = true;\n if (annotation.annotationAddMode === 'Imported Annotation') {\n isPrint = annotation.IsPrint;\n }\n else {\n isPrint = annotation.AnnotationSettings.isPrint;\n }\n if (annotation.IsLock) {\n annotation.AnnotationSettings.isLock = annotation.IsLock;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: author, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, note: annotation.Note, opacity: annotation.Opacity, state: annotation.State, stateModel: annotation.StateModel,\n pathData: '', comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: author }, pageNumber: pageNumber,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n annotName: annotation.AnnotName, color: annotation.color,\n annotationSelectorSettings: this.getSettings(annotation),\n customData: this.pdfViewer.annotation.getCustomData(annotation),\n annotationSettings: annotation.AnnotationSettings, allowedInteractions: annotation.allowedInteractions,\n isPrint: isPrint, isCommentLock: annotation.IsCommentLock\n };\n var annot = void 0;\n // eslint-disable-next-line max-len\n annotation.AnnotationSelectorSettings = annotation.AnnotationSelectorSettings ? annotation.AnnotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n annot = {\n // eslint-disable-next-line max-len\n author: author, modifiedDate: annotationObject.modifiedDate, annotName: annotationObject.annotName, pageIndex: pageNumber, bounds: { x: position.Left, y: position.Top, width: position.Width, height: position.Height }, strokeColor: 'transparent', stampStrokeColor: '', data: this.setImageSource(), shapeAnnotationType: 'StickyNotes',\n subject: annotationObject.subject, notes: annotationObject.note, opacity: annotationObject.opacity, id: annotationObject.annotName, fillColor: annotationObject.color,\n annotationSelectorSettings: annotation.AnnotationSelectorSettings,\n annotationSettings: annotationObject.annotationSettings,\n // eslint-disable-next-line max-len\n annotationAddMode: annotation.annotationAddMode, isPrint: isPrint, isCommentLock: annotationObject.isCommentLock\n };\n if (canvas) {\n this.drawStickyNotes(position.Left, position.Top, position.Width, position.Height, pageNumber, annot, canvas);\n }\n else {\n this.pdfViewer.add(annot);\n this.drawStickyNotes(position.Left, position.Top, position.Width, position.Height, pageNumber, annot);\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_sticky');\n }\n if (this.isAddAnnotationProgramatically) {\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, borderColor: annot.strokeColor, borderWidth: annot.thickness, author: annotation.author, subject: annotation.subject, modifiedDate: annotation.modifiedDate,\n // eslint-disable-next-line\n fillColor: annot.fillColor, fontSize: annot.fontSize, width: annot.bounds.width, height: annot.bounds.height, fontColor: annot.fontColor, fontFamily: annot.fontFamily, defaultText: annot.dynamicText, fontStyle: annot.font, textAlignment: annot.textAlign\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'StickyNotes', annot.bounds, settings);\n }\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else if (this.pdfViewer.stickyNotesSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.stickyNotesSettings.annotationSelectorSettings;\n }\n return selector;\n };\n /**\n * @param X\n * @param Y\n * @param width\n * @param height\n * @param pageIndex\n * @param annotation\n * @param canvas\n * @param X\n * @param Y\n * @param width\n * @param height\n * @param pageIndex\n * @param annotation\n * @param canvas\n * @param X\n * @param Y\n * @param width\n * @param height\n * @param pageIndex\n * @param annotation\n * @param canvas\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.drawStickyNotes = function (X, Y, width, height, pageIndex, annotation, canvas) {\n var _this = this;\n var annot;\n var annotationObject = null;\n var image = new Image();\n // eslint-disable-next-line\n var proxy = this;\n image.onload = function () {\n var commentsDivid;\n var annotationName;\n // eslint-disable-next-line max-len\n var author = (_this.pdfViewer.annotationSettings.author !== 'Guest') ? _this.pdfViewer.annotationSettings.author : _this.pdfViewer.stickyNotesSettings.author;\n if (annotation) {\n annot = {\n // eslint-disable-next-line max-len\n author: annotation.author, modifiedDate: annotation.modifiedDate, annotName: annotation.annotName, data: image.src, bounds: { x: X, y: Y, width: width, height: height }, subject: annotation.subject,\n notes: annotation.notes, opacity: annotation.opacity, id: annotation.annotName, shapeAnnotationType: 'StickyNotes', strokeColor: 'transparent', stampStrokeColor: '', pageIndex: annotation.pageIndex, isPrint: annotation.isPrint\n };\n }\n else {\n annotationName = _this.pdfViewer.annotation.createGUID();\n commentsDivid = proxy.addComments('sticky', pageIndex + 1);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n // eslint-disable-next-line\n var annotationSelectorSettings = _this.pdfViewer.stickyNotesSettings.annotationSelectorSettings ? _this.pdfViewer.stickyNotesSettings.annotationSelectorSettings : _this.pdfViewer.annotationSelectorSettings;\n var isPrint = _this.pdfViewer.stickyNotesSettings.isPrint;\n annot = {\n // eslint-disable-next-line max-len\n bounds: { x: X, y: Y, width: width, height: height }, pageIndex: pageIndex, data: image.src, modifiedDate: _this.getDateAndTime(),\n shapeAnnotationType: 'StickyNotes', strokeColor: 'transparent', stampStrokeColor: '', annotName: annotationName, id: annotationName, opacity: _this.opacity, isPrint: isPrint\n };\n // eslint-disable-next-line max-len\n var isLock = _this.pdfViewer.stickyNotesSettings.isLock ? _this.pdfViewer.stickyNotesSettings.isLock : _this.pdfViewer.annotationSettings.isLock;\n // eslint-disable-next-line\n var allowedInteractions = _this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n author: author, allowedInteractions: allowedInteractions, modifiedDate: _this.getDateAndTime(), subject: 'Sticky Note', shapeAnnotationType: 'sticky', pageNumber: pageIndex,\n // eslint-disable-next-line max-len\n note: '', opacity: _this.opacity, pathData: '', state: '', stateModel: '', color: 'rgba(255,255,0)', comments: [], annotName: annotationName,\n // eslint-disable-next-line max-len\n bounds: { left: X, top: Y, width: width, height: height }, review: { state: '', stateModel: '', modifiedDate: '', author: author },\n annotationSelectorSettings: annotationSelectorSettings,\n // eslint-disable-next-line max-len\n customData: _this.pdfViewer.annotationModule.getData('sticky'), annotationSettings: { isLock: isLock }, isPrint: isPrint, isCommentLock: false\n };\n }\n if (!annotation) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.annotation.addAction(pageIndex, null, annot, 'Addition', '', annot, annot);\n proxy.pdfViewer.add(annot);\n proxy.pdfViewer.annotationModule.storeAnnotations(pageIndex, annotationObject, '_annotations_sticky');\n }\n if (proxy.pdfViewerBase.isAddComment) {\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n var bounds = { left: annot.bounds.x, top: annot.bounds.y, width: annot.bounds.width, height: annot.bounds.height };\n _this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var settings = { opacity: annot.opacity, author: author, modifiedDate: annot.modifiedDate, subject: annot.shapeAnnotationType };\n _this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'StickyNotes', bounds, settings);\n }\n if (canvas) {\n // eslint-disable-next-line\n proxy.pdfViewer.renderDrawing(canvas, pageIndex);\n }\n else {\n // eslint-disable-next-line\n var canvass = document.getElementById(proxy.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n proxy.pdfViewer.renderDrawing(canvass, pageIndex);\n }\n if (Browser.isDevice) {\n proxy.pdfViewer.select([annot.id], annot.annotationSelectorSettings);\n }\n proxy.pdfViewerBase.isAddComment = false;\n };\n image.src = this.setImageSource();\n };\n StickyNotesAnnotation.prototype.setImageSource = function () {\n // eslint-disable-next-line max-len\n var imageSource = 'data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgd2lkdGg9IjE2IgogICBoZWlnaHQ9IjE1IgogICB2aWV3Qm94PSIwIDAgNC4yMzMzMzMxIDMuOTY4NzQ5NyIKICAgdmVyc2lvbj0iMS4xIj4KICA8ZyBpZD0ibGF5ZXIxIj4KICAgIDxwYXRoCiAgICAgICBkPSJNIDMuODM4OSwwLjk0MTY3IEMgMy42NTM5LDAuNzAzNjcgMy40MTU5LDAuNTE3NjcgMy4xMjQ5LDAuMzg1NjcgMi44MDc5LDAuMjUzNjcgMi40ODk5LDAuMTczNjcgMi4xMTk5LDAuMTczNjcgMS43NDg5LDAuMTczNjcgMS40MzE5LDAuMjUzNjcgMS4xMTQyLDAuMzg1NjcgMC44MjMxNiwwLjUxNzY3IDAuNTg1MTYsMC43MDM2NyAwLjQwMDE2LDAuOTQxNjcgMC4yMTUxNiwxLjE3OTcgMC4xMzUxNiwxLjQxNzcgMC4xMzUxNiwxLjcwODcgMC4xMzUxNiwxLjk0NjcgMC4xODgxNiwyLjE1ODcgMC4zMjAxNiwyLjM0MzcgMC40NTMxNiwyLjU1NTcgMC42MTExNiwyLjcxMzcgMC44MjMxNiwyLjg0NjcgMC43OTIxNiwzLjE1NDcgMC42NTAxNiwzLjM4MjcgMC40NzkxNiwzLjU4NzcgMC40MjgxNiwzLjY2NzcgMC41MTcxNiwzLjc0MTcgMC42OTExNiwzLjcxOTcgMS4wODgyLDMuNjM5NyAxLjQwNDksMy40NTQ3IDEuNjQyOSwzLjE2MzcgMS44MDE5LDMuMTkwNyAxLjk2MDksMy4yMTY3IDIuMTE5OSwzLjIxNjcgMi40ODk5LDMuMjE2NyAyLjgwNzksMy4xMzc3IDMuMTI0OSwzLjAwNTcgMy40MTU5LDIuODcyNyAzLjY4MDksMi42ODc3IDMuODM4OSwyLjQ0OTcgNC4wMjQ5LDIuMjExNyA0LjEwMzksMS45NzM3IDQuMTAzOSwxLjY4MjcgNC4xMDM5LDEuNDE3NyA0LjAyNDksMS4xNTI3IDMuODM4OSwwLjk0MTY3IFoiCiAgICAgICBpZD0icGF0aDE1MjQiCiAgICAgICBzdHlsZT0iZmlsbDojZmZmNzAwO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTojMDAwMDAwO3N0cm9rZS13aWR0aDowLjI2NDU4MztzdHJva2Utb3BhY2l0eToxIiAvPgogICAgPHBhdGgKICAgICAgIGQ9Ik0gMy4wNDI5LDEuNDE2NyBIIDEuMTkxMiBDIDEuMTExMiwxLjQxNjcgMS4wNTkyLDEuMzYzNyAxLjA1OTIsMS4yODM3IDEuMDU5MiwxLjIwNDcgMS4xMTEyLDEuMTUxNyAxLjE5MTIsMS4xNTE3IEggMy4wNDI5IEMgMy4xMjE5LDEuMTUxNyAzLjE3NDksMS4yMDQ3IDMuMTc0OSwxLjI4MzcgMy4xNzQ5LDEuMzYzNyAzLjEyMTksMS40MTY3IDMuMDQyOSwxLjQxNjcgWiIKICAgICAgIGlkPSJwYXRoMTUzNiIKICAgICAgIHN0eWxlPSJzdHJva2Utd2lkdGg6MC4yNjQ1ODMiIC8+CiAgICA8cGF0aAogICAgICAgZD0iTSAzLjA0MjksMS45NDU3IEggMS4xOTEyIEMgMS4xMTEyLDEuOTQ1NyAxLjA1OTIsMS44OTI3IDEuMDU5MiwxLjgxMjcgMS4wNTkyLDEuNzMzNyAxLjExMTIsMS42ODA3IDEuMTkxMiwxLjY4MDcgSCAzLjA0MjkgQyAzLjEyMTksMS42ODA3IDMuMTc0OSwxLjczMzcgMy4xNzQ5LDEuODEyNyAzLjE3NDksMS44OTI3IDMuMTIxOSwxLjk0NTcgMy4wNDI5LDEuOTQ1NyBaIgogICAgICAgaWQ9InBhdGgxNTQwIgogICAgICAgc3R5bGU9InN0cm9rZS13aWR0aDowLjI2NDU4MyIgLz4KICA8L2c+Cjwvc3ZnPgo=';\n return imageSource;\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.createRequestForComments = function () {\n var jsonObject;\n var proxy = this;\n var startIndex = 0;\n var pageLimit = 20;\n var pageCount = proxy.pdfViewerBase.pageCount;\n if (!proxy.isCommentsRendered) {\n if (pageLimit < pageCount) {\n pageCount = pageLimit;\n }\n else {\n proxy.isPageCommentsRendered = true;\n }\n }\n if (!this.isCommentsRendered) {\n // eslint-disable-next-line max-len\n jsonObject = { pageStartIndex: startIndex.toString(), pageEndIndex: pageCount.toString(), hashId: this.pdfViewerBase.hashId, action: 'RenderAnnotationComments', elementId: this.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId };\n proxy.isCommentsRendered = true;\n }\n else {\n // eslint-disable-next-line max-len\n jsonObject = { pageStartIndex: pageLimit.toString(), pageEndIndex: pageCount.toString(), hashId: this.pdfViewerBase.hashId, action: 'RenderAnnotationComments', elementId: this.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId };\n }\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n var url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderComments;\n proxy.commentsRequestHandler = new AjaxHandler(proxy.pdfViewer);\n proxy.commentsRequestHandler.url = url;\n proxy.commentsRequestHandler.mode = true;\n proxy.commentsRequestHandler.responseType = 'text';\n proxy.commentsRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.commentsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (typeof data !== 'object') {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderComments);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderComments);\n data = null;\n }\n }\n if (data) {\n var isInitialRender = false;\n if (proxy.pdfViewerBase.annotationComments) {\n // eslint-disable-next-line\n proxy.pdfViewerBase.annotationComments = data.annotationDetails;\n }\n else {\n proxy.pdfViewerBase.annotationComments = data.annotationDetails;\n isInitialRender = true;\n }\n if (data.annotationDetails && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderComments, data);\n proxy.isAnnotationRendered = true;\n // eslint-disable-next-line\n var annotationCollections = void 0;\n if (proxy.pdfViewerBase.documentAnnotationCollections) {\n // eslint-disable-next-line max-len\n annotationCollections = proxy.updateAnnotationsInDocumentCollections(proxy.pdfViewerBase.annotationComments, proxy.pdfViewerBase.documentAnnotationCollections);\n }\n else {\n // eslint-disable-next-line\n var newCollection = proxy.pdfViewerBase.createAnnotationsCollection();\n // eslint-disable-next-line max-len\n annotationCollections = proxy.updateAnnotationsInDocumentCollections(proxy.pdfViewerBase.annotationComments, newCollection);\n }\n proxy.pdfViewerBase.annotationComments = annotationCollections;\n proxy.pdfViewerBase.documentAnnotationCollections = annotationCollections;\n for (var i = data.startPageIndex; i < data.endPageIndex; i++) {\n var newData = data.annotationDetails[i];\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"freeTextAnnotation\");\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"measureShapeAnnotation\");\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"shapeAnnotation\");\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"signatureAnnotation\");\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"signatureInkAnnotation\");\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"stampAnnotations\");\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"stickyNotesAnnotation\");\n proxy.pdfViewerBase.updateModifiedDateToLocalDate(newData, \"textMarkupAnnotation\");\n }\n for (var j = data.startPageIndex; j < data.endPageIndex; j++) {\n if (data.annotationDetails[j]) {\n proxy.renderAnnotationCollections(data.annotationDetails[j], j, isInitialRender);\n }\n }\n if (!proxy.isPageCommentsRendered) {\n proxy.isPageCommentsRendered = true;\n proxy.createRequestForComments();\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.commentsRequestHandler.onFailure = function (result) {\n this.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n // eslint-disable-next-line\n proxy.commentsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderComments);\n };\n };\n /**\n * @param excistingAnnotation\n * @param newAnnotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateAnnotationsInDocumentCollections = function (excistingAnnotation, newAnnotation) {\n for (var i = 0; i < this.pdfViewerBase.pageCount; i++) {\n if (excistingAnnotation[i] && newAnnotation[i]) {\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].textMarkupAnnotation && excistingAnnotation[i].textMarkupAnnotation.length !== 0 && newAnnotation[i].textMarkupAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].textMarkupAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].textMarkupAnnotation[j], newAnnotation[i].textMarkupAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].shapeAnnotation && excistingAnnotation[i].shapeAnnotation.length !== 0 && newAnnotation[i].shapeAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].shapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].shapeAnnotation[j], newAnnotation[i].shapeAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].measureShapeAnnotation && excistingAnnotation[i].measureShapeAnnotation.length !== 0 && newAnnotation[i].measureShapeAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].measureShapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].measureShapeAnnotation[j], newAnnotation[i].measureShapeAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].stampAnnotations && excistingAnnotation[i].stampAnnotations.length !== 0 && newAnnotation[i].stampAnnotations) {\n for (var j = 0; j < excistingAnnotation[i].stampAnnotations.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].stampAnnotations[j], newAnnotation[i].stampAnnotations);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].stickyNotesAnnotation && excistingAnnotation[i].stickyNotesAnnotation.length !== 0 && newAnnotation[i].stickyNotesAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].stickyNotesAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].stickyNotesAnnotation[j], newAnnotation[i].stickyNotesAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].freeTextAnnotation && excistingAnnotation[i].freeTextAnnotation.length !== 0 && newAnnotation[i].freeTextAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].freeTextAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].freeTextAnnotation[j], newAnnotation[i].freeTextAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].signatureAnnotation && excistingAnnotation[i].signatureAnnotation.length !== 0 && newAnnotation[i].signatureAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].signatureAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].signatureAnnotation[j], newAnnotation[i].signatureAnnotation);\n }\n }\n // eslint-disable-next-line max-len\n if (excistingAnnotation[i].signatureInkAnnotation && excistingAnnotation[i].signatureInkAnnotation.length !== 0 && newAnnotation[i].signatureInkAnnotation) {\n for (var j = 0; j < excistingAnnotation[i].signatureInkAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.updateDocumentAnnotationCollections(excistingAnnotation[i].signatureInkAnnotation[j], newAnnotation[i].signatureInkAnnotation);\n }\n }\n }\n }\n return newAnnotation;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateDocumentAnnotationCollections = function (excistingAnnotation, newAnnotation) {\n if (newAnnotation.length === 0) {\n newAnnotation.push(excistingAnnotation);\n }\n else {\n var isAdded = false;\n for (var i = 0; i < newAnnotation.length; i++) {\n // eslint-disable-next-line max-len\n if ((excistingAnnotation.AnnotName && newAnnotation[i].AnnotName) && (excistingAnnotation.AnnotName === newAnnotation[i].AnnotName)) {\n isAdded = true;\n break;\n }\n }\n if (!isAdded) {\n newAnnotation.push(excistingAnnotation);\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderAnnotationCollections = function (pageAnnotations, pageNumber, isInitialRender) {\n // eslint-disable-next-line\n var pageCollections = [];\n if (pageAnnotations.textMarkupAnnotation && pageAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.textMarkupAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.textMarkupAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.textMarkupAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.textMarkupAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateTextMarkupAnnotationCollections(pageAnnotations.textMarkupAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.shapeAnnotation && pageAnnotations.shapeAnnotation.length !== 0) {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.shapeAnnotationModule) {\n for (var i = 0; i < pageAnnotations.shapeAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.shapeAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.shapeAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.shapeAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.shapeAnnotationModule.updateShapeAnnotationCollections(pageAnnotations.shapeAnnotation[i], pageNumber));\n }\n }\n }\n if (pageAnnotations.measureShapeAnnotation && pageAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.measureShapeAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.measureShapeAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.measureShapeAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.measureShapeAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.measureAnnotationModule.updateMeasureAnnotationCollections(pageAnnotations.measureShapeAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.stampAnnotations && pageAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < pageAnnotations.stampAnnotations.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.stampAnnotations[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.stampAnnotations[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.stampAnnotations[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.stampAnnotationModule.updateStampAnnotationCollections(pageAnnotations.stampAnnotations[i], pageNumber));\n }\n }\n if (pageAnnotations.stickyNotesAnnotation && pageAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.stickyNotesAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.stickyNotesAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.stickyNotesAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.stickyNotesAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.updateStickyNotesAnnotationCollections(pageAnnotations.stickyNotesAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.freeTextAnnotation && pageAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.freeTextAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.freeTextAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.freeTextAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.freeTextAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(pageAnnotations.freeTextAnnotation[i], pageNumber));\n }\n }\n if (pageAnnotations.signatureAnnotation && pageAnnotations.signatureAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.signatureAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.signatureAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.signatureAnnotation[i].ModifiedDate);\n }\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewerBase.signatureModule.updateSignatureCollections(pageAnnotations.signatureAnnotation[i], pageNumber), true);\n }\n }\n if (pageAnnotations.signatureInkAnnotation && pageAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.signatureInkAnnotation.length; i++) {\n if (this.pdfViewer.dateTimeFormat) {\n // eslint-disable-next-line max-len\n pageAnnotations.signatureInkAnnotation[i].ModifiedDate = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.getDateAndTime(pageAnnotations.signatureInkAnnotation[i].ModifiedDate);\n }\n pageCollections.push(pageAnnotations.signatureInkAnnotation[i]);\n // eslint-disable-next-line max-len\n this.updateCollections(this.pdfViewer.annotationModule.inkAnnotationModule.updateInkCollections(pageAnnotations.signatureInkAnnotation[i], pageNumber));\n }\n }\n if (this.pdfViewer.toolbarModule) {\n this.renderAnnotationComments(pageCollections, pageNumber);\n }\n if (isInitialRender) {\n for (var i = 0; i < this.pdfViewerBase.renderedPagesList.length; i++) {\n this.pdfViewerBase.renderAnnotations(this.pdfViewerBase.renderedPagesList[i], false);\n }\n }\n };\n /**\n * @param annotation\n * @param isSignature\n * @param annotation\n * @param isSignature\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateCollections = function (annotation, isSignature) {\n var isAdded = false;\n // eslint-disable-next-line\n var collections;\n if (isSignature) {\n collections = this.pdfViewer.signatureCollection;\n }\n else {\n collections = this.pdfViewer.annotationCollection;\n }\n if (collections && annotation) {\n for (var i = 0; i < collections.length; i++) {\n if (isSignature) {\n if (collections[i].signatureName === annotation.signatureName) {\n isAdded = true;\n break;\n }\n }\n else {\n if (collections[i].annotationId === annotation.annotationId) {\n isAdded = true;\n break;\n }\n }\n }\n }\n if (!isAdded && annotation) {\n if (isSignature) {\n this.pdfViewer.signatureCollection.push(annotation);\n }\n else {\n this.pdfViewer.annotationCollection.push(annotation);\n }\n }\n };\n /**\n * @param data\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderAnnotationComments = function (data, pageIndex) {\n pageIndex = pageIndex + 1;\n if (data) {\n if (data.length !== 0) {\n this.createPageAccordion(pageIndex);\n for (var i = 0; i < data.length; i++) {\n if (data[i].AnnotName && (data[i].AnnotName.split('freeText').length === 1)) {\n this.createCommentControlPanel(data[i], pageIndex);\n }\n }\n // eslint-disable-next-line\n var newCommentsDiv = document.querySelectorAll('.e-pv-new-comments-div');\n if (newCommentsDiv) {\n for (var j = 0; j < newCommentsDiv.length; j++) {\n newCommentsDiv[j].style.display = 'none';\n }\n }\n }\n }\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.initializeAcccordionContainer = function () {\n // eslint-disable-next-line max-len\n var commentPanelText = createElement('div', { id: this.pdfViewer.element.id + '_commentsPanelText', className: 'e-pv-comments-panel-text' });\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_NoCommentsYet');\n promise.then(function (value) {\n commentPanelText.textContent = value;\n });\n }\n else {\n commentPanelText.textContent = this.pdfViewer.localeObj.getConstant('No Comments Yet');\n }\n this.updateCommentPanelTextTop();\n this.pdfViewerBase.navigationPane.commentsContentContainer.appendChild(commentPanelText);\n // eslint-disable-next-line max-len\n this.accordionContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_accordionContentContainer', className: 'e-pv-accordion-content-container' });\n this.pdfViewerBase.navigationPane.commentsContentContainer.appendChild(this.accordionContentContainer);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], false);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], false);\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.updateCommentPanelTextTop = function () {\n var commentPanelText = document.getElementById(this.pdfViewer.element.id + '_commentsPanelText');\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane.commentPanelContainer && this.pdfViewerBase.navigationPane.commentPanelContainer.clientHeight && commentPanelText.style.display !== 'none') {\n commentPanelText.style.paddingTop = (this.pdfViewerBase.navigationPane.commentPanelContainer.clientHeight / 2) - 47 + 'px';\n commentPanelText.style.paddingLeft = (this.pdfViewerBase.navigationPane.commentPanelContainer.clientWidth) / 3 + 'px';\n }\n };\n /**\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createPageAccordion = function (pageIndex) {\n var pageAccordionContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageIndex);\n if (pageAccordionContainer === null) {\n this.accordionContent = createElement('div', { id: this.pdfViewer.element.id + '_accordioncontent' + pageIndex });\n this.accordionContent.style.zIndex = '1000';\n // eslint-disable-next-line max-len\n this.accordionPageContainer = createElement('div', { id: this.pdfViewer.element.id + '_accordionPageContainer' + pageIndex, className: 'e-pv-accordion-page-container' });\n this.accordionPageContainer.appendChild(this.accordionContent);\n this.pdfViewerBase.viewerMainContainer.appendChild(this.accordionPageContainer);\n // eslint-disable-next-line max-len\n this.accordionContainer = createElement('div', { id: this.pdfViewer.element.id + '_accordionContainer' + pageIndex, className: 'e-pv-accordion-container' });\n var pageAccordion = new Accordion({\n items: [\n // eslint-disable-next-line max-len\n { header: this.pdfViewer.localeObj.getConstant('Page') + ' ' + (pageIndex), expanded: true, content: '#' + this.pdfViewer.element.id + '_accordioncontent' + pageIndex + '' }\n ]\n });\n pageAccordion.appendTo(this.accordionContainer);\n this.accordionContainer.style.order = 'pageIndex';\n this.alignAccordionContainer(this.accordionContainer, pageIndex);\n if (document.getElementById(this.pdfViewer.element.id + '_commentsPanelText')) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n document.getElementById(this.pdfViewer.element.id + '_commentsPanelText').style.display = 'none';\n }\n if (document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer')) {\n document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer').style.display = 'block';\n }\n return this.accordionContainer;\n }\n };\n StickyNotesAnnotation.prototype.alignAccordionContainer = function (accordionDiv, pageIndex) {\n var isAdded = true;\n if (this.accordionContentContainer) {\n if (this.isAccordionContainer) {\n this.accordionContentContainer.appendChild(accordionDiv);\n isAdded = false;\n }\n else {\n for (var i = 1; i <= this.pdfViewerBase.pageCount; i++) {\n var nextElement = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + i);\n if (nextElement) {\n if (pageIndex < i) {\n this.accordionContentContainer.insertBefore(accordionDiv, nextElement);\n isAdded = false;\n break;\n }\n }\n }\n }\n if (isAdded) {\n this.accordionContentContainer.appendChild(accordionDiv);\n isAdded = false;\n }\n this.isAccordionContainer = false;\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n StickyNotesAnnotation.prototype.updateCommentPanelScrollTop = function (pageNumber) {\n var accordionDiv = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordionDiv) {\n var scrollValue = accordionDiv.offsetTop + accordionDiv.clientTop - 35;\n this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop = scrollValue;\n }\n };\n /**\n * @param data\n * @param pageIndex\n * @param type\n * @param annotationSubType\n * @param data\n * @param pageIndex\n * @param type\n * @param annotationSubType\n * @param data\n * @param pageIndex\n * @param type\n * @param annotationSubType\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createCommentControlPanel = function (data, pageIndex, type, annotationSubType, isReRender) {\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordioncontent' + pageIndex);\n if (accordionContent) {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageIndex);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line max-len\n this.commentsContainer = createElement('div', { id: this.pdfViewer.element.id + 'commentscontainer_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-container' });\n this.commentsContainer.accessKey = pageIndex.toString() + '_' + this.commentsCount;\n var isCommentsAdded = false;\n if (data) {\n this.commentsContainer.id = data.AnnotName;\n if (data.AnnotName) {\n for (var j = 0; j < accordionContent.childElementCount; j++) {\n if (accordionContent.children[j].id === data.AnnotName) {\n isCommentsAdded = true;\n if (isReRender) {\n // To remove the existing div element in the comment panel while importing the annotation with the same name. (EJ2-62092)\n var id = document.getElementById(accordionContent.children[j].id);\n id.remove();\n isCommentsAdded = false;\n }\n break;\n }\n }\n }\n if (data.Name && data.Name === 'freeText') {\n this.commentsContainer.setAttribute('name', 'freeText');\n }\n else {\n this.commentsContainer.setAttribute('name', data.AnnotType);\n }\n }\n if (type) {\n this.commentsContainer.setAttribute('name', type);\n }\n this.commentsContainer.addEventListener('mousedown', this.commentsAnnotationSelect.bind(this));\n // eslint-disable-next-line max-len\n var commentDiv = createElement('div', { id: this.pdfViewer.element.id + '_commentdiv_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-div' });\n this.commentsCount = this.commentsCount + 1;\n this.commentsContainer.appendChild(commentDiv);\n this.updateCommentPanelScrollTop(pageIndex);\n if (!isCommentsAdded) {\n accordionContent.appendChild(this.commentsContainer);\n }\n var title = void 0;\n if (data) {\n title = this.commentsContainer.getAttribute('name');\n if (title === 'null') {\n title = data.AnnotationType;\n }\n this.createTitleContainer(commentDiv, title, pageIndex, data.Subject, data.ModifiedDate, data.Author);\n }\n else {\n title = this.commentsContainer.getAttribute('name');\n this.createTitleContainer(commentDiv, title, pageIndex, annotationSubType);\n }\n // eslint-disable-next-line max-len\n var commentTextBox = createElement('div', { id: this.pdfViewer.element.id + '_commenttextbox_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comment-textbox' });\n // eslint-disable-next-line\n var editObj_1 = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a comment') + '..' },\n emptyText: '',\n editableOn: 'EditIconClick',\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline',\n disabled: true\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n },\n submitOnEnter: true\n });\n if (data && (!isNullOrUndefined(data.Note) || !isNullOrUndefined(data.Text))) {\n editObj_1.created = function () {\n setTimeout(function () {\n editObj_1.element.querySelector('.e-editable-value').innerText = !isNullOrUndefined(data.Note) ? data.Note : !isNullOrUndefined(data.Text) ? data.Text : '';\n });\n };\n editObj_1.beginEdit = function () {\n editObj_1.value = editObj_1.valueEle.innerText;\n };\n }\n editObj_1.appendTo(commentTextBox);\n // eslint-disable-next-line\n var textBox = document.querySelectorAll('.e-editable-inline');\n for (var j = 0; j < textBox.length; j++) {\n textBox[j].style.display = 'none';\n }\n if (!data) {\n editObj_1.enableEditMode = true;\n }\n // eslint-disable-next-line\n commentTextBox.addEventListener('keydown', function (event) {\n if (editObj_1.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n editObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n editObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n editObj_1.actionSuccess = this.createCommentDiv.bind(this, editObj_1);\n commentDiv.appendChild(commentTextBox);\n if (data) {\n editObj_1.value = !isNullOrUndefined(data.Note) ? data.Note : !isNullOrUndefined(data.Text) ? data.Text : '';\n var isCommentLocked = this.checkIslockProperty(data);\n if (isCommentLocked && data.Comments == null) {\n this.createCommentDiv(this.commentsContainer);\n }\n if (data.Name === 'freeText') {\n editObj_1.value = data.MarkupText;\n }\n if (data.State) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n commentDiv.appendChild(statusContainer);\n this.updateStatusContainer(data.State, statusSpan, statusDiv, statusContainer);\n }\n if (data.Comments) {\n for (var j = 0; j < data.Comments.length; j++) {\n this.renderComments(data.Comments[j], this.commentsContainer);\n }\n if (data.Note !== ' ' && data.Note !== '' && data.Note !== null) {\n this.createCommentDiv(this.commentsContainer);\n }\n }\n }\n this.isNewcommentAdded = true;\n commentDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n commentDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n commentDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('mouseout', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('focusout', this.commentDivMouseLeave.bind(this));\n commentTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n commentTextBox.addEventListener('focusin', this.commentDivFocus.bind(this));\n return (this.commentsContainer.id);\n }\n return '';\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivFocus = function (args) {\n // eslint-disable-next-line\n if (!this.isNewcommentAdded) {\n if (args.relatedTarget !== null) {\n args.preventDefault();\n args.target.blur();\n }\n }\n else {\n var proxy_1 = this;\n var pageNumber_1 = this.pdfViewerBase.currentPageNumber;\n setTimeout(function () {\n proxy_1.updateScrollPosition(pageNumber_1);\n }, 500);\n }\n };\n StickyNotesAnnotation.prototype.updateScrollPosition = function (pageNumber) {\n var accordionDiv = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordionDiv && this.isNewcommentAdded) {\n var commentHeight = 0;\n // eslint-disable-next-line\n var textBox = document.querySelectorAll('.e-editable-inline');\n if (textBox[0]) {\n commentHeight = textBox[0].getBoundingClientRect().height;\n }\n var scrollValue = accordionDiv.offsetTop + accordionDiv.clientTop + commentHeight;\n if (this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop < scrollValue) {\n this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop = scrollValue;\n }\n this.isNewcommentAdded = false;\n }\n };\n StickyNotesAnnotation.prototype.updateCommentsScrollTop = function (isCommentsAdded) {\n // eslint-disable-next-line max-len\n var accordionDiv = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewerBase.currentPageNumber);\n // eslint-disable-next-line\n var commentsContainer = document.querySelector('.e-pv-comments-border');\n var commentsHeight = 0;\n if (accordionDiv && commentsContainer) {\n commentsHeight = commentsContainer.getBoundingClientRect().height;\n var scrollValue = void 0;\n if (isCommentsAdded) {\n scrollValue = accordionDiv.offsetTop + commentsContainer.offsetTop + (commentsHeight / 4);\n }\n else {\n scrollValue = accordionDiv.offsetTop + commentsContainer.offsetTop - 70;\n }\n this.pdfViewerBase.navigationPane.commentsContentContainer.scrollTop = scrollValue;\n }\n };\n /**\n * @param args\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createCommentDiv = function (args) {\n var _this = this;\n var commentsContainer;\n var titleContainer;\n // eslint-disable-next-line\n var newCommentDiv = createElement('div', { id: this.pdfViewer.element.id + '_newcommentdiv_' + this.commentsCount + '_' + this.commentsreplyCount, className: 'e-pv-new-comments-div' });\n if (args.localName) {\n commentsContainer = args;\n }\n else {\n commentsContainer = args.valueEle.parentElement.parentElement.parentElement.parentElement;\n titleContainer = args.valueEle.parentElement.parentElement.previousSibling.childNodes[1];\n }\n // eslint-disable-next-line\n var commentObj = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n value: '',\n editableOn: 'Click',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a reply') + '..' },\n emptyText: this.pdfViewer.localeObj.getConstant('Add a reply'),\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline',\n disabled: true\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n },\n submitOnEnter: true\n });\n commentObj.appendTo(newCommentDiv);\n newCommentDiv.lastChild.firstChild.click();\n // eslint-disable-next-line\n newCommentDiv.addEventListener('keydown', function (event) {\n if (commentObj.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n commentObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n commentObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n commentObj.enableEditMode = true;\n }\n }\n });\n if (args.valueEle) {\n if (args.value != null && args.value !== '' && args.value !== ' ') {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n this.modifyTextProperty(args.value, args.prevValue, args.valueEle.parentNode.parentNode.parentNode.parentNode.id);\n }\n else {\n try {\n this.modifyTextProperty(args.value, args.prevValue, args.valueEle.parentNode.parentNode.parentNode.parentNode.id);\n }\n catch (error) {\n this.modifyTextProperty(args.value, args.prevValue);\n }\n }\n this.updateModifiedDate(titleContainer);\n }\n if (args.valueEle.parentElement.parentElement.parentElement.parentElement.childElementCount === 1) {\n if (args.value != null && args.value !== '' && args.value !== ' ') {\n commentsContainer.appendChild(newCommentDiv);\n setTimeout(function () {\n _this.updateCommentsScrollTop(true);\n }, 50);\n }\n }\n }\n else {\n commentsContainer.appendChild(newCommentDiv);\n setTimeout(function () {\n _this.updateCommentsScrollTop(true);\n }, 50);\n }\n commentObj.actionSuccess = this.saveCommentDiv.bind(this, commentObj);\n };\n /**\n * @param args\n * @param comment\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.saveCommentDiv = function (args, comment) {\n var commentsContainer;\n var annotationAuthor;\n // eslint-disable-next-line\n var lastElement;\n var commentValue;\n if (comment.name && args.value !== '') {\n commentsContainer = args.valueEle.parentElement.parentElement.parentElement;\n lastElement = args.valueEle.parentElement.parentElement;\n commentValue = args.value;\n }\n else {\n commentsContainer = args;\n lastElement = commentsContainer.lastChild;\n commentValue = comment;\n }\n if (commentsContainer && lastElement) {\n commentsContainer.removeChild(lastElement);\n var replyTextBox = createElement('div', { id: this.pdfViewer.element.id + '_replytextbox_' + this.commentsCount + '_' + this.commentsreplyCount });\n this.commentsreplyCount = this.commentsreplyCount + 1;\n // eslint-disable-next-line\n var replyCommentDiv = createElement('div', { id: this.pdfViewer.element.id + 'replyDiv_' + this.commentsCount + '_' + this.commentsreplyCount, className: 'e-pv-reply-div' });\n replyCommentDiv.id = this.pdfViewer.annotation.createGUID();\n annotationAuthor = this.getAuthorName(this.pdfViewer.selectedItems.annotations[0], commentsContainer);\n this.createReplyDivTitleContainer(replyCommentDiv, null, annotationAuthor);\n replyCommentDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n replyCommentDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n replyCommentDiv.addEventListener('click', this.commentDivOnSelect.bind(this));\n replyTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n replyCommentDiv.style.border = 1 + 'px';\n replyCommentDiv.style.borderColor = 'black';\n replyCommentDiv.style.zIndex = 1002;\n // eslint-disable-next-line\n var saveObj_1 = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n emptyText: '',\n editableOn: 'EditIconClick',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a reply') + '..' },\n value: commentValue,\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline'\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n }\n });\n saveObj_1.created = function () {\n setTimeout(function () {\n saveObj_1.element.querySelector('.e-editable-value').innerText = commentValue;\n });\n };\n saveObj_1.beginEdit = function () {\n saveObj_1.value = saveObj_1.valueEle.innerText;\n };\n saveObj_1.appendTo(replyTextBox);\n saveObj_1.actionSuccess = this.modifyProperty.bind(this, saveObj_1);\n replyCommentDiv.appendChild(replyTextBox);\n replyCommentDiv.style.paddingLeft = 24 + 'px';\n commentsContainer.appendChild(replyCommentDiv);\n // eslint-disable-next-line\n replyTextBox.addEventListener('keydown', function (event) {\n if (saveObj_1.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n saveObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n saveObj_1.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n replyCommentDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n replyCommentDiv.addEventListener('dblclick', this.commentsDivDoubleClickEvent.bind(this));\n this.createCommentDiv(replyCommentDiv.parentElement);\n this.modifyCommentsProperty(commentValue, replyCommentDiv.id, commentsContainer.id);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.renderComments = function (data, commentDiv, undoRedoAction, id, isCommentAction) {\n var annotationAuthor;\n var replyTextBox = createElement('div', { id: this.pdfViewer.element.id + '_replytextbox_' + this.commentsCount + '_' + this.commentsreplyCount });\n this.commentsreplyCount = this.commentsreplyCount + 1;\n var replyDiv = createElement('div', { id: 'replyDiv_' + this.commentsCount + '_' + this.commentsreplyCount, className: 'e-pv-reply-div' });\n if (undoRedoAction) {\n replyDiv.id = data.annotName;\n annotationAuthor = data.author;\n }\n else {\n replyDiv.id = data.AnnotName;\n annotationAuthor = data.Author;\n }\n replyDiv.style.border = 1 + 'px';\n replyDiv.style.borderColor = 'black';\n if (!annotationAuthor) {\n annotationAuthor = commentDiv.getAttribute('author');\n }\n if (undoRedoAction) {\n if (data.modifiedDate !== undefined) {\n this.createReplyDivTitleContainer(replyDiv, data.modifiedDate, annotationAuthor);\n }\n else {\n this.createReplyDivTitleContainer(replyDiv, null, annotationAuthor);\n }\n }\n else {\n this.createReplyDivTitleContainer(replyDiv, data.ModifiedDate, annotationAuthor);\n }\n replyDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n replyDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n replyDiv.addEventListener('click', this.commentDivOnSelect.bind(this));\n replyTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n // eslint-disable-next-line\n var saveObj = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n emptyText: '',\n editableOn: 'EditIconClick',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a reply') + '..' },\n value: '',\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline'\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n }\n });\n if (undoRedoAction) {\n saveObj.value = data.note;\n }\n else {\n saveObj.value = data.Note;\n }\n saveObj.created = function () {\n setTimeout(function () {\n saveObj.element.querySelector('.e-editable-value').innerText = undoRedoAction ? data ? data.note : '' : data ? data.Note : '';\n });\n };\n saveObj.beginEdit = function () {\n saveObj.value = saveObj.valueEle.innerText;\n };\n saveObj.appendTo(replyTextBox);\n replyDiv.appendChild(replyTextBox);\n if (undoRedoAction) {\n data.State = data.state;\n }\n if (data.State) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n replyDiv.appendChild(statusContainer);\n this.updateStatusContainer(data.State, statusSpan, statusDiv, statusContainer);\n }\n replyDiv.style.paddingLeft = 24 + 'px';\n // eslint-disable-next-line\n replyTextBox.addEventListener('keydown', function (event) {\n if (saveObj.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n saveObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n saveObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n if (undoRedoAction) {\n if (isCommentAction) {\n commentDiv.appendChild(replyDiv);\n }\n else {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(id);\n if (data.position) {\n commentsDiv.insertBefore(replyDiv, commentsDiv.childNodes[data.position]);\n }\n else {\n // eslint-disable-next-line\n if (commentsDiv) {\n if (commentsDiv.childElementCount > 1) {\n commentsDiv.insertBefore(replyDiv, commentsDiv.childNodes[commentsDiv.childElementCount - 1]);\n }\n else {\n commentDiv.appendChild(replyDiv);\n }\n }\n }\n }\n }\n else {\n commentDiv.appendChild(replyDiv);\n }\n replyDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n replyDiv.addEventListener('dblclick', this.commentsDivDoubleClickEvent.bind(this));\n saveObj.actionSuccess = this.modifyProperty.bind(this, saveObj);\n };\n /**\n * @param data\n * @param pageIndex\n * @param isCopy\n * @param data\n * @param pageIndex\n * @param isCopy\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createCommentsContainer = function (data, pageIndex, isCopy) {\n // eslint-disable-next-line\n var accordionContentContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageIndex);\n if (!accordionContentContainer) {\n // eslint-disable-next-line max-len\n var accordionPageContainer = document.getElementById(this.pdfViewer.element.id + '_accordionPageContainer' + pageIndex);\n if (accordionPageContainer) {\n accordionPageContainer.parentElement.removeChild(accordionPageContainer);\n }\n accordionContentContainer = this.createPageAccordion(pageIndex);\n if (accordionContentContainer) {\n accordionContentContainer.ej2_instances[0].expandItem(true);\n }\n }\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordioncontent' + pageIndex);\n // eslint-disable-next-line max-len\n this.commentsContainer = createElement('div', { id: this.pdfViewer.element.id + 'commentscontainer_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-container' });\n this.commentsContainer.accessKey = pageIndex.toString() + '_' + this.commentsCount;\n if (data) {\n this.commentsContainer.id = data.annotName ? data.annotName : data.annotationId;\n }\n this.commentsContainer.addEventListener('mousedown', this.commentsAnnotationSelect.bind(this));\n // eslint-disable-next-line max-len\n var commentDiv = createElement('div', { id: this.pdfViewer.element.id + '_commentdiv_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comments-div' });\n this.commentsCount = this.commentsCount + 1;\n this.commentsContainer.appendChild(commentDiv);\n this.updateCommentPanelScrollTop(pageIndex);\n if (data && accordionContent) {\n if (data.position || data.position === 0) {\n accordionContent.insertBefore(this.commentsContainer, accordionContent.children[data.position]);\n }\n else {\n accordionContent.appendChild(this.commentsContainer);\n }\n }\n if (data && accordionContent) {\n if (data.indent) {\n this.commentsContainer.setAttribute('name', 'shape_measure');\n this.createTitleContainer(commentDiv, 'shape_measure', pageIndex, data.subject, data.modifiedDate, data.author);\n }\n else if (data.shapeAnnotationType === 'sticky' || data.shapeAnnotationType === 'stamp') {\n // eslint-disable-next-line max-len\n var annotType = this.createTitleContainer(commentDiv, data.shapeAnnotationType, pageIndex, null, data.modifiedDate, data.author);\n this.commentsContainer.setAttribute('name', annotType);\n if (annotType === 'sticky') {\n if (!isCopy) {\n this.addStickyNotesAnnotations((pageIndex - 1), data);\n }\n }\n }\n else if (data.shapeAnnotationType === 'textMarkup') {\n this.commentsContainer.setAttribute('name', 'textMarkup');\n this.createTitleContainer(commentDiv, 'textMarkup', pageIndex, data.subject, data.modifiedDate, data.author);\n }\n else if (data.shapeAnnotationType === 'FreeText') {\n data.note = data.dynamicText;\n this.commentsContainer.setAttribute('name', 'freetext');\n this.createTitleContainer(commentDiv, 'freeText', pageIndex, data.subject, data.modifiedDate);\n }\n else if (data.shapeAnnotationType === 'Ink') {\n data.note = data.dynamicText;\n this.commentsContainer.setAttribute('name', 'ink');\n this.createTitleContainer(commentDiv, 'ink', pageIndex, data.subject, data.modifiedDate);\n }\n else {\n this.commentsContainer.setAttribute('name', 'shape');\n if (data.shapeAnnotationType === 'Line') {\n this.createTitleContainer(commentDiv, 'shape', pageIndex, data.subject, data.modifiedDate, data.author);\n }\n else {\n this.createTitleContainer(commentDiv, 'shape', pageIndex, data.shapeAnnotationType, data.modifiedDate, data.author);\n }\n }\n }\n // eslint-disable-next-line max-len\n var commentTextBox = createElement('div', { id: this.pdfViewer.element.id + '_commenttextbox_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comment-textbox' });\n // eslint-disable-next-line\n var editObj = new InPlaceEditor({\n mode: 'Inline',\n type: 'Text',\n model: { placeholder: this.pdfViewer.localeObj.getConstant('Add a comment') + '..' },\n emptyText: '',\n editableOn: 'EditIconClick',\n saveButton: {\n content: this.pdfViewer.localeObj.getConstant('Post'),\n cssClass: 'e-outline',\n disabled: true\n },\n cancelButton: {\n content: this.pdfViewer.localeObj.getConstant('Cancel'),\n cssClass: 'e-outline'\n },\n submitOnEnter: true\n });\n editObj.appendTo(commentTextBox);\n // eslint-disable-next-line\n var textBox = document.querySelectorAll('.e-editable-inline');\n for (var j = 0; j < textBox.length; j++) {\n textBox[j].style.display = 'none';\n }\n // eslint-disable-next-line\n commentTextBox.addEventListener('keydown', function (event) {\n if (editObj.element.querySelector('.e-btn-save')) {\n if (event.srcElement.value !== '') {\n editObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = false;\n }\n else {\n editObj.element.querySelector('.e-btn-save').ej2_instances[0].disabled = true;\n }\n }\n });\n editObj.actionSuccess = this.createCommentDiv.bind(this, editObj);\n commentDiv.appendChild(commentTextBox);\n if (data) {\n editObj.value = data.note;\n if (data.state) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n commentDiv.appendChild(statusContainer);\n this.updateStatusContainer(data.state, statusSpan, statusDiv, statusContainer);\n }\n if (data.comments) {\n for (var j = 0; j < data.comments.length; j++) {\n this.renderComments(data.comments[j], this.commentsContainer, true, null, true);\n }\n if (data.comments.length > 0) {\n this.createCommentDiv(this.commentsContainer);\n }\n }\n }\n commentDiv.addEventListener('click', this.commentsDivClickEvent.bind(this));\n commentDiv.addEventListener('mouseover', this.commentDivMouseOver.bind(this));\n commentDiv.addEventListener('mouseleave', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('mouseout', this.commentDivMouseLeave.bind(this));\n commentDiv.addEventListener('focusout', this.commentDivMouseLeave.bind(this));\n commentTextBox.addEventListener('dblclick', this.openEditorElement.bind(this));\n return (this.commentsContainer.id);\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyProperty = function (args) {\n var commentElement = args.element.parentElement.id;\n var parentElement = args.element.parentElement.parentElement.id;\n var titleElement = args.element.previousSibling.firstChild;\n this.updateModifiedDate(titleElement);\n this.modifyCommentsProperty(args.value, commentElement, parentElement, args.prevValue);\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createTitleContainer = function (commentsDivElement, type, pageIndex, subType, modifiedDate, author, note) {\n var annotationType = this.getAnnotationType(type);\n // eslint-disable-next-line max-len\n var commentTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentTitleConatiner_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comment-title-container' });\n // eslint-disable-next-line max-len\n var commentTypeSpan = createElement('span', { id: this.pdfViewer.element.id + '_commenttype' + '_icon' + pageIndex + '_' + this.commentsCount });\n commentTypeSpan.style.opacity = '0.6';\n this.updateCommentIcon(commentTypeSpan, annotationType, subType);\n var annotationAuthor;\n if (!author) {\n annotationAuthor = this.pdfViewer.annotationModule.updateAnnotationAuthor(annotationType, subType);\n }\n else {\n annotationAuthor = author;\n }\n commentTypeSpan.style.padding = 8 + 'px';\n commentTypeSpan.style.cssFloat = 'left';\n commentTitleContainer.appendChild(commentTypeSpan);\n // eslint-disable-next-line max-len\n var commentsTitle = createElement('div', { id: this.pdfViewer.element.id + '_commentTitle_' + pageIndex + '_' + this.commentsCount, className: 'e-pv-comment-title' });\n if (!modifiedDate) {\n commentsTitle.textContent = annotationAuthor + ' - ' + this.setModifiedDate();\n }\n else {\n commentsTitle.textContent = annotationAuthor + ' - ' + this.convertUTCDateToLocalDate(modifiedDate);\n }\n commentTitleContainer.appendChild(commentsTitle);\n this.moreButtonId = this.pdfViewer.element.id + '_more-options_' + this.commentsCount + '_' + this.commentsreplyCount;\n // eslint-disable-next-line max-len\n var moreOptionsButton = createElement('button', { id: this.moreButtonId, className: 'e-pv-more-options-button e-btn', attrs: { 'tabindex': '-1' } });\n moreOptionsButton.style.visibility = 'hidden';\n moreOptionsButton.style.zIndex = '1001';\n moreOptionsButton.setAttribute('type', 'button');\n moreOptionsButton.setAttribute('aria-label', 'more button');\n // eslint-disable-next-line max-len\n var moreOptionsButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_more-options_icon', className: 'e-pv-more-icon e-pv-icon' });\n moreOptionsButton.appendChild(moreOptionsButtonSpan);\n moreOptionsButtonSpan.style.opacity = '0.87';\n commentTitleContainer.appendChild(moreOptionsButton);\n commentsDivElement.appendChild(commentTitleContainer);\n // eslint-disable-next-line\n var commentsContainer = commentsDivElement.parentElement;\n if (commentsContainer) {\n var author_1 = this.pdfViewer.annotationModule.updateAnnotationAuthor(annotationType, subType);\n commentsContainer.setAttribute('author', author_1);\n }\n if (!this.isCreateContextMenu) {\n this.createCommentContextMenu();\n }\n this.isCreateContextMenu = true;\n commentTitleContainer.addEventListener('dblclick', this.openTextEditor.bind(this));\n moreOptionsButton.addEventListener('mouseup', this.moreOptionsClick.bind(this));\n return annotationType;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.createReplyDivTitleContainer = function (commentsDivElement, modifiedDate, annotationAuthor) {\n // eslint-disable-next-line max-len\n var replyTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_replyTitleConatiner_' + this.commentsCount + '_' + this.commentsreplyCount, className: 'e-pv-reply-title-container' });\n // eslint-disable-next-line max-len\n var replyTitle = createElement('div', { id: this.pdfViewer.element.id + '_replyTitle_' + this.commentsCount + '_' + this.commentsreplyCount, className: 'e-pv-reply-title' });\n if (!modifiedDate) {\n replyTitle.textContent = annotationAuthor + ' - ' + this.setModifiedDate();\n }\n else {\n replyTitle.textContent = annotationAuthor + ' - ' + this.setExistingAnnotationModifiedDate(modifiedDate);\n }\n replyTitleContainer.appendChild(replyTitle);\n this.moreButtonId = this.pdfViewer.element.id + '_more-options_' + this.commentsCount + '_' + this.commentsreplyCount;\n // eslint-disable-next-line max-len\n var moreButton = createElement('button', { id: this.moreButtonId, className: 'e-pv-more-options-button e-btn', attrs: { 'tabindex': '-1' } });\n moreButton.style.visibility = 'hidden';\n moreButton.style.zIndex = '1001';\n moreButton.setAttribute('type', 'button');\n moreButton.setAttribute('aria-label', 'more button');\n // eslint-disable-next-line max-len\n var moreButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_more-options_icon', className: 'e-pv-more-icon e-pv-icon' });\n moreButton.appendChild(moreButtonSpan);\n moreButtonSpan.style.opacity = '0.87';\n replyTitleContainer.appendChild(moreButton);\n commentsDivElement.appendChild(replyTitleContainer);\n replyTitleContainer.addEventListener('dblclick', this.openTextEditor.bind(this));\n moreButton.addEventListener('mouseup', this.moreOptionsClick.bind(this));\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateCommentIcon = function (commentSpan, annotationType, annotationSubType) {\n if (annotationType === 'sticky') {\n commentSpan.className = 'e-pv-comment-icon e-pv-icon';\n }\n else if (annotationType === 'stamp') {\n commentSpan.className = 'e-pv-stamp-icon e-pv-icon';\n }\n else if (annotationType === 'shape') {\n if (annotationSubType === 'Line') {\n commentSpan.className = 'e-pv-shape-line-icon e-pv-icon';\n }\n else if (annotationSubType === 'LineWidthArrowHead' || annotationSubType === 'Arrow') {\n commentSpan.className = 'e-pv-shape-arrow-icon e-pv-icon';\n }\n else if (annotationSubType === 'Circle' || annotationSubType === 'Ellipse' || annotationSubType === 'Oval') {\n commentSpan.className = 'e-pv-shape-circle-icon e-pv-icon';\n }\n else if (annotationSubType === 'Rectangle' || annotationSubType === 'Square') {\n commentSpan.className = 'e-pv-shape-rectangle-icon e-pv-icon';\n }\n else if (annotationSubType === 'Polygon') {\n commentSpan.className = 'e-pv-shape-pentagon-icon e-pv-icon';\n }\n else {\n commentSpan.className = 'e-pv-annotation-shape-icon e-pv-icon';\n }\n }\n else if (annotationType === 'measure') {\n if (annotationSubType === 'Distance' || annotationSubType === 'Distance calculation') {\n commentSpan.className = 'e-pv-calibrate-distance-icon e-pv-icon';\n }\n else if (annotationSubType === 'Perimeter' || annotationSubType === 'Perimeter calculation') {\n commentSpan.className = 'e-pv-calibrate-perimeter-icon e-pv-icon';\n }\n else if (annotationSubType === 'Radius' || annotationSubType === 'Radius calculation') {\n commentSpan.className = 'e-pv-calibrate-radius-icon e-pv-icon';\n }\n else if (annotationSubType === 'Area' || annotationSubType === 'Area calculation') {\n commentSpan.className = 'e-pv-calibrate-area-icon e-pv-icon';\n }\n else if (annotationSubType === 'Volume' || annotationSubType === 'Volume calculation') {\n commentSpan.className = 'e-pv-calibrate-volume-icon e-pv-icon';\n }\n else {\n commentSpan.className = 'e-pv-annotation-calibrate-icon e-pv-icon';\n }\n }\n else if (annotationType === 'textMarkup') {\n if (annotationSubType === 'Highlight') {\n commentSpan.className = 'e-pv-highlight-icon e-pv-icon';\n }\n else if (annotationSubType === 'Underline') {\n commentSpan.className = 'e-pv-underline-icon e-pv-icon';\n }\n else if (annotationSubType === 'Strikethrough') {\n commentSpan.className = 'e-pv-strikethrough-icon e-pv-icon';\n }\n else {\n commentSpan.className = 'e-pv-annotation-icon e-pv-icon';\n }\n }\n else if (annotationType === 'freeText') {\n commentSpan.className = 'e-pv-freetext-icon e-pv-icon';\n }\n else if (annotationType === 'ink' || annotationSubType === 'Ink') {\n commentSpan.className = 'e-pv-inkannotation-icon e-pv-icon';\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateStatusContainer = function (state, statusSpan, statusDiv, statusContainer) {\n if (state === 'Accepted') {\n statusDiv.style.backgroundColor = 'rgb(24,169,85)';\n statusSpan.className = 'e-pv-accepted-icon';\n }\n else if (state === 'Completed') {\n statusDiv.style.backgroundColor = 'rgb(0,122,255)';\n statusSpan.className = 'e-pv-completed-icon';\n }\n else if (state === 'Cancelled') {\n statusDiv.style.backgroundColor = 'rgb(245,103,0)';\n statusSpan.className = 'e-pv-cancelled-icon';\n }\n else if (state === 'Rejected') {\n statusDiv.style.backgroundColor = 'rgb(255,59,48)';\n statusSpan.className = 'e-pv-rejected-icon';\n }\n else {\n statusSpan.className = '';\n statusContainer.parentElement.removeChild(statusContainer);\n }\n };\n /**\n * @param removeDiv\n * @private\n */\n StickyNotesAnnotation.prototype.updateAccordionContainer = function (removeDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(removeDiv.accessKey.split('_')[0]);\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordionContent) {\n accordionContent.parentElement.removeChild(accordionContent);\n }\n var accordionContentContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer');\n if (accordionContentContainer) {\n if (accordionContentContainer.childElementCount === 0) {\n accordionContentContainer.style.display = 'none';\n if (document.getElementById(this.pdfViewer.element.id + '_commentsPanelText')) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], false);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], false);\n document.getElementById(this.pdfViewer.element.id + '_commentsPanelText').style.display = 'block';\n this.updateCommentPanelTextTop();\n }\n }\n }\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.createCommentContextMenu = function () {\n // eslint-disable-next-line max-len\n this.commentContextMenu = [\n { text: this.pdfViewer.localeObj.getConstant('Edit') },\n { text: this.pdfViewer.localeObj.getConstant('Delete Context') },\n {\n // eslint-disable-next-line max-len\n text: this.pdfViewer.localeObj.getConstant('Set Status'), items: [{ text: this.pdfViewer.localeObj.getConstant('None') }, { text: this.pdfViewer.localeObj.getConstant('Accepted') }, { text: this.pdfViewer.localeObj.getConstant('Cancelled') }, { text: this.pdfViewer.localeObj.getConstant('Completed') }, { text: this.pdfViewer.localeObj.getConstant('Rejected') }]\n }\n ];\n var commentMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_comment_context_menu' });\n this.pdfViewer.element.appendChild(commentMenuElement);\n this.commentMenuObj = new ContextMenu({\n target: '#' + this.moreButtonId, items: this.commentContextMenu,\n beforeOpen: this.contextMenuBeforeOpen.bind(this),\n select: this.commentMenuItemSelect.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.commentMenuObj.enableRtl = true;\n }\n this.commentMenuObj.appendTo(commentMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.commentMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.commentMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n StickyNotesAnnotation.prototype.contextMenuBeforeOpen = function (args) {\n // eslint-disable-next-line\n var contextActiveDiv;\n // eslint-disable-next-line\n var contextDiv = document.querySelectorAll('.e-pv-more-options-button');\n if (contextDiv) {\n for (var i = 0; i < contextDiv.length; i++) {\n if (contextDiv[i].style.visibility === 'visible') {\n contextActiveDiv = contextDiv[i].parentElement.nextSibling;\n }\n }\n }\n var isCommentLocked = this.checkIslockProperty(contextActiveDiv);\n if (isCommentLocked) {\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Edit')], false);\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], false);\n }\n else {\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Edit')], true);\n this.commentMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentMenuItemSelect = function (args) {\n // eslint-disable-next-line\n var contextActiveDiv;\n // eslint-disable-next-line\n var contextDiv = document.querySelectorAll('.e-pv-more-options-button');\n if (contextDiv) {\n for (var i = 0; i < contextDiv.length; i++) {\n if (contextDiv[i].style.visibility === 'visible') {\n contextActiveDiv = contextDiv[i].parentElement.nextSibling;\n }\n }\n if (args.item) {\n switch (args.item.text) {\n case this.pdfViewer.localeObj.getConstant('Edit'):\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n contextActiveDiv.ej2_instances[0].enableEditMode = true;\n break;\n case this.pdfViewer.localeObj.getConstant('Delete Context'):\n if (contextActiveDiv.parentElement.parentElement.firstChild === contextActiveDiv.parentElement) {\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n else {\n // eslint-disable-next-line max-len\n this.modifyCommentDeleteProperty(contextActiveDiv.parentElement.parentElement, contextActiveDiv.parentElement);\n }\n break;\n case this.pdfViewer.localeObj.getConstant('Set Status'):\n break;\n case this.pdfViewer.localeObj.getConstant('Accepted'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var acceptedStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-accepted-icon' });\n statusDiv.style.backgroundColor = 'rgb(24,169,85)';\n statusDiv.appendChild(statusSpan);\n acceptedStatusDiv.appendChild(statusDiv);\n contextActiveDiv.parentElement.appendChild(acceptedStatusDiv);\n this.modifyStatusProperty('Accepted', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('Completed'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var completedStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusElement = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n // eslint-disable-next-line max-len\n var statusOptionSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-completed-icon' });\n statusElement.style.backgroundColor = 'rgb(0,122,255)';\n statusElement.appendChild(statusOptionSpan);\n completedStatusDiv.appendChild(statusElement);\n contextActiveDiv.parentElement.appendChild(completedStatusDiv);\n this.modifyStatusProperty('Completed', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('Cancelled'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var cancelStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var cancelStatusElement = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n // eslint-disable-next-line max-len\n var cancelStatusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-cancelled-icon' });\n cancelStatusElement.style.backgroundColor = 'rgb(245,103,0)';\n cancelStatusElement.appendChild(cancelStatusSpan);\n cancelStatusDiv.appendChild(cancelStatusElement);\n contextActiveDiv.parentElement.appendChild(cancelStatusDiv);\n this.modifyStatusProperty('Cancelled', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('Rejected'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n // eslint-disable-next-line max-len\n var rejectedStatusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var rejectedStatusElement = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n // eslint-disable-next-line max-len\n var rejectedStatusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon', className: 'e-pv-rejected-icon' });\n rejectedStatusElement.style.backgroundColor = 'rgb(255,59,48)';\n rejectedStatusElement.appendChild(rejectedStatusSpan);\n rejectedStatusDiv.appendChild(rejectedStatusElement);\n contextActiveDiv.parentElement.appendChild(rejectedStatusDiv);\n this.modifyStatusProperty('Rejected', contextActiveDiv.parentElement);\n break;\n case this.pdfViewer.localeObj.getConstant('None'):\n if (contextActiveDiv.parentElement.lastChild.id === this.pdfViewer.element.id + 'status_container') {\n contextActiveDiv.parentElement.lastChild.remove();\n }\n this.modifyStatusProperty('None', contextActiveDiv.parentElement);\n break;\n default:\n break;\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.moreOptionsClick = function (event, isMoreOptionClick) {\n if (document.getElementById(this.pdfViewer.element.id + '_comment_context_menu').style.display !== 'block') {\n if (event.currentTarget.className === 'e-pv-more-options-button e-btn') {\n event.currentTarget.parentElement.nextSibling.lastChild.firstChild.click();\n }\n this.pdfViewer.annotationModule.checkContextMenuDeleteItem(this.commentMenuObj);\n this.commentMenuObj.open(event.clientY, event.clientX, event.currentTarget);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.openTextEditor = function (event) {\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n var isCommentLocked = this.checkIslockProperty(event.currentTarget.nextSibling);\n if (isCommentLocked) {\n event.currentTarget.nextSibling.ej2_instances[0].enableEditMode = false;\n }\n else if (event.currentTarget.parentElement.parentElement) {\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.parentElement.id);\n if (isLocked) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(event.currentTarget.parentElement.parentElement.id);\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n event.currentTarget.nextSibling.ej2_instances[0].enableEditMode = true;\n }\n }\n else {\n event.currentTarget.nextSibling.ej2_instances[0].enableEditMode = true;\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.checkIslockProperty = function (commentEvent) {\n // eslint-disable-next-line\n var annotCollection = this.pdfViewer.annotationCollection;\n // eslint-disable-next-line\n var annotation;\n if (commentEvent.IsCommentLock) {\n return true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n annotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else if (this.pdfViewer.selectedItems.annotations[0]) {\n annotation = this.pdfViewer.selectedItems.annotations[0];\n }\n for (var i = 0; i < annotCollection.length; i++) {\n // eslint-disable-next-line max-len\n var note = annotCollection[i].note ? annotCollection[i].note : annotCollection[i].notes;\n if (annotCollection[i].isCommentLock === true && (commentEvent.textContent === note || annotCollection[i].dynamicText === commentEvent.textContent)) {\n return true;\n }\n for (var j = 0; j < annotCollection[i].comments.length; j++) {\n if (annotation && annotCollection[i].annotationId === annotation.annotName) {\n // eslint-disable-next-line max-len\n if (annotCollection[i].comments[j].isLock === true && commentEvent.textContent === annotCollection[i].comments[j].note) {\n return true;\n }\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.openEditorElement = function (event) {\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n var isCommentLocked = this.checkIslockProperty(event.currentTarget);\n if (isCommentLocked) {\n event.currentTarget.ej2_instances[0].enableEditMode = false;\n }\n else if (event.currentTarget.parentElement.parentElement) {\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.parentElement.id);\n if (isLocked) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(event.currentTarget.parentElement.parentElement.id);\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n if (this.pdfViewer.selectedItems.annotations[0].isReadonly) {\n event.currentTarget.ej2_instances[0].enableEditMode = false;\n }\n else {\n event.currentTarget.ej2_instances[0].enableEditMode = true;\n }\n }\n }\n else {\n event.currentTarget.ej2_instances[0].enableEditMode = true;\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentsDivClickEvent = function (event) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(event.currentTarget.parentElement.id);\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.id);\n if (isLocked) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n var isCommentsSelect = false;\n if (event.clientX === 0 && event.clientY === 0) {\n this.isSetAnnotationType = true;\n }\n else {\n this.isSetAnnotationType = false;\n }\n if (event.target.className === 'e-pv-more-icon e-pv-icon') {\n return null;\n }\n // eslint-disable-next-line\n var x = document.querySelectorAll('.e-pv-more-options-button');\n for (var i = 0; i < x.length; i++) {\n x[i].style.visibility = 'hidden';\n }\n if (document.getElementById(this.pdfViewer.element.id + '_commantPanel').style.display === 'none') {\n this.pdfViewer.annotationModule.showCommentsPanel();\n }\n if (event.currentTarget.parentElement.classList.contains('e-pv-comments-border')) {\n isCommentsSelect = true;\n }\n event.currentTarget.firstChild.lastChild.style.visibility = 'visible';\n // eslint-disable-next-line\n var commentsContainer = document.querySelectorAll('.e-pv-comments-border');\n if (commentsContainer) {\n for (var j = 0; j < commentsContainer.length; j++) {\n commentsContainer[j].classList.remove('e-pv-comments-border');\n }\n }\n event.currentTarget.parentElement.classList.add('e-pv-comments-border');\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n // eslint-disable-next-line\n var editElement = event.currentTarget.parentElement.lastChild;\n // eslint-disable-next-line\n var commentsElement = event.currentTarget.parentElement;\n if (editElement) {\n editElement.style.display = 'block';\n if (editElement.querySelector('.e-editable-inline')) {\n if (!this.isEditableElement) {\n editElement.querySelector('.e-editable-inline').style.display = 'block';\n }\n for (var i = 0; i < commentsElement.childElementCount; i++) {\n // eslint-disable-next-line\n var activeElement = commentsElement.childNodes[i];\n // eslint-disable-next-line\n var textElement = activeElement.querySelector('.e-editable-inline');\n if (textElement) {\n if (textElement.style.display === '') {\n editElement.style.display = 'none';\n editElement.querySelector('.e-editable-inline').style.display = 'none';\n }\n }\n }\n }\n if (this.isSetAnnotationType) {\n if (!isCommentsSelect) {\n this.updateCommentsScrollTop();\n }\n }\n }\n if (event.currentTarget.parentElement.childElementCount === 1) {\n if (!this.pdfViewer.enableShapeLabel) {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n else {\n var type = event.currentTarget.parentElement.getAttribute('name');\n if (this.isSetAnnotationType && type === 'shape') {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = false;\n }\n else {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n }\n }\n var editModule = void 0;\n if (event && event.currentTarget && event.currentTarget.childNodes[1]) {\n editModule = event.currentTarget.childNodes[1].ej2_instances[0];\n }\n if (event.currentTarget && event.currentTarget.id && editModule) {\n // eslint-disable-next-line\n if (annotation && annotation.isCommentLock) {\n editModule.enableEditMode = false;\n this.createCommentDiv(event.currentTarget);\n }\n this.pdfViewer.fireCommentSelect(event.currentTarget.id, event.currentTarget.childNodes[1].ej2_instances[0].value, annotation);\n }\n this.commentDivOnSelect(event);\n event.preventDefault();\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentsDivDoubleClickEvent = function (event) {\n // eslint-disable-next-line\n var commentShow = document.querySelectorAll('.e-pv-new-comments-div');\n for (var i = 0; i < commentShow.length; i++) {\n commentShow[i].style.display = 'none';\n }\n var isCommentLocked = this.checkIslockProperty(event.currentTarget.children[1]);\n if (isCommentLocked) {\n if (event.currentTarget.childElementCount === 2) {\n event.currentTarget.lastChild.ej2_instances[0].enableEditMode = false;\n }\n else {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = false;\n }\n }\n else if (event.currentTarget) {\n var isLocked = this.checkAnnotationSettings(event.currentTarget.parentElement.id);\n if (!isLocked) {\n if (event.currentTarget.childElementCount === 2) {\n event.currentTarget.lastChild.ej2_instances[0].enableEditMode = true;\n }\n else {\n event.currentTarget.childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivOnSelect = function (event) {\n // eslint-disable-next-line\n var commentSelect = document.querySelectorAll('.e-pv-comments-select');\n for (var z = 0; z < commentSelect.length; z++) {\n commentSelect[z].classList.remove('e-pv-comments-select');\n }\n var activeElement = document.getElementById(event.currentTarget.id);\n if (activeElement) {\n activeElement.classList.remove('e-pv-comments-hover');\n activeElement.classList.remove('e-pv-comments-leave');\n activeElement.classList.add('e-pv-comments-select');\n if (event.currentTarget.nextSibling) {\n if (event.currentTarget.nextSibling.classList.contains('e-pv-new-comments-div')) {\n var activeSiblingElement = document.getElementById(event.currentTarget.nextSibling.id);\n activeSiblingElement.classList.remove('e-pv-comments-hover');\n activeSiblingElement.classList.remove('e-pv-comments-leave');\n activeSiblingElement.classList.add('e-pv-comments-select');\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivMouseOver = function (event) {\n var activeElement = document.getElementById(event.currentTarget.id);\n if (activeElement) {\n activeElement.classList.remove('e-pv-comments-select');\n activeElement.classList.remove('e-pv-comments-leave');\n activeElement.classList.add('e-pv-comments-hover');\n if (event.currentTarget.nextSibling) {\n if (event.currentTarget.nextSibling.classList.contains('e-pv-new-comments-div')) {\n var activeSiblingElement = document.getElementById(event.currentTarget.nextSibling.id);\n activeSiblingElement.classList.remove('e-pv-comments-select');\n activeSiblingElement.classList.remove('e-pv-comments-leave');\n activeSiblingElement.classList.add('e-pv-comments-hover');\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentDivMouseLeave = function (event) {\n var activeElement = document.getElementById(event.currentTarget.id);\n if (activeElement) {\n activeElement.classList.remove('e-pv-comments-hover');\n activeElement.classList.remove('e-pv-comments-select');\n activeElement.classList.add('e-pv-comments-leave');\n if (event.currentTarget.nextSibling) {\n if (event.currentTarget.nextSibling.classList.contains('e-pv-new-comments-div')) {\n var activeSiblingElement = document.getElementById(event.currentTarget.nextSibling.id);\n activeSiblingElement.classList.remove('e-pv-comments-hover');\n activeSiblingElement.classList.remove('e-pv-comments-select');\n activeSiblingElement.classList.add('e-pv-comments-leave');\n }\n }\n }\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.drawIcons = function (event) {\n // eslint-disable-next-line\n if (this.pdfViewerBase.isCommentIconAdded) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var pageCurrentRect = this.pdfViewerBase.getElement('_pageDiv_' + pageIndex).getBoundingClientRect();\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stickyNotesAnnotationModule.drawStickyNotes((event.clientX - pageCurrentRect.left) / zoomValue, (event.clientY - pageCurrentRect.top) / zoomValue, 30, 30, pageIndex, null);\n this.pdfViewerBase.isCommentIconAdded = false;\n var commentsButton = document.getElementById(this.pdfViewer.element.id + '_comment');\n if (isBlazor()) {\n commentsButton = commentsButton.children[0];\n }\n if (commentsButton && commentsButton.classList.contains('e-pv-select')) {\n commentsButton.classList.remove('e-pv-select');\n }\n else {\n var commentsIcon = document.getElementById(this.pdfViewer.element.id + '_commentIcon');\n if (commentsIcon) {\n this.pdfViewer.enableRtl ? commentsIcon.className = 'e-pv-comment-icon e-pv-icon e-icon-left e-right' : commentsIcon.className = 'e-pv-comment-icon e-pv-icon e-icon-left';\n }\n }\n }\n };\n /**\n * @param annotationType\n * @param pageNumber\n * @param annotationSubType\n * @param annotationType\n * @param pageNumber\n * @param annotationSubType\n * @param annotationType\n * @param pageNumber\n * @param annotationSubType\n * @private\n */\n StickyNotesAnnotation.prototype.addComments = function (annotationType, pageNumber, annotationSubType) {\n var commentsDivid;\n // eslint-disable-next-line max-len\n var accordion = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + pageNumber);\n if (accordion) {\n // eslint-disable-next-line max-len\n commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.createCommentControlPanel(null, pageNumber, annotationType, annotationSubType);\n }\n else {\n this.pdfViewer.annotation.stickyNotesAnnotationModule.createPageAccordion(pageNumber);\n // eslint-disable-next-line max-len\n commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.createCommentControlPanel(null, pageNumber, annotationType, annotationSubType);\n }\n return commentsDivid;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.commentsAnnotationSelect = function (event) {\n var element = event.currentTarget;\n var isLocked = this.checkAnnotationSettings(element.id);\n if (isLocked) {\n // eslint-disable-next-line\n var annotation = this.findAnnotationObject(element.id);\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Select', annotation)) {\n isLocked = false;\n }\n }\n if (!isLocked) {\n if (element.classList.contains('e-pv-comments-border')) {\n // eslint-disable-next-line\n var commentsDiv = document.querySelectorAll('.e-pv-comments-div');\n for (var j = 0; j < commentsDiv.length; j++) {\n commentsDiv[j].style.minHeight = 60 + 'px';\n }\n if (event.currentTarget.childElementCount === 1) {\n if (event.currentTarget.childNodes[0].querySelector('.e-editable-inline')) {\n event.currentTarget.childNodes[0].style.minHeight = event.currentTarget.childNodes[0].clientHeight;\n }\n }\n }\n if (event.target.className === 'e-pv-more-icon e-pv-icon' || event.target.className === 'e-pv-more-options-button e-btn') {\n event.preventDefault();\n return null;\n }\n // eslint-disable-next-line\n var pageNumber = parseInt(element.accessKey.split('_')[0]);\n if (!element.classList.contains('e-pv-comments-border')) {\n // eslint-disable-next-line\n var commentsContainer = document.querySelectorAll('.e-pv-comments-border');\n if (commentsContainer) {\n for (var j = 0; j < commentsContainer.length; j++) {\n commentsContainer[j].classList.remove('e-pv-comments-border');\n }\n }\n var commentsDiv = document.getElementById(element.id);\n if (commentsDiv) {\n commentsDiv.classList.add('e-pv-comments-border');\n }\n // eslint-disable-next-line\n var commentTextBox = document.querySelectorAll('.e-pv-new-comments-div');\n for (var j = 0; j < commentTextBox.length; j++) {\n commentTextBox[j].style.display = 'none';\n }\n if (commentsDiv) {\n // eslint-disable-next-line\n var currentTextBox = commentsDiv.querySelector('.e-pv-new-comments-div');\n if (currentTextBox) {\n currentTextBox.style.display = 'block';\n }\n }\n // eslint-disable-next-line\n var textDiv = element.lastChild;\n this.isEditableElement = false;\n if (textDiv.querySelector('.e-editable-inline')) {\n textDiv.style.display = 'block';\n textDiv.querySelector('.e-editable-inline').style.display = 'block';\n for (var i = 0; i < element.childElementCount; i++) {\n // eslint-disable-next-line\n var activeElement = element.childNodes[i];\n // eslint-disable-next-line\n var textElement = activeElement.querySelector('.e-editable-inline');\n if (textElement) {\n if (textElement.style.display === '') {\n if (textDiv.classList.contains('e-pv-new-comments-div')) {\n this.isEditableElement = true;\n textDiv.style.display = 'none';\n textDiv.querySelector('.e-editable-inline').style.display = 'none';\n }\n }\n }\n }\n }\n this.isSetAnnotationType = false;\n if (event.currentTarget.childElementCount === 1) {\n event.currentTarget.childNodes[0].childNodes[1].ej2_instances[0].enableEditMode = true;\n }\n }\n else {\n this.isSetAnnotationType = true;\n }\n if (!this.isSetAnnotationType) {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigationModule.goToPage(pageNumber);\n }\n var annotType = element.getAttribute('name');\n if (annotType === 'null' || annotType === 'Ink') {\n annotType = 'ink';\n }\n this.isCommentsSelected = false;\n this.setAnnotationType(element.id, annotType, pageNumber);\n if (!this.isCommentsSelected) {\n this.selectAnnotationObj = { id: element.id, annotType: annotType, pageNumber: pageNumber };\n }\n }\n }\n this.isSetAnnotationType = false;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.findAnnotationObject = function (id) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else if (this.pdfViewer.selectedItems.annotations[0]) {\n return this.pdfViewer.selectedItems.annotations[0];\n }\n // eslint-disable-next-line\n var annotationCollection = this.pdfViewer.annotationCollection;\n if (annotationCollection) {\n for (var i = 0; i < annotationCollection.length; i++) {\n if (annotationCollection[i].annotationId && (annotationCollection[i].annotationId === id)) {\n if (annotationCollection[i].shapeAnnotationType === 'textMarkup') {\n return annotationCollection[i];\n }\n else {\n annotationCollection = this.pdfViewer.annotations;\n for (var j = 0; j < annotationCollection.length; j++) {\n if (annotationCollection[j].annotName && (annotationCollection[j].annotName === id)) {\n return annotationCollection[j];\n }\n }\n }\n }\n }\n }\n };\n StickyNotesAnnotation.prototype.checkAnnotationSettings = function (id) {\n // eslint-disable-next-line\n var annotationCollection = this.pdfViewer.annotationCollection;\n if (annotationCollection) {\n for (var i = 0; i < annotationCollection.length; i++) {\n if (annotationCollection[i].annotationId && (annotationCollection[i].annotationId === id)) {\n if (annotationCollection[i].annotationSettings && annotationCollection[i].annotationSettings.isLock) {\n return true;\n }\n else {\n return false;\n }\n }\n }\n return false;\n }\n else {\n return false;\n }\n };\n StickyNotesAnnotation.prototype.updateCommentsContainerWidth = function () {\n var accordionContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer');\n var commentsContentContainer = document.getElementById(this.pdfViewer.element.id + '_commentscontentcontainer');\n accordionContainer.style.width = commentsContentContainer.clientWidth + 'px';\n };\n /**\n * @param pageIndex\n * @private\n */\n StickyNotesAnnotation.prototype.selectCommentsAnnotation = function (pageIndex) {\n if (this.selectAnnotationObj && !this.isCommentsSelected) {\n if ((this.selectAnnotationObj.pageNumber - 1) === pageIndex) {\n // eslint-disable-next-line max-len\n this.setAnnotationType(this.selectAnnotationObj.id, this.selectAnnotationObj.annotType, this.selectAnnotationObj.pageNumber);\n this.selectAnnotationObj = null;\n this.isCommentsSelected = true;\n }\n }\n };\n StickyNotesAnnotation.prototype.setAnnotationType = function (id, type, pageNumber) {\n var typeString = (type === 'measure') ? 'shape_measure' : type;\n if (typeString === 'freeText') {\n typeString = 'freetext';\n }\n // eslint-disable-next-line\n var storeCommentObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + typeString);\n if (this.pdfViewerBase.isStorageExceed) {\n storeCommentObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + typeString];\n }\n if (storeCommentObject) {\n var annotationCommentObject = JSON.parse(storeCommentObject);\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n var index = this.pdfViewer.annotationModule.\n getPageCollection(annotationCommentObject, (pageNumber - 1));\n if (annotationCommentObject[index]) {\n // eslint-disable-next-line\n var pageCollections = annotationCommentObject[index].annotations;\n for (var i = 0; i < pageCollections.length; i++) {\n var currentSelector = pageCollections[i].annotationSelectorSettings;\n if (pageCollections[i].annotName === id) {\n if (annotation) {\n this.pdfViewer.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n this.pdfViewer.clearSelection(pageNumber - 1);\n if (type === 'textMarkup') {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(pageNumber - 1, true);\n // eslint-disable-next-line max-len\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + (pageNumber - 1));\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectAnnotation(pageCollections[i], canvas, (pageNumber - 1));\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAnnotation = pageCollections[i];\n this.pdfViewer.annotation.textMarkupAnnotationModule.selectTextMarkupCurrentPage = pageNumber - 1;\n this.pdfViewer.annotation.textMarkupAnnotationModule.enableAnnotationPropertiesTool(true);\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbarModule.annotationToolbarModule.showAnnotationToolbar(this.pdfViewer.toolbarModule.annotationItem);\n }\n }\n else if (type === 'stamp') {\n this.pdfViewer.select([pageCollections[i].randomId], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (type === 'sticky') {\n this.pdfViewer.select([pageCollections[i].annotName], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else if (type === 'ink') {\n this.pdfViewer.select([pageCollections[i].id], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n else {\n this.pdfViewer.select([pageCollections[i].id], currentSelector);\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (type === 'textMarkup') {\n if (pageCollections[i].rect || pageCollections[i].bounds) {\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageNumber - 1].top * this.pdfViewerBase.getZoomFactor() + (this.pdfViewer.annotationModule.getAnnotationTop(pageCollections[i]) * this.pdfViewerBase.getZoomFactor());\n if (scrollValue) {\n var scroll_1 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_1);\n }\n }\n }\n else {\n var top_1 = pageCollections[i].bounds.top;\n if (type === 'ink') {\n top_1 = pageCollections[i].bounds.y;\n }\n // eslint-disable-next-line max-len\n var scrollValue = this.pdfViewerBase.pageSize[pageNumber - 1].top * this.pdfViewerBase.getZoomFactor() + ((top_1) * this.pdfViewerBase.getZoomFactor());\n var scroll_2 = (scrollValue - 20).toString();\n // eslint-disable-next-line radix\n this.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll_2);\n }\n this.isCommentsSelected = true;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyTextProperty = function (text, previousValue, annotationName) {\n // eslint-disable-next-line\n var currentAnnotation;\n var module = this.pdfViewer.annotationModule.textMarkupAnnotationModule;\n if (module && module.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n if (currentAnnotation) {\n if (currentAnnotation.annotName !== annotationName) {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n if (annotationName && (currentAnnotation.annotName !== annotationName)) {\n for (var i = 0; i < this.pdfViewer.annotations.length; i++) {\n if (annotationName === this.pdfViewer.annotations[i].annotName) {\n currentAnnotation = this.pdfViewer.annotations[i];\n break;\n }\n }\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = void 0;\n if (commentsDiv.accessKey.split('_')[0]) {\n // eslint-disable-next-line\n pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n }\n else {\n pageNumber = this.pdfViewerBase.currentPageNumber;\n }\n var type = commentsDiv.getAttribute('name');\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var pageAnnotations = void 0;\n var isMeasure = false;\n // eslint-disable-next-line max-len\n if (currentAnnotation.shapeAnnotationType === 'FreeText' || (this.pdfViewer.enableShapeLabel && (type === 'shape' || type === 'shape_measure'))) {\n var isTextAdded = false;\n if (annotationName) {\n if (currentAnnotation.annotName !== annotationName) {\n this.pdfViewer.annotation.modifyDynamicTextValue(text, annotationName);\n isTextAdded = true;\n }\n }\n if (!isTextAdded) {\n if (currentAnnotation.shapeAnnotationType === 'FreeText') {\n if (currentAnnotation.dynamicText !== text) {\n this.pdfViewer.annotation.modifyDynamicTextValue(text, currentAnnotation.annotName);\n }\n currentAnnotation.dynamicText = text;\n }\n else {\n this.pdfViewer.annotation.modifyDynamicTextValue(text, currentAnnotation.annotName);\n currentAnnotation.labelContent = text;\n currentAnnotation.notes = text;\n }\n this.pdfViewer.nodePropertyChange(currentAnnotation, {});\n }\n }\n if (currentAnnotation.measureType && currentAnnotation.measureType !== '') {\n pageAnnotations = this.getAnnotations(pageIndex, null, 'shape_measure');\n isMeasure = true;\n }\n else {\n pageAnnotations = this.getAnnotations(pageIndex, null, currentAnnotation.shapeAnnotationType);\n }\n if (pageAnnotations !== null && currentAnnotation.shapeAnnotationType !== 'FreeText') {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === currentAnnotation.annotName) {\n // eslint-disable-next-line\n var clonedObject = cloneObject(pageAnnotations[i]);\n if (text !== null) {\n if (pageAnnotations[i].note !== text) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, i, pageAnnotations[i], 'Text Property Added', '', clonedObject, pageAnnotations[i]);\n currentAnnotation = pageAnnotations[i];\n currentAnnotation.note = text;\n if (currentAnnotation.enableShapeLabel) {\n currentAnnotation.labelContent = text;\n }\n // eslint-disable-next-line max-len\n currentAnnotation.modifiedDate = this.getDateAndTime();\n if (!isMeasure) {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n else {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex, 'shape_measure');\n }\n if (!previousValue || previousValue === '') {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireCommentAdd(currentAnnotation.annotName, currentAnnotation.note, currentAnnotation);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.fireCommentEdit(currentAnnotation.annotName, currentAnnotation.note, currentAnnotation);\n }\n return currentAnnotation;\n }\n }\n }\n }\n }\n }\n }\n };\n /**\n * @param date\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.getDateAndTime = function (date) {\n if (!date) {\n date = new Date();\n }\n this.globalize = new Internationalization();\n var dateOptions = { format: this.pdfViewer.dateTimeFormat, type: 'dateTime' };\n // eslint-disable-next-line\n var dateTime = this.globalize.formatDate(new Date(date), dateOptions);\n return dateTime;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyCommentsProperty = function (text, annotName, parentElement, previousValue) {\n // eslint-disable-next-line\n var currentAnnotation;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var pageAnnotations = void 0;\n var isMeasure = false;\n var author = this.getAuthorName(currentAnnotation, commentsDiv);\n if (currentAnnotation.measureType && currentAnnotation.measureType !== '') {\n pageAnnotations = this.getAnnotations(pageIndex, null, 'shape_measure');\n isMeasure = true;\n }\n else {\n pageAnnotations = this.getAnnotations(pageIndex, null, currentAnnotation.shapeAnnotationType);\n }\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === currentAnnotation.annotName) {\n currentAnnotation = pageAnnotations[i];\n }\n }\n }\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n if (currentAnnotation.comments.length > 0) {\n var isComment = false;\n for (var j = 0; j < currentAnnotation.comments.length; j++) {\n if (currentAnnotation.comments[j].annotName === annotName) {\n isComment = true;\n currentAnnotation.comments[j].note = text;\n // eslint-disable-next-line max-len\n currentAnnotation.comments[j].modifiedDate = this.getDateAndTime();\n }\n }\n // eslint-disable-next-line max-len\n var newArray = { annotName: annotName, parentId: parentElement, subject: 'Comments', comments: [], author: author, note: text, shapeAnnotationType: '', state: '', stateModel: '', modifiedDate: this.getDateAndTime(), review: { state: '', stateModel: '', modifiedDate: this.getDateAndTime(), author: author }, isLock: false };\n if (!isComment) {\n currentAnnotation.comments[currentAnnotation.comments.length] = newArray;\n }\n }\n else {\n // eslint-disable-next-line max-len\n var newArray = { annotName: annotName, parentId: parentElement, subject: 'Comments', comments: [], author: author, note: text, shapeAnnotationType: '', state: '', stateModel: '', modifiedDate: this.getDateAndTime(), review: { state: '', stateModel: '', modifiedDate: this.getDateAndTime(), author: author }, isLock: false };\n currentAnnotation.comments[currentAnnotation.comments.length] = newArray;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, currentAnnotation, 'Comments Property Added', '', clonedObject, currentAnnotation);\n if (!isMeasure) {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n else {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex, 'shape_measure');\n }\n }\n if (previousValue !== undefined) {\n this.pdfViewer.fireCommentEdit(annotName, text, currentAnnotation);\n }\n else {\n this.pdfViewer.fireCommentAdd(annotName, text, currentAnnotation);\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyStatusProperty = function (text, statusElement) {\n // eslint-disable-next-line\n var currentAnnotation;\n if (this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n if (currentAnnotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var pageAnnotations = void 0;\n var isMeasure = false;\n var author = commentsDiv.getAttribute('author');\n if (currentAnnotation.measureType && currentAnnotation.measureType !== '') {\n pageAnnotations = this.getAnnotations(pageIndex, null, 'shape_measure');\n isMeasure = true;\n }\n else {\n pageAnnotations = this.getAnnotations(pageIndex, null, currentAnnotation.shapeAnnotationType);\n }\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === currentAnnotation.annotName) {\n currentAnnotation = pageAnnotations[i];\n }\n }\n }\n // eslint-disable-next-line\n var clonedObject = cloneObject(currentAnnotation);\n if (statusElement.parentElement.firstChild.id === statusElement.id) {\n // eslint-disable-next-line max-len\n currentAnnotation.review = { state: text, stateModel: 'Review', author: author, modifiedDate: this.getDateAndTime(), annotId: statusElement.id };\n currentAnnotation.state = text;\n currentAnnotation.stateModel = 'Review';\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, currentAnnotation, 'Status Property Added', '', clonedObject, currentAnnotation);\n this.pdfViewer.fireCommentStatusChanged(statusElement.id, currentAnnotation.note, currentAnnotation, currentAnnotation.state);\n }\n else {\n for (var j = 0; j < currentAnnotation.comments.length; j++) {\n if (currentAnnotation.comments[j].annotName === statusElement.id) {\n // eslint-disable-next-line\n var clonedObj = cloneObject(currentAnnotation.comments[j]);\n currentAnnotation.comments[j].state = text;\n currentAnnotation.comments[j].stateModel = 'Review';\n // eslint-disable-next-line max-len\n currentAnnotation.comments[j].review = { state: text, stateModel: 'Review', author: author, modifiedDate: this.getDateAndTime(), annotId: statusElement.id };\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, currentAnnotation, 'Status Property Added', '', clonedObj, currentAnnotation.comments[j]);\n this.pdfViewer.fireCommentStatusChanged(currentAnnotation.comments[j].annotName, currentAnnotation.comments[j].note, currentAnnotation, currentAnnotation.comments[j].state);\n }\n }\n }\n if (!isMeasure) {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n else {\n this.updateUndoRedoCollections(currentAnnotation, pageIndex, 'shape_measure');\n }\n }\n };\n /**\n * @param commentsElement\n * @param replyElement\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.modifyCommentDeleteProperty = function (commentsElement, replyElement) {\n // eslint-disable-next-line\n var clonedObject;\n // eslint-disable-next-line\n var clonedAnnotation;\n // eslint-disable-next-line\n var currentAnnotation;\n // eslint-disable-next-line\n var commentsParentElement = document.getElementById(commentsElement.id);\n if (commentsParentElement) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsParentElement.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n var annotType = commentsElement.getAttribute('name');\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageIndex, null, annotType);\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === commentsElement.id) {\n currentAnnotation = pageAnnotations[i];\n }\n }\n }\n for (var i = 1; i < commentsParentElement.childElementCount; i++) {\n if (commentsParentElement.childNodes[i].id === replyElement.id) {\n clonedAnnotation = cloneObject(currentAnnotation);\n var positionValue = (i - 1);\n currentAnnotation.comments[positionValue].position = i;\n clonedObject = cloneObject(currentAnnotation.comments[positionValue]);\n // eslint-disable-next-line max-len\n this.pdfViewer.fireCommentDelete(currentAnnotation.comments[positionValue].annotName, currentAnnotation.comments[positionValue].note, currentAnnotation);\n currentAnnotation.comments.splice(positionValue, 1);\n replyElement.remove();\n }\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, clonedAnnotation, 'Comments Reply Deleted', '', clonedObject, currentAnnotation);\n this.updateUndoRedoCollections(currentAnnotation, pageIndex);\n }\n };\n /**\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateOpacityValue = function (annotation) {\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(annotation.pageIndex, null, annotation.shapeAnnotationType);\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === annotation.annotName) {\n pageAnnotations[i].opacity = annotation.opacity;\n this.updateUndoRedoCollections(pageAnnotations[i], annotation.pageIndex);\n }\n }\n }\n };\n /**\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.undoAction = function (annotation, isAction, undoAnnotation) {\n if (isAction === 'Text Property Added') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsMainDiv.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = undoAnnotation.note;\n var value = undoAnnotation.note;\n annotation.note = value;\n if (commentsMainDiv.childElementCount === 2) {\n commentsMainDiv.lastChild.style.display = 'block';\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n }\n }\n else if (isAction === 'Comments Property Added') {\n if (annotation.comments.length > 0) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n // eslint-disable-next-line\n var comment = annotation.comments[annotation.comments.length - 1];\n // eslint-disable-next-line\n var removeDiv = document.getElementById(comment.annotName);\n if (removeDiv) {\n removeDiv.remove();\n }\n annotation = undoAnnotation;\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n }\n else if (isAction === 'Status Property Added') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n if (annotation.annotName === undoAnnotation.annotName) {\n annotation.review = undoAnnotation.review;\n annotation.state = undoAnnotation.state;\n annotation.stateModel = undoAnnotation.stateModel;\n this.pdfViewer.annotation.redoCommentsElement.push(annotation);\n }\n else {\n for (var j = 0; j < annotation.comments.length; j++) {\n if (annotation.comments[j].annotName === undoAnnotation.annotName) {\n annotation.comments[j].state = undoAnnotation.state;\n annotation.comments[j].stateModel = undoAnnotation.stateModel;\n annotation.comments[j].review = undoAnnotation.review;\n this.pdfViewer.annotation.redoCommentsElement.push(annotation.comments[j]);\n break;\n }\n }\n }\n // eslint-disable-next-line\n var activeDiv = document.getElementById(undoAnnotation.annotName);\n if (activeDiv.lastChild.id === this.pdfViewer.element.id + 'status' + '_container') {\n activeDiv.lastChild.remove();\n }\n else {\n if (activeDiv.firstChild.lastChild.id === this.pdfViewer.element.id + 'status' + '_container') {\n activeDiv.firstChild.lastChild.remove();\n }\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n }\n else if (isAction === 'Comments Reply Deleted') {\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n this.renderComments(undoAnnotation, commentsDiv, true, annotation.annotName);\n this.pdfViewer.annotation.redoCommentsElement.push(undoAnnotation);\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n }\n else if (isAction === 'dynamicText Change') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = undoAnnotation.dynamicText;\n return annotation;\n }\n }\n }\n };\n /**\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @param annotation\n * @param isAction\n * @param undoAnnotation\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.redoAction = function (annotation, isAction, undoAnnotation) {\n if (isAction === 'Text Property Added') {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsMainDiv.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = annotation.note;\n commentsMainDiv.lastChild.style.display = 'block';\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n }\n else if (isAction === 'Comments Property Added') {\n // eslint-disable-next-line\n var comment = annotation.comments[annotation.comments.length - 1];\n var commentsDiv = document.getElementById(annotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n this.renderComments(comment, commentsDiv, true, annotation.annotName);\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n }\n else if (isAction === 'Status Property Added') {\n // eslint-disable-next-line\n var poppedItem = this.pdfViewer.annotation.redoCommentsElement.pop();\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n if (poppedItem) {\n // eslint-disable-next-line max-len\n var statusContainer = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_container', className: 'e-pv-status-container' });\n // eslint-disable-next-line max-len\n var statusDiv = createElement('div', { id: this.pdfViewer.element.id + 'status' + '_div', className: 'e-pv-status-div' });\n var statusSpan = createElement('span', { id: this.pdfViewer.element.id + 'status' + '_icon' });\n statusDiv.appendChild(statusSpan);\n statusContainer.appendChild(statusDiv);\n // eslint-disable-next-line\n var activeDiv = document.getElementById(annotation.annotName);\n if (activeDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(activeDiv.accessKey.split('_')[0]);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n if (annotation.annotName === poppedItem.annotName) {\n this.updateStatusContainer(annotation.state, statusSpan, statusDiv, statusContainer);\n for (var i = 0; i < activeDiv.firstChild.children.length; i++) {\n if (activeDiv.firstChild.children[i].id === this.pdfViewer.element.id + 'status_container') {\n activeDiv.firstChild.children[i].parentElement.removeChild(activeDiv.firstChild.children[i]);\n }\n }\n activeDiv.firstChild.appendChild(statusContainer);\n }\n else {\n for (var i = 0; i < annotation.comments.length; i++) {\n if (annotation.comments[i].annotName === poppedItem.annotName) {\n this.updateStatusContainer(annotation.comments[i].state, statusSpan, statusDiv, statusContainer);\n var statusElement = document.getElementById(poppedItem.annotName);\n for (var i_1 = 0; i_1 < statusElement.children.length; i_1++) {\n if (statusElement.children[i_1].id === this.pdfViewer.element.id + 'status_container') {\n statusElement.children[i_1].parentElement.removeChild(statusElement.children[i_1]);\n }\n }\n if (statusElement) {\n statusElement.appendChild(statusContainer);\n }\n }\n }\n }\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return annotation;\n }\n else if (isAction === 'Comments Reply Deleted') {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n // eslint-disable-next-line\n var activeDiv = document.getElementById(annotation.annotName);\n if (activeDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(activeDiv.accessKey.split('_')[0]);\n pageIndex = pageNumber - 1;\n }\n // eslint-disable-next-line\n var poppedItem = this.pdfViewer.annotation.redoCommentsElement.pop();\n // eslint-disable-next-line\n var clonedAnnotationObject = cloneObject(annotation);\n for (var i = 0; i < annotation.comments.length; i++) {\n if (annotation.comments[i].annotName === poppedItem.annotName) {\n // eslint-disable-next-line\n var replyElement = document.getElementById(poppedItem.annotName);\n annotation.comments.splice(i, 1);\n replyElement.remove();\n }\n }\n this.updateUndoRedoCollections(annotation, pageIndex);\n return clonedAnnotationObject;\n }\n else if (isAction === 'dynamicText Change') {\n if (annotation) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotation.annotName);\n if (commentsMainDiv) {\n // eslint-disable-next-line\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = annotation.dynamicText;\n return annotation;\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateUndoRedoCollections = function (annotationBase, pageNumber, shapeType, action) {\n var annotationType = (!shapeType) ? annotationBase.shapeAnnotationType : shapeType;\n if (annotationBase.indent && annotationBase.indent !== '') {\n annotationType = 'shape_measure';\n }\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null, annotationType);\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.annotName === pageAnnotations[i].annotName) {\n pageAnnotations[i] = annotationBase;\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n if (action) {\n pageAnnotations.splice(i, 1);\n this.deleteStickyNotesAnnotations(pageAnnotations, pageNumber);\n }\n }\n }\n if (annotationType === 'shape_measure') {\n this.manageAnnotations(pageAnnotations, pageNumber, 'shape_measure');\n }\n else {\n this.manageAnnotations(pageAnnotations, pageNumber, annotationBase.shapeAnnotationType);\n }\n }\n };\n /**\n * @param pageIndex\n * @param type\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.addAnnotationComments = function (pageIndex, type) {\n var pageNumber = pageIndex + 1;\n // eslint-disable-next-line\n var poppedItem = this.pdfViewer.annotation.undoCommentsElement.pop();\n if (poppedItem) {\n this.createCommentsContainer(poppedItem, pageNumber);\n this.updateUndoRedoCollections(poppedItem, pageIndex, type);\n }\n };\n /**\n * @param annotation\n * @param type\n * @param action\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.findPosition = function (annotation, type, action) {\n var index;\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(annotation.annotName);\n if (commentsDiv) {\n // eslint-disable-next-line\n var pageNumber = parseInt(commentsDiv.accessKey.split('_')[0]);\n var pageIndex = pageNumber - 1;\n // eslint-disable-next-line\n var parentDiv = commentsDiv.parentElement;\n for (var i = 0; i < parentDiv.childElementCount; i++) {\n if (parentDiv.childNodes[i].id === annotation.annotName) {\n index = i;\n }\n }\n if (type === 'Stamp' || type === 'Image') {\n type = 'stamp';\n }\n else if (type === 'FreeText') {\n type = 'freetext';\n }\n else if (type === 'StickyNotes' || type === 'sticky') {\n type = 'sticky';\n }\n else if (type === 'Ink') {\n type = 'ink';\n }\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageIndex, null, type);\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (pageAnnotations[i].annotName === annotation.annotName) {\n // eslint-disable-next-line\n var clonedObject = cloneObject(pageAnnotations[i]);\n pageAnnotations[i].position = index;\n this.pdfViewer.annotation.undoCommentsElement.push(pageAnnotations[i]);\n if (type === 'sticky') {\n this.updateUndoRedoCollections(clonedObject, pageIndex, null, action);\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations, type) {\n // eslint-disable-next-line\n var annotationCollection;\n if (type === 'Stamp' || type === 'stamp' || type === 'Image') {\n type = 'stamp';\n }\n else if (type === 'StickyNotes' || type === 'sticky') {\n type = 'sticky';\n }\n else if (type === 'textMarkup') {\n type = 'textMarkup';\n }\n else if (type === 'shape' || type === 'Line' || type === 'Radius' || type === 'Rectangle' || type === 'Ellipse'\n || type === 'Polygon' || type === 'LineWidthArrowHead' || type === 'Square' || type === 'Circle') {\n type = 'shape';\n }\n else if (type === 'FreeText' || type === 'freetext' || type === 'freeText') {\n type = 'freetext';\n }\n else if (type === 'ink' || type === 'Ink') {\n type = 'ink';\n }\n else {\n type = 'shape_measure';\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + type);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + type];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.manageAnnotations = function (pageAnnotations, pageNumber, type) {\n if (type === 'Stamp' || type === 'stamp') {\n type = 'stamp';\n }\n else if (type === 'Sticky' || type === 'sticky') {\n type = 'sticky';\n }\n else if (type === 'textMarkup') {\n type = 'textMarkup';\n }\n else if (type === 'shape' || type === 'Line' || type === 'Radius' || type === 'Rectangle' || type === 'Ellipse'\n || type === 'Polygon' || type === 'LineWidthArrowHead' || type === 'Square' || type === 'Circle') {\n type = 'shape';\n }\n else if (type === 'FreeText') {\n type = 'freetext';\n }\n else if (type === 'ink' || type === 'Ink') {\n type = 'ink';\n }\n else {\n type = 'shape_measure';\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_' + type);\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + type];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_' + type);\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_' + type] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_' + type, annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateStickyNotes = function (annotation, id) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'];\n }\n if (storeObject) {\n // eslint-disable-next-line\n var bounds = annotation.bounds;\n var annotObject = JSON.parse(storeObject);\n for (var k = 0; k < annotObject.length; k++) {\n // eslint-disable-next-line\n var currentAnnot = annotObject[k];\n for (var j = 0; j < currentAnnot.annotations.length; j++) {\n if (annotObject[k].annotations[j].annotName === annotation.annotName) {\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n }\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, 0);\n if (annotObject[pageIndex]) {\n // eslint-disable-next-line max-len\n annotObject[k].annotations[j].bounds = { left: bounds.x, top: bounds.y, width: bounds.width, height: bounds.height, right: bounds.right, bottom: bounds.bottom };\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sticky', annotationStringified);\n }\n break;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.saveStickyAnnotations = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'];\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject && !this.pdfViewer.annotationSettings.skipDownload) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.deleteStickyNotesAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (!this.pdfViewerBase.isStorageExceed) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sticky');\n }\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sticky'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sticky', annotationStringified);\n }\n }\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.addStickyNotesAnnotations = function (pageNumber, annotationBase) {\n var pageAnnotations = this.getAnnotations(pageNumber, null, 'sticky');\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageAnnotations(pageAnnotations, pageNumber, 'sticky');\n };\n /**\n * @param annotName\n * @param text\n * @private\n */\n StickyNotesAnnotation.prototype.addTextToComments = function (annotName, text) {\n // eslint-disable-next-line\n var commentsMainDiv = document.getElementById(annotName);\n if (commentsMainDiv) {\n commentsMainDiv.firstChild.firstChild.nextSibling.ej2_instances[0].value = text;\n }\n };\n /**\n * @param newAnnotation\n * @param annotation\n * @param isCut\n * @param newAnnotation\n * @param annotation\n * @param isCut\n * @param newAnnotation\n * @param annotation\n * @param isCut\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateAnnotationCollection = function (newAnnotation, annotation, isCut) {\n var type = this.findAnnotationType(annotation);\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(annotation.pageIndex, null, type);\n if (isCut) {\n pageAnnotations = this.pdfViewer.annotationModule.removedAnnotationCollection;\n }\n if (pageAnnotations !== null) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (isCut && !pageAnnotations[i].annotName) {\n pageAnnotations[i].annotName = pageAnnotations[i].annotationId;\n }\n if (pageAnnotations[i].annotName === annotation.annotName) {\n // eslint-disable-next-line\n var updateAnnotation = cloneObject(pageAnnotations[i]);\n updateAnnotation.annotName = newAnnotation.annotName;\n if (type === 'shape' || type === 'shape_measure' || type === 'freetext' || type === 'ink') {\n updateAnnotation.id = newAnnotation.id;\n }\n if (type === 'stamp') {\n updateAnnotation.randomId = newAnnotation.id;\n }\n if (type === 'ink') {\n updateAnnotation.bounds.x = newAnnotation.bounds.x;\n updateAnnotation.bounds.y = newAnnotation.bounds.y;\n }\n else {\n updateAnnotation.bounds.left = newAnnotation.bounds.x;\n updateAnnotation.bounds.top = newAnnotation.bounds.y;\n updateAnnotation.vertexPoints = newAnnotation.vertexPoints;\n }\n updateAnnotation.note = updateAnnotation.note ? updateAnnotation.note : '';\n updateAnnotation.comments = [];\n // eslint-disable-next-line max-len\n updateAnnotation.review = { state: '', stateModel: '', modifiedDate: updateAnnotation.ModifiedDate, author: updateAnnotation.author };\n updateAnnotation.state = '';\n updateAnnotation.stateModel = '';\n updateAnnotation.pageNumber = annotation.pageIndex;\n this.pdfViewer.annotationModule.storeAnnotations(annotation.pageIndex, updateAnnotation, '_annotations_' + type);\n this.createCommentsContainer(updateAnnotation, annotation.pageIndex + 1, true);\n if (isCut) {\n this.pdfViewer.annotationModule.removedAnnotationCollection = [];\n }\n break;\n }\n }\n }\n };\n StickyNotesAnnotation.prototype.findAnnotationType = function (annotation) {\n var annotType;\n if (annotation.measureType !== '') {\n annotType = 'shape_measure';\n }\n else {\n if (annotation.shapeAnnotationType === 'StickyNotes') {\n annotType = 'sticky';\n }\n else if (annotation.shapeAnnotationType === 'Stamp' || annotation.shapeAnnotationType === 'Image') {\n annotType = 'stamp';\n }\n else if (annotation.shapeAnnotationType === 'FreeText') {\n annotType = 'freetext';\n }\n else if (annotation.shapeAnnotationType === 'Ink') {\n annotType = 'ink';\n }\n else {\n annotType = 'shape';\n }\n }\n return annotType;\n };\n StickyNotesAnnotation.prototype.setExistingAnnotationModifiedDate = function (date) {\n var modifiedDateTime;\n if (date !== '') {\n modifiedDateTime = this.setModifiedDate(date);\n }\n else {\n modifiedDateTime = this.setModifiedDate();\n }\n return modifiedDateTime;\n };\n StickyNotesAnnotation.prototype.updateModifiedTime = function (time, minutes) {\n var modifiedTime;\n if (time >= 12) {\n if (time === 12) {\n modifiedTime = time + ':' + minutes + ' PM';\n }\n else {\n modifiedTime = (time - 12) + ':' + minutes + ' PM';\n }\n }\n else {\n modifiedTime = time + ':' + minutes + ' AM';\n }\n return modifiedTime;\n };\n StickyNotesAnnotation.prototype.setModifiedDate = function (data) {\n var dateTime;\n if (data) {\n dateTime = this.getDateAndTime(data);\n }\n else {\n dateTime = this.getDateAndTime();\n }\n var date = new Date(dateTime);\n var modifiedTime;\n var modifiedDate = date.toString().split(' ').splice(1, 2).join(' ');\n if (date.toLocaleTimeString().split(' ').length === 2) {\n // eslint-disable-next-line max-len\n modifiedTime = date.toLocaleTimeString().split(' ')[0].split(':').splice(0, 2).join(':') + ' ' + date.toLocaleTimeString().split(' ')[1];\n }\n else {\n // eslint-disable-next-line\n var time = parseInt(date.toLocaleTimeString().split(':')[0]);\n var minutes = date.toLocaleTimeString().split(':')[1];\n modifiedTime = this.updateModifiedTime(time, minutes);\n }\n var modifiedDateTime = modifiedDate + ', ' + modifiedTime;\n return modifiedDateTime;\n };\n StickyNotesAnnotation.prototype.convertUTCDateToLocalDate = function (date) {\n var dateTime = new Date(Date.parse(date));\n this.globalize = new Internationalization(this.pdfViewer.locale);\n var timeValue = dateTime.toLocaleTimeString(this.globalize.culture);\n var newTime;\n if (!isNullOrUndefined(timeValue.split(' ')[1])) {\n newTime = (timeValue.split(':').splice(0, 2).join(':')) + ' ' + timeValue.split(' ')[1];\n }\n else {\n newTime = (timeValue.split(':').splice(0, 2).join(':'));\n }\n var newDate = dateTime.toLocaleDateString('default', { month: 'short', day: 'numeric' });\n var dateTimeValue = newDate + ',' + ' ' + newTime;\n return dateTimeValue;\n };\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateModifiedDate = function (titleContainer) {\n if (titleContainer.id === this.pdfViewer.element.id + '_commenttype_icon') {\n titleContainer = titleContainer.nextSibling;\n }\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setModifiedDate();\n };\n /**\n * @param annotation\n * @param isBounds\n * @param isUndoRedoAction\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateAnnotationModifiedDate = function (annotation, isBounds, isUndoRedoAction) {\n // eslint-disable-next-line\n var titleContainer;\n if (annotation) {\n // eslint-disable-next-line\n var commentsContainer = document.getElementById(annotation.annotName);\n if (commentsContainer) {\n if (!isBounds) {\n titleContainer = commentsContainer.firstChild.firstChild.childNodes[1];\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setModifiedDate();\n }\n else {\n var type = this.findAnnotationType(annotation);\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(annotation.pageIndex, null, type);\n if (pageAnnotations != null && annotation) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotation.annotName === pageAnnotations[i].annotName) {\n // eslint-disable-next-line max-len\n if (annotation.bounds.x !== pageAnnotations[i].bounds.left || annotation.bounds.y !== pageAnnotations[i].bounds.top || annotation.bounds.height !== pageAnnotations[i].bounds.height || annotation.bounds.width !== pageAnnotations[i].bounds.width) {\n titleContainer = commentsContainer.firstChild.firstChild.childNodes[1];\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setModifiedDate();\n }\n }\n if (pageAnnotations[i].shapeAnnotationType === 'sticky') {\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], annotation.pageIndex);\n }\n }\n }\n }\n if (isUndoRedoAction) {\n titleContainer = commentsContainer.firstChild.firstChild.childNodes[1];\n if (annotation.modifiedDate !== undefined) {\n var author = titleContainer.textContent.split('-')[0];\n titleContainer.textContent = author + ' - ' + this.setExistingAnnotationModifiedDate(annotation.modifiedDate);\n }\n }\n }\n }\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.saveImportedStickyNotesAnnotations = function (annotation, pageNumber) {\n var annotationObject = null;\n if (!annotation.Author) {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stickyNotesSettings.author;\n }\n // eslint-disable-next-line max-len\n var isLock = this.pdfViewer.stickyNotesSettings.isLock ? this.pdfViewer.stickyNotesSettings.isLock : this.pdfViewer.annotationSettings.isLock;\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: annotation.Author, allowedInteractions: allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, note: annotation.Note, opacity: annotation.Opacity, state: annotation.State, stateModel: annotation.StateModel,\n pathData: '', comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author }, pageNumber: pageNumber,\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n annotName: annotation.AnnotName, color: annotation.color,\n annotationSelectorSettings: this.getSettings(annotation),\n customData: this.pdfViewer.annotation.getCustomData(annotation),\n annotationSettings: { isLock: isLock }, isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_sticky');\n };\n /**\n * @param annotation\n * @param pageNumber\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n StickyNotesAnnotation.prototype.updateStickyNotesAnnotationCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var annotationObject = null;\n if (!annotation.Author) {\n // eslint-disable-next-line max-len\n annotation.Author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.stickyNotesSettings.author;\n }\n // eslint-disable-next-line max-len\n var isLock = this.pdfViewer.stickyNotesSettings.isLock ? this.pdfViewer.stickyNotesSettings.isLock : this.pdfViewer.annotationSettings.isLock;\n // eslint-disable-next-line\n var allowedInteractions = annotation.AllowedInteraction ? annotation.AllowedInteraction : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n if (annotation.IsLock) {\n isLock = annotation.isLock;\n }\n annotationObject = {\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'sticky', author: annotation.Author, allowedInteractions: allowedInteractions, modifiedDate: annotation.ModifiedDate, subject: annotation.Subject, note: annotation.Note, opacity: annotation.Opacity, state: annotation.State, stateModel: annotation.StateModel,\n pathData: '', comments: this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author), review: { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author },\n // eslint-disable-next-line max-len\n bounds: { left: annotation.Bounds.X, top: annotation.Bounds.Y, width: annotation.Bounds.Width, height: annotation.Bounds.Height, right: annotation.Bounds.Right, bottom: annotation.Bounds.Bottom },\n annotationId: annotation.AnnotName, color: annotation.color, pageNumber: pageNumber,\n customData: this.pdfViewer.annotation.getCustomData(annotation),\n annotationSettings: { isLock: isLock }, isPrint: annotation.IsPrint, isCommentLock: annotation.IsCommentLock\n };\n return annotationObject;\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.clear = function () {\n this.commentsCount = 0;\n this.commentsreplyCount = 0;\n this.isAccordionContainer = true;\n this.isEditableElement = false;\n this.isCreateContextMenu = false;\n this.isPageCommentsRendered = false;\n this.isCommentsRendered = false;\n this.isAnnotationRendered = false;\n if (this.commentMenuObj) {\n this.commentMenuObj.destroy();\n }\n // eslint-disable-next-line\n var accordionPages = document.querySelectorAll('.e-pv-accordion-page-container');\n if (accordionPages) {\n for (var j = 0; j < accordionPages.length; j++) {\n // eslint-disable-next-line\n accordionPages[j].remove();\n }\n }\n if (this.commentsRequestHandler) {\n this.commentsRequestHandler.clear();\n }\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.getModuleName = function () {\n return 'StickyNotesAnnotation';\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @returns Object\n * @private\n */\n StickyNotesAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 1, y: 1 }, pageNumber: 0 };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 1, y: 1 };\n else\n offset = annotationObject.offset;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n //Creating annotation settings\n var annotationSelectorSettings = this.pdfViewer.stickyNotesSettings.annotationSelectorSettings ? this.pdfViewer.stickyNotesSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.stickyNotesSettings);\n var allowedInteractions = this.pdfViewer.stickyNotesSettings.allowedInteractions ? this.pdfViewer.stickyNotesSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n //Creating Annotation objects with it's proper properties\n var stickyNotesAnnotation = [];\n var stickyNotes = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'sticky',\n AnnotationFlags: null,\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Bounds: { X: offset.x, Y: offset.y, Width: 30, Height: 30, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: 30, IsEmpty: false, Width: 30 } },\n Color: { IsEmpty: false, B: 51, Blue: 0.2, C: 0, G: 255 },\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n Icon: 'Comment',\n IsCommentLock: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: currentDateString,\n Note: \"\",\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n Reference: null,\n Size: { IsEmpty: true, Width: 0, Height: 0 },\n State: \"\",\n StateModel: \"\",\n StrokeColor: null,\n SubType: null,\n Subject: 'Sticky Note',\n Type: null\n };\n //Adding the annotation object to an array and return it\n stickyNotesAnnotation[0] = stickyNotes;\n return { stickyNotesAnnotation: stickyNotesAnnotation };\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.getAnnotationType = function (type) {\n var annotationType;\n if (type === 'stamp' || type === 'Stamp') {\n annotationType = 'stamp';\n }\n else if (type === 'shape' || type === 'Line' || type === 'Radius' || type === 'Rectangle' || type === 'Ellipse'\n || type === 'Polygon' || type === 'LineWidthArrowHead' || type === 'Square' || type === 'Circle') {\n annotationType = 'shape';\n }\n else if (type === 'textMarkup') {\n annotationType = 'textMarkup';\n }\n else if (type === 'freeText' || type === 'FreeText') {\n annotationType = 'freeText';\n }\n else if (type === 'sticky' || type === 'StickyNotes') {\n annotationType = 'sticky';\n }\n else if (type === 'measure' || type === 'shape_measure') {\n annotationType = 'measure';\n }\n else if (type === 'ink' || type === 'Ink') {\n annotationType = 'ink';\n }\n return annotationType;\n };\n /**\n * @private\n */\n StickyNotesAnnotation.prototype.getAuthorName = function (annotation, commonDiv) {\n var author;\n if (annotation) {\n var type = annotation.shapeAnnotationType;\n var annotationType = this.getAnnotationType(type);\n author = this.pdfViewer.annotationModule.updateAnnotationAuthor(annotationType, type);\n }\n else {\n author = commonDiv.getAttribute('author');\n }\n return author;\n };\n return StickyNotesAnnotation;\n}());\n\nvar InkAnnotation = /** @__PURE__ @class */ (function () {\n function InkAnnotation(pdfViewer, pdfViewerBase) {\n // eslint-disable-next-line\n this.newObject = [];\n /**\n * @private\n */\n this.outputString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.inkAnnotationindex = [];\n /**\n * @private\n */\n this.isAddAnnotationProgramatically = false;\n /**\n * @private\n */\n this.currentPageNumber = '';\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n InkAnnotation.prototype.drawInk = function () {\n this.pdfViewerBase.disableTextSelectionMode();\n this.pdfViewer.tool = 'Ink';\n };\n InkAnnotation.prototype.drawInkAnnotation = function (pageNumber) {\n if (this.pdfViewerBase.isToolbarInkClicked) {\n this.pdfViewerBase.isInkAdded = true;\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n var pageIndex = !isNaN(pageNumber) ? pageNumber : this.pdfViewerBase.currentPageNumber - 1;\n if (this.outputString && this.outputString !== '') {\n var currentAnnot = this.addInk(pageIndex);\n this.pdfViewer.renderDrawing(undefined, pageIndex);\n this.pdfViewer.clearSelection(pageIndex);\n this.pdfViewer.select([currentAnnot.id], currentAnnot.annotationSelectorSettings);\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableSignaturePropertiesTools(true);\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode && this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createPropertyTools(\"Ink\");\n }\n }\n else {\n this.outputString = '';\n this.newObject = [];\n this.pdfViewerBase.isToolbarInkClicked = false;\n this.pdfViewer.tool = '';\n }\n this.pdfViewerBase.isInkAdded = false;\n }\n };\n /**\n * @private\n */\n InkAnnotation.prototype.storePathData = function () {\n this.convertToPath(this.newObject);\n this.newObject = [];\n };\n /**\n * @param position\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.drawInkInCanvas = function (position, pageIndex) {\n // eslint-disable-next-line\n if (this.currentPageNumber !== '' && parseInt(this.currentPageNumber) !== pageIndex) {\n // eslint-disable-next-line\n this.drawInkAnnotation(parseInt(this.currentPageNumber));\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.tool = 'Ink';\n }\n var zoom = this.pdfViewerBase.getZoomFactor();\n var ratio = this.pdfViewerBase.getWindowDevicePixelRatio();\n \n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n var thickness = this.pdfViewer.inkAnnotationSettings.thickness ? this.pdfViewer.inkAnnotationSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.inkAnnotationSettings.opacity ? this.pdfViewer.inkAnnotationSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.inkAnnotationSettings.strokeColor ? this.pdfViewer.inkAnnotationSettings.strokeColor : '#ff0000';\n if (!Browser.isDevice || (Browser.isDevice && zoom <= 0.7)) {\n context.setTransform(ratio, 0, 0, ratio, 0, 0);\n }\n context.beginPath();\n context.lineJoin = 'round';\n context.lineCap = 'round';\n context.moveTo(position.prevPosition.x, position.prevPosition.y);\n context.lineTo(position.currentPosition.x, position.currentPosition.y);\n context.lineWidth = thickness * zoom > 1 ? thickness * zoom : thickness;\n context.strokeStyle = strokeColor;\n context.globalAlpha = opacity;\n context.stroke();\n // context.lineWidth = 2;\n context.arc(position.prevPosition.x, position.prevPosition.y, 2 / 2, 0, Math.PI * 2, true);\n context.closePath();\n this.pdfViewerBase.prevPosition = position.currentPosition;\n this.newObject.push(position.currentPosition.x, position.currentPosition.y);\n this.currentPageNumber = pageIndex.toString();\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.convertToPath = function (newObject) {\n this.movePath(newObject[0], newObject[1]);\n this.linePath(newObject[0], newObject[1]);\n for (var n = 2; n < newObject.length; n = n + 2) {\n this.linePath(newObject[n], newObject[n + 1]);\n }\n };\n InkAnnotation.prototype.linePath = function (x, y) {\n if (!isNullOrUndefined(x) && !isNullOrUndefined(y)) {\n this.outputString += 'L' + x + ',' + y + ' ';\n }\n };\n InkAnnotation.prototype.movePath = function (x, y) {\n if (!isNullOrUndefined(x) && !isNullOrUndefined(y)) {\n this.outputString += 'M' + x + ',' + y + ' ';\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.addInk = function (pageNumber) {\n // eslint-disable-next-line\n var currentBounds = this.calculateInkSize();\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot;\n if (this.pdfViewerBase.isToolbarInkClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n var modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var pageIndex = !isNaN(pageNumber) ? pageNumber : this.pdfViewerBase.currentPageNumber - 1;\n var thickness = this.pdfViewer.inkAnnotationSettings.thickness ? this.pdfViewer.inkAnnotationSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.inkAnnotationSettings.opacity ? this.pdfViewer.inkAnnotationSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.inkAnnotationSettings.strokeColor ? this.pdfViewer.inkAnnotationSettings.strokeColor : '#ff0000';\n // eslint-disable-next-line\n var isLock = this.pdfViewer.inkAnnotationSettings.isLock ? this.pdfViewer.inkAnnotationSettings.isLock : this.pdfViewer.annotationSettings.isLock;\n var author = (this.pdfViewer.annotationSettings.author !== 'Guest') ? this.pdfViewer.annotationSettings.author : this.pdfViewer.inkAnnotationSettings.author ? this.pdfViewer.inkAnnotationSettings.author : 'Guest';\n var customData = this.pdfViewer.inkAnnotationSettings.customData;\n var isPrint = this.pdfViewer.inkAnnotationSettings.isPrint;\n // eslint-disable-next-line\n var allowedInteractions = this.pdfViewer.inkAnnotationSettings.allowedInteractions ? this.pdfViewer.inkAnnotationSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n // eslint-disable-next-line\n var annotationSettings = this.pdfViewer.inkAnnotationSettings ? this.pdfViewer.inkAnnotationSettings : this.pdfViewer.annotationSettings;\n annot = {\n // eslint-disable-next-line max-len\n id: 'ink' + this.pdfViewerBase.inkCount, bounds: { x: currentBounds.x, y: currentBounds.y, width: currentBounds.width, height: currentBounds.height }, pageIndex: pageIndex, data: this.outputString, customData: customData,\n shapeAnnotationType: 'Ink', opacity: opacity, strokeColor: strokeColor, thickness: thickness, annotName: annotationName, comments: [],\n author: author, subject: 'Ink', notes: '',\n review: { state: '', stateModel: '', modifiedDate: modifiedDate, author: author },\n annotationSelectorSettings: this.getSelector('Ink', ''), modifiedDate: modifiedDate, annotationSettings: annotationSettings,\n isPrint: isPrint, allowedInteractions: allowedInteractions, isCommentLock: false, isLocked: isLock\n };\n var annotation = this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var bounds = { left: annot.bounds.x, top: annot.bounds.y, width: annot.bounds.width, height: annot.bounds.height };\n // eslint-disable-next-line\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height, data: this.outputString\n };\n this.pdfViewerBase.inkCount++;\n // eslint-disable-next-line max-len\n var commentsDivid = this.pdfViewer.annotation.stickyNotesAnnotationModule.addComments('ink', (annot.pageIndex + 1), annot.shapeAnnotationType);\n if (commentsDivid) {\n document.getElementById(commentsDivid).id = annotationName;\n }\n annot.annotName = annotationName;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(pageIndex, null, annotation, 'Addition', '', annotation, annotation);\n this.pdfViewer.annotationModule.storeAnnotations(pageIndex, annot, '_annotations_ink');\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Ink', bounds, settings);\n if (this.pdfViewerBase.isInkAdded) {\n this.outputString = '';\n this.newObject = [];\n }\n this.pdfViewerBase.isToolbarInkClicked = false;\n this.pdfViewer.tool = '';\n }\n return annot;\n };\n /**\n * @private\n */\n InkAnnotation.prototype.setAnnotationMode = function () {\n if (this.pdfViewerBase.isToolbarInkClicked) {\n this.drawInkAnnotation();\n }\n else {\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.drawInk();\n }\n };\n InkAnnotation.prototype.saveInkSignature = function () {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[j] = [];\n }\n if (storeObject) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n // eslint-disable-next-line\n var newArray = [];\n var pageAnnotationObject = annotationCollection[i];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n this.pdfViewer.annotationModule.updateModifiedDate(pageAnnotationObject.annotations[z]);\n // eslint-disable-next-line max-len\n var strokeColorString = pageAnnotationObject.annotations[z].strokeColor;\n pageAnnotationObject.annotations[z].strokeColor = JSON.stringify(this.pdfViewerBase.signatureModule.getRgbCode(strokeColorString));\n pageAnnotationObject.annotations[z].bounds = JSON.stringify(this.pdfViewer.annotation.getInkBounds(pageAnnotationObject.annotations[z].bounds, pageAnnotationObject.pageIndex));\n // eslint-disable-next-line\n var collectionData = processPathData(pageAnnotationObject.annotations[z].data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n pageAnnotationObject.annotations[z].data = JSON.stringify(csData);\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n /**\n * @param pageNumber\n * @param annotationBase\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.addInCollection = function (pageNumber, annotationBase) {\n if (annotationBase) {\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations) {\n pageAnnotations.push(annotationBase);\n }\n this.manageInkAnnotations(pageAnnotations, pageNumber);\n }\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.calculateInkSize = function () {\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n // eslint-disable-next-line\n var collectionData = processPathData(this.outputString);\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n for (var k = 0; k < collectionData.length; k++) {\n // eslint-disable-next-line\n var val = collectionData[k];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = (val['x']);\n // eslint-disable-next-line\n maximumX = (val['x']);\n // eslint-disable-next-line\n minimumY = (val['y']);\n // eslint-disable-next-line\n maximumY = (val['y']);\n }\n else {\n // eslint-disable-next-line\n var point1 = (val['x']);\n // eslint-disable-next-line\n var point2 = (val['y']);\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n // eslint-disable-next-line max-len\n return { x: (minimumX / zoomvalue), y: (minimumY / zoomvalue), width: (newdifferenceX / zoomvalue), height: (newdifferenceY / zoomvalue) };\n };\n /**\n * @param annotationCollection\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.renderExistingInkSignature = function (annotationCollection, pageIndex, isImport) {\n var annot;\n var isinkAnnotationAdded = false;\n if (!isImport) {\n for (var p = 0; p < this.inkAnnotationindex.length; p++) {\n if (this.inkAnnotationindex[p] === pageIndex) {\n isinkAnnotationAdded = true;\n break;\n }\n }\n }\n if (annotationCollection && !isinkAnnotationAdded) {\n if (annotationCollection.length > 0 && this.inkAnnotationindex.indexOf(pageIndex) === -1) {\n this.inkAnnotationindex.push(pageIndex);\n }\n for (var n = 0; n < annotationCollection.length; n++) {\n // eslint-disable-next-line\n var currentAnnotation = annotationCollection[n];\n if (currentAnnotation) {\n // eslint-disable-next-line\n var data = currentAnnotation.PathData;\n if (isImport && data) {\n if (typeof (data) === 'object' && data.length > 1) {\n data = getPathString(data);\n }\n else {\n if (currentAnnotation.IsPathData || (data.split('command').length <= 1)) {\n data = data;\n }\n else {\n data = getPathString(JSON.parse(data));\n }\n }\n }\n this.outputString = data;\n // eslint-disable-next-line\n var calculateInkPosition = this.calculateInkSize();\n this.outputString = '';\n var rectDiff = 0;\n var rectDifference = 1;\n // eslint-disable-next-line\n var bounds = currentAnnotation.Bounds;\n if (calculateInkPosition) {\n if (calculateInkPosition.height < 1) {\n rectDiff = bounds.Height ? bounds.Height : bounds.height;\n rectDifference = bounds.Height ? bounds.Height : bounds.height;\n }\n else if (calculateInkPosition.width < 1) {\n rectDiff = bounds.Width ? bounds.Width : bounds.width;\n rectDifference = bounds.Width ? bounds.Width : bounds.width;\n }\n }\n var currentLeft = !isNullOrUndefined(bounds.X) ? bounds.X + (rectDiff / 2) : bounds.x + (rectDiff / 2);\n var currentTop = !isNullOrUndefined(bounds.Y) ? bounds.Y + (rectDiff / 2) : bounds.y + (rectDiff / 2);\n var currentWidth = bounds.Width ? bounds.Width - (rectDifference - 1) : bounds.width - (rectDifference - 1);\n var currentHeight = bounds.Height ? bounds.Height - (rectDifference - 1) : bounds.height - (rectDifference - 1);\n var isLock = currentAnnotation.AnnotationSettings ? currentAnnotation.AnnotationSettings.isLock : false;\n // eslint-disable-next-line\n var selectorSettings = currentAnnotation.AnnotationSelectorSettings ? currentAnnotation.AnnotationSelectorSettings : this.getSelector(currentAnnotation, 'Ink');\n var customData = this.pdfViewer.annotation.getCustomData(currentAnnotation);\n var isPrint = true;\n if (currentAnnotation.AnnotationSettings) {\n isPrint = currentAnnotation.AnnotationSettings.isPrint;\n }\n else {\n isPrint = this.pdfViewer.inkAnnotationSettings.isPrint;\n }\n if (currentAnnotation.IsLocked) {\n isLock = currentAnnotation.IsLocked;\n }\n if (currentAnnotation.Subject === 'Highlight' && currentAnnotation.Opacity === 1) {\n currentAnnotation.Opacity = currentAnnotation.Opacity / 2;\n }\n // eslint-disable-next-line max-len\n currentAnnotation.allowedInteractions = currentAnnotation.AllowedInteractions ? currentAnnotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(currentAnnotation);\n annot = {\n // eslint-disable-next-line max-len\n id: 'ink' + this.pdfViewerBase.inkCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n shapeAnnotationType: 'Ink', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, annotName: currentAnnotation.AnnotName,\n // eslint-disable-next-line max-len\n comments: this.pdfViewer.annotationModule.getAnnotationComments(currentAnnotation.Comments, currentAnnotation, currentAnnotation.Author), author: currentAnnotation.Author, allowedInteractions: currentAnnotation.allowedInteractions, subject: currentAnnotation.Subject, modifiedDate: currentAnnotation.ModifiedDate,\n // eslint-disable-next-line max-len\n review: { state: '', stateModel: '', modifiedDate: currentAnnotation.ModifiedDate, author: currentAnnotation.Author }, notes: currentAnnotation.Note, annotationSettings: { isLock: isLock },\n annotationSelectorSettings: selectorSettings, customData: customData, isPrint: isPrint, isCommentLock: currentAnnotation.IsCommentLock\n };\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, annot.pageIndex);\n this.pdfViewer.annotationModule.storeAnnotations(annot.pageIndex, annot, '_annotations_ink');\n if (this.isAddAnnotationProgramatically) {\n var settings = {\n opacity: annot.opacity, strokeColor: annot.strokeColor, thickness: annot.thickness, modifiedDate: annot.modifiedDate,\n width: annot.bounds.width, height: annot.bounds.height, data: this.outputString\n };\n this.pdfViewer.fireAnnotationAdd(annot.pageIndex, annot.annotName, 'Ink', bounds, settings);\n }\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n this.pdfViewerBase.inkCount++;\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane && this.pdfViewerBase.navigationPane.annotationMenuObj && this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n }\n }\n }\n }\n };\n // To save the imported annotations while downloading or exporting for the page above 10 without a scroll (EJ2-63924)\n /**\n * @private\n */\n InkAnnotation.prototype.saveImportedInkAnnotation = function (annotation, pageNumber) {\n var annotationObject = null;\n var currentBounds = annotation.Bounds;\n var bounds = { x: currentBounds.X, y: currentBounds.Y, width: currentBounds.Width, height: currentBounds.Height };\n var allowedInteractions = this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(annotation);\n var customData = this.pdfViewer.annotation.getCustomData(annotation);\n var comments = this.pdfViewer.annotationModule.getAnnotationComments(annotation.Comments, annotation, annotation.Author);\n var review = { state: annotation.State, stateModel: annotation.StateModel, modifiedDate: annotation.ModifiedDate, author: annotation.Author };\n var annotationSettings = annotation.AnnotationSettings ? annotation.AnnotationSettings : this.pdfViewer.annotationModule.updateAnnotationSettings(annotation);\n var annotationSelectorSettings = this.getSettings(annotation);\n var data = annotation.PathData;\n if (typeof (data) === 'object' && data.length > 1) {\n data = getPathString(data);\n }\n else {\n if (annotation.IsPathData || (data.split('command').length <= 1)) {\n data = data;\n }\n else {\n data = getPathString(JSON.parse(data));\n }\n }\n annotationObject = {\n allowedInteractions: allowedInteractions, annotName: annotation.AnnotName, annotationSelectorSettings: annotationSelectorSettings,\n annotationSettings: annotationSettings, author: annotation.Author, bounds: bounds, customData: customData, comments: comments, data: data,\n id: \"Ink\", isCommentLock: annotation.IsCommentLock, isLocked: annotation.IsLocked, isPrint: annotation.IsPrint, modifiedDate: annotation.ModifiedDate,\n note: annotation.Note, opacity: annotation.Opacity, pageIndex: pageNumber, review: review, shapeAnnotationType: annotation.AnnotationType,\n strokeColor: annotation.StrokeColor, subject: annotation.Subject, thickness: annotation.Thickness\n };\n this.pdfViewer.annotationModule.storeAnnotations(pageNumber, annotationObject, '_annotations_ink');\n };\n // To get the annotation selector settings \n InkAnnotation.prototype.getSettings = function (annotation) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (annotation.AnnotationSelectorSettings) {\n selector = annotation.AnnotationSelectorSettings;\n }\n else {\n selector = this.getSelector(annotation.ShapeAnnotationType, annotation.Subject);\n }\n return selector;\n };\n /**\n * @param pageNumber\n * @param annotations\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.storeInkSignatureData = function (pageNumber, annotations) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(annotations.pageIndex, null, annotations, 'Addition', '', annotations, annotations);\n // eslint-disable-next-line\n var annotation = null;\n var left = annotations.bounds.left ? annotations.bounds.left : annotations.bounds.x;\n var top = annotations.bounds.top ? annotations.bounds.top : annotations.bounds.y;\n if (annotations.wrapper && annotations.wrapper.bounds) {\n left = annotations.wrapper.bounds.left;\n top = annotations.wrapper.bounds.top;\n }\n annotation = {\n // eslint-disable-next-line max-len\n id: annotations.id, bounds: { x: left, y: top, width: annotations.bounds.width, height: annotations.bounds.height },\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Ink', opacity: annotations.opacity, thickness: annotations.thickness, strokeColor: annotations.strokeColor, pageIndex: annotations.pageIndex, data: annotations.data,\n annotName: annotations.annotName,\n // eslint-disable-next-line max-len\n comments: annotations.comments, author: annotations.author, subject: annotations.subject, modifiedDate: annotations.modifiedDate,\n // eslint-disable-next-line max-len\n review: { state: '', stateModel: '', modifiedDate: annotations.modifiedDate, author: annotations.author }, notes: annotations.notes,\n annotationSelectorSettings: this.getSelector(annotations, 'Ink'), isCommentLock: annotations.isCommentLock\n };\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n var index = 0;\n if (!storeObject) {\n var shapeAnnotation = { pageIndex: pageNumber, annotations: [] };\n shapeAnnotation.annotations.push(annotation);\n index = shapeAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(shapeAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_ink', annotationStringified);\n }\n else {\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_ink');\n var pageIndex = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[pageIndex]) {\n annotObject[pageIndex].annotations.push(annotation);\n index = annotObject[pageIndex].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_ink', annotationStringified);\n }\n };\n InkAnnotation.prototype.getSelector = function (type, subject) {\n var selector = this.pdfViewer.annotationSelectorSettings;\n if (type === 'Ink' && this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) {\n selector = this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings;\n }\n return selector;\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[index]) {\n annotationCollection = annotObject[index].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.modifySignatureInkCollection = function (property, pageNumber, annotationBase) {\n if (!isNullOrUndefined(annotationBase.formFieldAnnotationType) && annotationBase.formFieldAnnotationType !== \"\") {\n this.pdfViewer.annotationModule.isFormFieldShape = true;\n }\n else {\n this.pdfViewer.annotationModule.isFormFieldShape = false;\n }\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var currentAnnotObject = null;\n // eslint-disable-next-line\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[i].id) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[i].bounds = { x: annotationBase.wrapper.bounds.left, y: annotationBase.wrapper.bounds.top, width: annotationBase.bounds.width, height: annotationBase.bounds.height };\n }\n else if (property === 'stroke') {\n pageAnnotations[i].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[i].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[i].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'notes') {\n pageAnnotations[i].notes = annotationBase.notes;\n }\n else if (property === 'delete') {\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n pageAnnotations[i].modifiedDate = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n this.pdfViewer.annotationModule.storeAnnotationCollections(pageAnnotations[i], pageNumber);\n }\n }\n this.manageInkAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n // eslint-disable-next-line\n InkAnnotation.prototype.manageInkAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_ink');\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_ink');\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[index]) {\n annotObject[index].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_ink', annotationStringified);\n }\n };\n /**\n * @param currentAnnotation\n * @param pageIndex\n * @param isImport\n * @param currentAnnotation\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n InkAnnotation.prototype.updateInkCollections = function (currentAnnotation, pageIndex, isImport) {\n // eslint-disable-next-line\n var annot;\n // eslint-disable-next-line\n if (currentAnnotation) {\n // eslint-disable-next-line\n var bounds = currentAnnotation.Bounds;\n var currentLeft = (bounds.X);\n var currentTop = (bounds.Y);\n var currentWidth = (bounds.Width);\n var currentHeight = (bounds.Height);\n var customData = currentAnnotation.customData;\n var isPrint = currentAnnotation.isPrint;\n // eslint-disable-next-line\n var allowedInteractions = currentAnnotation.AllowedInteractions ? currentAnnotation.AllowedInteractions : this.pdfViewer.annotationModule.updateAnnotationAllowedInteractions(currentAnnotation);\n // eslint-disable-next-line\n var annotationSettings = currentAnnotation.AnnotationSettings ? currentAnnotation.AnnotationSettings : this.pdfViewer.inkAnnotationSettings ? this.pdfViewer.inkAnnotationSettings : this.pdfViewer.annotationSettings;\n if (currentAnnotation.IsLocked) {\n annotationSettings.isLock = currentAnnotation.IsLocked;\n }\n // eslint-disable-next-line\n var data = currentAnnotation.PathData;\n if (isImport) {\n data = getPathString(JSON.parse(currentAnnotation.PathData));\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'ink' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n // eslint-disable-next-line max-len\n shapeAnnotationType: 'Ink', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, annotationId: currentAnnotation.AnnotName,\n // eslint-disable-next-line max-len\n customData: customData, comments: this.pdfViewer.annotationModule.getAnnotationComments(currentAnnotation.Comments, currentAnnotation, currentAnnotation.Author), author: currentAnnotation.Author, allowedInteractions: allowedInteractions, subject: currentAnnotation.Subject, modifiedDate: currentAnnotation.ModifiedDate,\n review: { state: '', stateModel: '', modifiedDate: currentAnnotation.ModifiedDate, author: currentAnnotation.Author }, notes: currentAnnotation.Note, isPrint: isPrint, isCommentLock: currentAnnotation.IsCommentLock, annotationSettings: annotationSettings, isLocked: annotationSettings.isLock\n };\n return annot;\n }\n };\n /**\n * This method used to add annotations with using program.\n *\n * @param annotationObject - It describes type of annotation object\n * @param offset - It describes about the annotation bounds or location\n * @param pageNumber - It describes about the annotation page number\n * @returns Object\n * @private\n */\n InkAnnotation.prototype.updateAddAnnotationDetails = function (annotationObject, offset, pageNumber) {\n //Creating new object if annotationObject is null\n if (!annotationObject) {\n annotationObject = { offset: { x: 10, y: 10 }, pageNumber: 0, width: undefined, height: undefined };\n offset = annotationObject.offset;\n }\n else if (!annotationObject.offset)\n offset = { x: 10, y: 10 };\n else\n offset = annotationObject.offset;\n //Creating the CurrentDate and Annotation name\n var currentDateString = this.pdfViewer.annotation.stickyNotesAnnotationModule.getDateAndTime();\n var annotationName = this.pdfViewer.annotation.createGUID();\n //Creating annotation settings\n var annotationSelectorSettings = this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings ? this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings : this.pdfViewer.annotationSelectorSettings;\n var annotationSettings = this.pdfViewer.annotationModule.updateSettings(this.pdfViewer.inkAnnotationSettings);\n var allowedInteractions = this.pdfViewer.inkAnnotationSettings.allowedInteractions ? this.pdfViewer.inkAnnotationSettings.allowedInteractions : this.pdfViewer.annotationSettings.allowedInteractions;\n annotationSettings.isLock = annotationObject.isLock ? annotationObject.isLock : false;\n annotationObject.width = annotationObject.width ? annotationObject.width : 150;\n annotationObject.height = annotationObject.height ? annotationObject.height : 60;\n var pathData = annotationObject.path ? annotationObject.path : '';\n if (!isNullOrUndefined(pathData)) {\n // Check whether the given path of the ink annotation is starts with Move path or Line path. \n if (pathData[0] === 'M' || pathData[0] === 'L') {\n var collectionData = processPathData(pathData);\n var csData = splitArrayCollection(collectionData);\n pathData = JSON.stringify(csData);\n }\n else {\n pathData = getPathString(JSON.parse(pathData));\n }\n }\n annotationObject.path = pathData;\n //Creating Annotation objects with it's proper properties\n var signatureInkAnnotation = [];\n var ink = {\n AllowedInteractions: annotationObject.allowedInteractions ? annotationObject.allowedInteractions : allowedInteractions,\n AnnotName: annotationName,\n AnnotType: 'ink',\n AnnotationFlags: null,\n AnnotationSelectorSettings: annotationObject.annotationSelectorSettings ? annotationObject.annotationSelectorSettings : annotationSelectorSettings,\n AnnotationSettings: annotationSettings,\n AnnotationType: 'Ink',\n Author: annotationObject.author ? annotationObject.author : 'Guest',\n Bounds: { X: offset.x, Y: offset.y, Width: annotationObject.width, Height: annotationObject.height, Left: offset.x, Top: offset.y, Location: { X: offset.x, Y: offset.y }, Size: { Height: annotationObject.height, IsEmpty: false, Width: annotationObject.width } },\n Comments: null,\n CreatedDate: currentDateString,\n CustomData: annotationObject.customData ? annotationObject.customData : null,\n ExistingCustomData: null,\n IsCommentLock: false,\n IsLock: annotationObject.isLock ? annotationObject.isLock : false,\n IsPrint: annotationObject.isPrint ? annotationObject.isPrint : true,\n ModifiedDate: currentDateString,\n Note: '',\n Opacity: annotationObject.opacity ? annotationObject.opacity : 1,\n PathData: annotationObject.path,\n PageNumber: pageNumber,\n State: '',\n StateModel: '',\n StrokeColor: annotationObject.strokeColor ? annotationObject.strokeColor : 'rgba(255,0,0,1)',\n SubType: null,\n Subject: 'Ink',\n Type: null,\n Thickness: annotationObject.thickness ? annotationObject.thickness : 1\n };\n //Adding the annotation object to an array and return it\n signatureInkAnnotation[0] = ink;\n return { signatureInkAnnotation: signatureInkAnnotation };\n };\n return InkAnnotation;\n}());\n\n/**\n * export types\n */\n\n/**\n * The `NavigationPane` module is used to handle navigation pane for thumbnail and bookmark navigation of PDF viewer.\n *\n * @hidden\n */\nvar NavigationPane = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the constructor of navigationPane.\n *\n * @param { PdfViewer } viewer - Specified PdfViewer class.\n * @param { PdfViewerBase } base - The pdfViewerBase.\n */\n function NavigationPane(viewer, base) {\n var _this = this;\n this.thumbnailWidthMin = 200;\n this.contentContainerScrollWidth = 33;\n this.closeButtonLeft = 170;\n this.isTooltipCreated = false;\n this.isThumbnail = false;\n this.annotationContextMenu = [];\n this.isCommentPanelShow = false;\n this.commentPanelWidthMin = 300;\n /**\n * @private\n */\n this.isNavigationToolbarVisible = false;\n /**\n * @private\n */\n this.isBookmarkListOpen = false;\n /**\n * @private\n */\n this.isNavigationPaneResized = false;\n /**\n * @private\n */\n this.isBookmarkOpen = false;\n /**\n * @private\n */\n this.isThumbnailOpen = false;\n /**\n * @private\n */\n this.restrictUpdateZoomValue = true;\n // eslint-disable-next-line\n this.loadImportAnnotation = function (args) {\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile) {\n _this.pdfViewer.fireImportStart(uploadedFile);\n // eslint-disable-next-line\n var uploadedFileType = uploadedFile.type;\n if (uploadedFile.name.split('.json').length > 1 && uploadedFileType.includes('json')) {\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n if (e.currentTarget.result) {\n var importFile = e.currentTarget.result.split(',')[1];\n // eslint-disable-next-line\n var annotationData = atob(importFile);\n if (annotationData) {\n // eslint-disable-next-line\n var jsonData = JSON.parse(annotationData);\n _this.pdfViewerBase.importAnnotations(jsonData, AnnotationDataFormat.Json);\n }\n }\n };\n }\n else if (uploadedFile.name.split('.xfdf').length > 1 && (uploadedFileType.includes('xfdf') || args.target.accept.includes('xfdf'))) {\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n if (e.currentTarget.result) {\n var importFile = e.currentTarget.result.split(',')[1];\n // eslint-disable-next-line\n var annotationData = atob(importFile);\n if (annotationData) {\n // eslint-disable-next-line max-len\n _this.pdfViewerBase.importAnnotations(importFile, AnnotationDataFormat.Xfdf, true);\n }\n }\n };\n }\n else {\n _this.pdfViewer.fireImportFailed(uploadedFile, _this.pdfViewer.localeObj.getConstant('Import Failed'));\n if (isBlazor()) {\n var promise = _this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ImportFailed');\n promise.then(function (value) {\n _this.pdfViewerBase.openImportExportNotificationPopup(value);\n });\n }\n else {\n _this.pdfViewerBase.openImportExportNotificationPopup(_this.pdfViewer.localeObj.getConstant('Import Failed'));\n }\n }\n }\n args.target.value = \"\";\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizeIconMouseOver = function (event) {\n event.srcElement.style.cursor = 'e-resize';\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizePanelMouseDown = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.offset = [\n proxy.sideBarResizer.offsetLeft - event.clientX,\n proxy.sideBarResizer.offsetTop - event.clientY,\n proxy.sideBarResizer.offsetParent.clientWidth\n ];\n _this.previousX = event.clientX;\n proxy.isDown = true;\n proxy.isNavigationPaneResized = true;\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'e-resize';\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.cursor = 'e-resize';\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizeViewerMouseLeave = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.isDown = false;\n if (proxy.isNavigationPaneResized && proxy.sideBarContentContainer) {\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'default';\n proxy.sideBarContentContainer.style.cursor = 'default';\n proxy.isNavigationPaneResized = false;\n }\n if (proxy.commentPanelContainer && proxy.isCommentPanelShow) {\n _this.commentPanelMouseLeave(event);\n proxy.isCommentPanelShow = false;\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.resizePanelMouseMove = function (event) {\n var proxy = null;\n proxy = _this;\n if (!_this.pdfViewerBase.getPopupNoteVisibleStatus()) {\n var target = event.target;\n // eslint-disable-next-line max-len\n if (_this.pdfViewerBase.skipPreventDefault(target)) {\n event.preventDefault();\n }\n if (proxy.isDown && _this.sideBarContentContainer) {\n // prevent the sidebar from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n if (_this.pdfViewer.enableRtl) {\n var currentWidth = _this.previousX - event.clientX;\n var width = currentWidth + proxy.offset[2];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.thumbnailWidthMin) {\n width = _this.thumbnailWidthMin;\n }\n proxy.sideBarResizer.style.right = width + 'px';\n proxy.sideBarContentContainer.style.width = width + 'px';\n proxy.sideBarContent.style.width = width + 'px';\n proxy.sideBarContentSplitter.style.width = width + 'px';\n proxy.sideBarTitleContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n }\n else {\n var width = event.clientX + proxy.offset[0];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.thumbnailWidthMin) {\n width = _this.thumbnailWidthMin;\n }\n proxy.sideBarResizer.style.left = width + 'px';\n proxy.closeDiv.style.left = width - proxy.contentContainerScrollWidth + 'px';\n proxy.sideBarContentContainer.style.width = width + 'px';\n proxy.sideBarContent.style.width = width + 'px';\n proxy.sideBarContentSplitter.style.width = width + 'px';\n proxy.sideBarTitleContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n var viewerWidth = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight());\n proxy.pdfViewerBase.viewerContainer.style.width = viewerWidth + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n proxy.pdfViewerBase.updateZoomValue();\n if (!proxy.bookmarkButton.children[0].classList.contains('e-pv-bookmark-disable-icon')) {\n proxy.pdfViewer.bookmarkViewModule.setBookmarkContentHeight();\n }\n }\n else if (proxy.isCommentPanelShow && _this.commentPanelContainer) {\n _this.updateCommentPanelContainer(event);\n }\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.sideToolbarOnClose = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.removeThumbnailSelectionIconTheme();\n proxy.removeBookmarkSelectionIconTheme();\n proxy.updateViewerContainerOnClose();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.sideToolbarOnClick = function (event) {\n _this.sideBarTitle.textContent = _this.pdfViewer.localeObj.getConstant('Page Thumbnails');\n _this.sideBarContent.setAttribute('aria-label', 'Thumbnail View Panel');\n var proxy = null;\n proxy = _this;\n var isblazor = isBlazor();\n // eslint-disable-next-line max-len\n var bookmarkPane = isblazor ? _this.pdfViewer.element.querySelector('.e-pv-bookmark-view') : document.getElementById(_this.pdfViewer.element.id + '_bookmark_view');\n if (bookmarkPane) {\n proxy.removeBookmarkSelectionIconTheme();\n bookmarkPane.style.display = 'none';\n }\n document.getElementById(_this.pdfViewer.element.id + '_thumbnail_view').style.display = 'flex';\n if (proxy.sideBarContentContainer) {\n if (proxy.sideBarContentContainer.style.display !== 'none') {\n if (proxy.isBookmarkOpen) {\n proxy.isThumbnailOpen = true;\n proxy.setThumbnailSelectionIconTheme();\n _this.updateViewerContainerOnExpand();\n }\n else {\n proxy.isThumbnailOpen = false;\n proxy.removeThumbnailSelectionIconTheme();\n _this.updateViewerContainerOnClose();\n }\n }\n else {\n _this.sideBarContent.focus();\n proxy.isThumbnailOpen = true;\n proxy.setThumbnailSelectionIconTheme();\n _this.updateViewerContainerOnExpand();\n }\n }\n proxy.isBookmarkOpen = false;\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n this.openThumbnailPane = function () {\n var proxy = null;\n proxy = _this;\n var sideBarContent = document.getElementById(_this.pdfViewer.element.id + '_sideBarContent');\n var sideBarContentContainer = document.getElementById(_this.pdfViewer.element.id + '_sideBarContentContainer');\n var viewerContainer = document.getElementById(_this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(_this.pdfViewer.element.id + '_pageViewContainer');\n document.getElementById(_this.pdfViewer.element.id + '_thumbnail_view').style.display = 'block';\n document.getElementById(_this.pdfViewer.element.id + '_sideBarResizer').style.display = 'none';\n document.getElementById(_this.pdfViewer.element.id + '_sideBarTitleContainer').style.display = 'none';\n document.getElementById(_this.pdfViewer.element.id + '_sideBarContentSplitter').style.display = 'none';\n sideBarContent.classList.add('e-thumbnail');\n sideBarContentContainer.classList.add('e-thumbnail');\n if (sideBarContentContainer) {\n if (proxy.isThumbnail) {\n sideBarContentContainer.style.display = 'none';\n viewerContainer.style.width = proxy.pdfViewer.element.clientWidth + 'px';\n pageContainer.style.width = viewerContainer.clientWidth + 'px';\n viewerContainer.style.left = sideBarContentContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n proxy.isThumbnail = false;\n }\n else {\n sideBarContent.focus();\n sideBarContentContainer.style.display = 'block';\n // eslint-disable-next-line max-len\n viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - sideBarContentContainer.clientWidth) + 'px';\n pageContainer.style.width = viewerContainer.clientWidth + 'px';\n viewerContainer.style.left = (sideBarContentContainer.clientWidth) + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n proxy.isThumbnail = true;\n }\n }\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.bookmarkButtonOnClick = function (event) {\n _this.openBookmarkcontentInitially();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.commentPanelMouseDown = function (event) {\n var proxy = null;\n proxy = _this;\n proxy.offset = [\n proxy.commentPanelResizer.offsetLeft - event.clientX,\n proxy.commentPanelResizer.offsetTop - event.clientY,\n proxy.getViewerContainerRight()\n ];\n _this.isCommentPanelShow = true;\n _this.previousX = event.clientX;\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'e-resize';\n proxy.commentPanelResizer.style.cursor = 'e-resize';\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.updateCommentPanelContainer = function (event) {\n var proxy = null;\n proxy = _this;\n // prevent the commentPanel from becoming too narrow, or from occupying more\n // than half of the available viewer width.\n if (_this.pdfViewer.enableRtl) {\n var width = event.clientX + proxy.offset[0];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.commentPanelWidthMin) {\n width = _this.commentPanelWidthMin;\n }\n proxy.commentPanelResizer.style.left = width + 'px';\n proxy.commentPanelContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n }\n else {\n var currentWidth = _this.previousX - event.clientX;\n var width = currentWidth + proxy.offset[2];\n var maxWidth = Math.floor(_this.outerContainerWidth / 2);\n if (width > maxWidth) {\n width = maxWidth;\n }\n if (width < _this.commentPanelWidthMin) {\n width = _this.commentPanelWidthMin;\n }\n proxy.commentPanelResizer.style.right = width + 'px';\n proxy.commentPanelContainer.style.width = width + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n }\n _this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelTextTop();\n // eslint-disable-next-line max-len\n var viewerWidth = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight());\n proxy.pdfViewerBase.viewerContainer.style.width = viewerWidth + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n };\n /**\n * @param {MouseEvent} event - The event.\n * @returns {void}\n */\n this.commentPanelMouseLeave = function (event) {\n var proxy = null;\n proxy = _this;\n if (proxy.commentPanelContainer) {\n proxy.pdfViewerBase.viewerContainer.style.cursor = 'default';\n proxy.commentPanelContainer.style.cursor = 'default';\n }\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.initializeNavigationPane = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.createNavigationPane();\n }\n else {\n // eslint-disable-next-line max-len\n this.commentPanelContainer = createElement('div', { id: this.pdfViewer.element.id + '_commantPanel', className: 'e-pv-mobile-comments-container' });\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelContainer);\n if (this.pdfViewer.enableRtl) {\n this.commentPanelContainer.style.left = 0 + 'px';\n }\n else {\n this.commentPanelContainer.style.right = 0 + 'px';\n }\n this.commentPanelContainer.style.bottom = 0 + 'px';\n this.createCommentPanelTitleContainer();\n this.commentPanelContainer.style.display = 'none';\n // eslint-disable-next-line max-len\n this.commentsContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentscontentcontainer', className: 'e-pv-comments-content-container' });\n this.commentPanelContainer.appendChild(this.commentsContentContainer);\n this.createFileElement(this.commentPanelContainer);\n this.createXFdfFileElement(this.commentPanelContainer);\n }\n };\n NavigationPane.prototype.createNavigationPane = function () {\n var isblazor = isBlazor();\n if (!isblazor) {\n // eslint-disable-next-line max-len\n this.sideBarToolbar = createElement('div', { id: this.pdfViewer.element.id + '_sideBarToolbar', className: 'e-pv-sidebar-toolbar', attrs: { 'role': 'toolbar', 'aria-orientation': 'vertical', 'tabindex': '-1', 'aria-label': 'Sidebar Toolbar' } });\n // eslint-disable-next-line max-len\n this.sideBarToolbarSplitter = createElement('div', { id: this.pdfViewer.element.id + '_sideBarToolbarSplitter', className: 'e-pv-sidebar-toolbar-splitter' });\n // eslint-disable-next-line max-len\n this.sideBarContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContentContainer', className: 'e-pv-sidebar-content-container' });\n // eslint-disable-next-line max-len\n this.sideBarContentSplitter = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContentSplitter', className: 'e-pv-sidebar-content-splitter' });\n // eslint-disable-next-line max-len\n this.sideBarContent = createElement('div', { id: this.pdfViewer.element.id + '_sideBarContent', className: 'e-pv-sidebar-content', attrs: { 'tabindex': '0' } });\n // eslint-disable-next-line max-len\n this.sideBarTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarTitleContainer', className: 'e-pv-sidebar-title-container' });\n // eslint-disable-next-line max-len\n this.sideBarTitle = createElement('div', { id: this.pdfViewer.element.id + '_sideBarTitle', className: 'e-pv-sidebar-title', attrs: { 'tabindex': '-1' } });\n // eslint-disable-next-line max-len\n this.sideBarResizer = createElement('div', { id: this.pdfViewer.element.id + '_sideBarResizer', className: 'e-pv-sidebar-resizer' });\n }\n else {\n this.sideBarToolbar = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar');\n this.sideBarToolbarSplitter = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n this.sideBarContentContainer = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-container');\n this.sideBarContentSplitter = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-splitter');\n this.sideBarContent = this.pdfViewer.element.querySelector('.e-pv-sidebar-content');\n this.sideBarTitleContainer = this.pdfViewer.element.querySelector('.e-pv-sidebar-title-container');\n this.sideBarTitle = this.pdfViewer.element.querySelector('.e-pv-sidebar-title');\n this.sideBarResizer = this.pdfViewer.element.querySelector('.e-pv-sidebar-resizer');\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarToolbar);\n if (this.pdfViewer.enableRtl) {\n this.sideBarToolbar.style.cssFloat = 'right';\n this.sideBarToolbar.style.right = 1 + 'px';\n this.sideBarToolbar.style.position = 'relative';\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarToolbarSplitter);\n if (this.pdfViewer.enableRtl) {\n this.sideBarToolbarSplitter.classList.add('e-right');\n }\n else {\n this.sideBarToolbarSplitter.classList.add('e-left');\n }\n if (this.pdfViewer.enableRtl) {\n this.sideBarContentContainer.classList.add('e-right');\n }\n else {\n this.sideBarContentContainer.classList.add('e-left');\n }\n this.pdfViewerBase.mainContainer.appendChild(this.sideBarContentContainer);\n if (this.pdfViewer.enableRtl) {\n this.sideBarContentSplitter.style.right = 0 + 'px';\n }\n this.sideBarContentContainer.appendChild(this.sideBarContentSplitter);\n if (this.pdfViewer.enableRtl) {\n this.sideBarContent.style.right = 0 + 'px';\n this.sideBarContent.style.direction = 'rtl';\n }\n this.sideBarContentContainer.appendChild(this.sideBarContent);\n if (this.pdfViewer.enableRtl) {\n this.sideBarTitleContainer.style.right = 0 + 'px';\n }\n if (this.pdfViewer.enableRtl) {\n this.sideBarTitle.classList.add('e-right');\n }\n else {\n this.sideBarTitle.classList.add('e-left');\n }\n this.sideBarTitleContainer.appendChild(this.sideBarTitle);\n this.sideBarContentContainer.appendChild(this.sideBarTitleContainer);\n this.sideBarResizer.addEventListener('mousedown', this.resizePanelMouseDown);\n this.pdfViewerBase.mainContainer.addEventListener('mousemove', this.resizePanelMouseMove);\n this.pdfViewerBase.mainContainer.addEventListener('mouseup', this.resizeViewerMouseLeave);\n if (this.pdfViewer.enableRtl) {\n this.sideBarResizer.classList.add('e-right');\n }\n else {\n this.sideBarResizer.classList.add('e-left');\n }\n this.sideBarContentContainer.appendChild(this.sideBarResizer);\n this.createCommentPanel();\n var controlLeft = this.getViewerContainerLeft();\n var controlRight = this.getViewerContainerRight();\n if (!this.pdfViewer.enableRtl) {\n this.pdfViewerBase.viewerContainer.style.left = controlLeft + 'px';\n this.pdfViewerBase.viewerContainer.style.right = controlRight + 'px';\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.width = (this.pdfViewer.element.clientWidth - controlLeft - this.commentPanelContainer.clientWidth) + 'px';\n this.sideBarContentContainer.style.display = 'none';\n this.createSidebarToolBar();\n this.createSidebarTitleCloseButton();\n this.createResizeIcon();\n this.sideBarToolbar.addEventListener('mouseup', this.sideToolbarOnMouseup.bind(this));\n this.sideBarContentContainer.addEventListener('mouseup', this.sideBarTitleOnMouseup.bind(this));\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.adjustPane = function () {\n if (isBlazor()) {\n var splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n var sideToolbarElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar');\n var sideToolbarContent = this.pdfViewer.element.querySelector('.e-pv-sidebar-content-container');\n var toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n if (toolbarHeight === 0) {\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(toolbarContainer)['height']) + 1;\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n sideToolbarElement.style.top = toolbarHeight + 'px';\n sideToolbarContent.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n sideToolbarElement.style.height = this.getSideToolbarHeight(toolbarHeight);\n sideToolbarContent.style.height = this.getSideToolbarHeight(toolbarHeight);\n splitterElement.style.height = this.getSideToolbarHeight(toolbarHeight);\n this.pdfViewerBase.viewerContainer.style.height = this.getSideToolbarHeight(toolbarHeight);\n }\n else {\n var splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n var toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n var toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n if (toolbarHeight === 0) {\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(toolbarContainer)['height']) + 1;\n }\n // eslint-disable-next-line max-len\n this.sideBarToolbar.style.top = toolbarHeight + 'px';\n this.sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n }\n };\n NavigationPane.prototype.getSideToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n NavigationPane.prototype.createCommentPanel = function () {\n // eslint-disable-next-line max-len\n this.commentPanelContainer = createElement('div', { id: this.pdfViewer.element.id + '_commantPanel', className: 'e-pv-comment-panel' });\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelContainer);\n if (this.pdfViewer.enableRtl) {\n this.commentPanelContainer.style.left = 0 + 'px';\n }\n else {\n this.commentPanelContainer.style.right = 0 + 'px';\n }\n this.commentPanelContainer.style.bottom = 0 + 'px';\n this.createCommentPanelTitleContainer();\n this.commentPanelContainer.style.display = 'none';\n // eslint-disable-next-line max-len\n this.commentsContentContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentscontentcontainer', className: 'e-pv-comments-content-container' });\n this.commentPanelContainer.appendChild(this.commentsContentContainer);\n // eslint-disable-next-line max-len\n this.commentPanelResizer = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelResizer', className: 'e-pv-comment-panel-resizer' });\n if (this.pdfViewer.enableRtl) {\n this.commentPanelResizer.classList.add('e-left');\n }\n else {\n this.commentPanelResizer.classList.add('e-right');\n }\n this.commentPanelResizer.style.display = 'none';\n this.commentPanelResizer.addEventListener('mousedown', this.commentPanelMouseDown);\n this.pdfViewerBase.mainContainer.appendChild(this.commentPanelResizer);\n this.createCommentPanelResizeIcon();\n this.createFileElement(this.commentPanelContainer);\n this.createXFdfFileElement(this.commentPanelContainer);\n };\n NavigationPane.prototype.createCommentPanelTitleContainer = function () {\n // eslint-disable-next-line max-len\n var commentPanelTitleContainer = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelTitleContainer', className: 'e-pv-comment-panel-title-container' });\n // eslint-disable-next-line max-len\n var commentpanelTilte = createElement('div', { id: this.pdfViewer.element.id + '_commentPanelTitle', className: 'e-pv-comment-panel-title', attrs: { 'tabindex': '-1' } });\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Comments');\n promise.then(function (value) {\n commentpanelTilte.innerText = value;\n });\n }\n else {\n commentpanelTilte.innerText = this.pdfViewer.localeObj.getConstant('Comments');\n }\n var annotationButton = createElement('button', { id: this.pdfViewer.element.id + '_annotations_btn' });\n annotationButton.setAttribute('aria-label', 'annotation button');\n annotationButton.setAttribute('type', 'button');\n annotationButton.className = 'e-btn e-pv-tbar-btn e-pv-comment-panel-title-close-div e-btn';\n // eslint-disable-next-line max-len\n var moreOptionButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_annotation_more_icon', className: 'e-pv-more-icon e-pv-icon' });\n annotationButton.appendChild(moreOptionButtonSpan);\n if (Browser.isDevice && !isBlazor()) {\n var commentCloseIconDiv = createElement('button');\n commentCloseIconDiv.setAttribute('aria-label', 'annotation button');\n commentCloseIconDiv.setAttribute('type', 'button');\n commentCloseIconDiv.style.borderColor = 'transparent';\n commentCloseIconDiv.style.paddingTop = '11px';\n commentCloseIconDiv.style.paddingBottom = '11px';\n commentCloseIconDiv.style.backgroundColor = '#fafafa';\n commentCloseIconDiv.addEventListener('click', this.closeCommentPanelContainer.bind(this));\n commentpanelTilte.style.left = '37px';\n var commentCloseIcon = createElement('span', { className: 'e-pv-annotation-tools-close-icon e-pv-icon' });\n commentCloseIconDiv.appendChild(commentCloseIcon);\n commentPanelTitleContainer.appendChild(commentCloseIconDiv);\n }\n commentPanelTitleContainer.appendChild(commentpanelTilte);\n commentPanelTitleContainer.appendChild(annotationButton);\n this.commentPanelContainer.appendChild(commentPanelTitleContainer);\n this.createAnnotationContextMenu();\n annotationButton.addEventListener('click', this.openAnnotationContextMenu.bind(this));\n };\n NavigationPane.prototype.createCommentPanelResizeIcon = function () {\n // eslint-disable-next-line max-len\n this.commentPanelResizeIcon = createElement('div', { id: this.pdfViewer.element.id + '_commentPanel_resize', className: 'e-pv-resize-icon e-pv-icon' });\n this.setCommentPanelResizeIconTop();\n this.commentPanelResizeIcon.style.position = 'absolute';\n this.commentPanelResizer.appendChild(this.commentPanelResizeIcon);\n };\n // eslint-disable-next-line\n NavigationPane.prototype.openAnnotationContextMenu = function (event) {\n /* eslint-disable-next-line security/detect-non-literal-fs-filename */\n this.annotationMenuObj.open(event.clientY, event.clientX, event.currentTarget);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.createAnnotationContextMenu = function () {\n // eslint-disable-next-line max-len\n this.annotationContextMenu = [\n { text: this.pdfViewer.localeObj.getConstant('Export Annotations') },\n { text: this.pdfViewer.localeObj.getConstant('Import Annotations') },\n { text: this.pdfViewer.localeObj.getConstant('Export XFDF') },\n { text: this.pdfViewer.localeObj.getConstant('Import XFDF') }\n ];\n var annotationMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_annotation_context_menu' });\n this.pdfViewer.element.appendChild(annotationMenuElement);\n this.annotationMenuObj = new ContextMenu({\n target: '#' + this.pdfViewer.element.id + '_annotations_btn', items: this.annotationContextMenu,\n select: this.annotationMenuItemSelect.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.annotationMenuObj.enableRtl = true;\n }\n this.annotationMenuObj.appendTo(annotationMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.annotationMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.annotationMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n // eslint-disable-next-line\n NavigationPane.prototype.annotationMenuItemSelect = function (args) {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n if (args.item) {\n switch (args.item.text) {\n case this.pdfViewer.localeObj.getConstant('Export Annotations'):\n this.pdfViewerBase.exportAnnotations(AnnotationDataFormat.Json);\n break;\n case this.pdfViewer.localeObj.getConstant('Import Annotations'):\n this.importAnnotationIconClick(args);\n break;\n case this.pdfViewer.localeObj.getConstant('Export XFDF'):\n this.pdfViewerBase.exportAnnotations(AnnotationDataFormat.Xfdf);\n break;\n case this.pdfViewer.localeObj.getConstant('Import XFDF'):\n this.importXFdfAnnotationIconClick(args);\n break;\n default:\n break;\n }\n }\n };\n NavigationPane.prototype.createFileElement = function (toolbarElement) {\n // eslint-disable-next-line max-len\n this.annotationInputElement = createElement('input', { id: this.pdfViewer.element.id + '_annotationUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file', 'aria-label': 'upload elements' } });\n this.annotationInputElement.setAttribute('accept', '.json');\n toolbarElement.appendChild(this.annotationInputElement);\n this.annotationInputElement.addEventListener('change', this.loadImportAnnotation);\n };\n NavigationPane.prototype.createXFdfFileElement = function (toolbarElement) {\n // eslint-disable-next-line max-len\n this.annotationXFdfInputElement = createElement('input', { id: this.pdfViewer.element.id + '_annotationXFdfUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file', 'aria-label': 'upload elements' } });\n this.annotationXFdfInputElement.setAttribute('accept', '.xfdf');\n toolbarElement.appendChild(this.annotationXFdfInputElement);\n this.annotationXFdfInputElement.addEventListener('change', this.loadImportAnnotation);\n };\n NavigationPane.prototype.importAnnotationIconClick = function (args) {\n this.annotationInputElement.click();\n };\n NavigationPane.prototype.importXFdfAnnotationIconClick = function (args) {\n this.annotationXFdfInputElement.click();\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.closeCommentPanelContainer = function () {\n var proxy = null;\n proxy = this;\n var viewerContainer = document.getElementById(this.pdfViewer.element.id + '_viewerContainer');\n var pageContainer = document.getElementById(this.pdfViewer.element.id + '_pageViewContainer');\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentPanel) {\n commentPanel.style.display = 'none';\n if (proxy.commentPanelResizer) {\n proxy.commentPanelResizer.style.display = 'none';\n }\n if (viewerContainer) {\n if (this.pdfViewer.enableRtl) {\n viewerContainer.style.left = proxy.getViewerContainerRight() + 'px';\n }\n else {\n viewerContainer.style.right = proxy.getViewerContainerRight() + 'px';\n }\n // eslint-disable-next-line max-len\n viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - proxy.getViewerContainerLeft() - proxy.getViewerContainerRight()) + 'px';\n pageContainer.style.width = (proxy.pdfViewerBase.viewerContainer.offsetWidth - proxy.getViewerContainerScrollbarWidth()) + 'px';\n }\n if (proxy.pdfViewerBase) {\n proxy.pdfViewerBase.updateZoomValue();\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (Browser.isDevice && !isBlazor()) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'block';\n if (this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.propertyToolbar.element.style.display = 'block';\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {string} option - The option.\n * @returns {void}\n */\n NavigationPane.prototype.createNavigationPaneMobile = function (option) {\n var _this = this;\n this.isNavigationToolbarVisible = true;\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_navigationToolbar', className: 'e-pv-nav-toolbar' });\n this.pdfViewerBase.viewerMainContainer.insertBefore(this.toolbarElement, this.pdfViewerBase.viewerContainer);\n var items;\n if (option === 'search') {\n var searchTemplate = '
    ';\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { template: searchTemplate },\n {\n prefixIcon: 'e-pv-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_search_box-icon',\n click: function () {\n var iconElement = _this.pdfViewerBase.getElement('_search_box-icon').firstElementChild;\n if (iconElement.classList.contains('e-pv-search-close')) {\n _this.enableSearchItems(false);\n }\n _this.pdfViewer.textSearchModule.searchButtonClick(iconElement, _this.searchInput);\n }\n },\n {\n prefixIcon: 'e-pv-prev-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_prev_occurrence',\n click: function (args) {\n _this.pdfViewer.textSearchModule.searchPrevious();\n }\n },\n {\n prefixIcon: 'e-pv-next-search-icon e-pv-icon', id: this.pdfViewer.element.id + '_next_occurrence',\n click: function (args) {\n _this.pdfViewer.textSearchModule.searchNext();\n }\n }\n ];\n }\n else {\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { text: this.pdfViewer.localeObj.getConstant('Bookmarks') }\n ];\n }\n this.toolbar = new Toolbar({ items: items, width: '', height: '', overflowMode: 'Popup' });\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n if (option === 'search') {\n this.initiateSearchBox();\n }\n else {\n this.initiateBookmarks();\n }\n };\n NavigationPane.prototype.initiateSearchBox = function () {\n var _this = this;\n this.searchInput = this.pdfViewerBase.getElement('_search_input');\n this.pdfViewer.textSearchModule.searchBtn = this.pdfViewerBase.getElement('_search_box-icon').firstElementChild;\n this.searchInput.addEventListener('keyup', function (event) {\n _this.enableSearchItems(true);\n var searchString = _this.searchInput.value;\n if (event.which === 13) {\n _this.initiateTextSearch();\n }\n else {\n _this.pdfViewer.textSearchModule.resetVariables();\n }\n });\n this.pdfViewer.textSearchModule.searchInput = this.searchInput;\n this.setSearchInputWidth();\n this.enableSearchItems(false);\n this.searchInput.focus();\n };\n NavigationPane.prototype.enableSearchItems = function (isEnable) {\n if (!isBlazor()) {\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_prev_occurrence').parentElement, isEnable);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_next_occurrence').parentElement, isEnable);\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableSearchItems', isEnable);\n }\n };\n NavigationPane.prototype.initiateBookmarks = function () {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = 'none';\n // eslint-disable-next-line\n var mobileTool = document.querySelectorAll('.e-pv-mobile-annotation-toolbar');\n for (var i = 0; i < mobileTool.length; i++) {\n mobileTool[parseInt(i.toString(), 10)].style.display = 'none';\n }\n }\n // eslint-disable-next-line max-len\n var bookmarkContainer = createElement('div', { id: this.pdfViewer.element.id + '_bookmarks_container', className: 'e-pv-bookmark-container' });\n bookmarkContainer.style.width = '100%';\n bookmarkContainer.style.height = this.pdfViewerBase.viewerContainer.style.height;\n this.pdfViewerBase.getElement('_viewerMainContainer').appendChild(bookmarkContainer);\n this.pdfViewerBase.viewerContainer.style.display = 'none';\n this.isBookmarkListOpen = true;\n this.pdfViewer.bookmarkViewModule.renderBookmarkContentMobile();\n };\n NavigationPane.prototype.initiateTextSearch = function () {\n var inputString = this.searchInput.value;\n this.pdfViewer.textSearchModule.initiateSearch(inputString);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.goBackToToolbar = function () {\n this.isNavigationToolbarVisible = false;\n if (isBlazor() && (!Browser.isDevice || this.pdfViewer.enableDesktopMode) || !isBlazor()) {\n this.pdfViewer.textSearchModule.cancelTextSearch();\n }\n this.searchInput = null;\n if (this.pdfViewer.bookmarkViewModule.childNavigateCount !== 0) {\n this.pdfViewer.bookmarkViewModule.bookmarkList.back();\n this.pdfViewer.bookmarkViewModule.childNavigateCount--;\n }\n else {\n if (this.toolbar != null) {\n this.toolbar.destroy();\n this.toolbar = null;\n }\n var bookmarkContainer = this.pdfViewerBase.getElement('_bookmarks_container');\n if (bookmarkContainer) {\n bookmarkContainer.parentElement.removeChild(bookmarkContainer);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = '';\n }\n }\n if (this.toolbarElement && this.toolbarElement.parentElement != null) {\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n this.pdfViewerBase.viewerContainer.style.display = 'block';\n this.isBookmarkListOpen = false;\n if (!isBlazor()) {\n if (!this.pdfViewer.toolbar.annotationToolbarModule.isMobileAnnotEnabled) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n else {\n this.pdfViewerBase.onWindowResize();\n }\n }\n };\n NavigationPane.prototype.setSearchInputWidth = function () {\n var searchInputParent = this.searchInput.parentElement;\n var padding = window.getComputedStyle(searchInputParent.parentElement, null).getPropertyValue('padding-left');\n if (isBlazor() && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.toolbarElement = this.pdfViewerBase.getElement('_navigationToolbar');\n }\n // eslint-disable-next-line max-len\n var width = this.toolbarElement.clientWidth - this.getParentElementSearchBox('_backward').clientWidth\n - this.getParentElementSearchBox('_search_box-icon').clientWidth - this.getParentElementSearchBox('_prev_occurrence').clientWidth\n - this.getParentElementSearchBox('_next_occurrence').clientWidth - 6;\n if (padding !== '') {\n width = width - (parseFloat(padding) * 2);\n }\n searchInputParent.style.width = width + 'px';\n };\n NavigationPane.prototype.getParentElementSearchBox = function (idString) {\n return this.pdfViewerBase.getElement(idString).parentElement;\n };\n /**\n * @private\n * @param {string} text - The text.\n * @returns {void}\n */\n NavigationPane.prototype.createTooltipMobile = function (text) {\n if (!this.isTooltipCreated) {\n //boolean to prevent again toast creation.\n this.createMobileTooltip(text);\n }\n else {\n if (this.toastObject) {\n this.toastObject.title = text;\n var tooltipElement = this.pdfViewerBase.getElement('_container_tooltip');\n var tooltipChild = tooltipElement.firstElementChild;\n if (tooltipChild) {\n tooltipChild.style.width = 'auto';\n tooltipChild.firstElementChild.firstElementChild.textContent = text;\n }\n else {\n this.isTooltipCreated = false;\n var tooltipElement_1 = this.pdfViewerBase.getElement('_container_tooltip');\n if (this.toastObject) {\n this.toastObject.destroy();\n }\n tooltipElement_1.parentElement.removeChild(tooltipElement_1);\n this.toastObject = null;\n this.createMobileTooltip(text);\n }\n }\n }\n };\n NavigationPane.prototype.createMobileTooltip = function (text) {\n // eslint-disable-next-line max-len\n var tooltipDiv = createElement('div', { className: 'e-pv-container-tooltip', id: this.pdfViewer.element.id + '_container_tooltip' });\n this.pdfViewer.element.appendChild(tooltipDiv);\n // eslint-disable-next-line max-len\n this.toastObject = new Toast({ title: text, target: this.pdfViewer.element, close: this.onTooltipClose.bind(this), position: { X: 0, Y: 0 }, animation: { hide: { duration: 200, effect: 'FadeOut' } } });\n this.toastObject.appendTo(tooltipDiv);\n var y = this.pdfViewer.element.clientHeight * 0.65;\n var x = (this.pdfViewer.element.clientWidth - tooltipDiv.clientWidth) / 2;\n this.isTooltipCreated = true;\n this.toastObject.show({ position: { X: x, Y: y } });\n var tooltipChild = tooltipDiv.firstElementChild;\n if (tooltipChild) {\n tooltipChild.style.width = 'auto';\n }\n };\n NavigationPane.prototype.onTooltipClose = function (args) {\n if (this.pdfViewer.textSearchModule) {\n this.isTooltipCreated = false;\n var tooltipElement = this.pdfViewerBase.getElement('_container_tooltip');\n this.pdfViewer.textSearchModule.isMessagePopupOpened = false;\n if (this.toastObject) {\n this.toastObject.destroy();\n }\n tooltipElement.parentElement.removeChild(tooltipElement);\n this.toastObject = null;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.toolbarResize = function () {\n if (this.searchInput) {\n this.searchInput.style.width = 'auto';\n this.setSearchInputWidth();\n }\n };\n NavigationPane.prototype.createSidebarToolBar = function () {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.thumbnailButton = createElement('button', { id: this.pdfViewer.element.id + '_thumbnail-view', attrs: { 'disabled': 'disabled', 'aria-label': 'Page Thumbnails', 'tabindex': '-1' } });\n this.thumbnailButton.className = 'e-pv-tbar-btn e-pv-thumbnail-view-button e-btn';\n this.thumbnailButton.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var thumbnailButtonSpan = createElement('span', { id: this.pdfViewer.element.id + '_thumbnail-view' + '_icon', className: 'e-pv-thumbnail-view-disable-icon e-pv-icon' });\n this.thumbnailButton.appendChild(thumbnailButtonSpan);\n // eslint-disable-next-line max-len\n var thumbnailTooltip = new Tooltip({ content: this.pdfViewer.localeObj.getConstant('Page Thumbnails'), opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n thumbnailTooltip.appendTo(this.thumbnailButton);\n // eslint-disable-next-line max-len\n this.bookmarkButton = createElement('button', { id: this.pdfViewer.element.id + '_bookmark', attrs: { 'disabled': 'disabled', 'aria-label': 'Bookmarks', 'tabindex': '-1' } });\n this.bookmarkButton.setAttribute('type', 'button');\n this.bookmarkButton.className = 'e-pv-tbar-btn e-pv-bookmark-button e-btn';\n // eslint-disable-next-line max-len\n var buttonSpan = createElement('span', { id: this.pdfViewer.element.id + '_bookmark' + '_icon', className: 'e-pv-bookmark-disable-icon e-pv-icon' });\n this.bookmarkButton.appendChild(buttonSpan);\n // eslint-disable-next-line max-len\n var bookMarkTooltip = new Tooltip({ content: this.pdfViewer.localeObj.getConstant('Bookmarks'), opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n bookMarkTooltip.appendTo(this.bookmarkButton);\n this.sideBarToolbar.appendChild(this.thumbnailButton);\n this.sideBarToolbar.appendChild(this.bookmarkButton);\n }\n else {\n this.thumbnailButton = this.pdfViewer.element.querySelector('.e-pv-thumbnail-view-button');\n this.bookmarkButton = this.pdfViewer.element.querySelector('.e-pv-bookmark-button');\n }\n this.thumbnailButton.addEventListener('click', this.sideToolbarOnClick);\n this.bookmarkButton.addEventListener('click', this.bookmarkButtonOnClick);\n };\n NavigationPane.prototype.onTooltipBeforeOpen = function (args) {\n if (!this.pdfViewer.toolbarSettings.showTooltip) {\n args.cancel = true;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.enableThumbnailButton = function () {\n if (this.thumbnailButton) {\n this.thumbnailButton.removeAttribute('disabled');\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-disable-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.enableBookmarkButton = function () {\n if (this.bookmarkButton) {\n this.bookmarkButton.removeAttribute('disabled');\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-disable-icon');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-icon');\n }\n };\n NavigationPane.prototype.createSidebarTitleCloseButton = function () {\n this.closeDiv = createElement('button', { id: this.pdfViewer.element.id + '_close_btn' });\n this.closeDiv.setAttribute('aria-label', 'close button');\n this.closeDiv.setAttribute('type', 'button');\n this.closeDiv.className = 'e-btn e-pv-tbar-btn e-pv-title-close-div e-btn';\n if (this.pdfViewer.enableRtl) {\n this.closeDiv.style.left = 8 + 'px';\n }\n else {\n this.closeDiv.style.left = this.closeButtonLeft + 'px';\n }\n // eslint-disable-next-line max-len\n var buttonSpan = createElement('span', { id: this.pdfViewer.element.id + '_close' + '_icon', className: 'e-pv-title-close-icon e-pv-icon' });\n this.closeDiv.appendChild(buttonSpan);\n this.sideBarTitleContainer.appendChild(this.closeDiv);\n this.closeDiv.addEventListener('click', this.sideToolbarOnClose);\n };\n NavigationPane.prototype.createResizeIcon = function () {\n // eslint-disable-next-line max-len\n this.resizeIcon = createElement('div', { id: this.pdfViewer.element.id + '_resize', className: 'e-pv-resize-icon e-pv-icon' });\n this.setResizeIconTop();\n this.resizeIcon.style.position = 'absolute';\n this.resizeIcon.addEventListener('click', this.sideToolbarOnClose);\n this.resizeIcon.addEventListener('mouseover', this.resizeIconMouseOver);\n this.sideBarResizer.appendChild(this.resizeIcon);\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setResizeIconTop = function () {\n // eslint-disable-next-line max-len\n if (this.sideBarToolbar && this.sideBarToolbar.clientHeight && this.resizeIcon.style.top === '') {\n this.resizeIcon.style.top = (this.sideBarToolbar.clientHeight) / 2 + 'px';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setCommentPanelResizeIconTop = function () {\n // eslint-disable-next-line max-len\n if (this.commentPanelContainer && this.commentPanelContainer.clientHeight && this.commentPanelResizeIcon && this.commentPanelResizeIcon.style.top === '') {\n this.commentPanelResizeIcon.style.top = (this.commentPanelContainer.clientHeight) / 2 + 'px';\n }\n };\n Object.defineProperty(NavigationPane.prototype, \"outerContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (!this.mainContainerWidth) {\n this.mainContainerWidth = this.pdfViewerBase.mainContainer.clientWidth;\n }\n return this.mainContainerWidth;\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerScrollbarWidth = function () {\n // eslint-disable-next-line max-len\n return (this.pdfViewerBase.viewerContainer.offsetWidth + this.pdfViewerBase.viewerContainer.offsetLeft) - (this.pdfViewerBase.viewerContainer.clientWidth + this.pdfViewerBase.viewerContainer.offsetLeft);\n };\n Object.defineProperty(NavigationPane.prototype, \"sideToolbarWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.sideBarToolbar) {\n return this.sideBarToolbar.clientWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigationPane.prototype, \"sideBarContentContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.sideBarContentContainer) {\n return this.sideBarContentContainer.clientWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(NavigationPane.prototype, \"commentPanelContainerWidth\", {\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n get: function () {\n if (this.commentPanelContainer) {\n return this.commentPanelContainer.offsetWidth;\n }\n else {\n return 0;\n }\n },\n enumerable: true,\n configurable: true\n });\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.updateViewerContainerOnClose = function () {\n var proxy = null;\n proxy = this;\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.display = 'none';\n if (this.pdfViewer.enableRtl) {\n proxy.pdfViewerBase.viewerContainer.style.right = (proxy.sideToolbarWidth) + 'px';\n }\n else {\n proxy.pdfViewerBase.viewerContainer.style.left = (proxy.sideToolbarWidth) + 'px';\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - proxy.sideToolbarWidth - proxy.getViewerContainerRight()) + 'px';\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.pageContainer.style.width = (proxy.pdfViewerBase.viewerContainer.offsetWidth - proxy.getViewerContainerScrollbarWidth()) + 'px';\n if (this.restrictUpdateZoomValue) {\n proxy.pdfViewerBase.updateZoomValue();\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.updateViewerContainerOnExpand = function () {\n var proxy = null;\n proxy = this;\n if (proxy.sideBarContentContainer) {\n proxy.sideBarContentContainer.style.display = 'block';\n if (this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.right = proxy.getViewerContainerLeft() + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.left = proxy.getViewerContainerLeft() + 'px';\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.viewerContainer.style.width = (proxy.pdfViewer.element.clientWidth - this.getViewerContainerLeft() - this.getViewerContainerRight()) + 'px';\n proxy.pdfViewerBase.pageContainer.style.width = proxy.pdfViewerBase.viewerContainer.clientWidth + 'px';\n proxy.pdfViewerBase.updateZoomValue();\n if (proxy.pdfViewer.enableThumbnail) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.pdfViewerBase.currentPageNumber - 1);\n }\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerLeft = function () {\n if (this.sideToolbarWidth) {\n return (this.sideToolbarWidth + this.sideBarContentContainerWidth);\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerContainerRight = function () {\n if (this.commentPanelResizer) {\n return (this.commentPanelContainerWidth + this.commentPanelResizer.clientWidth);\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @returns {number} - Returns the number.\n */\n NavigationPane.prototype.getViewerMainContainerWidth = function () {\n return this.pdfViewer.element.clientWidth - this.sideToolbarWidth;\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.setThumbnailSelectionIconTheme = function () {\n if (this.thumbnailButton) {\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-selection-icon');\n this.thumbnailButton.classList.add('e-pv-thumbnail-view-button-selection');\n }\n };\n NavigationPane.prototype.removeThumbnailSelectionIconTheme = function () {\n if (this.thumbnailButton && this.thumbnailButton.children[0]) {\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-selection-icon');\n this.thumbnailButton.classList.remove('e-pv-thumbnail-view-button-selection');\n }\n };\n NavigationPane.prototype.resetThumbnailIcon = function () {\n if (this.thumbnailButton && this.thumbnailButton.children[0]) {\n this.thumbnailButton.children[0].classList.remove('e-pv-thumbnail-view-icon');\n this.thumbnailButton.children[0].classList.add('e-pv-thumbnail-view-disable-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.resetThumbnailView = function () {\n if (this.sideBarContentContainer) {\n this.sideBarContentContainer.style.display = 'none';\n if (this.pdfViewer.enableRtl) {\n this.pdfViewerBase.viewerContainer.style.left = 1 + 'px';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.left = (this.sideToolbarWidth) + 'px';\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.width = (this.pdfViewer.element.clientWidth - this.sideToolbarWidth - this.getViewerContainerRight()) + 'px';\n if (this.pdfViewerBase.pageContainer) {\n this.pdfViewerBase.pageContainer.style.width = this.pdfViewerBase.viewerContainer.clientWidth + 'px';\n }\n this.thumbnailButton.setAttribute('disabled', 'disabled');\n this.removeThumbnailSelectionIconTheme();\n this.resetThumbnailIcon();\n }\n };\n NavigationPane.prototype.setBookmarkSelectionIconTheme = function () {\n if (this.bookmarkButton) {\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-icon');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-selection-icon');\n this.bookmarkButton.classList.add('e-pv-bookmark-button-selection');\n }\n };\n NavigationPane.prototype.removeBookmarkSelectionIconTheme = function () {\n if (this.bookmarkButton && this.bookmarkButton.children[0]) {\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-icon');\n this.bookmarkButton.children[0].classList.remove('e-pv-bookmark-selection-icon');\n this.bookmarkButton.classList.remove('e-pv-bookmark-button-selection');\n }\n };\n NavigationPane.prototype.sideToolbarOnMouseup = function (event) {\n if (event.target === this.sideBarToolbar) {\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n NavigationPane.prototype.sideBarTitleOnMouseup = function (event) {\n this.pdfViewerBase.focusViewerContainer();\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.openBookmarkcontentInitially = function () {\n var proxy = null;\n proxy = this;\n if (document.getElementById(this.pdfViewer.element.id + '_thumbnail_view')) {\n document.getElementById(this.pdfViewer.element.id + '_thumbnail_view').style.display = 'none';\n }\n this.removeThumbnailSelectionIconTheme();\n this.sideBarTitle.textContent = this.pdfViewer.localeObj.getConstant('Bookmarks');\n this.sideBarContent.setAttribute('aria-label', 'Bookmark View Panel');\n this.pdfViewer.bookmarkViewModule.renderBookmarkcontent();\n if (this.sideBarContentContainer) {\n if (proxy.sideBarContentContainer.style.display !== 'none') {\n if (this.isThumbnailOpen) {\n this.setBookmarkSelectionIconTheme();\n this.isBookmarkOpen = true;\n this.updateViewerContainerOnExpand();\n }\n else {\n this.removeBookmarkSelectionIconTheme();\n this.isBookmarkOpen = false;\n this.updateViewerContainerOnClose();\n }\n }\n else {\n this.sideBarContent.focus();\n this.setBookmarkSelectionIconTheme();\n this.isBookmarkOpen = true;\n this.updateViewerContainerOnExpand();\n }\n }\n this.isThumbnailOpen = false;\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.disableBookmarkButton = function () {\n if (this.sideBarContentContainer && this.bookmarkButton && this.bookmarkButton.children[0]) {\n this.sideBarContentContainer.style.display = 'none';\n this.bookmarkButton.setAttribute('disabled', 'disabled');\n this.bookmarkButton.children[0].classList.add('e-pv-bookmark-disable-icon');\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.clear = function () {\n if (!Browser.isDevice) {\n this.removeBookmarkSelectionIconTheme();\n this.removeThumbnailSelectionIconTheme();\n this.closeCommentPanelContainer();\n }\n if (this.commentsContentContainer) {\n this.commentsContentContainer.innerHTML = '';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n NavigationPane.prototype.destroy = function () {\n var bookmarkButtonInstance = this.bookmarkButton;\n var thumbnailButtonInstance = this.thumbnailButton;\n if (bookmarkButtonInstance && bookmarkButtonInstance.ej2_instances && bookmarkButtonInstance.ej2_instances.length > 0) {\n bookmarkButtonInstance.ej2_instances[0].destroy();\n }\n if (thumbnailButtonInstance && thumbnailButtonInstance.ej2_instances && thumbnailButtonInstance.ej2_instances.length > 0) {\n thumbnailButtonInstance.ej2_instances[0].destroy();\n }\n if (this.annotationMenuObj) {\n var annotationMenuElement = this.annotationMenuObj.element;\n annotationMenuElement && annotationMenuElement.ej2_instances && annotationMenuElement.ej2_instances.length > 0 ? this.annotationMenuObj.destroy() : null;\n }\n };\n /**\n * @returns {string} - Returns the string.\n */\n NavigationPane.prototype.getModuleName = function () {\n return 'NavigationPane';\n };\n return NavigationPane;\n}());\n\n/**\n * ContextMenu module is used to handle the context menus used in the control.\n *\n * @hidden\n */\nvar BlazorContextMenu = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the constructor of blazorcontext\n *\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function BlazorContextMenu(pdfViewer, pdfViewerBase) {\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * Create the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.createContextMenu = function () {\n var htmlCollection = document.getElementsByClassName(this.pdfViewer.element.id + '_context_menu');\n if (htmlCollection) {\n this.contextMenuElement = htmlCollection[0];\n if (this.contextMenuElement.children && this.contextMenuElement.children.length > 0) {\n var htmlElement = this.contextMenuElement.children[0];\n htmlElement.className = htmlElement.className + ' ' + 'e-pv-context-menu';\n }\n }\n };\n /**\n * open the context menu.\n * @param {number} top - The top.\n * @param {number} left - The left.\n * @param {HTMLElement} target - The target.\n * @returns {void}\n */\n BlazorContextMenu.prototype.open = function (top, left, target) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenContextMenu', top, left);\n };\n /**\n * close the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.close = function () {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('CloseContextMenu');\n };\n /**\n * destroy the context menu.\n * @returns {void}\n */\n BlazorContextMenu.prototype.destroy = function () {\n this.previousAction = '';\n this.contextMenuElement = null;\n };\n // eslint-disable-next-line\n BlazorContextMenu.prototype.OnItemSelected = function (selectedMenu) {\n if (typeof selectedMenu === 'string') {\n this.pdfViewerBase.OnItemSelected(selectedMenu);\n }\n else {\n this.pdfViewerBase.OnItemSelected(selectedMenu[0]);\n }\n };\n return BlazorContextMenu;\n}());\n\nvar globalTimeOut = {};\nvar spinTemplate = null;\nvar spinCSSClass = null;\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_TAILWIND = 'e-spin-tailwind';\nvar CLS_Fluent = 'e-spin-fluent';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @private\n * @param {string} action - The action.\n * @param {CreateArgs} options - The options\n * @param {string} target - The target\n * @param {string} type - the type\n * @returns {void}\n */\nfunction Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n // eslint-disable-next-line\n var element = document.querySelector(options.target);\n // eslint-disable-next-line\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n * @private\n * @param {SpinnerArgs} args - The SpinnerArgs.\n * @param {createElementParams} internalCreateElement - The internalCreateElement\n * @returns {void}\n */\nfunction createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = createSpinnerContainer(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.innerWrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} label - The label.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {HTMLElement} - Returns HTMLElement.\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.textContent = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n matCalculateAttributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n matCalculateAttributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n createMaterialElement(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n matCalculateAttributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n createFabricElement(container, uniqueID, CLS_TAILWIND, makeElement);\n fbCalculateAttributes(radius, container, CLS_TAILWIND);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createFluentSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n createFabricElement(container, uniqueID, CLS_Fluent, makeElement);\n fbCalculateAttributes(radius, container, CLS_Fluent);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {string} uniqueID - The uniqueID.\n * @param {number} radius - The radius.\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n createFabricElement(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fbCalculateAttributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n createFabricElement(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fbCalculateAttributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n * @param {HTMLElement} container - The container\n * @returns {string} - Returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n * @param {string} theme - The theme.\n * @param {HTMLElement} container - The HTMLElement.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @param {number} radius - The radius.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = randomGenerator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n createBootstrapElement(innerContainer, uniqueID, makeElement);\n bootCalculateAttributes(innerContainer, radius);\n}\n/**\n * @param {HTMLElement} innerContainer - The HTMLElement.\n * @param {string} uniqueID - The uniqueID.\n * @param {createElementParams} makeElement - The createElementParams.\n * @returns {void}\n */\nfunction createBootstrapElement(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @param {number} radius - The radius.\n * @returns {void}\n */\nfunction bootCalculateAttributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n svg.style.width = svg.style.height = radius + 'px';\n var x = 0;\n var y = 0;\n var rad = 24;\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n * @param {number} begin - The begin.\n * @param {number} stop - The stop.\n * @returns {number[]} - Returns the number.\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n var increment = false;\n var count = 1;\n formSeries(start);\n /**\n * @param {number} i - The number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n * @param {SVGCircleElement} circle - The circle.\n * @param {number} start - The start.\n * @param {number} end - The end.\n * @param {number[]} series - The series\n * @param {string} id - The id.\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n bootAnimate(start);\n /**\n * @param {number} radius - The radisu.\n * @returns {void}\n */\n function bootAnimate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n globalTimeOut[\"\" + id].timeOut = setTimeout(bootAnimate.bind(null, series[parseInt(count.toString(), 10)]), 18);\n }\n }\n }\n}\n/**\n * @param {HTMLElement} container - The container.\n * @param {string} template - The template.\n * @param {string} cssClass - The cssClass.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n * @param {string | number} width - The width\n * @param {string} theme - The theme.\n * @returns {number} - Returns the number.\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n * @param {string} id - The id.\n * @param {number} radius - The radius.\n * @param {number} count - The count.\n * @param {number} previousId - The previousId.\n * @returns {GlobalVariables} - Returns GlobalVariables.\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - Returns string.\n */\nfunction randomGenerator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n * @param {HTMLElement} innerCon - The innerContainer.\n * @param {string} uniqueID - The uniqueID.\n * @param {string} themeClass - The themeClass\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {void}\n */\nfunction createFabricElement(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n * @param {HTMLElement} innerContainer - The innerContainer.\n * @param {string} uniqueID - The uniqueID.\n * @param {createElementParams} makeElement - The makeElement.\n * @param {string} cls - The class\n * @returns {void}\n */\nfunction createMaterialElement(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n * @param {HTMLElement} target - The target.\n * @param {createElementParams} makeElement - The makeElement.\n * @returns {HTMLElement;HTMLElement} - Retruns the HTMLElement.\n */\nfunction createSpinnerContainer(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n var spinnerInnerContainer = makeElement('div', {});\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n return { wrap: spinnerContainer, innerWrap: spinnerInnerContainer };\n}\n/**\n * @param {SpinnerInfo} spinnerInfo - The SpinnerInfo.\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n * @param {number} start - The start.\n * @param {number} end - The end.\n * @param {Function} easing - The easing.\n * @param {number} duration - The duration.\n * @param {number} count - The count.\n * @param {number} max - The max.\n * @param {SpinnerInfo} spinnerInfo - The SpinnerInfo.\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n matAnimation(spinnerInfo);\n /**\n * @param {SpinnerInfo} spinnerInfo - The SpinnerInfo.\n * @returns {void}\n */\n function matAnimation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(matAnimation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n * @param {number} value - The value.\n * @param {HTMLElement} container - The container.\n * @returns {void}\n */\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\n/**\n * @param {number} radius - The radius.\n * @param {HTMLElement} container - The container.\n * @param {string} type - The type.\n * @param {string} cls - The class\n * @returns {void}\n */\nfunction matCalculateAttributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n * @param {string} value - The value.\n * @returns {number} - Returns number.\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n * @param {number} diameter - The diameter.\n * @param {number} strokeSize - The strokeSize.\n * @returns {string} - Returns string.\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n * @param {number} diameter - The diameter.\n * @returns {number} - Returns number.\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n * @param {number} diameter - The diameter.\n * @param {number} strokeSize - The strokeSize.\n * @param {number} value - The value.\n * @param {number} max - The max.\n * @returns {number} - Returns number.\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n * @param {number} current - The current.\n * @param {number} start - The start.\n * @param {number} change - The change.\n * @param {number} duration - The duration\n * @returns {number} - Returns number.\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n * @param {number} radius - The radius.\n * @param {HTMLElement} innerConainer - The innerConainer.\n * @param {string} trgClass - The trgClass.\n * @returns {void}\n */\nfunction fbCalculateAttributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n var startArc = 315;\n var endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n * @param {number} centerX - The centerX.\n * @param {number} centerY - The centerY.\n * @param {number} radius - The radius.\n * @param {number} angle - The angle.\n * @returns {number;number} - Returns number.\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n * @param {number} x - The x.\n * @param {number} y - The y.\n * @param {number} radius - The radius.\n * @param {number} startArc - The startArc.\n * @param {number} endArc - The endArc.\n * @returns {string} - Returns string.\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n * @param {number} x - The x.\n * @param {number} y - The y.\n * @param {number} radius - The radius.\n * @returns {void}\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n * @private\n * @param {HTMLElement} container - The container.\n * @returns {void}\n */\nfunction showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n * @param {HTMLElement} container - The container.\n * @param {boolean} isHide - To show or hide.\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n // eslint-disable-next-line max-len\n var spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n * @private\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n */\nfunction hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n * @private\n * @param {SetSpinnerArgs} args - The args.\n * @param {createElementParams} internalCreateElement - The internalCreateElement.\n * @returns {void}\n */\nfunction setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[parseInt(index.toString(), 10)], args.type, args.cssClass, makeElement);\n }\n}\n/**\n * @param {string} template - The template.\n * @param {HTMLElement} container - The container.\n * @param {string} theme - The theme.\n * @param {string} cssClass - The cssClass.\n * @param {createElementParams} makeEle - The makeEle.\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\n/**\n * @param {HTMLElement} container - The container.\n * @param {string} theme - The theme.\n * @param {string} cssClass - The cssClass.\n * @param {createElementParams} makeEle - The makeEle.\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n\n/**\n * The `BlazorUIAdaptor` module is used to handle the UI update of native components.\n * @hidden\n */\nvar BlazorUiAdaptor = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the constructor of blazorUIadapater.\n *\n * @param { PdfViewer } pdfviewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function BlazorUiAdaptor(pdfviewer, pdfViewerBase) {\n this.pdfViewer = null;\n this.pdfViewerBase = null;\n /**\n * @private\n */\n this.totalPageElement = null;\n this.currentPageBoxElementContainer = null;\n this.currentPageBoxElement = null;\n this.firstPageElement = null;\n this.previousPageElement = null;\n this.nextPageElement = null;\n this.lastPageElement = null;\n this.zommOutElement = null;\n this.zoomInElement = null;\n this.zoomDropDownElement = null;\n this.selectToolElement = null;\n this.handToolElement = null;\n this.undoElement = null;\n this.redoElement = null;\n this.commentElement = null;\n this.submitFormButton = null;\n this.searchElement = null;\n this.annotationElement = null;\n this.printElement = null;\n this.downloadElement = null;\n this.highlightElement = null;\n this.underlineElement = null;\n this.strikeThroughElement = null;\n this.shapeElement = null;\n this.calibrateElement = null;\n this.stampElement = null;\n this.freeTextElement = null;\n this.signatureElement = null;\n this.inkElement = null;\n this.annotationFontSizeInputElement = null;\n this.annotationFontFamilyInputElement = null;\n this.annotationColorElement = null;\n this.annotationStrokeColorElement = null;\n this.annotationThicknessElement = null;\n this.annotationOpacityElement = null;\n this.annotationFontColorElement = null;\n this.annotationFontFamilyElement = null;\n this.annotationFontSizeElement = null;\n this.annotationTextAlignElement = null;\n this.annotationTextColorElement = null;\n this.annotationTextPropertiesElement = null;\n this.annotationDeleteElement = null;\n this.annotationCloseElement = null;\n this.annotationCommentPanelElement = null;\n this.mobileToolbarContainerElement = null;\n this.mobileSearchPreviousOccurenceElement = null;\n this.mobileSearchNextOccurenceElement = null;\n this.cssClass = 'e-overlay';\n this.disableClass = ' e-overlay';\n this.editAnnotationButtonElement = null;\n this.pdfViewer = pdfviewer;\n this.pdfViewerBase = pdfViewerBase;\n this.findToolbarElements();\n }\n BlazorUiAdaptor.prototype.findToolbarElements = function () {\n this.totalPageElement = this.pdfViewerBase.getElement('_totalPage').children[0];\n this.currentPageBoxElementContainer = this.pdfViewerBase.getElement('_currentPageInput');\n this.currentPageBoxElement = this.pdfViewerBase.getElement('_currentPageInput').children[0].children[0];\n this.firstPageElement = this.pdfViewerBase.getElement('_firstPage');\n this.previousPageElement = this.pdfViewerBase.getElement('_previousPage');\n this.nextPageElement = this.pdfViewerBase.getElement('_nextPage');\n this.lastPageElement = this.pdfViewerBase.getElement('_lastPage');\n this.zommOutElement = this.pdfViewerBase.getElement('_zoomOut');\n this.zoomInElement = this.pdfViewerBase.getElement('_zoomIn');\n this.zoomDropDownElement = this.pdfViewerBase.getElement('_zoomDropDown');\n this.selectToolElement = this.pdfViewerBase.getElement('_selectTool');\n this.handToolElement = this.pdfViewerBase.getElement('_handTool');\n this.undoElement = this.pdfViewerBase.getElement('_undo');\n this.redoElement = this.pdfViewerBase.getElement('_redo');\n this.commentElement = this.pdfViewerBase.getElement('_comment');\n this.submitFormButton = this.pdfViewerBase.getElement('_submitFormButton');\n this.searchElement = this.pdfViewerBase.getElement('_search');\n this.annotationElement = this.pdfViewerBase.getElement('_annotation');\n this.editAnnotationButtonElement = this.annotationElement.children[0];\n this.editAnnotationButtonElement.classList.add('e-pv-tbar-btn');\n this.printElement = this.pdfViewerBase.getElement('_print');\n this.downloadElement = this.pdfViewerBase.getElement('_download');\n this.highlightElement = this.pdfViewerBase.getElement('_highLight');\n this.underlineElement = this.pdfViewerBase.getElement('_underline');\n this.strikeThroughElement = this.pdfViewerBase.getElement('_strikethrough');\n this.shapeElement = this.pdfViewerBase.getElement('_annotation_shapes');\n this.calibrateElement = this.pdfViewerBase.getElement('_annotation_calibrate');\n this.stampElement = this.pdfViewerBase.getElement('_annotation_stamp');\n this.freeTextElement = this.pdfViewerBase.getElement('_annotation_freeTextEdit');\n this.signatureElement = this.pdfViewerBase.getElement('_annotation_signature');\n this.inkElement = this.pdfViewerBase.getElement('_annotation_ink');\n // tslint:disable-next-line:max-line-length\n this.annotationFontSizeInputElement = this.pdfViewerBase.getElement('_annotation_fontsize').children[0].children[0];\n // tslint:disable-next-line:max-line-length\n this.annotationFontFamilyInputElement = this.pdfViewerBase.getElement('_annotation_fontname').children[0].children[0];\n this.annotationColorElement = this.pdfViewerBase.getElement('_annotation_color');\n this.annotationStrokeColorElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.annotationThicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n this.annotationOpacityElement = this.pdfViewerBase.getElement('_annotation_opacity');\n this.annotationFontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.annotationFontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.annotationFontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.annotationTextAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.annotationTextColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.annotationTextPropertiesElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.annotationDeleteElement = this.pdfViewerBase.getElement('_annotation_delete');\n this.annotationCommentPanelElement = this.pdfViewerBase.getElement('_annotation_commentPanel');\n this.annotationCloseElement = this.pdfViewerBase.getElement('_annotation_close');\n this.mobileToolbarContainerElement = this.pdfViewerBase.getElement('_mobileToolbarContainer');\n this.mobileSearchPreviousOccurenceElement = this.pdfViewerBase.getElement('_prev_occurrence');\n this.mobileSearchNextOccurenceElement = this.pdfViewerBase.getElement('_next_occurrence');\n };\n /**\n * Update the total page.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateTotalPage = function () {\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n };\n /**\n * Update current page.\n * @param {number} pageNumber - The pageNumber.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateCurrentPage = function (pageNumber) {\n this.currentPageBoxElement.value = pageNumber.toString();\n };\n /**\n * Load the PDF document.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.loadDocument = function () {\n if (this.pdfViewer.enableNavigation) {\n this.currentPageBoxElementContainer.classList.remove(this.cssClass);\n this.currentPageBoxElement.value = '1';\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n if (this.pdfViewerBase.pageCount === 1) {\n if (!this.nextPageElement.classList.contains(this.cssClass)) {\n this.nextPageElement.className += this.disableClass;\n }\n if (!this.lastPageElement.classList.contains(this.cssClass)) {\n this.lastPageElement.className += this.disableClass;\n }\n }\n }\n if (this.pdfViewer.enableMagnification) {\n this.zoomInElement.classList.remove(this.cssClass);\n this.zommOutElement.classList.remove(this.cssClass);\n this.zoomDropDownElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableTextSelection) {\n this.selectToolElement.classList.remove(this.cssClass);\n this.selectItem(this.pdfViewer.toolbar.SelectToolElement);\n }\n this.handToolElement.classList.remove(this.cssClass);\n if (this.pdfViewer.enableStickyNotesAnnotation) {\n this.commentElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableTextSearch) {\n this.searchElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.isFormFieldDocument) {\n this.submitFormButton.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableAnnotationToolbar) {\n this.annotationElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enablePrint) {\n this.printElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableDownload) {\n this.downloadElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableTextMarkupAnnotation) {\n this.highlightElement.classList.remove(this.cssClass);\n this.underlineElement.classList.remove(this.cssClass);\n this.strikeThroughElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableShapeAnnotation) {\n this.shapeElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableMeasureAnnotation) {\n this.calibrateElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableAnnotation && this.pdfViewer.enableStampAnnotations) {\n this.stampElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableFreeText) {\n this.freeTextElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableHandwrittenSignature) {\n this.signatureElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableInkAnnotation) {\n this.inkElement.classList.remove(this.cssClass);\n }\n if (this.pdfViewer.enableCommentPanel) {\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n };\n BlazorUiAdaptor.prototype.selectItem = function (element) {\n if (element) {\n element.classList.add(\"e-pv-select\");\n }\n };\n BlazorUiAdaptor.prototype.deselectItem = function (element) {\n if (element) {\n element.classList.remove(\"e-pv-select\");\n }\n };\n BlazorUiAdaptor.prototype.showAnnotationToolbar = function (isToolbarVisible) {\n this.pdfViewer.toolbar.annotationToolbarModule.adjustViewer(isToolbarVisible[0]);\n if (isToolbarVisible[0]) {\n this.pdfViewer.toolbar.selectItem(this.editAnnotationButtonElement);\n }\n else {\n this.pdfViewer.toolbar.deSelectItem(this.editAnnotationButtonElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n BlazorUiAdaptor.prototype.closeAnnotationToolbar = function () {\n this.pdfViewer.toolbar.annotationToolbarModule.adjustViewer(false);\n this.pdfViewer.toolbar.deSelectItem(this.editAnnotationButtonElement);\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n };\n /**\n * Reset the toolbar.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.resetToolbar = function () {\n if (this.pdfViewer.enableToolbar) {\n this.currentPageBoxElement.value = '0';\n this.totalPageElement.textContent = this.pdfViewer.localeObj.getConstant('of') + '0';\n if (!this.isEnabled(this.currentPageBoxElementContainer)) {\n this.currentPageBoxElementContainer.className += this.disableClass;\n }\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.nextPageElement)) {\n this.nextPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.lastPageElement)) {\n this.lastPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zoomInElement)) {\n this.zoomInElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zommOutElement)) {\n this.zommOutElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.zoomDropDownElement)) {\n this.zoomDropDownElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.selectToolElement)) {\n this.selectToolElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.handToolElement)) {\n this.handToolElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.commentElement)) {\n this.commentElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.searchElement)) {\n this.searchElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.submitFormButton)) {\n this.submitFormButton.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationElement)) {\n this.annotationElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.printElement)) {\n this.printElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.downloadElement)) {\n this.downloadElement.className += this.disableClass;\n }\n }\n if (this.pdfViewer.enableAnnotationToolbar) {\n if (!this.isEnabled(this.highlightElement)) {\n this.highlightElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.underlineElement)) {\n this.underlineElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.strikeThroughElement)) {\n this.strikeThroughElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.shapeElement)) {\n this.shapeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.calibrateElement)) {\n this.calibrateElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.stampElement)) {\n this.stampElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.freeTextElement)) {\n this.freeTextElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.signatureElement)) {\n this.signatureElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.inkElement)) {\n this.inkElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextColorElement)) {\n this.annotationTextColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n };\n /**\n * When annotation selection changed.\n * @param {boolean} currentPageNumber - The current page number.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.EnableDeleteOption = function (isEnable) {\n if (this.annotationDeleteElement !== null) {\n if (isEnable) {\n this.annotationDeleteElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * when the page changes.\n * @param {number} currentPageNumber - The current page number.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.pageChanged = function (currentPageNumber) {\n if (this.pdfViewer.enableNavigation) {\n this.currentPageBoxElement.value = currentPageNumber.toString();\n }\n if (currentPageNumber === this.pdfViewer.pageCount) {\n if (!this.isEnabled(this.nextPageElement)) {\n this.nextPageElement.className += this.disableClass;\n }\n this.previousPageElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.lastPageElement)) {\n this.lastPageElement.className += this.disableClass;\n }\n this.firstPageElement.classList.remove(this.cssClass);\n }\n if (currentPageNumber < this.pdfViewer.pageCount && currentPageNumber !== 1) {\n this.firstPageElement.classList.remove(this.cssClass);\n this.previousPageElement.classList.remove(this.cssClass);\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n }\n if (currentPageNumber === 1) {\n this.nextPageElement.classList.remove(this.cssClass);\n this.lastPageElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.firstPageElement)) {\n this.firstPageElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.previousPageElement)) {\n this.previousPageElement.className += this.disableClass;\n }\n }\n };\n /**\n * @param {string} item - The current item.\n * @param {boolean} enable - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateUndoRedoButton = function (item, enable) {\n if (item === 'undo') {\n if (enable) {\n this.undoElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n }\n }\n if (item === 'redo') {\n if (enable) {\n this.redoElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.disableUndoRedoButton = function () {\n if (!this.isEnabled(this.undoElement)) {\n this.undoElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.redoElement)) {\n this.redoElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableTextMarkupAnnotationPropertiesTools = function (isEnable) {\n if (isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableAnnotationPropertiesTool = function (isEnable, isProperitiesChange) {\n if (isProperitiesChange) {\n if (isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (this.pdfViewer.enableShapeLabel) {\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n else {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n }\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableFreeTextAnnotationPropertiesTools = function (isEnable, isProperitiesChange) {\n if (isProperitiesChange && isEnable) {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n this.annotationTextAlignElement.classList.remove(this.cssClass);\n this.annotationTextPropertiesElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isPropertiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableStampAnnotationPropertiesTools = function (isEnable, isPropertiesChange) {\n if (isEnable) {\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @param {boolean} isEnable - To enable the item or not.\n * @param {boolean} isProperitiesChange - To enable the item or not.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableSignaturePropertiesTools = function (isEnable, isProperitiesChange) {\n if (isEnable) {\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationCommentPanelElement)) {\n this.annotationCommentPanelElement.className += this.disableClass;\n }\n }\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationAdd = function () {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n };\n /**\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationUnSelect = function () {\n if (!this.isEnabled(this.annotationColorElement)) {\n this.annotationColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationOpacityElement)) {\n this.annotationOpacityElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationDeleteElement)) {\n this.annotationDeleteElement.className += this.disableClass;\n }\n };\n /**\n * @param {string} annotationType - The annotationType.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.annotationSelect = function (annotationType) {\n if (annotationType === 'FreeText') {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n this.annotationFontColorElement.classList.remove(this.cssClass);\n this.annotationFontFamilyElement.classList.remove(this.cssClass);\n this.annotationFontSizeElement.classList.remove(this.cssClass);\n this.annotationTextAlignElement.classList.remove(this.cssClass);\n this.annotationTextPropertiesElement.classList.remove(this.cssClass);\n }\n if (annotationType === 'Shape' || annotationType === 'Measure') {\n this.annotationColorElement.classList.remove(this.cssClass);\n this.annotationStrokeColorElement.classList.remove(this.cssClass);\n this.annotationThicknessElement.classList.remove(this.cssClass);\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n if (annotationType === 'TextMarkup') {\n this.annotationColorElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationStrokeColorElement)) {\n this.annotationStrokeColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationThicknessElement)) {\n this.annotationThicknessElement.className += this.disableClass;\n }\n this.annotationOpacityElement.classList.remove(this.cssClass);\n if (!this.isEnabled(this.annotationFontColorElement)) {\n this.annotationFontColorElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontFamilyElement)) {\n this.annotationFontFamilyElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationFontSizeElement)) {\n this.annotationFontSizeElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextAlignElement)) {\n this.annotationTextAlignElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.annotationTextPropertiesElement)) {\n this.annotationTextPropertiesElement.className += this.disableClass;\n }\n }\n this.annotationDeleteElement.classList.remove(this.cssClass);\n this.annotationCommentPanelElement.classList.remove(this.cssClass);\n };\n /**\n * @param {string} fontFamily - The fontFamily.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateFontFamilyInIcon = function (fontFamily) {\n this.annotationFontFamilyInputElement.value = fontFamily;\n };\n /**\n * @param {number} fontSize - The fontSize.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.updateFontSizeInIcon = function (fontSize) {\n var fontValue = fontSize.toString() + 'px';\n this.annotationFontSizeInputElement.value = fontValue;\n };\n /**\n * @param {boolean} isEnable - To enable or disable.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.enableSearchItems = function (isEnable) {\n if (isEnable) {\n this.mobileSearchPreviousOccurenceElement.classList.remove(this.cssClass);\n this.mobileSearchNextOccurenceElement.classList.remove(this.cssClass);\n }\n else {\n if (!this.isEnabled(this.mobileSearchPreviousOccurenceElement)) {\n this.mobileSearchPreviousOccurenceElement.className += this.disableClass;\n }\n if (!this.isEnabled(this.mobileSearchNextOccurenceElement)) {\n this.mobileSearchNextOccurenceElement.className += this.disableClass;\n }\n }\n };\n /**\n * @param {boolean} isTapHidden - To enable or disable.\n * @returns {void}\n */\n BlazorUiAdaptor.prototype.tapOnMobileDevice = function (isTapHidden) {\n if (this.mobileToolbarContainerElement != null) {\n if (isTapHidden) {\n this.mobileToolbarContainerElement.style.display = 'none';\n }\n else {\n this.mobileToolbarContainerElement.style.display = 'block';\n }\n }\n };\n /**\n * @param {HTMLElement} element - The HTMLElement.\n * @returns {boolean} - Returns trur or false.\n */\n BlazorUiAdaptor.prototype.isEnabled = function (element) {\n return element.classList.contains(this.cssClass);\n };\n return BlazorUiAdaptor;\n}());\n\nvar __awaiter$1 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(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};\n/**\n * The `PdfViewerBase` module is used to handle base methods of PDF viewer.\n *\n * @hidden\n */\nvar PdfViewerBase = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the constructor of PDFViewerBase\n *\n * @param { PdfViewer } viewer - Specified PdfViewer class.\n */\n function PdfViewerBase(viewer) {\n var _this = this;\n /**\n * @private\n */\n this.pageSize = [];\n /**\n * @private\n */\n this.pageCount = 0;\n /**\n * @private\n */\n this.isReRenderRequired = true;\n /**\n * @private\n */\n this.currentPageNumber = 0;\n /**\n * @private\n */\n this.activeElements = new ActiveElements();\n /**\n * @private\n */\n this.mouseDownEvent = null;\n /**\n * @private\n */\n this.isDocumentLoaded = false;\n /**\n * @private\n */\n this.renderedPagesList = [];\n /**\n * @private\n */\n this.pageGap = 8;\n /**\n * @private\n */\n this.signatureAdded = false;\n /**\n * @private\n */\n this.isFreeTextSelected = false;\n this.pageLeft = 5;\n this.sessionLimit = 1000;\n this.pageStopValue = 300;\n /**\n * @private\n */\n this.toolbarHeight = 56;\n this.pageLimit = 0;\n this.previousPage = 0;\n this.isViewerMouseDown = false;\n this.isViewerMouseWheel = false;\n this.scrollPosition = 0;\n this.sessionStorage = [];\n /**\n * @private\n */\n this.isLoadedFormFieldAdded = false;\n this.pointerCount = 0;\n this.pointersForTouch = [];\n /**\n * @private\n */\n this.isPasswordAvailable = false;\n /**\n * @private\n */\n this.passwordData = '';\n /**\n * @private\n */\n this.reRenderedCount = 0;\n this.mouseX = 0;\n this.mouseY = 0;\n /**\n * @private\n */\n this.mouseLeft = 0;\n /**\n * @private\n */\n this.mouseTop = 0;\n this.touchClientX = 0;\n this.touchClientY = 0;\n this.previousTime = 0;\n this.currentTime = 0;\n this.isTouchScrolled = false;\n this.isLongTouchPropagated = false;\n // eslint-disable-next-line\n this.longTouchTimer = null;\n this.isViewerContainerDoubleClick = false;\n // eslint-disable-next-line\n this.dblClickTimer = null;\n /**\n * @private\n */\n this.pinchZoomStorage = [];\n /**\n * @private\n */\n this.isTextSelectionDisabled = false;\n /**\n * @private\n */\n this.isPanMode = false;\n this.dragX = 0;\n this.dragY = 0;\n this.isScrollbarMouseDown = false;\n this.scrollX = 0;\n this.scrollY = 0;\n this.ispageMoved = false;\n this.isThumb = false;\n this.isTapHidden = false;\n // eslint-disable-next-line\n this.singleTapTimer = null;\n this.tapCount = 0;\n this.inputTapCount = 0;\n /**\n * @private\n */\n this.isInitialLoaded = false;\n this.annotationPageList = [];\n this.importPageList = [];\n /**\n * @private\n */\n this.isImportAction = false;\n this.isImportedAnnotation = false;\n /**\n * @private\n */\n this.isAnnotationCollectionRemoved = false;\n /**\n * @private\n */\n this.tool = null;\n // eslint-disable-next-line\n this.action = 'Select';\n /**\n * @private\n */\n this.eventArgs = null;\n /**\n * @private\n */\n this.inAction = false;\n /**\n * @private\n */\n this.isMouseDown = false;\n /**\n * @private\n */\n this.isStampMouseDown = false;\n /**\n * @private\n */\n this.stampAdded = false;\n /**\n * @private\n */\n this.customStampCount = 0;\n /**\n * @private\n */\n this.isDynamicStamp = false;\n /**\n * @private\n */\n this.isMixedSizeDocument = false;\n /**\n * @private\n */\n this.highestWidth = 0;\n /**\n * @private\n */\n this.highestHeight = 0;\n /**\n * @private\n */\n this.customStampCollection = [];\n /**\n * @private\n */\n this.isAlreadyAdded = false;\n /**\n * @private\n */\n this.isWebkitMobile = false;\n /**\n * @private\n */\n this.isFreeTextContextMenu = false;\n /**\n * @private\n */\n this.isSelection = false;\n /**\n * @private\n */\n this.isAddAnnotation = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationComments = null;\n /**\n * @private\n */\n this.isToolbarSignClicked = false;\n /**\n * @private\n */\n this.signatureCount = 0;\n /**\n * @private\n */\n this.isSignatureAdded = false;\n /**\n * @private\n */\n this.isNewSignatureAdded = false;\n /**\n * @private\n */\n this.isInitialPageMode = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.documentAnnotationCollections = null;\n /**\n * @private\n */\n this.annotationRenderredList = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationStorage = {};\n /**\n * @private\n */\n // eslint-disable-next-line\n this.formFieldStorage = {};\n /**\n * @private\n */\n this.isStorageExceed = false;\n /**\n * @private\n */\n this.isFormStorageExceed = false;\n /**\n * @private\n */\n this.isNewStamp = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.downloadCollections = {};\n /**\n * @private\n */\n this.isAnnotationAdded = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.annotationEvent = null;\n /**\n * @private\n */\n this.isAnnotationDrawn = false;\n /**\n * @private\n */\n this.isAnnotationSelect = false;\n /**\n * @private\n */\n this.isAnnotationMouseDown = false;\n /**\n * @private\n */\n this.isAnnotationMouseMove = false;\n /**\n * @private\n */\n this.validateForm = false;\n /**\n * @private\n */\n this.isMinimumZoom = false;\n /**\n * @private\n */\n this.documentLoaded = false;\n this.tileRenderCount = 0;\n this.tileRequestCount = 0;\n /**\n * @private\n */\n this.isTileImageRendered = false;\n this.isDataExits = false;\n this.requestLists = [];\n this.tilerequestLists = [];\n this.textrequestLists = [];\n this.renderThumbnailImages = false;\n /**\n * @private\n */\n this.isInkAdded = false;\n /**\n * @private\n */\n this.inkCount = 0;\n /**\n * @private\n */\n this.isAddedSignClicked = false;\n /**\n * @private\n */\n this.imageCount = 0;\n /**\n * @private\n */\n this.isMousedOver = false;\n /**\n * @private\n */\n this.isFormFieldSelect = false;\n /**\n * @private\n */\n this.isFormFieldMouseDown = false;\n /**\n * @private\n */\n this.isFormFieldMouseMove = false;\n /**\n * @private\n */\n this.isFormFieldMousedOver = false;\n /**\n * @private\n */\n this.isPassword = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.digitalSignaturePages = [];\n this.isDrawnCompletely = false;\n /**\n * @private\n */\n this.isAddComment = false;\n /**\n * @private\n */\n this.drawSignatureWithTool = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.formFieldCollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.nonFillableFields = {};\n /**\n * @private\n */\n this.isInitialField = false;\n /**\n * @private\n */\n this.isTouchDesignerMode = false;\n /**\n * @private\n */\n this.isPrint = false;\n /**\n * @private\n */\n this.isJsonImported = false;\n /**\n * @private\n */\n this.isJsonExported = false;\n /**\n * @private\n */\n this.isPageRotated = false;\n this.downloadFileName = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isFocusField = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isTouchPad = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isMacGestureActive = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.macGestureStartScale = 0;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.zoomInterval = 5;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.focusField = [];\n /**\n * EJ2CORE-813 - This flag is represent current device is 'iPad' or 'iPhone' or'iPod' device.\n * @private\n */\n // eslint-disable-next-line\n this.isDeviceiOS = (['iPad Simulator', 'iPhone Simulator', 'iPod Simulator', 'iPad', 'iPhone', 'iPod'].includes(navigator.platform) || (navigator.userAgent.includes(\"Mac\") && \"ontouchend\" in document));\n /**\n * @private\n */\n // eslint-disable-next-line\n this.isMacSafari = navigator.userAgent.indexOf(\"Safari\") > -1 && navigator.userAgent.indexOf(\"Chrome\") === -1 && !this.isDeviceiOS;\n /**\n * @returns {void}\n */\n this.clearSessionStorage = function () {\n var documentId = '';\n if (Browser.isIE || Browser.info.name === 'edge') {\n documentId = decodeURI(window.sessionStorage.getItem('hashId'));\n }\n else {\n documentId = window.sessionStorage.getItem('hashId');\n }\n var documentLiveCount = window.sessionStorage.getItem('documentLiveCount');\n if (documentId !== null) {\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: documentId, documentLiveCount: documentLiveCount, action: 'Unload', elementId: _this.pdfViewer.element.id };\n var actionName = window.sessionStorage.getItem('unload');\n var serviceUrl = window.sessionStorage.getItem('serviceURL');\n if (serviceUrl && serviceUrl !== 'undefined') {\n // eslint-disable-next-line\n var browserSupportsKeepalive = 'keepalive' in new Request('');\n if (browserSupportsKeepalive) {\n // eslint-disable-next-line\n var headerValue = _this.setUnloadRequestHeaders();\n var credentialsData = _this.pdfViewer.ajaxRequestSettings.withCredentials ? 'include' : 'omit';\n fetch(serviceUrl + '/' + actionName, {\n method: 'POST',\n credentials: credentialsData,\n headers: headerValue,\n body: JSON.stringify(jsonObject)\n });\n }\n }\n else if (isBlazor()) {\n _this.clearCache(actionName, jsonObject, _this);\n }\n }\n window.sessionStorage.removeItem(_this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(_this.documentId + '_formfields');\n window.sessionStorage.removeItem(_this.documentId + '_formDesigner');\n window.sessionStorage.removeItem(_this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(_this.documentId + '_pagedata');\n window.sessionStorage.removeItem('hashId');\n window.sessionStorage.removeItem('documentLiveCount');\n window.sessionStorage.removeItem('currentDocument');\n window.sessionStorage.removeItem('serviceURL');\n window.sessionStorage.removeItem('unload');\n };\n /**\n * @private\n * @param {MouseEvent} event - Mouse event.\n * @returns {void}\n */\n this.onWindowResize = function (event) {\n var proxy = null;\n proxy = _this;\n if (_this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.right = (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) + 'px';\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.left = (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.commentPanelContainer.offsetWidth : 0) + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.left = (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) + 'px';\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.right = (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.commentPanelContainer.offsetWidth : 0) + 'px';\n }\n // eslint-disable-next-line\n var viewerElementWidth = (proxy.pdfViewer.element.clientWidth > 0 ? proxy.pdfViewer.element.clientWidth : proxy.pdfViewer.element.style.width);\n // eslint-disable-next-line\n var viewerWidth = (viewerElementWidth - (proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerContainerLeft() : 0) - (proxy.navigationPane.commentPanelContainer ? proxy.navigationPane.getViewerContainerRight() : 0));\n proxy.viewerContainer.style.width = viewerWidth + 'px';\n if (proxy.pdfViewer.toolbarModule) {\n // eslint-disable-next-line\n var toolbarContainer = isBlazor() ? proxy.pdfViewer.element.querySelector('.e-pv-toolbar') : proxy.getElement('_toolbarContainer');\n var toolbarHeight = 0;\n var formDesignerToolbarHeight = 0;\n if (toolbarContainer) {\n toolbarHeight = toolbarContainer.getBoundingClientRect().height;\n }\n if (proxy.isAnnotationToolbarHidden() || (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n if (toolbarHeight === 0) {\n if (_this.navigationPane.isNavigationToolbarVisible) {\n // eslint-disable-next-line\n var navigationToolbar = proxy.getElement('_navigationToolbar');\n toolbarHeight = navigationToolbar.getBoundingClientRect().height;\n }\n }\n if (!proxy.isFormDesignerToolbarHidded()) {\n var formDesignerToolbar = proxy.getElement('_formdesigner_toolbar');\n formDesignerToolbarHeight = formDesignerToolbar ? formDesignerToolbar.getBoundingClientRect().height : 0;\n }\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, toolbarHeight + formDesignerToolbarHeight);\n }\n else {\n // eslint-disable-next-line\n var annotationToolbarContainer = isBlazor() ? proxy.pdfViewer.element.querySelector('.e-pv-annotation-toolbar') : proxy.getElement('_annotation_toolbar');\n var annotationToolbarHeight = 0;\n if (annotationToolbarContainer) {\n annotationToolbarHeight = annotationToolbarContainer.getBoundingClientRect().height;\n }\n // eslint-disable-next-line max-len\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, toolbarHeight + annotationToolbarHeight);\n }\n }\n else {\n proxy.viewerContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n if (proxy.pdfViewer.bookmarkViewModule && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n var bookmarkContainer = proxy.getElement('_bookmarks_container');\n if (bookmarkContainer) {\n bookmarkContainer.style.height = proxy.updatePageHeight(proxy.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n }\n if (proxy.viewerContainer.style.height === '0px') {\n if (proxy.pdfViewer.height.toString() === 'auto') {\n proxy.pdfViewer.height = 500;\n proxy.viewerContainer.style.height = proxy.pdfViewer.height + 'px';\n }\n else {\n proxy.viewerContainer.style.height = proxy.pdfViewer.element.style.height;\n }\n }\n if (proxy.viewerContainer.style.width === '0px') {\n if (proxy.pdfViewer.width.toString() === 'auto') {\n proxy.pdfViewer.width = 500;\n proxy.viewerContainer.style.width = proxy.pdfViewer.width + 'px';\n }\n else {\n proxy.viewerContainer.style.width = proxy.pdfViewer.element.style.width;\n }\n }\n proxy.pageContainer.style.width = proxy.viewerContainer.clientWidth + 'px';\n if (proxy.viewerContainer.clientWidth === 0) {\n proxy.pageContainer.style.width = proxy.pdfViewer.element.style.width;\n }\n if (!isBlazor()) {\n if (proxy.pdfViewer.toolbarModule) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.toolbarModule.onToolbarResize((proxy.navigationPane.sideBarToolbar ? proxy.navigationPane.getViewerMainContainerWidth() : proxy.pdfViewer.element.clientWidth));\n }\n }\n if (_this.pdfViewer.enableToolbar && _this.pdfViewer.thumbnailViewModule) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.currentPageNumber - 1);\n }\n if (proxy.pdfViewer.textSearchModule && (!Browser.isDevice || _this.pdfViewer.enableDesktopMode)) {\n proxy.pdfViewer.textSearchModule.textSearchBoxOnResize();\n }\n if (viewerWidth !== 0) {\n if (!proxy.navigationPane.isBookmarkListOpen) {\n proxy.updateZoomValue();\n }\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n proxy.mobileScrollerContainer.style.left = (viewerWidth - parseFloat(proxy.mobileScrollerContainer.style.width)) + 'px';\n proxy.mobilePageNoContainer.style.left = (viewerWidth / 2) - (parseFloat(proxy.mobilePageNoContainer.style.width) / 2) + 'px';\n proxy.mobilePageNoContainer.style.top = (proxy.pdfViewer.element.clientHeight / 2) + 'px';\n proxy.updateMobileScrollerPosition();\n }\n else {\n proxy.navigationPane.setResizeIconTop();\n proxy.navigationPane.setCommentPanelResizeIconTop();\n if (event && event.type === 'resize') {\n proxy.signatureModule.updateCanvasSize();\n }\n }\n if (proxy.navigationPane.sideBarToolbar) {\n proxy.navigationPane.sideBarToolbar.style.height = proxy.viewerContainer.style.height;\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMousedown = function (event) {\n _this.isFreeTextContextMenu = false;\n var isUpdate = false;\n _this.isSelection = true;\n var target = event.target;\n if (event.button === 0 && !_this.getPopupNoteVisibleStatus() && !_this.isClickedOnScrollBar(event, false)) {\n _this.isViewerMouseDown = true;\n // eslint-disable-next-line\n if (event.detail === 1 && target.className !== 'e-pdfviewer-formFields' && target.className !== 'free-text-input') {\n isUpdate = true;\n _this.focusViewerContainer(true);\n }\n _this.scrollPosition = _this.viewerContainer.scrollTop / _this.getZoomFactor();\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n _this.mouseLeft = event.clientX;\n _this.mouseTop = event.clientY;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (_this.pdfViewer.textSelectionModule && !_this.isClickedOnScrollBar(event, true) && !_this.isTextSelectionDisabled) {\n if (!isIE && target.className !== 'e-pdfviewer-formFields' && target.className !== 'e-pdfviewer-ListBox' && target.className !== 'e-pv-formfield-dropdown'\n && target.className !== 'e-pv-formfield-listbox') {\n event.preventDefault();\n }\n if (target.className !== 'e-pv-droplet') {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n }\n }\n if (_this.isClickedOnScrollBar(event, false)) {\n _this.isViewerMouseDown = true;\n }\n if (_this.isPanMode) {\n _this.dragX = event.pageX;\n _this.dragY = event.pageY;\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && _this.isPanMode) {\n _this.viewerContainer.style.cursor = 'grabbing';\n }\n }\n if (_this.isShapeBasedAnnotationsEnabled() && (_this.isAnnotationDrawn || !(target.className === 'e-pv-page-container' || (target.className === 'foreign-object' && isNaN(_this.activeElements.activePageID))))) {\n _this.diagramMouseDown(event);\n }\n if (_this.pdfViewer.annotation && _this.pdfViewer.annotation.stickyNotesAnnotationModule.accordionContainer) {\n if (!isUpdate) {\n _this.pdfViewer.annotationModule.stickyNotesAnnotationModule.isEditableElement = false;\n _this.updateCommentPanel();\n isUpdate = true;\n }\n }\n if (isBlazor()) {\n _this.mouseDownHandler(event);\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseup = function (event) {\n if (!_this.getPopupNoteVisibleStatus()) {\n if (_this.isViewerMouseDown) {\n if (_this.scrollHoldTimer) {\n clearTimeout(_this.scrollHoldTimer);\n _this.scrollHoldTimer = null;\n }\n if ((_this.scrollPosition * _this.getZoomFactor()) !== _this.viewerContainer.scrollTop) {\n _this.pageViewScrollChanged(_this.currentPageNumber);\n }\n }\n var isSignatureFieldReadOnly = false;\n if (event.target) {\n if (event.target.className == 'e-pv-show-designer-name' && event.target.id.split('_', 1) != '') {\n isSignatureFieldReadOnly = document.getElementById(event.target.id.split('_', 1)).disabled;\n }\n if (event.target.className == 'foreign-object' && event.target.children[0]) {\n isSignatureFieldReadOnly = event.target.children[0].disabled;\n }\n }\n if (isSignatureFieldReadOnly && _this.pdfViewer.annotation) {\n _this.pdfViewer.annotation.clearSelection();\n }\n if (_this.isShapeBasedAnnotationsEnabled() && !isSignatureFieldReadOnly && (_this.isAnnotationDrawn || _this.action !== \"DrawTool\")) {\n _this.diagramMouseUp(event);\n if (_this.pdfViewer.annotation) {\n _this.pdfViewer.annotation.onAnnotationMouseUp();\n }\n }\n if (_this.pdfViewer.selectedItems.formFields.length > 0) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(_this.pdfViewer.toolbar) && !isNullOrUndefined(_this.pdfViewer.toolbar.formDesignerToolbarModule) && !Browser.isDevice) {\n _this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(_this.pdfViewer.toolbar) && !isNullOrUndefined(_this.pdfViewer.toolbar.formDesignerToolbarModule) && !Browser.isDevice) {\n _this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(false);\n }\n }\n _this.isSelection = false;\n // eslint-disable-next-line max-len\n var commentElement = document.getElementById(_this.pdfViewer.element.id + '_commantPanel');\n if (commentElement && commentElement.style.display === 'block') {\n if (_this.pdfViewer.selectedItems) {\n if (_this.pdfViewer.selectedItems.annotations.length !== 0) {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(_this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n }\n if (event.button === 0 && !_this.isClickedOnScrollBar(event, false)) {\n // 0 is for left button.\n var eventTarget_1 = event.target;\n var offsetX = event.clientX;\n var offsetY = event.clientY;\n var zoomFactor = _this.getZoomFactor();\n var pageIndex = _this.currentPageNumber;\n if (eventTarget_1) {\n // eslint-disable-next-line\n var pageString = eventTarget_1.id.split('_text_')[1] || eventTarget_1.id.split('_textLayer_')[1] || eventTarget_1.id.split('_annotationCanvas_')[1] || eventTarget_1.id.split('_pageDiv_')[1] || eventTarget_1.id.split('_freeText_')[1] || eventTarget_1.id.split('_')[1];\n // eslint-disable-next-line\n pageIndex = parseInt(pageString);\n if (isNaN(pageIndex)) {\n var formFieldsTargetId = _this.pdfViewer.formFieldCollection.filter(function (targetFormField) { return (targetFormField.id == eventTarget_1.id) || (targetFormField.id == eventTarget_1.id.split('_')[0]); });\n if (formFieldsTargetId.length > 0) {\n pageIndex = formFieldsTargetId[0].pageIndex;\n }\n }\n }\n var pageDiv = _this.getElement('_pageDiv_' + pageIndex);\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = (event.clientX - pageCurrentRect.left) / zoomFactor;\n offsetY = (event.clientY - pageCurrentRect.top) / zoomFactor;\n }\n // eslint-disable-next-line max-len\n if (eventTarget_1 && eventTarget_1.classList && !eventTarget_1.classList.contains('e-pv-hyperlink') && !eventTarget_1.classList.contains('e-pv-page-container')) {\n // eslint-disable-next-line\n _this.pdfViewer.firePageClick(offsetX, offsetY, pageIndex + 1);\n if (_this.pdfViewer.formFieldsModule && !_this.pdfViewer.formDesignerModule) {\n _this.pdfViewer.formFieldsModule.removeFocus();\n }\n }\n if (_this.isTextMarkupAnnotationModule() && !_this.isToolbarInkClicked) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationMouseUp(event);\n }\n if (_this.pdfViewer.formDesignerModule && !_this.pdfViewer.annotationModule) {\n _this.pdfViewer.formDesignerModule.updateCanvas(pageIndex);\n }\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && _this.isPanMode) {\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grab';\n _this.viewerContainer.style.cursor = '-moz-grab';\n _this.viewerContainer.style.cursor = 'grab';\n }\n }\n _this.isViewerMouseDown = false;\n }\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.detectTouchPad = function (event) {\n // eslint-disable-next-line max-len\n _this.isTouchPad = event.wheelDeltaY ? (event.wheelDeltaY === (event.deltaY * -3) ? true : Math.abs(event.deltaY) < 60) : (event.deltaMode === 0);\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.handleMacGestureStart = function (event) {\n event.preventDefault();\n event.stopPropagation();\n _this.macGestureStartScale = _this.pdfViewer.magnification.zoomFactor;\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.handleMacGestureChange = function (event) {\n event.preventDefault();\n event.stopPropagation();\n var macX = event.clientX;\n var macY = event.clientY;\n var scale = Number((_this.macGestureStartScale * event.scale).toFixed(2));\n if (!_this.isMacGestureActive) {\n _this.isMacGestureActive = true;\n _this.pdfViewer.magnification.initiateMouseZoom(macX, macY, scale * 100);\n setTimeout(function () {\n _this.isMacGestureActive = false;\n }, 50);\n }\n };\n /**\n * @param {any} event - The Wheel event.\n * @returns {void}\n */\n this.handleMacGestureEnd = function (event) {\n event.preventDefault();\n event.stopPropagation();\n };\n /**\n * @param {WheelEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseWheel = function (event) {\n _this.isViewerMouseWheel = true;\n if (_this.getRerenderCanvasCreated()) {\n event.preventDefault();\n }\n if (event.ctrlKey) {\n var zoomDifference = 25;\n if (_this.pdfViewer.magnification.zoomFactor < 1) {\n zoomDifference = 10;\n }\n if (_this.pdfViewer.magnification.zoomFactor >= 2) {\n zoomDifference = 50;\n }\n if (_this.isTouchPad && !_this.isMacSafari) {\n zoomDifference = zoomDifference / _this.zoomInterval;\n }\n // eslint-disable-next-line\n if (event.wheelDelta > 0) {\n _this.pdfViewer.magnification.initiateMouseZoom(event.x, event.y, (_this.pdfViewer.magnification.zoomFactor * 100) + zoomDifference);\n }\n else {\n _this.pdfViewer.magnification.initiateMouseZoom(event.x, event.y, (_this.pdfViewer.magnification.zoomFactor * 100) - zoomDifference);\n }\n _this.isTouchPad = false;\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pageRerenderOnMouseWheel();\n if (event.ctrlKey) {\n event.preventDefault();\n }\n _this.pdfViewer.magnificationModule.fitPageScrollMouseWheel(event);\n }\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n if (_this.isViewerMouseDown) {\n if (!event.target.classList.contains('e-pv-text')) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseWheel(_this.currentPageNumber - 1);\n }\n }\n }\n };\n /**\n * @param {KeyboardEvent} event - The KeyboardEvent.\n * @returns {void}\n */\n this.onWindowKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n if ((_this.isFreeTextAnnotationModule() && _this.pdfViewer.annotationModule\n && (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === true\n || _this.pdfViewer.annotationModule.inputElementModule.isInFocus === true))) {\n return;\n }\n if (!event.ctrlKey || !isCommandKey) {\n switch (event.keyCode) {\n case 46:\n _this.DeleteKeyPressed(event);\n break;\n case 27:\n if (_this.pdfViewer.toolbar) {\n _this.pdfViewer.toolbar.addInkAnnotation();\n _this.pdfViewer.toolbar.deSelectCommentAnnotation();\n _this.pdfViewer.toolbar.updateStampItems();\n if (_this.pdfViewer.toolbar.annotationToolbarModule) {\n if (isBlazor()) {\n _this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItemsInBlazor();\n }\n else {\n _this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItems();\n }\n }\n if (_this.pdfViewer.isFormDesignerToolbarVisible && document.getElementById('FormField_helper_html_element')) {\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (formFieldElement) {\n formFieldElement.remove();\n }\n }\n _this.pdfViewer.tool = '';\n _this.focusViewerContainer();\n }\n break;\n case 13:\n if (_this.pdfViewer.formDesignerModule) {\n if ((event.type === 'keydown' && event.keyCode === 13)) {\n if (event.target && (event.target.id || event.target.tabIndex) && _this.pdfViewer.formFieldCollections) {\n var fieldId = void 0;\n var currentTarget = event.target;\n if ((event.target.tabIndex && !event.target.id)) {\n currentTarget = event.target.parentElement;\n fieldId = currentTarget.id.split(\"_content_html_element\")[0];\n }\n else {\n currentTarget = event.target;\n fieldId = currentTarget.id.split(\"_\")[0];\n }\n for (var i = 0; i < _this.pdfViewer.formFieldCollections.length; i++) {\n var formfield = _this.pdfViewer.formFieldCollections[i];\n if (fieldId === formfield.id && (formfield.type === 'SignatureField' || formfield.type === 'InitialField')) {\n _this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', _this.pdfViewer.formFieldCollections[i]);\n event.preventDefault();\n }\n }\n }\n }\n }\n break;\n case 32:\n if (_this.pdfViewer.formDesignerModule) {\n if ((event.type === 'keydown' && event.keyCode === 32)) {\n if (event.target && event.target.id && _this.pdfViewer.formFields) {\n for (var i = 0; i < _this.pdfViewer.formFields.length; i++) {\n var formField = _this.pdfViewer.formFields[i];\n if (event.target.id.split(\"_\")[0] === formField.id && (formField.formFieldAnnotationType === \"Checkbox\")) {\n _this.pdfViewer.formDesignerModule.setCheckBoxState(event);\n event.preventDefault();\n break;\n }\n }\n }\n }\n }\n break;\n case 9:\n if (event.target && (event.target.id || event.target.tabIndex) && _this.pdfViewer.formFieldCollections) {\n {\n var nextField = void 0;\n var fieldIndex = void 0;\n var currentTarget_1 = event.target;\n var id_1;\n if ((event.target.tabIndex && !event.target.id)) {\n currentTarget_1 = event.target.parentElement;\n id_1 = currentTarget_1.id.split(\"_content_html_element\")[0];\n }\n else {\n currentTarget_1 = event.target;\n id_1 = currentTarget_1.id.split(\"_input\")[0];\n }\n if (_this.pdfViewer.formDesignerModule) {\n if ((event.shiftKey && event.key === \"Tab\")) {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === id_1; });\n nextField = fieldIndex > 0 ? _this.pdfViewer.formFieldCollections[fieldIndex - 1] : _this.pdfViewer.formFieldCollections[_this.pdfViewer.formFieldCollections.length - 1];\n }\n else {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === id_1; });\n nextField = fieldIndex + 1 < _this.pdfViewer.formFieldCollections.length ? _this.pdfViewer.formFieldCollections[fieldIndex + 1] : _this.pdfViewer.formFieldCollections[0];\n }\n _this.pdfViewer.focusFormField(nextField);\n event.preventDefault();\n }\n if (!_this.pdfViewer.formDesigner) {\n if (!(currentTarget_1.className === 'e-pdfviewer-formFields')) {\n if ((event.shiftKey && event.key === \"Tab\")) {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget_1.id; });\n nextField = fieldIndex > 0 ? _this.pdfViewer.formFieldCollections[fieldIndex - 1] : _this.pdfViewer.formFieldCollections[_this.pdfViewer.formFieldCollections.length - 1];\n }\n else {\n fieldIndex = _this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget_1.id; });\n nextField = fieldIndex + 1 < _this.pdfViewer.formFieldCollections.length ? _this.pdfViewer.formFieldCollections[fieldIndex + 1] : _this.pdfViewer.formFieldCollections[0];\n }\n _this.pdfViewer.focusFormField(nextField);\n event.preventDefault();\n }\n }\n }\n }\n if (event.target && event.target.id && _this.pdfViewer.formFields) {\n for (var i = 0; i < _this.pdfViewer.formFields.length; i++) {\n var formField_1 = _this.pdfViewer.formFields[parseInt(i.toString(), 10)];\n if (event.target.id === formField_1.id) {\n // eslint-disable-next-line\n var field = {\n value: formField_1.value, fontFamily: formField_1.fontFamily, fontSize: formField_1.fontSize, fontStyle: formField_1.fontStyle,\n // eslint-disable-next-line\n color: formField_1.color, backgroundColor: formField_1.backgroundColor, alignment: formField_1.alignment, isReadonly: formField_1.isReadonly, visibility: formField_1.visibility,\n // eslint-disable-next-line\n maxLength: formField_1.maxLength, isRequired: formField_1.isRequired, isPrint: formField_1.isPrint, rotation: formField_1.rotateAngle, tooltip: formField_1.tooltip,\n // eslint-disable-next-line\n options: formField_1.options, isChecked: formField_1.isChecked, isSelected: formField_1.isSelected\n };\n _this.pdfViewer.fireFocusOutFormField(field, formField_1.pageIndex);\n }\n }\n }\n break;\n }\n }\n };\n /**\n * @param {KeyboardEvent} event - The KeyboardEvent.\n * @returns {void}\n */\n this.viewerContainerOnKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n if ((_this.isFreeTextAnnotationModule() && _this.pdfViewer.annotationModule\n && (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === true\n || _this.pdfViewer.annotationModule.inputElementModule.isInFocus === true))) {\n return;\n }\n if (event.ctrlKey || isCommandKey) {\n // add keycodes if shift key is used.\n if ((event.shiftKey && !isMac) || (isMac && !event.shiftKey)) {\n switch (event.keyCode) {\n case 38: // up arrow\n case 33: // page up\n event.preventDefault();\n if (_this.currentPageNumber !== 1) {\n _this.updateScrollTop(0);\n }\n break;\n case 40: // down arrow\n case 34: // page down\n event.preventDefault();\n if (_this.currentPageNumber !== _this.pageCount) {\n _this.updateScrollTop(_this.pageCount - 1);\n }\n break;\n default:\n break;\n }\n }\n switch (event.keyCode) {\n case 79: // o key\n if (_this.pdfViewer.toolbarModule && _this.pdfViewer.enableToolbar) {\n _this.pdfViewer.toolbarModule.openFileDialogBox(event);\n }\n break;\n case 67: // c key\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.enableTextSelection && !_this.isTextSelectionDisabled) {\n event.preventDefault();\n _this.pdfViewer.textSelectionModule.copyText();\n }\n if (_this.pdfViewer.selectedItems.annotations.length || _this.pdfViewer.selectedItems.formFields.length) {\n _this.pdfViewer.copy();\n _this.contextMenuModule.previousAction = 'Copy';\n }\n break;\n case 70: // f key\n if (_this.pdfViewer.textSearchModule && _this.pdfViewer.enableTextSearch) {\n event.preventDefault();\n _this.pdfViewer.toolbarModule.textSearchButtonHandler();\n }\n break;\n case 80: // p key\n if (_this.pdfViewer.printModule && _this.pdfViewer.enablePrint) {\n event.preventDefault();\n _this.pdfViewer.print.print();\n }\n break;\n case 90: //z key\n if (_this.pdfViewer.annotationModule) {\n _this.pdfViewer.annotationModule.undo();\n }\n break;\n case 88: //x key\n if (_this.pdfViewer.selectedItems.annotations.length || _this.pdfViewer.selectedItems.formFields.length) {\n _this.pdfViewer.cut();\n _this.contextMenuModule.previousAction = 'Cut';\n }\n break;\n case 89: //y key\n if (_this.pdfViewer.annotationModule) {\n _this.pdfViewer.annotationModule.redo();\n }\n break;\n case 86: //v key\n // eslint-disable-next-line max-len\n if ((_this.pdfViewer.annotation && _this.pdfViewer.annotation.isShapeCopied) || (_this.pdfViewer.formFields && _this.pdfViewer.formDesigner && _this.pdfViewer.formDesigner.isShapeCopied)) {\n var isSearchboxDialogOpen = void 0;\n var searchBoxId = document.getElementById(_this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (!isSearchboxDialogOpen && _this.pdfViewer.formDesigner && !_this.pdfViewer.formDesigner.isPropertyDialogOpen) {\n _this.pdfViewer.paste();\n _this.contextMenuModule.previousAction = 'Paste';\n }\n }\n break;\n default:\n break;\n }\n }\n else {\n switch (event.keyCode) {\n case 46:\n _this.DeleteKeyPressed(event);\n break;\n }\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.magnifyBehaviorKeyDown(event);\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMousemove = function (event) {\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n var target = event.target;\n if (_this.action === 'Drag') {\n event.preventDefault();\n }\n // eslint-disable-next-line max-len\n if (_this.isViewerMouseDown && !(_this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'Line' || _this.action === 'DrawTool' || _this.action === 'Distance')) {\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.enableTextSelection && !_this.isTextSelectionDisabled && !_this.getPopupNoteVisibleStatus()) {\n // text selection won't perform if we start the selection from hyperlink content by commenting this line.\n // this region block the toc/hyperlink navigation on sometimes.\n // if ((event.target as HTMLElement).classList.contains('e-pv-hyperlink') && this.pdfViewer.linkAnnotationModule) {\n // this.pdfViewer.linkAnnotationModule.modifyZindexForHyperlink((event.target as HTMLElement), true);\n // }\n if (!isIE) {\n if (event.target.className != 'e-pdfviewer-formFields')\n event.preventDefault();\n _this.mouseX = event.clientX;\n _this.mouseY = event.clientY;\n // eslint-disable-next-line\n var annotationModule = _this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isDropletClicked && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n annotationModule.textMarkupAnnotationModule.textSelect(event.target, _this.mouseX, _this.mouseY);\n }\n else {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseMove(event.target, _this.mouseX, _this.mouseY);\n }\n }\n else {\n var selection = window.getSelection();\n if (!selection.type && !selection.isCollapsed && selection.anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.isTextSelection = true;\n }\n }\n }\n else if (_this.skipPreventDefault(target)) {\n event.preventDefault();\n }\n }\n if (_this.isTextMarkupAnnotationModule() && !_this.getPopupNoteVisibleStatus()) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationMouseMove(event);\n }\n if (_this.isPanMode) {\n _this.panOnMouseMove(event);\n }\n if (_this.isShapeBasedAnnotationsEnabled()) {\n var canvas = void 0;\n // eslint-disable-next-line max-len\n if (event.target && (event.target.id.indexOf('_text') > -1 || (event.target.parentElement.classList.contains('foreign-object')) || event.target.id.indexOf('_annotationCanvas') > -1 || event.target.classList.contains('e-pv-hyperlink')) && _this.pdfViewer.annotation || event.target.classList.contains('e-pdfviewer-formFields')) {\n var pageIndex = _this.pdfViewer.annotation.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_1 = canvas1.y ? canvas1.y : canvas1.top;\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation && _this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation.shapeAnnotationType === 'Image') {\n canvas = new Rect(left, top_1, canvas1.width - 10, canvas1.height - 10);\n }\n else {\n canvas = new Rect(left + 1, top_1 + 1, canvas1.width - 3, canvas1.height - 3);\n }\n }\n }\n else if (!_this.pdfViewer.annotationModule && _this.pdfViewer.formDesignerModule) {\n var pageIndex = _this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_2 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + 10, top_2 + 10, canvas1.width - 10, canvas1.height - 10);\n }\n }\n // eslint-disable-next-line max-len\n var stampModule = _this.pdfViewer.annotationModule ? _this.pdfViewer.annotationModule.stampAnnotationModule : null;\n if (canvas && canvas.containsPoint({ x: _this.mouseX, y: _this.mouseY }) && !(stampModule && stampModule.isStampAnnotSelected)) {\n _this.diagramMouseMove(event);\n _this.annotationEvent = event;\n }\n else {\n _this.diagramMouseLeave(event);\n if (_this.isAnnotationDrawn) {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n }\n if (_this.pdfViewer.enableStampAnnotations) {\n if (stampModule && stampModule.isStampAnnotSelected) {\n _this.pdfViewer.tool = 'Stamp';\n _this.tool = new StampTool(_this.pdfViewer, _this);\n _this.isMouseDown = true;\n stampModule.isStampAnnotSelected = false;\n stampModule.isNewStampAnnot = true;\n }\n }\n if (_this.isSignatureAdded && _this.pdfViewer.enableHandwrittenSignature) {\n _this.pdfViewer.tool = 'Stamp';\n _this.tool = new StampTool(_this.pdfViewer, _this);\n _this.isMouseDown = true;\n _this.isSignatureAdded = false;\n _this.isNewSignatureAdded = true;\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.panOnMouseMove = function (event) {\n var isStampMode = false;\n // eslint-disable-next-line max-len\n if (_this.action === 'Ink' || _this.action === \"Line\" || _this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'DrawTool' || _this.action === 'Drag' || _this.action.indexOf('Rotate') !== -1 || _this.action.indexOf('Resize') !== -1) {\n isStampMode = true;\n }\n // eslint-disable-next-line max-len\n if (_this.viewerContainer.contains(event.target) && (event.target !== _this.viewerContainer) && (event.target !== _this.pageContainer) && !isStampMode) {\n if (_this.isViewerMouseDown) {\n var deltaX = _this.dragX - event.pageX;\n var deltaY = _this.dragY - event.pageY;\n _this.viewerContainer.scrollTop = _this.viewerContainer.scrollTop + deltaY;\n _this.viewerContainer.scrollLeft = _this.viewerContainer.scrollLeft + deltaX;\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grabbing';\n _this.viewerContainer.style.cursor = '-moz-grabbing';\n _this.viewerContainer.style.cursor = 'grabbing';\n _this.dragX = event.pageX;\n _this.dragY = event.pageY;\n }\n else {\n if (!_this.navigationPane.isNavigationPaneResized) {\n _this.viewerContainer.style.cursor = 'move';\n _this.viewerContainer.style.cursor = '-webkit-grab';\n _this.viewerContainer.style.cursor = '-moz-grab';\n _this.viewerContainer.style.cursor = 'grab';\n }\n }\n }\n else {\n if (!_this.navigationPane.isNavigationPaneResized) {\n _this.viewerContainer.style.cursor = 'auto';\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseLeave = function (event) {\n if (_this.isViewerMouseDown) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseLeave(event);\n }\n }\n if (_this.pdfViewer.textSelectionModule && _this.pdfViewer.textSelectionModule.isTextSelection) {\n event.preventDefault();\n }\n if (_this.action === 'Ink') {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseEnter = function (event) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clear();\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnMouseOver = function (event) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (_this.isViewerMouseDown) {\n if (!isIE) {\n event.preventDefault();\n }\n }\n };\n /**\n * @param {MouseEvent} event - The MouseEvent.\n * @returns {void}\n */\n this.viewerContainerOnClick = function (event) {\n if (event.type === 'dblclick') {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getCurrentTextMarkupAnnotation()) {\n if (event.target.classList.contains('e-pv-text')) {\n _this.isViewerContainerDoubleClick = true;\n if (!_this.getTextMarkupAnnotationMode()) {\n var pageNumber = parseFloat(event.target.id.split('_')[2]);\n _this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n }\n _this.pdfViewer.textSelectionModule.selectAWord(event.target, event.clientX, event.clientY, false);\n if (_this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n _this.pdfViewer.textSelectionModule.calculateContextMenuPosition(event.clientY, event.clientX);\n }\n if (!_this.getTextMarkupAnnotationMode()) {\n _this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(true, false);\n _this.dblClickTimer = setTimeout(function () {\n _this.applySelection();\n }, 100);\n _this.pdfViewer.textSelectionModule.fireTextSelectEnd();\n }\n else if (_this.isTextMarkupAnnotationModule() && _this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n }\n }\n else if (_this.getCurrentTextMarkupAnnotation()) {\n // this.pdfViewer.annotationModule.showAnnotationPopup(event);\n }\n if (_this.action && (_this.action === 'Perimeter' || _this.action === 'Polygon') && _this.tool) {\n _this.eventArgs.position = _this.currentPosition;\n _this.getMouseEventArgs(_this.currentPosition, _this.eventArgs, event, _this.eventArgs.source);\n var ctrlKey = _this.isMetaKey(event);\n var info = { ctrlKey: event.ctrlKey, shiftKey: event.shiftKey };\n _this.eventArgs.info = info;\n _this.eventArgs.clickCount = event.detail;\n _this.tool.mouseUp(_this.eventArgs, true);\n }\n if (_this.pdfViewer.selectedItems ||\n (_this.pdfViewer.annotation && _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation)) {\n if (_this.pdfViewer.selectedItems.annotations.length !== 0) {\n // eslint-disable-next-line\n var currentAnnotation = _this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.annotationModule && !currentAnnotation.formFieldAnnotationType) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.annotationSelect(currentAnnotation.annotName, currentAnnotation.pageIndex, currentAnnotation, null, true);\n if (_this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus === false) {\n if (_this.isFreeTextAnnotation(_this.pdfViewer.selectedItems.annotations) === true) {\n var elmtPosition = {};\n elmtPosition.x = _this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = _this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, _this.pdfViewer.selectedItems.annotations[0]);\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].enableShapeLabel === true) {\n var elmtPosition = {};\n elmtPosition.x = _this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = _this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotation.inputElementModule.editLabel(elmtPosition, _this.pdfViewer.selectedItems.annotations[0]);\n }\n else {\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(_this.pdfViewer.selectedItems.annotations[0].annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n var annotation = _this.pdfViewer.annotation;\n var annotationModule = _this.pdfViewer.annotationModule;\n if (annotation && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line\n var annotation_1 = _this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.annotationSelect(annotation_1.annotName, _this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage, annotation_1, null, true);\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(_this.pdfViewer.element.id + '_accordionContainer' + _this.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var comments = document.getElementById(annotation_1.annotName);\n if (comments) {\n comments.firstChild.click();\n }\n }\n }\n }\n if (_this.pdfViewer.designerMode && _this.pdfViewer.selectedItems.formFields.length > 0) {\n var eventArgs = { name: \"formFieldDoubleClick\", field: _this.pdfViewer.selectedItems.formFields[0], cancel: false };\n _this.pdfViewer.fireFormFieldDoubleClickEvent(eventArgs);\n if (!eventArgs.cancel) {\n _this.pdfViewer.formDesigner.createPropertiesWindow();\n }\n }\n }\n else {\n if (event.detail === 3) {\n if (_this.isViewerContainerDoubleClick) {\n clearTimeout(_this.dblClickTimer);\n _this.isViewerContainerDoubleClick = false;\n }\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getTextMarkupAnnotationMode()) {\n _this.pdfViewer.textSelectionModule.selectEntireLine(event);\n _this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(true, false);\n _this.pdfViewer.textSelectionModule.fireTextSelectEnd();\n _this.applySelection();\n }\n }\n }\n };\n /**\n * @param {DragEvent} event - The DragEvent.\n * @returns {void}\n */\n this.viewerContainerOnDragStart = function (event) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n event.preventDefault();\n }\n };\n // eslint-disable-next-line\n this.viewerContainerOnContextMenuClick = function (event) {\n _this.isViewerMouseDown = false;\n };\n // eslint-disable-next-line\n this.onWindowMouseUp = function (event) {\n _this.isFreeTextContextMenu = false;\n _this.isNewStamp = false;\n _this.signatureAdded = false;\n // eslint-disable-next-line\n var annotationModule = _this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n // eslint-disable-next-line\n var modules = annotationModule.textMarkupAnnotationModule;\n modules.isLeftDropletClicked = false;\n modules.isDropletClicked = false;\n modules.isRightDropletClicked = false;\n if (!modules.currentTextMarkupAnnotation && window.getSelection().anchorNode === null) {\n modules.showHideDropletDiv(true);\n }\n else if (!modules.currentTextMarkupAnnotation && modules.currentTextMarkupAddMode === '') {\n modules.isTextMarkupAnnotationMode = false;\n }\n }\n if (!_this.getPopupNoteVisibleStatus()) {\n if (event.button === 0) {\n // eslint-disable-next-line max-len\n if (_this.isNewFreeTextAnnotation()) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled && !_this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n if (event.detail === 1 && !_this.viewerContainer.contains(event.target) && !_this.contextMenuModule.contextMenuElement.contains(event.target)) {\n if (window.getSelection().anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseup(event);\n }\n }\n // eslint-disable-next-line\n var target = event.target;\n if (_this.viewerContainer.contains(event.target) && target.className !== 'e-pdfviewer-formFields' && target.className !== 'e-pv-formfield-input') {\n if (!_this.isClickedOnScrollBar(event, true) && !_this.isScrollbarMouseDown) {\n _this.pdfViewer.textSelectionModule.textSelectionOnMouseup(event);\n }\n else {\n if (window.getSelection().anchorNode !== null) {\n _this.pdfViewer.textSelectionModule.applySpanForSelection();\n }\n }\n }\n }\n else if (_this.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line\n var viewerElement = _this.pdfViewer.element;\n // eslint-disable-next-line\n var targetElement = event.target;\n if (viewerElement && targetElement) {\n if (viewerElement.id.split('_')[0] === targetElement.id.split('_')[0]) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n }\n }\n }\n }\n else if (event.button === 2) {\n if (_this.viewerContainer.contains(event.target) && _this.skipPreventDefault(event.target)) {\n if (_this.checkIsNormalText()) {\n window.getSelection().removeAllRanges();\n }\n }\n }\n if (_this.isViewerMouseDown) {\n _this.isViewerMouseDown = false;\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clear();\n _this.pdfViewer.textSelectionModule.selectionStartPage = null;\n }\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n return true;\n }\n }\n };\n /**\n * @param {TouchEvent} event - The DragEvent.\n * @returns {void}\n */\n this.onWindowTouchEnd = function (event) {\n _this.signatureAdded = false;\n // eslint-disable-next-line max-len\n if (!_this.pdfViewer.element.contains(event.target) && !_this.contextMenuModule.contextMenuElement.contains(event.target)) {\n if (_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled) {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchStart = function (event) {\n var touchPoints = event.touches;\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.setTouchPoints(touchPoints[0].clientX, touchPoints[0].clientY);\n }\n var target = event.target;\n // eslint-disable-next-line max-len\n if (touchPoints.length === 1 && !(target.classList.contains('e-pv-hyperlink')) && _this.skipPreventDefault(target)) {\n _this.preventTouchEvent(event);\n }\n if (event.touches.length === 1 && _this.isTextMarkupAnnotationModule() && !_this.getPopupNoteVisibleStatus()) {\n if (!_this.isToolbarInkClicked) {\n _this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationTouchEnd(event);\n }\n }\n _this.touchClientX = touchPoints[0].clientX;\n _this.touchClientY = touchPoints[0].clientY;\n _this.scrollY = touchPoints[0].clientY;\n _this.previousTime = new Date().getTime();\n // eslint-disable-next-line max-len\n if (touchPoints.length === 1 && !(event.target.classList.contains('e-pv-touch-select-drop') || event.target.classList.contains('e-pv-touch-ellipse'))) {\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && _this.pageCount > 0 && !_this.isThumb && !(event.target.classList.contains('e-pv-hyperlink'))) {\n _this.handleTaps(touchPoints, event);\n }\n if (!isBlazor() || !Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n _this.handleTextBoxTaps(touchPoints);\n }\n var designerMode = _this.isDesignerMode(target);\n if (designerMode) {\n _this.contextMenuModule.close();\n // event.preventDefault();\n if (!_this.isLongTouchPropagated) {\n _this.longTouchTimer = setTimeout(function () {\n if (!_this.isMoving) {\n _this.isTouchDesignerMode = true;\n /* eslint-disable-next-line security/detect-non-literal-fs-filename */\n _this.contextMenuModule.open(_this.touchClientY, _this.touchClientX, _this.viewerContainer);\n }\n }, 1000);\n }\n _this.isLongTouchPropagated = true;\n _this.isMoving = false;\n }\n else if ((_this.pdfViewer.textSelectionModule && !_this.isTextSelectionDisabled)) {\n _this.pdfViewer.textSelectionModule.clearTextSelection();\n _this.contextMenuModule.close();\n // event.preventDefault();\n if (!_this.isLongTouchPropagated) {\n _this.longTouchTimer = setTimeout(function () {\n _this.viewerContainerOnLongTouch(event);\n }, 1000);\n }\n _this.isLongTouchPropagated = true;\n }\n }\n // eslint-disable-next-line\n var toolbarModule = _this.pdfViewer.toolbarModule ? _this.pdfViewer.toolbarModule.annotationToolbarModule : 'null';\n if (target.classList.contains('e-pv-text') && (!toolbarModule || !toolbarModule.textMarkupToolbarElement || toolbarModule.textMarkupToolbarElement.children.length === 0)) {\n target.classList.add('e-pv-text-selection-none');\n }\n _this.diagramMouseDown(event);\n // eslint-disable-next-line max-len\n if (_this.action === 'Perimeter' || _this.action === 'Polygon' || _this.action === 'DrawTool' || _this.action === 'Drag' || _this.action.indexOf('Rotate') !== -1 || _this.action.indexOf('Resize') !== -1) {\n event.preventDefault();\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnLongTouch = function (event) {\n _this.touchClientX = event.touches[0].clientX;\n _this.touchClientY = event.touches[0].clientY;\n event.preventDefault();\n if (_this.pdfViewer.textSelectionModule) {\n var target = event.target;\n if (target.classList.contains('e-pv-text-selection-none')) {\n target.classList.remove('e-pv-text-selection-none');\n }\n _this.pdfViewer.textSelectionModule.initiateTouchSelection(event, _this.touchClientX, _this.touchClientY);\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n clearTimeout(_this.singleTapTimer);\n _this.tapCount = 0;\n }\n }\n };\n /**\n * @param {PointerEvent} event - The PointerEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerDown = function (event) {\n if (event.pointerType === 'touch') {\n _this.pointerCount++;\n if (_this.pointerCount <= 2) {\n event.preventDefault();\n _this.pointersForTouch.push(event);\n if (_this.pointerCount === 2) {\n _this.pointerCount = 0;\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.setTouchPoints(event.clientX, event.clientY);\n }\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchMove = function (event) {\n if (_this.action === 'Drag') {\n _this.isMoving = true;\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n clearTimeout(_this.singleTapTimer);\n _this.singleTapTimer = null;\n _this.tapCount = 0;\n }\n _this.preventTouchEvent(event);\n if (_this.isToolbarInkClicked) {\n event.preventDefault();\n }\n var touchPoints = event.touches;\n if (_this.pdfViewer.magnificationModule) {\n _this.isTouchScrolled = true;\n if (touchPoints.length > 1 && _this.pageCount > 0) {\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.isTouchScrolled = false;\n }\n if (_this.pdfViewer.enablePinchZoom) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.magnificationModule.initiatePinchMove(touchPoints[0].clientX, touchPoints[0].clientY, touchPoints[1].clientX, touchPoints[1].clientY);\n }\n }\n else if (touchPoints.length === 1 && _this.getPagesPinchZoomed()) {\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.isTouchScrolled = false;\n }\n _this.pdfViewer.magnificationModule.pinchMoveScroll();\n }\n }\n _this.mouseX = touchPoints[0].clientX;\n _this.mouseY = touchPoints[0].clientY;\n var canvas;\n // eslint-disable-next-line max-len\n if (event.target && (event.target.id.indexOf('_text') > -1 || event.target.id.indexOf('_annotationCanvas') > -1 || event.target.classList.contains('e-pv-hyperlink')) && _this.pdfViewer.annotation) {\n var pageIndex = _this.pdfViewer.annotation.getEventPageNumber(event);\n var diagram = document.getElementById(_this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_3 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + 10, top_3 + 10, canvas1.width - 10, canvas1.height - 10);\n }\n }\n if (canvas && canvas.containsPoint({ x: _this.mouseX, y: _this.mouseY }) || _this.action === 'Ink') {\n _this.diagramMouseMove(event);\n _this.annotationEvent = event;\n }\n else {\n _this.diagramMouseLeave(event);\n if (_this.isAnnotationDrawn) {\n _this.diagramMouseUp(event);\n _this.isAnnotationAdded = true;\n }\n }\n touchPoints = null;\n };\n /**\n * @param {PointerEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerMove = function (event) {\n if (event.pointerType === 'touch' && _this.pageCount > 0) {\n event.preventDefault();\n if (_this.pointersForTouch.length === 2) {\n for (var i = 0; i < _this.pointersForTouch.length; i++) {\n if (event.pointerId === _this.pointersForTouch[parseInt(i.toString(), 10)].pointerId) {\n _this.pointersForTouch[parseInt(i.toString(), 10)] = event;\n break;\n }\n }\n if (_this.pdfViewer.magnificationModule && _this.pdfViewer.enablePinchZoom) {\n // eslint-disable-next-line max-len\n _this.pdfViewer.magnificationModule.initiatePinchMove(_this.pointersForTouch[0].clientX, _this.pointersForTouch[0].clientY, _this.pointersForTouch[1].clientX, _this.pointersForTouch[1].clientY);\n }\n }\n }\n };\n /**\n * @param {TouchEvent} event - The TouchEvent.\n * @returns {void}\n */\n this.viewerContainerOnTouchEnd = function (event) {\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pinchMoveEnd();\n }\n if (event.cancelable && !event.target.classList.contains('e-pv-touch-ellipse') && _this.pdfViewer.textSelectionModule && _this.pdfViewer.textSelectionModule.isTextSelection) {\n event.preventDefault();\n }\n _this.isLongTouchPropagated = false;\n clearInterval(_this.longTouchTimer);\n _this.longTouchTimer = null;\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && _this.isTouchScrolled) {\n _this.currentTime = new Date().getTime();\n var duration = _this.currentTime - _this.previousTime;\n // eslint-disable-next-line\n var difference = _this.scrollY - event.changedTouches[0].pageY;\n // eslint-disable-next-line\n var speed = (difference) / (duration);\n if (Math.abs(speed) > 1.5) {\n // eslint-disable-next-line\n var scrollTop = (difference) + ((duration) * speed);\n if (scrollTop > 0) {\n _this.viewerContainer.scrollTop += scrollTop;\n _this.updateMobileScrollerPosition();\n }\n }\n }\n _this.diagramMouseUp(event);\n _this.renderStampAnnotation(event);\n if (!Browser.isDevice) {\n _this.focusViewerContainer();\n }\n };\n /**\n * @param {PointerEvent} event - The PointerEvent.\n * @returns {void}\n */\n this.viewerContainerOnPointerEnd = function (event) {\n if (event.pointerType === 'touch') {\n event.preventDefault();\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pinchMoveEnd();\n }\n _this.pointersForTouch = [];\n _this.pointerCount = 0;\n }\n };\n // eslint-disable-next-line\n this.viewerContainerOnScroll = function (event) {\n var proxy = null;\n proxy = _this;\n var allowServerDataBind = proxy.pdfViewer.allowServerDataBinding;\n proxy.pdfViewer.enableServerDataBinding(false);\n var scrollposX = 0;\n var scrollposY = 0;\n if (event.touches && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line\n var ratio = (_this.viewerContainer.scrollHeight - _this.viewerContainer.clientHeight) / (_this.viewerContainer.clientHeight - _this.toolbarHeight);\n if (_this.isThumb) {\n _this.ispageMoved = true;\n event.preventDefault();\n _this.mobilePageNoContainer.style.display = 'block';\n scrollposX = event.touches[0].pageX - _this.scrollX;\n scrollposY = event.touches[0].pageY - _this.viewerContainer.offsetTop;\n _this.viewerContainer.scrollTop = scrollposY * ratio;\n // eslint-disable-next-line\n var containerValue = event.touches[0].pageY;\n // eslint-disable-next-line\n var toolbarHeight = _this.pdfViewer.toolbarModule ? 0 : 50;\n if (_this.viewerContainer.scrollTop !== 0 && ((containerValue) <= (_this.viewerContainer.clientHeight - toolbarHeight))) {\n _this.mobileScrollerContainer.style.top = containerValue + 'px';\n }\n }\n else if (event.touches[0].target.className !== 'e-pv-touch-ellipse') {\n if (!(_this.isWebkitMobile && (Browser.isDevice && !_this.pdfViewer.enableDesktopMode))) {\n _this.mobilePageNoContainer.style.display = 'none';\n scrollposY = _this.touchClientY - event.touches[0].pageY;\n scrollposX = _this.touchClientX - event.touches[0].pageX;\n _this.viewerContainer.scrollTop = _this.viewerContainer.scrollTop + (scrollposY);\n _this.viewerContainer.scrollLeft = _this.viewerContainer.scrollLeft + (scrollposX);\n }\n // eslint-disable-next-line\n _this.updateMobileScrollerPosition();\n _this.touchClientY = event.touches[0].pageY;\n _this.touchClientX = event.touches[0].pageX;\n }\n }\n if (_this.scrollHoldTimer) {\n clearTimeout(_this.scrollHoldTimer);\n }\n var pageIndex = _this.currentPageNumber;\n _this.scrollHoldTimer = null;\n _this.contextMenuModule.close();\n var verticalScrollValue = _this.viewerContainer.scrollTop;\n // eslint-disable-next-line max-len\n for (var i = 0; i < _this.pageCount; i++) {\n if (_this.pageSize[parseInt(i.toString(), 10)] != null) {\n var pageHeight = _this.getPageHeight(i);\n if (pageHeight < 150) {\n _this.pageStopValue = 75;\n }\n else if (pageHeight >= 150 && pageHeight < 300) {\n _this.pageStopValue = 125;\n }\n else if (pageHeight >= 300 && pageHeight < 500) {\n _this.pageStopValue = 200;\n }\n else {\n _this.pageStopValue = 300;\n }\n // eslint-disable-next-line max-len\n if ((verticalScrollValue + _this.pageStopValue) <= (_this.getPageTop(i) + pageHeight)) {\n _this.currentPageNumber = i + 1;\n _this.pdfViewer.currentPageNumber = i + 1;\n break;\n }\n }\n }\n // eslint-disable-next-line max-len\n if (_this.pdfViewer.magnificationModule && _this.pdfViewer.magnificationModule.fitType === 'fitToPage' && _this.currentPageNumber > 0) {\n if (_this.pageSize[_this.currentPageNumber - 1]) {\n if (!_this.isPanMode && (!Browser.isDevice && _this.pdfViewer.enableDesktopMode)) {\n _this.viewerContainer.scrollTop = _this.pageSize[_this.currentPageNumber - 1].top * _this.getZoomFactor();\n }\n }\n }\n _this.renderElementsVirtualScroll(_this.currentPageNumber);\n // eslint-disable-next-line max-len\n if (!_this.isViewerMouseDown && !_this.getPinchZoomed() && !_this.getPinchScrolled() && !_this.getPagesPinchZoomed() || _this.isViewerMouseWheel) {\n _this.pageViewScrollChanged(_this.currentPageNumber);\n _this.isViewerMouseWheel = false;\n }\n else {\n _this.showPageLoadingIndicator(_this.currentPageNumber - 1, false);\n }\n if (_this.pdfViewer.toolbarModule) {\n if (!isBlazor()) {\n _this.pdfViewer.toolbarModule.updateCurrentPage(_this.currentPageNumber);\n }\n _this.viewerContainer.setAttribute('aria-labelledby', _this.pdfViewer.element.id + '_pageDiv_' + (_this.currentPageNumber - 1));\n if (!isBlazor()) {\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n _this.pdfViewer.toolbarModule.updateNavigationButtons();\n }\n }\n }\n if (Browser.isDevice && !_this.pdfViewer.enableDesktopMode) {\n _this.mobileSpanContainer.innerHTML = _this.currentPageNumber.toString();\n _this.mobilecurrentPageContainer.innerHTML = _this.currentPageNumber.toString();\n }\n if (pageIndex !== _this.currentPageNumber) {\n if (proxy.pdfViewer.thumbnailViewModule && (!Browser.isDevice || _this.pdfViewer.enableDesktopMode)) {\n proxy.pdfViewer.thumbnailViewModule.gotoThumbnailImage(proxy.currentPageNumber - 1);\n proxy.pdfViewer.thumbnailViewModule.isThumbnailClicked = false;\n }\n _this.pdfViewer.firePageChange(pageIndex);\n }\n if (_this.pdfViewer.magnificationModule) {\n if (!_this.isPanMode && (!Browser.isDevice && _this.pdfViewer.enableDesktopMode)) {\n _this.pdfViewer.magnificationModule.updatePagesForFitPage(_this.currentPageNumber - 1);\n }\n }\n var currentPage = _this.getElement('_pageDiv_' + (_this.currentPageNumber - 1));\n if (currentPage) {\n currentPage.style.visibility = 'visible';\n }\n if (_this.isViewerMouseDown) {\n if (_this.getRerenderCanvasCreated() && !_this.isPanMode) {\n _this.pdfViewer.magnificationModule.clearIntervalTimer();\n }\n // eslint-disable-next-line\n var data = _this.getStoredData(_this.currentPageNumber);\n if (data) {\n _this.isDataExits = true;\n _this.initiatePageViewScrollChanged();\n _this.isDataExits = false;\n }\n else {\n // eslint-disable-next-line max-len\n var timer = _this.pdfViewer.scrollSettings.delayPageRequestTimeOnScroll ? _this.pdfViewer.scrollSettings.delayPageRequestTimeOnScroll : 100;\n _this.scrollHoldTimer = setTimeout(function () {\n _this.initiatePageViewScrollChanged();\n }, timer);\n }\n }\n if (_this.pdfViewer.annotation && _this.navigationPane.commentPanelContainer) {\n _this.pdfViewer.annotation.stickyNotesAnnotationModule.updateCommentPanelScrollTop(_this.currentPageNumber);\n }\n // eslint-disable-next-line max-len\n if ((Browser.isDevice && !_this.pdfViewer.enableDesktopMode) && event.touches && event.touches[0].target.className !== 'e-pv-touch-ellipse') {\n setTimeout(function () {\n _this.updateMobileScrollerPosition();\n }, 500);\n }\n proxy.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n this.pdfViewer = viewer;\n this.navigationPane = new NavigationPane(this.pdfViewer, this);\n this.textLayer = new TextLayer(this.pdfViewer, this);\n this.signatureModule = new Signature(this.pdfViewer, this);\n this.isWebkitMobile = /Chrome/.test(navigator.userAgent) || /Google Inc/.test(navigator.vendor) || (navigator.userAgent.indexOf('Safari') !== -1);\n }\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initializeComponent = function () {\n var element = document.getElementById(this.pdfViewer.element.id);\n if (element) {\n this.blazorUIAdaptor = isBlazor() ? new BlazorUiAdaptor(this.pdfViewer, this) : null;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewer.element.classList.add('e-pv-mobile-view');\n }\n var controlWidth = '100%';\n var toolbarDiv = void 0;\n this.viewerMainContainer = isBlazor() ? element.querySelector('.e-pv-viewer-main-container') : createElement('div', { id: this.pdfViewer.element.id + '_viewerMainContainer', className: 'e-pv-viewer-main-container' });\n this.viewerContainer = isBlazor() ? element.querySelector('.e-pv-viewer-container') : createElement('div', { id: this.pdfViewer.element.id + '_viewerContainer', className: 'e-pv-viewer-container', attrs: { 'aria-label': 'pdfviewer scroll view' } });\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.createMobilePageNumberContainer();\n }\n // eslint-disable-next-line\n this.viewerContainer.tabIndex = 0;\n if (this.pdfViewer.enableRtl) {\n this.viewerContainer.style.direction = 'rtl';\n }\n element.style.touchAction = 'pan-x pan-y';\n this.setMaximumHeight(element);\n this.mainContainer = isBlazor() ? element.querySelector('.e-pv-main-container') : createElement('div', { id: this.pdfViewer.element.id + '_mainContainer', className: 'e-pv-main-container' });\n this.mainContainer.appendChild(this.viewerMainContainer);\n element.appendChild(this.mainContainer);\n this.applyViewerHeight(this.mainContainer);\n if (this.pdfViewer.toolbarModule) {\n this.navigationPane.initializeNavigationPane();\n toolbarDiv = this.pdfViewer.toolbarModule.intializeToolbar(controlWidth);\n }\n else {\n if (isBlazor()) {\n this.navigationPane.initializeNavigationPane();\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n if (!this.pdfViewer.enableToolbar) {\n this.toolbarHeight = 0;\n toolbarDiv.style.display = 'none';\n }\n if (!this.pdfViewer.enableNavigationToolbar && ((Browser.isDevice && this.pdfViewer.enableDesktopMode) || (!Browser.isDevice))) {\n this.navigationPane.sideBarToolbar.style.display = 'none';\n this.navigationPane.sideBarToolbarSplitter.style.display = 'none';\n if (this.navigationPane.isBookmarkOpen || this.navigationPane.isThumbnailOpen) {\n this.navigationPane.updateViewerContainerOnClose();\n }\n }\n }\n }\n if (toolbarDiv) {\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, 56);\n }\n else {\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, 0);\n }\n var viewerWidth = this.pdfViewer.element.clientWidth;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n viewerWidth = viewerWidth - (this.navigationPane.sideBarToolbar ? this.navigationPane.getViewerContainerLeft() : 0) -\n (this.navigationPane.commentPanelContainer ? this.navigationPane.getViewerContainerRight() : 0);\n }\n this.viewerContainer.style.width = viewerWidth + 'px';\n this.viewerMainContainer.appendChild(this.viewerContainer);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.left = (viewerWidth - parseFloat(this.mobileScrollerContainer.style.width)) + 'px';\n this.mobilePageNoContainer.style.left = (viewerWidth / 2) - (parseFloat(this.mobilePageNoContainer.style.width) / 2) + 'px';\n this.mobilePageNoContainer.style.top = (this.pdfViewer.element.clientHeight / 2) + 'px';\n this.mobilePageNoContainer.style.display = 'none';\n this.mobilePageNoContainer.appendChild(this.mobilecurrentPageContainer);\n this.mobilePageNoContainer.appendChild(this.mobilenumberContainer);\n this.mobilePageNoContainer.appendChild(this.mobiletotalPageContainer);\n this.viewerContainer.appendChild(this.mobilePageNoContainer);\n this.viewerMainContainer.appendChild(this.mobileScrollerContainer);\n this.mobileScrollerContainer.appendChild(this.mobileSpanContainer);\n }\n this.pageContainer = createElement('div', { id: this.pdfViewer.element.id + '_pageViewContainer', className: 'e-pv-page-container', attrs: { 'tabindex': '0', 'aria-label': 'pdfviewer Page View' } });\n if (this.pdfViewer.enableRtl) {\n this.pageContainer.style.direction = 'ltr';\n }\n this.viewerContainer.appendChild(this.pageContainer);\n this.pageContainer.style.width = this.viewerContainer.clientWidth + 'px';\n if (toolbarDiv && this.pdfViewer.thumbnailViewModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.thumbnailViewModule.createThumbnailContainer();\n }\n this.createPrintPopup();\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.createGoToPagePopup();\n }\n var waitingPopup = createElement('div', { id: this.pdfViewer.element.id + '_loadingIndicator' });\n this.viewerContainer.appendChild(waitingPopup);\n createSpinner({ target: waitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(waitingPopup);\n if (isBlazor()) {\n this.contextMenuModule = new BlazorContextMenu(this.pdfViewer, this);\n // eslint-disable-next-line\n var spinnerElement = document.getElementsByClassName(this.pdfViewer.element.id + '_spinner');\n if (spinnerElement && spinnerElement[0] && (!spinnerElement[0].classList.contains('e-spin-hide'))) {\n spinnerElement[0].classList.remove('e-spin-show');\n spinnerElement[0].classList.add('e-spin-hide');\n }\n }\n else {\n this.contextMenuModule = new ContextMenu$1(this.pdfViewer, this);\n }\n this.contextMenuModule.createContextMenu();\n this.createFileInputElement();\n this.wireEvents();\n if (this.pdfViewer.textSearchModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.textSearchModule.createTextSearchBox();\n }\n if (this.pdfViewer.documentPath) {\n if (isBlazor()) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('LoadDocumentFromClient', this.pdfViewer.documentPath);\n }\n else {\n this.pdfViewer.load(this.pdfViewer.documentPath, null);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.initializeCollection();\n }\n }\n if (Browser.isDevice && this.pdfViewer.enableDesktopMode && this.pdfViewer.toolbarModule) {\n this.pdfViewer.interactionMode = 'Pan';\n }\n };\n PdfViewerBase.prototype.createMobilePageNumberContainer = function () {\n this.mobilePageNoContainer = createElement('div', { id: this.pdfViewer.element.id + '_mobilepagenoContainer', className: 'e-pv-mobilepagenoscroll-container' });\n this.mobilecurrentPageContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobilecurrentpageContainer', className: 'e-pv-mobilecurrentpage-container' });\n this.mobilenumberContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobiledashedlineContainer', className: 'e-pv-mobiledashedline-container' });\n this.mobiletotalPageContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobiletotalpageContainer', className: 'e-pv-mobiletotalpage-container' });\n this.mobileScrollerContainer = createElement('div', { id: this.pdfViewer.element.id + '_mobilescrollContainer', className: 'e-pv-mobilescroll-container' });\n this.mobileSpanContainer = createElement('span', { id: this.pdfViewer.element.id + '_mobilespanContainer', className: 'e-pv-mobilespanscroll-container' });\n this.mobileSpanContainer.innerHTML = '1';\n this.mobilecurrentPageContainer.innerHTML = '1';\n this.mobilenumberContainer.innerHTML = '―――――';\n this.mobileScrollerContainer.style.cssFloat = 'right';\n this.mobileScrollerContainer.style.width = '40px';\n this.mobileScrollerContainer.style.height = '32px';\n this.mobileScrollerContainer.style.zIndex = '100';\n this.mobilePageNoContainer.style.width = '120px';\n this.mobilePageNoContainer.style.height = '100px';\n this.mobilePageNoContainer.style.zIndex = '100';\n this.mobilePageNoContainer.style.position = 'fixed';\n this.mobileScrollerContainer.addEventListener('touchstart', this.mobileScrollContainerDown.bind(this));\n this.mobileScrollerContainer.addEventListener('touchend', this.mobileScrollContainerEnd.bind(this));\n this.mobileScrollerContainer.style.display = 'none';\n };\n /**\n * @private\n * @param {string} documentData - file name or base64 string.\n * @param {string} password - password of the PDF document.\n * @returns {void}\n */\n PdfViewerBase.prototype.initiatePageRender = function (documentData, password) {\n this.loadedData = documentData;\n this.documentId = this.createGUID();\n if (this.viewerContainer) {\n this.viewerContainer.scrollTop = 0;\n }\n this.showLoadingIndicator(true);\n this.hashId = ' ';\n this.isFileName = false;\n this.saveDocumentInfo();\n if (this.pdfViewer.interactionMode === 'Pan') {\n this.initiatePanning();\n }\n documentData = this.checkDocumentData(documentData);\n this.setFileName();\n if (this.pdfViewer.downloadFileName) {\n this.downloadFileName = this.pdfViewer.downloadFileName;\n }\n else {\n this.downloadFileName = this.pdfViewer.fileName;\n }\n var jsonObject = this.constructJsonObject(documentData, password);\n this.createAjaxRequest(jsonObject, documentData, password);\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.initiateLoadDocument = function (documentId, isFileName, fileName) {\n if (documentId) {\n this.documentId = documentId;\n }\n if (this.viewerContainer) {\n this.viewerContainer.scrollTop = 0;\n }\n this.showLoadingIndicator(true);\n this.hashId = ' ';\n this.isFileName = isFileName;\n this.saveDocumentInfo();\n if (this.pdfViewer.interactionMode === 'Pan') {\n this.initiatePanning();\n }\n this.setFileName();\n if (this.pdfViewer.fileName === null) {\n if (isFileName && fileName) {\n this.pdfViewer.fileName = fileName;\n this.jsonDocumentId = this.pdfViewer.fileName;\n }\n else {\n this.pdfViewer.fileName = 'undefined.pdf';\n this.jsonDocumentId = null;\n }\n }\n if (this.pdfViewer.downloadFileName) {\n this.downloadFileName = this.pdfViewer.downloadFileName;\n }\n else {\n this.downloadFileName = this.pdfViewer.fileName;\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.loadSuccess = function (documentDetails, password) {\n // eslint-disable-next-line\n var data = documentDetails;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n this.onControlError(500, data, this.pdfViewer.serverActionSettings.load);\n data = null;\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n // eslint-disable-next-line\n if (typeof parseInt(data) === 'number' && !isNaN(parseInt(data))) {\n // eslint-disable-next-line\n data = parseInt(data);\n break;\n }\n }\n if (data.StatusText && (data.StatusText === 'File Does not Exist')) {\n this.showLoadingIndicator(false);\n }\n // eslint-disable-next-line\n if (data.uniqueId === this.documentId || (typeof parseInt(data) === 'number' && !isNaN(parseInt(data)))) {\n this.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.load, data);\n this.requestSuccess(data, null, password);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.mobileScrollContainerDown = function (event) {\n this.ispageMoved = false;\n this.isThumb = true;\n if (this.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage != null && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var pageNumber = this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearAnnotationSelection(pageNumber);\n this.pdfViewer.toolbar.showToolbar(true);\n }\n }\n this.mobileScrollerContainer.addEventListener('touchmove', this.viewerContainerOnScroll.bind(this), true);\n };\n /**\n * @private\n * @param {MouseEvent} e - default mouse event.\n * @returns {PointModel} - retuns the bounds.\n */\n PdfViewerBase.prototype.relativePosition = function (e) {\n // eslint-disable-next-line\n var currentRect = this.viewerContainer.getBoundingClientRect();\n var left = e.clientX - currentRect.left;\n var top = e.clientY - currentRect.top;\n return { x: left, y: top };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setMaximumHeight = function (element) {\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) || (currentRect && currentRect.height === 0)) {\n element.style.minHeight = '500px';\n }\n this.updateWidth();\n this.updateHeight();\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.applyViewerHeight = function (element) {\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && currentRect && currentRect.height === 0) {\n element.style.minHeight = '500px';\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateWidth = function () {\n if (this.pdfViewer.width.toString() !== 'auto') {\n // eslint-disable-next-line\n this.pdfViewer.element.style.width = this.pdfViewer.width;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateHeight = function () {\n if (this.pdfViewer.height.toString() !== 'auto') {\n // eslint-disable-next-line\n this.pdfViewer.element.style.height = this.pdfViewer.height;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateViewerContainer = function () {\n var sideBarContentContainer = this.getElement('_sideBarContentContainer');\n if (sideBarContentContainer && sideBarContentContainer.style.display === 'none') {\n this.navigationPane.updateViewerContainerOnClose();\n }\n else if (sideBarContentContainer && sideBarContentContainer.style.display === 'block') {\n this.navigationPane.updateViewerContainerOnExpand();\n }\n else {\n this.updateViewerContainerSize();\n }\n // eslint-disable-next-line\n var toolbarModule = this.pdfViewer.toolbarModule;\n if (toolbarModule) {\n if (isBlazor()) {\n if (this.pdfViewer.enableToolbar || this.pdfViewer.enableAnnotationToolbar) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('RefreshToolbarItems');\n }\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n toolbarModule.toolbar.refreshOverflow();\n }\n if (this.pdfViewer.enableAnnotationToolbar && toolbarModule.annotationToolbarModule) {\n toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n }\n }\n }\n };\n PdfViewerBase.prototype.updateViewerContainerSize = function () {\n this.viewerContainer.style.width = this.pdfViewer.element.clientWidth + 'px';\n this.pageContainer.style.width = this.viewerContainer.offsetWidth + 'px';\n this.updateZoomValue();\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.mobileScrollContainerEnd = function (event) {\n if (!this.ispageMoved) {\n this.goToPagePopup.show();\n }\n this.isThumb = false;\n this.ispageMoved = false;\n this.mobileScrollerContainer.removeEventListener('touchmove', this.viewerContainerOnScroll.bind(this), true);\n this.mobilePageNoContainer.style.display = 'none';\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAjaxRequest = function (jsonObject, documentData, password) {\n var proxy = null;\n proxy = this;\n if (this.pdfViewer.serverActionSettings) {\n this.loadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.loadRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.load;\n this.loadRequestHandler.responseType = 'json';\n this.loadRequestHandler.mode = true;\n // eslint-disable-next-line\n jsonObject['action'] = 'Load';\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n this.loadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.loadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, this.pdfViewer.serverActionSettings.load);\n data = null;\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n // eslint-disable-next-line\n if (typeof parseInt(data) === 'number' && !isNaN(parseInt(data))) {\n // eslint-disable-next-line\n data = parseInt(data);\n break;\n }\n }\n // eslint-disable-next-line\n if (data.uniqueId === proxy.documentId || (typeof parseInt(data) === 'number' && !isNaN(parseInt(data)))) {\n proxy.updateFormFieldName(data);\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.load, data);\n proxy.requestSuccess(data, documentData, password);\n }\n }\n }\n else {\n proxy.showLoadingIndicator(false);\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Import PDF Failed'));\n }\n };\n // eslint-disable-next-line\n this.loadRequestHandler.onFailure = function (result) {\n var statusString = result.status.toString().split('')[0];\n if (statusString === '4' && result.status.toString() !== \"404\") {\n proxy.openNotificationPopup('Client error');\n }\n else {\n proxy.openNotificationPopup();\n }\n proxy.showLoadingIndicator(false);\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.load);\n };\n // eslint-disable-next-line\n this.loadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.showLoadingIndicator(false);\n // eslint-disable-next-line\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.load);\n };\n }\n };\n // EJ2-60380 - As of now, in form designer the element name is taken fromfield.ActualFieldName (with hypen) but for\n // Form fields it is taken from field.FieldName (without hypen).\n // For this reason when user taken the form feilds on button click, name of the form feilds are different with and without form designer module\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateFormFieldName = function (data) {\n if (data && data.PdfRenderedFormFields && data.PdfRenderedFormFields.length > 0) {\n var field = void 0;\n for (var i = 0; i < data.PdfRenderedFormFields.length; i++) {\n field = data.PdfRenderedFormFields[parseInt(i.toString(), 10)];\n if (field) {\n if (field.ActualFieldName) {\n field.FieldName = field.ActualFieldName;\n }\n }\n }\n }\n };\n /**\n * @private\n * @param {string} errorString - The message to be displayed.\n * @returns {void}\n */\n PdfViewerBase.prototype.openNotificationPopup = function (errorString) {\n var _this = this;\n if (this.pdfViewer.showNotificationDialog) {\n if (errorString === 'Client error') {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Clienterror');\n promise.then(function (value) {\n _this.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('Client error'));\n }\n }\n else {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Servererror');\n promise.then(function (value) {\n _this.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('Server error'));\n }\n }\n if (this.getElement('_notify')) {\n this.getElement('_notify').classList.add('e-pv-notification-large-content');\n }\n }\n };\n /**\n * @private\n * @param {string} errorString - The message to be shown.\n * @returns {void}\n */\n PdfViewerBase.prototype.showNotificationPopup = function (errorString) {\n if (!this.pdfViewer.showNotificationDialog && errorString !== '') {\n this.textLayer.createNotificationPopup(errorString);\n if (this.getElement('_notify')) {\n this.getElement('_notify').classList.add('e-pv-notification-large-content');\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.requestSuccess = function (data, documentData, password) {\n if (data && data.pageCount !== undefined) {\n if (isBlazor() && this.isPassword) {\n this.isPassword = false;\n this.isPasswordAvailable = false;\n this.pdfViewer._dotnetInstance.invokeMethodAsync('ClosePasswordDialog');\n }\n if (password && password != '') {\n this.passwordData = password;\n }\n this.pdfViewer.allowServerDataBinding = false;\n this.pageCount = data.pageCount;\n this.pdfViewer.pageCount = data.pageCount;\n this.hashId = data.hashId;\n this.documentLiveCount = data.documentLiveCount;\n this.isAnnotationCollectionRemoved = false;\n this.saveDocumentHashData();\n this.saveFormfieldsData(data);\n this.pdfViewer.allowServerDataBinding = true;\n this.digitalSignaturePages = data.digitalSignaturePages;\n this.pageRender(data);\n // eslint-disable-next-line\n var pageData = { pageCount: data.pageCount, pageSizes: data.pageSizes };\n window.sessionStorage.setItem(this.documentId + '_pagedata', JSON.stringify(pageData));\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.display = '';\n // eslint-disable-next-line\n var toolbarHeight = this.pdfViewer.toolbarModule ? this.toolbarHeight : 0;\n this.mobileScrollerContainer.style.top = (toolbarHeight) + 'px';\n }\n this.restrictionList = data.RestrictionSummary;\n this.RestrictionEnabled(this.restrictionList, false);\n }\n else {\n this.pageCount = 0;\n this.currentPageNumber = 0;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileScrollerContainer.style.display = 'none';\n }\n if (data === 4) {\n if (!isBlazor()) {\n // 4 is error code for encrypted document.\n this.renderPasswordPopup(documentData, password);\n }\n }\n else if (data === 3) {\n if (!isBlazor()) {\n // 3 is error code for corrupted document.\n this.renderCorruptPopup();\n }\n }\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateToolbarItems();\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n annotationModule.textMarkupAnnotationModule.createAnnotationSelectElement();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.RestrictionEnabled = function (restrictionSummary, isEnable) {\n if (restrictionSummary) {\n for (var i = 0; i < restrictionSummary.length; i++) {\n this.EnableRestriction(restrictionSummary[parseInt(i.toString(), 10)], isEnable);\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.DisableToolbarItems(restrictionSummary[parseInt(i.toString(), 10)], isEnable);\n }\n }\n else {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('RestrictToolbarItems', restrictionSummary, isEnable);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.EnableRestriction = function (restrictionSummary, isEnable) {\n switch (restrictionSummary) {\n case 'Print':\n this.pdfViewer.enablePrint = isEnable;\n break;\n case 'CopyContent':\n this.pdfViewer.enableTextSelection = isEnable;\n break;\n case 'FillFields':\n this.pdfViewer.enableFormFields = isEnable;\n this.enableFormFieldButton(isEnable);\n break;\n case 'EditAnnotations':\n this.pdfViewer.enableAnnotation = isEnable;\n break;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.pageRender = function (data) {\n this.document = null;\n this.passwordDialogReset();\n if (this.passwordPopup) {\n this.passwordPopup.hide();\n }\n var pageIndex = 0;\n this.initPageDiv(data);\n this.currentPageNumber = pageIndex + 1;\n this.pdfViewer.currentPageNumber = pageIndex + 1;\n this.previousZoomValue = this.pdfViewer.zoomValue;\n var isZoomMode = false;\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.isAutoZoom = true;\n if (this.pdfViewer.zoomValue && this.pdfViewer.zoomValue > 0) {\n if (this.pdfViewer.zoomValue !== 100) {\n isZoomMode = true;\n }\n this.isInitialPageMode = true;\n this.pdfViewer.magnification.zoomTo(this.pdfViewer.zoomValue);\n }\n if (this.pdfViewer.zoomMode === 'FitToWidth') {\n this.isInitialPageMode = true;\n this.pdfViewer.magnificationModule.fitToWidth();\n }\n else if (this.pdfViewer.zoomMode === 'FitToPage') {\n this.isInitialPageMode = true;\n this.pdfViewer.magnificationModule.fitToPage();\n }\n this.documentLoaded = true;\n this.pdfViewer.magnificationModule.isInitialLoading = true;\n this.onWindowResize();\n this.documentLoaded = false;\n this.pdfViewer.magnificationModule.isInitialLoading = false;\n }\n this.isDocumentLoaded = true;\n // eslint-disable-next-line\n var pageWidth = this.pageSize[parseInt(pageIndex.toString(), 10)].width;\n if (this.renderedPagesList.indexOf(pageIndex) === -1 && !isZoomMode) {\n this.createRequestForRender(pageIndex);\n var pageNumber = pageIndex + 1;\n if (pageNumber < this.pageCount) {\n this.createRequestForRender(pageNumber);\n pageNumber = pageNumber + 1;\n }\n if (this.pageSize[parseInt(pageNumber.toString(), 10)]) {\n var pageTop = this.getPageTop(pageNumber);\n var viewerHeight = this.viewerContainer.clientHeight;\n while (viewerHeight > pageTop) {\n if (this.pageSize[parseInt(pageNumber.toString(), 10)]) {\n this.renderPageElement(pageNumber);\n this.createRequestForRender(pageNumber);\n pageTop = this.getPageTop(pageNumber);\n pageNumber = pageNumber + 1;\n }\n else {\n break;\n }\n }\n }\n }\n this.showLoadingIndicator(false);\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.uploadedDocumentName = null;\n this.pdfViewer.toolbarModule.updateCurrentPage(this.currentPageNumber);\n this.pdfViewer.toolbarModule.updateToolbarItems();\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.enableAnnotationAddTools(true);\n }\n // eslint-disable-next-line max-len\n this.viewerContainer.setAttribute('aria-labelledby', this.pdfViewer.element.id + '_pageDiv_' + (this.currentPageNumber - 1));\n }\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.mobileSpanContainer.innerHTML = this.currentPageNumber.toString();\n this.mobilecurrentPageContainer.innerHTML = this.currentPageNumber.toString();\n }\n };\n PdfViewerBase.prototype.renderPasswordPopup = function (documentData, password) {\n var _this = this;\n if (!isBlazor()) {\n if (!this.isPasswordAvailable) {\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.isPasswordAvailable = true;\n this.createPasswordPopup();\n this.pdfViewer.fireDocumentLoadFailed(true, null);\n this.passwordPopup.show();\n }\n else {\n this.pdfViewer.fireDocumentLoadFailed(true, password);\n this.promptElement.classList.add('e-pv-password-error');\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Invalid Password');\n this.promptElement.focus();\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.passwordPopup.show();\n }\n }\n else {\n // eslint-disable-next-line\n var promptElement_1 = document.getElementById(this.pdfViewer.element.id + '_prompt');\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_EnterPassword');\n promise.then(function (value) {\n promptElement_1.textContent = value;\n });\n // eslint-disable-next-line\n var passwordInput_1 = document.querySelector('#' + this.pdfViewer.element.id + '_password_input');\n passwordInput_1.addEventListener('keyup', function () {\n if (passwordInput_1.value === '') {\n _this.passwordDialogReset();\n }\n });\n passwordInput_1.addEventListener('focus', function () {\n passwordInput_1.parentElement.classList.add('e-input-focus');\n });\n passwordInput_1.addEventListener('blur', function () {\n passwordInput_1.parentElement.classList.remove('e-input-focus');\n });\n if (!this.isPasswordAvailable) {\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n this.isPasswordAvailable = true;\n this.pdfViewer.fireDocumentLoadFailed(true, null);\n }\n else {\n this.pdfViewer.fireDocumentLoadFailed(true, password);\n promptElement_1.classList.add('e-pv-password-error');\n var promise_1 = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_InvalidPassword');\n promise_1.then(function (value) {\n promptElement_1.textContent = value;\n });\n promptElement_1.focus();\n if (this.isFileName) {\n this.document = documentData;\n }\n else {\n this.document = 'data:application/pdf;base64,' + documentData;\n }\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenPasswordDialog');\n }\n };\n PdfViewerBase.prototype.renderCorruptPopup = function () {\n this.pdfViewer.fireDocumentLoadFailed(false, null);\n this.documentId = null;\n if (this.pdfViewer.showNotificationDialog) {\n if (!isBlazor()) {\n this.createCorruptedPopup();\n this.corruptPopup.show();\n }\n else {\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenCorruptedDialog');\n }\n }\n };\n PdfViewerBase.prototype.constructJsonObject = function (documentData, password) {\n var jsonObject;\n if (password) {\n this.isPasswordAvailable = true;\n this.passwordData = password;\n // eslint-disable-next-line max-len\n jsonObject = { document: documentData, password: password, zoomFactor: \"1\", isFileName: this.isFileName.toString(), uniqueId: this.documentId, showDigitalSignatureAppearance: this.pdfViewer.showDigitalSignatureAppearance };\n }\n else {\n this.isPasswordAvailable = false;\n this.passwordData = '';\n jsonObject = { document: documentData, zoomFactor: \"1\", isFileName: this.isFileName.toString(), uniqueId: this.documentId, hideEmptyDigitalSignatureFields: this.pdfViewer.hideEmptyDigitalSignatureFields, showDigitalSignatureAppearance: this.pdfViewer.showDigitalSignatureAppearance };\n }\n return jsonObject;\n };\n PdfViewerBase.prototype.checkDocumentData = function (documentData) {\n var base64String = documentData.split('base64,')[1];\n if (base64String === undefined) {\n this.isFileName = true;\n this.jsonDocumentId = documentData;\n if (this.pdfViewer.fileName === null) {\n // eslint-disable-next-line max-len\n var documentStringArray = (documentData.indexOf('\\\\') !== -1) ? documentData.split('\\\\') : documentData.split('/');\n this.pdfViewer.fileName = documentStringArray[documentStringArray.length - 1];\n this.jsonDocumentId = this.pdfViewer.fileName;\n base64String = documentData;\n }\n }\n else {\n this.jsonDocumentId = null;\n }\n return base64String;\n };\n PdfViewerBase.prototype.setFileName = function () {\n if (this.pdfViewer.fileName === null) {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.uploadedDocumentName) {\n this.pdfViewer.fileName = this.pdfViewer.toolbarModule.uploadedDocumentName;\n this.jsonDocumentId = this.pdfViewer.fileName;\n }\n else {\n this.pdfViewer.fileName = 'undefined.pdf';\n this.jsonDocumentId = null;\n }\n }\n };\n PdfViewerBase.prototype.saveDocumentInfo = function () {\n window.sessionStorage.setItem('currentDocument', this.documentId);\n window.sessionStorage.setItem('serviceURL', this.pdfViewer.serviceUrl);\n if (this.pdfViewer.serverActionSettings) {\n window.sessionStorage.setItem('unload', this.pdfViewer.serverActionSettings.unload);\n }\n };\n PdfViewerBase.prototype.saveDocumentHashData = function () {\n var hashId = '';\n if (Browser.isIE || Browser.info.name === 'edge') {\n hashId = encodeURI(this.hashId);\n }\n else {\n hashId = this.hashId;\n }\n window.sessionStorage.setItem('hashId', hashId);\n if (this.documentLiveCount) {\n window.sessionStorage.setItem('documentLiveCount', this.documentLiveCount.toString());\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.saveFormfieldsData = function (data) {\n this.pdfViewer.isFormFieldDocument = false;\n this.enableFormFieldButton(false);\n if (data && data.PdfRenderedFormFields && data.PdfRenderedFormFields.length > 0) {\n if (this.formfieldvalue) {\n if (this.pdfViewer.formFieldsModule) {\n this.setItemInSessionStorage(this.formfieldvalue, '_formfields');\n }\n this.formfieldvalue = null;\n }\n else if (this.pdfViewer.formFieldsModule) {\n for (var i = 0; i < data.PdfRenderedFormFields.length; i++) {\n if (data.PdfRenderedFormFields[parseInt(i.toString(), 10)].FieldName == '') {\n data.PdfRenderedFormFields.splice(i, 1);\n }\n }\n this.setItemInSessionStorage(data.PdfRenderedFormFields, '_formfields');\n }\n if (this.pdfViewer.enableFormFields && this.pdfViewer.formFieldsModule) {\n this.pdfViewer.formFieldsModule.formFieldCollections();\n }\n if (this.pdfViewer.formFieldCollections.length > 0) {\n this.pdfViewer.isFormFieldDocument = true;\n this.enableFormFieldButton(true);\n }\n }\n };\n /**\n * @param {boolean} isEnable - Enable or disable the toolbar itema.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.enableFormFieldButton = function (isEnable) {\n if (isEnable) {\n this.pdfViewer.isFormFieldDocument = true;\n }\n if (this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.submitItem) {\n this.pdfViewer.toolbarModule.toolbar.enableItems(this.pdfViewer.toolbarModule.submitItem.parentElement, isEnable);\n }\n };\n PdfViewerBase.prototype.updateWaitingPopup = function (pageNumber) {\n if (this.pageSize[parseInt(pageNumber.toString(), 10)].top != null) {\n // eslint-disable-next-line max-len\n var pageCurrentRect = this.getElement('_pageDiv_' + pageNumber).getBoundingClientRect();\n var waitingPopup = this.getElement('_pageDiv_' + pageNumber).firstChild.firstChild;\n if (pageCurrentRect.top < 0) {\n if (this.toolbarHeight + (this.viewerContainer.clientHeight / 2) - pageCurrentRect.top < pageCurrentRect.height) {\n waitingPopup.style.top = ((this.viewerContainer.clientHeight / 2) - pageCurrentRect.top) - this.toolbarHeight + 'px';\n }\n else {\n if (this.toolbarHeight + (pageCurrentRect.bottom / 2) - pageCurrentRect.top < pageCurrentRect.height) {\n waitingPopup.style.top = ((pageCurrentRect.bottom / 2) - pageCurrentRect.top) - this.toolbarHeight + 'px';\n }\n }\n }\n else {\n waitingPopup.style.top = this.viewerContainer.clientHeight / 2 + 'px';\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && pageCurrentRect.width > this.viewerContainer.clientWidth) {\n waitingPopup.style.left = (this.viewerContainer.clientWidth / 2) + (this.viewerContainer.scrollLeft) + 'px';\n }\n else if (this.getZoomFactor() > 1.25 && pageCurrentRect.width > this.viewerContainer.clientWidth) {\n waitingPopup.style.left = this.viewerContainer.clientWidth / 2 + 'px';\n }\n else {\n waitingPopup.style.left = pageCurrentRect.width / 2 + 'px';\n }\n }\n };\n /**\n * @private\n * @returns {number} - returned the page value.\n */\n PdfViewerBase.prototype.getActivePage = function (isPageNumber) {\n if (this.activeElements && !isNullOrUndefined(this.activeElements.activePageID)) {\n if (isPageNumber) {\n return this.activeElements.activePageID + 1;\n }\n else {\n return this.activeElements.activePageID;\n }\n }\n else {\n if (isPageNumber) {\n return this.currentPageNumber;\n }\n else {\n return this.currentPageNumber - 1;\n }\n }\n };\n PdfViewerBase.prototype.createWaitingPopup = function (pageNumber) {\n // eslint-disable-next-line max-len\n var waitingPopup = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageNumber);\n if (waitingPopup) {\n createSpinner({ target: waitingPopup });\n this.setLoaderProperties(waitingPopup);\n }\n };\n PdfViewerBase.prototype.showLoadingIndicator = function (isShow) {\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup) {\n if (isShow) {\n waitingPopup.style.display = 'block';\n showSpinner(waitingPopup);\n }\n else {\n waitingPopup.style.display = 'none';\n hideSpinner(waitingPopup);\n }\n }\n };\n PdfViewerBase.prototype.showPageLoadingIndicator = function (pageIndex, isShow) {\n var waitingPopup = this.getElement('_pageDiv_' + pageIndex);\n if (waitingPopup != null) {\n if (isShow) {\n showSpinner(waitingPopup);\n }\n else {\n hideSpinner(waitingPopup);\n }\n this.updateWaitingPopup(pageIndex);\n }\n };\n /**\n * @param {boolean} isShow - Show or hide print loading indicator.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.showPrintLoadingIndicator = function (isShow) {\n var printWaitingPopup = this.getElement('_printLoadingIndicator');\n if (printWaitingPopup != null) {\n if (isShow) {\n this.printMainContainer.style.display = 'block';\n showSpinner(printWaitingPopup);\n }\n else {\n this.printMainContainer.style.display = 'none';\n hideSpinner(printWaitingPopup);\n }\n }\n };\n PdfViewerBase.prototype.setLoaderProperties = function (element) {\n var spinnerElement = element.firstChild.firstChild.firstChild;\n if (spinnerElement) {\n spinnerElement.style.height = '48px';\n spinnerElement.style.width = '48px';\n spinnerElement.style.transformOrigin = '24px 24px 24px';\n }\n };\n /**\n * @param {number} pageNumber - Specify the pageNumber.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.updateScrollTop = function (pageNumber) {\n var _this = this;\n // eslint-disable-next-line\n if (this.pageSize[pageNumber] != null) {\n this.renderElementsVirtualScroll(pageNumber);\n this.viewerContainer.scrollTop = this.getPageTop(pageNumber);\n if (this.renderedPagesList.indexOf(pageNumber) === -1) {\n this.createRequestForRender(pageNumber);\n }\n setTimeout(function () {\n var currentPageNumber = pageNumber + 1;\n if (currentPageNumber !== _this.currentPageNumber) {\n _this.pdfViewer.currentPageNumber = currentPageNumber;\n _this.currentPageNumber = currentPageNumber;\n if (_this.pdfViewer.toolbarModule) {\n _this.pdfViewer.toolbarModule.updateCurrentPage(currentPageNumber);\n }\n }\n }, 100);\n }\n };\n /**\n * @private\n * @returns {number} - Returns the zoom factor value.\n */\n PdfViewerBase.prototype.getZoomFactor = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.zoomFactor;\n }\n else {\n // default value\n return 1;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns whether the pinch zoom is performed or not.\n */\n PdfViewerBase.prototype.getPinchZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPinchZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} -Returns whether the zoom is performed or not.\n */\n PdfViewerBase.prototype.getMagnified = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isMagnified;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPinchScrolled = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPinchScrolled;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPagesPinchZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPagePinchZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getPagesZoomed = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isPagesZoomed;\n }\n else {\n // default value\n return false;\n }\n };\n PdfViewerBase.prototype.getRerenderCanvasCreated = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.isRerenderCanvasCreated;\n }\n else {\n // default value\n return false;\n }\n };\n /**\n * @private\n * @returns {string} - retrun the docuumentid.\n */\n PdfViewerBase.prototype.getDocumentId = function () {\n return this.documentId;\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.download = function () {\n if (this.pageCount > 0) {\n this.createRequestForDownload();\n }\n };\n /**\n * @private\n * @returns {promise} - Returns the blob object.\n */\n PdfViewerBase.prototype.saveAsBlob = function () {\n var _this = this;\n if (this.pageCount > 0) {\n return new Promise(function (resolve, reject) {\n _this.saveAsBlobRequest().then(function (value) {\n resolve(value);\n });\n });\n }\n return null;\n };\n PdfViewerBase.prototype.saveAsBlobRequest = function () {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject = proxy.constructJsonDownload();\n _this.dowonloadRequestHandler = new AjaxHandler(_this.pdfViewer);\n _this.dowonloadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.download;\n _this.dowonloadRequestHandler.responseType = 'text';\n _this.dowonloadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (typeof data !== 'object' && data.indexOf('data:application/pdf') === -1) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.download);\n data = null;\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.download, data);\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/pdf');\n resolve(blobUrl);\n }\n }\n };\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n // eslint-disable-next-line\n _this.dowonloadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n });\n return promise;\n };\n /**\n * @param {boolean} isTriggerEvent - check to trigger the event.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.clear = function (isTriggerEvent) {\n var proxy = this;\n var pdfViewer = proxy.pdfViewer;\n var printModule = pdfViewer.printModule;\n var textSearchModule = pdfViewer.textSearchModule;\n var bookmarkViewModule = pdfViewer.bookmarkViewModule;\n var thumbnailViewModule = pdfViewer.thumbnailView;\n var annotationModule = pdfViewer.annotation;\n var magnificationModule = pdfViewer.magnificationModule;\n var textSelectionModule = pdfViewer.textSelectionModule;\n var formFieldsModule = pdfViewer.formFieldsModule;\n var signatureModule = proxy.signatureModule;\n proxy.isPasswordAvailable = false;\n proxy.isDocumentLoaded = false;\n proxy.isInitialLoaded = false;\n proxy.isImportAction = false;\n proxy.annotationPageList = [];\n proxy.annotationComments = null;\n pdfViewer.annotationCollection = [];\n pdfViewer.signatureCollection = [];\n pdfViewer.formFieldCollection = [];\n proxy.isAnnotationCollectionRemoved = false;\n proxy.documentAnnotationCollections = null;\n proxy.isDrawnCompletely = false;\n proxy.annotationRenderredList = [];\n proxy.isImportAction = false;\n proxy.isImportedAnnotation = false;\n proxy.importedAnnotation = [];\n proxy.isStorageExceed = false;\n proxy.annotationStorage = {};\n proxy.formFieldStorage = {};\n proxy.downloadCollections = {};\n proxy.annotationEvent = null;\n proxy.highestWidth = 0;\n proxy.highestHeight = 0;\n proxy.requestLists = [];\n proxy.tilerequestLists = [];\n proxy.isToolbarInkClicked = false;\n pdfViewer.formFieldCollections = [];\n proxy.passwordData = '';\n proxy.isFocusField = false;\n proxy.focusField = [];\n proxy.updateDocumentEditedProperty(false);\n pdfViewer.clipboardData.clipObject = {};\n if (pdfViewer.formDesignerModule) {\n pdfViewer.formDesignerModule.formFieldIndex = 0;\n if (proxy.activeElements) {\n pdfViewer.clearSelection(proxy.activeElements.activePageID);\n }\n pdfViewer.zIndexTable = [];\n }\n proxy.initiateTextSelectMode();\n proxy.RestrictionEnabled(proxy.restrictionList, true);\n proxy.restrictionList = null;\n if (!Browser.isDevice || pdfViewer.enableDesktopMode) {\n if (proxy.navigationPane.sideBarToolbar) {\n proxy.navigationPane.clear();\n }\n }\n if (!isBlazor() && Browser.isDevice || !pdfViewer.enableDesktopMode) {\n proxy.navigationPane.clear();\n }\n if (thumbnailViewModule) {\n thumbnailViewModule.clear();\n }\n if (bookmarkViewModule) {\n bookmarkViewModule.clear();\n }\n if (magnificationModule) {\n magnificationModule.isMagnified = false;\n magnificationModule.clearIntervalTimer();\n }\n if (textSelectionModule) {\n textSelectionModule.clearTextSelection();\n }\n if (textSearchModule) {\n textSearchModule.resetTextSearch();\n }\n if (annotationModule) {\n annotationModule.clear();\n annotationModule.initializeCollection();\n }\n if (formFieldsModule) {\n formFieldsModule.readOnlyCollection = [];\n formFieldsModule.signatureFieldCollection = [];\n formFieldsModule.renderedPageList = [];\n formFieldsModule.currentTarget = null;\n }\n if (signatureModule) {\n signatureModule.signaturecollection = [];\n signatureModule.outputcollection = [];\n signatureModule.signAnnotationIndex = [];\n }\n if (proxy.pageSize) {\n proxy.pageSize = [];\n }\n if (proxy.renderedPagesList) {\n proxy.renderedPagesList = [];\n }\n if (proxy.pageContainer) {\n while (proxy.pageContainer.hasChildNodes()) {\n proxy.pageContainer.removeChild(proxy.pageContainer.lastChild);\n }\n }\n if (proxy.pageCount > 0) {\n proxy.unloadDocument(proxy);\n // eslint-disable-next-line\n proxy.textLayer.characterBound = new Array();\n proxy.loadRequestHandler && proxy.loadRequestHandler.clear();\n proxy.virtualLoadRequestHandler && proxy.virtualLoadRequestHandler.clear();\n proxy.pageRequestHandler && proxy.pageRequestHandler.clear();\n proxy.dowonloadRequestHandler && proxy.dowonloadRequestHandler.clear();\n proxy.importAnnotationRequestHandler && proxy.importAnnotationRequestHandler.clear();\n proxy.exportAnnotationRequestHandler && proxy.exportAnnotationRequestHandler.clear();\n proxy.importFormFieldsRequestHandler && proxy.importFormFieldsRequestHandler.clear();\n proxy.exportFormFieldsRequestHandler && proxy.exportFormFieldsRequestHandler.clear();\n if (printModule && printModule.printRequestHandler) {\n printModule.printRequestHandler.clear();\n }\n }\n proxy.windowSessionStorageClear();\n if (proxy.pinchZoomStorage) {\n proxy.pinchZoomStorage = [];\n }\n if ((proxy.previousZoomValue || proxy.previousZoomValue === 0) && proxy.previousZoomValue !== pdfViewer.zoomValue) {\n pdfViewer.zoomValue = proxy.previousZoomValue;\n }\n if (isTriggerEvent && proxy.pageCount > 0) {\n pdfViewer.fireDocumentUnload(this.pdfViewer.fileName);\n }\n this.pdfViewer.fileName = null;\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.destroy = function () {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewer.element.classList.remove('e-pv-mobile-view');\n }\n this.unWireEvents();\n this.clear(false);\n this.pageContainer.parentNode ? this.pageContainer.parentNode.removeChild(this.pageContainer) : null;\n this.viewerContainer.parentNode ? this.viewerContainer.parentNode.removeChild(this.viewerContainer) : null;\n if (this.contextMenuModule) {\n var contextMenuElement = this.contextMenuModule.contextMenuElement;\n contextMenuElement && contextMenuElement.ej2_instances && contextMenuElement.ej2_instances.length > 0 ? this.contextMenuModule.destroy() : null;\n }\n if (this.pdfViewer.toolbarModule) {\n this.navigationPane.destroy();\n }\n var measureElement = document.getElementById('measureElement');\n if (measureElement) {\n measureElement = undefined;\n }\n };\n /**\n * @param {PdfViewerBase} proxy - PdfviewerBase class.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.unloadDocument = function (proxy) {\n var documentId = '';\n if (Browser.isIE || Browser.info.name === 'edge') {\n documentId = decodeURI(window.sessionStorage.getItem('hashId'));\n }\n else {\n documentId = proxy.hashId ? proxy.hashId : window.sessionStorage.getItem('hashId');\n }\n var documentLiveCount = window.sessionStorage.getItem('documentLiveCount');\n if (documentId !== null) {\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: documentId, documentLiveCount: documentLiveCount, action: 'Unload', elementId: proxy.pdfViewer.element.id };\n var actionName = window.sessionStorage.getItem('unload');\n if (window.sessionStorage.getItem('serviceURL') && window.sessionStorage.getItem('serviceURL') !== 'undefined') {\n try {\n // eslint-disable-next-line\n var browserSupportsKeepalive = 'keepalive' in new Request('');\n if (browserSupportsKeepalive) {\n // eslint-disable-next-line\n var headerValue = this.setUnloadRequestHeaders();\n var credentialsData = this.pdfViewer.ajaxRequestSettings.withCredentials ? 'include' : 'omit';\n fetch(window.sessionStorage.getItem('serviceURL') + '/' + actionName, {\n method: 'POST',\n credentials: credentialsData,\n headers: headerValue,\n body: JSON.stringify(jsonObject)\n });\n }\n }\n catch (error) {\n this.unloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.unloadRequestHandler.send(jsonObject);\n }\n }\n else if (isBlazor()) {\n this.clearCache(actionName, jsonObject, proxy);\n }\n }\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.zoomFactor = 1;\n }\n this.formFieldCollection = [];\n this.textrequestLists = [];\n window.sessionStorage.removeItem('hashId');\n window.sessionStorage.removeItem('documentLiveCount');\n if (this.documentId) {\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n window.sessionStorage.removeItem(this.documentId + '_formDesigner');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n window.sessionStorage.removeItem(this.documentId + '_pagedata');\n for (var i = 0; i < this.sessionStorage.length; i++) {\n window.sessionStorage.removeItem(this.sessionStorage[parseInt(i.toString(), 10)]);\n }\n }\n };\n PdfViewerBase.prototype.clearCache = function (actionName, jsonObject, proxy) {\n this.unloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.unloadRequestHandler.url = window.sessionStorage.getItem('serviceURL') + '/' + actionName;\n this.unloadRequestHandler.mode = false;\n this.unloadRequestHandler.responseType = null;\n this.unloadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.unloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n if (data.indexOf('Document') === -1) {\n proxy.onControlError(500, data, actionName);\n data = null;\n }\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.unload, data);\n }\n }\n };\n // eslint-disable-next-line\n this.unloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, actionName);\n };\n // eslint-disable-next-line\n this.unloadRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, actionName);\n };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setUnloadRequestHeaders = function () {\n // eslint-disable-next-line\n var myHeaders = new Headers();\n myHeaders.append('Content-Type', 'application/json;charset=UTF-8');\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n myHeaders.append(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerValue);\n }\n return myHeaders;\n };\n PdfViewerBase.prototype.windowSessionStorageClear = function () {\n window.sessionStorage.removeItem('currentDocument');\n window.sessionStorage.removeItem('serviceURL');\n window.sessionStorage.removeItem('unload');\n for (var i = 0; i < this.sessionStorage.length; i++) {\n window.sessionStorage.removeItem(this.sessionStorage[parseInt(i.toString(), 10)]);\n }\n };\n PdfViewerBase.prototype.updateCommentPanel = function () {\n // eslint-disable-next-line\n var moreOptionsButton = document.querySelectorAll('.e-pv-more-options-button');\n for (var i = 0; i < moreOptionsButton.length; i++) {\n moreOptionsButton[parseInt(i.toString(), 10)].style.visibility = 'hidden';\n }\n // eslint-disable-next-line\n var commentTextBox = document.querySelectorAll('.e-pv-new-comments-div');\n for (var j = 0; j < commentTextBox.length; j++) {\n commentTextBox[parseInt(j.toString(), 10)].style.display = 'none';\n }\n // eslint-disable-next-line\n var commentContainer = document.querySelectorAll('.e-pv-comments-border');\n for (var j = 0; j < commentContainer.length; j++) {\n commentContainer[parseInt(j.toString(), 10)].classList.remove('e-pv-comments-border');\n }\n // eslint-disable-next-line\n var editableElement = document.querySelectorAll('.e-editable-inline');\n for (var j = 0; j < editableElement.length; j++) {\n editableElement[parseInt(j.toString(), 10)].style.display = 'none';\n }\n // eslint-disable-next-line\n var commentSelect = document.querySelectorAll('.e-pv-comments-select');\n for (var z = 0; z < commentSelect.length; z++) {\n commentSelect[parseInt(z.toString(), 10)].classList.remove('e-pv-comments-select');\n }\n // eslint-disable-next-line\n var commentsDiv = document.querySelectorAll('.e-pv-comments-div');\n for (var j = 0; j < commentsDiv.length; j++) {\n commentsDiv[parseInt(j.toString(), 10)].style.minHeight = 60 + 'px';\n }\n };\n /**\n * @param {boolean} isMouseDown - check whether the mouse down is triggered.\n * @returns {void}\n * @private\n */\n PdfViewerBase.prototype.focusViewerContainer = function (isMouseDown) {\n var scrollX = window.scrollX;\n var scrollY = window.scrollY;\n // eslint-disable-next-line\n var parentNode = this.getScrollParent(this.viewerContainer);\n var scrollNodeX = 0;\n var scrollNodeY = 0;\n if (parentNode !== null) {\n scrollNodeX = parentNode.scrollLeft;\n scrollNodeY = parentNode.scrollTop;\n }\n this.viewerContainer.focus();\n if (this.currentPageNumber > 0) {\n this.viewerContainer.setAttribute('aria-labelledby', this.pdfViewer.element.id + '_pageDiv_' + (this.currentPageNumber - 1));\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stickyNotesAnnotationModule.accordionContainer) {\n this.updateCommentPanel();\n }\n // eslint-disable-next-line max-len\n if ((navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > -1 || navigator.userAgent.indexOf('Edge') !== -1) && parentNode !== null) {\n parentNode.scrollLeft = scrollNodeX;\n parentNode.scrollTop = scrollNodeY;\n }\n else if (parentNode !== null) {\n parentNode.scrollTo(scrollNodeX, scrollNodeY);\n }\n window.scrollTo(scrollX, scrollY);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.getScrollParent = function (node) {\n if (node === null || node.nodeName === 'HTML') {\n return null;\n }\n var style = getComputedStyle(node);\n if (this.viewerContainer.id !== node.id && (style.overflowY === 'scroll' || style.overflowY === 'auto')) {\n return node;\n }\n else {\n return this.getScrollParent(node.parentNode);\n }\n };\n PdfViewerBase.prototype.createCorruptedPopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_corrupted_popup', className: 'e-pv-corrupted-popup' });\n this.pageContainer.appendChild(popupElement);\n this.corruptPopup = new Dialog({\n showCloseIcon: true, closeOnEscape: true, isModal: true,\n // eslint-disable-next-line max-len\n header: '
    ' + this.pdfViewer.localeObj.getConstant('File Corrupted') + '
    ', visible: false,\n // eslint-disable-next-line max-len\n buttons: [{ buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.closeCorruptPopup.bind(this) }],\n target: this.pdfViewer.element, beforeClose: function () {\n _this.corruptPopup.destroy();\n _this.getElement('_corrupted_popup').remove();\n _this.corruptPopup = null;\n var waitingPopup = _this.getElement('_loadingIndicator');\n if (waitingPopup != null) {\n hideSpinner(waitingPopup);\n }\n }\n });\n if (this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n this.corruptPopup.content = '
    ' + this.pdfViewer.localeObj.getConstant('File Corrupted Content') + '
    ';\n this.corruptPopup.enableRtl = true;\n }\n else {\n // eslint-disable-next-line max-len\n this.corruptPopup.content = '
    ' + this.pdfViewer.localeObj.getConstant('File Corrupted Content') + '
    ';\n }\n this.corruptPopup.appendTo(popupElement);\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.hideLoadingIndicator = function () {\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.closeCorruptPopup = function () {\n this.corruptPopup.hide();\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.createPrintPopup = function () {\n var element = document.getElementById(this.pdfViewer.element.id);\n this.printMainContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printcontainer',\n className: 'e-pv-print-popup-container'\n });\n element.appendChild(this.printMainContainer);\n this.printMainContainer.style.display = 'none';\n var printWaitingPopup = createElement('div', {\n id: this.pdfViewer.element.id + '_printLoadingIndicator',\n className: 'e-pv-print-loading-container'\n });\n this.printMainContainer.appendChild(printWaitingPopup);\n createSpinner({ target: printWaitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(printWaitingPopup);\n };\n PdfViewerBase.prototype.createGoToPagePopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_goTopage_popup', className: 'e-pv-gotopage-popup' });\n this.goToPageElement = createElement('span', { id: this.pdfViewer.element.id + '_prompt' });\n this.goToPageElement.textContent = this.pdfViewer.localeObj.getConstant('Enter pagenumber');\n popupElement.appendChild(this.goToPageElement);\n var inputContainer = createElement('span', { className: 'e-pv-text-input' });\n // eslint-disable-next-line max-len\n this.goToPageInput = createElement('input', { id: this.pdfViewer.element.id + '_page_input', className: 'e-input' });\n this.goToPageInput.type = 'text';\n this.goToPageInput.style.maxWidth = '80%';\n this.pageNoContainer = createElement('span', { className: '.e-pv-number-ofpages' });\n inputContainer.appendChild(this.goToPageInput);\n inputContainer.appendChild(this.pageNoContainer);\n popupElement.appendChild(inputContainer);\n this.pageContainer.appendChild(popupElement);\n this.goToPagePopup = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true,\n header: this.pdfViewer.localeObj.getConstant('GoToPage'), visible: false, buttons: [\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') },\n click: this.GoToPageCancelClick.bind(this)\n },\n // eslint-disable-next-line max-len\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('Apply'), disabled: true, cssClass: 'e-pv-gotopage-apply-btn', isPrimary: true },\n click: this.GoToPageApplyClick.bind(this)\n }\n ], close: this.closeGoToPagePopUp.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.goToPagePopup.enableRtl = true;\n }\n this.goToPagePopup.appendTo(popupElement);\n if (!isBlazor()) {\n var goToPageTextBox = new NumericTextBox({ format: '##', showSpinButton: false });\n goToPageTextBox.appendTo(this.goToPageInput);\n }\n this.goToPageInput.addEventListener('keyup', function () {\n // eslint-disable-next-line\n var inputValue = _this.goToPageInput.value;\n if (inputValue !== '' && parseFloat(inputValue) > 0 && (_this.pdfViewer.pageCount + 1) > parseFloat(inputValue)) {\n _this.EnableApplyButton();\n }\n else {\n _this.DisableApplyButton();\n }\n });\n };\n PdfViewerBase.prototype.closeGoToPagePopUp = function () {\n this.goToPageInput.value = '';\n this.DisableApplyButton();\n };\n PdfViewerBase.prototype.EnableApplyButton = function () {\n // eslint-disable-next-line\n var popupElements = document.getElementsByClassName('e-pv-gotopage-apply-btn')[0];\n popupElements.removeAttribute('disabled');\n };\n PdfViewerBase.prototype.DisableApplyButton = function () {\n // eslint-disable-next-line\n var popupElements = document.getElementsByClassName('e-pv-gotopage-apply-btn')[0];\n popupElements.setAttribute('disabled', true);\n };\n PdfViewerBase.prototype.GoToPageCancelClick = function () {\n this.goToPagePopup.hide();\n };\n PdfViewerBase.prototype.GoToPageApplyClick = function () {\n this.goToPagePopup.hide();\n // eslint-disable-next-line\n var pageNumber = this.goToPageInput.value;\n this.pdfViewer.navigation.goToPage(pageNumber);\n this.updateMobileScrollerPosition();\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateMobileScrollerPosition = function () {\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.mobileScrollerContainer) {\n // eslint-disable-next-line\n var ratio = (this.viewerContainer.scrollHeight - this.viewerContainer.clientHeight) / (this.viewerContainer.clientHeight - 56);\n // eslint-disable-next-line\n var differenceRatio = (this.viewerContainer.scrollTop) / ratio;\n // eslint-disable-next-line\n var toolbarHeight = this.pdfViewer.toolbarModule ? this.toolbarHeight : 0;\n this.mobileScrollerContainer.style.top = (toolbarHeight + differenceRatio) + 'px';\n }\n };\n PdfViewerBase.prototype.createPasswordPopup = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n var popupElement = createElement('div', { id: this.pdfViewer.element.id + '_password_popup', className: 'e-pv-password-popup', attrs: { 'tabindex': '-1' } });\n this.promptElement = createElement('span', { id: this.pdfViewer.element.id + '_prompt', attrs: { 'tabindex': '-1' } });\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Enter Password');\n popupElement.appendChild(this.promptElement);\n var inputContainer = createElement('span', { className: 'e-input-group e-pv-password-input' });\n // eslint-disable-next-line max-len\n this.passwordInput = createElement('input', { id: this.pdfViewer.element.id + '_password_input', className: 'e-input' });\n this.passwordInput.type = 'password';\n this.passwordInput.name = 'Required';\n inputContainer.appendChild(this.passwordInput);\n popupElement.appendChild(inputContainer);\n this.pageContainer.appendChild(popupElement);\n this.passwordPopup = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true,\n header: this.pdfViewer.localeObj.getConstant('Password Protected'), visible: false,\n close: this.passwordCancel.bind(this), target: this.pdfViewer.element, beforeClose: function () {\n _this.passwordPopup.destroy();\n _this.getElement('_password_popup').remove();\n _this.passwordPopup = null;\n var waitingPopup = _this.getElement('_loadingIndicator');\n if (waitingPopup != null) {\n hideSpinner(waitingPopup);\n }\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.passwordPopup.buttons = [\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.applyPassword.bind(this)\n },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.passwordCancelClick.bind(this) }\n ];\n }\n else {\n this.passwordPopup.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.passwordCancelClick.bind(this) },\n {\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.applyPassword.bind(this)\n }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.passwordPopup.enableRtl = true;\n }\n this.passwordPopup.appendTo(popupElement);\n this.passwordInput.addEventListener('keyup', function () {\n if (_this.passwordInput.value === '') {\n _this.passwordDialogReset();\n }\n });\n this.passwordInput.addEventListener('focus', function () {\n _this.passwordInput.parentElement.classList.add('e-input-focus');\n });\n this.passwordInput.addEventListener('blur', function () {\n _this.passwordInput.parentElement.classList.remove('e-input-focus');\n });\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.passwordCancel = function (args) {\n if (args.isInteraction) {\n this.clear(false);\n this.passwordDialogReset();\n this.passwordInput.value = '';\n }\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.passwordCancelClick = function () {\n this.clear(false);\n this.passwordDialogReset();\n this.passwordPopup.hide();\n var waitingPopup = this.getElement('_loadingIndicator');\n if (waitingPopup !== null) {\n hideSpinner(waitingPopup);\n }\n };\n PdfViewerBase.prototype.passwordDialogReset = function () {\n if (!isBlazor()) {\n if (this.promptElement) {\n this.promptElement.classList.remove('e-pv-password-error');\n this.promptElement.textContent = this.pdfViewer.localeObj.getConstant('Enter Password');\n this.passwordInput.value = '';\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.applyPassword = function () {\n if (!isBlazor()) {\n var password = this.passwordInput.value;\n if (!isNullOrUndefined(password) && password.length > 0) {\n this.pdfViewer.load(this.document, password);\n }\n }\n this.focusViewerContainer();\n };\n PdfViewerBase.prototype.createFileInputElement = function () {\n if (Browser.isDevice || !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.enableAnnotationToolbar && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.createCustomStampElement();\n }\n if (this.signatureModule) {\n this.signatureModule.createSignatureFileElement();\n }\n }\n };\n PdfViewerBase.prototype.wireEvents = function () {\n var _this = this;\n this.viewerContainer.addEventListener('scroll', this.viewerContainerOnScroll, true);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.viewerContainer.addEventListener('touchmove', this.viewerContainerOnScroll, true);\n }\n this.viewerContainer.addEventListener('mousedown', this.viewerContainerOnMousedown);\n this.viewerContainer.addEventListener('mouseup', this.viewerContainerOnMouseup);\n this.viewerContainer.addEventListener(\"wheel\", this.detectTouchPad, false);\n this.viewerContainer.addEventListener('wheel', this.viewerContainerOnMouseWheel);\n if (this.isMacSafari) {\n window.addEventListener('gesturestart', function (e) { return e.preventDefault(); });\n window.addEventListener('gesturechange', function (e) { return e.preventDefault(); });\n window.addEventListener('gestureend', function (e) { return e.preventDefault(); });\n this.viewerContainer.addEventListener('gesturestart', this.handleMacGestureStart, false);\n this.viewerContainer.addEventListener('gesturechange', this.handleMacGestureChange, false);\n this.viewerContainer.addEventListener('gestureend', this.handleMacGestureEnd, false);\n }\n this.viewerContainer.addEventListener('mousemove', this.viewerContainerOnMousemove);\n this.viewerContainer.addEventListener('mouseleave', this.viewerContainerOnMouseLeave);\n this.viewerContainer.addEventListener('mouseenter', this.viewerContainerOnMouseEnter);\n this.viewerContainer.addEventListener('mouseover', this.viewerContainerOnMouseOver);\n this.viewerContainer.addEventListener('click', this.viewerContainerOnClick);\n this.viewerContainer.addEventListener('dblclick', this.viewerContainerOnClick);\n this.viewerContainer.addEventListener('dragstart', this.viewerContainerOnDragStart);\n this.pdfViewer.element.addEventListener('keydown', this.viewerContainerOnKeyDown);\n window.addEventListener('keydown', this.onWindowKeyDown);\n window.addEventListener('mouseup', this.onWindowMouseUp);\n window.addEventListener('touchend', this.onWindowTouchEnd);\n this.unload = function () { return _this.unloadDocument(_this); };\n window.addEventListener('unload', this.unload);\n window.addEventListener('beforeunload', this.clearSessionStorage);\n window.addEventListener('resize', this.onWindowResize);\n // eslint-disable-next-line max-len\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Edge') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n this.viewerContainer.addEventListener('pointerdown', this.viewerContainerOnPointerDown);\n this.viewerContainer.addEventListener('pointermove', this.viewerContainerOnPointerMove);\n this.viewerContainer.addEventListener('pointerup', this.viewerContainerOnPointerEnd);\n this.viewerContainer.addEventListener('pointerleave', this.viewerContainerOnPointerEnd);\n }\n else {\n this.viewerContainer.addEventListener('touchstart', this.viewerContainerOnTouchStart);\n if (this.isWebkitMobile && this.isDeviceiOS) {\n // eslint-disable-next-line max-len\n this.viewerContainer.addEventListener(\"touchmove\", function (e) { if (e.scale !== 1) {\n e.preventDefault();\n } }, { passive: false });\n }\n this.viewerContainer.addEventListener('touchmove', this.viewerContainerOnTouchMove);\n this.viewerContainer.addEventListener('touchend', this.viewerContainerOnTouchEnd);\n this.viewerContainer.addEventListener('touchleave', this.viewerContainerOnTouchEnd);\n this.viewerContainer.addEventListener('touchcancel', this.viewerContainerOnTouchEnd);\n }\n };\n PdfViewerBase.prototype.unWireEvents = function () {\n this.viewerContainer.removeEventListener('scroll', this.viewerContainerOnScroll, true);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.viewerContainer.removeEventListener('touchmove', this.viewerContainerOnScroll, true);\n }\n this.viewerContainer.removeEventListener('mousedown', this.viewerContainerOnMousedown);\n this.viewerContainer.removeEventListener('mouseup', this.viewerContainerOnMouseup);\n this.viewerContainer.removeEventListener(\"wheel\", this.detectTouchPad, false);\n this.viewerContainer.removeEventListener('wheel', this.viewerContainerOnMouseWheel);\n if (this.isMacSafari) {\n window.removeEventListener('gesturestart', function (e) { return e.preventDefault(); });\n window.removeEventListener('gesturechange', function (e) { return e.preventDefault(); });\n window.removeEventListener('gestureend', function (e) { return e.preventDefault(); });\n this.viewerContainer.removeEventListener('gesturestart', this.handleMacGestureStart, false);\n this.viewerContainer.removeEventListener('gesturechange', this.handleMacGestureChange, false);\n this.viewerContainer.removeEventListener('gestureend', this.handleMacGestureEnd, false);\n }\n this.viewerContainer.removeEventListener('mousemove', this.viewerContainerOnMousemove);\n this.viewerContainer.removeEventListener('mouseleave', this.viewerContainerOnMouseLeave);\n this.viewerContainer.removeEventListener('mouseenter', this.viewerContainerOnMouseEnter);\n this.viewerContainer.removeEventListener('mouseover', this.viewerContainerOnMouseOver);\n this.viewerContainer.removeEventListener('click', this.viewerContainerOnClick);\n this.viewerContainer.removeEventListener('dragstart', this.viewerContainerOnDragStart);\n this.viewerContainer.removeEventListener('contextmenu', this.viewerContainerOnContextMenuClick);\n this.pdfViewer.element.removeEventListener('keydown', this.viewerContainerOnKeyDown);\n window.addEventListener('keydown', this.onWindowKeyDown);\n window.removeEventListener('mouseup', this.onWindowMouseUp);\n window.removeEventListener('unload', this.unload);\n window.removeEventListener('resize', this.onWindowResize);\n // eslint-disable-next-line max-len\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Edge') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n this.viewerContainer.removeEventListener('pointerdown', this.viewerContainerOnPointerDown);\n this.viewerContainer.removeEventListener('pointermove', this.viewerContainerOnPointerMove);\n this.viewerContainer.removeEventListener('pointerup', this.viewerContainerOnPointerEnd);\n this.viewerContainer.removeEventListener('pointerleave', this.viewerContainerOnPointerEnd);\n }\n else {\n this.viewerContainer.removeEventListener('touchstart', this.viewerContainerOnTouchStart);\n if (this.isWebkitMobile && this.isDeviceiOS) {\n // eslint-disable-next-line max-len\n this.viewerContainer.removeEventListener(\"touchmove\", function (e) { if (e.scale !== 1) {\n e.preventDefault();\n } }, false);\n }\n this.viewerContainer.removeEventListener('touchmove', this.viewerContainerOnTouchMove);\n this.viewerContainer.removeEventListener('touchend', this.viewerContainerOnTouchEnd);\n this.viewerContainer.removeEventListener('touchleave', this.viewerContainerOnTouchEnd);\n this.viewerContainer.removeEventListener('touchcancel', this.viewerContainerOnTouchEnd);\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.updateZoomValue = function () {\n if (this.pdfViewer.magnificationModule) {\n if (this.pdfViewer.magnificationModule.isAutoZoom) {\n this.pdfViewer.magnificationModule.fitToAuto();\n }\n else if (this.pdfViewer.zoomMode !== 'FitToWidth' && this.pdfViewer.magnificationModule.fitType === 'fitToWidth') {\n this.pdfViewer.magnificationModule.fitToWidth();\n }\n else if (this.pdfViewer.magnificationModule.fitType === 'fitToPage') {\n this.pdfViewer.magnificationModule.fitToPage();\n }\n }\n for (var i = 0; i < this.pageCount; i++) {\n this.applyLeftPosition(i);\n }\n };\n /**\n * @private\n * @param {any} annotation - The annotation type of any.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateFreeTextProperties = function (annotation) {\n if (this.pdfViewer.enableShapeLabel) {\n if (this.pdfViewer.shapeLabelSettings.fillColor) {\n annotation.labelFillColor = this.pdfViewer.shapeLabelSettings.fillColor;\n }\n if (this.pdfViewer.shapeLabelSettings.fontColor) {\n annotation.fontColor = this.pdfViewer.shapeLabelSettings.fontColor;\n }\n if (this.pdfViewer.shapeLabelSettings.fontSize) {\n annotation.fontSize = this.pdfViewer.shapeLabelSettings.fontSize;\n }\n if (this.pdfViewer.shapeLabelSettings.fontFamily) {\n annotation.fontFamily = this.pdfViewer.shapeLabelSettings.fontFamily;\n }\n if (this.pdfViewer.shapeLabelSettings.opacity) {\n annotation.labelOpacity = this.pdfViewer.shapeLabelSettings.opacity;\n }\n if (this.pdfViewer.shapeLabelSettings.labelContent) {\n annotation.labelContent = this.pdfViewer.shapeLabelSettings.labelContent;\n }\n }\n };\n /**\n * @private\n * @param {MouseEvent} event - The mouse event.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.mouseDownHandler = function (event) {\n var isEnableDelete = false;\n var isCancel;\n var hidenItems = [];\n var disabledItems = [];\n if (event && event.target) {\n this.mouseDownEvent = event;\n this.contextMenuModule.currentTarget = event.target;\n }\n if (this.pdfViewer.annotationModule) {\n isEnableDelete = this.pdfViewer.annotationModule.isEnableDelete();\n }\n if (!isEnableDelete) {\n disabledItems.push('DeleteContext');\n }\n if (this.pdfViewer.contextMenuOption === 'None') {\n isCancel = true;\n }\n else if (this.pdfViewer.textSelectionModule || this.isShapeBasedAnnotationsEnabled()) {\n if (event) {\n var isClickWithinSelectionBounds = this.isClickWithinSelectionBounds(event);\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) {\n this.isFreeTextContextMenu = true;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && !this.pdfViewer.annotation.freeTextAnnotationModule.isTextSelected) {\n disabledItems.push('Cut');\n disabledItems.push('Copy');\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.selectedText === '') {\n disabledItems.push('Paste');\n }\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Properties');\n hidenItems.push('Comment');\n hidenItems.push('DeleteContext');\n }\n else if (isClickWithinSelectionBounds && this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if ((!event.target.classList.contains('e-pv-maintaincontent') && event.target.classList.contains('e-pv-text') || event.target.classList.contains('e-pv-text-layer'))) {\n if (this.checkIsNormalText()) {\n isCancel = true;\n }\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isIE || Browser.info.name === 'edge') && event.target.classList.contains('e-pv-page-container')) {\n isCancel = true;\n }\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Comment');\n hidenItems.push('Properties');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n this.shapeMenuItems(hidenItems, disabledItems, false, true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path') {\n this.shapeMenuItems(hidenItems, disabledItems, true);\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && (event.target.classList.contains('e-pv-text-layer') ||\n event.target.classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n hidenItems.push('Properties');\n this.shapeMenuItems(hidenItems, disabledItems, false);\n // eslint-disable-next-line max-len\n }\n else if (this.isCalibrateAnnotationModule() && this.pdfViewer.annotationModule.measureAnnotationModule.currentAnnotationMode) {\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('Properties');\n disabledItems.push('Cut');\n disabledItems.push('Copy');\n disabledItems.push('Paste');\n disabledItems.push('DeleteContext');\n disabledItems.push('Comment');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('Properties');\n hidenItems.push('Cut');\n hidenItems.push('Copy');\n hidenItems.push('Paste');\n hidenItems.push('ScaleRatio');\n }\n else {\n isCancel = true;\n }\n }\n }\n else if (this.pdfViewer.textSelectionModule && (this.pdfViewer.contextMenuOption === 'MouseUp')) {\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Comment');\n hidenItems.push('Properties');\n }\n else if (this.pdfViewer.selectedItems.annotations.length === 0) {\n hidenItems.push('Cut');\n hidenItems.push('Paste');\n hidenItems.push('DeleteContext');\n hidenItems.push('ScaleRatio');\n hidenItems.push('Properties');\n }\n if (!this.pdfViewer.enableCommentPanel) {\n disabledItems.push('Comment');\n }\n }\n else {\n isCancel = true;\n }\n var eventArgs = { hidenItems: hidenItems, disabledItems: disabledItems, isCancel: isCancel };\n this.pdfViewer._dotnetInstance.invokeMethodAsync('MouseDownHandler', eventArgs);\n };\n /**\n * @private\n * @param {string} selectedMenu - The selected menu.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.OnItemSelected = function (selectedMenu) {\n // eslint-disable-next-line\n var target = this.contextMenuModule.currentTarget;\n switch (selectedMenu) {\n case this.pdfViewer.localeObj.getConstant('Copy'):\n this.CopyItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Highlight context'):\n this.TextMarkUpSelected('Highlight');\n break;\n case this.pdfViewer.localeObj.getConstant('Underline context'):\n this.TextMarkUpSelected('Underline');\n break;\n case this.pdfViewer.localeObj.getConstant('Strikethrough context'):\n this.TextMarkUpSelected('Strikethrough');\n break;\n case this.pdfViewer.localeObj.getConstant('Properties'):\n this.PropertiesItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Cut'):\n this.CutItemSelected(target);\n break;\n case this.pdfViewer.localeObj.getConstant('Paste'):\n this.pasteItemSelected(target);\n break;\n case this.pdfViewer.localeObj.getConstant('Delete Context'):\n this.DeleteItemSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Scale Ratio'):\n this.ScaleRatioSelected();\n break;\n case this.pdfViewer.localeObj.getConstant('Comment'):\n this.CommentItemSelected();\n break;\n default:\n break;\n }\n };\n PdfViewerBase.prototype.CommentItemSelected = function () {\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.showCommentsPanel();\n if (this.pdfViewer.selectedItems.annotations.length !== 0 ||\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n // eslint-disable-next-line\n var currentAnnotation = void 0;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n currentAnnotation = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n }\n else {\n currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n // eslint-disable-next-line\n var accordionExpand = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + this.pdfViewer.currentPageNumber);\n if (accordionExpand) {\n accordionExpand.ej2_instances[0].expandItem(true);\n }\n // eslint-disable-next-line\n var commentsDiv = document.getElementById(currentAnnotation.annotName);\n if (commentsDiv) {\n if (!commentsDiv.classList.contains('e-pv-comments-border')) {\n commentsDiv.firstChild.click();\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.ScaleRatioSelected = function () {\n if (this.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.createScaleRatioWindow();\n }\n };\n PdfViewerBase.prototype.DeleteItemSelected = function () {\n if (this.pdfViewer.formDesignerModule && this.pdfViewer.selectedItems.formFields.length !== 0) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0].id);\n }\n else if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.deleteAnnotation();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.pasteItemSelected = function (target) {\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) && (target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA')) {\n this.pdfViewer.annotation.freeTextAnnotationModule.pasteSelectedText(target);\n this.contextMenuModule.close();\n }\n else {\n this.pdfViewer.paste();\n this.contextMenuModule.previousAction = 'Paste';\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.CutItemSelected = function (target) {\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) && (target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA')) {\n this.pdfViewer.annotation.freeTextAnnotationModule.cutSelectedText(target);\n this.contextMenuModule.close();\n }\n else if (this.pdfViewer.selectedItems.annotations.length === 1) {\n var pageIndex = this.pdfViewer.selectedItems.annotations[0].pageIndex;\n this.pdfViewer.cut();\n this.contextMenuModule.previousAction = 'Cut';\n }\n else if (this.pdfViewer.selectedItems.formFields.length === 1) {\n this.pdfViewer.cut();\n this.contextMenuModule.previousAction = 'Cut';\n }\n };\n PdfViewerBase.prototype.CopyItemSelected = function () {\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.isFreeTextContextMenu || (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus)) {\n this.pdfViewer.annotation.freeTextAnnotationModule.copySelectedText();\n this.contextMenuModule.close();\n isSkip = true;\n }\n else if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.copyText();\n this.contextMenuModule.close();\n }\n if (this.pdfViewer.selectedItems.annotations.length && !isSkip) {\n this.pdfViewer.copy();\n this.contextMenuModule.previousAction = 'Copy';\n }\n else if (this.pdfViewer.selectedItems.formFields.length > 0) {\n this.pdfViewer.copy();\n this.contextMenuModule.previousAction = 'Copy';\n }\n };\n PdfViewerBase.prototype.PropertiesItemSelected = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n this.pdfViewer.annotation.createPropertiesWindow();\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType) {\n this.pdfViewer.formDesigner.createPropertiesWindow();\n }\n };\n PdfViewerBase.prototype.TextMarkUpSelected = function (type) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.isSelectionMaintained = false;\n this.pdfViewer.annotation.textMarkupAnnotationModule.drawTextMarkupAnnotations(type);\n this.pdfViewer.annotation.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n this.pdfViewer.annotation.textMarkupAnnotationModule.isSelectionMaintained = true;\n }\n };\n PdfViewerBase.prototype.shapeMenuItems = function (hidenItems, disabledItems, enableProperties, isSignature) {\n if (this.pdfViewer.annotation && !this.pdfViewer.annotation.isShapeCopied) {\n disabledItems.push('Paste');\n }\n hidenItems.push('HighlightContext');\n hidenItems.push('UnderlineContext');\n hidenItems.push('StrikethroughContext');\n hidenItems.push('ScaleRatio');\n if (enableProperties) {\n // eslint-disable-next-line max-len\n if (!(this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n hidenItems.push('Properties');\n }\n }\n else if (isSignature) {\n hidenItems.push('Properties');\n hidenItems.push('Comment');\n }\n else {\n hidenItems.push('Cut');\n hidenItems.push('Copy');\n hidenItems.push('DeleteContext');\n hidenItems.push('Comment');\n }\n };\n PdfViewerBase.prototype.checkIsRtlText = function (text) {\n // eslint-disable-next-line max-len\n var ltrChars = 'A-Za-z\\\\u00C0-\\\\u00D6\\\\u00D8-\\\\u00F6\\\\u00F8-\\\\u02B8\\\\u0300-\\\\u0590\\\\u0800-\\\\u1FFF' + '\\\\u2C00-\\\\uFB1C\\\\uFDFE-\\\\uFE6F\\\\uFEFD-\\\\uFFFF';\n var rtlChars = '\\\\u0591-\\\\u07FF\\\\uFB1D-\\\\uFDFD\\\\uFE70-\\\\uFEFC';\n // eslint-disable-next-line\n var rtlDirCheck = new RegExp('^[^' + ltrChars + ']*[' + rtlChars + ']');\n return rtlDirCheck.test(text);\n };\n /**\n * @private\n * @param {any} event - Specifies the event.\n * @returns {boolean} - retruned the beolean value.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.isClickWithinSelectionBounds = function (event) {\n var bounds;\n var isWithin = false;\n var diCount = 5;\n var negativeCount = ((this.currentPageNumber - diCount) < 0) ? 0 : this.currentPageNumber - diCount;\n var positiveCount = ((this.currentPageNumber - diCount) > this.pageCount) ? this.pageCount : this.currentPageNumber + diCount;\n if (this.pdfViewer.textSelectionModule) {\n for (var i = negativeCount; i < positiveCount; i++) {\n if (i >= 0) {\n bounds = this.pdfViewer.textSelectionModule.getCurrentSelectionBounds(i);\n if (bounds) {\n var currentBound = bounds;\n if (this.getHorizontalValue(currentBound.left, i) < event.clientX && this.getHorizontalValue(currentBound.right, i) >\n event.clientX && this.getVerticalValue(currentBound.top, i) < event.clientY &&\n this.getVerticalValue(currentBound.bottom, i) > event.clientY) {\n isWithin = true;\n break;\n }\n }\n }\n }\n if ((Browser.isIE || Browser.info.name === 'edge') && bounds) {\n isWithin = true;\n }\n }\n return isWithin;\n };\n PdfViewerBase.prototype.getHorizontalClientValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value - pageBounds.left);\n };\n PdfViewerBase.prototype.getVerticalClientValue = function (value) {\n var pageDiv = this.getElement('_pageDiv_' + (this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value - pageBounds.top);\n };\n PdfViewerBase.prototype.getHorizontalValue = function (value, pageNumber) {\n var pageDiv = this.getElement('_pageDiv_' + (pageNumber || this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value * this.getZoomFactor()) + pageBounds.left;\n };\n PdfViewerBase.prototype.getVerticalValue = function (value, pageNumber) {\n var pageDiv = this.getElement('_pageDiv_' + (pageNumber || this.currentPageNumber - 1));\n var pageBounds = pageDiv.getBoundingClientRect();\n return (value * this.getZoomFactor()) + pageBounds.top;\n };\n /**\n * @private\n * @returns {boolean} - retruned the beolean value.\n */\n PdfViewerBase.prototype.checkIsNormalText = function () {\n var isText = true;\n var currentText = '';\n // eslint-disable-next-line\n var textSelectionModule = this.pdfViewer.textSelectionModule;\n if (textSelectionModule && textSelectionModule.selectionRangeArray && textSelectionModule.selectionRangeArray.length === 1) {\n currentText = textSelectionModule.selectionRangeArray[0].textContent;\n }\n else if (window.getSelection() && window.getSelection().anchorNode) {\n currentText = window.getSelection().toString();\n }\n if (currentText !== '' && this.checkIsRtlText(currentText)) {\n isText = false;\n }\n return isText;\n };\n PdfViewerBase.prototype.DeleteKeyPressed = function (event) {\n if (event.srcElement.parentElement.classList && !event.srcElement.parentElement.classList.contains(\"e-input-focus\")) {\n event.preventDefault();\n event.stopPropagation();\n }\n var isSearchboxDialogOpen;\n var searchBoxId = document.getElementById(this.pdfViewer.element.id + \"_search_box\");\n if (searchBoxId) {\n isSearchboxDialogOpen = searchBoxId.style.display !== \"none\";\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.formDesigner.isPropertyDialogOpen && this.pdfViewer.designerMode && this.pdfViewer.selectedItems.formFields.length !== 0 && !isSearchboxDialogOpen) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0].id);\n }\n else if (this.pdfViewer.annotation && !this.pdfViewer.designerMode && event.srcElement.parentElement.classList && !event.srcElement.parentElement.classList.contains(\"e-input-focus\")) {\n if (this.isTextMarkupAnnotationModule() && !this.getPopupNoteVisibleStatus() && !isSearchboxDialogOpen) {\n this.pdfViewer.annotationModule.deleteAnnotation();\n }\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n var isReadOnly = true;\n var type = annotation.shapeAnnotationType;\n if (type === 'Path' || annotation.formFieldAnnotationType === 'SignatureField' || annotation.formFieldAnnotationType === 'InitialField' || type === 'HandWrittenSignature' || type === 'SignatureText' || type === 'SignatureImage') {\n var inputFields = document.getElementById(annotation.id);\n if (inputFields && inputFields.disabled) {\n isReadOnly = true;\n }\n }\n if (!isReadOnly) {\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderSelector(this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n else {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderSelector(this.pdfViewer.annotation.getEventPageNumber(event));\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiatePanning = function () {\n this.isPanMode = true;\n this.textLayer.modifyTextCursor(false);\n this.disableTextSelectionMode();\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.deselectAllItems();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiateTextSelectMode = function () {\n this.isPanMode = false;\n if (this.viewerContainer) {\n this.viewerContainer.style.cursor = 'auto';\n if (this.pdfViewer.textSelectionModule) {\n this.textLayer.modifyTextCursor(true);\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) && !isBlazor()) {\n this.enableAnnotationAddTools(true);\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.initiateTextSelection = function () {\n if (this.pdfViewer.toolbar && !this.pdfViewer.toolbar.isSelectionToolDisabled) {\n this.initiateTextSelectMode();\n this.pdfViewer.toolbar.updateInteractionTools(true);\n }\n };\n PdfViewerBase.prototype.enableAnnotationAddTools = function (isEnable) {\n if (this.pdfViewer.toolbarModule) {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.enableAnnotationAddTools(isEnable);\n }\n }\n };\n PdfViewerBase.prototype.applySelection = function () {\n if (window.getSelection().anchorNode !== null) {\n this.pdfViewer.textSelectionModule.applySpanForSelection();\n }\n this.isViewerContainerDoubleClick = false;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.isDesignerMode = function (target) {\n var isDesignerMode = false;\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path') {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType && this.pdfViewer.designerMode) {\n isDesignerMode = true;\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && (target.classList.contains('e-pv-text-layer') ||\n // eslint-disable-next-line max-len\n target.classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n isDesignerMode = true;\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied && (target.classList.contains('e-pv-text-layer') ||\n target.classList.contains('e-pv-text'))) {\n isDesignerMode = true;\n }\n }\n this.designerModetarget = target;\n return isDesignerMode;\n };\n PdfViewerBase.prototype.handleTaps = function (touchPoints, event) {\n var _this = this;\n //EJ2CORE-813 - Implemented focus removing logic for iOS devices\n if (this.isDeviceiOS) {\n var obj = findActiveElement(event, this, this.pdfViewer);\n // eslint-disable-next-line\n var isRemoveFocus_1 = !this.pdfViewer.annotation.freeTextAnnotationModule.isNewFreeTextAnnot && (obj && this.pdfViewer.selectedItems.annotations[0] ? obj.id !== this.pdfViewer.selectedItems.annotations[0].id : true) && document.activeElement.classList.contains('free-text-input') && this.isFreeTextAnnotation(this.pdfViewer.selectedItems.annotations);\n if (!this.singleTapTimer) {\n this.singleTapTimer = setTimeout(function () {\n if (isRemoveFocus_1) {\n _this.pdfViewer.clearSelection(_this.pdfViewer.selectedItems.annotations[0].pageIndex);\n _this.focusViewerContainer(true);\n }\n _this.onSingleTap(touchPoints);\n // eslint-disable-next-line\n }, 300);\n this.tapCount++;\n }\n else {\n if (this.pdfViewer.enablePinchZoom) {\n this.tapCount++;\n clearTimeout(this.singleTapTimer);\n this.singleTapTimer = null;\n this.onDoubleTap(touchPoints);\n }\n }\n }\n else {\n if (!this.singleTapTimer) {\n this.singleTapTimer = setTimeout(function () {\n _this.onSingleTap(touchPoints);\n // eslint-disable-next-line\n }, 300);\n this.tapCount++;\n }\n else {\n if (this.pdfViewer.enablePinchZoom) {\n this.tapCount++;\n clearTimeout(this.singleTapTimer);\n this.singleTapTimer = null;\n this.onDoubleTap(touchPoints);\n }\n }\n }\n };\n PdfViewerBase.prototype.handleTextBoxTaps = function (touchPoints) {\n var _this = this;\n setTimeout(function () {\n _this.inputTapCount = 0;\n }, 300);\n this.inputTapCount++;\n //EJ2CORE-813 - Removing timer function for iOS Devices\n if (this.isDeviceiOS) {\n // eslint-disable-next-line\n this.onTextBoxDoubleTap(touchPoints);\n }\n else {\n var timer = setTimeout(function () {\n _this.onTextBoxDoubleTap(touchPoints);\n }, 200);\n }\n if (this.inputTapCount > 2) {\n this.inputTapCount = 0;\n }\n };\n PdfViewerBase.prototype.onTextBoxDoubleTap = function (touches) {\n var target = touches[0].target;\n if (this.inputTapCount === 2) {\n if (this.pdfViewer.selectedItems.annotations.length !== 0) {\n if (this.pdfViewer.annotationModule) {\n var currentAnnotation = this.pdfViewer.selectedItems.annotations[0];\n //EJ2CORE-813 - Removing focus from all active free text elements before focusing on free text annotation on iOS devices\n if (this.isDeviceiOS && document.activeElement.classList.contains('free-text-input') && (this.isFreeTextAnnotation(this.pdfViewer.selectedItems.annotations))) {\n this.focusViewerContainer(true);\n }\n this.pdfViewer.annotationModule.annotationSelect(currentAnnotation.annotName, currentAnnotation.pageIndex, currentAnnotation, null, true);\n }\n if (this.isFreeTextAnnotation(this.pdfViewer.selectedItems.annotations) && !(this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus)) {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n var targetAnnotation = void 0;\n if (this.pdfViewer.selectedItems.annotations[0].id == 'diagram_helper') {\n targetAnnotation = this.pdfViewer.nameTable[this.eventArgs.source.id];\n }\n else {\n targetAnnotation = this.pdfViewer.selectedItems.annotations[0];\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, targetAnnotation);\n }\n else if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].enableShapeLabel && !(this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus)) {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n this.pdfViewer.annotation.inputElementModule.editLabel(elmtPosition, this.pdfViewer.selectedItems.annotations[0]);\n }\n }\n }\n };\n PdfViewerBase.prototype.onSingleTap = function (touches) {\n var target = touches[0].target;\n var isFormfields = false;\n this.singleTapTimer = null;\n if (target && (target.classList.contains('e-pdfviewer-formFields')\n || target.classList.contains('e-pdfviewer-ListBox') || target.classList.contains('e-pdfviewer-signatureformfields'))) {\n isFormfields = true;\n }\n if (!this.isLongTouchPropagated && !this.navigationPane.isNavigationToolbarVisible && !isFormfields) {\n if (this.pdfViewer.toolbarModule) {\n if ((this.touchClientX >= touches[0].clientX - 10) && (this.touchClientX <= touches[0].clientX + 10) &&\n (this.touchClientY >= touches[0].clientY - 10) && (this.touchClientY <= touches[0].clientY + 10)) {\n if (!this.isTapHidden) {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n this.viewerContainer.scrollTop -= this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar').clientHeight * this.getZoomFactor();\n }\n if (this.pdfViewer.toolbar.moreDropDown) {\n var dropDown = this.getElement('_more_option-popup');\n if (dropDown.firstElementChild) {\n dropDown.classList.remove('e-popup-open');\n dropDown.classList.add('e-popup-close');\n dropDown.removeChild(dropDown.firstElementChild);\n }\n }\n }\n else {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n this.viewerContainer.scrollTop += this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar').clientHeight * this.getZoomFactor();\n }\n }\n if (this.isTapHidden && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.mobileScrollerContainer.style.display = '';\n this.updateMobileScrollerPosition();\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.getSelectTextMarkupCurrentPage() == null) {\n this.mobileScrollerContainer.style.display = 'none';\n }\n if (this.getSelectTextMarkupCurrentPage() == null) {\n if (!isBlazor()) {\n if (this.pdfViewer.enableToolbar) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('TapOnMobileDevice', this.isTapHidden);\n this.blazorUIAdaptor.tapOnMobileDevice(this.isTapHidden);\n }\n this.isTapHidden = !this.isTapHidden;\n }\n }\n this.tapCount = 0;\n }\n }\n };\n PdfViewerBase.prototype.onDoubleTap = function (touches) {\n var target = touches[0].target;\n var isFormfields = false;\n if (target && (target.classList.contains('e-pdfviewer-formFields')\n || target.classList.contains('e-pdfviewer-ListBox') || target.classList.contains('e-pdfviewer-signatureformfields'))) {\n isFormfields = true;\n }\n if (this.tapCount === 2 && !isFormfields) {\n this.tapCount = 0;\n /**\n * Sometimes the values gets differ by some decimal points. So converted the decimal points values to Integer values.\n */\n // eslint-disable-next-line\n if ((this.touchClientX >= parseInt((touches[0].clientX - 10).toString())) && (this.touchClientX <= touches[0].clientX + 10) &&\n (this.touchClientY >= touches[0].clientY - 10) && (this.touchClientY <= touches[0].clientY + 30)) {\n if (this.pdfViewer.magnification && this.pdfViewer.selectedItems.annotations.length !== 1) {\n this.pdfViewer.magnification.onDoubleTapMagnification();\n }\n this.viewerContainer.style.height = this.updatePageHeight(this.pdfViewer.element.getBoundingClientRect().height, this.toolbarHeight);\n this.isTapHidden = false;\n clearTimeout(this.singleTapTimer);\n this.singleTapTimer = null;\n }\n }\n };\n PdfViewerBase.prototype.preventTouchEvent = function (event) {\n if (this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if (!this.isPanMode && this.pdfViewer.enableTextSelection && !this.isTextSelectionDisabled && this.getSelectTextMarkupCurrentPage() == null) {\n if (!(this.isWebkitMobile && (Browser.isDevice && !this.pdfViewer.enableDesktopMode))) {\n event.preventDefault();\n event.stopPropagation();\n }\n }\n }\n };\n PdfViewerBase.prototype.renderStampAnnotation = function (event) {\n if (this.pdfViewer.annotation) {\n var zoomFactor = this.getZoomFactor();\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var pageDiv = this.getElement('_pageDiv_' + pageIndex);\n if (this.pdfViewer.enableStampAnnotations) {\n var stampModule = this.pdfViewer.annotationModule.stampAnnotationModule;\n if (stampModule && stampModule.isStampAnnotSelected) {\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if (event.type === 'touchend' && this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation.shapeAnnotationType === 'Image') {\n var currentStampObj = this.pdfViewer.annotationModule.stampAnnotationModule.currentStampAnnotation;\n currentStampObj.pageIndex = pageIndex;\n currentStampObj.bounds.x = (event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor;\n currentStampObj.bounds.y = (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor;\n stampModule.updateDeleteItems(pageIndex, currentStampObj, currentStampObj.opacity);\n this.pdfViewer.add(currentStampObj);\n var canvas = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n this.pdfViewer.renderDrawing(canvas, pageIndex);\n }\n else {\n // eslint-disable-next-line max-len\n stampModule.renderStamp((event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor, (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor, null, null, pageIndex, null, null, null, null);\n }\n stampModule.isStampAnnotSelected = false;\n }\n }\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (this.pdfViewer.enableHandwrittenSignature && this.isSignatureAdded && pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n this.currentSignatureAnnot.pageIndex = pageIndex;\n // eslint-disable-next-line max-len\n this.signatureModule.renderSignature((event.changedTouches[0].clientX - pageCurrentRect.left) / zoomFactor, (event.changedTouches[0].clientY - pageCurrentRect.top) / zoomFactor);\n this.isSignatureAdded = false;\n }\n if (event.touches.length === 1 && this.isTextMarkupAnnotationModule() && !this.getPopupNoteVisibleStatus()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.onTextMarkupAnnotationTouchEnd(event);\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.initPageDiv = function (pageValues) {\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateTotalPage();\n }\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.mobiletotalPageContainer) {\n this.mobiletotalPageContainer.innerHTML = this.pageCount.toString();\n this.pageNoContainer.innerHTML = '(1-' + this.pageCount.toString() + ')';\n }\n if (this.pageCount > 0) {\n var topValue = 0;\n var pageLimit = 0;\n this.isMixedSizeDocument = false;\n if (this.pageCount > 100) {\n // to render 100 pages intially.\n pageLimit = 100;\n this.pageLimit = pageLimit;\n }\n else {\n pageLimit = this.pageCount;\n }\n var isPortrait = false;\n var isLandscape = false;\n var differentPageSize = false;\n for (var i = 0; i < pageLimit; i++) {\n if (typeof pageValues.pageSizes[parseInt(i.toString(), 10)] !== 'object') {\n var pageSize = pageValues.pageSizes[parseInt(i.toString(), 10)].split(',');\n if (pageValues.pageSizes[i - 1] !== null && i !== 0) {\n var previousPageHeight = pageValues.pageSizes[i - 1].split(',');\n topValue = this.pageGap + parseFloat(previousPageHeight[1]) + topValue;\n }\n else {\n topValue = this.pageGap;\n }\n var size = { width: parseFloat(pageSize[0]), height: parseFloat(pageSize[1]), top: topValue };\n this.pageSize.push(size);\n }\n else {\n if (pageValues.pageSizes[i - 1] !== null && i !== 0) {\n // eslint-disable-next-line\n var previousPageHeight = pageValues.pageSizes[i - 1];\n topValue = this.pageGap + parseFloat(previousPageHeight.Height) + topValue;\n }\n else {\n topValue = this.pageGap;\n }\n var size = { width: pageValues.pageSizes[parseInt(i.toString(), 10)].Width, height: pageValues.pageSizes[parseInt(i.toString(), 10)].Height, top: topValue };\n this.pageSize.push(size);\n }\n if (this.pageSize[parseInt(i.toString(), 10)].height > this.pageSize[parseInt(i.toString(), 10)].width) {\n isPortrait = true;\n }\n if (this.pageSize[parseInt(i.toString(), 10)].width > this.pageSize[parseInt(i.toString(), 10)].height) {\n isLandscape = true;\n }\n if (i > 0 && this.pageSize[parseInt(i.toString(), 10)].width !== this.pageSize[i - 1].width) {\n differentPageSize = true;\n }\n var pageWidth = this.pageSize[parseInt(i.toString(), 10)].width;\n if (pageWidth > this.highestWidth) {\n this.highestWidth = pageWidth;\n }\n var pageHeight = this.pageSize[parseInt(i.toString(), 10)].height;\n if (pageHeight > this.highestHeight) {\n this.highestHeight = pageHeight;\n }\n }\n if ((isPortrait && isLandscape) || differentPageSize) {\n this.isMixedSizeDocument = true;\n }\n var limit = this.pageCount < 10 ? this.pageCount : 10;\n for (var i = 0; i < limit; i++) {\n this.renderPageContainer(i, this.getPageWidth(i), this.getPageHeight(i), this.getPageTop(i));\n }\n // eslint-disable-next-line max-len\n this.pageContainer.style.height = this.getPageTop(this.pageSize.length - 1) + this.getPageHeight(this.pageSize.length - 1) + 'px';\n this.pageContainer.style.position = 'relative';\n if (this.pageLimit === 100) {\n var pageDiv = this.getElement('_pageDiv_' + this.pageLimit);\n if (pageDiv === null && this.pageLimit < this.pageCount) {\n Promise.all([this.renderPagesVirtually()]);\n }\n }\n }\n };\n PdfViewerBase.prototype.renderElementsVirtualScroll = function (pageNumber) {\n var lowerLimit = 1;\n if (this.pageStopValue <= 200) {\n lowerLimit = 4;\n \n }\n else {\n lowerLimit = 2;\n \n }\n var pageValue = pageNumber + lowerLimit;\n if (pageValue > this.pageCount) {\n pageValue = this.pageCount;\n }\n for (var i = pageNumber - 1; i <= pageValue; i++) {\n if (i !== -1) {\n this.renderPageElement(i);\n }\n }\n var lowerPageValue = pageNumber - 3;\n if (lowerPageValue < 0) {\n lowerPageValue = 0;\n }\n for (var i = pageNumber - 1; i >= lowerPageValue; i--) {\n if (i !== -1) {\n this.renderPageElement(i);\n }\n }\n for (var j = 0; j < this.pageCount; j++) {\n if (!((lowerPageValue <= j) && (j <= pageValue))) {\n var pageDiv = this.getElement('_pageDiv_' + j);\n var pageCanvas = this.getElement('_pageCanvas_' + j);\n var textLayer = this.getElement('_textLayer_' + j);\n if (pageCanvas) {\n pageCanvas.parentNode.removeChild(pageCanvas);\n if (textLayer) {\n if (this.pdfViewer.textSelectionModule && textLayer.childNodes.length !== 0 && !this.isTextSelectionDisabled) {\n this.pdfViewer.textSelectionModule.maintainSelectionOnScroll(j, true);\n }\n textLayer.parentNode.removeChild(textLayer);\n }\n var indexInArray = this.renderedPagesList.indexOf(j);\n if (indexInArray !== -1) {\n this.renderedPagesList.splice(indexInArray, 1);\n }\n }\n if (pageDiv) {\n pageDiv.parentNode.removeChild(pageDiv);\n var indexInArray = this.renderedPagesList.indexOf(j);\n if (indexInArray !== -1) {\n this.renderedPagesList.splice(indexInArray, 1);\n }\n }\n }\n }\n if (isBlazor())\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateCurrentPageNumber', this.currentPageNumber);\n };\n PdfViewerBase.prototype.renderPageElement = function (i) {\n var pageDiv = this.getElement('_pageDiv_' + i);\n var canvas = this.getElement('_pageCanvas_' + i);\n if (canvas == null && pageDiv == null && i < this.pageSize.length) {\n // eslint-disable-next-line\n this.renderPageContainer(i, this.getPageWidth(i), this.getPageHeight(i), this.getPageTop(i));\n }\n };\n PdfViewerBase.prototype.renderPagesVirtually = function () {\n return __awaiter$1(this, void 0, void 0, function () {\n var proxy;\n var _this = this;\n return __generator$1(this, function (_a) {\n proxy = this;\n setTimeout(function () {\n _this.initiateRenderPagesVirtually(proxy);\n }, 500);\n return [2 /*return*/];\n });\n });\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.initiateRenderPagesVirtually = function (proxy) {\n var jsonObject = { hashId: proxy.hashId, isCompletePageSizeNotReceived: true, action: 'VirtualLoad', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.documentId, password: proxy.passwordData };\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = proxy.jsonDocumentId;\n }\n this.virtualLoadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.virtualLoadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.load;\n this.virtualLoadRequestHandler.responseType = 'json';\n this.virtualLoadRequestHandler.mode = true;\n this.virtualLoadRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, 'VirtualLoad');\n }\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (proxy.documentId === data.uniqueId) {\n proxy.pdfViewer.fireAjaxRequestSuccess('VirtualLoad', data);\n // eslint-disable-next-line\n var pageValues = data;\n if (proxy.pageSize[proxy.pageLimit - 1]) {\n var topValue = proxy.pageSize[proxy.pageLimit - 1].top;\n for (var i = proxy.pageLimit; i < proxy.pageCount; i++) {\n if (typeof (pageValues.pageSizes[parseInt(i.toString(), 10)]) !== 'object') {\n var pageSize = pageValues.pageSizes[parseInt(i.toString(), 10)].split(',');\n if (proxy.pageSize[i - 1] !== null && i !== 0) {\n var previousPageHeight = proxy.pageSize[i - 1].height;\n topValue = proxy.pageGap + parseFloat(previousPageHeight) + topValue;\n }\n var size = { width: parseFloat(pageSize[0]), height: parseFloat(pageSize[1]), top: topValue };\n proxy.pageSize.push(size);\n }\n else {\n if (proxy.pageSize[i - 1] !== null && i !== 0) {\n var previousPageHeight = proxy.pageSize[i - 1].height;\n topValue = proxy.pageGap + parseFloat(previousPageHeight) + topValue;\n }\n var size = { width: parseFloat(pageValues.pageSizes[parseInt(i.toString(), 10)].Width), height: parseFloat(pageValues.pageSizes[parseInt(i.toString(), 10)].Height), top: topValue };\n proxy.pageSize.push(size);\n }\n }\n // eslint-disable-next-line max-len\n proxy.pageContainer.style.height = proxy.getPageTop(proxy.pageSize.length - 1) + proxy.getPageHeight(proxy.pageSize.length - 1) + 'px';\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount > 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n var linkAnnotationModule = proxy.pdfViewer.linkAnnotationModule;\n if (linkAnnotationModule && linkAnnotationModule.linkAnnotation && linkAnnotationModule.linkAnnotation.length > 0 && linkAnnotationModule.linkPage.length > 0) {\n linkAnnotationModule.renderDocumentLink(linkAnnotationModule.linkAnnotation, linkAnnotationModule.linkPage, linkAnnotationModule.annotationY, proxy.currentPageNumber - 1);\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n // eslint-disable-next-line\n this.virtualLoadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText);\n };\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.tileRenderPage = function (data, pageIndex) {\n var _this = this;\n var proxy = null;\n proxy = this;\n if (data && this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n var pageWidth = this.getPageWidth(pageIndex);\n var pageHeight = this.getPageHeight(pageIndex);\n // eslint-disable-next-line max-len\n var canvas_1 = this.getElement('_pageCanvas_' + pageIndex);\n var pageDiv_1 = this.getElement('_pageDiv_' + pageIndex);\n var tileX = data.tileX ? data.tileX : 0;\n var tileY = data.tileY ? data.tileY : 0;\n if (pageDiv_1) {\n pageDiv_1.style.width = pageWidth + 'px';\n pageDiv_1.style.height = pageHeight + 'px';\n pageDiv_1.style.background = '#fff';\n pageDiv_1.style.top = this.getPageTop(pageIndex) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv_1.style.right = this.updateLeftPosition(pageIndex) + 'px';\n }\n else {\n pageDiv_1.style.left = this.updateLeftPosition(pageIndex) + 'px';\n }\n }\n if (canvas_1) {\n canvas_1.style.background = '#fff';\n }\n var imageData = data['image'];\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (this.isReRenderRequired) {\n if (data.zoomFactor) {\n zoomFactor = data.zoomFactor;\n }\n var currentString = this.documentId + '_' + pageIndex + '_' + zoomFactor + '_' + data.tileX + '_' + data.tileY;\n // eslint-disable-next-line max-len\n this.tilerequestLists.push(currentString);\n // eslint-disable-next-line\n var matrix = data['transformationMatrix'];\n // eslint-disable-next-line\n var width = data['width'];\n if (imageData) {\n var tileX_1 = data.tileX ? data.tileX : 0;\n var tileY_1 = data.tileY ? data.tileY : 0;\n var scaleFactor = (!isNullOrUndefined(data.scaleFactor)) ? data.scaleFactor : 1.5;\n var image_1 = document.getElementById(this.pdfViewer.element.id + '_tileimg_' + pageIndex + '_' + this.getZoomFactor() + '_' + tileX_1 + '_' + tileY_1);\n if (!image_1) {\n image_1 = new Image();\n image_1.id = this.pdfViewer.element.id + '_tileimg_' + pageIndex + '_' + this.getZoomFactor() + '_' + tileX_1 + '_' + tileY_1;\n if (pageDiv_1) {\n pageDiv_1.append(image_1);\n }\n }\n image_1.src = imageData;\n image_1.setAttribute('alt', '');\n image_1.onload = function () {\n proxy.showPageLoadingIndicator(pageIndex, false);\n proxy.tileRenderCount = proxy.tileRenderCount + 1;\n if ((tileX_1 === 0) && (tileY_1 === 0)) {\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n proxy.renderPDFInformations();\n proxy.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount <= 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n }\n proxy.isDocumentLoaded = false;\n if (proxy.pdfViewer.textSearch && proxy.pdfViewer.isExtractText) {\n proxy.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n }\n if (proxy.tileRenderCount === proxy.tileRequestCount) {\n if (proxy.isTextMarkupAnnotationModule()) {\n proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(pageIndex);\n }\n if (canvas_1) {\n canvas_1.style.display = 'none';\n canvas_1.src = '#';\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_1.removeChild(oldPageDiv[parseInt(i.toString(), 10)]);\n }\n proxy.isTileImageRendered = false;\n proxy.tileRenderCount = 0;\n if (proxy.pdfViewer.magnificationModule) {\n proxy.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n proxy.isDrawnCompletely = true;\n }\n image_1.setAttribute('alt', 'Page ' + (pageIndex + 1));\n };\n var currentImageWidth = (((width * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n var matrixElements = matrix.Elements ? matrix.Elements : matrix.Values;\n var currentImageTop = (((matrixElements[5] * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n var currentImageLeft = (((matrixElements[4] * this.getZoomFactor()) / zoomFactor) / scaleFactor);\n image_1.width = currentImageWidth;\n image_1.style.width = currentImageWidth + 'px';\n image_1.style.top = currentImageTop + 'px';\n image_1.style.left = currentImageLeft + 'px';\n image_1.style.position = 'absolute';\n }\n if ((tileX === 0) && (tileY === 0)) {\n this.onPageRender(data, pageIndex, pageDiv_1);\n }\n }\n else {\n var oldCanvases = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_tileimg_' + pageIndex + '_\"]');\n var _loop_1 = function (l) {\n var tileImgId = oldCanvases[parseInt(l.toString(), 10)].id.split('_');\n var zoomFactor_1 = proxy.retrieveCurrentZoomFactor();\n // eslint-disable-next-line\n var tileData = JSON.parse(proxy.getWindowSessionStorageTile(pageIndex, parseFloat(tileImgId[tileImgId.length - 2]), parseFloat(tileImgId[tileImgId.length - 1]), zoomFactor_1));\n if (tileData && tileData.zoomFactor) {\n zoomFactor_1 = tileData.zoomFactor;\n }\n if (parseFloat(tileImgId[tileImgId.length - 4]) === pageIndex) {\n var node_1 = oldCanvases[parseInt(l.toString(), 10)];\n // Make sure it's really an Element\n if (node_1.nodeType == Node.ELEMENT_NODE) {\n node_1.onload = function () {\n proxy.showPageLoadingIndicator(pageIndex, false);\n proxy.tileRenderCount = proxy.tileRenderCount + 1;\n if ((tileX_2 === 0) && (tileY_2 === 0)) {\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n _this.renderPDFInformations();\n _this.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(proxy.documentId + '_pagedata');\n if (proxy.pageCount <= 100) {\n proxy.pdfViewer.fireDocumentLoad(pageData);\n }\n proxy.isDocumentLoaded = false;\n if (proxy.pdfViewer.textSearch && proxy.pdfViewer.isExtractText) {\n proxy.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n }\n if (proxy.tileRenderCount === proxy.tileRequestCount) {\n canvas_1.style.display = 'none';\n canvas_1.src = '#';\n if (proxy.isTextMarkupAnnotationModule()) {\n proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(pageIndex);\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_1.removeChild(oldPageDiv[parseInt(i.toString(), 10)]);\n }\n proxy.isTileImageRendered = false;\n proxy.tileRenderCount = 0;\n if (proxy.pdfViewer.magnificationModule) {\n proxy.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n proxy.isDrawnCompletely = true;\n }\n node_1.setAttribute('alt', 'Page ' + (pageIndex + 1));\n };\n if (tileData)\n node_1.src = tileData.image;\n }\n }\n };\n for (var l = 0; l < oldCanvases.length; l++) {\n _loop_1(l);\n }\n var tileX_2 = data.tileX ? data.tileX : 0;\n var tileY_2 = data.tileY ? data.tileY : 0;\n if ((tileX_2 === 0) && (tileY_2 === 0)) {\n this.onPageRender(data, pageIndex, pageDiv_1);\n }\n }\n }\n };\n PdfViewerBase.prototype.renderTileCanvas = function (pageWidth, pageHeight, pageIndex, pageDiv, zoomFactor, scaleFactor) {\n var pageCanvas = this.getElement('_pageTileCanvas_' + pageIndex);\n if (!pageCanvas) {\n pageCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_pageTileCanvas_' + pageIndex, className: 'e-pv-pageTile-canvas' });\n pageCanvas.style.width = pageWidth + 'px';\n pageCanvas.style.height = pageHeight + 'px';\n pageCanvas.style.display = 'none';\n pageCanvas.style.backgroundColor = '#fff';\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n pageDiv.appendChild(pageCanvas);\n }\n return pageCanvas;\n };\n PdfViewerBase.prototype.calculateImageWidth = function (pageWidth, zoomFactor, scaleFactor, imageWidth) {\n var width = (pageWidth / this.getZoomFactor()) * zoomFactor * scaleFactor;\n // eslint-disable-next-line\n if ((parseInt(imageWidth.toString())) === (parseInt(width.toString()))) {\n imageWidth = width;\n }\n imageWidth = ((imageWidth * this.getZoomFactor()) / zoomFactor);\n return imageWidth;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderPage = function (data, pageIndex, imageSource) {\n var _this = this;\n var proxy = this;\n if (data && this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n var pageWidth = this.getPageWidth(pageIndex);\n var pageHeight = this.getPageHeight(pageIndex);\n // eslint-disable-next-line max-len\n var canvas_2 = this.getElement('_pageCanvas_' + pageIndex);\n var pageDiv_2 = this.getElement('_pageDiv_' + pageIndex);\n if (pageDiv_2) {\n pageDiv_2.style.width = pageWidth + 'px';\n pageDiv_2.style.height = pageHeight + 'px';\n pageDiv_2.style.top = this.getPageTop(pageIndex) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv_2.style.right = this.updateLeftPosition(pageIndex) + 'px';\n }\n else {\n pageDiv_2.style.left = this.updateLeftPosition(pageIndex) + 'px';\n }\n }\n if (canvas_2) {\n canvas_2.style.background = '#fff';\n canvas_2.style.display = 'block';\n canvas_2.style.width = pageWidth + 'px';\n canvas_2.style.height = pageHeight + 'px';\n if (pageWidth < parseFloat(pageDiv_2.style.width)) {\n pageDiv_2.style.boxShadow = 'none';\n }\n // eslint-disable-next-line\n var imageData = this.renderThumbnailImages ? imageSource : data['image'];\n if (imageData) {\n canvas_2.onload = function () {\n var oldCanvases = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_tileimg_' + pageIndex + '_\"]');\n var pageCanvas = proxy.getElement('_pageDiv_' + pageIndex);\n for (var i = 0; i < oldCanvases.length; i++) {\n var tileImgId = oldCanvases[parseInt(i.toString(), 10)].id.split('_');\n if (parseFloat(tileImgId[tileImgId.length - 3]) != proxy.getZoomFactor())\n pageCanvas.removeChild(oldCanvases[parseInt(i.toString(), 10)]);\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + proxy.pdfViewer.element.id + '_oldCanvas\"]');\n for (var i = 0; i < oldPageDiv.length; i++) {\n pageDiv_2.removeChild(oldPageDiv[parseInt(i.toString(), 10)]);\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.rerenderCountIncrement();\n }\n _this.showPageLoadingIndicator(pageIndex, false);\n if (pageIndex === 0 && _this.isDocumentLoaded) {\n _this.renderPDFInformations();\n _this.isInitialLoaded = true;\n // eslint-disable-next-line\n var pageData = window.sessionStorage.getItem(_this.documentId + '_pagedata');\n if (_this.pageCount <= 100) {\n _this.pdfViewer.fireDocumentLoad(pageData);\n }\n _this.isDocumentLoaded = false;\n if (_this.pdfViewer.textSearch && _this.pdfViewer.isExtractText) {\n _this.pdfViewer.textSearchModule.getPDFDocumentTexts();\n }\n }\n if (_this.pdfViewer.magnificationModule) {\n _this.pdfViewer.magnificationModule.pushImageObjects(canvas_2);\n }\n canvas_2.setAttribute('alt', 'Page ' + (pageIndex + 1));\n };\n canvas_2.src = imageData;\n }\n this.onPageRender(data, pageIndex, pageDiv_2);\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.onPageRender = function (data, pageIndex, pageDiv) {\n // eslint-disable-next-line\n var aElement = pageDiv && pageDiv.getElementsByTagName('a');\n var isAnnotationRendered = false;\n if (aElement && aElement.length !== 0) {\n for (var index = aElement.length - 1; index >= 0; index--) {\n aElement[parseInt(index.toString(), 10)].parentNode.removeChild(aElement[parseInt(index.toString(), 10)]);\n }\n }\n if (this.pdfViewer.textSearchModule || this.pdfViewer.textSelectionModule || this.pdfViewer.annotationModule) {\n this.renderTextContent(data, pageIndex);\n }\n if (this.pdfViewer.formFieldsModule && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n }\n if (this.pdfViewer.formDesignerModule && !this.isDocumentLoaded) {\n this.pdfViewer.formDesignerModule.rerenderFormFields(pageIndex);\n }\n if (this.pdfViewer.formFieldsModule && !this.isDocumentLoaded && !this.pdfViewer.formDesignerModule) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n }\n if (this.pdfViewer.formDesignerModule && this.isDocumentLoaded && this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n this.pdfViewer.formFieldsModule.renderFormFields(pageIndex, false);\n this.pdfViewer.magnificationModule.isFormFieldPageZoomed = false;\n }\n if (this.pdfViewer.enableHyperlink && this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.renderHyperlinkContent(data, pageIndex);\n }\n if (this.pdfViewer.textSelectionModule && !this.isTextSelectionDisabled) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(pageIndex);\n }\n if (this.documentAnnotationCollections) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationRenderredList.length; i++) {\n if (this.annotationRenderredList[parseInt(i.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n // eslint-disable-next-line\n var pageAnnotations = this.documentAnnotationCollections[pageIndex];\n if (pageAnnotations && !isAnnotationAdded) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n this.annotationRenderredList.push(pageIndex);\n }\n }\n if (this.isImportAction) {\n // eslint-disable-next-line\n var pageAnnotations = this.checkDocumentCollectionData(pageIndex);\n if (pageAnnotations) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n isAnnotationRendered = true;\n }\n }\n if (this.pdfViewer.annotationModule && (this.isTextMarkupAnnotationModule() || this.isShapeBasedAnnotationsEnabled())) {\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line\n var stampData = data['stampAnnotations'];\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex, null, true);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex);\n }\n }\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation, null, true);\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation);\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(data.stickyNotesAnnotation, pageIndex);\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule) {\n this.pdfViewer.formDesignerModule.updateCanvas(pageIndex);\n }\n if (this.pdfViewer.textSearchModule) {\n if (this.pdfViewer.textSearchModule.isTextSearch) {\n this.pdfViewer.textSearchModule.highlightOtherOccurrences(pageIndex);\n }\n }\n if (this.isShapeBasedAnnotationsEnabled()) {\n var canvas1 = this.getElement('_annotationCanvas_' + pageIndex);\n var commonStyle = 'position:absolute;top:0px;left:0px;overflow:hidden;pointer-events:none;z-index:1000';\n if (canvas1) {\n var bounds = canvas1.getBoundingClientRect();\n renderAdornerLayer(bounds, commonStyle, canvas1, pageIndex, this.pdfViewer);\n this.pdfViewer.renderSelector(pageIndex, this.pdfViewer.annotationSelectorSettings);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.selectCommentsAnnotation(pageIndex);\n }\n if (this.isFreeTextAnnotationModule() && data.freeTextAnnotation) {\n if (isAnnotationRendered) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex);\n }\n else {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex);\n }\n }\n if (this.isInkAnnotationModule() && data && data.signatureInkAnnotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(data.signatureInkAnnotation, pageIndex, isAnnotationRendered);\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.isAnnotationSelected && this.pdfViewer.annotationModule.annotationPageIndex === pageIndex) {\n this.pdfViewer.annotationModule.selectAnnotationFromCodeBehind();\n }\n this.isLoadedFormFieldAdded = false;\n };\n /**\n * @private\n * @param {number} pageIndex - page index for rendering the annotation.\n * @returns {void}\n */\n PdfViewerBase.prototype.renderAnnotations = function (pageIndex, isAddedProgrammatically) {\n // eslint-disable-next-line\n var data = {};\n if (this.documentAnnotationCollections) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationRenderredList.length; i++) {\n if (this.annotationRenderredList[parseInt(i.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n // eslint-disable-next-line\n var pageAnnotations = this.documentAnnotationCollections[pageIndex];\n if (pageAnnotations && !isAnnotationAdded) {\n data.shapeAnnotation = pageAnnotations.shapeAnnotation;\n data.measureShapeAnnotation = pageAnnotations.measureShapeAnnotation;\n data.textMarkupAnnotation = pageAnnotations.textMarkupAnnotation;\n data.freeTextAnnotation = pageAnnotations.freeTextAnnotation;\n data.stampAnnotations = pageAnnotations.stampAnnotations;\n data.stickyNotesAnnotation = pageAnnotations.stickyNotesAnnotation;\n data.signatureAnnotation = pageAnnotations.signatureAnnotation;\n data.signatureInkAnnotation = pageAnnotations.signatureInkAnnotation;\n this.annotationRenderredList.push(pageIndex);\n }\n }\n if (this.isAnnotationCollectionRemoved) {\n data.shapeAnnotation = [];\n data.measureShapeAnnotation = [];\n data.textMarkupAnnotation = [];\n data.freeTextAnnotation = [];\n data.stampAnnotations = [];\n data.stickyNotesAnnotation = [];\n data.signatureInkAnnotation = [];\n }\n if (this.isTextMarkupAnnotationModule() || this.isShapeBasedAnnotationsEnabled()) {\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line\n var stampData = data['stampAnnotations'];\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(stampData, pageIndex);\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, data.shapeAnnotation, data.measureShapeAnnotation, data.textMarkupAnnotation);\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(data.stickyNotesAnnotation, pageIndex);\n }\n if (this.pdfViewer.textSearchModule) {\n if (this.pdfViewer.textSearchModule.isTextSearch) {\n this.pdfViewer.textSearchModule.highlightOtherOccurrences(pageIndex);\n }\n }\n if (this.isImportAction) {\n var isAnnotationAdded = false;\n for (var i = 0; i < this.annotationPageList.length; i++) {\n if (this.annotationPageList[parseInt(i.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n }\n }\n if (!isAnnotationAdded) {\n if (this.importedAnnotation) {\n this.drawPageAnnotations(this.importedAnnotation, pageIndex, true);\n this.annotationPageList[this.annotationPageList.length] = pageIndex;\n }\n }\n }\n if (this.isShapeBasedAnnotationsEnabled()) {\n var canvas1 = this.getElement('_annotationCanvas_' + pageIndex);\n var commonStyle = 'position:absolute;top:0px;left:0px;overflow:hidden;pointer-events:none;z-index:1000';\n if (canvas1) {\n var bounds = canvas1.getBoundingClientRect();\n renderAdornerLayer(bounds, commonStyle, canvas1, pageIndex, this.pdfViewer);\n this.pdfViewer.renderSelector(pageIndex);\n }\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.selectCommentsAnnotation(pageIndex);\n }\n if (this.isFreeTextAnnotationModule() && data.freeTextAnnotation) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(data.freeTextAnnotation, pageIndex, undefined);\n }\n if (data && data.signatureAnnotation) {\n this.signatureModule.renderExistingSignature(data.signatureAnnotation, pageIndex, false);\n }\n if (this.isInkAnnotationModule() && data && data.signatureInkAnnotation) {\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(data.signatureInkAnnotation, pageIndex, false);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.isAnnotationSelected) {\n this.pdfViewer.annotationModule.selectAnnotationFromCodeBehind();\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderTextContent = function (data, pageIndex) {\n // eslint-disable-next-line\n var texts = data['textContent'];\n // eslint-disable-next-line\n var bounds = data['textBounds'];\n // eslint-disable-next-line\n var rotation = data['rotation'];\n var rtldoc = data.documentTextCollection ? this.checkIsRtlText(data.documentTextCollection[0][pageIndex].PageText) : this.checkIsRtlText(data.pageText);\n var textLayer = this.getElement('_textLayer_' + pageIndex);\n if (!textLayer) {\n // eslint-disable-next-line max-len\n textLayer = this.textLayer.addTextLayer(pageIndex, this.getPageWidth(pageIndex), this.getPageHeight(pageIndex), this.getElement('_pageDiv_' + pageIndex));\n }\n if (textLayer && texts && bounds) {\n textLayer.style.display = 'block';\n if (textLayer.childNodes.length === 0) {\n this.textLayer.renderTextContents(pageIndex, texts, bounds, rotation, rtldoc);\n }\n else {\n this.textLayer.resizeTextContents(pageIndex, texts, bounds, rotation, true);\n }\n }\n };\n PdfViewerBase.prototype.renderPageContainer = function (pageNumber, pageWidth, pageHeight, topValue) {\n // eslint-disable-next-line max-len\n var pageDiv = createElement('div', { id: this.pdfViewer.element.id + '_pageDiv_' + pageNumber, className: 'e-pv-page-div', attrs: { 'tabindex': '-1' } });\n pageDiv.style.width = pageWidth + 'px';\n pageDiv.style.height = pageHeight + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv.style.right = this.updateLeftPosition(pageNumber) + 'px';\n }\n else {\n pageDiv.style.left = this.updateLeftPosition(pageNumber) + 'px';\n }\n pageDiv.style.top = topValue + 'px';\n this.pageContainer.appendChild(pageDiv);\n this.pageContainer.style.width = this.viewerContainer.clientWidth + 'px';\n this.createWaitingPopup(pageNumber);\n this.orderPageDivElements(pageDiv, pageNumber);\n this.renderPageCanvas(pageDiv, pageWidth, pageHeight, pageNumber, 'block');\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && !this.isThumb) {\n this.updateMobileScrollerPosition();\n }\n };\n PdfViewerBase.prototype.renderPDFInformations = function () {\n if (this.pdfViewer.thumbnailViewModule && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n this.pdfViewer.thumbnailViewModule.createRequestForThumbnails();\n }\n if (this.pdfViewer.bookmarkViewModule) {\n this.pdfViewer.bookmarkViewModule.createRequestForBookmarks();\n }\n if (this.pdfViewer.annotationModule) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.initializeAcccordionContainer();\n }\n if (this.pdfViewer.isCommandPanelOpen) {\n this.pdfViewer.annotation.showCommentsPanel();\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.createRequestForComments();\n }\n };\n PdfViewerBase.prototype.orderPageDivElements = function (pageDiv, pageIndex) {\n var nextElement = this.getElement('_pageDiv_' + (pageIndex + 1));\n if (nextElement) {\n this.pageContainer.insertBefore(pageDiv, nextElement);\n }\n else {\n this.pageContainer.appendChild(pageDiv);\n }\n };\n /**\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @param pageDiv\n * @param pageWidth\n * @param pageHeight\n * @param pageNumber\n * @param displayMode\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.renderPageCanvas = function (pageDiv, pageWidth, pageHeight, pageNumber, displayMode) {\n if (pageDiv) {\n // eslint-disable-next-line\n var pageCanvas = this.getElement('_pageCanvas_' + pageNumber);\n if (pageCanvas) {\n pageCanvas.width = pageWidth;\n pageCanvas.height = pageHeight;\n pageCanvas.style.display = 'block';\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n }\n else {\n // eslint-disable-next-line max-len\n pageCanvas = createElement('img', { id: this.pdfViewer.element.id + '_pageCanvas_' + pageNumber, className: 'e-pv-page-canvas' });\n pageCanvas.width = pageWidth;\n pageCanvas.height = pageHeight;\n pageCanvas.style.display = displayMode;\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n pageDiv.appendChild(pageCanvas);\n }\n pageCanvas.setAttribute('alt', '');\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotation) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.createAnnotationLayer(pageDiv, pageWidth, pageHeight, pageNumber, displayMode);\n }\n if (this.pdfViewer.textSearchModule || this.pdfViewer.textSelectionModule || this.pdfViewer.annotationModule) {\n this.textLayer.addTextLayer(pageNumber, pageWidth, pageHeight, pageDiv);\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule) {\n this.pdfViewer.formDesignerModule.createAnnotationLayer(pageDiv, pageWidth, pageHeight, pageNumber, displayMode);\n }\n return pageCanvas;\n }\n };\n /**\n * @private\n * @param {any} pageCanvas - The canvas for rendering the page.\n * @param {any} pageNumber - The page number for adding styles.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.applyElementStyles = function (pageCanvas, pageNumber) {\n if (this.isMixedSizeDocument && pageCanvas) {\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageNumber);\n var oldCanvas = document.getElementById(this.pdfViewer.element.id + '_oldCanvas_' + pageNumber);\n if (pageCanvas && canvasElement && canvasElement.offsetLeft > 0) {\n pageCanvas.style.marginLeft = canvasElement.offsetLeft + 'px';\n pageCanvas.style.marginRight = canvasElement.offsetLeft + 'px';\n }\n else if (oldCanvas && oldCanvas.offsetLeft > 0) {\n pageCanvas.style.marginLeft = oldCanvas.offsetLeft + 'px';\n pageCanvas.style.marginRight = oldCanvas.offsetLeft + 'px';\n }\n else {\n pageCanvas.style.marginLeft = 'auto';\n pageCanvas.style.marginRight = 'auto';\n }\n }\n };\n /**\n * @private\n * @param {number} pageIndex - page index for updating positon.\n * @returns {void}\n */\n PdfViewerBase.prototype.updateLeftPosition = function (pageIndex) {\n var leftPosition;\n var width = this.viewerContainer.getBoundingClientRect().width;\n if (width === 0) {\n width = parseFloat(this.pdfViewer.width.toString());\n }\n // eslint-disable-next-line max-len\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n if (this.viewerContainer.clientWidth > 0) {\n leftPosition = (this.viewerContainer.clientWidth - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n else {\n leftPosition = (width - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n var pageDiff = (this.highestWidth * this.getZoomFactor() - this.getPageWidth(pageIndex)) / 2;\n if (leftPosition > 0) {\n leftPosition += pageDiff;\n }\n else {\n leftPosition = pageDiff;\n }\n }\n else {\n if (this.viewerContainer.clientWidth > 0) {\n leftPosition = (this.viewerContainer.clientWidth - this.getPageWidth(pageIndex)) / 2;\n }\n else {\n leftPosition = (width - this.getPageWidth(pageIndex)) / 2;\n }\n }\n if (this.pageSize[parseInt(pageIndex.toString(), 10)].width > this.pageSize[parseInt(pageIndex.toString(), 10)].height) {\n \n }\n // eslint-disable-next-line max-len\n if (leftPosition < 0 || (this.pdfViewer.magnificationModule ? ((this.pdfViewer.magnificationModule.isAutoZoom && this.getZoomFactor() < 1) || this.pdfViewer.magnificationModule.fitType === 'fitToWidth') : false)) {\n var leftValue = leftPosition;\n if (leftPosition > 0 && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n // eslint-disable-next-line\n leftPosition = leftValue;\n }\n else {\n leftPosition = this.pageLeft;\n }\n if ((leftPosition > 0) && this.isMixedSizeDocument) {\n if (leftValue > 0) {\n leftPosition = leftValue;\n }\n }\n }\n return leftPosition;\n };\n /**\n * @private\n * @param {number} pageIndex - The page index for positon.\n * @returns {void}\n */\n PdfViewerBase.prototype.applyLeftPosition = function (pageIndex) {\n var leftPosition;\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n if (this.isMixedSizeDocument && this.highestWidth > 0) {\n if (this.viewerContainer.clientWidth > 0) {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.clientWidth - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n else {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.getBoundingClientRect().width - (this.highestWidth * this.getZoomFactor())) / 2;\n }\n var pageDiff = (this.highestWidth * this.getZoomFactor() - this.getPageWidth(pageIndex)) / 2;\n if (leftPosition > 0) {\n leftPosition += pageDiff;\n }\n else {\n leftPosition = pageDiff;\n }\n }\n else {\n if (this.viewerContainer.clientWidth > 0) {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.clientWidth - this.pageSize[parseInt(pageIndex.toString(), 10)].width * this.getZoomFactor()) / 2;\n }\n else {\n // eslint-disable-next-line max-len\n leftPosition = (this.viewerContainer.getBoundingClientRect().width - this.pageSize[parseInt(pageIndex.toString(), 10)].width * this.getZoomFactor()) / 2;\n }\n }\n if (this.pageSize[parseInt(pageIndex.toString(), 10)].width > this.pageSize[parseInt(pageIndex.toString(), 10)].height) {\n \n }\n // eslint-disable-next-line max-len\n if (leftPosition < 0 || (this.pdfViewer.magnificationModule ? ((this.pdfViewer.magnificationModule.isAutoZoom && this.getZoomFactor() < 1) || this.pdfViewer.magnificationModule.fitType === 'fitToWidth') : false)) {\n var leftValue = leftPosition;\n leftPosition = this.pageLeft;\n // eslint-disable-next-line max-len\n if ((leftValue > 0) && this.isMixedSizeDocument) {\n leftPosition = leftValue;\n }\n }\n // eslint-disable-next-line max-len\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n if (pageDiv) {\n if (!this.pdfViewer.enableRtl) {\n pageDiv.style.left = leftPosition + 'px';\n }\n else {\n pageDiv.style.right = leftPosition + 'px';\n }\n }\n }\n };\n PdfViewerBase.prototype.updatePageHeight = function (viewerHeight, toolbarHeight) {\n return ((viewerHeight - toolbarHeight) / viewerHeight) * 100 + '%';\n };\n /**\n * @private\n * @param {Point} clientPoint - The user should provide a x, y coordinates.\n * @returns {number}\n */\n PdfViewerBase.prototype.getPageNumberFromClientPoint = function (clientPoint) {\n var pointX = clientPoint.x + this.viewerContainer.scrollLeft;\n var pointY = clientPoint.y + this.viewerContainer.scrollTop;\n for (var i = 0; i < this.pageCount; i++) {\n var pageTop = this.pageSize[parseInt(i.toString(), 10)].height + this.viewerContainer.scrollTop;\n if (pointY < (this.pageSize[parseInt(i.toString(), 10)].top + pageTop)) {\n var viewerContainerBounds = this.getElement('_pageViewContainer').getBoundingClientRect();\n var pageLeft = ((viewerContainerBounds.width - this.pageSize[parseInt(i.toString(), 10)].width) / 2) + viewerContainerBounds.x;\n var verticalScrollPosition = 0;\n if (pointY > this.pageSize[parseInt(i.toString(), 10)].top) {\n verticalScrollPosition = (pointY - this.pageSize[parseInt(i.toString(), 10)].top);\n }\n else {\n verticalScrollPosition = (this.pageSize[parseInt(i.toString(), 10)].top - pointY);\n }\n if (verticalScrollPosition > 0) {\n if (this.pageSize[parseInt(i.toString(), 10)] != null) {\n var pageHeight = this.getPageHeight(i);\n if (pageLeft >= 0) {\n if ((pointX < pageLeft) || (pointX > (pageLeft + (this.pageSize[parseInt(i.toString(), 10)].width)))) {\n return -1;\n }\n }\n if (verticalScrollPosition <= (this.getPageTop(i) + pageTop)) {\n return i + 1;\n }\n }\n }\n }\n }\n return -1;\n };\n /**\n * @private\n * @param {Point} clientPoint - The user should provide a x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns {Point}\n */\n PdfViewerBase.prototype.convertClientPointToPagePoint = function (clientPoint, pageNumber) {\n if (pageNumber !== -1) {\n var viewerContainerBounds = this.getElement('_pageViewContainer').getBoundingClientRect();\n var pageLeft = ((viewerContainerBounds.width - this.pageSize[pageNumber - 1].width) / 2) + viewerContainerBounds.x;\n var pagePoint = { x: (clientPoint.x + this.viewerContainer.scrollLeft) - pageLeft, y: (clientPoint.y + this.viewerContainer.scrollTop) - this.pageSize[pageNumber - 1].top };\n return pagePoint;\n }\n return null;\n };\n /**\n * @private\n * @param {Point} pagePoint - The user needs to provide a page x, y position.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns {Point}\n */\n PdfViewerBase.prototype.convertPagePointToClientPoint = function (pagePoint, pageNumber) {\n if (pageNumber !== -1) {\n var viewerContainerBounds = this.getElement('_pageViewContainer').getBoundingClientRect();\n var pageLeft = ((viewerContainerBounds.width - this.pageSize[pageNumber - 1].width) / 2) + viewerContainerBounds.x;\n var clientPoint = { x: pagePoint.x + pageLeft, y: pagePoint.y + this.pageSize[pageNumber - 1].top };\n return clientPoint;\n }\n return null;\n };\n /**\n * @private\n * @param {Point} pagePoint - The user needs to provide a page x, y position.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns {Point}\n */\n PdfViewerBase.prototype.convertPagePointToScrollingPoint = function (pagePoint, pageNumber) {\n if (pageNumber !== -1) {\n var scrollingPoint = { x: pagePoint.x + this.viewerContainer.scrollLeft, y: pagePoint.y + this.viewerContainer.scrollTop };\n return scrollingPoint;\n }\n return null;\n };\n PdfViewerBase.prototype.initiatePageViewScrollChanged = function () {\n if (this.scrollHoldTimer) {\n clearTimeout(this.scrollHoldTimer);\n }\n this.scrollHoldTimer = null;\n if ((this.scrollPosition * this.getZoomFactor()) !== this.viewerContainer.scrollTop) {\n this.scrollPosition = this.viewerContainer.scrollTop;\n this.pageViewScrollChanged(this.currentPageNumber);\n }\n };\n PdfViewerBase.prototype.renderCountIncrement = function () {\n if (this.pdfViewer.magnificationModule) {\n this.pdfViewer.magnificationModule.renderCountIncrement();\n }\n };\n /**\n * @private\n * @param {number} currentPageNumber - The current pagenumber.\n * @returns {void}\n */\n PdfViewerBase.prototype.pageViewScrollChanged = function (currentPageNumber) {\n if (this.isPanMode) {\n if (this.renderedPagesList.indexOf(currentPageNumber - 1) === -1) {\n this.reRenderedCount = 0;\n }\n }\n else {\n this.reRenderedCount = 0;\n }\n var currentPageIndex = currentPageNumber - 1;\n if (currentPageNumber !== this.previousPage && currentPageNumber <= this.pageCount) {\n var isSkip = false;\n if (this.isDataExits && !this.getStoredData(currentPageIndex)) {\n isSkip = true;\n }\n if (this.renderedPagesList.indexOf(currentPageIndex) === -1 && !this.getMagnified() && !isSkip) {\n this.renderCountIncrement();\n this.createRequestForRender(currentPageIndex);\n }\n }\n if (!(this.getMagnified() || this.getPagesPinchZoomed())) {\n var previous = currentPageIndex - 1;\n var isSkip = false;\n var canvas = this.getElement('_pageCanvas_' + previous);\n if (this.isDataExits && !this.getStoredData(previous)) {\n isSkip = true;\n }\n if (canvas !== null && !isSkip) {\n if (this.renderedPagesList.indexOf(previous) === -1 && !this.getMagnified()) {\n this.renderCountIncrement();\n this.createRequestForRender(previous);\n }\n }\n if (this.isMinimumZoom) {\n this.renderPreviousPagesInScroll(previous);\n }\n var next = currentPageIndex + 1;\n var pageHeight = 0;\n if (next < this.pageCount) {\n pageHeight = this.getPageHeight(next);\n var allowPageRendering = this.isMinimumZoom ? this.isMinimumZoom : this.renderedPagesList.indexOf(next) === -1;\n if (allowPageRendering && !this.getMagnified() && pageHeight) {\n this.createRequestForRender(next);\n this.renderCountIncrement();\n while (this.viewerContainer.clientHeight > pageHeight) {\n next = next + 1;\n if (next < this.pageCount) {\n this.renderPageElement(next);\n this.createRequestForRender(next);\n pageHeight += this.getPageHeight(next);\n this.renderCountIncrement();\n }\n else {\n break;\n }\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.renderPreviousPagesInScroll = function (pageIndex) {\n var next = pageIndex - 1;\n var pageNumber = next - 1;\n if (next > 0) {\n if (this.renderedPagesList.indexOf(next) === -1 && !this.getMagnified()) {\n this.createRequestForRender(next);\n this.renderCountIncrement();\n }\n if (pageNumber > 0) {\n if (this.renderedPagesList.indexOf(pageNumber) === -1 && !this.getMagnified()) {\n this.createRequestForRender(pageNumber);\n this.renderCountIncrement();\n }\n }\n }\n };\n PdfViewerBase.prototype.downloadDocument = function (blobUrl) {\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n blobUrl = Url.createObjectURL(blobUrl);\n var anchorElement = createElement('a');\n if (anchorElement.click) {\n anchorElement.href = blobUrl;\n anchorElement.target = '_parent';\n if ('download' in anchorElement) {\n anchorElement.download = this.downloadFileName;\n }\n (document.body || document.documentElement).appendChild(anchorElement);\n anchorElement.click();\n anchorElement.parentNode.removeChild(anchorElement);\n }\n else {\n if (window.top === window &&\n blobUrl.split('#')[0] === window.location.href.split('#')[0]) {\n var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';\n blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');\n }\n /* eslint-disable-next-line security/detect-non-literal-fs-filename */\n window.open(blobUrl, '_parent');\n }\n };\n PdfViewerBase.prototype.downloadExportFormat = function (blobUrl, annotationDataFormat, formFieldDataFormat, isForm) {\n var isJson = annotationDataFormat === 'Json' || formFieldDataFormat === 'Json';\n // eslint-disable-next-line max-len\n var extension = isJson ? '.json' : formFieldDataFormat === 'Fdf' ? '.fdf' : formFieldDataFormat === 'Xml' ? '.xml' : (annotationDataFormat === 'Xfdf' || formFieldDataFormat === 'Xfdf') ? '.xfdf' : null;\n if (!isNullOrUndefined(extension)) {\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n blobUrl = Url.createObjectURL(blobUrl);\n var anchorElement = createElement('a');\n if (anchorElement.click) {\n anchorElement.href = blobUrl;\n anchorElement.target = '_parent';\n if ('download' in anchorElement) {\n if (this.pdfViewer.exportAnnotationFileName !== null) {\n anchorElement.download = this.pdfViewer.exportAnnotationFileName.split('.')[0] + extension;\n }\n else {\n anchorElement.download = this.pdfViewer.fileName.split('.')[0] + extension;\n }\n }\n (document.body || document.documentElement).appendChild(anchorElement);\n anchorElement.click();\n anchorElement.parentNode.removeChild(anchorElement);\n if (isForm) {\n this.pdfViewer.fireFormExportSuccess(blobUrl, anchorElement.download);\n }\n else {\n this.pdfViewer.fireExportSuccess(blobUrl, anchorElement.download);\n }\n }\n else if (isJson) {\n if (window.top === window &&\n blobUrl.split('#')[0] === window.location.href.split('#')[0]) {\n var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&';\n blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&');\n }\n /* eslint-disable-next-line security/detect-non-literal-fs-filename */\n window.open(blobUrl, '_parent');\n if (isForm) {\n this.pdfViewer.fireFormExportSuccess(blobUrl, this.pdfViewer.fileName.split('.')[0] + extension);\n }\n else {\n this.pdfViewer.fireExportSuccess(blobUrl, this.pdfViewer.fileName.split('.')[0] + extension);\n }\n }\n }\n };\n /**\n * @private\n * @param {string} data - The data for exporting the fields.\n * @returns {void}\n */\n PdfViewerBase.prototype.exportFormFields = function (data, formFieldDataFormat) {\n this.createRequestForExportFormfields(false, formFieldDataFormat, data);\n };\n /**\n * @param data\n * @param formFieldDataFormat\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.importFormFields = function (data, formFieldDataFormat) {\n this.createRequestForImportingFormfields(data, formFieldDataFormat);\n };\n /**\n * @param {boolean} isObject\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @param {string} data - The data for exporting the fields.\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForExportFormfields = function (isObject, formFieldDataFormat, data) {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject = proxy.createFormfieldsJsonData();\n if (formFieldDataFormat === 'Json' || formFieldDataFormat === 'Fdf' || formFieldDataFormat === 'Xfdf' || formFieldDataFormat === \"Xml\") {\n jsonObject.formFieldDataFormat = formFieldDataFormat;\n proxy.pdfViewer.fireFormExportStarted(jsonObject);\n }\n jsonObject.action = 'ExportFormFields';\n // eslint-disable-next-line\n jsonObject['hashId'] = proxy.hashId;\n // eslint-disable-next-line\n jsonObject['fileName'] = proxy.pdfViewer.fileName;\n if (data && data !== '' && !isObject) {\n // eslint-disable-next-line\n jsonObject['filePath'] = data;\n }\n // eslint-disable-next-line\n jsonObject['elementId'] = _this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var formFieldsPageList = _this.getFormFieldsPageList(jsonObject[\"formDesigner\"]);\n jsonObject['formFieldsPageList'] = JSON.stringify(formFieldsPageList);\n jsonObject['isFormFieldAnnotationsExist'] = _this.isAnnotationsExist(jsonObject[\"formDesigner\"]) || _this.isFieldsDataExist(jsonObject[\"fieldsData\"]) || formFieldsPageList.length > 0;\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.exportFormFields;\n proxy.exportFormFieldsRequestHandler = new AjaxHandler(_this.pdfViewer);\n proxy.exportFormFieldsRequestHandler.url = url;\n proxy.exportFormFieldsRequestHandler.mode = true;\n proxy.exportFormFieldsRequestHandler.responseType = 'text';\n proxy.exportFormFieldsRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.exportFormFields, data);\n if (isObject) {\n // eslint-disable-next-line\n var annotationJson = decodeURIComponent(escape(atob(data.split(',')[1])));\n resolve(annotationJson);\n proxy.pdfViewer.fireFormExportSuccess(annotationJson, proxy.pdfViewer.fileName);\n }\n else if (data.split('base64,')[1]) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/json');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.json');\n }\n else if (jsonObject.formFieldDataFormat === 'Json' || jsonObject.formFieldDataFormat === 'Fdf' || jsonObject.formFieldDataFormat === 'Xfdf' || jsonObject.formFieldDataFormat === 'Xml') {\n proxy.downloadExportFormat(blobUrl, null, formFieldDataFormat, true);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireFormExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n // eslint-disable-next-line\n proxy.exportFormFieldsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireFormExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n });\n if (isObject) {\n return promise;\n }\n else {\n return true;\n }\n };\n /**\n * @param {string} fileName - Gets the name of the file name for slicing the last index\n * @param {string} sliceBy - A type to slice the file name; example (\".\", \"_\")\n * @returns {string}\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getLastIndexValue = function (fileName, sliceBy) {\n var indexName = fileName.slice(fileName.lastIndexOf(sliceBy) + 1);\n return indexName;\n };\n /**\n * @param source\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForImportingFormfields = function (source, formFieldDataFormat) {\n var proxy = null;\n var index = \".\";\n proxy = this;\n // eslint-disable-next-line\n var jsonObject = {};\n var sourceName = this.getLastIndexValue(source, index);\n if (typeof source !== 'object' && (sourceName === 'json' || sourceName === 'fdf' || sourceName === 'xfdf' || sourceName === 'xml')) {\n jsonObject.data = source;\n jsonObject['fileName'] = proxy.pdfViewer.fileName;\n jsonObject.formFieldDataFormat = formFieldDataFormat;\n }\n else {\n jsonObject.formFieldDataFormat = formFieldDataFormat;\n if (formFieldDataFormat === 'Json') {\n jsonObject.data = JSON.stringify(source);\n }\n else {\n jsonObject.data = source;\n }\n }\n proxy.pdfViewer.fireFormImportStarted(source);\n // eslint-disable-next-line\n jsonObject.action = 'ImportFormFields';\n // eslint-disable-next-line\n jsonObject['hashId'] = proxy.hashId;\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.importFormFields;\n proxy.importFormFieldsRequestHandler = new AjaxHandler(this.pdfViewer);\n proxy.importFormFieldsRequestHandler.url = url;\n proxy.importFormFieldsRequestHandler.mode = true;\n proxy.importFormFieldsRequestHandler.responseType = 'text';\n proxy.importFormFieldsRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data && data !== 'null') {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importFormFields);\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewer.fireFormImportFailed(source, proxy.pdfViewer.localeObj.getConstant('File not found'));\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importFormFields);\n data = null;\n }\n }\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.importFormFields, data);\n proxy.pdfViewer.fireFormImportSuccess(source);\n window.sessionStorage.removeItem(this.documentId + '_formfields');\n this.pdfViewer.formFieldsModule.removeExistingFormFields();\n window.sessionStorage.removeItem(this.documentId + '_formDesigner');\n proxy.saveFormfieldsData(data);\n for (var i = 0; i < proxy.renderedPagesList.length; i++) {\n this.pdfViewer.formFieldsModule.renderFormFields(proxy.renderedPagesList[parseInt(i.toString(), 10)], true);\n }\n }\n else {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n }\n };\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n };\n // eslint-disable-next-line\n proxy.importFormFieldsRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireFormImportFailed(source, result.statusText);\n };\n };\n /**\n * @public\n * @returns {any} - Returns the Json data.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createFormfieldsJsonData = function () {\n // eslint-disable-next-line\n var jsonObject = {};\n if (this.pdfViewer.formDesignerModule) {\n var fieldsData = this.pdfViewer.formDesignerModule.downloadFormDesigner();\n // eslint-disable-next-line\n jsonObject['formDesigner'] = fieldsData;\n }\n else if (this.pdfViewer.formFieldsModule) {\n var fieldsData = this.pdfViewer.formFieldsModule.downloadFormFieldsData();\n // eslint-disable-next-line\n jsonObject['fieldsData'] = fieldsData;\n }\n return jsonObject;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.constructJsonDownload = function () {\n // eslint-disable-next-line\n var jsonObject = { hashId: this.hashId };\n if (this.jsonDocumentId) {\n jsonObject.documentId = this.jsonDocumentId;\n }\n jsonObject.uniqueId = this.documentId;\n this.importPageList = [];\n if (this.pdfViewer.annotationModule) {\n this.saveImportedAnnotations();\n }\n if (this.isTextMarkupAnnotationModule()) {\n this.isJsonExported = false;\n // eslint-disable-next-line max-len\n var textMarkupAnnotationCollection = this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveTextMarkupAnnotations();\n // eslint-disable-next-line\n jsonObject['textMarkupAnnotations'] = textMarkupAnnotationCollection;\n }\n if (this.isShapeAnnotationModule()) {\n this.isJsonExported = false;\n // eslint-disable-next-line max-len\n var shapeAnnotations = this.pdfViewer.annotationModule.shapeAnnotationModule.saveShapeAnnotations();\n // eslint-disable-next-line\n jsonObject['shapeAnnotations'] = shapeAnnotations;\n }\n if (this.isCalibrateAnnotationModule()) {\n this.isJsonExported = false;\n // eslint-disable-next-line max-len\n var calibrateAnnotations = this.pdfViewer.annotationModule.measureAnnotationModule.saveMeasureShapeAnnotations();\n // eslint-disable-next-line\n jsonObject['measureShapeAnnotations'] = calibrateAnnotations;\n }\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line max-len\n var stampAnnotationCollection = this.pdfViewer.annotationModule.stampAnnotationModule.saveStampAnnotations();\n // eslint-disable-next-line\n jsonObject['stampAnnotations'] = stampAnnotationCollection;\n }\n if (this.isCommentAnnotationModule()) {\n // eslint-disable-next-line max-len\n var stickyAnnotationCollection = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveStickyAnnotations();\n // eslint-disable-next-line\n jsonObject['stickyNotesAnnotation'] = stickyAnnotationCollection;\n }\n if (this.isImportAction) {\n var importList = JSON.stringify(this.importPageList);\n // eslint-disable-next-line\n jsonObject['importPageList'] = importList;\n }\n if (this.pdfViewer.formDesignerModule) {\n var fieldsData = this.pdfViewer.formDesignerModule.downloadFormDesigner();\n // eslint-disable-next-line\n jsonObject['formDesigner'] = fieldsData;\n }\n else if (this.pdfViewer.formFieldsModule) {\n var fieldsData = this.pdfViewer.formFieldsModule.downloadFormFieldsData();\n // eslint-disable-next-line\n jsonObject['fieldsData'] = fieldsData;\n }\n var signatureData = this.signatureModule.saveSignature();\n // eslint-disable-next-line\n jsonObject['signatureData'] = signatureData;\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n jsonObject['isSignatureEdited'] = this.pdfViewer.isSignatureEditable;\n }\n if (this.isFreeTextAnnotationModule()) {\n // eslint-disable-next-line max-len\n var freeTextAnnotationCollection = this.pdfViewer.annotationModule.freeTextAnnotationModule.saveFreeTextAnnotations();\n // eslint-disable-next-line\n jsonObject['freeTextAnnotation'] = freeTextAnnotationCollection;\n }\n if (this.isInkAnnotationModule()) {\n var inkSignatureData = this.pdfViewer.annotationModule.inkAnnotationModule.saveInkSignature();\n // eslint-disable-next-line\n jsonObject['inkSignatureData'] = inkSignatureData;\n }\n // eslint-disable-next-line\n jsonObject['action'] = 'Download';\n // eslint-disable-next-line\n jsonObject['elementId'] = this.pdfViewer.element.id;\n if (this.pdfViewer.annotationModule) {\n var annotationsPageList = this.getAnnotationsPageList();\n jsonObject['isAnnotationsExist'] = this.isAnnotationsExist(jsonObject[\"textMarkupAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"shapeAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"measureShapeAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"stampAnnotations\"]) || this.isAnnotationsExist(jsonObject[\"stickyNotesAnnotation\"]) || this.isAnnotationsExist(jsonObject[\"signatureData\"]) || this.isAnnotationsExist(jsonObject[\"freeTextAnnotation\"]) || this.isAnnotationsExist(jsonObject[\"inkSignatureData\"]) || annotationsPageList.length > 0;\n jsonObject['annotationsPageList'] = JSON.stringify(annotationsPageList);\n }\n if (this.pdfViewer.formDesignerModule || this.pdfViewer.formFieldsModule) {\n var formFieldsPageList = this.getFormFieldsPageList(jsonObject[\"formDesigner\"]);\n jsonObject['isFormFieldAnnotationsExist'] = this.isAnnotationsExist(jsonObject[\"formDesigner\"]) || this.isFieldsDataExist(jsonObject[\"fieldsData\"]) || formFieldsPageList.length > 0;\n jsonObject['formFieldsPageList'] = JSON.stringify(formFieldsPageList);\n }\n if (this.pdfViewer.annotationCollection) {\n jsonObject['annotationCollection'] = JSON.stringify(this.pdfViewer.annotationCollection);\n }\n return jsonObject;\n };\n /**\n * @private\n * @returns {boolean} - Returns whether annotation is present.\n */\n PdfViewerBase.prototype.isAnnotationsExist = function (annotationInfo) {\n // eslint-disable-next-line max-len\n return !isNullOrUndefined(annotationInfo) ? JSON.parse(annotationInfo).flat(1).length > 0 : false;\n };\n /**\n * @private\n * @returns {boolean} - Returns whether fields data is present.\n */\n PdfViewerBase.prototype.isFieldsDataExist = function (fieldsData) {\n // eslint-disable-next-line max-len\n return !isNullOrUndefined(fieldsData) ? Object.entries(JSON.parse(fieldsData)).length !== 0 : false;\n };\n /**\n * @private\n * @returns {boolean} - Returns annotations page number list.\n */\n PdfViewerBase.prototype.getAnnotationsPageList = function () {\n // eslint-disable-next-line max-len\n var annotCollection = this.pdfViewer.annotationCollection.map(function (a) { return a.pageNumber; });\n var annotActionCollection = this.pdfViewer.annotationModule.actionCollection.filter(function (value, index, self) { return value.annotation.propName !== \"formFields\" && value.annotation.formFieldAnnotationType == undefined; }).map(function (a) { return a.pageIndex; });\n var fullPageList = annotCollection.concat(annotActionCollection);\n return fullPageList.filter(function (value, index, self) { return self.indexOf(value) === index && value !== undefined; });\n };\n /**\n * @private\n * @returns {boolean} - Returns form fields page number list.\n */\n PdfViewerBase.prototype.getFormFieldsPageList = function (formDesignerData) {\n // eslint-disable-next-line max-len\n var formFieldsCollection = this.pdfViewer.formFieldCollection.map(function (item) {\n if (!isNullOrUndefined(item.properties)) {\n return item.properties.pageNumber;\n }\n else {\n return item.pageNumber + 1;\n }\n });\n var annotActionCollection = !isNullOrUndefined(this.pdfViewer.annotationModule) ? this.pdfViewer.annotationModule.actionCollection.filter(function (value, index, self) { return value.annotation.propName == \"formFields\" || value.annotation.formFieldAnnotationType != undefined; }).map(function (a) { return a.pageIndex; }) : [];\n var fullPageList = formFieldsCollection.concat(annotActionCollection);\n var designerDataList;\n if (!isNullOrUndefined(formDesignerData)) {\n designerDataList = JSON.parse(formDesignerData).map(function (item) {\n return item.FormField.pageNumber;\n });\n }\n var totalPageList = fullPageList.concat(designerDataList);\n return totalPageList.filter(function (value, index, self) { return self.indexOf(value) === index && value !== undefined; });\n };\n /**\n * @private\n * @param {string} annotationID - The annotationID.\n * @returns {any} - Returns collection of type.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkFormFieldCollection = function (annotationID) {\n var isFormFieldAnnotation = false;\n // eslint-disable-next-line\n var formDesignerData = null;\n formDesignerData = this.getItemFromSessionStorage('_formDesigner');\n if (formDesignerData) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(formDesignerData);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[parseInt(i.toString(), 10)].FormField.formFieldAnnotationType === 'RadioButton') {\n for (var j = 0; j < formFieldsData[parseInt(i.toString(), 10)].FormField.radiobuttonItem.length; j++) {\n if (annotationID === formFieldsData[parseInt(i.toString(), 10)].FormField.radiobuttonItem[parseInt(j.toString(), 10)].id.split('_')[0]) {\n isFormFieldAnnotation = true;\n break;\n }\n }\n }\n else if (formFieldsData[parseInt(i.toString(), 10)].Key.split('_')[0] === annotationID) {\n isFormFieldAnnotation = true;\n break;\n }\n }\n }\n return isFormFieldAnnotation;\n };\n /**\n * @private\n * @returns {boolean} - Returns whether freetext module is enabled.\n */\n PdfViewerBase.prototype.isFreeTextAnnotationModule = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForDownload = function () {\n var proxy = null;\n proxy = this;\n proxy.pdfViewer.fireDownloadStart(proxy.downloadFileName);\n // eslint-disable-next-line\n var jsonObject = this.constructJsonDownload();\n if (proxy.digitalSignaturePages && proxy.digitalSignaturePages.length !== 0) {\n if (proxy.pdfViewer.isDocumentEdited) {\n jsonObject['digitalSignatureDocumentEdited'] = true;\n }\n else {\n jsonObject['digitalSignatureDocumentEdited'] = false;\n }\n }\n this.dowonloadRequestHandler = new AjaxHandler(this.pdfViewer);\n this.dowonloadRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.download;\n this.dowonloadRequestHandler.responseType = 'text';\n if (this.validateForm && this.pdfViewer.enableFormFieldsValidation) {\n this.pdfViewer.fireValidatedFailed(proxy.pdfViewer.serverActionSettings.download);\n this.validateForm = false;\n }\n else {\n this.dowonloadRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object' && data.indexOf('data:application/pdf') === -1) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.download);\n data = null;\n }\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (data) {\n if (proxy.pdfViewer.downloadFileName && (proxy.pdfViewer.downloadFileName !== proxy.downloadFileName)) {\n proxy.downloadFileName = proxy.pdfViewer.downloadFileName;\n }\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.download, data);\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/pdf');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.downloadFileName);\n }\n else {\n proxy.downloadDocument(blobUrl);\n }\n proxy.pdfViewer.fireDownloadEnd(proxy.downloadFileName, data);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n else {\n proxy.pdfViewer.fireDownloadEnd(proxy.downloadFileName, 'PDF Document saved in server side successfully');\n }\n };\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n // eslint-disable-next-line\n this.dowonloadRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.download);\n };\n };\n /**\n * @param pageWidth\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getTileCount = function (pageWidth) {\n if (pageWidth && typeof pageWidth === 'number') {\n var defaultWidth = 816;\n var tileCount = 1;\n if (this.getZoomFactor() > 2 && pageWidth <= 1200) {\n tileCount = 2;\n }\n else {\n tileCount = pageWidth / defaultWidth;\n }\n // eslint-disable-next-line radix\n var tileValue = parseInt(tileCount.toFixed());\n if (tileValue <= 0) {\n return 1;\n }\n else {\n if (this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n return tileValue;\n }\n else {\n return 1;\n }\n }\n }\n else {\n return 1;\n }\n };\n PdfViewerBase.prototype.createRequestForRender = function (pageIndex) {\n var proxy = null;\n proxy = this;\n var canvas = proxy.getElement('_pageCanvas_' + pageIndex);\n var oldCanvas = proxy.getElement('_oldCanvas_' + pageIndex);\n if (this.pageSize && this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n var pageWidth_1 = this.pageSize[parseInt(pageIndex.toString(), 10)].width;\n var pageHeight = this.pageSize[parseInt(pageIndex.toString(), 10)].height;\n var tilecanvas = this.getElement('_pageCanvas_' + pageIndex);\n // eslint-disable-next-line\n var viewPortWidth_1 = 1200; // On diving the value greater than 1200 we will get the tile count as 2.\n // eslint-disable-next-line\n var viewPortHeight = proxy.pdfViewer.element.clientHeight > 0 ? proxy.pdfViewer.element.clientHeight : proxy.pdfViewer.element.style.height;\n // eslint-disable-next-line radix\n viewPortWidth_1 = parseInt(viewPortWidth_1);\n // eslint-disable-next-line radix\n viewPortHeight = parseInt(viewPortHeight) ? parseInt(viewPortHeight) : 500; //we have applied minimum-height as 500.\n var noTileX = void 0;\n var noTileY = void 0;\n var thumbnailImageElement = void 0;\n var imageSource = void 0;\n var object = new Object();\n if ((this.isMinimumZoom && document.getElementById(this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageIndex))) {\n this.renderThumbnailImages = true;\n thumbnailImageElement = document.getElementById(this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageIndex).children[0];\n imageSource = thumbnailImageElement.src;\n }\n else {\n this.renderThumbnailImages = false;\n }\n var tileCount = this.getTileCount(pageWidth_1);\n if (canvas) {\n if (!isNaN(parseFloat(canvas.style.width)) || oldCanvas) {\n if (proxy.isInitialLoaded) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n }\n // eslint-disable-next-line\n var data = proxy.getStoredData(pageIndex);\n noTileX = noTileY = tileCount;\n var tileSettings = proxy.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n if ((viewPortWidth_1 < pageWidth_1 || this.getZoomFactor() > 2)) {\n noTileX = tileSettings.x;\n noTileY = tileSettings.y;\n }\n }\n proxy.tileRequestCount = noTileX * noTileY;\n var zoomFactor = this.retrieveCurrentZoomFactor();\n var isPageRequestSent = void 0;\n if (tileCount === 1) {\n data = proxy.getStoredData(pageIndex);\n isPageRequestSent = proxy.pageRequestSent(pageIndex, 0, 0);\n }\n else {\n // eslint-disable-next-line\n var tileData = JSON.parse(proxy.getWindowSessionStorageTile(pageIndex, 0, 0, zoomFactor));\n if (tileData) {\n data = tileData;\n }\n }\n if (data && data.uniqueId === proxy.documentId && (data['image'] || this.isMinimumZoom)) {\n canvas.style.backgroundColor = '#fff';\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n var zoomFactor_2 = this.retrieveCurrentZoomFactor();\n if (zoomFactor_2 > 2 && pageWidth_1 <= 1200) {\n viewPortWidth_1 = 700;\n }\n else {\n viewPortWidth_1 = 1200;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n viewPortWidth_1 = 1200;\n }\n if ((viewPortWidth_1 >= pageWidth_1) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n if (this.renderThumbnailImages) {\n proxy.renderPage(data, pageIndex, imageSource);\n }\n else {\n proxy.renderPage(data, pageIndex);\n }\n }\n else {\n proxy.isTileImageRendered = true;\n proxy.tileRenderCount = 0;\n if (this.renderThumbnailImages) {\n proxy.renderPage(data, pageIndex, imageSource);\n }\n else {\n proxy.tileRenderPage(data, pageIndex);\n for (var k = 0; k < noTileX; k++) {\n for (var l = 0; l < noTileY; l++) {\n if (k === 0 && l === 0) {\n continue;\n }\n data = JSON.parse(this.getWindowSessionStorageTile(pageIndex, k, l, zoomFactor_2));\n if (data) {\n proxy.tileRenderPage(data, pageIndex);\n }\n }\n }\n }\n }\n data = null;\n }\n else if (data === null || !isPageRequestSent) {\n if (!this.renderThumbnailImages) {\n if (this.getPagesPinchZoomed()) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n else {\n proxy.showPageLoadingIndicator(pageIndex, true);\n }\n if (proxy.getPagesZoomed()) {\n if (proxy.isInitialLoaded) {\n proxy.showPageLoadingIndicator(pageIndex, false);\n }\n }\n }\n if (proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) {\n return;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering || this.renderThumbnailImages) {\n noTileX = 1;\n noTileY = 1;\n }\n proxy.tileRenderCount = 0;\n proxy.isTileImageRendered = true;\n for (var x = 0; x < noTileX; x++) {\n for (var y = 0; y < noTileY; y++) {\n var jsonObject = null;\n var zoomFactor_3 = this.retrieveCurrentZoomFactor();\n if (zoomFactor_3 > 2 && pageWidth_1 <= 1200) {\n viewPortWidth_1 = 700;\n }\n else {\n viewPortWidth_1 = 1200;\n }\n if (!proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n viewPortWidth_1 = 1200;\n }\n if (this.renderThumbnailImages) {\n proxy.renderPage(object, pageIndex, imageSource);\n if (this.textrequestLists.indexOf(pageIndex) == -1) {\n jsonObject = { pageStartIndex: pageIndex, pageEndIndex: pageIndex + 1, documentId: proxy.getDocumentId(), hashId: proxy.hashId, action: 'RenderPdfTexts', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.documentId };\n if (this.jsonDocumentId) {\n jsonObject.documentId = this.jsonDocumentId;\n }\n this.textRequestHandler = new AjaxHandler(this.pdfViewer);\n this.textRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderTexts;\n this.textRequestHandler.responseType = 'json';\n this.textRequestHandler.send(jsonObject);\n this.textrequestLists.push(pageIndex);\n proxy.textRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line max-len\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !proxy.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderTexts);\n data = null;\n }\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (data.documentTextCollection && data.uniqueId === proxy.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderTexts, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n proxy.storeWinData(data, pageNumber);\n proxy.renderPage(data, pageIndex);\n }\n }\n };\n // eslint-disable-next-line\n this.textRequestHandler.onFailure = function (result) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n // eslint-disable-next-line\n this.textRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n }\n }\n else {\n // eslint-disable-next-line max-len\n jsonObject = {\n xCoordinate: (x).toString(), yCoordinate: (y).toString(), viewPortWidth: (viewPortWidth_1).toString(), viewPortHeight: (viewPortHeight).toString(),\n pageNumber: (pageIndex).toString(), hashId: proxy.hashId, tilecount: (tileCount).toString(), tileXCount: (noTileX).toString(), tileYCount: (noTileY).toString(),\n // eslint-disable-next-line max-len\n zoomFactor: (zoomFactor_3).toString(), action: 'RenderPdfPages', uniqueId: this.documentId, elementId: proxy.pdfViewer.element.id, digitalSignaturePresent: proxy.digitalSignaturePresent(pageIndex)\n };\n if (this.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.jsonDocumentId;\n }\n proxy.pageRequestHandler = new AjaxHandler(this.pdfViewer);\n // eslint-disable-next-line max-len\n proxy.pageRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.renderPages;\n proxy.pageRequestHandler.responseType = 'json';\n proxy.pageRequestHandler.send(jsonObject);\n proxy.requestLists.push(proxy.documentId + '_' + pageIndex + '_' + x + '_' + y + '_' + zoomFactor_3);\n // eslint-disable-next-line\n proxy.pageRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line max-len\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !proxy.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderPages);\n data = null;\n }\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (data.image && data.uniqueId === proxy.documentId) {\n var currentPageWidth = (data.pageWidth && data.pageWidth > 0) ? data.pageWidth : pageWidth_1;\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n if ((viewPortWidth_1 >= currentPageWidth) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n proxy.storeWinData(data, pageNumber);\n }\n else {\n proxy.storeWinData(data, pageNumber, data.tileX, data.tileY);\n }\n if ((viewPortWidth_1 >= currentPageWidth) || !proxy.pdfViewer.tileRenderingSettings.enableTileRendering) {\n proxy.renderPage(data, pageNumber);\n }\n else {\n proxy.tileRenderPage(data, pageNumber);\n }\n }\n }\n };\n // eslint-disable-next-line\n this.pageRequestHandler.onFailure = function (result) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderPages);\n };\n // eslint-disable-next-line\n this.pageRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderPages);\n };\n }\n }\n }\n }\n if (this.renderedPagesList.indexOf(pageIndex) === -1) {\n proxy.renderedPagesList.push(pageIndex);\n }\n }\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.requestForTextExtraction = function (pageIndex, annotationObject) {\n var jsonObject;\n var proxy = this;\n jsonObject = { pageStartIndex: pageIndex, pageEndIndex: pageIndex + 1, documentId: proxy.getDocumentId(), hashId: proxy.hashId, action: 'RenderPdfTexts', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.documentId };\n if (this.jsonDocumentId) {\n jsonObject.documentId = this.jsonDocumentId;\n }\n this.textRequestHandler = new AjaxHandler(this.pdfViewer);\n this.textRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderTexts;\n this.textRequestHandler.responseType = 'json';\n this.textRequestHandler.send(jsonObject);\n this.textrequestLists.push(pageIndex);\n proxy.textRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line max-len\n if ((proxy.pdfViewer.magnification && proxy.pdfViewer.magnification.isPinchZoomed) || !proxy.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return;\n }\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderTexts);\n data = null;\n }\n }\n }\n if (data) {\n while (typeof data !== 'object') {\n data = JSON.parse(data);\n }\n if (data.documentTextCollection && data.uniqueId === proxy.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderTexts, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n proxy.storeWinData(data, pageNumber);\n if (!isNullOrUndefined(annotationObject)) {\n var markedBounds = annotationObject.bounds[0];\n var pageCharText = data.documentTextCollection[0][pageIndex].PageText.split('');\n var characterBounds = data.characterBounds;\n var textMarkupContent = proxy.textMarkUpContent(markedBounds, pageCharText, characterBounds);\n annotationObject.textMarkupContent = textMarkupContent;\n this.pdfViewer.annotationModule.storeAnnotations(pageIndex, annotationObject, '_annotations_textMarkup');\n }\n else {\n proxy.renderPage(data, pageIndex);\n }\n }\n }\n };\n // eslint-disable-next-line\n this.textRequestHandler.onFailure = function (result) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n // eslint-disable-next-line\n this.textRequestHandler.onError = function (result) {\n proxy.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderTexts);\n };\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.textMarkUpContent = function (markedBounds, pageCharText, characterBounds) {\n var textMarkupContent = '';\n for (var j = 0; j < characterBounds.length; j++) {\n var buffer = 0.5;\n if (characterBounds[j].Y >= markedBounds.Y - buffer && characterBounds[j].X >= markedBounds.X - buffer && characterBounds[j].Y <= markedBounds.Y + markedBounds.Height + buffer && characterBounds[j].X <= markedBounds.X + markedBounds.Width + buffer) {\n textMarkupContent += pageCharText[j];\n }\n }\n return textMarkupContent.replace((/(\\r\\n)/gm), '');\n };\n /**\n * @private\n * @returns {boolean}\n */\n PdfViewerBase.prototype.digitalSignaturePresent = function (pageIndex) {\n var digitalSignaturePresent = false;\n if (this.digitalSignaturePages && (this.digitalSignaturePages.length !== 0) && (this.digitalSignaturePages.indexOf(pageIndex) != -1)) {\n digitalSignaturePresent = true;\n }\n return digitalSignaturePresent;\n };\n PdfViewerBase.prototype.pageRequestSent = function (pageIndex, tileX, tileY) {\n var zoomFactor = this.retrieveCurrentZoomFactor();\n var currentString = this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor;\n if (this.requestLists && this.requestLists.indexOf(currentString) > -1) {\n return true;\n }\n return false;\n };\n /**\n * @private\n * @param {string} status - The status message.\n * @param {string} errorMessage - The error message.\n * @param {string} action - The action.\n * @returns {void}\n */\n PdfViewerBase.prototype.onControlError = function (status, errorMessage, action) {\n this.openNotificationPopup();\n this.pdfViewer.fireAjaxRequestFailed(status, errorMessage, action);\n };\n /**\n * @param pageIndex\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getStoredData = function (pageIndex, isTextSearch) {\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (this.pdfViewer.restrictZoomRequest && !this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n zoomFactor = 1;\n }\n // eslint-disable-next-line\n var storedData = this.getWindowSessionStorage(pageIndex, zoomFactor) ? this.getWindowSessionStorage(pageIndex, zoomFactor) : this.getPinchZoomPage(pageIndex);\n if (!storedData && isTextSearch) {\n // eslint-disable-next-line\n var storedTileData = this.getWindowSessionStorageTile(pageIndex, 0, 0, zoomFactor);\n if (storedTileData) {\n storedData = storedTileData;\n }\n }\n // eslint-disable-next-line\n var data = null;\n if (storedData) {\n // eslint-disable-next-line\n data = storedData;\n if (!this.isPinchZoomStorage) {\n data = JSON.parse(storedData);\n }\n this.isPinchZoomStorage = false;\n }\n return data;\n };\n /**\n * @private\n * @param {any} data - The data.\n * @param {number} pageIndex - The pageIndex.\n * @param {number} tileX - The tileX.\n * @param {number} tileY - The tileY.\n * @returns {void}\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.storeWinData = function (data, pageIndex, tileX, tileY) {\n var storeObject;\n if (!data['image']) {\n var pageItems = data.documentTextCollection[0][pageIndex];\n storeObject = {\n // eslint-disable-next-line\n textContent: data['textContent'], textBounds: data['textBounds'], pageText: pageItems.PageText, rotation: data['rotation'], uniqueId: data['uniqueId']\n };\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n // eslint-disable-next-line\n this.pageSize[pageIndex].rotation = parseFloat(data['rotation']);\n }\n // eslint-disable-next-line\n this.textLayer.characterBound[pageIndex] = data['characterBounds'];\n }\n else {\n // eslint-disable-next-line\n var blobObj = this.createBlobUrl(data['image'].split('base64,')[1], 'image/png');\n // eslint-disable-next-line\n var Url = URL || webkitURL;\n var blobUrl = Url.createObjectURL(blobObj);\n // eslint-disable-next-line\n if ((isNaN(tileX) && isNaN(tileY)) || (tileX === 0 && tileY === 0)) {\n storeObject = {\n // eslint-disable-next-line\n image: blobUrl, transformationMatrix: data['transformationMatrix'], hyperlinks: data['hyperlinks'], hyperlinkBounds: data['hyperlinkBounds'], linkAnnotation: data['linkAnnotation'], linkPage: data['linkPage'], annotationLocation: data['annotationLocation'],\n // eslint-disable-next-line\n textContent: data['textContent'], width: data['width'], textBounds: data['textBounds'], pageText: data['pageText'], rotation: data['rotation'], scaleFactor: data['scaleFactor'], uniqueId: data['uniqueId'], zoomFactor: data['zoomFactor'], tileX: tileX, tileY: tileY\n };\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n // eslint-disable-next-line\n this.pageSize[pageIndex].rotation = parseFloat(data['rotation']);\n }\n // eslint-disable-next-line\n this.textLayer.characterBound[pageIndex] = data['characterBounds'];\n }\n else {\n storeObject = {\n // eslint-disable-next-line\n image: blobUrl, transformationMatrix: data['transformationMatrix'], tileX: tileX, tileY: tileY, width: data['width'], zoomFactor: data['zoomFactor']\n };\n }\n }\n // eslint-disable-next-line\n var pageWidth = 0;\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n pageWidth = this.pageSize[parseInt(pageIndex.toString(), 10)].width;\n }\n this.manageSessionStorage(pageIndex, storeObject, tileX, tileY);\n };\n /**\n * @private\n * @param {XMLHttpRequest} request - The Xml request.\n * @returns {void}\n */\n PdfViewerBase.prototype.setCustomAjaxHeaders = function (request) {\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n request.setRequestHeader(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerValue);\n }\n };\n /**\n * @private\n * @param {number} pageIndex - Page index.\n * @returns {object}\n */\n PdfViewerBase.prototype.getPinchZoomPage = function (pageIndex) {\n // eslint-disable-next-line\n for (var key in this.pinchZoomStorage) {\n // eslint-disable-next-line\n if (this.pinchZoomStorage.hasOwnProperty(key)) {\n /* eslint-disable-next-line security/detect-object-injection */\n if (this.pinchZoomStorage[key].index === pageIndex) {\n this.isPinchZoomStorage = true;\n /* eslint-disable-next-line security/detect-object-injection */\n return this.pinchZoomStorage[key].pinchZoomStorage;\n }\n }\n }\n return null;\n };\n /**\n * @private\n * @param {number} pageIndex - current page index.\n * @param {number} zoomFactor - cuurent zoom factor\n * @returns {string}\n */\n PdfViewerBase.prototype.getWindowSessionStorage = function (pageIndex, zoomFactor) {\n return window.sessionStorage.getItem(this.documentId + '_' + pageIndex + '_' + zoomFactor);\n };\n /**\n * @private\n * @param {number} pageIndex - current page index.\n * @param {number} tileX - cuurent tile x\n * @param {number} tileY - cuurent tile y\n * @param {number} zoomFactor - cuurent zoom factor\n * @returns {string}\n */\n PdfViewerBase.prototype.getWindowSessionStorageTile = function (pageIndex, tileX, tileY, zoomFactor) {\n return window.sessionStorage.getItem(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor);\n };\n /**\n * @private\n * @returns {number}\n */\n PdfViewerBase.prototype.retrieveCurrentZoomFactor = function () {\n var zoomFactor = this.getZoomFactor();\n if (this.pdfViewer.enableZoomOptimization) {\n if ((zoomFactor) <= 1) {\n zoomFactor = 1;\n }\n else if ((zoomFactor) > 1 && zoomFactor <= 2) {\n zoomFactor = 2;\n }\n else if ((zoomFactor) > 2 && zoomFactor <= 3) {\n zoomFactor = 3;\n }\n else if ((zoomFactor) > 3 && zoomFactor <= 4) {\n zoomFactor = 4;\n }\n return zoomFactor;\n }\n else {\n if (zoomFactor <= 0) {\n zoomFactor = 1;\n }\n return zoomFactor;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.manageSessionStorage = function (pageIndex, storeObject, tileX, tileY) {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n var maxSessionSize = 5000;\n if (sessionSize >= maxSessionSize) {\n if (!this.isStorageExceed) {\n // eslint-disable-next-line\n var annotationList = [];\n var formFieldsList = [];\n for (var i = 0; i < window.sessionStorage.length; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'annotations') {\n // eslint-disable-next-line max-len\n this.annotationStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n annotationList.push(window.sessionStorage.key(i));\n }\n else if (window.sessionStorage.key(i).split('_')[3] === 'formfields') {\n // eslint-disable-next-line max-len\n this.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n else if (window.sessionStorage.key(i).split('_')[3] === 'formDesigner') {\n this.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (annotationList) {\n for (var i = 0; i < annotationList.length; i++) {\n window.sessionStorage.removeItem(annotationList[parseInt(i.toString(), 10)]);\n }\n }\n if (formFieldsList) {\n for (var i = 0; i < formFieldsList.length; i++) {\n window.sessionStorage.removeItem(formFieldsList[parseInt(i.toString(), 10)]);\n }\n }\n }\n this.isStorageExceed = true;\n sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (sessionSize >= 5000) {\n var storageLength = window.sessionStorage.length;\n if (storageLength > 200) {\n storageLength = 200;\n }\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] !== 'annotations') {\n window.sessionStorage.removeItem(window.sessionStorage.key(i));\n }\n }\n }\n }\n }\n var zoomFactor = this.retrieveCurrentZoomFactor();\n if (isNaN(tileX) && isNaN(tileY)) {\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.documentId + '_' + pageIndex + '_' + zoomFactor, JSON.stringify(storeObject));\n this.sessionStorage.push(this.documentId + '_' + pageIndex + '_' + zoomFactor);\n }\n else {\n this.sessionStorage.push(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor);\n // eslint-disable-next-line max-len\n window.sessionStorage.setItem(this.documentId + '_' + pageIndex + '_' + tileX + '_' + tileY + '_' + zoomFactor, JSON.stringify(storeObject));\n }\n };\n PdfViewerBase.prototype.createBlobUrl = function (base64String, contentType) {\n var sliceSize = 512;\n var byteCharacters = atob(base64String);\n // eslint-disable-next-line\n var byteArrays = [];\n for (var offset = 0; offset < byteCharacters.length; offset += sliceSize) {\n var slice = byteCharacters.slice(offset, offset + sliceSize);\n // eslint-disable-next-line\n var byteNumbers = new Array(slice.length);\n for (var i = 0; i < slice.length; i++) {\n /* eslint-disable-next-line security/detect-object-injection */\n byteNumbers[i] = slice.charCodeAt(i);\n }\n // eslint-disable-next-line\n var byteArray = new Uint8Array(byteNumbers);\n byteArrays.push(byteArray);\n }\n // eslint-disable-next-line\n var blob = new Blob(byteArrays, { type: contentType });\n return blob;\n };\n PdfViewerBase.prototype.getRandomNumber = function () {\n // eslint-disable-next-line\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n // eslint-disable-next-line\n var random = Math.random() * 16 | 0;\n return random.toString(16);\n });\n };\n PdfViewerBase.prototype.createGUID = function () {\n // eslint-disable-next-line max-len\n return 'Sync_PdfViewer_' + this.getRandomNumber();\n };\n /**\n * @private\n * @param {MouseEvent} event - The mouse event.\n * @param {boolean} isNeedToSet - Is need to test.\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.isClickedOnScrollBar = function (event, isNeedToSet) {\n var isScrollBar = false;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, false);\n }\n // eslint-disable-next-line max-len\n if ((this.viewerContainer.clientWidth + this.viewerContainer.offsetLeft) < event.clientX && event.clientX < (this.viewerContainer.offsetWidth + this.viewerContainer.offsetLeft)) {\n isScrollBar = true;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, true);\n }\n }\n // eslint-disable-next-line max-len\n if ((this.viewerContainer.clientHeight + this.viewerContainer.offsetTop) < event.clientY && event.clientY < (this.viewerContainer.offsetHeight + this.viewerContainer.offsetTop)) {\n isScrollBar = true;\n if (isNeedToSet) {\n this.setScrollDownValue(event.type, true);\n }\n }\n return isScrollBar;\n };\n PdfViewerBase.prototype.setScrollDownValue = function (eventType, boolValue) {\n if (eventType === 'mousedown') {\n this.isScrollbarMouseDown = boolValue;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n PdfViewerBase.prototype.disableTextSelectionMode = function () {\n this.isTextSelectionDisabled = true;\n this.viewerContainer.classList.remove('e-enable-text-selection');\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n this.viewerContainer.classList.add('e-disable-text-selection');\n this.viewerContainer.addEventListener('selectstart', function () {\n return false;\n });\n };\n /**\n * @private\n * @param {string} idString - The Id string.\n * @returns {HTMLElement} - The html element.\n */\n PdfViewerBase.prototype.getElement = function (idString) {\n return document.getElementById(this.pdfViewer.element.id + idString);\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageWidth = function (pageIndex) {\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return this.pageSize[parseInt(pageIndex.toString(), 10)].width * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageHeight = function (pageIndex) {\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return this.pageSize[parseInt(pageIndex.toString(), 10)].height * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n /**\n * @private\n * @param {number} pageIndex - The pageIndex.\n * @returns {number} - Returns number\n */\n PdfViewerBase.prototype.getPageTop = function (pageIndex) {\n if (this.pageSize[parseInt(pageIndex.toString(), 10)]) {\n return this.pageSize[parseInt(pageIndex.toString(), 10)].top * this.getZoomFactor();\n }\n else {\n return 0;\n }\n };\n PdfViewerBase.prototype.isAnnotationToolbarHidden = function () {\n if (this.pdfViewer.toolbarModule.annotationToolbarModule) {\n return this.pdfViewer.toolbarModule.annotationToolbarModule.isToolbarHidden;\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.isFormDesignerToolbarHidded = function () {\n var formDesignerToolbar = this.pdfViewer.toolbarModule.formDesignerToolbarModule;\n if (formDesignerToolbar) {\n return formDesignerToolbar.isToolbarHidden;\n }\n else {\n return true;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.getTextMarkupAnnotationMode = function () {\n if (this.isTextMarkupAnnotationModule()) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode;\n }\n else {\n return false;\n }\n };\n PdfViewerBase.prototype.isNewFreeTextAnnotation = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n if (!this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return true;\n }\n };\n PdfViewerBase.prototype.getCurrentTextMarkupAnnotation = function () {\n if (this.isTextMarkupAnnotationModule()) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {number} - Returns page number.\n */\n PdfViewerBase.prototype.getSelectTextMarkupCurrentPage = function () {\n if (this.isTextMarkupAnnotationModule()) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage;\n }\n else {\n return null;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.getAnnotationToolStatus = function () {\n if (this.pdfViewer.toolbarModule) {\n return this.pdfViewer.toolbarModule.annotationToolbarModule.isAnnotationButtonsEnabled();\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.getPopupNoteVisibleStatus = function () {\n if (this.pdfViewer.annotationModule) {\n return this.pdfViewer.annotationModule.isPopupNoteVisible;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {TextMarkupAnnotation} - TextMarkupAnnotation.\n */\n PdfViewerBase.prototype.isTextMarkupAnnotationModule = function () {\n if (this.pdfViewer.annotationModule) {\n return this.pdfViewer.annotationModule.textMarkupAnnotationModule;\n }\n else {\n return null;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.isShapeAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.shapeAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isFormDesignerModule = function () {\n if (this.pdfViewer.formDesignerModule) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isCalibrateAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.measureAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isStampAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isInkAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.inkAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isCommentAnnotationModule = function () {\n if (this.pdfViewer.annotation) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stickyNotesAnnotationModule) {\n return true;\n }\n else {\n return false;\n }\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @returns {boolean} - Retunrs true or false.\n */\n PdfViewerBase.prototype.isShapeBasedAnnotationsEnabled = function () {\n // eslint-disable-next-line max-len\n if (this.isShapeAnnotationModule() || this.isCalibrateAnnotationModule() || this.isStampAnnotationModule() || this.isCommentAnnotationModule() || this.isFormDesignerModule()) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @private\n * @param {MouseEvent | PointerEvent | TouchEvent} e - Returns event.\n * @returns {PointModel} - Returns points.\n */\n PdfViewerBase.prototype.getMousePosition = function (e) {\n var touchArg;\n var offsetX;\n var offsetY;\n var currentTarget = e.target.parentElement;\n if (e.type.indexOf('touch') !== -1) {\n touchArg = e;\n if (this.pdfViewer.annotation) {\n var pageDiv = this.getElement('_pageDiv_' + this.pdfViewer.annotation.getEventPageNumber(e));\n if (pageDiv) {\n var pageCurrentRect = pageDiv.getBoundingClientRect();\n offsetX = touchArg.changedTouches[0].clientX - pageCurrentRect.left;\n offsetY = touchArg.changedTouches[0].clientY - pageCurrentRect.top;\n }\n }\n }\n else {\n if (e.target.classList.contains('e-pv-hyperlink')) {\n offsetX = e.offsetX + e.target.offsetLeft;\n offsetY = e.offsetY + e.target.offsetTop;\n }\n else if (e.target.classList.contains('e-pv-text') && currentTarget) {\n var targetParentRect = currentTarget.getBoundingClientRect();\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (e.target && (e && e.path) && currentTarget && (currentTarget.classList.contains('foreign-object') || currentTarget.parentElement.classList.contains('foreign-object'))) {\n // eslint-disable-next-line\n var targetParentRect = void 0;\n if (e.path[4].className === 'e-pv-page-div') {\n targetParentRect = e.path[4].getBoundingClientRect();\n }\n else {\n for (var i = 0; i < e.path.length; i++) {\n if (e.path[parseInt(i.toString(), 10)].className === 'e-pv-page-div') {\n targetParentRect = e.path[parseInt(i.toString(), 10)].getBoundingClientRect();\n break;\n }\n }\n }\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n // eslint-disable-next-line\n }\n else if (e.target && currentTarget && currentTarget.classList.contains('foreign-object') || (e.target.classList.contains('e-pv-checkbox-div'))) {\n // eslint-disable-next-line\n var targetParentRect = void 0;\n if ((e.target.classList.contains('e-pv-checkbox-div'))) {\n targetParentRect = e.target.offsetParent.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n }\n else {\n targetParentRect = e.target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n }\n offsetX = e.clientX - targetParentRect.left;\n offsetY = e.clientY - targetParentRect.top;\n }\n else {\n offsetX = e.offsetX;\n offsetY = e.offsetY;\n }\n }\n return { x: offsetX, y: offsetY };\n };\n PdfViewerBase.prototype.getMouseEventArgs = function (position, args, evt, source) {\n args.position = position;\n var obj;\n if (!source) {\n if (this.action === 'Drag' || this.action === 'ConnectorSourceEnd' || this.action === 'SegmentEnd' ||\n this.action === 'OrthoThumb' || this.action === 'BezierSourceThumb' || this.action === 'BezierTargetThumb' ||\n this.action === 'ConnectorTargetEnd' || this.action.indexOf('Rotate') !== -1 || this.action.indexOf('Resize') !== -1) {\n obj = this.pdfViewer.selectedItems;\n if (this.action === 'Drag' && obj && this.pdfViewer.selectedItems.annotations.length > 0) {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n else if (this.action === 'Drag' && obj && this.pdfViewer.selectedItems.formFields.length > 0) {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n }\n else {\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n }\n else {\n // objects = this.diagram.findObjectsUnderMouse(this.currentPosition, source);\n obj = findActiveElement(evt, this, this.pdfViewer);\n }\n var wrapper;\n if (obj) {\n wrapper = obj.wrapper;\n }\n if (!source) {\n args.source = obj;\n args.sourceWrapper = wrapper;\n }\n else {\n args.target = obj;\n args.targetWrapper = wrapper;\n }\n args.actualObject = this.eventArgs.actualObject;\n //args.startTouches = this.touchStartList;\n //args.moveTouches = this.touchMoveList;\n return args;\n };\n /**\n * @private\n * @param {PdfAnnotationBaseModel} obj - The object.\n * @param {PointModel} position - The position.\n * @returns {Actions | string} - Returns the string.\n */\n PdfViewerBase.prototype.findToolToActivate = function (obj, position) {\n position = { x: position.x / this.getZoomFactor(), y: position.y / this.getZoomFactor() };\n var element = this.pdfViewer.selectedItems.wrapper;\n if (element && obj) {\n var selectorBnds = element.bounds; //let handle: SelectorModel = diagram.selectedItems;\n var paddedBounds = new Rect(selectorBnds.x, selectorBnds.y, selectorBnds.width, selectorBnds.height);\n if (obj.shapeAnnotationType === 'Line' || obj.shapeAnnotationType === 'LineWidthArrowHead' ||\n obj.shapeAnnotationType === 'Distance' || obj.shapeAnnotationType === 'Polygon') {\n var conn = this.pdfViewer.selectedItems.annotations[0];\n if (conn) {\n for (var i = 0; i < conn.vertexPoints.length; i++) {\n if (contains(position, conn.vertexPoints[parseInt(i.toString(), 10)], 10) && conn.leaderHeight !== 0) {\n return 'ConnectorSegmentPoint_' + i;\n }\n }\n }\n }\n if (obj.shapeAnnotationType === 'Distance') {\n var leaderCount = 0;\n var newPoint1 = void 0;\n if (obj && obj.wrapper) {\n for (var i = 0; i < obj.wrapper.children.length; i++) {\n var elementAngle = Point.findAngle(obj.sourcePoint, obj.targetPoint);\n // eslint-disable-next-line\n var segment = obj.wrapper.children[i];\n if (segment.id.indexOf('leader') > -1) {\n var centerPoint = obj.wrapper.children[0].bounds.center;\n if (leaderCount === 0) {\n newPoint1 = { x: obj.sourcePoint.x, y: obj.sourcePoint.y - obj.leaderHeight };\n centerPoint = obj.sourcePoint;\n }\n else {\n newPoint1 = { x: obj.targetPoint.x, y: obj.targetPoint.y - obj.leaderHeight };\n centerPoint = obj.targetPoint;\n }\n var matrix_1 = identityMatrix();\n rotateMatrix(matrix_1, elementAngle, centerPoint.x, centerPoint.y);\n var rotatedPoint = transformPointByMatrix(matrix_1, { x: newPoint1.x, y: newPoint1.y });\n if (contains(position, rotatedPoint, 10)) {\n return 'Leader' + leaderCount;\n }\n leaderCount++;\n }\n }\n }\n }\n var ten = this.pdfViewer.touchPadding;\n if (this.getZoomFactor() <= 1.5) {\n ten = ten / this.getZoomFactor();\n }\n var matrix = identityMatrix();\n rotateMatrix(matrix, obj.rotateAngle + element.parentTransform, element.offsetX, element.offsetY);\n //check for resizing tool\n var x = element.offsetX - element.pivot.x * element.actualSize.width;\n var y = element.offsetY - element.pivot.y * element.actualSize.height;\n var rotateThumb = {\n x: x + ((element.pivot.x === 0.5 ? element.pivot.x * 2 : element.pivot.x) * element.actualSize.width / 2),\n y: y - 30 / this.getZoomFactor()\n };\n rotateThumb = transformPointByMatrix(matrix, rotateThumb);\n if (obj.shapeAnnotationType === 'Stamp' && contains(position, rotateThumb, ten)) {\n return 'Rotate';\n }\n paddedBounds = this.inflate(ten, paddedBounds);\n if (paddedBounds.containsPoint(position, 0)) {\n var action = this.checkResizeHandles(this.pdfViewer, element, position, matrix, x, y);\n if (action) {\n return action;\n }\n }\n if (this.pdfViewer.selectedItems.annotations.indexOf(obj) > -1) {\n return 'Drag';\n }\n else if (this.pdfViewer.selectedItems.formFields.indexOf(obj) > -1 && this.pdfViewer.designerMode) {\n return 'Drag';\n }\n return 'Select';\n }\n return this.pdfViewer.tool || 'Select';\n };\n PdfViewerBase.prototype.inflate = function (padding, bound) {\n bound.x -= padding;\n bound.y -= padding;\n bound.width += padding * 2;\n bound.height += padding * 2;\n return bound;\n };\n PdfViewerBase.prototype.checkResizeHandles = function (diagram, element, position, matrix, x, y) {\n var action;\n if (!action) {\n action = this.checkForResizeHandles(diagram, element, position, matrix, x, y);\n }\n if (action) {\n return action;\n }\n return null;\n };\n PdfViewerBase.prototype.checkForResizeHandles = function (diagram, element, position, matrix, x, y) {\n var forty = 40 / 1;\n var ten = this.pdfViewer.touchPadding / 1;\n // Resizer cursor adjustment factor for higher zoom values\n var resizerBuffer = 1.9;\n if (this.getZoomFactor() >= 2.0 && !Browser.isDevice) {\n ten = ten / (this.getZoomFactor() / resizerBuffer);\n }\n if (element.actualSize.width < 40 || element.actualSize.height < 40 && Browser.isDevice) {\n ten = ten / 2 * this.getZoomFactor() / 1;\n }\n var selectedItems = diagram.selectedItems;\n var isStamp = false;\n var isSticky = false;\n var isNodeShape = false;\n var isInk = false;\n var resizerLocation = this.pdfViewer.annotationSelectorSettings.resizerLocation;\n if (resizerLocation < 1 || resizerLocation > 3) {\n resizerLocation = 3;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp'\n || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature'\n || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) {\n isStamp = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes') {\n isSticky = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n isInk = true;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Radius' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle')) {\n isNodeShape = true;\n }\n if (!isSticky) {\n // eslint-disable-next-line max-len\n if ((isInk || isStamp || (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage')) || ((element.actualSize.width >= forty && element.actualSize.height >= forty) && isNodeShape && (resizerLocation === 1 || resizerLocation === 3)))) {\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y + element.actualSize.height }), ten)) {\n return 'ResizeSouthEast';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y + element.actualSize.height }), ten)) {\n return 'ResizeSouthWest';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y }), ten)) {\n return 'ResizeNorthEast';\n }\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y }), ten)) {\n return 'ResizeNorthWest';\n }\n }\n // eslint-disable-next-line max-len\n if (isInk || !isNodeShape || (isNodeShape && (resizerLocation === 2 || resizerLocation === 3 || (!(element.actualSize.width >= forty && element.actualSize.height >= forty) && resizerLocation === 1)))) {\n if (contains(\n // eslint-disable-next-line max-len\n position, transformPointByMatrix(matrix, { x: x + element.actualSize.width, y: y + element.actualSize.height / 2 }), ten) && !isStamp) {\n return 'ResizeEast';\n }\n // eslint-disable-next-line max-len\n if (contains(position, transformPointByMatrix(matrix, { x: x, y: y + element.actualSize.height / 2 }), ten) && !isStamp) {\n return 'ResizeWest';\n }\n if (contains(\n // eslint-disable-next-line max-len\n position, transformPointByMatrix(matrix, { x: x + element.actualSize.width / 2, y: y + element.actualSize.height }), ten) && !isStamp) {\n return 'ResizeSouth';\n }\n // eslint-disable-next-line max-len\n if (contains(position, transformPointByMatrix(matrix, { x: x + element.actualSize.width / 2, y: y }), ten) && !isStamp) {\n return 'ResizeNorth';\n }\n }\n }\n return null;\n };\n /**\n * @private\n * @param {string} fieldID - The fieldID\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.checkSignatureFormField = function (fieldID) {\n var isFormFieldSign = false;\n if (this.pdfViewer.formDesignerModule) {\n fieldID = fieldID.split('_')[0];\n }\n // eslint-disable-next-line\n var formField = this.pdfViewer.nameTable[fieldID];\n if (formField) {\n if (formField.formFieldAnnotationType === 'SignatureField' || formField.formFieldAnnotationType === 'InitialField' || formField.annotName === 'SignatureField') {\n isFormFieldSign = true;\n }\n }\n return isFormFieldSign;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The event.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseMove = function (evt) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n this.currentPosition = this.getMousePosition(evt);\n this.pdfViewer.firePageMouseover(this.currentPosition.x, this.currentPosition.y);\n if (this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n else if (this.pdfViewer.formDesignerModule) {\n this.activeElements.activePageID = this.pdfViewer.formDesignerModule.getEventPageNumber(evt);\n }\n var obj = findActiveElement(evt, this, this.pdfViewer);\n if ((this.tool instanceof NodeDrawingTool) || (this.tool instanceof LineTool)) {\n obj = this.pdfViewer.drawingObject;\n }\n var target;\n var isFormFieldSign = this.pdfViewer.selectedItems.annotations.length > 0 ? this.checkSignatureFormField(this.pdfViewer.selectedItems.annotations[0].id) : false;\n if ((Point.equals(this.currentPosition, this.prevPosition) === false || this.inAction)) {\n if (this.isMouseDown === false) {\n this.eventArgs = {};\n var sourceDrawingElement = null;\n if (obj) {\n this.tool = this.getTool(this.action);\n if (obj.wrapper) {\n sourceDrawingElement = obj.wrapper.children[0];\n if (sourceDrawingElement) {\n target = obj;\n }\n }\n }\n var eventTarget = evt.target;\n this.action = this.findToolToActivate(obj, this.currentPosition);\n // eslint-disable-next-line\n if (obj && obj.annotationSettings && obj.annotationSettings.isLock) {\n if (this.action === 'Select') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n this.action = '';\n }\n }\n if (this.action === 'Drag') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Move', obj)) {\n this.action = 'Select';\n }\n }\n // eslint-disable-next-line max-len\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Resize', obj)) {\n this.action = 'Select';\n }\n }\n }\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.designerMode && ((!isNullOrUndefined(target) && (!isNullOrUndefined(target.formFieldAnnotationType))) || isFormFieldSign)) {\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'Drag' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n this.action = '';\n }\n }\n this.tool = this.getTool(this.action);\n this.setCursor(eventTarget, evt);\n if (this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.disableHyperlinkNavigationUnderObjects(eventTarget, evt, this);\n }\n }\n else {\n if (!this.tool && this.action && this.action === 'Rotate') {\n this.tool = this.getTool(this.action);\n if (evt.target) {\n this.setCursor(evt.target, evt);\n }\n }\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.designerMode && ((!isNullOrUndefined(target) && (!isNullOrUndefined(target.formFieldAnnotationType))) || isFormFieldSign)) {\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' ||\n // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'Drag' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action === 'ResizeSouth' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n this.action = '';\n this.tool = null;\n }\n }\n if (this.eventArgs && this.eventArgs.source) {\n var eventTarget = evt.target;\n this.updateDefaultCursor(this.eventArgs.source, eventTarget, evt);\n }\n else {\n this.setCursor(evt.target, evt);\n }\n this.diagramMouseActionHelper(evt);\n if (this.tool) {\n var currentObject = obj;\n if (currentObject && currentObject.shapeAnnotationType === 'FreeText') {\n if (this.pdfViewer.freeTextSettings.allowEditTextOnly && this.action !== \"Ink\" &&\n (this.eventArgs.source && this.eventArgs.source.shapeAnnotationType === \"FreeText\")) {\n var eventTarget = event.target;\n eventTarget.style.cursor = 'default';\n this.tool = null;\n }\n }\n if (this.tool != null) {\n var info = { ctrlKey: evt.ctrlKey, shiftKey: evt.shiftKey };\n this.eventArgs.info = info;\n this.tool.mouseMove(this.eventArgs);\n }\n }\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.formFieldAnnotationType && this.action !== 'Drag') {\n if (!(this.tool instanceof ResizeTool)) {\n this.tool = this.getTool(this.action);\n if (this.tool instanceof NodeDrawingTool) {\n var obj_1 = this.pdfViewer.drawingObject;\n // eslint-disable-next-line\n var bounds = this.pdfViewer.formDesignerModule.updateFormFieldInitialSize(obj_1, obj_1.formFieldAnnotationType);\n var pageWidth = this.pageContainer.firstElementChild.clientWidth - bounds.width;\n var pageHeight = this.pageContainer.firstElementChild.clientHeight - bounds.height;\n if (this.pdfViewer.formDesignerModule && obj_1.formFieldAnnotationType\n && this.currentPosition.x < pageWidth && this.currentPosition.y < pageHeight) {\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (!formFieldElement) {\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesignerModule.drawHelper(obj_1.formFieldAnnotationType, obj_1, evt);\n }\n else if (formFieldElement) {\n var previousActivePage = formFieldElement.parentElement.id.split(\"_text_\")[1] || formFieldElement.parentElement.id.split(\"_textLayer_\")[1] || formFieldElement.parentElement.id.split(\"_annotationCanvas_\")[1] || formFieldElement.parentElement.id.split(\"_pageDiv_\")[1];\n if (parseInt(previousActivePage) !== this.activeElements.activePageID) {\n formFieldElement.remove(\"FormField_helper_html_element\");\n }\n else {\n // eslint-disable-next-line\n var point = this.getMousePosition(event);\n if (obj_1.formFieldAnnotationType === 'Checkbox') {\n formFieldElement.firstElementChild.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else if (obj_1.formFieldAnnotationType === 'SignatureField' || obj_1.formFieldAnnotationType === 'InitialField') {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n formFieldElement.firstElementChild.lastElementChild.style.visibility = 'visible';\n }\n else {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'visible';\n }\n formFieldElement.setAttribute('style', 'height:' + bounds.height + 'px; width:' + bounds.width + 'px;left:' + point.x + 'px; top:' + point.y + 'px;' +\n 'position:absolute;opacity: 0.5;');\n }\n }\n }\n else if (this.currentPosition.x > pageWidth || this.currentPosition.y > pageHeight) {\n // eslint-disable-next-line\n var formFieldElement = document.getElementById('FormField_helper_html_element');\n if (!formFieldElement) {\n // eslint-disable-next-line max-len\n this.pdfViewer.formDesignerModule.drawHelper(obj_1.formFieldAnnotationType, obj_1, evt);\n }\n else if (formFieldElement) {\n // eslint-disable-next-line\n var point = this.getMousePosition(event);\n formFieldElement.setAttribute('style', 'height:' + bounds.height + 'px; width:' + bounds.width + 'px;left:' + point.x + 'px; top:' + point.y + 'px;' +\n 'position:absolute;opacity: 0.5;');\n if (obj_1.formFieldAnnotationType === 'Checkbox') {\n formFieldElement.firstElementChild.firstElementChild.lastElementChild.style.visibility = 'hidden';\n }\n else if (obj_1.formFieldAnnotationType === 'SignatureField' || obj_1.formFieldAnnotationType === 'InitialField') {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'hidden';\n formFieldElement.firstElementChild.lastElementChild.style.visibility = 'hidden';\n }\n else {\n formFieldElement.firstElementChild.firstElementChild.style.visibility = 'hidden';\n }\n }\n }\n }\n }\n }\n this.prevPosition = this.currentPosition;\n }\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateDefaultCursor = function (source, target, event) {\n // eslint-disable-next-line max-len\n if (source && source.pageIndex !== undefined && source.pageIndex !== this.activeElements.activePageID && target) {\n // eslint-disable-next-line\n this.isPanMode ? target.style.cursor = 'grab' : target.style.cursor = 'default';\n }\n else {\n this.setCursor(target, event);\n }\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The event.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseLeave = function (evt) {\n this.currentPosition = this.getMousePosition(evt);\n if (this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n if (isNaN(this.activeElements.activePageID) && this.pdfViewer.formDesignerModule) {\n this.activeElements.activePageID = this.pdfViewer.formDesignerModule.getEventPageNumber(evt);\n }\n var shapeElement = findActiveElement(evt, this, this.pdfViewer);\n var mouseMoveforce = false;\n if (Point.equals(this.currentPosition, this.prevPosition) === false || this.inAction) {\n if (this.isMouseDown === false || mouseMoveforce) {\n this.eventArgs = {};\n var sourceElement = null;\n if (shapeElement) {\n sourceElement = shapeElement.wrapper.children[0];\n mouseMoveforce = false;\n }\n }\n else {\n this.diagramMouseActionHelper(evt);\n // eslint-disable-next-line max-len\n if (this.tool && this.action !== 'Drag' && this.pdfViewer.tool !== 'Stamp' && this.tool.currentElement && this.tool.currentElement.shapeAnnotationType !== 'Stamp') {\n this.tool.mouseLeave(this.eventArgs);\n this.tool = null;\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotationModule.renderAnnotations(this.previousPage, null, null, null);\n }\n }\n }\n this.prevPosition = this.currentPosition;\n }\n };\n PdfViewerBase.prototype.diagramMouseActionHelper = function (evt) {\n this.eventArgs.position = this.currentPosition;\n if (this.action === 'Drag' &&\n this.eventArgs.source instanceof Selector) {\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt);\n }\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt, this.eventArgs.source);\n this.inAction = true;\n this.initialEventArgs = null;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.setCursor = function (eventTarget, event) {\n // eslint-disable-next-line max-len\n var freeTextAnnotModule = this.pdfViewer.annotationModule ? this.pdfViewer.annotationModule.freeTextAnnotationModule : null;\n var cursorType;\n if (this.tool instanceof ResizeTool) {\n if (this.tool.corner === 'ResizeNorthWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'nw-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeNorthEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'ne-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouthWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'sw-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouthEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'se-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeNorth') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'n-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeWest') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'w-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeEast') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'e-resize' : cursorType;\n }\n else if (this.tool.corner === 'ResizeSouth') {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 's-resize' : cursorType;\n }\n }\n else if (this.isCommentIconAdded && this.isAddComment) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.pdfViewer.enableHandwrittenSignature && this.isNewSignatureAdded && this.tool instanceof StampTool) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.tool instanceof MoveTool) {\n eventTarget.style.cursor = 'move';\n // eslint-disable-next-line max-len\n }\n else if (this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool || (freeTextAnnotModule && freeTextAnnotModule.isNewAddedAnnot) || this.tool instanceof InkDrawingTool) {\n eventTarget.style.cursor = 'crosshair';\n }\n else if (this.tool instanceof ConnectTool) {\n if (this.tool.endPoint && this.tool.endPoint.indexOf('Leader0')) {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'nw-resize' : cursorType;\n }\n else if (this.tool.endPoint && this.tool.endPoint.indexOf('Leader1')) {\n cursorType = this.setResizerCursorType();\n eventTarget.style.cursor = isNullOrUndefined(cursorType) ? 'ne-resize' : cursorType;\n }\n else if (this.tool.endPoint && this.tool.endPoint.indexOf('ConnectorSegmentPoint')) {\n eventTarget.style.cursor = 'sw-resize';\n }\n }\n else {\n if (eventTarget.classList.contains('e-pv-text')) {\n eventTarget.style.cursor = 'text';\n }\n else if (eventTarget.classList.contains('e-pv-hyperlink')) {\n eventTarget.style.cursor = 'pointer';\n }\n else if (this.isPanMode) {\n if (this.isViewerMouseDown && event.type === 'mousemove') {\n eventTarget.style.cursor = 'grabbing';\n }\n else {\n var obj = findActiveElement(event, this, this.pdfViewer);\n if (obj && event.type === 'mousemove') {\n eventTarget.style.cursor = 'pointer';\n // eslint-disable-next-line max-len\n var currentObject = obj;\n // eslint-disable-next-line\n var currentPosition = this.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentObject.opacity, fillColor: currentObject.fillColor, strokeColor: currentObject.strokeColor, thicknes: currentObject.thickness, author: currentObject.author, subject: currentObject.subject, modifiedDate: currentObject.modifiedDate };\n // eslint-disable-next-line max-len\n this.isMousedOver = true;\n var isFormField = this.checkSignatureFormField(currentObject.id);\n if (currentObject.formFieldAnnotationType) {\n this.isFormFieldMousedOver = true;\n var field_1 = {\n // eslint-disable-next-line\n value: currentObject.value, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line max-len\n color: currentObject.color, backgroundColor: currentObject.backgroundColor, borderColor: currentObject.borderColor,\n // eslint-disable-next-line\n thickness: currentObject.thickness, alignment: currentObject.alignment, isReadonly: currentObject.isReadonly, visibility: currentObject.visibility,\n // eslint-disable-next-line\n maxLength: currentObject.maxLength, isRequired: currentObject.isRequired, isPrint: currentObject.isPrint, rotation: currentObject.rotateAngle, tooltip: currentObject.tooltip, options: currentObject.options,\n // eslint-disable-next-line\n isChecked: currentObject.isChecked, isSelected: currentObject.isSelected\n };\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field_1, currentObject.pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (!isFormField)\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationMouseover(currentObject.annotName, currentObject.pageIndex, currentObject.shapeAnnotationType, currentObject.bounds, annotationSettings, mousePositions, viewerPositions);\n }\n }\n else {\n eventTarget.style.cursor = 'grab';\n if (this.isMousedOver) {\n var pageIndex = void 0;\n if (this.pdfViewer.formDesignerModule) {\n pageIndex = this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n }\n else {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n }\n if (this.isFormFieldMousedOver) {\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', null, pageIndex);\n }\n else {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n }\n this.isMousedOver = false;\n this.isFormFieldMousedOver = false;\n }\n }\n }\n }\n else {\n var obj = findActiveElement(event, this, this.pdfViewer);\n if (obj && this.pdfViewer.selectedItems.annotations.length === 0 && event.type === 'mousemove') {\n var currentObject = obj;\n // eslint-disable-next-line\n var annotationObject = this.pdfViewer.nameTable[currentObject.id];\n // eslint-disable-next-line max-len\n if (annotationObject.shapeAnnotationType !== 'HandWrittenSignature' && annotationObject.shapeAnnotationType !== 'Ink' && annotationObject.annotationSettings && annotationObject.annotationSettings.isLock !== undefined) {\n annotationObject.annotationSettings.isLock = JSON.parse(annotationObject.annotationSettings.isLock);\n }\n if (annotationObject.annotationSettings && annotationObject.annotationSettings.isLock) {\n eventTarget.style.cursor = 'default';\n }\n else {\n eventTarget.style.cursor = 'pointer';\n }\n // eslint-disable-next-line\n var currentPosition = this.getMousePosition(event);\n // eslint-disable-next-line\n var relativePosition = this.relativePosition(event);\n // eslint-disable-next-line\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n // eslint-disable-next-line\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n // eslint-disable-next-line\n var annotationSettings = { opacity: currentObject.opacity, fillColor: currentObject.fillColor, strokeColor: currentObject.strokeColor, thicknes: currentObject.thickness, author: currentObject.author, subject: currentObject.subject, modifiedDate: currentObject.modifiedDate };\n // eslint-disable-next-line max-len\n this.isMousedOver = true;\n var isFormField = this.checkSignatureFormField(currentObject.id);\n if (currentObject.formFieldAnnotationType) {\n this.isFormFieldMousedOver = true;\n var field_2 = {\n // eslint-disable-next-line\n value: currentObject.value, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line max-len\n color: currentObject.color, backgroundColor: currentObject.backgroundColor, borderColor: currentObject.borderColor,\n // eslint-disable-next-line\n thickness: currentObject.thickness, alignment: currentObject.alignment, isReadonly: currentObject.isReadonly, visibility: currentObject.visibility,\n // eslint-disable-next-line\n maxLength: currentObject.maxLength, isRequired: currentObject.isRequired, isPrint: currentObject.isPrint, rotation: currentObject.rotateAngle, tooltip: currentObject.tooltip, options: currentObject.options,\n // eslint-disable-next-line\n isChecked: currentObject.isChecked, isSelected: currentObject.isSelected\n };\n this.fromTarget = currentObject;\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field_2, currentObject.pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (!isFormField)\n // eslint-disable-next-line max-len\n this.pdfViewer.fireAnnotationMouseover(currentObject.annotName, currentObject.pageIndex, currentObject.shapeAnnotationType, currentObject.bounds, annotationSettings, mousePositions, viewerPositions);\n }\n }\n else if (!this.pdfViewer.formDesignerModule && event.target.classList.contains('e-pdfviewer-formFields')) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n var currentPosition = this.getMousePosition(event);\n var relativePosition = this.relativePosition(event);\n var viewerPositions = { left: relativePosition.x, top: relativePosition.y };\n var mousePositions = { left: currentPosition.x, top: currentPosition.y };\n var dataJson = this.getItemFromSessionStorage('_formfields');\n var data = JSON.parse(dataJson);\n for (var i = 0; i < data.length; i++) {\n if (data[parseInt(i.toString(), 10)].FieldName === event.target.name) {\n var field = { name: data[parseInt(i.toString(), 10)].FieldName };\n }\n }\n this.isMousedOver = true;\n this.isFormFieldMousedOver = true;\n this.pdfViewer.fireFormFieldMouseoverEvent('formFieldMouseover', field, pageIndex, relativePosition.x, relativePosition.y, currentPosition.x, currentPosition.y);\n }\n else {\n if (this.isMousedOver) {\n var pageIndex = void 0;\n if (this.pdfViewer.formDesignerModule) {\n pageIndex = this.pdfViewer.formDesignerModule.getEventPageNumber(event);\n }\n else {\n pageIndex = this.pdfViewer.annotation.getEventPageNumber(event);\n }\n if (this.isFormFieldMousedOver) {\n if (this.fromTarget) {\n var field_3 = {\n // eslint-disable-next-line\n name: this.fromTarget.name, id: this.fromTarget.id, value: this.fromTarget.value, fontFamily: this.fromTarget.fontFamily, fontSize: this.fromTarget.fontSize, fontStyle: this.fromTarget.fontStyle,\n // eslint-disable-next-line max-len\n color: this.fromTarget.color, backgroundColor: this.fromTarget.backgroundColor, borderColor: this.fromTarget.borderColor,\n // eslint-disable-next-line\n thickness: this.fromTarget.thickness, alignment: this.fromTarget.alignment, isReadonly: this.fromTarget.isReadonly, visibility: this.fromTarget.visibility,\n // eslint-disable-next-line\n maxLength: this.fromTarget.maxLength, isRequired: this.fromTarget.isRequired, isPrint: this.fromTarget.isPrint, rotation: this.fromTarget.rotateAngle, tooltip: this.fromTarget.tooltip, options: this.fromTarget.options,\n // eslint-disable-next-line\n isChecked: this.fromTarget.isChecked, isSelected: this.fromTarget.isSelected\n };\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', field_3, pageIndex);\n }\n else {\n this.pdfViewer.fireFormFieldMouseLeaveEvent('formFieldMouseLeave', null, pageIndex);\n }\n }\n else {\n this.pdfViewer.fireAnnotationMouseLeave(pageIndex);\n }\n this.isMousedOver = false;\n this.isFormFieldMousedOver = false;\n eventTarget.style.cursor = 'default';\n }\n if (obj && this.pdfViewer.selectedItems.annotations.length === 1 && event.type === 'mousemove') {\n eventTarget.style.cursor = 'pointer';\n }\n else {\n eventTarget.style.cursor = 'default';\n }\n }\n }\n }\n };\n PdfViewerBase.prototype.setResizerCursorType = function () {\n var cursorType;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && isNullOrUndefined(this.pdfViewer.selectedItems.annotations[0].annotationSelectorSettings.resizerCursorType)) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.freeTextSettings.annotationSelectorSettings) ? this.pdfViewer.freeTextSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.stampSettings.annotationSelectorSettings) ? this.pdfViewer.stampSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings) ? this.pdfViewer.handWrittenSignatureSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings) ? this.pdfViewer.inkAnnotationSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (!this.pdfViewer.selectedItems.annotations[0].measureType) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.lineSettings.annotationSelectorSettings) ? this.pdfViewer.lineSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.arrowSettings.annotationSelectorSettings) ? this.pdfViewer.arrowSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Rectangle') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.rectangleSettings.annotationSelectorSettings) ? this.pdfViewer.rectangleSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ellipse') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.circleSettings.annotationSelectorSettings) ? this.pdfViewer.circleSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Polygon') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.polygonSettings.annotationSelectorSettings) ? this.pdfViewer.polygonSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n }\n else if (this.pdfViewer.selectedItems.annotations[0].measureType) {\n if (this.pdfViewer.selectedItems.annotations[0].subject === 'Distance calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.distanceSettings.annotationSelectorSettings) ? this.pdfViewer.distanceSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Perimeter calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.perimeterSettings.annotationSelectorSettings) ? this.pdfViewer.perimeterSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Area calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.areaSettings.annotationSelectorSettings) ? this.pdfViewer.areaSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Radius calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.radiusSettings.annotationSelectorSettings) ? this.pdfViewer.radiusSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n else if (this.pdfViewer.selectedItems.annotations[0].subject === 'Volume calculation') {\n // eslint-disable-next-line max-len\n cursorType = !isNullOrUndefined(this.pdfViewer.volumeSettings.annotationSelectorSettings) ? this.pdfViewer.volumeSettings.annotationSelectorSettings.resizerCursorType : null;\n }\n }\n }\n else {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n cursorType = this.pdfViewer.selectedItems.annotations[0].annotationSelectorSettings.resizerCursorType;\n }\n }\n if (!cursorType) {\n cursorType = this.pdfViewer.annotationSelectorSettings.resizerCursorType;\n }\n return cursorType;\n };\n /**\n * @private\n * @param {Actions | string} action - The actions.\n * @returns {ToolBase} - Returns tools.\n */\n PdfViewerBase.prototype.getTool = function (action) {\n switch (action) {\n case 'Select':\n return new SelectTool(this.pdfViewer, this);\n case 'Drag':\n return new MoveTool(this.pdfViewer, this);\n case 'ResizeSouthEast':\n case 'ResizeSouthWest':\n case 'ResizeNorthEast':\n case 'ResizeNorthWest':\n case 'ResizeSouth':\n case 'ResizeNorth':\n case 'ResizeWest':\n case 'ResizeEast':\n return new ResizeTool(this.pdfViewer, this, action);\n case 'ConnectorSourceEnd':\n case 'ConnectorTargetEnd':\n case 'Leader':\n case 'ConnectorSegmentPoint':\n return new ConnectTool(this.pdfViewer, this, action);\n case 'DrawTool':\n return new NodeDrawingTool(this.pdfViewer, this, this.pdfViewer.drawingObject);\n case 'Polygon':\n return new PolygonDrawingTool(this.pdfViewer, this, 'Polygon');\n case 'Distance':\n return new LineTool(this.pdfViewer, this, 'Leader1', undefined);\n case 'Line':\n return new LineTool(this.pdfViewer, this, 'ConnectorSegmentPoint_1', this.pdfViewer.drawingObject);\n case 'Perimeter':\n return new PolygonDrawingTool(this.pdfViewer, this, 'Perimeter');\n case 'Rotate':\n return new RotateTool(this.pdfViewer, this);\n case 'Stamp':\n return new StampTool(this.pdfViewer, this);\n case 'Ink':\n return new InkDrawingTool(this.pdfViewer, this, this.pdfViewer.drawingObject);\n }\n if (action.indexOf('ConnectorSegmentPoint') > -1 || action.indexOf('Leader') > -1) {\n return new ConnectTool(this.pdfViewer, this, action);\n }\n return null;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The events.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseUp = function (evt) {\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var touches;\n var isAnnotResized = (this.action.toLowerCase().includes('resize') || this.action.toLowerCase().includes('connectorsegmentpoint'));\n var isAnnotationDrawn = (this.action === 'Drag' || isAnnotResized) || ((this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool) && (this.tool.dragging && this.tool.drawingObject));\n if (this.tool) {\n if (!this.inAction && evt.which !== 3) {\n if (this.action === 'Drag') {\n this.action = 'Select';\n var obj = findActiveElement(evt, this, this.pdfViewer);\n \n }\n }\n if (!(this.tool instanceof PolygonDrawingTool) && !(this.tool instanceof LineTool) && !(this.tool instanceof NodeDrawingTool)) {\n this.inAction = false;\n this.isMouseDown = false;\n }\n this.currentPosition = this.getMousePosition(evt);\n if (this.tool) {\n this.eventArgs.position = this.currentPosition;\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt, this.eventArgs.source);\n var ctrlKey = this.isMetaKey(evt);\n var info = { ctrlKey: evt.ctrlKey, shiftKey: evt.shiftKey };\n this.eventArgs.info = info;\n this.eventArgs.clickCount = evt.detail;\n this.tool.mouseUp(this.eventArgs);\n this.isAnnotationMouseDown = false;\n this.isFormFieldMouseDown = false;\n // eslint-disable-next-line max-len\n if ((this.tool instanceof NodeDrawingTool || this.tool instanceof LineTool || this.tool instanceof PolygonDrawingTool) && !this.tool.dragging) {\n this.inAction = false;\n this.isMouseDown = false;\n }\n if (isAnnotationDrawn) {\n var obj = findActiveElement(evt, this, this.pdfViewer);\n // eslint-disable-next-line max-len\n if ((this.isShapeAnnotationModule() || this.isCalibrateAnnotationModule())) {\n this.pdfViewer.annotation.onShapesMouseup(obj, evt);\n }\n }\n this.isAnnotationDrawn = false;\n }\n }\n var target = evt.target;\n // eslint-disable-next-line max-len\n if (!touches && evt.cancelable && this.skipPreventDefault(target) && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n evt.preventDefault();\n }\n this.eventArgs = {};\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n * @param {HTMLElement} target - The target.\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.skipPreventDefault = function (target) {\n var isSkipped = false;\n var isSkip = false;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus) {\n isSkip = true;\n }\n // eslint-disable-next-line max-len\n if (target.parentElement && target.parentElement.className !== 'foreign-object' && !target.classList.contains('e-pv-radio-btn') && !target.classList.contains('e-pv-radiobtn-span') && !target.classList.contains('e-pv-checkbox-div') && !target.classList.contains('e-pdfviewer-formFields')\n && !target.classList.contains('e-pdfviewer-ListBox') && !target.classList.contains('e-pdfviewer-signatureformfields')\n && !((target).className === 'free-text-input' && (target).tagName === 'TEXTAREA')\n && !isSkip && !((target).className === 'e-pv-hyperlink')) {\n isSkipped = true;\n }\n return isSkipped;\n };\n PdfViewerBase.prototype.isMetaKey = function (evt) {\n return navigator.platform.match('Mac') ? evt.metaKey : evt.ctrlKey;\n };\n /**\n * @private\n * @param {MouseEvent | TouchEvent} evt - The events.\n * @returns {void}\n */\n PdfViewerBase.prototype.diagramMouseDown = function (evt) {\n var _this = this;\n if (this.tool instanceof MoveTool && !(this.tool instanceof StampTool) && this.tool['inAction']) {\n this.diagramMouseUp(evt);\n if (evt.which === 1) {\n this.preventContextmenu = true;\n setTimeout(function () {\n _this.preventContextmenu = false;\n }, 200);\n }\n }\n var allowServerDataBind = this.pdfViewer.allowServerDataBinding;\n this.pdfViewer.enableServerDataBinding(false);\n var touches = null;\n touches = evt.touches;\n this.isMouseDown = true;\n this.isAnnotationAdded = false;\n this.currentPosition = this.prevPosition = this.getMousePosition(evt);\n this.eventArgs = {};\n var isStamp = false;\n if (this.pdfViewer.tool === 'Stamp') {\n this.pdfViewer.tool = '';\n isStamp = true;\n }\n if (Browser.isDevice && this.pdfViewer.annotation) {\n this.activeElements.activePageID = this.pdfViewer.annotation.getEventPageNumber(evt);\n }\n var obj = findActiveElement(evt, this, this.pdfViewer);\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && (obj && !(obj instanceof PdfFormFieldBase))) {\n evt.preventDefault();\n }\n if (this.pdfViewer.annotation && this.pdfViewer.enableStampAnnotations) {\n var stampModule = this.pdfViewer.annotationModule.stampAnnotationModule;\n if (stampModule && stampModule.isNewStampAnnot) {\n var stampObj = obj;\n if (!stampObj && this.pdfViewer.selectedItems.annotations[0]) {\n stampObj = this.pdfViewer.selectedItems.annotations[0];\n }\n if (stampObj) {\n this.isViewerMouseDown = false;\n stampObj.opacity = this.pdfViewer.stampSettings.opacity;\n this.isNewStamp = true;\n var opacity = void 0;\n if (stampObj.shapeAnnotationType === 'Image') {\n opacity = this.pdfViewer.customStampSettings.opacity;\n }\n else {\n opacity = this.pdfViewer.stampSettings.opacity;\n }\n // eslint-disable-next-line max-len\n this.pdfViewer.nodePropertyChange(stampObj, { opacity: opacity });\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = false;\n if (stampObj.shapeAnnotationType === 'Image' && !this.isAlreadyAdded) {\n this.stampAdded = true;\n var stampName = stampObj.id;\n if (stampModule.currentStampAnnotation && stampModule.currentStampAnnotation.signatureName) {\n stampName = stampModule.currentStampAnnotation.signatureName;\n }\n var isSkip = false;\n for (var i = 0; i < this.customStampCollection.length; i++) {\n if (this.customStampCollection[parseInt(i.toString(), 10)].customStampName === stampName) {\n isSkip = true;\n break;\n }\n }\n if (isSkip) {\n stampName = stampObj.id;\n }\n stampName = stampModule.customStampName ? stampModule.customStampName : stampModule.currentStampAnnotation.signatureName;\n this.customStampCollection.push({ customStampName: stampName, customStampImageSource: stampObj.data });\n if (isBlazor()) {\n this.pdfViewer._dotnetInstance.invokeMethodAsync(\"UpdateCustomStampCollection\", stampName, stampObj.data);\n }\n }\n if (this.pdfViewer.customStampSettings.enableCustomStamp && this.pdfViewer.customStampSettings.isAddToMenu) {\n this.stampAdded = true;\n }\n this.isAlreadyAdded = false;\n stampModule.updateDeleteItems(stampObj.pageIndex, stampObj, stampObj.opacity);\n stampModule.resetAnnotation();\n stampModule.isNewStampAnnot = false;\n }\n }\n }\n if (this.isNewSignatureAdded) {\n this.signatureCount++;\n this.currentSignatureAnnot = null;\n var signObject = obj;\n if (isNullOrUndefined(signObject) && this.pdfViewer.selectedItems.annotations[0]) {\n signObject = this.pdfViewer.selectedItems.annotations[0];\n }\n if (signObject) {\n this.signatureAdded = true;\n this.signatureModule.storeSignatureData(signObject.pageIndex, signObject);\n // eslint-disable-next-line\n var bounds = { left: signObject.bounds.x, top: signObject.bounds.y, width: signObject.bounds.width, height: signObject.bounds.height };\n // eslint-disable-next-line max-len\n this.pdfViewer.fireSignatureAdd(signObject.pageIndex, signObject.signatureName, signObject.shapeAnnotationType, bounds, signObject.opacity, signObject.strokeColor, signObject.thickness, this.signatureModule.saveImageString);\n }\n this.isNewSignatureAdded = false;\n }\n if (this.pdfViewer.annotationModule) {\n var freeTextAnnotModule = this.pdfViewer.annotationModule.freeTextAnnotationModule;\n var canvasPaddingLeft = 5, canvasPaddingWidth = 10;\n // eslint-disable-next-line\n if (freeTextAnnotModule.isNewFreeTextAnnot === true) {\n var canvas = void 0;\n // eslint-disable-next-line max-len\n if (evt.target && (evt.target.id.indexOf('_text') > -1 || evt.target.id.indexOf('_annotationCanvas') > -1 || evt.target.classList.contains('e-pv-hyperlink')) && this.pdfViewer.annotation) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(evt);\n var diagram = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + pageIndex);\n if (diagram) {\n var canvas1 = diagram.getBoundingClientRect();\n var left = canvas1.x ? canvas1.x : canvas1.left;\n var top_4 = canvas1.y ? canvas1.y : canvas1.top;\n canvas = new Rect(left + canvasPaddingLeft, top_4 + canvasPaddingLeft, canvas1.width - canvasPaddingWidth, canvas1.height - canvasPaddingWidth);\n }\n }\n if (touches) {\n this.mouseX = touches[0].clientX;\n this.mouseY = touches[0].clientY;\n }\n if (canvas && canvas.containsPoint({ x: this.mouseX, y: this.mouseY }) && freeTextAnnotModule.isNewAddedAnnot) {\n var pageIndex = this.pdfViewer.annotation.getEventPageNumber(evt);\n if (!this.pdfViewer.freeTextSettings.enableAutoFit) {\n var zoomFactor = this.getZoomFactor();\n var width = this.currentPosition.x + (freeTextAnnotModule.defautWidth * zoomFactor);\n var pageWidth = this.getPageWidth(pageIndex);\n if (width >= pageWidth) {\n this.currentPosition.x = pageWidth - (freeTextAnnotModule.defautWidth * zoomFactor);\n this.currentPosition.x <= 0 ? this.currentPosition.x = canvasPaddingLeft : this.currentPosition.x;\n freeTextAnnotModule.defautWidth = (freeTextAnnotModule.defautWidth * zoomFactor) >= pageWidth ? pageWidth - canvasPaddingWidth : freeTextAnnotModule.defautWidth;\n }\n }\n freeTextAnnotModule.addInuptElemet(this.currentPosition, null, pageIndex);\n if (this.pdfViewer.toolbar && this.pdfViewer.toolbar.annotationToolbarModule) {\n // eslint-disable-next-line\n var annotModule = this.pdfViewer.toolbar.annotationToolbarModule;\n if (!isBlazor()) {\n annotModule.primaryToolbar.deSelectItem(annotModule.freeTextEditItem);\n }\n }\n evt.preventDefault();\n freeTextAnnotModule.isNewAddedAnnot = false;\n }\n }\n }\n var sourceElement = null;\n if (obj) {\n sourceElement = obj.wrapper.children[0];\n \n }\n if (!this.tool || (this.tool && !this.tool.drawingObject)) {\n if (!isStamp) {\n this.action = this.findToolToActivate(obj, this.currentPosition);\n // eslint-disable-next-line\n if (obj && obj.annotationSettings && obj.annotationSettings.isLock) {\n if (this.action === 'Select') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Select', obj)) {\n this.action = '';\n }\n }\n if (this.action === 'Drag') {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Move', obj)) {\n this.action = 'Select';\n }\n }\n if (this.action === 'Rotate') {\n this.action = 'Select';\n }\n // eslint-disable-next-line max-len\n if (this.action === 'ResizeSouthEast' || this.action === 'ResizeNorthEast' || this.action === 'ResizeNorthWest' || this.action === 'ResizeSouthWest' || this.action === 'ResizeSouth' || // eslint-disable-next-line max-len\n this.action === 'ResizeNorth' || this.action === 'ResizeWest' || this.action === 'ResizeEast' || this.action.includes('ConnectorSegmentPoint') || this.action.includes('Leader')) {\n if (!this.pdfViewer.annotationModule.checkAllowedInteractions('Resize', obj)) {\n this.action = 'Select';\n }\n }\n }\n this.tool = this.getTool(this.action);\n if (!this.tool) {\n this.action = this.pdfViewer.tool || 'Select';\n this.tool = this.getTool(this.action);\n }\n }\n else {\n this.action = 'Select';\n this.tool = this.getTool(this.action);\n }\n }\n this.getMouseEventArgs(this.currentPosition, this.eventArgs, evt);\n this.eventArgs.position = this.currentPosition;\n if (this.tool) {\n this.isAnnotationMouseDown = false;\n this.isFormFieldMouseDown = false;\n this.isAnnotationMouseMove = false;\n this.isFormFieldMouseMove = false;\n this.tool.mouseDown(this.eventArgs);\n this.isAnnotationDrawn = true;\n this.signatureAdded = true;\n }\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.onAnnotationMouseDown();\n }\n if (this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.formFields.length === 1) {\n if (!isNullOrUndefined(this.pdfViewer.toolbar) && !isNullOrUndefined(this.pdfViewer.toolbar.formDesignerToolbarModule)) {\n this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n var signatureFieldAnnotation = this.pdfViewer.selectedItems.annotations.length === 1 ? this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id.split('_')[0] + '_content'] : null;\n if (!signatureFieldAnnotation) {\n signatureFieldAnnotation = this.pdfViewer.selectedItems.annotations.length === 1 ? this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id] : null;\n }\n // eslint-disable-next-line max-len\n if (this.eventArgs && this.eventArgs.source && (this.eventArgs.source.formFieldAnnotationType || signatureFieldAnnotation) && !this.pdfViewer.designerMode) {\n var currentObject = void 0;\n if (signatureFieldAnnotation) {\n currentObject = this.pdfViewer.nameTable[this.pdfViewer.selectedItems.annotations[0].id.split('_')[0]];\n }\n else {\n currentObject = this.eventArgs.source;\n }\n if (!currentObject) {\n currentObject = this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === signatureFieldAnnotation.id; })];\n }\n if (currentObject) {\n // eslint-disable-next-line\n var field = {\n // eslint-disable-next-line max-len\n name: currentObject.name, id: currentObject.id, fontFamily: currentObject.fontFamily, fontSize: currentObject.fontSize, fontStyle: currentObject.fontStyle,\n // eslint-disable-next-line\n color: currentObject.color, value: currentObject.value, type: currentObject.formFieldAnnotationType ? currentObject.formFieldAnnotationType : currentObject.type, backgroundColor: currentObject.backgroundColor, alignment: currentObject.alignment\n };\n var target_1 = document.getElementById(currentObject.id);\n target_1 = target_1 ? target_1 : (document.getElementById(currentObject.id + '_content_html_element') ? document.getElementById(currentObject.id + '_content_html_element').children[0].children[0] : null);\n if (target_1) {\n this.currentTarget = target_1;\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', field, false, evt.button === 0);\n }\n }\n }\n this.initialEventArgs = { source: this.eventArgs.source, sourceWrapper: this.eventArgs.sourceWrapper };\n this.initialEventArgs.position = this.currentPosition;\n this.initialEventArgs.info = this.eventArgs.info;\n this.pdfViewer.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.exportAnnotationsAsObject = function () {\n var _this = this;\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.updateExportItem();\n if (isAnnotations) {\n return new Promise(function (resolve, reject) {\n _this.createRequestForExportAnnotations(true, AnnotationDataFormat.Json).then(function (value) {\n resolve(value);\n });\n });\n }\n }\n };\n /**\n * @private\n * @param {string} type - The type.\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.getItemFromSessionStorage = function (type) {\n if (this.isStorageExceed) {\n return this.formFieldStorage[this.documentId + type];\n }\n else {\n return window.sessionStorage.getItem(this.documentId + type);\n }\n };\n /**\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @param textDiv\n * @param left\n * @param top\n * @param fontHeight\n * @param width\n * @param height\n * @param isPrint\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewerBase.prototype.setStyleToTextDiv = function (textDiv, left, top, fontHeight, width, height, isPrint) {\n var zoomvalue = this.getZoomFactor();\n if (isPrint) {\n zoomvalue = 1;\n textDiv.style.position = 'absolute';\n }\n textDiv.style.left = left * zoomvalue + 'px';\n textDiv.style.top = top * zoomvalue + 'px';\n textDiv.style.height = height * zoomvalue + 'px';\n textDiv.style.width = width * zoomvalue + 'px';\n textDiv.style.margin = '0px';\n if (fontHeight > 0) {\n textDiv.style.fontSize = fontHeight * zoomvalue + 'px';\n }\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.setItemInSessionStorage = function (formFieldsData, type) {\n // eslint-disable-next-line\n var formFieldsSize = Math.round(JSON.stringify(formFieldsData).length / 1024);\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (formFieldsSize > 4500) {\n this.isStorageExceed = true;\n if (this.pdfViewer.formFieldsModule) {\n if (!(this.isFormStorageExceed)) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n this.isFormStorageExceed = true;\n }\n }\n }\n if (this.isStorageExceed) {\n this.formFieldStorage[this.documentId + type] = JSON.stringify(formFieldsData);\n }\n else if ((formFieldsSize + sessionSize) > 4500) {\n this.isStorageExceed = true;\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n this.isFormStorageExceed = true;\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n this.formFieldStorage[this.documentId + type] = JSON.stringify(formFieldsData);\n }\n else {\n window.sessionStorage.setItem(this.documentId + type, JSON.stringify(formFieldsData));\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.exportFormFieldsAsObject = function (formFieldDataFormat) {\n var _this = this;\n if (this.pdfViewer.formFieldsModule) {\n return new Promise(function (resolve, reject) {\n _this.createRequestForExportFormfields(true, formFieldDataFormat).then(function (value) {\n resolve(value);\n });\n });\n }\n };\n /**\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @param importData\n * @param annotationDataFormat\n * @param isXfdf\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.importAnnotations = function (importData, annotationDataFormat, isXfdf) {\n if (this.pdfViewer.annotationModule) {\n this.createRequestForImportAnnotations(importData, annotationDataFormat, isXfdf);\n }\n };\n /**\n * @private\n * @param {AnnotationDataFormat} annotationDataFormat - The annotationDataFormat.\n * @returns {void}\n */\n PdfViewerBase.prototype.exportAnnotations = function (annotationDataFormat) {\n if (this.pdfViewer.annotationModule) {\n var isAnnotations = this.updateExportItem();\n if (isAnnotations) {\n this.createRequestForExportAnnotations(false, annotationDataFormat);\n }\n }\n };\n /**\n * @param isObject\n * @param annotationDataFormat\n * @param isBase64String\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForExportAnnotations = function (isObject, annotationDataFormat, isBase64String) {\n var _this = this;\n var proxy = null;\n proxy = this;\n var promise = new Promise(function (resolve, reject) {\n // eslint-disable-next-line\n var jsonObject;\n if (annotationDataFormat === 'Json') {\n // eslint-disable-next-line max-len\n jsonObject = { hashId: proxy.hashId, action: 'ExportAnnotations', pdfAnnotation: proxy.createAnnotationJsonData(), elementId: proxy.pdfViewer.element.id, annotationDataFormat: annotationDataFormat, uniqueId: proxy.documentId };\n proxy.pdfViewer.fireExportStart(jsonObject.pdfAnnotation);\n }\n else {\n jsonObject = _this.constructJsonDownload();\n jsonObject.annotationDataFormat = annotationDataFormat;\n // eslint-disable-next-line\n jsonObject['action'] = 'ExportAnnotations';\n proxy.pdfViewer.fireExportStart(jsonObject);\n }\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.exportAnnotations;\n proxy.exportAnnotationRequestHandler = new AjaxHandler(_this.pdfViewer);\n proxy.exportAnnotationRequestHandler.url = url;\n proxy.exportAnnotationRequestHandler.mode = true;\n proxy.exportAnnotationRequestHandler.responseType = 'text';\n proxy.exportAnnotationRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data === 'object') {\n data = JSON.parse(data);\n }\n if (data) {\n var isCancel = proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.exportAnnotations, data);\n if (isObject || (isBase64String && !isBlazor())) {\n if (data.split('base64,')[1]) {\n var exportObject = data;\n // eslint-disable-next-line \n var annotationJson = atob(data.split(',')[1]);\n if (isObject) {\n if (jsonObject.annotationDataFormat === 'Json') {\n exportObject = JSON.parse(annotationJson);\n }\n else {\n exportObject = annotationJson;\n }\n }\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n proxy.pdfViewer.fireExportSuccess(exportObject, proxy.pdfViewer.exportAnnotationFileName);\n }\n else {\n proxy.pdfViewer.fireExportSuccess(exportObject, proxy.pdfViewer.fileName);\n }\n proxy.updateDocumentAnnotationCollections();\n if (isBase64String) {\n resolve(data);\n }\n else {\n resolve(annotationJson);\n }\n }\n else {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n else {\n if (annotationDataFormat === 'Json') {\n if (data.split('base64,')[1]) {\n if (!isCancel) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/json');\n if (Browser.isIE || Browser.info.name === 'edge') {\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n // eslint-disable-next-line max-len\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.exportAnnotationFileName.split('.')[0] + '.json');\n }\n else {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.json');\n }\n }\n else {\n proxy.downloadExportFormat(blobUrl, annotationDataFormat);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n else {\n return data;\n }\n }\n else {\n if (isBlazor()) {\n var promise_2 = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ExportFailed');\n promise_2.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n else {\n if (data.split('base64,')[1]) {\n if (!isCancel) {\n var blobUrl = proxy.createBlobUrl(data.split('base64,')[1], 'application/vnd.adobe.xfdf');\n if (Browser.isIE || Browser.info.name === 'edge') {\n window.navigator.msSaveOrOpenBlob(blobUrl, proxy.pdfViewer.fileName.split('.')[0] + '.xfdf');\n }\n else {\n proxy.downloadExportFormat(blobUrl, annotationDataFormat);\n }\n proxy.updateDocumentAnnotationCollections();\n }\n else {\n return data;\n }\n }\n else {\n if (isBlazor()) {\n var promise_3 = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_ExportFailed');\n promise_3.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n }\n }\n }\n }\n if (typeof data !== 'string') {\n try {\n if (typeof data === 'string') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.exportAnnotations);\n data = null;\n }\n }\n catch (error) {\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, proxy.pdfViewer.localeObj.getConstant('Export Failed'));\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.exportAnnotations);\n data = null;\n }\n }\n }\n else {\n var fileName = void 0;\n if (proxy.pdfViewer.exportAnnotationFileName !== null) {\n fileName = proxy.pdfViewer.exportAnnotationFileName;\n }\n else {\n fileName = proxy.pdfViewer.fileName;\n }\n proxy.pdfViewer.fireExportSuccess('Exported data saved in server side successfully', fileName);\n }\n };\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n // eslint-disable-next-line\n proxy.exportAnnotationRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireExportFailed(jsonObject.pdfAnnotation, result.statusText);\n };\n });\n if (isObject || isBase64String) {\n return promise;\n }\n else {\n return true;\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.updateModifiedDateToLocalDate = function (newData, annotationType) {\n if (newData[annotationType] && newData[annotationType].length > 0) {\n var data = newData[annotationType];\n if (data) {\n for (var j = 0; j < data.length; j++) {\n data[j].ModifiedDate = this.convertUTCDateTimeToLocalDateTime(data[j].ModifiedDate);\n if (data[j].Comments) {\n for (var i = 0; i < data[j].Comments.length; i++) {\n data[j].Comments[i].ModifiedDate = this.convertUTCDateTimeToLocalDateTime(data[j].Comments[i].ModifiedDate);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.convertUTCDateTimeToLocalDateTime = function (date) {\n var dateTime;\n // We have globalized the date and time based on the given locale.\n this.globalize = new Internationalization(this.pdfViewer.locale);\n if (date !== null && date !== undefined && date !== '') {\n dateTime = new Date(Date.parse(date + ' ' + 'UTC'));\n }\n else {\n var now = new Date();\n var now_utc = Date.UTC(now.getUTCFullYear(), now.getUTCMonth(), now.getUTCDate(), now.getUTCHours(), now.getUTCMinutes(), now.getUTCSeconds());\n dateTime = new Date(now_utc);\n }\n var dateTimeValue = this.globalize.formatDate(dateTime, { format: this.pdfViewer.dateTimeFormat, type: 'dateTime' });\n return dateTimeValue;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.createRequestForImportAnnotations = function (importData, annotationDataFormat, isXfdf) {\n var jsonObject;\n var proxy = null;\n proxy = this;\n if (typeof importData === 'string' && annotationDataFormat === 'Json' && importData.indexOf(\".json\") === -1) {\n importData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n importData = JSON.parse(decodeURIComponent(escape(atob(importData))));\n }\n if (typeof importData === 'object') {\n if (!isXfdf) {\n this.isJsonImported = true;\n }\n else {\n this.isJsonImported = false;\n }\n if (importData && importData.pdfAnnotation) {\n var newArray = Object.keys(importData.pdfAnnotation);\n for (var i = 0; i < newArray.length; i++) {\n var newData = importData.pdfAnnotation[newArray[i]];\n this.updateModifiedDateToLocalDate(newData, \"freeTextAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"measureShapeAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"shapeAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"signatureAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"signatureInkAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"stampAnnotations\");\n this.updateModifiedDateToLocalDate(newData, \"stickyNotesAnnotation\");\n this.updateModifiedDateToLocalDate(newData, \"textMarkupAnnotation\");\n }\n }\n proxy.reRenderAnnotations(importData.pdfAnnotation);\n proxy.isImportedAnnotation = true;\n proxy.updateDocumentEditedProperty(true);\n if (!this.isAddAnnotation) {\n proxy.pdfViewer.fireImportSuccess(importData.pdfAnnotation);\n }\n }\n else {\n proxy.pdfViewer.fireImportStart(importData);\n if (annotationDataFormat === 'Json') {\n // eslint-disable-next-line max-len\n jsonObject = { fileName: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId };\n }\n else {\n if (!isXfdf) {\n importData = btoa(importData);\n }\n importData = importData.split(',')[1] ? importData.split(',')[1] : importData.split(',')[0];\n // eslint-disable-next-line max-len\n jsonObject = { importedData: importData, action: 'ImportAnnotations', elementId: proxy.pdfViewer.element.id, hashId: proxy.hashId, uniqueId: proxy.documentId };\n }\n if (proxy.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.document = proxy.jsonDocumentId;\n }\n var url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.importAnnotations;\n proxy.importAnnotationRequestHandler = new AjaxHandler(proxy.pdfViewer);\n proxy.importAnnotationRequestHandler.url = url;\n proxy.importAnnotationRequestHandler.mode = true;\n proxy.importAnnotationRequestHandler.responseType = 'text';\n proxy.importAnnotationRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n if (typeof data !== 'object') {\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importAnnotations);\n data = null;\n }\n }\n catch (error) {\n proxy.pdfViewer.fireImportFailed(importData, proxy.pdfViewer.localeObj.getConstant('File not found'));\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_FileNotFound');\n promise.then(function (value) {\n proxy.openImportExportNotificationPopup(value);\n });\n }\n else {\n proxy.openImportExportNotificationPopup(proxy.pdfViewer.localeObj.getConstant('File not found'));\n }\n proxy.onControlError(500, data, proxy.pdfViewer.serverActionSettings.importAnnotations);\n data = null;\n }\n }\n if (data) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.importAnnotations, data);\n if (data.pdfAnnotation) {\n for (var i = 0; i < Object.keys(data.pdfAnnotation).length; i++) {\n var newData = data.pdfAnnotation[i];\n proxy.updateModifiedDateToLocalDate(newData, \"freeTextAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"measureShapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"shapeAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"signatureAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"signatureInkAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"stampAnnotations\");\n proxy.updateModifiedDateToLocalDate(newData, \"stickyNotesAnnotation\");\n proxy.updateModifiedDateToLocalDate(newData, \"textMarkupAnnotation\");\n }\n proxy.reRenderAnnotations(data.pdfAnnotation);\n proxy.isImportedAnnotation = true;\n proxy.updateDocumentEditedProperty(true);\n proxy.pdfViewer.fireImportSuccess(data.pdfAnnotation);\n }\n }\n }\n };\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireImportFailed(importData, result.statusText);\n };\n // eslint-disable-next-line\n proxy.importAnnotationRequestHandler.onError = function (result) {\n proxy.pdfViewer.fireImportFailed(importData, result.statusText);\n };\n }\n };\n /**\n * @private\n * @param {string} errorDetails - The error details.\n * @returns {void}\n */\n PdfViewerBase.prototype.openImportExportNotificationPopup = function (errorDetails) {\n if (this.pdfViewer.showNotificationDialog) {\n this.textLayer.createNotificationPopup(errorDetails);\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.reRenderAnnotations = function (annotation) {\n if (annotation) {\n this.isImportAction = true;\n var count = 0;\n if (this.isImportedAnnotation) {\n this.importedAnnotation = this.combineImportedData(this.importedAnnotation, annotation);\n }\n else {\n if (this.pageCount > 0) {\n this.importedAnnotation = annotation;\n }\n }\n if (!this.isImportedAnnotation) {\n count = 0;\n }\n for (var i = 0; i < this.pageCount; i++) {\n if (annotation[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n var importPageCollections = [];\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n }\n var annotationCanvas = this.getElement('_annotationCanvas_' + i);\n if (annotationCanvas) {\n this.drawPageAnnotations(annotation[parseInt(i.toString(), 10)], i);\n if (this.isImportedAnnotation) {\n var isAdded = false;\n for (var j = 0; j < this.annotationPageList.length; j++) {\n if (this.annotationPageList[parseInt(j.toString(), 10)] === i) {\n isAdded = true;\n }\n }\n if (isAdded) {\n this.annotationPageList[parseInt(count.toString(), 10)] = i;\n count = count + 1;\n }\n }\n else {\n this.annotationPageList[parseInt(count.toString(), 10)] = i;\n count = count + 1;\n }\n }\n if (annotation[parseInt(i.toString(), 10)].textMarkupAnnotation && annotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n if (textMarkupObject) {\n var annotObject = JSON.parse(textMarkupObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].textMarkupAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].textMarkupAnnotation, i);\n }\n annotation[parseInt(i.toString(), 10)].textMarkupAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].textMarkupAnnotation, i);\n importPageCollections.textMarkupAnnotation = annotation[parseInt(i.toString(), 10)].textMarkupAnnotation;\n if (annotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[parseInt(i.toString(), 10)].textMarkupAnnotation, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateTextMarkupAnnotationCollections(annotation[parseInt(i.toString(), 10)].textMarkupAnnotation[parseInt(j.toString(), 10)], i));\n }\n }\n }\n if (annotation[parseInt(i.toString(), 10)].shapeAnnotation && annotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n if (shapeObject) {\n var annotObject = JSON.parse(shapeObject);\n annotation[parseInt(i.toString(), 10)].shapeAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].shapeAnnotation, i);\n }\n annotation[parseInt(i.toString(), 10)].shapeAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].shapeAnnotation, i);\n importPageCollections.shapeAnnotation = annotation[parseInt(i.toString(), 10)].shapeAnnotation;\n if (annotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[parseInt(i.toString(), 10)].shapeAnnotation, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].shapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.shapeAnnotationModule.updateShapeAnnotationCollections(annotation[parseInt(i.toString(), 10)].shapeAnnotation[parseInt(j.toString(), 10)], i));\n }\n }\n }\n if (annotation[parseInt(i.toString(), 10)].measureShapeAnnotation && annotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n if (measureShapeObject) {\n var annotObject = JSON.parse(measureShapeObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].measureShapeAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].measureShapeAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].measureShapeAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].measureShapeAnnotation, i);\n importPageCollections.measureShapeAnnotation = annotation[parseInt(i.toString(), 10)].measureShapeAnnotation;\n if (annotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[parseInt(i.toString(), 10)].measureShapeAnnotation, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.measureAnnotationModule.updateMeasureAnnotationCollections(annotation[parseInt(i.toString(), 10)].measureShapeAnnotation[parseInt(j.toString(), 10)], i));\n }\n }\n }\n if (annotation[parseInt(i.toString(), 10)].stampAnnotations && annotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n if (stampObject) {\n var annotObject = JSON.parse(stampObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].stampAnnotations = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].stampAnnotations, i);\n }\n annotation[parseInt(i.toString(), 10)].stampAnnotations = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].stampAnnotations, i);\n importPageCollections.stampAnnotations = annotation[parseInt(i.toString(), 10)].stampAnnotations;\n if (annotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[parseInt(i.toString(), 10)].stampAnnotations, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].stampAnnotations.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stampAnnotationModule.updateStampAnnotationCollections(annotation[parseInt(i.toString(), 10)].stampAnnotations[parseInt(j.toString(), 10)], i));\n }\n }\n }\n if (annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation && annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n if (stickyObject) {\n var annotObject = JSON.parse(stickyObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, i);\n importPageCollections.stickyNotesAnnotation = annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation;\n if (annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateStickyNotesAnnotationCollections(annotation[parseInt(i.toString(), 10)].stickyNotesAnnotation[parseInt(j.toString(), 10)], i));\n }\n }\n }\n if (annotation[parseInt(i.toString(), 10)].freeTextAnnotation && annotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n if (freeTextObject) {\n var annotObject = JSON.parse(freeTextObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].freeTextAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].freeTextAnnotation, i);\n }\n annotation[parseInt(i.toString(), 10)].freeTextAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].freeTextAnnotation, i);\n importPageCollections.freeTextAnnotation = annotation[parseInt(i.toString(), 10)].freeTextAnnotation;\n if (annotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[parseInt(i.toString(), 10)].freeTextAnnotation, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].freeTextAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.freeTextAnnotationModule.updateFreeTextAnnotationCollections(annotation[parseInt(i.toString(), 10)].freeTextAnnotation[parseInt(j.toString(), 10)], i));\n }\n }\n }\n if (annotation[parseInt(i.toString(), 10)].signatureAnnotation && annotation[parseInt(i.toString(), 10)].signatureAnnotation.length !== 0) {\n if (signatureObject) {\n var annotObject = JSON.parse(signatureObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].signatureAnnotation = this.checkSignatureCollections(annotObject, annotation[parseInt(i.toString(), 10)].signatureAnnotation, i);\n }\n importPageCollections.signatureAnnotation = annotation[parseInt(i.toString(), 10)].signatureAnnotation;\n if (annotation[parseInt(i.toString(), 10)].signatureAnnotation.length !== 0) {\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].signatureAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.signatureModule.updateSignatureCollections(annotation[parseInt(i.toString(), 10)].signatureAnnotation[parseInt(j.toString(), 10)], i), true);\n }\n }\n }\n if (annotation[parseInt(i.toString(), 10)].signatureInkAnnotation && annotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n if (inkObject) {\n var annotObject = JSON.parse(inkObject);\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].signatureInkAnnotation = this.checkAnnotationCollections(annotObject, annotation[parseInt(i.toString(), 10)].signatureInkAnnotation, i);\n }\n // eslint-disable-next-line max-len\n annotation[parseInt(i.toString(), 10)].signatureInkAnnotation = this.checkAnnotationCommentsCollections(annotation[parseInt(i.toString(), 10)].signatureInkAnnotation, i);\n importPageCollections.signatureInkAnnotation = annotation[parseInt(i.toString(), 10)].signatureInkAnnotation;\n if (annotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderAnnotationComments(annotation[parseInt(i.toString(), 10)].signatureInkAnnotation, i);\n for (var j = 0; j < annotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length; j++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateCollections(this.pdfViewer.annotationModule.inkAnnotationModule.updateInkCollections(annotation[parseInt(i.toString(), 10)].signatureInkAnnotation[parseInt(j.toString(), 10)], i));\n }\n }\n }\n this.updateImportedAnnotationsInDocumentCollections(importPageCollections, i);\n }\n }\n if (this.pageCount > 0) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule.stickyNotesAnnotationModule && !this.pdfViewer.annotationModule.stickyNotesAnnotationModule.isAnnotationRendered) {\n // eslint-disable-next-line\n var annotationCollection = this.createAnnotationsCollection();\n if (annotationCollection) {\n // eslint-disable-next-line max-len\n this.documentAnnotationCollections = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.updateAnnotationsInDocumentCollections(this.importedAnnotation, annotationCollection);\n }\n }\n }\n }\n };\n /**\n * @param importedAnnotations\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateImportedAnnotationsInDocumentCollections = function (importedAnnotations, pageNumber) {\n if (this.documentAnnotationCollections) {\n // eslint-disable-next-line\n var documentAnnotationCollection = this.documentAnnotationCollections;\n // eslint-disable-next-line\n var pageCollections = documentAnnotationCollection[pageNumber];\n if (pageCollections) {\n if (importedAnnotations.textMarkupAnnotation && importedAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.textMarkupAnnotation.length; i++) {\n pageCollections.textMarkupAnnotation.push(importedAnnotations.textMarkupAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.shapeAnnotation && importedAnnotations.shapeAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.shapeAnnotation.length; i++) {\n pageCollections.shapeAnnotation.push(importedAnnotations.shapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.measureShapeAnnotation && importedAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.measureShapeAnnotation.length; i++) {\n pageCollections.measureShapeAnnotation.push(importedAnnotations.measureShapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.stampAnnotations && importedAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < importedAnnotations.stampAnnotations.length; i++) {\n pageCollections.stampAnnotations.push(importedAnnotations.stampAnnotations[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.stickyNotesAnnotation && importedAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.stickyNotesAnnotation.length; i++) {\n pageCollections.stickyNotesAnnotation.push(importedAnnotations.stickyNotesAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.freeTextAnnotation && importedAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.freeTextAnnotation.length; i++) {\n pageCollections.freeTextAnnotation.push(importedAnnotations.freeTextAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.signatureAnnotation && importedAnnotations.signatureAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.signatureAnnotation.length; i++) {\n pageCollections.signatureAnnotation.push(importedAnnotations.signatureAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (importedAnnotations.signatureInkAnnotation && importedAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < importedAnnotations.signatureInkAnnotation.length; i++) {\n pageCollections.signatureInkAnnotation.push(importedAnnotations.signatureInkAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n this.documentAnnotationCollections[parseInt(pageNumber.toString(), 10)] = pageCollections;\n }\n }\n };\n /**\n * @param pageIndex\n * @param pageCollections\n * @param pageIndex\n * @param pageCollections\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkDocumentCollectionData = function (pageIndex, pageCollections) {\n // eslint-disable-next-line\n var importPageCollections;\n if (pageCollections) {\n importPageCollections = pageCollections;\n }\n else if (this.documentAnnotationCollections) {\n // eslint-disable-next-line\n var documetCollections = this.documentAnnotationCollections[pageIndex];\n if (documetCollections) {\n importPageCollections = cloneObject(documetCollections);\n }\n }\n if (importPageCollections) {\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n signatureObject = this.annotationStorage[this.documentId + '_annotations_sign'];\n }\n if (importPageCollections.textMarkupAnnotation && importPageCollections.textMarkupAnnotation.length !== 0) {\n if (textMarkupObject) {\n var annotationObject = JSON.parse(textMarkupObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.textMarkupAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.textMarkupAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.shapeAnnotation && importPageCollections.shapeAnnotation.length !== 0) {\n if (shapeObject) {\n var annotationObject = JSON.parse(shapeObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.shapeAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.shapeAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.measureShapeAnnotation && importPageCollections.measureShapeAnnotation.length !== 0) {\n if (measureShapeObject) {\n var annotationObject = JSON.parse(measureShapeObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.measureShapeAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.measureShapeAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.stampAnnotations && importPageCollections.stampAnnotations.length !== 0) {\n if (stampObject) {\n var annotationObject = JSON.parse(stampObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.stampAnnotations = this.findImportedAnnotations(annotationObject, importPageCollections.stampAnnotations, pageIndex);\n }\n }\n }\n if (importPageCollections.stickyNotesAnnotation && importPageCollections.stickyNotesAnnotation.length !== 0) {\n if (stickyObject) {\n var annotationObject = JSON.parse(stickyObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.stickyNotesAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.stickyNotesAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.freeTextAnnotation && importPageCollections.freeTextAnnotation.length !== 0) {\n if (freeTextObject) {\n var annotationObject = JSON.parse(freeTextObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.freeTextAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.freeTextAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.signatureInkAnnotation && importPageCollections.signatureInkAnnotation.length !== 0) {\n if (inkObject) {\n var annotationObject = JSON.parse(inkObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.signatureInkAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.signatureInkAnnotation, pageIndex);\n }\n }\n }\n if (importPageCollections.signatureAnnotation && importPageCollections.signatureAnnotation.length !== 0) {\n if (signatureObject) {\n var annotationObject = JSON.parse(inkObject);\n if (annotationObject) {\n // eslint-disable-next-line max-len\n importPageCollections.signatureAnnotation = this.findImportedAnnotations(annotationObject, importPageCollections.signatureAnnotation, pageIndex);\n }\n }\n }\n return importPageCollections;\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.findImportedAnnotations = function (annotationCollection, importAnnotations, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[parseInt(a.toString(), 10)].pageIndex === pageNumber) {\n pageCollections = annotationCollection[parseInt(a.toString(), 10)].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < importAnnotations.length; j++) {\n if (pageCollections[parseInt(i.toString(), 10)].annotName === importAnnotations[parseInt(j.toString(), 10)].AnnotName) {\n importAnnotations.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return importAnnotations;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.drawPageAnnotations = function (annotation, pageIndex, isNewlyAdded) {\n if (isNewlyAdded) {\n annotation = annotation[parseInt(pageIndex.toString(), 10)];\n }\n if (annotation) {\n if (annotation.textMarkupAnnotation && annotation.textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n if (annotObject) {\n // eslint-disable-next-line max-len\n annotation.textMarkupAnnotation = this.checkAnnotationCollections(annotObject, annotation.textMarkupAnnotation, pageIndex);\n }\n }\n annotation.textMarkupAnnotation = this.checkAnnotationCommentsCollections(annotation.textMarkupAnnotation, pageIndex);\n if (annotation.textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, null, annotation.textMarkupAnnotation, null, true);\n }\n }\n if (annotation.shapeAnnotation && annotation.shapeAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n annotation.shapeAnnotation = this.checkAnnotationCollections(annotObject, annotation.shapeAnnotation, pageIndex);\n }\n annotation.shapeAnnotation = this.checkAnnotationCommentsCollections(annotation.shapeAnnotation, pageIndex);\n if (annotation.shapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, annotation.shapeAnnotation, null, null, null, true);\n }\n }\n if (annotation.measureShapeAnnotation && annotation.measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n // eslint-disable-next-line max-len\n annotation.measureShapeAnnotation = this.checkAnnotationCollections(annotObject, annotation.measureShapeAnnotation, pageIndex);\n }\n annotation.measureShapeAnnotation = this.checkAnnotationCommentsCollections(annotation.measureShapeAnnotation, pageIndex);\n if (annotation.measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.renderAnnotations(pageIndex, null, annotation.measureShapeAnnotation, null, null, true);\n }\n }\n if (annotation.stampAnnotations && annotation.stampAnnotations.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n annotation.stampAnnotations = this.checkAnnotationCollections(annotObject, annotation.stampAnnotations, pageIndex);\n }\n annotation.stampAnnotations = this.checkAnnotationCommentsCollections(annotation.stampAnnotations, pageIndex);\n if (annotation.stampAnnotations.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.renderStampAnnotations(annotation.stampAnnotations, pageIndex, null, true);\n }\n }\n if (annotation.stickyNotesAnnotation && annotation.stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n // eslint-disable-next-line max-len\n annotation.stickyNotesAnnotation = this.checkAnnotationCollections(annotObject, annotation.stickyNotesAnnotation, pageIndex);\n }\n annotation.stickyNotesAnnotation = this.checkAnnotationCommentsCollections(annotation.stickyNotesAnnotation, pageIndex);\n if (annotation.stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.renderStickyNotesAnnotations(annotation.stickyNotesAnnotation, pageIndex);\n }\n }\n if (annotation.freeTextAnnotation && annotation.freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n annotation.freeTextAnnotation = this.checkAnnotationCollections(annotObject, annotation.freeTextAnnotation, pageIndex);\n }\n annotation.freeTextAnnotation = this.checkAnnotationCommentsCollections(annotation.freeTextAnnotation, pageIndex);\n if (annotation.freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.renderFreeTextAnnotations(annotation.freeTextAnnotation, pageIndex, true);\n }\n }\n if (annotation.signatureAnnotation && annotation.signatureAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n var annotObject = JSON.parse(storeObject);\n if (annotObject) {\n annotation.signatureAnnotation = this.checkSignatureCollections(annotObject, annotation.signatureAnnotation, pageIndex);\n }\n this.signatureModule.renderExistingSignature(annotation.signatureAnnotation, pageIndex, true);\n }\n if (annotation.signatureInkAnnotation && annotation.signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.isStorageExceed) {\n storeObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n // eslint-disable-next-line max-len\n annotation.signatureInkAnnotation = this.checkAnnotationCollections(annotObject, annotation.signatureInkAnnotation, pageIndex);\n }\n annotation.signatureInkAnnotation = this.checkAnnotationCommentsCollections(annotation.signatureInkAnnotation, pageIndex);\n if (annotation.signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.inkAnnotationModule.renderExistingInkSignature(annotation.signatureInkAnnotation, pageIndex, true);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkSignatureCollections = function (annotationCollection, annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[parseInt(a.toString(), 10)].pageIndex === pageNumber) {\n pageCollections = annotationCollection[parseInt(a.toString(), 10)].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (pageCollections[parseInt(i.toString(), 10)].signatureName === annotation[parseInt(j.toString(), 10)].SignatureName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationCollections = function (annotationCollection, annotation, pageNumber) {\n // eslint-disable-next-line\n var pageCollections = null;\n for (var a = 0; a < annotationCollection.length; a++) {\n if (annotationCollection[parseInt(a.toString(), 10)].pageIndex === pageNumber) {\n pageCollections = annotationCollection[parseInt(a.toString(), 10)].annotations;\n }\n }\n if (pageCollections) {\n for (var i = 0; i < pageCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (pageCollections[parseInt(i.toString(), 10)].annotName === annotation[parseInt(j.toString(), 10)].AnnotName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n pageCollections = null;\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationCommentsCollections = function (annotation, pageNumber) {\n if (this.annotationComments) {\n // eslint-disable-next-line\n var annotationCollections = this.annotationComments[pageNumber];\n annotationCollections = this.selectAnnotationCollections(annotationCollections);\n if (annotationCollections) {\n for (var i = 0; i < annotationCollections.length; i++) {\n for (var j = 0; j < annotation.length; j++) {\n if (annotationCollections[parseInt(i.toString(), 10)].AnnotName === annotation[parseInt(j.toString(), 10)].AnnotName) {\n annotation.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n annotationCollections = null;\n }\n return annotation;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.selectAnnotationCollections = function (pageAnnotations) {\n // eslint-disable-next-line\n var pageCollections = [];\n if (pageAnnotations) {\n if (pageAnnotations.textMarkupAnnotation && pageAnnotations.textMarkupAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.textMarkupAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.textMarkupAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.shapeAnnotation && pageAnnotations.shapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.shapeAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.shapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.measureShapeAnnotation && pageAnnotations.measureShapeAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.measureShapeAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.measureShapeAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.stampAnnotations && pageAnnotations.stampAnnotations.length !== 0) {\n for (var i = 0; i < pageAnnotations.stampAnnotations.length; i++) {\n pageCollections.push(pageAnnotations.stampAnnotations[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.stickyNotesAnnotation && pageAnnotations.stickyNotesAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.stickyNotesAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.stickyNotesAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.freeTextAnnotation && pageAnnotations.freeTextAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.freeTextAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.freeTextAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n if (pageAnnotations.signatureInkAnnotation && pageAnnotations.signatureInkAnnotation.length !== 0) {\n for (var i = 0; i < pageAnnotations.signatureInkAnnotation.length; i++) {\n pageCollections.push(pageAnnotations.signatureInkAnnotation[parseInt(i.toString(), 10)]);\n }\n }\n }\n return pageCollections;\n };\n PdfViewerBase.prototype.saveImportedAnnotations = function () {\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureShapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n // eslint-disable-next-line\n var inkObject = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (this.isStorageExceed) {\n textMarkupObject = this.annotationStorage[this.documentId + '_annotations_textMarkup'];\n shapeObject = this.annotationStorage[this.documentId + '_annotations_shape'];\n measureShapeObject = this.annotationStorage[this.documentId + '_annotations_shape_measure'];\n stampObject = this.annotationStorage[this.documentId + '_annotations_stamp'];\n stickyObject = this.annotationStorage[this.documentId + '_annotations_sticky'];\n freeTextObject = this.annotationStorage[this.documentId + '_annotations_freetext'];\n inkObject = this.annotationStorage[this.documentId + '_annotations_ink'];\n signatureObject = this.annotationStorage[this.documentId + '_annotations_sign'];\n }\n // eslint-disable-next-line max-len\n this.downloadCollections = { textMarkupObject: textMarkupObject, shapeObject: shapeObject, measureShapeObject: measureShapeObject, stampObject: stampObject, stickyObject: stickyObject, freeTextObject: freeTextObject, inkObject: inkObject, signatureObject: signatureObject };\n if (this.documentAnnotationCollections) {\n for (var i = 0; i < this.pageCount; i++) {\n if (this.documentAnnotationCollections[parseInt(i.toString(), 10)]) {\n // eslint-disable-next-line\n var pageCollections = cloneObject(this.documentAnnotationCollections[i]);\n pageCollections = this.checkDocumentCollectionData(i, pageCollections);\n this.savePageAnnotations(pageCollections, i);\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.savePageAnnotations = function (annotation, pageIndex) {\n if (annotation.textMarkupAnnotation.length !== 0) {\n for (var s = 0; s < annotation.textMarkupAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveImportedTextMarkupAnnotations(annotation.textMarkupAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.shapeAnnotation.length !== 0) {\n for (var s = 0; s < annotation.shapeAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.shapeAnnotationModule.saveImportedShapeAnnotations(annotation.shapeAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.measureShapeAnnotation.length !== 0) {\n for (var s = 0; s < annotation.measureShapeAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.measureAnnotationModule.saveImportedMeasureAnnotations(annotation.measureShapeAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.stampAnnotations.length !== 0) {\n for (var s = 0; s < annotation.stampAnnotations.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.saveImportedStampAnnotations(annotation.stampAnnotations[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.stickyNotesAnnotation.length !== 0) {\n for (var s = 0; s < annotation.stickyNotesAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveImportedStickyNotesAnnotations(annotation.stickyNotesAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.freeTextAnnotation.length !== 0) {\n for (var s = 0; s < annotation.freeTextAnnotation.length; s++) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.saveImportedFreeTextAnnotations(annotation.freeTextAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n if (annotation.signatureInkAnnotation.length !== 0) {\n for (var s = 0; s < annotation.signatureInkAnnotation.length; s++) {\n this.pdfViewer.annotationModule.inkAnnotationModule.saveImportedInkAnnotation(annotation.signatureInkAnnotation[parseInt(s.toString(), 10)], pageIndex);\n }\n }\n };\n PdfViewerBase.prototype.updateDocumentAnnotationCollections = function () {\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n if (this.downloadCollections) {\n if (this.isStorageExceed) {\n this.annotationStorage[this.documentId + '_annotations_textMarkup'] = this.downloadCollections.textMarkupObject;\n this.annotationStorage[this.documentId + '_annotations_shape'] = this.downloadCollections.shapeObject;\n this.annotationStorage[this.documentId + '_annotations_shape_measure'] = this.downloadCollections.measureShapeObject;\n this.annotationStorage[this.documentId + '_annotations_stamp'] = this.downloadCollections.stampObject;\n this.annotationStorage[this.documentId + '_annotations_sticky'] = this.downloadCollections.stickyObject;\n this.annotationStorage[this.documentId + '_annotations_freetext'] = this.downloadCollections.freeTextObject;\n this.annotationStorage[this.documentId + '_annotations_ink'] = this.downloadCollections.inkObject;\n }\n else {\n if (this.downloadCollections.textMarkupObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_textMarkup', this.downloadCollections.textMarkupObject);\n }\n if (this.downloadCollections.shapeObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_shape', this.downloadCollections.shapeObject);\n }\n if (this.downloadCollections.measureShapeObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_shape_measure', this.downloadCollections.measureShapeObject);\n }\n if (this.downloadCollections.stampObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_stamp', this.downloadCollections.stampObject);\n }\n if (this.downloadCollections.stickyObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_sticky', this.downloadCollections.stickyObject);\n }\n if (this.downloadCollections.freeTextObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_freetext', this.downloadCollections.freeTextObject);\n }\n if (this.downloadCollections.inkObject) {\n window.sessionStorage.setItem(this.documentId + '_annotations_ink', this.downloadCollections.inkObject);\n }\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAnnotationJsonData = function () {\n // eslint-disable-next-line\n var annotationCollection = {};\n var textMarkupAnnotationCollection;\n var shapeAnnotations;\n var calibrateAnnotations;\n var stampAnnotationCollection;\n var stickyAnnotationCollection;\n var freeTextAnnotationCollection;\n var signaturCollection;\n var signaturInkCollection;\n this.saveImportedAnnotations();\n if (this.isTextMarkupAnnotationModule()) {\n this.isJsonExported = true;\n // eslint-disable-next-line max-len\n textMarkupAnnotationCollection = this.pdfViewer.annotationModule.textMarkupAnnotationModule.saveTextMarkupAnnotations();\n }\n if (this.isShapeAnnotationModule()) {\n this.isJsonExported = true;\n // eslint-disable-next-line max-len\n shapeAnnotations = this.pdfViewer.annotationModule.shapeAnnotationModule.saveShapeAnnotations();\n }\n if (this.isCalibrateAnnotationModule()) {\n this.isJsonExported = true;\n // eslint-disable-next-line max-len\n calibrateAnnotations = this.pdfViewer.annotationModule.measureAnnotationModule.saveMeasureShapeAnnotations();\n }\n if (this.isStampAnnotationModule()) {\n // eslint-disable-next-line max-len\n stampAnnotationCollection = this.pdfViewer.annotationModule.stampAnnotationModule.saveStampAnnotations();\n }\n if (this.isCommentAnnotationModule()) {\n // eslint-disable-next-line max-len\n stickyAnnotationCollection = this.pdfViewer.annotationModule.stickyNotesAnnotationModule.saveStickyAnnotations();\n }\n if (this.isFreeTextAnnotationModule()) {\n // eslint-disable-next-line max-len\n freeTextAnnotationCollection = this.pdfViewer.annotationModule.freeTextAnnotationModule.saveFreeTextAnnotations();\n }\n if (this.isInkAnnotationModule()) {\n // eslint-disable-next-line\n signaturInkCollection = this.pdfViewer.annotationModule.inkAnnotationModule.saveInkSignature();\n }\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n signaturCollection = this.signatureModule.saveSignature();\n }\n else {\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pageCount; j++) {\n annotations[parseInt(j.toString(), 10)] = [];\n }\n signaturCollection = JSON.stringify(annotations);\n }\n for (var s = 0; s < this.pageCount; s++) {\n // eslint-disable-next-line max-len\n var annotation = {\n textMarkupAnnotation: JSON.parse(textMarkupAnnotationCollection)[parseInt(s.toString(), 10)], shapeAnnotation: JSON.parse(shapeAnnotations)[parseInt(s.toString(), 10)],\n measureShapeAnnotation: JSON.parse(calibrateAnnotations)[parseInt(s.toString(), 10)], stampAnnotations: JSON.parse(stampAnnotationCollection)[parseInt(s.toString(), 10)],\n // eslint-disable-next-line max-len\n stickyNotesAnnotation: JSON.parse(stickyAnnotationCollection)[parseInt(s.toString(), 10)], freeTextAnnotation: JSON.parse(freeTextAnnotationCollection)[parseInt(s.toString(), 10)], signatureAnnotation: JSON.parse(signaturCollection)[parseInt(s.toString(), 10)], signatureInkAnnotation: JSON.parse(signaturInkCollection)[parseInt(s.toString(), 10)]\n };\n annotationCollection[parseInt(s.toString(), 10)] = annotation;\n }\n return JSON.stringify(annotationCollection);\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.combineImportedData = function (excistingImportAnnotation, newlyImportAnnotation) {\n for (var i = 0; i < this.pageCount; i++) {\n if (newlyImportAnnotation[parseInt(i.toString(), 10)]) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)]) {\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations && newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations, newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations = excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations = newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation;\n }\n }\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation && newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n if (excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation) {\n // eslint-disable-next-line max-len\n newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation = this.checkImportedData(excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation, newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation, i);\n if (newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation.length !== 0) {\n // eslint-disable-next-line max-len\n excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation = excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation.concat(newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation);\n }\n }\n else {\n excistingImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation = newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation;\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].textMarkupAnnotation, shapeAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].shapeAnnotation,\n // eslint-disable-next-line max-len\n measureShapeAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].measureShapeAnnotation, stampAnnotations: newlyImportAnnotation[parseInt(i.toString(), 10)].stampAnnotations,\n // eslint-disable-next-line max-len\n stickyNotesAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].stickyNotesAnnotation, freeTextAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].freeTextAnnotation,\n signatureInkAnnotation: newlyImportAnnotation[parseInt(i.toString(), 10)].signatureInkAnnotation\n };\n excistingImportAnnotation[parseInt(i.toString(), 10)] = annotation;\n }\n }\n }\n return excistingImportAnnotation;\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n PdfViewerBase.prototype.updateExportItem = function () {\n // eslint-disable-next-line\n var shapeObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape');\n // eslint-disable-next-line\n var measureObject = window.sessionStorage.getItem(this.documentId + '_annotations_shape_measure');\n // eslint-disable-next-line\n var stampObject = window.sessionStorage.getItem(this.documentId + '_annotations_stamp');\n // eslint-disable-next-line\n var stickyObject = window.sessionStorage.getItem(this.documentId + '_annotations_sticky');\n // eslint-disable-next-line\n var textMarkupObject = window.sessionStorage.getItem(this.documentId + '_annotations_textMarkup');\n // eslint-disable-next-line\n var freeTextObject = window.sessionStorage.getItem(this.documentId + '_annotations_freetext');\n var isSignatureEditable = false;\n // eslint-disable-next-line\n var inkAnnotationObjct = window.sessionStorage.getItem(this.documentId + '_annotations_ink');\n if (this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line\n var signatureObject = window.sessionStorage.getItem(this.documentId + '_annotations_sign');\n if (signatureObject) {\n isSignatureEditable = true;\n }\n }\n // eslint-disable-next-line max-len\n if (shapeObject || measureObject || stampObject || stickyObject || textMarkupObject || freeTextObject || this.isImportAction || this.isStorageExceed || isSignatureEditable || inkAnnotationObjct) {\n return true;\n }\n else {\n return false;\n }\n };\n PdfViewerBase.prototype.isFreeTextAnnotation = function (annotations) {\n var resut = false;\n if (annotations && annotations.length > 0) {\n resut = annotations.some(function (s) { return s.shapeAnnotationType === 'FreeText' && s.subject === 'Text Box'; });\n }\n return resut;\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkImportedData = function (existingCollection, newCollection, pageIndex) {\n for (var i = 0; i < existingCollection.length; i++) {\n for (var j = 0; j < newCollection.length; j++) {\n if (existingCollection[parseInt(i.toString(), 10)].AnnotName === newCollection[parseInt(j.toString(), 10)].AnnotName) {\n var len = this.pdfViewer.annotationCollection.length;\n for (var x = 0; x < len; x++) {\n if (this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].annotationId === newCollection[parseInt(j.toString(), 10)].AnnotName) {\n // To update the comment panel values in a collections while importing the annotation with the same name. (EJ2-62092)\n this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].comments = this.pdfViewer.annotationModule.getAnnotationComments(newCollection[parseInt(j.toString(), 10)].Comments, newCollection[parseInt(j.toString(), 10)], newCollection[parseInt(j.toString(), 10)].Author);\n this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].review = { state: newCollection[parseInt(j.toString(), 10)].State, stateModel: newCollection[parseInt(j.toString(), 10)].StateModel, modifiedDate: newCollection[parseInt(j.toString(), 10)].ModifiedDate, author: newCollection[parseInt(j.toString(), 10)].Author };\n this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)].note = newCollection[parseInt(j.toString(), 10)].Note;\n var annot = this.pdfViewer.annotationCollection[parseInt(x.toString(), 10)];\n if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"shape\" && this.pdfViewer.annotationModule.shapeAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].shapeAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_shape\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"textMarkup\" && this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].textMarkupAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_textMarkup\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"shape_measure\" && this.pdfViewer.annotationModule.measureAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].measureShapeAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_shape_measure\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"stamp\" && this.pdfViewer.annotationModule.stampAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].stampAnnotations[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_stamp\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"freeText\" && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].freeTextAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_freetext\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"ink\" && this.pdfViewer.annotationModule.inkAnnotationModule) {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].signatureInkAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_ink\");\n }\n else if (existingCollection[parseInt(i.toString(), 10)].AnnotType === \"sticky\") {\n this.documentAnnotationCollections[parseInt(pageIndex.toString(), 10)].stickyNotesAnnotation[parseInt(i.toString(), 10)] = newCollection[parseInt(j.toString(), 10)];\n this.updateAnnotationsInSessionStorage(newCollection[parseInt(j.toString(), 10)], annot, \"_annotations_sticky\");\n }\n break;\n }\n }\n this.pdfViewer.annotationModule.stickyNotesAnnotationModule.createCommentControlPanel(newCollection[parseInt(j.toString(), 10)], (pageIndex + 1), null, null, true);\n newCollection.splice(j, 1);\n j = j - 1;\n }\n }\n }\n if (this.annotationComments) {\n // eslint-disable-next-line\n var annotationCollections = this.annotationComments[pageIndex];\n annotationCollections = this.selectAnnotationCollections(annotationCollections);\n if (annotationCollections) {\n for (var i = 0; i < annotationCollections.length; i++) {\n for (var j = 0; j < newCollection.length; j++) {\n if (annotationCollections[parseInt(i.toString(), 10)].AnnotName === newCollection[parseInt(j.toString(), 10)].AnnotName) {\n newCollection.splice(j, 1);\n j = j - 1;\n }\n }\n }\n }\n }\n return newCollection;\n };\n // To update the comment panel values in a session storage while importing the annotation with the same name. (EJ2-62092)\n PdfViewerBase.prototype.updateAnnotationsInSessionStorage = function (newCollection, annot, type) {\n var annotation = window.sessionStorage.getItem(this.documentId + type);\n var annotObject = JSON.parse(annotation);\n if (annotObject) {\n for (var b = 0; b < annotObject.length; b++) {\n if (annotObject[parseInt(b.toString(), 10)].annotations) {\n for (var z = 0; z < annotObject[parseInt(b.toString(), 10)].annotations.length; z++) {\n if (annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].annotName === newCollection.AnnotName) {\n annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].comments = annot.comments;\n annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].review = annot.review;\n annotObject[parseInt(b.toString(), 10)].annotations[parseInt(z.toString(), 10)].note = annot.note;\n break;\n }\n }\n }\n }\n window.sessionStorage.setItem(this.documentId + type, JSON.stringify(annotObject));\n }\n };\n /**\n * @param points\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.checkAnnotationWidth = function (points) {\n var width = 0;\n var height = 0;\n var minWidth;\n var maxWidth;\n var minHeight;\n var maxHeight;\n for (var i = 0; i < points.length; i++) {\n if (!minWidth) {\n minWidth = points[parseInt(i.toString(), 10)].x;\n maxWidth = points[parseInt(i.toString(), 10)].x;\n minHeight = points[parseInt(i.toString(), 10)].y;\n maxHeight = points[parseInt(i.toString(), 10)].y;\n }\n else {\n if (minWidth > points[parseInt(i.toString(), 10)].x) {\n minWidth = points[parseInt(i.toString(), 10)].x;\n }\n else if (maxWidth < points[parseInt(i.toString(), 10)].x) {\n maxWidth = points[parseInt(i.toString(), 10)].x;\n }\n if (minHeight > points[parseInt(i.toString(), 10)].y) {\n minHeight = points[parseInt(i.toString(), 10)].y;\n }\n else if (maxHeight < points[parseInt(i.toString(), 10)].y) {\n maxHeight = points[parseInt(i.toString(), 10)].y;\n }\n }\n }\n width = maxWidth - minWidth;\n height = maxHeight - minHeight;\n return { width: width, height: height };\n };\n PdfViewerBase.prototype.deleteAnnotations = function () {\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotations = [];\n this.pdfViewer.zIndexTable = [];\n this.pdfViewer.annotationCollection = [];\n this.pdfViewer.signatureCollection = [];\n // eslint-disable-next-line\n var annotationCollection = this.createAnnotationsCollection();\n this.annotationComments = annotationCollection;\n this.documentAnnotationCollections = annotationCollection;\n this.annotationRenderredList = [];\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape');\n window.sessionStorage.removeItem(this.documentId + '_annotations_shape_measure');\n window.sessionStorage.removeItem(this.documentId + '_annotations_stamp');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sticky');\n window.sessionStorage.removeItem(this.documentId + '_annotations_textMarkup');\n window.sessionStorage.removeItem(this.documentId + '_annotations_freetext');\n window.sessionStorage.removeItem(this.documentId + '_annotations_sign');\n window.sessionStorage.removeItem(this.documentId + '_annotations_ink');\n for (var i = 0; i < this.pageCount; i++) {\n this.pdfViewer.annotationModule.renderAnnotations(i, null, null, null);\n this.pdfViewer.renderDrawing(undefined, i);\n this.pdfViewer.clearSelection(i);\n var accordionContent = document.getElementById(this.pdfViewer.element.id + '_accordionContainer' + (i + 1));\n if (accordionContent) {\n accordionContent.remove();\n }\n // eslint-disable-next-line max-len\n var accordionContentContainer = document.getElementById(this.pdfViewer.element.id + '_accordionContentContainer');\n if (accordionContentContainer) {\n if (accordionContentContainer.childElementCount === 0) {\n accordionContentContainer.style.display = 'none';\n if (document.getElementById(this.pdfViewer.element.id + '_commentsPanelText')) {\n // eslint-disable-next-line max-len\n this.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], false);\n document.getElementById(this.pdfViewer.element.id + '_commentsPanelText').style.display = 'block';\n }\n }\n }\n }\n this.isImportedAnnotation = false;\n this.isImportAction = false;\n this.importedAnnotation = [];\n this.annotationPageList = [];\n this.pdfViewer.annotationModule.freeTextAnnotationModule.freeTextPageNumbers = [];\n this.pdfViewer.annotationModule.stampAnnotationModule.stampPageNumber = [];\n this.pdfViewer.annotation.inkAnnotationModule.inkAnnotationindex = [];\n this.isAnnotationCollectionRemoved = true;\n }\n };\n /**\n * @param pageNumber\n * @param isObject\n * @param pageNumber\n * @param isObject\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.createAnnotationsCollection = function (pageNumber, isObject) {\n // eslint-disable-next-line\n var annotationCollectionList = [];\n if (!isObject) {\n for (var i = 0; i < this.pageCount; i++) {\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: [], shapeAnnotation: [], measureShapeAnnotation: [], stampAnnotations: [], stickyNotesAnnotation: [], freeTextAnnotation: [], signatureAnnotation: [], signatureInkAnnotation: []\n };\n annotationCollectionList.push(annotation);\n }\n }\n else {\n annotationCollectionList = {};\n var annotation = {\n // eslint-disable-next-line max-len\n textMarkupAnnotation: [], shapeAnnotation: [], measureShapeAnnotation: [], stampAnnotations: [], stickyNotesAnnotation: [], freeTextAnnotation: [], signatureAnnotation: [], signatureInkAnnotation: []\n };\n annotationCollectionList[parseInt(pageNumber.toString(), 10)] = annotation;\n }\n return annotationCollectionList;\n };\n /**\n * @param importAnnotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.addAnnotation = function (importAnnotation) {\n // eslint-disable-next-line\n var pdfAnnotation = {};\n // eslint-disable-next-line\n var documentCollections;\n if (importAnnotation) {\n var isAnnotationObject = false;\n var annotationCount = 1;\n if (importAnnotation.shapeAnnotationType || importAnnotation.author) {\n isAnnotationObject = true;\n documentCollections = this.createAnnotationsCollection(importAnnotation.pageNumber, true);\n }\n else {\n if (importAnnotation.length) {\n annotationCount = importAnnotation.length;\n documentCollections = this.createAnnotationsCollection();\n }\n else {\n isAnnotationObject = true;\n documentCollections = this.createAnnotationsCollection(importAnnotation.pageNumber, true);\n }\n }\n for (var a = 0; a < annotationCount; a++) {\n // eslint-disable-next-line\n var annotation = void 0;\n if (isAnnotationObject) {\n annotation = importAnnotation;\n }\n else {\n annotation = importAnnotation[parseInt(a.toString(), 10)];\n }\n // eslint-disable-next-line\n var newAnnotation = {};\n newAnnotation.ShapeAnnotationType = annotation.shapeAnnotationType;\n newAnnotation.AnnotationAddMode = annotation.annotationAddMode;\n newAnnotation.Author = annotation.author;\n newAnnotation.AnnotationSelectorSettings = annotation.annotationSelectorSettings;\n newAnnotation.AnnotationSettings = annotation.annotationSettings;\n newAnnotation.PageNumber = annotation.pageNumber;\n newAnnotation.ModifiedDate = annotation.modifiedDate;\n newAnnotation.Subject = annotation.subject;\n newAnnotation.Note = annotation.note;\n newAnnotation.AnnotName = annotation.annotationId;\n newAnnotation.IsCommentLock = annotation.isCommentLock;\n newAnnotation.Comments = annotation.comments;\n if (annotation.comments && annotation.comments.length > 0) {\n // eslint-disable-next-line\n var comments = [];\n for (var i = 0; i < annotation.comments.length; i++) {\n comments.push(this.updateComments(annotation, annotation.comments[parseInt(i.toString(), 10)]));\n }\n newAnnotation.Comments = comments;\n }\n if (annotation.review) {\n newAnnotation.State = annotation.review.state;\n newAnnotation.StateModel = annotation.review.stateModel;\n }\n newAnnotation.CustomData = annotation.customData;\n newAnnotation.Opacity = annotation.opacity;\n if (annotation.shapeAnnotationType === 'textMarkup') {\n newAnnotation.AnnotType = 'textMarkup';\n newAnnotation.Color = annotation.color;\n newAnnotation.IsMultiSelect = annotation.isMultiSelect;\n newAnnotation.TextMarkupAnnotationType = annotation.textMarkupAnnotationType;\n newAnnotation.TextMarkupContent = annotation.textMarkupContent;\n newAnnotation.TextMarkupStartIndex = annotation.textMarkupStartIndex;\n newAnnotation.TextMarkupEndIndex = annotation.textMarkupEndIndex;\n if (annotation.rect) {\n newAnnotation.Rect = this.convertBounds(annotation.rect, true);\n }\n if (annotation.bounds && annotation.bounds.length >= 1) {\n // eslint-disable-next-line\n var bounds = new Array();\n for (var i = 0; i < annotation.bounds.length; i++) {\n bounds.push(this.convertBounds(annotation.bounds[parseInt(i.toString(), 10)]));\n }\n newAnnotation.Bounds = bounds;\n }\n documentCollections[annotation.pageNumber].textMarkupAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'sticky') {\n newAnnotation.AnnotType = 'sticky';\n newAnnotation.Icon = 'Comment';\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.Color = annotation.color;\n documentCollections[annotation.pageNumber].stickyNotesAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'FreeText') {\n newAnnotation.AnnotType = 'freeText';\n newAnnotation.Name = annotation.annotationId;\n newAnnotation.MarkupText = annotation.dynamicText;\n newAnnotation.Text = annotation.dynamicText;\n newAnnotation.Note = annotation.dynamicText;\n newAnnotation.TextAlign = annotation.textAlign;\n newAnnotation.Thickness = annotation.thicknes;\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.FontColor = annotation.fontColor;\n newAnnotation.FontSize = annotation.fontSize;\n newAnnotation.FontFamily = annotation.fontFamily;\n newAnnotation.Rotate = annotation.rotateAngle;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n // eslint-disable-next-line max-len\n newAnnotation.Font = { 'Name': annotation.fontFamily, 'Size': annotation.fontSize, 'Bold': annotation.font.isBold, 'Italic': annotation.font.isItalic, 'Strikeout': annotation.font.isStrikeout, 'Underline': annotation.font.isUnderline };\n documentCollections[annotation.pageNumber].freeTextAnnotation.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'stamp') {\n newAnnotation.AnnotType = 'stamp';\n newAnnotation.Icon = annotation.icon;\n newAnnotation.isDynamic = false;\n newAnnotation.Rect = this.convertBounds(annotation.bounds, false, true);\n newAnnotation.RotateAngle = annotation.rotateAngle;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.StampAnnotationType = annotation.stampAnnotationType;\n newAnnotation.CreationDate = annotation.creationDate;\n if (annotation.stampAnnotationType === 'image') {\n // eslint-disable-next-line\n var apperarance = [];\n // eslint-disable-next-line\n var imageData = { 'imagedata': annotation.stampAnnotationPath };\n apperarance.push(imageData);\n newAnnotation.Apperarance = apperarance;\n }\n if (annotation.isDynamicStamp) {\n newAnnotation.IsDynamic = true;\n newAnnotation.StrokeColor = annotation.stampFillcolor;\n // eslint-disable-next-line\n var apperarance = [];\n // eslint-disable-next-line\n var imageData = { 'type': 'string', 'text': annotation.dynamicText, 'currentFontname': '95b303ab-d397-438a-83af-e2ff8a9900f1', 'baseFontName': 'Helvetica-BoldOblique', 'fontSize': 10, 'isImport': true };\n apperarance.push(imageData);\n newAnnotation.Apperarance = apperarance;\n }\n documentCollections[annotation.pageNumber].stampAnnotations.push(newAnnotation);\n }\n else if (annotation.shapeAnnotationType === 'Ink' || annotation.shapeAnnotationType === 'Signature') {\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.Thickness = annotation.thickness;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.PathData = annotation.data;\n newAnnotation.pageIndex = annotation.pageNumber;\n if (annotation.shapeAnnotationType === 'Ink') {\n newAnnotation.AnnotType = 'Ink';\n newAnnotation.IsPathData = true;\n documentCollections[annotation.pageNumber].signatureInkAnnotation.push(newAnnotation);\n }\n if (annotation.shapeAnnotationType === 'Signature') {\n newAnnotation.AnnotType = 'Signature';\n newAnnotation.SignatureName = annotation.annotationId;\n newAnnotation.IsSignature = true;\n documentCollections[annotation.pageNumber].signatureAnnotation.push(newAnnotation);\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (annotation.shapeAnnotationType === 'Line' || annotation.shapeAnnotationType === 'LineWidthArrowHead' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Polygon' || annotation.shapeAnnotationType === 'Polyline' || annotation.shapeAnnotationType === 'Circle' || annotation.shapeAnnotationType === 'Oval' || annotation.shapeAnnotationType === 'Rectangle' || annotation.shapeAnnotationType === 'Square' || annotation.shapeAnnotationType === 'Ellipse') {\n newAnnotation.AnnotType = 'shape';\n newAnnotation.StrokeColor = annotation.strokeColor;\n newAnnotation.FillColor = annotation.fillColor;\n newAnnotation.Thickness = annotation.thickness;\n newAnnotation.BorderStyle = annotation.borderStyle;\n newAnnotation.BorderDashArray = annotation.borderDashArray;\n newAnnotation.RotateAngle = annotation.rotateAngle;\n newAnnotation.IsCloudShape = annotation.isCloudShape;\n newAnnotation.CloudIntensity = annotation.cloudIntensity;\n newAnnotation.RectangleDifference = annotation.rectangleDifference;\n newAnnotation.LineHeadStart = annotation.lineHeadStart;\n newAnnotation.LineHeadEnd = annotation.lineHeadEnd;\n newAnnotation.IsLocked = annotation.isLocked;\n newAnnotation.EnableShapeLabel = annotation.enableShapeLabel;\n newAnnotation.LabelContent = annotation.labelContent;\n newAnnotation.LabelFillColor = annotation.labelFillColor;\n newAnnotation.LabelBorderColor = annotation.labelBorderColor;\n newAnnotation.FontColor = annotation.fontColor;\n newAnnotation.FontSize = annotation.fontSize;\n newAnnotation.LabelBounds = this.convertBounds(annotation.labelBounds);\n newAnnotation.LabelSettings = annotation.labelSettings;\n newAnnotation.Bounds = this.convertBounds(annotation.bounds);\n newAnnotation.LeaderLength = annotation.leaderLength;\n newAnnotation.LeaderLineExtenstion = annotation.leaderLineExtension;\n if (annotation.vertexPoints && annotation.vertexPoints.length >= 1) {\n // eslint-disable-next-line\n var points = new Array();\n for (var i = 0; i < annotation.vertexPoints.length; i++) {\n points.push(this.convertVertexPoints(annotation.vertexPoints[parseInt(i.toString(), 10)]));\n }\n newAnnotation.VertexPoints = points;\n }\n newAnnotation.EnableShapeLabel = annotation.enableShapeLabel;\n // eslint-disable-next-line max-len\n if (annotation.subject === 'Distance calculation' || annotation.subject === 'Perimeter calculation' || annotation.subject === 'Area calculation' || annotation.subject === 'Radius calculation' || annotation.subject === 'Volume calculation') {\n newAnnotation.AnnotType = 'shape_measure';\n // eslint-disable-next-line\n var calibrate = annotation.calibrate;\n if (calibrate) {\n // eslint-disable-next-line\n newAnnotation.Calibrate = {\n 'Ratio': calibrate.ratio, 'X': [{ 'Unit': calibrate.x[0].unit, 'ConversionFactor': calibrate.x[0].conversionFactor, 'FractionalType': calibrate.x[0].fractionalType, 'Denominator': calibrate.x[0].denominator, 'FormatDenominator': calibrate.x[0].formatDenominator }],\n // eslint-disable-next-line\n 'Distance': [{ 'Unit': calibrate.distance[0].unit, 'ConversionFactor': calibrate.distance[0].conversionFactor, 'FractionalType': calibrate.distance[0].fractionalType, 'Denominator': calibrate.distance[0].denominator, 'FormatDenominator': calibrate.distance[0].formatDenominator }],\n // eslint-disable-next-line\n 'Area': [{ 'Unit': calibrate.area[0].unit, 'ConversionFactor': calibrate.area[0].conversionFactor, 'FractionalType': calibrate.area[0].fractionalType, 'Denominator': calibrate.area[0].denominator, 'FormatDenominator': calibrate.area[0].formatDenominator }],\n // eslint-disable-next-line\n 'Angle': null, 'Volume': null, 'TargetUnitConversion': calibrate.targetUnitConversion, 'Depth': calibrate.depth\n };\n }\n newAnnotation.Indent = annotation.indent;\n newAnnotation.Caption = annotation.caption;\n newAnnotation.CaptionPosition = annotation.captionPosition;\n newAnnotation.LeaderLineExtension = annotation.leaderLineExtension;\n newAnnotation.LeaderLength = annotation.leaderLength;\n newAnnotation.LeaderLineOffset = annotation.leaderLineOffset;\n documentCollections[annotation.pageNumber].measureShapeAnnotation.push(newAnnotation);\n }\n else {\n documentCollections[annotation.pageNumber].shapeAnnotation.push(newAnnotation);\n }\n }\n }\n }\n pdfAnnotation.pdfAnnotation = documentCollections;\n this.pdfViewer.importAnnotation(pdfAnnotation);\n }\n };\n /**\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.convertBounds = function (bounds, isRect, isStamp) {\n if (bounds) {\n if (isRect) {\n var left = bounds.left ? bounds.left : bounds.Left ? bounds.Left : 0;\n var right = bounds.right ? bounds.right : bounds.Right ? bounds.Right : 0;\n var bottom = bounds.bottom ? bounds.bottom : bounds.Bottom ? bounds.Bottom : 0;\n var top_5 = bounds.top ? bounds.top : bounds.Top ? bounds.Top : 0;\n return { left: left, right: right, bottom: bottom, top: top_5 };\n }\n else {\n var x = bounds.x ? bounds.x : bounds.left ? bounds.left : bounds.Left ? bounds.Left : 0;\n var y = bounds.y ? bounds.y : bounds.top ? bounds.top : bounds.Top ? bounds.Top : 0;\n var width = bounds.width ? bounds.width : bounds.Width ? bounds.Width : 0;\n var height = bounds.height ? bounds.height : bounds.Height ? bounds.Height : 0;\n if (isStamp) {\n return { X: this.ConvertPixelToPoint(x), Y: this.ConvertPixelToPoint(y), Left: this.ConvertPixelToPoint(x), Top: this.ConvertPixelToPoint(y), Height: this.ConvertPixelToPoint(height), Width: this.ConvertPixelToPoint(width) };\n }\n else {\n return { X: x, Y: y, Left: x, Top: y, Height: height, Width: width };\n }\n }\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.ConvertPixelToPoint = function (number) {\n return (number * (72 / 96));\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.convertVertexPoints = function (points) {\n if (points) {\n var x = points.x ? points.x : points.X ? points.X : 0;\n var y = points.y ? points.y : points.Y ? points.Y : 0;\n return { X: x, Y: y, Left: x, Top: y };\n }\n };\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateComments = function (annotation, comments) {\n if (annotation && comments) {\n // eslint-disable-next-line\n var newAnnotation = {};\n newAnnotation.ShapeAnnotationType = annotation.shapeAnnotationType;\n newAnnotation.Author = comments.author;\n newAnnotation.AnnotationSelectorSettings = annotation.annotationSelectorSettings;\n newAnnotation.AnnotationSettings = annotation.annotationSettings;\n newAnnotation.PageNumber = annotation.pageNumber;\n newAnnotation.ModifiedDate = comments.modifiedDate;\n newAnnotation.Subject = annotation.subject;\n newAnnotation.Note = comments.note;\n newAnnotation.AnnotName = comments.annotName;\n newAnnotation.Comments = comments.comments;\n newAnnotation.State = comments.review.state;\n newAnnotation.StateModel = comments.review.stateModel;\n newAnnotation.CustomData = annotation.customData;\n newAnnotation.IsLock = comments.isLock;\n return newAnnotation;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.removeFocus = function () {\n if (isBlazor()) {\n // eslint-disable-next-line\n var currentPageContainer = this.pdfViewer.element.querySelector('#' + this.pdfViewer.element.id + '_totalPage');\n // eslint-disable-next-line max-len\n if (currentPageContainer && currentPageContainer.firstElementChild && currentPageContainer.firstElementChild.firstElementChild) {\n currentPageContainer.firstElementChild.firstElementChild.blur();\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewerBase.prototype.updateDocumentEditedProperty = function (isEdited) {\n this.pdfViewer.allowServerDataBinding = true;\n this.pdfViewer.isDocumentEdited = isEdited;\n this.pdfViewer.allowServerDataBinding = false;\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getWindowDevicePixelRatio = function () {\n var devicePixelRatio = window.devicePixelRatio;\n if (!Browser.isDevice) {\n return devicePixelRatio;\n }\n else {\n return devicePixelRatio = 2;\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.getZoomRatio = function (zoom) {\n var zoomFactor = this.getZoomFactor();\n var zoomValue = zoom ? zoom : 1;\n var ratio;\n var devicePixelRatio = this.getWindowDevicePixelRatio();\n if (!Browser.isDevice || (Browser.isDevice && zoomFactor <= 0.7)) {\n ratio = zoomValue * devicePixelRatio;\n }\n else {\n ratio = zoomValue;\n }\n return ratio;\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.importJsonForRotatedDocuments = function (Rotate, pageNumber, bounds, originalRotation) {\n // eslint-disable-next-line\n var rotateAngle = Math.abs(Rotate);\n var pageDetails = this.pageSize[parseInt(pageNumber.toString(), 10)];\n //originalRotation = !isNullOrUndefined(originalRotation) ? originalRotation : pageDetails.rotation;\n if (originalRotation !== pageDetails.rotation) {\n rotateAngle = this.getRotationAngle(originalRotation, pageNumber);\n this.isPageRotated = true;\n }\n else {\n rotateAngle = 0;\n this.isPageRotated = false;\n }\n if (rotateAngle === 1) {\n return { X: pageDetails.width - bounds.Y - bounds.Height, Y: bounds.X, Height: bounds.Width, Width: bounds.Height };\n }\n else if (rotateAngle === 2) {\n return { X: pageDetails.width - bounds.X - bounds.Width, Y: pageDetails.height - bounds.Y - bounds.Height, Height: bounds.Height, Width: bounds.Width };\n }\n else if (rotateAngle === 3) {\n return { X: bounds.Y, Y: pageDetails.height - bounds.X - bounds.Width, Height: bounds.Width, Width: bounds.Height };\n }\n else {\n return bounds;\n }\n };\n PdfViewerBase.prototype.getRotationAngle = function (originalRotation, pageNumber) {\n var pageDetails = this.pageSize[parseInt(pageNumber.toString(), 10)];\n originalRotation = Math.abs(originalRotation);\n var rotateAngle;\n if (originalRotation === 0) {\n return rotateAngle = pageDetails.rotation;\n }\n else if (originalRotation === 1 || originalRotation === 90) {\n if (pageDetails.rotation == 0) {\n return rotateAngle = 3;\n }\n else if (pageDetails.rotation === 2) {\n return rotateAngle = 1;\n }\n else if (pageDetails.rotation === 3) {\n return rotateAngle = 2;\n }\n }\n else if (originalRotation === 2 || originalRotation === 180) {\n if (pageDetails.rotation == 0) {\n return rotateAngle = 2;\n }\n else if (pageDetails.rotation === 1) {\n return rotateAngle = 3;\n }\n else if (pageDetails.rotation === 3) {\n return rotateAngle = 1;\n }\n }\n else if (originalRotation === 3 || originalRotation === 270) {\n if (pageDetails.rotation == 0) {\n return rotateAngle = 1;\n }\n else if (pageDetails.rotation === 2) {\n return rotateAngle = 3;\n }\n else if (pageDetails.rotation === 1) {\n return rotateAngle = 2;\n }\n }\n };\n /**\n * @private\n */\n PdfViewerBase.prototype.calculateVertexPoints = function (Rotate, pageNumber, vertexPoints, originalRotation) {\n // eslint-disable-next-line\n var rotateAngle = Math.abs(Rotate);\n var vPoints = [];\n var pageDetails = this.pageSize[parseInt(pageNumber.toString(), 10)];\n var x;\n var y;\n var point;\n //originalRotation = !isNullOrUndefined(originalRotation) ? originalRotation : pageDetails.rotation;\n if (originalRotation !== pageDetails.rotation) {\n rotateAngle = this.getRotationAngle(originalRotation, pageNumber);\n }\n else {\n rotateAngle = 0;\n }\n for (var j = 0; j < vertexPoints.length; j++) {\n if (rotateAngle === 1) {\n x = vertexPoints[parseInt(j.toString(), 10)].Y ? pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].Y : pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].y;\n y = vertexPoints[parseInt(j.toString(), 10)].X ? vertexPoints[parseInt(j.toString(), 10)].X : vertexPoints[parseInt(j.toString(), 10)].x;\n point = { x: x, y: y };\n vPoints.push(point);\n }\n else if (rotateAngle === 2) {\n x = vertexPoints[parseInt(j.toString(), 10)].X ? pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].X : pageDetails.width - vertexPoints[parseInt(j.toString(), 10)].x;\n y = vertexPoints[parseInt(j.toString(), 10)].Y ? pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].Y : pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].y;\n var point_1 = { x: x, y: y };\n vPoints.push(point_1);\n }\n else if (rotateAngle == 3) {\n x = vertexPoints[parseInt(j.toString(), 10)].Y ? vertexPoints[parseInt(j.toString(), 10)].Y : vertexPoints[parseInt(j.toString(), 10)].y;\n y = vertexPoints[parseInt(j.toString(), 10)].X ? pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].X : pageDetails.height - vertexPoints[parseInt(j.toString(), 10)].x;\n point = { x: x, y: y };\n vPoints.push(point);\n }\n else {\n x = vertexPoints[parseInt(j.toString(), 10)].X ? vertexPoints[parseInt(j.toString(), 10)].X : vertexPoints[parseInt(j.toString(), 10)].x;\n y = vertexPoints[parseInt(j.toString(), 10)].Y ? vertexPoints[parseInt(j.toString(), 10)].Y : vertexPoints[parseInt(j.toString(), 10)].y;\n var point_2 = { x: x, y: y };\n vPoints.push(point_2);\n }\n }\n return vPoints;\n };\n return PdfViewerBase;\n}());\n\n/**\n * TextLayer module is used to handle the text content on the control.\n *\n * @hidden\n */\nvar TextLayer = /** @__PURE__ @class */ (function () {\n /**\n * @param {PdfViewer} pdfViewer - The PdfViewer.\n * @param {PdfViewerBase} pdfViewerBase - The PdfViewerBase.\n * @private\n */\n function TextLayer(pdfViewer, pdfViewerBase) {\n var _this = this;\n // eslint-disable-next-line\n this.textBoundsArray = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.characterBound = [];\n /**\n * @returns {void}\n */\n this.closeNotification = function () {\n _this.notifyDialog.hide();\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param {number} pageNumber - The pageNumber.\n * @param {number} pageWidth - The pageWidth.\n * @param {number} pageHeight - The pageHeight.\n * @param {HTMLElement} pageDiv - The pageDiv.\n * @returns {HTMLElement} - The HTMLElement.\n * @private\n */\n TextLayer.prototype.addTextLayer = function (pageNumber, pageWidth, pageHeight, pageDiv) {\n var textDiv = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n var textLayer;\n if (!textDiv) {\n textLayer = createElement('div', { id: this.pdfViewer.element.id + '_textLayer_' + pageNumber, className: 'e-pv-text-layer' });\n textLayer.style.width = pageWidth + 'px';\n textLayer.style.height = pageHeight + 'px';\n if (pageDiv) {\n pageDiv.appendChild(textLayer);\n }\n }\n this.pdfViewerBase.applyElementStyles(textLayer, pageNumber);\n return textLayer;\n };\n /**\n * @param {number} pageNumber - The pageNumber.\n * @param {any} textContents - The textContents.\n * @param {any} textBounds - The textBounds.\n * @param {any} rotation - The rotation.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n TextLayer.prototype.renderTextContents = function (pageNumber, textContents, textBounds, rotation, rtldoc) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n var canvasElement = createElement(\"canvas\");\n var linebounds = [];\n var lineContent = [];\n var yValue;\n var heightValue;\n if (textBounds.length > 1) {\n if (textBounds[0].Width === 0 && textBounds.length > 2) {\n yValue = textBounds[1].Y;\n heightValue = textBounds[1].Height;\n }\n else {\n yValue = textBounds[0].Y;\n heightValue = textBounds[0].Height;\n }\n }\n var idNumber = 0;\n if (canvasElement && textLayer && textLayer.childNodes.length === 0) {\n for (var i = 0; i < textContents.length; i++) {\n // eslint-disable-next-line\n if ((!(textContents[i].includes(\"\\r\\n\")) && !(textContents[i].includes(\"\\u0002\"))) && i != textBounds.length - 1 && rotation === 0 && !rtldoc) {\n linebounds.push(textBounds[parseInt(i.toString(), 10)]);\n lineContent.push(textContents[parseInt(i.toString(), 10)]);\n if (yValue > textBounds[parseInt(i.toString(), 10)].Y && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n yValue = textBounds[parseInt(i.toString(), 10)].Y;\n }\n if (heightValue < textBounds[parseInt(i.toString(), 10)].Height && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n heightValue = textBounds[parseInt(i.toString(), 10)].Height;\n }\n }\n else {\n linebounds.push(textBounds[parseInt(i.toString(), 10)]);\n lineContent.push(textContents[parseInt(i.toString(), 10)]);\n if (yValue > textBounds[parseInt(i.toString(), 10)].Y && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n yValue = textBounds[parseInt(i.toString(), 10)].Y;\n }\n if (heightValue < textBounds[parseInt(i.toString(), 10)].Height && textBounds[parseInt(i.toString(), 10)].Width !== 0) {\n heightValue = textBounds[parseInt(i.toString(), 10)].Height;\n }\n for (var j = 0; j < linebounds.length; j++) {\n var bounds = linebounds[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + '_text_' + pageNumber + '_' + idNumber, className: 'e-pv-text', attrs: { 'tabindex': '-1' } });\n var textContent = lineContent[parseInt(j.toString(), 10)];\n if (textContent === \" \" && j != linebounds.length - 1 && j != 0) {\n bounds.Height = linebounds[j - 1].Height;\n bounds.Y = linebounds[j - 1].Y;\n }\n textDiv.textContent = textContent.replace(/ /g, ' ');\n // eslint-disable-next-line\n var newLine = lineContent[j].replace(/ +/g, ' ');\n if (newLine !== ' ') {\n textDiv.style.whiteSpace = 'pre';\n }\n if (bounds.Width === 0 && j != linebounds.length - 1 && j != 0) {\n if (linebounds[j + 1].X - (linebounds[j - 1].X + linebounds[j - 1].Width) < 30 && (!lineContent[j - 1].includes(\"\\r\\n\") && !(textContents[parseInt(j.toString(), 10)].includes(\"\\u0002\")))) {\n bounds.Width = linebounds[j + 1].X - (linebounds[j - 1].X + linebounds[j - 1].Width);\n bounds.X = linebounds[j - 1].X + linebounds[j - 1].Width;\n if (bounds.Width < 0) {\n bounds.Width = 0;\n }\n else {\n textDiv.style.whiteSpace = 'pre';\n }\n }\n }\n if ((j != 0 || linebounds.length - 1 === 0 || (bounds.Y - yValue) > 20 && bounds.Width != 0) && idNumber != 0 && ((textBounds[idNumber - 1].Y - textBounds[parseInt(idNumber.toString(), 10)].Y) > 11 || ((textBounds[parseInt(idNumber.toString(), 10)].Y - textBounds[idNumber - 1].Y) > 11)) && lineContent[parseInt(j.toString(), 10)] != \" \") {\n yValue = linebounds[parseInt(j.toString(), 10)].Y;\n heightValue = linebounds[parseInt(j.toString(), 10)].Height;\n }\n if (bounds) {\n bounds.Y = yValue;\n bounds.Height = heightValue;\n this.setStyleToTextDiv(textDiv, bounds.X, bounds.Y, bounds.Bottom, bounds.Width, bounds.Height);\n }\n this.setTextElementProperties(textDiv);\n var context = canvasElement.getContext('2d');\n context.font = textDiv.style.fontSize + ' ' + textDiv.style.fontFamily;\n var contextWidth = context.measureText(lineContent[parseInt(j.toString(), 10)].replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n if (bounds) {\n var scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation);\n }\n textLayer.appendChild(textDiv);\n this.resizeExcessDiv(textLayer, textDiv);\n // eslint-disable-next-line max-len\n if (this.pdfViewer.textSelectionModule && this.pdfViewer.enableTextSelection && !this.pdfViewerBase.isTextSelectionDisabled && textDiv.className !== 'e-pdfviewer-formFields'\n && textDiv.className !== 'e-pdfviewer-signatureformfields' && textDiv.className !== 'e-pdfviewer-signatureformfields-signature') {\n textDiv.classList.add('e-pv-cursor');\n }\n idNumber++;\n }\n linebounds = [];\n lineContent = [];\n if (i < textBounds.length - 1) {\n if (textBounds[i + 1].Width === 0 && !isNullOrUndefined(textBounds[i + 2])) {\n yValue = textBounds[i + 2].Y;\n heightValue = textBounds[i + 2].Height;\n }\n else {\n yValue = textBounds[i + 1].Y;\n heightValue = textBounds[i + 1].Height;\n }\n }\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param textContents\n * @param textBounds\n * @param rotation\n * @param isTextSearch\n * @param pageNumber\n * @param textContents\n * @param textBounds\n * @param rotation\n * @param isTextSearch\n * @private\n */\n // eslint-disable-next-line\n TextLayer.prototype.resizeTextContents = function (pageNumber, textContents, textBounds, rotation, isTextSearch) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n var canvasElement = createElement(\"canvas\");\n if (canvasElement) {\n for (var i = 0; i < textLayer.childNodes.length; i++) {\n // eslint-disable-next-line\n var bounds = void 0;\n var textDiv = this.pdfViewerBase.getElement('_text_' + pageNumber + '_' + i);\n if (isNullOrUndefined(textDiv)) {\n break;\n }\n if (textBounds) {\n bounds = textBounds[parseInt(i.toString(), 10)];\n if (bounds) {\n this.setStyleToTextDiv(textDiv, bounds.X, bounds.Y, bounds.Bottom, bounds.Width, bounds.Height);\n }\n }\n this.setTextElementProperties(textDiv);\n var context = canvasElement.getContext('2d');\n context.font = textDiv.style.fontSize + ' ' + textDiv.style.fontFamily;\n var contextWidth = void 0;\n if (textContents) {\n var textContent = textContents[parseInt(i.toString(), 10)];\n if (textContent) {\n contextWidth = context.measureText(textContent.replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n }\n }\n else {\n contextWidth = context.measureText(textDiv.textContent.replace(/(\\r\\n|\\n|\\r)/gm, '')).width;\n }\n if (bounds) {\n var scale = bounds.Width * this.pdfViewerBase.getZoomFactor() / contextWidth;\n this.applyTextRotation(scale, textDiv, rotation, bounds.Rotation);\n }\n this.resizeExcessDiv(textLayer, textDiv);\n }\n }\n else {\n textLayer.parentElement.removeChild(textLayer);\n }\n if (this.pdfViewer.textSearch) {\n if (!isTextSearch) {\n this.pdfViewer.textSearch.resizeSearchElements(pageNumber);\n }\n }\n };\n TextLayer.prototype.applyTextRotation = function (scale, textDiv, rotation, textRotation) {\n var scaleString = 'scaleX(' + scale + ')';\n if (rotation === 0) {\n if (textRotation >= 0 && textRotation <= 90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 1) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(90deg) ' + scaleString;\n }\n else if (textRotation === -90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 2) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(180deg) ' + scaleString;\n }\n else if (textRotation === 180) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n else if (rotation === 3) {\n if (textRotation === 0) {\n textDiv.style.transform = 'rotate(-90deg) ' + scaleString;\n }\n else if (textRotation === 90) {\n textDiv.style.transform = scaleString;\n }\n else {\n textDiv.style.transform = 'rotate(' + textRotation + 'deg) ' + scaleString;\n }\n }\n };\n TextLayer.prototype.setTextElementProperties = function (textDiv) {\n textDiv.style.fontFamily = 'serif';\n textDiv.style.transformOrigin = '0%';\n };\n /**\n * @param {number} pageNumber - The pageNumber.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.resizeTextContentsOnZoom = function (pageNumber) {\n // eslint-disable-next-line max-len\n var renderObject = window.sessionStorage.getItem(this.pdfViewerBase.getDocumentId() + '_' + pageNumber + '_' + this.getPreviousZoomFactor());\n // eslint-disable-next-line\n var textBounds = [];\n var textContents = [];\n // eslint-disable-next-line\n var rotation;\n if (renderObject) {\n // eslint-disable-next-line\n var data = JSON.parse(renderObject);\n // eslint-disable-next-line\n textBounds = data['textBounds'];\n // eslint-disable-next-line\n textContents = data['textContent'];\n // eslint-disable-next-line\n rotation = data['rotation'];\n }\n if (textBounds.length !== 0) {\n this.textBoundsArray.push({ pageNumber: pageNumber, textBounds: textBounds });\n this.resizeTextContents(pageNumber, textContents, textBounds, rotation);\n }\n else {\n // eslint-disable-next-line\n var textElements = this.textBoundsArray.filter(function (obj) {\n return obj.pageNumber === pageNumber;\n });\n if (textElements) {\n if (textElements.length !== 0) {\n // eslint-disable-next-line\n textBounds = textElements[0]['textBounds'];\n this.resizeTextContents(pageNumber, null, textBounds, rotation);\n }\n }\n }\n };\n TextLayer.prototype.resizeExcessDiv = function (textLayer, textDiv) {\n var textLayerPosition = textLayer.getBoundingClientRect();\n var textDivPosition = textDiv.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if ((textDivPosition.width + textDivPosition.left) >= (textLayerPosition.width + textLayerPosition.left) || (textDivPosition.width > textLayerPosition.width)) {\n // 'auto' width is set to reset the size of the div to its contents.\n textDiv.style.width = 'auto';\n // Client width gets reset by 'auto' width property which has the width of the content.\n textDiv.style.width = textDiv.clientWidth + 'px';\n }\n };\n /**\n * @private\n * @param {boolean} isPinchZoomed - The isPinchZoomed.\n * @returns {void}\n */\n TextLayer.prototype.clearTextLayers = function (isPinchZoomed) {\n var lowerPageValue = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n var higherPageValue = this.pdfViewerBase.currentPageNumber + 1;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n textLayers[parseInt(i.toString(), 10)].style.display = 'block';\n if (this.pdfViewerBase.getMagnified() && (this.getTextSelectionStatus() || this.getTextSearchStatus())) {\n // eslint-disable-next-line radix\n var pageNumber = parseInt(textLayers[parseInt(i.toString(), 10)].id.split('_textLayer_')[1]);\n if (!(((lowerPageValue + 1) <= pageNumber) && (pageNumber <= (higherPageValue - 1)))) {\n this.removeElement(textLayers[parseInt(i.toString(), 10)], isPinchZoomed);\n }\n }\n else if (this.pdfViewerBase.getPinchZoomed()) {\n this.removeElement(textLayers[parseInt(i.toString(), 10)], isPinchZoomed);\n }\n else {\n this.removeElement(textLayers[parseInt(i.toString(), 10)], isPinchZoomed);\n }\n }\n };\n TextLayer.prototype.removeElement = function (element, isPinchZoomed) {\n if (isPinchZoomed) {\n this.removeForeignObjects(element);\n }\n else {\n if (Browser.isIE) {\n if (element.parentElement) {\n element.parentElement.removeChild(element);\n }\n else if (element.parentNode) {\n element.parentNode.removeChild(element);\n }\n }\n else {\n element.remove();\n }\n }\n };\n TextLayer.prototype.removeForeignObjects = function (element) {\n // eslint-disable-next-line\n var childElement = element.getElementsByClassName('foreign-object');\n if (childElement) {\n for (var i = 0; i < childElement.length; i++) {\n if (Browser.isDevice) {\n //Remove the outer div element of checkbox and other formfields in pichzoom\n if (childElement[parseInt(i.toString(), 10)].parentElement.className === 'e-pv-text-layer' && childElement[0].parentElement.className !== 'e-pv-checkbox-outer-div') {\n element.removeChild(childElement[0]);\n }\n else if (childElement[parseInt(i.toString(), 10)].parentElement.className === 'e-pv-checkbox-outer-div') {\n var outerDivParent = document.getElementById(childElement[0].parentElement.id);\n if (outerDivParent) {\n outerDivParent.parentElement.remove();\n }\n }\n }\n else {\n if (childElement[parseInt(i.toString(), 10)].parentElement.className === 'e-pv-text-layer') {\n element.removeChild(childElement[0]);\n }\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param divId\n * @param fromOffset\n * @param toOffset\n * @param textString\n * @param className\n * @private\n */\n // eslint-disable-next-line max-len\n TextLayer.prototype.convertToSpan = function (pageNumber, divId, fromOffset, toOffset, textString, className) {\n var textDiv = this.pdfViewerBase.getElement('_text_' + pageNumber + '_' + divId);\n var textContent = textString.substring(fromOffset, toOffset);\n var node = document.createTextNode(textContent);\n if (className) {\n var spanElement = createElement('span');\n spanElement.className = className + ' e-pv-text';\n spanElement.appendChild(node);\n textDiv.appendChild(spanElement);\n }\n else {\n textDiv.appendChild(node);\n }\n };\n /**\n * @param startPage\n * @param endPage\n * @param anchorOffsetDiv\n * @param focusOffsetDiv\n * @param anchorOffset\n * @param focusOffset\n * @private\n */\n // eslint-disable-next-line max-len\n TextLayer.prototype.applySpanForSelection = function (startPage, endPage, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset) {\n if (this.pdfViewer.textSelectionModule) {\n for (var i = startPage; i <= endPage; i++) {\n var startId = void 0;\n var endId = void 0;\n // eslint-disable-next-line\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + i).childNodes;\n if (i === startPage) {\n startId = anchorOffsetDiv;\n endId = textDivs.length - 1;\n }\n else if (i === endPage) {\n startId = 0;\n endId = focusOffsetDiv;\n }\n else {\n startId = 0;\n endId = textDivs.length - 1;\n }\n if (startPage === endPage) {\n startId = anchorOffsetDiv;\n endId = focusOffsetDiv;\n }\n for (var j = startId; j <= endId; j++) {\n var textDiv = this.pdfViewerBase.getElement('_text_' + i + '_' + j);\n var initId = void 0;\n var lastId = void 0;\n var length_1 = void 0;\n if (textDiv && textDiv.textContent) {\n length_1 = textDiv.textContent.length;\n var textContent = textDiv.textContent;\n textDiv.textContent = '';\n if (j === startId) {\n if (i === startPage) {\n initId = anchorOffset;\n }\n else {\n initId = 0;\n }\n lastId = length_1;\n this.convertToSpan(i, j, 0, initId, textContent, null);\n }\n else if (j === endId && i === endPage) {\n initId = 0;\n lastId = focusOffset;\n }\n else {\n initId = 0;\n lastId = length_1;\n }\n if (startId === endId && startPage === endPage) {\n initId = anchorOffset;\n lastId = focusOffset;\n }\n this.convertToSpan(i, j, initId, lastId, textContent, 'e-pv-maintaincontent');\n if (j === endId && i === endPage) {\n this.convertToSpan(i, j, lastId, textContent.length, textContent, null);\n }\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n TextLayer.prototype.clearDivSelection = function () {\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n var childNodes = textLayers[parseInt(i.toString(), 10)].childNodes;\n for (var j = 0; j < childNodes.length; j++) {\n var textDiv = childNodes[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n if (textDiv.className !== 'e-pdfviewer-formFields' && textDiv.className !== 'e-pdfviewer-signatureformfields' && textDiv.className !== 'e-pdfviewer-signatureformfields-signature') {\n var textContent = textDiv.textContent;\n // eslint-disable-next-line max-len\n if (textDiv.childNodes.length > 1 || textDiv.childNodes.length === 1 && (textDiv.childNodes[0].tagName === 'SPAN')) {\n textDiv.textContent = '';\n textDiv.textContent = textContent;\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextLayer.prototype.setStyleToTextDiv = function (textDiv, left, top, bottom, width, height) {\n textDiv.style.left = left * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = top * this.pdfViewerBase.getZoomFactor() + 'px';\n var textHeight = height * this.pdfViewerBase.getZoomFactor();\n textDiv.style.height = textHeight + 'px';\n textDiv.style.fontSize = height * this.pdfViewerBase.getZoomFactor() + 'px';\n };\n TextLayer.prototype.getTextSelectionStatus = function () {\n if (this.pdfViewer.textSelectionModule) {\n return this.pdfViewer.textSelectionModule.isTextSelection;\n }\n else {\n return false;\n }\n };\n /**\n * @param {boolean} isAdd - The isAdd.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.modifyTextCursor = function (isAdd) {\n var textLayerList = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayerList.length; i++) {\n var childNodes = textLayerList[parseInt(i.toString(), 10)].childNodes;\n for (var j = 0; j < childNodes.length; j++) {\n var textElement = childNodes[parseInt(j.toString(), 10)];\n // eslint-disable-next-line max-len\n if (isAdd && textElement.className !== 'e-pdfviewer-formFields' && textElement.className !== 'e-pdfviewer-signatureformfields' && textElement.className !== 'e-pdfviewer-signatureformfields-signature') {\n textElement.classList.add('e-pv-cursor');\n }\n else {\n textElement.classList.remove('e-pv-cursor');\n }\n }\n }\n };\n /**\n * @param {Selection} selection - The Selection.\n * @returns {boolean} - Returns true or false.\n * @private\n */\n TextLayer.prototype.isBackWardSelection = function (selection) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n var backward = false;\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n backward = true;\n }\n return backward;\n };\n /**\n * @param {Node} element - The element.\n * @returns {number} - Returns number.\n * @private\n */\n TextLayer.prototype.getPageIndex = function (element) {\n var pageId;\n // eslint-disable-next-line\n var parentElement = element.parentElement;\n if (!parentElement) {\n parentElement = element.parentNode;\n }\n if (parentElement.className === 'e-pv-text-layer') {\n // eslint-disable-next-line radix\n pageId = parseInt(element.id.split('_text_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n pageId = parseInt(parentElement.id.split('_text_')[1]);\n }\n return pageId;\n };\n /**\n * @param {Node} element - The element.\n * @param {number} pageIndex - The pageIndex.\n * @returns {number} - Returns number.\n * @private\n */\n TextLayer.prototype.getTextIndex = function (element, pageIndex) {\n var textIndex;\n // eslint-disable-next-line\n var parentElement = element.parentElement;\n if (!parentElement) {\n parentElement = element.parentNode;\n }\n if (parentElement.className === 'e-pv-text-layer') {\n // eslint-disable-next-line radix\n textIndex = parseInt(element.id.split('_text_' + pageIndex + '_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n textIndex = parseInt(parentElement.id.split('_text_' + pageIndex + '_')[1]);\n }\n return textIndex;\n };\n TextLayer.prototype.getPreviousZoomFactor = function () {\n if (this.pdfViewer.magnificationModule) {\n return this.pdfViewer.magnificationModule.previousZoomFactor;\n }\n else {\n return 1;\n }\n };\n /**\n * @private\n * @returns {boolean} - Returns true or false.\n */\n TextLayer.prototype.getTextSearchStatus = function () {\n if (this.pdfViewer.textSearchModule) {\n return this.pdfViewer.textSearchModule.isTextSearch;\n }\n else {\n return false;\n }\n };\n /**\n * @param {string} text - The text.\n * @returns {void}\n * @private\n */\n TextLayer.prototype.createNotificationPopup = function (text) {\n var _this = this;\n if (!this.isMessageBoxOpen) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n var popupElement_1 = createElement('div', { id: this.pdfViewer.element.id + '_notify', className: 'e-pv-notification-popup' });\n this.pdfViewerBase.viewerContainer.appendChild(popupElement_1);\n this.notifyDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: this.pdfViewer.localeObj.getConstant('PdfViewer'),\n buttons: [{\n buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true },\n click: this.closeNotification.bind(this)\n }],\n // eslint-disable-next-line max-len\n content: '
    ' + text + '
    ', target: this.pdfViewer.element,\n beforeClose: function () {\n _this.notifyDialog.destroy();\n if (_this.pdfViewer.element) {\n try {\n _this.pdfViewer.element.removeChild(popupElement_1);\n }\n catch (error) {\n popupElement_1.parentElement.removeChild(popupElement_1);\n }\n }\n if (_this.pdfViewer.textSearchModule) {\n _this.pdfViewer.textSearch.isMessagePopupOpened = false;\n }\n _this.isMessageBoxOpen = false;\n }\n });\n if (this.pdfViewer.enableRtl) {\n this.notifyDialog.enableRtl = true;\n }\n this.notifyDialog.appendTo(popupElement_1);\n this.isMessageBoxOpen = true;\n }\n else {\n // eslint-disable-next-line\n var notificationElement = document.getElementById(this.pdfViewer.element.id + '_notification_popup_content');\n if (notificationElement) {\n notificationElement.textContent = text;\n notificationElement.innerHTML = text;\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearch.isMessagePopupOpened = false;\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenNotificationPopup', text);\n }\n }\n };\n return TextLayer;\n}());\n\n/**\n * ContextMenu module is used to handle the context menus used in the control.\n *\n * @hidden\n */\nvar ContextMenu$1 = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the constructor of ontextmenu\n *\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function ContextMenu$$1(pdfViewer, pdfViewerBase) {\n this.copyContextMenu = [];\n this.contextMenuList = [];\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n this.copyContextMenu = [{ text: this.pdfViewer.localeObj.getConstant('Cut'), iconCss: 'e-pv-cut-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Copy'), iconCss: 'e-pv-copy-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Highlight context'), iconCss: 'e-pv-highlight-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Underline context'), iconCss: 'e-pv-underline-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Strikethrough context'), iconCss: 'e-pv-strikethrough-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Paste'), iconCss: 'e-pv-paste-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Delete Context'), iconCss: 'e-pv-delete-icon' },\n { text: this.pdfViewer.localeObj.getConstant('Scale Ratio'), iconCss: 'e-pv-scale-ratio-icon' },\n { separator: true, id: pdfViewer.element.id + '_context_menu_comment_separator' },\n { text: this.pdfViewer.localeObj.getConstant('Comment'), iconCss: 'e-pv-comment-icon' },\n { separator: true, id: pdfViewer.element.id + '_context_menu_separator' },\n { text: this.pdfViewer.localeObj.getConstant('Properties'), iconCss: 'e-pv-property-icon' }\n ];\n }\n /**\n * @private\n * @returns {void}\n */\n ContextMenu$$1.prototype.createContextMenu = function () {\n this.contextMenuElement = createElement('ul', { id: this.pdfViewer.element.id + '_context_menu', className: 'e-pv-context-menu' });\n this.pdfViewer.element.appendChild(this.contextMenuElement);\n this.contextMenuObj = new ContextMenu({\n target: '#' + this.pdfViewerBase.viewerContainer.id, items: this.copyContextMenu,\n beforeOpen: this.contextMenuOnBeforeOpen.bind(this), select: this.onMenuItemSelect.bind(this),\n created: this.contextMenuOnCreated.bind(this)\n });\n if (this.pdfViewer.enableRtl) {\n this.contextMenuObj.enableRtl = true;\n }\n this.contextMenuObj.appendTo(this.contextMenuElement);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.contextMenuObj.animationSettings.effect = 'ZoomIn';\n }\n else {\n this.contextMenuObj.animationSettings.effect = 'SlideDown';\n }\n };\n ContextMenu$$1.prototype.contextMenuOnCreated = function (args) {\n // eslint-disable-next-line max-len\n var items = [this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'),\n this.pdfViewer.localeObj.getConstant('Strikethrough context')];\n if (this.pdfViewer.annotationModule) {\n if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.contextMenuObj.enableItems(items, false);\n }\n }\n else {\n this.contextMenuObj.enableItems(items, false);\n }\n };\n ContextMenu$$1.prototype.setTarget = function (args) {\n var target = null;\n if (args.event && args.event.target) {\n target = args.event.target;\n this.currentTarget = target;\n }\n return target;\n };\n ContextMenu$$1.prototype.contextMenuOnBeforeOpen = function (args) {\n if (this.pdfViewerBase.preventContextmenu) {\n args.cancel = true;\n }\n var target = this.setTarget(args);\n var currentAnnotSettings = this.pdfViewer.selectedItems.annotations.length !== 0 ? this.pdfViewer.selectedItems.annotations[0].annotationSettings : null;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule.isInuptBoxInFocus && target && target.className === 'free-text-input' && target.tagName === 'TEXTAREA') {\n this.pdfViewerBase.isFreeTextContextMenu = true;\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.remove('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context')], true);\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.checkContextMenuDeleteItem(this.contextMenuObj);\n }\n if (this.pdfViewer.textSelectionModule || this.pdfViewerBase.isShapeBasedAnnotationsEnabled()) {\n if (args.event || this.pdfViewerBase.isTouchDesignerMode) {\n var isClickWithinSelectionBounds = this.pdfViewerBase.isClickWithinSelectionBounds(args.event);\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.isFreeTextContextMenu) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment'),\n this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Delete Context')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.isTextSelected) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Copy')], true);\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Copy')], false);\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut')], false);\n window.getSelection().removeAllRanges();\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.freeTextAnnotationModule && this.pdfViewer.annotation.freeTextAnnotationModule.selectedText !== '') {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], false);\n }\n }\n else if (isClickWithinSelectionBounds && this.pdfViewer.textSelectionModule) {\n // eslint-disable-next-line max-len\n if ((!args.event.target.classList.contains('e-pv-maintaincontent') && args.event.target.classList.contains('e-pv-text') || args.event.target.classList.contains('e-pv-text-layer'))) {\n if (this.pdfViewerBase.checkIsNormalText()) {\n args.cancel = true;\n }\n // eslint-disable-next-line max-len\n }\n else if ((Browser.isIE || Browser.info.name === 'edge') && args.event.target.classList.contains('e-pv-page-container')) {\n args.cancel = true;\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path')) {\n this.onOpeningForShape(false, true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.annotations.length !== 0 && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType !== 'Path' && !currentAnnotSettings.isLock) {\n this.onOpeningForShape(true);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType && this.pdfViewer.designerMode) {\n this.onOpeningForShape(true);\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(this.pdfViewer.toolbar) && !isNullOrUndefined(this.pdfViewer.toolbar.formDesignerToolbarModule)) {\n this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(true);\n }\n }\n else {\n // eslint-disable-next-line\n var target_1 = this.pdfViewerBase.designerModetarget;\n var annotationModule = this.pdfViewer.annotationModule;\n if (args.event && args.event.target) {\n target_1 = args.event.target;\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied && ((target_1).classList.contains('e-pv-text-layer') ||\n (target_1).classList.contains('e-pv-text')) && !this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.onOpeningForShape(false);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied && ((target_1).classList.contains('e-pv-text-layer') ||\n (target_1).classList.contains('e-pv-text'))) {\n this.onOpeningForShape(false);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewerBase.isCalibrateAnnotationModule() && this.pdfViewer.annotationModule.measureAnnotationModule.currentAnnotationMode && !currentAnnotSettings) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Comment')], false);\n // eslint-disable-next-line max-len\n }\n else if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation && !annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.annotationSettings.isLock) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Cut'),\n this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Scale Ratio')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.remove('e-menu-hide');\n // eslint-disable-next-line max-len\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n else {\n args.cancel = true;\n }\n }\n }\n else if (this.pdfViewer.textSelectionModule && (this.pdfViewer.contextMenuOption === 'MouseUp')) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.hideContextItems();\n }\n this.enableCommentPanelItem();\n }\n else {\n args.cancel = true;\n }\n if (this.pdfViewer.contextMenuOption === 'None') {\n args.cancel = true;\n }\n else {\n this.contextMenuItems(args);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.restrictContextMenu()) {\n args.cancel = true;\n }\n this.pdfViewerBase.isTouchDesignerMode = false;\n };\n ContextMenu$$1.prototype.contextMenuItems = function (args) {\n if (this.pdfViewer.contextMenuSettings.contextMenuItems.length) {\n var hideMenuItems = [];\n var contextMenuList = this.contextMenuCollection();\n var ul = this.contextMenuObj.getRootElement();\n for (var j = 0; j < this.pdfViewer.contextMenuSettings.contextMenuItems.length; j++) {\n for (var i = 0; i < this.contextMenuList.length; i++) {\n var menuItem = this.contextMenuList[parseInt(i.toString(), 10)].text;\n switch (menuItem) {\n case 'Highlight':\n menuItem = 'Highlight context';\n break;\n case 'Underline':\n menuItem = 'Underline context';\n break;\n case 'Strikethrough':\n menuItem = 'Strikethrough context';\n break;\n case 'Delete':\n menuItem = 'Delete Context';\n break;\n case 'Scale Ratio':\n menuItem = 'Scale Ratio';\n break;\n case 'Comment':\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n break;\n case 'Properties':\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n break;\n }\n var menuName = this.contextMenuList[parseInt(i.toString(), 10)].text;\n if (j === 0 && menuName !== ContextMenuItem[this.pdfViewer.contextMenuSettings.contextMenuItems[parseInt(j.toString(), 10)]]) {\n hideMenuItems.push(menuName);\n }\n if (j > 0 && menuName === ContextMenuItem[this.pdfViewer.contextMenuSettings.contextMenuItems[parseInt(j.toString(), 10)]]) {\n for (var k = 0; k < hideMenuItems.length; k++) {\n if (hideMenuItems[parseInt(k.toString(), 10)] === menuName) {\n if (this.pdfViewer.disableContextMenuItems && this.pdfViewer.disableContextMenuItems.length > 0) {\n var isDisabled = false;\n for (var l = 0; l < this.pdfViewer.disableContextMenuItems.length; l++) {\n if (hideMenuItems[parseInt(k.toString(), 10)] === ContextMenuItem[this.pdfViewer.disableContextMenuItems[parseInt(l.toString(), 10)]]) {\n isDisabled = true;\n }\n }\n if (!isDisabled) {\n hideMenuItems.splice(k, 1);\n }\n }\n else {\n hideMenuItems.splice(k, 1);\n }\n }\n }\n }\n }\n }\n var hideLocaleItem = this.processLocaleContent(hideMenuItems);\n this.contextMenuObj.hideItems(hideLocaleItem);\n if (this.getEnabledItemCount(ul) === 0) {\n args.cancel = true;\n }\n }\n };\n ContextMenu$$1.prototype.processLocaleContent = function (hideMenuItems) {\n var contextMenuLocaleContent = [];\n if (hideMenuItems.length > 0) {\n for (var i = 0; i < hideMenuItems.length; i++) {\n var menuItem = hideMenuItems[parseInt(i.toString(), 10)];\n switch (menuItem) {\n case 'Highlight':\n menuItem = 'Highlight context';\n break;\n case 'Underline':\n menuItem = 'Underline context';\n break;\n case 'Strikethrough':\n menuItem = 'Strikethrough context';\n break;\n case 'Delete':\n menuItem = 'Delete Context';\n break;\n case 'ScaleRatio':\n menuItem = 'Scale Ratio';\n break;\n }\n contextMenuLocaleContent.push(this.pdfViewer.localeObj.getConstant(menuItem));\n }\n }\n return contextMenuLocaleContent;\n };\n ContextMenu$$1.prototype.contextMenuCollection = function () {\n return this.contextMenuList = [{ text: 'Cut' }, { text: 'Copy' }, { text: 'Highlight' }, { text: 'Underline' }, { text: 'Strikethrough' },\n { text: 'Paste' }, { text: 'Delete' }, { text: 'ScaleRatio' }, { text: 'Comment' }, { text: 'Properties' }];\n };\n ContextMenu$$1.prototype.getEnabledItemCount = function (ul) {\n var enabledItemCount = this.copyContextMenu.length;\n var liCollection = ul.children;\n for (var i = 0; i < liCollection.length; i++) {\n // eslint-disable-next-line\n var li = liCollection[i];\n if (li.classList.contains('e-menu-hide') || li.classList.contains('e-disabled')) {\n enabledItemCount = enabledItemCount - 1;\n }\n }\n return enabledItemCount;\n };\n ContextMenu$$1.prototype.hideContextItems = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 0) {\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Paste'), this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Scale Ratio'), this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n }\n };\n ContextMenu$$1.prototype.enableCommentPanelItem = function () {\n if (this.pdfViewer.enableCommentPanel) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n if (this.pdfViewer.selectedItems.formFields.length !== 0) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Comment')], false);\n }\n };\n ContextMenu$$1.prototype.onOpeningForShape = function (isProp, isSignature) {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.isShapeCopied) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else if (this.pdfViewer.formDesigner && this.pdfViewer.formDesigner.isShapeCopied) {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], true);\n }\n else {\n this.contextMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Paste')], false);\n }\n // eslint-disable-next-line max-len\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Highlight context'), this.pdfViewer.localeObj.getConstant('Underline context'), this.pdfViewer.localeObj.getConstant('Strikethrough context'), this.pdfViewer.localeObj.getConstant('Scale Ratio')]);\n if (isProp) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations.length !== 0 && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line' || this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'LineWidthArrowHead' ||\n this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Distance')) {\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n // eslint-disable-next-line max-len\n }\n else if (this.pdfViewer.selectedItems.formFields.length !== 0 && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.contextMenuObj.showItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n }\n else if (isNullOrUndefined(isSignature) && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === \"Image\" && !this.pdfViewer.selectedItems.annotations[0].id.startsWith(\"stamp\")) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n }\n }\n else if (isSignature) {\n if ((this.pdfViewer.selectedItems.annotations[0].annotName === \"SignatureField\" || this.pdfViewer.selectedItems.annotations[0].annotName === \"InitialField\" || this.pdfViewer.selectedItems.annotations[0].annotName === \"SignatureText\")) {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment'), this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'), this.pdfViewer.localeObj.getConstant('Paste')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n }\n else {\n this.contextMenuObj.hideItems([this.pdfViewer.localeObj.getConstant('Cut'), this.pdfViewer.localeObj.getConstant('Copy'),\n // eslint-disable-next-line max-len\n this.pdfViewer.localeObj.getConstant('Delete Context'), this.pdfViewer.localeObj.getConstant('Properties'), this.pdfViewer.localeObj.getConstant('Comment')]);\n this.pdfViewerBase.getElement('_context_menu_separator').classList.add('e-menu-hide');\n this.pdfViewerBase.getElement('_context_menu_comment_separator').classList.add('e-menu-hide');\n }\n };\n ContextMenu$$1.prototype.OnItemSelected = function (selectedMenu) {\n this.pdfViewerBase.OnItemSelected(selectedMenu);\n };\n ContextMenu$$1.prototype.onMenuItemSelect = function (args) {\n this.pdfViewerBase.OnItemSelected(args.item.text);\n };\n /**\n * @private\n * @returns {void}\n */\n ContextMenu$$1.prototype.destroy = function () {\n if (this.contextMenuObj) {\n this.previousAction = '';\n this.contextMenuObj.destroy();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n ContextMenu$$1.prototype.close = function () {\n this.contextMenuObj.close();\n };\n /**\n * open the context menu.\n * @param {number} top - The top.\n * @param {number} left - The left.\n * @param {HTMLElement} target - The target.\n * @returns {void}\n */\n ContextMenu$$1.prototype.open = function (top, left, target) {\n /* eslint-disable-next-line security/detect-non-literal-fs-filename */\n this.contextMenuObj.open(top, left, target);\n };\n return ContextMenu$$1;\n}());\n\n/**\n * @hidden\n */\nvar AjaxHandler = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for Ajax class\n * @param {PdfViewer} pdfviewer - The pdfviewer.\n * @private\n */\n function AjaxHandler(pdfviewer) {\n /**\n * Specifies the URL to which request to be sent.\n *\n * @default 'POST'\n */\n this.type = 'POST';\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n * @private\n */\n this.mode = true;\n /**\n * Specifies the ContentType to which request to be sent\n *\n * @default null\n * @private\n */\n this.contentType = 'application/json;charset=UTF-8';\n this.pdfViewer = pdfviewer;\n this.retryCount = pdfviewer.retryCount;\n this.retryStatusCodes = pdfviewer.retryStatusCodes;\n }\n /**\n * Send the request to server\n *\n * @param {object} jsonObj - To send to service\n * @returns {void}\n * @private\n */\n AjaxHandler.prototype.send = function (jsonObj) {\n var _this = this;\n this.httpRequest = new XMLHttpRequest();\n if (!this.mode) {\n setTimeout(function () {\n _this.sendRequest(jsonObj);\n });\n }\n else {\n this.sendRequest(jsonObj);\n }\n this.httpRequest.onreadystatechange = function () {\n var isSkip = false;\n // eslint-disable-next-line\n var viewerBase = _this.pdfViewer.viewerBase;\n if (viewerBase && viewerBase.isPasswordAvailable && viewerBase.passwordData === '') {\n isSkip = true;\n _this.retryCount = 0;\n }\n if (_this.retryCount > 0) {\n isSkip = _this.resendRequest(_this, jsonObj);\n }\n if (!isSkip) {\n _this.stateChange(_this);\n }\n };\n this.httpRequest.onerror = function () {\n _this.error(_this);\n };\n };\n /**\n * Clear the http request\n * @returns {void}\n * @private\n */\n AjaxHandler.prototype.clear = function () {\n this.httpRequest && this.httpRequest.abort();\n this.onSuccess = null;\n this.onFailure = null;\n this.onError = null;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.resendRequest = function (proxy, jsonObj) {\n var isSkip = false;\n var status = proxy.httpRequest.status;\n var statusString = this.retryStatusCodes.indexOf(status) !== -1;\n if (proxy.httpRequest.readyState === 4 && status === 200) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.responseType !== null) {\n data = proxy.httpRequest.response;\n }\n else {\n data = proxy.httpRequest.responseText;\n }\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // eslint-disable-next-line max-len\n if (data === 'Document stream does not exist in the cache' || data === 'Document Reference pointer does not exist in the cache') {\n isSkip = true;\n }\n }\n }\n }\n }\n if (statusString || isSkip) {\n isSkip = true;\n this.retryCount--;\n proxy.pdfViewer.fireAjaxRequestFailed(status, proxy.httpRequest.statusText, jsonObj.action, true);\n proxy.send(jsonObj);\n }\n return isSkip;\n };\n AjaxHandler.prototype.sendRequest = function (jsonObj) {\n /* eslint-disable-next-line security/detect-non-literal-fs-filename */\n this.httpRequest.open(this.type, this.url, this.mode);\n this.httpRequest.withCredentials = this.pdfViewer.ajaxRequestSettings.withCredentials;\n this.httpRequest.setRequestHeader('Content-Type', this.contentType);\n jsonObj = this.addExtraData(jsonObj);\n this.setCustomAjaxHeaders();\n if (this.responseType !== null) {\n this.httpRequest.responseType = this.responseType;\n }\n this.httpRequest.send(JSON.stringify(jsonObj)); // jshint ignore:line\n };\n AjaxHandler.prototype.addExtraData = function (jsonObject) {\n this.pdfViewer.viewerBase.ajaxData = '';\n this.pdfViewer.fireAjaxRequestInitiate(jsonObject);\n if (this.pdfViewer.viewerBase.ajaxData && this.pdfViewer.viewerBase.ajaxData !== '') {\n jsonObject = this.pdfViewer.viewerBase.ajaxData;\n }\n return jsonObject;\n };\n AjaxHandler.prototype.stateChange = function (proxy) {\n var status = proxy.httpRequest.status;\n var statusString = status.toString().split('')[0];\n if (proxy.httpRequest.readyState === 4 && status === 200) {\n // eslint-disable-next-line\n var data = void 0;\n if (this.responseType !== null) {\n data = proxy.httpRequest.response;\n }\n else {\n data = proxy.httpRequest.responseText;\n }\n // eslint-disable-next-line\n var result = {\n name: 'onSuccess',\n data: data,\n readyState: proxy.httpRequest.readyState,\n status: proxy.httpRequest.status\n };\n proxy.successHandler(result);\n }\n else if (proxy.httpRequest.readyState === 4 && (statusString === '4' || statusString === '5')) { // jshint ignore:line)\n // For handling 4xx and 5xx errors.\n // eslint-disable-next-line\n var result = {\n name: 'onFailure',\n status: proxy.httpRequest.status,\n statusText: proxy.httpRequest.statusText\n };\n proxy.failureHandler(result);\n }\n };\n AjaxHandler.prototype.error = function (proxy) {\n // eslint-disable-next-line\n var result = {\n name: 'onError',\n status: this.httpRequest.status,\n statusText: this.httpRequest.statusText\n };\n proxy.errorHandler(result);\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.successHandler = function (response) {\n if (this.onSuccess) {\n this.onSuccess(response);\n }\n return response;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.failureHandler = function (response) {\n if (this.onFailure) {\n this.onFailure(response);\n }\n return response;\n };\n // eslint-disable-next-line\n AjaxHandler.prototype.errorHandler = function (response) {\n if (this.onError) {\n this.onError(response);\n }\n return response;\n };\n AjaxHandler.prototype.setCustomAjaxHeaders = function () {\n for (var i = 0; i < this.pdfViewer.ajaxRequestSettings.ajaxHeaders.length; i++) {\n // eslint-disable-next-line max-len\n this.httpRequest.setRequestHeader(this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerName, this.pdfViewer.ajaxRequestSettings.ajaxHeaders[parseInt(i.toString(), 10)].headerValue);\n }\n };\n return AjaxHandler;\n}());\n\n/**\n * @hidden\n */\nvar Signature = /** @__PURE__ @class */ (function () {\n /**\n * Initialize the constructor of blazorUIadapater.\n * @private\n * @param { PdfViewer } pdfViewer - Specified PdfViewer class.\n * @param { PdfViewerBase } pdfViewerBase - The pdfViewerBase.\n */\n function Signature(pdfViewer, pdfViewerBase) {\n var _this = this;\n this.mouseMoving = true;\n this.canvasTouched = false;\n this.imageSignatureDataUrl = '';\n this.drawSignatureDataUrl = '';\n // eslint-disable-next-line\n this.newObject = [];\n /**\n * @private\n */\n this.outputString = '';\n /**\n * @private\n */\n this.drawOutputString = '';\n /**\n * @private\n */\n this.imageOutputString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signaturecollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.outputcollection = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signAnnotationIndex = [];\n // eslint-disable-next-line\n this.fontsign = [];\n // eslint-disable-next-line\n this.signfontStyle = [];\n this.isSaveSignature = false;\n this.isSaveInitial = false;\n this.isInitialFiledSaveSignature = false;\n this.isSignatureFieldsSaveSignature = false;\n // eslint-disable-next-line\n this.saveSignatureString = '';\n // eslint-disable-next-line\n this.saveInitialString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.saveImageString = '';\n this.signatureImageString = '';\n this.initialImageString = '';\n /**\n * @private\n */\n // eslint-disable-next-line\n this.maxSaveLimit = 5;\n this.select = function (e) {\n if (this.canvasTouched) {\n this.mouseMoving = true;\n this.canvasTouched = false;\n }\n if (e.isSwiped && this.signaturetype == 'Draw' && this.mouseMoving) {\n e.cancel = true;\n this.mouseMoving = false;\n }\n };\n // eslint-disable-next-line\n this.addStampImage = function (args) {\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile.type.split('/')[0] === 'image') {\n var reader = new FileReader();\n // eslint-disable-next-line\n reader.onload = function (e) {\n // eslint-disable-next-line\n var canvas = document.getElementById(_this.pdfViewer.element.id + '_signatureuploadCanvas_');\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n // eslint-disable-next-line\n var image = new Image();\n // eslint-disable-next-line\n var proxy = _this;\n image.onload = function () {\n // eslint-disable-next-line\n var signbutton = document.getElementById(_this.pdfViewer.element.id + '_e-pv-upload-button');\n signbutton.style.visibility = 'hidden';\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n proxy.enableCreateButton(false);\n proxy.outputString = image.src;\n proxy.signatureImageHeight = image.naturalHeight;\n proxy.signatureImageWidth = image.naturalWidth;\n };\n image.src = e.currentTarget.result;\n proxy.outputString = e.currentTarget.result;\n proxy.switchTabImageSignature = e.currentTarget.result;\n };\n reader.readAsDataURL(uploadedFile);\n }\n }\n args.target.value = '';\n args.currentTarget.value = '';\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.createSignaturePanel = function () {\n var _this = this;\n var maximumWidth = 750;\n this.imageSignatureDataUrl = \"\";\n this.drawSignatureDataUrl = \"\";\n if (!isBlazor()) {\n var elementID = this.pdfViewer.element.id;\n var dialogDiv = createElement('div', { id: elementID + '_signature_window', className: 'e-pv-signature-window' });\n dialogDiv.style.display = 'block';\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n var appearanceTab = this.createSignatureCanvas();\n var signaturePanelHeader = void 0;\n if (!this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('HandwrittenInitialDialogHeaderText');\n }\n else {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText');\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('InitialFieldDialogHeaderText');\n }\n else {\n signaturePanelHeader = this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText');\n }\n }\n if (this.signatureDialog) {\n this.signatureDialog.content = appearanceTab;\n }\n else {\n this.signatureDialog = new Dialog({\n // eslint-disable-next-line max-len\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: signaturePanelHeader, cssClass: 'e-pv-signature-dialog-height',\n target: this.pdfViewer.element, content: appearanceTab, width: '750px', visible: true, allowDragging: true,\n beforeClose: function () {\n _this.clearSignatureCanvas();\n _this.signatureDialog.destroy();\n _this.signatureDialog = null;\n if (_this.tabObj) {\n _this.tabObj.destroy();\n }\n // eslint-disable-next-line\n var signatureWindow = document.getElementById(_this.pdfViewer.element.id + '_signature_window');\n if (signatureWindow) {\n // eslint-disable-next-line\n signatureWindow.parentNode ? signatureWindow.parentNode.removeChild(signatureWindow) : signatureWindow.parentElement.removeChild(signatureWindow);\n }\n // eslint-disable-next-line max-len\n if (!_this.pdfViewerBase.isToolbarSignClicked && !_this.pdfViewerBase.drawSignatureWithTool && !isNullOrUndefined(_this.pdfViewer.formFieldsModule.currentTarget)) {\n _this.pdfViewer.fireFocusOutFormField(_this.pdfViewer.formFieldsModule.currentTarget.name, '');\n }\n _this.pdfViewerBase.isToolbarSignClicked = false;\n _this.pdfViewer.formFieldsModule.setFocus();\n }\n });\n this.signatureDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Clear'), disabled: true, cssClass: 'e-pv-clearbtn' }, click: this.clearSignatureCanvas.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel'), cssClass: 'e-pv-cancelbtn' }, click: this.closeSignaturePanel.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Create'), isPrimary: true, disabled: true, cssClass: 'e-pv-createbtn' }, click: this.addSignatureInPage.bind(this) }\n ];\n this.signatureDialog.appendTo(dialogDiv);\n }\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n if (this.pdfViewer.enableRtl) {\n this.signatureDialog.enableRtl = this.pdfViewer.enableRtl;\n }\n var checkboxItem = this.signatureDialog.content.ej2_instances[0].items[0];\n if (checkboxItem.header.label === 'DRAW') {\n var drawCheckbox = document.getElementById(\"checkbox\");\n this.hideSignatureCheckbox(drawCheckbox);\n }\n else if (checkboxItem.header.label === 'TYPE') {\n var typeCheckbox = document.getElementById(\"checkbox1\");\n this.hideSignatureCheckbox(typeCheckbox);\n }\n else {\n var imageCheckbox = document.getElementById(\"checkbox2\");\n this.hideSignatureCheckbox(imageCheckbox);\n }\n }\n else {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n if (!this.pdfViewerBase.pageContainer.querySelector('.e-pv-signature-window')) {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_signature_window', className: 'e-pv-signature-window' });\n dialogDiv.style.display = 'block';\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n }\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n this.clearSignatureCanvas();\n }\n this.pdfViewer._dotnetInstance.invokeMethodAsync('OpenSignaturePanel', this.pdfViewerBase.isToolbarSignClicked);\n }\n this.drawSavedSignature();\n };\n Signature.prototype.drawSavedSignature = function () {\n if (!this.pdfViewerBase.isToolbarSignClicked && (this.isSaveSignature || this.isSaveInitial)) {\n if (!this.pdfViewerBase.isInitialField && this.isSaveSignature) {\n this.outputString = this.saveSignatureString;\n }\n else if (this.pdfViewerBase.isInitialField && this.isSaveInitial) {\n this.outputString = this.saveInitialString;\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var context_1 = canvas.getContext('2d');\n // eslint-disable-next-line\n var image_1 = new Image();\n image_1.onload = function () {\n context_1.drawImage(image_1, 0, 0);\n };\n if (!this.pdfViewerBase.isInitialField && this.isSaveSignature) {\n image_1.src = this.signatureImageString;\n }\n else if (this.pdfViewerBase.isInitialField && this.isSaveInitial) {\n image_1.src = this.initialImageString;\n }\n // eslint-disable-next-line\n var checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n if (checkbox) {\n checkbox.checked = true;\n }\n this.enableCreateButton(false);\n this.enableClearbutton(false);\n }\n };\n Signature.prototype.hideSignatureCheckbox = function (checkbox) {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings && this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else if (this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings && this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.initialFieldSettings.initialDialogSettings && this.pdfViewer.initialFieldSettings.initialDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n else {\n if (this.pdfViewer.signatureFieldSettings.signatureDialogSettings && this.pdfViewer.signatureFieldSettings.signatureDialogSettings.hideSaveSignature) {\n this.hideCheckboxParent(checkbox);\n }\n }\n }\n };\n Signature.prototype.saveSignatureCheckbox = function () {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n return false;\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n if (this.pdfViewer.initialFieldSettings.initialDialogSettings && this.pdfViewer.initialFieldSettings.initialDialogSettings.hideSaveSignature) {\n return false;\n }\n else {\n return this.isInitialFiledSaveSignature;\n }\n }\n else {\n if (this.pdfViewer.signatureFieldSettings.signatureDialogSettings && this.pdfViewer.signatureFieldSettings.signatureDialogSettings.hideSaveSignature) {\n return false;\n }\n else {\n return this.isSignatureFieldsSaveSignature;\n }\n }\n }\n };\n Signature.prototype.hideCheckboxParent = function (checkbox) {\n if (checkbox) {\n checkbox.parentElement.style.display = 'none';\n }\n };\n Signature.prototype.saveSignatureImage = function () {\n // eslint-disable-next-line\n var checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n if (checkbox && checkbox.checked) {\n if (this.outputString !== '') {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.saveSignatureString = this.outputString;\n }\n else {\n this.isSaveInitial = true;\n this.saveInitialString = this.outputString;\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureImageString = this.saveImageString;\n }\n else {\n this.initialImageString = this.saveImageString;\n }\n }\n }\n else {\n if (this.isSaveSignature && !this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n this.saveImageString = '';\n this.signatureImageString = '';\n }\n else if (this.isSaveInitial && this.pdfViewerBase.isInitialField) {\n this.isSaveInitial = false;\n this.saveInitialString = '';\n this.saveImageString = '';\n this.initialImageString = '';\n }\n this.clearSignatureCanvas();\n }\n };\n /**\n * @param type\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addSignature = function (type) {\n var annot;\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n // eslint-disable-next-line max-len\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n var fontSize = 16;\n var fontFamily = 'Helvetica';\n var signatureBounds = this.pdfViewer.formFieldsModule.updateSignatureAspectRatio(this.outputString, true);\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureImageString = this.saveImageString;\n }\n else {\n this.initialImageString = this.saveImageString;\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: signatureBounds, pageIndex: pageIndex, data: this.outputString, fontFamily: fontFamily, fontSize: fontSize,\n shapeAnnotationType: 'HandWrittenSignature', opacity: opacity, strokeColor: strokeColor, thickness: thickness, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox');\n }\n var isSignatureAdded = false;\n if (isBlazor() && type) {\n if (type[0] === 'Image') {\n this.imageAddSignature();\n isSignatureAdded = true;\n this.outputString = '';\n }\n else if (type[0] === 'Type') {\n this.typeAddSignature();\n isSignatureAdded = true;\n this.outputString = '';\n }\n }\n if (!isSignatureAdded) {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (checkbox && checkbox.checked) {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.signatureImageString = this.saveImageString;\n this.saveSignatureString = this.outputString;\n }\n else {\n this.isSaveInitial = true;\n this.initialImageString = this.saveImageString;\n this.saveInitialString = this.outputString;\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, true);\n }\n else {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n }\n else {\n this.isSaveInitial = false;\n this.saveInitialString = '';\n }\n this.checkSaveFiledSign(this.pdfViewerBase.isInitialField, false);\n }\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureImageString = this.saveImageString;\n }\n else {\n this.initialImageString = this.saveImageString;\n }\n this.pdfViewer.formFieldsModule.drawSignature(null, null, this.pdfViewerBase.currentTarget, null);\n isSignatureAdded = true;\n }\n }\n };\n Signature.prototype.checkSaveFiledSign = function (initialField, saveSign) {\n if (initialField) {\n this.isInitialFiledSaveSignature = saveSign;\n }\n else {\n this.isSignatureFieldsSaveSignature = saveSign;\n }\n };\n Signature.prototype.addSignatureInPage = function () {\n if (this.signaturetype === 'Draw') {\n this.addSignature();\n }\n else if (this.signaturetype === 'Type') {\n this.typeAddSignature();\n }\n else {\n this.imageAddSignature();\n }\n this.drawOutputString = '';\n this.imageOutputString = '';\n };\n Signature.prototype.typeAddSignature = function () {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot = null;\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n var fontSize = 16;\n var currentLeft = 0;\n var currentTop = 0;\n var currentHeight = 65;\n var currentWidth = 200;\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n if (!this.signtypevalue) {\n this.updateSignatureTypeValue(true);\n }\n var inputValue = this.signtypevalue;\n annot = {\n // eslint-disable-next-line max-len\n id: 'Typesign' + this.pdfViewerBase.signatureCount, bounds: {\n left: currentLeft / zoomFactor, top: currentTop / zoomFactor, x: currentLeft / zoomFactor,\n // eslint-disable-next-line max-len\n y: currentTop / zoomFactor, width: currentWidth, height: currentHeight\n }, pageIndex: pageIndex, dynamicText: inputValue, data: this.pdfViewerBase.signatureModule.outputString, shapeAnnotationType: 'SignatureText',\n opacity: opacity, strokeColor: strokeColor, thickness: thickness, fontSize: fontSize, fontFamily: this.fontName, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox1');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.signtypevalue = '';\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n if (this.outputString === '') {\n this.updateSignatureTypeValue();\n }\n this.pdfViewer.formFieldsModule.drawSignature('Type', '', this.pdfViewerBase.currentTarget);\n this.hideSignaturePanel();\n }\n };\n Signature.prototype.imageAddSignature = function () {\n if (this.pdfViewerBase.isToolbarSignClicked) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var annot = null;\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n var fontSize = 16;\n var currentLeft = 0;\n var currentTop = 0;\n var standardImageRatio = 100;\n var currentHeight = 0;\n var currentWidth = 0;\n // eslint-disable-next-line max-len\n if (this.signatureImageHeight >= this.signatureImageWidth) {\n currentHeight = ((this.signatureImageHeight / this.signatureImageHeight) * standardImageRatio);\n currentWidth = ((this.signatureImageWidth / this.signatureImageHeight) * standardImageRatio);\n }\n else {\n currentHeight = ((this.signatureImageHeight / this.signatureImageWidth) * standardImageRatio);\n currentWidth = ((this.signatureImageWidth / this.signatureImageWidth) * standardImageRatio);\n }\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var zoomFactor = this.pdfViewerBase.getZoomFactor();\n var inputValue = this.signtypevalue;\n annot = {\n // eslint-disable-next-line max-len\n id: 'Typesign' + this.pdfViewerBase.signatureCount, bounds: {\n left: currentLeft / zoomFactor, top: currentTop / zoomFactor, x: currentLeft / zoomFactor,\n // eslint-disable-next-line max-len\n y: currentTop / zoomFactor, width: currentWidth, height: currentHeight\n }, pageIndex: pageIndex, dynamicText: inputValue, data: this.pdfViewerBase.signatureModule.outputString, shapeAnnotationType: 'SignatureImage',\n opacity: opacity, strokeColor: strokeColor, thickness: thickness, fontSize: fontSize, fontFamily: this.fontName, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var checkbox = void 0;\n if (isBlazor()) {\n checkbox = document.getElementById(this.pdfViewer.element.id + '_signatureCheckBox');\n }\n else {\n checkbox = document.getElementById('checkbox2');\n }\n if (checkbox && checkbox.checked) {\n this.addSignatureCollection();\n }\n this.hideSignaturePanel();\n this.pdfViewerBase.isToolbarSignClicked = false;\n }\n else {\n this.pdfViewer.formFieldsModule.drawSignature('Image', '', this.pdfViewerBase.currentTarget);\n this.hideSignaturePanel();\n }\n };\n Signature.prototype.updateSignatureTypeValue = function (isType) {\n // eslint-disable-next-line\n var fontElements = document.querySelectorAll('.e-pv-font-sign');\n if (fontElements) {\n for (var j = 0; j < fontElements.length; j++) {\n if (fontElements[parseInt(j.toString(), 10)] && fontElements[parseInt(j.toString(), 10)].style.borderColor === 'red') {\n if (isType) {\n this.signtypevalue = fontElements[parseInt(j.toString(), 10)].textContent;\n this.outputString = fontElements[parseInt(j.toString(), 10)].textContent;\n }\n else {\n this.outputString = fontElements[parseInt(j.toString(), 10)].textContent;\n }\n try {\n this.fontName = JSON.parse(fontElements[parseInt(j.toString(), 10)].style.fontFamily);\n }\n catch (e) {\n this.fontName = fontElements[parseInt(j.toString(), 10)].style.fontFamily;\n }\n }\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.hideSignaturePanel = function () {\n if (this.signatureDialog) {\n this.signatureDialog.hide();\n }\n };\n Signature.prototype.bindTypeSignatureClickEvent = function () {\n if (isBlazor()) {\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.querySelector('#' + this.pdfViewer.element.id + '_font_signature' + i);\n if (fontElement) {\n fontElement.addEventListener('click', this.typeSignatureclicked.bind(this));\n }\n }\n }\n };\n Signature.prototype.bindDrawSignatureClickEvent = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n }\n };\n // eslint-disable-next-line\n Signature.prototype.typeSignatureclicked = function (event) {\n var eventTarget = event.target;\n if (eventTarget) {\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.querySelector('#' + this.pdfViewer.element.id + '_font_signature' + i);\n if (fontElement) {\n fontElement.style.borderColor = '';\n }\n }\n eventTarget.style.borderColor = 'red';\n this.outputString = eventTarget.textContent;\n try {\n this.fontName = JSON.parse(eventTarget.style.fontFamily);\n }\n catch (e) {\n this.fontName = eventTarget.style.fontFamily;\n }\n this.enableCreateButton(false);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.createSignatureCanvas = function () {\n // eslint-disable-next-line\n var previousField = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var field = document.getElementById(this.pdfViewer.element.id + 'Signature_appearance');\n if (previousField) {\n previousField.remove();\n }\n if (field) {\n field.remove();\n }\n // eslint-disable-next-line max-len\n var appearanceDiv = createElement('div', { id: this.pdfViewer.element.id + 'Signature_appearance', className: 'e-pv-signature-apperance', styles: 'margin-top:30px' });\n // eslint-disable-next-line max-len\n var canvas = createElement('canvas', { id: this.pdfViewer.element.id + '_signatureCanvas_', className: 'e-pv-signature-canvas' });\n if (this.pdfViewer.element.offsetWidth > 750) {\n canvas.width = 714;\n }\n else {\n canvas.width = this.pdfViewer.element.offsetWidth - 35;\n }\n canvas.classList.add('e-pv-canvas-signature');\n canvas.height = 305;\n canvas.style.height = '305px';\n canvas.style.border = '1px dotted #bdbdbd';\n canvas.style.backgroundColor = 'white';\n canvas.style.boxSizing = 'border-box';\n canvas.style.borderRadius = '2px';\n canvas.addEventListener('mousedown', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('mousemove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('mouseup', this.signaturePanelMouseUp.bind(this));\n canvas.addEventListener('mouseleave', this.signaturePanelMouseLeave.bind(this));\n canvas.addEventListener('touchstart', this.signaturePanelMouseDown.bind(this));\n canvas.addEventListener('touchmove', this.signaturePanelMouseMove.bind(this));\n canvas.addEventListener('touchend', this.signaturePanelMouseUp.bind(this));\n appearanceDiv.appendChild(canvas);\n // eslint-disable-next-line\n var checkBoxObj;\n // eslint-disable-next-line\n var input;\n var saveCheckBoxContent;\n if (this.pdfViewerBase.isToolbarSignClicked && !this.pdfViewerBase.isInitialField) {\n saveCheckBoxContent = this.pdfViewer.localeObj.getConstant('Save Signature');\n }\n else {\n saveCheckBoxContent = this.pdfViewerBase.isInitialField ? this.pdfViewer.localeObj.getConstant('Save Initial') : this.pdfViewer.localeObj.getConstant('Save Signature');\n }\n if (!this.pdfViewer.hideSaveSignature) {\n // eslint-disable-next-line\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox';\n appearanceDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n }\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = this.saveSignatureCheckbox();\n }\n else {\n this.isSaveInitial = this.saveSignatureCheckbox();\n }\n if (this.isSaveSignature && !this.pdfViewerBase.isInitialField) {\n checkBoxObj.checked = true;\n }\n else if (this.isSaveInitial && this.pdfViewerBase.isInitialField) {\n checkBoxObj.checked = true;\n }\n //if (!this.pdfViewerBase.isToolbarSignClicked) {\n // eslint-disable-next-line\n var typeDiv = createElement('div', { id: this.pdfViewer.element.id + 'type_appearance', className: 'e-pv-signature-apperance', styles: 'margin-top:6px' });\n // eslint-disable-next-line\n var inputText = document.createElement('input');\n inputText.type = 'text';\n inputText.id = this.pdfViewer.element.id + '_e-pv-Signtext-box';\n typeDiv.appendChild(inputText);\n // eslint-disable-next-line\n var inputobj = new TextBox({\n placeholder: this.pdfViewer.localeObj.getConstant('Enter Signature as Name'),\n floatLabelType: 'Auto'\n });\n inputobj.appendTo(inputText);\n // eslint-disable-next-line\n var fontDiv = createElement('div', { id: this.pdfViewer.element.id + '_font_appearance', className: 'e-pv-font-appearance-style' });\n fontDiv.classList.add('e-pv-canvas-signature');\n fontDiv.style.height = '270px';\n fontDiv.style.border = '1px dotted #bdbdbd';\n fontDiv.style.boxSizing = 'border-box';\n fontDiv.style.borderRadius = '2px';\n fontDiv.style.backgroundColor = 'white';\n fontDiv.style.color = 'black';\n fontDiv.style.marginTop = '8px';\n typeDiv.appendChild(fontDiv);\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox1';\n typeDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n inputobj.addEventListener('input', this.renderSignatureText.bind(this));\n this.enableCreateButton(true);\n // eslint-disable-next-line\n var tab = createElement('div', { id: this.pdfViewer.element.id + 'Signature_tab' });\n var uploadDiv = createElement('div', { id: this.pdfViewer.element.id + 'upload_appearance', className: 'e-pv-signature-apperance', styles: 'padding-top:30px' });\n // eslint-disable-next-line\n var button = document.createElement('div');\n button.id = this.pdfViewer.element.id + '_e-pv-upload-button';\n uploadDiv.appendChild(button);\n // eslint-disable-next-line\n var uploadButton = new Button({ cssClass: 'e-pv-sign-upload', content: this.pdfViewer.localeObj.getConstant('Browse Signature Image') });\n uploadButton.appendTo(button);\n uploadButton.element.style.position = 'absolute';\n // eslint-disable-next-line max-len\n var uploadCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_signatureuploadCanvas_', className: 'e-pv-signature-uploadcanvas' });\n if (this.pdfViewer.element.offsetWidth > 750) {\n uploadCanvas.width = 714;\n }\n else {\n uploadCanvas.width = this.pdfViewer.element.offsetWidth - 35;\n }\n uploadCanvas.classList.add('e-pv-canvas-signature');\n uploadCanvas.height = 305;\n uploadCanvas.style.height = '305px';\n uploadButton.element.style.left = ((uploadCanvas.width / 2) - 50) + 'px';\n uploadButton.element.style.top = ((parseFloat(uploadCanvas.style.height) / 2) + 20) + 'px';\n uploadCanvas.style.border = '1px dotted #bdbdbd';\n uploadCanvas.style.backgroundColor = 'white';\n uploadCanvas.style.boxSizing = 'border-box';\n uploadCanvas.style.borderRadius = '2px';\n uploadCanvas.style.zIndex = '0';\n uploadDiv.appendChild(uploadCanvas);\n input = document.createElement('input');\n input.type = 'checkbox';\n input.id = 'checkbox2';\n uploadDiv.appendChild(input);\n checkBoxObj = new CheckBox({ label: saveCheckBoxContent, disabled: false, checked: false });\n checkBoxObj.appendTo(input);\n button.addEventListener('click', this.uploadSignatureImage.bind(this));\n // eslint-disable-next-line max-len\n this.signfontStyle = [{ FontName: 'Helvetica' }, { FontName: 'Times New Roman' }, { FontName: 'Courier' }, { FontName: 'Symbol' }];\n // eslint-disable-next-line\n var fontSignature = [];\n if (this.pdfViewerBase.isToolbarSignClicked && !isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts)) {\n for (var j = 0; j < 4; j++) {\n if (!isNullOrUndefined(this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts[parseInt(j.toString(), 10)])) {\n this.signfontStyle[parseInt(j.toString(), 10)].FontName = this.pdfViewer.handWrittenSignatureSettings.typeSignatureFonts[parseInt(j.toString(), 10)];\n }\n }\n }\n for (var i = 0; i < this.signfontStyle.length; i++) {\n fontSignature[parseInt(i.toString(), 10)] = document.createElement('div');\n fontSignature[parseInt(i.toString(), 10)].id = '_font_signature' + i + '';\n fontSignature[parseInt(i.toString(), 10)].classList.add('e-pv-font-sign');\n }\n this.fontsign = fontSignature;\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n if (this.pdfViewerBase.isToolbarSignClicked) {\n if (this.pdfViewerBase.isInitialField) {\n items = this.showHideSignatureTab(this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings && this.pdfViewer.handWrittenSignatureSettings.initialDialogSettings.displayMode, appearanceDiv, typeDiv, uploadDiv);\n }\n else {\n items = this.showHideSignatureTab(this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings && this.pdfViewer.handWrittenSignatureSettings.signatureDialogSettings.displayMode, appearanceDiv, typeDiv, uploadDiv);\n }\n }\n else {\n if (this.pdfViewerBase.isInitialField) {\n items = this.showHideSignatureTab((this.pdfViewer.initialFieldSettings.initialDialogSettings ? this.pdfViewer.initialFieldSettings.initialDialogSettings.displayMode : 7), appearanceDiv, typeDiv, uploadDiv);\n }\n else {\n items = this.showHideSignatureTab((this.pdfViewer.signatureFieldSettings.signatureDialogSettings ? this.pdfViewer.signatureFieldSettings.signatureDialogSettings.displayMode : 7), appearanceDiv, typeDiv, uploadDiv);\n }\n }\n // eslint-disable-next-line\n this.tabObj = new Tab({\n selected: function (args) {\n proxy.handleSelectEvent(args);\n },\n selecting: function (args) {\n proxy.select(args);\n },\n items: items\n });\n this.tabObj.appendTo(tab);\n if (tab && tab.lastElementChild) {\n tab.lastElementChild.style.overflow = 'hidden';\n }\n if (items[0].header.label === 'DRAW') {\n this.signaturetype = 'Draw';\n }\n else if (items[0].header.label === 'TYPE') {\n this.signaturetype = 'Type';\n }\n else {\n this.signaturetype = 'Image';\n }\n return tab;\n // } else {\n // return appearanceDiv;\n // }\n };\n Signature.prototype.handleSelectEvent = function (e) {\n // eslint-disable-next-line\n var headerText = '';\n var maximumWidth = 750;\n var tabInstance = document.getElementById(this.pdfViewer.element.id + 'Signature_tab').ej2_instances[0];\n if (tabInstance) {\n if (tabInstance.items.length > 0) {\n for (var i = 0; i < tabInstance.items.length; i++) {\n var headerValue = tabInstance.items[parseInt(i.toString(), 10)].header.text;\n if (headerValue === e.selectedItem.textContent) {\n headerText = tabInstance.items[parseInt(i.toString(), 10)].header.label;\n }\n }\n }\n }\n var checkbox = document.getElementById('checkbox');\n if (checkbox && checkbox.checked) {\n if (e.previousIndex === 0 && this.outputString !== '') {\n if (!this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = true;\n this.saveSignatureString = this.outputString;\n }\n else {\n this.isSaveInitial = true;\n this.saveInitialString = this.outputString;\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.saveImageString = canvas.toDataURL();\n if (!this.pdfViewerBase.isInitialField) {\n this.signatureImageString = this.saveImageString;\n }\n else {\n this.initialImageString = this.saveImageString;\n }\n }\n }\n else {\n if (this.isSaveSignature && !this.pdfViewerBase.isInitialField) {\n this.isSaveSignature = false;\n this.saveSignatureString = '';\n this.saveImageString = '';\n this.signatureImageString = '';\n }\n else if (this.isSaveInitial && this.pdfViewerBase.isInitialField) {\n this.isSaveInitial = false;\n this.saveInitialString = '';\n this.saveImageString = '';\n this.initialImageString = '';\n }\n }\n this.clearSignatureCanvas(e);\n // eslint-disable-next-line\n if (headerText.toLocaleLowerCase() === 'draw') {\n this.signaturetype = 'Draw';\n this.enableCreateSignatureButton();\n var drawCheckbox = document.getElementById(\"checkbox\");\n this.hideSignatureCheckbox(drawCheckbox);\n }\n else if (headerText.toLocaleLowerCase() === 'type') {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.drawSignatureDataUrl = canvas.toDataURL();\n this.updateSignatureTypeValue();\n this.signaturetype = 'Type';\n this.enableCreateSignatureButton();\n var typeCheckbox = document.getElementById(\"checkbox1\");\n this.hideSignatureCheckbox(typeCheckbox);\n }\n else if (headerText.toLocaleLowerCase() === 'upload') {\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.drawSignatureDataUrl = canvas.toDataURL();\n this.signaturetype = 'Image';\n this.enableCreateSignatureButton();\n var imageCheckbox = document.getElementById(\"checkbox2\");\n this.hideSignatureCheckbox(imageCheckbox);\n }\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n this.drawSignOnTabSwitch();\n if (headerText.toLocaleLowerCase() === 'upload' && this.imageSignatureDataUrl) {\n this.imageSignOnTabSwitch();\n }\n };\n Signature.prototype.enableCreateSignatureButton = function () {\n if (this.outputString !== \"\") {\n this.enableCreateButton(false);\n }\n else {\n this.enableCreateButton(true);\n }\n };\n Signature.prototype.showHideSignatureTab = function (displayMode, appearanceDiv, typeDiv, uploadDiv) {\n var items = [];\n if (displayMode & DisplayMode.Draw) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Draw-hand Signature'), 'label': 'DRAW' },\n content: appearanceDiv\n });\n }\n if (displayMode & DisplayMode.Text) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Type Signature'), 'label': 'TYPE' },\n content: typeDiv\n });\n }\n if (displayMode & DisplayMode.Upload) {\n items.push({\n header: { 'text': this.pdfViewer.localeObj.getConstant('Upload Signature'), 'label': 'UPLOAD' },\n content: uploadDiv\n });\n }\n return items;\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.createSignatureFileElement = function () {\n // eslint-disable-next-line\n var signImage = createElement('input', { id: this.pdfViewer.element.id + '_signElement', attrs: { 'type': 'file' } });\n signImage.setAttribute('accept', '.jpg,.jpeg,.png');\n signImage.style.position = 'absolute';\n signImage.style.left = '0px';\n signImage.style.top = '0px';\n signImage.style.visibility = 'hidden';\n document.body.appendChild(signImage);\n signImage.addEventListener('change', this.addStampImage);\n };\n Signature.prototype.uploadSignatureImage = function () {\n // eslint-disable-next-line\n var signImage = document.getElementById(this.pdfViewer.element.id + '_signElement');\n if (signImage) {\n signImage.click();\n }\n };\n Signature.prototype.renderSignatureText = function () {\n var maximumWidth = 750;\n // eslint-disable-next-line\n var fontDiv = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n // eslint-disable-next-line\n var textBox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n for (var i = 0; i < this.signfontStyle.length; i++) {\n this.fontsign[parseInt(i.toString(), 10)].innerHTML = textBox.value;\n this.fontsign[parseInt(i.toString(), 10)].style.fontFamily = this.signfontStyle[parseInt(i.toString(), 10)].FontName;\n if (this.signfontStyle[parseInt(i.toString(), 10)].FontName === 'Helvetica') {\n this.fontsign[parseInt(i.toString(), 10)].style.borderColor = 'red';\n }\n fontDiv.appendChild(this.fontsign[parseInt(i.toString(), 10)]);\n }\n for (var i = 0; i < this.signfontStyle.length; i++) {\n // eslint-disable-next-line\n var clickSign = document.getElementById('_font_signature' + i + '');\n clickSign.addEventListener('click', this.typeSignatureclick.bind(this));\n }\n this.enableCreateButton(false);\n this.enableClearbutton(false);\n if (this.pdfViewer.element.offsetWidth < maximumWidth)\n this.updateCanvasSize();\n this.drawSignOnTabSwitch();\n };\n Signature.prototype.typeSignatureclick = function () {\n var eventTarget = event.target;\n // eslint-disable-next-line\n var createButton = document.getElementsByClassName('e-pv-createbtn')[0];\n createButton.disabled = false;\n for (var i = 0; i < 4; i++) {\n // eslint-disable-next-line\n var fontElement = document.getElementById('_font_signature' + i + '');\n if (fontElement) {\n fontElement.style.borderColor = '';\n }\n }\n eventTarget.style.borderColor = 'red';\n this.outputString = eventTarget.textContent;\n try {\n this.fontName = JSON.parse(eventTarget.style.fontFamily);\n }\n catch (e) {\n this.fontName = eventTarget.style.fontFamily;\n }\n };\n /**\n * @param bounds\n * @param position\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addSignatureCollection = function (bounds, position) {\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n // eslint-disable-next-line\n var collectionData = processPathData(this.outputString);\n // eslint-disable-next-line\n var newCanvas = document.createElement('canvas');\n // eslint-disable-next-line\n var context = newCanvas.getContext('2d');\n // eslint-disable-next-line\n var imageString;\n var signatureType = this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType;\n if (signatureType === 'HandWrittenSignature') {\n if (collectionData.length !== 0) {\n // eslint-disable-next-line\n for (var k = 0; k < collectionData.length; k++) {\n // eslint-disable-next-line\n var val = collectionData[k];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = (val['x']);\n // eslint-disable-next-line\n maximumX = (val['x']);\n // eslint-disable-next-line\n minimumY = (val['y']);\n // eslint-disable-next-line\n maximumY = (val['y']);\n }\n else {\n // eslint-disable-next-line\n var point1 = (val['x']);\n // eslint-disable-next-line\n var point2 = (val['y']);\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n var differenceX = newdifferenceX / 100;\n var differenceY = newdifferenceY / 100;\n var left = 0;\n var top_1 = 0;\n if (bounds) {\n newCanvas.width = position.currentWidth;\n newCanvas.height = position.currentHeight;\n differenceX = newdifferenceX / (bounds.width);\n differenceY = newdifferenceY / (bounds.height);\n left = bounds.x - position.currentLeft;\n top_1 = bounds.y - position.currentTop;\n }\n else {\n newCanvas.width = 100;\n newCanvas.height = 100;\n }\n context.beginPath();\n for (var n = 0; n < collectionData.length; n++) {\n // eslint-disable-next-line\n var val = collectionData[n];\n // eslint-disable-next-line\n var point1 = ((val['x'] - minimumX) / differenceX) + left;\n // eslint-disable-next-line\n var point2 = ((val['y'] - minimumY) / differenceY) + top_1;\n // eslint-disable-next-line\n if (val['command'] === 'M') {\n context.moveTo(point1, point2);\n // eslint-disable-next-line\n }\n else if (val['command'] === 'L') {\n context.lineTo(point1, point2);\n }\n }\n context.stroke();\n context.closePath();\n imageString = newCanvas.toDataURL();\n }\n }\n else if (signatureType === 'SignatureText') {\n imageString = this.outputString;\n }\n else {\n imageString = this.outputString;\n }\n if (bounds) {\n this.saveImageString = imageString;\n }\n else {\n // eslint-disable-next-line\n var signCollection = {};\n signCollection['sign_' + this.pdfViewerBase.imageCount] = this.outputString;\n this.outputcollection.push(signCollection);\n // eslint-disable-next-line\n var signature = [];\n signature.push({ id: 'sign_' + this.pdfViewerBase.imageCount, imageData: imageString, signatureType: signatureType, fontFamily: this.pdfViewerBase.currentSignatureAnnot.fontFamily });\n this.signaturecollection.push({ image: signature, isInitial: this.pdfViewerBase.isInitialField });\n this.pdfViewerBase.imageCount++;\n }\n };\n /**\n * @private]\n * @param {number} limit - The limit.\n * @returns {number} - Returns number.\n */\n Signature.prototype.getSaveLimit = function (limit) {\n if (limit > this.maxSaveLimit) {\n limit = this.maxSaveLimit;\n }\n else if (limit < 1) {\n limit = 1;\n }\n return limit;\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.RenderSavedSignature = function () {\n this.pdfViewerBase.signatureCount++;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var annot;\n if (this.pdfViewerBase.isAddedSignClicked) {\n var annotationName = this.pdfViewer.annotation.createGUID();\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.isSignatureAdded = true;\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = 0;\n var currentTop = 0;\n // eslint-disable-next-line max-len\n var currentWidth = this.pdfViewer.handWrittenSignatureSettings.width ? this.pdfViewer.handWrittenSignatureSettings.width : 100;\n // eslint-disable-next-line max-len\n var currentHeight = this.pdfViewer.handWrittenSignatureSettings.height ? this.pdfViewer.handWrittenSignatureSettings.height : 100;\n // eslint-disable-next-line max-len\n var thickness = this.pdfViewer.handWrittenSignatureSettings.thickness ? this.pdfViewer.handWrittenSignatureSettings.thickness : 1;\n // eslint-disable-next-line max-len\n var opacity = this.pdfViewer.handWrittenSignatureSettings.opacity ? this.pdfViewer.handWrittenSignatureSettings.opacity : 1;\n // eslint-disable-next-line max-len\n var strokeColor = this.pdfViewer.handWrittenSignatureSettings.strokeColor ? this.pdfViewer.handWrittenSignatureSettings.strokeColor : '#000000';\n currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (currentWidth / 2)) / zoomvalue;\n // eslint-disable-next-line max-len\n currentTop = ((parseFloat(pageDiv.style.height) / 2) - (currentHeight / 2)) / zoomvalue;\n var keyString = '';\n var signatureType = void 0;\n var signatureFontFamily = void 0;\n for (var collection = 0; collection < this.outputcollection.length; collection++) {\n // eslint-disable-next-line\n var collectionAddedsign = this.outputcollection[collection];\n // eslint-disable-next-line\n var eventTarget = event.target;\n // eslint-disable-next-line max-len\n if (eventTarget && eventTarget.id === 'sign_' + collection || eventTarget && eventTarget.id === 'sign_border' + collection) {\n keyString = collectionAddedsign['sign_' + collection];\n break;\n }\n }\n for (var signatureIndex = 0; signatureIndex < this.signaturecollection.length; signatureIndex++) {\n var eventTarget = event.target;\n var signatureId = this.signaturecollection[parseInt(signatureIndex.toString(), 10)].image[0].id.split('_')[1];\n if (eventTarget && eventTarget.id === 'sign_' + signatureId || eventTarget && eventTarget.id === 'sign_border' + signatureId) {\n signatureType = this.signaturecollection[parseInt(signatureIndex.toString(), 10)].image[0].signatureType;\n signatureFontFamily = this.signaturecollection[parseInt(signatureIndex.toString(), 10)].image[0].fontFamily;\n break;\n }\n }\n if (signatureType === 'HandWrittenSignature') {\n // eslint-disable-next-line\n var signatureBounds = this.pdfViewer.formFieldsModule.updateSignatureAspectRatio(keyString, true);\n // eslint-disable-next-line max-len\n currentWidth = signatureBounds.width ? signatureBounds.width : currentWidth;\n // eslint-disable-next-line max-len\n currentHeight = signatureBounds.height ? signatureBounds.height : currentHeight;\n }\n else {\n currentWidth = currentWidth === 150 ? 200 : this.pdfViewer.handWrittenSignatureSettings.width;\n // eslint-disable-next-line max-len\n currentHeight = currentHeight === 100 ? 65 : this.pdfViewer.handWrittenSignatureSettings.height;\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: keyString,\n // eslint-disable-next-line max-len\n shapeAnnotationType: signatureType, opacity: opacity, fontFamily: signatureFontFamily, strokeColor: strokeColor, thickness: thickness, signatureName: annotationName\n };\n this.pdfViewerBase.currentSignatureAnnot = annot;\n this.pdfViewerBase.isAddedSignClicked = false;\n }\n else {\n this.pdfViewer.formFieldsModule.drawSignature();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.updateCanvasSize = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n this.setTabItemWidth(canvas);\n var uploadCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n this.setTabItemWidth(uploadCanvas);\n var fontAppearance = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n this.setTabItemWidth(fontAppearance);\n };\n Signature.prototype.setTabItemWidth = function (canvas) {\n var padding = 2;\n var maximumWidth = 750;\n var canvasWidth = 714;\n var margin = 50;\n var elem = document.querySelector('.e-dlg-content');\n if (elem) {\n var style = getComputedStyle(elem);\n padding = padding + parseInt(style.paddingLeft, 10) + parseInt(style.paddingRight, 10);\n }\n if (canvas && this.signatureDialog && this.signatureDialog.visible) {\n if (this.pdfViewer.element.offsetWidth > maximumWidth) {\n canvas.width = canvasWidth;\n canvas.style.width = canvasWidth + 'px';\n }\n else {\n canvas.width = this.pdfViewer.element.offsetWidth - padding;\n canvas.style.width = canvas.width + 'px';\n }\n }\n var fontInnerDiv = document.getElementsByClassName('e-pv-font-sign');\n if (canvas && fontInnerDiv && fontInnerDiv.length > 0) {\n for (var i = 0; i < fontInnerDiv.length; i++) {\n var fontDiv = fontInnerDiv[parseInt(i.toString(), 10)];\n fontDiv.style.width = ((canvas.width / 2) - margin) + 'px';\n }\n }\n };\n Signature.prototype.drawSignOnTabSwitch = function () {\n var proxy = this;\n var image = new Image();\n image.onload = function () {\n var canvas = document.getElementById(proxy.pdfViewer.element.id + '_signatureCanvas_');\n if (canvas) {\n var context = canvas.getContext('2d');\n context.drawImage(image, 0, 0);\n }\n };\n image.src = this.drawSignatureDataUrl;\n };\n Signature.prototype.imageSignOnTabSwitch = function () {\n var proxy = this;\n var image = new Image();\n image.onload = function () {\n var canvas = document.getElementById(proxy.pdfViewer.element.id + '_signatureuploadCanvas_');\n if (canvas) {\n var context = canvas.getContext('2d');\n var signbutton = document.getElementById(proxy.pdfViewer.element.id + '_e-pv-upload-button');\n signbutton.style.visibility = 'hidden';\n context.drawImage(image, 0, 0, canvas.width, canvas.height);\n proxy.enableCreateButton(false);\n proxy.signatureImageHeight = image.naturalHeight;\n proxy.signatureImageWidth = image.naturalWidth;\n }\n };\n image.src = this.imageSignatureDataUrl;\n };\n Signature.prototype.signaturePanelMouseDown = function (e) {\n if (e.type !== 'contextmenu') {\n e.preventDefault();\n this.findMousePosition(e);\n this.mouseDetection = true;\n this.oldX = this.mouseX;\n this.oldY = this.mouseY;\n this.newObject = [];\n this.drawMousePosition(e);\n this.mouseMoving = true;\n }\n };\n Signature.prototype.enableCreateButton = function (isEnable) {\n // eslint-disable-next-line\n var createbtn = document.getElementsByClassName('e-pv-createbtn')[0];\n if (createbtn) {\n createbtn.disabled = isEnable;\n }\n this.enableClearbutton(isEnable);\n };\n Signature.prototype.enableClearbutton = function (isEnable) {\n // eslint-disable-next-line\n var clearbtn = document.getElementsByClassName('e-pv-clearbtn')[0];\n if (clearbtn) {\n clearbtn.disabled = isEnable;\n }\n };\n Signature.prototype.signaturePanelMouseMove = function (e) {\n if (this.mouseDetection && this.signaturetype === 'Draw') {\n this.findMousePosition(e);\n this.enableCreateButton(false);\n this.drawMousePosition(e);\n }\n };\n Signature.prototype.findMousePosition = function (event) {\n if (event.type.indexOf('touch') !== -1) {\n event = event;\n var element = event.target;\n // eslint-disable-next-line\n var currentRect = element.getBoundingClientRect();\n this.mouseX = event.changedTouches[0].clientX - currentRect.left;\n this.mouseY = event.changedTouches[0].clientY - currentRect.top;\n }\n else {\n event = event;\n this.mouseX = event.offsetX;\n this.mouseY = event.offsetY;\n }\n };\n Signature.prototype.drawMousePosition = function (event) {\n if (this.mouseDetection) {\n this.drawSignatureInCanvas();\n this.oldX = this.mouseX;\n this.oldY = this.mouseY;\n }\n };\n Signature.prototype.drawSignatureInCanvas = function () {\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n context.beginPath();\n context.moveTo(this.oldX, this.oldY);\n context.lineTo(this.mouseX, this.mouseY);\n context.stroke();\n context.lineWidth = 2;\n context.arc(this.oldX, this.oldY, 2 / 2, 0, Math.PI * 2, true);\n context.closePath();\n this.newObject.push(this.mouseX, this.mouseY);\n };\n Signature.prototype.signaturePanelMouseUp = function () {\n if (this.mouseDetection) {\n this.convertToPath(this.newObject);\n }\n this.mouseDetection = false;\n if (event.type == 'touchend') {\n this.canvasTouched = true;\n }\n };\n Signature.prototype.signaturePanelMouseLeave = function () {\n if (this.mouseDetection) {\n this.convertToPath(this.newObject);\n }\n this.mouseDetection = false;\n this.mouseMoving = false;\n };\n \n // eslint-disable-next-line\n Signature.prototype.convertToPath = function (newObject) {\n this.movePath(newObject[0], newObject[1]);\n this.linePath(newObject[0], newObject[1]);\n for (var n = 2; n < newObject.length; n = n + 2) {\n this.linePath(newObject[parseInt(n.toString(), 10)], newObject[n + 1]);\n }\n };\n Signature.prototype.linePath = function (x, y) {\n this.outputString += 'L' + x + ',' + y + ' ';\n };\n Signature.prototype.movePath = function (x, y) {\n this.outputString += 'M' + x + ',' + y + ' ';\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.clearSignatureCanvas = function (type) {\n var isCanvasClear = true;\n var drawObject = [];\n if (type && !isNullOrUndefined(type.previousIndex) && !isNullOrUndefined(type.selectedIndex)) {\n isCanvasClear = false;\n if (type.previousIndex === 0) {\n this.drawOutputString = this.outputString;\n drawObject = this.newObject;\n }\n else if (type.previousIndex === 2) {\n this.imageOutputString = this.outputString;\n }\n this.outputString = '';\n this.newObject = [];\n if (type.selectedIndex === 0) {\n this.outputString = this.drawOutputString;\n this.newObject = drawObject;\n }\n else if (type.selectedIndex === 2) {\n this.outputString = this.imageOutputString;\n }\n }\n else {\n this.outputString = '';\n this.newObject = [];\n }\n var isClearDrawTab = false;\n var isClearTypeTab = false;\n var isClearImageTab = false;\n if (type && type.currentTarget && type.currentTarget.classList.contains(\"e-pv-clearbtn\")) {\n isCanvasClear = false;\n if (this.signaturetype === 'Draw') {\n isClearDrawTab = true;\n }\n else if (this.signaturetype === 'Type') {\n isClearTypeTab = true;\n }\n else {\n isClearImageTab = true;\n }\n }\n // eslint-disable-next-line\n var canvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n // eslint-disable-next-line\n if ((canvas && isCanvasClear) || (isClearDrawTab)) {\n // eslint-disable-next-line\n var context = canvas.getContext('2d');\n context.clearRect(0, 0, canvas.width, canvas.height);\n }\n // eslint-disable-next-line\n var imageCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureuploadCanvas_');\n if (imageCanvas && isCanvasClear || (isClearImageTab)) {\n // eslint-disable-next-line\n var context = imageCanvas.getContext('2d');\n context.clearRect(0, 0, imageCanvas.width, imageCanvas.height);\n // eslint-disable-next-line\n var signbutton = document.getElementById(this.pdfViewer.element.id + '_e-pv-upload-button');\n if (signbutton) {\n signbutton.style.visibility = '';\n }\n }\n // eslint-disable-next-line\n var fontdiv = document.getElementById(this.pdfViewer.element.id + '_font_appearance');\n // eslint-disable-next-line\n var textbox = document.getElementById(this.pdfViewer.element.id + '_e-pv-Signtext-box');\n if ((fontdiv && textbox && isCanvasClear) || (isClearTypeTab)) {\n textbox.value = '';\n if (!isBlazor()) {\n fontdiv.innerHTML = '';\n }\n }\n this.enableCreateButton(true);\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.closeSignaturePanel = function () {\n if (this.pdfViewerBase.currentTarget) {\n this.pdfViewerBase.drawSignatureWithTool = true;\n }\n this.clearSignatureCanvas();\n if (!isBlazor()) {\n this.signatureDialog.hide();\n }\n this.pdfViewerBase.isToolbarSignClicked = false;\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.drawOutputString = '';\n this.imageOutputString = '';\n };\n /**\n * @private\n * @returns {string} - Returns the string.\n */\n Signature.prototype.saveSignature = function () {\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n // eslint-disable-next-line\n var annotations = new Array();\n for (var j = 0; j < this.pdfViewerBase.pageCount; j++) {\n annotations[parseInt(j.toString(), 10)] = [];\n }\n if (storeObject) {\n var annotationCollection = JSON.parse(storeObject);\n for (var i = 0; i < annotationCollection.length; i++) {\n var newArray = [];\n var pageAnnotationObject = annotationCollection[parseInt(i.toString(), 10)];\n if (pageAnnotationObject) {\n for (var z = 0; pageAnnotationObject.annotations.length > z; z++) {\n // eslint-disable-next-line max-len\n var strokeColorString = pageAnnotationObject.annotations[parseInt(z.toString(), 10)].strokeColor ? pageAnnotationObject.annotations[parseInt(z.toString(), 10)].strokeColor : \"black\";\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].strokeColor = JSON.stringify(this.getRgbCode(strokeColorString));\n // eslint-disable-next-line max-len\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].bounds = JSON.stringify(this.pdfViewer.annotation.getBounds(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].bounds, pageAnnotationObject.pageIndex));\n if (pageAnnotationObject.annotations[parseInt(z.toString(), 10)].shapeAnnotationType === 'HandWrittenSignature' || pageAnnotationObject.annotations[parseInt(z.toString(), 10)].signatureName === 'ink') {\n // eslint-disable-next-line\n var collectionData = processPathData(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data = JSON.stringify(csData);\n }\n else {\n if (pageAnnotationObject.annotations[parseInt(z.toString(), 10)].shapeAnnotationType === 'SignatureText' && !this.checkDefaultFont(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontFamily)) {\n var signTypeCanvas = createElement('canvas');\n var bounds = JSON.parse(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].bounds);\n signTypeCanvas.width = (bounds && bounds.width) || 150;\n signTypeCanvas.height = (bounds && bounds.height) || pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontSize * 2;\n // eslint-disable-next-line\n var canvasContext = signTypeCanvas.getContext('2d');\n var x = signTypeCanvas.width / 2;\n var y = (signTypeCanvas.height / 2) + pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontSize / 2 - 10;\n canvasContext.textAlign = 'center';\n canvasContext.font = pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontSize + 'px ' + pageAnnotationObject.annotations[parseInt(z.toString(), 10)].fontFamily;\n canvasContext.fillText(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data, x, y);\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data = JSON.stringify(signTypeCanvas.toDataURL('image/png'));\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].shapeAnnotationType = 'SignatureImage';\n }\n else {\n pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data = JSON.stringify(pageAnnotationObject.annotations[parseInt(z.toString(), 10)].data);\n }\n }\n }\n newArray = pageAnnotationObject.annotations;\n }\n annotations[pageAnnotationObject.pageIndex] = newArray;\n }\n }\n return JSON.stringify(annotations);\n };\n Signature.prototype.checkDefaultFont = function (fontName) {\n // eslint-disable-next-line\n if (fontName === 'Helvetica' || fontName === 'Times New Roman' || fontName === 'Courier' || fontName === 'Symbol') {\n return true;\n }\n return false;\n };\n /**\n * @param colorString\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.getRgbCode = function (colorString) {\n /* eslint-disable-next-line security/detect-unsafe-regex */\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorString = this.pdfViewer.annotationModule.nameToHash(colorString);\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.pdfViewer.annotationModule.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseInt(stringArray[3]);\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @private\n * @param {number} left - The left.\n * @param {number} top - The top.\n * @returns {void}\n */\n Signature.prototype.renderSignature = function (left, top) {\n var annot;\n // eslint-disable-next-line\n var currentAnnotation = this.pdfViewerBase.currentSignatureAnnot;\n var annotationName = this.pdfViewer.annotation.createGUID();\n if (currentAnnotation) {\n if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'HandWrittenSignature') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'HandWrittenSignature', opacity: currentAnnotation.opacity, fontFamily: currentAnnotation.fontFamily, fontSize: currentAnnotation.fontSize, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'SignatureText') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'SignatureText', opacity: currentAnnotation.opacity, fontFamily: currentAnnotation.fontFamily, fontSize: currentAnnotation.fontSize, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n else if (this.pdfViewerBase.currentSignatureAnnot.shapeAnnotationType === 'SignatureImage') {\n annot = {\n // eslint-disable-next-line max-len\n id: currentAnnotation.id, bounds: { x: left, y: top, width: currentAnnotation.bounds.width, height: currentAnnotation.bounds.height }, pageIndex: currentAnnotation.pageIndex, data: currentAnnotation.data,\n shapeAnnotationType: 'SignatureImage', opacity: currentAnnotation.opacity, fontFamily: currentAnnotation.fontFamily, fontSize: currentAnnotation.fontSize, strokeColor: currentAnnotation.strokeColor, thickness: currentAnnotation.thickness, signatureName: annotationName\n };\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentAnnotation.pageIndex);\n this.pdfViewerBase.signatureAdded = true;\n // eslint-disable-next-line max-len\n this.storeSignatureData(currentAnnotation.pageIndex, annot);\n this.pdfViewer.fireSignatureAdd(currentAnnotation.pageIndex, currentAnnotation.signatureName, currentAnnotation.shapeAnnotationType, currentAnnotation.bounds, currentAnnotation.opacity, currentAnnotation.strokeColor, currentAnnotation.thickness);\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n }\n };\n /**\n * @param annotationCollection\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.renderExistingSignature = function (annotationCollection, pageIndex, isImport) {\n var annot;\n var isAnnotationAdded = false;\n if (!isImport) {\n for (var p = 0; p < this.signAnnotationIndex.length; p++) {\n if (this.signAnnotationIndex[parseInt(p.toString(), 10)] === pageIndex) {\n isAnnotationAdded = true;\n break;\n }\n }\n }\n if (annotationCollection && !isAnnotationAdded) {\n if (annotationCollection.length > 0 && this.signAnnotationIndex.indexOf(pageIndex) === -1) {\n this.signAnnotationIndex.push(pageIndex);\n }\n for (var n = 0; n < annotationCollection.length; n++) {\n // eslint-disable-next-line\n var currentAnnotation = annotationCollection[n];\n if (currentAnnotation) {\n // eslint-disable-next-line\n var data = currentAnnotation.PathData;\n if (isImport) {\n if (currentAnnotation.IsSignature) {\n data = currentAnnotation.PathData;\n }\n else if (currentAnnotation.AnnotationType === 'SignatureImage' || currentAnnotation.AnnotationType === 'SignatureText') {\n data = JSON.parse(JSON.stringify(currentAnnotation.PathData));\n }\n else {\n if (data.includes('command')) {\n data = getPathString(JSON.parse(currentAnnotation.PathData));\n }\n else {\n data = currentAnnotation.PathData;\n }\n }\n }\n this.outputString = data;\n this.outputString = '';\n var rectDiff = 0;\n var rectDifference = 1;\n var bounds = currentAnnotation.Bounds;\n var currentLeft = !isNullOrUndefined(bounds.X) ? bounds.X + (rectDiff / 2) : bounds.x + (rectDiff / 2);\n var currentTop = !isNullOrUndefined(bounds.Y) ? bounds.Y + (rectDiff / 2) : bounds.y + (rectDiff / 2);\n var currentWidth = bounds.Width ? bounds.Width - (rectDifference - 1) : bounds.width - (rectDifference - 1);\n var currentHeight = bounds.Height ? bounds.Height - (rectDifference - 1) : bounds.height - (rectDifference - 1);\n if (currentAnnotation.AnnotationType === 'SignatureText') {\n annot = {\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data, fontFamily: currentAnnotation.FontFamily, fontSize: currentAnnotation.FontSize,\n shapeAnnotationType: 'SignatureText', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName\n };\n }\n else if (currentAnnotation.AnnotationType === 'SignatureImage') {\n annot = {\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data, shapeAnnotationType: 'SignatureImage', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName\n };\n }\n else {\n annot = {\n id: 'sign' + this.pdfViewerBase.signatureCount, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data, shapeAnnotationType: 'HandWrittenSignature', opacity: currentAnnotation.Opacity, strokeColor: currentAnnotation.StrokeColor, thickness: currentAnnotation.Thickness, signatureName: currentAnnotation.SignatureName ? currentAnnotation.SignatureName : \"ink\"\n };\n }\n }\n this.pdfViewer.add(annot);\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentAnnotation.pageIndex);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, annot.pageIndex);\n this.storeSignatureData(annot.pageIndex, annot);\n this.pdfViewerBase.currentSignatureAnnot = null;\n this.pdfViewerBase.signatureCount++;\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.navigationPane && this.pdfViewerBase.navigationPane.annotationMenuObj && this.pdfViewer.isSignatureEditable) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export Annotations')], true);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.annotationMenuObj.enableItems([this.pdfViewer.localeObj.getConstant('Export XFDF')], true);\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param annotations\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.storeSignatureData = function (pageNumber, annotations) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(annotations.pageIndex ? annotations.pageIndex : annotations.PageIndex, null, annotations, 'Addition', '', annotations, annotations);\n var annotation = null;\n var left;\n var top;\n var width;\n var height;\n var pageIndex;\n if (annotations.bounds) {\n left = annotations.bounds.left ? annotations.bounds.left : annotations.bounds.x;\n top = annotations.bounds.top ? annotations.bounds.top : annotations.bounds.y;\n width = annotations.bounds.width;\n height = annotations.bounds.height;\n pageIndex = annotations.pageIndex;\n }\n else {\n left = annotations.Bounds.left ? annotations.Bounds.left : annotations.Bounds.x;\n top = annotations.Bounds.top ? annotations.Bounds.top : annotations.Bounds.y;\n width = annotations.LineBounds.Width;\n height = annotations.LineBounds.Height;\n pageIndex = annotations.PageIndex;\n }\n if (annotations.wrapper && annotations.wrapper.bounds) {\n left = annotations.wrapper.bounds.left;\n top = annotations.wrapper.bounds.top;\n }\n annotation = {\n id: annotations.id ? annotations.id : null, bounds: { left: left, top: top, width: width, height: height }, shapeAnnotationType: annotations.shapeAnnotationType ? annotations.shapeAnnotationType : \"ink\", opacity: annotations.opacity ? annotations.opacity : 1, thickness: annotations.thickness ? annotations.thickness : 1, strokeColor: annotations.strokeColor ? annotations.strokeColor : null, pageIndex: pageIndex, data: annotations.data ? annotations.data : annotations.Value, fontSize: annotations.fontSize ? annotations.fontSize : null, fontFamily: annotations.fontFamily ? annotations.fontFamily : null, signatureName: annotations.signatureName ? annotations.signatureName : annotations.Name\n };\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n // eslint-disable-next-line\n var currentAnnotation = Math.round(JSON.stringify(annotation).length / 1024);\n if ((sessionSize + currentAnnotation) > 4500) {\n this.pdfViewerBase.isStorageExceed = true;\n this.pdfViewer.annotationModule.clearAnnotationStorage();\n if (!(this.pdfViewerBase.isFormStorageExceed)) {\n this.pdfViewer.formFieldsModule.clearFormFieldStorage();\n }\n }\n // eslint-disable-next-line\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var index = 0;\n if (!storeObject) {\n this.storeSignatureCollections(annotation, pageNumber);\n var shapeAnnotation = { pageIndex: pageNumber, annotations: [] };\n shapeAnnotation.annotations.push(annotation);\n index = shapeAnnotation.annotations.indexOf(annotation);\n var annotationCollection = [];\n annotationCollection.push(shapeAnnotation);\n var annotationStringified = JSON.stringify(annotationCollection);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n else {\n this.storeSignatureCollections(annotation, pageNumber);\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var pageIndex_1 = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (!isNullOrUndefined(pageIndex_1) && annotObject[parseInt(pageIndex_1.toString(), 10)]) {\n annotObject[parseInt(pageIndex_1.toString(), 10)].annotations.push(annotation);\n index = annotObject[parseInt(pageIndex_1.toString(), 10)].annotations.indexOf(annotation);\n }\n else {\n var markupAnnotation = { pageIndex: pageNumber, annotations: [] };\n markupAnnotation.annotations.push(annotation);\n index = markupAnnotation.annotations.indexOf(annotation);\n annotObject.push(markupAnnotation);\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n };\n /**\n * @param property\n * @param pageNumber\n * @param annotationBase\n * @param isSignatureEdited\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.modifySignatureCollection = function (property, pageNumber, annotationBase, isSignatureEdited) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n var currentAnnotObject = null;\n var pageAnnotations = this.getAnnotations(pageNumber, null);\n if (pageAnnotations != null && annotationBase) {\n for (var i = 0; i < pageAnnotations.length; i++) {\n if (annotationBase.id === pageAnnotations[parseInt(i.toString(), 10)].id) {\n if (property === 'bounds') {\n // eslint-disable-next-line max-len\n pageAnnotations[parseInt(i.toString(), 10)].bounds = { left: annotationBase.wrapper.bounds.left, top: annotationBase.wrapper.bounds.top, width: annotationBase.bounds.width, height: annotationBase.bounds.height };\n pageAnnotations[parseInt(i.toString(), 10)].fontSize = annotationBase.fontSize;\n }\n else if (property === 'stroke') {\n pageAnnotations[parseInt(i.toString(), 10)].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n }\n else if (property === 'opacity') {\n pageAnnotations[parseInt(i.toString(), 10)].opacity = annotationBase.wrapper.children[0].style.opacity;\n }\n else if (property === 'thickness') {\n pageAnnotations[parseInt(i.toString(), 10)].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n }\n else if (property === 'delete') {\n this.updateSignatureCollection(pageAnnotations[parseInt(i.toString(), 10)]);\n currentAnnotObject = pageAnnotations.splice(i, 1)[0];\n break;\n }\n if (property && property !== 'delete') {\n this.storeSignatureCollections(pageAnnotations[parseInt(i.toString(), 10)], pageNumber);\n }\n if (isSignatureEdited) {\n pageAnnotations[parseInt(i.toString(), 10)].opacity = annotationBase.wrapper.children[0].style.opacity;\n pageAnnotations[parseInt(i.toString(), 10)].strokeColor = annotationBase.wrapper.children[0].style.strokeColor;\n pageAnnotations[parseInt(i.toString(), 10)].thickness = annotationBase.wrapper.children[0].style.strokeWidth;\n this.storeSignatureCollections(pageAnnotations[parseInt(i.toString(), 10)], pageNumber);\n break;\n }\n }\n }\n this.manageAnnotations(pageAnnotations, pageNumber);\n }\n return currentAnnotObject;\n };\n /**\n * @param annotation\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.storeSignatureCollections = function (annotation, pageNumber) {\n // eslint-disable-next-line\n var collectionDetails = this.checkSignatureCollection(annotation);\n // eslint-disable-next-line\n var selectAnnotation = cloneObject(annotation);\n selectAnnotation.annotationId = annotation.signatureName;\n selectAnnotation.pageNumber = pageNumber;\n delete selectAnnotation.annotName;\n if (annotation.id) {\n selectAnnotation.uniqueKey = annotation.id;\n delete selectAnnotation.id;\n }\n if (collectionDetails.isExisting) {\n this.pdfViewer.signatureCollection.splice(collectionDetails.position, 0, selectAnnotation);\n }\n else {\n this.pdfViewer.signatureCollection.push(selectAnnotation);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.checkSignatureCollection = function (signature) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.signatureCollection;\n if (collections && signature) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[parseInt(i.toString(), 10)].annotationId === signature.signatureName) {\n this.pdfViewer.signatureCollection.splice(i, 1);\n return { isExisting: true, position: i };\n }\n }\n }\n return { isExisting: false, position: null };\n };\n /**\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.updateSignatureCollection = function (signature) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.signatureCollection;\n if (collections && signature) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[parseInt(i.toString(), 10)].annotationId === signature.signatureName) {\n this.pdfViewer.signatureCollection.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * @param pageNumber\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.addInCollection = function (pageNumber, signature) {\n if (signature) {\n this.storeSignatureCollections(signature, pageNumber);\n // eslint-disable-next-line\n var pageSignatures = this.getAnnotations(pageNumber, null);\n if (pageSignatures) {\n pageSignatures.push(signature);\n }\n this.manageAnnotations(pageSignatures, pageNumber);\n }\n };\n // eslint-disable-next-line\n Signature.prototype.getAnnotations = function (pageIndex, shapeAnnotations) {\n // eslint-disable-next-line\n var annotationCollection;\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageIndex);\n if (annotObject[parseInt(index.toString(), 10)]) {\n annotationCollection = annotObject[parseInt(index.toString(), 10)].annotations;\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n }\n else {\n annotationCollection = shapeAnnotations;\n }\n return annotationCollection;\n };\n Signature.prototype.manageAnnotations = function (pageAnnotations, pageNumber) {\n // eslint-disable-next-line\n var storeObject = null;\n if (this.pdfViewerBase.isStorageExceed) {\n storeObject = this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'];\n }\n else {\n storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_sign');\n }\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_annotations_sign');\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, pageNumber);\n if (annotObject[parseInt(index.toString(), 10)]) {\n annotObject[parseInt(index.toString(), 10)].annotations = pageAnnotations;\n }\n var annotationStringified = JSON.stringify(annotObject);\n if (this.pdfViewerBase.isStorageExceed) {\n this.pdfViewerBase.annotationStorage[this.pdfViewerBase.documentId + '_annotations_sign'] = annotationStringified;\n }\n else {\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_sign', annotationStringified);\n }\n }\n };\n /**\n * @private\n * @param {boolean} isShow - Returns the true or false.\n * @returns {void}\n */\n Signature.prototype.showSignatureDialog = function (isShow) {\n if (isShow) {\n this.createSignaturePanel();\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.setAnnotationMode = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.showSignatureDialog(true);\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.setInitialMode = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.pdfViewerBase.isInitialField = true;\n this.showSignatureDialog(true);\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @param signature\n * @param pageIndex\n * @param isImport\n * @private\n */\n // eslint-disable-next-line\n Signature.prototype.updateSignatureCollections = function (signature, pageIndex, isImport) {\n var annot;\n // eslint-disable-next-line\n if (signature) {\n // eslint-disable-next-line\n var bounds = signature.Bounds;\n var currentLeft = bounds.X;\n var currentTop = bounds.Y;\n var currentWidth = bounds.Width;\n var currentHeight = bounds.Height;\n // eslint-disable-next-line\n var data = signature.PathData;\n if (isImport) {\n data = getPathString(JSON.parse(signature.PathData));\n }\n annot = {\n // eslint-disable-next-line max-len\n id: 'sign' + signature.SignatureName, bounds: { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight }, pageIndex: pageIndex, data: data,\n shapeAnnotationType: 'HandWrittenSignature', opacity: signature.Opacity, strokeColor: signature.StrokeColor, thickness: signature.Thickness, signatureName: signature.SignatureName\n };\n return annot;\n }\n };\n /**\n * @private\n * @returns {void}\n */\n Signature.prototype.destroy = function () {\n window.sessionStorage.removeItem('_annotations_sign');\n // eslint-disable-next-line\n var signImage = document.getElementById(this.pdfViewer.element.id + '_signElement');\n if (signImage) {\n signImage.removeEventListener('change', this.addStampImage);\n if (signImage.parentElement)\n signImage.parentElement.removeChild(signImage);\n }\n if (this.signatureDialog)\n this.signatureDialog.destroy();\n };\n return Signature;\n}());\n\n/* eslint-disable */\n/**\n * Magnification module\n */\nvar Magnification = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param viewerBase\n * @private\n */\n function Magnification(pdfViewer, viewerBase) {\n /**\n * @private\n */\n this.zoomFactor = 1;\n /**\n * @private\n */\n this.previousZoomFactor = 1;\n this.scrollWidth = 25;\n this.zoomPercentages = [10, 25, 50, 75, 100, 125, 150, 200, 400];\n this.isNotPredefinedZoom = false;\n this.pinchStep = 0;\n this.reRenderPageNumber = 0;\n // eslint-disable-next-line\n this.magnifyPageRerenderTimer = null;\n // eslint-disable-next-line\n this.rerenderOnScrollTimer = null;\n // eslint-disable-next-line\n this.rerenderInterval = null;\n this.touchCenterX = 0;\n this.touchCenterY = 0;\n this.mouseCenterX = 0;\n this.mouseCenterY = 0;\n this.pageRerenderCount = 0;\n this.imageObjects = [];\n this.topValue = 0;\n this.isTapToFitZoom = false;\n /**\n * @private\n */\n this.fitType = null;\n /**\n * @private\n */\n this.isPinchZoomed = false;\n /**\n * @private\n */\n this.isPagePinchZoomed = false;\n /**\n * @private\n */\n this.isRerenderCanvasCreated = false;\n /**\n * @private\n */\n this.isMagnified = false;\n /**\n * @private\n */\n this.isPagesZoomed = false;\n /**\n * @private\n */\n this.isPinchScrolled = false;\n /**\n * @private\n */\n this.isAutoZoom = false;\n /**\n * @private\n */\n this.isDoubleTapZoom = false;\n /**\n * @private\n */\n this.isFormFieldPageZoomed = false;\n this.isWebkitMobile = false;\n this.isFitToPageMode = true;\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = viewerBase;\n this.zoomLevel = 2;\n // eslint-disable-next-line max-len\n this.isWebkitMobile = /Chrome/.test(navigator.userAgent) || /Google Inc/.test(navigator.vendor) || (navigator.userAgent.indexOf('Safari') !== -1);\n }\n /**\n * Zoom the PDF document to the given zoom value\n *\n * @param {number} zoomValue - Specifies the Zoom Value for magnify the PDF document\n * @returns void\n */\n Magnification.prototype.zoomTo = function (zoomValue) {\n var MaximumZoomPercentage = 400;\n var MinmumZoomPercentage = 10;\n if (zoomValue < MinmumZoomPercentage) {\n zoomValue = MinmumZoomPercentage;\n }\n else if (zoomValue > MaximumZoomPercentage) {\n zoomValue = MaximumZoomPercentage;\n }\n this.fitType = null;\n this.isNotPredefinedZoom = false;\n if (this.isAutoZoom && this.isInitialLoading) {\n this.pdfViewerBase.onWindowResize();\n }\n else {\n this.isAutoZoom = false;\n this.onZoomChanged(zoomValue);\n }\n this.isInitialLoading = false;\n };\n /**\n * Magnifies the page to the next value in the zoom drop down list.\n *\n * @returns void\n */\n Magnification.prototype.zoomIn = function () {\n if (this.fitType || this.isNotPredefinedZoom) {\n this.zoomLevel = this.lowerZoomLevel;\n this.fitType = null;\n }\n this.isNotPredefinedZoom = false;\n if (this.zoomLevel >= 8) {\n this.zoomLevel = 8;\n }\n else {\n this.zoomLevel++;\n }\n this.isAutoZoom = false;\n this.onZoomChanged(this.zoomPercentages[this.zoomLevel]);\n };\n /**\n * Magnifies the page to the previous value in the zoom drop down list.\n *\n * @returns void\n */\n Magnification.prototype.zoomOut = function () {\n if (this.fitType || this.isNotPredefinedZoom) {\n this.zoomLevel = this.higherZoomLevel;\n this.fitType = null;\n }\n this.isNotPredefinedZoom = false;\n if (this.zoomLevel <= 0) {\n this.zoomLevel = 0;\n }\n else {\n this.zoomLevel--;\n }\n this.isAutoZoom = false;\n this.onZoomChanged(this.zoomPercentages[this.zoomLevel]);\n };\n /**\n * Scales the page to fit the page width to the width of the container in the control.\n *\n * @returns void\n */\n Magnification.prototype.fitToWidth = function () {\n this.isAutoZoom = false;\n var zoomValue = this.calculateFitZoomFactor('fitToWidth');\n this.onZoomChanged(zoomValue);\n };\n /**\n * @private\n */\n Magnification.prototype.fitToAuto = function () {\n this.isAutoZoom = true;\n var zoomValue = this.calculateFitZoomFactor('fitToWidth');\n this.onZoomChanged(zoomValue);\n };\n /**\n * Scales the page to fit the page in the container in the control.\n *\n * @param {number} zoomValue - Defines the Zoom Value for fit the page in the Container\n * @returns void\n */\n Magnification.prototype.fitToPage = function () {\n var zoomValue = this.calculateFitZoomFactor('fitToPage');\n if (zoomValue !== null) {\n this.isAutoZoom = false;\n this.onZoomChanged(zoomValue);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (this.isWebkitMobile) {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'hidden';\n }\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n if (this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1]) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top * this.zoomFactor;\n }\n }\n };\n /**\n * Returns zoom factor for the fit zooms.\n *\n * @param type\n */\n Magnification.prototype.calculateFitZoomFactor = function (type) {\n var viewerWidth = this.pdfViewerBase.viewerContainer.getBoundingClientRect().width;\n var viewerHeight = this.pdfViewerBase.viewerContainer.getBoundingClientRect().height;\n if (viewerWidth === 0 && viewerHeight === 0) {\n viewerWidth = parseFloat(this.pdfViewer.width.toString());\n viewerHeight = parseFloat(this.pdfViewer.height.toString());\n }\n if (isNaN(viewerHeight) || isNaN(viewerWidth)) {\n return null;\n }\n this.fitType = type;\n if (this.fitType === 'fitToWidth') {\n var scaleX = ((viewerWidth - this.scrollWidth) / this.pdfViewerBase.highestWidth);\n if (this.isAutoZoom) {\n this.fitType = null;\n scaleX = Math.min(1, scaleX);\n if (scaleX === 1) {\n this.zoomLevel = 2;\n }\n }\n // eslint-disable-next-line radix\n return parseInt((scaleX * 100).toString());\n }\n else {\n this.isFitToPageMode = true;\n var pageLeft = 10;\n var scaleX = ((viewerWidth - this.scrollWidth - pageLeft) / this.pdfViewerBase.highestWidth);\n var scaleY = (viewerHeight / this.pdfViewerBase.highestHeight);\n if (scaleY > scaleX) {\n scaleY = scaleX;\n this.isFitToPageMode = false;\n }\n // eslint-disable-next-line radix\n return parseInt((scaleY * 100).toString());\n }\n };\n /**\n * Initiating cursor based zoom.\n * @private\n */\n Magnification.prototype.initiateMouseZoom = function (pointX, pointY, zoomValue) {\n var pointInViewer = this.positionInViewer(pointX, pointY);\n this.mouseCenterX = pointInViewer.x;\n this.mouseCenterY = pointInViewer.y;\n this.zoomTo(zoomValue);\n };\n /**\n * Performs pinch in operation\n */\n Magnification.prototype.pinchIn = function () {\n this.fitType = null;\n var temporaryZoomFactor = this.zoomFactor - this.pinchStep;\n if (temporaryZoomFactor < 4 && temporaryZoomFactor > 2) {\n temporaryZoomFactor = this.zoomFactor - this.pinchStep;\n }\n if (temporaryZoomFactor <= 1.5) {\n temporaryZoomFactor = this.zoomFactor - (this.pinchStep / 1.5);\n }\n if (temporaryZoomFactor < 0.25) {\n temporaryZoomFactor = 0.25;\n }\n this.isPinchZoomed = true;\n this.onZoomChanged(temporaryZoomFactor * 100);\n this.isTapToFitZoom = true;\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && (this.zoomFactor * 100) === 50) {\n var zoomValue = this.calculateFitZoomFactor('fitToWidth');\n this.fitType = null;\n if (zoomValue <= 50) {\n this.fitToWidth();\n }\n }\n };\n /**\n * Performs pinch out operation\n */\n Magnification.prototype.pinchOut = function () {\n this.fitType = null;\n var temporaryZoomFactor = this.zoomFactor + this.pinchStep;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (temporaryZoomFactor > 4) {\n temporaryZoomFactor = 4;\n }\n }\n else {\n if (temporaryZoomFactor > 2) {\n temporaryZoomFactor = temporaryZoomFactor + this.pinchStep;\n }\n if (temporaryZoomFactor > 4) {\n temporaryZoomFactor = 4;\n }\n }\n this.isTapToFitZoom = true;\n this.isPinchZoomed = true;\n this.onZoomChanged(temporaryZoomFactor * 100);\n };\n /**\n * returns zoom level for the zoom factor.\n *\n * @param zoomFactor\n */\n Magnification.prototype.getZoomLevel = function (zoomFactor) {\n var min = 0;\n var max = this.zoomPercentages.length - 1;\n while ((min <= max) && !(min === 0 && max === 0)) {\n var mid = Math.round((min + max) / 2);\n if (this.zoomPercentages[mid] <= zoomFactor) {\n min = mid + 1;\n }\n else if (this.zoomPercentages[mid] >= zoomFactor) {\n max = mid - 1;\n }\n }\n this.higherZoomLevel = min;\n this.lowerZoomLevel = max;\n return max;\n };\n /**\n * @private\n */\n Magnification.prototype.checkZoomFactor = function () {\n return this.zoomPercentages.indexOf(this.zoomFactor * 100) > -1;\n };\n /**\n * Executes when the zoom or pinch operation is performed\n *\n * @param zoomValue\n */\n Magnification.prototype.onZoomChanged = function (zoomValue) {\n if (zoomValue) {\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.closePopupMenu();\n }\n this.previousZoomFactor = this.zoomFactor;\n this.zoomLevel = this.getZoomLevel(zoomValue);\n this.zoomFactor = this.getZoomFactor(zoomValue);\n if (this.zoomFactor <= 0.25) {\n this.pdfViewerBase.isMinimumZoom = true;\n }\n else {\n this.pdfViewerBase.isMinimumZoom = false;\n }\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (this.isWebkitMobile) {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'hidden';\n }\n }\n else {\n this.pdfViewerBase.viewerContainer.style.overflowY = 'auto';\n }\n if (this.pdfViewerBase.pageCount > 0) {\n if ((this.previousZoomFactor !== this.zoomFactor)) {\n if (!this.isPinchZoomed) {\n this.magnifyPages();\n }\n else {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.mobilePageNoContainer.style.left = (this.pdfViewer.element.clientWidth / 2) - (parseFloat(this.pdfViewerBase.mobilePageNoContainer.style.width) / 2) + 'px';\n }\n this.responsivePages();\n }\n }\n if (!isBlazor()) {\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateZoomButtons();\n }\n }\n if (!this.isInitialLoading) {\n if (this.previousZoomFactor !== this.zoomFactor) {\n // eslint-disable-next-line\n this.pdfViewer.zoomValue = parseInt((this.zoomFactor * 100).toString());\n this.pdfViewer.fireZoomChange();\n }\n }\n }\n if (this.pdfViewer.toolbarModule) {\n this.pdfViewer.toolbarModule.updateZoomPercentage(this.zoomFactor);\n }\n if (!this.isInitialLoading) {\n if (this.previousZoomFactor !== this.zoomFactor) {\n this.pdfViewer.zoomValue = parseInt((this.zoomFactor * 100).toString());\n this.pdfViewer.fireZoomChange();\n }\n }\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.isPinchZoomed) {\n // eslint-disable-next-line radix\n var zoomPercentage = parseInt((this.zoomFactor * 100).toString()) + '%';\n this.pdfViewerBase.navigationPane.createTooltipMobile(zoomPercentage);\n }\n }\n };\n /**\n * @param clientX\n * @param clientY\n * @private\n */\n Magnification.prototype.setTouchPoints = function (clientX, clientY) {\n var pointInViewer = this.positionInViewer(clientX, clientY);\n this.touchCenterX = pointInViewer.x;\n this.touchCenterY = pointInViewer.y;\n };\n /**\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @param pointX1\n * @param pointY1\n * @param pointX2\n * @param pointY2\n * @private\n */\n Magnification.prototype.initiatePinchMove = function (pointX1, pointY1, pointX2, pointY2) {\n this.isPinchScrolled = false;\n this.isMagnified = false;\n this.reRenderPageNumber = this.pdfViewerBase.currentPageNumber;\n var pointInViewer = this.positionInViewer((pointX1 + pointX2) / 2, (pointY1 + pointY2) / 2);\n this.touchCenterX = pointInViewer.x;\n this.touchCenterY = pointInViewer.y;\n this.zoomOverPages(pointX1, pointY1, pointX2, pointY2);\n };\n Magnification.prototype.magnifyPages = function () {\n this.clearRerenderTimer();\n if (!this.isPagesZoomed) {\n this.reRenderPageNumber = this.pdfViewerBase.currentPageNumber;\n }\n if (!this.pdfViewerBase.documentLoaded && !this.pdfViewerBase.isInitialPageMode) {\n this.isPagesZoomed = true;\n }\n var scrollValue = this.pdfViewerBase.viewerContainer.scrollTop;\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.maintainSelectionOnZoom(false, true);\n }\n if (this.pdfViewer.formDesignerModule && !this.pdfViewerBase.documentLoaded && !this.pdfViewerBase.isDocumentLoaded) {\n this.isFormFieldPageZoomed = true;\n }\n if (!this.isInitialLoading) {\n this.isMagnified = true;\n }\n this.updatePageLocation();\n this.resizeCanvas(this.reRenderPageNumber);\n this.calculateScrollValuesOnMouse(scrollValue);\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.resizeTouchElements();\n }\n // eslint-disable-next-line\n var annotModule = this.pdfViewer.annotationModule;\n if (annotModule && annotModule.textMarkupAnnotationModule) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.updateCurrentResizerPosition();\n }\n if (this.pdfViewerBase.pageSize.length > 0) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.pageContainer.style.height = this.topValue + this.pdfViewerBase.getPageHeight(this.pdfViewerBase.pageSize.length - 1) + 'px';\n // eslint-disable-next-line\n var proxy_1 = this;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n if (!this.pdfViewerBase.documentLoaded) {\n this.magnifyPageRerenderTimer = setTimeout(function () {\n proxy_1.rerenderMagnifiedPages();\n }, 800);\n }\n }\n };\n Magnification.prototype.updatePageLocation = function () {\n this.topValue = 0;\n for (var i = 1; i < this.pdfViewerBase.pageSize.length; i++) {\n this.topValue += (this.pdfViewerBase.pageSize[i].height + this.pdfViewerBase.pageGap) * this.zoomFactor;\n }\n var limit = this.pdfViewerBase.pageCount < 10 ? this.pdfViewerBase.pageCount : 10;\n for (var i = 0; i < limit; i++) {\n this.updatePageContainer(i, this.pdfViewerBase.getPageWidth(i), this.pdfViewerBase.getPageHeight(i), this.pdfViewerBase.getPageTop(i), true);\n }\n };\n Magnification.prototype.updatePageContainer = function (pageNumber, pageWidth, pageHeight, topValue, isReRender) {\n // eslint-disable-next-line\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + pageNumber);\n if (pageDiv) {\n pageDiv.style.width = pageWidth + 'px';\n pageDiv.style.height = pageHeight + 'px';\n // eslint-disable-next-line\n var textLayerDiv = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (textLayerDiv) {\n textLayerDiv.style.width = pageWidth + 'px';\n textLayerDiv.style.height = pageHeight + 'px';\n }\n pageDiv.style.width = pageWidth + 'px';\n pageDiv.style.height = pageHeight + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv.style.right = this.pdfViewerBase.updateLeftPosition(pageNumber) + 'px';\n }\n else {\n pageDiv.style.left = this.pdfViewerBase.updateLeftPosition(pageNumber) + 'px';\n }\n pageDiv.style.top = topValue + 'px';\n this.pdfViewerBase.pageContainer.style.width = this.pdfViewerBase.viewerContainer.clientWidth + 'px';\n this.pdfViewerBase.renderPageCanvas(pageDiv, pageWidth, pageHeight, pageNumber, 'block');\n }\n };\n Magnification.prototype.clearRerenderTimer = function () {\n clearTimeout(this.rerenderOnScrollTimer);\n clearTimeout(this.magnifyPageRerenderTimer);\n this.clearIntervalTimer();\n this.isPinchScrolled = false;\n };\n /**\n * @private\n */\n Magnification.prototype.clearIntervalTimer = function () {\n clearInterval(this.rerenderInterval);\n this.rerenderInterval = null;\n this.clearRendering();\n var oldCanvases = document.querySelectorAll('canvas[id*=\"' + this.pdfViewer.element.id + '_oldCanvas_\"]');\n for (var i = 0; i < oldCanvases.length; i++) {\n // eslint-disable-next-line\n var pageNumber = parseInt(oldCanvases[i].id.split('_oldCanvas_')[1]);\n var pageCanvas = this.pdfViewerBase.getElement('_pageCanvas_' + pageNumber);\n if (pageCanvas) {\n oldCanvases[i].id = pageCanvas.id;\n pageCanvas.parentElement.removeChild(pageCanvas);\n }\n else {\n oldCanvases[i].id = this.pdfViewer.element.id + '_pageCanvas_' + pageNumber;\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotationsPinch(i);\n }\n }\n this.isRerenderCanvasCreated = false;\n };\n /**\n * @param image\n * @private\n */\n Magnification.prototype.pushImageObjects = function (image) {\n if (!isNullOrUndefined(this.imageObjects)) {\n this.imageObjects && this.imageObjects.push(image);\n }\n };\n Magnification.prototype.clearRendering = function () {\n if (this.imageObjects) {\n for (var j = 0; j < this.imageObjects.length; j++) {\n if (this.imageObjects[j]) {\n this.imageObjects[j].onload = null;\n }\n }\n this.imageObjects = [];\n }\n };\n Magnification.prototype.rerenderMagnifiedPages = function () {\n if ((this.pdfViewerBase.isInitialLoaded || this.pdfViewerBase.isDocumentLoaded) && !this.pdfViewerBase.isInitialPageMode) {\n this.renderInSeparateThread(this.reRenderPageNumber);\n this.isPagesZoomed = false;\n }\n else if (this.pdfViewerBase.isInitialPageMode) {\n this.pageRerenderCount = 0;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n this.isMagnified = false;\n this.pdfViewerBase.pageViewScrollChanged(this.reRenderPageNumber);\n this.pdfViewerBase.isInitialPageMode = false;\n }\n };\n Magnification.prototype.renderInSeparateThread = function (pageNumber) {\n var _this = this;\n this.designNewCanvas(pageNumber);\n this.pageRerenderCount = 0;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n this.isMagnified = false;\n this.pdfViewerBase.pageViewScrollChanged(this.reRenderPageNumber);\n // eslint-disable-next-line\n var proxy = this;\n this.rerenderInterval = setInterval(function () {\n _this.initiateRerender(proxy);\n }, 1);\n };\n Magnification.prototype.responsivePages = function () {\n this.isPagesZoomed = true;\n this.clearRerenderTimer();\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.clearTextSelection();\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.clearAllOccurrences();\n }\n var scrollValue = this.pdfViewerBase.viewerContainer.scrollTop;\n this.isAutoZoom = false;\n this.updatePageLocation();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.pageContainer.style.height = this.topValue + this.pdfViewerBase.pageSize[this.pdfViewerBase.pageSize.length - 1].height * this.zoomFactor + 'px';\n this.resizeCanvas(this.pdfViewerBase.currentPageNumber);\n if (this.pdfViewerBase.textLayer && this.pdfViewer.formDesignerModule) {\n this.pdfViewerBase.textLayer.clearTextLayers(true);\n }\n if (this.isPinchZoomed) {\n this.calculateScrollValues(scrollValue);\n }\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n if (this.pdfViewer.formFieldsModule && !this.pdfViewer.formDesignerModule) {\n var proxy_2 = this;\n if (!this.pdfViewerBase.documentLoaded) {\n this.magnifyPageRerenderTimer = setTimeout(function () {\n proxy_2.rerenderMagnifiedPages();\n }, 800);\n }\n }\n };\n Magnification.prototype.calculateScrollValues = function (scrollValue) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var currentPageCanvas = this.pdfViewerBase.getElement('_pageDiv_' + pageIndex);\n if (currentPageCanvas) {\n var pointInViewer = void 0;\n var currentPageBounds = currentPageCanvas.getBoundingClientRect();\n if (this.pdfViewer.enableRtl && !this.isDoubleTapZoom) {\n pointInViewer = this.positionInViewer(currentPageBounds.right, currentPageBounds.top);\n }\n else {\n pointInViewer = this.positionInViewer(currentPageBounds.left, currentPageBounds.top);\n }\n var currentPageBoundsLeft = pointInViewer.x;\n var currentPageBoundsTop = pointInViewer.y;\n // update scroll top for the viewer container based on pinch zoom factor\n var previousPageTop = (currentPageBoundsTop) * this.previousZoomFactor;\n var canvasPreviousY = scrollValue + this.touchCenterY;\n // eslint-disable-next-line max-len\n var canvasCurrentY = (currentPageBoundsTop) * this.zoomFactor + ((canvasPreviousY - previousPageTop) < 0 ? canvasPreviousY - previousPageTop : (canvasPreviousY -\n // eslint-disable-next-line max-len\n previousPageTop) * (this.zoomFactor / this.previousZoomFactor));\n var pageGapValue = this.zoomFactor - this.previousZoomFactor > 0 ? -this.pdfViewerBase.pageGap * (this.zoomFactor / this.previousZoomFactor) : this.pdfViewerBase.pageGap * (this.previousZoomFactor / this.zoomFactor);\n this.pdfViewerBase.viewerContainer.scrollTop = canvasCurrentY - this.touchCenterY + pageGapValue / this.pdfViewerBase.zoomInterval;\n // update scroll left for the viewer container based on pinch zoom factor\n var previousWidthFactor = (currentPageBounds.width * this.previousZoomFactor) / currentPageBounds.width;\n var scaleCorrectionFactor = this.zoomFactor / previousWidthFactor - 1;\n var scrollX_1 = this.touchCenterX - currentPageBoundsLeft;\n this.pdfViewerBase.viewerContainer.scrollLeft += scrollX_1 * scaleCorrectionFactor;\n }\n };\n Magnification.prototype.calculateScrollValuesOnMouse = function (scrollValue) {\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var currentPageCanvas = this.pdfViewerBase.getElement('_pageDiv_' + pageIndex);\n if (currentPageCanvas) {\n var pointInViewer = void 0;\n var currentPageBounds = currentPageCanvas.getBoundingClientRect();\n if (this.pdfViewer.enableRtl) {\n pointInViewer = this.positionInViewer(currentPageBounds.right, currentPageBounds.top);\n }\n else {\n pointInViewer = this.positionInViewer(currentPageBounds.left, currentPageBounds.top);\n }\n var currentPageBoundsLeft = pointInViewer.x;\n var currentPageBoundsTop = pointInViewer.y;\n // update scroll top for the viewer container based on mouse zoom factor\n var previousPageTop = (currentPageBoundsTop) * this.previousZoomFactor;\n var canvasPreviousY = scrollValue + this.mouseCenterY;\n // eslint-disable-next-line max-len\n var canvasCurrentY = (currentPageBoundsTop) * this.zoomFactor + ((canvasPreviousY - previousPageTop) < 0 ? canvasPreviousY - previousPageTop : (canvasPreviousY -\n // eslint-disable-next-line max-len\n previousPageTop) * (this.zoomFactor / this.previousZoomFactor));\n // eslint-disable-next-line max-len\n var pageGapValue = this.zoomFactor - this.previousZoomFactor > 0 ? -this.pdfViewerBase.pageGap * (this.zoomFactor / this.previousZoomFactor) : this.pdfViewerBase.pageGap * (this.previousZoomFactor / this.zoomFactor);\n if (this.pdfViewerBase.isTouchPad && !this.pdfViewerBase.isMacSafari) {\n pageGapValue = pageGapValue / this.pdfViewerBase.zoomInterval;\n }\n this.pdfViewerBase.viewerContainer.scrollTop = canvasCurrentY - this.mouseCenterY + pageGapValue;\n // update scroll left for the viewer container based on mouse zoom factor\n var previousWidthFactor = (currentPageBounds.width * this.previousZoomFactor) / currentPageBounds.width;\n var scaleCorrectionFactor = this.zoomFactor / previousWidthFactor - 1;\n var scrollX_2 = this.mouseCenterX - currentPageBoundsLeft;\n this.pdfViewerBase.viewerContainer.scrollLeft += scrollX_2 * scaleCorrectionFactor;\n }\n };\n Magnification.prototype.rerenderOnScroll = function () {\n var _this = this;\n this.isPinchZoomed = false;\n if (this.isPinchScrolled) {\n this.rerenderOnScrollTimer = null;\n this.isPinchScrolled = false;\n this.reRenderPageNumber = this.pdfViewerBase.currentPageNumber;\n this.pdfViewerBase.renderedPagesList = [];\n this.pdfViewerBase.pinchZoomStorage = [];\n var pageDivs = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_pageCanvas_\"]');\n var viewPortWidth = 816;\n for (var i = 0; i < pageDivs.length; i++) {\n // eslint-disable-next-line radix\n var pageNumber = parseInt(pageDivs[i].id.split('_pageCanvas_')[1]);\n var pageWidth = this.pdfViewerBase.pageSize[pageNumber].width;\n if ((viewPortWidth < pageWidth) && this.pdfViewer.tileRenderingSettings.enableTileRendering) {\n if (this.pdfViewer.restrictZoomRequest) {\n pageDivs[i].style.width = pageWidth * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line max-len\n pageDivs[i].style.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n pageDivs[i].style.width = pageWidth * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line max-len\n pageDivs[i].style.height = this.pdfViewerBase.pageSize[pageNumber].height * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n }\n }\n if (this.pdfViewerBase.textLayer) {\n var textLayers = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_textLayer_\"]');\n for (var i = 0; i < textLayers.length; i++) {\n textLayers[i].style.display = 'block';\n }\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line max-len\n var annotationLayers = document.querySelectorAll('canvas[id*=\"' + this.pdfViewer.element.id + '_annotationCanvas_\"]');\n for (var j = 0; j < annotationLayers.length; j++) {\n var pageNumber = annotationLayers[j].id.split('_annotationCanvas_')[1];\n // eslint-disable-next-line radix\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotationsPinch(parseInt(pageNumber));\n }\n }\n this.pdfViewerBase.pageViewScrollChanged(this.reRenderPageNumber);\n this.isPagePinchZoomed = false;\n this.rerenderOnScrollTimer = setTimeout(function () {\n _this.pdfViewerBase.pageViewScrollChanged(_this.reRenderPageNumber);\n }, 300);\n }\n };\n /**\n * @private\n */\n Magnification.prototype.pinchMoveScroll = function () {\n var _this = this;\n if (this.isRerenderCanvasCreated) {\n this.clearIntervalTimer();\n }\n if (this.isPagesZoomed || (!this.isRerenderCanvasCreated && this.isPagePinchZoomed)) {\n this.clearRendering();\n this.isPagesZoomed = false;\n clearTimeout(this.magnifyPageRerenderTimer);\n this.isPinchScrolled = true;\n this.isFormFieldPageZoomed = true;\n this.rerenderOnScrollTimer = setTimeout(function () {\n _this.rerenderOnScroll();\n }, 100);\n }\n };\n // eslint-disable-next-line\n Magnification.prototype.initiateRerender = function (proxy) {\n var isReRender = false;\n if (this.previousZoomFactor < 0.4 || this.pdfViewerBase.isMinimumZoom) {\n isReRender = true;\n }\n // eslint-disable-next-line max-len\n if (((proxy.pageRerenderCount === proxy.pdfViewerBase.reRenderedCount) || isReRender) && proxy.pageRerenderCount !== 0 && proxy.pdfViewerBase.reRenderedCount !== 0) {\n proxy.reRenderAfterPinch(this.reRenderPageNumber);\n proxy.isFormFieldPageZoomed = false;\n }\n };\n Magnification.prototype.reRenderAfterPinch = function (currentPageIndex) {\n this.pageRerenderCount = 0;\n var lowerPageValue = currentPageIndex - 3;\n var higherPageValue = currentPageIndex + 1;\n if (this.pdfViewerBase.isMinimumZoom) {\n lowerPageValue = currentPageIndex - 4;\n higherPageValue = currentPageIndex + 4;\n }\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + i);\n var pageCanvas = this.pdfViewerBase.getElement('_pageCanvas_' + i);\n var oldCanvas = this.pdfViewerBase.getElement('_oldCanvas_' + i);\n if (oldCanvas) {\n oldCanvas.parentNode.removeChild(oldCanvas);\n }\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.rerenderAnnotations(i);\n }\n else if (this.pdfViewer.formDesignerModule) {\n this.rerenderAnnotations(i);\n this.pdfViewer.renderDrawing(undefined, currentPageIndex);\n }\n if (pageDiv) {\n pageDiv.style.visibility = 'visible';\n }\n }\n this.isRerenderCanvasCreated = false;\n this.isPagePinchZoomed = false;\n if (this.pdfViewerBase.reRenderedCount !== 0) {\n this.pdfViewerBase.reRenderedCount = 0;\n this.pageRerenderCount = 0;\n clearInterval(this.rerenderInterval);\n this.rerenderInterval = null;\n }\n this.imageObjects = [];\n };\n /**\n * @param pageNumber\n * @private\n */\n Magnification.prototype.rerenderAnnotations = function (pageNumber) {\n // eslint-disable-next-line\n var oldCanvasCollection = document.querySelectorAll('#' + this.pdfViewer.element.id + '_old_annotationCanvas_' + pageNumber);\n for (var i = 0; i < oldCanvasCollection.length; i++) {\n if (oldCanvasCollection[i]) {\n oldCanvasCollection[i].parentElement.removeChild(oldCanvasCollection[i]);\n }\n }\n var newCanvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (newCanvas) {\n newCanvas.style.display = 'block';\n }\n };\n Magnification.prototype.designNewCanvas = function (currentPageIndex) {\n if (this.pdfViewerBase.textLayer) {\n this.pdfViewerBase.textLayer.clearTextLayers();\n }\n var lowerPageValue = currentPageIndex - 3;\n var higherPageValue = currentPageIndex + 1; // jshint ignore:line\n if (this.pdfViewerBase.isMinimumZoom) {\n lowerPageValue = currentPageIndex - 4;\n higherPageValue = currentPageIndex + 4;\n }\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n var canvas = this.pdfViewerBase.getElement('_pageCanvas_' + i);\n var width = this.pdfViewerBase.pageSize[i].width * this.zoomFactor;\n var height = this.pdfViewerBase.pageSize[i].height * this.zoomFactor;\n if (canvas && !this.pdfViewer.restrictZoomRequest) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.renderPageCanvas(this.pdfViewerBase.getElement('_pageDiv_' + i), width, height, i, 'none');\n }\n else if (!this.pdfViewer.restrictZoomRequest) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.renderPageCanvas(this.pdfViewerBase.getElement('_pageDiv_' + i), width, height, i, 'none');\n }\n }\n this.isRerenderCanvasCreated = true;\n };\n /**\n * @private\n */\n Magnification.prototype.pageRerenderOnMouseWheel = function () {\n var _this = this;\n if (this.isRerenderCanvasCreated) {\n this.clearIntervalTimer();\n clearTimeout(this.magnifyPageRerenderTimer);\n if (!this.isPinchScrolled) {\n this.isPinchScrolled = true;\n this.rerenderOnScrollTimer = setTimeout(function () {\n _this.rerenderOnScroll();\n }, 100);\n }\n }\n };\n /**\n * @private\n */\n Magnification.prototype.renderCountIncrement = function () {\n if (this.isRerenderCanvasCreated) {\n this.pageRerenderCount++;\n }\n };\n /**\n * @private\n */\n Magnification.prototype.rerenderCountIncrement = function () {\n if (this.pageRerenderCount > 0) {\n this.pdfViewerBase.reRenderedCount++;\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n Magnification.prototype.resizeCanvas = function (pageNumber) {\n var annotationModule = this.pdfViewer.annotationModule;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(annotationModule.inkAnnotationModule.currentPageNumber);\n annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n if (annotationModule && annotationModule.freeTextAnnotationModule) {\n // eslint-disable-next-line\n var currentPosition = { x: annotationModule.freeTextAnnotationModule.currentPosition[0], y: annotationModule.freeTextAnnotationModule.currentPosition[1], width: annotationModule.freeTextAnnotationModule.currentPosition[2], height: annotationModule.freeTextAnnotationModule.currentPosition[3] };\n annotationModule.freeTextAnnotationModule.addInputInZoom(currentPosition);\n }\n var lowerPageValue = pageNumber - 3;\n var higherPageValue = pageNumber + 3;\n if (this.pdfViewerBase.isMinimumZoom) {\n lowerPageValue = pageNumber - 4;\n higherPageValue = pageNumber + 4;\n }\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n var pageDiv = this.pdfViewerBase.getElement('_pageDiv_' + i);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + i);\n if (pageDiv) {\n if ((lowerPageValue <= i) && (i <= higherPageValue)) {\n var isSelectionAvailable = false;\n if (this.pdfViewer.textSelectionModule) {\n isSelectionAvailable = this.pdfViewer.textSelectionModule.isSelectionAvailableOnScroll(i);\n }\n if (this.pdfViewerBase.pageSize[i] != null) {\n var width = this.pdfViewerBase.pageSize[i].width * this.zoomFactor;\n var height = this.pdfViewerBase.pageSize[i].height * this.zoomFactor;\n pageDiv.style.width = width + 'px';\n pageDiv.style.height = height + 'px';\n // eslint-disable-next-line max-len\n pageDiv.style.top = ((this.pdfViewerBase.pageSize[i].top) * this.zoomFactor) + 'px';\n if (this.pdfViewer.enableRtl) {\n pageDiv.style.right = this.pdfViewerBase.updateLeftPosition(i) + 'px';\n }\n else {\n pageDiv.style.left = this.pdfViewerBase.updateLeftPosition(i) + 'px';\n }\n var canvas = this.pdfViewerBase.getElement('_pageCanvas_' + i);\n if (canvas) {\n canvas.style.width = (width) + 'px';\n canvas.style.height = height + 'px';\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotationModule.resizeAnnotations(width, height, i);\n }\n else if (this.pdfViewer.formDesignerModule) {\n this.pdfViewer.formDesignerModule.resizeAnnotations(width, height, i);\n }\n }\n var zoomFactor = this.pdfViewerBase.retrieveCurrentZoomFactor();\n var tileCount = this.pdfViewerBase.getTileCount(this.pdfViewerBase.pageSize[i].width);\n var noTileX = void 0;\n var noTileY = void 0;\n noTileX = noTileY = tileCount;\n var tileSettings = this.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n if ((1200 < this.pdfViewerBase.pageSize[i].width || this.pdfViewerBase.getZoomFactor() > 2)) {\n noTileX = tileSettings.x;\n noTileY = tileSettings.y;\n }\n }\n var tileRequestCount = noTileX * noTileY;\n if (tileRequestCount === 1) {\n var storedData = this.pdfViewerBase.getWindowSessionStorage(i, zoomFactor) ? this.pdfViewerBase.getWindowSessionStorage(i, zoomFactor) : this.pdfViewerBase.getPinchZoomPage(i);\n if (storedData) {\n storedData = JSON.parse(storedData);\n var imageData = storedData['image'];\n if (imageData) {\n canvas.src = imageData;\n canvas.style.display = 'block';\n var oldCanvases = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_tileimg_' + i + '_\"]');\n var pageCanvas = this.pdfViewerBase.getElement('_pageDiv_' + i);\n for (var k = 0; k < oldCanvases.length; k++) {\n var tileImgId = oldCanvases[k].id.split('_');\n if (parseFloat(tileImgId[tileImgId.length - 3]) != this.pdfViewerBase.getZoomFactor())\n pageCanvas.removeChild(oldCanvases[k]);\n }\n var oldPageDiv = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_oldCanvas\"]');\n for (var j = 0; j < oldPageDiv.length; j++) {\n pageDiv.removeChild(oldPageDiv[j]);\n }\n }\n this.pdfViewerBase.isReRenderRequired = false;\n }\n else {\n this.pdfViewerBase.isReRenderRequired = true;\n }\n }\n else {\n var oldCanvases = document.querySelectorAll('img[id*=\"' + this.pdfViewer.element.id + '_tileimg_' + i + '_\"]');\n for (var l = 0; l < oldCanvases.length; l++) {\n var tileImgId = oldCanvases[l].id.split('_');\n var tileX = parseFloat(tileImgId[tileImgId.length - 2]);\n var tileY = parseFloat(tileImgId[tileImgId.length - 1]);\n // eslint-disable-next-line\n var tileData = JSON.parse(this.pdfViewerBase.getWindowSessionStorageTile(i, tileX, tileY, zoomFactor));\n if (tileData && tileData.zoomFactor) {\n zoomFactor = tileData.zoomFactor;\n }\n if (parseFloat(tileImgId[tileImgId.length - 4]) === i) {\n canvas.style.display = 'none';\n var node = oldCanvases[l];\n // Make sure it's really an Element\n if (node.nodeType == Node.ELEMENT_NODE) {\n var dataScaleFactor = 1.5;\n if (!isNullOrUndefined(tileData)) {\n dataScaleFactor = (!isNullOrUndefined(tileData.scaleFactor)) ? tileData.scaleFactor : 1.5;\n }\n var pageWidth = this.pdfViewerBase.pageSize[i].width;\n var serverImageWidth = pageWidth * zoomFactor * dataScaleFactor;\n var serverImageHeight = this.pdfViewerBase.pageSize[i].height * zoomFactor * dataScaleFactor;\n var tilewidth = serverImageWidth / noTileX;\n var tileHeight = serverImageHeight / noTileY;\n var originalWidth = tilewidth;\n var originalLeft = parseFloat(tileImgId[tileImgId.length - 2]) * tilewidth;\n var originalTop = parseFloat(tileImgId[tileImgId.length - 1]) * tileHeight;\n node.width = (((originalWidth * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor);\n node.style.width = (((originalWidth * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor) + 'px';\n node.style.left = (((originalLeft * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor) + 'px';\n node.style.top = (((originalTop * this.pdfViewerBase.getZoomFactor()) / zoomFactor) / dataScaleFactor) + 'px';\n node.id = this.pdfViewer.element.id + '_tileimg_' + i + '_' + this.pdfViewerBase.getZoomFactor() + '_' + tileX + '_' + tileY;\n if (tileData) {\n var imageData = tileData['image'];\n if (imageData) {\n node.src = imageData;\n }\n this.pdfViewerBase.isReRenderRequired = false;\n }\n else {\n this.pdfViewerBase.isReRenderRequired = true;\n }\n }\n }\n }\n if (oldCanvases.length === 0) {\n this.pdfViewerBase.isReRenderRequired = true;\n }\n }\n var aElement = pageDiv.getElementsByTagName('a');\n if (aElement.length !== 0) {\n for (var index = aElement.length - 1; index >= 0; index--) {\n aElement[index].parentNode.removeChild(aElement[index]);\n }\n }\n if (textLayer) {\n textLayer.style.width = width + 'px';\n textLayer.style.height = height + 'px';\n if (this.pdfViewer.textSelectionModule) {\n if (this.isPinchZoomed) {\n textLayer.style.display = 'none';\n }\n else if (this.isMagnified) {\n var lowerValue = ((pageNumber - 2) === 0) ? 0 : (pageNumber - 2);\n // eslint-disable-next-line max-len\n var higherValue = ((pageNumber) === (this.pdfViewerBase.pageCount)) ? (this.pdfViewerBase.pageCount - 1) : (pageNumber + 1);\n if ((lowerValue <= i) && (i <= higherValue) && ((this.pdfViewer.textSelectionModule.isTextSelection && isSelectionAvailable) || this.pdfViewerBase.textLayer.getTextSearchStatus() || this.pdfViewerBase.isInitialPageMode)) {\n this.pdfViewerBase.textLayer.resizeTextContentsOnZoom(i);\n if (this.pdfViewer.textSelectionModule.isTextSelection && isSelectionAvailable) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(i);\n }\n }\n else {\n textLayer.style.display = 'none';\n }\n }\n else {\n textLayer.style.display = 'block';\n }\n }\n this.pdfViewerBase.applyElementStyles(textLayer, i);\n }\n var adornerSvg = getDiagramElement(this.pdfViewer.element.id + '_textLayer_' + i);\n if (adornerSvg) {\n var adonerLayer = getDiagramElement(this.pdfViewer.element.id + i + '_diagramAdorner_svg');\n if (adonerLayer) {\n adonerLayer.style.width = width + 'px';\n adonerLayer.style.height = height + 'px';\n }\n var diagramAdornerLayer = getDiagramElement(this.pdfViewer.element.id + i + '_diagramAdornerLayer');\n if (diagramAdornerLayer) {\n diagramAdornerLayer.style.width = width + 'px';\n diagramAdornerLayer.style.height = height + 'px';\n }\n adornerSvg.style.width = width + 'px';\n adornerSvg.style.height = height + 'px';\n this.pdfViewer.renderSelector(i, this.pdfViewer.annotationSelectorSettings);\n this.pdfViewerBase.applyElementStyles(diagramAdornerLayer, i);\n }\n }\n }\n }\n }\n };\n Magnification.prototype.zoomOverPages = function (pointX1, pointY1, pointX2, pointY2) {\n // eslint-disable-next-line\n var currentDifference = Math.sqrt(Math.pow((pointX1 - pointX2), 2) + Math.pow((pointY1 - pointY2), 2));\n if (this.previousTouchDifference > -1) {\n if (currentDifference > this.previousTouchDifference) {\n this.pinchStep = this.getPinchStep(currentDifference, this.previousTouchDifference);\n this.pinchOut();\n }\n else if (currentDifference < this.previousTouchDifference) {\n this.pinchStep = this.getPinchStep(this.previousTouchDifference, currentDifference);\n this.pinchIn();\n }\n }\n this.previousTouchDifference = currentDifference;\n };\n /**\n * @private\n */\n Magnification.prototype.pinchMoveEnd = function () {\n this.touchCenterX = 0;\n this.touchCenterY = 0;\n this.previousTouchDifference = -1;\n if (this.isPinchZoomed) {\n this.isPinchScrolled = false;\n this.isPagePinchZoomed = true;\n this.pinchMoveScroll();\n }\n };\n /**\n * @param event\n * @private\n */\n // eslint-disable-next-line\n Magnification.prototype.fitPageScrollMouseWheel = function (event) {\n if (this.fitType === 'fitToPage') {\n this.isMagnified = false;\n event.preventDefault();\n if (event.deltaY > 0) {\n this.downwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n else {\n this.upwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n }\n };\n /**\n * @param event\n * @private\n */\n Magnification.prototype.magnifyBehaviorKeyDown = function (event) {\n var isMac = navigator.platform.match(/(Mac|iPhone|iPod|iPad)/i) ? true : false;\n var isCommandKey = isMac ? event.metaKey : false;\n switch (event.keyCode) {\n case 38: // up arrow\n case 37: // left arrow\n case 33: // page up\n if (this.fitType === 'fitToPage' && !((event.ctrlKey || isCommandKey) && event.shiftKey)) {\n event.preventDefault();\n this.upwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n break;\n case 40: // down arrow\n case 39: // right arrow\n case 34: // page down\n if (this.fitType === 'fitToPage' && !((event.ctrlKey || isCommandKey) && event.shiftKey)) {\n event.preventDefault();\n this.downwardScrollFitPage(this.pdfViewerBase.currentPageNumber - 1);\n }\n break;\n case 187: // equal key\n if (event.ctrlKey || isCommandKey) {\n event.preventDefault();\n this.zoomIn();\n }\n break;\n case 189: // minus key\n if (event.ctrlKey || isCommandKey) {\n event.preventDefault();\n this.zoomOut();\n }\n break;\n case 48: // zero key\n if ((event.ctrlKey || isCommandKey) && !event.shiftKey) {\n event.preventDefault();\n this.fitToPage();\n }\n break;\n case 49: // one key\n if ((event.ctrlKey || isCommandKey) && !event.shiftKey) {\n event.preventDefault();\n this.zoomTo(100);\n }\n break;\n default:\n break;\n }\n };\n Magnification.prototype.upwardScrollFitPage = function (currentPageIndex) {\n if (currentPageIndex > 0) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex - 1)).style.visibility = 'visible';\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.pageSize[currentPageIndex - 1].top * this.zoomFactor;\n if (this.isFitToPageMode) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex)).style.visibility = 'hidden';\n }\n }\n };\n /**\n * @param currentPageIndex\n * @private\n */\n Magnification.prototype.updatePagesForFitPage = function (currentPageIndex) {\n if (this.fitType === 'fitToPage') {\n if (this.isFitToPageMode) {\n if (currentPageIndex > 0 && this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex - 1))) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex - 1)).style.visibility = 'hidden';\n }\n // eslint-disable-next-line max-len\n if ((currentPageIndex < (this.pdfViewerBase.pageCount - 1)) && this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 1))) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 1)).style.visibility = 'hidden';\n }\n }\n }\n };\n /**\n * @private\n */\n Magnification.prototype.onDoubleTapMagnification = function () {\n if (this.pdfViewer.toolbarModule && isBlazor()) {\n this.pdfViewer.toolbarModule.showToolbar(true);\n }\n var scrollValue = this.pdfViewerBase.viewerContainer.scrollTop;\n if (!this.pdfViewer.selectedItems.annotations[0]) {\n this.isDoubleTapZoom = true;\n if (!this.isTapToFitZoom) {\n if (this.zoomFactor < 2) {\n this.zoomTo(200);\n }\n else {\n this.fitToWidth();\n }\n }\n else {\n this.fitToWidth();\n }\n this.calculateScrollValues(scrollValue);\n this.isTapToFitZoom = !this.isTapToFitZoom;\n this.isDoubleTapZoom = false;\n }\n else {\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n var elmtPosition = {};\n elmtPosition.x = this.pdfViewer.selectedItems.annotations[0].bounds.x;\n elmtPosition.y = this.pdfViewer.selectedItems.annotations[0].bounds.y;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.freeTextAnnotationModule.addInuptElemet(elmtPosition, this.pdfViewer.selectedItems.annotations[0]);\n }\n }\n }\n };\n Magnification.prototype.downwardScrollFitPage = function (currentPageIndex) {\n if (currentPageIndex !== (this.pdfViewerBase.pageCount - 1)) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 1)).style.visibility = 'visible';\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.pageSize[currentPageIndex + 1].top * this.zoomFactor;\n if (this.isFitToPageMode) {\n if (currentPageIndex + 1 === (this.pdfViewerBase.pageCount - 1)) {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex)).style.visibility = 'hidden';\n }\n else {\n this.pdfViewerBase.getElement('_pageDiv_' + (currentPageIndex + 2)).style.visibility = 'hidden';\n }\n }\n }\n };\n Magnification.prototype.getMagnifiedValue = function (value) {\n return (value / this.previousZoomFactor) * this.zoomFactor;\n };\n /**\n * @private\n */\n Magnification.prototype.destroy = function () {\n this.imageObjects = undefined;\n };\n /**\n * returns zoom factor when the zoom percent is passed.\n *\n * @param zoomValue\n */\n Magnification.prototype.getZoomFactor = function (zoomValue) {\n return zoomValue / 100;\n };\n /**\n * @private\n */\n Magnification.prototype.getModuleName = function () {\n return 'Magnification';\n };\n /**\n * Returns the pinch step value.\n * @param higherValue\n * @param lowerValue\n */\n Magnification.prototype.getPinchStep = function (higherValue, lowerValue) {\n var defaultPinchStep = 0.02; // Default pinch step value.\n var higherPinchStep = 1; // higher pinch step value.\n var pinchstep = (higherValue - lowerValue) / 100;\n if (pinchstep < defaultPinchStep) {\n pinchstep = defaultPinchStep;\n }\n else if (pinchstep > higherPinchStep) {\n pinchstep = 0.1; // set the pinch step as 0.1 if the pinch reaches the higher pinch step value.\n }\n return pinchstep;\n };\n /**\n * @private\n * Brings the given rectangular region to view and zooms in the document to fit the region in client area (view port).\n *\n * @param {Rect} zoomRect - Specifies the region in client coordinates that is to be brought to view.\n */\n Magnification.prototype.zoomToRect = function (zoomRect) {\n var desiredScaleFactor;\n var pdfViewerBase = this.pdfViewerBase;\n var viewerContainer = pdfViewerBase.viewerContainer;\n var pdfViewer = this.pdfViewer;\n if (zoomRect.width > 0 && zoomRect.height > 0) {\n var location_1 = { x: zoomRect.x, y: zoomRect.y };\n var pageNumber = pdfViewer.getPageNumberFromClientPoint(location_1);\n if (pageNumber > 0) {\n var desiredHorizontalScale = viewerContainer.getBoundingClientRect().width / zoomRect.width;\n var desiredVerticalScale = viewerContainer.getBoundingClientRect().height / zoomRect.height;\n if (desiredHorizontalScale < desiredVerticalScale) {\n desiredScaleFactor = desiredHorizontalScale;\n }\n else {\n desiredScaleFactor = desiredVerticalScale;\n }\n var zoomValue = 100; // default zoom value\n var zoomPercentage = pdfViewerBase.getZoomFactor() * 100;\n zoomValue = zoomPercentage * desiredScaleFactor;\n var prevScrollTop = viewerContainer.scrollTop;\n var prevScrollLeft = viewerContainer.scrollLeft;\n // Zoom to desired zoom value.\n this.zoomTo(zoomValue);\n viewerContainer.scrollTop = prevScrollTop;\n viewerContainer.scrollLeft = prevScrollLeft;\n var zoomFactor = pdfViewerBase.getZoomFactor();\n var pagepoint = { x: zoomRect.x, y: zoomRect.y };\n // Convert the client point to page point.\n pagepoint = pdfViewer.convertClientPointToPagePoint(pagepoint, pageNumber);\n pdfViewerBase.updateScrollTop(pageNumber - 1);\n // To adjust the container to the left position.\n viewerContainer.scrollLeft = (pagepoint.x - prevScrollLeft) * zoomFactor;\n // To adjust the container to the top position.\n viewerContainer.scrollTop = ((pagepoint.y + pdfViewerBase.pageSize[pageNumber - 1].top) - prevScrollTop) * zoomFactor;\n }\n }\n };\n /**\n * Returns Point value respect to Main container.\n * @param PointX\n * @param PointY\n */\n Magnification.prototype.positionInViewer = function (pointX, pointY) {\n var mainRect = this.pdfViewerBase.mainContainer.getBoundingClientRect();\n return { x: pointX - mainRect.left, y: pointY - mainRect.top };\n };\n return Magnification;\n}());\n\n/**\n * export types\n */\n\n/**\n * Navigation module\n */\nvar Navigation = /** @__PURE__ @class */ (function () {\n /**\n * @param viewer\n * @param viewerBase\n * @param viewer\n * @param viewerBase\n * @private\n */\n function Navigation(viewer, viewerBase) {\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * Navigate to Next page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToNextPage = function () {\n this.pageNumber = this.pdfViewerBase.currentPageNumber;\n this.pageNumber++;\n if (this.pageNumber <= this.pdfViewerBase.pageCount) {\n this.pdfViewerBase.updateScrollTop(this.pageNumber - 1);\n }\n };\n /**\n * Navigate to Previous page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToPreviousPage = function () {\n this.pageNumber = this.pdfViewerBase.currentPageNumber;\n this.pageNumber--;\n if (this.pageNumber > 0) {\n this.pdfViewerBase.updateScrollTop(this.pageNumber - 1);\n }\n };\n /**\n * Navigate to given Page number\n * Note : In case if we have provided incorrect page number as argument it will retain the existing page\n *\n * @param {number} pageNumber - Defines the page number to navigate\n * @returns void\n */\n Navigation.prototype.goToPage = function (pageNumber) {\n if (pageNumber > 0 && pageNumber <= this.pdfViewerBase.pageCount && this.pdfViewerBase.currentPageNumber !== pageNumber) {\n this.pdfViewerBase.updateScrollTop(pageNumber - 1);\n }\n this.pdfViewer.magnificationModule.resizeCanvas(pageNumber);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 1));\n if (textLayer) {\n textLayer.style.display = 'block';\n }\n };\n /**\n * Navigate to First page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToFirstPage = function () {\n this.pageNumber = 0;\n this.pdfViewerBase.updateScrollTop(this.pageNumber);\n };\n /**\n * Navigate to Last page of the PDF document\n *\n * @returns void\n */\n Navigation.prototype.goToLastPage = function () {\n this.pageNumber = this.pdfViewerBase.pageCount - 1;\n this.pdfViewerBase.updateScrollTop(this.pageNumber);\n };\n /**\n * @private\n */\n Navigation.prototype.destroy = function () {\n this.pageNumber = 0;\n };\n /**\n * @private\n */\n Navigation.prototype.getModuleName = function () {\n return 'Navigation';\n };\n return Navigation;\n}());\n\n/**\n * export types\n */\n\n/* eslint-disable */\n/**\n * The `ThumbnailView` module is used to handle thumbnail view navigation of PDF viewer.\n */\nvar ThumbnailView = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function ThumbnailView(pdfViewer, pdfViewerBase) {\n var _this = this;\n this.thumbnailLimit = 30;\n this.thumbnailThreshold = 50;\n this.thumbnailTopMargin = 10;\n /**\n * @private\n */\n this.isThumbnailClicked = false;\n /**\n * @param event\n * @private\n */\n this.thumbnailClick = function (event) {\n var proxy = _this;\n var pageNumber = proxy.getPageNumberFromID(event.srcElement.id);\n if (proxy.previousElement) {\n proxy.previousElement.classList.remove('e-pv-thumbnail-selection');\n proxy.previousElement.classList.remove('e-pv-thumbnail-focus');\n proxy.previousElement.classList.add('e-pv-thumbnail-selection-ring');\n }\n if (event.srcElement.parentElement.id === proxy.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n proxy.setSelectionStyle(event.srcElement.parentElement);\n proxy.previousElement = event.srcElement.parentElement;\n }\n else if (event.srcElement.id === proxy.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n proxy.setSelectionStyle(event.srcElement);\n proxy.previousElement = event.srcElement;\n }\n proxy.pdfViewer.fireThumbnailClick(pageNumber + 1);\n proxy.isThumbnailClicked = true;\n proxy.goToThumbnailPage(pageNumber + 1);\n proxy.pdfViewerBase.focusViewerContainer();\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n };\n /**\n * @param event\n * @private\n */\n this.thumbnailMouseOver = function (event) {\n var proxy = _this;\n var pageNumber = proxy.getPageNumberFromID(event.srcElement.id);\n if (event.srcElement.id === proxy.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n proxy.setMouseOverStyle(event.srcElement);\n }\n else if (event.srcElement.id === proxy.pdfViewer.element.id + '_thumbnail_image_' + pageNumber) {\n proxy.setMouseOverStyle(event.srcElement.parentElement);\n }\n };\n /**\n * @param event\n * @private\n */\n this.thumbnailMouseLeave = function (event) {\n var proxy = _this;\n var pageNumber = proxy.getPageNumberFromID(event.srcElement.id);\n if (event.srcElement.parentElement.id === proxy.pdfViewer.element.id + '_thumbnail_view') {\n proxy.setMouseLeaveStyle(event.srcElement.children[0].children[0]);\n }\n else if (event.srcElement.parentElement.id === proxy.pdfViewer.element.id + '_thumbnail_' + pageNumber) {\n proxy.setMouseLeaveStyle(event.srcElement.parentElement.children[0]);\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n ThumbnailView.prototype.createThumbnailContainer = function () {\n // eslint-disable-next-line max-len\n this.thumbnailView = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_view', className: 'e-pv-thumbnail-view e-pv-thumbnail-row' });\n this.pdfViewerBase.navigationPane.sideBarContent.appendChild(this.thumbnailView);\n };\n /**\n * Open the thumbnail pane of the PdfViewer.\n *\n * @returns void\n */\n ThumbnailView.prototype.openThumbnailPane = function () {\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.openThumbnailPane();\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n ThumbnailView.prototype.createRequestForThumbnails = function () {\n var proxy = this;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n // eslint-disable-next-line\n return new Promise(\n // eslint-disable-next-line\n function (renderThumbnailImage, reject) {\n proxy.requestCreation(proxy);\n });\n }\n else {\n this.requestCreation(proxy);\n return null;\n }\n };\n ThumbnailView.prototype.requestCreation = function (proxy) {\n // Removed the condition to skip multiple request for thumbnail image.\n proxy.startIndex = proxy.thumbnailLimit;\n // eslint-disable-next-line max-len\n proxy.thumbnailLimit = proxy.startIndex + proxy.thumbnailThreshold < proxy.pdfViewer.pageCount ? proxy.startIndex + proxy.thumbnailThreshold : proxy.pdfViewer.pageCount;\n var digitalSignaturePresent = false;\n for (var i = proxy.startIndex; i < proxy.thumbnailLimit; i++) {\n if (proxy.pdfViewerBase.digitalSignaturePresent(i)) {\n digitalSignaturePresent = true;\n }\n }\n var digitalSignatureList = \"\";\n if (digitalSignaturePresent) {\n digitalSignatureList = proxy.pdfViewerBase.digitalSignaturePages.toString();\n }\n // eslint-disable-next-line max-len\n var jsonObject = { startPage: proxy.startIndex.toString(), endPage: proxy.thumbnailLimit.toString(), sizeX: \"99.7\", sizeY: \"141\", hashId: proxy.pdfViewerBase.hashId, action: 'RenderThumbnailImages', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId, digitalSignaturePresent: digitalSignaturePresent, digitalSignaturePageList: digitalSignatureList };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n this.thumbnailRequestHandler = new AjaxHandler(this.pdfViewer);\n this.thumbnailRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.renderThumbnail;\n this.thumbnailRequestHandler.responseType = 'json';\n this.thumbnailRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.thumbnailRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, proxy.pdfViewer.serverActionSettings.renderThumbnail);\n data = null;\n }\n }\n if (data && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.renderThumbnail, data);\n proxy.renderThumbnailImage(data);\n if (proxy.pdfViewer.isThumbnailViewOpen) {\n proxy.pdfViewerBase.navigationPane.isThumbnailOpen = true;\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.navigationPane.sideBarTitle.textContent = proxy.pdfViewer.localeObj.getConstant('Page Thumbnails');\n document.getElementById(proxy.pdfViewer.element.id + '_thumbnail_view').style.display = 'flex';\n var bookmarkContent = proxy.pdfViewer.element.querySelector('.e-pv-bookmark-view');\n if (bookmarkContent) {\n bookmarkContent.style.display = 'none';\n }\n proxy.pdfViewerBase.navigationPane.setThumbnailSelectionIconTheme();\n proxy.pdfViewerBase.navigationPane.updateViewerContainerOnExpand();\n proxy.pdfViewerBase.navigationPane.isBookmarkOpen = false;\n }\n }\n }\n };\n // eslint-disable-next-line\n this.thumbnailRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderThumbnail);\n };\n // eslint-disable-next-line\n this.thumbnailRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.renderThumbnail);\n };\n };\n /**\n * @param pageNumber\n * @private\n */\n ThumbnailView.prototype.gotoThumbnailImage = function (pageNumber) {\n var shouldScroll = this.checkThumbnailScroll(pageNumber);\n if (this.thumbnailView) {\n var thumbnailChild = this.thumbnailView.children[pageNumber];\n if (thumbnailChild) {\n var thumbnailDiv = thumbnailChild.children[0];\n if (shouldScroll) {\n var offsetTop = thumbnailDiv.offsetTop + thumbnailDiv.clientTop - this.thumbnailTopMargin;\n this.pdfViewerBase.navigationPane.sideBarContent.scrollTop = offsetTop;\n }\n if (!this.isThumbnailClicked) {\n if (this.previousElement) {\n this.previousElement.classList.remove('e-pv-thumbnail-selection');\n this.previousElement.classList.remove('e-pv-thumbnail-focus');\n this.previousElement.classList.remove('e-pv-thumbnail-hover');\n this.previousElement.classList.add('e-pv-thumbnail-selection-ring');\n }\n this.setFocusStyle(thumbnailDiv, pageNumber);\n }\n this.previousElement = thumbnailDiv.children[0];\n }\n }\n };\n ThumbnailView.prototype.checkThumbnailScroll = function (pageNumber) {\n var shouldScroll = false;\n if (this.thumbnailView) {\n var visibleThumbs = this.getVisibleThumbs();\n var numVisibleThumbs = visibleThumbs.views.length;\n // if the thumbnail isn't currently visible, scroll it into view.\n if (numVisibleThumbs > 0) {\n var visibleFirstPageID = this.getPageNumberFromID(visibleThumbs.first.id);\n // account for only one thumbnail being visible.\n // eslint-disable-next-line max-len\n var visibleLastPageID = (numVisibleThumbs > 1 ? this.getPageNumberFromID(visibleThumbs.last.id) : visibleFirstPageID);\n if (pageNumber <= visibleFirstPageID || pageNumber >= visibleLastPageID) {\n shouldScroll = true;\n }\n else {\n // eslint-disable-next-line\n visibleThumbs.views.some(function (view) {\n var pageID = view.id.split('_');\n var thumbPageNumber = pageID[pageID.length - 1];\n // eslint-disable-next-line radix\n if (parseInt(thumbPageNumber) !== pageNumber) {\n return false;\n }\n shouldScroll = view.percent < 100;\n return true;\n });\n }\n }\n }\n return shouldScroll;\n };\n ThumbnailView.prototype.getPageNumberFromID = function (pageId) {\n var pageID = pageId.split('_');\n var pageNumber = pageID[pageID.length - 1];\n // eslint-disable-next-line radix\n return parseInt(pageNumber);\n };\n ThumbnailView.prototype.setFocusStyle = function (thumbnail, pageNumber) {\n if (thumbnail.children[0].id === this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + pageNumber) {\n this.setMouseFocusStyle(thumbnail.children[0]);\n }\n };\n // eslint-disable-next-line\n ThumbnailView.prototype.renderThumbnailImage = function (data) {\n if (this.thumbnailView) {\n var startPage = (data && isNaN(data.startPage)) ? data.startPage : this.startIndex;\n var endPage = (data && isNaN(data.endPage)) ? data.endPage : this.thumbnailLimit;\n for (var i = startPage; i < endPage; i++) {\n // eslint-disable-next-line max-len\n var pageLink = createElement('a', { id: 'page_' + i, attrs: { 'aria-label': 'Thumbnail of Page' + (i + 1), 'tabindex': '-1', 'role': 'link' }, className: 'e-pv-thumbnail-anchor-node' });\n // eslint-disable-next-line max-len\n var thumbnail = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_' + i, className: 'e-pv-thumbnail e-pv-thumbnail-column' });\n // eslint-disable-next-line max-len\n this.thumbnailSelectionRing = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_Selection_Ring_' + i, className: 'e-pv-thumbnail-selection-ring' });\n thumbnail.appendChild(this.thumbnailSelectionRing);\n // eslint-disable-next-line max-len\n var thumbnailPageNumber = createElement('div', { id: this.pdfViewer.element.id + '_thumbnail_pagenumber_' + i, className: 'e-pv-thumbnail-number' });\n thumbnailPageNumber.textContent = (i + 1).toString();\n thumbnail.appendChild(thumbnailPageNumber);\n // eslint-disable-next-line max-len\n this.thumbnailImage = createElement('img', { id: this.pdfViewer.element.id + '_thumbnail_image_' + i, className: 'e-pv-thumbnail-image' });\n this.thumbnailImage.src = data.thumbnailImage[i];\n this.thumbnailImage.alt = this.pdfViewer.element.id + '_thumbnail_page_' + i;\n if (this.pdfViewerBase.pageSize[i] && (this.pdfViewerBase.pageSize[i].height < this.pdfViewerBase.pageSize[i].width)) {\n this.thumbnailImage.style.height = '86px';\n this.thumbnailImage.style.width = '126px';\n thumbnail.style.height = '100px';\n thumbnail.style.width = '140px';\n pageLink.style.left = '-25px';\n pageLink.style.position = 'relative';\n thumbnailPageNumber.style.left = '18px';\n thumbnailPageNumber.style.position = 'relative';\n }\n this.thumbnailSelectionRing.appendChild(this.thumbnailImage);\n pageLink.appendChild(thumbnail);\n this.thumbnailView.appendChild(pageLink);\n this.wireUpEvents();\n if (i === 0) {\n this.setMouseFocusToFirstPage();\n }\n }\n }\n this.pdfViewerBase.navigationPane.enableThumbnailButton();\n if (this.thumbnailLimit !== this.pdfViewerBase.pageCount && this.thumbnailView) {\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n Promise.all([this.createRequestForThumbnails()]);\n }\n else {\n this.createRequestForThumbnails();\n }\n }\n };\n ThumbnailView.prototype.wireUpEvents = function () {\n if (this.thumbnailSelectionRing) {\n this.thumbnailSelectionRing.addEventListener('click', this.thumbnailClick);\n this.thumbnailSelectionRing.addEventListener('mouseover', this.thumbnailMouseOver);\n this.thumbnailSelectionRing.addEventListener('mouseleave', this.thumbnailMouseLeave);\n }\n };\n ThumbnailView.prototype.unwireUpEvents = function () {\n if (this.thumbnailSelectionRing && this.thumbnailImage) {\n this.thumbnailSelectionRing.removeEventListener('click', this.thumbnailClick);\n this.thumbnailSelectionRing.removeEventListener('mouseover', this.thumbnailMouseOver);\n this.thumbnailSelectionRing.removeEventListener('mouseleave', this.thumbnailMouseLeave);\n }\n };\n ThumbnailView.prototype.goToThumbnailPage = function (pageNumber) {\n if (pageNumber > 0 && pageNumber <= this.pdfViewerBase.pageCount && this.pdfViewerBase.currentPageNumber !== pageNumber) {\n this.pdfViewerBase.updateScrollTop(pageNumber - 1);\n }\n else {\n this.isThumbnailClicked = false;\n }\n };\n ThumbnailView.prototype.setSelectionStyle = function (thumbnailElement) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection-ring');\n thumbnailElement.classList.remove('e-pv-thumbnail-hover');\n thumbnailElement.classList.remove('e-pv-thumbnail-focus');\n thumbnailElement.classList.add('e-pv-thumbnail-selection');\n };\n ThumbnailView.prototype.setMouseOverStyle = function (thumbnailElement) {\n // eslint-disable-next-line max-len\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-selection')) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection-ring');\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-focus')) {\n thumbnailElement.classList.add('e-pv-thumbnail-hover');\n }\n }\n };\n ThumbnailView.prototype.setMouseLeaveStyle = function (thumbnailElement) {\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-selection')) {\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-focus')) {\n thumbnailElement.classList.add('e-pv-thumbnail-selection-ring');\n }\n thumbnailElement.classList.remove('e-pv-thumbnail-hover');\n }\n else {\n if (!thumbnailElement.classList.contains('e-pv-thumbnail-selection')) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection');\n thumbnailElement.classList.add('e-pv-thumbnail-focus');\n }\n }\n };\n ThumbnailView.prototype.setMouseFocusStyle = function (thumbnailElement) {\n thumbnailElement.classList.remove('e-pv-thumbnail-selection');\n thumbnailElement.classList.remove('e-pv-thumbnail-hover');\n thumbnailElement.classList.add('e-pv-thumbnail-focus');\n };\n ThumbnailView.prototype.setMouseFocusToFirstPage = function () {\n var thumbnailChild = this.thumbnailView.children[0];\n if (thumbnailChild) {\n var thumbnailDiv = thumbnailChild.children[0].children[0];\n this.setMouseFocusStyle(thumbnailDiv);\n this.previousElement = thumbnailDiv;\n }\n };\n /**\n * @private\n */\n ThumbnailView.prototype.clear = function () {\n this.startIndex = 0;\n this.thumbnailLimit = 0;\n if (this.pdfViewerBase.navigationPane) {\n if (this.pdfViewerBase.navigationPane.sideBarContentContainer) {\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.display = 'block';\n this.pdfViewerBase.navigationPane.sideBarContent.scrollTop = 0;\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.display = 'none';\n }\n }\n if (this.thumbnailView) {\n while (this.thumbnailView.hasChildNodes()) {\n this.thumbnailView.removeChild(this.thumbnailView.lastChild);\n }\n }\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.resetThumbnailView();\n }\n if (this.thumbnailRequestHandler) {\n this.thumbnailRequestHandler.clear();\n }\n this.unwireUpEvents();\n };\n ThumbnailView.prototype.getVisibleThumbs = function () {\n return this.getVisibleElements(this.pdfViewerBase.navigationPane.sideBarContent, this.thumbnailView.children);\n };\n ThumbnailView.prototype.getVisibleElements = function (scrollElement, thumbnailViewChildren) {\n var top = scrollElement.scrollTop;\n var bottom = top + scrollElement.clientHeight;\n var left = scrollElement.scrollLeft;\n var right = left + scrollElement.clientWidth;\n /**\n * @param thumbnailViewChildrenElement\n */\n function isThumbnailElementBottomAfterViewTop(thumbnailViewChildrenElement) {\n var elementBottom = thumbnailViewChildrenElement.offsetTop + thumbnailViewChildrenElement.clientTop + thumbnailViewChildrenElement.clientHeight;\n return elementBottom > top;\n }\n // eslint-disable-next-line\n var visible = [];\n var thumbnailView;\n var element;\n var currentHeight;\n var viewHeight;\n var viewBottom;\n var hiddenHeight;\n var currentWidth;\n var viewWidth;\n var viewRight;\n var hiddenWidth;\n var percentVisible;\n var firstVisibleElementInd = thumbnailViewChildren.length === 0 ? 0 :\n this.binarySearchFirstItem(thumbnailViewChildren, isThumbnailElementBottomAfterViewTop);\n if (thumbnailViewChildren.length > 0) {\n firstVisibleElementInd =\n this.backtrackBeforeAllVisibleElements(firstVisibleElementInd, thumbnailViewChildren, top);\n }\n var lastEdge = -1;\n for (var i = firstVisibleElementInd, ii = thumbnailViewChildren.length; i < ii; i++) {\n thumbnailView = this.getThumbnailElement(i);\n element = thumbnailView;\n currentWidth = element.offsetLeft + element.clientLeft;\n currentHeight = element.offsetTop + element.clientTop;\n viewWidth = element.clientWidth;\n viewHeight = element.clientHeight;\n viewRight = currentWidth + viewWidth;\n viewBottom = currentHeight + viewHeight;\n if (lastEdge === -1) {\n if (viewBottom >= bottom) {\n lastEdge = viewBottom;\n }\n }\n else if (currentHeight > lastEdge) {\n break;\n }\n if (viewBottom <= top || currentHeight >= bottom ||\n viewRight <= left || currentWidth >= right) {\n continue;\n }\n hiddenHeight = Math.max(0, top - currentHeight) +\n Math.max(0, viewBottom - bottom);\n hiddenWidth = Math.max(0, left - currentWidth) +\n Math.max(0, viewRight - right);\n // eslint-disable-next-line no-bitwise\n percentVisible = ((viewHeight - hiddenHeight) * (viewWidth - hiddenWidth) * 100 / viewHeight / viewWidth) | 0;\n visible.push({\n id: thumbnailView.id,\n x: currentWidth,\n y: currentHeight,\n view: thumbnailView,\n percent: percentVisible\n });\n }\n var first = visible[0];\n var last = visible[visible.length - 1];\n return { first: first, last: last, views: visible };\n };\n // eslint-disable-next-line\n ThumbnailView.prototype.binarySearchFirstItem = function (items, condition) {\n var minIndex = 0;\n var maxIndex = items.length - 1;\n if (items.length === 0 || !condition(this.getThumbnailElement(maxIndex))) {\n return items.length - 1;\n }\n if (condition(this.getThumbnailElement(minIndex))) {\n return minIndex;\n }\n while (minIndex < maxIndex) {\n // eslint-disable-next-line no-bitwise\n var currentIndex = (minIndex + maxIndex) >> 1;\n if (condition(this.getThumbnailElement(currentIndex))) {\n maxIndex = currentIndex;\n }\n else {\n minIndex = currentIndex + 1;\n }\n }\n return minIndex; /* === maxIndex */\n };\n ThumbnailView.prototype.backtrackBeforeAllVisibleElements = function (index, views, top) {\n if (index < 2) {\n return index;\n }\n var thumbnailElement = this.getThumbnailElement(index);\n var pageTop = thumbnailElement.offsetTop + thumbnailElement.clientTop;\n if (pageTop >= top) {\n thumbnailElement = this.getThumbnailElement(index - 1);\n pageTop = thumbnailElement.offsetTop + thumbnailElement.clientTop;\n }\n for (var i = index - 2; i >= 0; --i) {\n thumbnailElement = this.getThumbnailElement(i);\n if (thumbnailElement.offsetTop + thumbnailElement.clientTop + thumbnailElement.clientHeight <= pageTop) {\n break;\n }\n index = i;\n }\n return index;\n };\n ThumbnailView.prototype.getThumbnailElement = function (index) {\n var thumbnailChild = this.thumbnailView.children[index];\n return thumbnailChild.children[0];\n };\n /**\n * @private\n */\n ThumbnailView.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n ThumbnailView.prototype.getModuleName = function () {\n return 'ThumbnailView';\n };\n return ThumbnailView;\n}());\n\n/**\n * export types\n */\n\n/* eslint-disable */\n/* eslint-disable */\n/**\n * @hidden\n */\nvar FormDesignerToolbar = /** @__PURE__ @class */ (function () {\n function FormDesignerToolbar(viewer, viewerBase, toolbar) {\n /**\n * @private\n */\n this.isToolbarHidden = false;\n this.isTextboxBtnVisible = true;\n this.isPasswordBtnVisible = true;\n this.isCheckboxBtnVisible = true;\n this.isRadiobuttonBtnVisible = true;\n this.isDropdownBtnVisible = true;\n this.isListboxBtnVisible = true;\n this.isSignatureBtnVisible = true;\n this.isDeleteBtnVisible = true;\n this.toolbarBorderHeight = 1;\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n this.primaryToolbar = toolbar;\n }\n FormDesignerToolbar.prototype.initializeFormDesignerToolbar = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_formdesigner_toolbar', className: 'e-pv-formdesigner-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n this.toolbar = new Toolbar({\n width: '', height: '', overflowMode: 'Popup',\n items: this.createToolbarItems(), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns();\n }\n });\n //this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.afterToolbarCreation();\n this.createSignContainer();\n this.applyFormDesignerToolbarSettings();\n //this.updateToolbarItems();\n this.showFormDesignerToolbar(null, true);\n };\n /**\n * @private\n */\n FormDesignerToolbar.prototype.resetFormDesignerToolbar = function () {\n this.adjustViewer(false);\n if (this.pdfViewer.isFormDesignerToolbarVisible) {\n this.toolbarElement.style.display = '';\n this.isToolbarHidden = false;\n this.adjustViewer(true);\n this.pdfViewer.isFormDesignerToolbarVisible = true;\n }\n else {\n this.toolbarElement.style.display = 'none';\n this.isToolbarHidden = true;\n this.pdfViewer.isFormDesignerToolbarVisible = false;\n }\n };\n /**\n * @param element\n * @param isInitialLoading\n * @param element\n * @param isInitialLoading\n * @private\n */\n FormDesignerToolbar.prototype.showFormDesignerToolbar = function (element, isInitialLoading) {\n if (!this.isToolbarHidden) {\n // eslint-disable-next-line\n var formDesignerModule = this.pdfViewer.formDesignerModule;\n if (element) {\n this.primaryToolbar.deSelectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.deSelectItem(this.primaryToolbar.formDesignerItem);\n }\n }\n this.adjustViewer(false);\n // eslint-disable-next-line max-len\n //this.deselectAllItems();\n this.toolbarElement.style.display = 'none';\n this.pdfViewer.formDesignerModule.setMode(\"edit\");\n this.pdfViewer.designerMode = false;\n if (!isInitialLoading) {\n this.pdfViewer.isFormDesignerToolbarVisible = false;\n }\n }\n else {\n var toolBarInitialStatus = this.toolbarElement.style.display;\n this.toolbarElement.style.display = 'block';\n this.pdfViewer.designerMode = true;\n this.pdfViewer.formDesignerModule.setMode(\"designer\");\n if (!isInitialLoading) {\n this.pdfViewer.isFormDesignerToolbarVisible = true;\n }\n if (element) {\n this.primaryToolbar.selectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.selectItem(this.primaryToolbar.formDesignerItem);\n }\n }\n if (toolBarInitialStatus === 'none') {\n this.adjustViewer(true);\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnification && this.pdfViewer.magnification.fitType === 'fitToPage') {\n this.pdfViewer.magnification.fitToPage();\n }\n //this.enableAnnotationAddTools(true);\n this.isToolbarHidden = !this.isToolbarHidden;\n };\n /**\n * @param isAdjust\n * @private\n */\n FormDesignerToolbar.prototype.adjustViewer = function (isAdjust) {\n var splitterElement;\n var toolbarContainer;\n var formDesignerToolbarHeight;\n if (isBlazor()) {\n splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var formDesignerToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-formDesigner-toolbar');\n formDesignerToolbarHeight = this.getToolbarHeight(formDesignerToolbarContainer);\n }\n else {\n splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n formDesignerToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var toolbarHeight = this.getToolbarHeight(toolbarContainer);\n var sideBarToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarContentContainer = this.pdfViewerBase.navigationPane.sideBarContentContainer;\n var commentsContainer = this.pdfViewerBase.navigationPane.commentPanelContainer;\n var commentPanelResizer = this.pdfViewerBase.navigationPane.commentPanelResizer;\n var newToolbarHeight = '';\n if (isAdjust) {\n if (this.pdfViewer.enableToolbar) {\n sideBarToolbar.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n splitterElement.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n commentsContainer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n }\n else {\n sideBarToolbar.style.top = (formDesignerToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (formDesignerToolbarHeight) + 'px';\n splitterElement.style.top = (formDesignerToolbarHeight) + 'px';\n commentsContainer.style.top = (formDesignerToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + formDesignerToolbarHeight) + 'px';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (formDesignerToolbarHeight + toolbarHeight)) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(formDesignerToolbarHeight + toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n // eslint-disable-next-line max-len\n sideBarToolbar.style.top = toolbarHeight + 'px';\n sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n commentsContainer.style.top = toolbarHeight + 'px';\n commentPanelResizer.style.top = toolbarHeight + 'px';\n }\n else {\n sideBarToolbar.style.top = 1 + 'px';\n sideBarToolbar.style.height = '100%';\n sideBarContentContainer.style.top = 1 + 'px';\n sideBarContentContainer.style.height = '100%';\n splitterElement.style.top = 1 + 'px';\n splitterElement.style.height = '100%';\n commentsContainer.style.top = 1 + 'px';\n commentsContainer.style.height = '100%';\n commentPanelResizer.style.top = 1 + 'px';\n commentPanelResizer.style.height = '100%';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), formDesignerToolbarHeight) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n if (this.pdfViewerBase.viewerContainer.style.height === '0px') {\n // eslint-disable-next-line\n this.pdfViewerBase.viewerContainer.style.height = (parseInt(this.pdfViewer.element.style.height) - parseInt(sideBarToolbar.style.top)) + 'px';\n }\n }\n };\n FormDesignerToolbar.prototype.getElementHeight = function (element) {\n try {\n return element.getBoundingClientRect().height;\n }\n catch (error) {\n return 0;\n }\n };\n FormDesignerToolbar.prototype.updateViewerHeight = function (viewerHeight, toolbarHeight) {\n return this.getElementHeight(this.pdfViewer.element) - toolbarHeight;\n };\n FormDesignerToolbar.prototype.resetViewerHeight = function (viewerHeight, toolbarHeight) {\n return viewerHeight + toolbarHeight;\n };\n FormDesignerToolbar.prototype.getNavigationToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n FormDesignerToolbar.prototype.updateContentContainerHeight = function (isAdjust, isBlazor$$1) {\n var formDesignerToolbarHeight;\n if (isBlazor$$1) {\n var formDesignerToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-formDesigner-toolbar');\n formDesignerToolbarHeight = this.getToolbarHeight(formDesignerToolbarContainer);\n }\n else {\n formDesignerToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var sideBarClientRect = this.pdfViewerBase.navigationPane.sideBarContentContainer.getBoundingClientRect();\n if (sideBarClientRect.height !== 0) {\n if (isAdjust) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height - formDesignerToolbarHeight + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height + formDesignerToolbarHeight + 'px';\n }\n }\n };\n FormDesignerToolbar.prototype.getToolbarHeight = function (element) {\n var toolbarHeight = element.getBoundingClientRect().height;\n if (toolbarHeight === 0 && element === this.pdfViewerBase.getElement('_toolbarContainer')) {\n // getComputedStyle gets the value from style and toolbar border height is added to it.\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(element)['height']) + this.toolbarBorderHeight;\n }\n return toolbarHeight;\n };\n // eslint-disable-next-line\n FormDesignerToolbar.prototype.createToolbarItems = function () {\n var signTemplate = this.getTemplate('button', '_formfield_signature', 'e-pv-annotation-handwritten-container');\n // eslint-disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-textbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_textbox', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-password-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_passwordfield', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-checkbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_checkbox', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-radiobutton-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_radiobutton', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-dropdown-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_dropdown', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-listbox-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_formdesigner_listbox', align: 'Left' });\n items.push({ template: signTemplate, align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_formdesigner_delete', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-annotation-tools-close-icon e-pv-icon', className: 'e-pv-annotation-tools-close-container', id: this.pdfViewer.element.id + '_formdesigner_close', align: 'Right' });\n return items;\n };\n FormDesignerToolbar.prototype.createSignContainer = function () {\n var _this = this;\n this.handWrittenSignatureItem = this.pdfViewerBase.getElement('_formfield_signature');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_formfield_signature'), this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText'));\n // eslint-disable-next-line\n var items = [];\n items = [\n {\n text: 'ADD SIGNATURE'\n },\n {\n separator: true\n },\n {\n text: 'ADD INITIAL'\n }\n ];\n var saveOptions = {\n items: items,\n iconCss: 'e-pv-handwritten-icon e-pv-icon',\n cssClass: 'e-pv-handwritten-popup',\n beforeItemRender: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n if (args.element && args.element.className.indexOf(\"e-separator\") !== -1) {\n args.element.style.margin = \"8px 0\";\n args.element.setAttribute('role', 'menuitem');\n args.element.setAttribute('aria-label', 'separator');\n }\n if (args.item.text === 'ADD SIGNATURE') {\n args.element.innerHTML = '';\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickSignature.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n if (args.item.text === 'ADD INITIAL') {\n args.element.innerHTML = '';\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('InitialFieldDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickInitial.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n },\n };\n var drpDownBtn = new DropDownButton(saveOptions);\n if (this.pdfViewer.enableRtl) {\n drpDownBtn.enableRtl = this.pdfViewer.enableRtl;\n }\n drpDownBtn.appendTo(this.handWrittenSignatureItem);\n };\n FormDesignerToolbar.prototype.hoverInitialBtn = function (event) {\n var eventTarget = event.target;\n var currentFieldID = isNullOrUndefined(event.path) ? event.composedPath()[0].id : event.path[0].id;\n if (currentFieldID !== 'sign_' + currentFieldID.split(\"_\")[1] && currentFieldID !== 'delete_' + currentFieldID.split(\"_\")[1]) {\n var liElement = document.getElementById(eventTarget.id);\n if (isNullOrUndefined(liElement)) {\n liElement = document.getElementById(eventTarget.parentElement.id);\n }\n if (liElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.style.background = 'transparent';\n liElement.style.cursor = 'default';\n }\n else if (liElement.parentElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.parentElement.style.background = 'transparent';\n liElement.parentElement.style.cursor = 'default';\n }\n }\n };\n FormDesignerToolbar.prototype.getTemplate = function (elementName, id, className) {\n var element = createElement(elementName, { id: this.pdfViewer.element.id + id });\n if (className) {\n element.className = className;\n }\n return element.outerHTML;\n };\n FormDesignerToolbar.prototype.onToolbarClicked = function (args) {\n // eslint-disable-next-line\n if (args && args.item) {\n if (args.item.id.indexOf(\"textbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('Textbox');\n }\n else if (args.item.id.indexOf(\"passwordfield\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('Password');\n }\n else if (args.item.id.indexOf(\"checkbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('CheckBox');\n }\n else if (args.item.id.indexOf(\"radiobutton\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('RadioButton');\n }\n else if (args.item.id.indexOf(\"dropdown\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('DropDown');\n }\n else if (args.item.id.indexOf(\"listbox\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('ListBox');\n }\n else if (args.item.id.indexOf(\"signature\") !== -1) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('SignatureField');\n }\n else if (args.item.id.indexOf(\"close\") !== -1) {\n this.pdfViewer.toolbarModule.formDesignerToolbarModule.showFormDesignerToolbar(this.pdfViewer.toolbarModule.formDesignerItem);\n }\n else if (args.item.id.indexOf(\"delete\") !== -1) {\n this.pdfViewer.formDesignerModule.deleteFormField(this.pdfViewer.selectedItems.formFields[0]);\n this.showHideDeleteIcon(false);\n }\n if (this.pdfViewer.selectedItems.formFields.length > 0) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.formFields[0].pageIndex);\n }\n }\n };\n FormDesignerToolbar.prototype.clickSignature = function (args) {\n this.pdfViewer.formDesignerModule.setFormFieldMode('SignatureField');\n };\n FormDesignerToolbar.prototype.clickInitial = function (args) {\n this.pdfViewer.isInitialFieldToolbarSelection = true;\n this.pdfViewer.formDesignerModule.setFormFieldMode('InitialField');\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n };\n FormDesignerToolbar.prototype.afterToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.textboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_textbox', 'e-pv-formdesigner-textbox', this.pdfViewer.localeObj.getConstant('Textbox'));\n this.passwordItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_passwordfield', 'e-pv-formdesigner-passwordfield', this.pdfViewer.localeObj.getConstant('Password'));\n this.checkboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_checkbox', 'e-pv-formdesigner-checkbox', this.pdfViewer.localeObj.getConstant('Check Box'));\n this.radioButtonItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_radiobutton', 'e-pv-formdesigner-radiobutton', this.pdfViewer.localeObj.getConstant('Radio Button'));\n this.dropdownItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_dropdown', 'e-pv-formdesigner-dropdown', this.pdfViewer.localeObj.getConstant('Dropdown'));\n this.listboxItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_listbox', 'e-pv-formdesigner-listbox', this.pdfViewer.localeObj.getConstant('List Box'));\n //this.signatureItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_signature', 'e-pv-formdesigner-signature', this.pdfViewer.localeObj.getConstant('Signature'));\n this.deleteItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_delete', 'e-pv-formdesigner-delete', this.pdfViewer.localeObj.getConstant('Delete FormField'));\n this.closeItem = this.primaryToolbar.addClassToolbarItem('_formdesigner_close', 'e-pv-annotation-tools-close', null);\n this.showHideDeleteIcon(false);\n //this.enableTextMarkupAnnotationPropertiesTools(false); \n };\n FormDesignerToolbar.prototype.showHideDeleteIcon = function (isEnable) {\n if (this.toolbar)\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n };\n /**\n * @private\n */\n FormDesignerToolbar.prototype.applyFormDesignerToolbarSettings = function () {\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems) {\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('TextboxTool') !== -1) {\n this.showTextboxTool(true);\n }\n else {\n this.showTextboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('PasswordTool') !== -1) {\n this.showPasswordTool(true);\n }\n else {\n this.showPasswordTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('CheckBoxTool') !== -1) {\n this.showCheckboxTool(true);\n }\n else {\n this.showCheckboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('RadioButtonTool') !== -1) {\n this.showRadioButtonTool(true);\n }\n else {\n this.showRadioButtonTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DropdownTool') !== -1) {\n this.showDropdownTool(true);\n }\n else {\n this.showDropdownTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('ListboxTool') !== -1) {\n this.showListboxTool(true);\n }\n else {\n this.showListboxTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DrawSignatureTool') !== -1) {\n this.showDrawSignatureTool(true);\n }\n else {\n this.showDrawSignatureTool(false);\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.indexOf('DeleteTool') !== -1) {\n this.showDeleteTool(true);\n }\n else {\n this.showDeleteTool(false);\n }\n this.showSeparator();\n }\n };\n FormDesignerToolbar.prototype.showTextboxTool = function (isShow) {\n this.isTextboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 0, 0);\n };\n FormDesignerToolbar.prototype.showPasswordTool = function (isShow) {\n this.isPasswordBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 1, 1);\n };\n FormDesignerToolbar.prototype.showCheckboxTool = function (isShow) {\n this.isCheckboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 2, 2);\n };\n FormDesignerToolbar.prototype.showRadioButtonTool = function (isShow) {\n this.isRadiobuttonBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 3, 3);\n };\n FormDesignerToolbar.prototype.showDropdownTool = function (isShow) {\n this.isDropdownBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 4, 4);\n };\n FormDesignerToolbar.prototype.showListboxTool = function (isShow) {\n this.isListboxBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 5, 5);\n };\n FormDesignerToolbar.prototype.showDrawSignatureTool = function (isShow) {\n this.isSignatureBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 6, 6);\n };\n FormDesignerToolbar.prototype.showDeleteTool = function (isShow) {\n this.isDeleteBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 8, 8);\n };\n FormDesignerToolbar.prototype.showSeparator = function () {\n if (!this.isSignatureBtnVisible && !this.isDeleteBtnVisible)\n this.applyHideToToolbar(false, 7, 7);\n };\n FormDesignerToolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n this.toolbar.hideItem(index, isHide);\n }\n };\n FormDesignerToolbar.prototype.createDropDowns = function () {\n };\n /**\n * @private\n */\n FormDesignerToolbar.prototype.destroy = function () {\n var componentElement = [this.textboxItem, this.passwordItem, this.checkboxItem, this.radioButtonItem,\n this.listboxItem, this.dropdownItem, this.handWrittenSignatureItem, this.deleteItem];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n FormDesignerToolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n return FormDesignerToolbar;\n}());\n\n/* eslint-disable */\n/**\n * Toolbar module\n */\nvar Toolbar$1 = /** @__PURE__ @class */ (function () {\n /**\n * @param viewer\n * @param viewerBase\n * @param viewer\n * @param viewerBase\n * @private\n */\n function Toolbar$$1(viewer, viewerBase) {\n var _this = this;\n this.isPageNavigationToolDisabled = false;\n this.isMagnificationToolDisabled = false;\n /**\n * @private\n */\n this.isSelectionToolDisabled = false;\n this.isScrollingToolDisabled = false;\n this.isOpenBtnVisible = true;\n this.isNavigationToolVisible = true;\n this.isMagnificationToolVisible = true;\n this.isSelectionBtnVisible = true;\n this.isScrollingBtnVisible = true;\n this.isDownloadBtnVisible = true;\n this.isPrintBtnVisible = true;\n this.isSearchBtnVisible = true;\n this.isTextSearchBoxDisplayed = false;\n this.isUndoRedoBtnsVisible = true;\n this.isAnnotationEditBtnVisible = true;\n this.isFormDesignerEditBtnVisible = true;\n this.isCommentBtnVisible = true;\n this.isSubmitbtnvisible = true;\n this.onToolbarKeydown = function (event) {\n var targetId = event.target.id;\n if (!(targetId === _this.pdfViewer.element.id + '_currentPageInput' || targetId === _this.pdfViewer.element.id + '_zoomDropDown')) {\n event.preventDefault();\n event.stopPropagation();\n }\n };\n this.toolbarClickHandler = function (args) {\n // eslint-disable-next-line max-len\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n if (args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[1] || args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[2]) {\n args.cancel = true;\n }\n else if (args.originalEvent.target.id === _this.pdfViewer.element.id + '_openIcon') {\n var tooltipData = args.originalEvent.target.parentElement.dataset;\n if (tooltipData && tooltipData.tooltipId) {\n var tooltipElement = document.getElementById(tooltipData.tooltipId);\n if (tooltipElement) {\n tooltipElement.style.display = 'none';\n }\n }\n }\n }\n _this.handleToolbarBtnClick(args);\n // eslint-disable-next-line\n var targetElement = args.originalEvent.target;\n if (!Browser.isDevice || _this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n if (!(args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[1] || args.originalEvent.target === _this.zoomDropdownItem.parentElement.childNodes[2] || args.originalEvent.target === _this.currentPageBoxElement || args.originalEvent.target === _this.textSearchItem.childNodes[0])) {\n if (targetElement.parentElement.id !== _this.pdfViewer.element.id + '_toolbarContainer_nav' && targetElement.id !== _this.pdfViewer.element.id + '_toolbarContainer_nav') {\n args.originalEvent.target.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n else {\n args.originalEvent.target.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n };\n // eslint-disable-next-line\n this.loadDocument = function (args) {\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n if (uploadedFile) {\n _this.uploadedDocumentName = uploadedFile.name;\n var reader = new FileReader();\n reader.readAsDataURL(uploadedFile);\n // eslint-disable-next-line\n reader.onload = function (e) {\n var uploadedFileUrl = e.currentTarget.result;\n if (isBlazor()) {\n _this.pdfViewer._dotnetInstance.invokeMethodAsync(\"LoadDocumentFromClient\", uploadedFileUrl);\n }\n else {\n _this.pdfViewer.load(uploadedFileUrl, null);\n }\n };\n }\n }\n };\n this.navigateToPage = function (args) {\n if (args.which === 13) {\n // eslint-disable-next-line\n var enteredValue = parseInt(_this.currentPageBoxElement.value);\n if (enteredValue !== null) {\n if (enteredValue > 0 && enteredValue <= _this.pdfViewerBase.pageCount) {\n if (_this.pdfViewer.navigationModule) {\n _this.pdfViewer.navigationModule.goToPage(enteredValue);\n }\n }\n else {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n }\n else {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n _this.currentPageBoxElement.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n };\n this.textBoxFocusOut = function () {\n // eslint-disable-next-line\n if (_this.currentPageBox.value === null || _this.currentPageBox.value >= _this.pdfViewerBase.pageCount || _this.currentPageBox.value !== _this.pdfViewerBase.currentPageNumber) {\n _this.updateCurrentPage(_this.pdfViewerBase.currentPageNumber);\n }\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n }\n /**\n * @param width\n * @private\n */\n Toolbar$$1.prototype.intializeToolbar = function (width) {\n var toolbarDiv;\n if (!isBlazor()) {\n toolbarDiv = this.createToolbar(width);\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n this.toolbarElement = toolbarDiv;\n }\n }\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (isIE) {\n if (isBlazor()) {\n this.pdfViewerBase.blazorUIAdaptor.totalPageElement.classList.add('e-pv-total-page-ms');\n }\n else {\n if (!Browser.isDevice) {\n this.totalPageItem.classList.add('e-pv-total-page-ms');\n }\n }\n }\n this.createFileElement(toolbarDiv);\n this.wireEvent();\n if (!isBlazor()) {\n this.updateToolbarItems();\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyToolbarSettings();\n this.initialEnableItems();\n this.pdfViewerBase.navigationPane.adjustPane();\n }\n else {\n this.initialEnableItems();\n }\n if (this.pdfViewer.annotationModule) {\n this.annotationToolbarModule = new AnnotationToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.annotationToolbarModule.initializeAnnotationToolbar();\n }\n }\n if (this.pdfViewer.formDesignerModule) {\n this.formDesignerToolbarModule = new FormDesignerToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.formDesignerToolbarModule.initializeFormDesignerToolbar();\n }\n }\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.initialEnableItems();\n this.pdfViewerBase.navigationPane.adjustPane();\n if (this.pdfViewer.enableToolbar) {\n this.bindOpenIconEvent();\n }\n }\n this.PanElement = document.getElementById(this.pdfViewer.element.id + '_handTool').children[0];\n this.PanElement.classList.add('e-pv-tbar-btn');\n this.SelectToolElement = document.getElementById(this.pdfViewer.element.id + '_selectTool').children[0];\n this.SelectToolElement.classList.add('e-pv-tbar-btn');\n this.CommentElement = document.getElementById(this.pdfViewer.element.id + '_comment').children[0];\n this.CommentElement.classList.add('e-pv-tbar-btn');\n this.annotationToolbarModule = new AnnotationToolbar(this.pdfViewer, this.pdfViewerBase, this);\n if (this.pdfViewer.enableToolbar && this.pdfViewer.enableAnnotationToolbar || (this.pdfViewer.enableDesktopMode && Browser.isDevice)) {\n this.annotationToolbarModule.afterAnnotationToolbarCreationInBlazor();\n }\n }\n return toolbarDiv;\n };\n Toolbar$$1.prototype.bindOpenIconEvent = function () {\n var openElement = document.getElementById(this.pdfViewer.element.id + '_open');\n if (openElement) {\n openElement.addEventListener('click', this.openFileDialogBox.bind(this));\n }\n };\n Toolbar$$1.prototype.InitializeMobileToolbarInBlazor = function () {\n var toolbarDiv;\n toolbarDiv = this.pdfViewer.element.querySelector('.e-pv-mobile-toolbar');\n this.createFileElement(toolbarDiv);\n this.wireEvent();\n };\n /**\n * Shows /hides the toolbar in the PdfViewer\n *\n * @param {boolean} enableToolbar - If set true , its show the Toolbar\n * @returns void\n */\n Toolbar$$1.prototype.showToolbar = function (enableToolbar) {\n var toolbar = this.toolbarElement;\n if (enableToolbar) {\n toolbar.style.display = 'block';\n // eslint-disable-next-line max-len\n if ((Browser.isDevice && !this.pdfViewer.enableDesktopMode) && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n }\n }\n else {\n this.pdfViewerBase.toolbarHeight = 0;\n if (enableToolbar) {\n if (Browser.isDevice && this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar) {\n this.annotationToolbarModule.toolbarCreated = false;\n this.annotationToolbarModule.adjustMobileViewer();\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.element.style.display = 'none';\n }\n if (Browser.isDevice && this.annotationToolbarModule.propertyToolbar) {\n this.annotationToolbarModule.propertyToolbar.element.style.display = 'none';\n }\n }\n toolbar.style.display = 'none';\n }\n };\n /**\n * Shows/hides the Navigation toolbar in the PdfViewer\n *\n * @param {boolean} enableNavigationToolbar - If set true , its show the Navigation Toolbar\n * @returns void\n */\n Toolbar$$1.prototype.showNavigationToolbar = function (enableNavigationToolbar) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n var navigationToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var navigationToolbarSplitter = this.pdfViewerBase.navigationPane.sideBarToolbarSplitter;\n if (enableNavigationToolbar) {\n navigationToolbar.style.display = 'block';\n navigationToolbarSplitter.style.display = 'block';\n if (this.pdfViewerBase.navigationPane.isBookmarkOpen || this.pdfViewerBase.navigationPane.isThumbnailOpen) {\n this.pdfViewerBase.navigationPane.clear();\n }\n }\n else {\n navigationToolbar.style.display = 'none';\n navigationToolbarSplitter.style.display = 'none';\n if (this.pdfViewerBase.navigationPane.isBookmarkOpen || this.pdfViewerBase.navigationPane.isThumbnailOpen) {\n this.pdfViewerBase.navigationPane.updateViewerContainerOnClose();\n }\n }\n }\n };\n /**\n * Shows /hides the annotation toolbar in the PdfViewer\n *\n * @param {boolean} enableAnnotationToolbar - If set true , its show the annotation Toolbar\n * @returns void\n */\n Toolbar$$1.prototype.showAnnotationToolbar = function (enableAnnotationToolbar) {\n if (enableAnnotationToolbar) {\n this.annotationToolbarModule.isToolbarHidden = true;\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n else {\n this.annotationToolbarModule.isToolbarHidden = false;\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n };\n /**\n * Shows /hides the the toolbar items in the PdfViewer\n *\n * @param {string[]} items - Defines the toolbar items in the toolbar\n * @param {boolean} isVisible - If set true, then its show the toolbar Items\n * @returns void\n */\n Toolbar$$1.prototype.showToolbarItem = function (items, isVisible) {\n for (var i = 0; i < items.length; i++) {\n switch (items[i]) {\n case 'OpenOption':\n this.showOpenOption(isVisible);\n break;\n case 'PageNavigationTool':\n this.showPageNavigationTool(isVisible);\n break;\n case 'MagnificationTool':\n this.showMagnificationTool(isVisible);\n break;\n case 'SelectionTool':\n this.showSelectionTool(isVisible);\n break;\n case 'PanTool':\n this.showScrollingTool(isVisible);\n break;\n case 'DownloadOption':\n this.showDownloadOption(isVisible);\n break;\n case 'PrintOption':\n this.showPrintOption(isVisible);\n break;\n case 'SearchOption':\n this.showSearchOption(isVisible);\n break;\n case 'UndoRedoTool':\n this.showUndoRedoTool(isVisible);\n break;\n case 'AnnotationEditTool':\n this.showAnnotationEditTool(isVisible);\n break;\n case 'FormDesignerEditTool':\n this.showFormDesignerEditTool(isVisible);\n break;\n case 'CommentTool':\n this.showCommentOption(isVisible);\n break;\n case 'SubmitForm':\n this.showSubmitForm(isVisible);\n break;\n }\n }\n this.applyHideToToolbar(true, 1, 1);\n this.applyHideToToolbar(true, 8, 8);\n this.applyHideToToolbar(true, 12, 12);\n this.applyHideToToolbar(true, 15, 15);\n this.showSeparator(items);\n };\n /**\n * Enables /disables the the toolbar items in the PdfViewer\n *\n * @param {string[]} items - Defines the toolbar items in the toolbar\n * @param {boolean} isEnable - If set true, then its Enable the toolbar Items\n * @returns void\n */\n Toolbar$$1.prototype.enableToolbarItem = function (items, isEnable) {\n for (var i = 0; i < items.length; i++) {\n switch (items[i]) {\n case 'OpenOption':\n this.enableOpenOption(isEnable);\n break;\n case 'PageNavigationTool':\n this.isPageNavigationToolDisabled = isEnable;\n this.enablePageNavigationTool(isEnable);\n break;\n case 'MagnificationTool':\n this.isMagnificationToolDisabled = isEnable;\n this.enableMagnificationTool(isEnable);\n break;\n case 'SelectionTool':\n this.isSelectionToolDisabled = isEnable;\n this.enableSelectionTool(isEnable);\n break;\n case 'PanTool':\n this.isScrollingToolDisabled = isEnable;\n this.enableScrollingTool(isEnable);\n break;\n case 'DownloadOption':\n this.enableDownloadOption(isEnable);\n break;\n case 'PrintOption':\n this.enablePrintOption(isEnable);\n break;\n case 'SearchOption':\n this.enableSearchOption(isEnable);\n break;\n case 'UndoRedoTool':\n this.enableUndoRedoTool(isEnable);\n break;\n case 'AnnotationEditTool':\n this.enableAnnotationEditTool(isEnable);\n break;\n case 'FormDesignerEditTool':\n this.enableFormDesignerEditTool(isEnable);\n break;\n case 'CommentTool':\n this.enableCommentsTool(isEnable);\n break;\n }\n }\n };\n /**\n * @param restrictionSummary\n * @param isEnable\n * @param restrictionSummary\n * @param isEnable\n * @private\n */\n // eslint-disable-next-line\n Toolbar$$1.prototype.DisableToolbarItems = function (restrictionSummary, isEnable) {\n switch (restrictionSummary) {\n case 'Print':\n this.enablePrintOption(isEnable);\n break;\n case 'CopyContent':\n this.isSelectionToolDisabled = isEnable;\n this.enableSelectionTool(isEnable);\n if (isEnable) {\n this.pdfViewerBase.initiateTextSelectMode();\n this.updateInteractionTools(isEnable);\n }\n else {\n this.pdfViewerBase.initiatePanning();\n this.updateInteractionTools(isEnable);\n }\n break;\n case 'EditAnnotations':\n this.enableAnnotationEditTool(isEnable);\n if (this.annotationToolbarModule && !this.annotationToolbarModule.isToolbarHidden) {\n this.annotationToolbarModule.showAnnotationToolbar();\n }\n break;\n }\n };\n Toolbar$$1.prototype.showOpenOption = function (enableOpenOption) {\n this.isOpenBtnVisible = enableOpenOption;\n this.applyHideToToolbar(enableOpenOption, 0, 0);\n };\n Toolbar$$1.prototype.showPageNavigationTool = function (enablePageNavigationTool) {\n this.isNavigationToolVisible = enablePageNavigationTool;\n this.applyHideToToolbar(enablePageNavigationTool, 2, 7);\n };\n Toolbar$$1.prototype.showMagnificationTool = function (enableMagnificationTool) {\n this.isMagnificationToolVisible = enableMagnificationTool;\n this.applyHideToToolbar(enableMagnificationTool, 9, 11);\n };\n Toolbar$$1.prototype.showSelectionTool = function (enableSelectionTool) {\n this.isSelectionBtnVisible = enableSelectionTool;\n this.applyHideToToolbar(enableSelectionTool, 13, 13);\n };\n Toolbar$$1.prototype.showScrollingTool = function (enableScrollingTool) {\n this.isScrollingBtnVisible = enableScrollingTool;\n this.applyHideToToolbar(enableScrollingTool, 14, 14);\n };\n Toolbar$$1.prototype.showDownloadOption = function (enableDownloadOption) {\n this.isDownloadBtnVisible = enableDownloadOption;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(enableDownloadOption, 26, 26);\n }\n else {\n this.applyHideToToolbar(enableDownloadOption, 5, 5);\n }\n };\n Toolbar$$1.prototype.showPrintOption = function (enablePrintOption) {\n this.isPrintBtnVisible = enablePrintOption;\n this.applyHideToToolbar(enablePrintOption, 25, 25);\n };\n Toolbar$$1.prototype.showSearchOption = function (enableSearchOption) {\n this.isSearchBtnVisible = enableSearchOption;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(enableSearchOption, 22, 22);\n }\n else {\n this.applyHideToToolbar(enableSearchOption, 5, 5);\n }\n };\n Toolbar$$1.prototype.showUndoRedoTool = function (isEnable) {\n this.isUndoRedoBtnsVisible = isEnable;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(isEnable, 16, 17);\n }\n else {\n this.applyHideToToolbar(isEnable, 2, 3);\n }\n };\n Toolbar$$1.prototype.showCommentOption = function (isEnable) {\n if (!this.pdfViewer.enableStickyNotesAnnotation) {\n this.isCommentBtnVisible = isEnable;\n this.applyHideToToolbar(this.pdfViewer.enableStickyNotesAnnotation, 18, 19);\n }\n else {\n this.isCommentBtnVisible = isEnable;\n this.applyHideToToolbar(isEnable, 18, 19);\n }\n };\n Toolbar$$1.prototype.showAnnotationEditTool = function (isEnable) {\n this.isAnnotationEditBtnVisible = isEnable;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.applyHideToToolbar(isEnable, 23, 23);\n }\n else {\n this.applyHideToToolbar(isEnable, 4, 4);\n }\n };\n Toolbar$$1.prototype.showFormDesignerEditTool = function (isEnable) {\n this.isFormDesignerEditBtnVisible = isEnable;\n this.applyHideToToolbar(isEnable, 24, 24);\n };\n Toolbar$$1.prototype.showSubmitForm = function (isEnable) {\n this.isSubmitbtnvisible = isEnable;\n this.applyHideToToolbar(isEnable, 20, 21);\n };\n Toolbar$$1.prototype.enableOpenOption = function (enableOpenOption) {\n this.toolbar.enableItems(this.openDocumentItem.parentElement, enableOpenOption);\n };\n Toolbar$$1.prototype.enablePageNavigationTool = function (enablePageNavigationTool) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, enablePageNavigationTool);\n this.toolbar.enableItems(this.previousPageItem.parentElement, enablePageNavigationTool);\n this.toolbar.enableItems(this.nextPageItem.parentElement, enablePageNavigationTool);\n this.toolbar.enableItems(this.lastPageItem.parentElement, enablePageNavigationTool);\n this.currentPageBox.readonly = !enablePageNavigationTool;\n };\n Toolbar$$1.prototype.enableMagnificationTool = function (enableMagnificationTool) {\n this.toolbar.enableItems(this.zoomInItem.parentElement, enableMagnificationTool);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, enableMagnificationTool);\n this.zoomDropDown.readonly = !enableMagnificationTool;\n };\n Toolbar$$1.prototype.enableSelectionTool = function (enableSelectionTool) {\n if (this.textSelectItem && this.textSelectItem.parentElement) {\n this.toolbar.enableItems(this.textSelectItem.parentElement, enableSelectionTool);\n }\n };\n Toolbar$$1.prototype.enableScrollingTool = function (enableScrollingTool) {\n this.toolbar.enableItems(this.panItem.parentElement, enableScrollingTool);\n };\n Toolbar$$1.prototype.enableDownloadOption = function (enableDownloadOption) {\n this.toolbar.enableItems(this.downloadItem.parentElement, enableDownloadOption);\n };\n Toolbar$$1.prototype.enablePrintOption = function (enablePrintOption) {\n this.toolbar.enableItems(this.printItem.parentElement, enablePrintOption);\n };\n Toolbar$$1.prototype.enableSearchOption = function (enableSearchOption) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, enableSearchOption);\n };\n Toolbar$$1.prototype.enableUndoRedoTool = function (isEnable) {\n this.toolbar.enableItems(this.undoItem.parentElement, isEnable);\n this.toolbar.enableItems(this.redoItem.parentElement, isEnable);\n };\n Toolbar$$1.prototype.enableAnnotationEditTool = function (isEnable) {\n this.toolbar.enableItems(this.annotationItem.parentElement, isEnable);\n };\n Toolbar$$1.prototype.enableFormDesignerEditTool = function (isEnable) {\n this.toolbar.enableItems(this.formDesignerItem.parentElement, isEnable);\n };\n Toolbar$$1.prototype.enableCommentsTool = function (isEnable) {\n if (this.pdfViewer.enableStickyNotesAnnotation) {\n this.toolbar.enableItems(this.annotationItem.parentElement, isEnable);\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.resetToolbar = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.currentPageBox.min = 0;\n this.currentPageBox.value = 0;\n this.updateTotalPage();\n this.updateToolbarItems();\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.clear();\n }\n else {\n if (this.annotationToolbarModule) {\n if (this.annotationToolbarModule.propertyToolbar) {\n this.annotationToolbarModule.propertyToolbar.destroy();\n }\n // eslint:disable-next-line\n var commentsContainer = document.getElementById(this.pdfViewer.element.id + '_commentscontentcontainer');\n if (commentsContainer) {\n commentsContainer.innerHTML = '';\n }\n }\n }\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.updateToolbarItems = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.toolbar) {\n if (this.pdfViewerBase.pageCount === 0) {\n this.toolbar.enableItems(this.downloadItem.parentElement, false);\n this.toolbar.enableItems(this.printItem.parentElement, false);\n this.toolbar.enableItems(this.commentItem.parentElement, false);\n this.updateUndoRedoButtons();\n this.updateNavigationButtons();\n this.toolbar.enableItems(this.zoomInItem.parentElement, false);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, false);\n if (this.pdfViewer.magnificationModule) {\n this.zoomDropDown.readonly = true;\n }\n this.toolbar.enableItems(this.submitItem.parentElement, false);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_currentPageInputContainer'), false);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_zoomDropDownContainer'), false);\n this.toolbar.enableItems(this.textSelectItem.parentElement, false);\n this.toolbar.enableItems(this.annotationItem.parentElement, false);\n this.toolbar.enableItems(this.formDesignerItem.parentElement, false);\n this.toolbar.enableItems(this.panItem.parentElement, false);\n this.toolbar.enableItems(this.textSearchItem.parentElement, false);\n this.deSelectItem(this.annotationItem);\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.resetToolbar();\n }\n this.deSelectItem(this.formDesignerItem);\n if (this.formDesignerToolbarModule) {\n this.formDesignerToolbarModule.resetFormDesignerToolbar();\n }\n }\n else if (this.pdfViewerBase.pageCount > 0) {\n var obj = this.pdfViewerBase.getElement('_currentPageInputContainer');\n if (obj) {\n this.toolbar.enableItems(this.downloadItem.parentElement, true);\n this.toolbar.enableItems(this.printItem.parentElement, true);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_currentPageInputContainer'), true);\n this.toolbar.enableItems(this.pdfViewerBase.getElement('_zoomDropDownContainer'), true);\n this.updateUndoRedoButtons();\n this.updateNavigationButtons();\n this.updateZoomButtons();\n if (this.pdfViewer.magnificationModule) {\n this.zoomDropDown.readonly = false;\n }\n this.updateInteractionItems();\n // modify this condition if new annotation types are added.\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableAnnotation) {\n this.toolbar.enableItems(this.annotationItem.parentElement, true);\n }\n if (this.pdfViewer.formDesignerModule && this.pdfViewer.enableFormDesigner) {\n this.toolbar.enableItems(this.formDesignerItem.parentElement, true);\n }\n if (this.pdfViewer.textSearchModule && this.pdfViewer.enableTextSearch) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, true);\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableStickyNotesAnnotation) {\n this.toolbar.enableItems(this.commentItem.parentElement, true);\n }\n }\n }\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems.length === 0 || !this.pdfViewer.annotationModule || !this.pdfViewer.enableAnnotationToolbar) {\n this.enableToolbarItem(['AnnotationEditTool'], false);\n }\n }\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.toolbarSettings.formDesignerToolbarItems.length === 0 || !this.pdfViewer.formDesignerModule || !this.pdfViewer.enableFormDesignerToolbar) {\n this.enableToolbarItem(['FormDesignerEditTool'], false);\n }\n }\n if (!this.pdfViewer.enableDownload) {\n this.enableDownloadOption(false);\n }\n if (!this.pdfViewer.enablePrint) {\n this.enablePrintOption(false);\n }\n }\n }\n else {\n if (this.pdfViewerBase.pageCount === 0) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, false);\n this.toolbar.enableItems(this.moreOptionItem.parentElement, false);\n this.toolbar.enableItems(this.annotationItem.parentElement, false);\n }\n else if (this.pdfViewerBase.pageCount > 0) {\n this.toolbar.enableItems(this.textSearchItem.parentElement, true);\n this.toolbar.enableItems(this.moreOptionItem.parentElement, true);\n if (this.pdfViewer.annotationModule && this.pdfViewer.enableAnnotation) {\n this.toolbar.enableItems(this.annotationItem.parentElement, true);\n }\n if (!this.pdfViewer.annotationModule || !this.pdfViewer.enableAnnotationToolbar) {\n this.enableToolbarItem(['AnnotationEditTool'], false);\n }\n this.updateUndoRedoButtons();\n }\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.updateNavigationButtons = function () {\n if (this.pdfViewer.navigationModule && !this.isPageNavigationToolDisabled) {\n if (this.pdfViewerBase.pageCount === 0 || (this.pdfViewerBase.currentPageNumber === 1 && this.pdfViewerBase.pageCount === 1)) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, false);\n this.toolbar.enableItems(this.previousPageItem.parentElement, false);\n this.toolbar.enableItems(this.nextPageItem.parentElement, false);\n this.toolbar.enableItems(this.lastPageItem.parentElement, false);\n }\n else if (this.pdfViewerBase.currentPageNumber === 1 && this.pdfViewerBase.pageCount > 0) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, false);\n this.toolbar.enableItems(this.previousPageItem.parentElement, false);\n this.toolbar.enableItems(this.nextPageItem.parentElement, true);\n this.toolbar.enableItems(this.lastPageItem.parentElement, true);\n }\n else if (this.pdfViewerBase.currentPageNumber === this.pdfViewerBase.pageCount && this.pdfViewerBase.pageCount > 0) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, true);\n this.toolbar.enableItems(this.previousPageItem.parentElement, true);\n this.toolbar.enableItems(this.nextPageItem.parentElement, false);\n this.toolbar.enableItems(this.lastPageItem.parentElement, false);\n }\n else if (this.pdfViewerBase.currentPageNumber > 1 && this.pdfViewerBase.currentPageNumber < this.pdfViewerBase.pageCount) {\n this.toolbar.enableItems(this.firstPageItem.parentElement, true);\n this.toolbar.enableItems(this.previousPageItem.parentElement, true);\n this.toolbar.enableItems(this.nextPageItem.parentElement, true);\n this.toolbar.enableItems(this.lastPageItem.parentElement, true);\n }\n }\n else {\n this.toolbar.enableItems(this.firstPageItem.parentElement, false);\n this.toolbar.enableItems(this.previousPageItem.parentElement, false);\n this.toolbar.enableItems(this.nextPageItem.parentElement, false);\n this.toolbar.enableItems(this.lastPageItem.parentElement, false);\n this.currentPageBox.readonly = true;\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.updateZoomButtons = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnificationModule && !this.isMagnificationToolDisabled && (!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n if (this.pdfViewer.magnificationModule.zoomFactor <= 0.1) {\n this.toolbar.enableItems(this.zoomInItem.parentElement, true);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, false);\n }\n else if (this.pdfViewer.magnificationModule.zoomFactor >= 4) {\n this.toolbar.enableItems(this.zoomInItem.parentElement, false);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, true);\n }\n else {\n this.toolbar.enableItems(this.zoomInItem.parentElement, true);\n this.toolbar.enableItems(this.zoomOutItem.parentElement, true);\n }\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.updateUndoRedoButtons = function () {\n if (this.pdfViewer.annotationModule) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (isBlazor()) {\n this.enableCollectionAvailableInBlazor(this.pdfViewer.annotationModule.actionCollection, 'undo');\n this.enableCollectionAvailableInBlazor(this.pdfViewer.annotationModule.redoCollection, 'redo');\n }\n else {\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.actionCollection, this.undoItem.parentElement);\n this.enableCollectionAvailable(this.pdfViewer.annotationModule.redoCollection, this.redoItem.parentElement);\n }\n }\n else {\n if (isBlazor()) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('DisableUndoRedoButton', null);\n this.pdfViewerBase.blazorUIAdaptor.disableUndoRedoButton();\n }\n else {\n this.disableUndoRedoButtons();\n }\n }\n }\n else {\n if (isBlazor()) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('DisableUndoRedoButton', null);\n this.pdfViewerBase.blazorUIAdaptor.disableUndoRedoButton();\n }\n else {\n this.disableUndoRedoButtons();\n }\n }\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.enableCollectionAvailable = function (collection, item) {\n if (collection.length > 0) {\n this.toolbar.enableItems(item, true);\n }\n else {\n this.toolbar.enableItems(item, false);\n }\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.enableCollectionAvailableInBlazor = function (collection, item) {\n if (collection.length > 0) {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateUndoRedoButton', item, true);\n this.pdfViewerBase.blazorUIAdaptor.updateUndoRedoButton(item, true);\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateUndoRedoButton', item, false);\n this.pdfViewerBase.blazorUIAdaptor.updateUndoRedoButton(item, false);\n }\n };\n Toolbar$$1.prototype.disableUndoRedoButtons = function () {\n this.toolbar.enableItems(this.undoItem.parentElement, false);\n this.toolbar.enableItems(this.redoItem.parentElement, false);\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.destroy = function () {\n if (!isBlazor()) {\n this.unWireEvent();\n this.destroyComponent();\n if (this.moreDropDown) {\n this.moreDropDown.destroy();\n }\n if (this.annotationToolbarModule) {\n this.annotationToolbarModule.destroy();\n }\n if (this.formDesignerToolbarModule) {\n this.formDesignerToolbarModule.destroy();\n }\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n };\n Toolbar$$1.prototype.destroyComponent = function () {\n // eslint-disable-next-line\n var componentElement = [this.openDocumentItem, this.firstPageItem, this.previousPageItem, this.nextPageItem,\n this.lastPageItem, this.currentPageBoxElement, this.zoomOutItem, this.zoomInItem, this.zoomDropdownItem, this.textSelectItem,\n this.panItem, this.submitItem, this.undoItem, this.redoItem, this.commentItem, this.textSearchItem, this.annotationItem,\n this.formDesignerItem, this.printItem, this.downloadItem];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n Toolbar$$1.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n /**\n * @param pageIndex\n * @private\n */\n Toolbar$$1.prototype.updateCurrentPage = function (pageIndex) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!isBlazor()) {\n if (!isNullOrUndefined(this.currentPageBox)) {\n if (this.currentPageBox.value === pageIndex) {\n this.currentPageBoxElement.value = pageIndex.toString();\n }\n this.currentPageBox.value = pageIndex;\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('OnPageChanged', pageIndex);\n this.pdfViewerBase.blazorUIAdaptor.pageChanged(pageIndex);\n }\n this.pdfViewerBase.currentPageNumber = pageIndex;\n this.pdfViewer.currentPageNumber = pageIndex;\n }\n else {\n this.pdfViewerBase.mobileSpanContainer.innerHTML = pageIndex.toString();\n this.pdfViewerBase.mobilecurrentPageContainer.innerHTML = pageIndex.toString();\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.updateTotalPage = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (!isNullOrUndefined(this.currentPageBox))\n this.currentPageBox.min = 1;\n }\n if (!isNullOrUndefined(this.totalPageItem))\n this.totalPageItem.textContent = this.pdfViewer.localeObj.getConstant('of') + this.pdfViewerBase.pageCount.toString();\n }\n };\n /**\n * @param event\n * @private\n */\n Toolbar$$1.prototype.openFileDialogBox = function (event) {\n event.preventDefault();\n this.fileInputElement.click();\n };\n Toolbar$$1.prototype.createToolbar = function (controlWidth) {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_toolbarContainer', className: 'e-pv-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbar = new Toolbar({\n clicked: this.toolbarClickHandler, width: '', height: '', overflowMode: 'Popup', cssClass: 'e-pv-toolbar-scroll',\n items: this.createToolbarItems(), created: function () {\n _this.createZoomDropdown();\n _this.createNumericTextBox();\n _this.toolbar.refreshOverflow();\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.applyToolbarSettings();\n this.afterToolbarCreation();\n this.updateTotalPage();\n this.toolbarElement.addEventListener('keydown', this.onToolbarKeydown);\n this.toolbarElement.setAttribute('aria-label', 'Toolbar');\n }\n else {\n this.createToolbarItemsForMobile();\n this.afterToolbarCreationInMobile();\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.applyToolbarSettingsForMobile();\n this.disableUndoRedoButtons();\n }\n return this.toolbarElement;\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.createToolbarItems = function () {\n var currentPageInputTemplate = this.createCurrentPageInputTemplate();\n var totalPageTemplate = this.createTotalPageTemplate();\n var zoomDropDownTemplateString = this.createZoomDropdownElement();\n // eslint-disable-next-line\n var items = [];\n var submitButton = '';\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-open-document-icon e-pv-icon', cssClass: 'e-pv-open-document-container', id: this.pdfViewer.element.id + '_open', text: this.pdfViewer.localeObj.getConstant('Open text'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-open-separator-container' });\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-first-page-navigation-icon e-pv-icon', cssClass: 'e-pv-first-page-navigation-container', id: this.pdfViewer.element.id + '_firstPage', text: this.pdfViewer.localeObj.getConstant('First text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-previous-page-navigation-icon e-pv-icon', cssClass: 'e-pv-previous-page-navigation-container', id: this.pdfViewer.element.id + '_previousPage', text: this.pdfViewer.localeObj.getConstant('Previous text'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-next-page-navigation-icon e-pv-icon', cssClass: 'e-pv-next-page-navigation-container', id: this.pdfViewer.element.id + '_nextPage', text: this.pdfViewer.localeObj.getConstant('Next text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-last-page-navigation-icon e-pv-icon', cssClass: 'e-pv-last-page-navigation-container', id: this.pdfViewer.element.id + '_lastPage', text: this.pdfViewer.localeObj.getConstant('Last text'), align: 'Left' });\n items.push({ template: currentPageInputTemplate, align: 'Left', cssClass: 'e-pv-current-page-container' });\n items.push({ template: totalPageTemplate, align: 'Left', cssClass: 'e-pv-total-page-container' });\n }\n else {\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-last-page-navigation-icon e-pv-icon', cssClass: 'e-pv-last-page-navigation-container', id: this.pdfViewer.element.id + '_firstPage', text: this.pdfViewer.localeObj.getConstant('First text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-next-page-navigation-icon e-pv-icon', cssClass: 'e-pv-next-page-navigation-container', id: this.pdfViewer.element.id + '_previousPage', text: this.pdfViewer.localeObj.getConstant('Previous text'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-previous-page-navigation-icon e-pv-icon', cssClass: 'e-pv-previous-page-navigation-container', id: this.pdfViewer.element.id + '_nextPage', text: this.pdfViewer.localeObj.getConstant('Next text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-first-page-navigation-icon e-pv-icon', cssClass: 'e-pv-first-page-navigation-container', id: this.pdfViewer.element.id + '_lastPage', text: this.pdfViewer.localeObj.getConstant('Last text'), align: 'Left' });\n items.push({ template: totalPageTemplate, align: 'Left', cssClass: 'e-pv-total-page-container' });\n items.push({ template: currentPageInputTemplate, align: 'Left', cssClass: 'e-pv-current-page-container' });\n }\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-navigation-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-zoom-out-icon e-pv-icon', cssClass: 'e-pv-zoom-out-container', id: this.pdfViewer.element.id + '_zoomOut', text: this.pdfViewer.localeObj.getConstant('Zoom out text'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-zoom-in-icon e-pv-icon', cssClass: 'e-pv-zoom-in-container', id: this.pdfViewer.element.id + '_zoomIn', text: this.pdfViewer.localeObj.getConstant('Zoom in text'), align: 'Left' });\n items.push({ template: zoomDropDownTemplateString, cssClass: 'e-pv-zoom-drop-down-container', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-magnification-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-text-select-tool-icon e-pv-icon', cssClass: 'e-pv-text-select-tool-container', id: this.pdfViewer.element.id + '_selectTool', text: this.pdfViewer.localeObj.getConstant('Selection text') });\n items.push({ prefixIcon: 'e-pv-pan-tool-icon e-pv-icon', cssClass: 'e-pv-pan-tool-container', id: this.pdfViewer.element.id + '_handTool', text: this.pdfViewer.localeObj.getConstant('Pan text') });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-pan-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-undo-icon e-pv-icon', cssClass: 'e-pv-undo-container', id: this.pdfViewer.element.id + '_undo', text: this.pdfViewer.localeObj.getConstant('Undo'), align: 'Left' });\n items.push({ prefixIcon: 'e-pv-redo-icon e-pv-icon', cssClass: 'e-pv-redo-container', id: this.pdfViewer.element.id + '_redo', text: this.pdfViewer.localeObj.getConstant('Redo'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-undo-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-comment-icon e-pv-icon', cssClass: 'e-pv-comment-container', id: this.pdfViewer.element.id + '_comment', text: this.pdfViewer.localeObj.getConstant('Add Comments'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-comment-separator-container' });\n items.push({ template: submitButton, cssClass: 'e-pv-submit', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-text-search-icon e-pv-icon', cssClass: 'e-pv-text-search-container', id: this.pdfViewer.element.id + '_search', text: this.pdfViewer.localeObj.getConstant('Search text'), align: 'Right' });\n items.push({ prefixIcon: 'e-pv-annotation-icon e-pv-icon', cssClass: 'e-pv-annotation-container', id: this.pdfViewer.element.id + '_annotation', text: this.pdfViewer.localeObj.getConstant('Annotation Edit text'), align: 'Right' });\n items.push({ prefixIcon: 'e-pv-formdesigner-icon e-pv-icon', cssClass: 'e-pv-formdesigner-container', id: this.pdfViewer.element.id + '_formdesigner', text: this.pdfViewer.localeObj.getConstant('FormDesigner Edit text'), align: 'Right' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-print-document-icon e-pv-icon', cssClass: 'e-pv-print-document-container', id: this.pdfViewer.element.id + '_print', text: this.pdfViewer.localeObj.getConstant('Print text'), align: 'Right' });\n items.push({ prefixIcon: 'e-pv-download-document-icon e-pv-icon', cssClass: 'e-pv-download-document-container', id: this.pdfViewer.element.id + '_download', text: this.pdfViewer.localeObj.getConstant('Download'), align: 'Right' });\n return items;\n };\n Toolbar$$1.prototype.afterToolbarCreationInMobile = function () {\n this.itemsContainer = this.toolbar.element.childNodes[0];\n this.itemsContainer.id = this.pdfViewer.element.id + '_toolbarItemsContainer';\n this.openDocumentItem = this.addClassToolbarItem('_open', 'e-pv-open-document', this.pdfViewer.localeObj.getConstant('Open'));\n this.undoItem = this.addClassToolbarItem('_undo', 'e-pv-undo', this.pdfViewer.localeObj.getConstant('Undo'));\n this.redoItem = this.addClassToolbarItem('_redo', 'e-pv-redo', this.pdfViewer.localeObj.getConstant('Redo'));\n this.annotationItem = this.addClassToolbarItem('_annotation', 'e-pv-annotation', this.pdfViewer.localeObj.getConstant('Annotation'));\n this.textSearchItem = this.addClassToolbarItem('_search', 'e-pv-text-search', this.pdfViewer.localeObj.getConstant('Text Search'));\n };\n Toolbar$$1.prototype.afterToolbarCreation = function () {\n this.itemsContainer = this.toolbar.element.childNodes[0];\n this.itemsContainer.id = this.pdfViewer.element.id + '_toolbarItemsContainer';\n this.openDocumentItem = this.addClassToolbarItem('_open', 'e-pv-open-document', this.pdfViewer.localeObj.getConstant('Open'));\n this.undoItem = this.addClassToolbarItem('_undo', 'e-pv-undo', this.pdfViewer.localeObj.getConstant('Undo'));\n this.redoItem = this.addClassToolbarItem('_redo', 'e-pv-redo', this.pdfViewer.localeObj.getConstant('Redo'));\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n this.firstPageItem = this.addClassToolbarItem('_firstPage', 'e-pv-first-page-navigation', this.pdfViewer.localeObj.getConstant('Go To First Page'));\n this.previousPageItem = this.addClassToolbarItem('_previousPage', 'e-pv-previous-page-navigation', this.pdfViewer.localeObj.getConstant('Previous Page'));\n // eslint-disable-next-line max-len\n this.nextPageItem = this.addClassToolbarItem('_nextPage', 'e-pv-next-page-navigation', this.pdfViewer.localeObj.getConstant('Next Page'));\n this.lastPageItem = this.addClassToolbarItem('_lastPage', 'e-pv-last-page-navigation', this.pdfViewer.localeObj.getConstant('Go To Last Page'));\n }\n else {\n // eslint-disable-next-line max-len\n this.firstPageItem = this.addClassToolbarItem('_firstPage', 'e-pv-last-page-navigation', this.pdfViewer.localeObj.getConstant('Go To First Page'));\n this.previousPageItem = this.addClassToolbarItem('_previousPage', 'e-pv-next-page-navigation', this.pdfViewer.localeObj.getConstant('Previous Page'));\n // eslint-disable-next-line max-len\n this.nextPageItem = this.addClassToolbarItem('_nextPage', 'e-pv-previous-page-navigation', this.pdfViewer.localeObj.getConstant('Next Page'));\n this.lastPageItem = this.addClassToolbarItem('_lastPage', 'e-pv-first-page-navigation', this.pdfViewer.localeObj.getConstant('Go To Last Page'));\n }\n this.zoomOutItem = this.addClassToolbarItem('_zoomOut', 'e-pv-zoom-out', this.pdfViewer.localeObj.getConstant('Zoom Out'));\n this.zoomInItem = this.addClassToolbarItem('_zoomIn', 'e-pv-zoom-in', this.pdfViewer.localeObj.getConstant('Zoom In'));\n // eslint-disable-next-line max-len\n this.textSelectItem = this.addClassToolbarItem('_selectTool', 'e-pv-text-select-tool', this.pdfViewer.localeObj.getConstant('Text Selection'));\n this.panItem = this.addClassToolbarItem('_handTool', 'e-pv-pan-tool', this.pdfViewer.localeObj.getConstant('Panning'));\n this.commentItem = this.addClassToolbarItem('_comment', 'e-pv-comment', this.pdfViewer.localeObj.getConstant('Add Comments'));\n // eslint-disable-next-line max-len\n this.textSearchItem = this.addClassToolbarItem('_search', 'e-pv-text-search', this.pdfViewer.localeObj.getConstant('Text Search'));\n this.textSearchItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Search text'));\n this.annotationItem = this.addClassToolbarItem('_annotation', 'e-pv-annotation', this.pdfViewer.localeObj.getConstant('Annotation'));\n this.annotationItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Annotation Edit text'));\n this.formDesignerItem = this.addClassToolbarItem('_formdesigner', 'e-pv-formdesigner', this.pdfViewer.localeObj.getConstant('FormDesigner'));\n // eslint-disable-next-line max-len\n this.printItem = this.addClassToolbarItem('_print', 'e-pv-print-document', this.pdfViewer.localeObj.getConstant('Print'));\n this.downloadItem = this.addClassToolbarItem('_download', 'e-pv-download-document', this.pdfViewer.localeObj.getConstant('Download file'));\n this.zoomDropdownItem = this.pdfViewerBase.getElement('_zoomDropDown');\n this.createTooltip(this.zoomDropdownItem, this.pdfViewer.localeObj.getConstant('Zoom'));\n this.zoomDropdownItem.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Zoom'));\n // eslint-disable-next-line max-len\n this.addPropertiesToolItemContainer(this.zoomDropdownItem.parentElement.parentElement, null, '_zoomDropDownContainer');\n this.pdfViewerBase.getElement('_zoomDropDownContainer').style.minWidth = '';\n this.createTooltip(this.currentPageBoxElement, this.pdfViewer.localeObj.getConstant('Page Number'));\n this.currentPageBoxElement.setAttribute('aria-label', this.pdfViewer.localeObj.getConstant('Page Number'));\n this.submitItem = this.pdfViewerBase.getElement('_submitForm');\n this.addPropertiesToolItemContainer(this.submitItem.parentElement, 'e-pv-submit', '_submitFormContainer');\n this.createTooltip(this.submitItem, this.pdfViewer.localeObj.getConstant('SubmitForm'));\n // eslint-disable-next-line max-len\n this.addPropertiesToolItemContainer(this.currentPageBoxElement.parentElement.parentElement, 'e-pv-current-page-container', '_currentPageInputContainer');\n this.pdfViewerBase.getElement('_currentPageInputContainer').style.minWidth = '20px';\n this.totalPageItem = this.pdfViewerBase.getElement('_totalPage');\n this.addPropertiesToolItemContainer(this.totalPageItem.parentElement, 'e-pv-total-page-container', '_totalPageContainer');\n };\n /**\n * @param idString\n * @param className\n * @param tooltipText\n * @param idString\n * @param className\n * @param tooltipText\n * @private\n */\n Toolbar$$1.prototype.addClassToolbarItem = function (idString, className, tooltipText) {\n var element = this.pdfViewerBase.getElement(idString);\n element.classList.add(className);\n element.classList.add('e-pv-tbar-btn');\n element.setAttribute('aria-label', tooltipText);\n element.parentElement.classList.add(className + '-container');\n element.parentElement.classList.add('e-popup-text');\n element.parentElement.id = this.pdfViewer.element.id + idString + 'Container';\n if (element.childNodes.length > 0) {\n var spanElement = element.childNodes[0];\n spanElement.id = this.pdfViewer.element.id + idString + 'Icon';\n spanElement.classList.remove('e-icons');\n spanElement.classList.remove('e-btn-icon');\n if (this.pdfViewer.enableRtl) {\n spanElement.classList.add('e-right');\n }\n var textElement = element.childNodes[1];\n if (textElement) {\n if (textElement.classList.contains('e-tbar-btn-text')) {\n textElement.id = this.pdfViewer.element.id + idString + 'Text';\n }\n }\n }\n element.style.width = '';\n this.createTooltip(element, tooltipText);\n return element;\n };\n Toolbar$$1.prototype.addPropertiesToolItemContainer = function (element, className, idString) {\n if (className !== null) {\n element.classList.add(className);\n }\n element.classList.add('e-popup-text');\n element.id = this.pdfViewer.element.id + idString;\n };\n Toolbar$$1.prototype.createZoomDropdownElement = function () {\n // eslint-disable-next-line max-len\n var zoomDropdownElement = this.createToolbarItem('input', this.pdfViewer.element.id + '_zoomDropDown', null);\n return zoomDropdownElement.outerHTML;\n };\n Toolbar$$1.prototype.createZoomDropdown = function () {\n // eslint-disable-next-line max-len\n var items = [{ percent: '10%', id: '0' }, { percent: '25%', id: '1' }, { percent: '50%', id: '2' }, { percent: '75%', id: '3' }, { percent: '100%', id: '4' }, { percent: '125%', id: '5' },\n // eslint-disable-next-line max-len\n { percent: '150%', id: '6' }, { percent: '200%', id: '7' }, { percent: '400%', id: '8' }, { percent: this.pdfViewer.localeObj.getConstant('Fit Page'), id: '9' }, { percent: this.pdfViewer.localeObj.getConstant('Fit Width'), id: '10' }, { percent: this.pdfViewer.localeObj.getConstant('Automatic'), id: '11' }\n ];\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.enableRtl) {\n this.zoomDropDown = new ComboBox({ dataSource: items, text: '100%', fields: { text: 'percent', value: 'id' }, readonly: true, cssClass: 'e-pv-zoom-drop-down', popupHeight: '450px', showClearButton: false, open: this.openZoomDropdown.bind(this), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.text !== this.zoomDropDown.element.value) {\n args.cancel = true;\n }\n }\n });\n }\n else {\n this.zoomDropDown = new ComboBox({ dataSource: items, text: '100%', enableRtl: true, fields: { text: 'percent', value: 'id' }, readonly: true, cssClass: 'e-pv-zoom-drop-down-rtl', popupHeight: '450px', showClearButton: false, open: this.openZoomDropdown.bind(this), select: function (args) {\n if (args.e.type == 'keydown' && args.itemData.text !== this.zoomDropDown.element.value) {\n args.cancel = true;\n }\n }\n });\n }\n this.zoomDropDown.appendTo(this.pdfViewerBase.getElement('_zoomDropDown'));\n };\n Toolbar$$1.prototype.createCurrentPageInputTemplate = function () {\n // eslint-disable-next-line max-len\n var goToPageElement = this.createToolbarItem('input', this.pdfViewer.element.id + '_currentPageInput', null);\n return goToPageElement.outerHTML;\n };\n Toolbar$$1.prototype.createTotalPageTemplate = function () {\n // eslint-disable-next-line max-len\n var totalPageElement = this.createToolbarItem('span', this.pdfViewer.element.id + '_totalPage', 'e-pv-total-page');\n return totalPageElement.outerHTML;\n };\n Toolbar$$1.prototype.createNumericTextBox = function () {\n this.currentPageBox = new NumericTextBox({ value: 0, format: '##', cssClass: 'e-pv-current-page-box', showSpinButton: false });\n this.currentPageBoxElement = this.pdfViewerBase.getElement('_currentPageInput');\n this.currentPageBox.appendTo(this.currentPageBoxElement);\n };\n Toolbar$$1.prototype.createToolbarItemsForMobile = function () {\n this.toolbarElement.classList.add('e-pv-mobile-toolbar');\n var template = '';\n this.toolbar = new Toolbar({\n // eslint-disable-next-line max-len\n items: [{ prefixIcon: 'e-pv-open-document-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Open'), id: this.pdfViewer.element.id + '_open' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-undo-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Undo'), id: this.pdfViewer.element.id + '_undo' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-redo-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Redo'), id: this.pdfViewer.element.id + '_redo' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-icon e-pv-icon', cssClass: 'e-pv-annotation-container', tooltipText: this.pdfViewer.localeObj.getConstant('Annotation'), id: this.pdfViewer.element.id + '_annotation', align: 'Right' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-text-search-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Text Search'), id: this.pdfViewer.element.id + '_search', align: 'Right' },\n { template: template, align: 'Right' }\n ], clicked: this.toolbarClickHandler, width: '', height: '', overflowMode: 'Popup'\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n this.openDocumentItem = this.pdfViewerBase.getElement('_open');\n this.openDocumentItem.classList.add('e-pv-open-document');\n this.openDocumentItem.firstElementChild.id = this.pdfViewer.element.id + '_openIcon';\n this.annotationItem = this.pdfViewerBase.getElement('_annotation');\n this.annotationItem.classList.add('e-pv-annotation');\n this.annotationItem.firstElementChild.id = this.pdfViewer.element.id + '_annotationIcon';\n this.textSearchItem = this.pdfViewerBase.getElement('_search');\n this.textSearchItem.classList.add('e-pv-text-search');\n this.textSearchItem.firstElementChild.id = this.pdfViewer.element.id + '_searchIcon';\n this.undoItem = this.pdfViewerBase.getElement('_undo');\n this.undoItem.classList.add('e-pv-undo');\n this.redoItem = this.pdfViewerBase.getElement('_redo');\n this.redoItem.classList.add('e-pv-redo');\n this.redoItem.firstElementChild.id = this.pdfViewer.element.id + '_redoIcon';\n this.undoItem.firstElementChild.id = this.pdfViewer.element.id + '_undoIcon';\n this.createMoreOption(this.pdfViewer.element.id + '_more_option');\n };\n Toolbar$$1.prototype.createMoreOption = function (idString) {\n var _this = this;\n this.moreOptionItem = document.getElementById(idString);\n var items = [\n {\n text: this.pdfViewer.localeObj.getConstant('Download'), id: this.pdfViewer.element.id + '_menu_download',\n iconCss: 'e-icons e-pv-download-document-icon e-pv-icon'\n },\n {\n text: this.pdfViewer.localeObj.getConstant('Bookmarks'), id: this.pdfViewer.element.id + '_menu_bookmarks',\n iconCss: 'e-icons e-pv-bookmark-icon e-pv-icon'\n }\n ];\n this.moreDropDown = new DropDownButton({\n items: items, iconCss: 'e-pv-more-icon e-pv-icon', cssClass: 'e-caret-hide',\n open: function (args) {\n var dropdownButtonPosition = _this.moreDropDown.element.getBoundingClientRect();\n // eslint-disable-next-line max-len\n if (!_this.pdfViewer.enableRtl) {\n args.element.parentElement.style.left = dropdownButtonPosition.left + dropdownButtonPosition.width - args.element.parentElement.offsetWidth + 'px';\n }\n }, select: function (args) {\n switch (args.item.id) {\n case _this.pdfViewer.element.id + '_menu_download':\n _this.pdfViewerBase.download();\n break;\n case _this.pdfViewer.element.id + '_menu_bookmarks':\n _this.showToolbar(false);\n _this.pdfViewerBase.navigationPane.createNavigationPaneMobile('bookmarks');\n break;\n default:\n break;\n }\n }, beforeItemRender: function (args) {\n if (args.item.id === _this.pdfViewer.element.id + '_menu_bookmarks') {\n if (!_this.pdfViewer.bookmarkViewModule || !_this.pdfViewer.bookmarkViewModule.bookmarks) {\n args.element.classList.add('e-disabled');\n }\n else {\n args.element.classList.remove('e-disabled');\n }\n }\n }, close: function (args) {\n _this.moreOptionItem.blur();\n _this.pdfViewerBase.focusViewerContainer();\n }\n });\n this.moreDropDown.appendTo('#' + idString);\n };\n Toolbar$$1.prototype.createToolbarItem = function (elementName, id, className) {\n var toolbarItem = createElement(elementName, { id: id });\n if (className !== null) {\n toolbarItem.className = className;\n }\n if (elementName === 'input' && id !== this.pdfViewer.element.id + '_zoomDropDown') {\n toolbarItem.type = 'text';\n }\n return toolbarItem;\n };\n /**\n * @param toolbarItem\n * @param tooltipText\n * @param toolbarItem\n * @param tooltipText\n * @private\n */\n Toolbar$$1.prototype.createTooltip = function (toolbarItem, tooltipText) {\n if (tooltipText !== null) {\n // eslint-disable-next-line\n var tooltip = new Tooltip({ content: tooltipText, opensOn: 'Hover', beforeOpen: this.onTooltipBeforeOpen.bind(this) });\n tooltip.appendTo(toolbarItem);\n }\n };\n Toolbar$$1.prototype.onTooltipBeforeOpen = function (args) {\n if (!this.pdfViewer.toolbarSettings.showTooltip && this.toolbarElement.contains(args.target)) {\n args.cancel = true;\n }\n if (this.annotationToolbarModule) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.toolbarSettings.showTooltip && ((this.annotationToolbarModule.toolbarElement && this.annotationToolbarModule.toolbarElement.contains(args.target)) || (this.annotationToolbarModule.shapeToolbarElement && this.annotationToolbarModule.shapeToolbarElement.contains(args.target)))) {\n args.cancel = true;\n }\n }\n if (this.formDesignerToolbarModule) {\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.toolbarSettings.showTooltip && (this.formDesignerToolbarModule.toolbarElement && this.formDesignerToolbarModule.toolbarElement.contains(args.target))) {\n args.cancel = true;\n }\n }\n };\n Toolbar$$1.prototype.createFileElement = function (toolbarElement) {\n if (toolbarElement) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n this.fileInputElement = createElement('input', { id: this.pdfViewer.element.id + '_fileUploadElement', styles: 'position:fixed; left:-100em', attrs: { 'type': 'file' } });\n this.fileInputElement.setAttribute('accept', '.pdf');\n this.fileInputElement.setAttribute('aria-label', 'file upload element');\n }\n else {\n this.fileInputElement = this.pdfViewer.element.querySelector('.e-pv-fileupload-element');\n }\n if (toolbarElement) {\n toolbarElement.appendChild(this.fileInputElement);\n }\n }\n };\n Toolbar$$1.prototype.wireEvent = function () {\n if (this.fileInputElement) {\n this.fileInputElement.addEventListener('change', this.loadDocument);\n }\n if (!isBlazor()) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbarElement.addEventListener('mouseup', this.toolbarOnMouseup.bind(this));\n this.currentPageBoxElement.addEventListener('focusout', this.textBoxFocusOut);\n this.currentPageBoxElement.addEventListener('keypress', this.navigateToPage);\n this.zoomDropDown.change = this.zoomPercentSelect.bind(this);\n this.zoomDropDown.element.addEventListener('keypress', this.onZoomDropDownInput.bind(this));\n this.zoomDropDown.element.addEventListener('click', this.onZoomDropDownInputClick.bind(this));\n }\n }\n };\n Toolbar$$1.prototype.unWireEvent = function () {\n if (this.fileInputElement) {\n this.fileInputElement.removeEventListener('change', this.loadDocument);\n }\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode) && !isBlazor()) {\n if (!isNullOrUndefined(this.toolbarElement)) {\n this.toolbarElement.removeEventListener('mouseup', this.toolbarOnMouseup.bind(this));\n }\n if (!isNullOrUndefined(this.currentPageBoxElement)) {\n this.currentPageBoxElement.removeEventListener('focusout', this.textBoxFocusOut);\n this.currentPageBoxElement.removeEventListener('keypress', this.navigateToPage);\n }\n if (!isNullOrUndefined(this.zoomDropDown)) {\n this.zoomDropDown.removeEventListener('change', this.zoomPercentSelect);\n this.zoomDropDown.element.removeEventListener('keypress', this.onZoomDropDownInput);\n this.zoomDropDown.element.removeEventListener('click', this.onZoomDropDownInputClick);\n }\n }\n };\n /**\n * @param viewerWidth\n * @private\n */\n Toolbar$$1.prototype.onToolbarResize = function (viewerWidth) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.navigationPane.toolbarResize();\n }\n else {\n if (!isNullOrUndefined(this.toolbar)) {\n this.toolbar.refreshOverflow();\n }\n }\n };\n Toolbar$$1.prototype.toolbarOnMouseup = function (event) {\n if (event.target === this.itemsContainer || event.target === this.toolbarElement) {\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n Toolbar$$1.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n if (this.toolbar.items[index]) {\n var className = this.toolbar.items[index].cssClass;\n if (className && className !== '') {\n // Querying the toolbar item\n var element = this.toolbar.element.querySelector('.' + className);\n if (element) {\n this.toolbar.hideItem(element, isHide);\n }\n }\n else {\n this.toolbar.hideItem(index, isHide);\n }\n }\n }\n };\n Toolbar$$1.prototype.handleOpenIconClick = function (args) {\n this.fileInputElement.click();\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (!isBlazor()) {\n args.originalEvent.target.blur();\n }\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.handleToolbarBtnClick = function (args) {\n this.addInkAnnotation();\n this.deSelectCommentAnnotation();\n switch (args.originalEvent.target.id) {\n case this.pdfViewer.element.id + '_open':\n case this.pdfViewer.element.id + '_openIcon':\n case this.pdfViewer.element.id + '_openText':\n this.handleOpenIconClick(args);\n break;\n case this.pdfViewer.element.id + '_download':\n case this.pdfViewer.element.id + '_downloadIcon':\n case this.pdfViewer.element.id + '_downloadText':\n this.pdfViewerBase.download();\n break;\n case this.pdfViewer.element.id + '_print':\n case this.pdfViewer.element.id + '_printIcon':\n case this.pdfViewer.element.id + '_printText':\n if (this.pdfViewer.printModule) {\n this.pdfViewer.firePrintStart();\n }\n break;\n case this.pdfViewer.element.id + '_undo':\n case this.pdfViewer.element.id + '_undoIcon':\n case this.pdfViewer.element.id + '_undoText':\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.undo();\n }\n break;\n case this.pdfViewer.element.id + '_redo':\n case this.pdfViewer.element.id + '_redoIcon':\n case this.pdfViewer.element.id + '_redoText':\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.redo();\n }\n break;\n case this.pdfViewer.element.id + '_firstPage':\n case this.pdfViewer.element.id + '_firstPageIcon':\n case this.pdfViewer.element.id + '_firstPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToFirstPage();\n }\n break;\n case this.pdfViewer.element.id + '_previousPage':\n case this.pdfViewer.element.id + '_previousPageIcon':\n case this.pdfViewer.element.id + '_previousPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToPreviousPage();\n }\n break;\n case this.pdfViewer.element.id + '_nextPage':\n case this.pdfViewer.element.id + '_nextPageIcon':\n case this.pdfViewer.element.id + '_nextPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToNextPage();\n }\n break;\n case this.pdfViewer.element.id + '_lastPage':\n case this.pdfViewer.element.id + '_lastPageIcon':\n case this.pdfViewer.element.id + '_lastPageText':\n if (this.pdfViewer.navigationModule) {\n this.pdfViewer.navigationModule.goToLastPage();\n }\n break;\n case this.pdfViewer.element.id + '_zoomIn':\n case this.pdfViewer.element.id + '_zoomInIcon':\n case this.pdfViewer.element.id + '_zoomInText':\n this.pdfViewer.magnificationModule.zoomIn();\n break;\n case this.pdfViewer.element.id + '_zoomOut':\n case this.pdfViewer.element.id + '_zoomOutIcon':\n case this.pdfViewer.element.id + '_zoomOutText':\n this.pdfViewer.magnificationModule.zoomOut();\n break;\n case this.pdfViewer.element.id + '_selectTool':\n case this.pdfViewer.element.id + '_selectToolIcon':\n case this.pdfViewer.element.id + '_selectToolText':\n if (!this.isSelectionToolDisabled) {\n this.pdfViewerBase.initiateTextSelectMode();\n this.updateInteractionTools(true);\n }\n break;\n case this.pdfViewer.element.id + '_handTool':\n case this.pdfViewer.element.id + '_handToolIcon':\n case this.pdfViewer.element.id + '_handToolText':\n if (!(this.isScrollingToolDisabled || this.getStampMode())) {\n this.pdfViewerBase.initiatePanning();\n this.updateInteractionTools(false);\n }\n break;\n case this.pdfViewer.element.id + '_search':\n case this.pdfViewer.element.id + '_searchIcon':\n case this.pdfViewer.element.id + '_searchText':\n this.textSearchButtonHandler();\n break;\n case this.pdfViewer.element.id + '_annotation':\n case this.pdfViewer.element.id + '_annotationIcon':\n case this.pdfViewer.element.id + '_annotationText':\n this.initiateAnnotationMode(args.originalEvent.target.id);\n break;\n case this.pdfViewer.element.id + '_formdesigner':\n case this.pdfViewer.element.id + '_formdesignerIcon':\n case this.pdfViewer.element.id + '_formdesignerText':\n this.initiateFormDesignerMode();\n this.formDesignerToolbarModule.showHideDeleteIcon(false);\n break;\n case this.pdfViewer.element.id + '_comment':\n case this.pdfViewer.element.id + '_commentIcon':\n this.pdfViewerBase.isAddComment = true;\n this.pdfViewerBase.isCommentIconAdded = true;\n this.annotationToolbarModule.deselectAllItems();\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n this.addComments(args.originalEvent.target);\n break;\n case this.pdfViewer.element.id + '_submitForm':\n case this.pdfViewer.element.id + '_submitFormSpan':\n var data = void 0;\n this.pdfViewerBase.exportFormFields(data, FormFieldDataFormat.Json);\n break;\n }\n };\n Toolbar$$1.prototype.addInkAnnotation = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n if (this.annotationToolbarModule) {\n this.pdfViewer.toolbar.annotationToolbarModule.deselectInkAnnotation();\n this.annotationToolbarModule.inkAnnotationSelected = false;\n }\n };\n Toolbar$$1.prototype.deSelectCommentAnnotation = function () {\n if (!isBlazor()) {\n this.pdfViewer.toolbar.deSelectItem(this.commentItem);\n }\n else {\n this.pdfViewer.toolbar.deSelectItem(this.CommentElement);\n }\n this.pdfViewerBase.isCommentIconAdded = false;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Toolbar$$1.prototype.addComments = function (targetElement) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n if (targetElement.id === this.pdfViewer.element.id + '_comment' || targetElement.id === this.pdfViewer.element.id + '_commentIcon') {\n if (targetElement.id === this.pdfViewer.element.id + '_commentIcon' && targetElement.parentElement) {\n targetElement.parentElement.classList.add('e-pv-select');\n }\n else {\n targetElement.classList.add('e-pv-select');\n }\n }\n else {\n if (this.pdfViewer.enableRtl) {\n targetElement.className = 'e-pv-comment-selection-icon e-pv-icon e-icon-left e-right';\n }\n else {\n targetElement.className = 'e-pv-comment-selection-icon e-pv-icon e-icon-left';\n }\n }\n }\n else {\n this.pdfViewerBase.isCommentIconAdded = true;\n this.pdfViewerBase.isAddComment = true;\n this.annotationToolbarModule.deselectAllItemsInBlazor();\n var commentsButton = this.CommentElement;\n commentsButton.classList.add('e-pv-select');\n }\n this.updateStampItems();\n document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1)).addEventListener('mousedown', this.pdfViewer.annotationModule.stickyNotesAnnotationModule.drawIcons.bind(this));\n };\n Toolbar$$1.prototype.openZoomDropdown = function () {\n var toolbarData = this;\n if (document.fullscreen) {\n if (isBlazor()) {\n // eslint-disable-next-line\n var fullscreenElement = document.fullscreenElement;\n if (fullscreenElement && fullscreenElement.tagName !== 'BODY' && fullscreenElement.tagName !== 'HTML') {\n setTimeout(function () {\n // eslint-disable-next-line\n var popupElement = document.getElementById(toolbarData.pdfViewer.element.id + \"_zoomCombo_popup\");\n var targetElement = document.getElementById(toolbarData.toolbarElement.id);\n // eslint-disable-next-line\n if (popupElement && targetElement && popupElement.ej2_instances) {\n targetElement.appendChild(popupElement);\n popupElement.ej2_instances[0].refreshPosition();\n }\n }, 100);\n }\n }\n else {\n var popupElement = document.getElementById(this.pdfViewer.element.id + \"_zoomDropDown_popup\");\n var targetElement = document.getElementById(this.toolbarElement.id);\n if (popupElement) {\n targetElement.appendChild(popupElement);\n }\n }\n }\n };\n Toolbar$$1.prototype.onZoomDropDownInput = function (event) {\n if ((event.which < 48 || event.which > 57) && event.which !== 8 && event.which !== 13) {\n event.preventDefault();\n return false;\n }\n else {\n if (event.which === 13) {\n event.preventDefault();\n var value = this.zoomDropDown.element.value;\n this.zoomDropDownChange(value);\n }\n return true;\n }\n };\n Toolbar$$1.prototype.onZoomDropDownInputClick = function () {\n this.zoomDropDown.element.select();\n };\n Toolbar$$1.prototype.zoomPercentSelect = function (args) {\n if (this.pdfViewerBase.pageCount > 0) {\n if (args.isInteracted) {\n if (args.itemData) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var zoomText = args.itemData.percent;\n this.zoomDropDownChange(zoomText);\n }\n }\n else {\n this.updateZoomPercentage(this.pdfViewer.magnificationModule.zoomFactor);\n }\n }\n };\n Toolbar$$1.prototype.zoomDropDownChange = function (zoomText) {\n // eslint-disable-next-line max-len\n if (zoomText !== this.pdfViewer.localeObj.getConstant('Fit Width') && zoomText !== this.pdfViewer.localeObj.getConstant('Fit Page') && zoomText !== this.pdfViewer.localeObj.getConstant('Automatic')) {\n this.pdfViewer.magnificationModule.isAutoZoom = false;\n this.pdfViewer.magnificationModule.zoomTo(parseFloat(zoomText));\n this.updateZoomPercentage(this.pdfViewer.magnificationModule.zoomFactor);\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Fit Width')) {\n this.pdfViewer.magnificationModule.isAutoZoom = false;\n this.pdfViewer.magnificationModule.fitToWidth();\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Fit Page')) {\n this.pdfViewer.magnificationModule.fitToPage();\n this.zoomDropDown.focusOut();\n }\n else if (zoomText === this.pdfViewer.localeObj.getConstant('Automatic')) {\n this.pdfViewer.magnificationModule.isAutoZoom = true;\n this.pdfViewer.magnificationModule.fitToAuto();\n this.zoomDropDown.focusOut();\n }\n };\n /**\n * @param zoomFactor\n * @private\n */\n Toolbar$$1.prototype.updateZoomPercentage = function (zoomFactor) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line radix\n var currentPercent = parseInt((zoomFactor * 100).toString()) + '%';\n if (isBlazor()) {\n // eslint-disable-next-line\n var blazorZoomDropDown = this.pdfViewerBase.getElement('_zoomDropDown');\n if (blazorZoomDropDown && blazorZoomDropDown.children.length > 0) {\n blazorZoomDropDown.children[0].children[0].value = currentPercent;\n }\n }\n else {\n if (this.zoomDropDown.text === currentPercent) {\n this.zoomDropDown.element.value = currentPercent;\n }\n if (this.zoomDropDown.index === 11) {\n this.zoomDropDown.value = 4;\n }\n if (zoomFactor <= 0.25) {\n this.pdfViewerBase.isMinimumZoom = true;\n }\n else {\n this.pdfViewerBase.isMinimumZoom = false;\n }\n // eslint-disable-next-line\n this.zoomDropDown.text = currentPercent;\n }\n }\n };\n Toolbar$$1.prototype.updateInteractionItems = function () {\n if (this.pdfViewer.textSelectionModule) {\n if (this.pdfViewer.enableTextSelection) {\n this.toolbar.enableItems(this.textSelectItem.parentElement, true);\n }\n else {\n this.toolbar.enableItems(this.textSelectItem.parentElement, false);\n }\n }\n else {\n this.toolbar.enableItems(this.textSelectItem.parentElement, false);\n }\n this.toolbar.enableItems(this.panItem.parentElement, true);\n if (this.pdfViewer.interactionMode === 'TextSelection' && this.pdfViewer.enableTextSelection) {\n this.selectItem(this.textSelectItem);\n this.deSelectItem(this.panItem);\n }\n else {\n this.selectItem(this.panItem);\n this.deSelectItem(this.textSelectItem);\n this.pdfViewerBase.initiatePanning();\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.textSearchButtonHandler = function () {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.pdfViewer.textSearchModule && this.pdfViewerBase.pageCount > 0) {\n this.isTextSearchBoxDisplayed = !this.isTextSearchBoxDisplayed;\n this.pdfViewer.textSearchModule.showSearchBox(this.isTextSearchBoxDisplayed);\n if (this.isTextSearchBoxDisplayed) {\n if (!isBlazor()) {\n this.selectItem(this.textSearchItem);\n }\n // eslint-disable-next-line max-len\n var searchInputElement = document.getElementById(this.pdfViewer.element.id + '_search_input');\n searchInputElement.select();\n searchInputElement.focus();\n }\n else {\n if (!isBlazor()) {\n this.deSelectItem(this.textSearchItem);\n this.textSearchItem.blur();\n }\n else {\n var searchItem = this.pdfViewerBase.getElement('_search');\n searchItem.firstElementChild.blur();\n }\n }\n }\n }\n else {\n this.showToolbar(false);\n this.pdfViewerBase.navigationPane.createNavigationPaneMobile('search');\n }\n };\n Toolbar$$1.prototype.initiateAnnotationMode = function (id) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (this.annotationToolbarModule && this.pdfViewer.enableAnnotationToolbar) {\n this.annotationToolbarModule.showAnnotationToolbar(this.annotationItem);\n this.pdfViewer.toolbarModule.annotationToolbarModule.toolbar.refreshOverflow();\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var formDesignerMainDiv = document.getElementById(this.pdfViewer.element.id + \"_formdesigner_toolbar\");\n formDesignerMainDiv.style.display = \"none\";\n this.formDesignerToolbarModule.isToolbarHidden = false;\n this.formDesignerToolbarModule.showFormDesignerToolbar(this.formDesignerItem);\n this.annotationToolbarModule.adjustViewer(true);\n }\n }\n }\n else {\n if (!isBlazor()) {\n if (id === this.pdfViewer.element.id + '_annotation') {\n id = this.pdfViewer.element.id + '_annotationIcon';\n }\n this.annotationToolbarModule.createAnnotationToolbarForMobile(id);\n }\n }\n };\n Toolbar$$1.prototype.initiateFormDesignerMode = function () {\n if (this.formDesignerToolbarModule && this.pdfViewer.enableFormDesignerToolbar) {\n this.formDesignerToolbarModule.showFormDesignerToolbar(this.formDesignerItem);\n if (this.pdfViewer.isAnnotationToolbarVisible && this.pdfViewer.isFormDesignerToolbarVisible) {\n var annotationMainDiv = document.getElementById(this.pdfViewer.element.id + \"_annotation_toolbar\");\n annotationMainDiv.style.display = \"none\";\n this.annotationToolbarModule.isToolbarHidden = false;\n this.annotationToolbarModule.showAnnotationToolbar(this.annotationItem);\n this.formDesignerToolbarModule.adjustViewer(true);\n }\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.DisableInteractionTools = function () {\n this.deSelectItem(this.textSelectItem);\n this.deSelectItem(this.panItem);\n };\n /**\n * @param element\n * @private\n */\n Toolbar$$1.prototype.selectItem = function (element) {\n if (element) {\n element.classList.add('e-pv-select');\n }\n };\n /**\n * @param element\n * @private\n */\n Toolbar$$1.prototype.deSelectItem = function (element) {\n if (element) {\n element.classList.remove('e-pv-select');\n }\n };\n /**\n * @param isTextSelect\n * @private\n */\n Toolbar$$1.prototype.updateInteractionTools = function (isTextSelect) {\n var isBlazorPlatform = isBlazor();\n if (isTextSelect) {\n if (isBlazorPlatform) {\n this.selectItem(this.SelectToolElement);\n this.deSelectItem(this.PanElement);\n }\n else {\n this.selectItem(this.textSelectItem);\n this.deSelectItem(this.panItem);\n }\n }\n else {\n if (isBlazorPlatform) {\n this.selectItem(this.PanElement);\n this.deSelectItem(this.SelectToolElement);\n }\n else {\n this.selectItem(this.panItem);\n this.deSelectItem(this.textSelectItem);\n }\n }\n };\n Toolbar$$1.prototype.initialEnableItems = function () {\n if (this.pdfViewer.enableToolbar) {\n this.showToolbar(true);\n }\n else {\n this.showToolbar(false);\n }\n if (this.pdfViewer.enableNavigationToolbar) {\n this.showNavigationToolbar(true);\n }\n else {\n this.showNavigationToolbar(false);\n }\n if (!isBlazor()) {\n if (this.isPrintBtnVisible) {\n this.showPrintOption(true);\n }\n else {\n this.showPrintOption(false);\n }\n if (this.isDownloadBtnVisible) {\n this.showDownloadOption(true);\n }\n else {\n this.showDownloadOption(false);\n }\n if (this.isSearchBtnVisible) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n if (this.isCommentBtnVisible) {\n this.showCommentOption(true);\n }\n else {\n this.showCommentOption(false);\n }\n }\n };\n Toolbar$$1.prototype.showSeparator = function (toolbarItems) {\n // eslint-disable-next-line max-len\n if (!this.isOpenBtnVisible || (!this.isNavigationToolVisible && !this.isMagnificationToolVisible && !this.isSelectionBtnVisible && !this.isScrollingBtnVisible && !this.isUndoRedoBtnsVisible)) {\n this.applyHideToToolbar(false, 1, 1);\n }\n if (((!this.isNavigationToolVisible && !this.isMagnificationToolVisible) && !this.isOpenBtnVisible) ||\n (this.isOpenBtnVisible && !this.isNavigationToolVisible) ||\n // eslint-disable-next-line max-len\n ((!this.isOpenBtnVisible && !this.isNavigationToolVisible) || (!this.isMagnificationToolVisible && !this.isScrollingBtnVisible && !this.isSelectionBtnVisible))) {\n this.applyHideToToolbar(false, 8, 8);\n }\n if ((!this.isMagnificationToolVisible && !this.isSelectionBtnVisible && !this.isScrollingBtnVisible) ||\n (this.isMagnificationToolVisible && (!this.isSelectionBtnVisible && !this.isScrollingBtnVisible)) ||\n (!this.isMagnificationToolVisible && (this.isSelectionBtnVisible || this.isScrollingBtnVisible))) {\n this.applyHideToToolbar(false, 12, 12);\n }\n if (((!this.isMagnificationToolVisible && !this.isNavigationToolVisible && !this.isScrollingBtnVisible\n && !this.isSelectionBtnVisible) && this.isUndoRedoBtnsVisible || !this.isUndoRedoBtnsVisible)) {\n this.applyHideToToolbar(false, 15, 15);\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.applyToolbarSettings = function () {\n var toolbarSettingsItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarSettingsItems) {\n if (toolbarSettingsItems.indexOf('OpenOption') !== -1) {\n this.showOpenOption(true);\n }\n else {\n this.showOpenOption(false);\n }\n if (toolbarSettingsItems.indexOf('PageNavigationTool') !== -1) {\n this.showPageNavigationTool(true);\n }\n else {\n this.showPageNavigationTool(false);\n }\n if (toolbarSettingsItems.indexOf('MagnificationTool') !== -1) {\n this.showMagnificationTool(true);\n }\n else {\n this.showMagnificationTool(false);\n }\n if (toolbarSettingsItems.indexOf('SelectionTool') !== -1) {\n this.showSelectionTool(true);\n }\n else {\n this.showSelectionTool(false);\n }\n if (toolbarSettingsItems.indexOf('PanTool') !== -1) {\n this.showScrollingTool(true);\n }\n else {\n this.showScrollingTool(false);\n }\n if (toolbarSettingsItems.indexOf('PrintOption') !== -1) {\n this.showPrintOption(true);\n }\n else {\n this.showPrintOption(false);\n }\n if (toolbarSettingsItems.indexOf('DownloadOption') !== -1) {\n this.showDownloadOption(true);\n }\n else {\n this.showDownloadOption(false);\n }\n if (toolbarSettingsItems.indexOf('SearchOption') !== -1) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n if (toolbarSettingsItems.indexOf('UndoRedoTool') !== -1) {\n this.showUndoRedoTool(true);\n }\n else {\n this.showUndoRedoTool(false);\n }\n if (toolbarSettingsItems.indexOf('AnnotationEditTool') !== -1) {\n this.showAnnotationEditTool(true);\n }\n else {\n this.showAnnotationEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('FormDesignerEditTool') !== -1) {\n this.showFormDesignerEditTool(true);\n }\n else {\n this.showFormDesignerEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('CommentTool') !== -1) {\n this.showCommentOption(true);\n }\n else {\n this.showCommentOption(false);\n }\n if (toolbarSettingsItems.indexOf('SubmitForm') !== -1) {\n this.showSubmitForm(true);\n }\n else {\n this.showSubmitForm(false);\n }\n this.showSeparator(toolbarSettingsItems);\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.applyToolbarSettingsForMobile = function () {\n var toolbarSettingsItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarSettingsItems) {\n if (toolbarSettingsItems.indexOf('OpenOption') !== -1) {\n this.showOpenOption(true);\n }\n else {\n this.showOpenOption(false);\n }\n if (toolbarSettingsItems.indexOf('UndoRedoTool') !== -1) {\n this.showUndoRedoTool(true);\n }\n else {\n this.showUndoRedoTool(false);\n }\n if (toolbarSettingsItems.indexOf('AnnotationEditTool') !== -1) {\n this.showAnnotationEditTool(true);\n }\n else {\n this.showAnnotationEditTool(false);\n }\n if (toolbarSettingsItems.indexOf('SearchOption') !== -1) {\n this.showSearchOption(true);\n }\n else {\n this.showSearchOption(false);\n }\n }\n };\n Toolbar$$1.prototype.getStampMode = function () {\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.stampAnnotationModule) {\n return this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode;\n }\n else {\n return false;\n }\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.stampBeforeOpen = function (args) {\n this.annotationToolbarModule.resetFreeTextAnnot();\n if (args.ParentItem.Text === '' && this.pdfViewer.customStampSettings.isAddToMenu && args.Items.length > 0) {\n // eslint-disable-next-line\n var currentElements = null;\n for (var i = 0; i < args.Items.length; i++) {\n if (args.Items[i].Text === 'Custom Stamp') {\n args.Items[i].Items = [];\n currentElements = args.Items[i];\n break;\n }\n }\n // eslint-disable-next-line\n var elements = this.pdfViewerBase.customStampCollection;\n // eslint-disable-next-line\n var stampElements = this.pdfViewer.customStampSettings.customStamps;\n if (elements.length === 0 && stampElements && stampElements.length > 0) {\n for (var n = 0; n < stampElements.length; n++) {\n // eslint-disable-next-line max-len\n elements.push({ customStampName: stampElements[n].customStampName, customStampImageSource: stampElements[n].customStampImageSource });\n }\n }\n for (var m = 0; m < elements.length; m++) {\n if (currentElements != null) {\n currentElements.Items.push({ text: elements[m].customStampName });\n }\n }\n }\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.stampBeforeClose = function (args, showItemOnClick) {\n // eslint-disable-next-line max-len\n if ((args.ParentItem && args.ParentItem.Text !== 'Custom Stamp' && args.ParentItem.Text !== 'Standard Business' && args.ParentItem.Text !== 'Dynamic' && args.ParentItem.Text !== 'Sign Here') || !args.ParentItem) {\n showItemOnClick = true;\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n Toolbar$$1.prototype.updateStampItems = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.stampAnnotationModule && this.pdfViewer.annotationModule.stampAnnotationModule.isNewStampAnnot) {\n if (this.pdfViewer.selectedItems.annotations[0]) {\n this.pdfViewer.remove(this.pdfViewer.selectedItems.annotations[0]);\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n this.pdfViewer.renderDrawing();\n this.pdfViewerBase.tool = null;\n }\n this.pdfViewerBase.isAlreadyAdded = false;\n this.pdfViewer.annotationModule.stampAnnotationModule.isNewStampAnnot = false;\n }\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.stampSelect = function (args, stampParentID) {\n this.pdfViewerBase.isAlreadyAdded = false;\n this.updateStampItems();\n if (args.Item.Text === 'Custom Stamp') {\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n // eslint-disable-next-line\n var stampImage = createElement('input', { id: this.pdfViewer.element.id + '_stampElement', attrs: { 'type': 'file' } });\n stampImage.setAttribute('accept', '.jpg,.jpeg,.png');\n stampImage.style.position = 'absolute';\n stampImage.style.left = '0px';\n stampImage.style.top = '0px';\n stampImage.style.visibility = 'hidden';\n document.body.appendChild(stampImage);\n stampImage.click();\n stampImage.addEventListener('change', this.annotationToolbarModule.addStampImage);\n document.body.removeChild(stampImage);\n // eslint-disable-next-line max-len\n }\n else if (stampParentID === 'Custom Stamp' && args.Item.Text !== '') {\n // eslint-disable-next-line\n var elements = this.pdfViewerBase.customStampCollection;\n for (var n = 0; n < elements.length; n++) {\n if (elements[n].customStampName === args.Item.Text) {\n this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = args.Item.Text;\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n this.pdfViewerBase.isAlreadyAdded = true;\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(elements[n].customStampImageSource);\n this.pdfViewerBase.stampAdded = false;\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (args.Item.Text !== 'Dynamic' && args.Item.Text !== '' && args.Item.Text !== 'Standard Business' && (stampParentID === 'Sign Here' || args.Item.Text !== 'Sign Here')) {\n this.annotationToolbarModule.checkStampAnnotations();\n this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.pdfViewerBase.stampAdded = true;\n if (stampParentID === 'Dynamic') {\n this.pdfViewerBase.isDynamicStamp = true;\n this.pdfViewer.annotationModule.stampAnnotationModule.retrieveDynamicStampAnnotation(args.Item.Text);\n }\n else {\n this.pdfViewerBase.isDynamicStamp = false;\n this.pdfViewer.annotationModule.stampAnnotationModule.retrievestampAnnotation(args.Item.Text);\n }\n }\n };\n /**\n * @private\n */\n Toolbar$$1.prototype.getModuleName = function () {\n return 'Toolbar';\n };\n return Toolbar$$1;\n}());\n\n/* eslint-disable */\n// eslint-disable-next-line max-len\n/**\n * @hidden\n */\nvar AnnotationToolbar = /** @__PURE__ @class */ (function () {\n function AnnotationToolbar(viewer, viewerBase, toolbar) {\n var _this = this;\n this.toolbarBorderHeight = 1;\n /**\n * @private\n */\n this.isToolbarHidden = false;\n /**\n * @private\n */\n this.isMobileAnnotEnabled = false;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n this.isHighlightBtnVisible = true;\n this.isCommentBtnVisible = true;\n this.isUnderlineBtnVisible = true;\n this.isStrikethroughBtnVisible = true;\n this.isColorToolVisible = true;\n this.isOpacityToolVisible = true;\n this.isDeleteAnnotationToolVisible = true;\n this.isCurrentAnnotationOpacitySet = false;\n this.isStampBtnVisible = false;\n this.isShapeBtnVisible = false;\n this.isSignatureBtnVisible = false;\n this.isInkBtnVisible = false;\n this.isFontFamilyToolVisible = false;\n this.isFontSizeToolVisible = false;\n this.isFontAlignToolVisible = false;\n this.isFontColorToolVisible = false;\n this.isFontStylesToolVisible = false;\n this.isCommentPanelBtnVisible = false;\n this.isFreeTextBtnVisible = false;\n this.isCalibrateBtnVisible = false;\n this.isStrokeColorToolVisible = false;\n this.isThicknessToolVisible = false;\n this.stampMenu = [];\n this.stampParentID = '';\n /**\n * @private\n */\n this.inkAnnotationSelected = false;\n /**\n * @private\n */\n this.openSignaturePopup = false;\n this.isSavedSignatureClicked = false;\n this.saveSignatureCount = 0;\n this.saveInitialCount = 0;\n /**\n * @private\n */\n this.isToolbarCreated = false;\n // eslint-disable-next-line\n this.addStampImage = function (args) {\n // eslint-disable-next-line\n var proxy = _this;\n // eslint-disable-next-line\n var upoadedFiles = args.target.files;\n if (args.target.files[0] !== null) {\n var uploadedFile = upoadedFiles[0];\n _this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = uploadedFile.name.split('.')[0];\n if (uploadedFile.type.split('/')[0] === 'image') {\n var reader = new FileReader();\n // eslint-disable-next-line\n reader.onload = function (e) {\n var uploadedFileUrl = e.currentTarget.result;\n proxy.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n proxy.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n proxy.pdfViewerBase.stampAdded = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(uploadedFileUrl);\n proxy.pdfViewerBase.stampAdded = false;\n };\n reader.readAsDataURL(uploadedFile);\n }\n }\n args.target.value = '';\n args.currentTarget.value = '';\n };\n this.popupPosition = function (colorElement, buttonElement) {\n if (colorElement && colorElement.element) {\n var buttonBounds = buttonElement.getBoundingClientRect();\n var elements = colorElement.element.getElementsByClassName(\"e-container e-color-palette\")[0].getElementsByClassName(\"e-palette\")[0].getBoundingClientRect();\n var mainContainerBounds = this.pdfViewerBase.mainContainer.getBoundingClientRect();\n if (elements.left + elements.width > mainContainerBounds.width) {\n colorElement.element.parentElement.style.left = (elements.left - elements.width) + buttonBounds.width + 'px';\n }\n }\n };\n this.onShapeToolbarClicked = function (args) {\n var elementId = _this.pdfViewer.element.id;\n var shapeAnnotationModule = _this.pdfViewer.annotation.shapeAnnotationModule;\n if (!Browser.isDevice) {\n _this.deselectAllItems();\n _this.resetFreeTextAnnot();\n }\n else {\n // eslint:disable-next-line\n var element = args.originalEvent.target;\n _this.pdfViewer.toolbarModule.selectItem(element.parentElement);\n }\n switch (args.originalEvent.target.id) {\n case elementId + '_shape_line':\n case elementId + '_shape_lineIcon':\n shapeAnnotationModule.setAnnotationType('Line');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.lineFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.lineStrokeColor);\n _this.handleShapeTool(elementId + '_shape_line');\n break;\n case elementId + '_shape_arrow':\n case elementId + '_shape_arrowIcon':\n shapeAnnotationModule.setAnnotationType('Arrow');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.arrowFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.arrowStrokeColor);\n _this.handleShapeTool(elementId + '_shape_arrow');\n break;\n case elementId + '_shape_rectangle':\n case elementId + '_shape_rectangleIcon':\n shapeAnnotationModule.setAnnotationType('Rectangle');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.rectangleFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.rectangleStrokeColor);\n _this.handleShapeTool(elementId + '_shape_rectangle');\n break;\n case elementId + '_shape_circle':\n case elementId + '_shape_circleIcon':\n shapeAnnotationModule.setAnnotationType('Circle');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.circleFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.circleStrokeColor);\n _this.handleShapeTool(elementId + '_shape_circle');\n break;\n case elementId + '_shape_pentagon':\n case elementId + '_shape_pentagonIcon':\n shapeAnnotationModule.setAnnotationType('Polygon');\n _this.onShapeDrawSelection(true);\n _this.updateColorInIcon(_this.colorDropDownElement, shapeAnnotationModule.polygonFillColor);\n _this.updateColorInIcon(_this.strokeDropDownElement, shapeAnnotationModule.polygonStrokeColor);\n _this.handleShapeTool(elementId + '_shape_pentagon');\n break;\n }\n // this.pdfViewer.clearSelection();\n };\n this.pdfViewer = viewer;\n this.pdfViewerBase = viewerBase;\n this.primaryToolbar = toolbar;\n }\n /**\n * @private\n */\n AnnotationToolbar.prototype.initializeAnnotationToolbar = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_annotation_toolbar', className: 'e-pv-annotation-toolbar' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n this.toolbar = new Toolbar({\n width: '', height: '', overflowMode: 'Popup', cssClass: 'e-pv-toolbar-scroll',\n items: this.createToolbarItems(), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns();\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.appendTo(this.toolbarElement);\n this.afterToolbarCreation();\n this.createStampContainer();\n this.createSignContainer();\n this.applyAnnotationToolbarSettings();\n this.updateToolbarItems();\n this.showAnnotationToolbar(null, true);\n this.toolbarElement.setAttribute('aria-label', \"Annotation Toolbar\");\n };\n AnnotationToolbar.prototype.createMobileAnnotationToolbar = function (isEnable, isPath) {\n var _this = this;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n if (this.toolbarElement == null && isEnable) {\n this.isMobileAnnotEnabled = true;\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_annotation_toolbar', className: 'e-pv-annotation-toolbar' });\n this.pdfViewerBase.viewerMainContainer.insertBefore(this.toolbarElement, this.pdfViewerBase.viewerContainer);\n this.toolbar = new Toolbar({\n width: '', height: '', overflowMode: 'Popup',\n items: this.createMobileToolbarItems(isPath), clicked: this.onToolbarClicked.bind(this),\n created: function () {\n _this.createDropDowns(isPath);\n }\n });\n this.toolbar.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.pdfViewerBase.navigationPane.goBackToToolbar();\n this.pdfViewer.toolbarModule.showToolbar(false);\n this.toolbar.appendTo(this.toolbarElement);\n this.deleteItem = this.pdfViewerBase.getElement('_annotation_delete');\n this.deleteItem.firstElementChild.id = this.pdfViewer.element.id + '_annotation_delete';\n }\n else if (this.toolbarElement != null) {\n if (isEnable) {\n this.isMobileAnnotEnabled = true;\n this.pdfViewerBase.navigationPane.goBackToToolbar();\n this.pdfViewer.toolbarModule.showToolbar(false);\n this.toolbarElement.style.display = 'block';\n }\n else if (!isEnable) {\n this.isMobileAnnotEnabled = false;\n this.pdfViewer.toolbarModule.showToolbar(true);\n this.hideMobileAnnotationToolbar();\n }\n }\n }\n else {\n this.isMobileAnnotEnabled = true;\n }\n };\n AnnotationToolbar.prototype.hideMobileAnnotationToolbar = function () {\n if (this.toolbarElement != null) {\n if (this.pdfViewer.selectedItems.annotations.length > 0 || this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n this.propertyToolbar.element.style.display = 'block';\n this.toolbarCreated = true;\n }\n }\n else {\n if (this.toolbar.element.children.length > 0) {\n this.toolbarCreated = true;\n }\n else {\n this.toolbarCreated = false;\n }\n if (this.propertyToolbar && this.propertyToolbar.element.style.display !== 'none') {\n this.propertyToolbar.element.style.display = 'none';\n if (!this.toolbarCreated) {\n var editIcon = document.getElementById(this.pdfViewer.element.id + '_annotationIcon');\n if (editIcon && editIcon.parentElement.classList.contains('e-pv-select')) {\n this.createAnnotationToolbarForMobile();\n }\n }\n }\n }\n if (this.toolbarElement.children.length > 0) {\n this.toolbarElement.style.display = 'block';\n }\n this.adjustMobileViewer();\n }\n else if (this.toolbarCreated && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n this.propertyToolbar.element.style.display = 'none';\n this.adjustMobileViewer();\n this.toolbarCreated = false;\n }\n };\n AnnotationToolbar.prototype.FreeTextForMobile = function () {\n var _this = this;\n this.hideExistingTool();\n // eslint-disable-next-line max-len\n this.freetextToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_freeTextToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.freetextToolbarElement);\n // eslint-disable-next-line max-len\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var fontFamilyTemplate = this.getTemplate('input', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('input', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('span', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('span', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n // eslint-disable-next-line max-len\n var textPropertiesTemplate = this.getTemplate('span', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' },\n { template: fontFamilyTemplate },\n { template: fontSizeTemplate },\n { template: textColorTemplate },\n { template: alignmentTemplate },\n { template: textPropertiesTemplate },\n { template: colorTemplate },\n { template: strokeTemplate },\n { template: thicknessTemplate },\n { template: opacityTemplate },\n ];\n this.toolbar = new Toolbar({\n items: items, width: '', height: '', overflowMode: 'Scrollable', created: function () {\n // eslint-disable-next-line max-len\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(_this.pdfViewer.element.id + '_annotation_freeTextEdit');\n }\n });\n this.toolbar.appendTo(this.freetextToolbarElement);\n this.showFreeTextPropertiesTool();\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.createPropertyTools = function (shapeType) {\n var _this = this;\n if (shapeType !== \"\") {\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n // eslint-disable-next-line max-len\n var shapeToolbarElement = void 0;\n shapeToolbarElement = document.getElementById(this.pdfViewer.element.id + '_propertyToolbar');\n if (shapeToolbarElement) {\n shapeToolbarElement.parentElement.removeChild(shapeToolbarElement);\n }\n // eslint-disable-next-line max-len\n shapeToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_propertyToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(shapeToolbarElement);\n var id_1;\n var propertyToolbar = new Toolbar({\n // eslint-disable-next-line max-len\n items: this.createPropertyToolbarForMobile(shapeType), width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n if (_this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n id_1 = _this.pdfViewer.element.id + '_underlineIcon';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n id_1 = _this.pdfViewer.element.id + '_annotation_freeTextEdit';\n // eslint-disable-next-line max-len\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Stamp' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'StickyNotes' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Image') {\n id_1 = _this.pdfViewer.element.id + '_annotation_stamp';\n // eslint-disable-next-line max-len\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureText') {\n id_1 = _this.pdfViewer.element.id + '_annotation_handwrittenSign';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'SignatureImage') {\n id_1 = _this.pdfViewer.element.id + '_annotation_handwrittenImage';\n }\n else if (_this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Ink' || _this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Path') {\n id_1 = _this.pdfViewer.element.id + '_annotation_inkIcon';\n }\n else if (shapeType === 'Highlight' || shapeType === 'Underline' || shapeType === 'Strikethrough') {\n id_1 = _this.pdfViewer.element.id + '_highlightIcon';\n }\n else {\n id_1 = _this.pdfViewer.element.id + '_annotation_shapesIcon';\n }\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(id_1);\n }\n });\n propertyToolbar.isStringTemplate = true;\n propertyToolbar.appendTo(shapeToolbarElement);\n if (!this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line') {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n }\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'HandWrittenSignature') {\n var commentIcon = document.getElementById(this.pdfViewer.element.id + '_annotation_commentPanel');\n this.toolbar.enableItems(commentIcon.parentElement, false);\n }\n }\n this.showPropertyTool(propertyToolbar, id_1);\n }\n };\n AnnotationToolbar.prototype.showPropertyTool = function (existingTool, id) {\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n this.propertyToolbar = existingTool;\n this.applyProperiesToolSettings(id);\n //this.propertyToolbar.element.style.display = 'block';\n if (this.pdfViewer.selectedItems.annotations[0]) {\n // eslint:disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (selectedAnnotation.shapeAnnotationType !== 'SignatureText' && selectedAnnotation.shapeAnnotationType !== 'HandWrittenSignature' && selectedAnnotation.shapeAnnotationType !== 'Stamp' && selectedAnnotation.shapeAnnotationType !== 'Image' && selectedAnnotation.shapeAnnotationType !== 'Ink' && selectedAnnotation.shapeAnnotationType !== 'Path' && selectedAnnotation.shapeAnnotationType !== 'StickyNotes') {\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.selectedItems.annotations[0].fillColor);\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.selectedItems.annotations[0].strokeColor);\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint:disable-next-line\n var fontFamily = this.fontFamilyElement;\n fontFamily.ej2_instances[0].value = this.pdfViewer.selectedItems.annotations[0].fontFamily;\n // eslint:disable-next-line\n var fontColor = this.fontColorElement;\n fontColor.children[0].style.borderBottomColor = this.pdfViewer.selectedItems.annotations[0].fontColor;\n this.pdfViewer.annotation.modifyTextAlignment(this.pdfViewer.selectedItems.annotations[0].textAlign);\n this.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n if (this.strokeDropDownElement) {\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.selectedItems.annotations[0].strokeColor);\n }\n }\n }\n this.toolbarCreated = true;\n this.adjustMobileViewer();\n };\n AnnotationToolbar.prototype.stampToolMobileForMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.stampToolbarElement) {\n this.stampToolbarElement.parentElement.removeChild(this.stampToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.stampToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_stampToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.stampToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Toolbar({\n items: this.createStampToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.stampToolbarElement);\n this.showStampPropertiesTool();\n //this.afterShapeToolbarCreationForMobile();\n };\n AnnotationToolbar.prototype.shapeToolMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.shapeToolbarElement) {\n this.shapeToolbarElement.parentElement.removeChild(this.shapeToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.shapeToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_shapeToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.shapeToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Toolbar({\n items: this.createShapeToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.shapeToolbarElement);\n this.afterShapeToolbarCreationForMobile();\n this.showShapeTool();\n };\n AnnotationToolbar.prototype.calibrateToolMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.calibrateToolbarElement) {\n this.calibrateToolbarElement.parentElement.removeChild(this.calibrateToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.calibrateToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_calibrateToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.calibrateToolbarElement);\n // eslint-disable-next-line max-len\n this.toolbar = new Toolbar({\n items: this.createCalibrateToolbarItemsForMobile(), width: '', height: '', overflowMode: 'Scrollable', clicked: this.onCalibrateToolbarClicked.bind(this),\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.calibrateToolbarElement);\n this.afterCalibrateToolbarCreationForMobile();\n this.showShapeTool();\n };\n AnnotationToolbar.prototype.textMarkupForMobile = function (args) {\n var _this = this;\n this.hideExistingTool();\n if (this.textMarkupToolbarElement) {\n this.textMarkupToolbarElement.parentElement.removeChild(this.textMarkupToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.textMarkupToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.textMarkupToolbarElement);\n // eslint-disable-next-line max-len\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' },\n { template: colorTemplate, align: 'left' },\n { template: opacityTemplate, align: 'left' }\n ];\n this.propertyToolbar = new Toolbar({\n items: items, width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(args.originalEvent.target.id);\n }\n });\n this.propertyToolbar.isStringTemplate = true;\n this.propertyToolbar.appendTo(this.textMarkupToolbarElement);\n this.showTextMarkupPropertiesTool();\n };\n AnnotationToolbar.prototype.showShapeTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 7, 7);\n }\n else {\n this.showColorEditTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 8, 8);\n }\n else {\n this.showStrokeColorEditTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 9, 9);\n }\n else {\n this.showThicknessEditTool(false, 9, 9);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 10, 10);\n }\n else {\n this.showOpacityEditTool(false, 10, 10);\n }\n }\n };\n AnnotationToolbar.prototype.signatureInkForMobile = function () {\n var _this = this;\n this.hideExistingTool();\n if (this.signatureInkToolbarElement) {\n this.signatureInkToolbarElement.parentElement.removeChild(this.signatureInkToolbarElement);\n }\n // eslint-disable-next-line max-len\n this.signatureInkToolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.signatureInkToolbarElement);\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n // eslint:disable-next-line\n var items;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) },\n { template: opacityTemplate, align: 'left' },\n { template: strokeTemplate, aign: 'left' },\n { template: thicknessTemplate, align: 'left' }\n ];\n this.toolbar = new Toolbar({\n items: items, width: '', height: '', overflowMode: 'Scrollable',\n created: function () {\n _this.pdfViewer.toolbarModule.annotationToolbarModule.mobileColorpicker(_this.pdfViewer.element.id + '_annotation_inkIcon');\n }\n });\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.signatureInkToolbarElement);\n };\n AnnotationToolbar.prototype.hideExistingTool = function () {\n if (this.toolbar && !this.pdfViewer.enableDesktopMode) {\n this.toolbar.destroy();\n }\n if (this.propertyToolbar && !this.pdfViewer.enableDesktopMode) {\n this.propertyToolbar.destroy();\n }\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_mobileAnnotationToolbar');\n if (mobileAnnotationToolbar) {\n mobileAnnotationToolbar.style.display = 'none';\n }\n };\n AnnotationToolbar.prototype.applyProperiesToolSettings = function (type) {\n switch (type) {\n case this.pdfViewer.element.id + '_underlineIcon':\n case this.pdfViewer.element.id + '_highlightIcon':\n this.showTextMarkupPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_freeTextEdit':\n this.showFreeTextPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_shapesIcon':\n this.shapePropertiesTool();\n break;\n case 'stampTool':\n case this.pdfViewer.element.id + '_annotation_stamp':\n this.showStampPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_handwrittenSign':\n case this.pdfViewer.element.id + '_annotation_inkIcon':\n this.showInkPropertiesTool();\n break;\n case this.pdfViewer.element.id + '_annotation_handwrittenImage':\n this.showImagePropertyTool();\n break;\n }\n };\n AnnotationToolbar.prototype.showImagePropertyTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 0, 0);\n }\n else {\n this.showOpacityEditTool(false, 0, 0);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 1, 1);\n }\n else {\n this.showCommentPanelTool(false, 1, 1);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 2, 2);\n }\n else {\n this.showAnnotationDeleteTool(false, 2, 2);\n }\n }\n };\n AnnotationToolbar.prototype.showFreeTextPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('FontFamilyAnnotationTool') !== -1) {\n this.showFontFamilyAnnotationTool(true, 2, 2);\n }\n else {\n this.showFontFamilyAnnotationTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('FontSizeAnnotationTool') !== -1) {\n this.showFontSizeAnnotationTool(true, 3, 3);\n }\n else {\n this.showFontSizeAnnotationTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('FontColorAnnotationTool') !== -1) {\n this.showFontColorAnnotationTool(true, 4, 4);\n }\n else {\n this.showFontColorAnnotationTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('FontAlignAnnotationTool') !== -1) {\n this.showFontAlignAnnotationTool(true, 5, 5);\n }\n else {\n this.showFontAlignAnnotationTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('FontStylesAnnotationTool') !== -1) {\n this.showFontStylesAnnotationTool(true, 6, 6);\n }\n else {\n this.showFontStylesAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 7, 7);\n }\n else {\n this.showColorEditTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 8, 8);\n }\n else {\n this.showStrokeColorEditTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 9, 9);\n }\n else {\n this.showThicknessEditTool(false, 9, 9);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 10, 10);\n }\n else {\n this.showOpacityEditTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 11, 11);\n }\n else {\n this.showCommentPanelTool(false, 11, 11);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 12, 12);\n }\n else {\n this.showAnnotationDeleteTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 0, 0);\n }\n else {\n this.showFreeTextAnnotationTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.shapePropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 2, 2);\n }\n else {\n this.showColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 3, 3);\n }\n else {\n this.showStrokeColorEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 4, 4);\n }\n else {\n this.showThicknessEditTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 5, 5);\n }\n else {\n this.showOpacityEditTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 6, 6);\n }\n else {\n this.showCommentPanelTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 7, 7);\n }\n else {\n this.showAnnotationDeleteTool(false, 7, 7);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 0, 0);\n }\n else {\n this.showShapeAnnotationTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.showStampPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 2, 2);\n }\n else {\n this.showOpacityEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 3, 3);\n }\n else {\n this.showCommentPanelTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 4, 4);\n }\n else {\n this.showAnnotationDeleteTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 0, 0);\n }\n else {\n this.showStampAnnotationTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.showTextMarkupPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 2, 2);\n }\n else {\n this.showColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 3, 3);\n }\n else {\n this.showOpacityEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 4, 4);\n }\n else {\n this.showCommentPanelTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 5, 5);\n }\n else {\n this.showAnnotationDeleteTool(false, 5, 5);\n }\n if (annotationToolbarItems.includes(\"HighlightTool\") || annotationToolbarItems.includes(\"UnderlineTool\") || annotationToolbarItems.includes(\"StrikethroughTool\")) {\n this.applyHideToToolbar(true, 0, 0);\n }\n else {\n this.applyHideToToolbar(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n AnnotationToolbar.prototype.showInkPropertiesTool = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 2, 2);\n }\n else {\n this.showStrokeColorEditTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 3, 3);\n }\n else {\n this.showThicknessEditTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 4, 4);\n }\n else {\n this.showOpacityEditTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 5, 5);\n }\n else {\n this.showCommentPanelTool(false, 5, 5);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 6, 6);\n }\n else {\n this.showAnnotationDeleteTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 0, 0);\n }\n else {\n this.showSignatureTool(false, 0, 0);\n this.applyHideToToolbar(false, 1, 1);\n }\n }\n };\n /**\n * @private\n */\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createAnnotationToolbarForMobile = function (id) {\n var hideToolbar;\n if (id) {\n var editIcon = document.getElementById(id);\n if (editIcon.parentElement.classList.contains('e-pv-select')) {\n hideToolbar = true;\n editIcon.parentElement.classList.remove('e-pv-select');\n }\n else {\n hideToolbar = false;\n this.pdfViewer.toolbarModule.selectItem(editIcon.parentElement);\n }\n }\n if (hideToolbar) {\n this.toolbarCreated = false;\n this.adjustMobileViewer();\n if (this.toolbar) {\n this.toolbar.destroy();\n }\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n var mobileAnnotationToolbar = document.getElementById(this.pdfViewer.element.id + '_mobileAnnotationToolbar');\n if (mobileAnnotationToolbar) {\n mobileAnnotationToolbar.style.display = 'none';\n }\n return [];\n }\n else {\n this.isToolbarCreated = true;\n if (this.propertyToolbar) {\n this.propertyToolbar.destroy();\n }\n if (this.toolbarElement) {\n this.toolbarElement.parentElement.removeChild(this.toolbarElement);\n }\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: this.pdfViewer.element.id + '_mobileAnnotationToolbar', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left;' });\n //this.toolbarElement.append(this.pdfViewerBase.viewerContainer);\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n var stampTemplate = this.getTemplate('span', '_annotation_stamp', 'e-pv-annotation-stamp-container');\n var signTemplate = this.getTemplate('span', '_annotation_signature', 'e-pv-annotation-handwritten-container');\n // eslint:disable-next-line\n var items = void 0;\n items = [\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-comment-icon e-pv-icon', className: 'e-pv-comment-container', id: this.pdfViewer.element.id + '_comment' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-highlight-icon e-pv-icon', className: 'e-pv-highlight-container', id: this.pdfViewer.element.id + '_highlight' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-underline-icon e-pv-icon', className: 'e-pv-underline-container', id: this.pdfViewer.element.id + '_underline' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-strikethrough-icon e-pv-icon', className: 'e-pv-strikethrough-container', id: this.pdfViewer.element.id + '_strikethrough' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-shape-icon e-pv-icon', className: 'e-pv-annotation-shapes-container', id: this.pdfViewer.element.id + '_annotation_shapes' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-annotation-calibrate-icon e-pv-icon', className: 'e-pv-annotation-calibrate-container', id: this.pdfViewer.element.id + '_annotation_calibrate' },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container', id: this.pdfViewer.element.id + '_annotation_freeTextEdit' },\n { type: 'Separator', align: 'Left' },\n { template: stampTemplate },\n { type: 'Separator', align: 'Left' },\n { template: signTemplate, align: 'Left', },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-inkannotation-icon e-pv-icon', className: 'e-pv-annotation-ink-container', id: this.pdfViewer.element.id + '_annotation_ink', align: 'Left', },\n { type: 'Separator', align: 'Left' },\n // eslint-disable-next-line max-len\n { prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right' }\n ];\n if (this.toolbarCreated && this.toolbar) {\n this.toolbar.destroy();\n this.toolbarCreated = false;\n this.adjustMobileViewer();\n }\n else {\n // eslint-disable-next-line max-len\n this.toolbar = new Toolbar({ items: items, width: '', height: '', overflowMode: 'Scrollable', clicked: this.onToolbarClicked.bind(this) });\n if (this.pdfViewer.enableRtl) {\n this.toolbar.enableRtl = true;\n }\n this.toolbar.isStringTemplate = true;\n this.toolbar.appendTo(this.toolbarElement);\n this.afterMobileToolbarCreation();\n this.createStampContainer();\n this.createSignContainer();\n this.applyMobileAnnotationToolbarSettings();\n this.toolbarCreated = true;\n this.adjustMobileViewer();\n }\n return items;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.adjustMobileViewer = function () {\n var toolbarHeight;\n if (this.toolbarElement) {\n toolbarHeight = this.toolbarElement.clientHeight;\n }\n var isPrimaryTool = false;\n if (this.toolbarElement && this.toolbarElement.children.length === 0 && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n toolbarHeight = this.propertyToolbar.element.clientHeight;\n if (this.pdfViewer.toolbarModule.toolbarElement.style.display === 'none') {\n this.pdfViewer.toolbarModule.toolbarElement.style.display = 'block';\n }\n }\n else if (this.freetextToolbarElement && this.freetextToolbarElement.children.length > 0) {\n toolbarHeight = this.freetextToolbarElement.clientHeight;\n }\n else if (toolbarHeight === 0 && this.pdfViewer.toolbarModule.toolbar) {\n toolbarHeight = this.pdfViewer.toolbarModule.toolbarElement.clientHeight;\n isPrimaryTool = true;\n }\n else if (!toolbarHeight && this.propertyToolbar && this.propertyToolbar.element.children.length > 0) {\n toolbarHeight = this.propertyToolbar.element.clientHeight;\n }\n if (this.pdfViewer.enableToolbar && this.toolbarCreated) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (toolbarHeight + toolbarHeight)) + 'px';\n }\n else {\n if (!isPrimaryTool) {\n if (this.pdfViewerBase.viewerContainer.style.height.split('%').length > 1) {\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (-toolbarHeight)) + 'px';\n }\n else {\n this.pdfViewerBase.viewerContainer.style.height = this.resetViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (toolbarHeight)) + 'px';\n }\n }\n }\n };\n /**\n * Shows /hides the toolbar in the PdfViewer\n * @param {boolean} enableToolbar - If set true , its show the Toolbar\n * @returns void\n */\n AnnotationToolbar.prototype.showToolbar = function (enable) {\n var toolbar = this.toolbarElement;\n if (enable) {\n toolbar.style.display = 'block';\n if (Browser.isDevice && this.pdfViewer.toolbarModule && this.pdfViewer.toolbarModule.annotationToolbarModule) {\n this.pdfViewer.toolbarModule.annotationToolbarModule.hideMobileAnnotationToolbar();\n }\n }\n else {\n toolbar.style.display = 'none';\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createMobileToolbarItems = function (isPath) {\n var colorTemplate = this.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n // eslint-disable-next-line max-len\n if (!isPath) {\n items.push({ template: colorTemplate, align: 'right' });\n items.push({ template: opacityTemplate, align: 'right' });\n items.push({ type: 'Separator', align: 'right' });\n }\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'right' });\n return items;\n };\n AnnotationToolbar.prototype.goBackToToolbar = function () {\n this.isMobileAnnotEnabled = false;\n if (this.toolbarElement.children.length > 0) {\n this.toolbarElement.style.display = 'block';\n }\n else {\n this.toolbarCreated = false;\n this.toolbar.destroy();\n this.createAnnotationToolbarForMobile();\n }\n var page = this.pdfViewerBase.getSelectTextMarkupCurrentPage();\n if (page) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.selectTextMarkupCurrentPage = null;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.clearAnnotationSelection(page);\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createToolbarItems = function () {\n var colorTemplate = this.getTemplate('button', '_annotation_color', 'e-pv-annotation-color-container');\n var strokeTemplate = this.getTemplate('button', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('button', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('button', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var shapesTemplate = this.getTemplate('button', '_annotation_shapes', 'e-pv-annotation-shapes-container');\n var calibrateTemplate = this.getTemplate('button', '_annotation_calibrate', 'e-pv-annotation-calibrate-container');\n var stampTemplate = this.getTemplate('span', '_annotation_stamp', 'e-pv-annotation-stamp-container');\n var fontFamilyTemplate = this.getTemplate('button', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('button', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('button', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('button', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n var textPropertiesTemplate = this.getTemplate('button', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n var signTemplate = this.getTemplate('button', '_annotation_signature', 'e-pv-annotation-handwritten-container');\n // eslint-disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-highlight-icon e-pv-icon', className: 'e-pv-highlight-container', id: this.pdfViewer.element.id + '_highlight', align: 'Left' });\n items.push({ prefixIcon: 'e-pv-underline-icon e-pv-icon', className: 'e-pv-underline-container', id: this.pdfViewer.element.id + '_underline', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-strikethrough-icon e-pv-icon', className: 'e-pv-strikethrough-container', id: this.pdfViewer.element.id + '_strikethrough', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-hightlight-separator-container' });\n items.push({ template: shapesTemplate, align: 'Left', cssClass: 'e-pv-shape-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-shape-separator-container' });\n items.push({ template: calibrateTemplate, align: 'Left', cssClass: 'e-pv-calibrate-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-calibrate-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container', id: this.pdfViewer.element.id + '_annotation_freeTextEdit', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-freetext-separator-container' });\n items.push({ template: stampTemplate, align: 'Left', cssClass: 'e-pv-stamp-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-stamp-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ template: signTemplate, align: 'Left', cssClass: 'e-pv-sign-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-sign-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-inkannotation-icon e-pv-icon', className: 'e-pv-annotation-ink-container', id: this.pdfViewer.element.id + '_annotation_ink', align: 'Left' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-ink-separator-container' });\n items.push({ template: fontFamilyTemplate, align: 'Left', cssClass: 'e-pv-fontfamily-container' });\n items.push({ template: fontSizeTemplate, align: 'Left', cssClass: 'e-pv-fontsize-container' });\n items.push({ template: textColorTemplate, align: 'Left', cssClass: 'e-pv-text-color-container' });\n items.push({ template: alignmentTemplate, align: 'Left', cssClass: 'e-pv-alignment-container' });\n items.push({ template: textPropertiesTemplate, align: 'Left', cssClass: 'e-pv-text-properties-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-text-separator-container' });\n items.push({ template: colorTemplate, align: 'Left', cssClass: 'e-pv-color-template-container' });\n items.push({ template: strokeTemplate, align: 'Left', cssClass: 'e-pv-stroke-template-container' });\n items.push({ template: thicknessTemplate, align: 'Left', cssClass: 'e-pv-thickness-template-container' });\n items.push({ template: opacityTemplate, align: 'Left', cssClass: 'e-pv-opacity-template-container' });\n items.push({ type: 'Separator', align: 'Left', cssClass: 'e-pv-opacity-separator-container' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-annotation-tools-close-icon e-pv-icon', className: 'e-pv-annotation-tools-close-container', id: this.pdfViewer.element.id + '_annotation_close', align: 'Right' });\n return items;\n };\n AnnotationToolbar.prototype.createSignContainer = function () {\n var _this = this;\n this.handWrittenSignatureItem = this.pdfViewerBase.getElement('_annotation_signature');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_annotation_signature'), this.pdfViewer.localeObj.getConstant('SignatureFieldDialogHeaderText'));\n // eslint-disable-next-line\n var proxy = this;\n var items = [];\n if (this.pdfViewer.handWrittenSignatureSettings.signatureItem.length === 0 || this.pdfViewer.handWrittenSignatureSettings.signatureItem.length == 2) {\n items = [\n {\n text: 'ADD SIGNATURE'\n },\n {\n separator: true\n },\n {\n text: 'ADD INITIAL'\n }\n ];\n }\n else {\n if (this.pdfViewer.handWrittenSignatureSettings.signatureItem[0] === 'Signature') {\n items = [\n {\n text: 'ADD SIGNATURE'\n }\n ];\n }\n else {\n items = [\n {\n text: 'ADD INITIAL'\n }\n ];\n }\n }\n var saveOptions = {\n items: items,\n iconCss: 'e-pv-handwritten-icon e-pv-icon',\n cssClass: 'e-pv-handwritten-popup',\n open: function (args) {\n proxy.openSignature();\n },\n beforeItemRender: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n if (args.element && args.element.className.indexOf(\"e-separator\") !== -1) {\n args.element.style.margin = \"8px 0\";\n args.element.setAttribute('role', 'menuitem');\n args.element.setAttribute('aria-label', 'separator');\n }\n if (args.item.text === 'ADD SIGNATURE') {\n args.element.innerHTML = '';\n _this.saveSignatureCount = 0;\n for (var collection = _this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (_this.saveSignatureCount < _this.pdfViewerBase.signatureModule.getSaveLimit(_this.pdfViewer.handWrittenSignatureSettings.saveSignatureLimit)) {\n args.element.style.display = 'block';\n // eslint-disable-next-line\n var signatureCollection = _this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n // eslint-disable-next-line\n var collectionKey = signatureCollection.image[0].imageData;\n var signatureID = signatureCollection.image[0].id.split('_')[1];\n if (!signatureCollection.isInitial && collectionKey !== '') {\n // eslint-disable-next-line max-len\n var signatureContainer = createElement('div');\n signatureContainer.id = 's' + signatureID;\n signatureContainer.style.display = 'block';\n signatureContainer.style.paddingBottom = '10px';\n var signatureSpan = createElement('span');\n signatureSpan.id = 'sign_border_' + signatureID;\n signatureSpan.classList.add('e-pv-align-border');\n var signatureImage = void 0;\n if (signatureCollection.image[0].signatureType === 'SignatureText') {\n signatureImage = createElement('div');\n signatureImage.classList.add('e-pv-align-border-div');\n signatureImage.innerText = collectionKey;\n signatureImage.style.fontFamily = signatureCollection.image[0].fontFamily;\n signatureImage.style.fontSize = '15px';\n signatureImage.style.display = 'inline-flex';\n signatureImage.style.alignItems = 'center';\n signatureImage.style.position = 'relative';\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.style.width = '80px';\n signatureImage.style.height = '53px';\n signatureImage.style.overflow = 'hidden';\n signatureImage.style.textOverflow = 'ellipsis';\n signatureImage.style.paddingLeft = '11px';\n }\n else {\n signatureImage = createElement('img');\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.src = collectionKey;\n signatureImage.width = 80;\n signatureImage.height = 32;\n signatureImage.classList.add('e-pv-signatureimage');\n signatureImage.style.paddingLeft = '20px';\n signatureImage.style.paddingRight = '18px';\n signatureImage.style.paddingTop = '12px';\n signatureImage.style.paddingBottom = '12px';\n signatureImage.style.boxSizing = 'content-box';\n signatureImage.setAttribute('alt', 'Saved Signature');\n }\n signatureImage.addEventListener('mouseover', _this.hoverSignatureImage.bind(_this));\n signatureImage.addEventListener('mouseleave', _this.leaveSignatureImage.bind(_this));\n var signatureDeleteSpan = createElement('span');\n signatureDeleteSpan.id = 'delete_' + signatureID;\n signatureDeleteSpan.classList.add('e-pv-delete');\n signatureDeleteSpan.classList.add('e-pv-align');\n signatureSpan.append(signatureImage);\n signatureSpan.append(signatureDeleteSpan);\n signatureContainer.append(signatureSpan);\n args.element.appendChild(signatureContainer);\n args.element.style.pointerEvents = 'auto';\n args.element.style.background = 'none';\n _this.pdfViewerBase.getElement('_annotation_signature-popup').style.width = '206px';\n _this.saveSignatureCount++;\n }\n }\n }\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('HandwrittenSignatureDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickSignature.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n if (args.item.text === 'ADD INITIAL') {\n _this.saveInitialCount = 0;\n args.element.innerHTML = '';\n for (var collection = _this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (_this.saveInitialCount < _this.pdfViewerBase.signatureModule.getSaveLimit(_this.pdfViewer.handWrittenSignatureSettings.saveInitialLimit)) {\n // eslint-disable-next-line\n var signatureCollection = _this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n // eslint-disable-next-line\n var collectionKey = signatureCollection.image[0].imageData;\n var signatureID = signatureCollection.image[0].id.split('_')[1];\n if (signatureCollection.isInitial && collectionKey !== '') {\n var signatureContainer = createElement('div');\n signatureContainer.id = 's' + signatureID;\n signatureContainer.style.display = 'block';\n signatureContainer.style.paddingBottom = '10px';\n var signatureSpan = createElement('span');\n signatureSpan.id = 'sign_border_' + signatureID;\n signatureSpan.classList.add('e-pv-align-border');\n var signatureImage = void 0;\n if (signatureCollection.image[0].signatureType === 'SignatureText') {\n signatureImage = createElement('div');\n signatureImage.classList.add('e-pv-align-border-div');\n signatureImage.innerText = collectionKey;\n signatureImage.style.fontFamily = signatureCollection.image[0].fontFamily;\n signatureImage.style.fontSize = '15px';\n signatureImage.style.display = 'inline-flex';\n signatureImage.style.alignItems = 'center';\n signatureImage.style.position = 'relative';\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.style.width = '80px';\n signatureImage.style.height = '53px';\n signatureImage.style.overflow = 'hidden';\n signatureImage.style.textOverflow = 'ellipsis';\n signatureImage.style.paddingLeft = '11px';\n }\n else {\n signatureImage = createElement('img');\n signatureImage.id = 'sign_' + signatureID;\n signatureImage.src = collectionKey;\n signatureImage.width = 80;\n signatureImage.height = 32;\n signatureImage.classList.add('e-pv-signatureimage');\n signatureImage.style.paddingLeft = '20px';\n signatureImage.style.paddingRight = '18px';\n signatureImage.style.paddingTop = '12px';\n signatureImage.style.paddingBottom = '12px';\n signatureImage.style.boxSizing = 'content-box';\n signatureImage.setAttribute('alt', 'Saved Initial');\n }\n signatureImage.addEventListener('mouseover', _this.hoverSignatureImage.bind(_this));\n signatureImage.addEventListener('mouseleave', _this.leaveSignatureImage.bind(_this));\n signatureImage.width = 80;\n signatureImage.height = 32;\n var signatureDeleteSpan = createElement('span');\n signatureDeleteSpan.id = 'delete_' + signatureID;\n signatureDeleteSpan.classList.add('e-pv-delete');\n signatureDeleteSpan.classList.add('e-pv-align');\n signatureSpan.append(signatureImage);\n signatureSpan.append(signatureDeleteSpan);\n signatureContainer.append(signatureSpan);\n args.element.appendChild(signatureContainer);\n // eslint-disable-next-line max-len\n args.element.style.pointerEvents = 'auto';\n args.element.style.background = 'none';\n _this.pdfViewerBase.getElement('_annotation_signature-popup').style.width = '206px';\n _this.saveInitialCount++;\n }\n }\n }\n _this.isSignatureIteam = false;\n var addInitialSpan = createElement('button');\n addInitialSpan.classList.add(\"e-control\", \"e-btn\", \"e-lib\", \"e-outline\", \"e-primary\");\n addInitialSpan.textContent = _this.pdfViewer.localeObj.getConstant('HandwrittenInitialDialogHeaderText');\n _this.pdfViewer.locale === 'en-US' ? addInitialSpan.style.width = \"130px\" : addInitialSpan.style.width = \"auto\";\n addInitialSpan.style.height = \"36px\";\n addInitialSpan.addEventListener('click', _this.clickInitial.bind(_this));\n args.element.appendChild(addInitialSpan);\n args.element.addEventListener('mouseover', _this.hoverInitialBtn.bind(_this));\n args.element.style.width = '206px';\n args.element.style.display = 'flex';\n args.element.style.flexDirection = 'column';\n args.element.style.height = 'auto';\n args.element.style.alignItems = 'center';\n args.element.setAttribute('role', 'menuitem');\n }\n },\n select: function (args) {\n _this.pdfViewer.clearSelection(_this.pdfViewerBase.currentPageNumber - 1);\n }\n };\n var drpDownBtn = new DropDownButton(saveOptions);\n if (this.pdfViewer.enableRtl) {\n drpDownBtn.enableRtl = this.pdfViewer.enableRtl;\n }\n drpDownBtn.appendTo(this.handWrittenSignatureItem);\n };\n AnnotationToolbar.prototype.updateSignatureCount = function () {\n this.openSignaturePopup = false;\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection;\n for (var collection = 0; collection < signatureCollection.length; collection++) {\n // eslint-disable-next-line\n var colletionList = signatureCollection[collection];\n if (colletionList.image[0].imageData === '') {\n \n }\n }\n };\n AnnotationToolbar.prototype.openSignature = function () {\n this.saveInitialCount = 0;\n this.saveSignatureCount = 0;\n for (var collection = this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (this.saveSignatureCount < this.pdfViewerBase.signatureModule.getSaveLimit(this.pdfViewer.handWrittenSignatureSettings.saveSignatureLimit)) {\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n if (signatureCollection.image[0].imageData !== '') {\n if (!signatureCollection.isInitial) {\n this.saveSignatureCount++;\n // eslint-disable-next-line\n var addedSignature = document.getElementById('sign_border_' + signatureCollection.image[0].id.split('_')[1] + '');\n // eslint-disable-next-line\n var deleteSignature = document.getElementById('delete_' + signatureCollection.image[0].id.split('_')[1] + '');\n deleteSignature.style.backgroundClip = 'content-box';\n addedSignature.addEventListener('click', this.renderAddedSignature.bind(this));\n deleteSignature.addEventListener('click', this.deleteSavedSign.bind(this));\n deleteSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n deleteSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n }\n }\n }\n }\n for (var collection = this.pdfViewerBase.signatureModule.signaturecollection.length; collection > 0; collection--) {\n if (this.saveInitialCount < this.pdfViewerBase.signatureModule.getSaveLimit(this.pdfViewer.handWrittenSignatureSettings.saveInitialLimit)) {\n // eslint-disable-next-line\n var signatureCollection = this.pdfViewerBase.signatureModule.signaturecollection[collection - 1];\n if (signatureCollection.image[0].imageData !== '') {\n if (signatureCollection.isInitial) {\n this.saveInitialCount++;\n // eslint-disable-next-line\n var addedSignature = document.getElementById('sign_border_' + signatureCollection.image[0].id.split('_')[1] + '');\n // eslint-disable-next-line\n var deleteSignature = document.getElementById('delete_' + signatureCollection.image[0].id.split('_')[1] + '');\n deleteSignature.style.backgroundClip = 'content-box';\n addedSignature.addEventListener('click', this.renderAddedSignature.bind(this));\n deleteSignature.addEventListener('click', this.deleteSavedSign.bind(this));\n deleteSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n deleteSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseover', this.hoverSignatureDelete.bind(this));\n addedSignature.addEventListener('mouseleave', this.leaveSignatureDelete.bind(this));\n }\n }\n }\n }\n };\n AnnotationToolbar.prototype.hoverSignatureDelete = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.add('e-pv-signaturehover');\n eventTarget.style.cursor = 'pointer';\n }\n };\n AnnotationToolbar.prototype.hoverInitialBtn = function (event) {\n var eventTarget = event.target;\n var currentFieldID = '';\n if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.userAgent.indexOf('Trident') !== -1) {\n currentFieldID = eventTarget.id;\n }\n else {\n currentFieldID = isNullOrUndefined(event.path) ? event.composedPath()[0].id : event.path[0].id;\n }\n if (currentFieldID !== 'sign_' + currentFieldID.split(\"_\")[1] && currentFieldID !== 'delete_' + currentFieldID.split(\"_\")[1]) {\n var liElement = document.getElementById(eventTarget.id);\n if (isNullOrUndefined(liElement)) {\n liElement = document.getElementById(eventTarget.parentElement.id);\n }\n if (liElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.style.background = 'transparent';\n liElement.style.cursor = 'default';\n }\n else if (liElement.parentElement != null && (eventTarget.id !== 'sign_' + eventTarget.id.split('_')[1] || eventTarget.id !== 'sign_border_' + eventTarget.id.split('_')[2])) {\n liElement.parentElement.style.background = 'transparent';\n liElement.parentElement.style.cursor = 'default';\n }\n }\n };\n AnnotationToolbar.prototype.hoverSignatureImage = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.add('e-pv-signaturehover');\n eventTarget.classList.remove('e-pv-signatureimage');\n eventTarget.style.cursor = 'pointer';\n }\n };\n AnnotationToolbar.prototype.leaveSignatureDelete = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.remove('e-pv-signaturehover');\n if (eventTarget.children[0] && eventTarget.children[0].tagName === 'IMG') {\n eventTarget.children[0].classList.remove('e-pv-signaturehover');\n }\n eventTarget.style.cursor = 'default';\n }\n };\n AnnotationToolbar.prototype.clickSignature = function () {\n this.pdfViewerBase.isInitialField = false;\n this.addSignature();\n };\n AnnotationToolbar.prototype.clickInitial = function () {\n this.pdfViewerBase.isInitialField = true;\n this.addSignature();\n };\n AnnotationToolbar.prototype.leaveSignatureImage = function () {\n var eventTarget = event.target;\n if (eventTarget.id === 'sign_' + eventTarget.id.split('_')[1] || eventTarget.classList.contains('e-pv-delete')) {\n eventTarget.classList.remove('e-pv-signaturehover');\n if (eventTarget.tagName === 'IMG')\n eventTarget.classList.add('e-pv-signatureimage');\n if (eventTarget.children[0] && eventTarget.children[0].tagName === 'IMG') {\n eventTarget.children[0].classList.remove('e-pv-signaturehover');\n eventTarget.children[0].classList.add('e-pv-signatureimage');\n }\n eventTarget.style.cursor = 'default';\n }\n };\n AnnotationToolbar.prototype.addSignature = function () {\n this.deselectAllItems();\n this.showSignaturepanel();\n };\n AnnotationToolbar.prototype.renderAddedSignature = function () {\n this.pdfViewerBase.isAddedSignClicked = true;\n this.isSavedSignatureClicked = true;\n this.pdfViewerBase.signatureModule.RenderSavedSignature();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.deleteSavedSign = function (event) {\n event.stopPropagation();\n // eslint-disable-next-line\n var signaturecollection = this.pdfViewerBase.signatureModule.signaturecollection;\n for (var collection = signaturecollection.length; collection > 0; collection--) {\n if (event.target.parentElement.children[0].id === 'sign_' + signaturecollection[collection - 1].image[0].id.split('_')[1]) {\n // eslint-disable-next-line\n var RemoveSignature = signaturecollection[collection - 1];\n RemoveSignature.image[0].imageData = '';\n this.pdfViewerBase.signatureModule.signaturecollection.splice(collection - 1, 1);\n break;\n }\n }\n event.target.parentElement.remove();\n };\n AnnotationToolbar.prototype.getTemplate = function (elementName, id, className) {\n var element = createElement(elementName, { id: this.pdfViewer.element.id + id });\n if (className) {\n element.className = className;\n }\n return element.outerHTML;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createStampContainer = function () {\n var _this = this;\n this.stampElement = this.pdfViewerBase.getElement('_annotation_stamp');\n // eslint-disable-next-line max-len\n this.primaryToolbar.createTooltip(this.pdfViewerBase.getElement('_annotation_stamp'), this.pdfViewer.localeObj.getConstant('Add Stamp'));\n var contextMenuElement = createElement('ul', { id: this.pdfViewer.element.id + 'contextMenuElement' });\n this.pdfViewerBase.getElement('_annotation_stamp').appendChild(contextMenuElement);\n var items = [];\n if (this.pdfViewer.stampSettings.dynamicStamps && this.pdfViewer.stampSettings.dynamicStamps.length > 0) {\n var dynamicStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Dynamic'), label: 'Dynamic', items: dynamicStamps_1 });\n this.pdfViewer.stampSettings.dynamicStamps.forEach(function (stampItem, index) {\n var name = DynamicStampItem[stampItem];\n switch (name) {\n case 'NotApproved':\n name = 'Not Approved';\n break;\n }\n dynamicStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.stampSettings.signStamps && this.pdfViewer.stampSettings.signStamps.length > 0) {\n var signStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Sign Here'), label: 'Sign Here', items: signStamps_1 });\n this.pdfViewer.stampSettings.signStamps.forEach(function (stampItem, index) {\n var name = SignStampItem[stampItem];\n switch (name) {\n case 'InitialHere':\n name = 'Initial Here';\n break;\n case 'SignHere':\n name = 'Sign Here';\n break;\n }\n signStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.stampSettings.standardBusinessStamps && this.pdfViewer.stampSettings.standardBusinessStamps.length > 0) {\n var standardsBusinessStamps_1 = [];\n items.push({ text: this.pdfViewer.localeObj.getConstant('Standard Business'), label: 'Standard Business', items: standardsBusinessStamps_1 });\n this.pdfViewer.stampSettings.standardBusinessStamps.forEach(function (stampItem, index) {\n var name = StandardBusinessStampItem[stampItem];\n switch (name) {\n case 'NotApproved':\n name = 'Not Approved';\n break;\n case 'ForPublicRelease':\n name = 'For Public Release';\n break;\n case 'NotForPublicRelease':\n name = 'Not For Public Release';\n break;\n case 'ForComment':\n name = 'For Comment';\n break;\n case 'PreliminaryResults':\n name = 'Preliminary Results';\n break;\n case 'InformationOnly':\n name = 'Information Only';\n break;\n }\n standardsBusinessStamps_1.push({ text: _this.pdfViewer.localeObj.getConstant(name), label: name });\n });\n }\n if (this.pdfViewer.customStampSettings.enableCustomStamp && !Browser.isDevice) {\n if (items.length > 0) {\n items.push({ separator: true });\n }\n items.push({ text: this.pdfViewer.localeObj.getConstant('Custom Stamp'), label: 'Custom Stamp', items: [] });\n }\n this.stampMenu = [\n {\n iconCss: 'e-pv-stamp-icon e-pv-icon',\n items: items\n }\n ];\n var menuOptions = {\n items: this.stampMenu,\n cssClass: 'e-custom-scroll',\n showItemOnClick: true,\n enableScrolling: true,\n beforeOpen: function (args) {\n _this.resetFreeTextAnnot();\n if (args.parentItem.text === '' && _this.pdfViewer.customStampSettings.isAddToMenu && args.items.length > 0) {\n // eslint-disable-next-line\n var currentElements = null;\n for (var i = 0; i < args.items.length; i++) {\n if (args.items[i].text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n args.items[i].items = [];\n currentElements = args.items[i];\n break;\n }\n }\n // eslint-disable-next-line\n var elements = _this.pdfViewerBase.customStampCollection;\n // eslint-disable-next-line\n var stampElements = _this.pdfViewer.customStampSettings.customStamps;\n if (elements.length === 0 && stampElements && stampElements.length > 0) {\n for (var n = 0; n < stampElements.length; n++) {\n // eslint-disable-next-line max-len\n elements.push({ customStampName: stampElements[n].customStampName, customStampImageSource: stampElements[n].customStampImageSource });\n }\n }\n for (var m = 0; m < elements.length; m++) {\n if (currentElements != null) {\n currentElements.items.push({ text: elements[m].customStampName });\n for (var i = 0; i < args.items.length; i++) {\n if (args.items[i].text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n var liElem = args.element.children[i];\n if (liElem && !liElem.childElementCount) {\n var span = document.createElement('span');\n span.className = 'e-icons e-caret e-menu-caret-icon';\n liElem.appendChild(span);\n liElem.setAttribute('aria-haspopup', 'true');\n liElem.setAttribute('aria-expanded', 'false');\n }\n }\n }\n }\n }\n }\n if (args.parentItem.text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n // eslint-disable-next-line\n var stampElements = _this.pdfViewer.customStampSettings.customStamps;\n if (stampElements && stampElements.length > 10) {\n closest(args.element, '.e-menu-wrapper').style.height = '350px';\n }\n }\n _this.stampParentID = args.parentItem.text;\n _this.menuItems.showItemOnClick = false;\n },\n beforeClose: function (args) {\n // eslint-disable-next-line max-len\n if ((args.parentItem && args.parentItem.text !== _this.pdfViewer.localeObj.getConstant('Custom Stamp') && args.parentItem.text !== 'Standard Business' && args.parentItem.text !== 'Dynamic' && args.parentItem.text !== 'Sign Here') || !args.parentItem) {\n _this.menuItems.showItemOnClick = true;\n }\n },\n select: function (args) {\n _this.pdfViewerBase.isAlreadyAdded = false;\n if (args.item.text === _this.pdfViewer.localeObj.getConstant('Custom Stamp')) {\n _this.updateInteractionTools();\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n // eslint-disable-next-line\n var stampImage = document.getElementById(_this.pdfViewer.element.id + '_stampElement');\n if (stampImage) {\n stampImage.click();\n }\n _this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n // eslint-disable-next-line max-len\n }\n else if (_this.stampParentID === _this.pdfViewer.localeObj.getConstant('Custom Stamp') && args.item.text !== '') {\n // eslint-disable-next-line\n var elements = _this.pdfViewerBase.customStampCollection;\n for (var n = 0; n < elements.length; n++) {\n if (elements[n].customStampName === args.item.text) {\n _this.pdfViewer.annotationModule.stampAnnotationModule.customStampName = args.item.text;\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n _this.pdfViewerBase.stampAdded = true;\n _this.pdfViewerBase.isAlreadyAdded = true;\n // eslint-disable-next-line max-len\n _this.pdfViewer.annotationModule.stampAnnotationModule.createCustomStampAnnotation(elements[n].customStampImageSource);\n _this.pdfViewerBase.stampAdded = false;\n }\n }\n // eslint-disable-next-line max-len\n }\n else if (args.item.text !== _this.pdfViewer.localeObj.getConstant('Dynamic') && args.item.text !== '' && args.item.text !== 'Standard Business' && (_this.stampParentID === 'Sign Here' || args.item.text !== 'Sign Here')) {\n _this.updateInteractionTools();\n _this.checkStampAnnotations();\n _this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n _this.pdfViewerBase.stampAdded = true;\n _this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n if (_this.stampParentID === _this.pdfViewer.localeObj.getConstant('Dynamic')) {\n _this.pdfViewerBase.isDynamicStamp = true;\n _this.pdfViewer.annotationModule.stampAnnotationModule.retrieveDynamicStampAnnotation(args.item.label);\n }\n else {\n _this.pdfViewerBase.isDynamicStamp = false;\n _this.pdfViewer.annotationModule.stampAnnotationModule.retrievestampAnnotation(args.item.label);\n }\n if (Browser.isDevice) {\n _this.stampToolMobileForMobile(_this.pdfViewer.element.id + '_annotation_stamp');\n }\n }\n }\n };\n this.menuItems = new Menu(menuOptions, '#' + this.pdfViewer.element.id + 'contextMenuElement');\n contextMenuElement.parentElement.classList.add('e-pv-stamp');\n if (this.pdfViewer.enableRtl) {\n this.menuItems.enableRtl = true;\n }\n return contextMenuElement;\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.createCustomStampElement = function () {\n // eslint-disable-next-line\n var stampImage = createElement('input', { id: this.pdfViewer.element.id + '_stampElement', attrs: { 'type': 'file' } });\n stampImage.setAttribute('accept', '.jpg,.jpeg,.png');\n stampImage.style.position = 'absolute';\n stampImage.style.left = '0px';\n stampImage.style.top = '0px';\n stampImage.style.visibility = 'hidden';\n document.body.appendChild(stampImage);\n stampImage.addEventListener('change', this.addStampImage);\n };\n AnnotationToolbar.prototype.checkStampAnnotations = function () {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation.stampAnnotationModule.isStampAddMode && this.pdfViewer.selectedItems && this.pdfViewer.selectedItems.annotations) {\n for (var i = 0; i < this.pdfViewer.selectedItems.annotations.length; i++) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[i];\n // eslint-disable-next-line\n if (annotation && !annotation.annotName && !annotation.author && (annotation.shapeAnnotationType !== 'Shape' || annotation.shapeAnnotationType !== 'Image')) {\n this.pdfViewer.remove(annotation);\n this.pdfViewer.annotation.renderAnnotations(annotation.pageIndex, null, null, null);\n this.pdfViewer.clearSelection(annotation.pageIndex);\n }\n }\n }\n };\n AnnotationToolbar.prototype.createDropDowns = function (isPath) {\n var _this = this;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.shapeElement = this.pdfViewerBase.getElement('_annotation_shapes');\n var shapeToolbar = this.createShapeOptions(this.shapeElement.id, true);\n // eslint-disable-next-line max-len\n this.shapeDropDown = this.createDropDownButton(this.shapeElement, 'e-pv-annotation-shape-icon', shapeToolbar.element, this.pdfViewer.localeObj.getConstant('Add Shapes'));\n this.calibrateElement = this.pdfViewerBase.getElement('_annotation_calibrate');\n var calibrateToolbar = this.createShapeOptions(this.calibrateElement.id, false);\n // eslint-disable-next-line max-len\n this.calibrateDropDown = this.createDropDownButton(this.calibrateElement, 'e-pv-annotation-calibrate-icon', calibrateToolbar.element, this.pdfViewer.localeObj.getConstant('Calibrate'));\n }\n if (!isPath) {\n this.colorDropDownElement = this.pdfViewerBase.getElement('_annotation_color');\n this.colorPalette = this.createColorPicker(this.colorDropDownElement.id);\n this.colorPalette.change = this.onColorPickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.colorDropDown = this.createDropDownButton(this.colorDropDownElement, 'e-pv-annotation-color-icon', this.colorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Color edit'));\n this.colorDropDown.beforeOpen = this.colorDropDownBeforeOpen.bind(this);\n this.colorDropDown.open = this.colorDropDownOpen.bind(this);\n this.pdfViewerBase.getElement('_annotation_color-popup').addEventListener('click', this.onColorPickerCancelClick.bind(this));\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.strokeDropDownElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.strokeColorPicker = this.createColorPicker(this.strokeDropDownElement.id);\n this.strokeColorPicker.change = this.onStrokePickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(this.strokeDropDownElement, 'e-pv-annotation-stroke-icon', this.strokeColorPicker.element.parentElement, this.pdfViewer.localeObj.getConstant('Stroke edit'));\n this.strokeDropDown.beforeOpen = this.strokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = this.strokeDropDownOpen.bind(this);\n this.pdfViewerBase.getElement('_annotation_stroke-popup').addEventListener('click', this.onStrokePickerCancelClick.bind(this));\n this.thicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n var thicknessContainer = this.createThicknessSlider(this.thicknessElement.id);\n // eslint-disable-next-line max-len\n this.thicknessDropDown = this.createDropDownButton(this.thicknessElement, 'e-pv-annotation-thickness-icon', thicknessContainer, this.pdfViewer.localeObj.getConstant('Change thickness'));\n this.thicknessDropDown.beforeOpen = this.thicknessDropDownBeforeOpen.bind(this);\n this.thicknessSlider.change = this.thicknessChange.bind(this);\n this.thicknessSlider.changed = this.thicknessChange.bind(this);\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n }\n if (!isPath) {\n this.opacityDropDownElement = this.pdfViewerBase.getElement('_annotation_opacity');\n var sliderContainer = this.createSlider(this.opacityDropDownElement.id);\n // eslint-disable-next-line max-len\n this.opacityDropDown = this.createDropDownButton(this.opacityDropDownElement, 'e-pv-annotation-opacity-icon', sliderContainer, this.pdfViewer.localeObj.getConstant('Opacity edit'));\n this.opacityDropDown.beforeOpen = this.opacityDropDownBeforeOpen.bind(this);\n this.opacitySlider.change = this.opacityChange.bind(this);\n this.opacitySlider.changed = this.opacityChange.bind(this);\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.fontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.createDropDownListForFamily(this.fontFamilyElement);\n //this.fontFamilyElement.style.textAlign = 'left';\n this.fontFamilyElement.addEventListener('change', function () {\n _this.onFontFamilyChange.bind(_this);\n });\n this.fontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.createDropDownListForSize(this.fontSizeElement);\n this.fontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.fontColorPalette = this.createColorPicker(this.fontColorElement.id);\n this.fontColorPalette.change = this.onFontColorChange.bind(this);\n // eslint-disable-next-line max-len\n this.fontColorDropDown = this.createDropDownButton(this.fontColorElement, 'e-pv-annotation-textcolor-icon', this.fontColorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Font color'));\n this.textAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.alignmentToolbar = this.createShapeOptions(this.textAlignElement.id, undefined, true);\n // eslint-disable-next-line max-len\n this.textAlignDropDown = this.createDropDownButton(this.textAlignElement, 'e-pv-annotation-textalign-icon', this.alignmentToolbar.element, this.pdfViewer.localeObj.getConstant('Text Align'));\n this.textAlignDropDown.beforeOpen = this.textAlignDropDownBeforeOpen.bind(this);\n this.textPropElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.propertiesToolbar = this.createShapeOptions(this.textPropElement.id, undefined, false, true);\n // eslint-disable-next-line max-len\n this.textPropertiesDropDown = this.createPropDropDownButton(this.textPropElement, 'e-pv-annotation-textprop-icon', this.propertiesToolbar.element, this.pdfViewer.localeObj.getConstant('Text Properties'));\n this.textPropertiesDropDown.beforeOpen = this.textPropertiesDropDownBeforeOpen.bind(this);\n }\n };\n AnnotationToolbar.prototype.mobileColorpicker = function (id) {\n var _this = this;\n this.opacityDropDownElement = this.pdfViewerBase.getElement('_annotation_opacity');\n var sliderContainer = this.createSlider(this.opacityDropDownElement.id);\n // eslint-disable-next-line max-len\n this.opacityDropDown = this.createDropDownButton(this.opacityDropDownElement, 'e-pv-annotation-opacity-icon', sliderContainer, this.pdfViewer.localeObj.getConstant('Opacity edit'));\n this.opacityDropDown.beforeOpen = this.opacityDropDownBeforeOpen.bind(this);\n this.opacitySlider.change = this.opacityChange.bind(this);\n this.opacitySlider.changed = this.opacityChange.bind(this);\n this.opacityDropDown.open = this.opacityDropDownOpen.bind(this);\n if (id === this.pdfViewer.element.id + '_annotation_shapes') {\n id = this.pdfViewer.element.id + '_annotation_shapesIcon';\n }\n else if (id === this.pdfViewer.element.id + '_annotation_calibrate') {\n id = this.pdfViewer.element.id + '_annotation_calibrateIcon';\n }\n else if (id === this.pdfViewer.element.id + '_highlight') {\n id = this.pdfViewer.element.id + '_highlightIcon';\n }\n else if (id === this.pdfViewer.element.id + '_underline') {\n id = this.pdfViewer.element.id + '_underlineIcon';\n }\n else if (id === this.pdfViewer.element.id + '_strikethrough') {\n id = this.pdfViewer.element.id + '_strikethroughIcon';\n }\n // eslint-disable-next-line max-len\n if (id === this.pdfViewer.element.id + '_annotation_shapesIcon' || id === this.pdfViewer.element.id + '_annotation_calibrateIcon' || id === this.pdfViewer.element.id + '_annotation_freeTextEdit' ||\n // eslint-disable-next-line max-len\n id === this.pdfViewer.element.id + '_highlightIcon' || id === this.pdfViewer.element.id + '_underlineIcon' || id === this.pdfViewer.element.id + '_strikethroughIcon' || id === this.pdfViewer.element.id + '_annotation_inkIcon' || id === this.pdfViewer.element.id + '_annotation_handwrittenSign') {\n if (id !== this.pdfViewer.element.id + '_annotation_handwrittenSign' && id !== this.pdfViewer.element.id + '_annotation_inkIcon') {\n this.colorDropDownElement = this.pdfViewerBase.getElement('_annotation_color');\n this.colorPalette = this.createColorPicker(this.colorDropDownElement.id);\n this.colorPalette.change = this.onColorPickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.colorDropDown = this.createDropDownButton(this.colorDropDownElement, 'e-pv-annotation-color-icon', this.colorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Color edit'));\n this.colorDropDown.beforeOpen = this.colorDropDownBeforeOpen.bind(this);\n this.colorDropDown.open = this.colorDropDownOpen.bind(this);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_color-popup').addEventListener('click', this.onColorPickerCancelClick.bind(this));\n }\n if (id === this.pdfViewer.element.id + '_annotation_freeTextEdit') {\n this.fontFamilyElement = this.pdfViewerBase.getElement('_annotation_fontname');\n this.createDropDownListForFamily(this.fontFamilyElement);\n this.fontFamilyElement.style.textAlign = 'left';\n this.fontFamilyElement.addEventListener('change', function () { _this.onFontFamilyChange.bind(_this); });\n this.fontSizeElement = this.pdfViewerBase.getElement('_annotation_fontsize');\n this.createDropDownListForSize(this.fontSizeElement);\n this.fontColorElement = this.pdfViewerBase.getElement('_annotation_textcolor');\n this.fontColorPalette = this.createColorPicker(this.fontColorElement.id);\n this.fontColorPalette.change = this.onFontColorChange.bind(this);\n // eslint-disable-next-line max-len\n this.fontColorDropDown = this.createDropDownButton(this.fontColorElement, 'e-pv-annotation-textcolor-icon', this.fontColorPalette.element.parentElement, this.pdfViewer.localeObj.getConstant('Font color'));\n this.textAlignElement = this.pdfViewerBase.getElement('_annotation_textalign');\n this.alignmentToolbar = this.createShapeOptions(this.textAlignElement.id, undefined, true);\n // eslint-disable-next-line max-len\n this.textAlignDropDown = this.createDropDownButton(this.textAlignElement, 'e-pv-annotation-textalign-icon', this.alignmentToolbar.element, this.pdfViewer.localeObj.getConstant('Text Align'));\n this.textAlignDropDown.beforeOpen = this.textAlignDropDownBeforeOpen.bind(this);\n this.textPropElement = this.pdfViewerBase.getElement('_annotation_textproperties');\n this.propertiesToolbar = this.createShapeOptions(this.textPropElement.id, undefined, false, true);\n // eslint-disable-next-line max-len\n this.textPropertiesDropDown = this.createPropDropDownButton(this.textPropElement, 'e-pv-annotation-textprop-icon', this.propertiesToolbar.element, this.pdfViewer.localeObj.getConstant('Text Properties'));\n this.textPropertiesDropDown.beforeOpen = this.textPropertiesDropDownBeforeOpen.bind(this);\n }\n // eslint-disable-next-line max-len\n if (id === this.pdfViewer.element.id + '_annotation_shapesIcon' || id === this.pdfViewer.element.id + '_annotation_calibrateIcon' || id === this.pdfViewer.element.id + '_annotation_freeTextEdit' ||\n id === this.pdfViewer.element.id + '_annotation_inkIcon' || id === this.pdfViewer.element.id + '_annotation_handwrittenSign') {\n this.thicknessElement = this.pdfViewerBase.getElement('_annotation_thickness');\n var thicknessContainer = this.createThicknessSlider(this.thicknessElement.id);\n // eslint-disable-next-line max-len\n this.thicknessDropDown = this.createDropDownButton(this.thicknessElement, 'e-pv-annotation-thickness-icon', thicknessContainer, this.pdfViewer.localeObj.getConstant('Change thickness'));\n this.thicknessDropDown.beforeOpen = this.thicknessDropDownBeforeOpen.bind(this);\n this.thicknessSlider.change = this.thicknessChange.bind(this);\n this.thicknessSlider.changed = this.thicknessChange.bind(this);\n this.thicknessDropDown.open = this.thicknessDropDownOpen.bind(this);\n this.strokeDropDownElement = this.pdfViewerBase.getElement('_annotation_stroke');\n this.strokeColorPicker = this.createColorPicker(this.strokeDropDownElement.id);\n this.strokeColorPicker.change = this.onStrokePickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(this.strokeDropDownElement, 'e-pv-annotation-stroke-icon', this.strokeColorPicker.element.parentElement, this.pdfViewer.localeObj.getConstant('Stroke edit'));\n this.strokeDropDown.beforeOpen = this.strokeDropDownBeforeOpen.bind(this);\n this.strokeDropDown.open = this.strokeDropDownOpen.bind(this);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.getElement('_annotation_stroke-popup').addEventListener('click', this.onStrokePickerCancelClick.bind(this));\n }\n }\n };\n AnnotationToolbar.prototype.opacityDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.left = '0px';\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight) + 'px';\n }\n else {\n this.calculateToolbarPosition(args);\n }\n };\n AnnotationToolbar.prototype.onColorPickerCancelClick = function (event) {\n if (event.target.classList.contains('e-cancel')) {\n this.colorDropDown.toggle();\n }\n };\n AnnotationToolbar.prototype.onStrokePickerCancelClick = function (event) {\n if (event.target.classList.contains('e-cancel')) {\n this.strokeDropDown.toggle();\n }\n };\n AnnotationToolbar.prototype.colorDropDownBeforeOpen = function (args) {\n this.colorPalette.noColor = false;\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.colorPalette.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.color;\n }\n else {\n this.setCurrentColorInPicker();\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.colorPalette.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill;\n this.colorPalette.noColor = true;\n }\n else {\n this.setCurrentColorInPicker();\n }\n this.colorPalette.refresh();\n this.updateColorInIcon(this.colorDropDownElement, this.colorPalette.value);\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.setCurrentColorInPicker = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor);\n break;\n case 'Underline':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor);\n break;\n case 'Strikethrough':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor);\n break;\n }\n }\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotationModule.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.lineFillColor);\n break;\n case 'Arrow':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.arrowFillColor);\n break;\n case 'Rectangle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.rectangleFillColor);\n break;\n case 'Circle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.circleFillColor);\n break;\n case 'Polygon':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.colorPalette, this.pdfViewer.annotationModule.shapeAnnotationModule.polygonFillColor);\n break;\n }\n }\n if (this.colorDropDownElement) {\n this.updateColorInIcon(this.colorDropDownElement, this.colorPalette.value);\n }\n }\n };\n AnnotationToolbar.prototype.colorDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight / 2) + 'px';\n }\n this.popupPosition(args, this.colorDropDownElement);\n this.colorPalette.refresh();\n };\n AnnotationToolbar.prototype.strokeDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.strokeColorPicker.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor;\n }\n else {\n this.setCurrentStrokeColorInPicker();\n }\n this.strokeColorPicker.refresh();\n this.updateColorInIcon(this.strokeDropDownElement, this.strokeColorPicker.value);\n this.updateInkannotationItems();\n };\n AnnotationToolbar.prototype.setCurrentStrokeColorInPicker = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotationModule.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.lineStrokeColor);\n break;\n case 'Arrow':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.arrowStrokeColor);\n break;\n case 'Rectangle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.rectangleStrokeColor);\n break;\n case 'Circle':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.circleStrokeColor);\n break;\n case 'Polygon':\n // eslint-disable-next-line max-len\n this.setColorInPicker(this.strokeColorPicker, this.pdfViewer.annotationModule.shapeAnnotationModule.polygonStrokeColor);\n break;\n }\n }\n }\n };\n AnnotationToolbar.prototype.strokeDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight / 2) + 'px';\n }\n this.popupPosition(args, this.strokeDropDownElement);\n this.strokeColorPicker.refresh();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontColorChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.pdfViewer.annotation.modifyFontColor(currentColor);\n }\n else {\n this.pdfViewer.freeTextSettings.fontColor = currentColor;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n if (isBlazor()) {\n this.fontColorElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-textcolor-container');\n this.updateColorInIcon(this.fontColorElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.fontColorElement, currentColor);\n this.fontColorDropDown.toggle();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontFamilyChange = function (args) {\n var currentValue;\n if (!isBlazor()) {\n currentValue = (args && args.fontFamily && args.fontFamily.value) ? args.fontFamily.value : '';\n }\n else {\n currentValue = args;\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyFontFamily(currentValue);\n }\n else {\n this.pdfViewer.freeTextSettings.fontFamily = currentValue;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onFontSizeChange = function (args, isInteracted) {\n var currentValue;\n if (!isBlazor()) {\n currentValue = (args && args.fontSize && args.fontSize.value) ? args.fontSize.value : '';\n }\n else {\n currentValue = args;\n }\n var fontSize = parseFloat(currentValue);\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyFontSize(fontSize, isInteracted);\n }\n else {\n this.pdfViewer.freeTextSettings.fontSize = fontSize;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n };\n AnnotationToolbar.prototype.textAlignDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.element.getElementsByTagName('button') && args.element.getElementsByTagName('button').length > 0) {\n // eslint-disable-next-line\n var dropDownOptions = args.element.getElementsByTagName('button');\n // eslint-disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n for (var n = 0; n < dropDownOptions.length; n++) {\n if (dropDownOptions[n]) {\n dropDownOptions[n].classList.remove('textprop-option-active');\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_left_align') && selectedAnnotation.textAlign === 'Left') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_right_align') && selectedAnnotation.textAlign === 'Right') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_center_align') && selectedAnnotation.textAlign === 'Center') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_justify_align') && selectedAnnotation.textAlign === 'Justify') {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n }\n }\n }\n }\n };\n AnnotationToolbar.prototype.textPropertiesDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.element.getElementsByTagName('button') && args.element.getElementsByTagName('button').length > 0) {\n // eslint-disable-next-line\n var dropDownOptions = args.element.getElementsByTagName('button');\n // eslint-disable-next-line\n var selectedAnnotation = this.pdfViewer.selectedItems.annotations[0];\n for (var n = 0; n < dropDownOptions.length; n++) {\n if (dropDownOptions[n]) {\n dropDownOptions[n].classList.remove('textprop-option-active');\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_bold') && selectedAnnotation.font.isBold) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_italic') && selectedAnnotation.font.isItalic) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_strikeout') && selectedAnnotation.font.isStrikeout) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n // eslint-disable-next-line max-len\n if (dropDownOptions[n].id === (this.pdfViewer.element.id + '_underline_textinput') && selectedAnnotation.font.isUnderline) {\n dropDownOptions[n].classList.add('textprop-option-active');\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onClickTextAlignment = function (args) {\n var currentValue;\n if (isBlazor()) {\n currentValue = args[0];\n }\n else {\n currentValue = (args && args.item && args.item.value) ? args.item.value : '';\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n this.pdfViewer.annotation.modifyTextAlignment(currentValue);\n }\n else {\n this.pdfViewer.freeTextSettings.textAlignment = args.item.value;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n this.updateTextAlignInIcon(currentValue);\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onClickTextProperties = function (args) {\n var currentValue;\n if (isBlazor()) {\n currentValue = args[0];\n }\n else {\n currentValue = (args && args.item && args.item.value) ? args.item.value : '';\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1 && currentValue) {\n var fontInfo = { isBold: undefined, isItalic: undefined, isStrikeout: undefined, isUnderline: undefined };\n if (currentValue === 'bold') {\n fontInfo.isBold = !(this.pdfViewer.selectedItems.annotations[0].font.isBold);\n }\n else if (currentValue === 'italic') {\n fontInfo.isItalic = !(this.pdfViewer.selectedItems.annotations[0].font.isItalic);\n }\n else if (currentValue === 'underline') {\n fontInfo.isUnderline = !(this.pdfViewer.selectedItems.annotations[0].font.isUnderline);\n }\n else if (currentValue === 'strikeout') {\n fontInfo.isStrikeout = !(this.pdfViewer.selectedItems.annotations[0].font.isStrikeout);\n }\n this.pdfViewer.annotation.modifyTextProperties(fontInfo, currentValue);\n }\n else {\n if (currentValue === 'bold') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 1;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'italic') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 2;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'underline') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 4;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough = false;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n else if (currentValue === 'strikeout') {\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough = false;\n }\n else {\n this.pdfViewer.freeTextSettings.fontStyle = 8;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline = false;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n }\n this.updateTextPropertySelection(currentValue);\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.opacityChange = function (args) {\n var opacityValue = 1;\n if (args && args.length === 1) {\n opacityValue = args[0];\n }\n else {\n opacityValue = args.value;\n }\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n if (!isBlazor()) {\n if (this.isCurrentAnnotationOpacitySet && args.name === 'changed') {\n this.isCurrentAnnotationOpacitySet = false;\n }\n else {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(args);\n }\n }\n else {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyOpacityProperty(null, opacityValue);\n }\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightOpacity = opacityValue / 100;\n break;\n case 'Underline':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineOpacity = opacityValue / 100;\n break;\n case 'Strikethrough':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughOpacity = opacityValue / 100;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line\n var currentAnnotations = this.pdfViewer.selectedItems.annotations[0];\n // eslint-disable-next-line max-len\n if (currentAnnotations != null && (currentAnnotations.shapeAnnotationType === 'Stamp' || currentAnnotations.shapeAnnotationType === 'Image')) {\n var clonedObject = cloneObject(currentAnnotations);\n var redoClonedObject = cloneObject(currentAnnotations);\n redoClonedObject.opacity = opacityValue / 100;\n this.pdfViewer.nodePropertyChange(currentAnnotations, { opacity: opacityValue / 100 });\n this.pdfViewer.annotation.triggerAnnotationPropChange(currentAnnotations, false, false, false, true);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.addAction(this.pdfViewer.selectedItems.annotations[0].pageIndex, null, this.pdfViewer.selectedItems.annotations[0], 'stampOpacity', '', clonedObject, redoClonedObject);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotation.stampAnnotationModule.updateSessionStorage(this.pdfViewer.selectedItems.annotations[0], null, 'opacity');\n }\n else {\n if (isBlazor()) {\n this.pdfViewer.annotation.modifyOpacity(opacityValue, true);\n }\n else {\n if (args.name === 'changed') {\n if (args.value !== args.previousValue) {\n this.pdfViewer.annotation.modifyOpacity(args);\n }\n }\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineOpacity = opacityValue / 100;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowOpacity = opacityValue / 100;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleOpacity = opacityValue / 100;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleOpacity = opacityValue / 100;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonOpacity = opacityValue / 100;\n break;\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.opacity = opacityValue / 100;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.opacity = opacityValue / 100;\n if (this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.opacity = opacityValue / 100;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n }\n if (!isBlazor()) {\n this.updateOpacityIndicator();\n }\n };\n AnnotationToolbar.prototype.opacityDropDownBeforeOpen = function (args) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.isCurrentAnnotationOpacitySet = true;\n // eslint-disable-next-line max-len\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.opacity * 100;\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightOpacity * 100;\n break;\n case 'Underline':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineOpacity * 100;\n break;\n case 'Strikethrough':\n this.opacitySlider.value = this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughOpacity * 100;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.opacitySlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.lineOpacity * 100;\n break;\n case 'Arrow':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.arrowOpacity * 100;\n break;\n case 'Rectangle':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.rectangleOpacity * 100;\n break;\n case 'Circle':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.circleOpacity * 100;\n break;\n case 'Polygon':\n this.opacitySlider.value = this.pdfViewer.annotation.shapeAnnotationModule.polygonOpacity * 100;\n break;\n }\n }\n }\n this.updateOpacityIndicator();\n this.updateInkannotationItems();\n };\n AnnotationToolbar.prototype.thicknessDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.thicknessSlider.value = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.lineThickness;\n break;\n case 'Arrow':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.arrowThickness;\n break;\n case 'Rectangle':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.rectangleThickness;\n break;\n case 'Circle':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.circleThickness;\n break;\n case 'Polygon':\n this.thicknessSlider.value = this.pdfViewer.annotation.shapeAnnotationModule.polygonThickness;\n break;\n }\n }\n }\n this.updateThicknessIndicator();\n this.updateInkannotationItems();\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.thicknessDropDownOpen = function (args) {\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n args.element.parentElement.style.left = '0px';\n args.element.parentElement.style.top = (this.pdfViewerBase.viewerContainer.clientHeight) + 'px';\n }\n else {\n this.calculateToolbarPosition(args);\n }\n };\n AnnotationToolbar.prototype.calculateToolbarPosition = function (args) {\n if (args.element && args.element.parentElement) {\n var leftValue = parseFloat(args.element.parentElement.style.left);\n var width = args.element.parentElement.offsetWidth;\n if ((leftValue + width) < (this.pdfViewer.element.offsetWidth + 10)) {\n args.element.parentElement.style.left = (leftValue - width) + 'px';\n }\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.thicknessChangeInBlazor = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n this.pdfViewer.annotation.modifyThickness(args[0]);\n }\n else {\n this.ShapeThickness(args[0]);\n }\n };\n AnnotationToolbar.prototype.thicknessChange = function (args) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (args.name === 'changed') {\n this.pdfViewer.annotation.modifyThickness(args.value);\n if (!isBlazor()) {\n this.updateThicknessIndicator();\n }\n var annotationModule = this.pdfViewer.annotation;\n var selectedItems = this.pdfViewer.selectedItems.annotations[0];\n if (annotationModule && annotationModule.inkAnnotationModule && selectedItems && selectedItems.shapeAnnotationType === \"Ink\") {\n this.pdfViewer.inkAnnotationSettings.thickness = args.value;\n }\n }\n }\n else {\n this.ShapeThickness(args.value);\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.ShapeThickness = function (args) {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineThickness = args;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowThickness = args;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleThickness = args;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleThickness = args;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonThickness = args;\n break;\n }\n // eslint-disable-next-line\n var annotationModule_1 = this.pdfViewer.annotation;\n if (annotationModule_1 && annotationModule_1.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.thickness = args.value;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.thickness = args.value;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.borderWidth = args.value;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.thickness = args;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.thickness = args;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.borderWidth = args;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n if (!isBlazor()) {\n this.updateThicknessIndicator();\n }\n };\n AnnotationToolbar.prototype.createDropDownButton = function (element, iconClass, target, tooltipText) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n this.primaryToolbar.createTooltip(element, tooltipText);\n return dropDownButton;\n };\n AnnotationToolbar.prototype.createShapeOptions = function (idString, isShape, isAlign, isTextProp) {\n var toolbarElement = createElement('div', { id: idString + '_target', className: 'e-pv-shapes-toolbar' });\n document.body.appendChild(toolbarElement);\n var toolbar;\n if (isAlign) {\n toolbar = new Toolbar({ items: this.textAlignmentToolbarItems(), overflowMode: 'MultiRow' }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterAlignmentToolbarCreation();\n }\n else if (isTextProp) {\n toolbar = new Toolbar({ items: this.textPropertiesToolbarItems(), overflowMode: 'MultiRow' }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterPropertiesToolbarCreation();\n }\n else {\n if (isShape) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line max-len\n toolbar = new Toolbar({ items: this.createShapeToolbarItems(), overflowMode: 'MultiRow', clicked: this.onShapeToolbarClicked.bind(this) }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterShapeToolbarCreation();\n }\n else {\n // eslint-disable-next-line max-len\n this.toolbarElement = createElement('div', { id: idString + '_target', className: 'e-pv-mobile-annotation-toolbar', styles: 'bottom: 0px; position: absolute; width: 100%; float: left' });\n this.pdfViewerBase.viewerMainContainer.appendChild(this.toolbarElement);\n // eslint-disable-next-line max-len\n toolbar = new Toolbar({ items: this.createShapeToolbarItemsForMobile(), overflowMode: 'Scrollable', clicked: this.onShapeToolbarClicked.bind(this) }, this.toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterShapeToolbarCreationForMobile();\n }\n }\n else {\n // eslint-disable-next-line max-len\n toolbar = new Toolbar({ items: this.createCalibrateToolbarItems(), overflowMode: 'MultiRow', clicked: this.onCalibrateToolbarClicked.bind(this) }, toolbarElement);\n toolbar.isStringTemplate = true;\n this.afterCalibrateToolbarCreation();\n }\n }\n return toolbar;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createPropertyToolbarForMobile = function (shapeType) {\n var _this = this;\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n var fontFamilyTemplate = this.getTemplate('input', '_annotation_fontname', 'e-pv-annotation-fontname-container');\n var fontSizeTemplate = this.getTemplate('input', '_annotation_fontsize', 'e-pv-annotation-fontsize-container');\n var textColorTemplate = this.getTemplate('span', '_annotation_textcolor', 'e-pv-annotation-textcolor-container');\n var alignmentTemplate = this.getTemplate('span', '_annotation_textalign', 'e-pv-annotation-textalign-container');\n // eslint-disable-next-line max-len\n var textPropertiesTemplate = this.getTemplate('span', '_annotation_textproperties', 'e-pv-annotation-textprop-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n if (shapeType === 'Polygon' || shapeType === 'Rectangle' || shapeType === 'Ellipse' || shapeType === 'Line' || shapeType === 'LineWidthArrowHead' || shapeType === 'Distance' || shapeType === 'Perimeter' || shapeType === 'Radius' || shapeType === 'FreeText') {\n if (shapeType === 'FreeText') {\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-freetext-icon e-pv-icon', className: 'e-pv-annotation-freetextedit-container' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: fontFamilyTemplate });\n items.push({ template: fontSizeTemplate });\n items.push({ template: textColorTemplate });\n items.push({ template: alignmentTemplate });\n items.push({ template: textPropertiesTemplate });\n }\n if (shapeType === 'Polygon') {\n if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Area') {\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Volume') {\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else {\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n }\n else if (shapeType === 'Rectangle') {\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Ellipse') {\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Line') {\n if (this.pdfViewer.selectedItems.annotations[0].measureType === 'Perimeter') {\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else {\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n }\n else if (shapeType === 'LineWidthArrowHead') {\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Distance') {\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Perimeter') {\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Radius') {\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n }\n else if (shapeType === 'Path' || shapeType === 'Ink' || shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText') {\n if (shapeType === 'Path' || shapeType === 'Ink') {\n items.push({ prefixIcon: 'e-pv-inkannotation-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'HandWrittenSignature' || shapeType === 'SignatureText') {\n items.push({ prefixIcon: 'e-pv-handwritten-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n }\n else if (shapeType === 'Underline' || shapeType === 'Highlight' || shapeType === 'Strikethrough') {\n if (shapeType === 'Highlight') {\n items.push({ prefixIcon: 'e-pv-highlight-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Underline') {\n items.push({ prefixIcon: 'e-pv-underline-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'Strikethrough') {\n items.push({ prefixIcon: 'e-pv-strikethrough-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: colorTemplate });\n }\n else if (shapeType === 'Stamp' || shapeType === 'Image') {\n items.push({ prefixIcon: 'e-pv-stamp-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n else if (shapeType === 'StickyNotes') {\n items.push({ prefixIcon: 'e-pv-comment-icon e-pv-icon' });\n items.push({ type: 'Separator', align: 'Left' });\n }\n items.push({ template: opacityTemplate });\n // eslint-disable-next-line max-len\n items.push({\n prefixIcon: 'e-pv-comment-panel-icon e-pv-icon', className: 'e-pv-comment-panel-icon-container', id: this.pdfViewer.element.id + '_annotation_commentPanel', align: 'Right', click: function (args) {\n _this.pdfViewer.annotationModule.showCommentsPanel();\n }\n });\n // eslint-disable-next-line max-len\n items.push({\n prefixIcon: 'e-pv-annotation-delete-icon e-pv-icon', className: 'e-pv-annotation-delete-container', id: this.pdfViewer.element.id + '_annotation_delete', align: 'Right', click: function (args) {\n _this.pdfViewer.annotationModule.deleteAnnotation();\n _this.propertyToolbar.destroy();\n _this.toolbarCreated = false;\n _this.createAnnotationToolbarForMobile();\n _this.adjustMobileViewer();\n }\n });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createStampToolbarItemsForMobile = function () {\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: opacityTemplate });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createShapeToolbarItemsForMobile = function () {\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_line', text: this.pdfViewer.localeObj.getConstant('Line Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_arrow', text: this.pdfViewer.localeObj.getConstant('Arrow Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_rectangle', text: this.pdfViewer.localeObj.getConstant('Rectangle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_circle', text: this.pdfViewer.localeObj.getConstant('Circle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_pentagon', text: this.pdfViewer.localeObj.getConstant('Pentagon Shape'), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n items.push({ template: opacityTemplate });\n return items;\n };\n // eslint:disable-next-line\n AnnotationToolbar.prototype.createCalibrateToolbarItemsForMobile = function () {\n var colorTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_color', 'e-pv-annotation-color-container');\n // eslint-disable-next-line max-len\n var strokeTemplate = this.pdfViewer.toolbarModule.annotationToolbarModule.getTemplate('span', '_annotation_stroke', 'e-pv-annotation-stroke-container');\n var thicknessTemplate = this.getTemplate('span', '_annotation_thickness', 'e-pv-annotation-thickness-container');\n var opacityTemplate = this.getTemplate('span', '_annotation_opacity', 'e-pv-annotation-opacity-container');\n // eslint:disable-next-line\n var items = [];\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-backward-icon e-pv-icon', tooltipText: this.pdfViewer.localeObj.getConstant('Go Back'), id: this.pdfViewer.element.id + '_backward', click: this.goBackToToolbar.bind(this) });\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_distance', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_perimeter', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_area', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_radius', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_volume', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n items.push({ type: 'Separator', align: 'Left' });\n items.push({ template: colorTemplate });\n items.push({ template: strokeTemplate });\n items.push({ template: thicknessTemplate });\n items.push({ template: opacityTemplate });\n return items;\n };\n AnnotationToolbar.prototype.handleShapeTool = function (type) {\n if (!isBlazor() && Browser.isDevice) {\n // eslint:disable-next-line\n var selectedItems = document.querySelectorAll('.e-pv-select');\n for (var i = 0; i < selectedItems.length; i++) {\n if (selectedItems[i].id !== type && selectedItems[i].id !== this.pdfViewer.element.id + '_annotation') {\n selectedItems[i].classList.remove('e-pv-select');\n }\n }\n }\n };\n AnnotationToolbar.prototype.createPropDropDownButton = function (element, iconClass, target, tooltipText) {\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target, cssClass: 'e-caret-hide' });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n this.primaryToolbar.createTooltip(element, tooltipText);\n return dropDownButton;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.textAlignmentToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-left-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_left_align', align: 'Left', value: 'Left', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-center-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_center_align', align: 'Left', value: 'Center', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-right-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_right_align', align: 'Left', value: 'Right', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-justfiy-align-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_justify_align', align: 'Left', value: 'Justify', click: this.onClickTextAlignment.bind(this) });\n // eslint-disable-next-line max-len\n return items;\n };\n AnnotationToolbar.prototype.afterAlignmentToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.alignLeftElement = this.primaryToolbar.addClassToolbarItem('_left_align', 'e-pv-left-align', this.pdfViewer.localeObj.getConstant('Align left'));\n this.alignRightElement = this.primaryToolbar.addClassToolbarItem('_right_align', 'e-pv-right-align', this.pdfViewer.localeObj.getConstant('Align right'));\n // eslint-disable-next-line max-len\n this.alignCenterElement = this.primaryToolbar.addClassToolbarItem('_center_align', 'e-pv-center-align', this.pdfViewer.localeObj.getConstant('Center'));\n this.alignJustifyElement = this.primaryToolbar.addClassToolbarItem('_justify_align', 'e-pv-justfiy-align', this.pdfViewer.localeObj.getConstant('Justify'));\n };\n AnnotationToolbar.prototype.afterPropertiesToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.boldElement = this.primaryToolbar.addClassToolbarItem('_bold', 'e-pv-bold', this.pdfViewer.localeObj.getConstant('Bold'));\n this.italicElement = this.primaryToolbar.addClassToolbarItem('_italic', 'e-pv-italic', this.pdfViewer.localeObj.getConstant('Italic'));\n // eslint-disable-next-line max-len\n this.fontStyleStrikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikeout', 'e-pv-strikeout', this.pdfViewer.localeObj.getConstant('Strikethroughs'));\n this.fontStyleUnderlineItem = this.primaryToolbar.addClassToolbarItem('_underline_textinput', 'e-pv-underlinetext', this.pdfViewer.localeObj.getConstant('Underlines'));\n };\n AnnotationToolbar.prototype.createDropDownListForSize = function (fontSelectElement) {\n // eslint-disable-next-line max-len\n var proxy = this;\n var fontSize = ['8px', '9px', '10px', '11px', '12px', '14px', '16px', '18px', '20px', '22px', '24px', '26px', '28px', '36px', '48px', '72px', '96px'];\n if (!this.pdfViewer.enableRtl) {\n this.fontSize = new ComboBox({\n dataSource: fontSize,\n cssClass: 'e-pv-prop-dropdown',\n allowCustom: true,\n showClearButton: false,\n width: '80px',\n popupWidth: '100px'\n });\n }\n else {\n this.fontSize = new ComboBox({\n dataSource: fontSize,\n cssClass: 'e-pv-prop-dropdown-rtl',\n allowCustom: true,\n showClearButton: false,\n width: '80px',\n popupWidth: '100px',\n enableRtl: true\n });\n }\n this.fontSize.value = '16px';\n this.fontSize.appendTo(fontSelectElement);\n this.primaryToolbar.createTooltip(fontSelectElement, this.pdfViewer.localeObj.getConstant('Font size'));\n this.fontSize.addEventListener('change', function (args) {\n var isUserInteracted = args.isInteracted;\n proxy.onFontSizeChange(proxy, isUserInteracted);\n });\n };\n AnnotationToolbar.prototype.createDropDownListForFamily = function (fontSelectElement) {\n var _this = this;\n var fontStyle = [{ FontName: 'Helvetica' },\n { FontName: 'Courier' }, { FontName: 'Symbol' }, { FontName: 'Times New Roman' }];\n if (!this.pdfViewer.enableRtl) {\n this.fontFamily = new ComboBox({\n dataSource: fontStyle,\n query: new Query().select(['FontName']),\n fields: { text: 'FontName', value: 'FontName' },\n cssClass: 'e-pv-prop-dropdown',\n itemTemplate: '${FontName}',\n allowCustom: true,\n showClearButton: false,\n width: '110px',\n popupWidth: '190px'\n });\n }\n else {\n this.fontFamily = new ComboBox({\n dataSource: fontStyle,\n query: new Query().select(['FontName']),\n fields: { text: 'FontName', value: 'FontName' },\n cssClass: 'e-pv-prop-dropdown-rtl',\n itemTemplate: '${FontName}',\n allowCustom: true,\n showClearButton: false,\n width: '110px',\n popupWidth: '190px',\n enableRtl: true\n });\n }\n this.fontFamily.isStringTemplate = true;\n this.fontFamily.value = 'Helvetica';\n this.fontFamily.appendTo(fontSelectElement);\n this.primaryToolbar.createTooltip(fontSelectElement, this.pdfViewer.localeObj.getConstant('Font family'));\n this.fontFamily.addEventListener('change', function () {\n _this.onFontFamilyChange(_this);\n });\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.textPropertiesToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-bold-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_bold', align: 'Left', value: 'bold', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-italic-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_italic', align: 'Left', value: 'italic', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-strikeout-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_strikeout', align: 'Left', value: 'strikeout', click: this.onClickTextProperties.bind(this) });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-underlinetext-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_underline_textinput', align: 'Left', value: 'underline', click: this.onClickTextProperties.bind(this) });\n return items;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createShapeToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-shape-line-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_line', text: this.pdfViewer.localeObj.getConstant('Line Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-arrow-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_arrow', text: this.pdfViewer.localeObj.getConstant('Arrow Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-rectangle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_rectangle', text: this.pdfViewer.localeObj.getConstant('Rectangle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-circle-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_circle', text: this.pdfViewer.localeObj.getConstant('Circle Shape'), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-shape-pentagon-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_shape_pentagon', text: this.pdfViewer.localeObj.getConstant('Pentagon Shape'), align: 'Left' });\n return items;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.createCalibrateToolbarItems = function () {\n // eslint-disable-next-line\n var items = [];\n items.push({ prefixIcon: 'e-pv-calibrate-distance-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_distance', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-perimeter-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_perimeter', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-area-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_area', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-radius-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_radius', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n // eslint-disable-next-line max-len\n items.push({ prefixIcon: 'e-pv-calibrate-volume-icon e-pv-icon', cssClass: '', id: this.pdfViewer.element.id + '_calibrate_volume', text: this.pdfViewer.localeObj.getConstant(''), align: 'Left' });\n return items;\n };\n AnnotationToolbar.prototype.onCalibrateToolbarClicked = function (args) {\n var elementId = this.pdfViewer.element.id;\n var measureModule = this.pdfViewer.annotation.measureAnnotationModule;\n this.deselectAllItems();\n this.resetFreeTextAnnot();\n if (Browser.isDevice && !isBlazor()) {\n // tslint:disable-next-line\n var element = args.originalEvent.target;\n this.pdfViewer.toolbarModule.selectItem(element.parentElement);\n }\n switch (args.originalEvent.target.id) {\n case elementId + '_calibrate_distance':\n case elementId + '_calibrate_distanceIcon':\n measureModule.setAnnotationType('Distance');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.distanceFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.distanceStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_distance');\n break;\n case elementId + '_calibrate_perimeter':\n case elementId + '_calibrate_perimeterIcon':\n measureModule.setAnnotationType('Perimeter');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.perimeterFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.perimeterStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_perimeter');\n break;\n case elementId + '_calibrate_area':\n case elementId + '_calibrate_areaIcon':\n measureModule.setAnnotationType('Area');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.areaFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.areaStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_area');\n break;\n case elementId + '_calibrate_radius':\n case elementId + '_calibrate_radiusIcon':\n measureModule.setAnnotationType('Radius');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.radiusFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.radiusStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_radius');\n break;\n case elementId + '_calibrate_volume':\n case elementId + '_calibrate_volumeIcon':\n measureModule.setAnnotationType('Volume');\n this.onShapeDrawSelection(false);\n this.updateColorInIcon(this.colorDropDownElement, measureModule.volumeFillColor);\n this.updateColorInIcon(this.strokeDropDownElement, measureModule.volumeStrokeColor);\n this.handleShapeTool(elementId + '_calibrate_volume');\n break;\n }\n };\n AnnotationToolbar.prototype.onShapeDrawSelection = function (isShape) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (!Browser.isDevice) {\n this.updateInteractionTools();\n this.enableAnnotationPropertiesTools(true);\n if (isShape) {\n this.shapeDropDown.toggle();\n }\n else {\n this.calibrateDropDown.toggle();\n }\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n };\n AnnotationToolbar.prototype.afterCalibrateToolbarCreationForMobile = function () {\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_distance', 'e-pv-calibrate-distance', this.pdfViewer.localeObj.getConstant('Calibrate Distance'));\n this.primaryToolbar.addClassToolbarItem('_calibrate_perimeter', 'e-pv-calibrate-perimeter', this.pdfViewer.localeObj.getConstant('Calibrate Perimeter'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_area', 'e-pv-calibrate-area', this.pdfViewer.localeObj.getConstant('Calibrate Area'));\n this.primaryToolbar.addClassToolbarItem('_calibrate_radius', 'e-pv-calibrate-radius', this.pdfViewer.localeObj.getConstant('Calibrate Radius'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_calibrate_volume', 'e-pv-calibrate-volume', this.pdfViewer.localeObj.getConstant('Calibrate Volume'));\n };\n AnnotationToolbar.prototype.afterShapeToolbarCreationForMobile = function () {\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_color', 'e-pv-annotation-color-container', this.pdfViewer.localeObj.getConstant('Change Color'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_stroke', 'e-pv-annotation-stroke-container', this.pdfViewer.localeObj.getConstant('Change Stroke Color'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_thickness', 'e-pv-annotation-thickness-container', this.pdfViewer.localeObj.getConstant('Chnage Border Thickness'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_annotation_opacity', 'e-annotation-opacity-container', this.pdfViewer.localeObj.getConstant('Change Opacity'));\n this.primaryToolbar.addClassToolbarItem('_shape_line', 'e-pv-shape-line', this.pdfViewer.localeObj.getConstant('Add line'));\n this.primaryToolbar.addClassToolbarItem('_shape_arrow', 'e-pv-shape-arrow', this.pdfViewer.localeObj.getConstant('Add arrow'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_shape_rectangle', 'e-pv-shape-rectangle', this.pdfViewer.localeObj.getConstant('Add rectangle'));\n // eslint-disable-next-line max-len\n this.primaryToolbar.addClassToolbarItem('_shape_circle', 'e-pv-shape-circle', this.pdfViewer.localeObj.getConstant('Add circle'));\n this.primaryToolbar.addClassToolbarItem('_shape_pentagon', 'e-pv-shape-pentagon', this.pdfViewer.localeObj.getConstant('Add polygon'));\n };\n AnnotationToolbar.prototype.afterShapeToolbarCreation = function () {\n this.lineElement = this.primaryToolbar.addClassToolbarItem('_shape_line', 'e-pv-shape-line', this.pdfViewer.localeObj.getConstant('Add line'));\n this.arrowElement = this.primaryToolbar.addClassToolbarItem('_shape_arrow', 'e-pv-shape-arrow', this.pdfViewer.localeObj.getConstant('Add arrow'));\n // eslint-disable-next-line max-len\n this.rectangleElement = this.primaryToolbar.addClassToolbarItem('_shape_rectangle', 'e-pv-shape-rectangle', this.pdfViewer.localeObj.getConstant('Add rectangle'));\n // eslint-disable-next-line max-len\n this.circleElement = this.primaryToolbar.addClassToolbarItem('_shape_circle', 'e-pv-shape-circle', this.pdfViewer.localeObj.getConstant('Add circle'));\n this.polygonElement = this.primaryToolbar.addClassToolbarItem('_shape_pentagon', 'e-pv-shape-pentagon', this.pdfViewer.localeObj.getConstant('Add polygon'));\n };\n AnnotationToolbar.prototype.afterCalibrateToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.calibrateDistance = this.primaryToolbar.addClassToolbarItem('_calibrate_distance', 'e-pv-calibrate-distance', this.pdfViewer.localeObj.getConstant('Calibrate Distance'));\n this.calibratePerimeter = this.primaryToolbar.addClassToolbarItem('_calibrate_perimeter', 'e-pv-calibrate-perimeter', this.pdfViewer.localeObj.getConstant('Calibrate Perimeter'));\n // eslint-disable-next-line max-len\n this.calibrateArea = this.primaryToolbar.addClassToolbarItem('_calibrate_area', 'e-pv-calibrate-area', this.pdfViewer.localeObj.getConstant('Calibrate Area'));\n this.calibrateRadius = this.primaryToolbar.addClassToolbarItem('_calibrate_radius', 'e-pv-calibrate-radius', this.pdfViewer.localeObj.getConstant('Calibrate Radius'));\n // eslint-disable-next-line max-len\n this.calibrateVolume = this.primaryToolbar.addClassToolbarItem('_calibrate_volume', 'e-pv-calibrate-volume', this.pdfViewer.localeObj.getConstant('Calibrate Volume'));\n };\n AnnotationToolbar.prototype.afterMobileToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.highlightItem = this.primaryToolbar.addClassToolbarItem('_highlight', 'e-pv-highlight', this.pdfViewer.localeObj.getConstant('Highlight'));\n this.underlineItem = this.primaryToolbar.addClassToolbarItem('_underline', 'e-pv-underline', this.pdfViewer.localeObj.getConstant('Underline'));\n // eslint-disable-next-line max-len\n this.strikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikethrough', 'e-pv-strikethrough', this.pdfViewer.localeObj.getConstant('Strikethrough'));\n // eslint-disable-next-line max-len\n this.shapesItem = this.primaryToolbar.addClassToolbarItem('_annotation_shapes', 'e-pv-annotation-shapes', this.pdfViewer.localeObj.getConstant('Add Shapes'));\n this.calibrateItem = this.primaryToolbar.addClassToolbarItem('_annotation_calibrate', 'e-pv-annotation-calibrate', this.pdfViewer.localeObj.getConstant('Calibrate'));\n // eslint-disable-next-line max-len\n this.freeTextEditItem = this.primaryToolbar.addClassToolbarItem('_annotation_freeTextEdit', 'e-pv-annotation-freeTextEdit', this.pdfViewer.localeObj.getConstant('Free Text'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_comment', 'e-pv-comment', this.pdfViewer.localeObj.getConstant('Add Comments'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_annotation_commentPanel', 'e-pv-annotation-comment-panel', this.pdfViewer.localeObj.getConstant('Comment Panel'));\n // eslint-disable-next-line max-len\n this.inkAnnotationItem = this.primaryToolbar.addClassToolbarItem('_annotation_ink', 'e-pv-annotation-ink', this.pdfViewer.localeObj.getConstant('Draw Ink'));\n this.selectAnnotationDeleteItem(false);\n this.enableCommentPanelTool(this.pdfViewer.enableCommentPanel);\n };\n AnnotationToolbar.prototype.createColorPicker = function (idString) {\n var inputElement;\n var existingInput = document.getElementById(idString + '_target');\n if (existingInput) {\n inputElement = existingInput;\n }\n else {\n inputElement = createElement('input', { id: idString + '_target' });\n }\n document.body.appendChild(inputElement);\n var colorPicker = new ColorPicker({\n inline: true, mode: 'Palette', cssClass: 'e-show-value', enableOpacity: false,\n value: '#000000', showButtons: false, modeSwitcher: false\n });\n if (this.pdfViewer.enableRtl) {\n colorPicker.enableRtl = true;\n }\n colorPicker.appendTo(inputElement);\n return colorPicker;\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onColorPickerChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.modifyColorProperty(currentColor);\n }\n else {\n switch (this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode) {\n case 'Highlight':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor = currentColor;\n break;\n case 'Underline':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor = currentColor;\n break;\n case 'Strikethrough':\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor = currentColor;\n break;\n }\n }\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (isBlazor()) {\n if (args[0] !== args[1]) {\n this.pdfViewer.annotation.modifyFillColor(currentColor);\n }\n }\n else {\n if (args.currentValue.hex !== args.previousValue.hex) {\n this.pdfViewer.annotation.modifyFillColor(currentColor);\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineFillColor = currentColor;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowFillColor = currentColor;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleFillColor = currentColor;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleFillColor = currentColor;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonFillColor = currentColor;\n break;\n }\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.fillColor = currentColor;\n if (this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.fillColor = currentColor;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n }\n if (isBlazor()) {\n this.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n this.updateColorInIcon(this.colorDropDownElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.colorDropDownElement, currentColor);\n this.colorDropDown.toggle();\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.onStrokePickerChange = function (args) {\n // eslint-disable-next-line\n var currentColor;\n if (!isBlazor()) {\n currentColor = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n }\n else {\n currentColor = args[0];\n }\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n if (isBlazor()) {\n if (args[0] !== args[1]) {\n this.pdfViewer.annotation.modifyStrokeColor(currentColor);\n }\n }\n else {\n if (args.currentValue.hex !== args.previousValue.hex) {\n this.pdfViewer.annotation.modifyStrokeColor(currentColor);\n }\n }\n }\n else {\n if (this.pdfViewer.annotation.shapeAnnotationModule) {\n switch (this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode) {\n case 'Line':\n this.pdfViewer.annotation.shapeAnnotationModule.lineStrokeColor = currentColor;\n break;\n case 'Arrow':\n this.pdfViewer.annotation.shapeAnnotationModule.arrowStrokeColor = currentColor;\n break;\n case 'Rectangle':\n this.pdfViewer.annotation.shapeAnnotationModule.rectangleStrokeColor = currentColor;\n break;\n case 'Circle':\n this.pdfViewer.annotation.shapeAnnotationModule.circleStrokeColor = currentColor;\n break;\n case 'Polygon':\n this.pdfViewer.annotation.shapeAnnotationModule.polygonStrokeColor = currentColor;\n break;\n }\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotation;\n if (annotationModule && annotationModule.inkAnnotationModule) {\n this.pdfViewer.inkAnnotationSettings.strokeColor = currentColor;\n }\n if (this.pdfViewer.drawingObject) {\n this.pdfViewer.drawingObject.strokeColor = currentColor;\n }\n if (this.pdfViewer.drawingObject && this.pdfViewer.drawingObject.shapeAnnotationType === 'FreeText') {\n this.pdfViewer.freeTextSettings.borderColor = currentColor;\n this.pdfViewer.annotationModule.freeTextAnnotationModule.updateTextProperties();\n }\n }\n if (isBlazor()) {\n this.strokeDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-stroke-container');\n this.updateColorInIcon(this.strokeDropDownElementInBlazor, currentColor);\n }\n else {\n this.updateColorInIcon(this.strokeDropDownElement, currentColor);\n this.strokeDropDown.toggle();\n }\n };\n /**\n * @param element\n * @param color\n * @param element\n * @param color\n * @private\n */\n AnnotationToolbar.prototype.updateColorInIcon = function (element, color) {\n if (isBlazor()) {\n if (element) {\n element.children[0].style.borderBottomColor = color;\n }\n }\n else {\n if (element) {\n element.childNodes[0] ? element.childNodes[0].style.borderBottomColor = color : element.childNodes[0];\n }\n }\n };\n /**\n * @param currentOption\n * @private\n */\n AnnotationToolbar.prototype.updateTextPropertySelection = function (currentOption) {\n if (currentOption === 'bold') {\n document.getElementById(this.pdfViewer.element.id + '_bold').classList.toggle('textprop-option-active');\n }\n else if (currentOption === 'italic') {\n document.getElementById(this.pdfViewer.element.id + '_italic').classList.toggle('textprop-option-active');\n }\n else if (currentOption === 'underline') {\n document.getElementById(this.pdfViewer.element.id + '_underline_textinput').classList.toggle('textprop-option-active');\n document.getElementById(this.pdfViewer.element.id + '_strikeout').classList.remove('textprop-option-active');\n }\n else if (currentOption === 'strikeout') {\n document.getElementById(this.pdfViewer.element.id + '_strikeout').classList.toggle('textprop-option-active');\n document.getElementById(this.pdfViewer.element.id + '_underline_textinput').classList.remove('textprop-option-active');\n }\n };\n /**\n * @param family\n * @private\n */\n AnnotationToolbar.prototype.updateFontFamilyInIcon = function (family) {\n this.fontFamily.value = family;\n };\n /**\n * @param align\n * @private\n */\n AnnotationToolbar.prototype.updateTextAlignInIcon = function (align) {\n var className = 'e-btn-icon e-pv-left-align-icon e-pv-icon';\n var leftAlign = document.getElementById(this.pdfViewer.element.id + '_left_align');\n var rightAlign = document.getElementById(this.pdfViewer.element.id + '_right_align');\n var centerAlign = document.getElementById(this.pdfViewer.element.id + '_center_align');\n var justifyAlign = document.getElementById(this.pdfViewer.element.id + '_justify_align');\n if (!isBlazor()) {\n leftAlign.classList.remove('textprop-option-active');\n rightAlign.classList.remove('textprop-option-active');\n centerAlign.classList.remove('textprop-option-active');\n justifyAlign.classList.remove('textprop-option-active');\n }\n if (align === 'Left') {\n leftAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Right') {\n className = 'e-btn-icon e-pv-right-align-icon e-pv-icon';\n rightAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Center') {\n className = 'e-btn-icon e-pv-center-align-icon e-pv-icon';\n centerAlign.classList.add('textprop-option-active');\n }\n else if (align === 'Justify') {\n className = 'e-btn-icon e-pv-justfiy-align-icon e-pv-icon';\n justifyAlign.classList.add('textprop-option-active');\n }\n document.getElementById(this.pdfViewer.element.id + '_annotation_textalign').children[0].className = className;\n };\n /**\n * @param size\n * @private\n */\n AnnotationToolbar.prototype.updateFontSizeInIcon = function (size) {\n this.fontSize.value = size + 'px';\n };\n AnnotationToolbar.prototype.updateOpacityIndicator = function () {\n // eslint-disable-next-line\n this.opacityIndicator.textContent = parseInt(Math.round(this.opacitySlider.value).toString()) + '%';\n };\n AnnotationToolbar.prototype.updateThicknessIndicator = function () {\n this.thicknessIndicator.textContent = this.thicknessSlider.value + ' pt';\n };\n AnnotationToolbar.prototype.createSlider = function (idString) {\n var outerContainer = createElement('div', { className: 'e-pv-annotation-opacity-popup-container' });\n document.body.appendChild(outerContainer);\n var label = createElement('span', { id: idString + '_label', className: 'e-pv-annotation-opacity-label' });\n label.textContent = this.pdfViewer.localeObj.getConstant('Opacity');\n var sliderElement = createElement('div', { id: idString + '_slider' });\n this.opacitySlider = new Slider({ type: 'MinRange', cssClass: 'e-pv-annotation-opacity-slider', max: 100, min: 0 });\n // eslint-disable-next-line max-len\n this.opacityIndicator = createElement('div', { id: idString + '_opacity_indicator', className: 'e-pv-annotation-opacity-indicator' });\n this.opacityIndicator.textContent = '100%';\n if (!this.pdfViewer.enableRtl) {\n outerContainer.appendChild(label);\n outerContainer.appendChild(sliderElement);\n this.opacitySlider.appendTo(sliderElement);\n this.opacitySlider.element.parentElement.classList.add('e-pv-annotation-opacity-slider-container');\n outerContainer.appendChild(this.opacityIndicator);\n }\n else {\n outerContainer.appendChild(this.opacityIndicator);\n outerContainer.appendChild(sliderElement);\n this.opacitySlider.enableRtl = true;\n this.opacitySlider.appendTo(sliderElement);\n this.opacitySlider.element.parentElement.classList.add('e-pv-annotation-opacity-slider-container');\n outerContainer.appendChild(label);\n }\n return outerContainer;\n };\n AnnotationToolbar.prototype.createThicknessSlider = function (idString) {\n var outerContainer = createElement('div', { className: 'e-pv-annotation-thickness-popup-container' });\n document.body.appendChild(outerContainer);\n var label = createElement('span', { id: idString + '_label', className: 'e-pv-annotation-thickness-label' });\n label.textContent = this.pdfViewer.localeObj.getConstant('Line Thickness');\n var sliderElement = createElement('div', { id: idString + '_slider' });\n this.thicknessSlider = new Slider({ type: 'MinRange', cssClass: 'e-pv-annotation-thickness-slider', max: 12, min: 0 });\n // eslint-disable-next-line max-len\n this.thicknessIndicator = createElement('div', { id: idString + '_thickness_indicator', className: 'e-pv-annotation-thickness-indicator' });\n this.thicknessIndicator.textContent = '0 pt';\n if (!this.pdfViewer.enableRtl) {\n outerContainer.appendChild(label);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(this.thicknessIndicator);\n }\n else {\n outerContainer.appendChild(this.thicknessIndicator);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.enableRtl = true;\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(label);\n }\n this.thicknessSlider.element.parentElement.classList.add('e-pv-annotation-thickness-slider-container');\n return outerContainer;\n };\n AnnotationToolbar.prototype.afterToolbarCreation = function () {\n // eslint-disable-next-line max-len\n this.highlightItem = this.primaryToolbar.addClassToolbarItem('_highlight', 'e-pv-highlight', this.pdfViewer.localeObj.getConstant('Highlight'));\n this.underlineItem = this.primaryToolbar.addClassToolbarItem('_underline', 'e-pv-underline', this.pdfViewer.localeObj.getConstant('Underline'));\n // eslint-disable-next-line max-len\n this.strikethroughItem = this.primaryToolbar.addClassToolbarItem('_strikethrough', 'e-pv-strikethrough', this.pdfViewer.localeObj.getConstant('Strikethrough'));\n this.deleteItem = this.primaryToolbar.addClassToolbarItem('_annotation_delete', 'e-pv-annotation-delete', this.pdfViewer.localeObj.getConstant('Delete'));\n // eslint-disable-next-line max-len\n this.freeTextEditItem = this.primaryToolbar.addClassToolbarItem('_annotation_freeTextEdit', 'e-pv-annotation-freeTextEdit', this.pdfViewer.localeObj.getConstant('Free Text'));\n // eslint-disable-next-line max-len\n this.inkAnnotationItem = this.primaryToolbar.addClassToolbarItem('_annotation_ink', 'e-pv-annotation-ink', this.pdfViewer.localeObj.getConstant('Draw Ink'));\n // eslint-disable-next-line max-len\n this.commentItem = this.primaryToolbar.addClassToolbarItem('_annotation_commentPanel', 'e-pv-annotation-comment-panel', this.pdfViewer.localeObj.getConstant('Comment Panel'));\n this.closeItem = this.primaryToolbar.addClassToolbarItem('_annotation_close', 'e-pv-annotation-tools-close', null);\n this.selectAnnotationDeleteItem(false);\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableCommentPanelTool(this.pdfViewer.enableCommentPanel);\n };\n AnnotationToolbar.prototype.onToolbarClicked = function (args) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (args.originalEvent.target.id) {\n this.pdfViewer.toolbarModule.updateStampItems();\n }\n this.pdfViewer.toolbarModule.deSelectCommentAnnotation();\n switch (args.originalEvent.target.id) {\n case this.pdfViewer.element.id + '_highlight':\n case this.pdfViewer.element.id + '_highlightIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleHighlight();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Highlight');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_underline':\n case this.pdfViewer.element.id + '_underlineIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleUnderline();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Underline');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_strikethrough':\n case this.pdfViewer.element.id + '_strikethroughIcon':\n this.pdfViewer.tool = '';\n if (!Browser.isDevice) {\n this.pdfViewer.tool = '';\n this.resetFreeTextAnnot();\n this.handleStrikethrough();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('Strikethrough');\n this.textMarkupForMobile(args);\n }\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n break;\n case this.pdfViewer.element.id + '_annotation_delete':\n case this.pdfViewer.element.id + '_annotation_deleteIcon':\n this.pdfViewer.annotationModule.deleteAnnotation();\n this.resetFreeTextAnnot();\n break;\n case this.pdfViewer.element.id + '_annotation_commentPanel':\n case this.pdfViewer.element.id + '_annotation_commentPanelIcon':\n this.inkAnnotationSelected = false;\n var commentPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (commentPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n else {\n this.pdfViewer.annotationModule.showCommentsPanel();\n }\n break;\n case this.pdfViewer.element.id + '_annotation_close':\n case this.pdfViewer.element.id + '_annotation_closeIcon':\n this.inkAnnotationSelected = false;\n var commentsPanel = document.getElementById(this.pdfViewer.element.id + '_commantPanel');\n if (commentsPanel.style.display === 'block') {\n this.pdfViewerBase.navigationPane.closeCommentPanelContainer();\n }\n this.showAnnotationToolbar(this.primaryToolbar.annotationItem);\n break;\n case this.pdfViewer.element.id + '_annotation_freeTextEdit':\n case this.pdfViewer.element.id + '_annotation_freeTextEditIcon':\n if (!Browser.isDevice) {\n this.resetFreeTextAnnot();\n this.handleFreeTextEditor();\n }\n else {\n this.pdfViewer.annotationModule.setAnnotationMode('FreeText');\n this.FreeTextForMobile();\n }\n break;\n case this.pdfViewer.element.id + '_annotation_signature':\n case this.pdfViewer.element.id + '_annotation_signatureIcon':\n this.inkAnnotationSelected = false;\n this.updateSignatureCount();\n break;\n case this.pdfViewer.element.id + '_annotation_ink':\n case this.pdfViewer.element.id + '_annotation_inkIcon':\n if (annotation) {\n this.pdfViewer.annotation.triggerAnnotationUnselectEvent();\n }\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n }\n if (!this.inkAnnotationSelected) {\n this.deselectAllItems();\n this.drawInkAnnotation();\n }\n else {\n this.inkAnnotationSelected = false;\n }\n break;\n case this.pdfViewer.element.id + '_annotation_shapesIcon':\n case this.pdfViewer.element.id + '_annotation_shapes':\n if (Browser.isDevice) {\n this.shapeToolMobile(args);\n }\n break;\n case this.pdfViewer.element.id + '_annotation_calibrateIcon':\n case this.pdfViewer.element.id + '_annotation_calibrate':\n if (Browser.isDevice) {\n this.calibrateToolMobile(args);\n }\n break;\n case this.pdfViewer.element.id + '_commentIcon':\n case this.pdfViewer.element.id + '_comment':\n this.pdfViewerBase.isAddComment = true;\n this.pdfViewerBase.isCommentIconAdded = true;\n var commentsButton = document.getElementById(this.pdfViewer.element.id + '_comment');\n commentsButton.classList.add('e-pv-select');\n this.pdfViewer.toolbarModule.addComments(args);\n break;\n }\n };\n AnnotationToolbar.prototype.addInkAnnotation = function () {\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n if (!this.inkAnnotationSelected) {\n this.deselectAllItemsInBlazor();\n this.drawInkAnnotation();\n }\n else {\n this.inkAnnotationSelected = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectInkAnnotation = function () {\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewerBase.focusViewerContainer();\n }\n };\n AnnotationToolbar.prototype.drawInkAnnotation = function () {\n this.inkAnnotationSelected = true;\n if (!isBlazor()) {\n this.primaryToolbar.selectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.selectItem(this.InkAnnotationElement);\n }\n this.enableSignaturePropertiesTools(true);\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInk();\n };\n AnnotationToolbar.prototype.resetFreeTextAnnot = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n this.pdfViewer.annotation.freeTextAnnotationModule.isNewAddedAnnot = false;\n if (!Browser.isDevice) {\n if (this.freeTextEditItem && !isBlazor()) {\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n }\n else if (isBlazor()) {\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n }\n this.enableFreeTextAnnotationPropertiesTools(false);\n }\n }\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule) { // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n if (!isBlazor()) {\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n else {\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n }\n }\n }\n this.inkAnnotationSelected = false;\n };\n AnnotationToolbar.prototype.updateInkannotationItems = function () {\n if (this.pdfViewer.annotationModule && this.pdfViewer.annotationModule.inkAnnotationModule && this.inkAnnotationSelected) {\n // eslint-disable-next-line\n var currentPageNumber = this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber;\n if (currentPageNumber && currentPageNumber !== '') {\n // eslint-disable-next-line\n this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(parseInt(currentPageNumber));\n this.pdfViewerBase.isToolbarInkClicked = true;\n this.pdfViewer.tool = 'Ink';\n this.pdfViewer.clearSelection(currentPageNumber);\n }\n }\n };\n AnnotationToolbar.prototype.showSignaturepanel = function () {\n this.pdfViewerBase.isToolbarSignClicked = true;\n this.pdfViewerBase.signatureModule.showSignatureDialog(true);\n };\n AnnotationToolbar.prototype.handleFreeTextEditor = function () {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n this.enableFreeTextAnnotationPropertiesTools(true);\n if (annotation) {\n this.pdfViewer.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n this.pdfViewer.clearSelection(this.pdfViewer.currentPageNumber - 1);\n if (this.pdfViewer.annotationModule.textMarkupAnnotationModule) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.isStrikethroughEnabled = false;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n var freeTextAnnotationModule = this.pdfViewer.annotation.freeTextAnnotationModule;\n freeTextAnnotationModule.setAnnotationType('FreeText');\n freeTextAnnotationModule.isNewFreeTextAnnot = true;\n freeTextAnnotationModule.isNewAddedAnnot = true;\n this.updateInteractionTools();\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.selectItem(this.freeTextEditItem);\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.fillColor);\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.borderColor);\n this.updateColorInIcon(this.fontColorElement, this.pdfViewer.annotationModule.freeTextAnnotationModule.fontColor);\n this.updateFontFamilyInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.fontFamily);\n this.updateFontSizeInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.fontSize);\n this.updateTextAlignInIcon(this.pdfViewer.annotationModule.freeTextAnnotationModule.textAlign);\n this.updateFontFamily();\n };\n AnnotationToolbar.prototype.updateFontFamily = function () {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isBold ? this.updateFontFamilyIcon('_bold', true) : this.updateFontFamilyIcon('_bold', false);\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isItalic ? this.updateFontFamilyIcon('_italic', true) : this.updateFontFamilyIcon('_italic', false);\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isUnderline) {\n this.updateFontFamilyIcon('_underline_textinput', true);\n this.updateFontFamilyIcon('_strikeout', false);\n }\n else {\n this.updateFontFamilyIcon('_underline_textinput', false);\n }\n if (this.pdfViewer.annotationModule.freeTextAnnotationModule.isStrikethrough) {\n this.updateFontFamilyIcon('_strikeout', true);\n this.updateFontFamilyIcon('_underline_textinput', false);\n }\n else {\n this.updateFontFamilyIcon('_strikeout', false);\n }\n };\n AnnotationToolbar.prototype.updateFontFamilyIcon = function (fontFamily, isActive) {\n var fontFamilyElement = document.getElementById(this.pdfViewer.element.id + fontFamily);\n isActive ? fontFamilyElement.classList.add('textprop-option-active') : fontFamilyElement.classList.remove('textprop-option-active');\n };\n /**\n * @param element\n * @param isInitialLoading\n * @param element\n * @param isInitialLoading\n * @private\n */\n AnnotationToolbar.prototype.showAnnotationToolbar = function (element, isInitialLoading) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (!this.isToolbarHidden) {\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n if (element) {\n this.primaryToolbar.deSelectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.deSelectItem(this.primaryToolbar.annotationItem);\n }\n }\n this.adjustViewer(false);\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation) {\n this.enablePropertiesTool(annotationModule);\n }\n else {\n this.deselectAllItems();\n }\n this.toolbarElement.style.display = 'none';\n if (!isInitialLoading) {\n this.pdfViewer.isAnnotationToolbarVisible = false;\n }\n if (this.pdfViewerBase.isPanMode) {\n this.primaryToolbar.updateInteractionTools(false);\n }\n else {\n this.primaryToolbar.updateInteractionTools(true);\n }\n }\n else {\n var toolBarInitialStatus = void 0;\n if (this.toolbarElement) {\n toolBarInitialStatus = this.toolbarElement.style.display;\n this.toolbarElement.style.display = 'block';\n }\n if (!isInitialLoading) {\n this.pdfViewer.isAnnotationToolbarVisible = true;\n }\n if (element) {\n this.primaryToolbar.selectItem(element);\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n this.primaryToolbar.selectItem(this.primaryToolbar.annotationItem);\n }\n }\n if (toolBarInitialStatus === 'none') {\n this.adjustViewer(true);\n }\n }\n // eslint-disable-next-line max-len\n if (this.pdfViewer.magnification && this.pdfViewer.magnification.fitType === 'fitToPage') {\n this.pdfViewer.magnification.fitToPage();\n }\n this.enableAnnotationAddTools(true);\n this.isToolbarHidden = !this.isToolbarHidden;\n }\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.enablePropertiesTool = function (annotationModule) {\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n // eslint-disable-next-line max-len\n this.updateColorInIcon(this.colorDropDownElement, annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation.color);\n this.selectAnnotationDeleteItem(true);\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.applyAnnotationToolbarSettings = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('HighlightTool') !== -1) {\n this.showHighlightTool(true, 0, 0);\n }\n else {\n this.showHighlightTool(false, 0, 0);\n }\n if (annotationToolbarItems.indexOf('UnderlineTool') !== -1) {\n this.showUnderlineTool(true, 1, 1);\n }\n else {\n this.showUnderlineTool(false, 1, 1);\n }\n if (annotationToolbarItems.indexOf('StrikethroughTool') !== -1) {\n this.showStrikethroughTool(true, 2, 2);\n }\n else {\n this.showStrikethroughTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 4, 4);\n }\n else {\n this.showShapeAnnotationTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('CalibrateTool') !== -1) {\n this.showCalibrateAnnotationTool(true, 6, 6);\n }\n else {\n this.showCalibrateAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('ColorEditTool') !== -1) {\n this.showColorEditTool(true, 22, 22);\n }\n else {\n this.showColorEditTool(false, 22, 22);\n }\n if (annotationToolbarItems.indexOf('StrokeColorEditTool') !== -1) {\n this.showStrokeColorEditTool(true, 23, 23);\n }\n else {\n this.showStrokeColorEditTool(false, 23, 23);\n }\n if (annotationToolbarItems.indexOf('ThicknessEditTool') !== -1) {\n this.showThicknessEditTool(true, 24, 24);\n }\n else {\n this.showThicknessEditTool(false, 24, 24);\n }\n if (annotationToolbarItems.indexOf('OpacityEditTool') !== -1) {\n this.showOpacityEditTool(true, 25, 25);\n }\n else {\n this.showOpacityEditTool(false, 25, 25);\n }\n if (annotationToolbarItems.indexOf('AnnotationDeleteTool') !== -1) {\n this.showAnnotationDeleteTool(true, 27, 27);\n }\n else {\n this.showAnnotationDeleteTool(false, 27, 27);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 10, 10);\n }\n else {\n this.showStampAnnotationTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 12, 12);\n }\n else {\n this.showSignatureTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 8, 8);\n }\n else {\n this.showFreeTextAnnotationTool(false, 8, 8);\n }\n if (annotationToolbarItems.indexOf('FontFamilyAnnotationTool') !== -1) {\n this.showFontFamilyAnnotationTool(true, 16, 16);\n }\n else {\n this.showFontFamilyAnnotationTool(false, 16, 16);\n }\n if (annotationToolbarItems.indexOf('FontSizeAnnotationTool') !== -1) {\n this.showFontSizeAnnotationTool(true, 17, 17);\n }\n else {\n this.showFontSizeAnnotationTool(false, 17, 17);\n }\n if (annotationToolbarItems.indexOf('FontStylesAnnotationTool') !== -1) {\n this.showFontStylesAnnotationTool(true, 20, 20);\n }\n else {\n this.showFontStylesAnnotationTool(false, 20, 20);\n }\n if (annotationToolbarItems.indexOf('FontAlignAnnotationTool') !== -1) {\n this.showFontAlignAnnotationTool(true, 18, 18);\n }\n else {\n this.showFontAlignAnnotationTool(false, 18, 18);\n }\n if (annotationToolbarItems.indexOf('FontColorAnnotationTool') !== -1) {\n this.showFontColorAnnotationTool(true, 19, 19);\n }\n else {\n this.showFontColorAnnotationTool(false, 19, 19);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 28, 28);\n }\n else {\n this.showCommentPanelTool(false, 28, 28);\n }\n this.showInkAnnotationTool();\n this.showSeparator();\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.applyMobileAnnotationToolbarSettings = function () {\n // eslint-disable-next-line\n var annotationToolbarItems = this.pdfViewer.toolbarSettings.annotationToolbarItems;\n if (annotationToolbarItems) {\n if (annotationToolbarItems.indexOf('HighlightTool') !== -1) {\n this.showHighlightTool(true, 2, 2);\n }\n else {\n this.showHighlightTool(false, 2, 2);\n }\n if (annotationToolbarItems.indexOf('UnderlineTool') !== -1) {\n this.showUnderlineTool(true, 3, 3);\n }\n else {\n this.showUnderlineTool(false, 3, 3);\n }\n if (annotationToolbarItems.indexOf('StrikethroughTool') !== -1) {\n this.showStrikethroughTool(true, 4, 4);\n }\n else {\n this.showStrikethroughTool(false, 4, 4);\n }\n if (annotationToolbarItems.indexOf('ShapeTool') !== -1) {\n this.showShapeAnnotationTool(true, 6, 6);\n }\n else {\n this.showShapeAnnotationTool(false, 6, 6);\n }\n if (annotationToolbarItems.indexOf('CalibrateTool') !== -1) {\n this.showCalibrateAnnotationTool(true, 8, 8);\n }\n else {\n this.showCalibrateAnnotationTool(false, 8, 8);\n }\n var toolbarItems = this.pdfViewer.toolbarSettings.toolbarItems;\n if (toolbarItems && toolbarItems.indexOf('CommentTool') !== -1) {\n this.showStickyNoteToolInMobile(true);\n }\n else {\n this.showStickyNoteToolInMobile(false);\n }\n if (annotationToolbarItems.indexOf('StampAnnotationTool') !== -1) {\n this.showStampAnnotationTool(true, 12, 12);\n }\n else {\n this.showStampAnnotationTool(false, 12, 12);\n }\n if (annotationToolbarItems.indexOf('HandWrittenSignatureTool') !== -1) {\n this.showSignatureTool(true, 14, 14);\n }\n else {\n this.showSignatureTool(false, 14, 14);\n }\n if (annotationToolbarItems.indexOf('FreeTextAnnotationTool') !== -1) {\n this.showFreeTextAnnotationTool(true, 10, 10);\n }\n else {\n this.showFreeTextAnnotationTool(false, 10, 10);\n }\n if (annotationToolbarItems.indexOf('CommentPanelTool') !== -1) {\n this.showCommentPanelTool(true, 18, 18);\n }\n else {\n this.showCommentPanelTool(false, 18, 18);\n }\n if (annotationToolbarItems.indexOf('InkAnnotationTool') !== -1) {\n this.showInkTool(true, 16, 16);\n }\n else {\n this.showInkTool(false, 16, 16);\n }\n this.showSeparatorInMobile();\n }\n };\n AnnotationToolbar.prototype.showStickyNoteToolInMobile = function (isShow) {\n this.isCommentBtnVisible = isShow;\n this.applyHideToToolbar(isShow, 0, 0);\n };\n AnnotationToolbar.prototype.showSeparatorInMobile = function () {\n if (!this.isCommentBtnVisible) {\n this.applyHideToToolbar(false, 1, 1);\n }\n if ((!this.isHighlightBtnVisible && !this.isUnderlineBtnVisible && !this.isStrikethroughBtnVisible)) {\n this.applyHideToToolbar(false, 5, 5);\n }\n if (!this.isShapeBtnVisible) {\n this.applyHideToToolbar(false, 7, 7);\n }\n if (!this.isCalibrateBtnVisible) {\n this.applyHideToToolbar(false, 9, 9);\n }\n if (!this.isFreeTextBtnVisible) {\n this.applyHideToToolbar(false, 11, 11);\n }\n if (!this.isStampBtnVisible) {\n this.applyHideToToolbar(false, 13, 13);\n }\n if (!this.isSignatureBtnVisible) {\n this.applyHideToToolbar(false, 15, 15);\n }\n if (!this.isInkBtnVisible) {\n this.applyHideToToolbar(false, 17, 17);\n }\n };\n AnnotationToolbar.prototype.showInkAnnotationTool = function () {\n if (this.pdfViewer.toolbarSettings.annotationToolbarItems.indexOf('InkAnnotationTool') !== -1) {\n this.showInkTool(true, 14, 14);\n }\n else {\n this.showInkTool(false, 14, 14);\n }\n };\n AnnotationToolbar.prototype.showSeparator = function () {\n if ((!this.isHighlightBtnVisible && !this.isUnderlineBtnVisible && !this.isStrikethroughBtnVisible)) {\n this.applyHideToToolbar(false, 3, 3);\n }\n if (!this.isShapeBtnVisible) {\n this.applyHideToToolbar(false, 5, 5);\n }\n if (!this.isCalibrateBtnVisible) {\n this.applyHideToToolbar(false, 7, 7);\n }\n if (!this.isFreeTextBtnVisible) {\n this.applyHideToToolbar(false, 9, 9);\n }\n if (!this.isStampBtnVisible) {\n this.applyHideToToolbar(false, 11, 11);\n }\n if (!this.isSignatureBtnVisible) {\n this.applyHideToToolbar(false, 13, 13);\n }\n if (!this.isInkBtnVisible) {\n this.applyHideToToolbar(false, 15, 15);\n }\n // eslint-disable-next-line max-len\n if (!this.isFontFamilyToolVisible && !this.isFontSizeToolVisible && !this.isFontColorToolVisible && !this.isFontAlignToolVisible && !this.isFontStylesToolVisible) {\n this.applyHideToToolbar(false, 21, 21);\n }\n // eslint-disable-next-line max-len\n if ((!this.isColorToolVisible && !this.isStrokeColorToolVisible && !this.isThicknessToolVisible && !this.isOpacityToolVisible) || !this.isDeleteAnnotationToolVisible) {\n this.applyHideToToolbar(false, 26, 26);\n }\n };\n AnnotationToolbar.prototype.showHighlightTool = function (isShow, startIndex, endIndex) {\n this.isHighlightBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showUnderlineTool = function (isShow, startIndex, endIndex) {\n this.isUnderlineBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStrikethroughTool = function (isShow, startIndex, endIndex) {\n this.isStrikethroughBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showShapeAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isShapeBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showCalibrateAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isCalibrateBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFreeTextAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFreeTextBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStampAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isStampBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showSignatureTool = function (isShow, startIndex, endIndex) {\n this.isSignatureBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showInkTool = function (isShow, startIndex, endIndex) {\n this.isInkBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontFamilyAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontFamilyToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontSizeAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontSizeToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontAlignAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontAlignToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontColorAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showFontStylesAnnotationTool = function (isShow, startIndex, endIndex) {\n this.isFontStylesToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showColorEditTool = function (isShow, startIndex, endIndex) {\n this.isColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showStrokeColorEditTool = function (isShow, startIndex, endIndex) {\n this.isStrokeColorToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showThicknessEditTool = function (isShow, startIndex, endIndex) {\n this.isThicknessToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showOpacityEditTool = function (isShow, startIndex, endIndex) {\n this.isOpacityToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showAnnotationDeleteTool = function (isShow, startIndex, endIndex) {\n this.isDeleteAnnotationToolVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.showCommentPanelTool = function (isShow, startIndex, endIndex) {\n this.isCommentPanelBtnVisible = isShow;\n this.applyHideToToolbar(isShow, startIndex, endIndex);\n };\n AnnotationToolbar.prototype.applyHideToToolbar = function (show, startIndex, endIndex) {\n var isHide = !show;\n for (var index = startIndex; index <= endIndex; index++) {\n var toolbar_1 = void 0;\n var propertyToolbarElement = (this.propertyToolbar && this.propertyToolbar.element) ? this.propertyToolbar.element : null;\n var toolbarElement = (this.toolbar && this.toolbar.element) ? this.toolbar.element : null;\n if (toolbarElement && toolbarElement.children && toolbarElement.children.length > 0) {\n toolbar_1 = this.toolbar;\n }\n else if (Browser.isDevice && propertyToolbarElement && propertyToolbarElement.children && propertyToolbarElement.children.length > 0) {\n toolbar_1 = this.propertyToolbar;\n }\n if (toolbar_1 && toolbar_1.items[index]) {\n var className = toolbar_1.items[index].cssClass;\n if (className && className !== '') {\n // Querying the toolbar item\n var element = toolbar_1.element.querySelector('.' + className);\n if (element) {\n this.toolbar.hideItem(element, isHide);\n }\n }\n else {\n toolbar_1.hideItem(index, isHide);\n }\n }\n }\n };\n /**\n * @param isAdjust\n * @private\n */\n AnnotationToolbar.prototype.adjustViewer = function (isAdjust) {\n var splitterElement;\n var toolbarContainer;\n var annotationToolbarHeight;\n if (isBlazor()) {\n splitterElement = this.pdfViewer.element.querySelector('.e-pv-sidebar-toolbar-splitter');\n toolbarContainer = this.pdfViewer.element.querySelector('.e-pv-toolbar');\n var annotationToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-annotation-toolbar');\n annotationToolbarHeight = this.getToolbarHeight(annotationToolbarContainer);\n }\n else {\n splitterElement = this.pdfViewerBase.getElement('_sideBarToolbarSplitter');\n toolbarContainer = this.pdfViewerBase.getElement('_toolbarContainer');\n annotationToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var toolbarHeight = this.getToolbarHeight(toolbarContainer);\n var sideBarToolbar = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarContentContainer = this.pdfViewerBase.navigationPane.sideBarContentContainer;\n var commentsContainer = this.pdfViewerBase.navigationPane.commentPanelContainer;\n var commentPanelResizer = this.pdfViewerBase.navigationPane.commentPanelResizer;\n var newToolbarHeight = '';\n if (isAdjust) {\n if (this.pdfViewer.enableToolbar) {\n sideBarToolbar.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n splitterElement.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n commentsContainer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n }\n else {\n sideBarToolbar.style.top = (annotationToolbarHeight) + 'px';\n sideBarContentContainer.style.top = (annotationToolbarHeight) + 'px';\n splitterElement.style.top = (annotationToolbarHeight) + 'px';\n commentsContainer.style.top = (annotationToolbarHeight) + 'px';\n commentPanelResizer.style.top = (toolbarHeight + annotationToolbarHeight) + 'px';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), (annotationToolbarHeight + toolbarHeight)) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(annotationToolbarHeight + toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n }\n else {\n if (this.pdfViewer.enableToolbar) {\n // eslint-disable-next-line max-len\n sideBarToolbar.style.top = toolbarHeight + 'px';\n sideBarContentContainer.style.top = toolbarHeight + 'px';\n splitterElement.style.top = toolbarHeight + 'px';\n commentsContainer.style.top = toolbarHeight + 'px';\n commentPanelResizer.style.top = toolbarHeight + 'px';\n }\n else {\n sideBarToolbar.style.top = 1 + 'px';\n sideBarToolbar.style.height = '100%';\n sideBarContentContainer.style.top = 1 + 'px';\n sideBarContentContainer.style.height = '100%';\n splitterElement.style.top = 1 + 'px';\n splitterElement.style.height = '100%';\n commentsContainer.style.top = 1 + 'px';\n commentsContainer.style.height = '100%';\n commentPanelResizer.style.top = 1 + 'px';\n commentPanelResizer.style.height = '100%';\n }\n if (!this.pdfViewer.enableToolbar) {\n toolbarHeight = 0;\n }\n // eslint-disable-next-line max-len\n this.pdfViewerBase.viewerContainer.style.height = this.updateViewerHeight(this.getElementHeight(this.pdfViewerBase.viewerContainer), annotationToolbarHeight) + 'px';\n newToolbarHeight = this.getNavigationToolbarHeight(toolbarHeight);\n sideBarToolbar.style.height = newToolbarHeight;\n splitterElement.style.height = newToolbarHeight;\n commentPanelResizer.style.height = newToolbarHeight;\n sideBarContentContainer.style.height = newToolbarHeight;\n if (this.pdfViewerBase.viewerContainer.style.height === '0px') {\n // eslint-disable-next-line\n this.pdfViewerBase.viewerContainer.style.height = (parseInt(this.pdfViewer.element.style.height) - parseInt(sideBarToolbar.style.top)) + 'px';\n }\n }\n };\n AnnotationToolbar.prototype.updateContentContainerHeight = function (isAdjust, isBlazor$$1) {\n var annotationToolbarHeight;\n if (isBlazor$$1) {\n var annotationToolbarContainer = this.pdfViewer.element.querySelector('.e-pv-annotation-toolbar');\n annotationToolbarHeight = this.getToolbarHeight(annotationToolbarContainer);\n }\n else {\n annotationToolbarHeight = this.getToolbarHeight(this.toolbarElement);\n }\n var sideBarClientRect = this.pdfViewerBase.navigationPane.sideBarContentContainer.getBoundingClientRect();\n if (sideBarClientRect.height !== 0) {\n if (isAdjust) {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height - annotationToolbarHeight + 'px';\n }\n else {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.navigationPane.sideBarContentContainer.style.height = sideBarClientRect.height + annotationToolbarHeight + 'px';\n }\n }\n };\n AnnotationToolbar.prototype.getToolbarHeight = function (element) {\n var toolbarHeight = element.getBoundingClientRect().height;\n if (toolbarHeight === 0 && element === this.pdfViewerBase.getElement('_toolbarContainer')) {\n // getComputedStyle gets the value from style and toolbar border height is added to it.\n // eslint-disable-next-line\n toolbarHeight = parseFloat(window.getComputedStyle(element)['height']) + this.toolbarBorderHeight;\n }\n return toolbarHeight;\n };\n AnnotationToolbar.prototype.getNavigationToolbarHeight = function (toolbarHeight) {\n var height = this.pdfViewer.element.getBoundingClientRect().height;\n return (height !== 0) ? height - toolbarHeight + 'px' : '';\n };\n AnnotationToolbar.prototype.handleHighlight = function () {\n if (!this.isHighlightEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Highlight');\n this.primaryToolbar.selectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor = null;\n this.setCurrentColorInPicker();\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.highlightColor);\n this.isHighlightEnabled = true;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n AnnotationToolbar.prototype.handleUnderline = function () {\n if (!this.isUnderlineEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Underline');\n this.primaryToolbar.selectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor = null;\n this.setCurrentColorInPicker();\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.underlineColor);\n this.isUnderlineEnabled = true;\n this.isHighlightEnabled = false;\n this.isStrikethroughEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n AnnotationToolbar.prototype.handleStrikethrough = function () {\n if (!this.isStrikethroughEnabled) {\n this.updateInteractionTools();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations('Strikethrough');\n this.primaryToolbar.selectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n this.enableTextMarkupAnnotationPropertiesTools(true);\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor = null;\n this.setCurrentColorInPicker();\n // eslint-disable-next-line max-len\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.annotationModule.textMarkupAnnotationModule.strikethroughColor);\n this.isStrikethroughEnabled = true;\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n }\n else {\n this.deselectAllItems();\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectAllItemsInBlazor = function () {\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateTextMarkupButtons', false, false, false);\n }\n this.resetFreeTextAnnot();\n this.clearTextMarkupMode();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.tool = '';\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableFreeTextAnnotationPropertiesTools(false);\n this.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.updateColorInIcon(this.fontColorElement, '#000000');\n this.selectAnnotationDeleteItem(false);\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.deselectAllItems = function () {\n var isBlazorPlatform = isBlazor();\n this.isHighlightEnabled = false;\n this.isUnderlineEnabled = false;\n this.isStrikethroughEnabled = false;\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isBlazorPlatform) {\n this.primaryToolbar.deSelectItem(this.pdfViewer.toolbar.SelectToolElement);\n this.primaryToolbar.selectItem(this.pdfViewer.toolbar.PanElement);\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n this.primaryToolbar.deSelectItem(this.FreeTextElement);\n this.primaryToolbar.deSelectItem(this.InkAnnotationElement);\n }\n else {\n this.primaryToolbar.deSelectItem(this.highlightItem);\n this.primaryToolbar.deSelectItem(this.underlineItem);\n this.primaryToolbar.deSelectItem(this.strikethroughItem);\n this.primaryToolbar.deSelectItem(this.freeTextEditItem);\n this.primaryToolbar.deSelectItem(this.inkAnnotationItem);\n }\n }\n this.resetFreeTextAnnot();\n this.clearTextMarkupMode();\n this.clearShapeMode();\n this.clearMeasureMode();\n this.pdfViewer.tool = '';\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.enableTextMarkupAnnotationPropertiesTools(false);\n this.enableFreeTextAnnotationPropertiesTools(false);\n this.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.updateColorInIcon(this.fontColorElement, '#000000');\n this.selectAnnotationDeleteItem(false);\n }\n if (this.pdfViewer.annotationModule) {\n this.pdfViewer.annotationModule.freeTextAnnotationModule.isNewFreeTextAnnot = false;\n }\n };\n AnnotationToolbar.prototype.updateInteractionTools = function () {\n if (this.pdfViewer.enableTextSelection) {\n this.pdfViewerBase.initiateTextSelectMode();\n if (!Browser.isDevice) {\n this.pdfViewer.toolbar.updateInteractionTools(true);\n }\n }\n else if (!Browser.isDevice) {\n this.pdfViewer.toolbar.updateInteractionTools(false);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.selectAnnotationDeleteItem = function (isEnable, deleteIconCicked) {\n if (!isBlazor() && !Browser.isDevice) {\n if (this.toolbar) {\n if (isEnable) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.annotationModule.findCurrentAnnotation();\n if (annotation) {\n // eslint-disable-next-line\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n }\n else {\n this.toolbar.enableItems(this.deleteItem.parentElement, false);\n }\n }\n else {\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n }\n }\n }\n else {\n this.toolbar.enableItems(this.deleteItem.parentElement, isEnable);\n }\n }\n }\n else {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isEnable) {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.annotationModule.findCurrentAnnotation();\n if (annotation) {\n // eslint-disable-next-line\n if (annotation.annotationSettings && annotation.annotationSettings.isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('Delete', annotation)) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n else {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(false);\n }\n }\n else if (this.pdfViewerBase.blazorUIAdaptor) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n }\n }\n else if (this.pdfViewerBase.blazorUIAdaptor) {\n this.pdfViewerBase.blazorUIAdaptor.EnableDeleteOption(isEnable);\n }\n if (deleteIconCicked) {\n this.pdfViewerBase.focusViewerContainer();\n }\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableTextMarkupAnnotationPropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n if (!isBlazor()) {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.thicknessElement.parentElement, false);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, false);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, false);\n this.toolbar.enableItems(this.fontColorElement.parentElement, false);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('AnnotationSelect', 'TextMarkup');\n this.pdfViewerBase.blazorUIAdaptor.enableTextMarkupAnnotationPropertiesTools(isEnable);\n }\n }\n };\n AnnotationToolbar.prototype.checkAnnotationPropertiesChange = function () {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.selectedItems.annotations[0];\n if (annotation && annotation.annotationSettings) {\n // eslint-disable-next-line\n var isLock = annotation.annotationSettings.isLock;\n if (isLock) {\n if (this.pdfViewer.annotationModule.checkAllowedInteractions('PropertyChange', annotation)) {\n return true;\n }\n else {\n return false;\n }\n }\n }\n return true;\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableAnnotationPropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n // eslint-disable-next-line max-len\n if (this.pdfViewer.selectedItems.annotations[0] && (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'Line')) {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n }\n else {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, isEnable);\n }\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.thicknessElement.parentElement, isEnable);\n if (this.pdfViewer.enableShapeLabel) {\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontColorElement.parentElement, isEnable);\n }\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableAnnotationPropertiesTool(isEnable, isPropertiesChanges);\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableSignaturePropertiesTools = function (isEnable) {\n if (!Browser.isDevice) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.thicknessElement.parentElement, isEnable);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, false);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, false);\n this.toolbar.enableItems(this.fontColorElement.parentElement, false);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableSignaturePropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableSignaturePropertiesTools(isEnable, isPropertiesChanges);\n }\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableStampAnnotationPropertiesTools = function (isEnable) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, false);\n this.toolbar.enableItems(this.thicknessElement.parentElement, false);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, false);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, false);\n this.toolbar.enableItems(this.fontColorElement.parentElement, false);\n this.toolbar.enableItems(this.textAlignElement.parentElement, false);\n this.toolbar.enableItems(this.textPropElement.parentElement, false);\n }\n }\n else {\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableStampAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableStampAnnotationPropertiesTools(isEnable, isPropertiesChanges);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableFreeTextAnnotationPropertiesTools = function (isEnable) {\n var isPropertiesChanges = this.checkAnnotationPropertiesChange();\n if (!isEnable) {\n isPropertiesChanges = true;\n }\n if (!isBlazor()) {\n if (isPropertiesChanges) {\n this.toolbar.enableItems(this.opacityDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.colorDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.strokeDropDownElement.parentElement, isEnable);\n this.toolbar.enableItems(this.thicknessElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontFamilyElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontSizeElement.parentElement, isEnable);\n this.toolbar.enableItems(this.fontColorElement.parentElement, isEnable);\n this.toolbar.enableItems(this.textAlignElement.parentElement, isEnable);\n this.toolbar.enableItems(this.textPropElement.parentElement, isEnable);\n }\n }\n else {\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('EnableFreeTextAnnotationPropertiesTools', isEnable, isPropertiesChanges);\n this.pdfViewerBase.blazorUIAdaptor.enableFreeTextAnnotationPropertiesTools(isEnable, isPropertiesChanges);\n }\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableAnnotationAddTools = function (isEnable) {\n if (this.toolbar && !Browser.isDevice) {\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.toolbar.enableItems(this.highlightItem.parentElement, isEnable);\n this.toolbar.enableItems(this.underlineItem.parentElement, isEnable);\n this.toolbar.enableItems(this.strikethroughItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableShapeAnnotation) {\n this.toolbar.enableItems(this.shapeElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableStampAnnotations) {\n this.toolbar.enableItems(this.stampElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableMeasureAnnotation && this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.toolbar.enableItems(this.calibrateElement.parentElement, isEnable);\n }\n if (this.pdfViewer.enableFreeText) {\n this.toolbar.enableItems(this.freeTextEditItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableHandwrittenSignature) {\n this.toolbar.enableItems(this.handWrittenSignatureItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableInkAnnotation) {\n this.toolbar.enableItems(this.inkAnnotationItem.parentElement, isEnable);\n }\n if (this.pdfViewer.enableCommentPanel) {\n this.enableCommentPanelTool(isEnable);\n }\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.isAnnotationButtonsEnabled = function () {\n var isButtonsEnabled = false;\n if (this.isHighlightEnabled || this.isUnderlineEnabled || this.isStrikethroughEnabled) {\n isButtonsEnabled = true;\n }\n return isButtonsEnabled;\n };\n /**\n * @param isEnable\n * @private\n */\n AnnotationToolbar.prototype.enableCommentPanelTool = function (isEnable) {\n if (this.toolbar) {\n this.toolbar.enableItems(this.commentItem.parentElement, isEnable);\n }\n };\n AnnotationToolbar.prototype.updateToolbarItems = function () {\n if (this.pdfViewer.enableTextMarkupAnnotation) {\n this.enableTextMarkupAddTools(true);\n }\n else {\n this.enableTextMarkupAddTools(false);\n }\n this.toolbar.enableItems(this.shapeElement.parentElement, this.pdfViewer.enableShapeAnnotation);\n this.toolbar.enableItems(this.stampElement.parentElement, this.pdfViewer.enableStampAnnotations);\n this.toolbar.enableItems(this.calibrateElement.parentElement, this.pdfViewer.enableMeasureAnnotation);\n this.toolbar.enableItems(this.freeTextEditItem.parentElement, this.pdfViewer.enableFreeText);\n this.toolbar.enableItems(this.handWrittenSignatureItem.parentElement, this.pdfViewer.enableHandwrittenSignature);\n this.toolbar.enableItems(this.inkAnnotationItem.parentElement, this.pdfViewer.enableInkAnnotation);\n };\n AnnotationToolbar.prototype.enableTextMarkupAddTools = function (isEnable) {\n this.toolbar.enableItems(this.highlightItem.parentElement, isEnable);\n this.toolbar.enableItems(this.underlineItem.parentElement, isEnable);\n this.toolbar.enableItems(this.strikethroughItem.parentElement, isEnable);\n };\n /**\n * @private\n */\n // for shapes added by drawing package\n AnnotationToolbar.prototype.updateAnnnotationPropertyItems = function () {\n if (!isBlazor()) {\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill, 'fillColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor, 'strokeColor'));\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElement, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].fontColor, 'fontColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateFontFamilyInIcon(this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateFontSizeInIcon(this.pdfViewer.selectedItems.annotations[0].fontSize);\n this.pdfViewer.toolbar.annotationToolbarModule.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElement, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElement, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElement, '#000000');\n }\n }\n else {\n this.colorDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-color-container');\n this.strokeDropDownElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-stroke-container');\n this.fontColorElementInBlazor = this.pdfViewer.element.querySelector('.e-pv-annotation-textcolor-container');\n if (this.pdfViewer.selectedItems.annotations.length === 1) {\n // eslint-disable-next-line max-len\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.fill, 'fillColor'));\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeColor, 'strokeColor'));\n if (this.pdfViewer.selectedItems.annotations[0].shapeAnnotationType === 'FreeText') {\n // eslint-disable-next-line\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElementInBlazor, this.getColorHexValue(this.pdfViewer.selectedItems.annotations[0].fontColor, 'fontColor'));\n //this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateFontFamilyInIcon', this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // eslint-disable-next-line max-len\n this.pdfViewerBase.blazorUIAdaptor.updateFontFamilyInIcon(this.pdfViewer.selectedItems.annotations[0].fontFamily);\n // this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateFontSizeInIcon', this.pdfViewer.selectedItems.annotations[0].fontSize);\n this.pdfViewerBase.blazorUIAdaptor.updateFontSizeInIcon(this.pdfViewer.selectedItems.annotations[0].fontSize);\n //this.pdfViewer.toolbar.annotationtoolbar.updateTextAlignInIcon(this.pdfViewer.selectedItems.annotations[0].textAlign);\n }\n }\n else {\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.colorDropDownElementInBlazor, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.strokeDropDownElementInBlazor, '#000000');\n this.pdfViewer.toolbar.annotationToolbarModule.updateColorInIcon(this.fontColorElementInBlazor, '#000000');\n }\n }\n };\n AnnotationToolbar.prototype.getColorHexValue = function (colorString, type) {\n if (colorString === '#ffffff00') {\n colorString = '#ffffff';\n }\n if (colorString.toLowerCase() === 'red') {\n colorString = '#FF0000';\n }\n if (colorString !== 'transparent') {\n if (!isBlazor()) {\n return this.colorPalette.getValue(colorString, 'hex');\n }\n else {\n return colorString;\n }\n }\n else {\n if (type === 'fontColor' || type === 'strokeColor') {\n return '#000000';\n }\n else {\n return '#ffffff';\n }\n }\n };\n AnnotationToolbar.prototype.setColorInPicker = function (colorpick, colorString) {\n if (colorpick) {\n colorpick.setProperties({ 'value': colorString }, true);\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.resetToolbar = function () {\n this.adjustViewer(false);\n this.updateToolbarItems();\n // eslint-disable-next-line max-len\n if ((this.pdfViewer.isAnnotationToolbarOpen || this.pdfViewer.isAnnotationToolbarVisible) && this.pdfViewer.enableAnnotationToolbar) {\n this.toolbarElement.style.display = '';\n this.isToolbarHidden = false;\n this.adjustViewer(true);\n this.enableAnnotationAddTools(false);\n this.pdfViewer.isAnnotationToolbarVisible = true;\n }\n else {\n this.toolbarElement.style.display = 'none';\n this.isToolbarHidden = true;\n this.pdfViewer.isAnnotationToolbarVisible = false;\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearTextMarkupMode = function () {\n if (this.pdfViewerBase.isTextMarkupAnnotationModule()) {\n if (isBlazor()) {\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.isTextMarkupAnnotationMode = false;\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.currentTextMarkupAddMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearShapeMode = function () {\n if (this.pdfViewerBase.isShapeAnnotationModule()) {\n this.pdfViewer.annotation.shapeAnnotationModule.currentAnnotationMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clearMeasureMode = function () {\n if (this.pdfViewerBase.isCalibrateAnnotationModule()) {\n this.pdfViewer.annotation.measureAnnotationModule.currentAnnotationMode = '';\n }\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.clear = function () {\n this.deselectAllItems();\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.destroy = function () {\n this.destroyComponent();\n this.shapeDropDown ? this.shapeDropDown.destroy() : null;\n this.calibrateDropDown ? this.calibrateDropDown.destroy() : null;\n this.fontColorDropDown ? this.fontColorDropDown.destroy() : null;\n this.textAlignDropDown ? this.textAlignDropDown.destroy() : null;\n this.colorDropDown ? this.colorDropDown.destroy() : null;\n this.strokeDropDown ? this.strokeDropDown.destroy() : null;\n this.thicknessDropDown ? this.thicknessDropDown.destroy() : null;\n this.opacityDropDown ? this.opacityDropDown.destroy() : null;\n this.textPropertiesDropDown ? this.textPropertiesDropDown.destroy() : null;\n this.toolbar ? this.toolbar.destroy() : null;\n // eslint-disable-next-line\n var stampImage = document.getElementById(this.pdfViewer.element.id + '_stampElement');\n if (stampImage) {\n stampImage.parentElement.removeChild(stampImage);\n }\n };\n AnnotationToolbar.prototype.destroyComponent = function () {\n // eslint-disable-next-line\n var componentElement = [this.highlightItem, this.underlineItem, this.strikethroughItem, this.lineElement, this.arrowElement,\n this.rectangleElement, this.circleElement, this.polygonElement, this.calibrateDistance, this.calibrateArea, this.calibrateRadius,\n this.calibrateVolume, this.calibratePerimeter, this.freeTextEditItem, this.stampElement, this.handWrittenSignatureItem, this.inkAnnotationItem,\n this.fontFamilyElement, this.fontSizeElement, this.alignLeftElement, this.alignRightElement, this.alignCenterElement, this.alignJustifyElement,\n this.boldElement, this.italicElement, this.fontStyleStrikethroughItem, this.fontStyleUnderlineItem, this.deleteItem, this.commentItem,\n this.shapeDropDown ? this.shapeDropDown.activeElem[0] : null, this.calibrateDropDown ? this.calibrateDropDown.activeElem[0] : null, this.fontColorDropDown ? this.fontColorDropDown.activeElem[0] : null, this.textAlignDropDown ? this.textAlignDropDown.activeElem[0] : null,\n this.colorDropDown ? this.colorDropDown.activeElem[0] : null, this.strokeDropDown ? this.strokeDropDown.activeElem[0] : null, this.thicknessDropDown ? this.thicknessDropDown.activeElem[0] : null, this.opacityDropDown ? this.opacityDropDown.activeElem[0] : null, this.textPropertiesDropDown ? this.textPropertiesDropDown.activeElem[0] : null\n ];\n for (var i = 0; i < componentElement.length; i++) {\n if (componentElement[i]) {\n this.destroyDependentComponent(componentElement[i]);\n }\n }\n };\n AnnotationToolbar.prototype.destroyDependentComponent = function (component) {\n if (component.ej2_instances) {\n for (var i = component.ej2_instances.length - 1; i >= 0; i--) {\n component.ej2_instances[i].destroy();\n }\n }\n };\n AnnotationToolbar.prototype.getElementHeight = function (element) {\n try {\n return element.getBoundingClientRect().height;\n }\n catch (error) {\n return 0;\n }\n };\n AnnotationToolbar.prototype.updateViewerHeight = function (viewerHeight, toolbarHeight) {\n return this.getElementHeight(this.pdfViewer.element) - toolbarHeight;\n };\n AnnotationToolbar.prototype.resetViewerHeight = function (viewerHeight, toolbarHeight) {\n return viewerHeight + toolbarHeight;\n };\n /**\n * @private\n */\n AnnotationToolbar.prototype.afterAnnotationToolbarCreationInBlazor = function () {\n this.HighlightElement = document.getElementById(this.pdfViewer.element.id + '_highLight').children[0];\n this.UnderlineElement = document.getElementById(this.pdfViewer.element.id + '_underline').children[0];\n this.StrikethroughElement = document.getElementById(this.pdfViewer.element.id + '_strikethrough').children[0];\n this.InkAnnotationElement = document.getElementById(this.pdfViewer.element.id + '_annotation_ink').children[0];\n this.InkAnnotationElement.classList.add('e-pv-tbar-btn');\n this.FreeTextElement = document.getElementById(this.pdfViewer.element.id + '_annotation_freeTextEdit').children[0];\n this.HighlightElement = this.addClassToToolbarInBlazor(this.HighlightElement, 'e-pv-highlight', '_highLight');\n this.UnderlineElement = this.addClassToToolbarInBlazor(this.UnderlineElement, 'e-pv-underline', '_underline');\n this.StrikethroughElement = this.addClassToToolbarInBlazor(this.StrikethroughElement, 'e-pv-strikethrough', '_strikethrough');\n };\n // eslint-disable-next-line\n AnnotationToolbar.prototype.addClassToToolbarInBlazor = function (element, className, idString) {\n element.classList.add(className);\n element.classList.add('e-pv-tbar-btn');\n if (element.childNodes.length > 0) {\n var spanElement = element.childNodes[0];\n if (spanElement && spanElement.classList) {\n spanElement.id = this.pdfViewer.element.id + idString + 'Icon';\n spanElement.classList.remove('e-icons');\n spanElement.classList.remove('e-btn-icon');\n if (this.pdfViewer.enableRtl) {\n spanElement.classList.add('e-right');\n }\n }\n }\n return element;\n };\n AnnotationToolbar.prototype.handleHighlightInBlazor = function () {\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n else if (!this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.HighlightElement);\n }\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n };\n AnnotationToolbar.prototype.handleUnderlineInBlazor = function () {\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n else if (!this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.UnderlineElement);\n }\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n };\n AnnotationToolbar.prototype.handleStrikethroughInBlazor = function () {\n if (this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.StrikethroughElement);\n }\n else if (!this.StrikethroughElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.selectItem(this.StrikethroughElement);\n }\n if (this.HighlightElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.HighlightElement);\n }\n if (this.UnderlineElement.classList.contains('e-pv-select')) {\n this.primaryToolbar.deSelectItem(this.UnderlineElement);\n }\n };\n AnnotationToolbar.prototype.AnnotationSliderOpened = function () {\n if (this.pdfViewer.selectedItems.annotations && this.pdfViewer.selectedItems.annotations.length > 0 && this.pdfViewer.selectedItems.annotations[0]) {\n if (this.pdfViewer.selectedItems.annotations[0].wrapper && this.pdfViewer.selectedItems.annotations[0].wrapper.children[0]) {\n var opacity = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.opacity * 100;\n var thickness = this.pdfViewer.selectedItems.annotations[0].wrapper.children[0].style.strokeWidth;\n this.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateAnnotationSlider', opacity, thickness);\n }\n }\n };\n AnnotationToolbar.prototype.DropDownOpened = function (colorElement) {\n if (colorElement && colorElement[0].element) {\n var colorElementBounds = colorElement[0].element.getBoundingClientRect();\n var sidebarElement = this.pdfViewerBase.navigationPane.sideBarToolbar;\n var sideBarElementWidth = (sidebarElement) ? sidebarElement.getBoundingClientRect().width : 0;\n if (colorElementBounds.left > this.pdfViewerBase.viewerContainer.clientWidth + colorElementBounds.width + sideBarElementWidth) {\n colorElement[0].element.style.left = (colorElementBounds.left - (this.pdfViewerBase.viewerContainer.clientHeight / 2)) + 'px';\n }\n }\n };\n return AnnotationToolbar;\n}());\n\n/**\n * export types\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar __awaiter$2 = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\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) : new P(function (resolve) { resolve(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};\n/* eslint-disable */\n// eslint-disable-next-line max-len\n// eslint-disable-next-line max-len\n/**\n * The `ToolbarSettings` module is used to provide the toolbar settings of PDF viewer.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the tool bar settings.\n * viewer.toolbarSettings = {\n * showTooltip: false,\n * toolbarItems: [\n * \"OpenOption\",\n * \"UndoRedoTool\",\n * \"PageNavigationTool\",\n * \"MagnificationTool\",\n * \"PanTool\",\n * \"SelectionTool\",\n * \"CommentTool\",\n * \"SubmitForm\",\n * \"AnnotationEditTool\",\n * \"FormDesignerEditTool\",\n * \"FreeTextAnnotationOption\",\n * \"InkAnnotationOption\",\n * \"ShapeAnnotationOption\",\n * \"StampAnnotation\",\n * \"SignatureOption\",\n * \"SearchOption\",\n * \"PrintOption\",\n * \"DownloadOption\"\n * ],\n * annotationToolbarItems: [\n * \"HighlightTool\",\n * \"UnderlineTool\",\n * \"StrikethroughTool\",\n * \"ColorEditTool\",\n * \"OpacityEditTool\",\n * \"AnnotationDeleteTool\",\n * \"StampAnnotationTool\",\n * \"HandWrittenSignatureTool\",\n * \"InkAnnotationTool\",\n * \"ShapeTool\",\n * \"CalibrateTool\",\n * \"StrokeColorEditTool\",\n * \"ThicknessEditTool\",\n * \"FreeTextAnnotationTool\",\n * \"FontFamilyAnnotationTool\",\n * \"FontSizeAnnotationTool\",\n * \"FontStylesAnnotationTool\",\n * \"FontAlignAnnotationTool\",\n * \"FontColorAnnotationTool\",\n * \"CommentPanelTool\"\n * ],\n * formDesignerToolbarItems: [\n * \"TextboxTool\",\n * \"PasswordTool\",\n * \"CheckBoxTool\",\n * \"RadioButtonTool\",\n * \"DropdownTool\",\n * \"ListboxTool\",\n * \"DrawSignatureTool\",\n * \"DeleteTool\"\n * ]\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ToolbarSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ToolbarSettings, _super);\n function ToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(true)\n ], ToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate$2([\n Property()\n ], ToolbarSettings.prototype, \"toolbarItems\", void 0);\n __decorate$2([\n Property()\n ], ToolbarSettings.prototype, \"annotationToolbarItems\", void 0);\n __decorate$2([\n Property()\n ], ToolbarSettings.prototype, \"formDesignerToolbarItems\", void 0);\n return ToolbarSettings;\n}(ChildProperty));\n/**\n * The `AjaxRequestSettings` module is used to set the ajax Request Headers of PDF viewer.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // HTTP header \"X-Custom-Header\": \"Custom header value\" // Custom HTTP header\n * viewer.ajaxRequestSettings = {\n * ajaxHeaders: [\n * {\n * headerName : \"Authorization\",\n * headerValue : \"Bearer\"\n * }\n * ],\n * withCredentials: false\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AjaxRequestSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AjaxRequestSettings, _super);\n function AjaxRequestSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property()\n ], AjaxRequestSettings.prototype, \"ajaxHeaders\", void 0);\n __decorate$2([\n Property(false)\n ], AjaxRequestSettings.prototype, \"withCredentials\", void 0);\n return AjaxRequestSettings;\n}(ChildProperty));\n/**\n * The `CustomStamp` module is used to provide the custom stamp added in stamp menu of the PDF Viewer toolbar.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Add your custom stamp image source as base64 image.\n * viewer.customStamp = [\n * {\n * customStampName: 'Sample',\n * customStampImageSource: \"data:image/png;base64, Syncfusion pdf viewer\"\n * }\n * ];\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CustomStamp = /** @__PURE__ @class */ (function (_super) {\n __extends$4(CustomStamp, _super);\n function CustomStamp() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('')\n ], CustomStamp.prototype, \"customStampName\", void 0);\n __decorate$2([\n Property('')\n ], CustomStamp.prototype, \"customStampImageSource\", void 0);\n return CustomStamp;\n}(ChildProperty));\n/**\n * The `AnnotationToolbarSettings` module is used to provide the annotation toolbar settings of the PDF viewer.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the annotation tool bar settings.\n * viewer.toolbarSettings = {\n * showTooltip: false,\n * annotationToolbarItems: [\n * \"HighlightTool\",\n * \"UnderlineTool\",\n * \"StrikethroughTool\",\n * \"ColorEditTool\",\n * \"OpacityEditTool\",\n * \"AnnotationDeleteTool\",\n * \"StampAnnotationTool\",\n * \"HandWrittenSignatureTool\",\n * \"InkAnnotationTool\",\n * \"ShapeTool\",\n * \"CalibrateTool\",\n * \"StrokeColorEditTool\",\n * \"ThicknessEditTool\",\n * \"FreeTextAnnotationTool\",\n * \"FontFamilyAnnotationTool\",\n * \"FontSizeAnnotationTool\",\n * \"FontStylesAnnotationTool\",\n * \"FontAlignAnnotationTool\",\n * \"FontColorAnnotationTool\",\n * \"CommentPanelTool\"\n * ],\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AnnotationToolbarSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AnnotationToolbarSettings, _super);\n function AnnotationToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(true)\n ], AnnotationToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate$2([\n Property()\n ], AnnotationToolbarSettings.prototype, \"annotationToolbarItem\", void 0);\n return AnnotationToolbarSettings;\n}(ChildProperty));\n/**\n * The `FormDesignerToolbarSettings` module is used to provide the Form designer toolbar settings of the PDF viewer.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the form field tool bar settings.\n * viewer.toolbarSettings = {\n * showTooltip: false,\n * formDesignerToolbarItems: [\n * \"TextboxTool\",\n * \"PasswordTool\",\n * \"CheckBoxTool\",\n * \"RadioButtonTool\",\n * \"DropdownTool\",\n * \"ListboxTool\",\n * \"DrawSignatureTool\",\n * \"DeleteTool\"\n * ]\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar FormDesignerToolbarSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(FormDesignerToolbarSettings, _super);\n function FormDesignerToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(true)\n ], FormDesignerToolbarSettings.prototype, \"showTooltip\", void 0);\n __decorate$2([\n Property()\n ], FormDesignerToolbarSettings.prototype, \"formDesignerToolbarItem\", void 0);\n return FormDesignerToolbarSettings;\n}(ChildProperty));\n/**\n * The `SignatureFieldSettings` module is used to set the properties of signature field in PDF Viewer\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the signature field settings.\n * viewer.signatureFieldSettings = {\n * name: \"\",\n * isReadOnly: true,\n * visibility: \"visible\",\n * isRequired: true,\n * isPrint: false,\n * tooltip: \"\",\n * thickness: 1,\n * signatureIndicatorSettings: {\n * opacity: 1,\n * backgroundColor: \"orange\",\n * width: 19,\n * height: 10,\n * fontSize: 10,\n * text: null,\n * color: \"black\"\n * },\n * signatureDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: false\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar SignatureFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(SignatureFieldSettings, _super);\n function SignatureFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], SignatureFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], SignatureFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property('visible')\n ], SignatureFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(false)\n ], SignatureFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], SignatureFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(1)\n ], SignatureFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property(0)\n ], SignatureFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property()\n ], SignatureFieldSettings.prototype, \"signatureDialogSettings\", void 0);\n __decorate$2([\n Property()\n ], SignatureFieldSettings.prototype, \"signatureIndicatorSettings\", void 0);\n return SignatureFieldSettings;\n}(ChildProperty));\n/**\n * The `InitialFieldSettings` module is used to set the properties of initial field in PDF Viewer\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Changes the initial field settings.\n * viewer.initialFieldSettings = {\n * name: \"\",\n * isReadOnly: true,\n * visibility: \"visible\",\n * isRequired: true,\n * isPrint: true,\n * tooltip: \"\",\n * thickness: 1,\n * initialIndicatorSettings: {\n * opacity: 1,\n * backgroundColor: \"orange\",\n * width: 19,\n * height: 10,\n * fontSize: 10,\n * text: null,\n * color: \"black\"\n * },\n * initialDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: false\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar InitialFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(InitialFieldSettings, _super);\n function InitialFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], InitialFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], InitialFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property(false)\n ], InitialFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property('visible')\n ], InitialFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(false)\n ], InitialFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(false)\n ], InitialFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], InitialFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(1)\n ], InitialFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property(0)\n ], InitialFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(false)\n ], InitialFieldSettings.prototype, \"isInitialField\", void 0);\n __decorate$2([\n Property()\n ], InitialFieldSettings.prototype, \"initialDialogSettings\", void 0);\n __decorate$2([\n Property()\n ], InitialFieldSettings.prototype, \"initialIndicatorSettings\", void 0);\n return InitialFieldSettings;\n}(ChildProperty));\n/**\n * The `SignatureIndicatorSettings` module is used to provide the properties of signature Indicator in the signature field.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the signature indicator settings.\n * viewer.signatureFieldSettings = {\n * signatureIndicatorSettings: {\n * opacity: 1,\n * backgroundColor: 'orange',\n * width: 19,\n * height: 10,\n * fontSize: 10,\n * text: null,\n * color: 'black'\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar SignatureIndicatorSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(SignatureIndicatorSettings, _super);\n function SignatureIndicatorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(1)\n ], SignatureIndicatorSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('orange')\n ], SignatureIndicatorSettings.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property(19)\n ], SignatureIndicatorSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(10)\n ], SignatureIndicatorSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(10)\n ], SignatureIndicatorSettings.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property(null)\n ], SignatureIndicatorSettings.prototype, \"text\", void 0);\n __decorate$2([\n Property('black')\n ], SignatureIndicatorSettings.prototype, \"color\", void 0);\n return SignatureIndicatorSettings;\n}(ChildProperty));\n/**\n * The `SignatureDialogSettings` module is used to customize the signature dialog box.\n *\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the signature dialog settings.\n * viewer.signatureDialogSettings = {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar SignatureDialogSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(SignatureDialogSettings, _super);\n function SignatureDialogSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload)\n ], SignatureDialogSettings.prototype, \"displayMode\", void 0);\n __decorate$2([\n Property(false)\n ], SignatureDialogSettings.prototype, \"hideSaveSignature\", void 0);\n return SignatureDialogSettings;\n}(ChildProperty));\n/**\n * The `ServerActionSettings` module is used to provide the server action methods of PDF viewer.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the server action settings.\n * viewer.serverActionSettings = {\n * load: \"Load\",\n * renderPages: \"RenderPdfPages\",\n * unload: \"Unload\",\n * download: \"Download\",\n * renderThumbnail: \"RenderThumbnailImages\",\n * print: \"PrintImages\",\n * renderComments: \"RenderAnnotationComments\",\n * importAnnotations: \"ImportAnnotations\",\n * exportAnnotations: \"ExportAnnotations\",\n * importFormFields: \"ImportFormFields\",\n * exportFormFields: \"ExportFormFields\",\n * renderTexts: \"RenderPdfTexts\"\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ServerActionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ServerActionSettings, _super);\n function ServerActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('Load')\n ], ServerActionSettings.prototype, \"load\", void 0);\n __decorate$2([\n Property('Unload')\n ], ServerActionSettings.prototype, \"unload\", void 0);\n __decorate$2([\n Property('RenderPdfPages')\n ], ServerActionSettings.prototype, \"renderPages\", void 0);\n __decorate$2([\n Property('RenderPdfPages')\n ], ServerActionSettings.prototype, \"print\", void 0);\n __decorate$2([\n Property('Download')\n ], ServerActionSettings.prototype, \"download\", void 0);\n __decorate$2([\n Property('RenderThumbnailImages')\n ], ServerActionSettings.prototype, \"renderThumbnail\", void 0);\n __decorate$2([\n Property('RenderAnnotationComments')\n ], ServerActionSettings.prototype, \"renderComments\", void 0);\n __decorate$2([\n Property('ImportAnnotations')\n ], ServerActionSettings.prototype, \"importAnnotations\", void 0);\n __decorate$2([\n Property('ExportAnnotations')\n ], ServerActionSettings.prototype, \"exportAnnotations\", void 0);\n __decorate$2([\n Property('ImportFormFields')\n ], ServerActionSettings.prototype, \"importFormFields\", void 0);\n __decorate$2([\n Property('ExportFormFields')\n ], ServerActionSettings.prototype, \"exportFormFields\", void 0);\n __decorate$2([\n Property('RenderPdfTexts')\n ], ServerActionSettings.prototype, \"renderTexts\", void 0);\n return ServerActionSettings;\n}(ChildProperty));\n/**\n * The `StrikethroughSettings` module is used to provide the properties to Strikethrough annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the strike through annotation settings.\n * viewer.strikethroughSettings = {\n * opacity: 1,\n * color: '#ff0000',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar StrikethroughSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(StrikethroughSettings, _super);\n function StrikethroughSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(1)\n ], StrikethroughSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], StrikethroughSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], StrikethroughSettings.prototype, \"color\", void 0);\n __decorate$2([\n Property('Guest')\n ], StrikethroughSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('')\n ], StrikethroughSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(null)\n ], StrikethroughSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(false)\n ], StrikethroughSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(false)\n ], StrikethroughSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate$2([\n Property(false)\n ], StrikethroughSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate$2([\n Property(['None'])\n ], StrikethroughSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], StrikethroughSettings.prototype, \"isPrint\", void 0);\n return StrikethroughSettings;\n}(ChildProperty));\n/**\n * The `UnderlineSettings` module is used to provide the properties to Underline annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the underline annotation settings.\n * viewer.underlineSettings = {\n * opacity: 1,\n * color: '#9c2592',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar UnderlineSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(UnderlineSettings, _super);\n function UnderlineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(1)\n ], UnderlineSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], UnderlineSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#00ff00')\n ], UnderlineSettings.prototype, \"color\", void 0);\n __decorate$2([\n Property('Guest')\n ], UnderlineSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('')\n ], UnderlineSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(null)\n ], UnderlineSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(false)\n ], UnderlineSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(false)\n ], UnderlineSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate$2([\n Property(false)\n ], UnderlineSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate$2([\n Property(['None'])\n ], UnderlineSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], UnderlineSettings.prototype, \"isPrint\", void 0);\n return UnderlineSettings;\n}(ChildProperty));\n/**\n * The `HighlightSettings` module is used to provide the properties to Highlight annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the highlight annotation settings.\n * viewer.highlightSettings = {\n * opacity: 1,\n * color: '#ff0000',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar HighlightSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(HighlightSettings, _super);\n function HighlightSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(1)\n ], HighlightSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], HighlightSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffff00')\n ], HighlightSettings.prototype, \"color\", void 0);\n __decorate$2([\n Property('Guest')\n ], HighlightSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('')\n ], HighlightSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(null)\n ], HighlightSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(false)\n ], HighlightSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(false)\n ], HighlightSettings.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate$2([\n Property(false)\n ], HighlightSettings.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate$2([\n Property(['None'])\n ], HighlightSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], HighlightSettings.prototype, \"isPrint\", void 0);\n return HighlightSettings;\n}(ChildProperty));\n/**\n * The `LineSettings` module is used to provide the properties to line annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the line annotation settings.\n * viewer.lineSettings = {\n * opacity: 1,\n * color: '#9c2592',\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges\n * },\n * isLock: false,\n * enableMultiPageAnnotation: false,\n * enableTextMarkupResizer: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar LineSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(LineSettings, _super);\n function LineSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], LineSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], LineSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], LineSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], LineSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], LineSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], LineSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], LineSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('None')\n ], LineSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate$2([\n Property('None')\n ], LineSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate$2([\n Property(0)\n ], LineSettings.prototype, \"borderDashArray\", void 0);\n __decorate$2([\n Property('')\n ], LineSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], LineSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], LineSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], LineSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], LineSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], LineSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], LineSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], LineSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], LineSettings.prototype, \"isPrint\", void 0);\n return LineSettings;\n}(ChildProperty));\n/**\n * The `ArrowSettings` module is used to provide the properties to arrow annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the arrow annotation settings.\n * viewer.arrowSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * borderDashArray: 0,\n * lineHeadStartStyle: 'Closed',\n * lineHeadEndStyle: 'Closed',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ArrowSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ArrowSettings, _super);\n function ArrowSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], ArrowSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], ArrowSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], ArrowSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], ArrowSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], ArrowSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], ArrowSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], ArrowSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('None')\n ], ArrowSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate$2([\n Property('None')\n ], ArrowSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate$2([\n Property(0)\n ], ArrowSettings.prototype, \"borderDashArray\", void 0);\n __decorate$2([\n Property('')\n ], ArrowSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], ArrowSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], ArrowSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], ArrowSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], ArrowSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], ArrowSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], ArrowSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], ArrowSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], ArrowSettings.prototype, \"isPrint\", void 0);\n return ArrowSettings;\n}(ChildProperty));\n/**\n * The `RectangleSettings` module is used to provide the properties to rectangle annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the rectangle annotation settings.\n * viewer.rectangleSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar RectangleSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(RectangleSettings, _super);\n function RectangleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], RectangleSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], RectangleSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(100)\n ], RectangleSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(50)\n ], RectangleSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(1)\n ], RectangleSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], RectangleSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], RectangleSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], RectangleSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], RectangleSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('')\n ], RectangleSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], RectangleSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], RectangleSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], RectangleSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], RectangleSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], RectangleSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], RectangleSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], RectangleSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], RectangleSettings.prototype, \"isPrint\", void 0);\n return RectangleSettings;\n}(ChildProperty));\n/**\n * The `CircleSettings` module is used to provide the properties to circle annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the circle annotation settings.\n * viewer.circleSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CircleSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(CircleSettings, _super);\n function CircleSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], CircleSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], CircleSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(100)\n ], CircleSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(100)\n ], CircleSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(1)\n ], CircleSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], CircleSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], CircleSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], CircleSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], CircleSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('')\n ], CircleSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], CircleSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], CircleSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], CircleSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], CircleSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], CircleSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], CircleSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], CircleSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], CircleSettings.prototype, \"isPrint\", void 0);\n return CircleSettings;\n}(ChildProperty));\n/**\n * The `ShapeLabelSettings` module is used to provide the properties to rectangle annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the shape label settings.\n * viewer.shapeLabelSettings = {\n * opacity: 1,\n * fillColor: '#9c2592',\n * borderColor: '#ff0000',\n * fontColor: '#000',\n * fontSize: 16,\n * labelHeight: 24.6,\n * labelMaxWidth: 151,\n * labelContent: 'Label'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ShapeLabelSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ShapeLabelSettings, _super);\n function ShapeLabelSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(1)\n ], ShapeLabelSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], ShapeLabelSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#000')\n ], ShapeLabelSettings.prototype, \"fontColor\", void 0);\n __decorate$2([\n Property(16)\n ], ShapeLabelSettings.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property('Helvetica')\n ], ShapeLabelSettings.prototype, \"fontFamily\", void 0);\n __decorate$2([\n Property('Label')\n ], ShapeLabelSettings.prototype, \"labelContent\", void 0);\n __decorate$2([\n Property('')\n ], ShapeLabelSettings.prototype, \"notes\", void 0);\n return ShapeLabelSettings;\n}(ChildProperty));\n/**\n * The `PolygonSettings` module is used to provide the properties to polygon annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the polygon annotation settings.\n * viewer.polygonSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar PolygonSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(PolygonSettings, _super);\n function PolygonSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], PolygonSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], PolygonSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], PolygonSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], PolygonSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], PolygonSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], PolygonSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], PolygonSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('')\n ], PolygonSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], PolygonSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], PolygonSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], PolygonSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], PolygonSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], PolygonSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], PolygonSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], PolygonSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], PolygonSettings.prototype, \"isPrint\", void 0);\n return PolygonSettings;\n}(ChildProperty));\n/**\n * The `stampSettings` module is used to provide the properties to stamp annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the stamp annotation settings.\n * viewer.stampSettings = {\n * opacity: 1,\n * author: 'Guest',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'red',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 5,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * dynamicStamps: [\n * DynamicStampItem.Revised,\n * DynamicStampItem.Reviewed,\n * DynamicStampItem.Received,\n * DynamicStampItem.Confidential,\n * DynamicStampItem.Approved,\n * DynamicStampItem.NotApproved\n * ],\n * signStamps: [\n * SignStampItem.Witness,\n * SignStampItem.InitialHere,\n * SignStampItem.SignHere,\n * SignStampItem.Accepted,\n * SignStampItem.Rejected\n * ],\n * standardBusinessStamps: [\n * StandardBusinessStampItem.Approved,\n * StandardBusinessStampItem.NotApproved,\n * StandardBusinessStampItem.Draft,\n * StandardBusinessStampItem.Final,\n * StandardBusinessStampItem.Completed,\n * StandardBusinessStampItem.Confidential,\n * StandardBusinessStampItem.ForPublicRelease,\n * StandardBusinessStampItem.NotForPublicRelease,\n * StandardBusinessStampItem.ForComment,\n * StandardBusinessStampItem.Void,\n * StandardBusinessStampItem.PreliminaryResults,\n * StandardBusinessStampItem.InformationOnly\n * ],\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar StampSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(StampSettings, _super);\n function StampSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], StampSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], StampSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(150)\n ], StampSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(50)\n ], StampSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(1)\n ], StampSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('Guest')\n ], StampSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('')\n ], StampSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], StampSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], StampSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], StampSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], StampSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], StampSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], StampSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property([])\n ], StampSettings.prototype, \"dynamicStamps\", void 0);\n __decorate$2([\n Property([])\n ], StampSettings.prototype, \"signStamps\", void 0);\n __decorate$2([\n Property([])\n ], StampSettings.prototype, \"standardBusinessStamps\", void 0);\n __decorate$2([\n Property(['None'])\n ], StampSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], StampSettings.prototype, \"isPrint\", void 0);\n return StampSettings;\n}(ChildProperty));\n/**\n * The `CustomStampSettings` module is used to provide the properties to customstamp annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n *\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the custom stamp annotation settings.\n * viewer.customStampSettings = {\n * opacity: 1,\n * author: 'Guest',\n * width: 0,\n * height: 0,\n * left: 0,\n * top: 0,\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * enableCustomStamp: true,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CustomStampSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(CustomStampSettings, _super);\n function CustomStampSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], CustomStampSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], CustomStampSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], CustomStampSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('Guest')\n ], CustomStampSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"left\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"top\", void 0);\n __decorate$2([\n Property(false)\n ], CustomStampSettings.prototype, \"isAddToMenu\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], CustomStampSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], CustomStampSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property('')\n ], CustomStampSettings.prototype, \"customStamps\", void 0);\n __decorate$2([\n Property(true)\n ], CustomStampSettings.prototype, \"enableCustomStamp\", void 0);\n __decorate$2([\n Property(['None'])\n ], CustomStampSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], CustomStampSettings.prototype, \"isPrint\", void 0);\n return CustomStampSettings;\n}(ChildProperty));\n/**\n * The `DistanceSettings` module is used to provide the properties to distance calibrate annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n *\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the distance annotation settings.\n * viewer.distanceSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * borderDashArray: 0,\n * lineHeadStartStyle: 'Closed',\n * lineHeadEndStyle: 'Closed',\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * leaderLength: 40,\n * resizeCursorType: CursorType.move,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar DistanceSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(DistanceSettings, _super);\n function DistanceSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], DistanceSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], DistanceSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], DistanceSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], DistanceSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], DistanceSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], DistanceSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], DistanceSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('None')\n ], DistanceSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate$2([\n Property('None')\n ], DistanceSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate$2([\n Property(0)\n ], DistanceSettings.prototype, \"borderDashArray\", void 0);\n __decorate$2([\n Property('')\n ], DistanceSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], DistanceSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], DistanceSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], DistanceSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], DistanceSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], DistanceSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], DistanceSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(40)\n ], DistanceSettings.prototype, \"leaderLength\", void 0);\n __decorate$2([\n Property(CursorType.move)\n ], DistanceSettings.prototype, \"resizeCursorType\", void 0);\n __decorate$2([\n Property(['None'])\n ], DistanceSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], DistanceSettings.prototype, \"isPrint\", void 0);\n return DistanceSettings;\n}(ChildProperty));\n/**\n * The `PerimeterSettings` module is used to provide the properties to perimeter calibrate annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the perimeter annotation settings.\n * viewer.perimeterSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * borderDashArray: 0,\n * lineHeadStartStyle: 'Open',\n * lineHeadEndStyle: 'Open',\n * minHeight: 0, minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar PerimeterSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(PerimeterSettings, _super);\n function PerimeterSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], PerimeterSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], PerimeterSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], PerimeterSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], PerimeterSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], PerimeterSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], PerimeterSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], PerimeterSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('None')\n ], PerimeterSettings.prototype, \"lineHeadStartStyle\", void 0);\n __decorate$2([\n Property('None')\n ], PerimeterSettings.prototype, \"lineHeadEndStyle\", void 0);\n __decorate$2([\n Property(0)\n ], PerimeterSettings.prototype, \"borderDashArray\", void 0);\n __decorate$2([\n Property(0)\n ], PerimeterSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], PerimeterSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], PerimeterSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], PerimeterSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], PerimeterSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property('')\n ], PerimeterSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(['None'])\n ], PerimeterSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], PerimeterSettings.prototype, \"isPrint\", void 0);\n return PerimeterSettings;\n}(ChildProperty));\n/**\n * The `AreaSettings` module is used to provide the properties to area calibrate annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the area annotation settings.\n * viewer.areaSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AreaSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AreaSettings, _super);\n function AreaSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], AreaSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], AreaSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], AreaSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], AreaSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], AreaSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], AreaSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], AreaSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property(0)\n ], AreaSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], AreaSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], AreaSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], AreaSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], AreaSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property('')\n ], AreaSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(['None'])\n ], AreaSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], AreaSettings.prototype, \"isPrint\", void 0);\n return AreaSettings;\n}(ChildProperty));\n/**\n * The `RadiusSettings` module is used to provide the properties to radius calibrate annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the radius annotation settings.\n * viewer.radiusSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'red',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar RadiusSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(RadiusSettings, _super);\n function RadiusSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], RadiusSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], RadiusSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(100)\n ], RadiusSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(90)\n ], RadiusSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(1)\n ], RadiusSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], RadiusSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], RadiusSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], RadiusSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], RadiusSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('')\n ], RadiusSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], RadiusSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], RadiusSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], RadiusSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], RadiusSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], RadiusSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], RadiusSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], RadiusSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], RadiusSettings.prototype, \"isPrint\", void 0);\n return RadiusSettings;\n}(ChildProperty));\n/**\n * The `VolumeSettings` module is used to provide the properties to volume calibrate annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the volume annotation settings.\n * viewer.volumeSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * strokeColor: '#ff0000',\n * author: 'Guest',\n * thickness: 1,\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar VolumeSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(VolumeSettings, _super);\n function VolumeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], VolumeSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], VolumeSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], VolumeSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], VolumeSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], VolumeSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property('Guest')\n ], VolumeSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('1')\n ], VolumeSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property(0)\n ], VolumeSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], VolumeSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], VolumeSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], VolumeSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], VolumeSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property('')\n ], VolumeSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(['None'])\n ], VolumeSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], VolumeSettings.prototype, \"isPrint\", void 0);\n return VolumeSettings;\n}(ChildProperty));\n/**\n * The `Ink` module is used to provide the properties to Ink annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the ink annotation settings.\n * viewer.inkAnnotationSettings = {\n * author: 'Guest',\n * opacity: 1,\n * strokeColor: '#ff0000',\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar InkAnnotationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(InkAnnotationSettings, _super);\n function InkAnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], InkAnnotationSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], InkAnnotationSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(0)\n ], InkAnnotationSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(0)\n ], InkAnnotationSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(0)\n ], InkAnnotationSettings.prototype, \"path\", void 0);\n __decorate$2([\n Property(1)\n ], InkAnnotationSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ff0000')\n ], InkAnnotationSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property(1)\n ], InkAnnotationSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('')\n ], InkAnnotationSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(false)\n ], InkAnnotationSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property('Guest')\n ], InkAnnotationSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property(['None'])\n ], InkAnnotationSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(null)\n ], InkAnnotationSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(true)\n ], InkAnnotationSettings.prototype, \"isPrint\", void 0);\n return InkAnnotationSettings;\n}(ChildProperty));\n/**\n * The `stickyNotesSettings` module is used to provide the properties to sticky notes annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the sticky notes annotation settings.\n * viewer.stickyNotesSettings = {\n * author: 'Guest',\n * opacity: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'red',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar StickyNotesSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(StickyNotesSettings, _super);\n function StickyNotesSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], StickyNotesSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], StickyNotesSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property('Guest')\n ], StickyNotesSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property(1)\n ], StickyNotesSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('')\n ], StickyNotesSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(null)\n ], StickyNotesSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(false)\n ], StickyNotesSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(['None'])\n ], StickyNotesSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], StickyNotesSettings.prototype, \"isPrint\", void 0);\n return StickyNotesSettings;\n}(ChildProperty));\n/**\n * The `MeasurementSettings` module is used to provide the settings to measurement annotations.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the measurement annotation settings.\n * viewer.measurementSettings = {\n * conversionUnit: 'cm',\n * displayUnit: 'cm',\n * scaleRatio: 1,\n * depth: 96\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar MeasurementSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(MeasurementSettings, _super);\n function MeasurementSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(1)\n ], MeasurementSettings.prototype, \"scaleRatio\", void 0);\n __decorate$2([\n Property('in')\n ], MeasurementSettings.prototype, \"conversionUnit\", void 0);\n __decorate$2([\n Property('in')\n ], MeasurementSettings.prototype, \"displayUnit\", void 0);\n __decorate$2([\n Property(96)\n ], MeasurementSettings.prototype, \"depth\", void 0);\n return MeasurementSettings;\n}(ChildProperty));\n/**\n * The `FreeTextSettings` module is used to provide the properties to free text annotation.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the free text annotation settings.\n * viewer.freeTextSettings = {\n * opacity: 1,\n * fillColor: '#4070FF',\n * borderColor: '#4070FF',\n * author: 'Guest',\n * borderWidth: 1,\n * width: 151,\n * fontSize: 16,\n * height: 24.6,\n * fontColor: '#000',\n * fontFamily: 'Courier',\n * defaultText: 'Type Here',\n * textAlignment: 'Right',\n * fontStyle: FontStyle.Italic,\n * allowTextOnly: false,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * allowedInteractions: ['None'],\n * isPrint: true,\n * isReadonly: false,\n * enableAutoFit: false\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar FreeTextSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(FreeTextSettings, _super);\n function FreeTextSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0 })\n ], FreeTextSettings.prototype, \"offset\", void 0);\n __decorate$2([\n Property(1)\n ], FreeTextSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property(1)\n ], FreeTextSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], FreeTextSettings.prototype, \"borderColor\", void 0);\n __decorate$2([\n Property(1)\n ], FreeTextSettings.prototype, \"borderWidth\", void 0);\n __decorate$2([\n Property('solid')\n ], FreeTextSettings.prototype, \"borderStyle\", void 0);\n __decorate$2([\n Property('Guest')\n ], FreeTextSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property('#ffffff00')\n ], FreeTextSettings.prototype, \"fillColor\", void 0);\n __decorate$2([\n Property(16)\n ], FreeTextSettings.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property(151)\n ], FreeTextSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(24.6)\n ], FreeTextSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property('#000')\n ], FreeTextSettings.prototype, \"fontColor\", void 0);\n __decorate$2([\n Property('Helvetica')\n ], FreeTextSettings.prototype, \"fontFamily\", void 0);\n __decorate$2([\n Property('TypeHere')\n ], FreeTextSettings.prototype, \"defaultText\", void 0);\n __decorate$2([\n Property('None')\n ], FreeTextSettings.prototype, \"fontStyle\", void 0);\n __decorate$2([\n Property('Left')\n ], FreeTextSettings.prototype, \"textAlignment\", void 0);\n __decorate$2([\n Property(false)\n ], FreeTextSettings.prototype, \"allowEditTextOnly\", void 0);\n __decorate$2([\n Property('')\n ], FreeTextSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property(0)\n ], FreeTextSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], FreeTextSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], FreeTextSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], FreeTextSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], FreeTextSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(null)\n ], FreeTextSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], FreeTextSettings.prototype, \"allowedInteractions\", void 0);\n __decorate$2([\n Property(true)\n ], FreeTextSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property(false)\n ], FreeTextSettings.prototype, \"isReadonly\", void 0);\n __decorate$2([\n Property(false)\n ], FreeTextSettings.prototype, \"enableAutoFit\", void 0);\n return FreeTextSettings;\n}(ChildProperty));\n/**\n * The `AnnotationSelectorSettings` module is used to provide the properties to annotation selectors.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the annotation selector settings.\n * viewer.annotationSelectorSettings = {\n * selectionBorderColor: '',\n * resizerBorderColor: 'Circle',\n * resizerFillColor: '#4070FF',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Square',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AnnotationSelectorSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AnnotationSelectorSettings, _super);\n function AnnotationSelectorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('')\n ], AnnotationSelectorSettings.prototype, \"selectionBorderColor\", void 0);\n __decorate$2([\n Property('black')\n ], AnnotationSelectorSettings.prototype, \"resizerBorderColor\", void 0);\n __decorate$2([\n Property('#FF4081')\n ], AnnotationSelectorSettings.prototype, \"resizerFillColor\", void 0);\n __decorate$2([\n Property(8)\n ], AnnotationSelectorSettings.prototype, \"resizerSize\", void 0);\n __decorate$2([\n Property(1)\n ], AnnotationSelectorSettings.prototype, \"selectionBorderThickness\", void 0);\n __decorate$2([\n Property('Square')\n ], AnnotationSelectorSettings.prototype, \"resizerShape\", void 0);\n __decorate$2([\n Property('')\n ], AnnotationSelectorSettings.prototype, \"selectorLineDashArray\", void 0);\n __decorate$2([\n Property(AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges)\n ], AnnotationSelectorSettings.prototype, \"resizerLocation\", void 0);\n __decorate$2([\n Property(null)\n ], AnnotationSelectorSettings.prototype, \"resizerCursorType\", void 0);\n return AnnotationSelectorSettings;\n}(ChildProperty));\n/**\n * The `TextSearchColorSettings` module is used to set the settings for the color of the text search highlight.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the text search color settings.\n * viewer.textSearchColorSettings = {\n * searchHighlightColor: '#4070FF',\n * searchColor: '#FF4081'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar TextSearchColorSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(TextSearchColorSettings, _super);\n function TextSearchColorSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('#fdd835')\n ], TextSearchColorSettings.prototype, \"searchHighlightColor\", void 0);\n __decorate$2([\n Property('#8b4c12')\n ], TextSearchColorSettings.prototype, \"searchColor\", void 0);\n return TextSearchColorSettings;\n}(ChildProperty));\n/**\n * The `HandWrittenSignatureSettings` module is used to provide the properties to handwritten signature.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the hand written signature settings.\n * viewer.handWrittenSignatureSettings = {\n * signatureItem: [\n * 'Signature',\n * 'Initial'\n * ],\n * saveSignatureLimit: 1,\n * saveInitialLimit: 1,\n * opacity: 1,\n * strokeColor: '#000000',\n * width: 150,\n * height: 100,\n * thickness: 1,\n * annotationSelectorSettings: {\n * selectionBorderColor: '',\n * resizerBorderColor: 'black',\n * resizerFillColor: '#FF4081',\n * resizerSize: 8,\n * selectionBorderThickness: 1,\n * resizerShape: 'Circle',\n * selectorLineDashArray: [],\n * resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges,\n * resizerCursorType: null\n * },\n * allowedInteractions: ['None'],\n * signatureDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false\n * },\n * initialDialogSettings: {\n * displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload,\n * hideSaveSignature: false\n * }\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar HandWrittenSignatureSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(HandWrittenSignatureSettings, _super);\n function HandWrittenSignatureSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"opacity\", void 0);\n __decorate$2([\n Property('#000000')\n ], HandWrittenSignatureSettings.prototype, \"strokeColor\", void 0);\n __decorate$2([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property(150)\n ], HandWrittenSignatureSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(100)\n ], HandWrittenSignatureSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"saveSignatureLimit\", void 0);\n __decorate$2([\n Property(1)\n ], HandWrittenSignatureSettings.prototype, \"saveInitialLimit\", void 0);\n __decorate$2([\n Property([])\n ], HandWrittenSignatureSettings.prototype, \"signatureItem\", void 0);\n __decorate$2([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"typeSignatureFonts\", void 0);\n __decorate$2([\n Property('')\n ], HandWrittenSignatureSettings.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"signatureDialogSettings\", void 0);\n __decorate$2([\n Property()\n ], HandWrittenSignatureSettings.prototype, \"initialDialogSettings\", void 0);\n return HandWrittenSignatureSettings;\n}(ChildProperty));\n/**\n * The `AnnotationSettings` module is used to provide the properties to annotations.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the annotation settings.\n * viewer.annotationSettings = {\n * author: 'Guest',\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * skipPrint: false,\n * skipDownload: false,\n * allowedInteractions: ['None']\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar AnnotationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(AnnotationSettings, _super);\n function AnnotationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('Guest')\n ], AnnotationSettings.prototype, \"author\", void 0);\n __decorate$2([\n Property(0)\n ], AnnotationSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(0)\n ], AnnotationSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(0)\n ], AnnotationSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(0)\n ], AnnotationSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(false)\n ], AnnotationSettings.prototype, \"isLock\", void 0);\n __decorate$2([\n Property(false)\n ], AnnotationSettings.prototype, \"skipPrint\", void 0);\n __decorate$2([\n Property(false)\n ], AnnotationSettings.prototype, \"skipDownload\", void 0);\n __decorate$2([\n Property(null)\n ], AnnotationSettings.prototype, \"customData\", void 0);\n __decorate$2([\n Property(['None'])\n ], AnnotationSettings.prototype, \"allowedInteractions\", void 0);\n return AnnotationSettings;\n}(ChildProperty));\n/**\n * The `DocumentTextCollectionSettings` module is used to provide the properties to DocumentTextCollection.\n */\nvar DocumentTextCollectionSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(DocumentTextCollectionSettings, _super);\n function DocumentTextCollectionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"textData\", void 0);\n __decorate$2([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"pageText\", void 0);\n __decorate$2([\n Property()\n ], DocumentTextCollectionSettings.prototype, \"pageSize\", void 0);\n return DocumentTextCollectionSettings;\n}(ChildProperty));\n/**\n * The `TextDataSettings` module is used to provide the properties of text data.\n */\nvar TextDataSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(TextDataSettings, _super);\n function TextDataSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property()\n ], TextDataSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property()\n ], TextDataSettings.prototype, \"text\", void 0);\n return TextDataSettings;\n}(ChildProperty));\n/**\n * The `RectangleBounds` module is used to provide the properties of rectangle bounds.\n */\nvar RectangleBounds = /** @__PURE__ @class */ (function (_super) {\n __extends$4(RectangleBounds, _super);\n function RectangleBounds() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"size\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"x\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"y\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"width\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"height\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"left\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"top\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"right\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"bottom\", void 0);\n __decorate$2([\n Property()\n ], RectangleBounds.prototype, \"isEmpty\", void 0);\n return RectangleBounds;\n}(ChildProperty));\n/**\n * The `TileRenderingSettings` module is used to provide the tile rendering settings of the PDF viewer.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the tile rendering settings.\n * viewer.tileRenderingSettings = {\n * author: 'Guest',\n * minHeight: 0,\n * minWidth: 0,\n * maxWidth: 0,\n * maxHeight: 0,\n * isLock: false,\n * skipPrint: false,\n * skipDownload: false,\n * allowedInteractions: ['None']\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar TileRenderingSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(TileRenderingSettings, _super);\n function TileRenderingSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(true)\n ], TileRenderingSettings.prototype, \"enableTileRendering\", void 0);\n __decorate$2([\n Property(0)\n ], TileRenderingSettings.prototype, \"x\", void 0);\n __decorate$2([\n Property(0)\n ], TileRenderingSettings.prototype, \"y\", void 0);\n return TileRenderingSettings;\n}(ChildProperty));\n/**\n * The `ScrollSettings` module is used to provide the settings of the scroll of the PDF viewer.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the scroll settings.\n * viewer.scrollSettings = {\n * delayPageRequestTimeOnScroll: 150\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ScrollSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ScrollSettings, _super);\n function ScrollSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(100)\n ], ScrollSettings.prototype, \"delayPageRequestTimeOnScroll\", void 0);\n return ScrollSettings;\n}(ChildProperty));\n/**\n * The `FormField` is used to store the form fields of PDF document.\n */\nvar FormField = /** @__PURE__ @class */ (function (_super) {\n __extends$4(FormField, _super);\n function FormField() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('')\n ], FormField.prototype, \"name\", void 0);\n __decorate$2([\n Property(false)\n ], FormField.prototype, \"isChecked\", void 0);\n __decorate$2([\n Property(false)\n ], FormField.prototype, \"isSelected\", void 0);\n __decorate$2([\n Property('')\n ], FormField.prototype, \"id\", void 0);\n __decorate$2([\n Property('')\n ], FormField.prototype, \"value\", void 0);\n __decorate$2([\n Property('')\n ], FormField.prototype, \"type\", void 0);\n __decorate$2([\n Property(false)\n ], FormField.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property([''])\n ], FormField.prototype, \"signatureType\", void 0);\n __decorate$2([\n Property('')\n ], FormField.prototype, \"fontName\", void 0);\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], FormField.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('Helvetica')\n ], FormField.prototype, \"fontFamily\", void 0);\n __decorate$2([\n Property(10)\n ], FormField.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property('None')\n ], FormField.prototype, \"fontStyle\", void 0);\n __decorate$2([\n Property('black')\n ], FormField.prototype, \"color\", void 0);\n __decorate$2([\n Property('white')\n ], FormField.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property('Left')\n ], FormField.prototype, \"alignment\", void 0);\n __decorate$2([\n Property('visible')\n ], FormField.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(0)\n ], FormField.prototype, \"maxLength\", void 0);\n __decorate$2([\n Property(false)\n ], FormField.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(false)\n ], FormField.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], FormField.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property('')\n ], FormField.prototype, \"options\", void 0);\n __decorate$2([\n Property()\n ], FormField.prototype, \"signatureIndicatorSettings\", void 0);\n __decorate$2([\n Property(1)\n ], FormField.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('#303030')\n ], FormField.prototype, \"borderColor\", void 0);\n __decorate$2([\n Property(false)\n ], FormField.prototype, \"isMultiline\", void 0);\n __decorate$2([\n Property(false)\n ], FormField.prototype, \"insertSpaces\", void 0);\n __decorate$2([\n Property(-1)\n ], FormField.prototype, \"pageIndex\", void 0);\n return FormField;\n}(ChildProperty));\n/**\n * The `ContextMenuSettings` is used to show the context menu of PDF document.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the settings of the context menu option.\n * viewer.contextMenuOption = \"RightClick\";\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ContextMenuSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ContextMenuSettings, _super);\n function ContextMenuSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('RightClick')\n ], ContextMenuSettings.prototype, \"contextMenuAction\", void 0);\n __decorate$2([\n Property([])\n ], ContextMenuSettings.prototype, \"contextMenuItems\", void 0);\n return ContextMenuSettings;\n}(ChildProperty));\n/**\n * The `TextFieldSettings` is used to to show and customize the appearance of text box HTML element.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the text field settings.\n * viewer.textFieldSettings = {\n * name: '',\n * value: '',\n * fontFamily: 'Courier',\n * fontSize: 10,\n * fontStyle: 'None',\n * color: 'black',\n * borderColor: 'black',\n * backgroundColor: 'white',\n * alignment: 'Right',\n * isReadOnly: false,\n * visibility: 'visible',\n * maxLength: 0,\n * isRequired: false,\n * isPrint: true,\n * tooltip: '',\n * thickness: 1,\n * isMultiline: false\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar TextFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(TextFieldSettings, _super);\n function TextFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], TextFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], TextFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property('')\n ], TextFieldSettings.prototype, \"value\", void 0);\n __decorate$2([\n Property('Helvetica')\n ], TextFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate$2([\n Property(10)\n ], TextFieldSettings.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property(0)\n ], TextFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property('None')\n ], TextFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate$2([\n Property('black')\n ], TextFieldSettings.prototype, \"color\", void 0);\n __decorate$2([\n Property('white')\n ], TextFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property('Left')\n ], TextFieldSettings.prototype, \"alignment\", void 0);\n __decorate$2([\n Property(false)\n ], TextFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property('visible')\n ], TextFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(0)\n ], TextFieldSettings.prototype, \"maxLength\", void 0);\n __decorate$2([\n Property(false)\n ], TextFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(false)\n ], TextFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], TextFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(1)\n ], TextFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('#303030')\n ], TextFieldSettings.prototype, \"borderColor\", void 0);\n __decorate$2([\n Property(false)\n ], TextFieldSettings.prototype, \"isMultiline\", void 0);\n return TextFieldSettings;\n}(ChildProperty));\n/**\n * The `PasswordFieldSettings` is used to to show and customize the appearance of password input HTML element.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the password field settings.\n * viewer.passwordFieldSettings = {\n * name: '',\n * value: '',\n * fontFamily: 'Courier',\n * fontSize: 10,\n * fontStyle: 'None',\n * color: 'black',\n * borderColor: 'black',\n * backgroundColor: 'white',\n * alignment: 'Right',\n * isReadOnly: false,\n * visibility: 'visible',\n * maxLength: 0,\n * isRequired: false,\n * isPrint: true,\n * tooltip: '',\n * thickness: 1\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar PasswordFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(PasswordFieldSettings, _super);\n function PasswordFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], PasswordFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], PasswordFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property('')\n ], PasswordFieldSettings.prototype, \"value\", void 0);\n __decorate$2([\n Property(0)\n ], PasswordFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property('Helvetica')\n ], PasswordFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate$2([\n Property(10)\n ], PasswordFieldSettings.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property('None')\n ], PasswordFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate$2([\n Property('black')\n ], PasswordFieldSettings.prototype, \"color\", void 0);\n __decorate$2([\n Property('white')\n ], PasswordFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property('Left')\n ], PasswordFieldSettings.prototype, \"alignment\", void 0);\n __decorate$2([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property('visible')\n ], PasswordFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(0)\n ], PasswordFieldSettings.prototype, \"maxLength\", void 0);\n __decorate$2([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(false)\n ], PasswordFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], PasswordFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(1)\n ], PasswordFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('#303030')\n ], PasswordFieldSettings.prototype, \"borderColor\", void 0);\n return PasswordFieldSettings;\n}(ChildProperty));\n/**\n * The `CheckBoxFieldSettings` is used to to show and customize the appearance of check box element.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the check box field settings.\n * viewer.checkBoxFieldSettings = {\n * name: '',\n * isChecked: true,\n * backgroundColor: 'white',\n * isReadOnly: false,\n * visibility: 'visible',\n * isPrint: true,\n * tooltip: '',\n * isRequired: false,\n * thickness: 5,\n * borderColor: 'black'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar CheckBoxFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(CheckBoxFieldSettings, _super);\n function CheckBoxFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], CheckBoxFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], CheckBoxFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isChecked\", void 0);\n __decorate$2([\n Property('white')\n ], CheckBoxFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property('visible')\n ], CheckBoxFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property(0)\n ], CheckBoxFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property('')\n ], CheckBoxFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(false)\n ], CheckBoxFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(1)\n ], CheckBoxFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('#303030')\n ], CheckBoxFieldSettings.prototype, \"borderColor\", void 0);\n return CheckBoxFieldSettings;\n}(ChildProperty));\n/**\n * The `RadioButtonFieldSettings` is used to to show and customize the appearance of radio button element.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the radio button field settings.\n * viewer.radioButtonFieldSettings = {\n * name: '',\n * isSelected: false,\n * backgroundColor: 'white',\n * isReadOnly: false,\n * visibility: 'visible',\n * isPrint: true,\n * tooltip: '',\n * isRequired: false,\n * thickness: 1,\n * borderColor: 'black'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar RadioButtonFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(RadioButtonFieldSettings, _super);\n function RadioButtonFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], RadioButtonFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], RadioButtonFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isSelected\", void 0);\n __decorate$2([\n Property('white')\n ], RadioButtonFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(0)\n ], RadioButtonFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property('visible')\n ], RadioButtonFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(false)\n ], RadioButtonFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], RadioButtonFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property(1)\n ], RadioButtonFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('#303030')\n ], RadioButtonFieldSettings.prototype, \"borderColor\", void 0);\n return RadioButtonFieldSettings;\n}(ChildProperty));\n/**\n * The `DropdownFieldSettings` is used to to show and customize the appearance of drop down element.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the drop down field settings.\n * viewer.DropdownFieldSettings = {\n * name: '',\n * isSelected: false,\n * backgroundColor: 'white',\n * isReadOnly: true,\n * visibility: 'visible',\n * isPrint: true,\n * tooltip: '',\n * isRequired: false,\n * thickness: 5,\n * borderColor: 'blue'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar DropdownFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(DropdownFieldSettings, _super);\n function DropdownFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], DropdownFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], DropdownFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property('')\n ], DropdownFieldSettings.prototype, \"value\", void 0);\n __decorate$2([\n Property('Helvetica')\n ], DropdownFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate$2([\n Property(10)\n ], DropdownFieldSettings.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property(0)\n ], DropdownFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property('None')\n ], DropdownFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate$2([\n Property('black')\n ], DropdownFieldSettings.prototype, \"color\", void 0);\n __decorate$2([\n Property('white')\n ], DropdownFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property('Left')\n ], DropdownFieldSettings.prototype, \"alignment\", void 0);\n __decorate$2([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property('visible')\n ], DropdownFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(false)\n ], DropdownFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], DropdownFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property('')\n ], DropdownFieldSettings.prototype, \"options\", void 0);\n __decorate$2([\n Property(1)\n ], DropdownFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('#303030')\n ], DropdownFieldSettings.prototype, \"borderColor\", void 0);\n return DropdownFieldSettings;\n}(ChildProperty));\n/**\n * The `ListBoxFieldSettings` is used to to show and customize the appearance of list box element.\n *\n * ```html\n *
    \n * ```\n * ```ts\n * let viewer: PdfViewer = new PdfViewer();\n * // Change the list box field settings.\n * viewer.listBoxFieldSettings = {\n * name: '',\n * fontFamily: 'Courier',\n * fontSize: 5,\n * fontStyle: 'None',\n * color: 'black',\n * backgroundColor: 'white',\n * alignment: 'Right',\n * isReadOnly: false,\n * visibility: 'visible',\n * isRequired: false,\n * isPrint: false,\n * tooltip: '',\n * options: [],\n * thickness: 1,\n * borderColor: 'black'\n * };\n * viewer.appendTo(\"#pdfViewer\");\n * ```\n *\n */\nvar ListBoxFieldSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$4(ListBoxFieldSettings, _super);\n function ListBoxFieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ x: 0, y: 0, width: 0, height: 0 })\n ], ListBoxFieldSettings.prototype, \"bounds\", void 0);\n __decorate$2([\n Property('')\n ], ListBoxFieldSettings.prototype, \"name\", void 0);\n __decorate$2([\n Property('')\n ], ListBoxFieldSettings.prototype, \"value\", void 0);\n __decorate$2([\n Property('Helvetica')\n ], ListBoxFieldSettings.prototype, \"fontFamily\", void 0);\n __decorate$2([\n Property(10)\n ], ListBoxFieldSettings.prototype, \"fontSize\", void 0);\n __decorate$2([\n Property(0)\n ], ListBoxFieldSettings.prototype, \"pageNumber\", void 0);\n __decorate$2([\n Property('None')\n ], ListBoxFieldSettings.prototype, \"fontStyle\", void 0);\n __decorate$2([\n Property('black')\n ], ListBoxFieldSettings.prototype, \"color\", void 0);\n __decorate$2([\n Property('white')\n ], ListBoxFieldSettings.prototype, \"backgroundColor\", void 0);\n __decorate$2([\n Property('Left')\n ], ListBoxFieldSettings.prototype, \"alignment\", void 0);\n __decorate$2([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isReadOnly\", void 0);\n __decorate$2([\n Property('visible')\n ], ListBoxFieldSettings.prototype, \"visibility\", void 0);\n __decorate$2([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isRequired\", void 0);\n __decorate$2([\n Property(false)\n ], ListBoxFieldSettings.prototype, \"isPrint\", void 0);\n __decorate$2([\n Property('')\n ], ListBoxFieldSettings.prototype, \"tooltip\", void 0);\n __decorate$2([\n Property([])\n ], ListBoxFieldSettings.prototype, \"options\", void 0);\n __decorate$2([\n Property(1)\n ], ListBoxFieldSettings.prototype, \"thickness\", void 0);\n __decorate$2([\n Property('#303030')\n ], ListBoxFieldSettings.prototype, \"borderColor\", void 0);\n return ListBoxFieldSettings;\n}(ChildProperty));\nvar Item = /** @__PURE__ @class */ (function (_super) {\n __extends$4(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('')\n ], Item.prototype, \"itemName\", void 0);\n __decorate$2([\n Property('')\n ], Item.prototype, \"itemValue\", void 0);\n return Item;\n}(ChildProperty));\n/**\n * Represents the PDF viewer component.\n * ```html\n *
    \n * \n * ```\n */\nvar PdfViewer = /** @__PURE__ @class */ (function (_super) {\n __extends$4(PdfViewer, _super);\n function PdfViewer(options, element) {\n var _this = _super.call(this, options, element) || this;\n /**\n * Get the Loaded document signature Collections in the PdfViewer control.\n *\n * {% codeBlock src='pdfviewer/signatureCollection/index.md' %}{% endcodeBlock %}\n *\n */\n // eslint-disable-next-line\n _this.signatureCollection = [];\n /**\n * Gets or sets the document name loaded in the PdfViewer control.\n *\n * {% codeBlock src='pdfviewer/fileName/index.md' %}{% endcodeBlock %}\n *\n */\n _this.fileName = null;\n /**\n * @private\n */\n _this.zIndex = -1;\n /**\n * @private\n */\n _this.nameTable = {};\n /** @private */\n _this.clipboardData = {};\n /**\n * @private\n */\n _this.zIndexTable = [];\n _this.isTextSelectionStarted = false;\n /**\n * @private\n */\n _this.touchPadding = 10;\n /**\n * @private\n */\n _this.paddingDifferenceValue = 10;\n /** @hidden */\n _this.defaultLocale = {\n 'PdfViewer': 'PDF Viewer',\n 'Cancel': 'Cancel',\n 'Download file': 'Download file',\n 'Download': 'Download',\n 'Enter Password': 'This document is password protected. Please enter a password.',\n 'File Corrupted': 'File Corrupted',\n 'File Corrupted Content': 'The file is corrupted and cannot be opened.',\n 'Fit Page': 'Fit Page',\n 'Fit Width': 'Fit Width',\n 'Automatic': 'Automatic',\n 'Go To First Page': 'Show first page',\n 'Invalid Password': 'Incorrect Password. Please try again.',\n 'Next Page': 'Show next page',\n 'OK': 'OK',\n 'Open': 'Open file',\n 'Page Number': 'Current page number',\n 'Previous Page': 'Show previous page',\n 'Go To Last Page': 'Show last page',\n 'Zoom': 'Zoom',\n 'Zoom In': 'Zoom in',\n 'Zoom Out': 'Zoom out',\n 'Page Thumbnails': 'Page thumbnails',\n 'Bookmarks': 'Bookmarks',\n 'Print': 'Print file',\n 'Password Protected': 'Password Required',\n 'Copy': 'Copy',\n 'Text Selection': 'Text selection tool',\n 'Panning': 'Pan mode',\n 'Text Search': 'Find text',\n 'Find in document': 'Find in document',\n 'Match case': 'Match case',\n 'Apply': 'Apply',\n 'GoToPage': 'Go to Page',\n // eslint-disable-next-line max-len\n 'No matches': 'Viewer has finished searching the document. No more matches were found',\n 'No Text Found': 'No Text Found',\n 'Undo': 'Undo',\n 'Redo': 'Redo',\n 'Annotation': 'Add or Edit annotations',\n 'FormDesigner': 'Add and Edit Form Fields',\n 'Highlight': 'Highlight Text',\n 'Underline': 'Underline Text',\n 'Strikethrough': 'Strikethrough Text',\n 'Delete': 'Delete annotation',\n 'Opacity': 'Opacity',\n 'Color edit': 'Change Color',\n 'Opacity edit': 'Change Opacity',\n 'Highlight context': 'Highlight',\n 'Underline context': 'Underline',\n 'Strikethrough context': 'Strikethrough',\n // eslint-disable-next-line max-len\n 'Server error': 'Web-service is not listening. PDF Viewer depends on web-service for all it\\'s features. Please start the web service to continue.',\n // eslint-disable-next-line max-len\n 'Client error': 'Client-side error is found. Please check the custom headers provided in the AjaxRequestSettings property and web action methods in the ServerActionSettings property.',\n 'Open text': 'Open',\n 'First text': 'First Page',\n 'Previous text': 'Previous Page',\n 'Next text': 'Next Page',\n 'Last text': 'Last Page',\n 'Zoom in text': 'Zoom In',\n 'Zoom out text': 'Zoom Out',\n 'Selection text': 'Selection',\n 'Pan text': 'Pan',\n 'Print text': 'Print',\n 'Search text': 'Search',\n 'Annotation Edit text': 'Edit Annotation',\n 'FormDesigner Edit text': 'Add and Edit Form Fields',\n 'Line Thickness': 'Line Thickness',\n 'Line Properties': 'Line Properties',\n 'Start Arrow': 'Start Arrow',\n 'End Arrow': 'End Arrow',\n 'Line Style': 'Line Style',\n 'Fill Color': 'Fill Color',\n 'Line Color': 'Line Color',\n 'None': 'None',\n 'Open Arrow': 'Open',\n 'Closed Arrow': 'Closed',\n 'Round Arrow': 'Round',\n 'Square Arrow': 'Square',\n 'Diamond Arrow': 'Diamond',\n 'Butt': 'Butt',\n 'Cut': 'Cut',\n 'Paste': 'Paste',\n 'Delete Context': 'Delete',\n 'Properties': 'Properties',\n 'Add Stamp': 'Add Stamp',\n 'Add Shapes': 'Add Shapes',\n 'Stroke edit': 'Change Stroke Color',\n 'Change thickness': 'Change Border Thickness',\n 'Add line': 'Add Line',\n 'Add arrow': 'Add Arrow',\n 'Add rectangle': 'Add Rectangle',\n 'Add circle': 'Add Circle',\n 'Add polygon': 'Add Polygon',\n 'Add Comments': 'Add Comments',\n 'Comments': 'Comments',\n 'SubmitForm': 'Submit Form',\n 'No Comments Yet': 'No Comments Yet',\n 'Accepted': 'Accepted',\n 'Completed': 'Completed',\n 'Cancelled': 'Cancelled',\n 'Rejected': 'Rejected',\n 'Leader Length': 'Leader Length',\n 'Scale Ratio': 'Scale Ratio',\n 'Calibrate': 'Calibrate',\n 'Calibrate Distance': 'Calibrate Distance',\n 'Calibrate Perimeter': 'Calibrate Perimeter',\n 'Calibrate Area': 'Calibrate Area',\n 'Calibrate Radius': 'Calibrate Radius',\n 'Calibrate Volume': 'Calibrate Volume',\n 'Depth': 'Depth',\n 'Closed': 'Closed',\n 'Round': 'Round',\n 'Square': 'Square',\n 'Diamond': 'Diamond',\n 'Edit': 'Edit',\n 'Comment': 'Comment',\n 'Comment Panel': 'Comment Panel',\n 'Set Status': 'Set Status',\n 'Post': 'Post',\n 'Page': 'Page',\n 'Add a comment': 'Add a comment',\n 'Add a reply': 'Add a reply',\n 'Import Annotations': 'Import annotations from JSON file',\n 'Export Annotations': 'Export annotation to JSON file',\n 'Export XFDF': 'Export annotation to XFDF file',\n 'Import XFDF': 'Import annotations from XFDF file',\n 'Add': 'Add',\n 'Clear': 'Clear',\n 'Bold': 'Bold',\n 'Italic': 'Italic',\n 'Strikethroughs': 'Strikethrough',\n 'Underlines': 'Underline',\n 'Superscript': 'Superscript',\n 'Subscript': 'Subscript',\n 'Align left': 'Align Left',\n 'Align right': 'Align Right',\n 'Center': 'Center',\n 'Justify': 'Justify',\n 'Font color': 'Font Color',\n 'Text Align': 'Text Align',\n 'Text Properties': 'Font Style',\n 'SignatureFieldDialogHeaderText': 'Add Signature',\n 'HandwrittenSignatureDialogHeaderText': 'Add Signature',\n 'InitialFieldDialogHeaderText': 'Add Initial',\n 'HandwrittenInitialDialogHeaderText': 'Add Initial',\n 'Draw Ink': 'Draw Ink',\n 'Create': 'Create',\n 'Font family': 'Font Family',\n 'Font size': 'Font Size',\n 'Free Text': 'Free Text',\n 'Import Failed': 'Invalid JSON file type or file name; please select a valid JSON file',\n 'Import PDF Failed': 'Invalid PDF file type or PDF file not found. Please select a valid PDF file',\n 'File not found': 'Imported JSON file is not found in the desired location',\n 'Export Failed': 'Export annotations action has failed; please ensure annotations are added properly',\n 'of': 'of ',\n 'Dynamic': 'Dynamic',\n 'Standard Business': 'Standard Business',\n 'Sign Here': 'Sign Here',\n 'Custom Stamp': 'Custom Stamp',\n 'Enter Signature as Name': 'Enter your name',\n 'Draw-hand Signature': 'DRAW',\n 'Type Signature': 'TYPE',\n 'Upload Signature': 'UPLOAD',\n 'Browse Signature Image': 'BROWSE',\n 'Save Signature': 'Save Signature',\n 'Save Initial': 'Save Initial',\n 'Textbox': 'Textbox',\n 'Password': 'Password',\n 'Check Box': 'Checkbox',\n 'Radio Button': 'Radio Button',\n 'Dropdown': 'Drop Down',\n 'List Box': 'List Box',\n 'Signature': 'Signature',\n 'Delete FormField': 'Delete Form Field',\n 'Textbox Properties': 'Textbox Properties',\n 'Name': 'Name',\n 'Tooltip': 'Tooltip',\n 'Value': 'Value',\n 'Form Field Visibility': 'Form Field Visibility',\n 'Read Only': 'Read Only',\n 'Required': 'Required',\n 'Checked': 'Checked',\n 'Show Printing': 'Show Printing',\n 'Formatting': 'Format',\n 'Fill': 'Fill',\n 'Border': 'Border',\n 'Border Color': 'Border Color',\n 'Thickness': 'Thickness',\n 'Max Length': 'Max Length',\n 'List Item': 'Item Name',\n 'Export Value': 'Item Value',\n 'Dropdown Item List': 'Dropdown Item List',\n 'List Box Item List': 'List Box Item List',\n 'General': 'GENERAL',\n 'Appearance': 'APPEARANCE',\n 'Options': 'OPTIONS',\n 'Delete Item': 'Delete',\n 'Up': 'Up',\n 'Down': 'Down',\n 'Multiline': 'Multiline',\n 'Revised': 'Revised',\n 'Reviewed': 'Reviewed',\n 'Received': 'Received',\n 'Confidential': 'Confidential',\n 'Approved': 'Approved',\n 'Not Approved': 'Not Approved',\n 'Witness': 'Witness',\n 'Initial Here': 'Initial Here',\n 'Draft': 'Draft',\n 'Final': 'Final',\n 'For Public Release': 'For Public Release',\n 'Not For Public Release': 'Not For Public Release',\n 'For Comment': 'For Comment',\n 'Void': 'Void',\n 'Preliminary Results': 'Preliminary Results',\n 'Information Only': 'Information Only',\n 'in': 'in',\n 'm': 'm',\n 'ft_in': 'ft_in',\n 'ft': 'ft',\n 'p': 'p',\n 'cm': 'cm',\n 'mm': 'mm',\n 'pt': 'pt',\n 'cu': 'cu',\n 'sq': 'sq',\n 'Initial': 'Initial'\n };\n _this.viewerBase = new PdfViewerBase(_this);\n _this.drawing = new Drawing(_this);\n return _this;\n }\n Object.defineProperty(PdfViewer.prototype, \"zoomPercentage\", {\n /**\n * Returns the current zoom percentage of the PdfViewer control.\n *\n * @asptype int\n * @blazorType int\n */\n get: function () {\n return this.magnificationModule.zoomFactor * 100;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"bookmark\", {\n /**\n * Gets the bookmark view object of the pdf viewer.\n *\n * @asptype BookmarkView\n * @blazorType BookmarkView\n * @returns { BookmarkView }\n */\n get: function () {\n return this.bookmarkViewModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"print\", {\n /**\n * Gets the print object of the pdf viewer.\n *\n * @asptype Print\n * @blazorType Print\n * @returns { Print }\n */\n get: function () {\n return this.printModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"magnification\", {\n /**\n * Gets the magnification object of the pdf viewer.\n *\n * @asptype Magnification\n * @blazorType Magnification\n * @returns { Magnification }\n */\n get: function () {\n return this.magnificationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"navigation\", {\n /**\n * Gets the navigation object of the pdf viewer.\n *\n * @asptype Navigation\n * @blazorType Navigation\n * @returns { Navigation }\n */\n get: function () {\n return this.navigationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"textSearch\", {\n /**\n * Gets the text search object of the pdf viewer.\n *\n * @asptype TextSearch\n * @blazorType TextSearch\n * @returns { TextSearch }\n */\n get: function () {\n return this.textSearchModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"toolbar\", {\n /**\n * Gets the toolbar object of the pdf viewer.\n *\n * @asptype Toolbar\n * @blazorType Toolbar\n * @returns { Toolbar }\n */\n get: function () {\n return this.toolbarModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"thumbnailView\", {\n /**\n * Gets the thumbnail-view object of the pdf viewer.\n *\n * @asptype ThumbnailView\n * @blazorType ThumbnailView\n * @returns { ThumbnailView }\n */\n get: function () {\n return this.thumbnailViewModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"annotation\", {\n /**\n * Gets the annotation object of the pdf viewer.\n *\n * @asptype Annotation\n * @blazorType Annotation\n * @returns { Annotation }\n */\n get: function () {\n return this.annotationModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"formDesigner\", {\n /**\n * Gets the FormDesigner object of the pdf viewer.\n *\n * @asptype FormDesigner\n * @blazorType FormDesigner\n * @returns { FormDesigner }\n */\n get: function () {\n return this.formDesignerModule;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(PdfViewer.prototype, \"textSelection\", {\n /**\n * Gets the TextSelection object of the pdf viewer.\n *\n * @asptype TextSelection\n * @blazorType TextSelection\n * @returns { TextSelection }\n */\n get: function () {\n return this.textSelectionModule;\n },\n enumerable: true,\n configurable: true\n });\n PdfViewer.prototype.preRender = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n if (!isNullOrUndefined(this.element) && this.element.id == \"\") {\n //Set unique id, if id is empty\n this.element.id = this.getUniqueElementId();\n }\n if (Browser.isDevice) {\n //EJ2-63562 - Reduced the touchPadding of mobile devices to 16 to improve selection of fields without affecting resizing ability.\n this.touchPadding = 16;\n }\n };\n PdfViewer.prototype.getUniqueElementId = function () {\n return 'pdfViewer_' + Date.now().toString(36) + Math.random().toString(36).substring(2);\n };\n PdfViewer.prototype.render = function () {\n this.viewerBase.initializeComponent();\n if (!this.enableFormFields) {\n this.formFieldsModule = new FormFields(this, this.viewerBase);\n this.formFieldsModule.formFieldsReadOnly(this.enableFormFields);\n }\n if (this.enableTextSelection && this.textSelectionModule) {\n this.textSelectionModule.enableTextSelectionMode();\n }\n else {\n this.viewerBase.disableTextSelectionMode();\n }\n this.drawing.renderLabels(this);\n this.renderComplete();\n };\n PdfViewer.prototype.getModuleName = function () {\n return 'PdfViewer';\n };\n /**\n * @private\n */\n PdfViewer.prototype.getLocaleConstants = function () {\n return this.defaultLocale;\n };\n /**\n * To modify the Json Data in ajax request.\n *\n * @param jsonData\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.setJsonData = function (jsonData) {\n this.viewerBase.ajaxData = jsonData;\n };\n PdfViewer.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isDestroyed) {\n return;\n }\n var properties = Object.keys(newProp);\n for (var _i = 0, properties_1 = properties; _i < properties_1.length; _i++) {\n var prop = properties_1[_i];\n switch (prop) {\n case 'locale':\n if (this.viewerBase.loadedData) {\n // eslint-disable-next-line\n var data = null;\n if (this.formFieldsModule) {\n data = this.viewerBase.getItemFromSessionStorage('_formfields');\n }\n if (data) {\n this.viewerBase.formfieldvalue = JSON.parse(data);\n // eslint-disable-next-line\n var annotCollection = this.annotationCollection;\n var filename = this.viewerBase.jsonDocumentId;\n _super.prototype.refresh.call(this);\n this.load(this.viewerBase.loadedData, null);\n this.addAnnotation(annotCollection);\n this.viewerBase.loadedData = null;\n this.downloadFileName = filename;\n this.fileName = filename;\n }\n }\n break;\n case 'toolbarSettings':\n if (!Browser.isDevice || this.enableDesktopMode) {\n this.toolbar.applyToolbarSettings();\n this.toolbar.annotationToolbarModule.applyAnnotationToolbarSettings();\n this.toolbar.formDesignerToolbarModule.applyFormDesignerToolbarSettings();\n }\n else {\n this.toolbar.applyToolbarSettingsForMobile();\n this.toolbar.annotationToolbarModule.applyMobileAnnotationToolbarSettings();\n }\n break;\n case 'enableToolbar':\n this.notify('', { module: 'toolbar', enable: this.enableToolbar });\n \n break;\n case 'enableCommentPanel':\n this.notify('', { module: 'annotation', enable: this.enableCommentPanel });\n \n if (this.toolbarModule && this.toolbarModule.annotationToolbarModule) {\n this.toolbarModule.annotationToolbarModule.enableCommentPanelTool(this.enableCommentPanel);\n }\n if (!this.enableCommentPanel) {\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.closeCommentPanelContainer();\n }\n }\n break;\n case 'documentPath':\n if (!isBlazor()) {\n this.load(newProp.documentPath, null);\n }\n else {\n this._dotnetInstance.invokeMethodAsync('LoadDocumentFromClient', newProp.documentPath);\n }\n break;\n case 'interactionMode':\n this.interactionMode = newProp.interactionMode;\n if (newProp.interactionMode === 'Pan') {\n this.viewerBase.initiatePanning();\n if (this.toolbar) {\n this.toolbar.updateInteractionTools(false);\n }\n }\n else if (newProp.interactionMode === 'TextSelection') {\n this.viewerBase.initiateTextSelectMode();\n if (this.toolbar) {\n this.toolbar.updateInteractionTools(true);\n }\n }\n break;\n case 'height':\n this.height = newProp.height;\n this.viewerBase.updateHeight();\n this.viewerBase.onWindowResize();\n if (this.toolbar && this.toolbar.annotationToolbarModule) {\n if (this.toolbar.annotationToolbarModule.isToolbarHidden) {\n this.toolbar.annotationToolbarModule.adjustViewer(false);\n }\n else {\n this.toolbar.annotationToolbarModule.adjustViewer(true);\n }\n }\n break;\n case 'width':\n this.width = newProp.width;\n this.viewerBase.updateWidth();\n this.viewerBase.onWindowResize();\n break;\n case 'customStamp':\n this.renderCustomerStamp(this.customStamp[0]);\n break;\n case 'customStampSettings':\n if (newProp.customStampSettings.customStamps) {\n this.renderCustomerStamp(this.customStampSettings.customStamps[0]);\n }\n break;\n case 'enableFormFields':\n if (this.enableFormFields && this.formFieldsModule) {\n for (var m = 0; m < this.pageCount; m++) {\n this.formFieldsModule.renderFormFields(m, false);\n }\n }\n else {\n this.formFieldsModule = new FormFields(this, this.viewerBase);\n this.formFieldsModule.formFieldsReadOnly(this.enableFormFields);\n }\n break;\n case 'designerMode':\n if (this.designerMode) {\n this.formDesignerModule.setMode('designer');\n }\n else {\n this.formDesignerModule.setMode('edit');\n }\n break;\n case 'highlightSettings':\n case 'underlineSettings':\n case 'strikethroughSettings':\n if (this.annotationModule && this.annotationModule.textMarkupAnnotationModule) {\n this.annotationModule.textMarkupAnnotationModule.updateTextMarkupSettings(prop);\n }\n break;\n case 'signatureFieldSettings':\n case 'initialFieldSettings':\n if (this.formDesignerModule) {\n var isInitialField = (prop === \"initialFieldSettings\");\n this.formDesignerModule.updateSignatureSettings(newProp[prop], isInitialField);\n }\n break;\n case 'textFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateTextFieldSettings(newProp[prop]);\n }\n break;\n case 'passwordFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updatePasswordFieldSettings(newProp[prop]);\n }\n break;\n case 'checkBoxFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateCheckBoxFieldSettings(newProp[prop]);\n }\n break;\n case 'radioButtonFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateRadioButtonFieldSettings(newProp[prop]);\n }\n break;\n case 'DropdownFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateDropDownFieldSettings(newProp[prop]);\n }\n break;\n case 'listBoxFieldSettings':\n if (this.formDesignerModule) {\n this.formDesignerModule.updateListBoxFieldSettings(newProp[prop]);\n }\n break;\n case 'isFormDesignerToolbarVisible':\n if (this.formDesignerModule && !oldProp.isFormDesignerToolbarVisible && newProp.isFormDesignerToolbarVisible) {\n if (this.isAnnotationToolbarVisible) {\n this.isAnnotationToolbarVisible = false;\n this.toolbarModule.annotationToolbarModule.showAnnotationToolbar();\n }\n this.toolbarModule.formDesignerToolbarModule.resetFormDesignerToolbar();\n }\n break;\n }\n }\n };\n // eslint-disable-next-line\n PdfViewer.prototype.renderCustomerStamp = function (customStamp) {\n this.annotation.stampAnnotationModule.isStampAddMode = true;\n this.annotationModule.stampAnnotationModule.isStampAnnotSelected = true;\n this.viewerBase.stampAdded = true;\n this.viewerBase.isAlreadyAdded = false;\n // eslint-disable-next-line max-len\n this.annotation.stampAnnotationModule.createCustomStampAnnotation(customStamp.customStampImageSource, customStamp.customStampName);\n };\n PdfViewer.prototype.getPersistData = function () {\n return 'PdfViewer';\n };\n PdfViewer.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMagnification) {\n modules.push({\n member: 'Magnification', args: [this, this.viewerBase]\n });\n }\n if (this.enableNavigation) {\n modules.push({\n member: 'Navigation', args: [this, this.viewerBase]\n });\n }\n if (this.enableToolbar || this.enableNavigationToolbar || this.enableAnnotationToolbar || this.enableFormDesignerToolbar) {\n modules.push({\n member: 'Toolbar', args: [this, this.viewerBase]\n });\n }\n if (this.enableHyperlink) {\n modules.push({\n member: 'LinkAnnotation', args: [this, this.viewerBase]\n });\n }\n if (this.enableThumbnail) {\n modules.push({\n member: 'ThumbnailView', args: [this, this.viewerBase]\n });\n }\n if (this.enableBookmark) {\n modules.push({\n member: 'BookmarkView', args: [this, this.viewerBase]\n });\n }\n if (this.enableTextSelection) {\n modules.push({\n member: 'TextSelection', args: [this, this.viewerBase]\n });\n }\n if (this.enableTextSearch) {\n modules.push({\n member: 'TextSearch', args: [this, this.viewerBase]\n });\n }\n if (this.enablePrint) {\n modules.push({\n member: 'Print', args: [this, this.viewerBase]\n });\n }\n if (this.enableAnnotation) {\n modules.push({\n member: 'Annotation', args: [this, this.viewerBase]\n });\n }\n if (this.enableFormFields) {\n modules.push({\n member: 'FormFields', args: [this, this.viewerBase]\n });\n }\n if (this.enableFormDesigner && !isBlazor()) {\n modules.push({\n member: 'FormDesigner', args: [this, this.viewerBase]\n });\n }\n return modules;\n };\n /**\n * Loads the given PDF document in the PDF viewer control\n *\n * @param {string} document - Specifies the document name for load\n * @param {string} password - Specifies the Given document password\n * @returns void\n */\n PdfViewer.prototype.load = function (document, password) {\n if (this.pageCount !== 0) {\n this.viewerBase.clear(true);\n }\n else {\n this.viewerBase.clear(false);\n }\n this.pageCount = 0;\n this.currentPageNumber = 0;\n if (!isBlazor()) {\n if (this.toolbarModule) {\n this.toolbarModule.resetToolbar();\n }\n }\n else {\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n }\n this.viewerBase.initiatePageRender(document, password);\n };\n /**\n * Loads the given PDF document in the PDF viewer control\n * @private\n */\n PdfViewer.prototype.loadDocument = function (documentId, isFileName, fileName) {\n if (this.pageCount !== 0) {\n this.viewerBase.clear(true);\n }\n else {\n this.viewerBase.clear(false);\n }\n this.pageCount = 0;\n this.currentPageNumber = 0;\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n this.fileName = fileName;\n this.viewerBase.initiateLoadDocument(documentId, isFileName, fileName);\n };\n /**\n * Loads the PDF document with the document details in the PDF viewer control\n * @private\n */\n PdfViewer.prototype.loadSuccess = function (documentDetails, password) {\n this.viewerBase.loadSuccess(documentDetails, password);\n };\n /**\n * Set the focus of the given element\n * @private\n */\n PdfViewer.prototype.focusElement = function (elementId) {\n var element = document.getElementById(elementId);\n if (element != null) {\n element.focus();\n }\n };\n /**\n * Downloads the PDF document being loaded in the ejPdfViewer control.\n *\n * @returns void\n */\n PdfViewer.prototype.download = function () {\n if (this.enableDownload) {\n this.viewerBase.download();\n }\n };\n /**\n * Saves the PDF document being loaded in the PDF Viewer control as blob.\n *\n * @returns Promise\n */\n PdfViewer.prototype.saveAsBlob = function () {\n var _this = this;\n if (this.enableDownload) {\n return new Promise(function (resolve, reject) {\n resolve(_this.viewerBase.saveAsBlob());\n });\n }\n else {\n return null;\n }\n };\n /**\n * updates the PDF Viewer container width and height from externally.\n *\n * @returns void\n */\n PdfViewer.prototype.updateViewerContainer = function () {\n this.viewerBase.updateViewerContainer();\n };\n /**\n * Specifies the message to be displayed in the popup.\n *\n * @param errorString\n * @returns void\n */\n PdfViewer.prototype.showNotificationPopup = function (errorString) {\n this.viewerBase.showNotificationPopup(errorString);\n };\n /**\n * Focus a form field in a document by its field name or the field object.\n *\n * @param field\n * @returns void\n */\n PdfViewer.prototype.focusFormField = function (field) {\n var _this = this;\n if (typeof (field) === \"string\") {\n var fieldCollections = this.retrieveFormFields();\n for (var i = 0; i < fieldCollections.length; i++) {\n if (fieldCollections[i].name === field) {\n field = fieldCollections[i];\n }\n }\n }\n if (field) {\n this.viewerBase.isFocusField = true;\n this.viewerBase.focusField = field;\n if (this.formDesignerModule) {\n this.navigationModule.goToPage(field.pageIndex + 1);\n }\n else {\n var pageIndex = parseFloat(field.id.split('_')[1]);\n this.navigationModule.goToPage(pageIndex + 1);\n }\n setTimeout(function () {\n var currentField = document.getElementById(field.id);\n if (_this.formDesignerModule && field.type === \"Checkbox\") {\n currentField = document.getElementById(field.id + \"_input\");\n }\n if (currentField) {\n if (_this.formDesignerModule && (field.type === \"SignatureField\" || field.type === \"InitialField\")) {\n currentField.parentElement.focus();\n }\n else {\n currentField.focus();\n _this.viewerBase.isFocusField = false;\n _this.viewerBase.focusField = [];\n }\n }\n }, 100);\n }\n };\n /**\n * Update the form field values from externally.\n *\n * @param fieldValue\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateFormFieldsValue = function (fieldValue) {\n // eslint-disable-next-line\n var target = document.getElementById(fieldValue.id);\n var isformDesignerModuleListBox = false;\n if (target) {\n target = target ? target : document.getElementById(fieldValue.id + '_content_html_element').children[0].children[0];\n if (target && fieldValue.type === 'Textbox' || fieldValue.type === 'Password' || fieldValue.type === 'PasswordField') {\n target.value = fieldValue.value;\n }\n else if (fieldValue.type === 'Checkbox' || fieldValue.type === 'RadioButton' || fieldValue.type === 'CheckBox') {\n if (fieldValue.type === 'CheckBox') {\n target.style.appearance = 'auto';\n }\n if (this.formDesignerModule) {\n if (fieldValue.type === 'RadioButton') {\n var radioButtonOption = { isSelected: fieldValue.isSelected };\n this.formDesignerModule.updateFormField(fieldValue, radioButtonOption);\n }\n else {\n var checkBoxOption = { isChecked: fieldValue.isChecked };\n this.formDesignerModule.updateFormField(fieldValue, checkBoxOption);\n }\n }\n else {\n if (fieldValue.type === 'RadioButton') {\n target.selected = fieldValue.isSelected;\n }\n else {\n target.checked = fieldValue.isChecked;\n }\n }\n }\n else if (fieldValue.type === 'DropDown' || fieldValue.type === 'ListBox' || fieldValue.type === 'DropdownList') {\n if (this.formDesignerModule) {\n isformDesignerModuleListBox = true;\n var dropDownListOption = { options: fieldValue.value };\n this.formDesignerModule.updateFormField(fieldValue, dropDownListOption);\n }\n else {\n target.value = fieldValue.value;\n }\n }\n if (fieldValue.type === 'SignatureField' || fieldValue.type === 'InitialField') {\n if (fieldValue.signatureType || fieldValue.initialType) {\n if (typeof fieldValue.signatureType === 'string') {\n fieldValue.signatureType = fieldValue.signatureType;\n }\n else {\n fieldValue.signatureType = fieldValue.initialType;\n }\n }\n fieldValue.fontName = fieldValue.fontName ? fieldValue.fontName : fieldValue.fontFamily;\n var currentValue = fieldValue.value;\n var signatureField = this.getFormFieldByID(fieldValue.id);\n var isSameValue = this.formDesignerModule ? signatureField.value === fieldValue.value : signatureField.Value === fieldValue.value;\n if (target.classList.contains('e-pdfviewer-signatureformfields-signature') && !isSameValue) {\n if (this.formDesignerModule)\n this.annotation.deleteAnnotationById(fieldValue.id.split('_')[0] + '_content');\n else\n this.annotation.deleteAnnotationById(fieldValue.id);\n }\n if (!fieldValue.signatureType || !fieldValue.value) {\n fieldValue.value = currentValue;\n if (fieldValue.value) {\n fieldValue.signatureType = (fieldValue.value.indexOf('base64')) > -1 ? 'Image' : ((fieldValue.value.startsWith('M') && fieldValue.value.split(',')[1].split(' ')[1].startsWith('L')) ? 'Path' : 'Type');\n }\n }\n if (!isSameValue)\n this.formFieldsModule.drawSignature(fieldValue.signatureType, fieldValue.value, target, fieldValue.fontName);\n }\n else {\n if (!isformDesignerModuleListBox) {\n this.formFieldsModule.updateDataInSession(target);\n }\n }\n }\n else {\n var data = this.viewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n var FormFieldsData = JSON.parse(data);\n for (var m = 0; m < FormFieldsData.length; m++) {\n var currentData = FormFieldsData[m];\n var fieldName = void 0;\n if (fieldValue.type === 'Checkbox' || fieldValue.type === 'RadioButton' || fieldValue.type === 'CheckBox') {\n fieldName = currentData.GroupName;\n }\n else if (fieldValue.type === 'DropDown' || fieldValue.type === 'ListBox' || fieldValue.type === 'DropdownList') {\n fieldName = currentData.Text;\n }\n else {\n fieldName = currentData.FieldName;\n }\n if (fieldName === fieldValue.name) {\n if (fieldValue.type === 'Textbox' || fieldValue.type === 'Password' || fieldValue.type === 'PasswordField') {\n if (fieldValue.value) {\n currentData.Text = fieldValue.value;\n currentData.Value = fieldValue.value;\n }\n }\n else if (fieldValue.type === 'Checkbox' || fieldValue.type === 'RadioButton' || fieldValue.type === 'CheckBox') {\n fieldValue.isSelected || fieldValue.isChecked ? currentData.Selected = true : currentData.Selected = false;\n }\n else if (fieldValue.type === 'DropDown' || fieldValue.type === 'ListBox' || fieldValue.type === 'DropdownList') {\n currentData.SelectedValue = fieldValue.value;\n var index = currentData.TextList ? currentData.TextList.indexOf(fieldValue.value) : 0;\n currentData.selectedIndex = index > -1 ? index : 0;\n fieldValue.type === 'ListBox' ? currentData.SelectedListed = [currentData.selectedIndex] : [];\n }\n else if (fieldValue.type === 'SignatureField' || fieldValue.type === 'InitialField') {\n if (fieldValue.value) {\n currentData.Value = fieldValue.value;\n currentData = this.updateSignatureValue(currentData, fieldValue);\n }\n }\n this.formFieldsModule.updateFormFieldsCollection(currentData);\n }\n }\n }\n window.sessionStorage.removeItem(this.viewerBase.documentId + '_formfields');\n this.viewerBase.setItemInSessionStorage(FormFieldsData, '_formfields');\n }\n };\n // eslint-disable-next-line\n PdfViewer.prototype.getFormFieldByID = function (id) {\n if (this.formDesignerModule) {\n return this.nameTable[id.split('_')[0]];\n }\n var data = window.sessionStorage.getItem(this.viewerBase.documentId + '_formfields');\n var formFieldsData = JSON.parse(data);\n return formFieldsData[formFieldsData.findIndex(function (el) { return el.uniqueID === id; })];\n };\n /**\n * @param number\n */\n // eslint-disable-next-line\n PdfViewer.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @param currentData - Current form field data.\n * @param fieldValue - Form Field.\n * @returns - Returns the updated the current Data.\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateSignatureValue = function (currentData, fieldValue) {\n if (!fieldValue.signatureType) {\n fieldValue.signatureType = (fieldValue.value.indexOf('base64')) > -1 ? 'Image' : ((fieldValue.value.startsWith('M') && fieldValue.split(',')[1].split(' ')[1].startsWith('L')) ? 'Path' : 'Type');\n }\n var bound = currentData.LineBounds;\n var left = this.ConvertPointToPixel(bound.X);\n var top = this.ConvertPointToPixel(bound.Y);\n var width = this.ConvertPointToPixel(bound.Width);\n var height = this.ConvertPointToPixel(bound.Height);\n var bounds;\n if (fieldValue.signatureType === 'Type') {\n if (!currentData.FontFamily) {\n currentData.FontFamily = 'Helvetica';\n }\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n if (this.signatureFitMode === 'Default') {\n bounds = this.formFieldsModule.getDefaultBoundsforSign(bounds);\n }\n currentData.Bounds = bounds;\n var fontSize = bounds.height / 1.35;\n var textWidth = this.formFieldsModule.getTextWidth(currentData.value, fontSize, currentData.FontFamily);\n var widthRatio = 1;\n if (textWidth > bounds.width)\n widthRatio = bounds.width / textWidth;\n currentData.FontSize = this.formFieldsModule.getFontSize(Math.floor((fontSize * widthRatio)));\n }\n else if (fieldValue.signatureType === 'Image') {\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n var image_1 = new Image();\n image_1.src = currentData.Value;\n var proxy_1 = this;\n image_1.onload = function () {\n proxy_1.imageOnLoad(bounds, image_1, currentData);\n };\n }\n else {\n if ((currentData.Value.indexOf('base64')) !== -1) {\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n if (this.signatureFitMode === 'Default') {\n bounds = this.formFieldsModule.getDefaultBoundsforSign(bounds);\n }\n }\n else {\n if (this.signatureFitMode === 'Default') {\n // eslint-disable-next-line\n var signBounds = this.formFieldsModule.updateSignatureAspectRatio(currentData.Value, false, null, currentData);\n // eslint-disable-next-line\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, signBounds.width, signBounds.height, true);\n bounds.x = bounds.x + signBounds.left;\n bounds.y = bounds.y + signBounds.top;\n }\n else {\n bounds = this.formFieldsModule.getSignBounds(currentData.pageIndex, currentData.RotationAngle, currentData.pageIndex, this.viewerBase.getZoomFactor(), left, top, width, height);\n }\n }\n currentData.Bounds = bounds;\n }\n return currentData;\n };\n PdfViewer.prototype.imageOnLoad = function (bounds, image, currentData) {\n if (this.signatureFitMode === 'Default') {\n var padding = Math.min(bounds.height / this.paddingDifferenceValue, bounds.width / this.paddingDifferenceValue);\n var maxHeight = bounds.height - padding;\n var maxWidth = bounds.width - padding;\n var imageWidth = image.width;\n var imageHeight = image.height;\n var beforeWidth = bounds.width;\n var beforeHeight = bounds.height;\n var ratio = Math.min(maxWidth / imageWidth, maxHeight / imageHeight);\n bounds.width = imageWidth * ratio;\n bounds.height = imageHeight * ratio;\n bounds.x = bounds.x + (beforeWidth - bounds.width) / 2;\n bounds.y = bounds.y + (beforeHeight - bounds.height) / 2;\n var data = this.viewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n var FormFieldsData = JSON.parse(data);\n for (var i = 0; i < FormFieldsData.length; i++) {\n if (FormFieldsData[i].FieldName == currentData.FieldName) {\n FormFieldsData[i].Bounds = bounds;\n this.formFieldsModule.updateFormFieldsCollection(FormFieldsData[i]);\n }\n }\n window.sessionStorage.removeItem(this.viewerBase.documentId + '_formfields');\n this.viewerBase.setItemInSessionStorage(FormFieldsData, '_formfields');\n }\n }\n };\n /**\n * Perform undo action for the edited annotations\n *\n * @returns void\n */\n PdfViewer.prototype.undo = function () {\n if (this.annotationModule) {\n this.annotationModule.undo();\n }\n };\n /**\n * Perform redo action for the edited annotations\n *\n * @returns void\n */\n PdfViewer.prototype.redo = function () {\n if (this.annotationModule) {\n this.annotationModule.redo();\n }\n };\n /**\n * Unloads the PDF document being displayed in the PDF viewer.\n *\n * @returns void\n */\n PdfViewer.prototype.unload = function () {\n this.viewerBase.clear(true);\n this.pageCount = 0;\n if (!isBlazor()) {\n if (this.toolbarModule) {\n this.viewerBase.pageCount = 0;\n this.toolbarModule.resetToolbar();\n }\n }\n else {\n this.viewerBase.blazorUIAdaptor.resetToolbar();\n }\n this.magnificationModule.zoomTo(100);\n };\n /**\n * Destroys all managed resources used by this object.\n *\n * @returns void\n */\n PdfViewer.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.element)) {\n if (!this.refreshing) {\n this.element.classList.remove('e-pdfviewer');\n }\n this.element.innerHTML = '';\n }\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.restrictUpdateZoomValue = false;\n }\n this.viewerBase.destroy();\n if (this.viewerBase.navigationPane) {\n this.viewerBase.navigationPane.restrictUpdateZoomValue = true;\n }\n };\n // eslint-disable-next-line\n /**\n * Perform imports annotations action in the PDF Viewer\n * @param {any} importData - Specifies the data for annotation imports\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.importAnnotation = function (importData, annotationDataFormat) {\n if (this.annotationModule) {\n if (typeof (importData) === 'string') {\n var isXfdfFile = ((importData.indexOf('.xfdf') > -1) || (annotationDataFormat.indexOf('Xfdf') > -1)) ? true : false;\n if (annotationDataFormat) {\n if (importData.indexOf('') > -1) {\n this.viewerBase.importAnnotations(importData, annotationDataFormat, false);\n }\n else {\n this.viewerBase.importAnnotations(importData, annotationDataFormat, isXfdfFile);\n }\n }\n else {\n if (importData.split('.')[1] === 'json') {\n this.viewerBase.importAnnotations(importData, AnnotationDataFormat.Json);\n }\n else {\n this.viewerBase.importAnnotations(importData, AnnotationDataFormat.Xfdf, isXfdfFile);\n }\n }\n }\n else {\n this.viewerBase.importAnnotations(importData);\n }\n }\n };\n /**\n * Perform export annotations action in the PDF Viewer\n *\n * @param annotationDataFormat\n * @returns void\n */\n PdfViewer.prototype.exportAnnotation = function (annotationDataFormat) {\n if (this.annotationModule) {\n if (annotationDataFormat && annotationDataFormat === 'Xfdf') {\n this.viewerBase.exportAnnotations(AnnotationDataFormat.Xfdf);\n }\n else {\n this.viewerBase.exportAnnotations(AnnotationDataFormat.Json);\n }\n }\n };\n /**\n * Perform export annotations action in the PDF Viewer\n *\n * @returns Promise\n */\n PdfViewer.prototype.exportAnnotationsAsObject = function () {\n var _this = this;\n if (this.annotationModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.exportAnnotationsAsObject().then(function (value) {\n var jsonData = JSON.parse(value);\n var jsonstring = JSON.stringify(jsonData);\n resolve(jsonstring);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * Export annotations and returns a base64 string for both Json and XFDF formats\n *\n * @param {AnnotationDataFormat} annotationDataFormat\n * @returns Promise\n */\n PdfViewer.prototype.exportAnnotationsAsBase64String = function (annotationDataFormat) {\n var _this = this;\n if (this.annotationModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.createRequestForExportAnnotations(false, annotationDataFormat, true).then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * Perform to add annotations in the PDF Viewer\n *\n * @param annotation\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.addAnnotation = function (annotation) {\n if (this.viewerBase) {\n this.viewerBase.addAnnotation(annotation);\n }\n };\n // eslint-disable-next-line\n /**\n * Imports the form fields data into the current PDF document.\n *\n * @param {string} data - The path for importing the fields.\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.importFormFields = function (data, formFieldDataFormat) {\n if (this.formFieldsModule) {\n if (isNullOrUndefined(formFieldDataFormat)) {\n formFieldDataFormat = FormFieldDataFormat.Json;\n }\n this.viewerBase.importFormFields(data, formFieldDataFormat);\n }\n };\n /**\n * Exports the form field data in the specified data format.\n *\n * @param {string} data - The path for exporting the fields.\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @returns void\n */\n PdfViewer.prototype.exportFormFields = function (data, formFieldDataFormat) {\n if (this.formFieldsModule) {\n this.viewerBase.exportFormFields(data, formFieldDataFormat);\n }\n };\n /**\n * Returns an object which represents the form field data in the specified data format.\n *\n * @param {FormFieldDataFormat} formFieldDataFormat\n * @returns Promise\n */\n PdfViewer.prototype.exportFormFieldsAsObject = function (formFieldDataFormat) {\n var _this = this;\n if (this.formFieldsModule) {\n return new Promise(function (resolve, reject) {\n _this.viewerBase.exportFormFieldsAsObject(formFieldDataFormat).then(function (value) {\n resolve(value);\n });\n });\n }\n else {\n return null;\n }\n };\n /**\n * reset all form fields data\n *\n * @returns void\n */\n PdfViewer.prototype.resetFormFields = function () {\n this.formFieldsModule.resetFormFields();\n };\n /**\n * Clears data from the form fields.\n * Parameter - Specifies the form field object.\n *\n * @param formField\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.clearFormFields = function (formField) {\n this.formFieldsModule.clearFormFields(formField);\n };\n /**\n * To delete the annotation Collections in the PDF Document.\n *\n * @returns void\n */\n PdfViewer.prototype.deleteAnnotations = function () {\n if (this.annotationModule) {\n this.viewerBase.deleteAnnotations();\n }\n };\n /**\n * To retrieve the form fields in the PDF Document.\n *\n * @returns void\n */\n PdfViewer.prototype.retrieveFormFields = function () {\n return this.formFieldCollections;\n };\n /**\n * To update the form fields in the PDF Document.\n *\n * @param formFields\n * @returns void\n */\n // eslint-disable-next-line\n PdfViewer.prototype.updateFormFields = function (formFields) {\n this.updateFormFieldsValue(formFields);\n this.formFieldsModule.updateFormFieldValues(formFields);\n };\n /**\n * @param JsonData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAjaxRequestInitiate = function (JsonData) {\n var eventArgs = { name: 'ajaxRequestInitiate', JsonData: JsonData };\n this.trigger('ajaxRequestInitiate', eventArgs);\n };\n /**\n * @param value\n * @param fieldName\n * @param id\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireButtonFieldClickEvent = function (value, fieldName, id) {\n var eventArgs = { name: 'buttonFieldClicked', buttonFieldValue: value, buttonFieldName: fieldName, id: id };\n this.trigger('buttonFieldClick', eventArgs);\n };\n /**\n * @param name\n * @param field\n * @param cancel\n * @param isLeftClick - becomes true on signature panel left click.\n * @private\n */\n PdfViewer.prototype.fireFormFieldClickEvent = function (name, field, cancel, isLeftClick) {\n return __awaiter$2(this, void 0, void 0, function () {\n var eventArgs, target, formFieldCollectionsValue, readOnly;\n return __generator$2(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { name: name, field: field, cancel: cancel };\n if (!isBlazor()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('formFieldClick', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n eventArgs.field.type = field.type;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('formFieldClick', eventArgs);\n _a.label = 3;\n case 3:\n if (field.type === 'SignatureField' || field.type === 'InitialField') {\n if (field.type === 'InitialField')\n this.viewerBase.isInitialField = true;\n else\n this.viewerBase.isInitialField = false;\n target = document.getElementById(field.id);\n if (target.style.visibility === \"hidden\") {\n target.disabled = true;\n }\n target = target ? target : (document.getElementById(field.id + '_content_html_element') ? document.getElementById(field.id + '_content_html_element').children[0].children[0] : null);\n formFieldCollectionsValue = this.formFieldCollections.filter(function (item) { return item.id === field.id; });\n if (formFieldCollectionsValue) {\n readOnly = formFieldCollectionsValue[0].isReadOnly;\n if ((!readOnly) && !eventArgs.cancel && target && !target.disabled && target.classList.contains('e-pdfviewer-signatureformfields') && (isLeftClick || isNullOrUndefined(isLeftClick))) {\n this.viewerBase.signatureModule.showSignatureDialog(true);\n }\n else if (readOnly) {\n target.disabled = true;\n }\n }\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field add event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldAddEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.viewerBase.isFormFieldSelect = false;\n this.trigger('formFieldAdd', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field remove event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldRemoveEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldRemove', eventArgs);\n };\n /**\n * @param name - Returns the event name.\n * @param field - Returns the double-clicked form field object.\n * @param cancel - If TRUE, property panel of the form field does not open. FALSE by default.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldDoubleClickEvent = function (eventArgs) {\n this.trigger('formFieldDoubleClick', eventArgs);\n return eventArgs;\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field properties change event.\n * @param pageIndex - Get the page number.\n * @param isAlignmentChanged - Specifies whether the text alignment of the form field is changed or not.\n * @param isBackgroundColorChanged - Specifies whether the background color of the form field is changed or not.\n * @param isBorderColorChanged - Specifies whether the border color of the form field is changed or not.\n * @param isBorderWidthChanged - Specifies whether the border width of the form field is changed or not.\n * @param isColorChanged - Specifies whether the font color of the form field is changed or not.\n * @param isFontFamilyChanged - Specifies whether the font family of the form field is changed or not.\n * @param isFontSizeChanged - Specifies whether the font size of the form field is changed or not.\n * @param isFontStyleChanged - Specifies whether the font style of the form field is changed or not.\n * @param isMaxLengthChanged - Specifies whether the max length of the form field is changed or not.\n * @param isPrintChanged - Specifies whether the print option of the form field is changed or not.\n * @param isReadOnlyChanged - Specifies the Read Only of Form field is changed or not.\n * @param isRequiredChanged - Specifies whether the is required option of the form field is changed or not.\n * @param isToolTipChanged - Specifies whether the tool tip property is changed or not.\n * @param isValueChanged - Specifies whether the form field value is changed or not.\n * @param isVisibilityChanged - Specifies whether the form field visibility is changed or not.\n * @param newValue - Specifies the new value of the form field.\n * @param oldValue - Specifies the old value of the form field.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldPropertiesChangeEvent = function (name, field, pageIndex, isValueChanged, isFontFamilyChanged, isFontSizeChanged, isFontStyleChanged, isColorChanged, isBackgroundColorChanged, isBorderColorChanged, isBorderWidthChanged, isAlignmentChanged, isReadOnlyChanged, isVisibilityChanged, isMaxLengthChanged, isRequiredChanged, isPrintChanged, isToolTipChanged, oldValue, newValue, isNamechanged) {\n var eventArgs = {\n name: name, field: field, pageIndex: pageIndex, isValueChanged: isValueChanged, isFontFamilyChanged: isFontFamilyChanged, isFontSizeChanged: isFontSizeChanged,\n isFontStyleChanged: isFontStyleChanged, isColorChanged: isColorChanged, isBackgroundColorChanged: isBackgroundColorChanged, isBorderColorChanged: isBorderColorChanged,\n isBorderWidthChanged: isBorderWidthChanged, isAlignmentChanged: isAlignmentChanged, isReadOnlyChanged: isReadOnlyChanged, isVisibilityChanged: isVisibilityChanged,\n isMaxLengthChanged: isMaxLengthChanged, isRequiredChanged: isRequiredChanged, isPrintChanged: isPrintChanged,\n isToolTipChanged: isToolTipChanged, oldValue: oldValue, newValue: newValue, isNameChanged: !isNullOrUndefined(isNamechanged) ? isNamechanged : false\n };\n this.trigger('formFieldPropertiesChange', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field mouse leave event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMouseLeaveEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldMouseLeave', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field mouse over event.\n * @param pageIndex - Get the page number.\n * @param pageX - Get the mouse over x position with respect to the page container.\n * @param pageY - Get the mouse over y position with respect to the page container.\n * @param X - Specifies the mouse over x position with respect to the viewer container.\n * @param Y - Specifies the mouse over y position with respect to the viewer container.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMouseoverEvent = function (name, field, pageIndex, pageX, pageY, X, Y) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, pageX: pageX, pageY: pageY, X: X, Y: Y };\n this.trigger('formFieldMouseover', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field move event.\n * @param pageIndex - Get the page number.\n * @param previousPosition - Get the previous position of the form field in the page.\n * @param currentPosition - Current position of form field in the page.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldMoveEvent = function (name, field, pageIndex, previousPosition, currentPosition) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('formFieldMove', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field resize event.\n * @param pageIndex - Get the page number.\n * @param previousPosition - Get the previous position of the form field in the page.\n * @param currentPosition - Current position of form field in the page.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldResizeEvent = function (name, field, pageIndex, previousPosition, currentPosition) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('formFieldResize', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field select event.\n * @param pageIndex - Get the page number.\n * @param isProgrammaticSelection - Specifies whether the the form field is selected programmatically or by UI.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldSelectEvent = function (name, field, pageIndex, isProgrammaticSelection) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex, isProgrammaticSelection: isProgrammaticSelection };\n this.trigger('formFieldSelect', eventArgs);\n };\n /**\n * @param name - Get the name of the event.\n * @param field - Event arguments for the form field unselect event.\n * @param pageIndex - Get the page number.\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormFieldUnselectEvent = function (name, field, pageIndex) {\n var eventArgs = { name: name, field: field, pageIndex: pageIndex };\n this.trigger('formFieldUnselect', eventArgs);\n };\n /**\n * @param pageData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireDocumentLoad = function (pageData) {\n var eventArgs = { name: 'documentLoad', documentName: this.fileName, pageData: pageData };\n this.trigger('documentLoad', eventArgs);\n if (isBlazor()) {\n this._dotnetInstance.invokeMethodAsync('LoadDocument', null);\n this.viewerBase.blazorUIAdaptor.loadDocument();\n }\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireDocumentUnload = function (fileName) {\n var eventArgs = { name: 'documentUnload', documentName: fileName };\n this.trigger('documentUnload', eventArgs);\n };\n /**\n * @param isPasswordRequired\n * @param password\n * @private\n */\n PdfViewer.prototype.fireDocumentLoadFailed = function (isPasswordRequired, password) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'documentLoadFailed', documentName: this.fileName, isPasswordRequired: isPasswordRequired, password: password };\n this.trigger('documentLoadFailed', eventArgs);\n };\n /**\n * @param errorStatusCode\n * @param errorMessage\n * @param action\n * @param retryCount\n * @private\n */\n PdfViewer.prototype.fireAjaxRequestFailed = function (errorStatusCode, errorMessage, action, retryCount) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'ajaxRequestFailed', documentName: this.fileName, errorStatusCode: errorStatusCode, errorMessage: errorMessage, action: action };\n if (retryCount) {\n eventArgs.retryCount = true;\n }\n this.trigger('ajaxRequestFailed', eventArgs);\n };\n /**\n * @param action\n * @param data\n * @private\n */\n PdfViewer.prototype.fireAjaxRequestSuccess = function (action, data) {\n var eventArgs = { name: 'ajaxRequestSuccess', documentName: this.fileName, action: action, data: data, cancel: false };\n this.trigger('ajaxRequestSuccess', eventArgs);\n if (eventArgs.cancel) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * @param action\n * @private\n */\n PdfViewer.prototype.fireValidatedFailed = function (action) {\n if (!isBlazor()) {\n // eslint-disable-next-line max-len\n var eventArgs = { formField: this.formFieldCollections, documentName: this.fileName, nonFillableFields: this.viewerBase.nonFillableFields };\n this.trigger('validateFormFields', eventArgs);\n }\n else {\n // eslint-disable-next-line\n var eventArgs = {};\n eventArgs.documentName = this.fileName;\n eventArgs.formFields = this.formFieldCollections;\n eventArgs.nonFillableFields = this.viewerBase.nonFillableFields;\n this.trigger('validateFormFields', eventArgs);\n }\n };\n /**\n * @param x\n * @param y\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.firePageClick = function (x, y, pageNumber) {\n var eventArgs = { name: 'pageClick', documentName: this.fileName, x: x, y: y, pageNumber: pageNumber };\n this.trigger('pageClick', eventArgs);\n };\n /**\n * @param previousPageNumber\n * @private\n */\n PdfViewer.prototype.firePageChange = function (previousPageNumber) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'pageChange', documentName: this.fileName, currentPageNumber: this.currentPageNumber, previousPageNumber: previousPageNumber };\n this.trigger('pageChange', eventArgs);\n if (isBlazor()) {\n //this._dotnetInstance.invokeMethodAsync('OnPageChanged', this.currentPageNumber);\n this.viewerBase.blazorUIAdaptor.pageChanged(this.currentPageNumber);\n }\n };\n /**\n * @private\n */\n PdfViewer.prototype.fireZoomChange = function () {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'zoomChange', zoomValue: this.magnificationModule.zoomFactor * 100, previousZoomValue: this.magnificationModule.previousZoomFactor * 100 };\n this.trigger('zoomChange', eventArgs);\n };\n /**\n * @param hyperlink\n * @param hyperlinkElement\n * @private\n */\n PdfViewer.prototype.fireHyperlinkClick = function (hyperlink, hyperlinkElement) {\n return __awaiter$2(this, void 0, void 0, function () {\n var eventArgs;\n return __generator$2(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { name: 'hyperlinkClick', hyperlink: hyperlink, hyperlinkElement: hyperlinkElement, cancel: false };\n if (!isBlazor()) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('hyperlinkClick', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('hyperlinkClick', eventArgs);\n _a.label = 3;\n case 3:\n if (eventArgs.hyperlinkElement.href != eventArgs.hyperlink) {\n hyperlinkElement.href = eventArgs.hyperlink;\n }\n if (eventArgs.cancel) {\n return [2 /*return*/, false];\n }\n else {\n return [2 /*return*/, true];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param hyperlinkElement\n * @private\n */\n PdfViewer.prototype.fireHyperlinkHover = function (hyperlinkElement) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'hyperlinkMouseOver', hyperlinkElement: hyperlinkElement };\n this.trigger('hyperlinkMouseOver', eventArgs);\n };\n /**\n * @param fieldName\n * @param value\n * @private\n */\n PdfViewer.prototype.fireFocusOutFormField = function (fieldName, value) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'formFieldFocusOut', fieldName: fieldName, value: value };\n // eslint-disable-next-line\n this.trigger('formFieldFocusOut', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationAdd = function (pageNumber, index, type, bounds, settings, textMarkupContent, tmStartIndex, tmEndIndex, labelSettings, multiPageCollection, customStampName) {\n var eventArgs = { name: 'annotationAdd', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBound: bounds, annotationSettings: settings };\n if (textMarkupContent) {\n if (isBlazor()) {\n eventArgs.annotationSettings.textMarkupContent = textMarkupContent;\n eventArgs.annotationSettings.textMarkupStartIndex = tmStartIndex;\n eventArgs.annotationSettings.textMarkupEndIndex = tmEndIndex;\n }\n else {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n }\n if (labelSettings) {\n eventArgs.labelSettings = labelSettings;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n if (type === 'Image') {\n eventArgs.customStampName = customStampName;\n }\n this.viewerBase.isAnnotationSelect = false;\n this.trigger('annotationAdd', eventArgs);\n if (isBlazor()) {\n // this._dotnetInstance.invokeMethodAsync('AnnotationAdd', null);\n this.viewerBase.blazorUIAdaptor.annotationAdd();\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationRemove = function (pageNumber, index, type, bounds, textMarkupContent, tmStartIndex, tmEndIndex, multiPageCollection) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationRemove', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBounds: bounds };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationRemove', eventArgs);\n };\n /**\n * @param value\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireBeforeAddFreeTextAnnotation = function (value) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'beforeAddFreeText', value: value };\n // eslint-disable-next-line\n this.trigger('beforeAddFreeText', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentAdd = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentAdd', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentAdd', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentEdit = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentEdit', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentEdit', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentDelete = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentDelete', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentDelete', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentSelect = function (id, text, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentSelect', id: id, text: text, annotation: annotation };\n // eslint-disable-next-line\n this.trigger('commentSelect', eventArgs);\n };\n /**\n * @param id\n * @param text\n * @param annotation\n * @param statusChange\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireCommentStatusChanged = function (id, text, annotation, statusChange) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'CommentStatusChanged', id: id, text: text, annotation: annotation, status: statusChange };\n // eslint-disable-next-line\n this.trigger('commentStatusChanged', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param isColorChanged\n * @param isOpacityChanged\n * @param isTextChanged\n * @param isCommentsChanged\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationPropertiesChange = function (pageNumber, index, type, isColorChanged, isOpacityChanged, isTextChanged, isCommentsChanged, textMarkupContent, tmStartIndex, tmEndIndex, multiPageCollection) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationPropertiesChange', pageIndex: pageNumber, annotationId: index, annotationType: type, isColorChanged: isColorChanged, isOpacityChanged: isOpacityChanged, isTextChanged: isTextChanged, isCommentsChanged: isCommentsChanged };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationPropertiesChange', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureAdd = function (pageNumber, index, type, bounds, opacity, strokeColor, thickness, data) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, bounds: bounds, opacity: opacity };\n if (thickness) {\n eventArgs.thickness = thickness;\n }\n if (strokeColor) {\n eventArgs.strokeColor = strokeColor;\n }\n if (data) {\n eventArgs.data = data;\n }\n this.trigger('addSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureRemove = function (pageNumber, index, type, bounds) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, bounds: bounds };\n this.trigger('removeSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureMove = function (pageNumber, id, type, opacity, strokeColor, thickness, previousPosition, currentPosition) {\n var eventArgs = { pageIndex: pageNumber, id: id, type: type, opacity: opacity, strokeColor: strokeColor, thickness: thickness, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('moveSignature', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param isStrokeColorChanged\n * @param isOpacityChanged\n * @param isThicknessChanged\n * @param oldProp\n * @param newProp\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignaturePropertiesChange = function (pageNumber, index, type, isStrokeColorChanged, isOpacityChanged, isThicknessChanged, oldProp, newProp) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, isStrokeColorChanged: isStrokeColorChanged, isOpacityChanged: isOpacityChanged, isThicknessChanged: isThicknessChanged, oldValue: oldProp, newValue: newProp };\n this.trigger('signaturePropertiesChange', eventArgs);\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param opacity\n * @param strokeColor\n * @param thickness\n * @param currentPosition\n * @param previousPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureResize = function (pageNumber, index, type, opacity, strokeColor, thickness, currentPosition, previousPosition) {\n var eventArgs = { pageIndex: pageNumber, id: index, type: type, opacity: opacity, strokeColor: strokeColor, thickness: thickness, currentPosition: currentPosition, previousPosition: previousPosition };\n this.trigger('resizeSignature', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param signature\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireSignatureSelect = function (id, pageNumber, signature) {\n var eventArgs = { id: id, pageIndex: pageNumber, signature: signature };\n this.trigger('signatureSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @param annotationCollection\n * @param multiPageCollection\n * @param isSelected\n * @param annotationAddMode\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationSelect = function (id, pageNumber, annotation, annotationCollection, multiPageCollection, isSelected, annotationAddMode) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n if (annotationCollection) {\n // eslint-disable-next-line max-len\n eventArgs = { name: 'annotationSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation, annotationCollection: annotationCollection };\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n if (isSelected) {\n eventArgs.isProgrammaticSelection = isSelected;\n }\n if (annotationAddMode) {\n eventArgs.annotationAddMode = annotationAddMode;\n }\n if (isBlazor()) {\n if (annotation.type === 'FreeText') {\n // eslint-disable-next-line\n var fontStyle = { isBold: false, isItalic: false, isStrikeout: false, isUnderline: false };\n if (annotation.fontStyle === 1) {\n fontStyle.isBold = true;\n }\n else if (annotation.fontStyle === 2) {\n fontStyle.isItalic = true;\n }\n else if (annotation.fontStyle === 3) {\n fontStyle.isStrikeout = true;\n }\n else if (annotation.fontStyle === 4) {\n fontStyle.isUnderline = true;\n }\n annotation.fontStyle = fontStyle;\n }\n //this._dotnetInstance.invokeMethodAsync('AnnotationSelect', annotation.type);\n this.viewerBase.blazorUIAdaptor.annotationSelect(annotation.type);\n }\n this.trigger('annotationSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationUnSelect = function (id, pageNumber, annotation) {\n if (isBlazor()) {\n this.viewerBase.blazorUIAdaptor.annotationUnSelect();\n }\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationUnSelect', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n this.trigger('annotationUnSelect', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotation\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationDoubleClick = function (id, pageNumber, annotation) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'annotationDblClick', annotationId: id, pageIndex: pageNumber, annotation: annotation };\n this.trigger('annotationDoubleClick', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.fireTextSelectionStart = function (pageNumber) {\n this.isTextSelectionStarted = true;\n var eventArgs = { pageIndex: pageNumber };\n this.trigger('textSelectionStart', eventArgs);\n };\n /**\n * @param pageNumber\n * @param text\n * @param bound\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSelectionEnd = function (pageNumber, text, bound) {\n if (this.isTextSelectionStarted) {\n var eventArgs = { pageIndex: pageNumber, textContent: text, textBounds: bound };\n this.trigger('textSelectionEnd', eventArgs);\n this.isTextSelectionStarted = false;\n }\n };\n /**\n * @param canvas\n * @param index\n * @private\n */\n PdfViewer.prototype.renderDrawing = function (canvas, index) {\n if (isNullOrUndefined(index) && this.viewerBase.activeElements.activePageID && !this.viewerBase.isPrint) {\n index = this.viewerBase.activeElements.activePageID;\n }\n if (this.annotation) {\n this.annotation.renderAnnotations(index, null, null, null, canvas);\n }\n else if (this.formDesignerModule) {\n this.formDesignerModule.updateCanvas(index, canvas);\n }\n };\n /**\n * @param pageNumber\n * @param index\n * @param type\n * @param bounds\n * @param settings\n * @param textMarkupContent\n * @param tmStartIndex\n * @param tmEndIndex\n * @param labelSettings\n * @param multiPageCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationResize = function (pageNumber, index, type, bounds, settings, textMarkupContent, tmStartIndex, tmEndIndex, labelSettings, multiPageCollection) {\n var eventArgs = { name: 'annotationResize', pageIndex: pageNumber, annotationId: index, annotationType: type, annotationBound: bounds, annotationSettings: settings };\n if (textMarkupContent) {\n eventArgs.textMarkupContent = textMarkupContent;\n eventArgs.textMarkupStartIndex = tmStartIndex;\n eventArgs.textMarkupEndIndex = tmEndIndex;\n }\n if (labelSettings) {\n eventArgs.labelSettings = labelSettings;\n }\n if (multiPageCollection) {\n eventArgs.multiplePageCollection = multiPageCollection;\n }\n this.trigger('annotationResize', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param annotationSettings\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMoving = function (pageNumber, id, type, annotationSettings, previousPosition, currentPosition) {\n var eventArgs = { name: 'annotationMoving', pageIndex: pageNumber, annotationId: id, annotationType: type, annotationSettings: annotationSettings, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('annotationMoving', eventArgs);\n };\n /**\n * @param pageNumber\n * @param id\n * @param type\n * @param annotationSettings\n * @param previousPosition\n * @param currentPosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMove = function (pageNumber, id, type, annotationSettings, previousPosition, currentPosition) {\n var eventArgs = { name: 'annotationMove', pageIndex: pageNumber, annotationId: id, annotationType: type, annotationSettings: annotationSettings, previousPosition: previousPosition, currentPosition: currentPosition };\n this.trigger('annotationMove', eventArgs);\n };\n /**\n * @param id\n * @param pageNumber\n * @param annotationType\n * @param bounds\n * @param annotation\n * @param currentPosition\n * @param mousePosition\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMouseover = function (id, pageNumber, annotationType, bounds, annotation, currentPosition, mousePosition) {\n var eventArgs = { name: 'annotationMouseover', annotationId: id, pageIndex: pageNumber, annotationType: annotationType, annotationBounds: bounds, annotation: annotation, pageX: currentPosition.left, pageY: currentPosition.top, X: mousePosition.left, Y: mousePosition.top };\n if (isBlazor()) {\n if (annotation.subject === 'Perimeter calculation') {\n eventArgs.annotationType = 'Perimeter';\n }\n else if (annotation.subject === 'Area calculation') {\n eventArgs.annotationType = 'Area';\n }\n else if (annotation.subject === 'Volume calculation') {\n eventArgs.annotationType = 'Volume';\n }\n else if (annotation.subject === 'Arrow') {\n eventArgs.annotationType = 'Arrow';\n }\n else if (annotation.subject === 'Circle') {\n eventArgs.annotationType = 'Circle';\n }\n }\n this.trigger('annotationMouseover', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireAnnotationMouseLeave = function (pageNumber) {\n var eventArgs = { name: 'annotationMouseLeave', pageIndex: pageNumber };\n this.trigger('annotationMouseLeave', eventArgs);\n };\n /**\n * @param pageX\n * @param pageY\n * @private\n */\n PdfViewer.prototype.firePageMouseover = function (pageX, pageY) {\n var eventArgs = { pageX: pageX, pageY: pageY };\n this.trigger('pageMouseover', eventArgs);\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireDownloadStart = function (fileName) {\n var eventArgs = { fileName: fileName };\n this.trigger('downloadStart', eventArgs);\n };\n /**\n * @param fileName\n * @param downloadData\n * @private\n */\n PdfViewer.prototype.fireDownloadEnd = function (fileName, downloadData) {\n var eventArgs = { fileName: fileName, downloadDocument: downloadData };\n this.trigger('downloadEnd', eventArgs);\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.firePrintStart = function () {\n return __awaiter$2(this, void 0, void 0, function () {\n var eventArgs;\n return __generator$2(this, function (_a) {\n switch (_a.label) {\n case 0:\n eventArgs = { fileName: this.downloadFileName, cancel: false };\n if (!isBlazor) return [3 /*break*/, 2];\n return [4 /*yield*/, this.triggerEvent('printStart', eventArgs)];\n case 1:\n eventArgs = (_a.sent()) || eventArgs;\n return [3 /*break*/, 3];\n case 2:\n this.triggerEvent('printStart', eventArgs);\n _a.label = 3;\n case 3:\n if (!eventArgs.cancel) {\n this.printModule.print();\n }\n return [2 /*return*/];\n }\n });\n });\n };\n /**\n * @param eventName\n * @param args\n * @param eventName\n * @param args\n * @private\n */\n PdfViewer.prototype.triggerEvent = function (eventName, args) {\n return __awaiter$2(this, void 0, void 0, function () {\n var eventArgs;\n return __generator$2(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.trigger(eventName, args)];\n case 1:\n eventArgs = _a.sent();\n if (isBlazor && typeof eventArgs === 'string') {\n eventArgs = JSON.parse(eventArgs);\n }\n return [2 /*return*/, eventArgs];\n }\n });\n });\n };\n /**\n * @param fileName\n * @private\n */\n PdfViewer.prototype.firePrintEnd = function (fileName) {\n var eventArgs = { fileName: fileName };\n this.trigger('printEnd', eventArgs);\n };\n /**\n * @param pageNumber\n * @private\n */\n PdfViewer.prototype.fireThumbnailClick = function (pageNumber) {\n var eventArgs = { name: 'thumbnailClick', pageNumber: pageNumber };\n this.trigger('thumbnailClick', eventArgs);\n };\n /**\n * @param pageNumber\n * @param position\n * @param text\n * @param fileName\n * @private\n */\n PdfViewer.prototype.fireBookmarkClick = function (pageNumber, position, text, fileName) {\n // eslint-disable-next-line\n var eventArgs = { name: 'bookmarkClick', pageNumber: pageNumber, position: position, text: text, fileName: fileName };\n this.trigger('bookmarkClick', eventArgs);\n };\n /**\n * @param importData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportStart = function (importData) {\n var eventArgs = { name: 'importAnnotationsStart', importData: importData, formFieldData: null };\n this.trigger('importStart', eventArgs);\n };\n /**\n * @param exportData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportStart = function (exportData) {\n var eventArgs = { name: 'exportAnnotationsStart', exportData: exportData, formFieldData: null };\n this.trigger('exportStart', eventArgs);\n };\n /**\n * @param importData\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportSuccess = function (importData) {\n var eventArgs = { name: 'importAnnotationsSuccess', importData: importData, formFieldData: null };\n this.trigger('importSuccess', eventArgs);\n };\n /**\n * @param exportData\n * @param fileName\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportSuccess = function (exportData, fileName) {\n var eventArgs = { name: 'exportAnnotationsSuccess', exportData: exportData, fileName: fileName, formFieldData: null };\n this.trigger('exportSuccess', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireImportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'importAnnotationsFailed', importData: data, errorDetails: errorDetails, formFieldData: null };\n this.trigger('importFailed', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireExportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'exportAnnotationsFailed', exportData: data, errorDetails: errorDetails, formFieldData: null };\n this.trigger('exportFailed', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportStarted = function (data) {\n var eventArgs = { name: 'importFormFieldsStart', importData: null, formFieldData: data };\n this.trigger('importStart', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportStarted = function (data) {\n var eventArgs = { name: 'exportFormFieldsStart', exportData: null, formFieldData: data };\n this.trigger('exportStart', eventArgs);\n };\n /**\n * @param data\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportSuccess = function (data) {\n var eventArgs = { name: 'importFormFieldsSuccess', importData: data, formFieldData: data };\n this.trigger('importSuccess', eventArgs);\n };\n /**\n * @param data\n * @param fileName\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportSuccess = function (data, fileName) {\n var eventArgs = { name: 'exportFormFieldsSuccess', exportData: data, fileName: fileName, formFieldData: data };\n this.trigger('exportSuccess', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormImportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'importFormFieldsfailed', importData: data, errorDetails: errorDetails, formFieldData: data };\n this.trigger('importFailed', eventArgs);\n };\n /**\n * @param data\n * @param errorDetails\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireFormExportFailed = function (data, errorDetails) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'exportFormFieldsFailed', exportData: data, errorDetails: errorDetails, formFieldData: data };\n this.trigger('exportFailed', eventArgs);\n };\n /**\n * @param documentCollection\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextExtractionCompleted = function (documentCollection) {\n var eventArgs = { documentTextCollection: documentCollection };\n this.trigger('extractTextCompleted', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchStart = function (searchText, isMatchcase) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchStart', searchText: searchText, matchCase: isMatchcase };\n this.trigger('textSearchStart', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchComplete = function (searchText, isMatchcase) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchComplete', searchText: searchText, matchCase: isMatchcase };\n this.trigger('textSearchComplete', eventArgs);\n };\n /**\n * @param searchText\n * @param isMatchcase\n * @param bounds\n * @param pageNumber\n * @private\n */\n // eslint-disable-next-line\n PdfViewer.prototype.fireTextSearchHighlight = function (searchText, isMatchcase, bounds, pageNumber) {\n // eslint-disable-next-line max-len\n var eventArgs = { name: 'textSearchHighlight', searchText: searchText, matchCase: isMatchcase, bounds: bounds, pageNumber: pageNumber };\n this.trigger('textSearchHighlight', eventArgs);\n };\n /**\n * @param bounds\n * @param commonStyle\n * @param cavas\n * @param index\n * @private\n */\n PdfViewer.prototype.renderAdornerLayer = function (bounds, commonStyle, cavas, index) {\n renderAdornerLayer(bounds, commonStyle, cavas, index, this);\n };\n /**\n * @param index\n * @param currentSelector\n * @private\n */\n PdfViewer.prototype.renderSelector = function (index, currentSelector) {\n this.drawing.renderSelector(index, currentSelector);\n };\n /**\n * @param objArray\n * @param currentSelector\n * @param multipleSelection\n * @param preventUpdate\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.select = function (objArray, currentSelector, multipleSelection, preventUpdate) {\n var allowServerDataBind = this.allowServerDataBinding;\n this.enableServerDataBinding(false);\n if (this.annotationModule) {\n var module = this.annotationModule.textMarkupAnnotationModule;\n var annotationSelect = module && module.selectTextMarkupCurrentPage;\n // eslint-disable-next-line\n var annotation = this.selectedItems.annotations[0];\n if (annotationSelect) {\n // eslint-disable-next-line\n var currentAnnot = this.annotationModule.textMarkupAnnotationModule.currentTextMarkupAnnotation;\n this.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(annotationSelect, true);\n this.fireAnnotationUnSelect(currentAnnot.annotName, currentAnnot.pageNumber, currentAnnot);\n }\n if (!multipleSelection) {\n if (this.viewerBase.activeElements && this.viewerBase.activeElements.activePageID >= 0) {\n if (!this.viewerBase.isNewStamp && annotation && annotation.shapeAnnotationType !== 'HandWrittenSignature' && annotation.shapeAnnotationType !== 'SignatureText' && annotation.shapeAnnotationType !== 'SignatureImage') {\n this.fireAnnotationUnSelect(annotation.annotName, annotation.pageIndex, annotation);\n }\n }\n }\n }\n if (this.formDesignerModule) {\n var formField = this.selectedItems.formFields[0];\n if (formField) {\n if (this.formDesignerModule && formField && formField.formFieldAnnotationType) {\n var field = {\n name: formField.name, id: formField.id, value: formField.value, fontFamily: formField.fontFamily, fontSize: formField.fontSize, fontStyle: formField.fontStyle,\n color: formField.color, backgroundColor: formField.backgroundColor, borderColor: formField.borderColor,\n thickness: formField.thickness, alignment: formField.alignment, isReadonly: formField.isReadonly, visibility: formField.visibility,\n maxLength: formField.maxLength, isRequired: formField.isRequired, isPrint: formField.isPrint, rotation: formField.rotateAngle, tooltip: formField.tooltip, options: formField.options,\n isChecked: formField.isChecked, isSelected: formField.isSelected\n };\n this.fireFormFieldUnselectEvent(\"formFieldUnselect\", field, formField.pageIndex);\n }\n }\n }\n var proxy = this;\n this.viewerBase.renderedPagesList.forEach(function (item) {\n proxy.clearSelection(item);\n });\n this.drawing.select(objArray, currentSelector, multipleSelection, preventUpdate);\n this.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * @param pageId\n * @private\n */\n PdfViewer.prototype.getPageTable = function (pageId) {\n return this.drawing.getPageTable(pageId);\n };\n /**\n * @param diffX\n * @param diffY\n * @param pageIndex\n * @param currentSelector\n * @param helper\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.dragSelectedObjects = function (diffX, diffY, pageIndex, currentSelector, helper) {\n return this.drawing.dragSelectedObjects(diffX, diffY, pageIndex, currentSelector, helper);\n };\n /**\n * @param sx\n * @param sy\n * @param pivot\n * @private\n */\n PdfViewer.prototype.scaleSelectedItems = function (sx, sy, pivot) {\n return this.drawing.scaleSelectedItems(sx, sy, pivot);\n };\n /**\n * @param endPoint\n * @param obj\n * @param point\n * @param segment\n * @param target\n * @param targetPortId\n * @param currentSelector\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.dragConnectorEnds = function (endPoint, obj, point, segment, target, targetPortId, currentSelector) {\n return this.drawing.dragConnectorEnds(endPoint, obj, point, segment, target, null, currentSelector);\n };\n /**\n * @param pageId\n * @private\n */\n PdfViewer.prototype.clearSelection = function (pageId) {\n var allowServerDataBind = this.allowServerDataBinding;\n this.enableServerDataBinding(false);\n var selectormodel = this.selectedItems;\n var node = selectormodel.annotations.length > 0 ? this.selectedItems.annotations[0] : this.selectedItems.formFields[0];\n if (selectormodel.annotations.length > 0) {\n selectormodel.offsetX = 0;\n selectormodel.offsetY = 0;\n selectormodel.width = 0;\n selectormodel.height = 0;\n selectormodel.rotateAngle = 0;\n selectormodel.annotations = [];\n selectormodel.wrapper = null;\n }\n else if (selectormodel.formFields.length > 0) {\n selectormodel.offsetX = 0;\n selectormodel.offsetY = 0;\n selectormodel.width = 0;\n selectormodel.height = 0;\n selectormodel.rotateAngle = 0;\n selectormodel.formFields = [];\n selectormodel.wrapper = null;\n }\n this.drawing.clearSelectorLayer(pageId);\n this.viewerBase.isAnnotationSelect = false;\n this.viewerBase.isFormFieldSelect = false;\n if (this.annotationModule) {\n var module = this.annotationModule.textMarkupAnnotationModule;\n if (module) {\n var annotationSelect = module.selectTextMarkupCurrentPage;\n this.annotationModule.textMarkupAnnotationModule.clearCurrentSelectedAnnotation();\n this.annotationModule.textMarkupAnnotationModule.clearCurrentAnnotationSelection(annotationSelect);\n }\n }\n this.enableServerDataBinding(allowServerDataBind, true);\n };\n /**\n * Get page number from the user coordinates x and y.\n *\n * @param {Point} clientPoint - The user will provide a x, y coordinates.\n * @returns number\n */\n PdfViewer.prototype.getPageNumberFromClientPoint = function (clientPoint) {\n var pageNumber = this.viewerBase.getPageNumberFromClientPoint(clientPoint);\n return pageNumber;\n };\n /**\n * Convert user coordinates to the PDF page coordinates.\n *\n * @param {Point} clientPoint - The user should provide a x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns Point\n */\n PdfViewer.prototype.convertClientPointToPagePoint = function (clientPoint, pageNumber) {\n var pagePoint = this.viewerBase.convertClientPointToPagePoint(clientPoint, pageNumber);\n return pagePoint;\n };\n /**\n * Convert page coordinates to the user coordinates.\n *\n * @param {Point} pagePoint - The user should provide a page x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns Point\n */\n PdfViewer.prototype.convertPagePointToClientPoint = function (pagePoint, pageNumber) {\n var clientPoint = this.viewerBase.convertPagePointToClientPoint(pagePoint, pageNumber);\n return clientPoint;\n };\n /**\n * Convert page coordinates to the scrolling coordinates.\n *\n * @param {Point} pagePoint - The user should provide a page x, y coordinates.\n * @param {number} pageNumber - We need to pass pageNumber.\n * @returns Point\n */\n PdfViewer.prototype.convertPagePointToScrollingPoint = function (pagePoint, pageNumber) {\n var scrollingPoint = this.viewerBase.convertPagePointToScrollingPoint(pagePoint, pageNumber);\n return scrollingPoint;\n };\n /**\n * Brings the given rectangular region to view and zooms in the document to fit the region in client area (view port).\n *\n * @param {Rect} rectangle - Specifies the region in client coordinates that is to be brought to view.\n */\n PdfViewer.prototype.zoomToRect = function (rectangle) {\n this.magnificationModule.zoomToRect(rectangle);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.add = function (obj) {\n return this.drawing.add(obj);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.remove = function (obj) {\n return this.drawing.remove(obj);\n };\n /**\n * @private\n */\n PdfViewer.prototype.copy = function () {\n if (this.annotation)\n this.annotation.isShapeCopied = true;\n else if (this.formDesigner && this.designerMode)\n this.formDesigner.isShapeCopied = true;\n return this.drawing.copy();\n };\n /**\n * @param angle\n * @param currentSelector\n * @private\n */\n PdfViewer.prototype.rotate = function (angle, currentSelector) {\n return this.drawing.rotate(this.selectedItems, angle, null, currentSelector);\n };\n /**\n * @param obj\n * @private\n */\n PdfViewer.prototype.paste = function (obj) {\n var index;\n if (this.viewerBase.activeElements.activePageID) {\n index = this.viewerBase.activeElements.activePageID;\n }\n return this.drawing.paste(obj, index || 0);\n };\n /**\n * @private\n */\n PdfViewer.prototype.refresh = function () {\n for (var i = 0; i < this.annotations.length; i++) {\n if (this.zIndexTable.length !== undefined) {\n for (var i_1 = 0; i_1 < this.zIndexTable.length; i_1++) {\n var objects = this.zIndexTable[i_1].objects;\n for (var j = 0; j < objects.length; j++) {\n objects.splice(j, 1);\n }\n delete this.zIndexTable[i_1];\n }\n if (this.annotations[i]) {\n delete this.annotations[i];\n }\n if (this.selectedItems.annotations && this.selectedItems.annotations[i]) {\n delete this.selectedItems.annotations[i];\n }\n this.zIndexTable = [];\n this.renderDrawing();\n }\n if (this.annotations && this.annotations.length !== 0) {\n this.annotations.length = 0;\n this.selectedItems.annotations.length = 0;\n }\n }\n };\n /**\n * @private\n */\n PdfViewer.prototype.cut = function () {\n var index;\n if (this.viewerBase.activeElements.activePageID) {\n index = this.viewerBase.activeElements.activePageID;\n }\n if (this.annotation)\n this.annotation.isShapeCopied = true;\n else if (this.formDesigner && this.designerMode)\n this.formDesigner.isShapeCopied = true;\n return this.drawing.cut(index || 0);\n };\n /**\n * @param actualObject\n * @param node\n * @private\n */\n PdfViewer.prototype.nodePropertyChange = function (actualObject, node) {\n this.drawing.nodePropertyChange(actualObject, node);\n };\n /**\n * enableServerDataBinding method\n *\n * @returns { void } enableServerDataBinding method.\n * @param {boolean} enable - provide the node value.\n *\n * @private\n */\n PdfViewer.prototype.enableServerDataBinding = function (enable, clearBulkChanges) {\n if (clearBulkChanges === void 0) { clearBulkChanges = false; }\n if (isBlazor()) {\n this.allowServerDataBinding = enable;\n if (clearBulkChanges) {\n this.bulkChanges = {};\n }\n }\n };\n /**\n * @param tx\n * @param ty\n * @param pageIndex\n * @param nodeBounds\n * @param isStamp\n * @param isSkip\n * @private\n */\n // eslint-disable-next-line max-len\n PdfViewer.prototype.checkBoundaryConstraints = function (tx, ty, pageIndex, nodeBounds, isStamp, isSkip) {\n return this.drawing.checkBoundaryConstraints(tx, ty, pageIndex, nodeBounds, isStamp, isSkip);\n };\n __decorate$2([\n Property()\n ], PdfViewer.prototype, \"serviceUrl\", void 0);\n __decorate$2([\n Property(0)\n ], PdfViewer.prototype, \"pageCount\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isDocumentEdited\", void 0);\n __decorate$2([\n Property(0)\n ], PdfViewer.prototype, \"currentPageNumber\", void 0);\n __decorate$2([\n Property()\n ], PdfViewer.prototype, \"documentPath\", void 0);\n __decorate$2([\n Property(null)\n ], PdfViewer.prototype, \"exportAnnotationFileName\", void 0);\n __decorate$2([\n Property()\n ], PdfViewer.prototype, \"downloadFileName\", void 0);\n __decorate$2([\n Property('auto')\n ], PdfViewer.prototype, \"height\", void 0);\n __decorate$2([\n Property('auto')\n ], PdfViewer.prototype, \"width\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableToolbar\", void 0);\n __decorate$2([\n Property(1)\n ], PdfViewer.prototype, \"retryCount\", void 0);\n __decorate$2([\n Property([500])\n ], PdfViewer.prototype, \"retryStatusCodes\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"showNotificationDialog\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableNavigationToolbar\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableCommentPanel\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isCommandPanelOpen\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"enableTextMarkupResizer\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"enableMultiLineOverlap\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isValidFreeText\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isAnnotationToolbarOpen\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isAnnotationToolbarVisible\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isFormDesignerToolbarVisible\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"enableMultiPageAnnotation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableDownload\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enablePrint\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enablePrintRotation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableThumbnail\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isThumbnailViewOpen\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isSignatureEditable\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableBookmark\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"enableBookmarkStyles\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableHyperlink\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableHandwrittenSignature\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableInkAnnotation\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"restrictZoomRequest\", void 0);\n __decorate$2([\n Property('CurrentTab')\n ], PdfViewer.prototype, \"hyperlinkOpenState\", void 0);\n __decorate$2([\n Property('RightClick')\n ], PdfViewer.prototype, \"contextMenuOption\", void 0);\n __decorate$2([\n Property([])\n ], PdfViewer.prototype, \"disableContextMenuItems\", void 0);\n __decorate$2([\n Property({ name: '', id: '', type: '', isReadOnly: false, isSelected: false, isChecked: false, value: '', signatureType: [''], fontName: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', visibility: 'visible', maxLength: 0, isRequired: false, isPrint: false, tooltip: '', pageIndex: -1, options: [], signatureIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' } })\n ], PdfViewer.prototype, \"formFieldCollections\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableNavigation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableAutoComplete\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableMagnification\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"enableShapeLabel\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableImportAnnotationMeasurement\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enablePinchZoom\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableTextSelection\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableTextSearch\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableAnnotation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableFormFields\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableFormDesigner\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"designerMode\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"enableFormFieldsValidation\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isFormFieldDocument\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"enableDesktopMode\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"hideSaveSignature\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableFreeText\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableTextMarkupAnnotation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableShapeAnnotation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableMeasureAnnotation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableStampAnnotations\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableStickyNotesAnnotation\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableAnnotationToolbar\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableFormDesignerToolbar\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isBookmarkPanelOpen\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isInitialFieldToolbarSelection\", void 0);\n __decorate$2([\n Property('TextSelection')\n ], PdfViewer.prototype, \"interactionMode\", void 0);\n __decorate$2([\n Property('Default')\n ], PdfViewer.prototype, \"zoomMode\", void 0);\n __decorate$2([\n Property('Default')\n ], PdfViewer.prototype, \"signatureFitMode\", void 0);\n __decorate$2([\n Property('Default')\n ], PdfViewer.prototype, \"printMode\", void 0);\n __decorate$2([\n Property(0)\n ], PdfViewer.prototype, \"zoomValue\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"enableZoomOptimization\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isExtractText\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"isMaintainSelection\", void 0);\n __decorate$2([\n Property(false)\n ], PdfViewer.prototype, \"hideEmptyDigitalSignatureFields\", void 0);\n __decorate$2([\n Property(true)\n ], PdfViewer.prototype, \"showDigitalSignatureAppearance\", void 0);\n __decorate$2([\n Property('M/d/yyyy h:mm:ss a')\n ], PdfViewer.prototype, \"dateTimeFormat\", void 0);\n __decorate$2([\n Property({ showTooltip: true, toolbarItems: ['OpenOption', 'UndoRedoTool', 'PageNavigationTool', 'MagnificationTool', 'PanTool', 'SelectionTool', 'CommentTool', 'SubmitForm', 'AnnotationEditTool', 'FormDesignerEditTool', 'FreeTextAnnotationOption', 'InkAnnotationOption', 'ShapeAnnotationOption', 'StampAnnotation', 'SignatureOption', 'SearchOption', 'PrintOption', 'DownloadOption'], annotationToolbarItems: ['HighlightTool', 'UnderlineTool', 'StrikethroughTool', 'ColorEditTool', 'OpacityEditTool', 'AnnotationDeleteTool', 'StampAnnotationTool', 'HandWrittenSignatureTool', 'InkAnnotationTool', 'ShapeTool', 'CalibrateTool', 'StrokeColorEditTool', 'ThicknessEditTool', 'FreeTextAnnotationTool', 'FontFamilyAnnotationTool', 'FontSizeAnnotationTool', 'FontStylesAnnotationTool', 'FontAlignAnnotationTool', 'FontColorAnnotationTool', 'CommentPanelTool'], formDesignerToolbarItems: ['TextboxTool', 'PasswordTool', 'CheckBoxTool', 'RadioButtonTool', 'DropdownTool', 'ListboxTool', 'DrawSignatureTool', 'DeleteTool'] })\n ], PdfViewer.prototype, \"toolbarSettings\", void 0);\n __decorate$2([\n Property({ ajaxHeaders: [], withCredentials: false })\n ], PdfViewer.prototype, \"ajaxRequestSettings\", void 0);\n __decorate$2([\n Property({ customStampName: '', customStampImageSource: '' })\n ], PdfViewer.prototype, \"customStamp\", void 0);\n __decorate$2([\n Property({ load: 'Load', renderPages: 'RenderPdfPages', unload: 'Unload', download: 'Download', renderThumbnail: 'RenderThumbnailImages', print: 'PrintImages', renderComments: 'RenderAnnotationComments', importAnnotations: 'ImportAnnotations', exportAnnotations: 'ExportAnnotations', importFormFields: 'ImportFormFields', exportFormFields: 'ExportFormFields', renderTexts: 'RenderPdfTexts' })\n ], PdfViewer.prototype, \"serverActionSettings\", void 0);\n __decorate$2([\n Property({ name: '', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: true, tooltip: '', thickness: 1, signatureIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' }, signatureDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"signatureFieldSettings\", void 0);\n __decorate$2([\n Property({ name: '', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: true, tooltip: '', thickness: 1, initialIndicatorSettings: { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' }, initialDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"initialFieldSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, color: '#FFDF56', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"highlightSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, color: '#ff0000', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"strikethroughSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, color: '#00ff00', author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges }, isLock: false, enableMultiPageAnnotation: false, enableTextMarkupResizer: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"underlineSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'None', lineHeadEndStyle: 'None', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"lineSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Closed', lineHeadEndStyle: 'Closed', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"arrowSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"rectangleSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', borderColor: '#ff0000', fontColor: '#000', fontSize: 16, labelHeight: 24.6, labelMaxWidth: 151, labelContent: 'Label' })\n ], PdfViewer.prototype, \"shapeLabelSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"circleSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"polygonSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, author: 'Guest', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, dynamicStamps: [DynamicStampItem.Revised, DynamicStampItem.Reviewed, DynamicStampItem.Received, DynamicStampItem.Confidential, DynamicStampItem.Approved, DynamicStampItem.NotApproved], signStamps: [SignStampItem.Witness, SignStampItem.InitialHere, SignStampItem.SignHere, SignStampItem.Accepted, SignStampItem.Rejected], standardBusinessStamps: [StandardBusinessStampItem.Approved, StandardBusinessStampItem.NotApproved, StandardBusinessStampItem.Draft, StandardBusinessStampItem.Final, StandardBusinessStampItem.Completed, StandardBusinessStampItem.Confidential, StandardBusinessStampItem.ForPublicRelease, StandardBusinessStampItem.NotForPublicRelease, StandardBusinessStampItem.ForComment, StandardBusinessStampItem.Void, StandardBusinessStampItem.PreliminaryResults, StandardBusinessStampItem.InformationOnly], allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"stampSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, author: 'Guest', width: 0, height: 0, left: 0, top: 0, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, enableCustomStamp: true, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"customStampSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Closed', lineHeadEndStyle: 'Closed', annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, leaderLength: 40, resizeCursorType: CursorType.move, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"distanceSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, borderDashArray: 0, lineHeadStartStyle: 'Open', lineHeadEndStyle: 'Open', minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"perimeterSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"areaSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"radiusSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', strokeColor: '#ff0000', author: 'Guest', thickness: 1, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"volumeSettings\", void 0);\n __decorate$2([\n Property({ author: 'Guest', opacity: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"stickyNotesSettings\", void 0);\n __decorate$2([\n Property({ opacity: 1, fillColor: '#ffffff00', borderColor: '#ffffff00', author: 'Guest', borderWidth: 1, width: 151, fontSize: 16, height: 24.6, fontColor: '#000', fontFamily: 'Helvetica', defaultText: 'Type Here', textAlignment: 'Left', fontStyle: FontStyle.None, allowTextOnly: false, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, allowedInteractions: ['None'], isPrint: true, isReadonly: false, enableAutoFit: false })\n ], PdfViewer.prototype, \"freeTextSettings\", void 0);\n __decorate$2([\n Property({ conversionUnit: 'in', displayUnit: 'in', scaleRatio: 1, depth: 96 })\n ], PdfViewer.prototype, \"measurementSettings\", void 0);\n __decorate$2([\n Property({ selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null })\n ], PdfViewer.prototype, \"annotationSelectorSettings\", void 0);\n __decorate$2([\n Property({ searchHighlightColor: '#fdd835', searchColor: '#8b4c12' })\n ], PdfViewer.prototype, \"textSearchColorSettings\", void 0);\n __decorate$2([\n Property({ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false })\n ], PdfViewer.prototype, \"signatureDialogSettings\", void 0);\n __decorate$2([\n Property({ displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false })\n ], PdfViewer.prototype, \"initialDialogSettings\", void 0);\n __decorate$2([\n Property({ signatureItem: ['Signature', 'Initial'], saveSignatureLimit: 1, saveInitialLimit: 1, opacity: 1, strokeColor: '#000000', width: 150, height: 100, thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, allowedInteractions: ['None'], signatureDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false }, initialDialogSettings: { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false } })\n ], PdfViewer.prototype, \"handWrittenSignatureSettings\", void 0);\n __decorate$2([\n Property({ author: 'Guest', opacity: 1, strokeColor: '#ff0000', thickness: 1, annotationSelectorSettings: { selectionBorderColor: '', resizerBorderColor: 'black', resizerFillColor: '#FF4081', resizerSize: 8, selectionBorderThickness: 1, resizerShape: 'Square', selectorLineDashArray: [], resizerLocation: AnnotationResizerLocation.Corners | AnnotationResizerLocation.Edges, resizerCursorType: null }, isLock: false, allowedInteractions: ['None'], isPrint: true })\n ], PdfViewer.prototype, \"inkAnnotationSettings\", void 0);\n __decorate$2([\n Property({ author: 'Guest', minHeight: 0, minWidth: 0, maxWidth: 0, maxHeight: 0, isLock: false, skipPrint: false, skipDownload: false, allowedInteractions: ['None'] })\n ], PdfViewer.prototype, \"annotationSettings\", void 0);\n __decorate$2([\n Property({ enableTileRendering: true, x: 0, y: 0 })\n ], PdfViewer.prototype, \"tileRenderingSettings\", void 0);\n __decorate$2([\n Property({ delayPageRequestTimeOnScroll: 100 })\n ], PdfViewer.prototype, \"scrollSettings\", void 0);\n __decorate$2([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', borderColor: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', maxLength: 0, isRequired: false, isPrint: true, tooltip: '', thickness: 1, isMultiline: false })\n ], PdfViewer.prototype, \"textFieldSettings\", void 0);\n __decorate$2([\n Property({ name: '', value: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', borderColor: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', maxLength: 0, isRequired: false, isPrint: true, tooltip: '', thickness: 1 })\n ], PdfViewer.prototype, \"passwordFieldSettings\", void 0);\n __decorate$2([\n Property({ name: '', isChecked: false, backgroundColor: 'white', isReadOnly: false, visibility: 'visible', isPrint: true, tooltip: '', isRequired: false, thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"checkBoxFieldSettings\", void 0);\n __decorate$2([\n Property({ name: '', isSelected: false, backgroundColor: 'white', isReadOnly: false, visibility: 'visible', isPrint: true, tooltip: '', isRequired: false, thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"radioButtonFieldSettings\", void 0);\n __decorate$2([\n Property({ name: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: true, tooltip: '', options: [], thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"DropdownFieldSettings\", void 0);\n __decorate$2([\n Property({ name: '', fontFamily: 'Helvetica', fontSize: 10, fontStyle: 'None', color: 'black', backgroundColor: 'white', alignment: 'Left', isReadOnly: false, visibility: 'visible', isRequired: false, isPrint: false, tooltip: '', options: [], thickness: 1, borderColor: 'black' })\n ], PdfViewer.prototype, \"listBoxFieldSettings\", void 0);\n __decorate$2([\n Property({ contextMenuAction: 'RightClick', contextMenuItems: [ContextMenuItem.Comment, ContextMenuItem.Copy, ContextMenuItem.Cut, ContextMenuItem.Delete, ContextMenuItem.Highlight, ContextMenuItem.Paste, ContextMenuItem.Properties, ContextMenuItem.ScaleRatio, ContextMenuItem.Strikethrough, ContextMenuItem.Underline] })\n ], PdfViewer.prototype, \"contextMenuSettings\", void 0);\n __decorate$2([\n Complex({}, Selector)\n ], PdfViewer.prototype, \"selectedItems\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"documentLoad\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"documentUnload\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"documentLoadFailed\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestFailed\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestSuccess\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"validateFormFields\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"pageClick\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"pageChange\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"hyperlinkClick\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"hyperlinkMouseOver\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"zoomChange\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationAdd\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationRemove\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationPropertiesChange\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationResize\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"addSignature\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"removeSignature\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"moveSignature\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"signaturePropertiesChange\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"resizeSignature\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"signatureSelect\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationSelect\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationUnSelect\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationDoubleClick\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationMove\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationMoving\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationMouseover\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"annotationMouseLeave\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"pageMouseover\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"importStart\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"exportStart\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"importSuccess\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"exportSuccess\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"importFailed\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"exportFailed\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"extractTextCompleted\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"thumbnailClick\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"bookmarkClick\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"textSelectionStart\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"textSelectionEnd\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"downloadStart\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"buttonFieldClick\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldClick\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"downloadEnd\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"printStart\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"printEnd\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"textSearchStart\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"textSearchComplete\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"textSearchHighlight\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"ajaxRequestInitiate\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"commentAdd\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"commentEdit\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"commentDelete\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"commentSelect\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"commentStatusChanged\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"beforeAddFreeText\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldFocusOut\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldAdd\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldRemove\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldPropertiesChange\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldMouseLeave\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldMouseover\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldMove\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldResize\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldSelect\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldUnselect\", void 0);\n __decorate$2([\n Event()\n ], PdfViewer.prototype, \"formFieldDoubleClick\", void 0);\n __decorate$2([\n Collection([], PdfAnnotationBase)\n ], PdfViewer.prototype, \"annotations\", void 0);\n __decorate$2([\n Collection([], PdfFormFieldBase)\n ], PdfViewer.prototype, \"formFields\", void 0);\n __decorate$2([\n Property()\n ], PdfViewer.prototype, \"drawingObject\", void 0);\n PdfViewer = __decorate$2([\n NotifyPropertyChanges\n ], PdfViewer);\n return PdfViewer;\n}(Component));\n\n/**\n * BookmarkView module\n */\nvar BookmarkView = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function BookmarkView(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.childNavigateCount = 0;\n // eslint-disable-next-line\n this.bookmarkClick = function (args) {\n // eslint-disable-next-line\n if (!args.event.target.classList.contains('e-icons')) {\n var bookid = args.data.Id;\n _this.childNavigateCount = 0;\n _this.pdfViewerBase.navigationPane.goBackToToolbar();\n // eslint-disable-next-line\n var selectedItem = _this.bookmarkList.getSelectedItems();\n _this.navigateToBookmark(bookid, args.text, selectedItem.data.FileName);\n }\n else {\n _this.childNavigateCount++;\n }\n return false;\n };\n this.nodeClick = function (args) {\n _this.setHeight(args.node);\n var bookid = Number(args.nodeData.id);\n // eslint-disable-next-line\n var data = _this.treeObj.getTreeData(args.node);\n _this.navigateToBookmark(bookid, args.node.textContent, data[0].FileName);\n if (_this.pdfViewer.annotationModule && _this.pdfViewer.annotationModule.inkAnnotationModule) {\n // eslint-disable-next-line\n var currentPageNumber = parseInt(_this.pdfViewer.annotationModule.inkAnnotationModule.currentPageNumber);\n _this.pdfViewer.annotationModule.inkAnnotationModule.drawInkAnnotation(currentPageNumber);\n }\n return false;\n };\n this.bookmarkPanelBeforeOpen = function (args) {\n if (_this.pdfViewer.enableBookmarkStyles) {\n for (var k = 0; k < _this.bookmarkStyles.length; k++) {\n if ((args.text.trim()) === (_this.bookmarkStyles[k].Text.trim())) {\n // eslint-disable-next-line\n var element = args.node.lastElementChild;\n if (element) {\n // eslint-disable-next-line\n var fontStyle = _this.bookmarkStyles[k].FontStyle.split(',');\n for (var n = 0; n < fontStyle.length; n++) {\n switch (fontStyle[n].trim()) {\n case 'Italic':\n element.style.fontStyle = 'italic';\n break;\n case 'Bold':\n element.style.fontWeight = 'Bold';\n }\n }\n // eslint-disable-next-line\n var currentElement = element.getElementsByClassName('e-pv-bookmark-title')[0];\n if (currentElement) {\n currentElement.style.color = _this.bookmarkStyles[k].Color;\n }\n else {\n element.children[0].style.color = _this.bookmarkStyles[k].Color;\n }\n }\n break;\n }\n }\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n BookmarkView.prototype.createRequestForBookmarks = function () {\n var proxy = this;\n // eslint-disable-next-line max-len\n var jsonObject = { hashId: this.pdfViewerBase.hashId, action: 'Bookmarks', elementId: this.pdfViewer.element.id, uniqueId: this.pdfViewerBase.documentId };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n if (this.pdfViewer.enableBookmarkStyles) {\n // eslint-disable-next-line\n jsonObject.bookmarkStyles = this.pdfViewer.enableBookmarkStyles;\n }\n this.bookmarkRequestHandler = new AjaxHandler(this.pdfViewer);\n this.bookmarkRequestHandler.url = proxy.pdfViewer.serviceUrl + '/Bookmarks';\n this.bookmarkRequestHandler.responseType = 'json';\n this.bookmarkRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onSuccess = function (result) {\n if (proxy.pdfViewerBase.navigationPane) {\n proxy.pdfViewerBase.navigationPane.disableBookmarkButton();\n }\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, 'Bookmarks');\n data = null;\n }\n }\n if (data && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess('Bookmarks', data);\n proxy.bookmarks = { bookMark: data.Bookmarks };\n proxy.bookmarkStyles = data.Bookmarkstyles;\n proxy.bookmarksDestination = { bookMarkDestination: data.BookmarksDestination };\n if (isBlazor()) {\n // eslint-disable-next-line\n var bookmarkCollection = { bookmarks: proxy.bookmarks, bookmarksDestination: proxy.bookmarksDestination };\n if (proxy.pdfViewer && proxy.pdfViewer._dotnetInstance) {\n proxy.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateBookmarkCollection', bookmarkCollection);\n }\n }\n }\n }\n if (proxy.pdfViewerBase.navigationPane) {\n if (proxy.bookmarks == null) {\n proxy.pdfViewerBase.navigationPane.disableBookmarkButton();\n if (isBlazor() && proxy.pdfViewer._dotnetInstance) {\n proxy.pdfViewer._dotnetInstance.invokeMethodAsync('UpdateBookmarkCollection', null);\n }\n }\n else {\n proxy.pdfViewerBase.navigationPane.enableBookmarkButton();\n proxy.isBookmarkViewDiv = false;\n if (proxy.pdfViewer.isBookmarkPanelOpen) {\n proxy.pdfViewerBase.navigationPane.openBookmarkcontentInitially();\n }\n }\n }\n };\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, 'Bookmarks');\n };\n // eslint-disable-next-line\n this.bookmarkRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, 'Bookmarks');\n };\n };\n /**\n * @private\n */\n BookmarkView.prototype.renderBookmarkcontent = function () {\n var _this = this;\n if (!this.isBookmarkViewDiv) {\n var isblazor = isBlazor();\n // eslint-disable-next-line max-len\n this.bookmarkView = isblazor ? this.pdfViewer.element.querySelector('.e-pv-bookmark-view') : createElement('div', { id: this.pdfViewer.element.id + '_bookmark_view', className: 'e-pv-bookmark-view' });\n this.pdfViewerBase.navigationPane.sideBarContent.appendChild(this.bookmarkView);\n // eslint-disable-next-line max-len\n var bookmarkIconView = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_iconview', className: 'e-pv-bookmark-icon-view' });\n // eslint-disable-next-line max-len\n if (!this.pdfViewer.enableRtl) {\n // eslint-disable-next-line max-len\n var bookmarkIcon = createElement('span', { id: this.pdfViewer.element.id + '_bookmark_icon', className: 'e-pv-bookmark-icon e-pv-icon' });\n bookmarkIconView.appendChild(bookmarkIcon);\n }\n else {\n // eslint-disable-next-line max-len\n var bookmarkIcon = createElement('span', { id: this.pdfViewer.element.id + '_bookmark_icon', className: 'e-pv-bookmark-icon e-pv-icon e-right' });\n bookmarkIconView.appendChild(bookmarkIcon);\n }\n // eslint-disable-next-line max-len\n var bookmarkTitle = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_Title', className: 'e-pv-bookmark-title' });\n if (this.pdfViewer.enableRtl) {\n bookmarkTitle.style.paddingRight = 26 + 'px';\n }\n bookmarkTitle.innerText = '${Title}';\n bookmarkIconView.appendChild(bookmarkTitle);\n if (!isblazor) {\n // eslint-disable-next-line max-len\n this.treeObj = new TreeView({\n fields: {\n dataSource: this.bookmarks.bookMark,\n id: 'Id',\n text: 'Title',\n child: 'Child',\n hasChildren: 'HasChild'\n },\n nodeTemplate: bookmarkIconView.outerHTML,\n nodeSelected: this.nodeClick.bind(this),\n drawNode: this.bookmarkPanelBeforeOpen.bind(this)\n });\n this.treeObj.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.treeObj.enableRtl = true;\n }\n this.treeObj.appendTo(this.bookmarkView);\n }\n // eslint-disable-next-line\n var event_1 = ['mouseover', 'keydown'];\n for (var m = 0; m < event_1.length; m++) {\n this.bookmarkView.addEventListener(event_1[m], function (event) {\n _this.setHeight(event.target);\n });\n }\n this.isBookmarkViewDiv = true;\n }\n this.bookmarkView.style.display = 'block';\n };\n /**\n * @private\n */\n BookmarkView.prototype.renderBookmarkContentMobile = function () {\n if (this.bookmarkView != null) {\n this.bookmarkView.remove();\n }\n this.bookmarkView = createElement('div', { id: this.pdfViewer.element.id + '_bookmark_view', className: 'e-pv-bookmark-view' });\n this.pdfViewerBase.getElement('_bookmarks_container').appendChild(this.bookmarkView);\n this.bookmarkList = new ListView({\n dataSource: this.bookmarks.bookMark,\n fields: {\n id: 'Id',\n text: 'Title',\n child: 'Child'\n },\n showHeader: false,\n select: this.bookmarkClick.bind(this)\n });\n this.bookmarkList.isStringTemplate = true;\n if (this.pdfViewer.enableRtl) {\n this.bookmarkList.enableRtl = true;\n }\n this.bookmarkList.appendTo(this.bookmarkView);\n };\n // eslint-disable-next-line\n BookmarkView.prototype.setHeight = function (element) {\n if (this.treeObj) {\n if (this.treeObj.fullRowSelect && element.classList) {\n if (element.classList.contains('e-treeview')) {\n element = element.querySelector('.e-node-focus').querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-list-parent')) {\n element = element.querySelector('.e-fullrow');\n }\n else if (element.classList.value !== ('e-fullrow')) {\n if (element.closest && element.closest('.e-list-item')) {\n element = element.closest('.e-list-item').querySelector('.e-fullrow');\n }\n else {\n if (element.classList.contains('e-list-item')) {\n element = element.querySelector('.e-fullrow');\n }\n else if (element.classList.contains('e-icons') && element.classList.contains('interaction')\n && element.parentElement.parentElement.classList.contains('e-list-item')) {\n element = element.parentElement.parentElement.querySelector('.e-fullrow');\n }\n }\n }\n if (element.nextElementSibling) {\n element.style.height = element.nextElementSibling.offsetHeight + 'px';\n }\n }\n }\n };\n /**\n * @private\n */\n BookmarkView.prototype.setBookmarkContentHeight = function () {\n if (this.treeObj) {\n // eslint-disable-next-line\n var element = this.treeObj.element;\n if (this.treeObj.fullRowSelect) {\n if (element.classList.contains('e-treeview')) {\n element = element.querySelector('.e-node-focus').querySelector('.e-fullrow');\n }\n if (element.nextElementSibling) {\n element.style.height = element.nextElementSibling.offsetHeight + 'px';\n }\n }\n }\n };\n BookmarkView.prototype.navigateToBookmark = function (bookid, text, fileName) {\n var pageIndex = this.bookmarksDestination.bookMarkDestination[bookid].PageIndex;\n var Y = this.bookmarksDestination.bookMarkDestination[bookid].Y;\n if (pageIndex !== -1) {\n this.goToBookmark(pageIndex, Y);\n }\n this.pdfViewer.fireBookmarkClick(pageIndex !== -1 ? pageIndex + 1 : pageIndex, Y, text, fileName);\n };\n /**\n * Get Bookmarks of the PDF document being loaded in the ejPdfViewer control\n *\n * @returns any\n */\n // eslint-disable-next-line\n BookmarkView.prototype.getBookmarks = function () {\n if (this.bookmarks && this.bookmarksDestination) {\n // eslint-disable-next-line max-len\n return { bookmarks: this.bookmarks, bookmarksDestination: this.bookmarksDestination };\n }\n };\n /**\n * Navigate To current Bookmark location of the PDF document being loaded in the ejPdfViewer control.\n *\n * @param {number} pageIndex - Specifies the pageIndex for Navigate\n * @param {number} y - Specifies the Y coordinates value of the Page\n * @returns void\n */\n BookmarkView.prototype.goToBookmark = function (pageIndex, y) {\n var proxy = this;\n var destPage = (this.pdfViewerBase.pageSize[pageIndex].height);\n var scrollValue;\n if (y === 0) {\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor();\n }\n else {\n // eslint-disable-next-line max-len\n scrollValue = this.pdfViewerBase.pageSize[pageIndex].top * this.pdfViewerBase.getZoomFactor() + ((destPage - y) * this.pdfViewerBase.getZoomFactor());\n }\n var scroll = scrollValue.toString();\n // eslint-disable-next-line radix\n proxy.pdfViewerBase.viewerContainer.scrollTop = parseInt(scroll);\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n this.pdfViewerBase.mobileScrollerContainer.style.display = '';\n this.pdfViewerBase.updateMobileScrollerPosition();\n }\n proxy.pdfViewerBase.focusViewerContainer();\n return false;\n };\n /**\n * @private\n */\n BookmarkView.prototype.clear = function () {\n if (this.pdfViewerBase.navigationPane) {\n this.pdfViewerBase.navigationPane.disableBookmarkButton();\n this.pdfViewerBase.navigationPane.updateViewerContainerOnClose();\n }\n if (this.bookmarks) {\n this.bookmarks.bookMark = [];\n this.bookmarks = null;\n }\n if (this.bookmarksDestination) {\n this.bookmarksDestination.bookMarkDestination = [];\n }\n if (this.bookmarkView != null && !isBlazor()) {\n if (this.bookmarkView.parentElement !== null) {\n this.bookmarkView.parentElement.removeChild(this.bookmarkView);\n }\n while (this.bookmarkView.hasChildNodes()) {\n this.bookmarkView.removeChild(this.bookmarkView.lastChild);\n }\n }\n if (this.bookmarkRequestHandler) {\n this.bookmarkRequestHandler.clear();\n }\n };\n /**\n * @private\n */\n BookmarkView.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n BookmarkView.prototype.getModuleName = function () {\n return 'BookmarkView';\n };\n return BookmarkView;\n}());\n\n/**\n * export types\n */\n\n/* eslint-disable */\n/**\n * The `TextSelection` module is used to handle the text selection of PDF viewer.\n */\nvar TextSelection = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function TextSelection(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.isTextSelection = false;\n /**\n * @private\n */\n this.selectionStartPage = null;\n this.isBackwardPropagatedSelection = false;\n this.contextMenuHeight = 144;\n this.backwardStart = 0;\n /**\n * @private\n */\n this.selectionRangeArray = [];\n this.selectionAnchorTouch = null;\n this.selectionFocusTouch = null;\n // eslint-disable-next-line\n this.scrollMoveTimer = 0;\n this.isMouseLeaveSelection = false;\n this.isTouchSelection = false;\n this.previousScrollDifference = 0;\n this.topStoreLeft = null;\n this.topStoreRight = null;\n this.isTextSearched = false;\n this.isSelectionStartTriggered = false;\n this.allTextContent = \"\";\n this.onLeftTouchSelectElementTouchStart = function (event) {\n _this.initiateSelectionByTouch();\n };\n this.onRightTouchSelectElementTouchStart = function (event) {\n _this.initiateSelectionByTouch();\n };\n this.onLeftTouchSelectElementTouchEnd = function (event) {\n _this.terminateSelectionByTouch(event);\n };\n this.onRightTouchSelectElementTouchEnd = function (event) {\n _this.terminateSelectionByTouch(event);\n };\n this.onLeftTouchSelectElementTouchMove = function (event) {\n var range;\n var nodeElement;\n event.preventDefault();\n event.target.style.zIndex = '0';\n var rightElement = _this.dropDivElementRight;\n var isTouchedWithinViewerContainer = _this.isTouchedWithinContainer(event);\n if (rightElement && isTouchedWithinViewerContainer) {\n var dropBounds = rightElement.getBoundingClientRect();\n var xTouch = event.changedTouches[0].clientX;\n var yTouch = event.changedTouches[0].clientY;\n event.target.style.zIndex = '1000';\n nodeElement = _this.getNodeElement(range, xTouch, yTouch, event, nodeElement);\n if (nodeElement) {\n // eslint-disable-next-line max-len\n var currentDifference = Math.sqrt((yTouch - dropBounds.top) * (yTouch - dropBounds.top) + (xTouch - dropBounds.left) * (xTouch - dropBounds.left));\n var isCloserMovement = _this.isCloserTouchScroll(currentDifference);\n var isTextSelected = false;\n if (yTouch <= dropBounds.top) {\n _this.dropElementLeft.style.transform = 'rotate(0deg)';\n _this.dropElementRight.style.transform = 'rotate(-90deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, xTouch, yTouch, false, 'left', isCloserMovement);\n }\n else {\n _this.dropElementLeft.style.transform = 'rotate(-90deg)';\n _this.dropElementRight.style.transform = 'rotate(0deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, xTouch, yTouch, true, 'left', isCloserMovement);\n }\n if (isTextSelected) {\n var elementClientRect = _this.dropDivElementLeft.getBoundingClientRect();\n var pageTopValue = _this.pdfViewerBase.pageSize[_this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = _this.getClientValueTop(yTouch, _this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line max-len\n var currentPageLeft = _this.pdfViewerBase.getElement('_pageDiv_' + (_this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = xTouch - currentPageLeft;\n // eslint-disable-next-line max-len\n _this.dropDivElementLeft.style.top = pageTopValue * _this.pdfViewerBase.getZoomFactor() + topClientValue + 'px';\n _this.topStoreLeft = { pageTop: pageTopValue, topClientValue: _this.getMagnifiedValue(topClientValue), pageNumber: _this.pdfViewerBase.currentPageNumber - 1, left: _this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: false };\n // eslint-disable-next-line max-len\n _this.dropDivElementLeft.style.left = xTouch - _this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (elementClientRect.width / 2) + 'px';\n _this.previousScrollDifference = currentDifference;\n }\n }\n }\n };\n // eslint-disable-next-line\n this.onRightTouchSelectElementTouchMove = function (event) {\n var range;\n var nodeElement;\n event.preventDefault();\n event.target.style.zIndex = '0';\n var leftElement = _this.dropDivElementLeft;\n var isTouchedWithinViewerContainer = _this.isTouchedWithinContainer(event);\n if (leftElement && isTouchedWithinViewerContainer) {\n var dropPosition = leftElement.getBoundingClientRect();\n var touchX = event.changedTouches[0].clientX;\n var touchY = event.changedTouches[0].clientY;\n event.target.style.zIndex = '1000';\n nodeElement = _this.getNodeElement(range, touchX, touchY, event, nodeElement);\n if (nodeElement) {\n // eslint-disable-next-line max-len\n var currentDifference = Math.sqrt((touchY - dropPosition.top) * (touchY - dropPosition.top) + (touchX - dropPosition.left) * (touchX - dropPosition.left));\n var isCloserMovement = _this.isCloserTouchScroll(currentDifference);\n var isTextSelected = false;\n if (touchY >= dropPosition.top) {\n _this.dropElementRight.style.transform = 'rotate(-90deg)';\n _this.dropElementLeft.style.transform = 'rotate(0deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, touchX, touchY, true, 'right', isCloserMovement);\n }\n else {\n _this.dropElementRight.style.transform = 'rotate(0deg)';\n _this.dropElementLeft.style.transform = 'rotate(-90deg)';\n isTextSelected = _this.selectTextByTouch(nodeElement.parentElement, touchX, touchY, false, 'right', isCloserMovement);\n }\n if (isTextSelected) {\n var pageTopValue = _this.pdfViewerBase.pageSize[_this.pdfViewerBase.currentPageNumber - 1].top;\n var topClientValue = _this.getClientValueTop(touchY, _this.pdfViewerBase.currentPageNumber - 1);\n var elementClientRect = _this.dropDivElementRight.getBoundingClientRect();\n _this.dropDivElementRight.style.top = pageTopValue * _this.pdfViewerBase.getZoomFactor() + topClientValue + 'px';\n // eslint-disable-next-line max-len\n var currentPageLeft = _this.pdfViewerBase.getElement('_pageDiv_' + (_this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = touchX - currentPageLeft;\n // eslint-disable-next-line max-len\n _this.topStoreRight = { pageTop: pageTopValue, topClientValue: _this.getMagnifiedValue(topClientValue), pageNumber: _this.pdfViewerBase.currentPageNumber - 1, left: _this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: false };\n // eslint-disable-next-line max-len\n _this.dropDivElementRight.style.left = touchX - _this.pdfViewerBase.viewerContainer.getBoundingClientRect().left - (elementClientRect.width / 2) + 'px';\n _this.previousScrollDifference = currentDifference;\n }\n }\n }\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @param target\n * @param x\n * @param y\n * @param isExtended\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseMove = function (target, x, y, isExtended) {\n var targetElement = target;\n this.isTextSearched = true;\n if (targetElement.nodeType === targetElement.TEXT_NODE) {\n if (!this.isSelectionStartTriggered && !this.pdfViewerBase.getTextMarkupAnnotationMode()) {\n this.pdfViewer.fireTextSelectionStart(this.pdfViewerBase.currentPageNumber);\n this.isSelectionStartTriggered = true;\n }\n this.isBackwardPropagatedSelection = false;\n var range = targetElement.ownerDocument.createRange();\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n this.isBackwardPropagatedSelection = true;\n }\n }\n range.selectNodeContents(targetElement);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(targetElement, currentPosition);\n range.setEnd(targetElement, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n var rightBounds = rangeBounds.right;\n if (isExtended) {\n // eslint-disable-next-line\n rightBounds = parseInt(rangeBounds.right.toString());\n }\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rightBounds >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n if (selection.anchorNode !== null && selection.anchorNode.parentNode.classList.contains('e-pv-text')) {\n if (selection.anchorOffset > currentPosition) {\n if (this.backwardStart != 0) {\n range.setStart(selection.anchorNode, this.backwardStart);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset + 1);\n }\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n }\n }\n selection.removeAllRanges();\n selection.addRange(range);\n if (!this.isTextSelection) {\n this.selectionStartPage = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.isTextSelection = true;\n // eslint-disable-next-line\n var isIE = !!document.documentMode;\n if (!isIE) {\n if (this.isBackwardPropagatedSelection || range.endOffset > currentPosition) {\n if (this.backwardStart != range.startOffset && range.startOffset >= currentPosition) {\n this.backwardStart = range.endOffset;\n }\n if (currentPosition === 0 && range.endOffset != 1) {\n selection.extend(targetElement, currentPosition);\n }\n else {\n selection.extend(targetElement, currentPosition + 1);\n }\n }\n else if (isExtended) {\n selection.extend(targetElement, currentPosition);\n }\n else {\n selection.extend(targetElement, currentPosition + 1);\n }\n }\n range.detach();\n }\n currentPosition += 1;\n }\n // eslint-disable-next-line\n var annotationModule = this.pdfViewer.annotationModule;\n // eslint-disable-next-line max-len\n if (annotationModule && annotationModule.textMarkupAnnotationModule && annotationModule.textMarkupAnnotationModule.isEnableTextMarkupResizer(annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode)) {\n // eslint-disable-next-line\n var leftDivElement = document.getElementById(this.pdfViewer.element.id + '_droplet_left');\n if (this.pdfViewerBase.isSelection && selection && selection.rangeCount > 0) {\n // eslint-disable-next-line\n var currentrange = selection.getRangeAt(0);\n // eslint-disable-next-line\n var rect = currentrange.getBoundingClientRect();\n var left = rect.left;\n var top_1 = rect.top;\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(left, top_1);\n this.pdfViewerBase.isSelection = false;\n }\n else if ((leftDivElement && leftDivElement.style.display === 'none')) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(x, y);\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.updatePosition(x, y);\n }\n }\n else {\n for (var i = 0; i < targetElement.childNodes.length; i++) {\n if (targetElement.childNodes[i].nodeType === targetElement.TEXT_NODE) {\n var range = this.getSelectionRange(i, targetElement);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= parseInt(x.toString()) && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.textSelectionOnMouseMove(targetElement.childNodes[i], x, y, isExtended);\n }\n else {\n range.detach();\n }\n }\n }\n }\n };\n /**\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @param target\n * @param x\n * @param y\n * @param isforward\n * @private\n */\n TextSelection.prototype.textSelectionOnDrag = function (target, x, y, isforward) {\n var targetElement = target;\n this.isTextSearched = true;\n if (targetElement.nodeType === targetElement.TEXT_NODE) {\n this.isBackwardPropagatedSelection = false;\n var range = targetElement.ownerDocument.createRange();\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var position = selection.anchorNode.compareDocumentPosition(selection.focusNode);\n if (!position && selection.anchorOffset > selection.focusOffset || position === Node.DOCUMENT_POSITION_PRECEDING) {\n this.isBackwardPropagatedSelection = true;\n }\n }\n range.selectNodeContents(targetElement);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(targetElement, currentPosition);\n range.setEnd(targetElement, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n if (isforward) {\n // eslint-disable-next-line max-len\n if (selection.anchorNode !== null && selection.anchorNode.parentNode.classList.contains('e-pv-text')) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n }\n selection.removeAllRanges();\n selection.addRange(range);\n selection.extend(targetElement, currentPosition);\n }\n else if (selection.focusNode) {\n range.setEnd(selection.focusNode, selection.focusOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n if (!this.isTextSelection) {\n this.selectionStartPage = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.isTextSelection = true;\n range.detach();\n return true;\n }\n currentPosition += 1;\n }\n if (this.pdfViewerBase.isSelection) {\n // eslint-disable-next-line\n var currentrange = selection.getRangeAt(0);\n // eslint-disable-next-line\n var rect = currentrange.getBoundingClientRect();\n var left = rect.left;\n var top_2 = rect.top;\n this.pdfViewer.annotation.textMarkupAnnotationModule.updateLeftposition(left, top_2);\n this.pdfViewerBase.isSelection = false;\n }\n this.pdfViewer.annotation.textMarkupAnnotationModule.updatePosition(x, y);\n }\n else {\n for (var i = 0; i < targetElement.childNodes.length; i++) {\n if (targetElement.childNodes[i].nodeType === targetElement.TEXT_NODE) {\n var range = this.getSelectionRange(i, targetElement);\n var rangeBounds = range.getBoundingClientRect();\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (rangeBounds.left <= x && rangeBounds.right >= x && parseInt(rangeBounds.top.toString()) <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.textSelectionOnDrag(targetElement.childNodes[i], x, y, isforward);\n }\n else {\n range.detach();\n }\n }\n }\n }\n return null;\n };\n /**\n * Select the target text region in the PDF document of the given bounds.\n *\n * @param {number} pageNumbers - Specifies the page number\n * @param {IRectangle[]} bounds - Specifies the bounds of the texts.\n * @returns void\n */\n TextSelection.prototype.selectTextRegion = function (pageNumbers, bounds) {\n // eslint-disable-next-line\n var element = null;\n var pageNumber = (pageNumbers - 1);\n for (var k = 0; k < bounds.length; k++) {\n // eslint-disable-next-line\n var bound = bounds[k];\n var x = (bound.left ? bound.left : bound.Left) * this.pdfViewerBase.getZoomFactor();\n var y = (bound.top ? bound.top : bound.Top) * this.pdfViewerBase.getZoomFactor();\n var width = (bound.width ? bound.width : bound.Width) * this.pdfViewerBase.getZoomFactor();\n var height = bound.height ? bound.height : bound.Height;\n // eslint-disable-next-line\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (textLayer) {\n // eslint-disable-next-line\n var textDivs = textLayer.childNodes;\n for (var n = 0; n < textDivs.length; n++) {\n if (textDivs[n]) {\n // eslint-disable-next-line\n var rangebounds = textDivs[n].getBoundingClientRect();\n var top_3 = this.getClientValueTop(rangebounds.top, pageNumber);\n // eslint-disable-next-line max-len\n var currentLeft = rangebounds.left - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().left;\n var totalLeft = currentLeft + rangebounds.width;\n // eslint-disable-next-line\n var textDiVLeft = parseInt(textDivs[n].style.left);\n // eslint-disable-next-line\n var currentTop = parseInt(textDivs[n].style.top);\n var isLeftBounds = this.checkLeftBounds(currentLeft, textDiVLeft, totalLeft, x);\n var isTopBounds = this.checkTopBounds(top_3, currentTop, y);\n if (isLeftBounds && isTopBounds) {\n element = textDivs[n];\n break;\n }\n }\n }\n if (element != null) {\n // eslint-disable-next-line\n var boundingRect = this.pdfViewerBase.getElement('_textLayer_' + pageNumber).getBoundingClientRect();\n this.textSelectionOnMouseMove(element, x + boundingRect.left, y + boundingRect.top, false);\n if ((bounds.length - 1) === k) {\n // eslint-disable-next-line max-len\n this.textSelectionOnMouseMove(element, x + boundingRect.left + width, y + boundingRect.top, false);\n }\n }\n }\n }\n };\n /**\n * @param left\n * @param textDiVLeft\n * @param totalLeft\n * @param x\n * @private\n */\n TextSelection.prototype.checkLeftBounds = function (left, textDiVLeft, totalLeft, x) {\n var isExists = false;\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if (left === parseInt(x.toString()) || parseInt(left.toString()) === parseInt(x.toString()) || (left + 1) === parseInt(x.toString()) || (left - 1) === parseInt(x.toString())\n // eslint-disable-next-line\n || textDiVLeft === parseInt(x.toString()) || textDiVLeft === x || (totalLeft >= x && left <= x)) {\n isExists = true;\n }\n return isExists;\n };\n /**\n * @param top\n * @param currentTop\n * @param y\n * @param top\n * @param currentTop\n * @param y\n * @private\n */\n TextSelection.prototype.checkTopBounds = function (top, currentTop, y) {\n var isExists = false;\n // eslint-disable-next-line max-len\n // eslint-disable-next-line\n if ((top === parseInt(y.toString()) || parseInt(top.toString()) === parseInt(y.toString()) || parseInt((top + 1).toString()) === parseInt(y.toString()) || parseInt((top - 1).toString()) === parseInt(y.toString())\n // eslint-disable-next-line\n || currentTop === parseInt(y.toString()) || currentTop === y)) {\n isExists = true;\n }\n return isExists;\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseLeave = function (event) {\n var _this = this;\n event.preventDefault();\n var viewerTop = this.pdfViewerBase.viewerContainer.offsetTop;\n if (this.pdfViewer.magnificationModule) {\n if (this.pdfViewer.magnificationModule.fitType === 'fitToPage') {\n return;\n }\n }\n if (event.clientY > viewerTop) {\n this.scrollMoveTimer = setInterval(function () {\n _this.scrollForwardOnSelection();\n }, 500);\n }\n else {\n this.scrollMoveTimer = setInterval(function () {\n _this.scrollBackwardOnSelection();\n }, 500);\n }\n };\n TextSelection.prototype.scrollForwardOnSelection = function () {\n this.isMouseLeaveSelection = true;\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.viewerContainer.scrollTop + 200;\n this.stichSelectionOnScroll(this.pdfViewerBase.currentPageNumber - 1);\n };\n TextSelection.prototype.scrollBackwardOnSelection = function () {\n this.isMouseLeaveSelection = true;\n this.pdfViewerBase.viewerContainer.scrollTop = this.pdfViewerBase.viewerContainer.scrollTop - 200;\n this.stichSelectionOnScroll(this.pdfViewerBase.currentPageNumber - 1);\n };\n /**\n * @private\n */\n TextSelection.prototype.clear = function () {\n if (this.scrollMoveTimer) {\n this.isMouseLeaveSelection = false;\n clearInterval(this.scrollMoveTimer);\n }\n };\n /**\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @param element\n * @param x\n * @param y\n * @param isStoreSelection\n * @private\n */\n // eslint-disable-next-line\n TextSelection.prototype.selectAWord = function (element, x, y, isStoreSelection) {\n if (element.nodeType === element.TEXT_NODE) {\n var selection = window.getSelection();\n var range = element.ownerDocument.createRange();\n range.selectNodeContents(element);\n var currentPosition = 0;\n var endPosition = range.endOffset;\n while (currentPosition < endPosition) {\n range.setStart(element, currentPosition);\n range.setEnd(element, currentPosition + 1);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n var textContent = element.textContent;\n var indices = [];\n var startPosition = void 0;\n var endPos = void 0;\n for (var i = 0; i < textContent.length; i++) {\n if (textContent[i] === ' ') {\n indices.push(i);\n }\n }\n for (var j = 0; j < indices.length; j++) {\n if (currentPosition === indices[j]) {\n startPosition = indices[j];\n endPos = indices[j];\n }\n if (indices[0] > currentPosition) {\n startPosition = 0;\n endPos = indices[j];\n break;\n }\n if (currentPosition > indices[j] && currentPosition < indices[j + 1]) {\n startPosition = indices[j];\n endPos = indices[j + 1];\n }\n else if (currentPosition > indices[j]) {\n if (!indices[j + 1]) {\n startPosition = indices[j];\n }\n }\n }\n if (!endPos) {\n endPos = textContent.length;\n }\n if (startPosition === 0) {\n range.setStart(element, startPosition);\n }\n else {\n range.setStart(element, startPosition + 1);\n }\n range.setEnd(element, endPos);\n selection.removeAllRanges();\n selection.addRange(range);\n this.isTextSelection = true;\n // eslint-disable-next-line max-len\n var startParent = isNullOrUndefined(range.startContainer.parentElement) ? range.startContainer.parentNode : range.startContainer.parentElement;\n // eslint-disable-next-line radix\n this.selectionStartPage = parseInt(startParent.id.split('_text_')[1]);\n if (isStoreSelection) {\n // eslint-disable-next-line max-len\n this.selectionAnchorTouch = { anchorNode: selection.anchorNode.parentElement.id, anchorOffset: selection.anchorOffset };\n this.selectionFocusTouch = { focusNode: selection.focusNode.parentElement.id, focusOffset: selection.focusOffset };\n }\n if (!Browser.isIE) {\n range.detach();\n }\n break;\n }\n currentPosition += 1;\n }\n }\n else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var range = this.getSelectionRange(i, element);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n range.detach();\n this.selectAWord(element.childNodes[i], x, y, isStoreSelection);\n }\n else {\n range.detach();\n }\n }\n }\n };\n TextSelection.prototype.getSelectionRange = function (index, element) {\n var range = element.childNodes[index].ownerDocument.createRange();\n range.selectNodeContents(element.childNodes[index]);\n return range;\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.selectEntireLine = function (event) {\n var textIds = [];\n var targetElement = event.target;\n var targetRect = targetElement.getBoundingClientRect();\n // eslint-disable-next-line\n var targetcentre = parseInt((targetRect.top + (targetRect.height / 2)).toString());\n // eslint-disable-next-line radix\n var pageNumber = parseInt(event.target.id.split('_text_')[1]);\n var textDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_text_' + pageNumber + '\"]');\n if (targetElement.classList.contains('e-pv-text')) {\n this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n for (var i = 0; i < textDivs.length; i++) {\n var rect = textDivs[i].getBoundingClientRect();\n // eslint-disable-next-line radix\n var topValue = parseInt(rect.top.toString());\n // eslint-disable-next-line radix\n var bottomValue = parseInt(rect.bottom.toString());\n if ((topValue <= targetcentre && bottomValue > targetcentre) && (targetRect.bottom + 10 > bottomValue)) {\n var textId = textDivs[i].id;\n if (textId !== '') {\n textIds.push(textId);\n }\n }\n }\n var selection = window.getSelection();\n selection.removeAllRanges();\n var range = document.createRange();\n var lengths = (textIds.length - 1);\n var d1 = document.getElementById(textIds[0]);\n var d2 = document.getElementById(textIds[lengths]);\n var childNodes = d2.childNodes.length;\n if (childNodes > 0) {\n range.setStart(d1.childNodes[0], 0);\n range.setEnd(d2.childNodes[0], d2.textContent.length);\n }\n else {\n range.setStart(d1.childNodes[0], 0);\n range.setEnd(d2, 1);\n }\n // eslint-disable-next-line radix\n this.selectionStartPage = parseInt(range.startContainer.parentElement.id.split('_text_')[1]);\n selection.addRange(range);\n this.isTextSelection = true;\n if (selection != null && this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n this.calculateContextMenuPosition(event.clientY, event.clientY);\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.enableTextSelectionMode = function () {\n this.pdfViewerBase.isTextSelectionDisabled = false;\n if (!isNullOrUndefined(this.pdfViewerBase.viewerContainer)) {\n this.pdfViewerBase.viewerContainer.classList.remove('e-disable-text-selection');\n this.pdfViewerBase.viewerContainer.classList.add('e-enable-text-selection');\n this.pdfViewerBase.viewerContainer.addEventListener('selectstart', function () {\n return true;\n });\n }\n };\n TextSelection.prototype.clearTextSelection = function () {\n if (this.isTextSelection) {\n this.pdfViewerBase.textLayer.clearDivSelection();\n if (window.getSelection) {\n if (window.getSelection().removeAllRanges) {\n window.getSelection().removeAllRanges();\n }\n }\n if (this.pdfViewer.linkAnnotationModule) {\n var lowerPageIndex = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageIndex = (lowerPageIndex < 0) ? 0 : lowerPageIndex;\n var higherPageIndex = this.pdfViewer.currentPageNumber + 1;\n // eslint-disable-next-line max-len\n higherPageIndex = (higherPageIndex < (this.pdfViewerBase.pageCount - 1)) ? higherPageIndex : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageIndex; i <= higherPageIndex; i++) {\n this.pdfViewer.linkAnnotationModule.modifyZindexForTextSelection(i, false);\n }\n }\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.textMarkupAnnotationModule) {\n this.pdfViewer.annotation.textMarkupAnnotationModule.showHideDropletDiv(true);\n }\n this.selectionRangeArray = [];\n this.isTextSelection = false;\n this.isTouchSelection = false;\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n this.pdfViewerBase.contextMenuModule.close();\n this.removeTouchElements();\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.removeTouchElements = function () {\n if (this.dropDivElementLeft) {\n this.dropDivElementLeft.parentElement.removeChild(this.dropDivElementLeft);\n this.dropDivElementLeft = null;\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n }\n if (this.dropDivElementRight) {\n this.dropDivElementRight.parentElement.removeChild(this.dropDivElementRight);\n this.dropDivElementRight = null;\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.resizeTouchElements = function () {\n var viewerContainerLeft = this.pdfViewerBase.viewerContainer.getBoundingClientRect().left;\n if (this.dropDivElementLeft) {\n var elementClientRect = this.dropDivElementLeft.getBoundingClientRect();\n var dropElementHeight = 0;\n // eslint-disable-next-line max-len\n var leftCurrentPagePosition = this.pdfViewerBase.getElement('_pageDiv_' + this.topStoreLeft.pageNumber).getBoundingClientRect();\n this.dropDivElementLeft.style.left = parseFloat(this.topStoreLeft.left.toString()) * this.pdfViewerBase.getZoomFactor() + leftCurrentPagePosition.left - viewerContainerLeft - (elementClientRect.width / 2) + 'px';\n if (this.topStoreLeft.isHeightNeeded) {\n dropElementHeight = (elementClientRect.height / 2) * this.pdfViewerBase.getZoomFactor();\n }\n // eslint-disable-next-line max-len\n this.dropDivElementLeft.style.top = parseFloat(this.topStoreLeft.pageTop.toString()) * this.pdfViewerBase.getZoomFactor() + parseFloat(this.topStoreLeft.topClientValue.toString()) * this.pdfViewerBase.getZoomFactor() + dropElementHeight + 'px';\n }\n if (this.dropDivElementRight) {\n var elementClientRect = this.dropDivElementRight.getBoundingClientRect();\n var dropElementHeight = 0;\n // eslint-disable-next-line max-len\n var rightCurrentPagePosition = this.pdfViewerBase.getElement('_pageDiv_' + this.topStoreRight.pageNumber).getBoundingClientRect();\n this.dropDivElementRight.style.left = parseFloat(this.topStoreRight.left.toString()) * this.pdfViewerBase.getZoomFactor() + rightCurrentPagePosition.left - viewerContainerLeft - (elementClientRect.width / 2) + 'px';\n if (this.topStoreRight.isHeightNeeded) {\n dropElementHeight = (elementClientRect.height / 2) * this.pdfViewerBase.getZoomFactor();\n }\n // eslint-disable-next-line max-len\n this.dropDivElementRight.style.top = parseFloat(this.topStoreRight.pageTop.toString()) * this.pdfViewerBase.getZoomFactor() + parseFloat(this.topStoreRight.topClientValue.toString()) * this.pdfViewerBase.getZoomFactor() + dropElementHeight + 'px';\n }\n };\n /**\n * @param event\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseup = function (event) {\n this.clear();\n if (window.getSelection().anchorNode !== null) {\n this.isMouseLeaveSelection = false;\n this.isSelectionStartTriggered = false;\n this.maintainSelectionOnZoom(true, false);\n this.fireTextSelectEnd();\n var isTextSearch = this.pdfViewerBase.textLayer.getTextSearchStatus();\n if (isTextSearch) {\n this.pdfViewerBase.textLayer.clearDivSelection();\n // eslint-disable-next-line\n var indexes = this.pdfViewer.textSearchModule.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i < higherPageValue; i++) {\n this.applySelectionRangeOnScroll(i);\n }\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n else {\n this.applySpanForSelection();\n }\n if (this.pdfViewer.linkAnnotationModule) {\n this.pdfViewer.linkAnnotationModule.modifyZindexForTextSelection(this.pdfViewerBase.currentPageNumber - 1, false);\n }\n if (this.isTextSearched && this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n this.calculateContextMenuPosition(event.clientY, event.clientX);\n this.isTextSearched = false;\n }\n }\n else {\n this.pdfViewerBase.textLayer.clearDivSelection();\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n this.pdfViewerBase.contextMenuModule.close();\n this.removeTouchElements();\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.fireTextSelectEnd = function () {\n if (this.selectionRangeArray.length !== 0) {\n var selectEndPageIndex = 0;\n var selectedText = '';\n // eslint-disable-next-line\n var selectedBounds = [];\n for (var k = 0; k < this.selectionRangeArray.length; k++) {\n selectedText += this.selectionRangeArray[k].textContent;\n for (var j = 0; j < this.selectionRangeArray[k].rectangleBounds.length; j++) {\n var currentBound = this.selectionRangeArray[k].rectangleBounds[j];\n // eslint-disable-next-line max-len\n selectedBounds.push({ left: currentBound.left, right: currentBound.right, top: currentBound.top, bottom: currentBound.bottom, width: currentBound.width, height: currentBound.height, pageIndex: this.selectionRangeArray[k].pageNumber + 1 });\n }\n if (this.selectionRangeArray[k].isBackward && k === 0) {\n selectEndPageIndex = this.selectionRangeArray[k].pageNumber + 1;\n }\n else if (!this.selectionRangeArray[k].isBackward && k === this.selectionRangeArray.length - 1) {\n selectEndPageIndex = this.selectionRangeArray[k].pageNumber + 1;\n }\n }\n this.pdfViewer.fireTextSelectionEnd(selectEndPageIndex, selectedText, selectedBounds);\n }\n };\n /**\n * @param isMaintainSelection\n * @param isStich\n * @param isMaintainSelection\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelectionOnZoom = function (isMaintainSelection, isStich) {\n var selection = window.getSelection();\n if (selection.type === 'Range' || (!selection.type && !selection.isCollapsed)) {\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (selection.anchorNode !== null) {\n // eslint-disable-next-line radix\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (this.isTouchSelection && isNaN(focusPageId)) {\n var focusElement = selection.focusNode;\n if (focusElement === this.pdfViewerBase.pageContainer) {\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.previousSibling.previousSibling.id.split('_pageDiv_')[1]);\n }\n else if (lastChildNode.classList.contains('e-pv-page-div')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.id.split('_pageDiv_')[1]);\n }\n }\n }\n if (!isBackward) {\n for (var i = anchorPageId; i <= focusPageId; i++) {\n this.maintainSelectionOnScroll(i, isStich);\n }\n }\n else {\n for (var i = anchorPageId; i >= focusPageId; i--) {\n this.maintainSelectionOnScroll(i, isStich);\n }\n }\n }\n if (!isMaintainSelection) {\n selection.removeAllRanges();\n }\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.isSelectionAvailableOnScroll = function (pageNumber) {\n var isSelectionAvailable = false;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n isSelectionAvailable = true;\n if (this.isTouchSelection && !this.pdfViewerBase.getMagnified()) {\n isSelectionAvailable = false;\n }\n break;\n }\n }\n }\n return isSelectionAvailable;\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.applySelectionRangeOnScroll = function (pageNumber) {\n if (this.isMouseLeaveSelection) {\n this.applySelectionMouseScroll(pageNumber);\n }\n else {\n this.applySelectionRange(pageNumber);\n }\n };\n // eslint-disable-next-line\n TextSelection.prototype.getSelectionRangeFromArray = function (pageNumber) {\n var isSelectionAvailable = false;\n var selectionRange = null;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n selectionRange = ranges[i];\n isSelectionAvailable = true;\n break;\n }\n }\n }\n return { isSelectionAvailable: isSelectionAvailable, selectionRange: selectionRange };\n };\n TextSelection.prototype.applySelectionRange = function (pageNumber) {\n var selectionObject = this.getSelectionRangeFromArray(pageNumber);\n var isSelectionAvailable = selectionObject.isSelectionAvailable;\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n if (textLayer) {\n if (isSelectionAvailable && textLayer.childNodes.length !== 0) {\n var selectionRange = selectionObject.selectionRange;\n var anchorOffsetDiv = void 0;\n var focusOffsetDiv = void 0;\n var anchorOffset = void 0;\n var focusOffset = void 0;\n if (selectionRange.isBackward) {\n // eslint-disable-next-line radix\n var startId = parseInt(selectionRange.endNode.split('_text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n var endId = parseInt(selectionRange.startNode.split('_text_')[1].split('_')[1]);\n if (startId < endId) {\n anchorOffsetDiv = startId;\n anchorOffset = selectionRange.endOffset;\n focusOffset = selectionRange.startOffset;\n focusOffsetDiv = endId;\n }\n else {\n anchorOffsetDiv = endId;\n anchorOffset = selectionRange.endOffset;\n focusOffsetDiv = startId;\n focusOffset = selectionRange.startOffset;\n }\n }\n else {\n // eslint-disable-next-line radix\n anchorOffsetDiv = parseInt(selectionRange.startNode.split('text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n focusOffsetDiv = parseInt(selectionRange.endNode.split('text_')[1].split('_')[1]);\n anchorOffset = selectionRange.startOffset;\n focusOffset = selectionRange.endOffset;\n }\n window.getSelection().removeAllRanges();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.textLayer.applySpanForSelection(pageNumber, pageNumber, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset);\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n }\n }\n };\n TextSelection.prototype.applySelectionMouseScroll = function (pageNumber) {\n var selectionObject = this.getSelectionRangeFromArray(pageNumber);\n var isSelectionAvailable = selectionObject.isSelectionAvailable;\n if (isSelectionAvailable) {\n var selectionRange = selectionObject.selectionRange;\n var selection = window.getSelection();\n var anchorNode = document.getElementById(selectionRange.startNode).childNodes[0];\n var focusNode = document.getElementById(selectionRange.endNode).childNodes[0];\n var range = document.createRange();\n if (selection.anchorNode === null) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else {\n // eslint-disable-next-line\n var anchorPageIndex = isNaN(parseInt(selection.anchorNode.parentElement.id.split('_text_')[1])) ? parseInt(selection.anchorNode.id.split('_pageDiv_')[1]) : parseInt(selection.anchorNode.parentElement.id.split('_text_')[1]);\n if (isNaN(anchorPageIndex)) {\n // eslint-disable-next-line radix\n anchorPageIndex = parseInt(selection.anchorNode.id.split('_text_')[1]);\n }\n // eslint-disable-next-line\n var focusPageIndex = isNaN(parseInt(selection.focusNode.parentElement.id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(selection.focusNode.parentElement.id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var currentAnchorIndex = parseInt(selectionRange.startNode.split('_text_')[1]);\n if ((anchorPageIndex === focusPageIndex) && (anchorPageIndex === currentAnchorIndex)) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else if (!isNaN(anchorPageIndex)) {\n if (!isNaN(anchorPageIndex) && !selectionRange.isBackward) {\n // eslint-disable-next-line max-len\n if (anchorPageIndex < currentAnchorIndex && currentAnchorIndex < focusPageIndex && anchorPageIndex !== focusPageIndex) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else if (anchorPageIndex < currentAnchorIndex) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n else {\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n // eslint-disable-next-line max-len\n if (anchorPageIndex > currentAnchorIndex && currentAnchorIndex > focusPageIndex && anchorPageIndex !== focusPageIndex) {\n if (!isBackward) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n // eslint-disable-next-line max-len\n }\n else if (anchorPageIndex < currentAnchorIndex && currentAnchorIndex < focusPageIndex && anchorPageIndex !== focusPageIndex) {\n if (!isBackward) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n }\n else if (anchorPageIndex < currentAnchorIndex) {\n if (!isBackward) {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n else {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n else {\n this.extendCurrentSelection(anchorNode.parentElement, selectionRange.startOffset, selection, range);\n }\n }\n }\n else if (anchorPageIndex === currentAnchorIndex) {\n if (currentAnchorIndex === focusPageIndex) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n range = document.createRange();\n selection.extend(focusNode, selectionRange.endOffset);\n }\n else {\n if (isBackward) {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n }\n else if (focusPageIndex === currentAnchorIndex) {\n if (isBackward) {\n selection.extend(selection.focusNode, selection.focusOffset);\n }\n else {\n range.setStart(selection.anchorNode, selection.anchorOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n else if (anchorPageIndex > currentAnchorIndex) {\n // eslint-disable-next-line radix\n var currentAnchorOffset = parseInt(selectionRange.startNode.split('_' + currentAnchorIndex + '_')[1]);\n // eslint-disable-next-line radix\n var currentFocusOffset = parseInt(selectionRange.endNode.split('_' + currentAnchorIndex + '_')[1]);\n if (isBackward) {\n if (currentAnchorIndex !== this.selectionRangeArray[0].pageNumber) {\n if (currentAnchorOffset < currentFocusOffset) {\n this.extendCurrentSelection(anchorNode.parentElement, selectionRange.startOffset, selection, range);\n }\n else {\n range.setStart(focusNode.parentElement, selectionRange.endOffset);\n range.setEnd(selection.anchorNode, selection.anchorOffset);\n }\n }\n else {\n this.extendCurrentSelection(focusNode.parentElement, selectionRange.endOffset, selection, range);\n }\n }\n else {\n if (currentAnchorOffset < currentFocusOffset) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n }\n }\n }\n }\n else if (isNaN(anchorPageIndex)) {\n if (!selectionRange.isBackward) {\n range.setStart(anchorNode, selectionRange.startOffset);\n range.setEnd(focusNode, selectionRange.endOffset);\n }\n else {\n range.setStart(focusNode, selectionRange.endOffset);\n range.setEnd(anchorNode, selectionRange.startOffset);\n }\n }\n }\n if (range.toString() !== '') {\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n };\n /**\n * @param pageNumber\n * @param isStich\n * @param pageNumber\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelectionOnScroll = function (pageNumber, isStich) {\n var isSelectionAvailable = this.isSelectionAvailableOnScroll(pageNumber);\n if (this.isTextSelection && !isSelectionAvailable) {\n this.maintainSelection(pageNumber, isStich);\n }\n };\n /**\n * @param pageNumber\n * @param isStich\n * @private\n */\n TextSelection.prototype.maintainSelection = function (pageNumber, isStich) {\n var selection = window.getSelection();\n if (this.isTextSelection && (selection.type === 'Range' || (!selection.type && !selection.isCollapsed))) {\n // eslint-disable-next-line\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (isNaN(focusPageId) && selection.anchorNode !== null) {\n var backward_1 = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (!backward_1) {\n // eslint-disable-next-line radix\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.previousSibling.previousSibling.id.split('_pageDiv_')[1]);\n }\n else {\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastChildNode.id.split('_pageDiv_')[1]);\n }\n }\n else {\n // eslint-disable-next-line radix\n focusPageId = parseInt(this.pdfViewerBase.pageContainer.firstChild.id.split('_pageDiv_')[1]);\n }\n }\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (this.isTouchSelection && pageNumber > focusPageId && pageNumber > anchorPageId) {\n return;\n }\n if (anchorPageId === focusPageId) {\n var selectionObject = null;\n var selectionBounds = this.getSelectionBounds(selection.getRangeAt(0), pageNumber);\n var selectionRectBounds = this.getSelectionRectangleBounds(selection.getRangeAt(0), pageNumber);\n // eslint-disable-next-line max-len\n var anchorOffsetValue = (this.getNodeElementFromNode(selection.anchorNode).childNodes.length === 1) ? selection.anchorOffset : this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n var focusOffsetValue = (this.getNodeElementFromNode(selection.focusNode).childNodes.length === 1) ? selection.focusOffset : this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n selectionObject = {\n isBackward: backward, startNode: this.getNodeElementFromNode(selection.anchorNode).id,\n startOffset: anchorOffsetValue, endNode: this.getNodeElementFromNode(selection.focusNode).id,\n // eslint-disable-next-line max-len\n endOffset: focusOffsetValue, textContent: this.allTextContent, pageNumber: pageNumber, bound: selectionBounds, rectangleBounds: selectionRectBounds\n };\n this.pushSelectionRangeObject(selectionObject, pageNumber);\n }\n else {\n var selectionObject = this.createRangeObjectOnScroll(pageNumber, anchorPageId, focusPageId);\n if (selectionObject) {\n this.pushSelectionRangeObject(selectionObject, pageNumber);\n if (isStich) {\n this.stichSelection(backward, selection, pageNumber);\n }\n }\n }\n }\n };\n TextSelection.prototype.getCorrectOffset = function (node, offset) {\n var offsetValue = 0;\n var parentElement = this.getNodeElementFromNode(node);\n for (var i = 0; i < parentElement.childNodes.length; i++) {\n if (parentElement.childNodes[i] === node) {\n offsetValue = offsetValue + offset;\n break;\n }\n else {\n offsetValue = offsetValue + parentElement.childNodes[i].textContent.length;\n }\n }\n return offsetValue;\n };\n TextSelection.prototype.pushSelectionRangeObject = function (selectionObject, pageNumber) {\n if (this.isTouchSelection) {\n var currentObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === pageNumber);\n });\n if (currentObject.length > 0) {\n var currentObjectIndex = this.selectionRangeArray.indexOf(currentObject[0]);\n this.selectionRangeArray.splice(currentObjectIndex, 1, selectionObject);\n return;\n }\n }\n var nextPageObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === (pageNumber + 1));\n });\n if (nextPageObject.length === 0) {\n if (this.isTouchSelection && this.selectionRangeArray.length !== 0) {\n var prevPageObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (obj.pageNumber === (pageNumber - 1));\n });\n if (prevPageObject.length !== 0) {\n var prevIndex = this.selectionRangeArray.indexOf(prevPageObject[0]);\n this.selectionRangeArray.splice(prevIndex + 1, 0, selectionObject);\n }\n else {\n var firstObject = this.selectionRangeArray[0];\n if (pageNumber < firstObject.pageNumber) {\n this.selectionRangeArray.splice(0, 0, selectionObject);\n }\n else {\n this.selectionRangeArray.push(selectionObject);\n }\n }\n }\n else {\n this.selectionRangeArray.push(selectionObject);\n }\n }\n else {\n var index = this.selectionRangeArray.indexOf(nextPageObject[0]);\n this.selectionRangeArray.splice(index, 0, selectionObject);\n }\n };\n TextSelection.prototype.extendCurrentSelection = function (element, offset, selection, range) {\n var currentFocusOffset = selection.focusOffset;\n var currentFocusElement = selection.focusNode.parentElement.id;\n // eslint-disable-next-line\n var focusPageId = isNaN(parseInt(currentFocusElement.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(currentFocusElement.split('_text_')[1]);\n // eslint-disable-next-line radix\n if (isNaN(parseInt(currentFocusElement.split('_text_')[1]))) {\n // eslint-disable-next-line\n currentFocusElement = this.pdfViewerBase.getElement('_textLayer_' + (focusPageId + 1)).firstChild.id;\n }\n range.setStart(element.childNodes[0], offset);\n range.setEnd(element.childNodes[0], offset);\n selection.removeAllRanges();\n selection.addRange(range);\n selection.extend(document.getElementById(currentFocusElement).childNodes[0], currentFocusOffset);\n };\n TextSelection.prototype.stichSelection = function (backward, selection, pageNumber) {\n var range = document.createRange();\n var nextPageElement;\n if (backward) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.lastChild;\n if (lastElement) {\n this.extendCurrentSelection(lastElement, this.getTextLastLength(lastElement), selection, range);\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber - 2));\n lastElement = nextPageElement.lastChild;\n this.extendCurrentSelection(lastElement, this.getTextLastLength(lastElement), selection, range);\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 1));\n var lastElement = nextPageElement.firstChild;\n this.extendCurrentSelection(lastElement, 0, selection, range);\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 1));\n if (nextPageElement) {\n var firstElement = nextPageElement.firstChild;\n if (!firstElement) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (pageNumber + 2));\n firstElement = nextPageElement.firstChild;\n range.setStart(firstElement.childNodes[0], 0);\n }\n else {\n range.setStart(firstElement.childNodes[0], 0);\n }\n range.setEnd(selection.focusNode, selection.focusOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n };\n /**\n * @param currentPageNumber\n * @private\n */\n TextSelection.prototype.textSelectionOnMouseWheel = function (currentPageNumber) {\n this.isMouseLeaveSelection = true;\n this.stichSelectionOnScroll(currentPageNumber);\n };\n /**\n * @param currentPageNumber\n * @private\n */\n TextSelection.prototype.stichSelectionOnScroll = function (currentPageNumber) {\n var selection = window.getSelection();\n if (this.isTextSelection) {\n // eslint-disable-next-line radix\n var anchorPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n var focusPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n var nextPageElement = void 0;\n if (anchorPageId !== currentPageNumber && focusPageId !== currentPageNumber) {\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n if (!backward) {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (currentPageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.lastChild;\n if (lastElement) {\n if (lastElement.childNodes[0]) {\n this.extendSelectionStich(lastElement.childNodes[0], this.getTextLastLength(lastElement), selection);\n }\n else {\n this.extendSelectionStich(lastElement, this.getTextLastLength(lastElement), selection);\n }\n }\n else {\n nextPageElement = this.pdfViewerBase.getElement('_textLayer_' + currentPageNumber);\n var lastElement_1 = nextPageElement.firstChild;\n this.extendSelectionStich(lastElement_1.childNodes[0], 0, selection);\n }\n }\n }\n else {\n nextPageElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (currentPageNumber - 1));\n if (nextPageElement) {\n var lastElement = nextPageElement.firstChild;\n if (lastElement) {\n this.extendSelectionStich(lastElement.childNodes[0], 0, selection);\n }\n }\n }\n }\n this.maintainSelectionArray();\n }\n };\n TextSelection.prototype.extendSelectionStich = function (node, offset, selection) {\n if (selection.extend) {\n selection.extend(node, offset);\n }\n };\n /**\n * @param pageNumber\n * @param anchorPageId\n * @param focusPageId\n * @param pageNumber\n * @param anchorPageId\n * @param focusPageId\n * @private\n */\n TextSelection.prototype.createRangeObjectOnScroll = function (pageNumber, anchorPageId, focusPageId) {\n var selectionObject = null;\n var selection = window.getSelection();\n if (selection.anchorNode !== null) {\n var backward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n var firstElement = void 0;\n var lastElement = void 0;\n var startOffset = void 0;\n var endOffset = void 0;\n var element = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageNumber);\n if (element.childNodes) {\n if (!backward) {\n if (pageNumber === anchorPageId) {\n firstElement = this.getNodeElementFromNode(selection.anchorNode);\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber > anchorPageId && pageNumber < focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = 0;\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber === focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n var pageNumberIndex = this.getNodeElementFromNode(selection.focusNode).id.indexOf(focusPageId.toString());\n if (pageNumberIndex !== -1) {\n lastElement = this.getNodeElementFromNode(selection.focusNode);\n endOffset = this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n }\n else {\n // eslint-disable-next-line max-len\n lastElement = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + focusPageId).lastChild;\n endOffset = this.getTextLastLength(lastElement);\n }\n startOffset = 0;\n }\n }\n else {\n if (pageNumber === anchorPageId) {\n firstElement = this.getNodeElementFromNode(selection.anchorNode);\n // eslint-disable-next-line max-len\n lastElement = element.firstChild;\n startOffset = this.getCorrectOffset(selection.anchorNode, selection.anchorOffset);\n endOffset = 0;\n }\n else if (pageNumber < anchorPageId && pageNumber > focusPageId) {\n // eslint-disable-next-line max-len\n firstElement = element.firstChild;\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = 0;\n endOffset = this.getTextLastLength(lastElement);\n }\n else if (pageNumber === focusPageId) {\n firstElement = this.getNodeElementFromNode(selection.focusNode);\n // eslint-disable-next-line max-len\n lastElement = element.lastChild;\n startOffset = this.getCorrectOffset(selection.focusNode, selection.focusOffset);\n endOffset = this.getTextLastLength(lastElement);\n }\n }\n if (firstElement && lastElement) {\n // eslint-disable-next-line max-len\n var selectionRangeObject = this.getSelectionRangeObject(firstElement.id, startOffset, lastElement.id, endOffset, pageNumber);\n var selectionString = selectionRangeObject.toString();\n var selectionBound = this.getSelectionBounds(selectionRangeObject, pageNumber);\n var selectionRectBounds = this.getSelectionRectangleBounds(selectionRangeObject, pageNumber);\n // eslint-disable-next-line max-len\n return selectionObject = { isBackward: backward, startNode: firstElement.id, startOffset: startOffset, endNode: lastElement.id, endOffset: endOffset, textContent: this.allTextContent, pageNumber: pageNumber, bound: selectionBound, rectangleBounds: selectionRectBounds };\n }\n else {\n return null;\n }\n }\n }\n return null;\n };\n TextSelection.prototype.getSelectionRangeObject = function (startNode, startOffset, endNode, endOffset, pageNumber) {\n var startElement = document.getElementById(startNode);\n var endElement = document.getElementById(endNode);\n if (startElement.childNodes[0]) {\n startElement = startElement.childNodes[0];\n }\n if (endElement.childNodes[0]) {\n endElement = endElement.childNodes[0];\n }\n // eslint-disable-next-line radix\n var currentAnchorOffset = parseInt(startNode.split('_' + pageNumber + '_')[1]);\n // eslint-disable-next-line radix\n var currentFocusOffset = parseInt(endNode.split('_' + pageNumber + '_')[1]);\n var range = document.createRange();\n if (currentAnchorOffset <= currentFocusOffset) {\n range.setStart(startElement, startOffset);\n range.setEnd(endElement, endOffset);\n }\n else {\n range.setStart(endElement, endOffset);\n range.setEnd(startElement, startOffset);\n }\n return range;\n };\n TextSelection.prototype.getSelectionBounds = function (range, pageNumber) {\n var startElement = this.getNodeElementFromNode(range.startContainer);\n var endElement = this.getNodeElementFromNode(range.endContainer);\n var bounds = null;\n if (startElement !== endElement) {\n var newStartRange = document.createRange();\n // eslint-disable-next-line max-len\n var startRange = this.createRangeForSelection(range.startContainer, range.endContainer, range.startOffset, range.endOffset, newStartRange);\n bounds = this.normalizeBounds(startRange.getBoundingClientRect(), pageNumber);\n }\n else {\n bounds = this.normalizeBounds(range.getBoundingClientRect(), pageNumber);\n }\n return bounds;\n };\n TextSelection.prototype.getSelectionRectangleBounds = function (range, pageNumber) {\n var selectionBounds = [];\n var startElement = this.getNodeElementFromNode(range.startContainer);\n var endElement = this.getNodeElementFromNode(range.endContainer);\n var bounds = null;\n var selectionTexts = [];\n this.allTextContent = \"\";\n if (startElement !== endElement) {\n var startOffset = 0;\n var endOffset = 0;\n var currentId = 0;\n var anchorPageId = this.pdfViewerBase.textLayer.getPageIndex(range.startContainer);\n var anchorTextId = this.pdfViewerBase.textLayer.getTextIndex(range.startContainer, anchorPageId);\n var focusPageId = this.pdfViewerBase.textLayer.getPageIndex(range.endContainer);\n var focusTextId = this.pdfViewerBase.textLayer.getTextIndex(range.endContainer, focusPageId);\n var textDivs = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).childNodes;\n if (pageNumber === anchorPageId) {\n currentId = anchorTextId;\n }\n else {\n currentId = 0;\n }\n for (var j = currentId; j < textDivs.length; j++) {\n var textElement = textDivs[j];\n if (j === anchorTextId) {\n startOffset = range.startOffset;\n }\n else {\n startOffset = 0;\n }\n if (j === focusTextId) {\n endOffset = range.endOffset;\n }\n else {\n endOffset = textElement.textContent.length;\n }\n if (startOffset !== 0 || endOffset !== 0) {\n var newRange = document.createRange();\n for (var k = 0; k < textElement.childNodes.length; k++) {\n var node = textElement.childNodes[k];\n newRange.setStart(node, startOffset);\n newRange.setEnd(node, endOffset);\n }\n var boundingRect = this.normalizeBounds(newRange.getBoundingClientRect(), pageNumber);\n selectionBounds.push(boundingRect);\n var textselection = newRange.toString();\n selectionTexts.push(textselection);\n newRange.detach();\n if (j === focusTextId) {\n break;\n }\n }\n }\n for (var i = 0; i < selectionTexts.length; i++) {\n var text = selectionTexts[i];\n // While copy and paste for space construct new line\n if ((i != 0 && text === ' ' && selectionTexts[i - 1].includes('\\r\\n')) || (i != selectionTexts.length - 1 && selectionTexts[i] === ' ' && selectionTexts[i + 1] === '\\r\\n')) {\n text = '';\n }\n if (text.slice(text.length - 2) !== '\\r\\n' || i === selectionTexts.length - 1) {\n this.allTextContent += text;\n }\n else {\n this.allTextContent += text;\n }\n }\n }\n else {\n bounds = this.normalizeBounds(range.getBoundingClientRect(), pageNumber);\n this.allTextContent = range.toString();\n selectionBounds.push(bounds);\n }\n return selectionBounds;\n };\n TextSelection.prototype.getTextId = function (elementId) {\n var index = elementId.lastIndexOf('_');\n var divId = elementId.substring(index + 1, elementId.length);\n // eslint-disable-next-line radix\n return parseInt(divId);\n };\n TextSelection.prototype.normalizeBounds = function (bound, pageNumber) {\n var newBounds = null;\n var currentPageElement = this.pdfViewerBase.getElement('_pageDiv_' + pageNumber);\n if (this.pdfViewerBase.isMixedSizeDocument) {\n var currentTextElement = this.pdfViewerBase.getElement('_textLayer_' + pageNumber);\n if (currentTextElement) {\n currentPageElement = currentTextElement;\n }\n }\n var currentPageRect = currentPageElement.getBoundingClientRect();\n newBounds = {\n bottom: this.getMagnifiedValue(bound.bottom - currentPageRect.top), height: this.getMagnifiedValue(bound.height),\n left: this.getMagnifiedValue(bound.left - currentPageRect.left), top: this.getMagnifiedValue(bound.top - currentPageRect.top),\n right: this.getMagnifiedValue(bound.right - currentPageRect.left), width: this.getMagnifiedValue(bound.width)\n };\n return newBounds;\n };\n TextSelection.prototype.getMagnifiedValue = function (value) {\n return value / this.pdfViewerBase.getZoomFactor();\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSelection.prototype.getCurrentSelectionBounds = function (pageNumber) {\n var bound = null;\n var ranges = this.selectionRangeArray;\n for (var i = 0; i < ranges.length; i++) {\n if (ranges[i] !== null) {\n if (pageNumber === ranges[i].pageNumber) {\n bound = ranges[i].bound;\n }\n }\n }\n return bound;\n };\n TextSelection.prototype.createRangeForSelection = function (start, end, startOffset, endOffset, range) {\n range.setStart(start, startOffset);\n range.setEnd(end, endOffset);\n return range;\n };\n TextSelection.prototype.maintainSelectionArray = function () {\n var _this = this;\n if (this.selectionRangeArray.length !== 0) {\n var selection = window.getSelection();\n var isBackward = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n // eslint-disable-next-line\n var anchorPage = isNaN(parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1])) ? parseInt(selection.anchorNode.id.split('_pageDiv_')[1]) : parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n if (isNaN(anchorPage)) {\n // eslint-disable-next-line radix\n anchorPage = parseInt(selection.anchorNode.id.split('_text_')[1]);\n }\n // eslint-disable-next-line\n var focusPage_1 = isNaN(parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_pageDiv_')[1]) : parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n if (isNaN(focusPage_1)) {\n // eslint-disable-next-line\n focusPage_1 = isNaN(parseInt(selection.focusNode.id.split('_text_')[1])) ? parseInt(selection.focusNode.id.split('_textLayer_')[1]) : parseInt(selection.focusNode.id.split('_text_')[1]);\n }\n var arrayObject = [];\n if (!isBackward) {\n arrayObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (!((_this.selectionStartPage <= obj.pageNumber) && (obj.pageNumber < focusPage_1)));\n });\n }\n else {\n arrayObject = this.selectionRangeArray.filter(\n // eslint-disable-next-line\n function (obj) {\n return (!((focusPage_1 < obj.pageNumber) && (obj.pageNumber <= _this.selectionStartPage)));\n });\n }\n if (arrayObject.length > 0) {\n for (var i = 0; i < arrayObject.length; i++) {\n var indexInArray = this.selectionRangeArray.indexOf(arrayObject[i]);\n if (indexInArray !== -1) {\n this.selectionRangeArray.splice(indexInArray, 1);\n }\n }\n if (this.selectionRangeArray.length === 1) {\n // eslint-disable-next-line max-len\n if (this.selectionRangeArray[0].pageNumber === anchorPage || this.selectionRangeArray[0].pageNumber === focusPage_1) {\n arrayObject = [];\n }\n }\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.applySpanForSelection = function () {\n var selection = window.getSelection();\n // eslint-disable-next-line max-len\n if (selection.anchorNode === selection.focusNode && selection.anchorOffset === selection.focusOffset && !selection.isCollapsed) {\n selection.removeAllRanges();\n }\n // eslint-disable-next-line max-len\n if (selection.anchorNode !== null && this.pdfViewerBase.viewerContainer.contains(this.getNodeElementFromNode(selection.anchorNode))) {\n var isBackWardSelection = this.pdfViewerBase.textLayer.isBackWardSelection(selection);\n var anchorPageId = void 0;\n var focusPageId = void 0;\n var anchorOffsetDiv = void 0;\n var focusOffsetDiv = void 0;\n var anchorOffset = void 0;\n var focusOffset = void 0;\n if (isBackWardSelection) {\n // eslint-disable-next-line radix\n anchorPageId = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n focusPageId = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1]);\n // eslint-disable-next-line radix\n anchorOffsetDiv = parseInt(this.getNodeElementFromNode(selection.focusNode).id.split('_text_')[1].split('_')[1]);\n // eslint-disable-next-line radix\n focusOffsetDiv = parseInt(this.getNodeElementFromNode(selection.anchorNode).id.split('_text_')[1].split('_')[1]);\n anchorOffset = selection.focusOffset;\n focusOffset = selection.anchorOffset;\n }\n else {\n var anchorElement = this.getNodeElementFromNode(selection.anchorNode);\n var focusElement = this.getNodeElementFromNode(selection.focusNode);\n // eslint-disable-next-line\n anchorPageId = (anchorElement.id.indexOf('text_') !== -1) ? parseInt(anchorElement.id.split('text_')[1]) : parseInt(anchorElement.id.split('_textLayer_')[1]);\n // eslint-disable-next-line\n focusPageId = (focusElement.id.indexOf('text_') !== -1) ? parseInt(focusElement.id.split('text_')[1]) : parseInt(focusElement.id.split('_textLayer_')[1]);\n var isFocusChanged = false;\n if (this.isTouchSelection) {\n if (selection.focusNode === this.pdfViewerBase.pageContainer) {\n var lastChildNode = this.pdfViewerBase.pageContainer.lastChild;\n if (lastChildNode.classList.contains('e-pv-touch-select-drop')) {\n var lastPageDiv = lastChildNode.previousSibling.previousSibling;\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastPageDiv.id.split('_pageDiv_')[1]);\n focusElement = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).lastChild;\n isFocusChanged = true;\n }\n else if (lastChildNode.classList.contains('e-pv-page-div')) {\n var lastPageDiv = lastChildNode;\n // eslint-disable-next-line radix\n focusPageId = parseInt(lastPageDiv.id.split('_pageDiv_')[1]);\n focusElement = this.pdfViewerBase.getElement('_textLayer_' + focusPageId).lastChild;\n isFocusChanged = true;\n }\n }\n }\n if (anchorElement.classList.contains('e-pv-maintaincontent')) {\n anchorElement = this.getNodeElementFromNode(anchorElement);\n // eslint-disable-next-line radix\n anchorPageId = parseInt(anchorElement.id.split('text_')[1]);\n }\n if (focusElement.classList.contains('e-pv-maintaincontent')) {\n focusElement = this.getNodeElementFromNode(focusElement);\n // eslint-disable-next-line radix\n focusPageId = parseInt(focusElement.id.split('text_')[1]);\n }\n if (anchorPageId === focusPageId) {\n if (anchorElement.contains(focusElement)) {\n anchorElement = focusElement;\n }\n if (focusElement.contains(anchorElement)) {\n focusElement = anchorElement;\n }\n }\n // eslint-disable-next-line radix\n anchorOffsetDiv = (anchorElement.id.split('text_')[1]) ? parseInt(anchorElement.id.split('text_')[1].split('_')[1]) : null;\n // eslint-disable-next-line radix\n focusOffsetDiv = (focusElement.id.split('text_')[1]) ? parseInt(focusElement.id.split('text_')[1].split('_')[1]) : null;\n anchorOffsetDiv = isNaN(anchorOffsetDiv) ? focusOffsetDiv : anchorOffsetDiv;\n focusOffsetDiv = isNaN(focusOffsetDiv) ? anchorOffsetDiv : focusOffsetDiv;\n anchorOffset = selection.anchorOffset;\n focusOffset = !isFocusChanged ? selection.focusOffset : focusElement.textContent.length;\n }\n if (this.pdfViewerBase.checkIsNormalText()) {\n selection.removeAllRanges();\n this.pdfViewerBase.textLayer.clearDivSelection();\n // eslint-disable-next-line max-len\n this.pdfViewerBase.textLayer.applySpanForSelection(anchorPageId, focusPageId, anchorOffsetDiv, focusOffsetDiv, anchorOffset, focusOffset);\n }\n if (this.pdfViewer.textSearchModule) {\n this.pdfViewer.textSearchModule.searchAfterSelection();\n }\n }\n };\n /**\n * @param event\n * @param x\n * @param y\n * @private\n */\n TextSelection.prototype.initiateTouchSelection = function (event, x, y) {\n if (this.pdfViewerBase.isShapeBasedAnnotationsEnabled()) {\n if (this.pdfViewer.selectedItems.annotations.length > 0) {\n this.pdfViewer.clearSelection(this.pdfViewer.selectedItems.annotations[0].pageIndex);\n }\n }\n // eslint-disable-next-line\n var element = event.target;\n var belowElements = document.elementsFromPoint(event.touches[0].clientX, event.touches[0].clientY);\n if (belowElements.length !== 0) {\n if (belowElements[0].classList.contains('e-pv-hyperlink') && belowElements[1].classList.contains('e-pv-text')) {\n element = belowElements[1];\n }\n }\n var pageNumber = parseFloat(element.id.split('_')[2]);\n this.pdfViewer.fireTextSelectionStart(pageNumber + 1);\n this.selectAWord(element, x, y, true);\n this.createTouchSelectElement(event);\n this.maintainSelectionOnZoom(true, false);\n this.fireTextSelectEnd();\n this.applySpanForSelection();\n };\n // eslint-disable-next-line\n TextSelection.prototype.selectTextByTouch = function (element, x, y, isForwardSelection, target, isCloserMovement) {\n var isTextSelected = false;\n if (element.nodeType === element.TEXT_NODE) {\n var rangeObject = element.ownerDocument.createRange();\n var selection = window.getSelection();\n rangeObject.selectNodeContents(element);\n var currentPosition = 0;\n var endPosition = rangeObject.endOffset;\n while (currentPosition < endPosition) {\n rangeObject.setStart(element, currentPosition);\n rangeObject.setEnd(element, currentPosition + 1);\n var rangeBounds = rangeObject.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n if (selection.anchorNode != null) {\n if (isForwardSelection) {\n rangeObject.setStart(selection.anchorNode, selection.anchorOffset);\n }\n // eslint-disable-next-line max-len\n rangeObject = this.setTouchSelectionStartPosition(selection, rangeObject, isForwardSelection, target, element, currentPosition, isCloserMovement);\n if (isForwardSelection) {\n selection.extend(element, currentPosition);\n }\n isTextSelected = true;\n }\n rangeObject.detach();\n return isTextSelected;\n }\n currentPosition += 1;\n }\n }\n else {\n for (var i = 0; i < element.childNodes.length; i++) {\n var range = element.childNodes[i].ownerDocument.createRange();\n range.selectNodeContents(element.childNodes[i]);\n var rangeBounds = range.getBoundingClientRect();\n if (rangeBounds.left <= x && rangeBounds.right >= x && rangeBounds.top <= y && rangeBounds.bottom >= y) {\n range.detach();\n return (this.selectTextByTouch(element.childNodes[i], x, y, isForwardSelection, target, isCloserMovement));\n }\n else {\n range.detach();\n }\n }\n }\n return isTextSelected;\n };\n // eslint-disable-next-line\n TextSelection.prototype.setTouchSelectionStartPosition = function (selection, range, isForwardSelection, target, element, currentPosition, isCloserMovement) {\n if (isForwardSelection) {\n if (target === 'left') {\n // eslint-disable-next-line\n var startNode = this.getTouchFocusElement(selection, true);\n range.setStart(startNode.focusNode, startNode.focusOffset);\n range.setEnd(element, currentPosition);\n this.selectionAnchorTouch = { anchorNode: range.endContainer.parentElement.id, anchorOffset: range.endOffset };\n }\n else if (target === 'right') {\n // eslint-disable-next-line\n var startNode = this.getTouchAnchorElement(selection, false);\n range.setStart(startNode.anchorNode, startNode.anchorOffset);\n range.setEnd(element, currentPosition);\n this.selectionFocusTouch = { focusNode: range.endContainer.parentElement.id, focusOffset: range.endOffset };\n }\n }\n else {\n if (target === 'left') {\n if (!isCloserMovement) {\n // eslint-disable-next-line\n var startNode = this.getTouchFocusElement(selection, false);\n range.setStart(element, currentPosition);\n // eslint-disable-next-line radix\n range.setEnd(startNode.focusNode, startNode.focusOffset);\n if (range.toString() === '') {\n range.setStart(element, currentPosition);\n range.setEnd(selection.focusNode, selection.focusOffset);\n }\n this.selectionAnchorTouch = { anchorNode: range.startContainer.parentElement.id, anchorOffset: range.startOffset };\n }\n else {\n range.setStart(element, currentPosition);\n range.setEnd(selection.focusNode, selection.focusOffset);\n this.selectionAnchorTouch = { anchorNode: range.startContainer.parentElement.id, anchorOffset: range.startOffset };\n }\n }\n else if (target === 'right') {\n // eslint-disable-next-line\n var startNode = this.getTouchAnchorElement(selection, true);\n range.setStart(element, currentPosition);\n range.setEnd(startNode.anchorNode, startNode.anchorOffset);\n if (range.toString() === '') {\n range.setStart(startNode.anchorNode, startNode.anchorOffset);\n range.setEnd(element, currentPosition);\n }\n this.selectionFocusTouch = { focusNode: range.startContainer.parentElement.id, focusOffset: range.startOffset };\n }\n }\n selection.removeAllRanges();\n selection.addRange(range);\n return range;\n };\n TextSelection.prototype.getTouchAnchorElement = function (selection, isCurrentFocus) {\n var element = document.getElementById(this.selectionAnchorTouch.anchorNode.toString());\n var startNode = null;\n var offset = 0;\n if (element) {\n startNode = element.childNodes[0];\n // eslint-disable-next-line radix\n offset = parseInt(this.selectionAnchorTouch.anchorOffset.toString());\n }\n else {\n if (isCurrentFocus) {\n startNode = selection.focusNode;\n offset = selection.focusOffset;\n }\n else {\n startNode = selection.anchorNode;\n offset = selection.anchorOffset;\n }\n }\n return { anchorNode: startNode, anchorOffset: offset };\n };\n TextSelection.prototype.getTouchFocusElement = function (selection, isCurrentAnchor) {\n var element = document.getElementById(this.selectionFocusTouch.focusNode.toString());\n var startNode = null;\n var offset = 0;\n if (element) {\n startNode = element.childNodes[0];\n // eslint-disable-next-line radix\n offset = parseInt(this.selectionFocusTouch.focusOffset.toString());\n }\n else {\n if (isCurrentAnchor) {\n startNode = selection.anchorNode;\n offset = selection.anchorOffset;\n }\n else {\n startNode = selection.focusNode;\n offset = selection.focusOffset;\n }\n }\n return { focusNode: startNode, focusOffset: offset };\n };\n TextSelection.prototype.createTouchSelectElement = function (event) {\n var topMargin = 10;\n this.isTouchSelection = true;\n var selection = window.getSelection();\n if (selection.type === 'Range') {\n // eslint-disable-next-line max-len\n this.dropDivElementLeft = createElement('div', { id: this.pdfViewer.element.id + '_touchSelect_droplet_left', className: 'e-pv-touch-select-drop' });\n // eslint-disable-next-line max-len\n this.dropDivElementRight = createElement('div', { id: this.pdfViewer.element.id + '_touchSelect_droplet_right', className: 'e-pv-touch-select-drop' });\n this.dropElementLeft = createElement('div', { className: 'e-pv-touch-ellipse' });\n this.dropElementLeft.style.transform = 'rotate(0deg)';\n this.dropDivElementLeft.appendChild(this.dropElementLeft);\n this.dropElementRight = createElement('div', { className: 'e-pv-touch-ellipse' });\n this.dropElementRight.style.transform = 'rotate(-90deg)';\n this.dropElementRight.style.margin = '0 9px 0 0';\n this.dropDivElementRight.appendChild(this.dropElementRight);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivElementLeft);\n this.pdfViewerBase.pageContainer.appendChild(this.dropDivElementRight);\n var range = selection.getRangeAt(0);\n var rangePosition = range.getBoundingClientRect();\n var dropElementRect = this.dropDivElementLeft.getBoundingClientRect();\n // eslint-disable-next-line max-len\n var pageTopValue = this.pdfViewerBase.pageSize[this.pdfViewerBase.currentPageNumber - 1].top;\n var viewerLeftPosition = this.pdfViewerBase.viewerContainer.getBoundingClientRect().left;\n var topClientValue = this.getClientValueTop(rangePosition.top, this.pdfViewerBase.currentPageNumber - 1);\n // eslint-disable-next-line max-len\n var topPositionValue = topClientValue + pageTopValue * this.pdfViewerBase.getZoomFactor() + (dropElementRect.height / 2) * this.pdfViewerBase.getZoomFactor() + 'px';\n this.dropDivElementLeft.style.top = topPositionValue;\n this.dropDivElementLeft.style.left = rangePosition.left - (viewerLeftPosition + (dropElementRect.width)) + 'px';\n this.dropDivElementRight.style.top = topPositionValue;\n // eslint-disable-next-line max-len\n this.dropDivElementRight.style.left = rangePosition.left + rangePosition.width - viewerLeftPosition + 'px';\n var currentPageLeft = this.pdfViewerBase.getElement('_pageDiv_' + (this.pdfViewerBase.currentPageNumber - 1)).getBoundingClientRect().left;\n var currentRangeLeft = rangePosition.left - currentPageLeft;\n // eslint-disable-next-line max-len\n this.topStoreLeft = { pageTop: pageTopValue, topClientValue: this.getMagnifiedValue(topClientValue), pageNumber: this.pdfViewerBase.currentPageNumber - 1, left: this.getMagnifiedValue(currentRangeLeft), isHeightNeeded: true };\n // eslint-disable-next-line max-len\n this.topStoreRight = { pageTop: pageTopValue, topClientValue: this.getMagnifiedValue(topClientValue), pageNumber: this.pdfViewerBase.currentPageNumber - 1, left: this.getMagnifiedValue(currentRangeLeft + rangePosition.width), isHeightNeeded: true };\n this.dropDivElementLeft.addEventListener('touchstart', this.onLeftTouchSelectElementTouchStart);\n this.dropDivElementLeft.addEventListener('touchmove', this.onLeftTouchSelectElementTouchMove);\n this.dropDivElementLeft.addEventListener('touchend', this.onLeftTouchSelectElementTouchEnd);\n this.dropDivElementRight.addEventListener('touchstart', this.onRightTouchSelectElementTouchStart);\n this.dropDivElementRight.addEventListener('touchmove', this.onRightTouchSelectElementTouchMove);\n this.dropDivElementRight.addEventListener('touchend', this.onRightTouchSelectElementTouchEnd);\n // eslint-disable-next-line max-len\n this.calculateContextMenuPosition((event.touches[0].clientY + this.dropDivElementLeft.clientHeight + topMargin), (parseInt(this.dropDivElementLeft.style.left, 10) - topMargin));\n }\n };\n /**\n * @param top\n * @param left\n * @private\n */\n // eslint-disable-next-line\n TextSelection.prototype.calculateContextMenuPosition = function (top, left) {\n var _this = this;\n var topMargin = 10;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n // eslint-disable-next-line\n var contextTop = top - this.contextMenuHeight;\n if (contextTop < this.pdfViewerBase.toolbarHeight) {\n top = top + this.contextMenuHeight;\n }\n else {\n top = contextTop;\n }\n if ((top + this.contextMenuHeight) > window.innerHeight) {\n top = top - this.contextMenuHeight;\n }\n }\n if (this.pdfViewer.contextMenuSettings.contextMenuAction === 'MouseUp') {\n left = left - 50;\n }\n var proxy = this;\n setTimeout(function () {\n var leftValue = 35;\n var selectedContent = document.getElementsByClassName(\"e-pv-maintaincontent\")[0] ? document.getElementsByClassName(\"e-pv-maintaincontent\")[0].getBoundingClientRect() : null;\n if (selectedContent) {\n if ((selectedContent.bottom + proxy.contextMenuHeight + proxy.pdfViewerBase.toolbarHeight) > window.innerHeight) {\n top = selectedContent.top - (proxy.contextMenuHeight + proxy.pdfViewerBase.toolbarHeight - topMargin);\n }\n else {\n top = selectedContent.bottom + proxy.pdfViewerBase.toolbarHeight - topMargin;\n }\n left = selectedContent.left - leftValue;\n var toolbarModule = _this.pdfViewer.toolbarModule ? _this.pdfViewer.toolbarModule.annotationToolbarModule : 'null';\n if (!toolbarModule || !toolbarModule.textMarkupToolbarElement || toolbarModule.textMarkupToolbarElement.children.length === 0) {\n // eslint-disable-next-line max-len\n proxy.pdfViewerBase.contextMenuModule.open(top, left, proxy.pdfViewerBase.viewerContainer);\n }\n }\n });\n };\n /**\n * @private\n */\n TextSelection.prototype.initiateSelectionByTouch = function () {\n this.pdfViewerBase.textLayer.clearDivSelection();\n this.pdfViewerBase.contextMenuModule.close();\n var lowerPageIndex = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageIndex = (lowerPageIndex < 0) ? 0 : lowerPageIndex;\n var higherPageIndex = this.pdfViewer.currentPageNumber + 1;\n // eslint-disable-next-line max-len\n higherPageIndex = (higherPageIndex < (this.pdfViewerBase.pageCount - 1)) ? higherPageIndex : (this.pdfViewerBase.pageCount - 1);\n for (var i = lowerPageIndex; i <= higherPageIndex; i++) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + i);\n if (textLayer) {\n if (textLayer.childNodes !== null) {\n this.applySelectionMouseScroll(i);\n }\n }\n }\n if (this.selectionRangeArray.length > 0) {\n this.pdfViewer.fireTextSelectionStart(this.selectionRangeArray[0].pageNumber + 1);\n }\n };\n // eslint-disable-next-line\n TextSelection.prototype.terminateSelectionByTouch = function (event) {\n var topMargin = 10;\n this.maintainSelectionOnZoom(true, false);\n this.applySpanForSelection();\n if (this.pdfViewerBase.getTextMarkupAnnotationMode()) {\n // eslint-disable-next-line max-len\n this.pdfViewer.annotationModule.textMarkupAnnotationModule.drawTextMarkupAnnotations(this.pdfViewer.annotationModule.textMarkupAnnotationModule.currentTextMarkupAddMode);\n }\n else {\n this.fireTextSelectEnd();\n var top_4 = event.changedTouches[0].clientY + event.currentTarget.clientHeight;\n var spanBounds = this.getSpanBounds();\n if ((spanBounds.bottom + this.contextMenuHeight + this.pdfViewerBase.toolbarHeight) > window.innerHeight) {\n top_4 = spanBounds.top - (this.contextMenuHeight + this.pdfViewerBase.toolbarHeight);\n }\n else {\n top_4 = spanBounds.bottom + this.pdfViewerBase.toolbarHeight - topMargin;\n }\n this.pdfViewerBase.contextMenuModule.open(top_4, (spanBounds.right - spanBounds.left) / 2, this.pdfViewerBase.viewerContainer);\n }\n };\n TextSelection.prototype.getSpanBounds = function () {\n var spanWidth = [];\n var spanRight = [];\n var spanLeft = [];\n var spanHeight = 0;\n var selectedContent = document.getElementsByClassName(\"e-pv-maintaincontent\");\n if (selectedContent.length > 0) {\n for (var i = 0; i < selectedContent.length; i++) {\n var spanElement = selectedContent[i].getBoundingClientRect();\n spanHeight = spanHeight + spanElement.height;\n spanWidth.push(spanElement.width);\n spanRight.push(spanElement.right);\n spanLeft.push(spanElement.left);\n }\n // eslint-disable-next-line max-len\n return { top: selectedContent[0].getBoundingClientRect().top, bottom: selectedContent[selectedContent.length - 1].getBoundingClientRect().bottom, left: Math.min.apply(null, spanLeft), right: Math.max.apply(null, spanRight), width: Math.max.apply(null, spanWidth), height: spanHeight };\n }\n };\n TextSelection.prototype.getNodeElement = function (range, touchX, touchY, event, nodeElement) {\n if (document.caretRangeFromPoint) {\n range = document.caretRangeFromPoint(touchX, touchY);\n nodeElement = this.onTouchElementScroll(range, nodeElement, touchY, event);\n // eslint-disable-next-line\n }\n else if (document.caretPositionFromPoint) {\n // eslint-disable-next-line\n var start = document.caretPositionFromPoint(touchX, touchY);\n // eslint-disable-next-line\n var end = document.caretPositionFromPoint(touchX, touchY);\n range = document.createRange();\n range.setStart(start.offsetNode, start.offset);\n range.setEnd(end.offsetNode, end.offset);\n nodeElement = this.onTouchElementScroll(range, nodeElement, touchY, event);\n }\n return nodeElement;\n };\n TextSelection.prototype.isTouchedWithinContainer = function (event) {\n var elements = document.elementsFromPoint(event.touches[0].clientX, event.touches[0].clientY);\n var isTouchedWithinContainer = false;\n if (elements.length !== 0) {\n isTouchedWithinContainer = true;\n }\n return isTouchedWithinContainer;\n };\n TextSelection.prototype.onTouchElementScroll = function (range, nodeElement, touchY, event) {\n var viewerScrollTop = this.pdfViewerBase.viewerContainer.scrollTop;\n if (range != null) {\n nodeElement = range.startContainer;\n var isScrollBar = this.isScrolledOnScrollBar(event);\n if (!this.pdfViewerBase.viewerContainer.contains(nodeElement.parentElement) || isScrollBar) {\n if (touchY < this.pdfViewerBase.viewerContainer.clientHeight) {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop - 30;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop + 30;\n }\n }\n }\n else {\n if (touchY < this.pdfViewerBase.viewerContainer.clientHeight) {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop - 30;\n }\n else {\n this.pdfViewerBase.viewerContainer.scrollTop = viewerScrollTop + 30;\n }\n }\n return nodeElement;\n };\n TextSelection.prototype.isCloserTouchScroll = function (currentDifference) {\n var isForwardMovement = false;\n if (this.previousScrollDifference > currentDifference) {\n isForwardMovement = true;\n }\n return isForwardMovement;\n };\n TextSelection.prototype.getClientValueTop = function (clientValue, pageNumber) {\n if (this.pdfViewerBase.getElement('_pageDiv_' + pageNumber)) {\n // eslint-disable-next-line max-len\n return clientValue - this.pdfViewerBase.getElement('_pageDiv_' + pageNumber).getBoundingClientRect().top;\n }\n else {\n return clientValue;\n }\n };\n TextSelection.prototype.isScrolledOnScrollBar = function (event) {\n var isScrollBar = false;\n // eslint-disable-next-line max-len\n if (event.touches && (this.pdfViewerBase.viewerContainer.clientHeight + this.pdfViewerBase.viewerContainer.offsetTop) < event.touches[0].clientY && event.touches[0].clientY < (this.pdfViewerBase.viewerContainer.offsetHeight + this.pdfViewerBase.viewerContainer.offsetTop)) {\n isScrollBar = true;\n }\n return isScrollBar;\n };\n TextSelection.prototype.getTextLastLength = function (element) {\n if (element) {\n return element.textContent.length;\n }\n else {\n return 0;\n }\n };\n TextSelection.prototype.getNodeElementFromNode = function (node) {\n if (node.parentElement) {\n return node.parentElement;\n }\n else {\n return node.parentNode;\n }\n };\n /**\n * Copy the selected text in the PDF Document.\n *\n * @returns void\n */\n TextSelection.prototype.copyText = function () {\n var selectionText = '';\n this.maintainSelectionOnZoom(true, false);\n if (this.selectionRangeArray.length > 0) {\n for (var i = 0; i < this.selectionRangeArray.length; i++) {\n selectionText += this.selectionRangeArray[i].textContent;\n }\n }\n if (selectionText.length > 0) {\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.isShapeCopied = false;\n }\n var textArea = document.createElement('textarea');\n textArea.contentEditable = 'true';\n textArea.textContent = selectionText;\n // eslint-disable-next-line max-len\n if (this.pdfViewer.annotation && this.pdfViewer.annotation.freeTextAnnotationModule) {\n this.pdfViewer.annotation.freeTextAnnotationModule.selectedText = selectionText;\n }\n textArea.style.position = 'fixed';\n document.body.appendChild(textArea);\n textArea.select();\n try {\n document.execCommand('copy');\n }\n catch (ex) {\n console.warn('Copy to clipboard failed.', ex);\n }\n finally {\n if (textArea) {\n document.body.removeChild(textArea);\n }\n }\n }\n };\n /**\n * @private\n */\n TextSelection.prototype.destroy = function () {\n this.clear();\n };\n /**\n * @private\n */\n TextSelection.prototype.getModuleName = function () {\n return 'TextSelection';\n };\n return TextSelection;\n}());\n\n/**\n * export types\n */\n\n/* eslint-disable */\n/**\n * TextSearch module\n */\nvar TextSearch = /** @__PURE__ @class */ (function () {\n /**\n * @param pdfViewer\n * @param pdfViewerBase\n * @param pdfViewer\n * @param pdfViewerBase\n * @private\n */\n function TextSearch(pdfViewer, pdfViewerBase) {\n var _this = this;\n /**\n * @private\n */\n this.isTextSearch = false;\n /**\n * @private\n */\n this.searchCount = 0;\n this.searchIndex = 0;\n this.currentSearchIndex = 0;\n this.startIndex = null;\n this.searchPageIndex = null;\n this.searchString = null;\n this.isMatchCase = false;\n this.searchRequestHandler = null;\n // eslint-disable-next-line\n this.textContents = new Array();\n // eslint-disable-next-line\n this.searchMatches = new Array();\n // eslint-disable-next-line\n this.searchCollection = new Array();\n this.searchedPages = [];\n this.isPrevSearch = false;\n /**\n * @private\n */\n this.searchTextDivzIndex = \"-1\";\n // eslint-disable-next-line\n this.tempElementStorage = new Array();\n /**\n * @private\n */\n this.isMessagePopupOpened = false;\n /**\n * @private\n */\n this.isTextRetrieved = false;\n this.isTextSearched = false;\n this.isTextSearchEventTriggered = false;\n this.isSearchText = false;\n // eslint-disable-next-line\n this.checkBoxOnChange = function (event) {\n if (isBlazor()) {\n if (event.currentTarget && event.currentTarget.checked) {\n _this.isMatchCase = true;\n }\n else {\n _this.isMatchCase = false;\n }\n }\n else {\n if (event.checked) {\n _this.isMatchCase = true;\n }\n else {\n _this.isMatchCase = false;\n }\n }\n if (_this.isTextSearch) {\n _this.resetVariables();\n _this.clearAllOccurrences();\n var inputString = _this.searchInput.value;\n _this.searchIndex = 0;\n _this.textSearch(inputString);\n }\n };\n this.searchKeypressHandler = function (event) {\n _this.enableNextButton(true);\n _this.enablePrevButton(true);\n if (event.which === 13) {\n _this.initiateTextSearch(_this.searchInput);\n _this.updateSearchInputIcon(false);\n }\n else {\n _this.resetVariables();\n }\n };\n this.searchClickHandler = function (event) {\n _this.searchButtonClick(_this.searchBtn, _this.searchInput);\n };\n this.nextButtonOnClick = function (event) {\n _this.nextSearch();\n };\n this.prevButtonOnClick = function (event) {\n _this.prevSearch();\n };\n this.pdfViewer = pdfViewer;\n this.pdfViewerBase = pdfViewerBase;\n }\n /**\n * @private\n */\n TextSearch.prototype.createTextSearchBox = function () {\n var _this = this;\n // eslint-disable-next-line max-len\n this.searchBox = createElement('div', { id: this.pdfViewer.element.id + '_search_box', className: 'e-pv-search-bar' });\n var toolbarElement;\n if (isBlazor()) {\n toolbarElement = document.getElementById('toolbarContainer');\n }\n else {\n toolbarElement = this.pdfViewerBase.getElement('_toolbarContainer');\n }\n if (toolbarElement) {\n if (isBlazor()) {\n this.searchBox.style.top = toolbarElement.clientHeight + 'px';\n }\n else {\n this.searchBox.style.top = toolbarElement.clientHeight + 'px';\n }\n }\n var searchElementsContainer = createElement('div', { id: this.pdfViewer.element.id + '_search_box_elements', className: 'e-pv-search-bar-elements' });\n // eslint-disable-next-line max-len\n var searchInputContainer = createElement('div', { id: this.pdfViewer.element.id + '_search_input_container', className: 'e-input-group e-pv-search-input' });\n this.searchInput = createElement('input', { id: this.pdfViewer.element.id + '_search_input', className: 'e-input' });\n this.searchInput.type = 'text';\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Findindocument');\n promise.then(function (value) {\n _this.searchInput.placeholder = value;\n });\n }\n else {\n this.searchInput.placeholder = this.pdfViewer.localeObj.getConstant('Find in document');\n }\n // eslint-disable-next-line max-len\n this.searchBtn = createElement('span', { id: this.pdfViewer.element.id + '_search_box-icon', className: 'e-input-group-icon e-input-search-group-icon e-pv-search-icon' });\n searchInputContainer.appendChild(this.searchInput);\n searchInputContainer.appendChild(this.searchBtn);\n searchElementsContainer.appendChild(searchInputContainer);\n if (this.pdfViewer.enableRtl) {\n this.prevSearchBtn = this.createSearchBoxButtons('prev_occurrence', 'e-pv-next-search');\n }\n else {\n this.prevSearchBtn = this.createSearchBoxButtons('prev_occurrence', 'e-pv-prev-search');\n }\n this.prevSearchBtn.setAttribute('aria-label', 'Previous Search text');\n searchElementsContainer.appendChild(this.prevSearchBtn);\n if (this.pdfViewer.enableRtl) {\n this.nextSearchBtn = this.createSearchBoxButtons('next_occurrence', 'e-pv-prev-search');\n }\n else {\n this.nextSearchBtn = this.createSearchBoxButtons('next_occurrence', 'e-pv-next-search');\n }\n this.nextSearchBtn.setAttribute('aria-label', 'Next Search text');\n searchElementsContainer.appendChild(this.nextSearchBtn);\n // eslint-disable-next-line max-len\n var matchCaseContainer = createElement('div', { id: this.pdfViewer.element.id + '_match_case_container', className: 'e-pv-match-case-container' });\n var matchCaseInput = createElement('input', { id: this.pdfViewer.element.id + '_match_case' });\n matchCaseInput.type = 'checkbox';\n if (isBlazor()) {\n matchCaseInput.style.height = '17px';\n matchCaseInput.style.width = '17px';\n matchCaseInput.addEventListener('change', this.checkBoxOnChange.bind(this));\n }\n matchCaseContainer.appendChild(matchCaseInput);\n this.searchBox.appendChild(searchElementsContainer);\n this.searchBox.appendChild(matchCaseContainer);\n this.pdfViewerBase.mainContainer.appendChild(this.searchBox);\n if (isBlazor()) {\n // eslint-disable-next-line max-len\n var matchCaseText_1 = createElement('span', { id: this.pdfViewer.element.id + '_search_box_text', styles: 'position: absolute; padding-top: 3px; padding-left: 8px; padding-right: 8px; font-size: 13px' });\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Matchcase');\n promise.then(function (value) {\n matchCaseText_1.textContent = value;\n });\n matchCaseContainer.appendChild(matchCaseText_1);\n }\n else {\n // eslint-disable-next-line max-len\n var checkBox = new CheckBox({ cssClass: 'e-pv-match-case', label: this.pdfViewer.localeObj.getConstant('Match case'), change: this.checkBoxOnChange.bind(this) });\n checkBox.appendTo(matchCaseInput);\n }\n var waitingPopup = createElement('div', { id: this.pdfViewer.element.id + '_textSearchLoadingIndicator' });\n searchInputContainer.appendChild(waitingPopup);\n waitingPopup.style.position = 'absolute';\n waitingPopup.style.top = '15px';\n waitingPopup.style.left = searchInputContainer.clientWidth - 46 + 'px';\n createSpinner({ target: waitingPopup, cssClass: 'e-spin-center' });\n this.setLoaderProperties(waitingPopup);\n this.showSearchBox(false);\n if (this.pdfViewer.enableRtl) {\n this.searchBox.classList.add('e-rtl');\n this.searchBox.style.left = '88.3px';\n }\n else {\n this.searchBox.classList.remove('e-rtl');\n this.searchBox.style.right = '88.3px';\n }\n this.searchInput.addEventListener('focus', function () {\n _this.searchInput.parentElement.classList.add('e-input-focus');\n });\n this.searchInput.addEventListener('blur', function () {\n _this.searchInput.parentElement.classList.remove('e-input-focus');\n });\n this.searchInput.addEventListener('keydown', this.searchKeypressHandler.bind(this));\n this.searchBtn.addEventListener('click', this.searchClickHandler.bind(this));\n this.nextSearchBtn.addEventListener('click', this.nextButtonOnClick.bind(this));\n this.prevSearchBtn.addEventListener('click', this.prevButtonOnClick.bind(this));\n };\n TextSearch.prototype.setLoaderProperties = function (element) {\n var spinnerElement = element.firstChild.firstChild.firstChild;\n if (spinnerElement) {\n spinnerElement.style.height = '18px';\n spinnerElement.style.width = '18px';\n spinnerElement.style.transformOrigin = '9px 9px 9px';\n }\n };\n TextSearch.prototype.showLoadingIndicator = function (isShow) {\n var waitingPopup = document.getElementById(this.pdfViewer.element.id + '_textSearchLoadingIndicator');\n if (waitingPopup) {\n if (isShow) {\n showSpinner(waitingPopup);\n }\n else {\n hideSpinner(waitingPopup);\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.textSearchBoxOnResize = function () {\n if (this.pdfViewer.toolbarModule && this.pdfViewer.enableToolbar) {\n var secondaryToolbar = this.pdfViewerBase.getElement('_toolbarContainer_popup');\n if (secondaryToolbar) {\n if (secondaryToolbar.contains(this.pdfViewerBase.getElement('_search').parentElement)) {\n this.searchBox.style.right = '0px';\n }\n }\n }\n else {\n // eslint-disable-next-line max-len\n if (this.pdfViewerBase.viewerContainer.clientWidth + this.pdfViewerBase.viewerContainer.offsetLeft < this.searchBox.offsetLeft + this.searchBox.clientWidth) {\n this.searchBox.style.right = '0px';\n // eslint-disable-next-line\n this.searchBox.style.width = parseInt(this.searchBox.style.width) - ((this.searchBox.offsetLeft + this.searchBox.clientWidth) - (this.pdfViewerBase.viewerContainer.clientWidth)) + 'px';\n // eslint-disable-next-line\n this.searchInput.style.width = parseInt(this.searchInput.style.width) - ((this.searchBox.offsetLeft + this.searchBox.clientWidth) - (this.pdfViewerBase.viewerContainer.clientWidth)) + 'px';\n }\n else {\n this.searchBox.style.right = '88.3px';\n this.searchBox.style.width = '';\n this.searchInput.style.width = '';\n }\n }\n };\n /**\n * @param isShow\n * @private\n */\n TextSearch.prototype.showSearchBox = function (isShow) {\n if (isShow) {\n this.searchBox.style.display = 'block';\n }\n else {\n this.searchBox.style.display = 'none';\n this.searchInput.value = '';\n }\n this.onTextSearchClose();\n };\n /**\n * @private\n */\n TextSearch.prototype.searchAfterSelection = function () {\n if (this.isTextSearch) {\n this.initSearch(this.searchPageIndex, true);\n this.highlightOthers();\n }\n };\n TextSearch.prototype.initiateTextSearch = function (searchElement) {\n var inputString = searchElement.value;\n if (inputString && inputString.length > 0 && inputString[inputString.length - 1] === ' ') {\n inputString = inputString.slice(0, inputString.length - 1);\n }\n this.initiateSearch(inputString);\n };\n /**\n * @param inputString\n * @private\n */\n TextSearch.prototype.initiateSearch = function (inputString) {\n if (inputString !== this.searchString) {\n this.isTextSearch = false;\n this.searchPageIndex = this.pdfViewerBase.currentPageNumber - 1;\n }\n this.clearAllOccurrences();\n if (inputString !== '') {\n // eslint-disable-next-line\n if (this.searchMatches[this.searchPageIndex] && inputString === this.searchString) {\n if (this.searchMatches[this.searchPageIndex].length === 0) {\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n this.nextSearch();\n }\n }\n else {\n this.resetVariables();\n this.searchIndex = 0;\n this.textSearch(inputString);\n }\n }\n };\n TextSearch.prototype.textSearch = function (inputString) {\n if (inputString !== '' || inputString) {\n this.searchString = inputString;\n this.isTextSearch = true;\n this.isSearchText = true;\n this.searchPageIndex = this.pdfViewerBase.currentPageNumber - 1;\n this.searchCount = 0;\n this.isTextSearchEventTriggered = false;\n this.showLoadingIndicator(true);\n this.pdfViewer.fireTextSearchStart(inputString, this.isMatchCase);\n if (this.pdfViewer.isExtractText) {\n if (this.isTextRetrieved) {\n for (var i = 0; i < this.pdfViewerBase.pageCount; i++) {\n this.initSearch(i, false, true);\n }\n }\n else {\n this.isTextSearched = true;\n for (var i = 0; i < this.documentTextCollection.length; i++) {\n this.initSearch(i, false, true);\n }\n }\n }\n this.initSearch(this.searchPageIndex, false);\n this.highlightOthers();\n }\n };\n TextSearch.prototype.nextSearch = function () {\n this.isPrevSearch = false;\n this.isTextSearch = true;\n this.isSearchText = false;\n if (this.searchString) {\n this.clearAllOccurrences();\n this.searchIndex = this.searchIndex + 1;\n if (this.searchMatches[this.searchPageIndex]) {\n // eslint-disable-next-line max-len\n if (this.searchIndex >= this.searchMatches[this.searchPageIndex].length) {\n this.searchIndex = 0;\n this.searchPageIndex = ((this.searchPageIndex + 1) < this.pdfViewerBase.pageCount) ? (this.searchPageIndex + 1) : 0;\n if (this.pdfViewerBase.pageCount > 1) {\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n this.initSearch(this.searchPageIndex, true);\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.pdfViewerBase.updateScrollTop(this.searchPageIndex);\n }\n this.showLoadingIndicator(true);\n }\n else {\n this.highlightSearchedTexts(this.searchPageIndex, false, undefined);\n this.showLoadingIndicator(false);\n }\n this.highlightOthers(true);\n }\n else {\n this.initiateTextSearch(this.searchInput);\n }\n }\n else {\n this.initiateTextSearch(this.searchInput);\n }\n };\n TextSearch.prototype.prevSearch = function () {\n this.isPrevSearch = true;\n this.isTextSearch = true;\n this.isSearchText = false;\n if (this.searchString) {\n this.clearAllOccurrences();\n this.searchIndex = this.searchIndex - 1;\n if (this.searchIndex < 0) {\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n this.initSearch(this.searchPageIndex, false);\n this.showLoadingIndicator(true);\n }\n else {\n this.highlightSearchedTexts(this.searchPageIndex, false, undefined);\n this.showLoadingIndicator(false);\n }\n this.highlightOthers(true);\n }\n else {\n this.searchIndex = this.searchIndex - 1;\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n var inputString = this.searchInput.value;\n this.textSearch(inputString);\n }\n };\n TextSearch.prototype.initSearch = function (pageIndex, isSinglePageSearch, isCount) {\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.getStoredData(pageIndex, true);\n var pageText = null;\n var textContents = null;\n // eslint-disable-next-line\n var characterBounds = null;\n if (isCount) {\n if (this.documentTextCollection.length !== 0) {\n // eslint-disable-next-line\n var documentIndex = this.documentTextCollection[pageIndex][pageIndex];\n var pageTextData = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n if (this.documentTextCollection[pageIndex] && documentIndex) {\n // eslint-disable-next-line max-len\n this.getSearchTextContent(pageIndex, this.searchString, pageTextData, textContents, isSinglePageSearch, this.documentTextCollection[pageIndex]);\n }\n }\n }\n else {\n if (storedData) {\n // eslint-disable-next-line\n pageText = storedData['pageText'];\n // eslint-disable-next-line\n textContents = storedData['textContent'];\n characterBounds = this.pdfViewerBase.textLayer.characterBound[pageIndex];\n this.textContents[pageIndex] = textContents;\n this.getPossibleMatches(pageIndex, this.searchString, pageText, textContents, isSinglePageSearch, characterBounds);\n }\n else {\n if (!isSinglePageSearch) {\n this.createRequestForSearch(pageIndex);\n }\n }\n }\n if (this.pdfViewerBase.pageCount === (this.searchedPages && this.searchedPages.length)) {\n if (!this.isTextSearchEventTriggered) {\n this.isTextSearchEventTriggered = true;\n this.pdfViewer.fireTextSearchComplete(this.searchString, this.isMatchCase);\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.getPossibleMatches = function (pageIndex, searchString, pageString, textContents, isSinglePageSearch, characterBounds) {\n var arrayReturns;\n if (this.searchMatches && !this.searchMatches[pageIndex]) {\n var pageText = pageString;\n var searchText = searchString;\n var multiSearch = (pageText.replace((/(\\s\\r\\n)/gm), ' ')).replace((/(\\r\\n)/gm), \" \");\n var Multiline = (pageString.replace((/(\\s\\r\\n)/gm), ' ')).replace((/(\\r\\n)/gm), \" \");\n var specialCharcterSearch = multiSearch.replace(/[^a-zA-z0-9\" \"]/g, \"\");\n var queryLength = searchString.length;\n if (!this.isMatchCase) {\n searchText = searchString.toLowerCase();\n pageText = pageString.toLowerCase();\n multiSearch = multiSearch.toLowerCase();\n Multiline = Multiline.toLowerCase();\n specialCharcterSearch = specialCharcterSearch.toLowerCase();\n }\n var matches = [];\n var matchedArray = [];\n var matchIndex = -queryLength;\n var newIndex = -queryLength;\n var multiSearchIndex = -queryLength;\n var MultilineIndex = -queryLength;\n var specialcharcterIndex = -queryLength;\n while (matchIndex !== 0 || matchIndex === 0) {\n if (searchText === '' || searchText === ' ' || !searchText) {\n break;\n }\n matchIndex = pageText.indexOf(searchText, matchIndex + queryLength);\n if (searchText.indexOf(' ') !== -1) {\n var newString = searchString.replace(' ', '\\r\\n');\n newIndex = pageText.indexOf(newString, newIndex + queryLength);\n newIndex = -1;\n if (!(newIndex <= -1)) {\n if (newIndex < matchIndex) {\n matches.push(newIndex);\n }\n }\n }\n if (matchIndex <= -1 && newIndex <= -1) {\n break;\n }\n if (!(matchIndex <= -1)) {\n matches.push(matchIndex);\n }\n if (newIndex > matchIndex && !(newIndex <= -1)) {\n matches.push(newIndex);\n }\n }\n if (matches.length == 0) {\n multiSearchIndex = multiSearch.indexOf(searchText, multiSearchIndex + queryLength);\n MultilineIndex = Multiline.indexOf(searchText, MultilineIndex + queryLength);\n specialcharcterIndex = specialCharcterSearch.indexOf(searchText, specialcharcterIndex + queryLength);\n if (multiSearchIndex !== -1) {\n arrayReturns = this.correctLinetext(searchString, matchIndex, pageText);\n matchIndex = -arrayReturns[0].length;\n for (var i = 0; i < arrayReturns.length; i++) {\n matchIndex = pageText.indexOf(arrayReturns[i].trim(), matchIndex + (arrayReturns[i - 1] === undefined || null ? arrayReturns[0].length : arrayReturns[i - 1].length));\n matchedArray.push(matchIndex);\n if (matchedArray.length > 1) {\n if ((matchedArray[1] - (matchedArray[0] + arrayReturns[0].length)) <= 3) {\n matches.push(matchedArray);\n this.searchMatches[pageIndex] = matches;\n }\n else {\n i = -1;\n matchIndex = matchedArray[0] + arrayReturns[0].length;\n matchedArray.splice(0, matchedArray.length);\n }\n }\n }\n }\n else if (specialcharcterIndex !== -1) {\n arrayReturns = this.correctLinetext(searchString, matchIndex, pageText);\n matchIndex = -arrayReturns[0].length;\n for (var i = 0; i < arrayReturns.length; i++) {\n matchIndex = pageText.indexOf(arrayReturns[i].trim(), matchIndex + (arrayReturns[i - 1] === undefined || null ? arrayReturns[0].length : arrayReturns[i - 1].length));\n matchedArray.push(matchIndex);\n if (matchedArray.length > 1) {\n if ((matchedArray[1] - (matchedArray[0] + arrayReturns[0].length)) <= 3) {\n matches.push(matchedArray);\n this.searchMatches[pageIndex] = matches;\n }\n else {\n i = -1;\n matchIndex = matchedArray[0] + arrayReturns[0].length;\n matchedArray.splice(0, matchedArray.length);\n }\n }\n }\n }\n else if (MultilineIndex !== -1) {\n arrayReturns = this.correctLinetext(searchString, matchIndex, pageText);\n matchIndex = -arrayReturns[0].length;\n for (var i = 0; i < arrayReturns.length; i++) {\n matchIndex = pageText.indexOf(arrayReturns[i].trim(), matchIndex + (arrayReturns[i - 1] === undefined || null ? arrayReturns[0].length : arrayReturns[i - 1].length));\n matchedArray.push(matchIndex);\n if (matchedArray.length > 1) {\n if ((matchedArray[1] - (matchedArray[0] + arrayReturns[0].length)) <= 3) {\n matches.push(matchedArray);\n this.searchMatches[pageIndex] = matches;\n }\n else {\n i = -1;\n matchIndex = matchedArray[0] + arrayReturns[0].length;\n matchedArray.splice(0, matchedArray.length);\n }\n }\n }\n }\n if (matches.length > 1) {\n matches.splice(1, matches.length);\n }\n }\n if (this.searchMatches && matches.length > 0) {\n this.searchMatches[pageIndex] = matches;\n }\n }\n if (!isSinglePageSearch) {\n if (this.searchedPages.indexOf(pageIndex) === -1) {\n this.searchedPages.push(pageIndex);\n this.startIndex = this.searchedPages[0];\n }\n this.updateSearchInputIcon(false);\n }\n if (this.searchMatches && this.searchMatches[pageIndex] && this.searchMatches[pageIndex].length !== 0) {\n if (!isSinglePageSearch) {\n if (this.isPrevSearch) {\n this.searchIndex = this.searchMatches[pageIndex].length - 1;\n }\n if ((this.pdfViewerBase.currentPageNumber - 1) !== this.searchPageIndex) {\n // eslint-disable-next-line max-len\n if (this.searchMatches.length > 0 && (this.searchIndex === 0 || this.searchIndex === -1) && (this.searchPageIndex) === this.currentSearchIndex) {\n if (!this.isMessagePopupOpened && !this.isSearchText) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = this.getSearchPage(this.pdfViewerBase.currentPageNumber - 1);\n this.searchedPages = [this.searchPageIndex];\n }\n // eslint-disable-next-line max-len\n else if (this.isPrevSearch && this.searchMatches && this.searchMatches.length > 0 && (this.searchMatches[this.searchPageIndex] && this.searchMatches[this.searchPageIndex].length > 0) && this.searchedPages.length === this.pdfViewerBase.pageCount && this.startIndex - 1 === this.searchPageIndex) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchedPages = [this.startIndex];\n }\n this.pdfViewerBase.updateScrollTop(this.searchPageIndex);\n }\n else if (this.searchMatches && (this.searchMatches[this.searchPageIndex] && this.searchMatches[this.searchPageIndex].length > 0) && this.searchedPages.length === this.pdfViewerBase.pageCount && this.startIndex === this.searchPageIndex && this.pdfViewerBase.pageCount > 1) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchedPages = [this.startIndex];\n }\n }\n this.highlightSearchedTexts(pageIndex, isSinglePageSearch, arrayReturns);\n }\n else {\n if (!isSinglePageSearch) {\n if (this.isPrevSearch) {\n this.searchPageIndex = ((this.searchPageIndex - 1) < 0) ? (this.pdfViewerBase.pageCount - 1) : this.searchPageIndex - 1;\n }\n else {\n this.searchPageIndex = ((this.searchPageIndex + 1) < this.pdfViewerBase.pageCount) ? (this.searchPageIndex + 1) : 0;\n }\n if (this.searchedPages.indexOf(this.searchPageIndex) === -1 && this.searchedPages.length !== this.pdfViewerBase.pageCount) {\n this.showLoadingIndicator(true);\n this.initSearch(this.searchPageIndex, false);\n }\n else {\n var searchPageIndex = this.getSearchPage(pageIndex);\n // eslint-disable-next-line max-len\n if (this.searchMatches && isNullOrUndefined(this.searchMatches[this.searchPageIndex]) && this.searchedPages.length === this.pdfViewerBase.pageCount) {\n // eslint-disable-next-line max-len\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.pdfViewerBase.updateScrollTop(this.startIndex);\n // eslint-disable-next-line max-len\n }\n else if (this.searchMatches && this.searchMatches.length > 0 && (this.searchIndex === 0 || this.searchIndex === -1) && (searchPageIndex) === this.currentSearchIndex) {\n if (this.isPrevSearch) {\n // eslint-disable-next-line max-len\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = searchPageIndex;\n this.searchedPages = [searchPageIndex];\n this.searchIndex = -1;\n }\n else {\n if (!this.isMessagePopupOpened && this.pdfViewerBase.currentPageNumber !== 1 && !this.isSearchText) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = searchPageIndex;\n this.searchedPages = [searchPageIndex];\n this.searchIndex = 0;\n }\n this.highlightSearchedTexts(this.searchPageIndex, isSinglePageSearch, undefined);\n }\n else if (this.searchMatches && (this.searchMatches[this.searchPageIndex] && this.searchMatches[this.searchPageIndex].length > 0) && this.searchedPages.length === this.pdfViewerBase.pageCount) {\n if (!this.isMessagePopupOpened) {\n this.onMessageBoxOpen();\n }\n this.searchPageIndex = this.startIndex;\n this.searchedPages = [this.searchPageIndex];\n this.searchIndex = 0;\n this.pdfViewerBase.updateScrollTop(this.startIndex);\n this.highlightSearchedTexts(this.searchPageIndex, isSinglePageSearch, undefined);\n }\n }\n }\n }\n };\n TextSearch.prototype.correctLinetext = function (searchString, matchIndex, pageText) {\n var indiuvalLineArray = [];\n var searchArray = searchString.split(/[\" \"]+/);\n if (!this.isMatchCase) {\n searchArray = searchString.toLowerCase().split(/[\" \"]+/);\n }\n matchIndex = 0;\n var linestring = \"\";\n var mergedText = pageText.replace(/ \\r\\n/g, \" \");\n mergedText = mergedText.replace(/\\r\\n/g, \" \");\n mergedText = mergedText.replace(/[^a-zA-Z0-9 ]/g, '');\n searchString = searchString.replace(/[^a-zA-Z0-9 ]/g, '');\n var result = mergedText.match(searchString);\n if (!this.isMatchCase) {\n result = mergedText.match(searchString.toLowerCase());\n }\n if (isNullOrUndefined(result)) {\n return indiuvalLineArray;\n }\n else {\n result = pageText.slice(result.index, pageText.length);\n }\n var pageCheck = result;\n for (var i = 0; i < searchArray.length; i++) {\n var searchArrayText = linestring + searchArray[i];\n matchIndex = pageText.indexOf(searchArrayText, matchIndex);\n pageCheck = pageCheck ? pageCheck.replace(searchArray[i - 1], \"\") : pageText.replace(searchArray[i - 1], \"\");\n if ((pageCheck[pageCheck.indexOf(searchArray[i]) - 1] === \"\\n\" && (pageCheck[pageCheck.indexOf(searchArray[i + 1]) - 1]) === \"\\n\") || (pageCheck[pageCheck.indexOf(searchArray[i]) - 1] === \"\\n\" && isNullOrUndefined((pageCheck[pageCheck.indexOf(searchArray[i + 1]) - 1])))) {\n matchIndex = -1;\n if (linestring === \"\") {\n linestring = searchArray[i];\n i = i + 1;\n }\n }\n if (matchIndex !== -1) {\n linestring += searchArray[i] + \" \";\n if (i == (searchArray.length - 1)) {\n indiuvalLineArray.push(linestring);\n }\n }\n else {\n indiuvalLineArray.push(linestring);\n linestring = searchArray[i] + \" \";\n if (pageCheck[pageCheck.indexOf(searchArray[i]) - 1] == \"\\n\" && pageCheck[pageCheck.indexOf(searchArray[i + 1]) - 1] == \"\\n\") {\n indiuvalLineArray.push(linestring);\n linestring = searchArray[i + 1] + \" \";\n pageCheck = pageCheck ? pageCheck.replace(searchArray[i - 1], \"\") : pageText.replace(searchArray[i - 1], \"\");\n i = i + 1;\n }\n if (i == (searchArray.length - 1)) {\n indiuvalLineArray.push(linestring);\n }\n }\n }\n return indiuvalLineArray;\n };\n // eslint-disable-next-line\n TextSearch.prototype.getSearchTextContent = function (pageIndex, searchString, pageString, textContents, isSinglePageSearch, characterBounds) {\n var pageText = pageString;\n var searchText = searchString;\n var queryLength = searchString.length;\n if (!this.isMatchCase) {\n searchText = searchString.toLowerCase();\n pageText = pageString.toLowerCase();\n }\n var matches = [];\n var matchIndex = -queryLength;\n var newIndex = -queryLength;\n while (matchIndex !== 0) {\n if (searchText === '' || searchText === ' ' || !searchText) {\n break;\n }\n matchIndex = pageText.indexOf(searchText, matchIndex + queryLength);\n if (searchText.indexOf(' ') !== -1) {\n var newString = searchString.replace(' ', '\\r\\n');\n newIndex = pageText.indexOf(newString, newIndex + queryLength);\n if (!(newIndex <= -1)) {\n if (newIndex < matchIndex) {\n matches.push(newIndex);\n }\n }\n }\n if (matchIndex <= -1 && newIndex <= -1) {\n break;\n }\n if (!(matchIndex <= -1)) {\n matches.push(matchIndex);\n }\n if (newIndex > matchIndex && !(newIndex <= -1)) {\n matches.push(newIndex);\n }\n }\n if (matches.length !== 0) {\n this.searchCount = this.searchCount + matches.length;\n }\n this.searchMatches[pageIndex] = matches;\n };\n TextSearch.prototype.getSearchPage = function (pageIndex) {\n var pageNumber = null;\n if (this.isPrevSearch) {\n for (var i = pageIndex; i >= 0; i--) {\n if (i !== pageIndex && this.searchMatches[i]) {\n pageNumber = i;\n break;\n }\n }\n if (!pageNumber) {\n for (var j = this.pdfViewerBase.pageCount - 1; j > pageIndex; j--) {\n if (this.searchMatches[j]) {\n pageNumber = j;\n break;\n }\n }\n }\n }\n else {\n for (var i = pageIndex; i < this.pdfViewerBase.pageCount; i++) {\n if (i !== pageIndex && this.searchMatches[i]) {\n pageNumber = i;\n break;\n }\n }\n if (!pageNumber) {\n if (pageIndex === 0) {\n pageNumber = pageIndex;\n }\n else {\n for (var j = 0; j < pageIndex; j++) {\n if (this.searchMatches[j]) {\n pageNumber = j;\n break;\n }\n }\n }\n }\n }\n return pageNumber;\n };\n TextSearch.prototype.highlightSearchedTexts = function (pageIndex, isSinglePageSearch, ArrayReturns) {\n // eslint-disable-next-line\n var matches = this.searchMatches[pageIndex];\n var scrollPoint = { y: -100, x: -100 };\n var className;\n var searchingText = this.searchString;\n // eslint-disable-next-line\n var characterBounds = this.pdfViewerBase.textLayer.characterBound[pageIndex];\n if (isSinglePageSearch && (this.pdfViewerBase.currentPageNumber - 1) !== this.searchPageIndex) {\n if (this.searchMatches.length > 0) {\n if (pageIndex === this.getSearchPage(this.pdfViewerBase.currentPageNumber - 1)) {\n \n }\n }\n }\n if (characterBounds) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].length !== undefined && ArrayReturns !== undefined) {\n if (i === this.searchIndex && pageIndex === this.searchPageIndex) {\n for (var j = 0; j < ArrayReturns.length; j++) {\n className = 'e-pv-search-text-highlight';\n this.searchString = ArrayReturns[j].trim();\n this.addDivForSearch(i, pageIndex, characterBounds, this.searchString.length, className, j);\n }\n }\n else {\n for (var j = 0; j < ArrayReturns.length; j++) {\n className = 'e-pv-search-text-highlightother';\n this.searchString = ArrayReturns[j].trim();\n this.addDivForSearch(i, pageIndex, characterBounds, this.searchString.length, className, j);\n }\n }\n }\n else if (i === this.searchIndex && pageIndex === this.searchPageIndex) {\n className = 'e-pv-search-text-highlight';\n }\n else {\n className = 'e-pv-search-text-highlightother';\n }\n if (matches[i].length == undefined) {\n this.addDivForSearch(i, pageIndex, characterBounds, this.searchString.length, className, undefined);\n }\n }\n this.searchString = searchingText;\n if (pageIndex === this.searchPageIndex && !isSinglePageSearch) {\n var element = this.pdfViewerBase.getElement('_searchtext_' + pageIndex + '_' + this.searchIndex);\n if (element) {\n var targetScrollElement = this.getScrollElement(element);\n this.scrollToSearchStr(targetScrollElement, scrollPoint);\n }\n else {\n this.pdfViewerBase.updateScrollTop(pageIndex);\n var element_1 = this.pdfViewerBase.getElement('_searchtext_' + pageIndex + '_' + this.searchIndex);\n if (element_1) {\n var targetScrollElement = this.getScrollElement(element_1);\n this.scrollToSearchStr(targetScrollElement, scrollPoint);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.addDivForSearch = function (index, pageIndex, characterBounds, queryLength, className, nestedIndex) {\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n if (isNullOrUndefined(textLayer) && className === 'e-pv-search-text-highlight') {\n if (this.pdfViewer.navigation) {\n this.pdfViewer.navigation.goToPage(pageIndex + 1);\n }\n }\n var count;\n if (this.searchMatches[pageIndex][index].length !== undefined) {\n count = this.searchMatches[pageIndex][index][nestedIndex];\n }\n else {\n count = this.searchMatches[pageIndex][index];\n }\n var initial = count;\n var divCount = 0;\n while (count < initial + queryLength) {\n count = this.addDivElement(count, characterBounds, queryLength, className, index, pageIndex, initial, divCount, nestedIndex);\n divCount++;\n }\n if (className === 'e-pv-search-text-highlight') {\n this.showLoadingIndicator(false);\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.addDivElement = function (count, characterBounds, queryLength, className, index, pageIndex, initial, divCount, nestedIndex) {\n var height = 0;\n var width = 0;\n var top = 0;\n var left = 0;\n var isRTL = false;\n if (characterBounds[count]) {\n left = characterBounds[count].X;\n top = characterBounds[count].Y;\n }\n var v = 0;\n if ((count - initial) !== 0) {\n v = count - initial;\n queryLength += 1;\n }\n for (v = v; v < queryLength; v++) {\n if (characterBounds[count]) {\n // eslint-disable-next-line\n var charBound = characterBounds[count];\n if (left > charBound.X + charBound.Width) {\n isRTL = true;\n }\n top = (top < charBound.Y) ? top : charBound.Y;\n var topDifference = (top < charBound.Y) ? (charBound.Y - top) : (top - charBound.Y);\n height = (height > (topDifference + charBound.Height)) ? height : (topDifference + charBound.Height);\n count++;\n }\n }\n var isContinuation = false;\n if (!isRTL) {\n if (initial + queryLength !== count) {\n isContinuation = true;\n if (characterBounds[count - 1]) {\n width = (characterBounds[count - 1].X - left);\n }\n }\n else {\n isContinuation = false;\n // eslint-disable-next-line\n var storedData = this.pdfViewerBase.getStoredData(pageIndex, true);\n var pageText = null;\n if (storedData) {\n pageText = storedData['pageText'];\n }\n else if (this.pdfViewer.isExtractText && this.documentTextCollection.length !== 0) {\n // eslint-disable-next-line\n var documentIndex = this.documentTextCollection[pageIndex][pageIndex];\n pageText = documentIndex.pageText ? documentIndex.pageText : documentIndex.PageText;\n }\n if (characterBounds[count]) {\n if (pageText && (pageText[count] === '' || pageText[count] === ' ' || pageText[count] === '\\r' || pageText[count] === '\\n') && (characterBounds[count].Width) === 0) {\n width = (characterBounds[count - 1].X - left) + characterBounds[count - 1].Width;\n }\n else {\n width = (characterBounds[count].X - left);\n }\n }\n else {\n if (characterBounds[count - 1]) {\n width = (characterBounds[count - 1].X - left);\n }\n }\n }\n }\n else {\n var charBound = characterBounds[(initial + queryLength) - 1];\n left = charBound.X;\n width = characterBounds[initial].X - characterBounds[(initial + queryLength) - 1].X;\n top = (top < charBound.Y) ? top : charBound.Y;\n var topDifference = (top < charBound.Y) ? (charBound.Y - top) : (top - charBound.Y);\n height = (height > (topDifference + charBound.Height)) ? height : (topDifference + charBound.Height);\n //some RTL character calculated width is zero and width difference value calculated from Y possition difference in the same line.\n var widthDifference = characterBounds[initial - 1].Y - characterBounds[initial].Y;\n for (var j = (initial + queryLength) - 1; j >= initial; j--) {\n charBound = characterBounds[j];\n if (charBound.Width === 0) {\n widthDifference = charBound.Y - characterBounds[j - 1].Y;\n }\n }\n width = width + widthDifference;\n }\n this.createSearchTextDiv(index, pageIndex, height, width, top, left, className, isContinuation, divCount, nestedIndex);\n return count;\n };\n // eslint-disable-next-line\n TextSearch.prototype.createSearchTextDiv = function (index, pageIndex, height, width, top, left, className, isContinuation, divCount, nestedIndex) {\n var idString = '_searchtext_' + pageIndex + '_' + index;\n if (isContinuation) {\n idString += '_' + divCount;\n }\n if (nestedIndex !== undefined && this.pdfViewerBase.getElement(idString)) {\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + idString + \"_\" + nestedIndex });\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n this.calculateBounds(textDiv, height, width, top, left, pageDetails);\n textDiv.classList.add(className);\n if (className === 'e-pv-search-text-highlight') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchHighlightColor === '') ? '#fdd835' : this.pdfViewer.textSearchColorSettings.searchHighlightColor;\n var bounds = { left: left, top: top, width: width, height: height };\n this.pdfViewer.fireTextSearchHighlight(this.searchString, this.isMatchCase, bounds, (pageIndex + 1));\n }\n else if (className === 'e-pv-search-text-highlightother') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchColor === '') ? '#8b4c12' : this.pdfViewer.textSearchColorSettings.searchColor;\n }\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n textDiv.style.zIndex = this.searchTextDivzIndex;\n if (textLayer) {\n textLayer.appendChild(textDiv);\n }\n }\n if (!this.pdfViewerBase.getElement(idString)) {\n var textDiv = createElement('div', { id: this.pdfViewer.element.id + idString });\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n this.calculateBounds(textDiv, height, width, top, left, pageDetails);\n textDiv.classList.add(className);\n if (className === 'e-pv-search-text-highlight') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchHighlightColor === '') ? '#fdd835' : this.pdfViewer.textSearchColorSettings.searchHighlightColor;\n var bounds = { left: left, top: top, width: width, height: height };\n this.pdfViewer.fireTextSearchHighlight(this.searchString, this.isMatchCase, bounds, (pageIndex + 1));\n }\n else if (className === 'e-pv-search-text-highlightother') {\n // eslint-disable-next-line max-len\n textDiv.style.backgroundColor = (this.pdfViewer.textSearchColorSettings.searchColor === '') ? '#8b4c12' : this.pdfViewer.textSearchColorSettings.searchColor;\n }\n var textLayer = this.pdfViewerBase.getElement('_textLayer_' + pageIndex);\n textDiv.style.zIndex = this.searchTextDivzIndex;\n if (textLayer) {\n textLayer.appendChild(textDiv);\n }\n }\n };\n // eslint-disable-next-line\n TextSearch.prototype.calculateBounds = function (textDiv, height, width, top, left, pageDetails) {\n if (pageDetails.rotation === 0 || pageDetails.rotation === 2) {\n textDiv.style.height = Math.ceil(height) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = width * this.pdfViewerBase.getZoomFactor() + 'px';\n if (pageDetails.rotation === 2) {\n textDiv.style.top = (pageDetails.height - top - height) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = Math.ceil(pageDetails.width - left - width) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else {\n textDiv.style.top = top * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = left * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n }\n else if (pageDetails.rotation === 1) {\n textDiv.style.height = width * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = height * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = left * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = (pageDetails.height - top - height) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n else if (pageDetails.rotation === 3) {\n textDiv.style.height = width * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.width = height * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.left = ((pageDetails.width - pageDetails.height) + top) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.style.top = (pageDetails.height - left - width) * this.pdfViewerBase.getZoomFactor() + 'px';\n }\n };\n TextSearch.prototype.isClassAvailable = function () {\n var isClass = false;\n for (var j = 0; j < this.tempElementStorage.length; j++) {\n if (this.tempElementStorage[j].classString) {\n // eslint-disable-next-line max-len\n if (this.tempElementStorage[j].classString === 'e-pv-search-text-highlight' || this.tempElementStorage[j].classString === 'e-pv-search-text-highlightother') {\n isClass = true;\n break;\n }\n }\n }\n return isClass;\n };\n TextSearch.prototype.getScrollElement = function (element) {\n var targetElement = element;\n if (element.childNodes.length > 0) {\n for (var i = 0; i < element.childNodes.length; i++) {\n if (element.childNodes[i].classList) {\n if (element.childNodes[i].classList.contains('e-pv-search-text-highlight')) {\n targetElement = element.childNodes[i];\n }\n }\n }\n }\n return targetElement;\n };\n // eslint-disable-next-line\n TextSearch.prototype.scrollToSearchStr = function (element, scrollPoint) {\n var parent = element.offsetParent;\n var offsetY = element.offsetTop + element.clientTop;\n var offsetX = element.offsetLeft + element.clientLeft;\n while (parent.id !== this.pdfViewerBase.viewerContainer.id) {\n offsetY += parent.offsetTop;\n offsetX += parent.offsetLeft;\n parent = parent.offsetParent;\n }\n if (scrollPoint) {\n offsetY += scrollPoint.y;\n offsetX += scrollPoint.x;\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n parent.scrollLeft = offsetX;\n }\n else {\n if (this.pdfViewerBase.getZoomFactor() > 1.5) {\n parent.scrollLeft = offsetX;\n }\n }\n }\n parent.scrollTop = offsetY;\n this.pdfViewerBase.updateMobileScrollerPosition();\n };\n /**\n * @param pageIndex\n * @private\n */\n TextSearch.prototype.resizeSearchElements = function (pageIndex) {\n var searchDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_searchtext_' + pageIndex + '\"]');\n for (var i = 0; i < searchDivs.length; i++) {\n var textDiv = searchDivs[i];\n var previousZoomFactor = 1;\n if (this.pdfViewer.magnificationModule) {\n previousZoomFactor = this.pdfViewer.magnificationModule.previousZoomFactor;\n }\n // eslint-disable-next-line max-len\n var outputdata = pageIndex + '_' + previousZoomFactor + '_' + this.pdfViewerBase.getZoomFactor();\n if (textDiv.getAttribute('name') !== outputdata) {\n // eslint-disable-next-line\n textDiv.style.width = (parseFloat(textDiv.style.width) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.height = (parseFloat(textDiv.style.height) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.top = (parseFloat(textDiv.style.top) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n // eslint-disable-next-line\n textDiv.style.left = (parseFloat(textDiv.style.left) / previousZoomFactor) * this.pdfViewerBase.getZoomFactor() + 'px';\n textDiv.setAttribute('name', outputdata);\n }\n }\n };\n /**\n * @param pageNumber\n * @private\n */\n TextSearch.prototype.highlightOtherOccurrences = function (pageNumber) {\n this.initSearch(pageNumber, true);\n };\n TextSearch.prototype.highlightOthers = function (isSearched) {\n var indexes = this.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n this.highlightOtherOccurrences(i);\n }\n if (isSearched) {\n this.showLoadingIndicator(false);\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.clearAllOccurrences = function () {\n var searchTextDivs = document.querySelectorAll('div[id*=\"' + this.pdfViewer.element.id + '_searchtext_\"]');\n for (var i = 0; i < searchTextDivs.length; i++) {\n searchTextDivs[i].parentElement.removeChild(searchTextDivs[i]);\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n TextSearch.prototype.getIndexes = function () {\n var lowerPageValue = this.pdfViewerBase.currentPageNumber - 3;\n lowerPageValue = (lowerPageValue > 0) ? lowerPageValue : 0;\n var higherPageValue = this.pdfViewerBase.currentPageNumber + 1;\n higherPageValue = (higherPageValue < this.pdfViewerBase.pageCount) ? higherPageValue : (this.pdfViewerBase.pageCount - 1);\n return { lowerPageValue: lowerPageValue, higherPageValue: higherPageValue };\n };\n TextSearch.prototype.applyTextSelection = function () {\n if (this.pdfViewer.textSelectionModule && !this.pdfViewerBase.isTextSelectionDisabled) {\n var indexes = this.getIndexes();\n var lowerPageValue = parseFloat(indexes.lowerPageValue.toString());\n var higherPageValue = parseFloat(indexes.higherPageValue.toString());\n for (var i = lowerPageValue; i <= higherPageValue; i++) {\n this.pdfViewer.textSelectionModule.applySelectionRangeOnScroll(i);\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.resetTextSearch = function () {\n this.resetVariables();\n this.onTextSearchClose();\n this.searchPageIndex = null;\n this.searchIndex = 0;\n this.updateSearchInputIcon(true);\n this.enableNextButton(false);\n this.enablePrevButton(false);\n this.documentTextCollection = [];\n this.isTextRetrieved = false;\n this.isTextSearched = false;\n this.isSearchText = false;\n if (this.searchRequestHandler) {\n this.searchRequestHandler.clear();\n }\n };\n TextSearch.prototype.onTextSearchClose = function () {\n this.isPrevSearch = false;\n this.isTextSearch = false;\n if (this.pdfViewerBase.pageCount > 0) {\n this.clearAllOccurrences();\n }\n };\n TextSearch.prototype.createRequestForSearch = function (pageIndex) {\n var proxy = this;\n var viewPortWidth = 816;\n var viewPortHeight = this.pdfViewer.element.clientHeight;\n var pageWidth = this.pdfViewerBase.pageSize[pageIndex].width;\n var pageHeight = this.pdfViewerBase.pageSize[pageIndex].height;\n var tileCount = this.pdfViewerBase.getTileCount(pageWidth);\n var noTileX = viewPortWidth >= pageWidth ? 1 : tileCount;\n var noTileY = viewPortWidth >= pageWidth ? 1 : tileCount;\n var isTileRendering = false;\n var tileSettings = this.pdfViewer.tileRenderingSettings;\n if (tileSettings.enableTileRendering && tileSettings.x > 0 && tileSettings.y > 0) {\n noTileX = viewPortWidth >= pageWidth ? 1 : tileSettings.x;\n noTileY = viewPortWidth >= pageWidth ? 1 : tileSettings.y;\n }\n if (noTileX > 1 && noTileY > 1) {\n isTileRendering = true;\n }\n var _loop_1 = function (x) {\n var _loop_2 = function (y) {\n var jsonObject = void 0;\n // eslint-disable-next-line max-len\n jsonObject = { xCoordinate: x, yCoordinate: y, pageNumber: pageIndex, viewPortWidth: viewPortWidth, viewPortHeight: viewPortHeight, documentId: proxy.pdfViewerBase.getDocumentId(), hashId: proxy.pdfViewerBase.hashId, zoomFactor: proxy.pdfViewerBase.getZoomFactor(), tilecount: tileCount, action: 'Search', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId,\n tileXCount: noTileX, tileYCount: noTileY };\n if (this_1.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this_1.pdfViewerBase.jsonDocumentId;\n }\n this_1.searchRequestHandler = new AjaxHandler(this_1.pdfViewer);\n this_1.searchRequestHandler.url = this_1.pdfViewer.serviceUrl + '/' + this_1.pdfViewer.serverActionSettings.renderPages;\n this_1.searchRequestHandler.responseType = 'json';\n this_1.searchRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this_1.searchRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderPages);\n data = null;\n }\n }\n if (data) {\n if (!isNullOrUndefined(data.pageText) && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n if (viewPortWidth >= pageWidth) {\n proxy.pdfViewerBase.storeWinData(data, pageNumber);\n }\n else {\n proxy.pdfViewerBase.storeWinData(data, pageNumber, data.tileX, data.tileY);\n }\n if (!isTileRendering) {\n proxy.initSearch(pageIndex, false);\n }\n else {\n if (x === (noTileX - 1) && y === (noTileY - 1)) {\n proxy.initSearch(pageIndex, false);\n }\n }\n }\n else if (isTileRendering && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderPages, data);\n var pageNumber = (data.pageNumber !== undefined) ? data.pageNumber : pageIndex;\n proxy.pdfViewerBase.storeWinData(data, pageNumber, data.tileX, data.tileY);\n if (x === (noTileX - 1) && y === (noTileY - 1)) {\n proxy.initSearch(pageIndex, false);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n this_1.searchRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderPages);\n };\n // eslint-disable-next-line\n this_1.searchRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n // eslint-disable-next-line max-len\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderPages);\n };\n };\n for (var y = 0; y < noTileY; y++) {\n _loop_2(y);\n }\n };\n var this_1 = this;\n for (var x = 0; x < noTileX; x++) {\n _loop_1(x);\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.getPDFDocumentTexts = function () {\n var startIndex = 0;\n var endIndex = 50;\n var pageCount = this.pdfViewerBase.pageCount;\n if (endIndex >= pageCount) {\n endIndex = pageCount;\n }\n this.createRequestForGetPdfTexts(startIndex, endIndex);\n };\n /**\n * @param startIndex\n * @param endIndex\n * @private\n */\n TextSearch.prototype.createRequestForGetPdfTexts = function (startIndex, endIndex) {\n var proxy = this;\n var jsonObject;\n // eslint-disable-next-line max-len\n jsonObject = { pageStartIndex: startIndex, pageEndIndex: endIndex, documentId: proxy.pdfViewerBase.getDocumentId(), hashId: proxy.pdfViewerBase.hashId, action: 'RenderPdfTexts', elementId: proxy.pdfViewer.element.id, uniqueId: proxy.pdfViewerBase.documentId };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n this.searchRequestHandler = new AjaxHandler(this.pdfViewer);\n this.searchRequestHandler.url = this.pdfViewer.serviceUrl + '/' + this.pdfViewer.serverActionSettings.renderTexts;\n this.searchRequestHandler.responseType = 'json';\n this.searchRequestHandler.send(jsonObject);\n // eslint-disable-next-line\n this.searchRequestHandler.onSuccess = function (result) {\n // eslint-disable-next-line\n var data = result.data;\n if (data) {\n if (typeof data !== 'object') {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, data, this.pdfViewer.serverActionSettings.renderTexts);\n data = null;\n }\n }\n if (data) {\n if (data.documentTextCollection && data.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(this.pdfViewer.serverActionSettings.renderTexts, data);\n if (proxy.documentTextCollection.length > 0) {\n proxy.documentTextCollection = data.documentTextCollection.concat(proxy.documentTextCollection);\n proxy.documentTextCollection = proxy.orderPdfTextCollections(proxy.documentTextCollection);\n }\n else {\n proxy.documentTextCollection = data.documentTextCollection;\n }\n var pageCount = proxy.pdfViewerBase.pageCount;\n if (endIndex !== pageCount) {\n startIndex = endIndex;\n endIndex = endIndex + 50;\n if (endIndex >= pageCount) {\n endIndex = pageCount;\n }\n proxy.createRequestForGetPdfTexts(startIndex, endIndex);\n }\n else {\n proxy.isTextRetrieved = true;\n proxy.pdfViewer.fireTextExtractionCompleted(proxy.documentTextCollection);\n if (proxy.isTextSearched && proxy.searchString.length > 0) {\n proxy.textSearch(proxy.searchString);\n proxy.isTextSearched = false;\n }\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n this.searchRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderTexts);\n };\n // eslint-disable-next-line\n this.searchRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, this.pdfViewer.serverActionSettings.renderTexts);\n };\n };\n // eslint-disable-next-line\n TextSearch.prototype.orderPdfTextCollections = function (oldCollection) {\n // eslint-disable-next-line\n var annotationCollectionList = [];\n for (var i = 0; i < oldCollection.length; i++) {\n if (annotationCollectionList.length === 0) {\n annotationCollectionList.push(oldCollection[i]);\n }\n else {\n // eslint-disable-next-line\n if (parseInt(Object.keys(oldCollection[i])[0]) > parseInt(Object.keys(annotationCollectionList[annotationCollectionList.length - 1])[0])) {\n annotationCollectionList.push(oldCollection[i]);\n }\n else {\n for (var j = 0; j < annotationCollectionList.length; j++) {\n // eslint-disable-next-line\n if ((parseInt(Object.keys(oldCollection[i])[0]) < parseInt(Object.keys(annotationCollectionList[j])[0]))) {\n annotationCollectionList.splice(j, 0, oldCollection[i]);\n break;\n }\n }\n }\n }\n }\n return annotationCollectionList;\n };\n TextSearch.prototype.createSearchBoxButtons = function (id, className) {\n // eslint-disable-next-line max-len\n var button = createElement('button', { id: this.pdfViewer.element.id + '_' + id, className: 'e-btn e-icon-btn e-pv-search-btn ' + className });\n button.setAttribute('type', 'button');\n // eslint-disable-next-line max-len\n var iconSpan = createElement('span', { id: this.pdfViewer.element.id + '_' + id + 'Icon', className: 'e-pv-icon-search ' + className + '-icon' });\n button.disabled = true;\n button.appendChild(iconSpan);\n return button;\n };\n TextSearch.prototype.enablePrevButton = function (isEnable) {\n if ((!Browser.isDevice || this.pdfViewer.enableDesktopMode)) {\n if (isEnable) {\n this.prevSearchBtn.removeAttribute('disabled');\n }\n else {\n if (this.prevSearchBtn) {\n this.prevSearchBtn.disabled = true;\n }\n }\n }\n };\n TextSearch.prototype.enableNextButton = function (isEnable) {\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isEnable) {\n this.nextSearchBtn.removeAttribute('disabled');\n }\n else {\n if (this.nextSearchBtn) {\n this.nextSearchBtn.disabled = true;\n }\n }\n }\n };\n /**\n * @private\n */\n TextSearch.prototype.resetVariables = function () {\n this.searchedPages = [];\n // eslint-disable-next-line\n this.searchMatches = new Array();\n };\n /**\n * @param element\n * @param inputElement\n * @private\n */\n TextSearch.prototype.searchButtonClick = function (element, inputElement) {\n this.isMessagePopupOpened = false;\n if (isBlazor() && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n var searchElement = this.pdfViewerBase.getElement('_search_box-icon');\n element = searchElement.children[0].children[0];\n inputElement = this.pdfViewerBase.getElement('_search_input');\n }\n if (element.classList.contains('e-pv-search-icon')) {\n this.initiateTextSearch(inputElement);\n }\n else if (element.classList.contains('e-pv-search-close')) {\n this.showLoadingIndicator(false);\n inputElement.value = '';\n this.resetTextSearch();\n inputElement.focus();\n }\n };\n TextSearch.prototype.updateSearchInputIcon = function (isEnable) {\n if (isBlazor()) {\n if (this.searchBtn && (Browser.isDevice && !this.pdfViewer.enableDesktopMode)) {\n this.searchBtn = this.pdfViewerBase.getElement('_search_box-icon').children[0].children[0];\n }\n }\n if (this.searchBtn) {\n if (isEnable) {\n this.searchBtn.classList.remove('e-pv-search-close');\n this.searchBtn.classList.add('e-pv-search-icon');\n }\n else {\n this.searchBtn.classList.remove('e-pv-search-icon');\n this.searchBtn.classList.add('e-pv-search-close');\n }\n }\n };\n TextSearch.prototype.onMessageBoxOpen = function () {\n var _this = this;\n this.showLoadingIndicator(false);\n this.pdfViewerBase.getElement('_search_input').blur();\n this.isMessagePopupOpened = true;\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_Nomatches');\n promise.then(function (value) {\n _this.pdfViewerBase.textLayer.createNotificationPopup(value);\n });\n }\n else {\n this.pdfViewerBase.textLayer.createNotificationPopup(this.pdfViewer.localeObj.getConstant('No matches'));\n }\n }\n else {\n if (isBlazor()) {\n var promise = this.pdfViewer._dotnetInstance.invokeMethodAsync('GetLocaleText', 'PdfViewer_NoTextFound');\n promise.then(function (value) {\n _this.pdfViewerBase.navigationPane.createTooltipMobile(value);\n });\n }\n else {\n this.pdfViewerBase.navigationPane.createTooltipMobile(this.pdfViewer.localeObj.getConstant('No Text Found'));\n }\n }\n };\n /**\n * Searches the target text in the PDF document and highlights the occurrences in the pages\n *\n * @param {string} searchText - Specifies the searchText content\n * @param {boolean} isMatchCase - If set true , its highlights the MatchCase content\n * @returns void\n */\n TextSearch.prototype.searchText = function (searchText, isMatchCase) {\n if (searchText && searchText.length > 0 && searchText[searchText.length - 1] === ' ') {\n searchText = searchText.slice(0, searchText.length - 1);\n }\n this.searchString = searchText;\n this.isMatchCase = isMatchCase;\n this.searchIndex = 0;\n this.textSearch(searchText);\n };\n /**\n * Searches the next occurrence of the searched text from the current occurrence of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.searchNext = function () {\n this.nextSearch();\n };\n /**\n * Searches the previous occurrence of the searched text from the current occurrence of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.searchPrevious = function () {\n this.prevSearch();\n };\n /**\n * Cancels the text search of the PdfViewer.\n *\n * @returns void\n */\n TextSearch.prototype.cancelTextSearch = function () {\n this.resetTextSearch();\n };\n /**\n * @private\n */\n TextSearch.prototype.destroy = function () {\n this.searchMatches = undefined;\n };\n /**\n * @private\n */\n TextSearch.prototype.getModuleName = function () {\n return 'TextSearch';\n };\n return TextSearch;\n}());\n\n/**\n * export types\n */\n\n/**\n * Print module\n */\nvar Print = /** @__PURE__ @class */ (function () {\n /**\n * @param viewer\n * @param base\n * @private\n */\n function Print(viewer, base) {\n this.printHeight = 1056;\n this.printWidth = 816;\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * Print the PDF document being loaded in the ejPdfViewer control.\n *\n * @returns void\n */\n Print.prototype.print = function () {\n var _this = this;\n var pageIndex;\n if (this.pdfViewerBase.pageCount > 0) {\n // eslint-disable-next-line max-len\n this.printViewerContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_print_viewer_container',\n className: 'e-pv-print-viewer-container'\n });\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(true);\n this.iframe = document.createElement('iframe');\n this.iframe.className = 'iframeprint';\n this.iframe.id = 'iframePrint';\n this.iframe.style.position = 'fixed';\n this.iframe.style.top = '-100000000px';\n document.body.appendChild(this.iframe);\n this.frameDoc = this.iframe.contentWindow ? this.iframe.contentWindow : this.iframe.contentDocument;\n this.frameDoc.document.open();\n }\n else {\n this.printWindow = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth + ',tabbar=no');\n this.printWindow.moveTo(0, 0);\n this.printWindow.resizeTo(screen.availWidth, screen.availHeight);\n this.createPrintLoadingIndicator(this.printWindow.document.body);\n }\n setTimeout(function () {\n for (pageIndex = 0; pageIndex < _this.pdfViewerBase.pageCount; pageIndex++) {\n var pageWidth = _this.pdfViewerBase.pageSize[pageIndex].width;\n var pageHeight = _this.pdfViewerBase.pageSize[pageIndex].height;\n // Check if the document is A4 by comparing the A4 standard values with the buffer value\n var a4StdWidth = 793;\n var a4StdHeight = 1122;\n var bufferWidth = 10;\n var bufferHeight = 10;\n //Reduced the A4 standard width and height to prevent blank pages while printing\n var a4PrintWidth = 783;\n var a4PrintHeight = 1110;\n _this.printWidth = 816;\n _this.printHeight = 1056;\n // Check if the A4 document is protrait or landscape \n if (pageWidth > pageHeight) {\n a4StdWidth = 1122;\n a4StdHeight = 793;\n }\n if (!(pageWidth >= (a4StdWidth + bufferWidth) || pageWidth <= (a4StdWidth - bufferWidth)) && !(pageHeight >= (a4StdHeight + bufferHeight) || pageHeight <= (a4StdHeight - bufferHeight))) {\n _this.printWidth = a4PrintWidth;\n _this.printHeight = a4PrintHeight;\n }\n _this.pdfViewer.printModule.createRequestForPrint(pageIndex, pageWidth, pageHeight, _this.pdfViewerBase.pageCount);\n }\n _this.pdfViewer.firePrintEnd(_this.pdfViewer.downloadFileName);\n }, 100);\n }\n };\n Print.prototype.createRequestForPrint = function (pageIndex, pageWidth, pageHeight, pageCount) {\n var proxy = this;\n // tslint: disable-next-line:max-line-length\n // set default zoomFactor value.\n var jsonObject = {\n pageNumber: pageIndex.toString(), documentId: this.pdfViewerBase.documentId,\n hashId: this.pdfViewerBase.hashId, zoomFactor: \"2\",\n action: 'PrintImages',\n elementId: this.pdfViewer.element.id,\n uniqueId: this.pdfViewerBase.documentId,\n digitalSignaturePresent: this.pdfViewerBase.digitalSignaturePresent(pageIndex)\n };\n if (this.pdfViewerBase.jsonDocumentId) {\n // eslint-disable-next-line\n jsonObject.documentId = this.pdfViewerBase.jsonDocumentId;\n }\n proxy.pdfViewerBase.createFormfieldsJsonData();\n proxy.printRequestHandler = new AjaxHandler(proxy.pdfViewer);\n proxy.printRequestHandler.url = proxy.pdfViewer.serviceUrl + '/' + proxy.pdfViewer.serverActionSettings.print;\n proxy.printRequestHandler.responseType = null;\n proxy.printRequestHandler.mode = false;\n if (this.pdfViewerBase.validateForm && this.pdfViewer.enableFormFieldsValidation) {\n this.pdfViewer.fireValidatedFailed(proxy.pdfViewer.serverActionSettings.download);\n this.pdfViewerBase.validateForm = false;\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n }\n else {\n proxy.printRequestHandler.send(jsonObject);\n }\n // eslint-disable-next-line\n proxy.printRequestHandler.onSuccess = function (result) {\n proxy.pdfViewerBase.isPrint = true;\n // eslint-disable-next-line\n var printImage = result.data;\n if (printImage) {\n if (typeof printImage !== 'object') {\n try {\n printImage = JSON.parse(printImage);\n if (typeof printImage !== 'object') {\n proxy.pdfViewerBase.onControlError(500, printImage, proxy.pdfViewer.serverActionSettings.print);\n printImage = null;\n }\n }\n catch (error) {\n proxy.pdfViewerBase.onControlError(500, printImage, proxy.pdfViewer.serverActionSettings.print);\n printImage = null;\n }\n }\n }\n if (printImage && printImage.uniqueId === proxy.pdfViewerBase.documentId) {\n proxy.pdfViewer.fireAjaxRequestSuccess(proxy.pdfViewer.serverActionSettings.print, printImage);\n var annotationSource_1 = '';\n if (!proxy.pdfViewer.annotationSettings.skipPrint) {\n // eslint-disable-next-line\n var annotationCollections = proxy.pdfViewerBase.documentAnnotationCollections;\n if (annotationCollections && annotationCollections[printImage.pageNumber] && proxy.pdfViewerBase.isTextMarkupAnnotationModule()) {\n // eslint-disable-next-line\n var printCollection = annotationCollections[printImage.pageNumber];\n if (proxy.pdfViewerBase.isImportAction) {\n var textMarkupAnnotation = printCollection.textMarkupAnnotation;\n var shapeAnnotation = printCollection.shapeAnnotation;\n var measureShapeAnnotation = printCollection.measureShapeAnnotation;\n var stampAnnotation = printCollection.stampAnnotations;\n // eslint-disable-next-line\n var stickyNoteAnnotation = printCollection.stickyNotesAnnotation;\n // eslint-disable-next-line max-len\n annotationSource_1 = proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.printTextMarkupAnnotations(textMarkupAnnotation, printImage.pageNumber, stampAnnotation, shapeAnnotation, measureShapeAnnotation, stickyNoteAnnotation);\n }\n else {\n // eslint-disable-next-line max-len\n annotationSource_1 = proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.printTextMarkupAnnotations(printCollection.textMarkupAnnotation, printImage.pageNumber, printCollection.stampAnnotations, printCollection.shapeAnnotation, printCollection.measureShapeAnnotation, printCollection.stickyNoteAnnotation);\n }\n }\n if (proxy.pdfViewerBase.isAnnotationCollectionRemoved) {\n // eslint-disable-next-line max-len\n annotationSource_1 = proxy.pdfViewer.annotationModule.textMarkupAnnotationModule.printTextMarkupAnnotations(null, printImage.pageNumber, null, null, null, null);\n }\n }\n var currentPageNumber_1 = printImage.pageNumber;\n // eslint-disable-next-line max-len\n proxy.printCanvas = createElement('canvas', { id: proxy.pdfViewer.element.id + '_printCanvas_' + pageIndex, className: 'e-pv-print-canvas' });\n proxy.printCanvas.style.width = pageWidth + 'px';\n proxy.printCanvas.style.height = pageHeight + 'px';\n var printScaleValue = 2;\n proxy.printCanvas.height = proxy.printHeight * printScaleValue * window.devicePixelRatio;\n proxy.printCanvas.width = proxy.printWidth * printScaleValue * window.devicePixelRatio;\n var context_1 = proxy.printCanvas.getContext('2d');\n var pageImage_1 = new Image();\n var annotationImage_1 = new Image();\n pageImage_1.onload = function () {\n if ((pageHeight > pageWidth) || !proxy.pdfViewer.enablePrintRotation) {\n context_1.drawImage(pageImage_1, 0, 0, proxy.printCanvas.width, proxy.printCanvas.height);\n if (annotationSource_1) {\n context_1.drawImage(annotationImage_1, 0, 0, proxy.printCanvas.width, proxy.printCanvas.height);\n }\n }\n else {\n // translate to center canvas\n context_1.translate(proxy.printCanvas.width * 0.5, proxy.printCanvas.height * 0.5);\n // rotate the canvas to - 90 degree\n context_1.rotate(-0.5 * Math.PI);\n // un translate the canvas back to origin\n context_1.translate(-proxy.printCanvas.height * 0.5, -proxy.printCanvas.width * 0.5);\n // draw the image\n context_1.drawImage(pageImage_1, 0, 0, proxy.printCanvas.height, proxy.printCanvas.width);\n if (annotationSource_1) {\n context_1.drawImage(annotationImage_1, 0, 0, proxy.printCanvas.height, proxy.printCanvas.width);\n }\n }\n if (currentPageNumber_1 === (proxy.pdfViewerBase.pageCount - 1)) {\n proxy.printWindowOpen();\n }\n proxy.pdfViewer.renderDrawing(null, pageIndex);\n };\n pageImage_1.src = printImage.image;\n annotationImage_1.src = annotationSource_1;\n proxy.printViewerContainer.appendChild(proxy.printCanvas);\n }\n proxy.pdfViewerBase.isPrint = false;\n };\n // eslint-disable-next-line\n this.printRequestHandler.onFailure = function (result) {\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.print);\n };\n // eslint-disable-next-line\n this.printRequestHandler.onError = function (result) {\n proxy.pdfViewerBase.openNotificationPopup();\n proxy.pdfViewer.fireAjaxRequestFailed(result.status, result.statusText, proxy.pdfViewer.serverActionSettings.print);\n };\n };\n // eslint-disable-next-line\n Print.prototype.renderFieldsForPrint = function (pageIndex, heightRatio, widthRatio) {\n // eslint-disable-next-line\n var data = null;\n var targetField;\n if (this.pdfViewer.printMode === 'Default') {\n targetField = this.frameDoc.document.getElementById('fields_' + pageIndex);\n }\n else {\n targetField = this.printWindow.document.getElementById('fields_' + pageIndex);\n }\n if (this.pdfViewer.formFieldsModule) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n if (!this.pdfViewer.formDesignerModule) {\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[i];\n // eslint-disable-next-line\n if (parseFloat(currentData['PageIndex']) === pageIndex) {\n // eslint-disable-next-line\n var field = this.pdfViewer.formFieldsModule.createFormFields(currentData, pageIndex, i, targetField);\n // eslint-disable-next-line\n var inputField = field.currentField;\n if (inputField) {\n // eslint-disable-next-line\n var bounds = currentData['LineBounds'];\n // eslint-disable-next-line\n var font = currentData['Font'];\n this.applyPosition(inputField, bounds, font, heightRatio, widthRatio);\n inputField.InsertSpaces = currentData.InsertSpaces;\n if (inputField.InsertSpaces) {\n // eslint-disable-next-line\n var font_1 = ((parseInt(inputField.style.width) / inputField.maxLength) - (parseFloat(inputField.style.fontSize) / 2)) - 0.6;\n inputField.style.letterSpacing = '' + font_1 + 'px';\n inputField.style.fontFamily = 'monospace';\n }\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if ((pageDetails.width > pageDetails.height) && this.pdfViewer.enablePrintRotation) {\n /*\n The below logig have been modified for the bug https://syncfusion.atlassian.net/browse/EJ2-57986\n This code changes is specific for form field elements.\n \n inputField.style.transform = 'rotate(-90deg)';\n let previousLeft: number = parseFloat(inputField.style.left);\n let currentWidthPosition: number = parseFloat(inputField.style.width) / 2;\n let currentHeightPosition: number = parseFloat(inputField.style.height) / 2;\n let currentTop: number = parseFloat(inputField.style.top);\n let currentHeight: number = parseFloat(inputField.style.height);\n inputField.style.left = (currentHeightPosition - currentWidthPosition + currentTop) + 'px';\n inputField.style.top = (pageDetails.width / widthRatio) - (currentHeight / heightRatio) - ((currentWidthPosition / heightRatio) - (currentHeightPosition / heightRatio) + previousLeft) + 'px';\n */\n var x = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.X);\n var y = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Y);\n var width = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Width);\n var height = this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Height);\n var pageHeight = pageDetails.width;\n var top = pageHeight - x - height;\n var left = (y + height);\n var width = (width);\n var height = (height);\n inputField.style.transform = \"rotate(-90deg)\";\n inputField.style.transformOrigin = \"left bottom\";\n inputField.style.left = left + 'px';\n inputField.style.top = top + 'px';\n inputField.style.height = height + 'px';\n inputField.style.width = width + 'px';\n }\n inputField.style.backgroundColor = 'transparent';\n if (!currentData.IsSignatureField) {\n inputField.style.borderColor = 'transparent';\n }\n targetField.appendChild(inputField);\n }\n }\n }\n }\n }\n else {\n var formDesignerData = null;\n if (this.pdfViewer.formDesignerModule) {\n formDesignerData = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n if (formDesignerData) {\n var formDesignerFieldsData = JSON.parse(formDesignerData);\n for (var i = 0; i < formDesignerFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formDesignerFieldsData[i].FormField;\n if (currentData.pageNumber - 1 === pageIndex && currentData.isPrint) {\n var signatureField = this.pdfViewer.nameTable[formDesignerFieldsData[i].Key.split(\"_\")[0]];\n var element = signatureField.wrapper.children[0];\n var htmlElement = void 0;\n if (element) {\n if (currentData.formFieldAnnotationType === \"RadioButton\") {\n for (var j = 0; j < currentData.radiobuttonItem.length; j++) {\n signatureField = this.pdfViewer.nameTable[currentData.radiobuttonItem[j].id.split(\"_\")[0]];\n htmlElement = this.createFormDesignerFields(currentData.radiobuttonItem[j], element, signatureField);\n if (htmlElement) {\n // eslint-disable-next-line\n var bounds = currentData.radiobuttonItem[j].lineBound;\n // eslint-disable-next-line\n var font = currentData.radiobuttonItem[j].fontFamily;\n this.applyPosition(htmlElement, bounds, font, heightRatio, widthRatio, true, currentData.radiobuttonItem[j].zoomValue, currentData.pageNumber - 1);\n targetField.appendChild(htmlElement);\n }\n }\n }\n else {\n htmlElement = this.createFormDesignerFields(currentData, element, signatureField);\n if (htmlElement) {\n // eslint-disable-next-line\n var bounds = currentData.lineBound;\n // eslint-disable-next-line\n var font = currentData.fontFamily;\n this.applyPosition(htmlElement, bounds, font, heightRatio, widthRatio, true, currentData.zoomValue, currentData.pageNumber - 1);\n targetField.appendChild(htmlElement);\n }\n }\n }\n }\n }\n }\n }\n };\n Print.prototype.createFormDesignerFields = function (currentData, element, signatureField) {\n var htmlElement;\n var parentHtmlElement;\n var parentHtmlElementAttribute = {\n 'id': \"form_field_\" + element.id + '_html_element',\n 'class': 'foreign-object'\n };\n parentHtmlElement = this.pdfViewer.formDesignerModule.createHtmlElement('div', parentHtmlElementAttribute);\n var HtmlElementAttribute = {\n 'id': element.id + '_html_element',\n 'class': 'foreign-object'\n };\n htmlElement = this.pdfViewer.formDesignerModule.createHtmlElement('div', HtmlElementAttribute);\n if (currentData.formFieldAnnotationType === \"SignatureField\" || currentData.formFieldAnnotationType === \"InitialField\") {\n this.pdfViewer.formDesignerModule.disableSignatureClickEvent = true;\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createSignatureDialog(this.pdfViewer, signatureField, null, true));\n this.pdfViewer.formDesignerModule.disableSignatureClickEvent = false;\n }\n else if (currentData.formFieldAnnotationType === \"DropdownList\") {\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createDropDownList(element, signatureField, true));\n }\n else if (currentData.formFieldAnnotationType === \"ListBox\") {\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createListBox(element, signatureField, true));\n }\n else {\n element.template = htmlElement.appendChild(this.pdfViewer.formDesignerModule.createInputElement(currentData.formFieldAnnotationType, signatureField, null, true));\n }\n parentHtmlElement.appendChild(htmlElement);\n return htmlElement;\n };\n /**\n * @param inputField\n * @param bounds\n * @param font\n * @param heightRatio\n * @param widthRatio\n * @param inputField\n * @param bounds\n * @param font\n * @param heightRatio\n * @param widthRatio\n * @private\n */\n // eslint-disable-next-line\n Print.prototype.applyPosition = function (inputField, bounds, font, heightRatio, widthRatio, isFormDesignerField, zoomValue, pageIndex) {\n if (bounds) {\n var pageHeight = void 0;\n var left = void 0;\n var top_1;\n var width = void 0;\n var height = void 0;\n // This code changes is specific for form designer elements. https://syncfusion.atlassian.net/browse/EJ2-57986 \n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n var actualWidth = pageDetails ? pageDetails.width : 0;\n var actualHeight = pageDetails ? pageDetails.height : 0;\n if (isFormDesignerField && actualHeight < actualWidth && this.pdfViewer.enablePrintRotation) {\n /*\n The below logig have been modified for the bug https://syncfusion.atlassian.net/browse/EJ2-57986\n This code changes is specific for form designer elements.\n pageHeight = actualWidth;\n top= pageHeight - bounds.X / zoomValue;\n left = bounds.Y / zoomValue;\n width = (bounds.Width / zoomValue);\n height = (bounds.Height / zoomValue);\n inputField.style.transform = \"rotate(-90deg)\";\n inputField.style.transformOrigin = \"top left\";\n */\n // need to set inverse page height and width \n pageHeight = actualWidth;\n top_1 = pageHeight - bounds.X / zoomValue - bounds.Height / zoomValue;\n left = (bounds.Y + bounds.Height) / zoomValue;\n width = (bounds.Width / zoomValue);\n height = (bounds.Height / zoomValue);\n inputField.style.transform = \"rotate(-90deg)\";\n inputField.style.transformOrigin = \"left bottom\";\n }\n else {\n left = isFormDesignerField ? (bounds.X / zoomValue) / widthRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.X)) / widthRatio;\n top_1 = isFormDesignerField ? (bounds.Y / zoomValue) / heightRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Y)) / heightRatio;\n width = isFormDesignerField ? (bounds.Width / zoomValue) / widthRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Width)) / widthRatio;\n height = isFormDesignerField ? (bounds.Height / zoomValue) / heightRatio : (this.pdfViewer.formFieldsModule.ConvertPointToPixel(bounds.Height)) / heightRatio;\n }\n var fontHeight = 0;\n if (font !== null && font.Height) {\n inputField.style.fontFamily = font.Name;\n if (font.Italic) {\n inputField.style.fontStyle = 'italic';\n }\n if (font.Bold) {\n inputField.style.fontWeight = 'Bold';\n }\n fontHeight = this.pdfViewerBase.ConvertPointToPixel(font.Size);\n }\n if (Browser.isIE) {\n top_1 = top_1 - 1;\n }\n this.pdfViewerBase.setStyleToTextDiv(inputField, left, top_1, fontHeight, width, height, true);\n }\n };\n Print.prototype.printWindowOpen = function () {\n var _this = this;\n var browserUserAgent = navigator.userAgent;\n // eslint-disable-next-line\n var printDocument;\n if (this.pdfViewer.printMode === 'Default') {\n printDocument = this.frameDoc.document;\n }\n else {\n printDocument = this.printWindow.document;\n }\n for (var i = 0; i < this.printViewerContainer.children.length; i++) {\n // eslint-disable-next-line max-len\n var canvasUrl = this.printViewerContainer.children[i].toDataURL();\n printDocument.write('
    ');\n if (this.pdfViewer.formFieldsModule || this.pdfViewer.formDesignerModule) {\n var pageWidth = this.pdfViewerBase.pageSize[i].width;\n var pageHeight = this.pdfViewerBase.pageSize[i].height;\n var heightRatio;\n var widthRatio;\n if ((pageHeight < pageWidth) && this.pdfViewer.enablePrintRotation) {\n heightRatio = pageHeight / this.printWidth;\n widthRatio = pageWidth / this.printHeight;\n }\n else {\n heightRatio = pageHeight / this.printHeight;\n widthRatio = pageWidth / this.printWidth;\n }\n this.renderFieldsForPrint(i, heightRatio, widthRatio);\n }\n if (i === 0) {\n if ((browserUserAgent.indexOf('Chrome') !== -1) || (browserUserAgent.indexOf('Safari') !== -1) ||\n (browserUserAgent.indexOf('Firefox')) !== -1) {\n printDocument.write('');\n printDocument.write('');\n }\n else {\n printDocument.write('');\n printDocument.write(''\n + '');\n }\n }\n }\n if (Browser.isIE || Browser.info.name === 'edge') {\n try {\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n this.iframe.contentWindow.document.execCommand('print', false, null);\n }\n else {\n this.printWindow.document.execCommand('print', false, null);\n }\n }\n catch (e) {\n if (this.pdfViewer.printMode === 'Default') {\n this.pdfViewerBase.showPrintLoadingIndicator(false);\n this.iframe.contentWindow.print();\n }\n else {\n this.printWindow.print();\n }\n }\n }\n else {\n setTimeout(function () {\n if (_this.pdfViewer.printMode === 'Default') {\n _this.pdfViewerBase.showPrintLoadingIndicator(false);\n _this.iframe.contentWindow.print();\n _this.iframe.contentWindow.focus();\n if (_this.pdfViewerBase.isDeviceiOS || Browser.isDevice) {\n var proxy_1 = _this;\n window.onafterprint = function (event) {\n document.body.removeChild(proxy_1.iframe);\n };\n }\n else {\n document.body.removeChild(_this.iframe);\n }\n }\n else {\n if (_this.printWindow) {\n _this.printWindow.print();\n _this.printWindow.focus();\n if (!Browser.isDevice || _this.pdfViewerBase.isDeviceiOS) {\n _this.printWindow.close();\n }\n }\n }\n }, 200);\n }\n };\n // eslint-disable-next-line\n Print.prototype.createPrintLoadingIndicator = function (element) {\n // eslint-disable-next-line\n var printWindowContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printWindowcontainer'\n });\n printWindowContainer.style.height = '100%';\n printWindowContainer.style.width = '100%';\n printWindowContainer.style.position = 'absolute';\n printWindowContainer.style.zIndex = 2000;\n printWindowContainer.style.left = 0;\n printWindowContainer.style.top = 0;\n printWindowContainer.style.overflow = 'auto';\n printWindowContainer.style.backgroundColor = 'rgba(0, 0, 0, 0.3)';\n element.appendChild(printWindowContainer);\n var printWaitingPopup = createElement('div', {\n id: this.pdfViewer.element.id + '_printLoadingContainer'\n });\n printWaitingPopup.style.position = 'absolute';\n printWaitingPopup.style.width = '50px';\n printWaitingPopup.style.height = '50px';\n printWaitingPopup.style.left = '46%';\n printWaitingPopup.style.top = '45%';\n printWindowContainer.style.zIndex = 3000;\n printWindowContainer.appendChild(printWaitingPopup);\n // eslint-disable-next-line\n var printImageContainer = new Image();\n // eslint-disable-next-line\n printImageContainer.src = 'data:image/gif;base64,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';\n printImageContainer.style.width = '50px';\n printImageContainer.style.height = '50px';\n printWaitingPopup.appendChild(printImageContainer);\n var printLabelContainer = createElement('div', {\n id: this.pdfViewer.element.id + '_printLabelContainer'\n });\n printLabelContainer.style.position = 'absolute';\n printLabelContainer.textContent = 'Loading ...';\n printLabelContainer.style.fontWeight = 'Bold';\n printLabelContainer.style.left = '46%';\n printLabelContainer.style.top = '54.5%';\n printLabelContainer.style.zIndex = '3000';\n printWindowContainer.appendChild(printLabelContainer);\n };\n /**\n * @private\n */\n Print.prototype.destroy = function () {\n this.printViewerContainer = undefined;\n this.frameDoc = undefined;\n this.printWindow = undefined;\n };\n /**\n * @private\n */\n Print.prototype.getModuleName = function () {\n return 'Print';\n };\n return Print;\n}());\n\n/**\n * export types\n */\n\n/**\n * The `FormFields` module is to render formfields in the PDF document.\n *\n * @hidden\n */\nvar FormFields = /** @__PURE__ @class */ (function () {\n /**\n * @param viewer\n * @param base\n * @param viewer\n * @param base\n * @private\n */\n function FormFields(viewer, base) {\n // eslint-disable-next-line\n this.maintainTabIndex = {};\n // eslint-disable-next-line\n this.maintanMinTabindex = {};\n this.isSignatureField = false;\n this.paddingDifferenceValue = 10;\n this.indicatorPaddingValue = 4;\n this.isKeyDownCheck = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.readOnlyCollection = [];\n this.isSignatureRendered = false;\n /**\n * @private\n */\n // eslint-disable-next-line\n this.signatureFieldCollection = [];\n this.selectedIndex = [];\n /**\n * @private\n */\n // eslint-disable-next-line\n this.renderedPageList = [];\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * @param pageIndex\n * @private\n */\n FormFields.prototype.renderFormFields = function (pageIndex, isImportFormField) {\n this.maxTabIndex = 0;\n this.minTabIndex = -1;\n // eslint-disable-next-line \n if (this.renderedPageList.indexOf(pageIndex) !== -1 && !isImportFormField) {\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (!this.data || this.data === '[]') {\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n }\n else {\n this.data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n if (this.data) {\n // eslint-disable-next-line\n this.formFieldsData = JSON.parse(this.data);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageIndex);\n var count = void 0;\n if (this.formFieldsData !== null && canvasElement !== null && textLayer !== null) {\n var flag = false;\n for (var i = 0; i < this.formFieldsData.length; i++) {\n var formField = this.formFieldsData[i];\n if (!flag && isNullOrUndefined(formField.ActualFieldName) && formField.PageIndex === pageIndex) {\n count = parseInt(formField.FieldName.slice(formField.FieldName.lastIndexOf(\"_\") + 1));\n flag = true;\n }\n }\n if (this.renderedPageList.indexOf(pageIndex) === -1) {\n this.renderedPageList.push(pageIndex);\n }\n var _loop_1 = function (i_1) {\n // eslint-disable-next-line\n var currentData = this_1.formFieldsData[i_1];\n if (currentData.FieldName !== '') {\n if (currentData.IsInitialField) {\n currentData.Name = 'InitialField';\n }\n // eslint-disable-next-line\n var font = currentData['Font'];\n if (this_1.pdfViewer.formDesigner) {\n if (parseFloat(currentData['PageIndex']) == pageIndex) {\n var fontFamily = void 0;\n var fontStyle = void 0;\n var fontSize = void 0;\n if (font !== null && font.Height) {\n fontFamily = font.Name;\n if (font.Italic) {\n fontStyle = 'Italic';\n }\n if (font.Bold) {\n fontStyle = 'Bold';\n }\n if (font.Strikeout) {\n fontStyle = 'Strikethrough';\n }\n if (font.Underline) {\n fontStyle = 'Underline';\n }\n fontSize = this_1.ConvertPointToPixel(font.Size);\n }\n var textAlignment = currentData.Alignment === 2 ? 'right' : (currentData.Alignment === 1 ? 'center' : 'left');\n var backgroundColor = currentData['BackColor'];\n var bounds = currentData['LineBounds'];\n var backColor = 'rgba(' + backgroundColor.R + ',' + backgroundColor.G + ',' + backgroundColor.B + ',' + 1 + ')';\n if (currentData.IsTransparent === true) {\n backColor = \"rgba(0,0,0,0)\";\n }\n backColor = this_1.rgbaToHex(backColor);\n // set default color if field have black color as bg.\n if (backColor === '#000000ff') {\n backColor = '#daeaf7ff';\n }\n // eslint-disable-next-line\n var fontColor = currentData['FontColor'];\n var left = this_1.ConvertPointToPixel(bounds.X);\n var top_1 = this_1.ConvertPointToPixel(bounds.Y);\n var width = this_1.ConvertPointToPixel(bounds.Width);\n var height = this_1.ConvertPointToPixel(bounds.Height);\n var boundArray = { left: left, top: top_1, width: width, height: height };\n var isFieldRotated = false;\n var rotateFieldAngle = 0;\n if (currentData[\"Rotation\"] !== 0) {\n if (currentData[\"RotationAngle\"] === -90 || currentData[\"RotationAngle\"] === -270 || currentData[\"RotationAngle\"] === -180) {\n boundArray = this_1.getBounds(boundArray, pageIndex, 0, isFieldRotated);\n }\n }\n else {\n isFieldRotated = true;\n boundArray = this_1.getBounds(boundArray, pageIndex, 0, isFieldRotated);\n rotateFieldAngle = this_1.getAngle(pageIndex);\n }\n var foreColor = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n foreColor = this_1.rgbaToHex(foreColor);\n var borderColor = currentData['BorderColor'];\n var borderRGB = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n borderRGB = this_1.rgbaToHex(borderRGB);\n var borderWidth = currentData['BorderWidth'];\n this_1.selectedIndex = [];\n elementValue = \"\";\n if (currentData.Name === 'RadioButton') {\n elementValue = currentData['Text'] ? currentData['Text'] : currentData['Value'];\n }\n else {\n elementValue = currentData['Text'];\n }\n var fieldProperties = {\n bounds: { X: boundArray.left, Y: boundArray.top, Width: boundArray.width, Height: boundArray.height }, pageNumber: parseFloat(currentData['PageIndex']) + 1, name: currentData['ActualFieldName'], tooltip: currentData['ToolTip'],\n value: elementValue, insertSpaces: currentData['InsertSpaces'], isChecked: currentData['Selected'], isSelected: currentData['Selected'], fontFamily: fontFamily, fontStyle: fontStyle, backgroundColor: backColor, color: foreColor, borderColor: borderRGB, thickness: borderWidth, fontSize: fontSize, isMultiline: currentData.Multiline, rotateAngle: rotateFieldAngle,\n isReadOnly: currentData['IsReadonly'], isRequired: currentData['IsRequired'], alignment: textAlignment, options: this_1.getListValues(currentData), selectedIndex: this_1.selectedIndex, maxLength: currentData.MaxLength, visibility: currentData.Visible === 1 ? \"hidden\" : \"visible\", font: { isItalic: !isNullOrUndefined(font) ? font.Italic : false, isBold: !isNullOrUndefined(font) ? font.Bold : false, isStrikeout: !isNullOrUndefined(font) ? font.Strikeout : false, isUnderline: !isNullOrUndefined(font) ? font.Underline : false }, isTransparent: currentData.IsTransparent\n };\n if (!currentData.id && this_1.pdfViewer.formFieldCollections[i_1] && !isNullOrUndefined(currentData['ActualFieldName'])) {\n fieldProperties.id = this_1.pdfViewer.formFieldCollections[i_1].id;\n }\n if (currentData.Name === 'DropDown' || currentData.Name === 'ListBox') {\n fieldProperties.value = currentData['SelectedValue'];\n }\n // eslint-disable-next-line\n var fieldType = this_1.getFormFieldType(currentData);\n if (currentData.Name !== 'SignatureText' || currentData.Name !== 'SignatureImage') {\n if (!isNullOrUndefined(this_1.getFormFieldType(currentData))) {\n if (currentData.IsRequired) {\n var thickness = fieldProperties.thickness;\n thickness = thickness > 0 ? thickness : 1;\n fieldProperties.thickness = thickness;\n }\n var addedElement1 = this_1.pdfViewer.formDesignerModule.addFormField(fieldType, fieldProperties, false, fieldProperties.id);\n if (addedElement1 && addedElement1.parentElement) {\n currentData.id = addedElement1.parentElement.id.split('_')[0];\n }\n if (addedElement1 && addedElement1.style.visibility === \"hidden\") {\n addedElement1.childNodes[0].disabled = true;\n }\n }\n }\n if (fieldType === 'SignatureField' || fieldType === 'InitialField') {\n this_1.addSignaturePath(currentData, count);\n if (!isNullOrUndefined(currentData.Value)) {\n this_1.renderExistingAnnnot(currentData, parseFloat(currentData['PageIndex']) + 1, null, isFieldRotated);\n this_1.isSignatureRendered = true;\n count++;\n }\n }\n if (currentData.ActualFieldName === null && this_1.formFieldsData.filter(function (item) { return item.FieldName.includes(currentData.FieldName.replace(/_\\d$/, '')); }).filter(function (value) { return value.Name != 'ink'; }).length === 0) {\n this_1.renderExistingAnnnot(currentData, parseFloat(currentData['PageIndex']) + 1, null, isFieldRotated);\n this_1.pdfViewerBase.signatureModule.storeSignatureData(pageIndex, currentData);\n this_1.isSignatureRendered = true;\n count++;\n }\n this_1.pdfViewerBase.isLoadedFormFieldAdded = true;\n }\n }\n else {\n // eslint-disable-next-line\n if (parseFloat(currentData['PageIndex']) == pageIndex) {\n // eslint-disable-next-line\n var field = this_1.createFormFields(currentData, pageIndex, i_1, null, count);\n var inputField = field.currentField;\n var signCount = field.count;\n var isFieldRotated = false;\n if (currentData.ActualFieldName === null && this_1.formFieldsData.filter(function (item) { return item.FieldName.includes(currentData.FieldName.replace(/_\\d$/, '')); }).filter(function (value) { return value.Name != 'ink'; }).length === 0) {\n this_1.renderExistingAnnnot(currentData, parseFloat(currentData['PageIndex']) + 1, null, isFieldRotated);\n this_1.pdfViewerBase.signatureModule.storeSignatureData(pageIndex, currentData);\n this_1.isSignatureRendered = true;\n count++;\n }\n if (inputField) {\n // eslint-disable-next-line\n var divElement = this_1.createParentElement(currentData, pageIndex);\n // eslint-disable-next-line\n var bounds = currentData['LineBounds'];\n // eslint-disable-next-line\n var font_1 = currentData['Font'];\n // eslint-disable-next-line\n rotateAngle = 0;\n if (currentData['Rotation'] === 0) {\n isFieldRotated = true;\n rotateAngle = this_1.getAngle(pageIndex);\n if (divElement) {\n divElement.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n else {\n inputField.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n }\n else {\n if (divElement) {\n divElement.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n else {\n inputField.style.transform = 'rotate(' + rotateAngle + 'deg)';\n }\n }\n this_1.applyPosition(inputField, bounds, font_1, pageIndex, 0, isFieldRotated);\n inputField.InsertSpaces = currentData.InsertSpaces;\n if (inputField.InsertSpaces) {\n var zoomFactor = this_1.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var font_2 = ((parseInt(inputField.style.width) / inputField.maxLength) - (parseFloat(inputField.style.fontSize) / 2)) - (0.6 * zoomFactor);\n // eslint-disable-next-line\n inputField.style.letterSpacing = '' + font_2 + 'px';\n inputField.style.fontFamily = 'monospace';\n inputField.style.paddingLeft = (font_2 / 2) + 'px';\n }\n // eslint-disable-next-line\n currentData['uniqueID'] = this_1.pdfViewer.element.id + 'input_' + pageIndex + '_' + i_1;\n for (var j = 0; j < this_1.pdfViewer.formFieldCollections.length; j++) {\n if ((inputField.type === 'text' || inputField.type === 'password' || inputField.type === 'textarea') && currentData.Name !== 'SignatureField') {\n if (currentData['uniqueID'] === this_1.pdfViewer.formFieldCollections[j].id) {\n this_1.pdfViewer.formFieldCollections[j].value = currentData['Text'];\n }\n }\n }\n if (isNullOrUndefined(currentData.Value)) {\n currentData.Value = currentData['Text'];\n }\n if (currentData.ToolTip) {\n this_1.setToolTip(currentData.ToolTip, inputField);\n }\n this_1.applyCommonProperties(inputField, pageIndex, i_1, currentData, isFieldRotated);\n this_1.checkIsReadonly(currentData, inputField);\n this_1.applyTabIndex(currentData, inputField, pageIndex);\n this_1.checkIsRequiredField(currentData, inputField);\n this_1.applyDefaultColor(inputField);\n this_1.updateFormFieldsCollection(currentData);\n if (divElement) {\n divElement.appendChild(inputField);\n textLayer.appendChild(divElement);\n }\n else {\n inputField.style.position = 'absolute';\n textLayer.appendChild(inputField);\n }\n inputField.addEventListener('focus', this_1.focusFormFields.bind(this_1));\n inputField.addEventListener('blur', this_1.blurFormFields.bind(this_1));\n inputField.addEventListener('click', this_1.updateFormFields.bind(this_1));\n inputField.addEventListener('change', this_1.changeFormFields.bind(this_1));\n inputField.addEventListener('keydown', this_1.updateFormFieldsValue.bind(this_1));\n inputField.addEventListener('keyup', this_1.updateSameFieldsValue.bind(this_1));\n count = signCount;\n }\n }\n }\n }\n };\n var this_1 = this, elementValue, rotateAngle;\n for (var i_1 = 0; i_1 < this.formFieldsData.length; i_1++) {\n _loop_1(i_1);\n }\n if (!this.pdfViewer.formDesigner) {\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_formfields');\n this.pdfViewerBase.setItemInSessionStorage(this.formFieldsData, '_formfields');\n }\n }\n }\n if (this.pdfViewerBase.isFocusField && this.pdfViewerBase.focusField) {\n var currentField = document.getElementById(this.pdfViewerBase.focusField.id);\n if (currentField) {\n if ((this.pdfViewerBase.focusField.type === \"SignatureField\" || this.pdfViewerBase.focusField.type === \"InitialField\") && this.pdfViewer.formDesignerModule) {\n var y = this.pdfViewerBase.focusField.bounds.y;\n var height = this.pdfViewerBase.pageSize[pageIndex].height;\n this.pdfViewer.bookmark.goToBookmark(this.pdfViewerBase.focusField.pageIndex, height - y);\n }\n else {\n currentField.focus();\n }\n this.pdfViewerBase.isFocusField = false;\n this.pdfViewerBase.focusField = [];\n }\n }\n };\n FormFields.prototype.setToolTip = function (tooltipContent, targetElement) {\n //initialize tooltip component\n var tooltip = new Tooltip({\n content: tooltipContent\n });\n // render initialized tooltip\n tooltip.appendTo(targetElement);\n };\n FormFields.prototype.trim = function (str) {\n return str.replace(/^\\s+|\\s+$/gm, '');\n };\n FormFields.prototype.rgbaToHex = function (rgba) {\n var inParts = rgba.substring(rgba.indexOf(\"(\")).split(\",\");\n var r = parseInt(this.trim(inParts[0].substring(1)), 10);\n var g = parseInt(this.trim(inParts[1]), 10);\n var b = parseInt(this.trim(inParts[2]), 10);\n var a = parseFloat(parseFloat(this.trim(inParts[3].substring(0, inParts[3].length - 1))).toFixed(2));\n var outParts = [\n r.toString(16),\n g.toString(16),\n b.toString(16),\n Math.round(a * 255).toString(16).substring(0, 2)\n ];\n // Pad single-digit output values\n outParts.forEach(function (part, i) {\n if (part.length === 1) {\n outParts[i] = '0' + part;\n }\n });\n return ('#' + outParts.join(''));\n };\n FormFields.prototype.getListValues = function (currentData) {\n var listItem = currentData['TextList'];\n var options = [];\n for (var i = 0; i < listItem.length; i++) {\n if (listItem[i] === currentData['SelectedValue'])\n this.selectedIndex.push(i);\n options.push({ itemName: listItem[i], itemValue: listItem[i] });\n }\n if (this.getFormFieldType(currentData) === 'ListBox') {\n this.selectedIndex = currentData['SelectedList'];\n }\n return options;\n };\n // eslint-disable-next-line\n FormFields.prototype.createParentElement = function (data, pageIndex) {\n // eslint-disable-next-line\n var divElement;\n // eslint-disable-next-line\n if (data['Name'] === 'Textbox' || data['Name'] === 'Password') {\n divElement = document.createElement('div');\n divElement.style.background = 'white';\n if (data.InsertSpaces) {\n divElement.style.background = 'transparent';\n }\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n // eslint-disable-next-line\n divElement.style.position = 'absolute';\n // eslint-disable-next-line\n var isFieldRotated = false;\n if (data['Rotation'] === 0) {\n isFieldRotated = true;\n }\n this.applyPosition(divElement, bounds, font, pageIndex, 0, isFieldRotated);\n }\n return divElement;\n };\n /**\n * @private\n */\n FormFields.prototype.getAngle = function (pageIndex) {\n // eslint-disable-next-line\n var angle = 0;\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails && pageDetails.rotation) {\n switch (pageDetails.rotation) {\n case 0:\n angle = 0;\n break;\n case 1:\n angle = 90;\n break;\n case 2:\n angle = 180;\n break;\n case 3:\n angle = 270;\n break;\n }\n }\n return angle;\n };\n FormFields.prototype.nextField = function () {\n this.signatureFieldNavigate(true);\n };\n FormFields.prototype.previousField = function () {\n this.signatureFieldNavigate(false);\n };\n FormFields.prototype.signatureFieldNavigate = function (nextSign) {\n var isNextSignField = nextSign;\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n if (signatureFields.length === 0) {\n signatureFields = this.getSignField();\n }\n // eslint-disable-next-line\n var currentField;\n if (this.currentTarget) {\n for (var i = 0; i < signatureFields.length; i++) {\n currentField = this.pdfViewer.formDesignerModule ? signatureFields[i].FormField : signatureFields[i];\n if (this.currentTarget.id === currentField.uniqueID) {\n this.currentTarget = document.getElementById(currentField.uniqueID);\n this.getSignatureIndex(i, signatureFields.length, isNextSignField);\n break;\n }\n }\n }\n else {\n if (nextSign) {\n currentField = this.pdfViewer.formDesignerModule ? signatureFields[0].FormField : signatureFields[0];\n if (currentField.uniqueID) {\n this.currentTarget = document.getElementById(currentField.uniqueID);\n this.getSignatureIndex(0, signatureFields.length, isNextSignField, true);\n }\n }\n }\n };\n FormFields.prototype.getSignatureIndex = function (currentSignatureIndex, signatureCount, isNextSign, isFirstNavigate) {\n var signatureIndex = currentSignatureIndex;\n if (!isFirstNavigate) {\n if (isNextSign) {\n signatureIndex++;\n }\n else {\n signatureIndex--;\n }\n }\n if (signatureCount === 1) {\n this.renderSignatureField(0);\n }\n else {\n if (signatureIndex < signatureCount && signatureIndex >= 0) {\n this.renderSignatureField(signatureIndex);\n }\n else {\n if (isNextSign) {\n if (signatureIndex >= signatureCount) {\n this.renderSignatureField(0);\n }\n }\n else {\n if (signatureIndex <= 0) {\n this.renderSignatureField(signatureCount - 1);\n }\n }\n }\n }\n };\n FormFields.prototype.renderSignatureField = function (currentSignIndex) {\n var curSignIndex = currentSignIndex;\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n // eslint-disable-next-line\n var currentField;\n if (curSignIndex < signatureFields.length) {\n for (var i = 0; i < signatureFields.length; i++) {\n var curSignIndexId = this.pdfViewer.formDesignerModule ? signatureFields[curSignIndex].FormField.uniqueID : signatureFields[curSignIndex].uniqueID;\n var signatureFieldData = this.pdfViewer.formDesignerModule ? signatureFields[i].FormField : signatureFields[i];\n if (curSignIndexId === signatureFieldData.uniqueID) {\n var pageIndex = signatureFieldData.PageIndex >= 0 ? signatureFieldData.PageIndex : signatureFieldData.pageNumber;\n var isRender = this.pdfViewer.annotationModule.findRenderPageList(pageIndex);\n if (!isRender) {\n this.pdfViewer.navigation.goToPage(pageIndex);\n }\n this.currentTarget = document.getElementById(signatureFieldData.uniqueID);\n currentField = signatureFieldData;\n break;\n }\n }\n if (this.currentTarget === null) {\n var pageIndex = currentField.PageIndex >= 0 ? currentField.PageIndex : currentField.pageNumber;\n this.pdfViewer.navigation.goToPage(pageIndex);\n this.currentTarget = document.getElementById(currentField.uniqueID);\n }\n if (this.currentTarget) {\n if (this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n document.getElementById(this.currentTarget.id).focus();\n this.pdfViewer.select([this.currentTarget.id], null);\n }\n else if (this.currentTarget.className === 'e-pdfviewer-signatureformfields') {\n if (this.pdfViewer.formDesignerModule) {\n document.getElementById(this.currentTarget.id).parentElement.focus();\n }\n else {\n document.getElementById(this.currentTarget.id).focus();\n }\n }\n }\n }\n };\n /**\n * @private\n */\n FormFields.prototype.setFocus = function (id) {\n if (!id) {\n if (this.currentTarget) {\n document.getElementById(this.currentTarget.id).focus();\n }\n }\n else {\n this.removeFocus();\n var signatureElement = document.getElementById(id);\n signatureElement.classList.add('e-pv-signature-focus');\n }\n };\n /**\n * @private\n */\n FormFields.prototype.removeFocus = function () {\n if (this.signatureFieldCollection) {\n // eslint-disable-next-line\n var signatureFields = this.signatureFieldCollection;\n if (signatureFields.length === 0) {\n signatureFields = this.getSignField();\n }\n for (var i = 0; i < this.signatureFieldCollection.length; i++) {\n var signatureFieldId = this.pdfViewer.formDesignerModule ? this.signatureFieldCollection[i].FormField.uniqueID : this.signatureFieldCollection[i].uniqueID;\n var signatureElement = document.getElementById(signatureFieldId);\n if (signatureElement) {\n signatureElement.classList.remove('e-pv-signature-focus');\n }\n }\n if (this.pdfViewer.formFieldsModule.currentTarget) {\n this.pdfViewer.formFieldsModule.currentTarget.classList.remove('e-pv-signature-focus');\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.getSignField = function () {\n if (this.pdfViewer.formDesignerModule) {\n this.signatureFieldCollection =\n this.pdfViewer.formDesignerModule.getFormDesignerSignField(this.signatureFieldCollection);\n }\n else {\n this.signatureFieldCollection = this.getFormFieldSignField();\n }\n return this.signatureFieldCollection;\n };\n FormFields.prototype.getFormFieldSignField = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n // eslint-disable-next-line\n var currentData;\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n currentData = formFieldsData[i];\n if (currentData.Name === 'SignatureField') {\n // eslint-disable-next-line\n currentData['uniqueID'] = this.pdfViewer.element.id + 'input_' + currentData.PageIndex + '_' + i;\n this.signatureFieldCollection.push(formFieldsData[i]);\n }\n }\n }\n return this.signatureFieldCollection;\n };\n /**\n * @private\n */\n FormFields.prototype.formFieldCollections = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[i];\n // eslint-disable-next-line\n var type = currentData['Name'];\n if (this.pdfViewer.formDesignerModule) {\n if (currentData.Name !== 'ink' && currentData.Name !== 'SignatureImage' && currentData.Name !== 'SignatureText') {\n this.retreiveFormFieldsData(currentData, true);\n }\n }\n else {\n if (currentData.Name !== 'ink') {\n // eslint-disable-next-line\n var formFieldCollection = { name: this.retriveFieldName(currentData), id: this.pdfViewer.element.id + 'input_' + parseFloat(currentData['PageIndex']) + '_' + i, isReadOnly: false, type: currentData.IsInitialField ? 'InitialField' : type, value: this.retriveCurrentValue(currentData), fontName: '', isRequired: currentData.IsRequired };\n this.pdfViewer.formFieldCollections.push(formFieldCollection);\n }\n }\n }\n }\n };\n FormFields.prototype.retreiveFormFieldsData = function (currentData, isCollection) {\n var fontFamily;\n var fontStyle;\n var fontSize;\n if (currentData.FieldName !== '') {\n if (currentData.IsInitialField) {\n currentData.Name = 'InitialField';\n }\n // eslint-disable-next-line\n var font = currentData['Font'];\n if (font !== null && font.Height) {\n fontFamily = font.Name;\n if (font.Italic) {\n fontStyle = 'Italic';\n }\n if (font.Bold) {\n fontStyle = 'Bold';\n }\n if (font.Strikeout) {\n fontStyle = 'Strikethrough';\n }\n if (font.Underline) {\n fontStyle = 'Underline';\n }\n fontSize = this.ConvertPointToPixel(font.Size);\n }\n var textAlignment = currentData.Alignment === 2 ? 'right' : (currentData.Alignment === 1 ? 'center' : 'left');\n var backgroundColor = currentData['BackColor'];\n var bounds = currentData['LineBounds'];\n var backColor = 'rgba(' + backgroundColor.R + ',' + backgroundColor.G + ',' + backgroundColor.B + ',' + 1 + ')';\n backColor = this.rgbaToHex(backColor);\n // set default color if field have black color as bg.\n if (currentData.IsTransparent === true) {\n backColor = \"rgba(0,0,0,0)\";\n }\n else if (backColor === '#000000ff') {\n backColor = '#daeaf7ff';\n }\n // eslint-disable-next-line\n var fontColor = currentData['FontColor'];\n var left = this.ConvertPointToPixel(bounds.X);\n var top_2 = this.ConvertPointToPixel(bounds.Y);\n var width = this.ConvertPointToPixel(bounds.Width);\n var height = this.ConvertPointToPixel(bounds.Height);\n var boundArray = { left: left, top: top_2, width: width, height: height };\n var foreColor = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n foreColor = this.rgbaToHex(foreColor);\n var borderColor = currentData['BorderColor'];\n var borderRGB = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n borderRGB = this.rgbaToHex(borderRGB);\n var borderWidth = currentData['BorderWidth'];\n this.selectedIndex = [];\n var fieldProperties = {\n bounds: { X: boundArray.left, Y: boundArray.top, Width: boundArray.width, Height: boundArray.height }, pageNumber: parseFloat(currentData['PageIndex']) + 1, name: currentData['ActualFieldName'], tooltip: currentData['ToolTip'],\n value: currentData['Text'], isChecked: currentData['Selected'], isSelected: currentData['Selected'], fontFamily: fontFamily, fontStyle: fontStyle, backgroundColor: backColor, color: foreColor, borderColor: borderRGB, thickness: borderWidth, fontSize: fontSize, isMultiline: currentData.Multiline,\n isReadOnly: currentData['IsReadonly'], isRequired: currentData['IsRequired'], insertSpaces: currentData['InsertSpaces'], alignment: textAlignment, options: this.getListValues(currentData), selectedIndex: this.selectedIndex, maxLength: currentData.MaxLength, visibility: currentData.Visible === 1 ? \"hidden\" : \"visible\", font: { isItalic: !isNullOrUndefined(font) ? font.Italic : false, isBold: !isNullOrUndefined(font) ? font.Bold : false, isStrikeout: !isNullOrUndefined(font) ? font.Strikeout : false, isUnderline: !isNullOrUndefined(font) ? font.Underline : false }\n };\n if (currentData.Name === 'DropDown' || currentData.Name === 'ListBox') {\n fieldProperties.value = currentData['SelectedValue'];\n }\n // eslint-disable-next-line\n var fieldType = this.getFormFieldType(currentData);\n if (fieldType === 'SignatureField' || fieldType === 'InitialField') {\n this.addSignaturePath(currentData);\n if (this.isSignatureField) {\n fieldProperties.value = currentData.Value;\n }\n }\n var addedElement = this.pdfViewer.formDesignerModule.addFormField(fieldType, fieldProperties, isCollection);\n return addedElement;\n }\n return null;\n };\n /**\n * @param formField\n * @private\n */\n FormFields.prototype.updateFormFieldsCollection = function (formField) {\n var type = formField['Name'];\n var formFieldCollection = {\n name: this.retriveFieldName(formField), id: formField.uniqueID, isReadOnly: formField.IsReadonly, isRequired: formField.IsRequired, isSelected: type === 'CheckBox' ? false : formField.Selected,\n isChecked: type === 'RadioButton' ? false : formField.Selected, type: type, value: type === 'ListBox' || type === 'DropDown' ? formField.SelectedValue : formField.Value, fontName: formField.FontFamily ? formField.FontFamily : ''\n };\n this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === formFieldCollection.id; })] = formFieldCollection;\n };\n // eslint-disable-next-line\n FormFields.prototype.updateFormFieldValues = function (formFields) {\n this.readOnlyCollection.push(formFields.id);\n if (formFields) {\n // eslint-disable-next-line\n var currentElement = document.getElementById(formFields.id);\n if (currentElement) {\n if (formFields.isReadOnly) {\n currentElement.disabled = true;\n currentElement.style.backgroundColor = '';\n currentElement.style.cursor = 'default';\n }\n else {\n if (currentElement.style.backgroundColor === '') {\n currentElement.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n }\n currentElement.disabled = false;\n currentElement.style.cursor = '';\n }\n }\n this.updateDataInSession(currentElement);\n }\n };\n /**\n * @param currentData\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.retriveFieldName = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n case 'Password':\n case 'SignatureField':\n case 'InitialField':\n currentField = currentData.FieldName;\n break;\n case 'RadioButton':\n case 'CheckBox':\n currentField = currentData.GroupName;\n break;\n case 'DropDown':\n case 'ListBox':\n currentField = currentData.Text;\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.retriveCurrentValue = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n case 'Password':\n currentField = currentData.Text;\n break;\n case 'SignatureField':\n currentField = currentData.Value;\n break;\n case 'RadioButton':\n case 'CheckBox':\n currentField = currentData.Selected;\n break;\n case 'DropDown':\n currentField = currentData.SelectedValue;\n break;\n case 'ListBox':\n currentField = currentData.SelectedList;\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.getSignatureBounds = function (LineBounds, bounds, pageIndex) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n // eslint-disable-next-line\n var bound = 0;\n switch (pageDetails.rotation) {\n case 0:\n bound = bounds;\n break;\n case 1:\n bound = { x: bounds.x + LineBounds.Width + (bounds.width / 3.5), y: pageDetails.width - LineBounds.X + (bounds.height / 4) };\n break;\n case 2:\n bound = { x: pageDetails.width - bounds.x - bounds.width, y: pageDetails.height - bounds.y - bounds.height };\n break;\n case 3:\n bound = { x: bounds.y - (bounds.width / 2) + bounds.height, y: bounds.x + (bounds.width / 3) };\n break;\n }\n return bound;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.downloadFormFieldsData = function () {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n // eslint-disable-next-line\n var datas = {};\n var fieldDatas = [];\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n var isRequired = currentData.IsRequired;\n if (currentData.Name === 'Textbox' || currentData.Name === 'Password' || currentData.Multiline) {\n if (isRequired && (currentData.Text === '' || currentData.Text === null)) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.FieldName] = currentData.Text;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.FieldName]);\n }\n fieldDatas = { fieldValue: currentData.Text, isReadOnly: currentData.IsReadonly };\n datas[currentData.FieldName] = fieldDatas;\n }\n else if (currentData.Name === 'RadioButton' && currentData.Selected) {\n if (isRequired && currentData.Selected === false) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.GroupName] = currentData.Value;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.GroupName]);\n }\n fieldDatas = { fieldValue: currentData.Value, isReadOnly: currentData.IsReadonly };\n datas[currentData.GroupName] = fieldDatas;\n }\n else if (currentData.Name === 'CheckBox') {\n if (isRequired && currentData.Selected === false) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.GroupName] = currentData.Selected;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.GroupName]);\n }\n if (currentData.CheckboxIndex && currentData.Selected) {\n fieldDatas = { fieldValue: currentData.CheckboxIndex, isReadOnly: currentData.IsReadonly };\n datas[currentData.GroupName] = fieldDatas;\n }\n else if (datas[currentData.GroupName] === undefined || datas[currentData.GroupName] === null) {\n fieldDatas = { fieldValue: currentData.Selected, isReadOnly: currentData.IsReadonly };\n datas[currentData.GroupName] = fieldDatas;\n }\n }\n else if (currentData.Name === 'DropDown') {\n if (isRequired && currentData.SelectedValue === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.Text] = currentData.SelectedValue;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.Text]);\n }\n fieldDatas = { fieldValue: currentData.SelectedValue, isReadOnly: currentData.IsReadonly };\n datas[currentData.Text] = fieldDatas;\n }\n else if (currentData.Name === 'ListBox') {\n // eslint-disable-next-line\n var childItems = currentData['TextList'];\n var childItemsText = [];\n for (var m_1 = 0; m_1 < currentData.SelectedList.length; m_1++) {\n // eslint-disable-next-line\n var currentElement = currentData.SelectedList[m_1];\n childItemsText.push(childItems[currentElement]);\n }\n fieldDatas = { fieldValue: JSON.stringify(childItemsText), isReadOnly: currentData.IsReadonly };\n datas[currentData.Text] = fieldDatas;\n }\n else if (currentData.Name === 'SignatureField' || currentData.Name === 'InitialField') {\n // eslint-disable-next-line\n var csData = void 0;\n if (currentData.Value === null || currentData.Value === '') {\n this.addSignaturePath(currentData);\n }\n if (currentData.Value && currentData.Value !== '') {\n csData = currentData.Value;\n var fontFamily = currentData.fontFamily ? currentData.fontFamily : currentData.FontFamily;\n if (fontFamily) {\n datas[currentData.FieldName + 'fontName'] = fontFamily;\n datas[currentData.FieldName + 'fontSize'] = currentData.fontSize ? currentData.fontSize : currentData.FontSize;\n }\n else if (currentData.Value.split('base64,')[1]) {\n datas[currentData.FieldName + 'ImageData'] = true;\n }\n else {\n // eslint-disable-next-line\n var collectionData = processPathData(currentData.Value);\n csData = splitArrayCollection(collectionData);\n }\n }\n if (isRequired && currentData.Value === null || currentData.Value === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.FieldName] = JSON.stringify(csData);\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.FieldName]);\n }\n datas[currentData.FieldName] = JSON.stringify(csData);\n if (currentData.Bounds) {\n // eslint-disable-next-line\n var bounds = this.getSignatureBounds(currentData.LineBounds, currentData.Bounds, currentData.PageIndex);\n currentData.Bounds.x = bounds.x;\n currentData.Bounds.y = bounds.y;\n datas[currentData.FieldName + 'bounds'] = JSON.stringify(currentData.Bounds);\n }\n else {\n // eslint-disable-next-line\n var lineBounds = currentData.LineBounds;\n // eslint-disable-next-line\n var bounds = { x: this.ConvertPointToPixel(lineBounds.X), y: this.ConvertPointToPixel(lineBounds.Y), width: this.ConvertPointToPixel(lineBounds.Width), height: this.ConvertPointToPixel(lineBounds.Height) };\n datas[currentData.FieldName + 'bounds'] = JSON.stringify(bounds);\n }\n datas[currentData.FieldName + 'isReadOnly'] = currentData.IsReadonly;\n }\n }\n return (JSON.stringify(datas));\n }\n };\n FormFields.prototype.focusFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n // eslint-disable-next-line\n if (currentTarget && (currentTarget.className !== 'e-pdfviewer-signatureformfields' && currentTarget.className !== 'e-pdfviewer-signatureformfields e-pv-signature-focus')) {\n // eslint-disable-next-line\n var backgroundcolor = currentTarget.style.backgroundColor;\n // eslint-disable-next-line\n var currentIndex = backgroundcolor.lastIndexOf(',');\n // eslint-disable-next-line\n var currentColor = backgroundcolor.slice(0, currentIndex + 1) + 0 + ')';\n currentTarget.style.backgroundColor = currentColor;\n if (currentTarget.type === 'checkbox') {\n currentTarget.style.webkitAppearance = '';\n }\n currentTarget.style.boxShadow = \"0 0 5px \" + (currentTarget.style.borderColor === 'transparent' ? '#000000' : currentTarget.style.borderColor);\n }\n else if (currentTarget) {\n // eslint-disable-next-line\n if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus') {\n this.setFocus(currentTarget.id);\n }\n }\n };\n FormFields.prototype.blurFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (currentTarget.InsertSpaces && this.isKeyDownCheck) {\n // eslint-disable-next-line\n var font = parseInt(currentTarget.style.width) - (parseInt(currentTarget.style.height) / 2);\n currentTarget.style.width = '' + font + 'px';\n this.isKeyDownCheck = false;\n }\n if (currentTarget.type === 'checkbox') {\n this.pdfViewer.fireFocusOutFormField(currentTarget.name, currentTarget.checked);\n }\n else {\n this.pdfViewer.fireFocusOutFormField(currentTarget.name, currentTarget.value);\n }\n // eslint-disable-next-line\n var backgroundcolor = currentTarget.style.backgroundColor;\n // eslint-disable-next-line\n var currentIndex = backgroundcolor.lastIndexOf(',');\n // eslint-disable-next-line\n var currentColor = backgroundcolor.slice(0, currentIndex + 1) + 0.2 + ')';\n currentTarget.style.backgroundColor = currentColor;\n currentTarget.style.boxShadow = 'none';\n if ((currentTarget.type === 'checkbox') && !currentTarget.checked) {\n currentTarget.style.webkitAppearance = 'none';\n }\n else {\n currentTarget.style.webkitAppearance = '';\n }\n };\n FormFields.prototype.updateFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (currentTarget.className === 'e-pdfviewer-ListBox') {\n currentTarget = currentTarget.parentElement;\n this.updateDataInSession(currentTarget);\n }\n else if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n this.currentTarget = currentTarget;\n }\n else if (currentTarget.className === 'e-pv-buttonItem' || currentTarget.type === 'button') {\n this.pdfViewer.fireButtonFieldClickEvent(currentTarget.value, currentTarget.name, currentTarget.id);\n }\n for (var m = 0; m < this.pdfViewer.formFieldCollections.length; m++) {\n if (currentTarget.id === this.pdfViewer.formFieldCollections[m].id) {\n if (this.pdfViewer.formDesignerModule || this.pdfViewer.annotationModule) {\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', this.pdfViewer.formFieldCollections[m]);\n }\n // eslint-disable-next-line\n if (currentTarget.className === 'e-pdfviewer-signatureformfields' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus') {\n this.setFocus(currentTarget.id);\n }\n }\n }\n };\n /**\n * @param signatureType\n * @param value\n * @param target\n * @param fontname\n * @param signatureType\n * @param value\n * @param target\n * @param fontname\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.drawSignature = function (signatureType, value, target, fontname) {\n var annot;\n // eslint-disable-next-line\n var proxy = this;\n var bounds;\n var targetBounds;\n var parentElementBounds;\n var data;\n if (this.pdfViewer.formDesigner) {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n }\n else {\n data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n }\n var formFieldsData = JSON.parse(data);\n var targetName = this.currentTarget ? this.currentTarget.name : target.name ? target.name : target.offsetParent.name;\n var _loop_2 = function () {\n var fieldName = this_2.pdfViewer.formDesigner ? formFieldsData[i].FormField.name : formFieldsData[i].FieldName;\n if (this_2.pdfViewer.formDesigner ? fieldName === targetName : fieldName === targetName && (!isNullOrUndefined(formFieldsData[i].ActualFieldName))) {\n target = this_2.pdfViewer.formDesigner ? document.getElementById(formFieldsData[i].Key.split(\"_\")[0]) : document.getElementById(formFieldsData[i].uniqueID);\n // eslint-disable-next-line\n var currentField_1 = target;\n var elementId = currentField_1.offsetParent.offsetParent.id.split(\"_\")[0];\n var signatureField_1 = this_2.pdfViewer.nameTable[elementId];\n if (target && target.offsetParent && signatureField_1) {\n targetBounds = target.getBoundingClientRect();\n parentElementBounds = target.offsetParent.offsetParent.offsetParent.getBoundingClientRect();\n this_2.pdfViewerBase.drawSignatureWithTool = true;\n if (target.nextSibling && target.nextSibling.id.indexOf(\"initial\") !== -1) {\n this_2.pdfViewer.isInitialFieldToolbarSelection = true;\n }\n }\n var currentValue_1 = value ? value : this_2.pdfViewerBase.signatureModule.outputString;\n var currentFont = fontname ? fontname : this_2.pdfViewerBase.signatureModule.fontName;\n var zoomvalue = this_2.pdfViewerBase.getZoomFactor();\n var currentWidth = this_2.pdfViewerBase.drawSignatureWithTool ? targetBounds.width / zoomvalue : parseFloat(currentField_1.style.width) / zoomvalue;\n var currentHeight = this_2.pdfViewerBase.drawSignatureWithTool ? targetBounds.height / zoomvalue : parseFloat(currentField_1.style.height) / zoomvalue;\n var currentLeft = this_2.pdfViewerBase.drawSignatureWithTool ? ((targetBounds.left - parentElementBounds.left)) / zoomvalue : parseFloat(currentField_1.style.left) / zoomvalue;\n var currentTop = this_2.pdfViewerBase.drawSignatureWithTool ? ((targetBounds.top - parentElementBounds.top)) / zoomvalue : parseFloat(currentField_1.style.top) / zoomvalue;\n var currentPage_1 = this_2.pdfViewerBase.drawSignatureWithTool ? target.nextElementSibling ? parseFloat(target.nextElementSibling.id.split(\"_\")[1]) : parseFloat(currentField_1.id.split('_')[1]) : parseFloat(currentField_1.id.split('_')[1]);\n var currentIndex = this_2.pdfViewerBase.drawSignatureWithTool ? target.nextElementSibling ? parseFloat(target.nextElementSibling.id.split('_')[2]) : parseFloat(currentField_1.id.split('_')[2]) : parseFloat(currentField_1.id.split('_')[2]);\n var signString_1 = this_2.pdfViewerBase.signatureModule.saveImageString;\n var signatureFontFamily_1;\n var signatureFontSize_1;\n var rotateAngleString = currentField_1.offsetParent.offsetParent.style.transform ? currentField_1.offsetParent.offsetParent.style.transform : currentField_1.style.transform;\n rotateAngleString = rotateAngleString.substring(rotateAngleString.indexOf(\"(\") + 1, rotateAngleString.indexOf(\"d\"));\n var rotateAngle_1 = rotateAngleString ? parseInt(rotateAngleString) : 0;\n if (signatureType === 'Type') {\n if (!currentFont) {\n currentFont = 'Helvetica';\n }\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n if (this_2.pdfViewer.signatureFitMode === 'Default') {\n bounds = this_2.getDefaultBoundsforSign(bounds);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField_1.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage_1, data: currentValue_1, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', opacity: 1, rotateAngle: rotateAngle_1, annotName: 'SignatureText', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }, fontFamily: currentFont, fontSize: rotateAngle_1 === 90 || rotateAngle_1 === 270 ? (bounds.width / 1.35) : (bounds.height / 1.35)\n };\n if (annot.shapeAnnotationType === 'SignatureText') {\n var textWidth = this_2.getTextWidth(annot.data, annot.fontSize, annot.fontFamily);\n var widthRatio = 1;\n if (textWidth > bounds.width)\n widthRatio = bounds.width / textWidth;\n annot.fontSize = this_2.getFontSize(Math.floor((annot.fontSize * widthRatio)));\n }\n signString_1 = annot.data;\n signatureFontFamily_1 = annot.fontFamily;\n signatureFontSize_1 = annot.fontSize;\n }\n else if (signatureType === 'Image') {\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n var image_1 = new Image();\n image_1.src = currentValue_1;\n image_1.onload = function () {\n proxy.imageOnLoad(bounds, image_1, currentValue_1, currentPage_1, rotateAngle_1, currentField_1, signatureField_1, signString_1, signatureFontFamily_1, signatureFontSize_1, target);\n };\n }\n else {\n if ((currentValue_1.indexOf('base64')) !== -1) {\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n if (this_2.pdfViewer.signatureFitMode === 'Default') {\n bounds = this_2.getDefaultBoundsforSign(bounds);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField_1.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage_1, data: currentValue_1, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: rotateAngle_1, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n signString_1 = annot.data;\n }\n else {\n // eslint-disable-next-line\n if (this_2.pdfViewer.signatureFitMode === 'Default') {\n // eslint-disable-next-line\n var signatureBounds = this_2.updateSignatureAspectRatio(currentValue_1, false, currentField_1);\n // eslint-disable-next-line\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, signatureBounds.width, signatureBounds.height, true);\n bounds.x = bounds.x + signatureBounds.left;\n bounds.y = bounds.y + signatureBounds.top;\n }\n else {\n bounds = this_2.getSignBounds(currentIndex, rotateAngle_1, currentPage_1, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight);\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField_1.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage_1, data: currentValue_1, modifiedDate: '',\n shapeAnnotationType: 'Path', opacity: 1, rotateAngle: rotateAngle_1, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n }\n if (this_2.pdfViewerBase.drawSignatureWithTool && signatureField_1 && signatureType !== 'Image') {\n annot.id = signatureField_1.id + \"_content\";\n var obj = this_2.pdfViewer.add(annot);\n signatureField_1.wrapper.children.push(obj.wrapper);\n }\n else if (signatureType !== 'Image') {\n this_2.pdfViewer.add(annot);\n }\n if (annot && annot.shapeAnnotationType === 'Path' && currentValue_1 !== '') {\n this_2.pdfViewerBase.currentSignatureAnnot = annot;\n // eslint-disable-next-line\n var position = { currentHeight: currentHeight, currentWidth: currentWidth, currentLeft: currentLeft, currentTop: currentTop };\n this_2.pdfViewerBase.signatureModule.addSignatureCollection(bounds, position);\n signString_1 = this_2.pdfViewerBase.signatureModule.saveImageString;\n this_2.pdfViewerBase.currentSignatureAnnot = null;\n }\n if (signatureType !== 'Image') {\n // eslint-disable-next-line\n var canvass = document.getElementById(this_2.pdfViewer.element.id + '_annotationCanvas_' + currentPage_1);\n // eslint-disable-next-line\n this_2.pdfViewer.renderDrawing(canvass, currentPage_1);\n this_2.pdfViewerBase.signatureModule.showSignatureDialog(false);\n if (currentField_1.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n currentField_1.className = 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus';\n }\n else {\n currentField_1.className = 'e-pdfviewer-signatureformfields-signature';\n }\n if (this_2.pdfViewerBase.drawSignatureWithTool && signatureField_1) {\n var key = target.offsetParent.offsetParent.id.split('_')[0] + '_content';\n annot.bounds = { x: bounds.x * zoomvalue, y: bounds.y * zoomvalue, width: bounds.width * zoomvalue, height: bounds.height * zoomvalue };\n this_2.updateSignatureDataInSession(annot, key);\n }\n else {\n this_2.updateDataInSession(currentField_1, annot.data, annot.bounds, signatureFontFamily_1, signatureFontSize_1);\n }\n currentField_1.style.pointerEvents = 'none';\n if (this_2.pdfViewer.annotation) {\n this_2.pdfViewer.annotation.addAction(annot.pageIndex, null, annot, 'FormField Value Change', '', annot, annot);\n }\n // eslint-disable-next-line\n if (annot.shapeAnnotationType === 'Path' || annot.shapeAnnotationType === \"SignatureText\") {\n this_2.pdfViewer.fireSignatureAdd(annot.pageIndex, annot.id, annot.shapeAnnotationType, annot.bounds, annot.opacity, null, null, signString_1);\n }\n this_2.pdfViewer.fireFocusOutFormField(currentField_1.name, currentValue_1);\n }\n }\n };\n var this_2 = this;\n for (var i = 0; i < formFieldsData.length; i++) {\n _loop_2();\n }\n if (signatureType !== 'Image') {\n this.pdfViewerBase.signatureModule.hideSignaturePanel();\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n }\n };\n // EJ2-62918- Image signature width is wrong while adding programmatically and it is fixed by adding an onload event.\n // A function was added and it was called\n FormFields.prototype.imageOnLoad = function (bounds, image, currentValue, currentPage, rotateAngle, currentField, signatureField, signString, signatureFontFamily, signatureFontSize, target) {\n if (target && target.offsetParent && signatureField) {\n this.pdfViewerBase.drawSignatureWithTool = true;\n if (target.nextSibling && target.nextSibling.id.indexOf(\"initial\") !== -1) {\n this.pdfViewer.isInitialFieldToolbarSelection = true;\n }\n }\n var annot;\n if (this.pdfViewer.signatureFitMode === 'Default') {\n {\n var padding = Math.min(bounds.height / this.paddingDifferenceValue, bounds.width / this.paddingDifferenceValue);\n var maxHeight = bounds.height - padding;\n var maxWidth = bounds.width - padding;\n var imageWidth = image.width;\n var imageHeight = image.height;\n var beforeWidth = bounds.width;\n var beforeHeight = bounds.height;\n var ratio = Math.min(maxWidth / imageWidth, maxHeight / imageHeight);\n bounds.width = imageWidth * ratio;\n bounds.height = imageHeight * ratio;\n bounds.x = bounds.x + (beforeWidth - bounds.width) / 2;\n bounds.y = bounds.y + (beforeHeight - bounds.height) / 2;\n }\n annot = {\n // eslint-disable-next-line max-len\n id: currentField.id, bounds: { x: bounds.x, y: bounds.y, width: bounds.width, height: bounds.height }, pageIndex: currentPage, data: currentValue, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: rotateAngle, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n signString = annot.data;\n if (this.pdfViewerBase.drawSignatureWithTool && signatureField) {\n annot.id = signatureField.id + \"_content\";\n var obj = this.pdfViewer.add(annot);\n signatureField.wrapper.children.push(obj.wrapper);\n }\n else {\n this.pdfViewer.add(annot);\n }\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentPage);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentPage);\n this.pdfViewerBase.signatureModule.showSignatureDialog(false);\n if (currentField.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus') {\n currentField.className = 'e-pdfviewer-signatureformfields-signature e-pv-signature-focus';\n }\n else {\n currentField.className = 'e-pdfviewer-signatureformfields-signature';\n }\n if (this.pdfViewerBase.drawSignatureWithTool && signatureField) {\n var key = target.offsetParent.offsetParent.id.split('_')[0] + '_content';\n this.updateSignatureDataInSession(annot, key);\n }\n else {\n this.updateDataInSession(currentField, annot.data, annot.bounds, signatureFontFamily, signatureFontSize);\n }\n currentField.style.pointerEvents = 'none';\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(annot.pageIndex, null, annot, 'FormField Value Change', '', annot, annot);\n }\n // eslint-disable-next-line\n if (annot.shapeAnnotationType === \"SignatureImage\") {\n this.pdfViewer.fireSignatureAdd(annot.pageIndex, annot.id, annot.shapeAnnotationType, annot.bounds, annot.opacity, null, null, signString);\n }\n this.pdfViewer.fireFocusOutFormField(currentField.name, currentValue);\n }\n this.pdfViewerBase.signatureModule.hideSignaturePanel();\n this.pdfViewerBase.drawSignatureWithTool = false;\n this.pdfViewer.isInitialFieldToolbarSelection = false;\n };\n FormFields.prototype.updateSignatureDataInSession = function (annot, key) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n if (!isNullOrUndefined(formFieldsData)) {\n var _loop_3 = function (i) {\n if (formFieldsData[i].Key === key) {\n var formFieldIndex = this_3.pdfViewer.formFieldCollection.findIndex(function (el) { return el.id === formFieldsData[i].FormField.id.split('_')[0]; });\n if (annot.shapeAnnotationType === \"SignatureText\") {\n formFieldsData[i].FormField.signatureType = \"Text\";\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Text\";\n this_3.pdfViewer.nameTable[key].signatureType = \"Text\";\n formFieldsData[i].FormField.fontFamily = annot.fontFamily === \"TimesRoman\" ? \"Times New Roman\" : annot.fontFamily;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.fontFamily = annot.fontFamily;\n this_3.pdfViewer.nameTable[key].fontFamily = annot.fontFamily;\n formFieldsData[i].FormField.fontSize = annot.fontSize;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.fontSize = annot.fontSize;\n this_3.pdfViewer.nameTable[key].fontSize = annot.fontSize;\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureType = \"Text\" : null;\n }\n else if (annot.shapeAnnotationType === \"SignatureImage\") {\n formFieldsData[i].FormField.signatureType = \"Image\";\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Image\";\n this_3.pdfViewer.nameTable[key].signatureType = \"Image\";\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureType = \"Image\" : null;\n }\n else {\n formFieldsData[i].FormField.signatureType = \"Path\";\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureType = \"Path\";\n this_3.pdfViewer.nameTable[key].signatureType = \"Path\";\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureType = \"Path\" : null;\n }\n formFieldsData[i].FormField.signatureBound = annot.bounds;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.signatureBound = annot.bounds;\n this_3.pdfViewer.nameTable[key].signatureBound = annot.bounds;\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].signatureBound = annot.bounds : null;\n if (annot.shapeAnnotationType === \"Path\") {\n var collectionData = processPathData(annot.data);\n var csData = splitArrayCollection(collectionData);\n formFieldsData[i].FormField.value = JSON.stringify(csData);\n this_3.pdfViewer.nameTable[key].value = annot.data;\n this_3.pdfViewer.nameTable[key.split('_')[0]].value = annot.data;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.value = JSON.stringify(csData);\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].value = JSON.stringify(csData) : null;\n }\n else {\n formFieldsData[i].FormField.value = annot.data;\n this_3.pdfViewerBase.formFieldCollection[i].FormField.value = annot.data;\n this_3.pdfViewer.nameTable[key.split('_')[0]].value = annot.data;\n this_3.pdfViewer.nameTable[key].value = annot.data;\n formFieldIndex > -1 ? this_3.pdfViewer.formFieldCollection[formFieldIndex].value = annot.data : null;\n }\n this_3.pdfViewer.formDesigner.updateFormFieldCollections(formFieldsData[i].FormField);\n this_3.pdfViewer.formDesigner.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldsData[i].FormField, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, \"\", formFieldsData[i].FormField.value);\n }\n };\n var this_3 = this;\n for (var i = 0; i < formFieldsData.length; i++) {\n _loop_3(i);\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(formFieldsData, '_formDesigner');\n };\n /**\n * @private\n */\n FormFields.prototype.getDefaultBoundsforSign = function (bounds) {\n return { x: bounds.x + 4, y: bounds.y + 4, width: bounds.width - 8, height: bounds.height - 8 };\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.getSignBounds = function (currentIndex, rotateAngle, currentPage, zoomvalue, currentLeft, currentTop, currentWidth, currentHeight, isDraw) {\n // eslint-disable-next-line\n var bounds;\n var signatureId = this.pdfViewer.isInitialFieldToolbarSelection ? 'initialIcon' : 'signIcon';\n var signIcon = document.getElementById(signatureId + '_' + currentPage + '_' + currentIndex);\n var signLeft = signIcon ? parseFloat(signIcon.style.left) * zoomvalue : 0;\n var difference = (currentLeft * zoomvalue) - (signLeft / zoomvalue);\n if (rotateAngle === 90 || rotateAngle === 270) {\n this.rotateAngle = 0;\n if (signIcon.style.left !== '') {\n if (isDraw) {\n return bounds = { x: currentLeft - (difference / zoomvalue) - zoomvalue, y: currentTop + (difference / zoomvalue) + zoomvalue, width: currentWidth, height: currentHeight };\n }\n else {\n return bounds = { x: currentLeft - (difference / zoomvalue) - zoomvalue, y: currentTop + (difference / zoomvalue) + zoomvalue, width: currentHeight, height: currentWidth };\n }\n }\n else {\n difference = 10;\n if (isDraw) {\n return bounds = { x: currentLeft - currentWidth, y: currentTop + currentWidth, width: currentHeight, height: currentWidth };\n }\n else {\n return bounds = { x: currentLeft - currentWidth - difference / 2, y: currentTop + currentWidth + difference, width: currentHeight, height: currentWidth };\n }\n }\n }\n else {\n this.rotateAngle = 0;\n return bounds = { x: currentLeft, y: currentTop, width: currentWidth, height: currentHeight };\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.updateSameFieldsValue = function (event) {\n if (this.formFieldsData) {\n for (var i = 0; i < this.formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentField = this.formFieldsData[i];\n if (event.target.name === currentField.FieldName && event.target.id !== currentField.uniqueID) {\n // eslint-disable-next-line\n var currentTarget = document.getElementById(this.formFieldsData[i].uniqueID);\n if (currentTarget) {\n currentTarget.value = event.target.value;\n }\n else {\n currentField.Text = event.target.value;\n this.pdfViewerBase.setItemInSessionStorage(this.formFieldsData, '_formfields');\n }\n }\n }\n }\n };\n FormFields.prototype.updateFormFieldsValue = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n var fieldIndex;\n var nextFields;\n if (currentTarget.InsertSpaces && !this.isKeyDownCheck) {\n // eslint-disable-next-line\n var font = parseInt(currentTarget.style.width) + (parseInt(currentTarget.style.height) / 2);\n currentTarget.style.width = '' + font + 'px';\n this.isKeyDownCheck = true;\n }\n if (event.which === 9 && currentTarget && (currentTarget.className === 'e-pdfviewer-formFields' || currentTarget.className === 'e-pdfviewer-signatureformfields e-pv-signature-focus' || currentTarget.className === 'e-pdfviewer-signatureformfields-signature')) {\n // eslint-disable-next-line\n var id = currentTarget.id.split('input_')[1].split('_')[0];\n // eslint-disable-next-line\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + parseInt(id));\n // eslint-disable-next-line\n var currentFields = textLayer.getElementsByClassName('e-pdfviewer-formFields');\n var istabindexed = true;\n fieldIndex = this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget.id; });\n if ((!event.shiftKey && event.key === \"Tab\")) {\n nextFields = fieldIndex + 1 < this.pdfViewer.formFieldCollections.length ? this.pdfViewer.formFieldCollections[fieldIndex + 1] : this.pdfViewer.formFieldCollections[0];\n }\n this.pdfViewer.focusFormField(nextFields);\n istabindexed = true;\n event.preventDefault();\n var tabindex = currentTarget.tabIndex + 1;\n while (!istabindexed) {\n for (var l = 0; l < currentFields.length; l++) {\n istabindexed = false;\n if (currentFields[l].tabIndex === (tabindex)) {\n currentFields[l].focus();\n istabindexed = true;\n event.preventDefault();\n break;\n }\n }\n if (this.maintainTabIndex[id] === tabindex) {\n istabindexed = true;\n }\n tabindex = tabindex + 1;\n }\n }\n if ((event.shiftKey && event.key === \"Tab\")) {\n var fieldIndex_1 = this.pdfViewer.formFieldCollections.findIndex(function (field) { return field.id === currentTarget.id; });\n var nextField = fieldIndex_1 > 0 ? this.pdfViewer.formFieldCollections[fieldIndex_1 - 1] : this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.length - 1];\n this.pdfViewer.focusFormField(nextField);\n event.preventDefault();\n }\n if (event.currentTarget.classList.contains('e-pdfviewer-signatureformfields') ||\n event.currentTarget.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n if (event.key === 'Enter') {\n // eslint-disable-next-line\n var currentTarget_1 = event.target;\n for (var m = 0; m < this.pdfViewer.formFieldCollections.length; m++) {\n if (currentTarget_1.id === this.pdfViewer.formFieldCollections[m].id) {\n this.setFocus(currentTarget_1.id);\n this.pdfViewer.fireFormFieldClickEvent('formFieldClicked', this.pdfViewer.formFieldCollections[m]);\n }\n }\n }\n else {\n event.preventDefault();\n }\n }\n };\n FormFields.prototype.changeFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n this.updateDataInSession(currentTarget);\n };\n FormFields.prototype.calculateSignatureBounds = function (signatureCavasWidth, signatureCavasHeight, newdifferenceX, newdifferenceY, isSignature, currentField, currentData) {\n var ratioX = newdifferenceX / signatureCavasWidth;\n var ratioY = newdifferenceY / signatureCavasHeight;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var currentWidth = 0;\n var currentHeight = 0;\n var isSignatureStretched = false;\n var isHeightStretched = false;\n var leftDifference = 0;\n var topDifference = 0;\n if (isSignature) {\n currentWidth = this.pdfViewer.handWrittenSignatureSettings.width ? this.pdfViewer.handWrittenSignatureSettings.width : 150;\n currentHeight = this.pdfViewer.handWrittenSignatureSettings.height ? this.pdfViewer.handWrittenSignatureSettings.height : 100;\n }\n else {\n var fieldWidth = currentField ? currentField.style.width === '100%' ? currentField.clientWidth : parseFloat(currentField.style.width) : this.ConvertPointToPixel(currentData.LineBounds.Width);\n var fieldHeight = currentField ? currentField.style.height === '100%' ? currentField.clientHeight : parseFloat(currentField.style.height) : this.ConvertPointToPixel(currentData.LineBounds.Height);\n var fieldWidthRatio = fieldWidth / fieldHeight;\n var fieldHeightRatio = fieldHeight / fieldWidth;\n var canvasWidthRatio = signatureCavasWidth / signatureCavasHeight;\n var canvasHeightRatio = signatureCavasHeight / signatureCavasWidth;\n var fieldRotation = currentField ? currentField.offsetParent.offsetParent.style.transform ? currentField.offsetParent.offsetParent.style.transform : currentField.style.transform : currentData.RotationAngle;\n if ((fieldWidthRatio > canvasWidthRatio) || (fieldHeightRatio > canvasWidthRatio) || ((Math.abs(fieldWidthRatio - fieldHeightRatio)) <= 1)) {\n var ratioDifference = 0;\n if ((fieldHeightRatio > canvasWidthRatio) || ((Math.abs(fieldWidthRatio - fieldHeightRatio)) <= 1)) {\n isHeightStretched = true;\n ratioDifference = fieldHeightRatio / canvasHeightRatio;\n }\n else {\n isSignatureStretched = true;\n ratioDifference = fieldWidthRatio / canvasWidthRatio;\n }\n if (fieldRotation === 'rotate(90deg)' || fieldRotation === 'rotate(270deg)') {\n // eslint-disable-next-line\n currentWidth = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldWidth / zoomvalue;\n }\n else {\n if (isSignatureStretched) {\n // eslint-disable-next-line\n leftDifference = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentWidth = (fieldWidth / ratioDifference) / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldHeight / zoomvalue;\n }\n if (isHeightStretched) {\n // eslint-disable-next-line\n topDifference = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentWidth = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentHeight = (fieldHeight / ratioDifference) / zoomvalue;\n }\n }\n }\n else {\n if (fieldRotation === 'rotate(90deg)' || fieldRotation === 'rotate(270deg)') {\n // eslint-disable-next-line\n currentWidth = fieldHeight / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldWidth / zoomvalue;\n }\n else {\n // eslint-disable-next-line\n currentWidth = fieldWidth / zoomvalue;\n // eslint-disable-next-line\n currentHeight = fieldHeight / zoomvalue;\n }\n }\n }\n var currentLeftDiff = (signatureCavasWidth - newdifferenceX) / 2;\n var currentTopDiff = (signatureCavasHeight - newdifferenceY) / 2;\n if (isSignatureStretched) {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * leftDifference;\n var leftValueDiff = ((leftDifference * ratioX) - (currentWidth * ratioX)) / 2;\n currentLeftDiff = currentLeftDiff + leftValueDiff;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * currentHeight;\n }\n else if (isHeightStretched) {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * currentWidth;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * topDifference;\n var topValueDiff = ((topDifference * ratioY) - (currentHeight * ratioY)) / 2;\n currentTopDiff = currentTopDiff + topValueDiff;\n }\n else {\n currentLeftDiff = (currentLeftDiff / signatureCavasWidth) * currentWidth;\n currentTopDiff = (currentTopDiff / signatureCavasHeight) * currentHeight;\n }\n currentWidth = currentWidth * ratioX;\n currentHeight = currentHeight * ratioY;\n return { currentLeftDiff: currentLeftDiff, currentTopDiff: currentTopDiff, currentWidth: currentWidth, currentHeight: currentHeight };\n };\n /**\n * @param data\n * @param isSignature\n * @param currentField\n * @param data\n * @param isSignature\n * @param currentField\n * @param data\n * @param isSignature\n * @param currentField\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.updateSignatureAspectRatio = function (data, isSignature, currentField, currentData) {\n // eslint-disable-next-line\n var collectionData = processPathData(data);\n // eslint-disable-next-line\n var csData = splitArrayCollection(collectionData);\n var minimumX = -1;\n var minimumY = -1;\n var maximumX = -1;\n var maximumY = -1;\n var signatureCanvas = document.getElementById(this.pdfViewer.element.id + '_signatureCanvas_');\n var signatureCavasWidth = 0;\n var signatureCavasHeight = 0;\n for (var m = 0; m < csData.length; m++) {\n // eslint-disable-next-line\n var val = csData[m];\n if (minimumX === -1) {\n // eslint-disable-next-line\n minimumX = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n maximumX = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n minimumY = parseFloat(val['y'].toString());\n // eslint-disable-next-line\n maximumY = parseFloat(val['y'].toString());\n }\n else {\n // eslint-disable-next-line\n var point1 = parseFloat(val['x'].toString());\n // eslint-disable-next-line\n var point2 = parseFloat(val['y'].toString());\n if (minimumX >= point1) {\n minimumX = point1;\n }\n if (minimumY >= point2) {\n minimumY = point2;\n }\n if (maximumX <= point1) {\n maximumX = point1;\n }\n if (maximumY <= point2) {\n maximumY = point2;\n }\n }\n }\n signatureCavasWidth = signatureCanvas ? signatureCanvas.clientWidth : 650;\n signatureCavasHeight = signatureCanvas ? signatureCanvas.clientHeight : 300;\n var newdifferenceX = maximumX - minimumX;\n var newdifferenceY = maximumY - minimumY;\n var signBounds = this.calculateSignatureBounds(signatureCavasWidth, signatureCavasHeight, newdifferenceX, newdifferenceY, isSignature, currentField, currentData);\n if (isSignature) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n var pageIndex = this.pdfViewerBase.currentPageNumber - 1;\n var pageDiv = document.getElementById(this.pdfViewer.element.id + '_pageDiv_' + pageIndex);\n var currentLeft = ((parseFloat(pageDiv.style.width) / 2) - (signBounds.currentWidth / 2)) / zoomvalue;\n // eslint-disable-next-line max-len\n var currentTop = ((parseFloat(pageDiv.style.height) / 2) - (signBounds.currentHeight / 2)) / zoomvalue;\n return { x: currentLeft, y: currentTop, width: signBounds.currentWidth, height: signBounds.currentHeight };\n }\n else {\n return { left: signBounds.currentLeftDiff, top: signBounds.currentTopDiff, width: signBounds.currentWidth, height: signBounds.currentHeight };\n }\n };\n /**\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @param target\n * @param signaturePath\n * @param signatureBounds\n * @param signatureFontFamily\n * @param signatureFontSize\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.updateDataInSession = function (target, signaturePath, signatureBounds, signatureFontFamily, signatureFontSize) {\n this.pdfViewerBase.updateDocumentEditedProperty(true);\n // eslint-disable-next-line\n var filterFields = [];\n var fieldsByName = \" \";\n var filterFieldName = [];\n var filterArrayLength = 0;\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data && !this.pdfViewer.formDesignerModule) {\n // eslint-disable-next-line\n var FormFieldsData = JSON.parse(data);\n filterFields = FormFieldsData.filter(function (item) { return item.uniqueID === target.id; });\n if (filterFields.length > 0) {\n fieldsByName = filterFields[0].FieldName;\n filterFieldName = FormFieldsData.filter(function (item) { return item.FieldName === fieldsByName; });\n filterArrayLength = filterFieldName.length;\n }\n for (var m = 0; m < FormFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = FormFieldsData[m];\n if (currentData.uniqueID === target.id || fieldsByName === currentData.FieldName) {\n if (target && target.type === 'text' || target.type === 'password' || target.type === 'textarea') {\n var signField = target;\n if (signField.classList.contains('e-pdfviewer-signatureformfields') || signField.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n if (signaturePath) {\n currentData.Value = signaturePath;\n }\n if (signatureBounds) {\n currentData.Bounds = signatureBounds;\n }\n if (signatureFontFamily) {\n currentData.FontFamily = signatureFontFamily;\n currentData.FontSize = signatureFontSize;\n }\n }\n else {\n currentData.Text = target.value;\n currentData.Value = target.value;\n }\n }\n else if (target.type === 'radio') {\n if (target.checked) {\n for (var l = 0; l < FormFieldsData.length; l++) {\n // eslint-disable-next-line\n var currentType = FormFieldsData[l];\n if (FormFieldsData[l].GroupName === target.name) {\n FormFieldsData[l].Selected = false;\n }\n }\n if (target.value == currentData.Value) {\n currentData.Selected = true;\n break;\n }\n else {\n currentData.Selected = false;\n }\n }\n }\n else if (target.type === 'checkbox') {\n var targetCheckBox = target.id;\n var filterCheckBoxSameName = FormFieldsData.filter(function (sameNameCheckboxField) { return (sameNameCheckboxField.GroupName === target.name) && sameNameCheckboxField.Name == 'CheckBox'; });\n for (var l = 0; l < filterCheckBoxSameName.length; l++) {\n // eslint-disable-next-line\n var currentType = filterCheckBoxSameName[l];\n currentType.Selected = false;\n currentType.checked = false;\n // eslint-disable-next-line\n var currentTarget = document.getElementById(currentType.uniqueID);\n if (currentTarget) {\n if (targetCheckBox !== currentTarget.id) {\n currentTarget.Selected = false;\n currentTarget.checked = false;\n currentTarget.style.webkitAppearance = 'none';\n }\n }\n }\n if (target.checked) {\n currentData.Selected = true;\n }\n else {\n currentData.Selected = false;\n }\n }\n else if (target.type === 'select-one' && target.size === 0) {\n // eslint-disable-next-line\n var currentValue = target.options[target.selectedIndex].text;\n // eslint-disable-next-line\n var childrens = target.children;\n for (var k = 0; k < childrens.length; k++) {\n if (childrens[k].text === currentValue) {\n currentData.SelectedValue = currentValue;\n }\n }\n }\n else if (target.type === 'select-multiple' || target.size > 0) {\n // eslint-disable-next-line\n var currentValue = target.selectedOptions;\n currentData.SelectedList = [];\n for (var z = 0; z < currentValue.length; z++) {\n // eslint-disable-next-line\n var childrens = target.children;\n for (var k = 0; k < childrens.length; k++) {\n if (childrens[k] === currentValue[z]) {\n currentData.SelectedList.push(k);\n }\n }\n }\n currentData.SelectedValue = target.value;\n var index = currentData.TextList ? currentData.TextList.indexOf(target.value) : 0;\n currentData.selectedIndex = index > -1 ? index : 0;\n currentData.SelectedList = [currentData.selectedIndex];\n }\n if (target.disabled) {\n currentData.IsReadonly = true;\n }\n this.updateFormFieldsCollection(currentData);\n filterArrayLength--;\n if (filterArrayLength == 0)\n break;\n }\n else if (target && target.getAttribute('list') != null && target.type === 'text' && currentData.uniqueID === target.list.id) {\n currentData.SelectedValue = target.value;\n }\n this.updateFormFieldsCollection(currentData);\n }\n window.sessionStorage.removeItem(this.pdfViewerBase.documentId + '_formfields');\n this.pdfViewerBase.setItemInSessionStorage(FormFieldsData, '_formfields');\n }\n if (this.pdfViewer.formDesignerModule && target && target.id) {\n var selectedItem = this.pdfViewer.nameTable[target.id.split('_')[0]];\n if (selectedItem && selectedItem.wrapper && selectedItem.wrapper.children[0]) {\n selectedItem.value = target.value;\n var point = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.pdfViewer.formDesignerModule.updateFormDesignerFieldInSessionStorage(point, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n }\n }\n };\n /**\n * @private\n */\n FormFields.prototype.removeExistingFormFields = function () {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n if (formFieldsData) {\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].FormField.formFieldAnnotationType === \"RadioButton\") {\n var buttonItem = [];\n buttonItem = formFieldsData[i].FormField.radiobuttonItem;\n var sameButtonItemId = formFieldsData[i].FormField.id.split('_')[0];\n for (var j = 0; j < buttonItem.length; j++) {\n var otherButton = buttonItem[j];\n if (otherButton.id.split('_')[0] !== sameButtonItemId) {\n this.pdfViewer.formDesignerModule.deleteFormField(otherButton.id.split('_')[0]);\n }\n }\n }\n if (formFieldsData[i].Key) {\n this.pdfViewer.formDesignerModule.deleteFormField(formFieldsData[i].Key.split('_')[0]);\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyCommonProperties = function (inputdiv, pageIndex, index, currentData, isFieldRotated) {\n // eslint-disable-next-line\n var inputField = document.getElementById(this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index);\n if (inputField) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n if (inputdiv.type === 'text' && inputField.parentElement !== textLayer) {\n inputField.parentElement.remove();\n }\n inputField.remove();\n }\n // eslint-disable-next-line\n var signIcon = document.getElementById('signIcon_' + pageIndex + '_' + index);\n var left = parseFloat(inputdiv.style.left);\n var top = parseInt(inputdiv.style.top);\n var width = parseFloat(inputdiv.style.width);\n var height = parseFloat(inputdiv.style.height);\n var signIconWidth;\n var signIconHeght;\n var hightDifference;\n var widthDifference;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n if (signIcon && !isFieldRotated) {\n signIconWidth = parseFloat(signIcon.style.width);\n signIconHeght = parseFloat(signIcon.style.height);\n if (signIcon.style.transform == 'rotate(90deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n hightDifference = height / 2;\n widthDifference = signIconWidth * zoomvalue;\n signIcon.style.left = ((left - (hightDifference - (signIconWidth * zoomvalue))) + (widthDifference / 2)) + 'px';\n }\n if (signIcon.style.transform == 'rotate(180deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n signIcon.style.left = left + 'px';\n signIcon.style.top = (top) + 'px';\n }\n if (signIcon.style.transform == 'rotate(270deg)') {\n signIcon.style.transform = 'rotate(0deg)';\n hightDifference = height / 2;\n widthDifference = signIconWidth * zoomvalue;\n signIcon.style.left = ((left - (hightDifference - widthDifference)) + (widthDifference / 2)) + 'px';\n signIcon.style.top = ((top + (width + (signIconHeght * zoomvalue)) + ((signIconHeght * zoomvalue) / 2))) + 'px';\n }\n }\n if (currentData.IsSignatureField && this.isSignatureField) {\n inputdiv.className = 'e-pdfviewer-signatureformfields-signature';\n inputdiv.style.pointerEvents = 'none';\n }\n else if (currentData.IsSignatureField) {\n if (currentData.Value) {\n inputdiv.className = 'e-pdfviewer-signatureformfields-signature';\n inputdiv.style.pointerEvents = 'none';\n }\n else {\n inputdiv.className = 'e-pdfviewer-signatureformfields';\n }\n }\n else if (currentData.Name !== 'Button') {\n inputdiv.className = 'e-pdfviewer-formFields';\n }\n inputdiv.id = this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index;\n inputdiv.ariaLabel = this.pdfViewer.element.id + 'input_' + pageIndex;\n inputdiv.style.zIndex = 1000;\n };\n /**\n * @param currentData\n * @param pageIndex\n * @param index\n * @param printContainer\n * @param currentData\n * @param pageIndex\n * @param index\n * @param printContainer\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.createFormFields = function (currentData, pageIndex, index, printContainer, count) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n currentField = this.createTextBoxField(currentData, pageIndex, 'text');\n break;\n case 'Password':\n currentField = this.createTextBoxField(currentData, pageIndex, 'password');\n break;\n case 'RadioButton':\n currentField = this.createRadioBoxField(currentData, pageIndex, 'radio');\n break;\n case 'CheckBox':\n currentField = this.createRadioBoxField(currentData, pageIndex, 'checkbox', printContainer);\n break;\n case 'DropDown':\n currentField = this.createDropDownField(currentData, pageIndex, index, printContainer);\n break;\n case 'ListBox':\n currentField = this.createListBoxField(currentData, pageIndex);\n break;\n case 'InitialField':\n case 'SignatureField':\n currentField = this.createSignatureField(currentData, pageIndex, index, printContainer, count);\n var isFieldRotated = false;\n if (currentData['Rotation'] === 0) {\n isFieldRotated = true;\n }\n if (currentData.Value && currentData.Value !== '') {\n this.renderExistingAnnnot(currentData, index, printContainer, isFieldRotated);\n this.isSignatureRendered = true;\n count++;\n }\n break;\n case 'Button':\n currentField = this.createButtonField(currentData, pageIndex);\n break;\n case 'ink':\n if (this.pdfViewer.formDesignerModule) {\n if (currentData.Value && currentData.Value !== '' && !this.isSignatureRendered) {\n this.renderExistingAnnnot(currentData, index, printContainer);\n }\n }\n break;\n case 'SignatureText':\n case 'SignatureImage':\n if (currentData.Value && currentData.Value !== '' && !this.isSignatureRendered) {\n this.renderExistingAnnnot(currentData, index, printContainer);\n }\n break;\n }\n return { currentField: currentField, count: count };\n };\n FormFields.prototype.getFormFieldType = function (currentData) {\n // eslint-disable-next-line\n var currentField;\n // eslint-disable-next-line\n switch (currentData['Name']) {\n case 'Textbox':\n currentField = 'Textbox';\n break;\n case 'Password':\n currentField = 'Password';\n break;\n case 'RadioButton':\n currentField = 'RadioButton';\n break;\n case 'CheckBox':\n currentField = 'CheckBox';\n break;\n case 'DropDown':\n currentField = 'DropDown';\n break;\n case 'ListBox':\n currentField = 'ListBox';\n break;\n case 'SignatureField':\n currentField = 'SignatureField';\n if (currentData.IsInitialField) {\n currentField = 'InitialField';\n }\n break;\n case 'InitialField':\n currentField = 'InitialField';\n break;\n }\n return currentField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createButtonField = function (data, pageIndex) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n if (data.Value && (this.isBase64(data.Value) || this.isURL(data.Value))) {\n inputField.type = 'image';\n inputField.src = data.Value;\n }\n else {\n inputField.type = 'button';\n }\n inputField.className = 'e-pv-buttonItem';\n if (data.Text !== '') {\n inputField.value = data.Text;\n }\n else {\n inputField.value = '';\n }\n inputField.name = data.FieldName;\n return inputField;\n };\n /**\n * Returns the boolean value based on the imgae source base64\n *\n * @param {string} imageSrc - Passing the image source.\n *\n * @returns {boolean}\n */\n FormFields.prototype.isBase64 = function (imageSrc) {\n return /^data:([a-zA-Z]*\\/[a-zA-Z+.-]*);base64,/.test(imageSrc);\n };\n /**\n * Returns the boolean value based on the imgae source URL\n *\n * @param {string} imageSrc - Passing the image source.\n *\n * @returns {boolean}\n */\n FormFields.prototype.isURL = function (imageSrc) {\n try {\n new URL(imageSrc);\n return true;\n }\n catch (_a) {\n return false;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.createTextBoxField = function (data, pageIndex, type) {\n // eslint-disable-next-line\n var inputField;\n if (data.Visible === 1) {\n return;\n }\n if (data.Multiline) {\n inputField = document.createElement('textarea');\n inputField.style.resize = 'none';\n }\n else {\n inputField = document.createElement('input');\n inputField.type = type;\n }\n if (data.MaxLength > 0) {\n inputField.maxLength = data.MaxLength;\n }\n this.addAlignmentPropety(data, inputField);\n if (data.Text !== '') {\n inputField.value = data.Text;\n }\n else {\n inputField.value = '';\n }\n if (!this.pdfViewer.enableAutoComplete) {\n inputField.autocomplete = 'off';\n }\n inputField.name = data.FieldName;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.checkIsReadonly = function (data, inputField) {\n var isReadonly = false;\n for (var n = 0; n < this.readOnlyCollection.length; n++) {\n if (inputField.id === this.readOnlyCollection[n]) {\n isReadonly = true;\n break;\n }\n }\n if (!this.pdfViewer.formDesignerModule && !this.pdfViewer.annotationModule && (data.IsInitialField || data.IsSignatureField)) {\n isReadonly = true;\n }\n if (data.IsReadonly || (!this.pdfViewer.enableFormFields) || isReadonly) {\n inputField.disabled = true;\n inputField.style.cursor = 'default';\n inputField.style.backgroundColor = 'transparent';\n }\n else {\n // eslint-disable-next-line\n var borderColor = data.BackColor;\n inputField.style.backgroundColor = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 0.2 + ')';\n // eslint-disable-next-line\n var fontColor = data.FontColor;\n inputField.style.color = 'rgba(' + fontColor.R + ',' + fontColor.G + ',' + fontColor.B + ',' + 1 + ')';\n }\n };\n /**\n * @param isReadonly\n * @private\n */\n // eslint-disable-next-line max-len\n FormFields.prototype.formFieldsReadOnly = function (isReadonly) {\n // eslint-disable-next-line\n var formFields = document.getElementsByClassName('e-pdfviewer-formFields');\n this.makeformFieldsReadonly(formFields, isReadonly);\n // eslint-disable-next-line\n var signatureFields = document.getElementsByClassName('e-pdfviewer-signatureformfields');\n this.makeformFieldsReadonly(signatureFields, isReadonly);\n };\n // eslint-disable-next-line\n FormFields.prototype.makeformFieldsReadonly = function (formFields, isReadonly) {\n for (var i = 0; i < formFields.length; i++) {\n if (formFields[i]) {\n // eslint-disable-next-line\n var inputField = formFields[i];\n if (!isReadonly) {\n inputField.disabled = true;\n inputField.style.cursor = 'default';\n }\n else {\n // eslint-disable-next-line\n inputField.disabled = false;\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyTabIndex = function (data, inputField, pageIndex) {\n inputField.tabIndex = data.TabIndex;\n this.maxTabIndex = Math.max(this.maxTabIndex, inputField.tabIndex);\n if (this.minTabIndex === -1) {\n this.minTabIndex = inputField.tabIndex;\n }\n this.minTabIndex = Math.min(this.minTabIndex, inputField.tabIndex);\n this.maintainTabIndex[pageIndex.toString()] = this.maxTabIndex;\n this.maintanMinTabindex[pageIndex.toString()] = this.minTabIndex;\n };\n // eslint-disable-next-line\n FormFields.prototype.checkIsRequiredField = function (data, inputField) {\n if (data.IsRequired) {\n inputField.required = true;\n inputField.style.border = '1px solid red';\n }\n else {\n // eslint-disable-next-line\n var borderColor = data.BorderColor;\n inputField.style.border = data.BorderWidth;\n inputField.style.borderColor = 'rgba(' + borderColor.R + ',' + borderColor.G + ',' + borderColor.B + ',' + 1 + ')';\n }\n if (inputField.type !== 'checkbox' && inputField.type !== 'radio') {\n var borderStyle = data.BorderStyle;\n this.addBorderStylePropety(borderStyle, inputField);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.applyDefaultColor = function (inputField) {\n // eslint-disable-next-line max-len\n if (inputField.type !== 'button' && (inputField.style.backgroundColor === 'rgba(255, 255, 255, 0.2)' || inputField.style.backgroundColor === 'rgba(0, 0, 0, 0.2)') || inputField.style.backgroundColor === 'rgba(218, 234, 247, 0.2)') {\n inputField.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n }\n if (inputField.style.color === 'rgba(255, 255, 255, 0.2)') {\n inputField.style.color = 'black';\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.addAlignmentPropety = function (data, inputField) {\n // eslint-disable-next-line\n var alignment = data.Alignment;\n switch (alignment) {\n case 0:\n inputField.style.textAlign = 'left';\n break;\n case 1:\n inputField.style.textAlign = 'center';\n break;\n case 2:\n inputField.style.textAlign = 'right';\n break;\n case 3:\n inputField.style.textAlign = 'justify';\n break;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.addBorderStylePropety = function (borderStyle, inputField) {\n // eslint-disable-next-line\n switch (borderStyle) {\n case 0:\n inputField.style.borderStyle = 'solid';\n break;\n case 1:\n inputField.style.borderStyle = 'dashed';\n break;\n case 2:\n inputField.style.borderStyle = 'outset';\n break;\n case 3:\n inputField.style.borderStyle = 'inset';\n break;\n case 4:\n inputField.style.borderStyle = 'outset';\n break;\n case 5:\n inputField.style.borderStyle = 'dotted';\n break;\n case 6:\n inputField.style.borderStyle = 'inset';\n break;\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.createRadioBoxField = function (data, pageIndex, type, printContainer) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n inputField.type = type;\n if (data.Selected) {\n inputField.checked = true;\n }\n else if (type === 'checkbox' && !printContainer) {\n inputField.style.webkitAppearance = 'none';\n }\n inputField.name = data.GroupName;\n inputField.value = data.Value;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createDropDownField = function (data, pageIndex, index, printContainer) {\n // eslint-disable-next-line\n var inputField = document.createElement('select');\n // eslint-disable-next-line\n var childItems = data['TextList'];\n if (data.Selected && !printContainer) {\n // eslint-disable-next-line\n var previousField = document.getElementById('editableDropdown' + pageIndex + '_' + index);\n if (previousField) {\n previousField.remove();\n }\n // eslint-disable-next-line\n var inputFields = document.createElement('input');\n inputFields.id = 'editableDropdown' + pageIndex + '_' + index;\n inputFields.setAttribute('list', this.pdfViewer.element.id + 'input_' + pageIndex + '_' + index);\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n inputFields.style.position = 'absolute';\n inputFields.style.border = '0px';\n // eslint-disable-next-line\n this.applyPosition(inputFields, bounds, font, pageIndex, data['Rotation']);\n inputFields.style.backgroundColor = 'rgba(0, 20, 200, 0.2)';\n inputFields.className = 'e-pdfviewer-formFields';\n if (data.selectedIndex === -1) {\n inputFields.value = data.SelectedValue;\n }\n if (printContainer) {\n printContainer.appendChild(inputFields);\n }\n else {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n textLayer.appendChild(inputFields);\n }\n inputFields.addEventListener('focus', this.focusFormFields.bind(this));\n inputFields.addEventListener('blur', this.blurFormFields.bind(this));\n inputFields.addEventListener('click', this.updateFormFields.bind(this));\n inputFields.addEventListener('change', this.changeFormFields.bind(this));\n inputFields.addEventListener('keydown', this.updateFormFieldsValue.bind(this));\n inputField = document.createElement('DATALIST');\n }\n for (var j = 0; j < childItems.length; j++) {\n // eslint-disable-next-line\n var option = document.createElement('option');\n option.className = 'e-dropdownSelect';\n if (data.SelectedValue === childItems[j] || data.selectedIndex === j) {\n option.selected = true;\n }\n else {\n option.selected = false;\n }\n option.innerHTML = childItems[j];\n inputField.appendChild(option);\n }\n inputField.name = data.Text;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createListBoxField = function (data, pageIndex) {\n // eslint-disable-next-line\n var inputField = document.createElement('select');\n // eslint-disable-next-line\n var childItems = data['TextList'];\n if (data.MultiSelect) {\n inputField.multiple = true;\n }\n else {\n inputField.multiple = false;\n inputField.size = childItems.length;\n }\n for (var j = 0; j < childItems.length; j++) {\n // eslint-disable-next-line\n var option = document.createElement('option');\n option.className = 'e-pdfviewer-ListBox';\n for (var k = 0; k < data.SelectedList.length; k++) {\n if (data.SelectedList[k] === j) {\n option.selected = true;\n }\n }\n option.innerHTML = childItems[j];\n inputField.appendChild(option);\n }\n inputField.name = data.Text;\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.createSignatureField = function (data, pageIndex, index, printContainer, count) {\n // eslint-disable-next-line\n var inputField = document.createElement('input');\n inputField.type = 'text';\n inputField.name = data.FieldName;\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n // eslint-disable-next-line\n var previousField = document.getElementById('signIcon_' + pageIndex + '_' + index);\n if (previousField && !printContainer) {\n previousField.remove();\n }\n this.pdfViewerBase.isInitialField = data.IsInitialField;\n var signIndicator = this.pdfViewerBase.isInitialField ? \"Initial\" : \"Sign\";\n //check whether the width for sign indicator has default value or not and then set the default width value for initial field.\n var signatureFieldIndicatorWidth = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width === 19 ? (this.pdfViewerBase.isInitialField ? 27 : 19) : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width) : 19;\n // eslint-disable-next-line\n var span = document.createElement('span');\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n // eslint-disable-next-line\n var bounds = data['LineBounds'];\n // eslint-disable-next-line\n var font = data['Font'];\n var left = this.ConvertPointToPixel(bounds.X);\n var top = this.ConvertPointToPixel(bounds.Y);\n var indicatorWidth = this.ConvertPointToPixel(bounds.Width);\n var indicatorHeight = this.ConvertPointToPixel(bounds.Height);\n // eslint-disable-next-line max-len\n var height = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height > indicatorHeight * zoomvalue / 2 ? indicatorHeight * zoomvalue / 2 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height) : indicatorHeight * zoomvalue / 2;\n // eslint-disable-next-line max-len\n var width = signatureFieldIndicatorWidth > indicatorWidth * zoomvalue / 2 ? indicatorWidth * zoomvalue / 2 : signatureFieldIndicatorWidth;\n // eslint-disable-next-line max-len\n var size = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize > height / 2 ? 10 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize) : 10;\n var fontSize = size > width ? width / 2 : (size > height ? height / 2 : size);\n span.style.position = 'absolute';\n span.id = 'signIcon_' + pageIndex + '_' + index;\n var rotation = this.getAngle(pageIndex);\n // eslint-disable-next-line\n var annotBounds = { left: left, top: top, width: width, height: height };\n // eslint-disable-next-line\n var fieldBounds = this.getBounds(annotBounds, pageIndex);\n span.style.transform = 'rotate(' + rotation + 'deg)';\n span.style.left = fieldBounds.left * zoomvalue + 'px';\n span.style.top = fieldBounds.top * zoomvalue + 'px';\n if (Browser.isDevice && !this.pdfViewer.enableDesktopMode) {\n span.style.height = 5 + 'px';\n span.style.width = 10 + 'px';\n span.style.fontSize = '3px';\n }\n else {\n span.style.height = height + 'px';\n span.style.width = width + 'px';\n span.style.fontSize = fontSize + 'px';\n if (isBlazor()) {\n span.style.fontSize = (fontSize - 1) + 'px';\n }\n }\n if (!((height + this.indicatorPaddingValue) > indicatorHeight * zoomvalue) && !((width + this.indicatorPaddingValue) > indicatorWidth * zoomvalue)) {\n span.style.padding = '2px';\n }\n span.style.textAlign = 'center';\n span.style.boxSizing = 'content-box';\n // eslint-disable-next-line\n span.innerHTML = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.text ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.text : signIndicator) : signIndicator;\n span.style.color = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.color ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.color : 'black') : 'black';\n // eslint-disable-next-line\n span.style.backgroundColor = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.backgroundColor ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.backgroundColor : 'orange') : 'orange';\n span.style.opacity = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings ? (this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.opacity ? this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.opacity : 1) : 1;\n if (!isNullOrUndefined(textLayer)) {\n textLayer.appendChild(span);\n }\n this.addSignaturePath(data, count);\n return inputField;\n };\n // eslint-disable-next-line\n FormFields.prototype.addSignaturePath = function (signData, count) {\n this.isSignatureField = false;\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = JSON.parse(data);\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n // eslint-disable-next-line max-len\n if ((currentData.Name === 'ink' || currentData.Name === 'SignatureField' || currentData.Name === 'SignatureImage' || currentData.Name === 'SignatureText') && this.pdfViewer.formDesigner ? currentData.FieldName === signData.ActualFieldName + '_' + count || currentData.FieldName === signData.FieldName + '_' + count : ((currentData.FieldName === signData.FieldName + '_' + count || currentData.FieldName === signData.ActualFieldName + '_' + count) && !isNullOrUndefined(signData.ActualFieldName)) && currentData.Value && currentData.Value !== '') {\n signData.Value = currentData.Value;\n signData.FontFamily = currentData.FontFamily;\n signData.FontSize = currentData.FontSize;\n this.isSignatureField = true;\n if (!signData.Bounds) {\n signData.Bounds = currentData.LineBounds;\n }\n break;\n }\n }\n }\n return this.isSignatureField;\n };\n // eslint-disable-next-line\n FormFields.prototype.getBounds = function (bound, pageIndex, rotation, isFieldRotated) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n // eslint-disable-next-line\n var bounds;\n if (rotation > 0) {\n bounds = this.getBoundsPosition(rotation, bound, pageDetails, isFieldRotated);\n }\n else {\n bounds = this.getBoundsPosition(pageDetails.rotation, bound, pageDetails, isFieldRotated);\n }\n return bounds;\n };\n // eslint-disable-next-line\n FormFields.prototype.getBoundsPosition = function (rotation, bound, pageDetails, isFieldRotated) {\n // eslint-disable-next-line\n var bounds;\n if (!isFieldRotated) {\n switch (rotation) {\n case 90:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height, top: bound.left, width: bound.height, height: bound.width };\n break;\n case 180:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 270:\n // eslint-disable-next-line\n bounds = { left: bound.top, top: pageDetails.height - bound.left - bound.width, width: bound.height, height: bound.width };\n break;\n case 0:\n // eslint-disable-next-line\n bounds = bound;\n break;\n case 1:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height, top: bound.left, width: bound.height, height: bound.width };\n break;\n case 2:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 3:\n // eslint-disable-next-line\n bounds = { left: bound.top, top: pageDetails.height - bound.left - bound.width, width: bound.height, height: bound.width };\n break;\n }\n if (!bounds) {\n bounds = bound;\n }\n }\n else {\n switch (rotation) {\n case 0:\n // eslint-disable-next-line\n bounds = bound;\n break;\n case 1:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.top - bound.height - (bound.width / 2 - bound.height / 2), top: bound.left + (bound.width / 2 - bound.height / 2), width: bound.width, height: bound.height };\n break;\n case 2:\n // eslint-disable-next-line\n bounds = { left: pageDetails.width - bound.left - bound.width, top: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n break;\n case 3:\n // eslint-disable-next-line\n bounds = { left: bound.top - (bound.width / 2 - bound.height / 2), top: (pageDetails.height - bound.left - bound.width + (bound.width / 2 - bound.height / 2)), width: bound.width, height: bound.height };\n break;\n }\n if (!bounds) {\n bounds = bound;\n }\n }\n return bounds;\n };\n // eslint-disable-next-line\n FormFields.prototype.applyPosition = function (inputField, bounds, font, pageIndex, rotation, isFieldRotated) {\n if (bounds) {\n var left = this.ConvertPointToPixel(bounds.X);\n var top_3 = this.ConvertPointToPixel(bounds.Y);\n var width = this.ConvertPointToPixel(bounds.Width);\n var height = this.ConvertPointToPixel(bounds.Height);\n var fontHeight = 0;\n // eslint-disable-next-line\n var fieldBounds = { left: left, top: top_3, width: width, height: height };\n // eslint-disable-next-line\n var annotBounds = this.getBounds(fieldBounds, pageIndex, rotation, isFieldRotated);\n if (font !== null && font.Height) {\n inputField.style.fontFamily = font.Name;\n if (font.Italic) {\n inputField.style.fontStyle = 'italic';\n }\n if (font.Bold) {\n inputField.style.fontWeight = 'Bold';\n }\n fontHeight = this.ConvertPointToPixel(font.Size);\n }\n this.pdfViewerBase.setStyleToTextDiv(inputField, annotBounds.left, annotBounds.top, fontHeight, annotBounds.width, annotBounds.height, false);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.renderExistingAnnnot = function (data, index, printContainer, isFieldRotated) {\n if (!printContainer) {\n // eslint-disable-next-line\n var bounds = void 0;\n if (data.Bounds && data.Name !== 'ink') {\n bounds = data.Bounds;\n }\n else {\n bounds = data.LineBounds;\n }\n var currentLeft = void 0;\n var currentTop = void 0;\n var currentWidth = void 0;\n var currentHeight = void 0;\n if (bounds.x || bounds.y || bounds.width || bounds.height) {\n currentLeft = bounds.x;\n currentTop = bounds.y;\n currentWidth = bounds.width;\n currentHeight = bounds.height;\n }\n else {\n currentLeft = this.ConvertPointToPixel(bounds.X);\n currentTop = this.ConvertPointToPixel(bounds.Y);\n currentWidth = this.ConvertPointToPixel(bounds.Width);\n currentHeight = this.ConvertPointToPixel(bounds.Height);\n }\n // eslint-disable-next-line\n var currentPage = parseFloat(data['PageIndex']);\n // eslint-disable-next-line\n var bound = { left: currentLeft, top: currentTop, width: currentWidth, height: currentHeight };\n // eslint-disable-next-line\n var newBounds = this.updateSignatureBounds(bound, currentPage, isFieldRotated);\n var annot = void 0;\n var fontFamily = data.FontFamily ? data.FontFamily : data.fontFamily;\n // eslint-disable-next-line\n if ((data.Value.split('base64,')[1])) {\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: newBounds, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'SignatureImage', opacity: 1, rotateAngle: isFieldRotated ? this.getAngle(currentPage) : 0, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n else if (fontFamily && !(data.Value && data.Value.startsWith('M') && data.Value.split(',')[1].split(' ')[1].startsWith('L'))) {\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: newBounds, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'SignatureText', opacity: 1, rotateAngle: isFieldRotated ? this.getAngle(currentPage) : 0, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }, fontFamily: data.FontFamily, fontSize: data.FontSize\n };\n annot.fontFamily = fontFamily === \"TimesRoman\" ? \"Times New Roman\" : fontFamily;\n annot.fontSize = data.FontSize ? data.FontSize : data.fontSize;\n }\n else {\n var bound_1 = newBounds;\n var tempBounds = { left: newBounds.x, top: newBounds.y, width: newBounds.width, height: newBounds.height };\n bound_1 = this.updateSignatureBounds(tempBounds, currentPage, false);\n annot = {\n // eslint-disable-next-line max-len\n id: this.pdfViewer.element.id + 'input_' + currentPage + '_' + index, bounds: bound_1, pageIndex: currentPage, data: data.Value, modifiedDate: '',\n shapeAnnotationType: 'Path', opacity: 1, rotateAngle: 0, annotName: 'SignatureField', comments: [], review: { state: '', stateModel: '', modifiedDate: '', author: '' }\n };\n }\n if ((data.Name === 'SignatureField' || data.Name === 'InitialField') && !isNullOrUndefined(data.id)) {\n var elementId = data.id;\n var signatureFieldElement = document.getElementById(elementId + '_content_html_element');\n var signatureField = this.pdfViewer.nameTable[elementId];\n annot.id = signatureField.id + \"_content\";\n var obj = this.pdfViewer.add(annot);\n signatureField.wrapper.children.push(obj.wrapper);\n if (!isNullOrUndefined(signatureFieldElement) && this.isSignatureField) {\n var inputField = signatureFieldElement.children[0].children[0];\n inputField.style.pointerEvents = 'none';\n inputField.className = 'e-pdfviewer-signatureformfields-signature';\n inputField.parentElement.style.pointerEvents = 'none';\n }\n else if (!isNullOrUndefined(signatureFieldElement) && data.Value) {\n var inputField = signatureFieldElement.children[0].children[0];\n inputField.style.pointerEvents = 'none';\n inputField.className = 'e-pdfviewer-signatureformfields-signature';\n inputField.parentElement.style.pointerEvents = 'none';\n }\n }\n else {\n var target = document.getElementById(annot.id);\n if (target && target.classList.contains('e-pdfviewer-signatureformfields-signature')) {\n this.pdfViewer.annotation.deleteAnnotationById(annot.id);\n }\n this.pdfViewer.add(annot);\n if (target) {\n this.updateDataInSession(target, annot.data, annot.bounds);\n this.pdfViewer.fireSignatureAdd(annot.pageIndex, annot.id, annot.shapeAnnotationType, annot.bounds, annot.opacity, annot.strokeColor, annot.thickness, annot.data);\n }\n }\n data.Bounds = annot.bounds;\n if (this.pdfViewer.formDesignerModule) {\n var zoomvalue = this.pdfViewerBase.getZoomFactor();\n annot.bounds = { x: currentLeft * zoomvalue, y: currentTop * zoomvalue, width: currentWidth * zoomvalue, height: currentHeight * zoomvalue };\n this.updateSignatureDataInSession(annot, annot.id);\n }\n // eslint-disable-next-line\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + currentPage);\n // eslint-disable-next-line\n this.pdfViewer.renderDrawing(canvass, currentPage);\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.updateSignatureBounds = function (bound, pageIndex, isFieldRotated) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n if (pageDetails) {\n if (!isFieldRotated) {\n if (pageDetails.rotation === 1) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.top - bound.height, y: bound.left, width: bound.height, height: bound.width };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.left - bound.width, y: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n // eslint-disable-next-line max-len\n return { x: bound.top, y: (pageDetails.height - bound.left - bound.width), width: bound.height, height: bound.width };\n }\n else {\n // eslint-disable-next-line max-len\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n }\n else {\n if (pageDetails.rotation === 1) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.top - bound.height - (bound.width / 2 - bound.height / 2), y: bound.left + (bound.width / 2 - bound.height / 2), width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 2) {\n // eslint-disable-next-line max-len\n return { x: pageDetails.width - bound.left - bound.width, y: pageDetails.height - bound.top - bound.height, width: bound.width, height: bound.height };\n }\n else if (pageDetails.rotation === 3) {\n // eslint-disable-next-line max-len\n return { x: bound.top - (bound.width / 2 - bound.height / 2), y: (pageDetails.height - bound.left - bound.width + (bound.width / 2 - bound.height / 2)), width: bound.width, height: bound.height };\n }\n else {\n // eslint-disable-next-line max-len\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n }\n }\n else {\n return { x: bound.left, y: bound.top, width: bound.width, height: bound.height };\n }\n };\n FormFields.prototype.resetFormFields = function () {\n var formFieldData = this.pdfViewer.formFieldCollections;\n for (var i = 0; i < formFieldData.length; i++) {\n var currentData = formFieldData[i];\n this.currentTarget = document.getElementById(currentData.id);\n if (currentData.type === 'Textbox') {\n this.currentTarget.value = currentData.value;\n }\n else if (currentData.type === 'RadioButton') {\n this.currentTarget.checked = currentData.value;\n if (currentData.value) {\n this.updateDataInSession(this.currentTarget);\n }\n }\n else if (currentData.type === 'DropDown') {\n this.currentTarget.value = currentData.value;\n }\n else if (currentData.type === 'CheckBox') {\n this.currentTarget.checked = currentData.value;\n }\n else if (currentData.type === 'SignatureField') {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.nameTable[currentData.id];\n if (annotation) {\n if (this.currentTarget && this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n this.currentTarget.className = 'e-pdfviewer-signatureformfields';\n this.currentTarget.style.pointerEvents = '';\n this.updateDataInSession(this.currentTarget, '');\n }\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderDrawing();\n }\n }\n if (currentData.type !== 'RadioButton' && currentData.type !== 'SignatureField') {\n this.updateDataInSession(this.currentTarget);\n }\n }\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.clearFormFieldStorage = function () {\n // eslint-disable-next-line\n var sessionSize = Math.round(JSON.stringify(window.sessionStorage).length / 1024);\n if (this.pdfViewerBase.isStorageExceed) {\n var storageLength = window.sessionStorage.length;\n // eslint-disable-next-line\n var formFieldsList = [];\n for (var i = 0; i < storageLength; i++) {\n if (window.sessionStorage.key(i) && window.sessionStorage.key(i).split('_')[3]) {\n if (window.sessionStorage.key(i).split('_')[3] === 'formfields') {\n // eslint-disable-next-line max-len\n this.pdfViewerBase.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n else if (window.sessionStorage.key(i).split('_')[3] === 'formDesigner') {\n this.pdfViewerBase.formFieldStorage[window.sessionStorage.key(i)] = window.sessionStorage.getItem(window.sessionStorage.key(i));\n formFieldsList.push(window.sessionStorage.key(i));\n }\n }\n }\n if (formFieldsList) {\n for (var i = 0; i < formFieldsList.length; i++) {\n window.sessionStorage.removeItem(formFieldsList[i]);\n }\n }\n }\n };\n // eslint-disable-next-line\n FormFields.prototype.clearFormFields = function (formField) {\n // eslint-disable-next-line\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n if (data) {\n // eslint-disable-next-line\n var formFieldsData = void 0;\n if (formField) {\n formFieldsData = [formField];\n }\n else {\n formFieldsData = JSON.parse(data);\n }\n var isFirstRadio = true;\n for (var m = 0; m < formFieldsData.length; m++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[m];\n if (formField) {\n currentData.uniqueID = formField.id;\n currentData.Name = formField.type;\n }\n // eslint-disable-next-line\n this.currentTarget = document.getElementById(currentData.uniqueID);\n if (currentData.Name === 'Textbox') {\n this.currentTarget.value = '';\n }\n else if (currentData.Name === 'RadioButton') {\n if (isFirstRadio) {\n this.currentTarget.checked = true;\n this.updateDataInSession(this.currentTarget);\n isFirstRadio = false;\n }\n }\n else if (currentData.Name === 'DropDown') {\n this.currentTarget.value = currentData.TextList[0];\n }\n else if (currentData.Name === 'CheckBox') {\n this.currentTarget.checked = false;\n }\n else if (currentData.Name === 'SignatureField') {\n // eslint-disable-next-line\n var annotation = this.pdfViewer.nameTable[currentData.uniqueID];\n if (annotation) {\n if (this.currentTarget && this.currentTarget.className === 'e-pdfviewer-signatureformfields-signature') {\n this.currentTarget.className = 'e-pdfviewer-signatureformfields';\n this.currentTarget.style.pointerEvents = '';\n this.currentTarget.parentElement.style.pointerEvents = '';\n this.updateDataInSession(this.currentTarget, '');\n if (formField) {\n formField.value = '';\n formField.signatureType = [formField.signatureType];\n formField.signatureType[0] = '';\n }\n }\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderDrawing();\n }\n }\n if (currentData.Name !== 'SignatureField' && currentData.Name !== 'ink' && currentData.Name !== 'RadioButton') {\n this.updateDataInSession(this.currentTarget);\n }\n }\n }\n };\n /**\n * @param number\n * @private\n */\n // eslint-disable-next-line\n FormFields.prototype.ConvertPointToPixel = function (number) {\n return (number * (96 / 72));\n };\n /**\n * @private\n */\n FormFields.prototype.destroy = function () {\n this.currentTarget = null;\n this.readOnlyCollection = [];\n if (this.pdfViewerBase && this.pdfViewerBase.signatureModule)\n this.pdfViewerBase.signatureModule.destroy();\n };\n /**\n * @private\n */\n FormFields.prototype.getModuleName = function () {\n return 'FormFields';\n };\n /**\n * @private\n * Get the text wdith\n * @param text\n * @param font\n * @param fontFamily\n */\n FormFields.prototype.getTextWidth = function (text, font, fontFamily) {\n var canvas = document.createElement('canvas');\n var context = canvas.getContext('2d');\n var fontName;\n if (font) {\n fontName = font + 'px' + ' ' + fontFamily;\n }\n context.font = fontName || getComputedStyle(document.body).font;\n return context.measureText(text).width;\n };\n /**\n * @private\n * @param {number} fontSize - Font size.\n * @returns {number} - Returns the font size.\n */\n FormFields.prototype.getFontSize = function (fontSize) {\n return fontSize;\n \n };\n return FormFields;\n}());\n\n/**\n * export types\n */\n\n/* eslint-disable */\n/* eslint-disable */\n/**\n * The `FormDesigner` module is used to handle form designer actions of PDF viewer.\n */\nvar FormDesigner = /** @__PURE__ @class */ (function () {\n /**\n * @param viewer\n * @param base\n * @private\n */\n function FormDesigner(viewer, base) {\n this.isFormFieldExistingInCollection = false;\n this.multilineCheckboxCheckedState = false;\n this.formFieldListItemCollection = [];\n this.formFieldListItemDataSource = [];\n this.isInitialField = false;\n this.isSetFormFieldMode = false;\n this.increasedSize = 5;\n this.defaultZoomValue = 1;\n this.signatureFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isVisibilityChanged: false,\n isNameChanged: false,\n isPrintChanged: false,\n isTooltipChanged: false,\n isThicknessChanged: false,\n };\n this.initialFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isVisibilityChanged: false,\n isNameChanged: false,\n isPrintChanged: false,\n isTooltipChanged: false,\n isThicknessChanged: false,\n };\n this.textFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isBackgroundColorChanged: false,\n isBorderColorChanged: false,\n isAlignmentChanged: false,\n isFontSizeChanged: false,\n isNameChanged: false,\n isToolTipChanged: false,\n isThicknessChanged: false,\n isVisibilityChanged: false,\n isPrintChanged: false,\n isSelected: false,\n isFontFamilyChanged: false,\n isFontStyle: false,\n isValueChanged: false,\n isMaXLength: false,\n isColorChanged: false,\n isMultilineChanged: false,\n };\n this.passwordFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isBackgroundColorChanged: false,\n isBorderColorChanged: false,\n isAlignmentChanged: false,\n isFontSizeChanged: false,\n isNameChanged: false,\n isToolTipChanged: false,\n isThicknessChanged: false,\n isVisibilityChanged: false,\n isPrintChanged: false,\n isSelected: false,\n isFontFamilyChanged: false,\n isFontStyle: false,\n isValueChanged: false,\n isMaXLength: false,\n isColorChanged: false,\n };\n this.checkBoxFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isBackgroundColorChanged: false,\n isBorderColorChanged: false,\n isNameChanged: false,\n isToolTipChanged: false,\n isThicknessChanged: false,\n isVisibilityChanged: false,\n isPrintChanged: false,\n isCheckedChanged: false,\n };\n this.radioButtonFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isBackgroundColorChanged: false,\n isBorderColorChanged: false,\n isNameChanged: false,\n isToolTipChanged: false,\n isThicknessChanged: false,\n isVisibilityChanged: false,\n isPrintChanged: false,\n isSelectedChanged: false,\n };\n this.dropdownFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isBackgroundColorChanged: false,\n isBorderColorChanged: false,\n isAlignmentChanged: false,\n isFontSizeChanged: false,\n isNameChanged: false,\n isToolTipChanged: false,\n isThicknessChanged: false,\n isVisibilityChanged: false,\n isPrintChanged: false,\n isSelected: false,\n isFontFamilyChanged: false,\n isFontStyle: false,\n isColorChanged: false,\n isOptionChanged: false,\n };\n this.listBoxFieldPropertyChanged = {\n isReadOnlyChanged: false,\n isRequiredChanged: false,\n isBackgroundColorChanged: false,\n isBorderColorChanged: false,\n isAlignmentChanged: false,\n isFontSizeChanged: false,\n isNameChanged: false,\n isToolTipChanged: false,\n isThicknessChanged: false,\n isVisibilityChanged: false,\n isPrintChanged: false,\n isSelected: false,\n isFontFamilyChanged: false,\n isFontStyle: false,\n isColorChanged: false,\n isOptionChanged: false,\n };\n /**\n * @private\n */\n this.disableSignatureClickEvent = false;\n /**\n * @private\n */\n this.formFieldIndex = 0;\n /**\n * @private\n */\n this.formFieldIdIndex = 0;\n /**\n * @private\n */\n this.isProgrammaticSelection = false;\n /**\n * @private\n */\n this.isShapeCopied = false;\n this.isDrawHelper = false;\n this.isFormFieldUpdated = false;\n /**\n * @private\n */\n this.isPropertyDialogOpen = false;\n this.pdfViewer = viewer;\n this.pdfViewerBase = base;\n }\n /**\n * @private\n */\n FormDesigner.prototype.drawHelper = function (formFieldAnnotationType, obj, event) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + this.pdfViewerBase.activeElements.activePageID);\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + this.pdfViewerBase.activeElements.activePageID);\n if (canvasElement !== null && textLayer !== null) {\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var htmlElement = void 0;\n var HtmlElementAttribute = {\n 'id': 'FormField_helper_html_element',\n 'class': 'foreign-object'\n };\n var bounds = this.updateFormFieldInitialSize(obj, formFieldAnnotationType);\n htmlElement = this.createHtmlElement('div', HtmlElementAttribute);\n this.isDrawHelper = true;\n if (formFieldAnnotationType === \"SignatureField\" || formFieldAnnotationType === \"InitialField\") {\n htmlElement.appendChild(this.createSignatureDialog(this.pdfViewer, obj, bounds));\n }\n else if (formFieldAnnotationType === \"DropdownList\") {\n var element = { id: \"dropdown_helper\" };\n htmlElement.appendChild(this.createDropDownList(element, obj));\n }\n else if (formFieldAnnotationType === \"ListBox\") {\n var element = { id: \"listbox_helper\" };\n htmlElement.appendChild(this.createListBox(element, obj));\n }\n else {\n htmlElement.appendChild(this.createInputElement(formFieldAnnotationType, obj, bounds));\n }\n textLayer.appendChild(htmlElement);\n var point = this.pdfViewerBase.getMousePosition(event);\n htmlElement.setAttribute('style', 'height:' + bounds.height * zoomValue + 'px; width:' + bounds.width * zoomValue + 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'position:absolute;opacity: 0.5;');\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.drawHTMLContent = function (formFieldAnnotationType, element, drawingObject, pageIndex, commandHandler, fieldId) {\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageIndex);\n var formFieldElement = document.getElementById(\"form_field_\" + element.id + '_html_element');\n if (formFieldElement === null && element !== null && canvasElement !== null && textLayer) {\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var htmlElement = void 0;\n var parentHtmlElement = void 0;\n var parentHtmlElementAttribute = {\n 'id': \"form_field_\" + element.id + '_html_element',\n 'class': 'foreign-object'\n };\n parentHtmlElement = this.createHtmlElement('div', parentHtmlElementAttribute);\n var HtmlElementAttribute = {\n 'id': element.id + '_html_element',\n 'class': 'foreign-object'\n };\n htmlElement = this.createHtmlElement('div', HtmlElementAttribute);\n if (formFieldAnnotationType === \"SignatureField\" || formFieldAnnotationType === \"InitialField\") {\n element.template = htmlElement.appendChild(this.createSignatureDialog(commandHandler, drawingObject));\n }\n else if (formFieldAnnotationType === \"DropdownList\") {\n element.template = htmlElement.appendChild(this.createDropDownList(element, drawingObject));\n }\n else if (formFieldAnnotationType === \"ListBox\") {\n element.template = htmlElement.appendChild(this.createListBox(element, drawingObject));\n }\n else {\n element.template = htmlElement.appendChild(this.createInputElement(formFieldAnnotationType, drawingObject));\n }\n this.isSetFormFieldMode = false;\n var divElement = document.createElement(\"div\");\n divElement.id = drawingObject.id + '_designer_name';\n divElement.style.fontSize = drawingObject.fontSize ? (drawingObject.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n divElement.className = \"e-pv-show-designer-name\";\n if (this.pdfViewer.designerMode) {\n divElement.innerHTML = drawingObject.name;\n divElement.style.position = 'absolute';\n }\n else {\n divElement.innerHTML = \"\";\n divElement.style.position = 'initial';\n }\n if (formFieldAnnotationType === \"Checkbox\" && (Browser.isDevice)) {\n //Creating outer div for checkbox in mobile device\n var outerDiv = void 0;\n var bounds = drawingObject.bounds;\n var outerDivHeight = bounds.height + this.increasedSize;\n var outerDivWidth = bounds.width + this.increasedSize;\n var outerDivAttribute = {\n 'id': drawingObject.id + '_outer_div',\n 'className': 'e-pv-checkbox-outer-div'\n };\n outerDiv = createElement(\"div\", outerDivAttribute);\n outerDiv.setAttribute('style', 'height:' + outerDivHeight * zoomValue + 'px; width:' + outerDivWidth * zoomValue + 'px;left:' + bounds.x * zoomValue + 'px; top:' + bounds.y * zoomValue + 'px;' +\n 'position:absolute; opacity: 1;');\n htmlElement.appendChild(divElement);\n outerDiv.addEventListener('click', this.setCheckBoxState.bind(this));\n parentHtmlElement.appendChild(htmlElement);\n textLayer.appendChild(outerDiv);\n outerDiv.appendChild(parentHtmlElement);\n }\n else {\n htmlElement.appendChild(divElement);\n parentHtmlElement.appendChild(htmlElement);\n textLayer.appendChild(parentHtmlElement);\n }\n if (formFieldAnnotationType === \"RadioButton\") {\n if (document.getElementsByClassName(\"e-pv-radiobtn-span\").length > 0) {\n var spanElement = document.getElementsByClassName(\"e-pv-radiobtn-span\");\n for (var i = 0; i < spanElement.length; i++) {\n var bounds = this.getCheckboxRadioButtonBounds(drawingObject);\n spanElement[i].style.width = (bounds.width / 2) + \"px\";\n spanElement[i].style.height = (bounds.height / 2) + \"px\";\n if (parseInt(spanElement[i].style.width, 10) <= 1 || parseInt(spanElement[i].style.height, 10) <= 1) {\n spanElement[i].style.width = \"1px\";\n spanElement[i].style.height = \"1px\";\n spanElement[i].style.margin = \"1px\";\n }\n }\n }\n }\n var point = cornersPointsBeforeRotation(element).topLeft;\n if (formFieldAnnotationType === \"Checkbox\" && (Browser.isDevice)) {\n htmlElement.setAttribute('style', 'height:' + (element.actualSize.height * zoomValue) + 'px; width:' + (element.actualSize.width * zoomValue) +\n 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'transform:rotate(' + (element.rotateAngle + element.parentTransform) + 'deg);' +\n 'pointer-events:' + ((this.pdfViewer.designerMode) ? 'none' : 'all')\n + ';visibility:' + ((element.visible) ? 'visible' : 'hidden') + ';opacity:' + element.style.opacity + ';');\n }\n else {\n htmlElement.setAttribute('style', 'height:' + (element.actualSize.height * zoomValue) + 'px; width:' + (element.actualSize.width * zoomValue) +\n 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'position:absolute;transform:rotate(' + (element.rotateAngle + element.parentTransform) + 'deg);' +\n 'pointer-events:' + ((this.pdfViewer.designerMode) ? 'none' : 'all')\n + ';visibility:' + ((element.visible) ? 'visible' : 'hidden') + ';opacity:' + element.style.opacity + ';');\n }\n this.updateFormDesignerFieldInSessionStorage(point, element, formFieldAnnotationType, drawingObject);\n if (formFieldAnnotationType === \"SignatureField\" || formFieldAnnotationType === \"InitialField\") {\n if (drawingObject.value) {\n var elementId = fieldId + \"_content\";\n var value = this.pdfViewer.nameTable[elementId].value;\n var signatureType = (value.indexOf('base64')) > -1 ? 'Image' : ((value.startsWith('M') && value.split(',')[1].split(' ')[1].startsWith('L')) ? 'Path' : 'Type');\n this.pdfViewer.formFieldsModule.drawSignature(signatureType, value, element.template, drawingObject.fontFamily);\n }\n }\n var field = {\n name: drawingObject.name, id: drawingObject.id, value: drawingObject.value, fontFamily: drawingObject.fontFamily, fontSize: drawingObject.fontSize, fontStyle: drawingObject.fontStyle,\n color: drawingObject.color, backgroundColor: drawingObject.backgroundColor, alignment: drawingObject.alignment, isReadonly: drawingObject.isReadonly, visibility: drawingObject.visibility,\n maxLength: drawingObject.maxLength, isRequired: drawingObject.isRequired, isPrint: drawingObject.isPrint, rotation: drawingObject.rotateAngle, tooltip: drawingObject.tooltip,\n borderColor: drawingObject.borderColor, thickness: drawingObject.thickness, options: drawingObject.options, pageNumber: drawingObject.pageNumber, isChecked: drawingObject.isChecked, isSelected: drawingObject.isSelected\n };\n this.pdfViewer.fireFormFieldAddEvent(\"formFieldAdd\", field, this.pdfViewerBase.activeElements.activePageID);\n }\n else {\n var point = cornersPointsBeforeRotation(element).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point, element, formFieldAnnotationType, drawingObject);\n }\n return element.template;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateFormDesignerFieldInSessionStorage = function (point, element, formFieldType, drawingObject) {\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var formDesignObj = {\n id: element.id, lineBound: { X: point.x * zoomValue, Y: point.y * zoomValue, Width: element.actualSize.width * zoomValue, Height: element.actualSize.height * zoomValue },\n name: drawingObject.name, zoomValue: zoomValue, pageNumber: drawingObject.pageNumber, value: drawingObject.value, formFieldAnnotationType: formFieldType, isMultiline: drawingObject.isMultiline,\n signatureType: drawingObject.signatureType, signatureBound: drawingObject.signatureBound,\n fontFamily: drawingObject.fontFamily, fontSize: drawingObject.fontSize, fontStyle: drawingObject.fontStyle, fontColor: this.getRgbCode(drawingObject.color),\n borderColor: this.getRgbCode(drawingObject.borderColor), thickness: drawingObject.thickness, backgroundColor: this.getRgbCode(drawingObject.backgroundColor),\n textAlign: drawingObject.alignment, isChecked: drawingObject.isChecked, isSelected: drawingObject.isSelected, isReadonly: drawingObject.isReadonly, font: {\n isBold: drawingObject.font.isBold, isItalic: drawingObject.font.isItalic, isStrikeout: drawingObject.font.isStrikeout, isUnderline: drawingObject.font.isUnderline\n }, selectedIndex: drawingObject.selectedIndex, radiobuttonItem: null, option: drawingObject.options ? drawingObject.options : [], visibility: drawingObject.visibility, maxLength: drawingObject.maxLength, isRequired: drawingObject.isRequired, isPrint: drawingObject.isPrint, rotation: drawingObject.rotateAngle, tooltip: drawingObject.tooltip, insertSpaces: drawingObject.insertSpaces\n };\n if (formDesignObj.formFieldAnnotationType === \"RadioButton\") {\n formDesignObj.radiobuttonItem = [];\n formDesignObj.radiobuttonItem.push({\n id: element.id, lineBound: { X: point.x * zoomValue, Y: point.y * zoomValue, Width: element.actualSize.width * zoomValue, Height: element.actualSize.height * zoomValue },\n name: drawingObject.name, zoomValue: zoomValue, pageNumber: drawingObject.pageNumber, value: drawingObject.value, formFieldAnnotationType: formFieldType,\n fontFamily: drawingObject.fontFamily, fontSize: drawingObject.fontSize, fontStyle: drawingObject.fontStyle, fontColor: this.getRgbCode(drawingObject.color),\n borderColor: this.getRgbCode(drawingObject.borderColor), thickness: drawingObject.thickness, backgroundColor: this.getRgbCode(drawingObject.backgroundColor),\n textAlign: drawingObject.alignment, isChecked: drawingObject.isChecked, isSelected: drawingObject.isSelected, isReadonly: drawingObject.isReadonly, visibility: drawingObject.visibility,\n maxLength: drawingObject.maxLength, isRequired: drawingObject.isRequired, isPrint: drawingObject.isPrint, rotation: 0, tooltip: drawingObject.tooltip\n });\n }\n var isItemAdd = this.getRadioButtonItem(formDesignObj, drawingObject);\n if (!isItemAdd) {\n for (var i = 0; i < this.pdfViewerBase.formFieldCollection.length; i++) {\n var formFieldElement = this.pdfViewerBase.formFieldCollection[i];\n if (formFieldElement[\"Key\"] === formDesignObj.id) {\n this.pdfViewerBase.formFieldCollection.splice(i, 1);\n this.pdfViewerBase.formFieldCollection.push({ Key: element.id, FormField: formDesignObj });\n this.isFormFieldExistingInCollection = true;\n }\n }\n if (!this.isFormFieldExistingInCollection) {\n this.pdfViewerBase.formFieldCollection.push({ Key: element.id, FormField: formDesignObj });\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.isFormFieldExistingInCollection = false;\n if (this.pdfViewerBase.formFieldCollection.length > 0) {\n this.pdfViewerBase.enableFormFieldButton(true);\n }\n else {\n this.pdfViewerBase.enableFormFieldButton(false);\n }\n }\n };\n FormDesigner.prototype.getRadioButtonItem = function (radiobutton, formFieldProperty) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (data) {\n var formFieldsData = JSON.parse(data);\n var isItemAdd = false;\n for (var i = 0; i < formFieldsData.length; i++) {\n var currentData = formFieldsData[i];\n var radiobuttonItem = void 0;\n if (radiobutton.formFieldAnnotationType === \"RadioButton\") {\n if (radiobutton.radiobuttonItem && currentData.FormField.radiobuttonItem) {\n for (var m = 0; m < currentData.FormField.radiobuttonItem.length; m++) {\n if (currentData.FormField.radiobuttonItem[m].id === radiobutton.id) {\n radiobuttonItem = {\n lineBound: radiobutton.lineBound, id: radiobutton.id,\n name: radiobutton.name, zoomValue: radiobutton.zoomValue, pageNumber: radiobutton.pageNumber, value: radiobutton.value, formFieldAnnotationType: radiobutton.formFieldAnnotationType,\n fontFamily: radiobutton.fontFamily, fontSize: radiobutton.fontSize, fontStyle: radiobutton.fontStyle, fontColor: this.getRgbCode(formFieldProperty.color),\n borderColor: this.getRgbCode(formFieldProperty.borderColor), thickness: formFieldProperty.thickness, backgroundColor: this.getRgbCode(formFieldProperty.backgroundColor), textAlign: radiobutton.textAlign, isChecked: radiobutton.isChecked, isSelected: radiobutton.isSelected,\n isReadonly: radiobutton.isReadonly, visibility: radiobutton.visibility, maxLength: radiobutton.maxLength, isRequired: radiobutton.isRequired, isPrint: radiobutton.isPrint, rotation: 0, tooltip: radiobutton.tooltip\n };\n currentData.FormField.radiobuttonItem.splice(m, 1);\n currentData.FormField.radiobuttonItem.push(radiobuttonItem);\n if (!isNullOrUndefined(this.pdfViewerBase.formFieldCollection[i])) {\n if (this.pdfViewerBase.formFieldCollection[i].FormField.name === currentData.FormField.name) {\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem = currentData.FormField.radiobuttonItem;\n isItemAdd = true;\n }\n }\n break;\n }\n else {\n if (radiobutton.formFieldAnnotationType === currentData.FormField.formFieldAnnotationType && radiobutton.name === currentData.FormField.name) {\n radiobuttonItem = {\n lineBound: radiobutton.lineBound, id: radiobutton.id,\n name: radiobutton.name, zoomValue: radiobutton.zoomValue, pageNumber: radiobutton.pageNumber, value: radiobutton.value, formFieldAnnotationType: radiobutton.formFieldAnnotationType,\n fontFamily: radiobutton.fontFamily, fontSize: radiobutton.fontSize, fontStyle: radiobutton.fontStyle, fontColor: this.getRgbCode(formFieldProperty.color),\n borderColor: this.getRgbCode(formFieldProperty.borderColor), thickness: formFieldProperty.thickness, backgroundColor: this.getRgbCode(formFieldProperty.backgroundColor), textAlign: radiobutton.textAlign, isChecked: radiobutton.isChecked, isSelected: radiobutton.isSelected,\n isReadonly: radiobutton.isReadonly, visibility: radiobutton.visibility, maxLength: radiobutton.maxLength, isRequired: radiobutton.isRequired, isPrint: radiobutton.isPrint, rotation: 0, tooltip: radiobutton.tooltip\n };\n var isContainsRadiobuttonItem = false;\n for (var i_1 = 0; i_1 < currentData.FormField.radiobuttonItem.length; i_1++) {\n if (currentData.FormField.radiobuttonItem[i_1].id === radiobuttonItem.id) {\n currentData.FormField.radiobuttonItem[i_1] = radiobuttonItem;\n isContainsRadiobuttonItem = true;\n break;\n }\n }\n if (!isContainsRadiobuttonItem) {\n currentData.FormField.radiobuttonItem.push(radiobuttonItem);\n }\n if (!isNullOrUndefined(this.pdfViewerBase.formFieldCollection[i])) {\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem = currentData.FormField.radiobuttonItem;\n isItemAdd = true;\n for (var l = 0; l < this.pdfViewerBase.formFieldCollection.length; l++) {\n var formFieldElement = this.pdfViewerBase.formFieldCollection[l];\n if (formFieldElement[\"Key\"] === radiobuttonItem.id) {\n this.pdfViewerBase.formFieldCollection.splice(l, 1);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n if (isItemAdd) {\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n return isItemAdd;\n };\n // eslint-disable-next-line\n FormDesigner.prototype.getRgbCode = function (colorString) {\n if (!colorString.match(/#([a-z0-9]+)/gi) && !colorString.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n var colorCode = this.nameToHash(colorString);\n if (colorCode != \"\")\n colorString = colorCode;\n }\n var stringArray = colorString.split(',');\n if (isNullOrUndefined(stringArray[1])) {\n colorString = this.getValue(colorString, 'rgba');\n stringArray = colorString.split(',');\n }\n // eslint-disable-next-line radix\n var r = parseInt(stringArray[0].split('(')[1]);\n // eslint-disable-next-line radix\n var g = parseInt(stringArray[1]);\n // eslint-disable-next-line radix\n var b = parseInt(stringArray[2]);\n // eslint-disable-next-line radix\n var a = parseFloat(stringArray[3]) * 100;\n if (isNaN(a)) {\n a = 0;\n }\n return { r: r, g: g, b: b, a: a };\n };\n /**\n * @param colour\n * @private\n */\n // eslint-disable-next-line\n FormDesigner.prototype.nameToHash = function (colour) {\n // eslint-disable-next-line\n var colours = {\n 'aliceblue': '#f0f8ff', 'antiquewhite': '#faebd7', 'aqua': '#00ffff', 'aquamarine': '#7fffd4', 'azure': '#f0ffff',\n 'beige': '#f5f5dc', 'bisque': '#ffe4c4', 'black': '#000000', 'blanchedalmond': '#ffebcd', 'blue': '#0000ff',\n 'blueviolet': '#8a2be2', 'brown': '#a52a2a', 'burlywood': '#deb887', 'yellow': '#ffff00', 'yellowgreen': '#9acd32',\n 'cadetblue': '#5f9ea0', 'chartreuse': '#7fff00', 'chocolate': '#d2691e', 'coral': '#ff7f50',\n 'cornflowerblue': '#6495ed', 'cornsilk': '#fff8dc', 'crimson': '#dc143c',\n 'cyan': '#00ffff', 'darkblue': '#00008b', 'darkcyan': '#008b8b', 'darkgoldenrod': '#b8860b', 'darkgray': '#a9a9a9',\n 'darkred': '#8b0000', 'darksalmon': '#e9967a', 'darkgreen': '#006400', 'darkkhaki': '#bdb76b',\n 'darkmagenta': '#8b008b', 'darkolivegreen': '#556b2f', 'darkorange': '#ff8c00', 'darkorchid': '#9932cc',\n 'darkseagreen': '#8fbc8f', 'darkslateblue': '#483d8b', 'darkslategray': '#2f4f4f', 'darkturquoise': '#00ced1',\n 'darkviolet': '#9400d3', 'deeppink': '#ff1493', 'deepskyblue': '#00bfff', 'dimgray': '#696969',\n 'dodgerblue': '#1e90ff', 'firebrick': '#b22222', 'floralwhite': '#fffaf0',\n 'forestgreen': '#228b22', 'fuchsia': '#ff00ff', 'gainsboro': '#dcdcdc', 'ghostwhite': '#f8f8ff',\n 'gold': '#ffd700', 'goldenrod': '#daa520', 'gray': '#808080', 'green': '#008000',\n 'greenyellow': '#adff2f', 'honeydew': '#f0fff0', 'hotpink': '#ff69b4', 'indianred ': '#cd5c5c',\n 'mediumorchid': '#ba55d3', 'mediumpurple': '#9370d8', 'indigo': '#4b0082', 'ivory': '#fffff0',\n 'navy': '#000080', 'oldlace': '#fdf5e6', 'olive': '#808000', 'khaki': '#f0e68c',\n 'lavender': '#e6e6fa', 'lavenderblush': '#fff0f5', 'lawngreen': '#7cfc00', 'lemonchiffon': '#fffacd',\n 'lightblue': '#add8e6', 'lightcoral': '#f08080', 'lightcyan': '#e0ffff',\n 'lightgoldenrodyellow': '#fafad2', 'lightgrey': '#d3d3d3', 'lightgreen': '#90ee90',\n 'lightpink': '#ffb6c1', 'lightsalmon': '#ffa07a', 'lightseagreen': '#20b2aa',\n 'lightskyblue': '#87cefa', 'lightslategray': '#778899', 'lightsteelblue': '#b0c4de',\n 'lightyellow': '#ffffe0', 'lime': '#00ff00', 'limegreen': '#32cd32', 'linen': '#faf0e6',\n 'magenta': '#ff00ff', 'maroon': '#800000', 'mediumaquamarine': '#66cdaa', 'mediumblue': '#0000cd',\n 'mediumseagreen': '#3cb371', 'mediumslateblue': '#7b68ee', 'mediumspringgreen': '#00fa9a',\n 'mediumturquoise': '#48d1cc', 'mediumvioletred': '#c71585', 'midnightblue': '#191970',\n 'mintcream': '#f5fffa', 'mistyrose': '#ffe4e1', 'moccasin': '#ffe4b5', 'navajowhite': '#ffdead',\n 'rebeccapurple': '#663399', 'red': '#ff0000', 'rosybrown': '#bc8f8f', 'royalblue': '#4169e1',\n 'olivedrab': '#6b8e23', 'orange': '#ffa500', 'orangered': '#ff4500', 'orchid': '#da70d6',\n 'palegoldenrod': '#eee8aa', 'palegreen': '#98fb98', 'paleturquoise': '#afeeee',\n 'palevioletred': '#d87093', 'papayawhip': '#ffefd5', 'peachpuff': '#ffdab9', 'peru': '#cd853f',\n 'wheat': '#f5deb3', 'white': '#ffffff', 'whitesmoke': '#f5f5f5', 'pink': '#ffc0cb', 'plum': '#dda0dd',\n 'steelblue': '#4682b4', 'violet': '#ee82ee', 'powderblue': '#b0e0e6', 'purple': '#800080',\n 'saddlebrown': '#8b4513', 'salmon': '#fa8072', 'sandybrown': '#f4a460', 'seagreen': '#2e8b57',\n 'seashell': '#fff5ee', 'sienna': '#a0522d', 'silver': '#c0c0c0', 'skyblue': '#87ceeb',\n 'slateblue': '#6a5acd', 'slategray': '#708090', 'snow': '#fffafa', 'springgreen': '#00ff7f',\n 'tan': '#d2b48c', 'teal': '#008080', 'thistle': '#d8bfd8', 'tomato': '#ff6347', 'turquoise': '#40e0d0'\n };\n if (typeof colours[colour.toLowerCase()] !== 'undefined') {\n return colours[colour.toLowerCase()];\n }\n return '';\n };\n /**\n * @param value\n * @param type\n * @param value\n * @param type\n * @private\n */\n FormDesigner.prototype.getValue = function (value, type) {\n type = !type ? 'hex' : type.toLowerCase();\n if (value[0] === 'r') {\n var cValue = this.convertRgbToNumberArray(value);\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue.slice(0, 3)));\n }\n else {\n if (type === 'hsva') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, cValue));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n if (value[0] === 'h') {\n var cValue = this.hsvToRgb.apply(this, this.convertRgbToNumberArray(value));\n if (type === 'rgba') {\n return this.convertToRgbString(cValue);\n }\n else {\n if (type === 'hex' || type === 'hexa') {\n var hex = this.rgbToHex(cValue);\n return type === 'hex' ? hex.slice(0, 7) : hex;\n }\n else {\n if (type === 'rgb') {\n return this.convertToRgbString(cValue.slice(0, 3));\n }\n else {\n return 'null';\n }\n }\n }\n }\n else {\n value = this.roundValue(value);\n var rgb = this.hexToRgb(value);\n if (type === 'rgb' || type === 'hsv') {\n rgb = rgb.slice(0, 3);\n }\n if (type === 'rgba' || type === 'rgb') {\n return this.convertToRgbString(rgb);\n }\n else {\n if (type === 'hsva' || type === 'hsv') {\n return this.convertToHsvString(this.rgbToHsv.apply(this, rgb));\n }\n else {\n if (type === 'hex') {\n return value.slice(0, 7);\n }\n else {\n if (type === 'a') {\n return rgb[3].toString();\n }\n else {\n return 'null';\n }\n }\n }\n }\n }\n }\n };\n FormDesigner.prototype.convertRgbToNumberArray = function (value) {\n // eslint-disable-next-line max-len\n return (value.slice(value.indexOf('(') + 1, value.indexOf(')'))).split(',').map(function (n, i) {\n return (i !== 3) ? parseInt(n, 10) : parseFloat(n);\n });\n };\n FormDesigner.prototype.convertToRgbString = function (rgb) {\n return rgb.length ? rgb.length === 4 ? 'rgba(' + rgb.join() + ')' : 'rgb(' + rgb.join() + ')' : '';\n };\n FormDesigner.prototype.convertToHsvString = function (hsv) {\n return hsv.length === 4 ? 'hsva(' + hsv.join() + ')' : 'hsv(' + hsv.join() + ')';\n };\n FormDesigner.prototype.roundValue = function (value) {\n if (!value) {\n return '';\n }\n if (value[0] !== '#') {\n value = '#' + value;\n }\n var len = value.length;\n if (len === 4) {\n value += 'f';\n len = 5;\n }\n if (len === 5) {\n var tempValue = '';\n for (var i = 1, len_1 = value.length; i < len_1; i++) {\n tempValue += (value.charAt(i) + value.charAt(i));\n }\n value = '#' + tempValue;\n len = 9;\n }\n if (len === 7) {\n value += 'ff';\n }\n return value;\n };\n FormDesigner.prototype.hexToRgb = function (hex) {\n if (!hex) {\n return [];\n }\n hex = hex.trim();\n if (hex.length !== 9) {\n hex = this.roundValue(hex);\n }\n var opacity = Number((parseInt(hex.slice(-2), 16) / 255).toFixed(2));\n hex = hex.slice(1, 7);\n var bigInt = parseInt(hex, 16);\n var h = [];\n h.push((bigInt >> 16) & 255);\n h.push((bigInt >> 8) & 255);\n h.push(bigInt & 255);\n h.push(opacity);\n return h;\n };\n FormDesigner.prototype.rgbToHsv = function (r, g, b, opacity) {\n r /= 255;\n g /= 255;\n b /= 255;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var v = max;\n var d = max - min;\n s = max === 0 ? 0 : d / max;\n if (max === min) {\n h = 0;\n }\n else {\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n var hsv = [Math.round(h * 360), Math.round(s * 1000) / 10, Math.round(v * 1000) / 10];\n if (!isNullOrUndefined(opacity)) {\n hsv.push(opacity);\n }\n return hsv;\n };\n FormDesigner.prototype.hsvToRgb = function (h, s, v, opacity) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n s /= 100;\n v /= 100;\n if (s === 0) {\n r = g = b = v;\n return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255), opacity];\n }\n h /= 60;\n i = Math.floor(h);\n f = h - i;\n p = v * (1 - s);\n q = v * (1 - s * f);\n t = v * (1 - s * (1 - f));\n switch (i) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n default:\n r = v;\n g = p;\n b = q;\n }\n var rgb = [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n if (!isNullOrUndefined(opacity)) {\n rgb.push(opacity);\n }\n return rgb;\n };\n FormDesigner.prototype.rgbToHex = function (rgb) {\n // eslint-disable-next-line max-len\n return rgb.length ? ('#' + this.hex(rgb[0]) + this.hex(rgb[1]) + this.hex(rgb[2]) +\n (!isNullOrUndefined(rgb[3]) ? (rgb[3] !== 0 ? (Math.round(rgb[3] * 255) + 0x10000).toString(16).substr(-2) : '00') : '')) : '';\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateCanvas = function (pageNumber, canvas) {\n if (canvas !== null && canvas !== undefined) {\n canvas = canvas;\n }\n else {\n canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n var zoom = this.pdfViewerBase.getZoomFactor();\n var ratio = this.pdfViewerBase.getZoomRatio(zoom);\n if (canvas) {\n var width = this.pdfViewerBase.pageSize[pageNumber].width;\n var height = this.pdfViewerBase.pageSize[pageNumber].height;\n canvas.width = width * ratio;\n canvas.height = height * ratio;\n canvas.style.width = width * zoom + 'px';\n canvas.style.height = height * zoom + 'px';\n }\n }\n this.pdfViewer.drawing.refreshCanvasDiagramLayer(canvas, pageNumber);\n };\n /**\n * @private\n */\n FormDesigner.prototype.rerenderFormFields = function (pageIndex) {\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (data) {\n var formFieldsData = JSON.parse(data);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + pageIndex);\n var canvasElement = document.getElementById(this.pdfViewer.element.id + '_pageCanvas_' + pageIndex);\n if (formFieldsData !== null && canvasElement !== null && textLayer !== null) {\n for (var i = 0; i < formFieldsData.length; i++) {\n // eslint-disable-next-line\n var currentData = formFieldsData[i].FormField;\n if (currentData.pageNumber === pageIndex + 1) {\n var domElementId = document.getElementById('form_field_' + currentData.id + '_html_element');\n if (!domElementId) {\n var signatureField = this.pdfViewer.nameTable[formFieldsData[i].Key.split(\"_\")[0]];\n var element = signatureField.wrapper.children[0];\n if (element) {\n if (currentData.formFieldAnnotationType === \"RadioButton\") {\n for (var j = 0; j < currentData.radiobuttonItem.length; j++) {\n signatureField = this.pdfViewer.nameTable[currentData.radiobuttonItem[j].id.split(\"_\")[0]];\n element = signatureField.wrapper.children[0];\n currentData.radiobuttonItem[j] = this.renderFormFieldsInZooming(element, currentData.radiobuttonItem[j], signatureField, zoomValue);\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].lineBound = currentData.radiobuttonItem[j].lineBound;\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].zoomValue = zoomValue;\n }\n }\n else {\n var zoomCurrentData = this.renderFormFieldsInZooming(element, currentData, signatureField, zoomValue);\n currentData.lineBound = zoomCurrentData.lineBound;\n if (currentData.signatureBound) {\n currentData.signatureBound = zoomCurrentData.signatureBound;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureBound = currentData.signatureBound;\n this.pdfViewer.nameTable[element.id.split('_')[0] + \"_content\"].signatureBound = currentData.signatureBound;\n }\n this.pdfViewerBase.formFieldCollection[i].FormField.lineBound = currentData.lineBound;\n this.pdfViewerBase.formFieldCollection[i].FormField.zoomValue = zoomValue;\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n }\n if (this.pdfViewerBase.isFocusField && this.pdfViewerBase.focusField) {\n var currentField = document.getElementById(this.pdfViewerBase.focusField.id);\n if (currentField) {\n if ((this.pdfViewerBase.focusField.type === \"SignatureField\" || this.pdfViewerBase.focusField.type === \"InitialField\") && this.pdfViewer.formDesignerModule) {\n currentField.parentElement.focus();\n }\n else {\n currentField.focus();\n }\n this.pdfViewerBase.isFocusField = false;\n this.pdfViewerBase.focusField = [];\n }\n }\n }\n }\n }\n };\n FormDesigner.prototype.renderFormFieldsInZooming = function (element, currentData, signatureField, zoomValue) {\n if (element) {\n var htmlElement = void 0;\n var parentHtmlElement = void 0;\n var parentHtmlElementAttribute = {\n 'id': \"form_field_\" + element.id + '_html_element',\n 'class': 'foreign-object'\n };\n parentHtmlElement = this.createHtmlElement('div', parentHtmlElementAttribute);\n var HtmlElementAttribute = {\n 'id': element.id + '_html_element',\n 'class': 'foreign-object'\n };\n htmlElement = this.createHtmlElement('div', HtmlElementAttribute);\n if (currentData.formFieldAnnotationType === \"SignatureField\" || currentData.formFieldAnnotationType === \"InitialField\") {\n this.disableSignatureClickEvent = true;\n signatureField.value = currentData.value;\n signatureField.signatureType = currentData.signatureType;\n signatureField.signatureBound = currentData.signatureBound;\n element.template = htmlElement.appendChild(this.createSignatureDialog(this.pdfViewer, signatureField));\n this.disableSignatureClickEvent = false;\n }\n else if (currentData.formFieldAnnotationType === \"DropdownList\") {\n element.template = htmlElement.appendChild(this.createDropDownList(element, signatureField));\n }\n else if (currentData.formFieldAnnotationType === \"ListBox\") {\n element.template = htmlElement.appendChild(this.createListBox(element, signatureField));\n }\n else {\n element.template = htmlElement.appendChild(this.createInputElement(currentData.formFieldAnnotationType, signatureField));\n }\n var divElement = document.createElement(\"div\");\n divElement.id = signatureField.id + '_designer_name';\n divElement.style.fontSize = signatureField.fontSize ? (signatureField.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n divElement.className = \"e-pv-show-designer-name\";\n if (this.pdfViewer.designerMode) {\n divElement.innerHTML = signatureField.name;\n divElement.style.position = 'absolute';\n }\n else {\n divElement.innerHTML = \"\";\n divElement.style.position = 'initial';\n }\n htmlElement.appendChild(divElement);\n parentHtmlElement.appendChild(htmlElement);\n var textLayer = document.getElementById(this.pdfViewer.element.id + '_textLayer_' + (currentData.pageNumber - 1));\n textLayer.appendChild(parentHtmlElement);\n if (signatureField.formFieldAnnotationType === \"RadioButton\") {\n if (document.getElementsByClassName(\"e-pv-radiobtn-span\").length > 0) {\n var bounds = this.getCheckboxRadioButtonBounds(signatureField);\n var spanElement = document.getElementsByClassName(\"e-pv-radiobtn-span\");\n // this.renderRadioButtonSpan(spanElement, bounds, zoomValue);\n }\n }\n var point = cornersPointsBeforeRotation(signatureField.wrapper.children[0]).topLeft;\n if (currentData.formFieldAnnotationType === \"Checkbox\" && (Browser.isDevice)) {\n //ReCreate outer div while zoom options\n var outerDiv = void 0;\n var outerDivHeight = element.actualSize.height + this.increasedSize;\n var outerDivWidth = element.actualSize.width + this.increasedSize;\n var outerDivAttribute = {\n 'id': element.id + '_outer_div',\n 'className': 'e-pv-checkbox-outer-div'\n };\n outerDiv = createElement(\"div\", outerDivAttribute);\n outerDiv.setAttribute('style', 'height:' + outerDivHeight * zoomValue + 'px; width:' + outerDivWidth * zoomValue + 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'position:absolute; opacity: 1;');\n outerDiv.appendChild(parentHtmlElement);\n outerDiv.addEventListener('click', this.setCheckBoxState.bind(this));\n textLayer.appendChild(outerDiv);\n htmlElement.setAttribute('style', 'height:' + (element.actualSize.height * zoomValue) + 'px; width:' + (element.actualSize.width * zoomValue) +\n 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'transform:rotate(' + (element.rotateAngle + element.parentTransform) + 'deg);' +\n 'pointer-events:' + ((this.pdfViewer.designerMode) ? 'none' : 'all')\n + ';visibility:' + ((element.visible) ? 'visible' : 'hidden') + ';opacity:' + element.style.opacity + ';');\n }\n else {\n htmlElement.setAttribute('style', 'height:' + (element.actualSize.height * zoomValue) + 'px; width:' + (element.actualSize.width * zoomValue) +\n 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'position:absolute;transform:rotate(' + (element.rotateAngle + element.parentTransform) + 'deg);' +\n 'pointer-events:' + ((this.pdfViewer.designerMode) ? 'none' : 'all')\n + ';visibility:' + ((element.visible) ? 'visible' : 'hidden') + ';opacity:' + element.style.opacity + ';');\n }\n currentData.lineBound = { X: point.x * zoomValue, Y: point.y * zoomValue, Width: element.actualSize.width * zoomValue, Height: element.actualSize.height * zoomValue };\n if (currentData.signatureBound && signatureField.wrapper.children[1]) {\n var signPoint = signatureField.wrapper.children[1].bounds;\n currentData.signatureBound.x = signPoint.x * zoomValue;\n currentData.signatureBound.y = signPoint.y * zoomValue;\n currentData.signatureBound.width = signPoint.width * zoomValue;\n currentData.signatureBound.height = signPoint.height * zoomValue;\n }\n }\n return currentData;\n };\n /* This method was commented for this task ID EJ2-61222, A method renderRadioButtonSpan was\n implemented and the values which was already taken from getCheckBoxRadioButtonBounds,\n are again calculated based on zoomValues and the size of the radio button was changed.\n This makes the radio button big in size. Refer previous task IDs EJ2-50668 and EJ2-57850 Where these lines were added. */\n /* private renderRadioButtonSpan(spanElement: HTMLCollectionOf, bounds: any, zoomValue: number): void {\n for (let i: number = 0; i < spanElement.length; i++) {\n (spanElement as any)[i].style.width = Math.floor(bounds.width - 10) + \"px\";\n (spanElement as any)[i].style.height = Math.floor(bounds.height - 10) + \"px\";\n if (bounds.width <= 14 && parseInt((spanElement as any)[i].style.width, 10) >= 2) {\n if (parseInt((spanElement as any)[i].style.width, 10) <= 5) {\n if (bounds.width > 10) {\n (spanElement as any)[i].style.width = Math.floor(bounds.width / (1 + zoomValue)) + \"px\";\n (spanElement as any)[i].style.height = Math.floor(bounds.height / (1 + zoomValue)) + \"px\";\n (spanElement as any)[i].style.margin = Math.round(bounds.width / 4) + \"px\";\n }\n else if (bounds.width < 10 && bounds.width > 5) {\n (spanElement as any)[i].style.width = (bounds.width / 1.85) + \"px\";\n (spanElement as any)[i].style.height = (bounds.height / 1.85) + \"px\";\n }\n else if (bounds.width <= 5) {\n (spanElement as any)[i].style.width = (bounds.width / 1.85) + \"px\";\n (spanElement as any)[i].style.height = (bounds.height / 1.85) + \"px\";\n (spanElement as any)[i].style.margin = (bounds.width / 3.5) + \"px\";\n }\n }\n }\n if (parseInt((spanElement as any)[i].style.width, 10) <= 1 || parseInt((spanElement as any)[i].style.height, 10) <= 1) {\n if ((bounds.width * zoomValue) >= 2) {\n (spanElement as any)[i].style.width = Math.round(bounds.width / 1.65) + \"px\";\n (spanElement as any)[i].style.height = Math.round(bounds.height / 1.65) + \"px\";\n (spanElement as any)[i].style.margin = bounds.width / 3.8 + \"px\";;\n } else {\n (spanElement as any)[i].style.width = \"1px\";\n (spanElement as any)[i].style.height = \"1px\";\n (spanElement as any)[i].style.margin = \"1px\";\n }\n }\n if (bounds.width > 14) {\n (spanElement as any)[i].style.width = (bounds.width / 2) + \"px\";\n (spanElement[i] as any).style.height = (bounds.height / 2) + \"px\";\n }\n if (zoomValue <= 1 && zoomValue > 0.70) {\n (spanElement as any)[i].style.width = (bounds.width / 1.85) + \"px\";\n (spanElement[i] as any).style.height = (bounds.height / 1.85) + \"px\";\n }\n\n }\n }\n */\n /**\n * @private\n */\n FormDesigner.prototype.updateFormFieldInitialSize = function (obj, formFieldAnnotationType) {\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n switch (formFieldAnnotationType) {\n case 'Textbox':\n obj.width = 200 * zoomValue;\n obj.height = 24 * zoomValue;\n break;\n case 'PasswordField':\n obj.width = 200 * zoomValue;\n obj.height = 24 * zoomValue;\n break;\n case 'SignatureField':\n case 'InitialField':\n obj.width = 200 * zoomValue;\n obj.height = 63 * zoomValue;\n break;\n case 'Checkbox':\n obj.width = 20 * zoomValue;\n obj.height = 20 * zoomValue;\n break;\n case 'RadioButton':\n obj.width = 20 * zoomValue;\n obj.height = 20 * zoomValue;\n break;\n case 'DropdownList':\n obj.width = 200 * zoomValue;\n obj.height = 24 * zoomValue;\n break;\n case 'ListBox':\n obj.width = 198 * zoomValue;\n obj.height = 66 * zoomValue;\n break;\n }\n return { width: obj.width, height: obj.height };\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateHTMLElement = function (actualObject) {\n var element = actualObject.wrapper.children[0];\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n if (element) {\n var htmlElement = document.getElementById(element.id + \"_html_element\");\n if (!isNullOrUndefined(htmlElement)) {\n var point = cornersPointsBeforeRotation(actualObject.wrapper.children[0]).topLeft;\n htmlElement.setAttribute('style', 'height:' + (element.actualSize.height * zoomValue) + 'px; width:' + (element.actualSize.width * zoomValue) +\n 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'position:absolute;transform:rotate(' + (element.rotateAngle + element.parentTransform) + 'deg);' +\n 'pointer-events:' + ((this.pdfViewer.designerMode) ? 'none' : 'all')\n + ';visibility:' + ((element.visible) ? 'visible' : 'hidden') + ';opacity:' + element.style.opacity + ';');\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (actualObject.formFieldAnnotationType === \"RadioButton\") {\n var labelContainer = htmlElement.firstElementChild.firstElementChild;\n var spanElement = htmlElement.firstElementChild.firstElementChild.lastElementChild;\n if (element.actualSize.width > element.actualSize.height) {\n htmlElement.firstElementChild.style.display = \"inherit\";\n labelContainer.style.width = labelContainer.style.height = (element.actualSize.height * zoomValue) + \"px\";\n spanElement.style.width = spanElement.style.height = (element.actualSize.height - 10) + \"px\";\n }\n else {\n htmlElement.firstElementChild.style.display = \"flex\";\n labelContainer.style.width = labelContainer.style.height = (element.actualSize.width * zoomValue) + \"px\";\n spanElement.style.width = spanElement.style.height = (element.actualSize.width - 10) + \"px\";\n }\n }\n if (actualObject.formFieldAnnotationType === \"Checkbox\") {\n var minCheckboxWidth = 20;\n var labelContainer = htmlElement.firstElementChild.firstElementChild;\n var spanElement = htmlElement.firstElementChild.firstElementChild.lastElementChild.firstElementChild;\n if (element.actualSize.width > element.actualSize.height) {\n htmlElement.firstElementChild.style.display = \"inherit\";\n labelContainer.style.width = labelContainer.style.height = (element.actualSize.height * zoomValue) + \"px\";\n spanElement.style.width = ((element.actualSize.height / 5) * zoomValue) + \"px\";\n spanElement.style.height = ((element.actualSize.height / 2.5) * zoomValue) + \"px\";\n spanElement.style.left = ((element.actualSize.height / 2.5) * zoomValue) + \"px\";\n spanElement.style.top = ((element.actualSize.height / 5) * zoomValue) + \"px\";\n }\n else {\n htmlElement.firstElementChild.style.display = \"flex\";\n labelContainer.style.width = labelContainer.style.height = (element.actualSize.width * zoomValue) + \"px\";\n spanElement.style.width = ((element.actualSize.width / 5) * zoomValue) + \"px\";\n spanElement.style.height = ((element.actualSize.width / 2.5) * zoomValue) + \"px\";\n spanElement.style.left = ((element.actualSize.width / 2.5) * zoomValue) + \"px\";\n spanElement.style.top = ((element.actualSize.width / 5) * zoomValue) + \"px\";\n }\n if (spanElement.className.indexOf(\"e-pv-cb-checked\") !== -1) {\n var checkboxWidth = parseInt(labelContainer.style.width, 10);\n if (checkboxWidth > minCheckboxWidth) {\n spanElement.style.borderWidth = \"3px\";\n }\n else if (checkboxWidth <= 15) {\n spanElement.style.borderWidth = \"1px\";\n }\n else {\n spanElement.style.borderWidth = \"2px\";\n }\n }\n }\n if (actualObject.formFieldAnnotationType === \"SignatureField\" || actualObject.formFieldAnnotationType === \"InitialField\") {\n var signatureDiv = htmlElement.firstElementChild.firstElementChild;\n var indicatorSpan = signatureDiv.nextElementSibling;\n var bounds = this.getBounds(indicatorSpan);\n var options = {\n height: element.actualSize.height,\n width: element.actualSize.width,\n signatureIndicatorSettings: {\n text: indicatorSpan.textContent,\n width: bounds.width,\n height: bounds.height,\n },\n initialIndicatorSettings: {\n text: indicatorSpan.textContent,\n width: bounds.width,\n height: bounds.height,\n }\n };\n this.updateSignatureandInitialIndicator(actualObject, options, signatureDiv);\n }\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].FormField.formFieldAnnotationType === \"RadioButton\") {\n for (var j = 0; j < formFieldsData[i].FormField.radiobuttonItem.length; j++) {\n if (element.id === formFieldsData[i].FormField.radiobuttonItem[j].id) {\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].lineBound = { X: point.x * zoomValue, Y: point.y * zoomValue, Width: element.actualSize.width * zoomValue, Height: element.actualSize.height * zoomValue };\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].zoomValue = zoomValue;\n break;\n }\n }\n }\n else {\n if (formFieldsData[i].Key === element.id) {\n formFieldsData[i].FormField.lineBound = { X: point.x * zoomValue, Y: point.y * zoomValue, Width: element.actualSize.width * zoomValue, Height: element.actualSize.height * zoomValue };\n if (formFieldsData[i].FormField.signatureBound) {\n var x = (point.x * zoomValue) + (element.actualSize.width * zoomValue) / 2;\n x = x - formFieldsData[i].FormField.signatureBound.width / 2;\n var y = (point.y * zoomValue) + (element.actualSize.height * zoomValue) / 2;\n y = y - formFieldsData[i].FormField.signatureBound.height / 2;\n formFieldsData[i].FormField.signatureBound.x = x;\n formFieldsData[i].FormField.signatureBound.y = y;\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureBound = formFieldsData[i].FormField.signatureBound;\n this.pdfViewer.nameTable[element.id.split('_')[0] + \"_content\"].signatureBound = formFieldsData[i].FormField.signatureBound;\n }\n this.pdfViewerBase.formFieldCollection[i].FormField.lineBound = formFieldsData[i].FormField.lineBound;\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n };\n FormDesigner.prototype.getCheckboxRadioButtonBounds = function (drawingObject, bounds, isPrint) {\n var zoomValue = isPrint ? this.defaultZoomValue : this.pdfViewerBase.getZoomFactor();\n var width = 0;\n var height = 0;\n var display = '';\n if (bounds) {\n if (bounds.width > bounds.height) {\n width = height = bounds.height * zoomValue;\n display = \"inherit\";\n }\n else {\n width = height = bounds.width * zoomValue;\n display = \"flex\";\n }\n }\n else if (drawingObject) {\n if (drawingObject.bounds.width > drawingObject.bounds.height) {\n width = height = drawingObject.bounds.height * zoomValue;\n display = \"inherit\";\n }\n else {\n width = height = drawingObject.bounds.width * zoomValue;\n display = \"flex\";\n }\n }\n return { width: width, height: height, display: display };\n };\n FormDesigner.prototype.updateSessionFormFieldProperties = function (updatedFormFields) {\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var element = updatedFormFields.wrapper.children[0];\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].FormField.formFieldAnnotationType === \"RadioButton\") {\n for (var j = 0; j < formFieldsData[i].FormField.radiobuttonItem.length; j++) {\n if (element.id === formFieldsData[i].FormField.radiobuttonItem[j].id) {\n var radioButtonItemUpdate = {\n id: element.id, lineBound: { X: element.bounds.x * zoomValue, Y: element.bounds.y * zoomValue, Width: element.bounds.width * zoomValue, Height: element.bounds.height * zoomValue },\n name: updatedFormFields.name, zoomValue: zoomValue, pageNumber: updatedFormFields.pageNumber, value: updatedFormFields.value, formFieldAnnotationType: updatedFormFields.formFieldAnnotationType,\n fontFamily: updatedFormFields.fontFamily, fontSize: updatedFormFields.fontSize, fontStyle: updatedFormFields.fontStyle, fontColor: this.getRgbCode(updatedFormFields.color),\n backgroundColor: this.getRgbCode(updatedFormFields.backgroundColor), borderColor: this.getRgbCode(updatedFormFields.borderColor), thickness: updatedFormFields.thickness, textAlign: updatedFormFields.alignment, isChecked: updatedFormFields.isChecked, isSelected: updatedFormFields.isSelected,\n isReadonly: updatedFormFields.isReadonly, visibility: updatedFormFields.visibility, maxLength: updatedFormFields.maxLength, isRequired: updatedFormFields.isRequired, isPrint: updatedFormFields.isPrint, rotation: 0, tooltip: updatedFormFields.tooltip\n };\n formFieldsData[i].FormField.radiobuttonItem[j] = radioButtonItemUpdate;\n if (this.pdfViewerBase.formFieldCollection[i] && this.pdfViewerBase.formFieldCollection[i].FormField && this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j]) {\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j] = radioButtonItemUpdate;\n }\n break;\n }\n }\n }\n else if (formFieldsData[i].Key === element.id) {\n var formDesignObj = {\n id: element.id, lineBound: { X: element.bounds.x * zoomValue, Y: element.bounds.y * zoomValue, Width: element.bounds.width * zoomValue, Height: element.bounds.height * zoomValue },\n name: updatedFormFields.name, zoomValue: zoomValue, pageNumber: updatedFormFields.pageNumber, value: updatedFormFields.value, formFieldAnnotationType: updatedFormFields.formFieldAnnotationType,\n fontFamily: updatedFormFields.fontFamily, fontSize: updatedFormFields.fontSize, fontStyle: updatedFormFields.fontStyle, fontColor: this.getRgbCode(updatedFormFields.color),\n backgroundColor: this.getRgbCode(updatedFormFields.backgroundColor), borderColor: this.getRgbCode(updatedFormFields.borderColor), thickness: updatedFormFields.thickness, textAlign: updatedFormFields.alignment, isChecked: updatedFormFields.isChecked, isSelected: updatedFormFields.isSelected,\n isReadonly: updatedFormFields.isReadonly, font: { isBold: updatedFormFields.font.isBold, isItalic: updatedFormFields.font.isItalic, isStrikeout: updatedFormFields.font.isStrikeout, isUnderline: updatedFormFields.font.isUnderline }, selectedIndex: [], radiobuttonItem: null, option: updatedFormFields.options ? updatedFormFields.options : [], visibility: updatedFormFields.visibility, maxLength: updatedFormFields.maxLength, isRequired: updatedFormFields.isRequired, isPrint: updatedFormFields.isPrint, rotation: 0, tooltip: updatedFormFields.tooltip\n };\n if (formFieldsData[i].FormField.formFieldAnnotationType === \"SignatureField\" || formFieldsData[i].FormField.formFieldAnnotationType === \"InitialField\") {\n var updatedSignatureFormFields = updatedFormFields;\n var formDesignObj_1 = {\n id: element.id, lineBound: { X: element.bounds.x * zoomValue, Y: element.bounds.y * zoomValue, Width: element.bounds.width * zoomValue, Height: element.bounds.height * zoomValue },\n name: updatedFormFields.name, zoomValue: zoomValue, pageNumber: updatedFormFields.pageNumber, value: updatedFormFields.value, formFieldAnnotationType: updatedFormFields.formFieldAnnotationType,\n fontFamily: updatedFormFields.fontFamily, fontSize: updatedFormFields.fontSize, fontStyle: updatedFormFields.fontStyle, fontColor: this.getRgbCode(updatedFormFields.color),\n backgroundColor: this.getRgbCode(updatedFormFields.backgroundColor), borderColor: this.getRgbCode(updatedFormFields.borderColor), thickness: updatedFormFields.thickness, textAlign: updatedFormFields.alignment, isChecked: updatedFormFields.isChecked, isSelected: updatedFormFields.isSelected,\n isReadonly: updatedFormFields.isReadonly, font: { isBold: updatedFormFields.font.isBold, isItalic: updatedFormFields.font.isItalic, isStrikeout: updatedFormFields.font.isStrikeout, isUnderline: updatedFormFields.font.isUnderline }, selectedIndex: [], radiobuttonItem: null, option: updatedFormFields.options ? updatedFormFields.options : [], visibility: updatedFormFields.visibility, maxLength: updatedFormFields.maxLength, isRequired: updatedFormFields.isRequired, isPrint: updatedFormFields.isPrint, rotation: 0, tooltip: updatedFormFields.tooltip,\n signatureType: updatedFormFields.signatureType, signatureBound: updatedSignatureFormFields.signatureBound\n };\n formFieldsData[i].FormField = formDesignObj_1;\n this.pdfViewerBase.formFieldCollection[i].FormField = formDesignObj_1;\n }\n else {\n formFieldsData[i].FormField = formDesignObj;\n this.pdfViewerBase.formFieldCollection[i].FormField = formDesignObj;\n }\n break;\n }\n }\n if (this.pdfViewerBase.formFieldCollection.length > 0) {\n this.pdfViewerBase.enableFormFieldButton(true);\n }\n else {\n this.pdfViewerBase.enableFormFieldButton(false);\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n };\n /**\n * @private\n */\n FormDesigner.prototype.createSignatureDialog = function (commandHandler, signatureField, bounds, isPrint) {\n this.isInitialField = isNullOrUndefined(signatureField.isInitialField) ? false : signatureField.isInitialField;\n this.pdfViewerBase.isInitialField = this.isInitialField;\n this.pdfViewerBase.isInitialField = signatureField.isInitialField;\n var element = createElement(\"div\");\n element.className = \"foreign-object\";\n element.style.position = \"absolute\";\n element.style.width = \"100%\";\n element.style.height = \"100%\";\n element.addEventListener('focus', this.focusFormFields.bind(this));\n element.addEventListener('blur', this.blurFormFields.bind(this));\n var divElement = createElement(\"div\");\n divElement.style.width = \"100%\";\n divElement.style.height = \"100%\";\n divElement.style.position = \"absolute\";\n divElement.style.backgroundColor = \"transparent\";\n if (!isNullOrUndefined(signatureField.thickness)) {\n divElement.className = 'e-pdfviewer-signatureformfields-signature';\n divElement.style.border = (signatureField.thickness) + 'px solid #303030';\n }\n if (!isNullOrUndefined(signatureField.value) && signatureField.value !== '') {\n divElement.className = 'e-pdfviewer-signatureformfields-signature';\n divElement.style.pointerEvents = 'none';\n }\n else {\n divElement.className = 'e-pdfviewer-signatureformfields';\n divElement.style.pointerEvents = '';\n }\n divElement.id = signatureField.id;\n divElement.disabled = signatureField.isReadonly;\n element.appendChild(divElement);\n var signatureFieldSettings = this.pdfViewer.signatureFieldSettings;\n var initialFieldSettings = this.pdfViewer.initialFieldSettings;\n if (!signatureFieldSettings.signatureIndicatorSettings) {\n signatureFieldSettings.signatureIndicatorSettings = { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' };\n }\n if (!signatureFieldSettings.signatureDialogSettings) {\n signatureFieldSettings.signatureDialogSettings = { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false };\n }\n //check whether the width for sign indicator has default value or not and then set the default width value for initial field.\n var indicatorSettings;\n if (signatureField.isInitialField) {\n indicatorSettings = signatureField.signatureIndicatorSettings ? signatureField.signatureIndicatorSettings : initialFieldSettings.initialIndicatorSettings;\n }\n else {\n indicatorSettings = signatureField.signatureIndicatorSettings ? signatureField.signatureIndicatorSettings : signatureFieldSettings.signatureIndicatorSettings;\n }\n var defaultWidth = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width === 19 ? (signatureField.isInitialField ? 30 : 25) : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.width;\n var signatureFieldIndicatorWidth = indicatorSettings.width ? indicatorSettings.width : (signatureField.signatureIndicatorSettings && signatureField.signatureIndicatorSettings.width) ? signatureField.signatureIndicatorSettings.width : defaultWidth;\n var defaultHeight = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height === 10 ? 13 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.height;\n var signatureFieldIndicatorHeight = indicatorSettings.height ? indicatorSettings.height : (signatureField.signatureIndicatorSettings && signatureField.signatureIndicatorSettings.height) ? signatureField.signatureIndicatorSettings.height : defaultHeight;\n var signatureFieldIndicatorBG = indicatorSettings.backgroundColor ? (indicatorSettings.backgroundColor === 'orange' ? '#FFE48559' : indicatorSettings.backgroundColor) : (signatureField.signatureIndicatorSettings && signatureField.signatureIndicatorSettings.backgroundColor) ? signatureField.signatureIndicatorSettings.backgroundColor : '#FFE48559';\n var signIndicator = signatureField.isInitialField ? \"Initial\" : \"Sign\";\n var signatureFieldWidth = signatureField.bounds ? signatureField.bounds.width : bounds.width;\n var signatureFieldHeight = signatureField.bounds ? signatureField.bounds.height : bounds.height;\n // eslint-disable-next-line max-len\n var height = signatureFieldIndicatorHeight > signatureFieldHeight / 2 ? signatureFieldHeight / 2 : signatureFieldIndicatorHeight;\n // eslint-disable-next-line max-len\n var width = signatureFieldIndicatorWidth > signatureFieldWidth / 2 ? signatureFieldWidth / 2 : signatureFieldIndicatorWidth;\n var fontSize = 10;\n if (signatureField.signatureIndicatorSettings && signatureField.signatureIndicatorSettings.fontSize)\n // eslint-disable-next-line max-len\n fontSize = signatureField.signatureIndicatorSettings.fontSize > height / 2 ? 10 : signatureField.signatureIndicatorSettings.fontSize;\n else\n // eslint-disable-next-line max-len\n fontSize = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize > height / 2 ? 10 : this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.fontSize;\n var spanElement = createElement(\"span\");\n if (!initialFieldSettings.initialIndicatorSettings) {\n initialFieldSettings.initialIndicatorSettings = { opacity: 1, backgroundColor: 'orange', width: 19, height: 10, fontSize: 10, text: null, color: 'black' };\n }\n if (!initialFieldSettings.initialDialogSettings) {\n initialFieldSettings.initialDialogSettings = { displayMode: DisplayMode.Draw | DisplayMode.Text | DisplayMode.Upload, hideSaveSignature: false };\n }\n var fieldText = signatureField.signatureIndicatorSettings ? signatureField.signatureIndicatorSettings.text : null;\n if (signatureField.formFieldAnnotationType == \"InitialField\") {\n spanElement.id = \"initialIcon_\" + signatureField.pageIndex + \"_\" + this.setFormFieldIdIndex();\n this.setIndicatorText(spanElement, fieldText, this.pdfViewer.initialFieldSettings.initialIndicatorSettings.text, \"Initial\");\n }\n else {\n spanElement.style.height = '';\n spanElement.style.width = '';\n spanElement.id = \"signIcon_\" + signatureField.pageIndex + \"_\" + this.setFormFieldIdIndex();\n this.setIndicatorText(spanElement, fieldText, this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings.text, \"Sign\");\n }\n spanElement.style.overflow = \"hidden\";\n spanElement.style.whiteSpace = \"nowrap\";\n spanElement.style.padding = \"2px 3px 2px 1px\";\n spanElement.style.boxSizing = \"border-box\";\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n spanElement.style.textAlign = \"left\";\n spanElement.style.fontSize = (fontSize * zoomValue) + 'px';\n var boundsOfSpan = this.getBounds(spanElement);\n //Set spanelement indicator property\n spanElement.style.backgroundColor = signatureFieldIndicatorBG;\n spanElement.style.color = indicatorSettings.color;\n spanElement.style.opacity = indicatorSettings.opacity;\n spanElement.style.height = signatureFieldIndicatorHeight;\n spanElement.style.width = signatureFieldIndicatorWidth;\n spanElement.style.position = \"absolute\";\n var widthNew = this.setHeightWidth(signatureFieldWidth, width, boundsOfSpan.width + fontSize, zoomValue);\n spanElement.style.width = widthNew + \"px\";\n var heightNew = this.setHeightWidth(signatureFieldHeight, height, boundsOfSpan.height, zoomValue);\n spanElement.style.height = heightNew + \"px\";\n if (!isPrint) {\n element.appendChild(spanElement);\n }\n this.updateSignInitialFieldProperties(signatureField, signatureField.isInitialField, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n if (!isNullOrUndefined(signatureField.tooltip) && signatureField.tooltip != \"\") {\n this.setToolTip(signatureField.tooltip, element);\n }\n this.updateSignatureFieldProperties(signatureField, element, isPrint);\n return element;\n };\n // eslint-disable-next-line\n FormDesigner.prototype.setIndicatorText = function (spanElement, fieldText, indicatorText, defaultText) {\n spanElement.innerHTML = fieldText ? fieldText : indicatorText ? indicatorText : defaultText;\n };\n FormDesigner.prototype.getBounds = function (htmlElement) {\n var clonedElement = htmlElement.cloneNode(true);\n clonedElement.style.height = '';\n clonedElement.style.width = '';\n clonedElement.id = clonedElement.id + \"_clonedElement\";\n document.body.appendChild(clonedElement);\n var clone = document.getElementById(clonedElement.id);\n var bounds = clone.getBoundingClientRect();\n document.body.removeChild(clonedElement);\n return bounds;\n };\n FormDesigner.prototype.updateSignatureandInitialIndicator = function (formFieldObject, options, htmlElement) {\n if (htmlElement !== null) {\n var fieldBounds = htmlElement.getBoundingClientRect();\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var spanElement = htmlElement.nextElementSibling;\n var objIndicatorSettings = void 0;\n var indicatorSettings = void 0;\n if (formFieldObject.formFieldAnnotationType === 'SignatureField') {\n objIndicatorSettings = formFieldObject.signatureIndicatorSettings;\n indicatorSettings = options.signatureIndicatorSettings;\n }\n if (formFieldObject.formFieldAnnotationType === 'InitialField') {\n // eslint-disable-next-line\n objIndicatorSettings = formFieldObject.signatureIndicatorSettings ? formFieldObject.signatureIndicatorSettings : this.pdfViewer.initialFieldSettings.initialIndicatorSettings;\n indicatorSettings = options.initialIndicatorSettings;\n }\n spanElement.style.width = '';\n spanElement.style.height = '';\n if (indicatorSettings && objIndicatorSettings) {\n if (indicatorSettings.text !== undefined) {\n this.setIndicatorText(spanElement, indicatorSettings.text, indicatorSettings.text, \"Sign\");\n objIndicatorSettings.text = indicatorSettings.text;\n }\n if (indicatorSettings.fontSize) {\n spanElement.style.fontSize = indicatorSettings.fontSize > formFieldObject.height / 2 ? 10 : indicatorSettings.fontSize * zoomValue + \"px\";\n objIndicatorSettings.fontSize = indicatorSettings.fontSize;\n }\n var bounds = this.getBounds(spanElement);\n if (indicatorSettings.color) {\n spanElement.style.color = indicatorSettings.color;\n objIndicatorSettings.color = this.nameToHash(indicatorSettings.color);\n }\n if (indicatorSettings.backgroundColor) {\n spanElement.style.backgroundColor = indicatorSettings.backgroundColor;\n objIndicatorSettings.backgroundColor = this.nameToHash(indicatorSettings.backgroundColor);\n }\n if (indicatorSettings.opacity) {\n spanElement.style.opacity = indicatorSettings.opacity;\n objIndicatorSettings.opacity = indicatorSettings.opacity;\n }\n if (indicatorSettings.width || options.width || indicatorSettings.text) {\n var width = this.setHeightWidth(fieldBounds.width, indicatorSettings.width, bounds.width, zoomValue);\n spanElement.style.width = width + \"px\";\n objIndicatorSettings.width = width;\n }\n if (indicatorSettings.height || options.height || indicatorSettings.text) {\n var height = this.setHeightWidth(fieldBounds.height, indicatorSettings.height, bounds.height, zoomValue);\n spanElement.style.height = height + \"px\";\n objIndicatorSettings.height = height;\n }\n }\n this.updateSignatureFieldProperties(formFieldObject, htmlElement, formFieldObject.isPrint);\n if (formFieldObject.signatureIndicatorSettings && objIndicatorSettings) {\n formFieldObject.signatureIndicatorSettings = objIndicatorSettings;\n }\n return formFieldObject;\n }\n };\n FormDesigner.prototype.setHeightWidth = function (fieldBound, indicatorBound, referenceBound, zoomValue) {\n var heightOrWidth;\n if (fieldBound / 2 > indicatorBound && referenceBound < indicatorBound) {\n heightOrWidth = indicatorBound * zoomValue;\n }\n else if (referenceBound <= fieldBound / 2) {\n heightOrWidth = referenceBound * zoomValue;\n }\n else {\n heightOrWidth = fieldBound / 2 * zoomValue;\n }\n return heightOrWidth;\n };\n /**\n * @private\n */\n FormDesigner.prototype.createDropDownList = function (dropdownElement, drawingObject, isPrint) {\n var element = createElement(\"div\");\n element.className = \"foreign-object\";\n element.style.position = \"absolute\";\n element.style.width = \"100%\";\n element.style.height = \"100%\";\n var select = document.createElement(\"select\");\n select.addEventListener('change', this.dropdownChange.bind(this));\n select.addEventListener('focus', this.focusFormFields.bind(this));\n select.addEventListener('blur', this.blurFormFields.bind(this));\n select.id = drawingObject.id;\n select.name = \"editabledropdown\" + this.pdfViewerBase.activeElements.activePageID + dropdownElement.id;\n select.setAttribute(\"aria-label\", \"editabledropdown\" + this.pdfViewerBase.activeElements.activePageID + dropdownElement.id);\n select.className = \"e-pv-formfield-dropdown\";\n select.style.width = \"100%\";\n select.style.height = \"100%\";\n select.style.position = \"absolute\";\n this.updateDropdownFieldSettingsProperties(drawingObject, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n var dropDownChildren = drawingObject.options ? drawingObject.options : [];\n this.updateDropdownListProperties(drawingObject, select, isPrint);\n for (var j = 0; j < dropDownChildren.length; j++) {\n var option = document.createElement(\"option\");\n option.className = \"e-pv-formfield-dropdown\";\n option.value = dropDownChildren[j].itemValue;\n option.text = dropDownChildren[j].itemName;\n this.updateDropdownListProperties(drawingObject, option);\n select.appendChild(option);\n }\n select.selectedIndex = !isNullOrUndefined(drawingObject.selectedIndex) ? drawingObject.selectedIndex : 0;\n element.appendChild(select);\n if (!isNullOrUndefined(drawingObject.tooltip) && drawingObject.tooltip != \"\") {\n this.setToolTip(drawingObject.tooltip, element);\n }\n return element;\n };\n /**\n * @private\n */\n FormDesigner.prototype.createListBox = function (listBoxElement, drawingObject, isPrint) {\n var element = createElement(\"div\");\n element.className = \"foreign-object\";\n element.style.position = \"absolute\";\n element.style.width = \"100%\";\n element.style.height = \"100%\";\n var select = document.createElement(\"select\");\n select.addEventListener('click', this.listBoxChange.bind(this));\n select.addEventListener('focus', this.focusFormFields.bind(this));\n select.addEventListener('blur', this.blurFormFields.bind(this));\n select.id = drawingObject.id;\n select.name = \"editabledropdown\" + this.pdfViewerBase.activeElements.activePageID + listBoxElement.id;\n select.setAttribute(\"aria-label\", \"editabledropdown\" + this.pdfViewerBase.activeElements.activePageID + listBoxElement.id);\n select.className = \"e-pv-formfield-listbox\";\n select.style.width = \"100%\";\n select.style.height = \"100%\";\n select.style.position = \"absolute\";\n select.multiple = true;\n this.updatelistBoxFieldSettingsProperties(drawingObject, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n var dropDownChildren = drawingObject.options ? drawingObject.options : [];\n this.updateListBoxProperties(drawingObject, select, isPrint);\n for (var j = 0; j < dropDownChildren.length; j++) {\n var option = document.createElement(\"option\");\n option.className = \"e-pv-formfield-listbox\";\n option.value = dropDownChildren[j].itemValue;\n option.text = dropDownChildren[j].itemName;\n if (!isNullOrUndefined(drawingObject.selectedIndex)) {\n for (var k = 0; k < drawingObject.selectedIndex.length; k++) {\n if (j === drawingObject.selectedIndex[k]) {\n option.selected = true;\n }\n }\n }\n select.appendChild(option);\n }\n element.appendChild(select);\n if (!isNullOrUndefined(drawingObject.tooltip) && drawingObject.tooltip != \"\") {\n this.setToolTip(drawingObject.tooltip, element);\n }\n return element;\n };\n /**\n * @private\n */\n FormDesigner.prototype.createInputElement = function (formFieldAnnotationType, drawingObject, formFieldBounds, isPrint) {\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var element = createElement(\"div\");\n element.className = \"foreign-object\";\n element.style.position = \"absolute\";\n element.style.width = \"100%\";\n element.style.height = \"100%\";\n var labelElement;\n var checkboxDiv;\n var innerSpan;\n var inputElement = createElement(\"input\");\n var textArea = createElement('textarea');\n inputElement.id = drawingObject.id;\n inputElement.setAttribute(\"aria-label\", this.pdfViewer.element.id + \"formfilldesigner\");\n inputElement.style.position = \"absolute\";\n if (formFieldAnnotationType === \"Textbox\") {\n if (drawingObject.isMultiline) {\n textArea = this.createTextAreaElement(inputElement.id);\n this.updateTextFieldSettingProperties(drawingObject, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n this.updateTextboxProperties(drawingObject, textArea, isPrint);\n }\n else {\n inputElement = this.createTextboxElement(inputElement.id);\n this.updateTextFieldSettingProperties(drawingObject, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n this.updateTextboxProperties(drawingObject, inputElement, isPrint);\n }\n }\n else if (formFieldAnnotationType == \"Checkbox\") {\n var zoomLevel = isPrint ? this.defaultZoomValue : this.pdfViewerBase.getZoomFactor();\n var minCheckboxWidth = 20;\n element.style.display = \"flex\";\n element.style.alignItems = \"center\";\n var bounds = this.getCheckboxRadioButtonBounds(drawingObject, formFieldBounds, isPrint);\n element.style.display = bounds.display;\n labelElement = createElement(\"label\", { className: \"e-pv-checkbox-container\" });\n labelElement.style.width = drawingObject.bounds ? (drawingObject.bounds.width * zoomLevel) + \"px\" : bounds.width + \"px\";\n labelElement.style.height = drawingObject.bounds ? (drawingObject.bounds.height * zoomLevel) + \"px\" : bounds.height + \"px\";\n if (this.isDrawHelper)\n labelElement.style.cursor = 'crosshair';\n else\n labelElement.style.cursor = 'pointer';\n checkboxDiv = createElement(\"div\", { className: \"e-pv-checkbox-div\" });\n if (!Browser.isDevice) {\n checkboxDiv.addEventListener('click', this.setCheckBoxState.bind(this));\n checkboxDiv.addEventListener('focus', this.focusFormFields.bind(this));\n checkboxDiv.addEventListener('blur', this.blurFormFields.bind(this));\n }\n checkboxDiv.id = drawingObject.id + \"_input\";\n if (drawingObject.isChecked) {\n innerSpan = createElement(\"span\", { className: \"e-pv-checkbox-span e-pv-cb-checked\" });\n }\n else\n innerSpan = createElement(\"span\", { className: \"e-pv-checkbox-span e-pv-cb-unchecked\" });\n innerSpan.id = drawingObject.id + \"_input_span\";\n labelElement.id = drawingObject.id + \"_input_label\";\n innerSpan.style.width = (bounds.width / 5) + \"px\";\n innerSpan.style.height = (bounds.height / 2.5) + \"px\";\n innerSpan.style.left = (bounds.width / 2.5) + \"px\";\n innerSpan.style.top = (bounds.height / 5) + \"px\";\n if (innerSpan.className.indexOf(\"e-pv-cb-checked\") !== -1) {\n var checkboxWidth_1 = parseInt(labelElement.style.width, 10);\n if (checkboxWidth_1 > minCheckboxWidth) {\n innerSpan.style.borderWidth = \"3px\";\n }\n else if (checkboxWidth_1 <= 15) {\n innerSpan.style.borderWidth = \"1px\";\n }\n else {\n innerSpan.style.borderWidth = \"2px\";\n }\n }\n if (isPrint) {\n checkboxDiv.style.backgroundColor = \"rgb(218, 234, 247)\";\n checkboxDiv.style.border = \"1px solid #303030\";\n checkboxDiv.style.visibility = \"visible\";\n checkboxDiv.style.height = \"100%\";\n checkboxDiv.style.width = \"100%\";\n checkboxDiv.style.position = \"absolute\";\n if (innerSpan.className.indexOf(\"e-pv-cb-checked\") !== -1) {\n innerSpan.style.border = \"solid #303030\";\n innerSpan.style.position = \"absolute\";\n innerSpan.style.borderLeft = \"transparent\";\n innerSpan.style.borderTop = \"transparent\";\n innerSpan.style.transform = \"rotate(45deg)\";\n var checkboxWidth = parseInt(labelElement.style.width, 10);\n if (checkboxWidth > minCheckboxWidth) {\n innerSpan.style.borderWidth = \"3px\";\n }\n else if (checkboxWidth <= 15) {\n innerSpan.style.borderWidth = \"1px\";\n }\n else {\n innerSpan.style.borderWidth = \"2px\";\n }\n }\n }\n inputElement.type = \"checkbox\";\n inputElement.style.margin = \"0px\";\n inputElement.style.width = bounds.width + \"px\";\n inputElement.style.height = bounds.height + \"px\";\n if (!isPrint) {\n this.updateCheckBoxFieldSettingsProperties(drawingObject, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n }\n this.updateCheckboxProperties(drawingObject, checkboxDiv);\n inputElement.appendChild(labelElement);\n labelElement.appendChild(checkboxDiv);\n checkboxDiv.appendChild(innerSpan);\n if (isPrint) {\n inputElement.style.outlineWidth = drawingObject.thickness + 'px';\n inputElement.style.outlineColor = drawingObject.borderColor;\n inputElement.style.outlineStyle = 'solid';\n inputElement.style.background = drawingObject.backgroundColor;\n }\n }\n else if (formFieldAnnotationType == \"PasswordField\") {\n inputElement.type = \"password\";\n inputElement.className = \"e-pv-formfield-input\";\n inputElement.style.width = '100%';\n inputElement.style.height = '100%';\n inputElement.style.borderStyle = \"solid\";\n inputElement.addEventListener('click', this.inputElementClick.bind(this));\n inputElement.addEventListener('focus', this.focusFormFields.bind(this));\n inputElement.addEventListener('blur', this.blurFormFields.bind(this));\n inputElement.addEventListener('change', this.getTextboxValue.bind(this));\n this.updatePasswordFieldSettingProperties(drawingObject, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n this.updatePasswordFieldProperties(drawingObject, inputElement, isPrint);\n }\n else {\n /*\n The below line have been commented for \"EJ2-59941 bug\"\n While setting the textAlign to center the radio button position moved from center to the parent element\n instead of left to the parent element\n element.style.textAlign = (Browser.info.name === \"chrome\") ? \"-webkit-center\" : \"center\";\n */\n element.style.display = \"flex\";\n element.style.alignItems = \"center\";\n var bounds = this.getCheckboxRadioButtonBounds(drawingObject, formFieldBounds, isPrint);\n element.style.display = bounds.display;\n labelElement = createElement(\"label\", { className: \"e-pv-radiobtn-container\" });\n labelElement.style.width = bounds.width + \"px\";\n labelElement.style.height = bounds.height + \"px\";\n labelElement.style.display = \"table\";\n labelElement.style.verticalAlign = \"middle\";\n labelElement.style.borderWidth = drawingObject.thickness + 'px';\n labelElement.style.boxShadow = drawingObject.borderColor + ' 0px 0px 0px ' + drawingObject.thickness + 'px';\n labelElement.style.borderRadius = '50%';\n labelElement.style.visibility = drawingObject.visibility;\n if (this.isDrawHelper)\n labelElement.style.cursor = 'crosshair';\n else\n labelElement.style.cursor = 'pointer';\n labelElement.style.background = drawingObject.backgroundColor;\n innerSpan = createElement(\"span\", { className: \"e-pv-radiobtn-span\" });\n innerSpan.id = drawingObject.id + \"_input_span\";\n innerSpan.style.width = Math.floor(bounds.width / 2) + \"px\";\n innerSpan.style.height = Math.floor(bounds.height / 2) + \"px\";\n if (zoomValue < 1 && bounds.width <= 20 && bounds.height <= 20) {\n innerSpan.style.margin = Math.round(parseInt(labelElement.style.width) / 3.5) + \"px\";\n }\n else {\n innerSpan.style.margin = Math.round(parseInt(labelElement.style.width) / 4) + \"px\";\n }\n labelElement.addEventListener('click', this.setRadioButtonState.bind(this));\n labelElement.id = drawingObject.id + \"_input_label\";\n inputElement.type = \"radio\";\n if (!isPrint)\n inputElement.className = \"e-pv-radio-btn\";\n inputElement.style.margin = \"0px\";\n inputElement.addEventListener('click', function (event) {\n event.stopPropagation();\n });\n inputElement.addEventListener('focus', this.focusFormFields.bind(this));\n inputElement.addEventListener('blur', this.blurFormFields.bind(this));\n inputElement.style.width = bounds.width + \"px\";\n inputElement.style.height = bounds.height + \"px\";\n this.updateRadioButtonFieldSettingProperties(drawingObject, this.pdfViewer.isFormDesignerToolbarVisible, this.isSetFormFieldMode);\n this.updateRadioButtonProperties(drawingObject, inputElement);\n labelElement.appendChild(inputElement);\n labelElement.appendChild(innerSpan);\n if (drawingObject.isRequired) {\n labelElement.style.boxShadow = 'red 0px 0px 0px ' + drawingObject.thickness + 'px';\n }\n // if (isPrint) {\n // inputElement.style.outlineWidth = drawingObject.thickness + 'px';\n // inputElement.style.outlineColor = drawingObject.borderColor;\n // inputElement.style.outlineStyle = 'solid';\n // inputElement.style.background = drawingObject.backgroundColor;\n // }\n }\n if ((formFieldAnnotationType === \"Checkbox\" || formFieldAnnotationType === \"RadioButton\") && !isPrint) {\n element.appendChild(labelElement);\n }\n else if (formFieldAnnotationType === \"Checkbox\" && isPrint) {\n element.appendChild(labelElement);\n }\n else {\n if (drawingObject.isMultiline) {\n element.appendChild(textArea);\n }\n else {\n element.appendChild(inputElement);\n }\n }\n if (!isNullOrUndefined(drawingObject.tooltip) && drawingObject.tooltip != \"\") {\n if (formFieldAnnotationType === 'RadioButton')\n this.setToolTip(drawingObject.tooltip, labelElement);\n else\n this.setToolTip(drawingObject.tooltip, element);\n }\n this.isDrawHelper = false;\n return element;\n };\n FormDesigner.prototype.listBoxChange = function (event) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key.split(\"_\")[0] === event.currentTarget.id.split(\"_\")[0] ||\n this.pdfViewer.nameTable[event.currentTarget.id.split(\"_\")[0]].name === formFieldsData[i].FormField.name) {\n if (formFieldsData[i].Key.split(\"_\")[0] !== event.currentTarget.id.split(\"_\")[0]) {\n var inputElement = document.getElementById((formFieldsData[i].Key.split(\"_\")[0] + \"_content_html_element\")).firstElementChild.firstElementChild;\n for (var k = 0; k < event.currentTarget.options.length; k++) {\n inputElement.options[k].selected = event.currentTarget.options[k].selected;\n }\n }\n formFieldsData[i].FormField.selectedIndex = [];\n var oldValues = this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex;\n for (var j = 0; j < event.currentTarget.selectedOptions.length; j++) {\n var selectIndex = event.currentTarget.selectedOptions[j].index;\n var oldValueIndex = 0;\n if (this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex && this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex.length !== 0) {\n if (this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex[0] >= 0) {\n oldValueIndex = this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex.pop();\n }\n this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex.push(oldValueIndex);\n }\n var oldValue = formFieldsData[i].FormField.option[oldValueIndex].itemValue;\n formFieldsData[i].FormField.selectedIndex.push(selectIndex);\n this.pdfViewer.nameTable[formFieldsData[i].Key.split(\"_\")[0]].selectedIndex = formFieldsData[i].FormField.selectedIndex;\n this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex = formFieldsData[i].FormField.selectedIndex;\n var newValue = formFieldsData[i].FormField.option[selectIndex].itemValue;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = newValue;\n this.updateFormFieldCollections(this.pdfViewerBase.formFieldCollection[i].FormField);\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", formFieldsData[i].FormField, this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, null, this.pdfViewerBase.formFieldCollection[i].FormField, 'FormField Value Change', '', oldValues, this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex);\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldSessions();\n };\n FormDesigner.prototype.dropdownChange = function (event) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key.split(\"_\")[0] === event.target.id.split(\"_\")[0] ||\n this.pdfViewer.nameTable[event.target.id.split(\"_\")[0]].name === formFieldsData[i].FormField.name) {\n this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex = [];\n var selectIndex = document.getElementById(event.currentTarget.id).selectedIndex;\n var oldValueIndex = 0;\n if (formFieldsData[i].FormField.selectedIndex.length !== 0) {\n oldValueIndex = formFieldsData[i].FormField.selectedIndex.pop();\n formFieldsData[i].FormField.selectedIndex.push(oldValueIndex);\n }\n var oldValue = formFieldsData[i].FormField.option[oldValueIndex].itemValue;\n this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex.push(selectIndex);\n formFieldsData[i].FormField.selectedIndex = this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex;\n this.pdfViewer.nameTable[formFieldsData[i].Key.split(\"_\")[0]].selectedIndex = this.pdfViewerBase.formFieldCollection[i].FormField.selectedIndex;\n var newValue = formFieldsData[i].FormField.option[selectIndex].itemValue;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = newValue;\n if (formFieldsData[i].Key.split(\"_\")[0] !== event.target.id.split(\"_\")[0]) {\n var inputElement = document.getElementById((formFieldsData[i].Key.split(\"_\")[0] + \"_content_html_element\")).firstElementChild.firstElementChild;\n inputElement.selectedIndex = selectIndex;\n }\n this.updateFormFieldCollections(this.pdfViewerBase.formFieldCollection[i].FormField);\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", formFieldsData[i].FormField, this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, null, this.pdfViewerBase.formFieldCollection[i].FormField, 'FormField Value Change', '', oldValueIndex, selectIndex);\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldSessions();\n };\n FormDesigner.prototype.setCheckBoxState = function (event) {\n if ((Browser.isDevice) ? (event.target.className === '' || event.target.className === 'e-pv-checkbox-outer-div') && event.currentTarget.className === 'e-pv-checkbox-outer-div' && !this.pdfViewer.designerMode : !this.pdfViewer.designerMode) {\n var minCheckboxWidth = 20;\n var isChecked = false;\n var checkTarget = void 0;\n if (Browser.isDevice) {\n checkTarget = document.getElementById(event.target.id.split(\"_\")[0] + '_input');\n }\n else {\n checkTarget = event.target;\n }\n if (event.target.id !== 'undefined_input' && !this.pdfViewer.nameTable[event.target.id.split(\"_\")[0]].isReadonly && !this.pdfViewer.designerMode) {\n if (checkTarget && checkTarget.firstElementChild && checkTarget.firstElementChild.className === \"e-pv-checkbox-span e-pv-cb-checked\") {\n checkTarget.firstElementChild.classList.remove(\"e-pv-cb-checked\");\n checkTarget.firstElementChild.classList.add(\"e-pv-checkbox-span\", \"e-pv-cb-unchecked\");\n isChecked = false;\n }\n else if (checkTarget.className === \"e-pv-checkbox-span e-pv-cb-checked\") {\n checkTarget.classList.remove(\"e-pv-cb-checked\");\n checkTarget.classList.add(\"e-pv-checkbox-span\", \"e-pv-cb-unchecked\");\n isChecked = false;\n }\n else {\n checkTarget.firstElementChild.classList.remove(\"e-pv-cb-unchecked\");\n checkTarget.firstElementChild.classList.add(\"e-pv-checkbox-span\", \"e-pv-cb-checked\");\n isChecked = true;\n }\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (isChecked) {\n if (checkTarget.firstElementChild.className.indexOf(\"e-pv-cb-checked\") !== -1) {\n var checkboxWidth = parseInt(event.target.parentElement.style.width, 10);\n if (checkboxWidth > minCheckboxWidth) {\n checkTarget.firstElementChild.style.borderWidth = \"3px\";\n }\n else if (checkboxWidth <= 15) {\n checkTarget.firstElementChild.style.borderWidth = \"1px\";\n }\n else {\n checkTarget.firstElementChild.style.borderWidth = \"2px\";\n }\n }\n }\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key.split(\"_\")[0] === event.target.id.split(\"_\")[0] ||\n this.pdfViewer.nameTable[event.target.id.split(\"_\")[0]].name === formFieldsData[i].FormField.name) {\n this.pdfViewer.nameTable[formFieldsData[i].Key.split(\"_\")[0]].isChecked = isChecked;\n var oldValue = this.pdfViewerBase.formFieldCollection[i].FormField.isChecked;\n formFieldsData[i].FormField.isChecked = isChecked;\n this.pdfViewerBase.formFieldCollection[i].FormField.isChecked = formFieldsData[i].FormField.isChecked;\n if (formFieldsData[i].Key.split(\"_\")[0] !== event.target.id.split(\"_\")[0]) {\n var checkboxElement = document.getElementById(formFieldsData[i].Key.split(\"_\")[0] + \"_input\").firstElementChild;\n if (isChecked) {\n if (checkboxElement.classList.contains('e-pv-cb-unchecked'))\n checkboxElement.classList.remove('e-pv-cb-unchecked');\n checkboxElement.classList.add(\"e-pv-cb-checked\");\n }\n else {\n if (checkboxElement.classList.contains('e-pv-cb-checked'))\n checkboxElement.classList.remove('e-pv-cb-checked');\n checkboxElement.classList.add(\"e-pv-cb-unchecked\");\n }\n }\n this.updateFormFieldCollections(this.pdfViewerBase.formFieldCollection[i].FormField);\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", formFieldsData[i].FormField, this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, isChecked);\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, null, this.pdfViewerBase.formFieldCollection[i].FormField, 'FormField Value Change', '', oldValue, isChecked);\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldSessions();\n }\n }\n };\n FormDesigner.prototype.setCheckedValue = function (element, isChecked) {\n if (isChecked) {\n element.firstElementChild.classList.remove(\"e-pv-cb-unchecked\");\n element.firstElementChild.classList.add(\"e-pv-checkbox-span\", \"e-pv-cb-checked\");\n }\n else {\n element.firstElementChild.classList.remove(\"e-pv-cb-checked\");\n element.firstElementChild.classList.add(\"e-pv-checkbox-span\", \"e-pv-cb-unchecked\");\n }\n };\n FormDesigner.prototype.setRadioButtonState = function (event) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].FormField.radiobuttonItem != null) {\n var oldValue = void 0;\n var undoElement = void 0;\n var redoElement = void 0;\n for (var j = 0; j < formFieldsData[i].FormField.radiobuttonItem.length; j++) {\n if (formFieldsData[i].FormField.radiobuttonItem[j].id.split(\"_\")[0] === event.currentTarget.id.split(\"_\")[0]) {\n this.pdfViewer.nameTable[event.currentTarget.id.split(\"_\")[0]].isSelected = true;\n formFieldsData[i].FormField.radiobuttonItem[j].isSelected = true;\n oldValue = this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].isSelected;\n if (!oldValue)\n undoElement = this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j];\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].isSelected = true;\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", formFieldsData[i].FormField, this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true);\n }\n else {\n if (this.pdfViewer.nameTable[event.currentTarget.id.split(\"_\")[0]].name === formFieldsData[i].FormField.radiobuttonItem[j].name) {\n this.pdfViewer.nameTable[formFieldsData[i].FormField.radiobuttonItem[j].id.split(\"_\")[0]].isSelected = false;\n var oldValue_1 = this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].isSelected;\n formFieldsData[i].FormField.radiobuttonItem[j].isSelected = false;\n oldValue_1 = this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].isSelected;\n if (oldValue_1)\n redoElement = this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j];\n this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j].isSelected = formFieldsData[i].FormField.radiobuttonItem[j].isSelected;\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", formFieldsData[i].FormField, this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false);\n }\n }\n this.updateFormFieldCollections(this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[j]);\n }\n if ((undoElement != null || redoElement != null) && this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, null, this.pdfViewerBase.formFieldCollection[i].FormField, 'FormField Value Change', '', undoElement, redoElement);\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldSessions();\n };\n FormDesigner.prototype.getTextboxValue = function (event) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key.split(\"_\")[0] === event.target.id.split(\"_\")[0] ||\n this.pdfViewer.nameTable[event.target.id.split(\"_\")[0]].name === formFieldsData[i].FormField.name) {\n var oldValue = this.pdfViewerBase.formFieldCollection[i].FormField.value;\n formFieldsData[i].FormField.value = event.target.value;\n this.pdfViewer.nameTable[formFieldsData[i].Key.split(\"_\")[0]].value = formFieldsData[i].FormField.value;\n this.pdfViewerBase.formFieldCollection[i].FormField.value = formFieldsData[i].FormField.value;\n if (formFieldsData[i].Key.split(\"_\")[0] !== event.target.id.split(\"_\")[0]) {\n var element = document.getElementById(formFieldsData[i].Key.split(\"_\")[0] + \"_content_html_element\");\n if (element && element.firstElementChild && element.firstElementChild.firstElementChild) {\n var inputElement = element.firstElementChild.firstElementChild;\n inputElement.value = formFieldsData[i].FormField.value;\n }\n }\n this.updateFormFieldCollections(this.pdfViewerBase.formFieldCollection[i].FormField);\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", this.pdfViewerBase.formFieldCollection[i].FormField, this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, event.target.value);\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewerBase.formFieldCollection[i].FormField.pageNumber, null, this.pdfViewerBase.formFieldCollection[i].FormField, 'FormField Value Change', '', oldValue, event.target.value);\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldSessions();\n };\n FormDesigner.prototype.inputElementClick = function (event) {\n event.target.focus();\n };\n FormDesigner.prototype.updateFormFieldSessions = function () {\n var fieldData = this.pdfViewerBase.getItemFromSessionStorage('_formfields');\n var formFieldsDatas = JSON.parse(fieldData);\n if (formFieldsDatas && this.pdfViewer.formFieldCollection.length === formFieldsDatas.length) {\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formfields');\n }\n };\n FormDesigner.prototype.focusFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n if (currentTarget || currentTarget.className === \"e-pv-checkbox-outer-div\") {\n var colorBorder = (currentTarget.style.borderColor === 'transparent' ? '#000000' : currentTarget.style.borderColor);\n currentTarget.style.boxShadow = \"0 0 5px \" + colorBorder;\n }\n if (currentTarget && (currentTarget.className === \"e-pv-radiobtn-container\" || currentTarget.className === \"e-pv-radio-btn\" || currentTarget.className === \"e-pv-radiobtn-span\") && currentTarget.style.borderColor === 'transparent') {\n var colorBorder = (currentTarget.style.borderColor === 'transparent' ? '#000000' : currentTarget.style.borderColor);\n currentTarget.parentElement.style.boxShadow = '0px 0px 5px ' + colorBorder;\n }\n if (currentTarget && (currentTarget.className === \"e-pv-radiobtn-container\" || currentTarget.className === \"e-pv-radio-btn\" || currentTarget.className === \"e-pv-radiobtn-span\")) {\n currentTarget.parentElement.style.boxShadow = currentTarget.style.borderColor + '0px 0px 5px ' + currentTarget.style.borderWidth;\n }\n };\n FormDesigner.prototype.blurFormFields = function (event) {\n // eslint-disable-next-line\n var currentTarget = event.target;\n currentTarget.style.boxShadow = '';\n if (currentTarget.type === 'radio' && currentTarget.style.borderColor === 'transparent') {\n var colorBorder = (currentTarget.style.borderColor === 'transparent' ? '#000000' : currentTarget.style.borderColor);\n currentTarget.parentElement.style.boxShadow = '0px 0px 0px ' + colorBorder;\n }\n if (currentTarget.type === 'radio') {\n currentTarget.parentElement.style.boxShadow = currentTarget.style.borderColor + '0px 0px 0px ' + currentTarget.style.borderWidth;\n }\n };\n FormDesigner.prototype.setTextBoxFontStyle = function (fontStyle) {\n if (fontStyle === 1) {\n return { isBold: true };\n }\n else if (fontStyle === 2) {\n return { isItalic: true };\n }\n else if (fontStyle === 3) {\n return { isBold: true, isItalic: true };\n }\n else if (fontStyle === 4) {\n return { isUnderline: true };\n }\n else if (fontStyle === 5) {\n return { isBold: true, isUnderline: true };\n }\n else if (fontStyle === 6) {\n return { isUnderline: true, isItalic: true };\n }\n else if (fontStyle === 7) {\n return { isBold: true, isItalic: true, isUnderline: true };\n }\n else if (fontStyle === 8) {\n return { isStrikeout: true };\n }\n else if (fontStyle === 9) {\n return { isBold: true, isStrikeout: true };\n }\n else if (fontStyle === 10) {\n return { isItalic: true, isStrikeout: true };\n }\n else if (fontStyle === 11) {\n return { isBold: true, isItalic: true, isStrikeout: true };\n }\n else if (fontStyle === 12) {\n return { isUnderline: true, isStrikeout: true };\n }\n else if (fontStyle === 13) {\n return { isUnderline: true, isStrikeout: true, isBold: true };\n }\n else if (fontStyle === 14) {\n return { isItalic: true, isUnderline: true, isStrikeout: true };\n }\n else if (fontStyle === 15) {\n return { isBold: true, isItalic: true, isUnderline: true, isStrikeout: true };\n }\n return { isBold: false, isItalic: false, isStrikeout: false, isUnderline: false };\n };\n /**\n * Adds form field to the PDF page.\n *\n * @param formFieldType\n * @param options\n * @returns HTMLElement\n */\n FormDesigner.prototype.addFormField = function (formFieldType, options, isCollection, id) {\n var obj = {\n thickness: 1, bounds: { x: options.bounds.X, y: options.bounds.Y, width: options.bounds.Width, height: options.bounds.Height },\n fontFamily: !isNullOrUndefined(options.fontFamily) ? options.fontFamily : \"Helvetica\", fontSize: !isNullOrUndefined(options.fontSize) ? options.fontSize : 10,\n color: !isNullOrUndefined(options.color) ? options.color : \"black\", backgroundColor: !isNullOrUndefined(options.backgroundColor) ? options.backgroundColor : \"#daeaf7ff\",\n alignment: !isNullOrUndefined(options.alignment) ? options.alignment : \"left\", isReadonly: options.isReadOnly ? options.isReadOnly : false, rotateAngle: options.rotateAngle, isTransparent: options.isTransparent\n };\n obj.fontStyle = !isNullOrUndefined(options.fontStyle) ? options.fontStyle : \"None\";\n obj.visibility = !isNullOrUndefined(options.visibility) ? options.visibility : \"visible\";\n obj.value = !isNullOrUndefined(options.value) ? options.value : \"\";\n obj.isRequired = options.isRequired ? options.isRequired : false;\n obj.isPrint = options.isPrint;\n obj.pageNumber = !isNullOrUndefined(options.pageNumber) ? options.pageNumber : this.pdfViewerBase.currentPageNumber;\n obj.pageIndex = obj.pageNumber - 1;\n obj.font = options.font;\n obj.id = id;\n if (isCollection) {\n this.setFormFieldIndex();\n }\n switch (formFieldType) {\n case 'Textbox':\n obj.formFieldAnnotationType = formFieldType;\n obj.isMultiline = options.isMultiline;\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'Textbox' + this.formFieldIndex;\n obj.insertSpaces = options.insertSpaces;\n obj.maxLength = options.maxLength;\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n obj.borderColor = !isNullOrUndefined(options.borderColor) ? options.borderColor : '#303030';\n if (options.font) {\n obj.font = options.font;\n }\n else if (this.pdfViewer.textFieldSettings.fontStyle) {\n obj.font = this.setTextBoxFontStyle(this.pdfViewer.textFieldSettings.fontStyle);\n }\n break;\n case 'Password':\n obj.formFieldAnnotationType = 'PasswordField';\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'Password' + this.formFieldIndex;\n obj.maxLength = options.maxLength;\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n obj.borderColor = !isNullOrUndefined(options.borderColor) ? options.borderColor : '#303030';\n break;\n case 'DropDown':\n obj.formFieldAnnotationType = 'DropdownList';\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'Dropdown' + this.formFieldIndex;\n obj.options = options.options ? options.options : [];\n for (var i = 0; i < this.pdfViewer.formFieldCollection.length; i++) {\n var formField = this.pdfViewer.formFieldCollection[i];\n if (formField.formFieldAnnotationType === 'DropdownList' && formField.name === obj.name) {\n obj.options = formField.options;\n break;\n }\n }\n obj.selectedIndex = !isNullOrUndefined(options.selectedIndex) ? options.selectedIndex : [0];\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n obj.borderColor = !isNullOrUndefined(options.borderColor) ? options.borderColor : '#303030';\n break;\n case 'ListBox':\n obj.formFieldAnnotationType = formFieldType;\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'List Box' + this.formFieldIndex;\n obj.options = options.options ? options.options : [];\n for (var i = 0; i < this.pdfViewer.formFieldCollection.length; i++) {\n var formField = this.pdfViewer.formFieldCollection[i];\n if (formField.formFieldAnnotationType === formFieldType && formField.name === obj.name) {\n obj.options = formField.options;\n break;\n }\n }\n obj.selectedIndex = options.selectedIndex;\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n obj.borderColor = !isNullOrUndefined(options.borderColor) ? options.borderColor : '#303030';\n break;\n case 'CheckBox':\n obj.formFieldAnnotationType = 'Checkbox';\n obj.bounds = { x: options.bounds.X, y: options.bounds.Y, width: options.bounds.Width, height: options.bounds.Height };\n obj.backgroundColor = !isNullOrUndefined(options.backgroundColor) ? options.backgroundColor : \"#daeaf7ff\";\n obj.isReadonly = options.isReadOnly ? options.isReadOnly : false;\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'Check Box' + this.formFieldIndex;\n obj.isChecked = options.isChecked ? options.isChecked : false;\n obj.visibility = options.visibility ? options.visibility : \"visible\";\n obj.isRequired = options.isRequired ? options.isRequired : false;\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n obj.borderColor = !isNullOrUndefined(options.borderColor) ? options.borderColor : '#303030';\n break;\n case 'RadioButton':\n obj.formFieldAnnotationType = formFieldType;\n obj.bounds = { x: options.bounds.X, y: options.bounds.Y, width: options.bounds.Width, height: options.bounds.Height };\n obj.backgroundColor = !isNullOrUndefined(options.backgroundColor) ? options.backgroundColor : \"#daeaf7ff\";\n obj.isReadonly = options.isReadOnly ? options.isReadOnly : false;\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'Radio Button' + this.formFieldIndex;\n obj.isSelected = options.isSelected ? options.isSelected : false;\n obj.visibility = options.visibility ? options.visibility : \"visible\";\n obj.isRequired = options.isRequired ? options.isRequired : false;\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n obj.borderColor = !isNullOrUndefined(options.borderColor) ? options.borderColor : '#303030';\n break;\n case 'SignatureField':\n obj.formFieldAnnotationType = formFieldType;\n obj.bounds = { x: options.bounds.X, y: options.bounds.Y, width: options.bounds.Width, height: options.bounds.Height };\n obj.backgroundColor = !isNullOrUndefined(options.backgroundColor) ? options.backgroundColor : \"#daeaf7ff\";\n obj.fontSize = !isNullOrUndefined(options.fontSize) ? options.fontSize : 10;\n obj.fontStyle = !isNullOrUndefined(options.fontStyle) ? options.fontStyle : \"None\";\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'Signature' + this.formFieldIndex;\n obj.isRequired = options.isRequired ? options.isRequired : false;\n obj.isReadonly = options.isReadOnly ? options.isReadOnly : false;\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n var indicatorSettings = options.signatureIndicatorSettings ? options.signatureIndicatorSettings : options.initialIndicatorSettings;\n obj.signatureIndicatorSettings = indicatorSettings ? { opacity: indicatorSettings.opacity ? indicatorSettings.opacity : 1,\n backgroundColor: indicatorSettings.backgroundColor ? indicatorSettings.backgroundColor : 'orange', width: indicatorSettings.width ? indicatorSettings.width : 19,\n height: indicatorSettings.height ? indicatorSettings.height : 10, fontSize: indicatorSettings.fontSize ? indicatorSettings.fontSize : 10,\n text: indicatorSettings.text ? indicatorSettings.text : null, color: indicatorSettings.color ? indicatorSettings.color : 'black' } : null;\n break;\n case 'InitialField':\n obj.formFieldAnnotationType = formFieldType;\n obj.bounds = { x: options.bounds.X, y: options.bounds.Y, width: options.bounds.Width, height: options.bounds.Height };\n obj.backgroundColor = !isNullOrUndefined(options.backgroundColor) ? options.backgroundColor : \"#daeaf7ff\";\n obj.fontSize = !isNullOrUndefined(options.fontSize) ? options.fontSize : 10;\n obj.thickness = !isNullOrUndefined(options.thickness) ? options.thickness : 1;\n obj.fontStyle = !isNullOrUndefined(options.fontStyle) ? options.fontStyle : \"None\";\n obj.name = !isNullOrUndefined(options.name) ? options.name : 'Initial' + this.formFieldIndex;\n obj.isRequired = options.isRequired ? options.isRequired : false;\n obj.isReadonly = options.isReadOnly ? options.isReadOnly : false;\n obj.isInitialField = true;\n var indicatorSettingsInitial = options.initialIndicatorSettings ? options.initialIndicatorSettings : options.signatureIndicatorSettings;\n obj.signatureIndicatorSettings = indicatorSettingsInitial ? { opacity: indicatorSettingsInitial.opacity ? indicatorSettingsInitial.opacity : 1,\n backgroundColor: indicatorSettingsInitial.backgroundColor ? indicatorSettingsInitial.backgroundColor : 'orange', width: indicatorSettingsInitial.width ? indicatorSettingsInitial.width : 19,\n height: indicatorSettingsInitial.height ? indicatorSettingsInitial.height : 10, fontSize: indicatorSettingsInitial.fontSize ? indicatorSettingsInitial.fontSize : 10,\n text: indicatorSettingsInitial.text ? indicatorSettingsInitial.text : null, color: indicatorSettingsInitial.color ? indicatorSettingsInitial.color : 'black' } : null;\n break;\n }\n obj.tooltip = !isNullOrUndefined(options.tooltip) ? options.tooltip : '';\n this.setFormFieldIndex();\n var HTMLElement = null;\n if (isCollection) {\n this.addFieldCollection(obj);\n }\n else {\n this.pdfViewerBase.disableTextSelectionMode();\n HTMLElement = this.drawFormField(obj);\n }\n return HTMLElement;\n };\n FormDesigner.prototype.addFieldCollection = function (node) {\n var formField = {\n id: randomId(), name: node.name, value: node.value,\n type: node.formFieldAnnotationType, isReadOnly: node.isReadonly, fontFamily: node.fontFamily,\n fontSize: node.fontSize, fontStyle: node.fontStyle, color: node.color, backgroundColor: node.backgroundColor, isMultiline: node.isMultiline,\n alignment: node.alignment, visibility: node.visibility, maxLength: node.maxLength, isRequired: node.isRequired,\n isPrint: node.isPrint, isSelected: node.isSelected, insertSpaces: node.insertSpaces, isChecked: node.isChecked, tooltip: node.tooltip, bounds: node.bounds, thickness: node.thickness, pageIndex: node.pageIndex, borderColor: node.borderColor, signatureIndicatorSettings: node.signatureIndicatorSettings\n };\n this.pdfViewer.formFieldCollections.push(formField);\n };\n /**\n * @private\n */\n FormDesigner.prototype.drawFormField = function (obj) {\n var node = this.pdfViewer.add(obj);\n var index = this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === node.id; });\n // eslint-disable-next-line\n var data;\n if (index > -1) {\n data = this.pdfViewer.formFieldCollections[index];\n if (this.isFormFieldUpdated) {\n this.updateNodeBasedOnCollections(node, data);\n }\n }\n var formFieldIndex = this.pdfViewer.formFieldCollection.findIndex(function (el) { return el.id === node.id; });\n if (formFieldIndex < 0) {\n this.pdfViewer.formFieldCollection.push(node);\n }\n else if (formFieldIndex > -1) {\n this.pdfViewer.formFieldCollection[formFieldIndex] = node;\n }\n var formField = {\n id: node.id, name: node.name, value: node.value,\n type: node.formFieldAnnotationType, isReadOnly: node.isReadonly, fontFamily: node.fontFamily,\n fontSize: node.fontSize, fontStyle: node.fontStyle, color: node.color, backgroundColor: node.backgroundColor, isMultiline: node.isMultiline,\n alignment: node.alignment, visibility: node.visibility, maxLength: node.maxLength, isRequired: node.isRequired,\n isPrint: node.isPrint, isSelected: node.isSelected, isChecked: node.isChecked, tooltip: node.tooltip, bounds: node.bounds, pageIndex: node.pageIndex, thickness: node.thickness, borderColor: node.borderColor, signatureIndicatorSettings: node.signatureIndicatorSettings, insertSpaces: node.insertSpaces\n };\n if (index > -1) {\n this.pdfViewer.formFieldCollections[index] = formField;\n }\n else {\n this.pdfViewer.formFieldCollections.push(formField);\n }\n var HTMLElement = this.drawHTMLContent(node.formFieldAnnotationType, node.wrapper.children[0], node, obj.pageNumber - 1, this.pdfViewer);\n return HTMLElement;\n };\n /**\n * Update the node value based on the collections\n *\n * @param node\n * @param data\n * @returns void\n */\n FormDesigner.prototype.updateNodeBasedOnCollections = function (node, data) {\n node.name = data.name;\n node.value = data.value;\n node.isReadonly = data.isReadOnly;\n node.fontFamily = data.fontFamily;\n node.fontSize = data.fontSize;\n node.fontStyle = data.fontStyle.toString();\n node.color = data.color;\n node.backgroundColor = data.backgroundColor;\n node.alignment = data.alignment;\n node.visibility = data.visibility;\n node.maxLength = data.maxLength;\n node.isRequired = data.isRequired;\n node.isPrint = data.isPrint;\n node.isSelected = data.isSelected;\n node.isChecked = data.isChecked;\n node.tooltip = data.tooltip;\n node.thickness = data.thickness;\n node.borderColor = data.borderColor;\n };\n /**\n * Set the form field mode to add the form field on user interaction.\n *\n * @param formFieldId\n * @param options\n * @returns void\n */\n FormDesigner.prototype.setFormFieldMode = function (formFieldType, options) {\n switch (formFieldType) {\n case 'Textbox':\n this.activateTextboxElement(formFieldType);\n this.isSetFormFieldMode = true;\n break;\n case 'Password':\n var passwordType = 'PasswordField';\n this.activatePasswordField(passwordType);\n this.isSetFormFieldMode = true;\n break;\n case 'CheckBox':\n var checkboxType = 'Checkbox';\n this.activateCheckboxElement(checkboxType);\n this.isSetFormFieldMode = true;\n break;\n case 'RadioButton':\n this.activateRadioButtonElement(formFieldType);\n this.isSetFormFieldMode = true;\n break;\n case 'DropDown':\n var dropdownType = 'DropdownList';\n this.activateDropDownListElement(dropdownType, options);\n this.isSetFormFieldMode = true;\n break;\n case 'ListBox':\n this.activateListboxElement(formFieldType, options);\n this.isSetFormFieldMode = true;\n break;\n case 'SignatureField':\n case 'InitialField':\n this.activateSignatureBoxElement(formFieldType);\n this.isSetFormFieldMode = true;\n }\n };\n /**\n * Reset the form fields into its original state.\n *\n * @param formFieldId\n * @returns void\n */\n FormDesigner.prototype.resetFormField = function (formFieldId) {\n var formField = this.getFormField(formFieldId);\n if (formField) {\n switch (formField.formFieldAnnotationType) {\n case 'Textbox':\n this.resetTextboxProperties(formField);\n break;\n case 'PasswordField':\n this.resetPasswordProperties(formField);\n break;\n case 'Checkbox':\n this.resetCheckboxProperties(formField);\n break;\n case 'RadioButton':\n this.resetRadioButtonProperties(formField);\n break;\n case 'DropdownList':\n this.resetDropdownListProperties(formField);\n break;\n case 'ListBox':\n this.resetListBoxProperties(formField);\n break;\n case 'SignatureField':\n case 'InitialField':\n this.resetSignatureTextboxProperties(formField);\n break;\n }\n this.updateSessionFormFieldProperties(formField);\n }\n };\n /**\n * Select the form field in the PDF Viewer.\n *\n * @param formFieldId\n * @returns void\n */\n FormDesigner.prototype.selectFormField = function (formFieldId) {\n var formField = this.getFormField(formFieldId);\n if (formField) {\n this.isProgrammaticSelection = true;\n this.pdfViewer.select([formField.id]);\n this.isProgrammaticSelection = false;\n }\n };\n /**\n * Update the form field with the given properties and value.\n *\n * @param formFieldId\n * @param options\n * @returns void\n */\n FormDesigner.prototype.updateFormField = function (formFieldId, options) {\n var formField = this.getFormField(formFieldId);\n this.isFormFieldUpdated = true;\n if (formField) {\n if (!formField.isReadonly || (!isNullOrUndefined(options.isReadOnly) && !options.isReadOnly)) {\n switch (formField.formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'DropdownList':\n case 'ListBox':\n case 'SignatureField':\n case 'InitialField':\n var inputElement = document.getElementById(formField.id + \"_content_html_element\");\n if (inputElement) {\n inputElement = inputElement.firstElementChild.firstElementChild;\n this.formFieldPropertyChange(formField, options, inputElement);\n }\n else {\n this.updateFormFieldsInCollections(formFieldId, options);\n }\n break;\n case 'RadioButton':\n var radioButtonDivDivElement = document.getElementById(formField.id + \"_content_html_element\");\n if (radioButtonDivDivElement) {\n radioButtonDivDivElement = radioButtonDivDivElement.firstElementChild.firstElementChild.firstElementChild;\n this.formFieldPropertyChange(formField, options, radioButtonDivDivElement);\n }\n else {\n this.updateFormFieldsInCollections(formFieldId, options);\n }\n break;\n case 'Checkbox':\n var checkboxDivElement = document.getElementById(formField.id + \"_content_html_element\");\n if (checkboxDivElement) {\n checkboxDivElement = checkboxDivElement.firstElementChild.firstElementChild.lastElementChild;\n this.formFieldPropertyChange(formField, options, checkboxDivElement);\n }\n else {\n this.updateFormFieldsInCollections(formFieldId, options);\n }\n break;\n }\n }\n }\n else {\n this.updateFormFieldsInCollections(formFieldId, options);\n }\n };\n /**\n * Update the form field in the form field collections.\n * @param formFieldId\n * @param options\n * @returns void\n */\n FormDesigner.prototype.updateFormFieldsInCollections = function (formFieldId, options) {\n var formFieldCollection = this.pdfViewer.formFieldCollections;\n for (var i = 0; i < formFieldCollection.length; i++) {\n var currentData = formFieldCollection[i];\n if (currentData.id === formFieldId) {\n this.updateFormFieldData(currentData, options);\n var formFieldIndex = this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === formFieldId; });\n this.pdfViewer.formFieldCollections[formFieldIndex] = currentData;\n }\n }\n };\n /**\n * Update the form field data based on the value\n * @param currentData\n * @param options\n * @returns void\n */\n FormDesigner.prototype.updateFormFieldData = function (currentData, options) {\n if (options.name && currentData.name !== options.name) {\n currentData.name = options.name;\n }\n if (currentData.type !== 'SignatureField' || currentData.type !== 'InitialField') {\n if (options.thickness && currentData.thickness !== options.thickness) {\n currentData.thickness = options.thickness;\n }\n if (options.borderColor) {\n var borderColor = this.colorNametoHashValue(options.borderColor);\n if (currentData.borderColor !== borderColor) {\n currentData.borderColor = borderColor;\n }\n }\n }\n if (options.backgroundColor) {\n var backColor = this.colorNametoHashValue(options.backgroundColor);\n if (currentData.backgroundColor !== backColor) {\n currentData.backgroundColor = backColor;\n }\n }\n if (!isNullOrUndefined(options.isReadOnly) && currentData.isReadonly !== options.isReadOnly) {\n currentData.isReadOnly = options.isReadOnly;\n }\n if (!isNullOrUndefined(options.isRequired) && currentData.isRequired !== options.isRequired) {\n currentData.isRequired = options.isRequired;\n }\n if (!isNullOrUndefined(options.isPrint) && currentData.isPrint !== options.isPrint) {\n currentData.isPrint = options.isPrint;\n }\n if (options.visibility && currentData.visibility !== options.visibility) {\n currentData.visibility = options.visibility;\n }\n if (options.tooltip && currentData.tooltip !== options.tooltip) {\n currentData.tooltip = options.tooltip;\n }\n if (currentData.type === 'Checkbox' && (!isNullOrUndefined(options.isChecked) && currentData.isChecked === options.isChecked)) {\n currentData.isChecked = options.isChecked;\n }\n if (currentData.type === 'RadioButton' && (!isNullOrUndefined(options.isSelected) && currentData.isSelected === options.isSelected)) {\n currentData.isSelected = options.isSelected;\n }\n if ((currentData.type === 'DropdownList' || currentData.type === 'ListBox') && options.options) {\n currentData.options = options.options;\n }\n if (currentData.type === 'Textbox' || currentData.type === 'SignatureField' || currentData.type === 'InitialField' ||\n currentData.type === 'DropdownList' || currentData.type === 'ListBox' ||\n currentData.type === 'PasswordField') {\n if (options.value && currentData.value !== options.value) {\n currentData.value = options.value;\n }\n if (options.fontSize && currentData.fontSize !== options.fontSize) {\n currentData.fontSize = options.fontSize;\n }\n if (options.color) {\n var color = this.colorNametoHashValue(options.color);\n if (currentData.color !== color) {\n currentData.color = color;\n }\n }\n if (currentData.type !== 'SignatureField') {\n if (options.alignment && currentData.alignment !== options.alignment) {\n currentData.alignment = options.alignment;\n }\n if (options.maxLength && currentData.maxLength !== options.maxLength) {\n currentData.maxLength = options.maxLength;\n }\n }\n if (currentData.type !== 'PasswordField') {\n if (options.fontFamily && currentData.fontFamily !== options.fontFamily) {\n currentData.fontFamily = options.fontFamily;\n }\n if (options.fontStyle && currentData.fontStyle !== options.fontStyle) {\n currentData.fontStyle = options.fontStyle;\n }\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.getSignatureBackground = function (color) {\n if (color.includes('#')) {\n if (color.length > 8) {\n color = color.slice(0, -2) + '60';\n }\n else {\n color += '60';\n }\n }\n return color;\n };\n FormDesigner.prototype.formFieldPropertyChange = function (formFieldObject, options, htmlElement) {\n var isValueChanged = false, isFontFamilyChanged = false, isFontSizeChanged = false, isFontStyleChanged = false, isColorChanged = false, isBackgroundColorChanged = false, isBorderColorChanged = false, isBorderWidthChanged = false, isAlignmentChanged = false, isReadOnlyChanged = false, isVisibilityChanged = false, isMaxLengthChanged = false, isRequiredChanged = false, isPrintChanged = false, isToolTipChanged = false, isNameChanged = false;\n var oldValue, newValue;\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n if (options.name) {\n if (formFieldObject.name !== options.name) {\n isNameChanged = true;\n }\n formFieldObject.name = options.name;\n var designerName = document.getElementById(formFieldObject.id + \"_designer_name\");\n designerName.innerHTML = formFieldObject.name;\n designerName.style.fontSize = formFieldObject.fontSize ? (formFieldObject.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n htmlElement.name = options.name;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].name = formFieldObject.name;\n if (isNameChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue, isNameChanged);\n }\n }\n if (formFieldObject.formFieldAnnotationType) {\n if (!isNullOrUndefined(options.thickness)) {\n if (formFieldObject.thickness !== options.thickness) {\n isBorderWidthChanged = true;\n oldValue = formFieldObject.thickness;\n newValue = options.thickness;\n }\n htmlElement.style.borderWidth = options.thickness.toString() + 'px';\n formFieldObject.thickness = options.thickness;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].thickness = options.thickness;\n if (isBorderWidthChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, isBorderWidthChanged, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (options.borderColor) {\n var borderColor = this.colorNametoHashValue(options.borderColor);\n if (formFieldObject.borderColor !== borderColor) {\n isBorderColorChanged = true;\n oldValue = formFieldObject.borderColor;\n newValue = borderColor;\n }\n formFieldObject.borderColor = borderColor;\n htmlElement.style.borderColor = borderColor;\n if (formFieldObject.formFieldAnnotationType === 'RadioButton') {\n htmlElement.parentElement.style.boxShadow = borderColor + ' 0px 0px 0px ' + formFieldObject.thickness + 'px';\n this.setToolTip(options.tooltip, htmlElement.parentElement);\n }\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].borderColor = borderColor;\n if (isBorderColorChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, isBorderColorChanged, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n }\n if (options.backgroundColor) {\n var backColor = this.colorNametoHashValue(options.backgroundColor);\n backColor = this.getSignatureBackground(backColor);\n if (formFieldObject.backgroundColor !== backColor) {\n isBackgroundColorChanged = true;\n oldValue = formFieldObject.backgroundColor;\n newValue = backColor;\n }\n formFieldObject.backgroundColor = backColor;\n if (formFieldObject.formFieldAnnotationType === 'SignatureField' || formFieldObject.formFieldAnnotationType === 'InitialField') {\n htmlElement.parentElement.style.background = backColor;\n }\n else {\n htmlElement.style.background = backColor;\n }\n if (formFieldObject.formFieldAnnotationType === 'RadioButton') {\n htmlElement.parentElement.style.background = formFieldObject.backgroundColor;\n }\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].backgroundColor = backColor;\n if (isBackgroundColorChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, isBackgroundColorChanged, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (options.bounds) {\n formFieldObject.bounds = { x: options.bounds.X, y: options.bounds.Y, width: options.bounds.Width, height: options.bounds.Height };\n var formField_1 = this.pdfViewer.nameTable[formFieldObject.id.split(\"_\")[0]];\n formField_1.bounds = { x: options.bounds.X, y: options.bounds.Y, width: options.bounds.Width, height: options.bounds.Height };\n formField_1.wrapper.bounds = new Rect(options.bounds.X, options.bounds.Y, options.bounds.Width, options.bounds.Height);\n this.pdfViewer.drawing.nodePropertyChange(formField_1, {\n bounds: {\n x: formField_1.wrapper.bounds.x, y: formField_1.wrapper.bounds.y,\n width: formField_1.wrapper.bounds.width, height: formField_1.wrapper.bounds.height\n }\n });\n var element = formField_1.wrapper.children[0];\n var point = cornersPointsBeforeRotation(formField_1.wrapper.children[0]).topLeft;\n var hEment = document.getElementById(element.id + \"_html_element\");\n if (!isNullOrUndefined(hEment)) {\n hEment.setAttribute('style', 'height:' + (element.actualSize.height * zoomValue) + 'px; width:' + (element.actualSize.width * zoomValue) +\n 'px;left:' + point.x * zoomValue + 'px; top:' + point.y * zoomValue + 'px;' +\n 'position:absolute;transform:rotate(' + (element.rotateAngle + element.parentTransform) + 'deg);' +\n 'pointer-events:' + ((this.pdfViewer.designerMode) ? 'none' : 'all')\n + ';visibility:' + ((element.visible) ? 'visible' : 'hidden') + ';opacity:' + element.style.opacity + ';');\n }\n }\n if (!isNullOrUndefined(options.isReadOnly)) {\n if (formFieldObject.isReadonly !== options.isReadOnly) {\n isReadOnlyChanged = true;\n oldValue = formFieldObject.isReadonly;\n newValue = options.isReadOnly;\n }\n formFieldObject.isReadonly = options.isReadOnly;\n this.setReadOnlyToElement(formFieldObject, htmlElement, options.isReadOnly);\n this.setReadOnlyToFormField(formFieldObject, options.isReadOnly);\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].isReadonly = options.isReadOnly;\n if (isReadOnlyChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, false, isReadOnlyChanged, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (!isNullOrUndefined(options.isRequired)) {\n if (formFieldObject.isRequired !== options.isRequired) {\n isRequiredChanged = true;\n oldValue = formFieldObject.isRequired;\n newValue = options.isRequired;\n }\n formFieldObject.isRequired = options.isRequired;\n this.setRequiredToElement(formFieldObject, htmlElement, options.isRequired);\n this.setRequiredToFormField(formFieldObject, options.isRequired);\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].isRequired = options.isRequired;\n if (isRequiredChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, false, false, false, false, isRequiredChanged, false, false, oldValue, newValue);\n }\n }\n if (options.visibility) {\n if (formFieldObject.visibility !== options.visibility) {\n isVisibilityChanged = true;\n oldValue = formFieldObject.visibility;\n newValue = options.visibility;\n }\n formFieldObject.visibility = options.visibility;\n htmlElement.style.visibility = options.visibility;\n if (formFieldObject.formFieldAnnotationType === 'RadioButton') {\n htmlElement.parentElement.style.visibility = formFieldObject.visibility;\n }\n if (formFieldObject.formFieldAnnotationType === 'SignatureField' || formFieldObject.formFieldAnnotationType === 'InitialField') {\n htmlElement.parentElement.style.visibility = formFieldObject.visibility;\n var annotation = this.pdfViewer.nameTable[formFieldObject.id.split('_')[0] + \"_content\"];\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n var index = this.getFormFiledIndex(formFieldObject.id.split('_')[0]);\n if (formFieldObject.visibility === \"hidden\") {\n if (annotation) {\n this.hideSignatureValue(formFieldObject, annotation, index, formFieldsData);\n }\n }\n else {\n if (annotation) {\n this.showSignatureValue(formFieldObject, oldValue, annotation, index, formFieldsData);\n }\n }\n }\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].visibility = options.visibility;\n if (isVisibilityChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, false, false, isVisibilityChanged, false, false, false, false, oldValue, newValue);\n }\n }\n if (!isNullOrUndefined(options.isPrint)) {\n if (formFieldObject.isPrint !== options.isPrint) {\n isPrintChanged = true;\n oldValue = formFieldObject.isPrint;\n newValue = options.isPrint;\n }\n formFieldObject.isPrint = options.isPrint;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].isPrint = options.isPrint;\n if (isPrintChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, false, false, false, false, false, isPrintChanged, false, oldValue, newValue);\n }\n }\n if (options.tooltip) {\n if (formFieldObject.tooltip !== options.tooltip) {\n isToolTipChanged = true;\n oldValue = formFieldObject.tooltip;\n newValue = options.tooltip;\n }\n formFieldObject.tooltip = options.tooltip;\n if (!isNullOrUndefined(options.tooltip)) {\n if (formFieldObject.formFieldAnnotationType === 'RadioButton') {\n this.setToolTip(options.tooltip, htmlElement.parentElement);\n }\n else {\n this.setToolTip(options.tooltip, htmlElement);\n }\n }\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].tooltip = options.tooltip;\n if (isToolTipChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, false, false, false, false, false, false, isToolTipChanged, oldValue, newValue);\n }\n }\n if (formFieldObject.formFieldAnnotationType === 'Checkbox' && (!isNullOrUndefined(options.isChecked)) || options.isChecked) {\n if (formFieldObject.isChecked !== this.checkboxCheckedState) {\n isValueChanged = true;\n oldValue = formFieldObject.isChecked;\n newValue = options.isChecked;\n }\n formFieldObject.isChecked = options.isChecked;\n htmlElement.checked = options.isChecked;\n this.setCheckedValue(htmlElement, options.isChecked);\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].isChecked = options.isChecked;\n if (isValueChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, isValueChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (formFieldObject.formFieldAnnotationType === 'RadioButton' && (!isNullOrUndefined(options.isSelected)) || options.isSelected) {\n if (formFieldObject.isSelected !== options.isSelected) {\n isValueChanged = true;\n oldValue = formFieldObject.isSelected;\n newValue = this.checkboxCheckedState;\n }\n formFieldObject.isSelected = options.isSelected;\n htmlElement.checked = options.isSelected;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].isSelected = options.isSelected;\n if (isValueChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, isValueChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (formFieldObject.formFieldAnnotationType === 'DropdownList' || formFieldObject.formFieldAnnotationType === 'ListBox') {\n if (options.options) {\n formFieldObject.options = options.options;\n this.updateDropDownListDataSource(formFieldObject, htmlElement);\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].options = formFieldObject.options;\n }\n }\n if (formFieldObject.formFieldAnnotationType === 'Textbox' || formFieldObject.formFieldAnnotationType === 'SignatureField' || formFieldObject.formFieldAnnotationType === 'InitialField' ||\n formFieldObject.formFieldAnnotationType === 'DropdownList' || formFieldObject.formFieldAnnotationType === 'ListBox'\n || formFieldObject.formFieldAnnotationType === 'PasswordField') {\n if (options.value) {\n if (formFieldObject.value !== options.value) {\n isValueChanged = true;\n oldValue = formFieldObject.value;\n newValue = options.value;\n }\n formFieldObject.value = options.value;\n if (!(formFieldObject.formFieldAnnotationType === 'DropdownList' || formFieldObject.formFieldAnnotationType === 'ListBox')) {\n htmlElement.value = options.value;\n }\n else if (formFieldObject.formFieldAnnotationType === \"DropdownList\" || formFieldObject.formFieldAnnotationType === \"ListBox\") {\n for (var i = 0; i < htmlElement.options.length; i++) {\n if (htmlElement.options[i].text === options.value) {\n htmlElement.options.selectedIndex = i;\n }\n }\n }\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].value = options.value;\n if (isValueChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, isValueChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (options.fontSize) {\n if (formFieldObject.fontSize !== options.fontSize) {\n isFontSizeChanged = true;\n oldValue = formFieldObject.fontSize;\n newValue = options.fontSize;\n }\n formFieldObject.fontSize = options.fontSize;\n htmlElement.style.fontSize = (options.fontSize * zoomValue) + 'px';\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].fontSize = options.fontSize;\n if (isFontSizeChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, isFontSizeChanged, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (options.color) {\n var color = this.colorNametoHashValue(options.color);\n if (formFieldObject.color !== color) {\n isColorChanged = true;\n oldValue = formFieldObject.color;\n newValue = color;\n }\n formFieldObject.color = color;\n htmlElement.style.color = color;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].color = color;\n if (isColorChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, isColorChanged, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (formFieldObject.formFieldAnnotationType !== 'SignatureField') {\n if (options.alignment) {\n if (formFieldObject.alignment !== options.alignment) {\n isAlignmentChanged = true;\n oldValue = formFieldObject.alignment;\n newValue = options.alignment;\n }\n formFieldObject.alignment = options.alignment;\n htmlElement.style.textAlign = options.alignment;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].alignment = options.alignment;\n if (isAlignmentChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, isAlignmentChanged, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (options.maxLength) {\n if (formFieldObject.maxLength !== options.maxLength) {\n isMaxLengthChanged = true;\n oldValue = formFieldObject.maxLength;\n newValue = options.maxLength;\n }\n formFieldObject.maxLength = options.maxLength;\n htmlElement.maxLength = options.maxLength;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].maxLength = options.maxLength;\n if (isMaxLengthChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, false, false, false, false, false, false, false, false, isMaxLengthChanged, false, false, false, oldValue, newValue);\n }\n }\n }\n if (formFieldObject.formFieldAnnotationType !== 'PasswordField') {\n if (options.fontFamily) {\n if (formFieldObject.fontFamily !== options.fontFamily) {\n isFontFamilyChanged = true;\n oldValue = formFieldObject.fontFamily;\n newValue = options.fontFamily;\n }\n formFieldObject.fontFamily = options.fontFamily;\n htmlElement.style.fontFamily = options.fontFamily;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].fontFamily = options.fontFamily;\n if (isFontFamilyChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, isFontFamilyChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n var oldFontStyle = '';\n var newFontStyle = '';\n if (options.fontStyle) {\n oldFontStyle += formFieldObject.font.isBold ? 'Bold' + \", \" : '';\n oldFontStyle += formFieldObject.font.isItalic ? 'Italic' + \", \" : '';\n oldFontStyle += formFieldObject.font.isStrikeout ? 'Strikethrough' + \", \" : '';\n oldFontStyle += formFieldObject.font.isUnderline ? 'Underline' + \", \" : '';\n if ((options.fontStyle & FontStyle.Bold) !== 0) {\n htmlElement.style.fontWeight = \"bold\";\n formFieldObject.fontStyle = \"Bold\";\n formFieldObject.font.isBold = true;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].font.isBold = true;\n }\n newFontStyle += formFieldObject.font.isBold ? 'Bold' + \", \" : '';\n if ((options.fontStyle & FontStyle.Italic) !== 0) {\n htmlElement.style.fontStyle = \"italic\";\n formFieldObject.fontStyle = \"Italic\";\n formFieldObject.font.isItalic = true;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].font.isItalic = true;\n }\n newFontStyle += formFieldObject.font.isItalic ? 'Italic' + \", \" : '';\n if ((options.fontStyle & FontStyle.Strikethrough) !== 0) {\n htmlElement.style.textDecoration = \"line-through\";\n formFieldObject.font.isStrikeout = true;\n formFieldObject.fontStyle = \"Strikethrough\";\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].font.isStrikeout = true;\n }\n newFontStyle += formFieldObject.font.isStrikeout ? 'Strikethrough' + \", \" : '';\n if ((options.fontStyle & FontStyle.Underline) !== 0) {\n htmlElement.style.textDecoration = \"underline\";\n formFieldObject.fontStyle = \"Underline\";\n formFieldObject.font.isUnderline = true;\n this.pdfViewer.nameTable[formFieldObject.id.split('_')[0]].font.isUnderline = true;\n }\n newFontStyle += formFieldObject.font.isUnderline ? 'Underline' + \", \" : '';\n isFontStyleChanged = true;\n if (isFontStyleChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", formFieldObject, false, false, false, isFontStyleChanged, false, false, false, false, false, false, false, false, false, false, false, oldFontStyle, newFontStyle);\n }\n }\n }\n }\n if ((formFieldObject.formFieldAnnotationType === 'SignatureField' && options.signatureIndicatorSettings) || (formFieldObject.formFieldAnnotationType === 'InitialField' && options.initialIndicatorSettings)) {\n formFieldObject = this.updateSignatureandInitialIndicator(formFieldObject, options, htmlElement);\n }\n this.updateSessionFormFieldProperties(formFieldObject);\n var formField = {\n id: formFieldObject.id, name: formFieldObject.name, value: formFieldObject.value,\n type: formFieldObject.formFieldAnnotationType, isReadOnly: formFieldObject.isReadonly, fontFamily: formFieldObject.fontFamily,\n fontSize: formFieldObject.fontSize, fontStyle: formFieldObject.fontStyle, color: formFieldObject.color, backgroundColor: formFieldObject.backgroundColor,\n alignment: formFieldObject.alignment, visibility: formFieldObject.visibility, maxLength: formFieldObject.maxLength, isRequired: formFieldObject.isRequired,\n isPrint: formFieldObject.isPrint, tooltip: formFieldObject.tooltip, bounds: formFieldObject.bounds, thickness: formFieldObject.thickness, borderColor: formFieldObject.borderColor, pageIndex: formFieldObject.pageIndex\n };\n this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === formField.id; })] = formField;\n };\n FormDesigner.prototype.colorNametoHashValue = function (colorString) {\n var colorCode = colorString;\n if (!colorCode.match(/#([a-z0-9]+)/gi) && !colorCode.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/)) {\n colorCode = this.nameToHash(colorCode);\n }\n return colorCode !== '' ? colorCode : colorString;\n };\n /**\n * @private\n */\n FormDesigner.prototype.getFormField = function (formFieldId) {\n var formField;\n var formFieldCollectionObject;\n if (typeof formFieldId === 'object') {\n formFieldCollectionObject = this.getAnnotationsFromAnnotationCollections(formFieldId.id);\n if (formFieldCollectionObject)\n formField = this.pdfViewer.nameTable[formFieldCollectionObject.id];\n }\n if (typeof formFieldId === 'string') {\n formFieldCollectionObject = this.getAnnotationsFromAnnotationCollections(formFieldId);\n if (formFieldCollectionObject)\n formField = this.pdfViewer.nameTable[formFieldCollectionObject.id];\n }\n return formField;\n };\n FormDesigner.prototype.resetTextboxProperties = function (obj) {\n var inputElement = document.getElementById(obj.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (inputElement) {\n obj.name = 'textboxField';\n obj.value = '';\n obj.fontFamily = 'Helvetica';\n obj.fontSize = 10;\n obj.fontStyle = \"None\";\n obj.color = 'black';\n obj.backgroundColor = '#daeaf7ff';\n obj.alignment = 'left';\n obj.visibility = 'visible';\n obj.isReadonly = false;\n obj.isRequired = false;\n obj.tooltip = '';\n obj.isPrint = true;\n obj.borderColor = '#303030';\n obj.thickness = 1;\n obj.maxLength = 0;\n this.updateTextboxProperties(obj, inputElement);\n }\n };\n FormDesigner.prototype.resetPasswordProperties = function (obj) {\n var inputElement = document.getElementById(obj.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (inputElement) {\n obj.name = 'passswordField';\n obj.value = '';\n obj.fontFamily = 'Helvetica';\n obj.fontSize = 10;\n obj.fontStyle = \"None\";\n obj.color = 'black';\n obj.backgroundColor = '#daeaf7ff';\n obj.alignment = 'left';\n obj.visibility = 'visible';\n obj.isReadonly = false;\n obj.isRequired = false;\n obj.tooltip = '';\n obj.isPrint = true;\n obj.borderColor = '#303030';\n obj.thickness = 1;\n obj.maxLength = 0;\n this.updatePasswordFieldProperties(obj, inputElement);\n }\n };\n FormDesigner.prototype.resetCheckboxProperties = function (obj) {\n var inputElement = document.getElementById(obj.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (inputElement) {\n obj.name = 'checkboxField';\n obj.isChecked = false;\n obj.backgroundColor = '#daeaf7ff';\n obj.visibility = 'visible';\n obj.isReadonly = false;\n obj.isRequired = false;\n obj.tooltip = '';\n obj.isPrint = true;\n obj.borderColor = '#303030';\n obj.thickness = 1;\n this.updateCheckboxProperties(obj, inputElement);\n }\n };\n FormDesigner.prototype.resetRadioButtonProperties = function (obj) {\n var inputElement = document.getElementById(obj.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (inputElement) {\n obj.name = 'RadioButtonField';\n obj.isSelected = false;\n obj.backgroundColor = '#daeaf7ff';\n obj.visibility = 'visible';\n obj.isReadonly = false;\n obj.isRequired = false;\n obj.tooltip = '';\n obj.isPrint = true;\n obj.borderColor = '#303030';\n obj.thickness = 1;\n this.updateRadioButtonProperties(obj, inputElement);\n }\n };\n FormDesigner.prototype.resetDropdownListProperties = function (obj) {\n var inputElement = document.getElementById(obj.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (inputElement) {\n obj.name = 'dropDownField';\n obj.value = '';\n obj.fontFamily = 'Helvetica';\n obj.fontSize = 10;\n obj.fontStyle = \"None\";\n obj.color = 'black';\n obj.backgroundColor = '#daeaf7ff';\n obj.alignment = 'left';\n obj.visibility = 'visible';\n obj.isReadonly = false;\n obj.isRequired = false;\n obj.tooltip = '';\n obj.isPrint = true;\n obj.borderColor = '#303030';\n obj.thickness = 1;\n obj.options = [];\n this.updateDropdownListProperties(obj, inputElement);\n if (obj.options) {\n this.updateDropDownListDataSource(obj, inputElement);\n }\n }\n };\n FormDesigner.prototype.resetListBoxProperties = function (obj) {\n var inputElement = document.getElementById(obj.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (inputElement) {\n obj.name = 'listBoxField';\n obj.value = '';\n obj.fontFamily = 'Helvetica';\n obj.fontSize = 10;\n obj.fontStyle = \"None\";\n obj.color = 'black';\n obj.backgroundColor = '#daeaf7ff';\n obj.alignment = 'left';\n obj.visibility = 'visible';\n obj.isReadonly = false;\n obj.isRequired = false;\n obj.tooltip = '';\n obj.isPrint = true;\n obj.borderColor = '#303030';\n obj.thickness = 1;\n obj.options = [];\n this.updateListBoxProperties(obj, inputElement);\n if (obj.options) {\n this.updateDropDownListDataSource(obj, inputElement);\n }\n }\n };\n FormDesigner.prototype.resetSignatureTextboxProperties = function (obj) {\n var inputElement = document.getElementById(obj.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (inputElement) {\n obj.name = 'signatureField';\n obj.value = '';\n obj.fontFamily = 'Helvetica';\n obj.fontSize = 10;\n obj.fontStyle = \"None\";\n obj.color = 'black';\n obj.backgroundColor = '#daeaf7ff';\n obj.isRequired = false;\n obj.isReadonly = false;\n obj.tooltip = '';\n obj.isPrint = true;\n obj.visibility = 'visible';\n this.updateSignatureFieldProperties(obj, inputElement);\n }\n };\n /**\n * Deletes the form field from the PDF page.\n *\n * @param formFieldId\n * @param addAction\n * @returns void\n */\n FormDesigner.prototype.deleteFormField = function (formFieldId, addAction) {\n if (addAction === void 0) { addAction = true; }\n var formField = this.getFormField(formFieldId);\n if (formField) {\n this.clearSelection(formFieldId);\n this.pdfViewer.remove(formField);\n this.pdfViewer.renderDrawing();\n if (!isNullOrUndefined(this.pdfViewer.toolbar) && !isNullOrUndefined(this.pdfViewer.toolbar.formDesignerToolbarModule))\n this.pdfViewer.toolbar.formDesignerToolbarModule.showHideDeleteIcon(false);\n if (this.pdfViewerBase.formFieldCollection.length > 0) {\n this.pdfViewerBase.enableFormFieldButton(true);\n }\n else {\n this.pdfViewerBase.enableFormFieldButton(false);\n }\n if (addAction && this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewerBase.currentPageNumber, null, formField, 'Delete', '', formField, formField);\n }\n }\n };\n /**\n * Clears the selection of the form field in the PDF page.\n *\n * @param formFieldId\n * @returns void\n */\n FormDesigner.prototype.clearSelection = function (formFieldId) {\n var formField;\n var formFieldCollectionObject;\n if (typeof formFieldId === 'object') {\n formFieldCollectionObject = this.getAnnotationsFromAnnotationCollections(formFieldId.id);\n formField = this.pdfViewer.nameTable[formFieldCollectionObject.id];\n }\n if (typeof formFieldId === 'string') {\n formFieldCollectionObject = this.getAnnotationsFromAnnotationCollections(formFieldId);\n formField = this.pdfViewer.nameTable[formFieldCollectionObject.id];\n }\n if (formField && (this.pdfViewer.selectedItems && !isNullOrUndefined(this.pdfViewer.selectedItems.properties.formFields) && this.pdfViewer.selectedItems.properties.formFields.length > 0 &&\n this.pdfViewer.selectedItems.properties.formFields[0].id === formField.id)) {\n var pageId = !isNullOrUndefined(this.pdfViewerBase.activeElements.activePageID) ? this.pdfViewerBase.activeElements.activePageID : formField.pageIndex;\n this.pdfViewer.clearSelection(pageId);\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.setMode = function (mode) {\n if (mode && mode.indexOf(\"designer\") !== -1) {\n this.enableDisableFormFieldsInteraction(true);\n this.pdfViewerBase.disableTextSelectionMode();\n }\n else {\n this.enableDisableFormFieldsInteraction(false);\n if (this.pdfViewer.textSelectionModule) {\n this.pdfViewer.textSelectionModule.enableTextSelectionMode();\n }\n }\n };\n FormDesigner.prototype.enableDisableFormFieldsInteraction = function (enableDesignerMode) {\n var collections = this.pdfViewer.formFieldCollection;\n if (collections && collections.length > 0) {\n for (var i = 0; i < collections.length; i++) {\n var element = document.getElementById(collections[i].id + \"_content_html_element\");\n var designerName = document.getElementById(collections[i].id + \"_designer_name\");\n if (element) {\n if (enableDesignerMode) {\n this.pdfViewer.designerMode = true;\n element.style.pointerEvents = \"none\";\n designerName.innerHTML = collections[i].name;\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n designerName.style.fontSize = collections[i].fontSize ? (collections[i].fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n designerName.style.position = 'absolute';\n }\n else {\n this.pdfViewer.designerMode = false;\n element.style.pointerEvents = \"all\";\n designerName.innerHTML = \"\";\n designerName.style.position = 'initial';\n if (collections[i].formFieldAnnotationType === 'RadioButton') {\n this.updateRadioButtonDesignerProperties(collections[i]);\n }\n if (collections[i].formFieldAnnotationType === 'Checkbox') {\n this.updateCheckboxFormDesignerProperties(collections[i]);\n }\n this.pdfViewer.clearSelection(collections[i].pageIndex);\n }\n }\n }\n }\n };\n // eslint-disable-next-line\n FormDesigner.prototype.getAnnotationsFromAnnotationCollections = function (annotationId) {\n // eslint-disable-next-line\n var collections = this.pdfViewer.formFieldCollection;\n if (collections && annotationId) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].id === annotationId) {\n return collections[i];\n }\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateSignatureValue = function (formFieldId) {\n for (var i = 0; i < this.pdfViewerBase.formFieldCollection.length; i++) {\n if (formFieldId === this.pdfViewerBase.formFieldCollection[i].FormField.id) {\n this.pdfViewerBase.formFieldCollection[i].FormField.value = '';\n this.pdfViewer.nameTable[this.pdfViewerBase.formFieldCollection[i].FormField.id.split('_')[0]].value = '';\n this.pdfViewer.nameTable[this.pdfViewerBase.formFieldCollection[i].FormField.id].value = '';\n this.pdfViewerBase.formFieldCollection[i].FormField.signatureType = '';\n this.pdfViewer.nameTable[this.pdfViewerBase.formFieldCollection[i].FormField.id.split('_')[0]].signatureType = '';\n this.pdfViewer.nameTable[this.pdfViewerBase.formFieldCollection[i].FormField.id].signatureType = '';\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.removeFieldsFromAnnotationCollections = function (annotationId) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n if (formFieldsData[i].Key.split(\"_\")[0] === annotationId) {\n formFieldsData.splice(i, 1);\n this.pdfViewerBase.formFieldCollection.splice(i, 1);\n break;\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n var storeObject = window.sessionStorage.getItem(this.pdfViewerBase.documentId + '_annotations_shape');\n if (storeObject) {\n var annotObject = JSON.parse(storeObject);\n var index = this.pdfViewer.annotationModule.getPageCollection(annotObject, this.pdfViewerBase.currentPageNumber - 1);\n if (annotObject[index]) {\n for (var m = 0; m < annotObject[index].annotations.length; m++) {\n if (annotationId === annotObject[index].annotations[m].id) {\n annotObject[index].annotations.splice(m, 1);\n break;\n }\n }\n var annotationStringified = JSON.stringify(annotObject);\n window.sessionStorage.setItem(this.pdfViewerBase.documentId + '_annotations_shape', annotationStringified);\n }\n }\n // eslint-disable-next-line\n var collections = this.pdfViewer.formFieldCollection;\n if (collections && annotationId) {\n for (var i = 0; i < collections.length; i++) {\n if (collections[i].formFieldId === annotationId) {\n this.pdfViewer.formFieldCollection.splice(i, 1);\n }\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.setFormFieldIndex = function () {\n this.formFieldIndex = this.formFieldIndex + 1;\n return this.formFieldIndex;\n };\n FormDesigner.prototype.setFormFieldIdIndex = function () {\n this.formFieldIdIndex = this.formFieldIdIndex + 1;\n return this.formFieldIdIndex;\n };\n FormDesigner.prototype.activateTextboxElement = function (formFieldType) {\n this.pdfViewer.drawingObject = {\n formFieldAnnotationType: formFieldType,\n name: 'Textbox' + this.setFormFieldIndex(), value: '', fontFamily: 'Helvetica', fontSize: 10 * this.pdfViewerBase.getZoomFactor(), fontStyle: 'None', color: 'black',\n backgroundColor: '#daeaf7ff', thickness: 1, borderColor: '#303030', alignment: 'left', isReadonly: false, visibility: \"visible\", isRequired: false, isPrint: true, rotateAngle: 0, tooltip: '', font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false }\n };\n this.pdfViewer.tool = \"DrawTool\";\n };\n FormDesigner.prototype.activatePasswordField = function (formFieldType) {\n this.pdfViewer.drawingObject = {\n formFieldAnnotationType: formFieldType,\n name: 'Password' + this.setFormFieldIndex(), value: '', fontFamily: 'Helvetica', fontSize: 10 * this.pdfViewerBase.getZoomFactor(), fontStyle: 'None', color: 'black',\n alignment: 'left', backgroundColor: '#daeaf7ff', thickness: 1, borderColor: '#303030', isReadonly: false, visibility: \"visible\", isRequired: false, isPrint: true, rotateAngle: 0, tooltip: '', font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false }\n };\n this.pdfViewer.tool = \"DrawTool\";\n };\n FormDesigner.prototype.activateCheckboxElement = function (formFieldType) {\n this.pdfViewer.drawingObject = {\n formFieldAnnotationType: formFieldType,\n name: 'Check Box' + this.setFormFieldIndex(), isChecked: false, fontSize: 10 * this.pdfViewerBase.getZoomFactor(), backgroundColor: '#daeaf7ff', color: 'black', thickness: 1, borderColor: '#303030', isReadonly: false, visibility: \"visible\", isPrint: true, rotateAngle: 0, tooltip: ''\n };\n this.pdfViewer.tool = \"DrawTool\";\n };\n FormDesigner.prototype.activateRadioButtonElement = function (formFieldType) {\n this.pdfViewer.drawingObject = {\n formFieldAnnotationType: formFieldType,\n name: 'Radio Button' + this.setFormFieldIndex(), isSelected: false, fontSize: 10 * this.pdfViewerBase.getZoomFactor(), backgroundColor: '#daeaf7ff', color: 'black', thickness: 1, borderColor: '#303030', isReadonly: false, visibility: \"visible\", isPrint: true, rotateAngle: 0, tooltip: ''\n };\n this.pdfViewer.tool = \"DrawTool\";\n };\n FormDesigner.prototype.activateDropDownListElement = function (formFieldType, dropDownOptions) {\n this.pdfViewer.drawingObject = {\n formFieldAnnotationType: formFieldType,\n name: 'Dropdown' + this.setFormFieldIndex(), fontFamily: 'Helvetica', fontSize: 10 * this.pdfViewerBase.getZoomFactor(), fontStyle: 'None', color: 'black', backgroundColor: '#daeaf7ff', thickness: 1, borderColor: '#303030',\n alignment: 'left', isReadonly: false, visibility: \"visible\", isRequired: false, isPrint: true, rotateAngle: 0, tooltip: '',\n options: dropDownOptions, isMultiSelect: false, font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false }\n };\n this.pdfViewer.tool = \"DrawTool\";\n };\n FormDesigner.prototype.activateListboxElement = function (formFieldType, listBoxOptions) {\n this.pdfViewer.drawingObject = {\n formFieldAnnotationType: formFieldType,\n name: 'List Box' + this.setFormFieldIndex(), fontFamily: 'Helvetica', fontSize: 10 * this.pdfViewerBase.getZoomFactor(), fontStyle: 'None', color: 'black', backgroundColor: '#daeaf7ff', thickness: 1, borderColor: '#303030',\n alignment: 'left', isReadonly: false, visibility: \"visible\", isRequired: false, isPrint: true, rotateAngle: 0, tooltip: '',\n options: listBoxOptions, isMultiSelect: true, font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false }\n };\n this.pdfViewer.tool = \"DrawTool\";\n };\n FormDesigner.prototype.activateSignatureBoxElement = function (formFieldType) {\n var propertyValues = { opacity: 1, backgroundColor: 'rgba(255, 228, 133, 0.35)', width: 19, height: 10, fontSize: 10, text: null, color: 'black' };\n switch (formFieldType) {\n case \"SignatureField\":\n if (!isNullOrUndefined(this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings)) {\n propertyValues = this.pdfViewer.signatureFieldSettings.signatureIndicatorSettings;\n }\n break;\n case 'InitialField':\n if (!isNullOrUndefined(this.pdfViewer.initialFieldSettings.initialIndicatorSettings)) {\n propertyValues = this.pdfViewer.initialFieldSettings.initialIndicatorSettings;\n }\n break;\n default:\n break;\n }\n this.pdfViewer.drawingObject = {\n formFieldAnnotationType: formFieldType,\n name: formFieldType === 'InitialField' || this.pdfViewer.isInitialFieldToolbarSelection ? 'Initial' + this.setFormFieldIndex() : 'Signature' + this.setFormFieldIndex(), fontFamily: 'Helvetica', fontSize: 10 * this.pdfViewerBase.getZoomFactor(), fontStyle: 'None', color: 'black', backgroundColor: '#daeaf7ff', alignment: 'left',\n isReadonly: false, visibility: \"visible\", isRequired: false, isPrint: true, rotateAngle: 0, tooltip: '', font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false },\n isInitialField: formFieldType === 'InitialField' || this.pdfViewer.isInitialFieldToolbarSelection, signatureIndicatorSettings: { opacity: propertyValues.opacity, backgroundColor: propertyValues.backgroundColor, width: propertyValues.width, height: propertyValues.height, fontSize: propertyValues.fontSize, text: propertyValues.text, color: propertyValues.color }\n };\n this.pdfViewer.tool = \"DrawTool\";\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateTextboxProperties = function (obj, inputElement, isPrint) {\n inputElement.name = obj.name ? obj.name : 'Textbox' + this.setFormFieldIndex();\n inputElement.value = obj.value ? obj.value : '';\n var zoomValue = isPrint ? this.defaultZoomValue : this.pdfViewerBase.getZoomFactor();\n if (obj.insertSpaces) {\n var font = ((obj.bounds.width * zoomValue / obj.maxLength) - (obj.fontSize * zoomValue / 2)) - (0.6 * zoomValue);\n inputElement.style.letterSpacing = '' + font + 'px';\n inputElement.style.fontFamily = 'monospace';\n inputElement.style.paddingLeft = (font / 2) + 'px';\n }\n else {\n inputElement.style.fontFamily = obj.fontFamily && this.getFontFamily(obj.fontFamily) ? obj.fontFamily : 'Helvetica';\n }\n inputElement.style.fontSize = obj.fontSize ? (obj.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n if (obj.font.isBold) {\n inputElement.style.fontWeight = \"bold\";\n }\n if (obj.font.isItalic) {\n inputElement.style.fontStyle = \"italic\";\n }\n if (obj.font.isUnderline && obj.font.isStrikeout) {\n inputElement.style.textDecoration = \"underline line-through\";\n }\n else if (obj.font.isStrikeout) {\n inputElement.style.textDecoration = \"line-through\";\n }\n else if (obj.font.isUnderline) {\n inputElement.style.textDecoration = \"underline\";\n }\n if (obj.isTransparent && obj.borderColor === '#ffffffff') {\n inputElement.style.backgroundColor = 'transparent';\n inputElement.style.borderColor = 'transparent';\n }\n else {\n inputElement.style.backgroundColor = obj.backgroundColor ? obj.backgroundColor : '#daeaf7ff';\n inputElement.style.borderColor = obj.borderColor ? obj.borderColor : '#303030';\n }\n inputElement.style.color = obj.color ? obj.color : 'black';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n inputElement.style.textAlign = obj.alignment ? obj.alignment.toLowerCase() : 'left';\n inputElement.style.visibility = obj.visibility ? obj.visibility : 'visible';\n inputElement.style.pointerEvents = obj.isReadonly ? 'none' : 'default';\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n if (obj.isRequired) {\n inputElement.required = true;\n inputElement.style.border = '1px solid red';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n }\n if (obj.maxLength != undefined) {\n inputElement.maxLength = obj.maxLength === 0 ? 524288 : obj.maxLength;\n }\n inputElement.tabIndex = this.formFieldIndex;\n inputElement.setAttribute(\"aria-label\", this.pdfViewer.element.id + \"formfilldesigner\");\n };\n /**\n * @private\n */\n FormDesigner.prototype.updatePasswordFieldProperties = function (obj, inputElement, isPrint) {\n inputElement.name = obj.name ? obj.name : 'Password' + this.setFormFieldIndex();\n inputElement.value = obj.value ? obj.value : '';\n inputElement.style.fontFamily = obj.fontFamily ? obj.fontFamily : 'Helvetica';\n var zoomValue = isPrint ? this.defaultZoomValue : this.pdfViewerBase.getZoomFactor();\n inputElement.style.fontSize = obj.fontSize ? (obj.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n if (obj.font.isBold) {\n inputElement.style.fontWeight = \"bold\";\n }\n if (obj.font.isItalic) {\n inputElement.style.fontStyle = \"italic\";\n }\n if (obj.font.isStrikeout) {\n inputElement.style.textDecoration = \"line-through\";\n }\n if (obj.font.isUnderline) {\n inputElement.style.textDecoration = \"underline\";\n }\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n inputElement.style.color = obj.color ? obj.color : 'black';\n inputElement.style.backgroundColor = obj.backgroundColor ? obj.backgroundColor : '#daeaf7ff';\n inputElement.style.borderColor = obj.borderColor ? obj.borderColor : '#303030';\n inputElement.style.textAlign = obj.alignment ? obj.alignment.toLowerCase() : 'left';\n inputElement.style.visibility = obj.visibility ? obj.visibility : 'visible';\n inputElement.style.pointerEvents = obj.isReadonly ? 'none' : 'default';\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n if (obj.isRequired) {\n inputElement.required = true;\n inputElement.style.border = '1px solid red';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n }\n if (obj.maxLength != undefined) {\n inputElement.maxLength = obj.maxLength === 0 ? 524288 : obj.maxLength;\n }\n inputElement.tabIndex = this.formFieldIndex;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateCheckboxProperties = function (obj, inputElement) {\n inputElement.name = obj.name ? obj.name : 'Check Box' + this.setFormFieldIndex();\n inputElement.checked = obj.isChecked ? true : false;\n if (obj.isTransparent && obj.borderColor === '#ffffffff') {\n inputElement.style.backgroundColor = 'transparent';\n inputElement.style.borderColor = 'transparent';\n }\n else {\n inputElement.style.backgroundColor = obj.backgroundColor ? obj.backgroundColor : '#daeaf7ff';\n inputElement.style.borderColor = obj.borderColor ? obj.borderColor : '#303030';\n }\n inputElement.style.visibility = obj.visibility ? obj.visibility : 'visible';\n inputElement.style.pointerEvents = obj.isReadonly ? 'none' : 'default';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n if (obj.isRequired) {\n inputElement.required = true;\n inputElement.style.border = '1px solid red';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n }\n inputElement.tabIndex = this.formFieldIndex;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateRadioButtonProperties = function (obj, inputElement) {\n inputElement.name = obj.name ? obj.name : 'Radio Button' + this.setFormFieldIndex();\n inputElement.checked = obj.isSelected ? true : false;\n inputElement.style.backgroundColor = obj.backgroundColor ? obj.backgroundColor : '#daeaf7ff';\n inputElement.style.borderColor = obj.borderColor ? obj.borderColor : '#303030';\n inputElement.style.visibility = obj.visibility ? obj.visibility : 'visible';\n inputElement.style.pointerEvents = obj.isReadonly ? 'none' : 'default';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n if (obj.isRequired) {\n inputElement.required = true;\n inputElement.style.border = '1px solid red';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n }\n inputElement.tabIndex = this.formFieldIndex;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateDropdownListProperties = function (obj, inputElement, isPrint) {\n inputElement.name = obj.name ? obj.name : 'Dropdown' + this.setFormFieldIndex();\n inputElement.value = obj.value ? obj.value : '';\n inputElement.style.fontFamily = obj.fontFamily ? obj.fontFamily : 'Helvetica';\n var zoomValue = isPrint ? this.defaultZoomValue : this.pdfViewerBase.getZoomFactor();\n inputElement.style.fontSize = obj.fontSize ? (obj.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n if (obj.font.isBold) {\n inputElement.style.fontWeight = \"bold\";\n }\n if (obj.font.isItalic) {\n inputElement.style.fontStyle = \"italic\";\n }\n if (obj.font.isStrikeout) {\n inputElement.style.textDecoration = \"line-through\";\n }\n if (obj.font.isUnderline) {\n inputElement.style.textDecoration = \"underline\";\n }\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n inputElement.style.color = obj.color ? obj.color : 'black';\n inputElement.style.backgroundColor = obj.backgroundColor ? obj.backgroundColor : '#daeaf7ff';\n inputElement.style.borderColor = obj.borderColor ? obj.borderColor : '#303030';\n inputElement.style.textAlign = obj.alignment ? obj.alignment.toLowerCase() : 'left';\n inputElement.style.visibility = obj.visibility ? obj.visibility : 'visible';\n inputElement.style.pointerEvents = obj.isReadonly ? 'none' : 'default';\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n if (obj.isRequired) {\n inputElement.required = true;\n inputElement.style.border = '1px solid red';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n }\n inputElement.tabIndex = this.formFieldIndex;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateListBoxProperties = function (obj, inputElement, isPrint) {\n inputElement.name = obj.name ? obj.name : 'List Box' + this.setFormFieldIndex();\n inputElement.value = obj.value ? obj.value : '';\n inputElement.style.fontFamily = obj.fontFamily ? obj.fontFamily : 'Helvetica';\n var zoomValue = isPrint ? this.defaultZoomValue : this.pdfViewerBase.getZoomFactor();\n inputElement.style.fontSize = obj.fontSize ? (obj.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n if (obj.font.isBold) {\n inputElement.style.fontWeight = \"bold\";\n }\n if (obj.font.isItalic) {\n inputElement.style.fontStyle = \"italic\";\n }\n if (obj.font.isStrikeout) {\n inputElement.style.textDecoration = \"line-through\";\n }\n if (obj.font.isUnderline) {\n inputElement.style.textDecoration = \"underline\";\n }\n inputElement.style.color = obj.color ? obj.color : 'black';\n inputElement.style.backgroundColor = obj.backgroundColor ? obj.backgroundColor : '#daeaf7ff';\n inputElement.style.borderColor = obj.borderColor ? obj.borderColor : '#303030';\n inputElement.style.textAlign = obj.alignment ? obj.alignment.toLowerCase() : 'left';\n inputElement.style.visibility = obj.visibility ? obj.visibility : 'visible';\n inputElement.style.pointerEvents = obj.isReadonly ? 'none' : 'default';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n if (obj.isRequired) {\n inputElement.required = true;\n inputElement.style.border = '1px solid red';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n }\n inputElement.tabIndex = this.formFieldIndex;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateSignatureFieldProperties = function (obj, inputElement, isPrint) {\n inputElement.name = obj.name ? obj.name : 'Signature' + this.setFormFieldIndex();\n inputElement.value = obj.value ? obj.value : '';\n inputElement.style.fontFamily = obj.fontFamily ? obj.fontFamily : 'Helvetica';\n inputElement.style.visibility = obj.visibility ? obj.visibility : 'visible';\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n inputElement.style.fontSize = obj.fontSize ? (obj.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n if (obj.font.isBold) {\n inputElement.style.fontWeight = \"bold\";\n }\n if (obj.font.isItalic) {\n inputElement.style.fontStyle = \"italic\";\n }\n if (obj.font.isStrikeout) {\n inputElement.style.textDecoration = \"line-through\";\n }\n if (obj.font.isUnderline) {\n inputElement.style.textDecoration = \"underline\";\n }\n inputElement.style.color = obj.color ? obj.color : 'black';\n inputElement.style.borderWidth = !isNullOrUndefined(obj.thickness) ? obj.thickness + 'px' : '1px';\n var background = obj.backgroundColor ? obj.backgroundColor : '#FFE48559';\n background = this.getSignatureBackground(background);\n inputElement.style.backgroundColor = isPrint ? 'transparent' : background;\n if (obj.isReadonly) {\n inputElement.disabled = true;\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n if (obj.isRequired) {\n inputElement.required = true;\n if (inputElement.firstElementChild) {\n var thickness = (obj.thickness > 0) ? obj.thickness : 1;\n inputElement.firstElementChild.style.border = thickness + 'px solid red';\n }\n else {\n inputElement.style.border = '1px solid red';\n }\n inputElement.style.borderWidth = obj.thickness ? obj.thickness + 'px' : '1px';\n }\n inputElement.tabIndex = this.formFieldIndex;\n };\n /**\n * @private\n */\n FormDesigner.prototype.createHtmlElement = function (elementType, attribute) {\n var element = createElement(elementType);\n this.setAttributeHtml(element, attribute);\n return element;\n };\n FormDesigner.prototype.setAttributeHtml = function (element, attributes) {\n var keys = Object.keys(attributes);\n for (var i = 0; i < keys.length; i++) {\n if (keys[i] !== 'style') {\n element.setAttribute(keys[i], attributes[keys[i]]);\n }\n else {\n this.applyStyleAgainstCsp(element, attributes[keys[i]]);\n }\n }\n };\n FormDesigner.prototype.applyStyleAgainstCsp = function (svg, attributes) {\n var keys = attributes.split(';');\n for (var i = 0; i < keys.length; i++) {\n var attribute = keys[i].split(':');\n if (attribute.length === 2) {\n svg.style[attribute[0].trim()] = attribute[1].trim();\n }\n }\n };\n // eslint-disable-next-line\n FormDesigner.prototype.getFieldBounds = function (bound, pageIndex) {\n // eslint-disable-next-line\n var pageDetails = this.pdfViewerBase.pageSize[pageIndex];\n // eslint-disable-next-line max-len\n bound = { X: bound.X ? bound.X : bound.x, Y: bound.Y ? bound.Y : bound.y, Width: bound.Width ? bound.Width : bound.width, Height: bound.Height ? bound.Height : bound.height };\n // eslint-disable-next-line\n var bounds;\n if (pageDetails) {\n switch (pageDetails.rotation) {\n case 0:\n bounds = bound;\n break;\n case 1:\n bounds = { X: bound.Y - (bound.Width / 2 - bound.Height / 2), Y: pageDetails.width - bound.X - bound.Height - (bound.Width / 2 - bound.Height / 2), Width: bound.Width, Height: bound.Height };\n break;\n case 2:\n bounds = { X: pageDetails.width - bound.X - bound.Width, Y: pageDetails.height - bound.Y - bound.Height, Width: bound.Width, Height: bound.Height };\n break;\n case 3:\n bounds = { X: (pageDetails.height - bound.Y - bound.Width + (bound.Width / 2 - bound.Height / 2)), Y: bound.X + (bound.Width / 2 - bound.Height / 2), Width: bound.Height, Height: bound.Width };\n break;\n }\n }\n if (!bounds) {\n bounds = bound;\n }\n return bounds;\n };\n /**\n * @private\n */\n // eslint-disable-next-line\n FormDesigner.prototype.downloadFormDesigner = function () {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n if (data) {\n var formFieldsData = JSON.parse(data);\n for (var i = 0; i < formFieldsData.length; i++) {\n var currentData = formFieldsData[i].FormField;\n currentData.Multiline = currentData.isMultiline;\n if (currentData.isRequired) {\n if (currentData.formFieldAnnotationType === 'Textbox' || currentData.formFieldAnnotationType === 'PasswordField' || currentData.Multiline) {\n if (currentData.value === null || currentData.value === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.name] = currentData.value;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.name]);\n }\n }\n else if (currentData.formFieldAnnotationType === 'RadioButton') {\n if (currentData.radiobuttonItem) {\n var isSelected = false;\n for (var j = 0; j < currentData.radiobuttonItem.length; j++) {\n if (currentData.radiobuttonItem[j].isSelected) {\n isSelected = true;\n break;\n }\n }\n if (!isSelected) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.name] = isSelected;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.name]);\n }\n }\n }\n else if (currentData.formFieldAnnotationType === 'Checkbox') {\n if (currentData.isChecked === false) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.name] = currentData.isChecked;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.name]);\n }\n }\n else if (currentData.formFieldAnnotationType === 'DropdownList' || currentData.formFieldAnnotationType === 'ListBox') {\n if (isNullOrUndefined(currentData.selectedIndex) || currentData.selectedIndex.length === 0) {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.name] = currentData.selectedIndex;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.name]);\n }\n }\n else if (currentData.formFieldAnnotationType === 'SignatureField' || currentData.formFieldAnnotationType === 'InitialField') {\n if (currentData.value === null || currentData.value === '') {\n this.pdfViewerBase.validateForm = true;\n this.pdfViewerBase.nonFillableFields[currentData.name] = currentData.value;\n }\n else {\n delete (this.pdfViewerBase.nonFillableFields[currentData.name]);\n }\n }\n }\n }\n for (var j = 0; j < this.pdfViewer.formFieldCollection.length; j++) {\n var _loop_1 = function (k) {\n var items = this_1.loadedFormFieldValue(this_1.pdfViewer.formFieldCollections[k], this_1.pdfViewer.formFieldCollection[j]);\n var nonRenderField = formFieldsData.filter(function (value) {\n if (items.id + '_content' === value.FormField.id || items.id === value.FormField.id) {\n return items;\n }\n });\n if (nonRenderField.length === 0) {\n formFieldsData.push({ Key: items.id + \"_content\", FormField: items });\n }\n };\n var this_1 = this;\n for (var k = 0; k < this.pdfViewer.formFieldCollections.length; k++) {\n _loop_1(k);\n }\n }\n return (JSON.stringify(formFieldsData));\n }\n else {\n return null;\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.loadedFormFieldValue = function (currentData, items) {\n var backgroundColor = this.hexToRgb(currentData.backgroundColor);\n var bounds = currentData.bounds;\n var backColor = currentData.backgroundColor ? { r: backgroundColor[0], g: backgroundColor[1], b: backgroundColor[2], a: backgroundColor[3] } : { r: 218, g: 234, b: 247, a: 100 };\n // // eslint-disable-next-line\n var fontColor = this.hexToRgb(currentData.color);\n var foreColor = currentData.color ? { r: fontColor[0], g: fontColor[1], b: fontColor[2], a: 100 } : { r: 0, g: 0, b: 0, a: 100 };\n var borderColor = this.hexToRgb(currentData.borderColor);\n var borderRGB = currentData.borderColor ? { r: borderColor[0], g: borderColor[1], b: borderColor[2], a: 100 } : { r: 48, g: 48, b: 48, a: 100 };\n var value;\n if ((currentData.name === items.name) && (currentData.type === 'Textbox' || currentData.type === 'PasswordField')) {\n value = items.value;\n }\n var fieldProperties = {\n lineBound: { X: bounds.x, Y: bounds.y, Width: bounds.width, Height: bounds.height }, pageNumber: parseFloat(currentData.pageIndex) + 1, name: currentData.name, tooltip: currentData.tooltip,\n value: value ? value : currentData.value, radiobuttonItem: [], signatureType: items.signatureType ? items.signatureType : '', id: currentData.id, insertSpaces: currentData.insertSpaces ? currentData.insertSpaces : false, isChecked: currentData.isChecked ? currentData.isChecked : false, isSelected: currentData.isSelected ? currentData.isSelected : false, fontFamily: currentData.fontFamily, fontStyle: currentData.fontStyle, backgroundColor: backColor, fontColor: foreColor, borderColor: borderRGB, thickness: currentData.thickness, fontSize: currentData.fontSize, isMultiline: currentData.Multiline ? currentData.Multiline : false, rotation: 0,\n isReadOnly: currentData.isReadOnly ? currentData.isReadOnly : false, isRequired: currentData.isRequired ? currentData.isRequired : false, textAlign: currentData.alignment, formFieldAnnotationType: currentData.type, zoomvalue: 1, options: [], maxLength: currentData.maxLength ? currentData.maxLength : 0, visibility: currentData.visibility, font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false }\n };\n if (currentData.type === 'RadioButton') {\n var field = {\n lineBound: { X: bounds.x, Y: bounds.y, Width: bounds.width, Height: bounds.height }, pageNumber: parseFloat(currentData.pageIndex) + 1, name: currentData.name, tooltip: currentData.tooltip,\n value: currentData.value, signatureType: items.signatureType ? items.signatureType : '', id: currentData.id, isChecked: currentData.isChecked ? currentData.isChecked : false, isSelected: currentData.isSelected ? currentData.isSelected : false, fontFamily: currentData.fontFamily, fontStyle: currentData.fontStyle, backgroundColor: backColor, fontColor: foreColor, borderColor: borderRGB, thickness: currentData.thickness, fontSize: currentData.fontSize, rotation: 0,\n isReadOnly: currentData.isReadOnly ? currentData.isReadOnly : false, isRequired: currentData.isRequired ? currentData.isRequired : false, textAlign: currentData.alignment, formFieldAnnotationType: currentData.type, zoomvalue: 1, maxLength: currentData.maxLength ? currentData.maxLength : 0, visibility: currentData.visibility, font: { isItalic: false, isBold: false, isStrikeout: false, isUnderline: false }\n };\n fieldProperties.radiobuttonItem.push(field);\n }\n else {\n fieldProperties.radiobuttonItem = [];\n }\n return fieldProperties;\n };\n /**\n * @private\n */\n // eslint-disable-next-line max-len\n FormDesigner.prototype.createAnnotationLayer = function (pageDiv, pageWidth, pageHeight, pageNumber, displayMode) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n this.updateAnnotationCanvas(canvas, pageWidth, pageHeight, pageNumber);\n return canvas;\n }\n else {\n // eslint-disable-next-line max-len\n var annotationCanvas = createElement('canvas', { id: this.pdfViewer.element.id + '_annotationCanvas_' + pageNumber, className: 'e-pv-annotation-canvas' });\n this.updateAnnotationCanvas(annotationCanvas, pageWidth, pageHeight, pageNumber);\n pageDiv.appendChild(annotationCanvas);\n return annotationCanvas;\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.resizeAnnotations = function (width, height, pageNumber) {\n var canvas = this.pdfViewerBase.getElement('_annotationCanvas_' + pageNumber);\n if (canvas) {\n canvas.style.width = width + 'px';\n canvas.style.height = height + 'px';\n this.pdfViewerBase.applyElementStyles(canvas, pageNumber);\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.getEventPageNumber = function (event) {\n var eventTarget = event.target;\n if (eventTarget.classList.contains('e-pv-hyperlink')) {\n eventTarget = eventTarget.parentElement;\n }\n else if (eventTarget.parentElement.classList.contains('foreign-object') || (eventTarget.parentElement.classList.contains('e-pv-radiobtn-container'))) {\n eventTarget = eventTarget.closest('.e-pv-text-layer');\n }\n // eslint-disable-next-line\n var pageString = eventTarget.id.split('_text_')[1] || eventTarget.id.split('_textLayer_')[1] || eventTarget.id.split('_annotationCanvas_')[1] || eventTarget.id.split('_pageDiv_')[1];\n if (isNaN(pageString)) {\n event = this.pdfViewerBase.annotationEvent;\n if (event) {\n eventTarget = event.target;\n // eslint-disable-next-line\n pageString = eventTarget.id.split('_text_')[1] || eventTarget.id.split('_textLayer_')[1] || eventTarget.id.split('_annotationCanvas_')[1] || eventTarget.id.split('_pageDiv_')[1];\n }\n }\n // eslint-disable-next-line\n return parseInt(pageString);\n };\n FormDesigner.prototype.getPropertyPanelHeaderContent = function (formFieldType) {\n switch (formFieldType) {\n case 'Textbox':\n return this.pdfViewer.localeObj.getConstant('Textbox');\n case 'PasswordField':\n return this.pdfViewer.localeObj.getConstant('Password');\n case 'Checkbox':\n return this.pdfViewer.localeObj.getConstant('Check Box');\n case 'RadioButton':\n return this.pdfViewer.localeObj.getConstant('Radio Button');\n case 'DropdownList':\n return this.pdfViewer.localeObj.getConstant('Dropdown');\n case 'ListBox':\n return this.pdfViewer.localeObj.getConstant('List Box');\n case 'InitialField':\n return this.pdfViewer.localeObj.getConstant('Initial');\n case 'SignatureField':\n return this.pdfViewer.localeObj.getConstant('Signature');\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.createPropertiesWindow = function () {\n var _this = this;\n var elementID = this.pdfViewer.element.id;\n var propertyWinMinHeight;\n // eslint-disable-next-line max-len\n var dialogDiv = createElement('div', { id: elementID + '_properties_window', className: 'e-pv-properties-form-field-window' });\n var appearanceTab = this.createAppearanceTab();\n this.pdfViewerBase.pageContainer.appendChild(dialogDiv);\n if (this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== 'DropdownList' && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== 'ListBox')\n propertyWinMinHeight = '430px';\n else\n propertyWinMinHeight = '505px';\n this.propertiesDialog = new Dialog({\n showCloseIcon: true, closeOnEscape: false, isModal: true, header: '
    ' + this.getPropertyPanelHeaderContent(this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType) + ' ' + this.pdfViewer.localeObj.getConstant('Properties') + '
    ',\n minHeight: propertyWinMinHeight, target: this.pdfViewer.element, content: appearanceTab, beforeOpen: function () {\n _this.isPropertyDialogOpen = true;\n }, allowDragging: true, close: function () {\n _this.destroyPropertiesWindow();\n _this.isPropertyDialogOpen = false;\n }\n });\n if (!Browser.isDevice || this.pdfViewer.enableDesktopMode) {\n this.propertiesDialog.buttons = [\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) },\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) }\n ];\n }\n else {\n this.propertiesDialog.buttons = [\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('Cancel') }, click: this.onCancelClicked.bind(this) },\n // eslint-disable-next-line max-len\n { buttonModel: { content: this.pdfViewer.localeObj.getConstant('OK'), isPrimary: true }, click: this.onOkClicked.bind(this) }\n ];\n }\n if (this.pdfViewer.enableRtl) {\n this.propertiesDialog.enableRtl = true;\n }\n var propertySpliterBottom = createElement('div');\n propertySpliterBottom.className = 'e-pv-properties-bottom-spliter';\n dialogDiv.appendChild(propertySpliterBottom);\n this.propertiesDialog.appendTo(dialogDiv);\n };\n FormDesigner.prototype.onOkClicked = function (args) {\n var selectedItem = this.pdfViewer.selectedItems.formFields[0];\n var clonedItem = cloneObject(selectedItem);\n if (selectedItem) {\n switch (selectedItem.formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n if (this.formFieldMultiline && this.formFieldMultiline.checked && selectedItem.formFieldAnnotationType === 'Textbox' && this.multilineCheckboxCheckedState) {\n this.renderMultilineText(selectedItem);\n }\n else if (selectedItem.formFieldAnnotationType === 'Textbox' && this.multilineCheckboxCheckedState) {\n this.renderTextbox(selectedItem);\n }\n if (selectedItem.formFieldAnnotationType === 'PasswordField') {\n this.updateTextboxFormDesignerProperties(selectedItem);\n }\n if (selectedItem.formFieldAnnotationType === 'Textbox') {\n var textboxCollection = this.checkTextboxName(selectedItem);\n if (textboxCollection && textboxCollection.length > 0) {\n for (var i = 0; i < textboxCollection.length; i++) {\n var item = textboxCollection[i];\n if (item.id === selectedItem.id) {\n if (selectedItem.isMultiline) {\n this.renderMultilineText(item);\n }\n else {\n this.renderTextbox(item);\n }\n document.getElementById(item.id + \"_content_html_element\") ? this.updateTextboxFormDesignerProperties(item) : this.updateFormFieldPropertiesInCollections(item);\n }\n }\n }\n }\n this.multilineCheckboxCheckedState = false;\n var point = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n break;\n case 'Checkbox':\n this.updateCheckboxFormDesignerProperties(selectedItem);\n var point1 = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point1, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n break;\n case 'RadioButton':\n this.updateRadioButtonDesignerProperties(selectedItem);\n var point2 = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point2, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n break;\n case 'SignatureField':\n case 'InitialField':\n this.updateSignatureTextboxProperties(selectedItem);\n var point3 = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point3, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n break;\n case 'DropdownList':\n this.updateDropdownFormDesignerProperties(selectedItem);\n var point4 = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point4, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n break;\n case 'ListBox':\n this.updateListBoxFormDesignerProperties(selectedItem);\n var point5 = cornersPointsBeforeRotation(selectedItem.wrapper.children[0]).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point5, selectedItem.wrapper.children[0], selectedItem.formFieldAnnotationType, selectedItem);\n break;\n }\n this.updateFormFieldCollections(selectedItem);\n var cloneChangedNode = cloneObject(selectedItem);\n if (this.pdfViewer.annotation) {\n this.pdfViewer.annotation.addAction(this.pdfViewerBase.currentPageNumber, null, selectedItem, 'FormDesigner Properties Change', '', clonedItem, cloneChangedNode);\n }\n }\n this.propertiesDialog.hide();\n };\n /**\n * Update the form fields properties to the collection while rendering the page\n */\n FormDesigner.prototype.updateFormFieldPropertiesInCollections = function (item) {\n var formFieldCollection = this.pdfViewer.formFieldCollections;\n for (var i = 0; i < formFieldCollection.length; i++) {\n var currentData = formFieldCollection[i];\n if (currentData.id === item.id && currentData.name === item.name) {\n this.formFieldName && this.formFieldName.value ? currentData.name = this.formFieldName.value : null;\n this.formFieldValue && (item.value !== this.formFieldValue.value) ? currentData.value = this.formFieldValue.value : null;\n this.formFieldAlign && (item.alignment !== this.formFieldAlign) ? currentData.alignment = this.formFieldAlign : null;\n this.formFieldPrinting && (item.isPrint !== this.formFieldPrinting.checked) ? currentData.isPrint = this.formFieldPrinting.checked : null;\n this.formFieldTooltip && (item.tooltip !== this.formFieldTooltip.value) ? currentData.tooltip = this.formFieldTooltip.value : null;\n this.formFieldVisibility && (item.visibility !== this.formFieldVisibility.value) ? currentData.visibility = this.formFieldVisibility : null;\n this.formFieldFontFamily && this.formFieldFontFamily.value ? currentData.fontFamily = this.formFieldFontFamily.value : null;\n this.formFieldFontSize && this.formFieldFontSize.value ? currentData.fontSize = parseInt(this.formFieldFontSize.value.toString()) : null;\n this.fontColorValue && (item.color !== this.fontColorValue) ? currentData.color = this.fontColorValue : null;\n this.backgroundColorValue && (item.backgroundColor !== this.backgroundColorValue) ? currentData.backgroundColor = this.backgroundColorValue : null;\n this.borderColorValue && (item.borderColor !== this.borderColorValue) ? currentData.borderColor = this.borderColorValue : null;\n this.formFieldBorderWidth && item.thickness !== parseInt(this.formFieldBorderWidth) ? currentData.thickness = parseInt(this.formFieldBorderWidth) : null;\n this.formFieldReadOnly && (item.isReadonly !== this.formFieldReadOnly.checked) ? currentData.isReadOnly = this.formFieldReadOnly.checked : null;\n this.formFieldRequired && (item.isRequired !== this.formFieldRequired.checked) ? currentData.isRequired = this.formFieldRequired.checked : null;\n i !== 0 && i < this.pdfViewer.formFieldCollection.length ? currentData.fontStyle = this.pdfViewer.formFieldCollection[i - 1].fontStyle : currentData.fontStyle = this.pdfViewer.formFieldCollection[i + 1].fontStyle;\n var formFieldIndex = this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === item.id; });\n this.pdfViewer.formFieldCollections[formFieldIndex] = currentData;\n }\n }\n };\n FormDesigner.prototype.checkTextboxName = function (selectedItem) {\n var textboxObjectCollection = [];\n for (var i = 0; i < this.pdfViewer.formFieldCollection.length; i++) {\n var item = this.pdfViewer.formFieldCollection[i];\n if (item.name === selectedItem.name && item.formFieldAnnotationType === 'Textbox') {\n textboxObjectCollection.push(item);\n }\n }\n return textboxObjectCollection;\n };\n FormDesigner.prototype.renderMultilineText = function (selectedItem, isUndoRedo) {\n if (isUndoRedo) {\n this.reRenderMultilineTextbox(selectedItem, \"e-pv-formfield-input\");\n }\n else {\n this.addMultilineTextbox(selectedItem, \"e-pv-formfield-input\", true);\n }\n };\n FormDesigner.prototype.renderTextbox = function (selectedItem, isUndoRedo) {\n if (isUndoRedo) {\n this.reRenderMultilineTextbox(selectedItem, \"e-pv-formfield-textarea\");\n }\n else {\n this.addMultilineTextbox(selectedItem, \"e-pv-formfield-textarea\", false);\n }\n };\n FormDesigner.prototype.addMultilineTextbox = function (selectedItem, className, isMultiline) {\n var wrapperElement = selectedItem.wrapper.children[0];\n selectedItem.isMultiline = isMultiline;\n if (document.getElementById(wrapperElement.id + '_html_element')) {\n var htmlElement = document.getElementById(wrapperElement.id + '_html_element').children[0];\n var textAreaId = htmlElement.children[0].id;\n document.getElementById(htmlElement.children[0].id).remove();\n if (className.indexOf(\"e-pv-formfield-textarea\") !== -1) {\n var inputElement = this.createTextboxElement(textAreaId);\n wrapperElement.template = htmlElement.appendChild(inputElement);\n }\n else {\n var textArea = this.createTextAreaElement(textAreaId);\n wrapperElement.template = htmlElement.appendChild(textArea);\n }\n var index = this.getFormFiledIndex(selectedItem.id.split('_')[0]);\n this.pdfViewerBase.formFieldCollection[index].FormField.isMultiline = selectedItem.isMultiline;\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].isMultiline = selectedItem.isMultiline;\n }\n };\n FormDesigner.prototype.reRenderMultilineTextbox = function (selectedItem, className) {\n var wrapperElement = document.getElementById(selectedItem.id + \"_content_html_element\");\n if (wrapperElement) {\n var textareaElement = wrapperElement.firstElementChild.firstElementChild;\n var textareaId = textareaElement.id;\n textareaElement.remove();\n if (className.indexOf('e-pv-formfield-textarea') !== -1) {\n var textboxElement = this.createTextboxElement(textareaId);\n wrapperElement.firstElementChild.appendChild(textboxElement);\n }\n else {\n var textboxElement = this.createTextAreaElement(textareaId);\n wrapperElement.firstElementChild.appendChild(textboxElement);\n }\n }\n };\n FormDesigner.prototype.createTextAreaElement = function (id) {\n var textArea = createElement('textarea');\n textArea.id = id;\n textArea.className = 'e-pv-formfield-textarea';\n textArea.style.width = '100%';\n textArea.style.height = '100%';\n textArea.style.borderStyle = \"solid\";\n textArea.addEventListener('click', this.inputElementClick.bind(this));\n textArea.addEventListener('change', this.getTextboxValue.bind(this));\n return textArea;\n };\n FormDesigner.prototype.createTextboxElement = function (id) {\n var inputElement = createElement('input');\n inputElement.id = id;\n inputElement.type = \"text\";\n inputElement.className = \"e-pv-formfield-input\";\n inputElement.autocomplete = \"off\";\n inputElement.style.width = '100%';\n inputElement.style.height = '100%';\n inputElement.style.position = \"absolute\";\n inputElement.style.borderStyle = \"solid\";\n inputElement.addEventListener('click', this.inputElementClick.bind(this));\n inputElement.addEventListener('change', this.getTextboxValue.bind(this));\n inputElement.addEventListener('focus', this.focusFormFields.bind(this));\n inputElement.addEventListener('blur', this.blurFormFields.bind(this));\n return inputElement;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateFormFieldCollections = function (formFieldObject) {\n var formField = {\n id: formFieldObject.id.split('_')[0], name: formFieldObject.name, value: formFieldObject.value,\n type: formFieldObject.type ? formFieldObject.type : formFieldObject.formFieldAnnotationType, isReadOnly: formFieldObject.isReadonly, fontFamily: formFieldObject.fontFamily, isMultiline: formFieldObject.isMultiline,\n fontSize: formFieldObject.fontSize, fontStyle: formFieldObject.fontStyle, color: formFieldObject.color ? formFieldObject.color : this.getRgbToHex(formFieldObject.fontColor), backgroundColor: typeof formFieldObject.backgroundColor === 'string' ? formFieldObject.backgroundColor : this.getRgbToHex(formFieldObject.backgroundColor),\n alignment: formFieldObject.alignment ? formFieldObject.alignment : formFieldObject.textAlign, visibility: formFieldObject.visibility, maxLength: formFieldObject.maxLength, isRequired: formFieldObject.isRequired,\n isPrint: formFieldObject.isPrint, isSelected: formFieldObject.isSelected, isChecked: formFieldObject.isChecked, tooltip: formFieldObject.tooltip, bounds: formFieldObject.bounds ? formFieldObject.bounds : formFieldObject.lineBound, thickness: formFieldObject.thickness, borderColor: typeof formFieldObject.borderColor === 'string' ? formFieldObject.borderColor : this.getRgbToHex(formFieldObject.borderColor), pageIndex: !isNullOrUndefined(formFieldObject.pageNumber) ? formFieldObject.pageNumber - 1 : formFieldObject.pageIndex\n };\n this.pdfViewer.formFieldCollections[this.pdfViewer.formFieldCollections.findIndex(function (el) { return el.id === formField.id; })] = formField;\n };\n /**\n * Get the Hex value from the RGB value.\n */\n FormDesigner.prototype.getRgbToHex = function (color) {\n return ('#' + this.hex(color.r) + this.hex(color.g) + this.hex(color.b));\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateDropdownFormDesignerProperties = function (selectedItem, isUndoRedo) {\n var dropdownElement = document.getElementById(selectedItem.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (this.pdfViewer.designerMode || isUndoRedo) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n var index_1 = this.getFormFiledIndex(selectedItem.id.split('_')[0]);\n selectedItem.options = this.createDropdownDataSource(selectedItem);\n this.updateDropDownListDataSource(selectedItem, dropdownElement);\n selectedItem.selectedIndex = [];\n if (index_1 > -1) {\n formFieldsData[index_1].FormField.option = selectedItem.options;\n this.pdfViewerBase.formFieldCollection[index_1].FormField.option = selectedItem.options;\n if (!isNullOrUndefined(selectedItem.options) && selectedItem.options.length > 0) {\n formFieldsData[index_1] && formFieldsData[index_1].FormField.value ? selectedItem.selectedIndex.push(selectedItem.options.findIndex(function (x) { return x.itemValue === formFieldsData[index_1].FormField.value; })) : selectedItem.selectedIndex.push(0);\n }\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].options = selectedItem.options;\n if ((this.formFieldName && this.formFieldName.value) || isUndoRedo) {\n this.updateNamePropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.formFieldValue && formFieldsData[index_1] && formFieldsData[index_1].FormField.value || isUndoRedo) {\n this.updateValuePropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.formFieldPrinting || isUndoRedo) {\n this.updateIsPrintPropertyChange(selectedItem, isUndoRedo, index_1, formFieldsData);\n }\n if ((this.formFieldTooltip) || isUndoRedo) {\n this.updateTooltipPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.formFieldVisibility || isUndoRedo) {\n this.updateVisibilityPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if ((this.formFieldFontFamily && this.formFieldFontFamily.value) || isUndoRedo) {\n this.updateFontFamilyPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if ((this.formFieldFontSize && this.formFieldFontSize.value) || isUndoRedo) {\n this.updateFontSizePropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n this.updateFontStylePropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n if (this.formFieldAlign || isUndoRedo) {\n this.updateAlignmentPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.fontColorValue || isUndoRedo) {\n this.updateColorPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.backgroundColorValue || isUndoRedo) {\n this.updateBackgroundColorPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.borderColorValue || isUndoRedo) {\n this.updateBorderColorPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (!isNullOrUndefined(this.formFieldBorderWidth) || isUndoRedo) {\n this.updateBorderThicknessPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.formFieldReadOnly || isUndoRedo) {\n this.updateIsReadOnlyPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n if (this.formFieldRequired || isUndoRedo) {\n this.updateIsRequiredPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_1, formFieldsData);\n }\n }\n if (isUndoRedo)\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateListBoxFormDesignerProperties = function (selectedItem, isUndoRedo) {\n var dropdownElement = document.getElementById(selectedItem.id + \"_content_html_element\").firstElementChild.firstElementChild;\n if (this.pdfViewer.designerMode || isUndoRedo) {\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n var index_2 = this.getFormFiledIndex(selectedItem.id.split('_')[0]);\n selectedItem.options = this.createDropdownDataSource(selectedItem);\n this.updateDropDownListDataSource(selectedItem, dropdownElement);\n selectedItem.selectedIndex = [];\n if (index_2 > -1) {\n formFieldsData[index_2].FormField.option = selectedItem.options;\n this.pdfViewerBase.formFieldCollection[index_2].FormField.option = selectedItem.options;\n if (!isNullOrUndefined(selectedItem.options) && selectedItem.options.length > 0) {\n formFieldsData[index_2] && formFieldsData[index_2].FormField.value ? selectedItem.selectedIndex.push(selectedItem.options.findIndex(function (x) { return x.itemValue === formFieldsData[index_2].FormField.value; })) : selectedItem.selectedIndex.push(0);\n }\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].options = selectedItem.options;\n if ((this.formFieldName && this.formFieldName.value) || isUndoRedo) {\n this.updateNamePropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (this.formFieldPrinting || isUndoRedo) {\n this.updateIsPrintPropertyChange(selectedItem, isUndoRedo, index_2, formFieldsData);\n }\n if ((this.formFieldTooltip) || isUndoRedo) {\n this.updateTooltipPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (this.formFieldVisibility || isUndoRedo) {\n this.updateVisibilityPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if ((this.formFieldFontFamily && this.formFieldFontFamily.value) || isUndoRedo) {\n this.updateFontFamilyPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if ((this.formFieldFontSize && this.formFieldFontSize.value) || isUndoRedo) {\n this.updateFontSizePropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n this.updateFontStylePropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n if (this.formFieldAlign || isUndoRedo) {\n this.updateAlignmentPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (this.fontColorValue || isUndoRedo) {\n this.updateColorPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (this.backgroundColorValue || isUndoRedo) {\n this.updateBackgroundColorPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (this.borderColorValue || isUndoRedo) {\n this.updateBorderColorPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (!isNullOrUndefined(this.formFieldBorderWidth) || isUndoRedo) {\n this.updateBorderThicknessPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (this.formFieldReadOnly || isUndoRedo) {\n this.updateIsReadOnlyPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n if (this.formFieldRequired || isUndoRedo) {\n this.updateIsRequiredPropertyChange(selectedItem, dropdownElement, isUndoRedo, index_2, formFieldsData);\n }\n }\n if (isUndoRedo)\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n };\n FormDesigner.prototype.updateDropDownListDataSource = function (selectedItem, dropdownElement) {\n while (dropdownElement.firstChild) {\n dropdownElement.firstChild.remove();\n }\n for (var j = 0; j < selectedItem.options.length; j++) {\n var option = document.createElement(\"option\");\n option.className = \"e-pv-formfield-dropdown\";\n option.value = selectedItem.options[j].itemValue;\n option.text = selectedItem.options[j].itemName;\n dropdownElement.appendChild(option);\n }\n };\n FormDesigner.prototype.createDropdownDataSource = function (selectedItem) {\n var ulItem = document.getElementById(this.pdfViewer.element.id + '_ul_list_item');\n this.formFieldListItemDataSource = [];\n if (ulItem && ulItem.children && ulItem.children.length > 0) {\n for (var i = 0; i < ulItem.children.length; i++) {\n var liItem = ulItem.children[i];\n this.formFieldListItemDataSource.push({ itemName: liItem.innerHTML, itemValue: liItem.innerHTML });\n }\n }\n else if (selectedItem && selectedItem.options.length > 0) {\n this.formFieldListItemDataSource = selectedItem.options;\n }\n return this.formFieldListItemDataSource;\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateSignatureTextboxProperties = function (selectedItem, isUndoRedo) {\n var inputElement = document.getElementById(selectedItem.id + \"_content_html_element\").firstElementChild.firstElementChild;\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n var index = this.getFormFiledIndex(selectedItem.id.split('_')[0]);\n if (this.pdfViewer.designerMode || isUndoRedo) {\n if ((this.formFieldName && this.formFieldName.value) || isUndoRedo) {\n this.updateNamePropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldPrinting || isUndoRedo) {\n this.updateIsPrintPropertyChange(selectedItem, isUndoRedo, index, formFieldsData);\n }\n if ((this.formFieldTooltip) || isUndoRedo) {\n this.updateTooltipPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (!isNullOrUndefined(this.formFieldBorderWidth) || isUndoRedo) {\n this.updateBorderThicknessPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldVisibility || isUndoRedo) {\n this.updateVisibilityPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldReadOnly || isUndoRedo) {\n this.updateIsReadOnlyPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldRequired || isUndoRedo) {\n this.updateIsRequiredPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n }\n if (isUndoRedo)\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateCheckboxFormDesignerProperties = function (selectedItem, isUndoRedo) {\n var checkBoxElement = document.getElementById(selectedItem.id + \"_content_html_element\").firstElementChild.firstElementChild.lastElementChild;\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n var index = this.getFormFiledIndex(selectedItem.id.split('_')[0]);\n if ((this.formFieldName && this.formFieldName.value) || isUndoRedo) {\n this.updateNamePropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (this.backgroundColorValue || isUndoRedo) {\n this.updateBackgroundColorPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (this.borderColorValue || isUndoRedo) {\n this.updateBorderColorPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (!isNullOrUndefined(this.formFieldBorderWidth) || isUndoRedo) {\n this.updateBorderThicknessPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldChecked) {\n this.checkboxCheckedState = this.formFieldChecked.checked;\n }\n if (this.formFieldPrinting || isUndoRedo) {\n this.updateIsPrintPropertyChange(selectedItem, isUndoRedo, index, formFieldsData);\n }\n if ((this.formFieldTooltip) || isUndoRedo) {\n this.updateTooltipPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldVisibility || isUndoRedo) {\n this.updateVisibilityPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (this.checkboxCheckedState != undefined || isUndoRedo) {\n this.updateIsCheckedPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if ((this.pdfViewer.designerMode && this.borderColorValue) || isUndoRedo) {\n this.updateBorderColorPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if ((this.pdfViewer.designerMode && this.formFieldBorderWidth) || isUndoRedo) {\n this.updateBorderThicknessPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldReadOnly || isUndoRedo) {\n this.updateIsReadOnlyPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldRequired || isUndoRedo) {\n this.updateIsRequiredPropertyChange(selectedItem, checkBoxElement, isUndoRedo, index, formFieldsData);\n }\n if (isUndoRedo)\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateRadioButtonDesignerProperties = function (selectedItem, isUndoRedo) {\n var radioButton = document.getElementById(selectedItem.id + \"_content_html_element\").firstElementChild.firstElementChild.firstElementChild;\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n var index = this.getFormFiledIndex(selectedItem.id.split('_')[0]);\n if ((this.formFieldName && this.formFieldName.value) || isUndoRedo) {\n this.updateNamePropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldChecked) {\n this.checkboxCheckedState = this.formFieldChecked.checked;\n }\n if (this.formFieldPrinting || isUndoRedo) {\n this.updateIsPrintPropertyChange(selectedItem, isUndoRedo, index, formFieldsData);\n }\n if ((this.formFieldTooltip) || isUndoRedo) {\n this.updateTooltipPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldVisibility || isUndoRedo) {\n this.updateVisibilityPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if ((this.pdfViewer.designerMode && !isNullOrUndefined(this.formFieldBorderWidth)) || isUndoRedo) {\n this.updateBorderThicknessPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (this.backgroundColorValue || isUndoRedo) {\n this.updateBackgroundColorPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (this.borderColorValue || isUndoRedo) {\n this.updateBorderColorPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (this.checkboxCheckedState != undefined || isUndoRedo) {\n this.updateIsSelectedPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldReadOnly || isUndoRedo) {\n this.updateIsReadOnlyPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldRequired || isUndoRedo) {\n this.updateIsRequiredPropertyChange(selectedItem, radioButton, isUndoRedo, index, formFieldsData);\n }\n if (isUndoRedo) {\n var formField = this.pdfViewer.nameTable[selectedItem.id.split('_')[0]];\n var point2 = cornersPointsBeforeRotation(formField.wrapper.children[0]).topLeft;\n this.updateFormDesignerFieldInSessionStorage(point2, formField.wrapper.children[0], formField.formFieldAnnotationType, formField);\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateTextboxFormDesignerProperties = function (selectedItem, isUndoRedo) {\n var inputElement = document.getElementById(selectedItem.id + \"_content_html_element\").firstElementChild.firstElementChild;\n var isMaxLengthChanged = false;\n var oldValue, newValue;\n var data = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n var formFieldsData = JSON.parse(data);\n var index = this.getFormFiledIndex(selectedItem.id.split('_')[0]);\n if (this.pdfViewer.designerMode || isUndoRedo) {\n if ((this.formFieldName && this.formFieldName.value) || isUndoRedo) {\n this.updateNamePropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldValue || isUndoRedo) {\n this.updateValuePropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldPrinting || isUndoRedo) {\n this.updateIsPrintPropertyChange(selectedItem, isUndoRedo, index, formFieldsData);\n }\n if ((this.formFieldTooltip) || isUndoRedo) {\n this.updateTooltipPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldVisibility || isUndoRedo) {\n this.updateVisibilityPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if ((this.formFieldFontFamily && this.formFieldFontFamily.value) || isUndoRedo) {\n this.updateFontFamilyPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if ((this.formFieldFontSize && this.formFieldFontSize.value) || isUndoRedo) {\n this.updateFontSizePropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n this.updateFontStylePropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n if (this.formFieldAlign || isUndoRedo || this.multilineCheckboxCheckedState) {\n this.updateAlignmentPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.maxLengthItem || isUndoRedo) {\n if (this.maxLengthItem && (selectedItem.maxLength !== this.maxLengthItem.value)) {\n isMaxLengthChanged = true;\n oldValue = selectedItem.maxLength;\n newValue = this.maxLengthItem.value;\n }\n var maxLength = this.maxLengthItem.value === 0 ? 524288 : this.maxLengthItem.value;\n if (isUndoRedo && selectedItem.maxLength !== 0) {\n inputElement.maxLength = selectedItem.maxLength;\n }\n else {\n inputElement.maxLength = maxLength;\n selectedItem.maxLength = this.maxLengthItem.value;\n }\n if (index > -1) {\n formFieldsData[index].FormField.maxLength = selectedItem.maxLength;\n this.pdfViewerBase.formFieldCollection[index].FormField.maxLength = selectedItem.maxLength;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].maxLength = selectedItem.maxLength;\n if (isMaxLengthChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, false, false, false, isMaxLengthChanged, false, false, false, oldValue, newValue);\n }\n }\n if (this.fontColorValue || isUndoRedo || this.multilineCheckboxCheckedState) {\n this.updateColorPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.backgroundColorValue || isUndoRedo || this.multilineCheckboxCheckedState) {\n this.updateBackgroundColorPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.borderColorValue || isUndoRedo || this.multilineCheckboxCheckedState) {\n this.updateBorderColorPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (!isNullOrUndefined(this.formFieldBorderWidth) || isUndoRedo) {\n this.updateBorderThicknessPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldReadOnly || isUndoRedo) {\n this.updateIsReadOnlyPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n if (this.formFieldRequired || isUndoRedo) {\n this.updateIsRequiredPropertyChange(selectedItem, inputElement, isUndoRedo, index, formFieldsData);\n }\n }\n if (!this.pdfViewer.designerMode) {\n if (this.formFieldVisibility && this.formFieldVisibility.value) {\n selectedItem.visibility = this.formFieldVisibility.value;\n var visibleItem = document.getElementById(selectedItem.id + '_content_html_element').firstElementChild.firstElementChild;\n visibleItem.style.visibility = selectedItem.visibility;\n }\n }\n this.updateFormFieldCollections(selectedItem);\n if (isUndoRedo)\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateIsCheckedPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n if (this.pdfViewer.designerMode || isUndoRedo) {\n var isValueChanged = false;\n var oldValue = void 0, newValue = void 0;\n if (selectedItem.isChecked !== this.checkboxCheckedState) {\n isValueChanged = true;\n oldValue = selectedItem.isChecked;\n newValue = this.checkboxCheckedState;\n }\n if (!isUndoRedo) {\n selectedItem.isChecked = this.checkboxCheckedState;\n }\n if (index > -1) {\n formFieldsData[index].FormField.isChecked = selectedItem.isChecked;\n this.pdfViewerBase.formFieldCollection[index].FormField.isChecked = selectedItem.isChecked;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].isChecked = selectedItem.isChecked;\n if (isValueChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, isValueChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (!this.pdfViewer.designerMode || isUndoRedo) {\n var checkboxElement = document.getElementById(selectedItem.id + \"_input\").firstElementChild;\n if (selectedItem.isChecked) {\n if (checkboxElement.classList.contains('e-pv-cb-unchecked'))\n checkboxElement.classList.remove('e-pv-cb-unchecked');\n checkboxElement.classList.add(\"e-pv-cb-checked\");\n }\n else {\n if (checkboxElement.classList.contains('e-pv-cb-checked'))\n checkboxElement.classList.remove('e-pv-cb-checked');\n checkboxElement.classList.add(\"e-pv-cb-unchecked\");\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateIsSelectedPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n if (this.pdfViewer.designerMode || isUndoRedo) {\n var isValueChanged = false;\n var oldValue = void 0, newValue = void 0;\n if (selectedItem.isSelected !== this.checkboxCheckedState) {\n isValueChanged = true;\n oldValue = selectedItem.isSelected;\n newValue = this.checkboxCheckedState;\n }\n if (!isUndoRedo) {\n selectedItem.isSelected = this.checkboxCheckedState;\n }\n if (index > -1) {\n formFieldsData[index].FormField.isSelected = selectedItem.isSelected;\n this.pdfViewerBase.formFieldCollection[index].FormField.isSelected = selectedItem.isSelected;\n for (var i = 0; i < formFieldsData[index].FormField.radiobuttonItem.length; i++) {\n if (formFieldsData[index].FormField.radiobuttonItem[i].id.split(\"_\")[0] === selectedItem.id.split(\"_\")[0]) {\n formFieldsData[index].FormField.radiobuttonItem[i].isSelected = selectedItem.isSelected;\n this.pdfViewerBase.formFieldCollection[index].FormField.radiobuttonItem[i].isSelected = selectedItem.isSelected;\n }\n }\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].isSelected = selectedItem.isSelected;\n if (isValueChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, isValueChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n }\n if (!this.pdfViewer.designerMode || isUndoRedo) {\n element.checked = selectedItem.isSelected;\n if (index > -1) {\n formFieldsData[index].FormField.isSelected = selectedItem.isSelected;\n this.pdfViewerBase.formFieldCollection[index].FormField.isSelected = selectedItem.isSelected;\n for (var i = 0; i < formFieldsData[index].FormField.radiobuttonItem.length; i++) {\n if (formFieldsData[index].FormField.radiobuttonItem[i].id.split(\"_\")[0] === selectedItem.id.split(\"_\")[0]) {\n formFieldsData[index].FormField.radiobuttonItem[i].isSelected = selectedItem.isSelected;\n this.pdfViewerBase.formFieldCollection[index].FormField.radiobuttonItem[i].isSelected = selectedItem.isSelected;\n }\n }\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].isSelected = selectedItem.isSelected;\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateValuePropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isValueChanged = false;\n var oldValue, newValue;\n if (selectedItem.formFieldAnnotationType !== \"DropdownList\" && this.formFieldValue && (selectedItem.value !== this.formFieldValue.value)) {\n isValueChanged = true;\n oldValue = selectedItem.value;\n newValue = this.formFieldValue.value;\n }\n else if (selectedItem.formFieldAnnotationType === \"DropdownList\" && this.formFieldValue && (selectedItem.value !== formFieldsData[index].FormField.value)) {\n isValueChanged = true;\n oldValue = selectedItem.value;\n newValue = formFieldsData[index].FormField.value;\n }\n if (isUndoRedo) {\n element.value = selectedItem.value;\n }\n else {\n selectedItem.formFieldAnnotationType === \"DropdownList\" ? selectedItem.value = formFieldsData[index].FormField.value : selectedItem.value = this.formFieldValue.value;\n selectedItem.formFieldAnnotationType === \"DropdownList\" ? element.value = formFieldsData[index].FormField.value : element.value = this.formFieldValue.value;\n }\n if (index > -1) {\n formFieldsData[index].FormField.value = selectedItem.value;\n this.pdfViewerBase.formFieldCollection[index].FormField.value = selectedItem.value;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].value = selectedItem.value;\n if (isValueChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, isValueChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateFontStylePropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isFontStyleChanged = false;\n var oldValue = '';\n var newValue = '';\n var result = this.updateFontStyle(element, selectedItem, isUndoRedo, index, formFieldsData);\n isFontStyleChanged = result[0];\n oldValue = result[1];\n newValue = result[2];\n if (index > -1) {\n formFieldsData[index].FormField.fontStyle = selectedItem.fontStyle;\n this.pdfViewerBase.formFieldCollection[index].FormField.fontStyle = selectedItem.fontStyle;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].fontStyle = selectedItem.fontStyle;\n if (isFontStyleChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, isFontStyleChanged, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateBorderThicknessPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isBorderWidthChanged = false;\n var oldValue, newValue;\n var borderWidth = parseInt(this.formFieldBorderWidth);\n if (selectedItem.thickness !== borderWidth) {\n isBorderWidthChanged = true;\n oldValue = selectedItem.thickness;\n newValue = borderWidth ? borderWidth : selectedItem.thickness;\n }\n if (isUndoRedo) {\n element.style.borderWidth = selectedItem.thickness.toString();\n }\n else {\n element.style.borderWidth = this.formFieldBorderWidth ? this.formFieldBorderWidth + \"px\" : selectedItem.thickness + \"px\";\n selectedItem.thickness = borderWidth;\n }\n if (index > -1) {\n formFieldsData[index].FormField.thickness = selectedItem.thickness;\n this.pdfViewerBase.formFieldCollection[index].FormField.thickness = selectedItem.thickness;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].thickness = selectedItem.thickness;\n if (isBorderWidthChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, isBorderWidthChanged, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateBorderColorPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isBorderColorChanged = false;\n var oldValue, newValue;\n if (selectedItem.borderColor !== this.borderColorValue) {\n isBorderColorChanged = true;\n oldValue = selectedItem.borderColor;\n newValue = this.borderColorValue ? this.borderColorValue : selectedItem.borderColor;\n }\n if (isUndoRedo) {\n element.style.borderColor = selectedItem.borderColor;\n }\n else {\n element.style.borderColor = this.borderColorValue ? this.borderColorValue : selectedItem.borderColor;\n selectedItem.borderColor = this.borderColorValue ? this.borderColorValue : selectedItem.borderColor;\n }\n if (selectedItem.formFieldAnnotationType == \"RadioButton\")\n element.parentElement.style.boxShadow = this.borderColorValue + ' 0px 0px 0px ' + selectedItem.thickness + 'px';\n if (index > -1) {\n formFieldsData[index].FormField.borderColor = this.getRgbCode(selectedItem.borderColor);\n this.pdfViewerBase.formFieldCollection[index].FormField.borderColor = this.getRgbCode(selectedItem.borderColor);\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].borderColor = selectedItem.borderColor;\n if (isBorderColorChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, isBorderColorChanged, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateBackgroundColorPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isBackgroundColorChanged = false;\n var oldValue, newValue;\n if (selectedItem.backgroundColor !== this.backgroundColorValue) {\n isBackgroundColorChanged = true;\n oldValue = selectedItem.backgroundColor;\n newValue = this.backgroundColorValue ? this.backgroundColorValue : selectedItem.backgroundColor;\n }\n if (isUndoRedo) {\n if (selectedItem.formFieldAnnotationType == \"RadioButton\")\n element.parentElement.style.background = selectedItem.backgroundColor;\n else\n element.style.background = selectedItem.backgroundColor;\n }\n else {\n if (selectedItem.formFieldAnnotationType == \"RadioButton\")\n element.parentElement.style.background = this.backgroundColorValue ? this.backgroundColorValue : selectedItem.backgroundColor;\n else\n element.style.background = this.backgroundColorValue ? this.backgroundColorValue : selectedItem.backgroundColor;\n selectedItem.backgroundColor = this.backgroundColorValue ? this.backgroundColorValue : selectedItem.backgroundColor;\n }\n if (index > -1) {\n formFieldsData[index].FormField.backgroundColor = this.getRgbCode(selectedItem.backgroundColor);\n this.pdfViewerBase.formFieldCollection[index].FormField.backgroundColor = this.getRgbCode(selectedItem.backgroundColor);\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].backgroundColor = selectedItem.backgroundColor;\n if (isBackgroundColorChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, isBackgroundColorChanged, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateColorPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isColorChanged = false;\n var oldValue, newValue;\n if (selectedItem.color !== this.fontColorValue) {\n isColorChanged = true;\n oldValue = selectedItem.color;\n newValue = this.fontColorValue ? this.fontColorValue : selectedItem.color;\n }\n if (isUndoRedo) {\n element.style.color = selectedItem.color;\n }\n else {\n element.style.color = this.fontColorValue ? this.fontColorValue : selectedItem.color;\n selectedItem.color = this.fontColorValue ? this.fontColorValue : selectedItem.color;\n }\n if (index > -1) {\n formFieldsData[index].FormField.color = this.getRgbCode(selectedItem.color);\n this.pdfViewerBase.formFieldCollection[index].FormField.color = this.getRgbCode(selectedItem.color);\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].color = selectedItem.color;\n if (isColorChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, isColorChanged, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateAlignmentPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isAlignmentChanged = false;\n var oldValue, newValue;\n if (selectedItem.alignment !== this.formFieldAlign) {\n isAlignmentChanged = true;\n oldValue = selectedItem.alignment;\n newValue = this.formFieldAlign ? this.formFieldAlign : selectedItem.alignment;\n }\n if (isUndoRedo) {\n element.style.textAlign = selectedItem.alignment;\n if ((selectedItem.formFieldAnnotationType == \"ListBox\" || selectedItem.formFieldAnnotationType == \"DropdownList\") && element.children.length > 0) {\n element.style.textAlignLast = selectedItem.alignment;\n for (var i = 0; i < element.children.length; i++) {\n var dropDownChild = element.children[i];\n dropDownChild.style.textAlignLast = selectedItem.alignment;\n dropDownChild.style.textAlign = selectedItem.alignment;\n }\n }\n }\n else {\n element.style.textAlign = this.formFieldAlign ? this.formFieldAlign : selectedItem.alignment;\n selectedItem.alignment = this.formFieldAlign ? this.formFieldAlign : selectedItem.alignment;\n if ((selectedItem.formFieldAnnotationType == \"ListBox\" || selectedItem.formFieldAnnotationType == \"DropdownList\") && element.children.length > 0) {\n element.style.textAlignLast = this.formFieldAlign ? this.formFieldAlign : selectedItem.alignment;\n for (var i = 0; i < element.children.length; i++) {\n var dropDownChild = element.children[i];\n dropDownChild.style.textAlignLast = this.formFieldAlign ? this.formFieldAlign : selectedItem.alignment;\n dropDownChild.style.textAlign = this.formFieldAlign ? this.formFieldAlign : selectedItem.alignment;\n }\n }\n }\n if (index > -1) {\n formFieldsData[index].FormField.alignment = selectedItem.alignment;\n this.pdfViewerBase.formFieldCollection[index].FormField.alignment = selectedItem.alignment;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].alignment = selectedItem.alignment;\n if (isAlignmentChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, isAlignmentChanged, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateFontSizePropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isFontSizeChanged = false;\n var oldValue, newValue;\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n var fontSize = this.formFieldFontSize ? parseInt(this.formFieldFontSize.value.toString()) : null;\n var selectedFontSize = parseInt(selectedItem.fontSize);\n if (selectedFontSize !== fontSize) {\n isFontSizeChanged = true;\n oldValue = selectedItem.fontSize;\n newValue = fontSize;\n }\n if (isUndoRedo) {\n element.style.fontSize = (selectedItem.fontSize * zoomValue) + 'px'.toString();\n }\n else {\n selectedItem.fontSize = fontSize;\n element.style.fontSize = parseInt(this.formFieldFontSize.value.toString()) * zoomValue + 'px';\n }\n if (index > -1) {\n formFieldsData[index].FormField.fontSize = selectedItem.fontSize;\n this.pdfViewerBase.formFieldCollection[index].FormField.fontSize = selectedItem.fontSize;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].fontSize = selectedItem.fontSize;\n if (isFontSizeChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, isFontSizeChanged, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateFontFamilyPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isFontFamilyChanged = false;\n var oldValue, newValue;\n var fontFamily = this.formFieldFontFamily ? this.formFieldFontFamily.value.toString() : \"\";\n if (selectedItem.fontFamily !== fontFamily) {\n isFontFamilyChanged = true;\n oldValue = selectedItem.fontFamily;\n newValue = fontFamily;\n }\n if (isUndoRedo) {\n element.style.fontFamily = selectedItem.fontFamily;\n }\n else {\n selectedItem.fontFamily = fontFamily;\n element.style.fontFamily = fontFamily;\n }\n if (index > -1) {\n formFieldsData[index].FormField.fontFamily = selectedItem.fontFamily;\n this.pdfViewerBase.formFieldCollection[index].FormField.fontFamily = selectedItem.fontFamily;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].fontFamily = selectedItem.fontFamily;\n if (isFontFamilyChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, isFontFamilyChanged, false, false, false, false, false, false, false, false, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateVisibilityPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isVisibilityChanged = false;\n var oldValue, newValue;\n if (this.formFieldVisibility && (selectedItem.visibility !== this.formFieldVisibility.value)) {\n isVisibilityChanged = true;\n oldValue = selectedItem.visibility;\n newValue = this.formFieldVisibility.value;\n }\n if (!isUndoRedo) {\n selectedItem.visibility = this.formFieldVisibility.value;\n }\n element.style.visibility = selectedItem.visibility;\n if (selectedItem.formFieldAnnotationType === \"RadioButton\") {\n element.parentElement.style.visibility = selectedItem.visibility;\n }\n if (selectedItem.formFieldAnnotationType === \"SignatureField\" || selectedItem.formFieldAnnotationType === \"InitialField\") {\n var signElement = document.getElementById(selectedItem.id + \"_content_html_element\").firstElementChild.children[1];\n signElement.style.visibility = selectedItem.visibility;\n signElement.parentElement.style.visibility = selectedItem.visibility;\n var annotation = this.pdfViewer.nameTable[selectedItem.id.split('_')[0] + \"_content\"];\n if (selectedItem.visibility === \"hidden\") {\n if (annotation) {\n this.hideSignatureValue(selectedItem, annotation, index, formFieldsData);\n }\n }\n else {\n if (annotation) {\n this.showSignatureValue(selectedItem, oldValue, annotation, index, formFieldsData);\n }\n }\n }\n if (index > -1) {\n formFieldsData[index].FormField.visibility = selectedItem.visibility;\n this.pdfViewerBase.formFieldCollection[index].FormField.visibility = selectedItem.visibility;\n }\n // selectedItem.visibility = this.formFieldVisibility.value;\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].visibility = selectedItem.visibility;\n if (isVisibilityChanged) {\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, false, false, isVisibilityChanged, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.hideSignatureValue = function (selectedItem, annotation, index, formFieldsData) {\n selectedItem.wrapper.children.splice(selectedItem.wrapper.children.indexOf(annotation.wrapper.children[0]), 1);\n selectedItem.value = '';\n selectedItem.signatureType = '';\n formFieldsData[index].FormField.value = '';\n formFieldsData[index].FormField.signatureType = '';\n this.pdfViewerBase.formFieldCollection[index].FormField.value = '';\n this.pdfViewerBase.formFieldCollection[index].FormField.signatureType = '';\n this.pdfViewer.remove(annotation);\n this.pdfViewer.renderDrawing();\n };\n FormDesigner.prototype.showSignatureValue = function (selectedItem, oldValue, annotation, index, formFieldsData) {\n if (annotation.shapeAnnotationType === \"SignatureText\") {\n selectedItem.value = annotation.data;\n selectedItem.signatureType = \"Text\";\n formFieldsData[index].FormField.signatureType = \"Text\";\n formFieldsData[index].FormField.value = annotation.data;\n this.pdfViewerBase.formFieldCollection[index].FormField.value = annotation.data;\n this.pdfViewerBase.formFieldCollection[index].FormField.signatureType = \"Text\";\n }\n else if (annotation.shapeAnnotationType === \"SignatureImage\") {\n selectedItem.value = annotation.data;\n selectedItem.signatureType = \"Image\";\n formFieldsData[index].FormField.signatureType = \"Image\";\n formFieldsData[index].FormField.value = annotation.data;\n this.pdfViewerBase.formFieldCollection[index].FormField.value = annotation.data;\n this.pdfViewerBase.formFieldCollection[index].FormField.signatureType = \"Image\";\n }\n else {\n formFieldsData[index].FormField.signatureType = \"Path\";\n selectedItem.signatureType = \"Path\";\n this.pdfViewerBase.formFieldCollection[index].FormField.signatureType = \"Path\";\n var collectionData = processPathData(annotation.data);\n var csData = splitArrayCollection(collectionData);\n selectedItem.value = JSON.stringify(csData);\n formFieldsData[index].FormField.value = JSON.stringify(csData);\n this.pdfViewerBase.formFieldCollection[index].FormField.value = JSON.stringify(csData);\n }\n selectedItem.signatureBound = annotation.signatureBound;\n if (oldValue === 'hidden') {\n this.pdfViewer.add(annotation);\n selectedItem.wrapper.children.push(annotation.wrapper);\n var canvass = document.getElementById(this.pdfViewer.element.id + '_annotationCanvas_' + selectedItem.pageIndex);\n this.pdfViewer.renderDrawing(canvass, selectedItem.pageIndex);\n }\n \n this.pdfViewer.renderDrawing();\n };\n FormDesigner.prototype.updateTooltipPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isToolTipChanged = false;\n var oldValue, newValue;\n if (this.formFieldTooltip && (selectedItem.tooltip !== this.formFieldTooltip.value)) {\n isToolTipChanged = true;\n oldValue = selectedItem.tooltip;\n newValue = this.formFieldTooltip.value;\n }\n if (isUndoRedo) {\n this.formFieldTooltip = new TextBox();\n this.formFieldTooltip.value = selectedItem.tooltip;\n }\n else {\n selectedItem.tooltip = this.formFieldTooltip ? this.formFieldTooltip.value : selectedItem.tooltip;\n }\n if (index > -1) {\n formFieldsData[index].FormField.tooltip = selectedItem.tooltip;\n this.pdfViewerBase.formFieldCollection[index].FormField.tooltip = selectedItem.tooltip;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].tooltip = this.formFieldTooltip.value;\n if (!isNullOrUndefined(this.formFieldTooltip.value) && this.formFieldTooltip.value !== '') {\n this.setToolTip(this.formFieldTooltip.value, selectedItem.formFieldAnnotationType == \"RadioButton\" || selectedItem.formFieldAnnotationType == \"DropdownList\" ? element.parentElement : element);\n }\n if (isToolTipChanged) {\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, false, false, false, false, false, false, isToolTipChanged, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateNamePropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var designerName = document.getElementById(selectedItem.id + \"_designer_name\");\n var zoomValue = this.pdfViewerBase.getZoomFactor();\n designerName.style.fontSize = selectedItem.fontSize ? (selectedItem.fontSize * zoomValue) + 'px' : (10 * zoomValue) + 'px';\n if (isUndoRedo) {\n designerName.innerHTML = selectedItem.name;\n }\n else {\n selectedItem.name = this.formFieldName ? this.formFieldName.value : selectedItem.name;\n designerName.innerHTML = selectedItem.name;\n }\n if (index > -1) {\n if (formFieldsData[index].FormField.name !== selectedItem.name) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, null, null, true, formFieldsData[index].FormField.name);\n }\n formFieldsData[index].FormField.name = selectedItem.name;\n this.pdfViewerBase.formFieldCollection[index].FormField.name = selectedItem.name;\n }\n element.name = selectedItem.name;\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].name = selectedItem.name;\n if (selectedItem.formFieldAnnotationType == \"DropdownList\" || selectedItem.formFieldAnnotationType == \"ListBox\") {\n for (var i = 0; i < this.pdfViewer.formFieldCollection.length; i++) {\n var formField = this.pdfViewer.formFieldCollection[i];\n if ((formField.formFieldAnnotationType === \"DropdownList\" || formField.formFieldAnnotationType === \"ListBox\") && formField.name === selectedItem.name && formField.id !== selectedItem.id) {\n selectedItem.options = formField.options;\n this.updateDropDownListDataSource(selectedItem, element);\n break;\n }\n }\n }\n };\n FormDesigner.prototype.updateIsReadOnlyPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isReadOnlyChanged = false;\n var oldValue, newValue;\n if (this.formFieldReadOnly && (selectedItem.isReadonly !== this.formFieldReadOnly.checked)) {\n isReadOnlyChanged = true;\n oldValue = selectedItem.isReadonly;\n newValue = this.formFieldReadOnly.checked;\n }\n if (isUndoRedo) {\n this.formFieldReadOnly = new CheckBox();\n this.formFieldReadOnly.checked = selectedItem.isReadonly;\n }\n else {\n selectedItem.isReadonly = this.formFieldReadOnly.checked;\n }\n if (index > -1) {\n formFieldsData[index].FormField.isReadonly = selectedItem.isReadonly;\n this.pdfViewerBase.formFieldCollection[index].FormField.isReadonly = selectedItem.isReadonly;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].isReadonly = selectedItem.isReadonly;\n this.setReadOnlyToElement(selectedItem, element, selectedItem.isReadonly);\n this.setReadOnlyToFormField(selectedItem, selectedItem.isReadonly);\n if (isReadOnlyChanged) {\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, false, isReadOnlyChanged, false, false, false, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateIsRequiredPropertyChange = function (selectedItem, element, isUndoRedo, index, formFieldsData) {\n var isRequiredChanged = false;\n var oldValue, newValue;\n if (this.formFieldRequired && (selectedItem.isRequired !== this.formFieldRequired.checked)) {\n isRequiredChanged = true;\n oldValue = selectedItem.isRequired;\n newValue = this.formFieldRequired.checked;\n }\n if (isUndoRedo) {\n this.formFieldRequired = new CheckBox();\n this.formFieldRequired.checked = selectedItem.isRequired;\n }\n else {\n selectedItem.isRequired = this.formFieldRequired.checked;\n }\n if (index > -1) {\n formFieldsData[index].FormField.isRequired = selectedItem.isRequired;\n this.pdfViewerBase.formFieldCollection[index].FormField.isRequired = selectedItem.isRequired;\n if (this.pdfViewerBase.formFieldCollection[index].FormField.radiobuttonItem) {\n for (var i = 0; i < this.pdfViewerBase.formFieldCollection[index].FormField.radiobuttonItem.length; i++) {\n this.pdfViewerBase.formFieldCollection[index].FormField.radiobuttonItem[i].isRequired = selectedItem.isRequired;\n this.pdfViewer.nameTable[this.pdfViewerBase.formFieldCollection[index].FormField.radiobuttonItem[i].id.split('_')[0]].isRequired = selectedItem.isRequired;\n }\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n }\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].isRequired = selectedItem.isRequired;\n this.setRequiredToElement(selectedItem, element, selectedItem.isRequired);\n this.setRequiredToFormField(selectedItem, selectedItem.isRequired);\n if (isRequiredChanged) {\n this.pdfViewerBase.setItemInSessionStorage(this.pdfViewerBase.formFieldCollection, '_formDesigner');\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, false, false, false, false, isRequiredChanged, false, false, oldValue, newValue);\n }\n };\n FormDesigner.prototype.updateIsPrintPropertyChange = function (selectedItem, isUndoRedo, index, formFieldsData) {\n var isPrintChanged = false;\n var oldValue, newValue;\n if (this.formFieldPrinting && (selectedItem.isPrint !== this.formFieldPrinting.checked)) {\n isPrintChanged = true;\n oldValue = selectedItem.isPrint;\n newValue = this.formFieldPrinting.checked;\n }\n if (isUndoRedo) {\n this.formFieldPrinting = new CheckBox();\n this.formFieldPrinting.checked = selectedItem.isPrint;\n }\n else {\n selectedItem.isPrint = this.formFieldPrinting.checked;\n }\n if (index > -1) {\n formFieldsData[index].FormField.isPrint = selectedItem.isPrint;\n this.pdfViewerBase.formFieldCollection[index].FormField.isPrint = selectedItem.isPrint;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].isPrint = selectedItem.isPrint;\n if (isPrintChanged) {\n this.updateFormFieldPropertiesChanges(\"formFieldPropertiesChange\", selectedItem, false, false, false, false, false, false, false, false, false, false, false, false, false, isPrintChanged, false, oldValue, newValue);\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.getFormFiledIndex = function (id) {\n if (this.pdfViewerBase.formFieldCollection == null || this.pdfViewerBase.formFieldCollection.length == 0)\n return -1;\n var index = this.pdfViewerBase.formFieldCollection.findIndex(function (el) { return el.Key.split('_')[0] === id; });\n if (index > -1) {\n return index;\n }\n else {\n for (var i = 0; i < this.pdfViewerBase.formFieldCollection.length; i++) {\n if (this.pdfViewerBase.formFieldCollection[i].FormField.formFieldAnnotationType === 'RadioButton' && this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem) {\n for (var k = 0; k < this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem.length; k++) {\n if (this.pdfViewerBase.formFieldCollection[i].FormField.radiobuttonItem[k].id.split(\"_\")[0] === id) {\n return i;\n }\n }\n }\n }\n }\n return -1;\n };\n FormDesigner.prototype.updateFontStyle = function (inputElement, selectedItem, isUndoRedo, index, formFieldsData) {\n var isFontStyleChanged = false;\n var oldValue = '';\n var newValue = '';\n if (this.formFieldBold) {\n if (selectedItem.fontStyle !== 'Bold') {\n isFontStyleChanged = true;\n oldValue += selectedItem.font.isBold ? 'Bold' + \", \" : '';\n }\n if (isUndoRedo) {\n if (selectedItem.font.isBold) {\n this.setFontStyleValues(selectedItem, 'Bold', this.formFieldBold, inputElement, true, 'bold', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', this.formFieldBold, inputElement, false, '', index, formFieldsData);\n }\n }\n else if (this.formFieldBold === 'bold') {\n this.setFontStyleValues(selectedItem, 'Bold', this.formFieldBold, inputElement, true, 'bold', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', 'bold', inputElement, false, '', index, formFieldsData);\n }\n }\n else if (selectedItem.font.isBold) {\n this.setFontStyleValues(selectedItem, 'None', 'bold', inputElement, false, '', index, formFieldsData);\n }\n newValue += selectedItem.font.isBold ? 'Bold' + \", \" : '';\n if (this.formFieldItalic) {\n if (selectedItem.fontStyle !== 'Italic') {\n isFontStyleChanged = true;\n oldValue += selectedItem.font.isItalic ? 'Italic' + \", \" : '';\n }\n if (isUndoRedo) {\n if (selectedItem.font.isItalic) {\n this.setFontStyleValues(selectedItem, 'Italic', this.formFieldItalic, inputElement, true, 'italic', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', this.formFieldItalic, inputElement, false, '', index, formFieldsData);\n }\n }\n else if (this.formFieldItalic === 'italic') {\n this.setFontStyleValues(selectedItem, 'Italic', this.formFieldItalic, inputElement, true, 'italic', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', 'italic', inputElement, false, '', index, formFieldsData);\n }\n }\n else if (selectedItem.font.isItalic) {\n this.setFontStyleValues(selectedItem, 'None', 'italic', inputElement, false, '', index, formFieldsData);\n }\n newValue += selectedItem.font.isItalic ? 'Italic' + \", \" : '';\n if (this.formFieldUnderline) {\n if (selectedItem.fontStyle !== 'Underline') {\n isFontStyleChanged = true;\n oldValue += selectedItem.font.isUnderline ? 'Underline' + \", \" : '';\n }\n if (isUndoRedo) {\n if (selectedItem.font.isUnderline) {\n this.setFontStyleValues(selectedItem, 'Underline', this.formFieldUnderline, inputElement, true, 'underline', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', this.formFieldUnderline, inputElement, false, '', index, formFieldsData);\n }\n }\n else if (this.formFieldUnderline === 'underline') {\n this.setFontStyleValues(selectedItem, 'Underline', this.formFieldUnderline, inputElement, true, 'underline', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', 'underline', inputElement, false, '', index, formFieldsData);\n }\n }\n else if (selectedItem.font.isUnderline) {\n this.setFontStyleValues(selectedItem, 'None', 'underline', inputElement, false, '', index, formFieldsData);\n }\n newValue += selectedItem.font.isUnderline ? 'Underline' + \", \" : '';\n if (this.formFieldStrikeOut) {\n if (selectedItem.fontStyle !== 'Strikethrough') {\n isFontStyleChanged = true;\n oldValue += selectedItem.font.isStrikeout ? 'Strikethrough' + \", \" : '';\n }\n if (isUndoRedo) {\n if (selectedItem.font.isStrikeout) {\n this.setFontStyleValues(selectedItem, 'Strikethrough', this.formFieldStrikeOut, inputElement, true, 'line-through', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', this.formFieldStrikeOut, inputElement, false, '', index, formFieldsData);\n }\n }\n else if (this.formFieldStrikeOut === 'line-through') {\n this.setFontStyleValues(selectedItem, 'Strikethrough', this.formFieldStrikeOut, inputElement, true, 'line-through', index, formFieldsData);\n }\n else {\n this.setFontStyleValues(selectedItem, 'None', 'line-through', inputElement, false, '', index, formFieldsData);\n }\n }\n else if (selectedItem.font.isStrikeout) {\n this.setFontStyleValues(selectedItem, 'None', 'line-through', inputElement, false, '', index, formFieldsData);\n }\n newValue += selectedItem.font.isStrikeout ? 'Strikethrough' + \", \" : '';\n return [isFontStyleChanged, oldValue, newValue];\n };\n FormDesigner.prototype.setFontStyleValues = function (selectedItem, selectedItemFontStyle, fontStyleType, inputElement, isFontStyleEnabled, fontStyleValue, index, formFieldsData) {\n if (fontStyleType === 'bold') {\n selectedItem.fontStyle = selectedItemFontStyle;\n selectedItem.font.isBold = isFontStyleEnabled;\n inputElement.style.fontWeight = fontStyleValue;\n this.setDropdownFontStyleValue(inputElement, fontStyleType, fontStyleValue);\n if (index > -1) {\n formFieldsData[index].FormField.font.isBold = isFontStyleEnabled;\n this.pdfViewerBase.formFieldCollection[index].FormField.font.isBold = isFontStyleEnabled;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].font.isBold = isFontStyleEnabled;\n }\n else if (fontStyleType === 'italic') {\n inputElement.style.fontStyle = fontStyleValue;\n this.setDropdownFontStyleValue(inputElement, fontStyleType, fontStyleValue);\n selectedItem.fontStyle = selectedItemFontStyle;\n selectedItem.font.isItalic = isFontStyleEnabled;\n if (index > -1) {\n formFieldsData[index].FormField.font.isItalic = isFontStyleEnabled;\n this.pdfViewerBase.formFieldCollection[index].FormField.font.isItalic = isFontStyleEnabled;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].font.isItalic = isFontStyleEnabled;\n }\n else if (fontStyleType === 'underline') {\n this.setDropdownFontStyleValue(inputElement, fontStyleType, fontStyleValue);\n inputElement.style.textDecoration = fontStyleValue;\n selectedItem.fontStyle = selectedItemFontStyle;\n selectedItem.font.isUnderline = isFontStyleEnabled;\n if (index > -1) {\n formFieldsData[index].FormField.font.isUnderline = isFontStyleEnabled;\n this.pdfViewerBase.formFieldCollection[index].FormField.font.isUnderline = isFontStyleEnabled;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].font.isUnderline = isFontStyleEnabled;\n }\n else if (fontStyleType === 'line-through') {\n this.setDropdownFontStyleValue(inputElement, fontStyleType, fontStyleValue);\n inputElement.style.textDecoration = fontStyleValue;\n selectedItem.fontStyle = selectedItemFontStyle;\n selectedItem.font.isStrikeout = isFontStyleEnabled;\n if (index > -1) {\n formFieldsData[index].FormField.font.isStrikeout = isFontStyleEnabled;\n this.pdfViewerBase.formFieldCollection[index].FormField.font.isStrikeout = isFontStyleEnabled;\n }\n this.pdfViewer.nameTable[selectedItem.id.split('_')[0]].font.isStrikeout = isFontStyleEnabled;\n }\n };\n FormDesigner.prototype.setDropdownFontStyleValue = function (dropdownElement, fontStyleType, value) {\n if (dropdownElement.length > 0) {\n for (var i = 0; i < dropdownElement.length; i++) {\n if (fontStyleType === 'bold') {\n dropdownElement[i].style.fontWeight = value;\n }\n else if (fontStyleType === 'italic') {\n dropdownElement[i].style.fontStyle = value;\n }\n else if (fontStyleType === 'underline') {\n dropdownElement[i].style.textDecoration = value;\n }\n else if (fontStyleType === 'line-through') {\n dropdownElement[i].style.textDecoration = value;\n }\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateFormFieldPropertiesChanges = function (name, selectedItem, isValueChanged, isFontFamilyChanged, isFontSizeChanged, isFontStyleChanged, isColorChanged, isBackgroundColorChanged, isBorderColorChanged, isBorderWidthChanged, isAlignmentChanged, isReadOnlyChanged, isVisibilityChanged, isMaxLengthChanged, isRequiredChanged, isPrintChanged, isToolTipChanged, oldValue, newValue, isNamechanged, previousName) {\n var field = {\n name: selectedItem.name, id: selectedItem.id, value: selectedItem.value, fontFamily: selectedItem.fontFamily, fontSize: selectedItem.fontSize, fontStyle: selectedItem.fontStyle,\n color: selectedItem.color, backgroundColor: selectedItem.backgroundColor, alignment: selectedItem.alignment, isReadonly: selectedItem.isReadonly, visibility: selectedItem.visibility,\n maxLength: selectedItem.maxLength, isRequired: selectedItem.isRequired, isPrint: selectedItem.isPrint, rotation: selectedItem.rotateAngle, tooltip: selectedItem.tooltip, options: selectedItem.options,\n isChecked: selectedItem.isChecked, isSelected: selectedItem.isSelected, previousName: previousName, currentName: selectedItem.name\n };\n this.pdfViewer.fireFormFieldPropertiesChangeEvent(\"formFieldPropertiesChange\", field, selectedItem.pageIndex, isValueChanged, isFontFamilyChanged, isFontSizeChanged, isFontStyleChanged, isColorChanged, isBackgroundColorChanged, isBorderColorChanged, isBorderWidthChanged, isAlignmentChanged, isReadOnlyChanged, isVisibilityChanged, isMaxLengthChanged, isRequiredChanged, isPrintChanged, isToolTipChanged, oldValue, newValue, isNamechanged);\n };\n FormDesigner.prototype.onCancelClicked = function (args) {\n this.propertiesDialog.hide();\n };\n FormDesigner.prototype.createAppearanceTab = function () {\n var elementID = this.pdfViewer.element.id;\n // eslint-disable-next-line max-len\n var appearanceDiv = createElement('div', { id: elementID + '_properties_appearance' });\n if (this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== 'DropdownList' && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== 'ListBox') {\n appearanceDiv.style.height = '260px';\n }\n else {\n appearanceDiv.style.height = '336px';\n }\n var propertySpliter = createElement('div');\n propertySpliter.className = 'e-pv-properties-header-spliter';\n appearanceDiv.appendChild(propertySpliter);\n var tabContainer = createElement('div', { className: 'e-pv-properties-tab-style-prop' });\n appearanceDiv.appendChild(tabContainer);\n //
    \n if (this.pdfViewer.selectedItems && (this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType === 'ListBox' || this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType === 'DropdownList')) {\n // eslint-disable-next-line max-len\n this.tabControl = new Tab({\n items: [\n {\n header: { 'text': '
    ' + this.pdfViewer.localeObj.getConstant('General') + '
    ' }, content: this.createGeneralProperties()\n },\n {\n header: { 'text': '
    ' + this.pdfViewer.localeObj.getConstant('Appearance') + '
    ' }, content: this.createAppearanceProperties()\n },\n {\n header: { 'text': '
    ' + this.pdfViewer.localeObj.getConstant('Options') + '
    ' }, content: this.createOptionProperties()\n },\n ],\n }, tabContainer);\n }\n else if (this.pdfViewer.selectedItems && (this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType === 'SignatureField' || this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType === 'InitialField')) {\n // eslint-disable-next-line max-len\n this.tabControl = new Tab({\n items: [\n {\n header: { 'text': '
    ' + this.pdfViewer.localeObj.getConstant('General') + '
    ' }, content: this.createGeneralProperties()\n }\n ],\n }, tabContainer);\n }\n else {\n // eslint-disable-next-line max-len\n this.tabControl = new Tab({\n items: [\n {\n header: { 'text': '
    ' + this.pdfViewer.localeObj.getConstant('General') + '
    ' }, content: this.createGeneralProperties()\n },\n {\n header: { 'text': '
    ' + this.pdfViewer.localeObj.getConstant('Appearance') + '
    ' }, content: this.createAppearanceProperties()\n }\n ],\n }, tabContainer);\n }\n tabContainer.children[1].style.height = '100%';\n return appearanceDiv;\n };\n FormDesigner.prototype.createGeneralProperties = function () {\n var selectedItem = this.pdfViewer.selectedItems.formFields ? this.pdfViewer.selectedItems.formFields[0] : null;\n var visibilityItems = ['visible', 'hidden'];\n // eslint-disable-next-line max-len\n var elementID = this.pdfViewer.element.id;\n var generalPropertiesDiv = createElement('div', { id: elementID + '_general_prop_appearance' });\n var textStyleContainer = createElement('div', { className: 'e-pv-properties-text-edit-prop' });\n generalPropertiesDiv.appendChild(textStyleContainer);\n var formFieldNameMainDiv = createElement('div', { className: 'e-pv-properties-form-field-name-main-div' });\n // eslint-disable-next-line max-len\n var formFieldNameDiv = createElement('div', { className: 'e-pv-properties-name-edit-prop' });\n var formFieldNameContainer = createElement('input', { className: 'e-pv-properties-name-edit-input e-input' });\n formFieldNameDiv.appendChild(formFieldNameContainer);\n formFieldNameMainDiv.appendChild(formFieldNameDiv);\n // eslint-disable-next-line max-len\n this.formFieldName = new TextBox({ type: \"text\", floatLabelType: 'Always', placeholder: this.pdfViewer.localeObj.getConstant('Name'), value: selectedItem.name, cssClass: 'e-pv-properties-formfield-name' }, formFieldNameContainer);\n textStyleContainer.appendChild(formFieldNameMainDiv);\n var formFieldTooltipMainDiv = createElement('div', { className: 'e-pv-properties-form-field-tooltip-main-div' });\n var formFieldTooltipDiv = createElement('div', { className: 'e-pv-properties-tooltip-edit-prop' });\n var formFieldTooltipContainer = createElement('input', { className: 'e-pv-properties-tooltip-prop-input e-input' });\n formFieldTooltipDiv.appendChild(formFieldTooltipContainer);\n formFieldTooltipMainDiv.appendChild(formFieldTooltipDiv);\n // eslint-disable-next-line max-len\n this.formFieldTooltip = new TextBox({ type: \"text\", floatLabelType: 'Always', placeholder: this.pdfViewer.localeObj.getConstant('Tooltip'), value: selectedItem.tooltip, cssClass: 'e-pv-properties-formfield-tooltip' }, formFieldTooltipContainer);\n textStyleContainer.appendChild(formFieldTooltipMainDiv);\n var visibilityContainer = createElement('div', { className: 'e-pv-properties-visibility-style-prop' });\n generalPropertiesDiv.appendChild(visibilityContainer);\n var formFieldValueMainDiv = createElement('div', { className: 'e-pv-properties-form-field-value-main-div' });\n var formFieldValueDiv = createElement('div', { className: 'e-pv-properties-value-edit-prop' });\n var formFieldValueContainer = createElement('input', { className: 'e-pv-properties-value-input e-input' });\n formFieldValueDiv.appendChild(formFieldValueContainer);\n formFieldValueMainDiv.appendChild(formFieldValueDiv);\n if (this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType == 'PasswordField') {\n // eslint-disable-next-line max-len\n this.formFieldValue = new TextBox({ type: \"password\", floatLabelType: 'Always', placeholder: this.pdfViewer.localeObj.getConstant('Value'), value: selectedItem.value, cssClass: 'e-pv-properties-formfield-value' }, formFieldValueContainer);\n }\n else {\n // eslint-disable-next-line max-len\n this.formFieldValue = new TextBox({ type: \"text\", floatLabelType: 'Always', placeholder: this.pdfViewer.localeObj.getConstant('Value'), value: selectedItem.value, cssClass: 'e-pv-properties-formfield-value' }, formFieldValueContainer);\n }\n if (this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== 'Textbox' && this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType !== 'PasswordField') {\n this.formFieldValue.enabled = false;\n this.formFieldValue.value = '';\n }\n visibilityContainer.appendChild(formFieldValueMainDiv);\n var formFieldVisibilityMainDiv = createElement('div', { className: 'e-pv-properties-form-field-visibility-main-div' });\n var formFieldVisibilityDiv = createElement('div', { className: 'e-pv-properties-visibility-edit-prop' });\n var formFieldVisibilityContainer = createElement('input', { className: 'e-pv-properties-formfield-visibility' });\n formFieldVisibilityDiv.appendChild(formFieldVisibilityContainer);\n formFieldVisibilityMainDiv.appendChild(formFieldVisibilityDiv);\n var selectedIndex = selectedItem.visibility === 'visible' ? 0 : 1;\n this.formFieldVisibility = new DropDownList({ dataSource: visibilityItems, floatLabelType: 'Always', index: selectedIndex, value: selectedItem.visibility, placeholder: this.pdfViewer.localeObj.getConstant('Form Field Visibility'), cssClass: 'e-pv-properties-formfield-visibility' }, formFieldVisibilityContainer);\n visibilityContainer.appendChild(formFieldVisibilityMainDiv);\n var checkboxMainDiv = createElement('div', { className: 'e-pv-properties-checkbox-main-div-prop' });\n var readOnly = createElement('input', { className: 'e-pv-properties-checkbox-readonly-input e-input' });\n checkboxMainDiv.appendChild(readOnly);\n this.formFieldReadOnly = new CheckBox({ label: this.pdfViewer.localeObj.getConstant('Read Only'), checked: selectedItem.isReadonly, cssClass: 'e-pv-properties-form-field-checkbox' }, readOnly);\n if (this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType === 'Checkbox' || this.pdfViewer.selectedItems.formFields[0].formFieldAnnotationType === 'RadioButton') {\n var checkedState = createElement('input', { className: 'e-pv-properties-checkbox-checked-input e-input' });\n checkboxMainDiv.appendChild(checkedState);\n this.formFieldChecked = new CheckBox({ label: this.pdfViewer.localeObj.getConstant('Checked'), cssClass: 'e-pv-properties-form-field-checkbox', checked: selectedItem.isChecked || selectedItem.isSelected, change: this.checkBoxChange.bind(this) }, checkedState);\n }\n var required = createElement('input', { className: 'e-pv-properties-checkbox-required-input e-input' });\n checkboxMainDiv.appendChild(required);\n this.formFieldRequired = new CheckBox({ label: this.pdfViewer.localeObj.getConstant('Required'), checked: selectedItem.isRequired, cssClass: 'e-pv-properties-form-field-checkbox' }, required);\n var showPrinting = createElement('input', { className: 'e-pv-properties-checkbox-printing-input e-input' });\n checkboxMainDiv.appendChild(showPrinting);\n this.formFieldPrinting = new CheckBox({ label: this.pdfViewer.localeObj.getConstant('Show Printing'), checked: selectedItem.isPrint, cssClass: 'e-pv-properties-form-field-checkbox' }, showPrinting);\n if (selectedItem.formFieldAnnotationType === 'Textbox') {\n var multilineTextbox = createElement('input', { className: 'e-pv-properties-checkbox-multiline-input e-input' });\n checkboxMainDiv.appendChild(multilineTextbox);\n this.formFieldMultiline = new CheckBox({ label: this.pdfViewer.localeObj.getConstant('Multiline'), checked: selectedItem.isMultiline, cssClass: 'e-pv-properties-form-field-checkbox', change: this.multilineCheckboxChange.bind(this) }, multilineTextbox);\n }\n generalPropertiesDiv.appendChild(checkboxMainDiv);\n return generalPropertiesDiv;\n };\n FormDesigner.prototype.checkBoxChange = function (args) {\n this.checkboxCheckedState = args.checked;\n };\n FormDesigner.prototype.multilineCheckboxChange = function (args) {\n this.multilineCheckboxCheckedState = true;\n };\n FormDesigner.prototype.setToolTip = function (tooltipContent, targetElement) {\n //initialize tooltip component\n var tooltip = new Tooltip({\n content: tooltipContent\n });\n // render initialized tooltip\n tooltip.appendTo(targetElement);\n tooltip.beforeOpen = this.tooltipBeforeOpen.bind(this);\n };\n FormDesigner.prototype.tooltipBeforeOpen = function (args) {\n var currentFormField = this.pdfViewer.nameTable[args.target.id.split('_')[0]];\n if (!isNullOrUndefined(currentFormField)) {\n args.element.children[0].innerHTML = currentFormField.tooltip;\n }\n };\n FormDesigner.prototype.createAppearanceProperties = function () {\n var selectedItem = this.pdfViewer.selectedItems.formFields ? this.pdfViewer.selectedItems.formFields[0] : null;\n var fontFamilyItems = ['Helvetica', 'Courier', 'Times New Roman', 'Symbol', 'ZapfDingbats'];\n var fontSizeItems = ['6px', '8px', '10px', '12px', '14px', '16px', '18px', '20px', '24px', '28px', '32px', '36px', '40px'];\n var elementID = this.pdfViewer.element.id;\n var appearancePropertiesDiv = createElement('div', { id: elementID + '_formatting_text_prop_appearance' });\n var formatTextStyleContainer = createElement('div', { className: 'e-pv-properties-format-text-style-prop' });\n appearancePropertiesDiv.appendChild(formatTextStyleContainer);\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('Formatting'), formatTextStyleContainer, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_formatting');\n var fontItemsContainer = createElement('div', { className: 'e-pv-properties-font-items-container' });\n var fontFamilyDropdownContainer = createElement('div', { className: 'e-pv-properties-font-family-container' });\n var formatdropdownContainer = createElement('input', { className: 'e-pv-properties-format-font-family-prop' });\n fontFamilyDropdownContainer.appendChild(formatdropdownContainer);\n fontItemsContainer.appendChild(fontFamilyDropdownContainer);\n this.formFieldFontFamily = new DropDownList({ dataSource: fontFamilyItems, value: this.getFontFamily(selectedItem.fontFamily) ? selectedItem.fontFamily : 'Helvetica', cssClass: 'e-pv-properties-formfield-fontfamily' }, formatdropdownContainer);\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Font family'), fontFamilyDropdownContainer);\n var fontSizeContainer = createElement('div', { className: 'e-pv-properties-font-size-container' });\n var fontSizeDropdownContainer = createElement('input', { className: 'e-pv-properties-format-font-family-prop' });\n fontSizeContainer.appendChild(fontSizeDropdownContainer);\n fontItemsContainer.appendChild(fontSizeContainer);\n this.formFieldFontSize = new DropDownList({ dataSource: fontSizeItems, value: selectedItem.fontSize + 'px', cssClass: 'e-pv-properties-formfield-fontsize' }, fontSizeDropdownContainer);\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Font size'), fontSizeContainer);\n var fontStyleContainer = createElement('div', { className: 'e-pv-properties-form-field-font-style' });\n fontStyleContainer.onclick = this.fontStyleClicked.bind(this);\n fontStyleContainer.appendChild(this.addClassFontItem('_formField_bold', 'e-pv-bold-icon', selectedItem.font.isBold));\n fontStyleContainer.appendChild(this.addClassFontItem('_formField_italic', 'e-pv-italic-icon', selectedItem.font.isItalic));\n fontStyleContainer.appendChild(this.addClassFontItem('_formField_underline_textinput', 'e-pv-underlinetext-icon', selectedItem.font.isUnderline));\n // eslint-disable-next-line max-len\n fontStyleContainer.appendChild(this.addClassFontItem('_formField_strikeout', 'e-pv-strikeout-icon', selectedItem.font.isStrikeout));\n fontItemsContainer.appendChild(fontStyleContainer);\n this.getFontStyle(selectedItem.font);\n appearancePropertiesDiv.appendChild(fontItemsContainer);\n var fontColorContainer = createElement('div', { className: 'e-pv-properties-font-color-container' });\n var fontAlignContainer = createElement('div', { className: 'e-pv-properties-form-field-font-align' });\n fontAlignContainer.onclick = this.fontAlignClicked.bind(this);\n var alignment = selectedItem.alignment.toLowerCase();\n fontAlignContainer.appendChild(this.addClassFontItem('_formField_left_align', 'e-pv-left-align-icon', alignment === 'left' ? true : false));\n fontAlignContainer.appendChild(this.addClassFontItem('_formField_center_align', 'e-pv-center-align-icon', alignment === 'center' ? true : false));\n fontAlignContainer.appendChild(this.addClassFontItem('_formField_right_align', 'e-pv-right-align-icon', alignment === 'right' ? true : false));\n this.getAlignment(alignment);\n fontColorContainer.appendChild(fontAlignContainer);\n this.fontColorElement = createElement('div', { className: 'e-pv-formfield-textcolor-icon', id: this.pdfViewer.element.id + 'formField_textColor' });\n this.fontColorElement.setAttribute('role', 'combobox');\n this.fontColorPalette = this.createColorPicker(this.fontColorElement.id, selectedItem.color);\n selectedItem.color !== 'black' ? this.fontColorValue = selectedItem.color : null;\n this.fontColorPalette.change = this.onFontColorChange.bind(this);\n this.fontColorDropDown = this.createDropDownButton(this.fontColorElement, 'e-pv-annotation-textcolor-icon', this.fontColorPalette.element.parentElement);\n fontColorContainer.appendChild(this.fontColorElement);\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Font color'), this.fontColorDropDown.element);\n this.updateColorInIcon(this.fontColorElement, this.pdfViewer.selectedItems.formFields[0].color);\n if (selectedItem.formFieldAnnotationType === 'Checkbox' || selectedItem.formFieldAnnotationType === 'RadioButton') {\n this.fontColorPalette.disabled = true;\n this.fontColorDropDown.disabled = true;\n this.fontColorElement.style.pointerEvents = 'none';\n this.fontColorElement.style.opacity = '0.5';\n fontAlignContainer.style.pointerEvents = 'none';\n fontAlignContainer.style.opacity = '0.5';\n this.formFieldFontSize.enabled = false;\n this.formFieldFontFamily.enabled = false;\n fontFamilyDropdownContainer.style.pointerEvents = 'none';\n fontSizeContainer.style.pointerEvents = 'none';\n fontStyleContainer.style.pointerEvents = 'none';\n fontStyleContainer.style.opacity = '0.5';\n }\n var maxLengthGroup = createElement('div', { className: 'e-pv-formfield-maxlength-group', id: this.pdfViewer.element.id + 'formField_maxlength_group' });\n var maxLengthContainer = createElement('div', { className: 'e-pv-formfield-maxlength-icon', id: this.pdfViewer.element.id + 'formField_maxlength' });\n maxLengthGroup.appendChild(maxLengthContainer);\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('Max Length'), maxLengthContainer, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_maxlength');\n var maxLengthDropdownContainer = createElement('div', { className: 'e-pv-formfield-maxlength', id: this.pdfViewer.element.id + 'formField_maxlength_container' });\n var maxLengthItemDropdown = createElement('input', { className: 'e-pv-formfield-maxlength-input e-input' });\n maxLengthItemDropdown.setAttribute('aria-label', 'Max Length');\n maxLengthDropdownContainer.appendChild(maxLengthItemDropdown);\n maxLengthGroup.appendChild(maxLengthDropdownContainer);\n // Render the Numeric Textbox\n this.maxLengthItem = new NumericTextBox({ format: 'n', value: selectedItem.maxLength !== 0 ? selectedItem.maxLength : 0, min: 0 }, maxLengthItemDropdown);\n fontColorContainer.appendChild(maxLengthGroup);\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Max Length'), this.maxLengthItem.element);\n if (selectedItem.formFieldAnnotationType !== 'Textbox' && selectedItem.formFieldAnnotationType !== 'PasswordField') {\n this.maxLengthItem.enabled = false;\n maxLengthContainer.style.pointerEvents = 'none';\n }\n appearancePropertiesDiv.appendChild(fontColorContainer);\n var colorContainer = createElement('div', { className: 'e-pv-properties-color-container-style-prop' });\n var backgroundColorContainer = createElement('div', { className: 'e-pv-properties-fill-color-style-prop' });\n appearancePropertiesDiv.appendChild(backgroundColorContainer);\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('Fill'), backgroundColorContainer, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_fontcolor');\n this.colorDropDownElement = createElement('div', { className: 'e-pv-formfield-fontcolor-icon', id: this.pdfViewer.element.id + 'formField_fontColor' });\n this.colorDropDownElement.setAttribute('role', 'combobox');\n this.colorPalette = this.createColorPicker(this.colorDropDownElement.id, selectedItem.backgroundColor);\n this.colorPalette.change = this.onColorPickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.colorDropDown = this.createDropDownButton(this.colorDropDownElement, 'e-pv-annotation-color-icon', this.colorPalette.element.parentElement);\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Fill Color'), this.colorDropDown.element);\n backgroundColorContainer.appendChild(this.colorDropDownElement);\n colorContainer.appendChild(backgroundColorContainer);\n this.updateColorInIcon(this.colorDropDownElement, this.pdfViewer.selectedItems.formFields[0].backgroundColor);\n var strokeColorContainer = createElement('div', { className: 'e-pv-properties-stroke-color-style-prop' });\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('Border'), strokeColorContainer, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_strokecolor');\n this.strokeDropDownElement = createElement('div', { className: 'e-pv-formfield-strokecolor-icon', id: this.pdfViewer.element.id + 'formField_strokeColor' });\n this.strokeDropDownElement.setAttribute('role', 'combobox');\n this.strokeColorPicker = this.createColorPicker(this.strokeDropDownElement.id, selectedItem.borderColor);\n this.strokeColorPicker.change = this.onStrokePickerChange.bind(this);\n // eslint-disable-next-line max-len\n this.strokeDropDown = this.createDropDownButton(this.strokeDropDownElement, 'e-pv-annotation-stroke-icon', this.strokeColorPicker.element.parentElement);\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Border Color'), this.strokeDropDown.element);\n strokeColorContainer.appendChild(this.strokeDropDownElement);\n colorContainer.appendChild(strokeColorContainer);\n this.updateColorInIcon(this.strokeDropDownElement, this.pdfViewer.selectedItems.formFields[0].borderColor);\n var strokeThicknessContainer = createElement('div', { className: 'e-pv-properties-stroke-thickness-style-prop' });\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('Thickness'), strokeThicknessContainer, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_strokethickness');\n this.thicknessElement = createElement('div', { className: 'e-pv-formfield-strokethickness-icon', id: this.pdfViewer.element.id + 'formField_strokethickness' });\n this.thicknessElement.setAttribute('role', 'combobox');\n var thicknessContainer = this.createThicknessSlider(this.thicknessElement.id);\n // eslint-disable-next-line max-len\n this.thicknessDropDown = this.createDropDownButton(this.thicknessElement, 'e-pv-annotation-thickness-icon', thicknessContainer);\n this.thicknessDropDown.beforeOpen = this.thicknessDropDownBeforeOpen.bind(this);\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Thickness'), this.thicknessDropDown.element);\n this.thicknessSlider.change = this.thicknessChange.bind(this);\n this.thicknessSlider.changed = this.thicknessChange.bind(this);\n strokeThicknessContainer.appendChild(this.thicknessElement);\n colorContainer.appendChild(strokeThicknessContainer);\n appearancePropertiesDiv.appendChild(colorContainer);\n return appearancePropertiesDiv;\n };\n FormDesigner.prototype.thicknessChange = function (args) {\n if (this.pdfViewer.selectedItems.formFields.length === 1) {\n this.formFieldBorderWidth = args.value;\n this.updateThicknessIndicator();\n }\n };\n FormDesigner.prototype.thicknessDropDownBeforeOpen = function () {\n if (this.pdfViewer.selectedItems.formFields.length === 1) {\n this.formFieldBorderWidth = this.pdfViewer.selectedItems.formFields[0].thickness.toString();\n this.thicknessSlider.value = this.pdfViewer.selectedItems.formFields[0].thickness;\n }\n this.updateThicknessIndicator();\n };\n FormDesigner.prototype.updateThicknessIndicator = function () {\n this.thicknessIndicator.textContent = this.thicknessSlider.value + ' pt';\n };\n FormDesigner.prototype.createOptionProperties = function () {\n var _this = this;\n var elementID = this.pdfViewer.element.id;\n var optionPropertiesDiv = createElement('div', { id: elementID + '_option_prop_appearance' });\n var listItemAddContainer = createElement('div', { className: 'e-pv-properties-form-field-list-add-div' });\n var formFieldListItemMainDiv = createElement('div', { className: 'e-pv-properties-form-field-list-item-main-div' });\n // eslint-disable-next-line max-len\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('List Item'), formFieldListItemMainDiv, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_listitem');\n var formFieldListItemDiv = createElement('div', { className: 'e-pv-properties-list-item-edit-prop' });\n var formFieldListItemContainer = createElement('input', { className: 'e-pv-properties-list-item-input e-input' });\n formFieldListItemContainer.setAttribute('aria-label', 'Item Name');\n formFieldListItemContainer.addEventListener('keyup', function (args) {\n _this.formFieldAddButton.disabled = true;\n _this.formFieldListItem.value = args.target.value;\n if (args.target && args.target.value) {\n if (_this.formFieldListItemCollection.length > 0) {\n for (var i = 0; i < _this.formFieldListItemCollection.length; i++) {\n var itemName = _this.formFieldListItemCollection[i];\n if (itemName === args.target.value) {\n _this.formFieldAddButton.disabled = true;\n break;\n }\n else {\n _this.formFieldAddButton.disabled = false;\n }\n }\n }\n else {\n _this.formFieldAddButton.disabled = false;\n }\n }\n });\n formFieldListItemDiv.appendChild(formFieldListItemContainer);\n formFieldListItemMainDiv.appendChild(formFieldListItemDiv);\n // eslint-disable-next-line max-len\n this.formFieldListItem = new TextBox({ type: \"text\", cssClass: 'e-pv-properties-formfield-listitem' }, formFieldListItemContainer);\n listItemAddContainer.appendChild(formFieldListItemMainDiv);\n optionPropertiesDiv.appendChild(listItemAddContainer);\n var buttonDiv = createElement('div', { className: 'e-pv-properties-form-field-list-btn-div' });\n var buttonAddInput = createElement('button', { className: 'e-btn' });\n buttonAddInput.addEventListener('click', this.addListItemOnClick.bind(this));\n buttonDiv.appendChild(buttonAddInput);\n this.formFieldAddButton = new Button({ content: this.pdfViewer.localeObj.getConstant('Add'), disabled: true, cssClass: 'e-pv-properties-dropdown-btn' }, buttonAddInput);\n listItemAddContainer.appendChild(buttonDiv);\n var exportValueContainer = createElement('div', { className: 'e-pv-properties-form-field-export-value-div' });\n var formFieldexportValueMainDiv = createElement('div', { className: 'e-pv-properties-form-field-export-value-main-div' });\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('Export Value'), formFieldexportValueMainDiv, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_exportValue');\n var formFieldExportItemDiv = createElement('div', { className: 'e-pv-properties-export-value-edit-prop' });\n var formFieldExportItemContainer = createElement('input', { className: 'e-pv-properties-export-value-input e-input' });\n formFieldExportItemContainer.setAttribute('aria-label', 'Item Value');\n formFieldExportItemDiv.appendChild(formFieldExportItemContainer);\n formFieldexportValueMainDiv.appendChild(formFieldExportItemDiv);\n // eslint-disable-next-line max-len\n this.formFieldListItem = new TextBox({ type: \"text\", cssClass: 'e-pv-properties-formfield-exportvalue' }, formFieldExportItemContainer);\n exportValueContainer.appendChild(formFieldexportValueMainDiv);\n optionPropertiesDiv.appendChild(exportValueContainer);\n var dropdownListItemContainer = createElement('div', { className: 'e-pv-properties-form-field-option-dropdown-list-div' });\n var formFieldDropdownListMainDiv = createElement('div', { className: 'e-pv-properties-form-field-option-dropdown-list-item-div' });\n var selectedElement = this.pdfViewer.selectedItems.formFields[0];\n if (selectedElement.formFieldAnnotationType === 'DropdownList') {\n // eslint-disable-next-line max-len\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('Dropdown Item List'), formFieldDropdownListMainDiv, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_dropdown_listitem');\n }\n else {\n // eslint-disable-next-line max-len\n this.createLabelElement(this.pdfViewer.localeObj.getConstant('List Box Item List'), formFieldDropdownListMainDiv, true, 'e-pv-properties-formfield-label', elementID + '_properties_formfield_dropdown_listitem');\n }\n dropdownListItemContainer.appendChild(formFieldDropdownListMainDiv);\n var btnTextAreaContainer = createElement('div', { className: 'e-pv-properties-form-field-btn-textarea-container' });\n var textAreaContainer = createElement('div', { className: 'e-pv-properties-formfield-textarea', styles: 'width:300px;height:123px;border:1px solid #E0E0E0;margin-right:15px;overflow:auto' });\n var listElement = createElement('ul', { id: this.pdfViewer.element.id + '_ul_list_item', className: 'e-pv-form-designer-ul-list-items' });\n var listCount = this.createListElement(listElement);\n textAreaContainer.appendChild(listElement);\n btnTextAreaContainer.appendChild(textAreaContainer);\n var buttonGroup = createElement('div', { className: 'e-pv-properties-form-field-group-btn-div' });\n var deleteButtonDiv = createElement('div', { className: 'e-pv-properties-form-field-delete-btn-div' });\n var buttonDeleteInput = createElement('button', { className: 'e-btn' });\n buttonDeleteInput.addEventListener('click', this.deleteListItem.bind(this));\n deleteButtonDiv.appendChild(buttonDeleteInput);\n this.formFieldDeleteButton = new Button({ content: this.pdfViewer.localeObj.getConstant('Delete Item'), disabled: listCount > 0 ? false : true, cssClass: 'e-pv-properties-dropdown-btn' }, buttonDeleteInput);\n buttonGroup.appendChild(deleteButtonDiv);\n var upButtonDiv = createElement('div', { className: 'e-pv-properties-form-field-up-btn-div' });\n var buttonUpInput = createElement('button', { className: 'e-btn' });\n buttonUpInput.addEventListener('click', this.moveUpListItem.bind(this));\n upButtonDiv.appendChild(buttonUpInput);\n this.formFieldUpButton = new Button({ content: this.pdfViewer.localeObj.getConstant('Up'), disabled: listCount > 1 ? false : true, cssClass: 'e-pv-properties-dropdown-btn' }, buttonUpInput);\n buttonGroup.appendChild(upButtonDiv);\n var downButtonDiv = createElement('div', { className: 'e-pv-properties-form-field-down-btn-div' });\n var buttonDownInput = createElement('button', { className: 'e-btn' });\n buttonDownInput.addEventListener('click', this.moveDownListItem.bind(this));\n downButtonDiv.appendChild(buttonDownInput);\n this.formFieldDownButton = new Button({ content: this.pdfViewer.localeObj.getConstant('Down'), disabled: true, cssClass: 'e-pv-properties-dropdown-btn' }, buttonDownInput);\n buttonGroup.appendChild(downButtonDiv);\n btnTextAreaContainer.appendChild(buttonGroup);\n dropdownListItemContainer.appendChild(btnTextAreaContainer);\n optionPropertiesDiv.appendChild(dropdownListItemContainer);\n return optionPropertiesDiv;\n };\n FormDesigner.prototype.addListItemOnClick = function () {\n var dropdownValue = this.formFieldListItem.value;\n this.formFieldListItemCollection.push(dropdownValue);\n var ulElement = document.getElementById(this.pdfViewer.element.id + '_ul_list_item');\n if (ulElement.children && ulElement.children.length > 0) {\n for (var i = 0; i < ulElement.children.length; i++) {\n var element = ulElement.children[i];\n if (element.classList.contains('e-pv-li-select')) {\n element.classList.remove('e-pv-li-select');\n }\n }\n }\n var createLiElement = createElement('li', { className: 'e-pv-formfield-li-element' });\n createLiElement.addEventListener('click', this.listItemOnClick.bind(this));\n createLiElement.innerHTML = dropdownValue;\n createLiElement.classList.add('e-pv-li-select');\n ulElement.appendChild(createLiElement);\n this.formFieldDeleteButton.disabled = false;\n this.formFieldAddButton.disabled = true;\n if (createLiElement.previousElementSibling) {\n this.formFieldUpButton.disabled = false;\n }\n if (!createLiElement.nextElementSibling) {\n this.formFieldDownButton.disabled = true;\n }\n };\n FormDesigner.prototype.listItemOnClick = function (args) {\n var ulElement = document.getElementById(this.pdfViewer.element.id + '_ul_list_item');\n if (ulElement.children && ulElement.children.length > 0) {\n for (var i = 0; i < ulElement.children.length; i++) {\n var element = ulElement.children[i];\n if (element.classList.contains('e-pv-li-select')) {\n element.classList.remove('e-pv-li-select');\n }\n }\n }\n if (args.target) {\n args.target.classList.add('e-pv-li-select');\n }\n if (args.target.nextElementSibling) {\n this.formFieldDownButton.disabled = false;\n }\n else {\n this.formFieldDownButton.disabled = true;\n }\n if (args.target.previousElementSibling) {\n this.formFieldUpButton.disabled = false;\n }\n else {\n this.formFieldUpButton.disabled = true;\n }\n };\n FormDesigner.prototype.deleteListItem = function () {\n var ulElement = document.getElementById(this.pdfViewer.element.id + '_ul_list_item');\n if (ulElement.children && ulElement.children.length > 0) {\n for (var i = 0; i < ulElement.children.length; i++) {\n var element = ulElement.children[i];\n if (element.classList.contains('e-pv-li-select')) {\n element.classList.remove('e-pv-li-select');\n this.formFieldListItemCollection.splice(i, 1);\n if (element.previousElementSibling) {\n element.previousElementSibling.classList.add('e-pv-li-select');\n if (!element.previousElementSibling.previousElementSibling) {\n this.formFieldUpButton.disabled = true;\n }\n }\n else if (element.nextElementSibling) {\n element.nextElementSibling.classList.add('e-pv-li-select');\n if (!element.nextElementSibling.nextElementSibling) {\n this.formFieldDownButton.disabled = true;\n }\n }\n element.remove();\n }\n }\n }\n if (ulElement.children && ulElement.children.length === 0) {\n this.formFieldDeleteButton.disabled = true;\n this.formFieldUpButton.disabled = true;\n this.formFieldDownButton.disabled = true;\n }\n if (ulElement.children && ulElement.children.length === 1) {\n this.formFieldDeleteButton.disabled = false;\n this.formFieldUpButton.disabled = true;\n this.formFieldDownButton.disabled = true;\n }\n };\n FormDesigner.prototype.moveUpListItem = function () {\n var ulElement = document.getElementById(this.pdfViewer.element.id + '_ul_list_item');\n if (ulElement.children && ulElement.children.length > 0) {\n for (var i = 0; i < ulElement.children.length; i++) {\n var element = ulElement.children[i];\n if (element.classList.contains('e-pv-li-select')) {\n if (element.previousElementSibling) {\n element.parentNode.insertBefore(element, element.previousElementSibling);\n if (!element.previousElementSibling)\n this.formFieldUpButton.disabled = true;\n }\n else {\n this.formFieldUpButton.disabled = true;\n }\n if (element.nextElementSibling) {\n this.formFieldDownButton.disabled = false;\n }\n }\n }\n }\n };\n FormDesigner.prototype.moveDownListItem = function () {\n var element;\n var ulElement = document.getElementById(this.pdfViewer.element.id + '_ul_list_item');\n if (ulElement.children && ulElement.children.length > 0) {\n for (var i = 0; i < ulElement.children.length; i++) {\n element = ulElement.children[i];\n if (element.classList.contains('e-pv-li-select')) {\n if (element.nextElementSibling) {\n element.parentNode.insertBefore(element.nextElementSibling, element);\n break;\n }\n else {\n this.formFieldDownButton.disabled = true;\n }\n }\n }\n }\n if (!element.nextElementSibling) {\n this.formFieldDownButton.disabled = true;\n }\n if (element.previousElementSibling) {\n this.formFieldUpButton.disabled = false;\n }\n };\n FormDesigner.prototype.createListElement = function (ulElement) {\n var selectedElement = this.pdfViewer.selectedItems.formFields[0];\n if (selectedElement) {\n if (selectedElement.options && selectedElement.options.length > 0) {\n for (var i = 0; i < selectedElement.options.length; i++) {\n var dropdownValue = selectedElement.options[i].itemName;\n if (this.formFieldListItemCollection[i] !== selectedElement.options[i].itemName) {\n this.formFieldListItemCollection.push(dropdownValue);\n var createLiElement = createElement('li', { className: 'e-pv-formfield-li-element' });\n createLiElement.addEventListener('click', this.listItemOnClick.bind(this));\n createLiElement.addEventListener('focus', this.focusFormFields.bind(this));\n createLiElement.addEventListener('blur', this.blurFormFields.bind(this));\n createLiElement.innerHTML = dropdownValue;\n ulElement.appendChild(createLiElement);\n }\n }\n ulElement.children[ulElement.children.length - 1].classList.add('e-pv-li-select');\n }\n }\n return ulElement.children.length;\n };\n FormDesigner.prototype.createThicknessSlider = function (idString) {\n var outerContainer = createElement('div', { className: 'e-pv-annotation-thickness-popup-container' });\n document.body.appendChild(outerContainer);\n var label = createElement('span', { id: idString + '_label', className: 'e-pv-annotation-thickness-label' });\n label.textContent = this.pdfViewer.localeObj.getConstant('Line Thickness');\n var sliderElement = createElement('div', { id: idString + '_slider' });\n this.thicknessSlider = new Slider({ type: 'MinRange', cssClass: 'e-pv-annotation-thickness-slider', max: 12, min: 0 });\n // eslint-disable-next-line max-len\n this.thicknessIndicator = createElement('div', { id: idString + '_thickness_indicator', className: 'e-pv-annotation-thickness-indicator' });\n this.thicknessIndicator.textContent = '0 pt';\n if (!this.pdfViewer.enableRtl) {\n outerContainer.appendChild(label);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(this.thicknessIndicator);\n }\n else {\n outerContainer.appendChild(this.thicknessIndicator);\n outerContainer.appendChild(sliderElement);\n this.thicknessSlider.enableRtl = true;\n this.thicknessSlider.appendTo(sliderElement);\n outerContainer.appendChild(label);\n }\n this.thicknessSlider.element.parentElement.classList.add('e-pv-annotation-thickness-slider-container');\n return outerContainer;\n };\n FormDesigner.prototype.createColorPicker = function (idString, color) {\n var inputElement = createElement('input', { id: idString + '_target' });\n document.body.appendChild(inputElement);\n var colorPicker = new ColorPicker({\n inline: true, mode: 'Palette', cssClass: 'e-show-value', enableOpacity: false,\n value: color, showButtons: false, modeSwitcher: false\n });\n if (this.pdfViewer.enableRtl) {\n colorPicker.enableRtl = true;\n }\n colorPicker.appendTo(inputElement);\n return colorPicker;\n };\n FormDesigner.prototype.fontStyleClicked = function (args) {\n if (args.target) {\n if (args.target.id.indexOf(\"formField_bold\") !== -1) {\n var item = (args.target.id.indexOf(\"formField_bold_div\") !== -1) ? args.target : args.target.parentElement;\n if (item.classList.contains('e-pv-li-select'))\n this.isBold = true;\n this.isBold = !this.isBold;\n if (this.isBold) {\n this.formFieldBold = \"bold\";\n item.classList.add('e-pv-li-select');\n }\n else {\n this.formFieldBold = \"normal\";\n item.classList.remove('e-pv-li-select');\n }\n }\n else if (args.target.id.indexOf(\"formField_italic\") !== -1) {\n var item = (args.target.id.indexOf(\"formField_italic_div\") !== -1) ? args.target : args.target.parentElement;\n if (item.classList.contains('e-pv-li-select'))\n this.isItalic = true;\n this.isItalic = !this.isItalic;\n if (this.isItalic) {\n this.formFieldItalic = \"italic\";\n item.classList.add('e-pv-li-select');\n }\n else {\n this.formFieldItalic = \"normal\";\n item.classList.remove('e-pv-li-select');\n }\n }\n else if (args.target.id.indexOf(\"formField_underline\") !== -1) {\n var item = (args.target.id.indexOf(\"formField_underline_textinput_div\") !== -1) ? args.target : args.target.parentElement;\n if (item.classList.contains('e-pv-li-select'))\n this.isUnderline = true;\n this.isUnderline = !this.isUnderline;\n if (this.isUnderline) {\n this.formFieldUnderline = \"underline\";\n this.isStrikeThrough = false;\n item.classList.add('e-pv-li-select');\n }\n else {\n this.formFieldUnderline = \"none\";\n item.classList.remove('e-pv-li-select');\n }\n }\n else if (args.target.id.indexOf(\"formField_strikeout\") !== -1) {\n var item = (args.target.id.indexOf(\"formField_strikeout_div\") !== -1) ? args.target : args.target.parentElement;\n if (item.classList.contains('e-pv-li-select'))\n this.isStrikeThrough = true;\n this.isStrikeThrough = !this.isStrikeThrough;\n if (this.isStrikeThrough) {\n this.formFieldStrikeOut = \"line-through\";\n this.isUnderline = false;\n item.classList.add('e-pv-li-select');\n }\n else {\n this.formFieldStrikeOut = \"none\";\n item.classList.remove('e-pv-li-select');\n }\n }\n }\n };\n FormDesigner.prototype.clearFontAlignIconSelection = function (currentElement) {\n for (var i = 0; i < currentElement.children.length; i++) {\n if (currentElement.children[i].classList.contains('e-pv-li-select')) {\n currentElement.children[i].classList.remove('e-pv-li-select');\n }\n }\n };\n FormDesigner.prototype.fontAlignClicked = function (args) {\n if (args.target) {\n args.target.classList.remove('e-pv-li-select');\n if (args.target.id.indexOf(\"_formField_left_align\") !== -1) {\n var item = (args.target.id.indexOf(\"_formField_left_align_div\") !== -1) ? args.target : args.target.parentElement;\n this.formFieldAlign = \"left\";\n this.clearFontAlignIconSelection(args.currentTarget);\n item.classList.add('e-pv-li-select');\n }\n else if (args.target.id.indexOf(\"_formField_right_align\") !== -1) {\n var item = (args.target.id.indexOf(\"_formField_right_align_div\") !== -1) ? args.target : args.target.parentElement;\n this.formFieldAlign = \"right\";\n this.clearFontAlignIconSelection(args.currentTarget);\n item.classList.add('e-pv-li-select');\n }\n else {\n var item = (args.target.id.indexOf(\"_formField_center_align_div\") !== -1) ? args.target : args.target.parentElement;\n this.formFieldAlign = \"center\";\n this.clearFontAlignIconSelection(args.currentTarget);\n item.classList.add('e-pv-li-select');\n }\n }\n };\n FormDesigner.prototype.onFontColorChange = function (args) {\n this.fontColorValue = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n this.updateColorInIcon(this.fontColorElement, this.fontColorValue);\n this.fontColorDropDown.toggle();\n };\n FormDesigner.prototype.onColorPickerChange = function (args) {\n this.backgroundColorValue = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n this.updateColorInIcon(this.colorDropDownElement, this.backgroundColorValue);\n this.colorDropDown.toggle();\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateColorInIcon = function (element, color) {\n element.childNodes[0].style.borderBottomColor = color;\n };\n FormDesigner.prototype.onStrokePickerChange = function (args) {\n this.borderColorValue = (args.currentValue.hex === '') ? '#ffffff00' : args.currentValue.hex;\n this.updateColorInIcon(this.strokeDropDownElement, this.borderColorValue);\n this.strokeDropDown.toggle();\n };\n FormDesigner.prototype.createDropDownButton = function (element, iconClass, target) {\n var popup = document.getElementById(target.id + \"-popup\");\n if (popup) {\n popup.remove();\n }\n // eslint-disable-next-line max-len\n var dropDownButton = new DropDownButton({ iconCss: iconClass + ' e-pv-icon', target: target });\n if (this.pdfViewer.enableRtl) {\n dropDownButton.enableRtl = true;\n }\n dropDownButton.appendTo(element);\n return dropDownButton;\n };\n /**\n * @private\n */\n FormDesigner.prototype.addClassFontItem = function (idString, className, isSelectedStyle) {\n var element = createElement('div', { id: this.pdfViewer.element.id + idString + '_div' });\n element.classList.add(className + \"-div\");\n var spanElement = createElement('span', { id: this.pdfViewer.element.id + idString + '_span' });\n spanElement.classList.add(className);\n spanElement.classList.add(\"e-pv-icon\");\n switch (className) {\n case 'e-pv-bold-icon':\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Bold'), element);\n break;\n case 'e-pv-italic-icon':\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Italic'), element);\n break;\n case 'e-pv-underlinetext-icon':\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Underlines'), element);\n break;\n case 'e-pv-strikeout-icon':\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Strikethroughs'), element);\n break;\n case 'e-pv-left-align-icon':\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Align left'), element);\n break;\n case 'e-pv-center-align-icon':\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Center'), element);\n break;\n case 'e-pv-right-align-icon':\n this.setToolTip(this.pdfViewer.localeObj.getConstant('Align right'), element);\n break;\n }\n if (isSelectedStyle)\n element.classList.add('e-pv-li-select');\n element.appendChild(spanElement);\n return element;\n };\n // eslint-disable-next-line max-len\n FormDesigner.prototype.createLabelElement = function (labelText, parentElement, isLabelNeeded, className, idString) {\n var container = createElement('div', { id: idString + '_container', className: className + '-container' });\n var label = null;\n if (isLabelNeeded) {\n label = createElement('div', { id: idString + '_label', className: className });\n label.textContent = labelText;\n container.appendChild(label);\n }\n parentElement.appendChild(label);\n };\n FormDesigner.prototype.setReadOnlyToFormField = function (selectedItem, isReadOnly) {\n for (var i = 0; i < this.pdfViewer.formFieldCollection.length; i++) {\n var formField = this.pdfViewer.formFieldCollection[i];\n if (formField.formFieldAnnotationType === selectedItem.formFieldAnnotationType && formField.name === selectedItem.name && formField.id === selectedItem.id) {\n formField.isReadonly = isReadOnly;\n switch (formField.formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'DropdownList':\n case 'ListBox':\n case 'SignatureField':\n case 'InitialField':\n var inputElement = document.getElementById(formField.id + \"_content_html_element\").firstElementChild.firstElementChild;\n this.setReadOnlyToElement(formField, inputElement, isReadOnly);\n break;\n case 'RadioButton':\n var radioButtonDivDivElement = document.getElementById(formField.id + \"_content_html_element\").firstElementChild.firstElementChild.firstElementChild;\n this.setReadOnlyToElement(formField, radioButtonDivDivElement, isReadOnly);\n break;\n case 'Checkbox':\n var checkboxDivElement = document.getElementById(formField.id + \"_content_html_element\").firstElementChild.firstElementChild.lastElementChild;\n this.setReadOnlyToElement(formField, checkboxDivElement, isReadOnly);\n break;\n }\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.getFormDesignerSignField = function (signatureFieldCollection) {\n var formDesignerData = this.pdfViewerBase.getItemFromSessionStorage('_formDesigner');\n // eslint-disable-next-line\n var currentData;\n if (formDesignerData) {\n // eslint-disable-next-line\n var formFieldsObject = JSON.parse(formDesignerData);\n for (var i = 0; i < formFieldsObject.length; i++) {\n currentData = formFieldsObject[i].FormField;\n if (currentData.formFieldAnnotationType === 'SignatureField') {\n // eslint-disable-next-line\n currentData['uniqueID'] = currentData.id.replace(\"_content\", \"\");\n signatureFieldCollection.push(formFieldsObject[i]);\n }\n }\n }\n return signatureFieldCollection;\n };\n FormDesigner.prototype.setRequiredToFormField = function (selectedItem, isRequired) {\n for (var i = 0; i < this.pdfViewer.formFieldCollection.length; i++) {\n var formField = this.pdfViewer.formFieldCollection[i];\n if (formField.formFieldAnnotationType === selectedItem.formFieldAnnotationType && formField.name === selectedItem.name && formField.id === selectedItem.id) {\n formField.isRequired = isRequired;\n switch (formField.formFieldAnnotationType) {\n case 'Textbox':\n case 'PasswordField':\n case 'DropdownList':\n case 'SignatureField':\n case 'InitialField':\n var inputElement = document.getElementById(formField.id + \"_content_html_element\").firstElementChild.firstElementChild;\n this.setRequiredToElement(formField, inputElement, isRequired);\n break;\n case 'RadioButton':\n var radioButtonDivDivElement = document.getElementById(formField.id + \"_content_html_element\").firstElementChild.firstElementChild.firstElementChild;\n this.setRequiredToElement(formField, radioButtonDivDivElement, isRequired);\n this.updateFormFieldCollections(formField);\n break;\n case 'Checkbox':\n var checkboxDivElement = document.getElementById(formField.id + \"_content_html_element\").firstElementChild.firstElementChild.lastElementChild;\n this.setRequiredToElement(formField, checkboxDivElement, isRequired);\n break;\n default:\n break;\n }\n }\n }\n };\n FormDesigner.prototype.setReadOnlyToElement = function (selectedItem, inputElement, isReadOnly) {\n if (isReadOnly) {\n inputElement.disabled = true;\n if (selectedItem.formFieldAnnotationType === 'RadioButton') {\n inputElement.parentElement.style.cursor = 'default';\n inputElement.parentElement.style.backgroundColor = 'transparent';\n }\n else if (selectedItem.formFieldAnnotationType === 'SignatureField' || selectedItem.formFieldAnnotationType === 'InitialField') {\n inputElement.parentElement.style.backgroundColor = 'transparent';\n var thickness = !isNullOrUndefined(selectedItem.thickness) ? 1 : selectedItem.thickness;\n inputElement.parentElement.style.borderWidth = thickness;\n }\n else {\n inputElement.style.cursor = 'default';\n inputElement.style.backgroundColor = 'transparent';\n }\n }\n else {\n inputElement.disabled = false;\n if (selectedItem.formFieldAnnotationType === 'RadioButton') {\n inputElement.parentElement.style.backgroundColor = selectedItem.backgroundColor;\n }\n else if (selectedItem.formFieldAnnotationType === 'SignatureField' || selectedItem.formFieldAnnotationType === 'InitialField') {\n var background = selectedItem.backgroundColor ? selectedItem.backgroundColor : '#FFE48559';\n inputElement.parentElement.style.backgroundColor = this.getSignatureBackground(background);\n }\n else {\n inputElement.style.backgroundColor = selectedItem.backgroundColor;\n }\n }\n };\n FormDesigner.prototype.setRequiredToElement = function (selectedItem, inputElement, isRequired) {\n if (isRequired) {\n inputElement.required = true;\n inputElement.style.border = '1px solid red';\n if (selectedItem.formFieldAnnotationType === 'RadioButton') {\n var thickness = selectedItem.thickness === 0 ? 1 : selectedItem.thickness;\n inputElement.parentElement.style.boxShadow = 'red 0px 0px 0px ' + thickness + 'px';\n }\n else if (selectedItem.formFieldAnnotationType === 'SignatureField' || selectedItem.formFieldAnnotationType === 'InitialField') {\n var thickness = (selectedItem.thickness > 0) ? selectedItem.thickness : 1;\n inputElement.style.border = thickness + 'px solid red';\n }\n }\n else {\n inputElement.required = false;\n if (selectedItem.formFieldAnnotationType === 'SignatureField' || selectedItem.formFieldAnnotationType === 'InitialField') {\n inputElement.style.borderWidth = selectedItem.thickness;\n }\n else {\n inputElement.style.borderWidth = selectedItem.thickness + \"px\";\n }\n inputElement.style.borderColor = selectedItem.borderColor;\n if (selectedItem.formFieldAnnotationType === 'RadioButton') {\n inputElement.parentElement.style.boxShadow = selectedItem.borderColor + ' 0px 0px 0px ' + selectedItem.thickness + 'px';\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.destroyPropertiesWindow = function () {\n this.formFieldListItemCollection = [];\n this.formFieldListItemDataSource = [];\n this.formFieldFontFamily = null;\n this.formFieldFontSize = null;\n this.formFieldAlign = null;\n this.fontColorValue = null;\n this.backgroundColorValue = null;\n this.borderColorValue = null;\n this.formFieldBorderWidth = null;\n this.formFieldName = null;\n this.formFieldChecked = null;\n this.formFieldReadOnly = null;\n this.formFieldRequired = null;\n this.formFieldTooltip = null;\n this.formFieldPrinting = null;\n this.formFieldMultiline = null;\n this.formFieldVisibility = null;\n var dialogElement = this.pdfViewerBase.getElement('_properties_window');\n if (dialogElement) {\n dialogElement.parentElement.removeChild(dialogElement);\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.destroy = function () {\n this.destroyPropertiesWindow();\n };\n FormDesigner.prototype.hex = function (x) {\n return ('0' + x.toString(16)).slice(-2);\n };\n /**\n * @private\n */\n FormDesigner.prototype.getModuleName = function () {\n return 'FormDesigner';\n };\n FormDesigner.prototype.updateAnnotationCanvas = function (canvas, pageWidth, pageHeight, pageNumber) {\n var ratio = this.pdfViewerBase.getZoomRatio();\n canvas.width = pageWidth * ratio;\n canvas.height = pageHeight * ratio;\n canvas.style.width = pageWidth + 'px';\n canvas.style.height = pageHeight + 'px';\n canvas.style.position = 'absolute';\n canvas.style.zIndex = '1';\n this.pdfViewerBase.applyElementStyles(canvas, pageNumber);\n };\n FormDesigner.prototype.getFontFamily = function (fontFamily) {\n var fontFamilyNames = ['Helvetica', 'Courier', 'TimesRoman', 'Symbol', 'ZapfDingbats'];\n return fontFamilyNames.indexOf(fontFamily) > -1 ? true : false;\n };\n FormDesigner.prototype.updateTextFieldSettingProperties = function (drawingObject, isFormDesignerToolbarVisible, isSetFormFieldMode) {\n var textFieldSettings = this.pdfViewer.textFieldSettings;\n if (!isNullOrUndefined(textFieldSettings.isReadOnly) && this.textFieldPropertyChanged.isReadOnlyChanged) {\n drawingObject.isReadonly = textFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(textFieldSettings.isRequired) && this.textFieldPropertyChanged.isRequiredChanged) {\n drawingObject.isRequired = textFieldSettings.isRequired;\n }\n if (textFieldSettings.value && this.textFieldPropertyChanged.isValueChanged) {\n drawingObject.value = textFieldSettings.value;\n }\n if ((textFieldSettings.backgroundColor && textFieldSettings.backgroundColor !== 'white') && this.textFieldPropertyChanged.isBackgroundColorChanged) {\n drawingObject.backgroundColor = textFieldSettings.backgroundColor;\n }\n if ((textFieldSettings.borderColor && textFieldSettings.borderColor !== 'black') && this.textFieldPropertyChanged.isBorderColorChanged) {\n drawingObject.borderColor = textFieldSettings.borderColor;\n }\n if ((textFieldSettings.alignment && textFieldSettings.alignment !== 'Left') && this.textFieldPropertyChanged.isAlignmentChanged) {\n drawingObject.alignment = textFieldSettings.alignment;\n }\n if ((textFieldSettings.color && textFieldSettings.color !== 'black') && this.textFieldPropertyChanged.isColorChanged) {\n drawingObject.color = textFieldSettings.color;\n }\n if ((textFieldSettings.fontFamily && textFieldSettings.fontFamily !== 'Helvetica') && this.textFieldPropertyChanged.isFontFamilyChanged) {\n drawingObject.fontFamily = textFieldSettings.fontFamily;\n }\n if ((textFieldSettings.fontSize && textFieldSettings.fontSize !== 10) && this.textFieldPropertyChanged.isFontSizeChanged) {\n drawingObject.fontSize = textFieldSettings.fontSize;\n }\n if (textFieldSettings.fontStyle && this.textFieldPropertyChanged.isFontStyleChanged) {\n drawingObject.fontStyle = this.getFontStyleName(textFieldSettings.fontStyle, drawingObject);\n \n }\n if (textFieldSettings.name && this.textFieldPropertyChanged.isNameChanged) {\n drawingObject.name = textFieldSettings.name;\n }\n if (textFieldSettings.tooltip && this.textFieldPropertyChanged.isToolTipChanged) {\n drawingObject.tooltip = textFieldSettings.tooltip;\n }\n if ((textFieldSettings.thickness && textFieldSettings.thickness !== 1) && this.textFieldPropertyChanged.isThicknessChanged) {\n drawingObject.thickness = textFieldSettings.thickness;\n }\n if (textFieldSettings.maxLength && this.textFieldPropertyChanged.isMaxLengthChanged) {\n drawingObject.maxLength = textFieldSettings.maxLength;\n }\n if (textFieldSettings.visibility && this.textFieldPropertyChanged.isVisibilityChanged) {\n drawingObject.visibility = textFieldSettings.visibility;\n }\n if (!isNullOrUndefined(textFieldSettings.isPrint) && this.textFieldPropertyChanged.isPrintChanged) {\n drawingObject.isPrint = textFieldSettings.isPrint;\n }\n if (!isNullOrUndefined(textFieldSettings.isMultiline) && this.textFieldPropertyChanged.isMultilineChanged) {\n drawingObject.isMultiline = textFieldSettings.isMultiline;\n }\n };\n FormDesigner.prototype.updatePasswordFieldSettingProperties = function (drawingObject, isFormDesignerToolbarVisible, isSetFormFieldMode) {\n var passwordFieldSettings = this.pdfViewer.passwordFieldSettings;\n if (!isNullOrUndefined(passwordFieldSettings.isReadOnly) && this.passwordFieldPropertyChanged.isReadOnlyChanged) {\n drawingObject.isReadonly = passwordFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(passwordFieldSettings.isRequired) && this.passwordFieldPropertyChanged.isRequiredChanged) {\n drawingObject.isRequired = passwordFieldSettings.isRequired;\n }\n if (passwordFieldSettings.value && this.passwordFieldPropertyChanged.isValueChanged) {\n drawingObject.value = passwordFieldSettings.value;\n }\n if ((passwordFieldSettings.backgroundColor && passwordFieldSettings.backgroundColor !== 'white') && this.passwordFieldPropertyChanged.isBackgroundColorChanged) {\n drawingObject.backgroundColor = passwordFieldSettings.backgroundColor;\n }\n if ((passwordFieldSettings.borderColor && passwordFieldSettings.borderColor !== 'black') && this.passwordFieldPropertyChanged.isBorderColorChanged) {\n drawingObject.borderColor = passwordFieldSettings.borderColor;\n }\n if ((passwordFieldSettings.alignment && passwordFieldSettings.alignment !== 'Left') && this.passwordFieldPropertyChanged.isAlignmentChanged) {\n drawingObject.alignment = passwordFieldSettings.alignment;\n }\n if ((passwordFieldSettings.color && passwordFieldSettings.color !== 'black') && this.passwordFieldPropertyChanged.isColorChanged) {\n drawingObject.color = passwordFieldSettings.color;\n }\n if ((passwordFieldSettings.fontFamily && passwordFieldSettings.fontFamily !== 'Helvetica') && this.passwordFieldPropertyChanged.isFontFamilyChanged) {\n drawingObject.fontFamily = passwordFieldSettings.fontFamily;\n }\n if ((passwordFieldSettings.fontSize && passwordFieldSettings.fontSize !== 10) && this.passwordFieldPropertyChanged.isFontSizeChanged) {\n drawingObject.fontSize = passwordFieldSettings.fontSize;\n }\n if (passwordFieldSettings.fontStyle && this.passwordFieldPropertyChanged.isFontStyleChanged) {\n drawingObject.fontStyle = this.getFontStyleName(passwordFieldSettings.fontStyle, drawingObject);\n }\n if (passwordFieldSettings.name && this.passwordFieldPropertyChanged.isNameChanged) {\n drawingObject.name = passwordFieldSettings.name;\n }\n if (passwordFieldSettings.tooltip && this.passwordFieldPropertyChanged.isToolTipChanged) {\n drawingObject.tooltip = passwordFieldSettings.tooltip;\n }\n if ((passwordFieldSettings.thickness && passwordFieldSettings.thickness !== 1) && this.passwordFieldPropertyChanged.isThicknessChanged) {\n drawingObject.thickness = passwordFieldSettings.thickness;\n }\n if (passwordFieldSettings.maxLength && this.passwordFieldPropertyChanged.isMaxLengthChanged) {\n drawingObject.maxLength = passwordFieldSettings.maxLength;\n }\n if (passwordFieldSettings.visibility && this.passwordFieldPropertyChanged.isVisibilityChanged) {\n drawingObject.visibility = passwordFieldSettings.visibility;\n }\n if (!isNullOrUndefined(passwordFieldSettings.isPrint) && this.passwordFieldPropertyChanged.isPrintChanged) {\n drawingObject.isPrint = passwordFieldSettings.isPrint;\n }\n };\n FormDesigner.prototype.updateCheckBoxFieldSettingsProperties = function (drawingObject, isFormDesignerToolbarVisible, isSetFormFieldMode) {\n var checkBoxFieldSettings = this.pdfViewer.checkBoxFieldSettings;\n if (!isNullOrUndefined(checkBoxFieldSettings.isReadOnly) && this.checkBoxFieldPropertyChanged.isReadOnlyChanged) {\n drawingObject.isReadonly = checkBoxFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(checkBoxFieldSettings.isRequired) && this.checkBoxFieldPropertyChanged.isRequiredChanged) {\n drawingObject.isRequired = checkBoxFieldSettings.isRequired;\n }\n if ((checkBoxFieldSettings.backgroundColor && checkBoxFieldSettings.backgroundColor !== 'white') && this.checkBoxFieldPropertyChanged.isBackgroundColorChanged) {\n drawingObject.backgroundColor = checkBoxFieldSettings.backgroundColor;\n }\n if ((checkBoxFieldSettings.borderColor && checkBoxFieldSettings.borderColor !== 'black') && this.checkBoxFieldPropertyChanged.isBorderColorChanged) {\n drawingObject.borderColor = checkBoxFieldSettings.borderColor;\n }\n if (checkBoxFieldSettings.name && this.checkBoxFieldPropertyChanged.isNameChanged) {\n drawingObject.name = checkBoxFieldSettings.name;\n }\n if (checkBoxFieldSettings.tooltip && this.checkBoxFieldPropertyChanged.isToolTipChanged) {\n drawingObject.tooltip = checkBoxFieldSettings.tooltip;\n }\n if ((checkBoxFieldSettings.thickness && checkBoxFieldSettings.thickness !== 1) && this.checkBoxFieldPropertyChanged.isThicknessChanged) {\n drawingObject.thickness = checkBoxFieldSettings.thickness;\n }\n if (checkBoxFieldSettings.visibility && this.checkBoxFieldPropertyChanged.isVisibilityChanged) {\n drawingObject.visibility = checkBoxFieldSettings.visibility;\n }\n if (!isNullOrUndefined(checkBoxFieldSettings.isPrint) && this.checkBoxFieldPropertyChanged.isPrintChanged) {\n drawingObject.isPrint = checkBoxFieldSettings.isPrint;\n }\n if (!isNullOrUndefined(checkBoxFieldSettings.isChecked) && this.checkBoxFieldPropertyChanged.isCheckedChanged) {\n drawingObject.isChecked = checkBoxFieldSettings.isChecked;\n }\n };\n FormDesigner.prototype.updateRadioButtonFieldSettingProperties = function (drawingObject, isFormDesignerToolbarVisible, isSetFormFieldMode) {\n var radioButtonFieldSettings = this.pdfViewer.radioButtonFieldSettings;\n if (!isNullOrUndefined(radioButtonFieldSettings.isReadOnly) && this.radioButtonFieldPropertyChanged.isReadOnlyChanged) {\n drawingObject.isReadonly = radioButtonFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(radioButtonFieldSettings.isRequired) && this.radioButtonFieldPropertyChanged.isRequiredChanged) {\n drawingObject.isRequired = radioButtonFieldSettings.isRequired;\n }\n if ((radioButtonFieldSettings.backgroundColor && radioButtonFieldSettings.backgroundColor !== 'white') && this.radioButtonFieldPropertyChanged.isBackgroundColorChanged) {\n drawingObject.backgroundColor = radioButtonFieldSettings.backgroundColor;\n }\n if ((radioButtonFieldSettings.borderColor && radioButtonFieldSettings.borderColor !== 'black') && this.radioButtonFieldPropertyChanged.isBorderColorChanged) {\n drawingObject.borderColor = radioButtonFieldSettings.borderColor;\n }\n if (radioButtonFieldSettings.name && this.radioButtonFieldPropertyChanged.isNameChanged) {\n drawingObject.name = radioButtonFieldSettings.name;\n }\n if (radioButtonFieldSettings.tooltip && this.radioButtonFieldPropertyChanged.isToolTipChanged) {\n drawingObject.tooltip = radioButtonFieldSettings.tooltip;\n }\n if ((radioButtonFieldSettings.thickness && radioButtonFieldSettings.thickness !== 1) && this.radioButtonFieldPropertyChanged.isThicknessChanged) {\n drawingObject.thickness = radioButtonFieldSettings.thickness;\n }\n if (radioButtonFieldSettings.visibility && this.radioButtonFieldPropertyChanged.isVisibilityChanged) {\n drawingObject.visibility = radioButtonFieldSettings.visibility;\n }\n if (!isNullOrUndefined(radioButtonFieldSettings.isPrint) && this.radioButtonFieldPropertyChanged.isPrintChanged) {\n drawingObject.isPrint = radioButtonFieldSettings.isPrint;\n }\n if (!isNullOrUndefined(radioButtonFieldSettings.isSelected) && this.radioButtonFieldPropertyChanged.isSelectedChanged) {\n drawingObject.isSelected = radioButtonFieldSettings.isSelected;\n }\n };\n FormDesigner.prototype.updateDropdownFieldSettingsProperties = function (drawingObject, isFormDesignerToolbarVisible, isSetFormFieldMode) {\n var dropdownFieldSettings = this.pdfViewer.DropdownFieldSettings;\n if (!isNullOrUndefined(dropdownFieldSettings.isReadOnly) && this.dropdownFieldPropertyChanged.isReadOnlyChanged) {\n drawingObject.isReadonly = dropdownFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(dropdownFieldSettings.isRequired) && this.dropdownFieldPropertyChanged.isRequiredChanged) {\n drawingObject.isRequired = dropdownFieldSettings.isRequired;\n }\n if ((dropdownFieldSettings.backgroundColor && dropdownFieldSettings.backgroundColor !== 'white') && this.dropdownFieldPropertyChanged.isBackgroundColorChanged) {\n drawingObject.backgroundColor = dropdownFieldSettings.backgroundColor;\n }\n if ((dropdownFieldSettings.borderColor && dropdownFieldSettings.borderColor !== 'black') && this.dropdownFieldPropertyChanged.isBorderColorChanged) {\n drawingObject.borderColor = dropdownFieldSettings.borderColor;\n }\n if ((dropdownFieldSettings.alignment && dropdownFieldSettings.alignment !== 'Left') && this.dropdownFieldPropertyChanged.isAlignmentChanged) {\n drawingObject.alignment = dropdownFieldSettings.alignment;\n }\n if ((dropdownFieldSettings.color && dropdownFieldSettings.color !== 'black') && this.dropdownFieldPropertyChanged.isColorChanged) {\n drawingObject.color = dropdownFieldSettings.color;\n }\n if ((dropdownFieldSettings.fontFamily && dropdownFieldSettings.fontFamily !== 'Helvetica') && this.dropdownFieldPropertyChanged.isFontFamilyChanged) {\n drawingObject.fontFamily = dropdownFieldSettings.fontFamily;\n }\n if ((dropdownFieldSettings.fontSize && dropdownFieldSettings.fontSize !== 10) && this.dropdownFieldPropertyChanged.isFontSizeChanged) {\n drawingObject.fontSize = dropdownFieldSettings.fontSize;\n }\n if (dropdownFieldSettings.fontStyle && this.dropdownFieldPropertyChanged.isFontStyleChanged) {\n drawingObject.fontStyle = this.getFontStyleName(dropdownFieldSettings.fontStyle, drawingObject);\n \n }\n if (dropdownFieldSettings.name && this.dropdownFieldPropertyChanged.isNameChanged) {\n drawingObject.name = dropdownFieldSettings.name;\n }\n if (dropdownFieldSettings.tooltip && this.dropdownFieldPropertyChanged.isToolTipChanged) {\n drawingObject.tooltip = dropdownFieldSettings.tooltip;\n }\n if ((dropdownFieldSettings && dropdownFieldSettings.thickness !== 1) && this.dropdownFieldPropertyChanged.isThicknessChanged) {\n drawingObject.thickness = dropdownFieldSettings.thickness;\n }\n if (dropdownFieldSettings.visibility && this.dropdownFieldPropertyChanged.isVisibilityChanged) {\n drawingObject.visibility = dropdownFieldSettings.visibility;\n }\n if (!isNullOrUndefined(dropdownFieldSettings.isPrint) && this.dropdownFieldPropertyChanged.isPrintChanged) {\n drawingObject.isPrint = dropdownFieldSettings.isPrint;\n }\n if (dropdownFieldSettings.options && this.dropdownFieldPropertyChanged.isOptionChanged) {\n drawingObject.options = drawingObject.options && drawingObject.options.length > 0 ? drawingObject.options : dropdownFieldSettings.options;\n }\n };\n FormDesigner.prototype.updatelistBoxFieldSettingsProperties = function (drawingObject, isFormDesignerToolbarVisible, isSetFormFieldMode) {\n var listBoxFieldSettings = this.pdfViewer.listBoxFieldSettings;\n if (!isNullOrUndefined(listBoxFieldSettings.isReadOnly) && this.listBoxFieldPropertyChanged.isReadOnlyChanged) {\n drawingObject.isReadonly = listBoxFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(listBoxFieldSettings.isRequired) && this.listBoxFieldPropertyChanged.isRequiredChanged) {\n drawingObject.isRequired = listBoxFieldSettings.isRequired;\n }\n if ((listBoxFieldSettings.backgroundColor && listBoxFieldSettings.backgroundColor !== 'white') && this.listBoxFieldPropertyChanged.isBackgroundColorChanged) {\n drawingObject.backgroundColor = listBoxFieldSettings.backgroundColor;\n }\n if ((listBoxFieldSettings.borderColor && listBoxFieldSettings.borderColor !== 'black') && this.listBoxFieldPropertyChanged.isBorderColorChanged) {\n drawingObject.borderColor = listBoxFieldSettings.borderColor;\n }\n if ((listBoxFieldSettings.alignment && listBoxFieldSettings.alignment !== 'Left') && this.listBoxFieldPropertyChanged.isAlignmentChanged) {\n drawingObject.alignment = listBoxFieldSettings.alignment;\n }\n if ((listBoxFieldSettings.color && listBoxFieldSettings.color !== 'black') && this.listBoxFieldPropertyChanged.isColorChanged) {\n drawingObject.color = listBoxFieldSettings.color;\n }\n if ((listBoxFieldSettings.fontFamily && listBoxFieldSettings.fontFamily !== 'Helvetica') && this.listBoxFieldPropertyChanged.isFontFamilyChanged) {\n drawingObject.fontFamily = listBoxFieldSettings.fontFamily;\n }\n if ((listBoxFieldSettings.fontSize && listBoxFieldSettings.fontSize !== 10) && this.listBoxFieldPropertyChanged.isFontSizeChanged) {\n drawingObject.fontSize = listBoxFieldSettings.fontSize;\n }\n if (listBoxFieldSettings.fontStyle && this.listBoxFieldPropertyChanged.isFontStyleChanged) {\n drawingObject.fontStyle = this.getFontStyleName(listBoxFieldSettings.fontStyle, drawingObject);\n \n }\n if (listBoxFieldSettings.name && this.listBoxFieldPropertyChanged.isNameChanged) {\n drawingObject.name = listBoxFieldSettings.name;\n }\n if (listBoxFieldSettings.tooltip && this.listBoxFieldPropertyChanged.isToolTipChanged) {\n drawingObject.tooltip = listBoxFieldSettings.tooltip;\n }\n if ((listBoxFieldSettings.thickness && listBoxFieldSettings.thickness !== 1) && this.listBoxFieldPropertyChanged.isThicknessChanged) {\n drawingObject.thickness = listBoxFieldSettings.thickness;\n }\n if (listBoxFieldSettings.visibility && this.listBoxFieldPropertyChanged.isVisibilityChanged) {\n drawingObject.visibility = listBoxFieldSettings.visibility;\n }\n if (!isNullOrUndefined(listBoxFieldSettings.isPrint) && this.listBoxFieldPropertyChanged.isPrintChanged) {\n drawingObject.isPrint = listBoxFieldSettings.isPrint;\n }\n if (listBoxFieldSettings.options && this.listBoxFieldPropertyChanged.isOptionChanged) {\n drawingObject.options = drawingObject.options && drawingObject.options.length > 0 ? drawingObject.options : listBoxFieldSettings.options;\n }\n };\n FormDesigner.prototype.updateSignInitialFieldProperties = function (signatureField, isInitialField, isFormDesignerToolbarVisible, isSetFormFieldMode) {\n var initialFieldSettings = this.pdfViewer.initialFieldSettings;\n var signatureFieldSettings = this.pdfViewer.signatureFieldSettings;\n if (isInitialField) {\n if (!isNullOrUndefined(initialFieldSettings.isReadOnly) && this.initialFieldPropertyChanged.isReadOnlyChanged) {\n signatureField.isReadonly = initialFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(initialFieldSettings.isRequired) && this.initialFieldPropertyChanged.isRequiredChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.isRequired = initialFieldSettings.isRequired;\n }\n if (initialFieldSettings.visibility && this.initialFieldPropertyChanged.isVisibilityChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.visibility = initialFieldSettings.visibility;\n }\n if (initialFieldSettings.tooltip && this.initialFieldPropertyChanged.isTooltipChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.tooltip = initialFieldSettings.tooltip;\n }\n if ((!isNullOrUndefined(initialFieldSettings.thickness) && isSetFormFieldMode === true) && this.initialFieldPropertyChanged.isThicknessChanged) {\n signatureField.thickness = initialFieldSettings.thickness;\n }\n if (initialFieldSettings.name && this.initialFieldPropertyChanged.isNameChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.name = initialFieldSettings.name;\n }\n if (!isNullOrUndefined(initialFieldSettings.isPrint) && this.initialFieldPropertyChanged.isPrintChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.isPrint = initialFieldSettings.isPrint;\n }\n }\n else {\n if (!isNullOrUndefined(signatureFieldSettings.isReadOnly) && this.signatureFieldPropertyChanged.isReadOnlyChanged) {\n signatureField.isReadonly = signatureFieldSettings.isReadOnly;\n }\n if (!isNullOrUndefined(signatureFieldSettings.isRequired) && this.signatureFieldPropertyChanged.isRequiredChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.isRequired = signatureFieldSettings.isRequired;\n }\n if (signatureFieldSettings.visibility && this.signatureFieldPropertyChanged.isVisibilityChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.visibility = signatureFieldSettings.visibility;\n }\n if (signatureFieldSettings.tooltip && this.signatureFieldPropertyChanged.isTooltipChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.tooltip = signatureFieldSettings.tooltip;\n }\n if ((!isNullOrUndefined(signatureFieldSettings.thickness) && isSetFormFieldMode === true) && this.signatureFieldPropertyChanged.isThicknessChanged) {\n signatureField.thickness = signatureFieldSettings.thickness;\n }\n if (signatureFieldSettings.name && this.signatureFieldPropertyChanged.isNameChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.name = signatureFieldSettings.name;\n }\n if (!isNullOrUndefined(signatureFieldSettings.isPrint) && this.signatureFieldPropertyChanged.isPrintChanged && !this.pdfViewer.magnificationModule.isFormFieldPageZoomed) {\n signatureField.isPrint = signatureFieldSettings.isPrint;\n }\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateSignatureSettings = function (newSignatureFieldSettings, isInitialField) {\n isInitialField = !isNullOrUndefined(isInitialField) ? isInitialField : false;\n if (isInitialField) {\n this.initialFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(newSignatureFieldSettings.isReadOnly);\n this.initialFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(newSignatureFieldSettings.isRequired);\n this.initialFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(newSignatureFieldSettings.visibility);\n this.initialFieldPropertyChanged.isTooltipChanged = !isNullOrUndefined(newSignatureFieldSettings.tooltip);\n this.initialFieldPropertyChanged.isNameChanged = !isNullOrUndefined(newSignatureFieldSettings.name);\n this.initialFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(newSignatureFieldSettings.isPrint);\n this.initialFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(newSignatureFieldSettings.thickness);\n }\n else {\n this.signatureFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(newSignatureFieldSettings.isReadOnly);\n this.signatureFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(newSignatureFieldSettings.isRequired);\n this.signatureFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(newSignatureFieldSettings.visibility);\n this.signatureFieldPropertyChanged.isTooltipChanged = !isNullOrUndefined(newSignatureFieldSettings.tooltip);\n this.signatureFieldPropertyChanged.isNameChanged = !isNullOrUndefined(newSignatureFieldSettings.name);\n this.signatureFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(newSignatureFieldSettings.isPrint);\n this.signatureFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(newSignatureFieldSettings.thickness);\n }\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateTextFieldSettings = function (textFieldSettings) {\n this.textFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(textFieldSettings.isReadOnly);\n this.textFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(textFieldSettings.isRequired);\n this.textFieldPropertyChanged.isValueChanged = !isNullOrUndefined(textFieldSettings.value);\n this.textFieldPropertyChanged.isBackgroundColorChanged = !isNullOrUndefined(textFieldSettings.backgroundColor);\n this.textFieldPropertyChanged.isBorderColorChanged = !isNullOrUndefined(textFieldSettings.borderColor);\n this.textFieldPropertyChanged.isAlignmentChanged = !isNullOrUndefined(textFieldSettings.alignment);\n this.textFieldPropertyChanged.isColorChanged = !isNullOrUndefined(textFieldSettings.color);\n this.textFieldPropertyChanged.isFontFamilyChanged = !isNullOrUndefined(textFieldSettings.fontFamily);\n this.textFieldPropertyChanged.isFontSizeChanged = !isNullOrUndefined(textFieldSettings.fontSize);\n this.textFieldPropertyChanged.isFontStyleChanged = !isNullOrUndefined(textFieldSettings.fontStyle);\n this.textFieldPropertyChanged.isNameChanged = !isNullOrUndefined(textFieldSettings.name);\n this.textFieldPropertyChanged.isToolTipChanged = !isNullOrUndefined(textFieldSettings.tooltip);\n this.textFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(textFieldSettings.thickness);\n this.textFieldPropertyChanged.isMaxLengthChanged = !isNullOrUndefined(textFieldSettings.maxLength);\n this.textFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(textFieldSettings.visibility);\n this.textFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(textFieldSettings.isPrint);\n this.textFieldPropertyChanged.isMultilineChanged = !isNullOrUndefined(textFieldSettings.isMultiline);\n };\n /**\n * @private\n */\n FormDesigner.prototype.updatePasswordFieldSettings = function (passwordFieldSettings) {\n this.passwordFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(passwordFieldSettings.isReadOnly);\n this.passwordFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(passwordFieldSettings.isRequired);\n this.passwordFieldPropertyChanged.isValueChanged = !isNullOrUndefined(passwordFieldSettings.value);\n this.passwordFieldPropertyChanged.isBackgroundColorChanged = !isNullOrUndefined(passwordFieldSettings.backgroundColor);\n this.passwordFieldPropertyChanged.isBorderColorChanged = !isNullOrUndefined(passwordFieldSettings.borderColor);\n this.passwordFieldPropertyChanged.isAlignmentChanged = !isNullOrUndefined(passwordFieldSettings.alignment);\n this.passwordFieldPropertyChanged.isColorChanged = !isNullOrUndefined(passwordFieldSettings.color);\n this.passwordFieldPropertyChanged.isFontFamilyChanged = !isNullOrUndefined(passwordFieldSettings.fontFamily);\n this.passwordFieldPropertyChanged.isFontSizeChanged = !isNullOrUndefined(passwordFieldSettings.fontSize);\n this.passwordFieldPropertyChanged.isFontStyleChanged = !isNullOrUndefined(passwordFieldSettings.fontStyle);\n this.passwordFieldPropertyChanged.isNameChanged = !isNullOrUndefined(passwordFieldSettings.name);\n this.passwordFieldPropertyChanged.isToolTipChanged = !isNullOrUndefined(passwordFieldSettings.tooltip);\n this.passwordFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(passwordFieldSettings.thickness);\n this.passwordFieldPropertyChanged.isMaxLengthChanged = !isNullOrUndefined(passwordFieldSettings.maxLength);\n this.passwordFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(passwordFieldSettings.visibility);\n this.passwordFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(passwordFieldSettings.isPrint);\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateCheckBoxFieldSettings = function (checkBoxFieldSettings) {\n this.checkBoxFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(checkBoxFieldSettings.isReadOnly);\n this.checkBoxFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(checkBoxFieldSettings.isRequired);\n this.checkBoxFieldPropertyChanged.isBackgroundColorChanged = !isNullOrUndefined(checkBoxFieldSettings.backgroundColor);\n this.checkBoxFieldPropertyChanged.isBorderColorChanged = !isNullOrUndefined(checkBoxFieldSettings.borderColor);\n this.checkBoxFieldPropertyChanged.isNameChanged = !isNullOrUndefined(checkBoxFieldSettings.name);\n this.checkBoxFieldPropertyChanged.isToolTipChanged = !isNullOrUndefined(checkBoxFieldSettings.tooltip);\n this.checkBoxFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(checkBoxFieldSettings.thickness);\n this.checkBoxFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(checkBoxFieldSettings.visibility);\n this.checkBoxFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(checkBoxFieldSettings.isPrint);\n this.checkBoxFieldPropertyChanged.isCheckedChanged = !isNullOrUndefined(checkBoxFieldSettings.isChecked);\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateRadioButtonFieldSettings = function (radioButtonFieldSettings) {\n this.radioButtonFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(radioButtonFieldSettings.isReadOnly);\n this.radioButtonFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(radioButtonFieldSettings.isRequired);\n this.radioButtonFieldPropertyChanged.isBackgroundColorChanged = !isNullOrUndefined(radioButtonFieldSettings.backgroundColor);\n this.radioButtonFieldPropertyChanged.isBorderColorChanged = !isNullOrUndefined(radioButtonFieldSettings.borderColor);\n this.radioButtonFieldPropertyChanged.isNameChanged = !isNullOrUndefined(radioButtonFieldSettings.name);\n this.radioButtonFieldPropertyChanged.isToolTipChanged = !isNullOrUndefined(radioButtonFieldSettings.tooltip);\n this.radioButtonFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(radioButtonFieldSettings.thickness);\n this.radioButtonFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(radioButtonFieldSettings.visibility);\n this.radioButtonFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(radioButtonFieldSettings.isPrint);\n this.radioButtonFieldPropertyChanged.isSelectedChanged = !isNullOrUndefined(radioButtonFieldSettings.isSelected);\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateDropDownFieldSettings = function (dropdownFieldSettings) {\n this.dropdownFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(dropdownFieldSettings.isReadOnly);\n this.dropdownFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(dropdownFieldSettings.isRequired);\n this.dropdownFieldPropertyChanged.isValueChanged = !isNullOrUndefined(dropdownFieldSettings.value);\n this.dropdownFieldPropertyChanged.isBackgroundColorChanged = !isNullOrUndefined(dropdownFieldSettings.backgroundColor);\n this.dropdownFieldPropertyChanged.isBorderColorChanged = !isNullOrUndefined(dropdownFieldSettings.borderColor);\n this.dropdownFieldPropertyChanged.isAlignmentChanged = !isNullOrUndefined(dropdownFieldSettings.alignment);\n this.dropdownFieldPropertyChanged.isColorChanged = !isNullOrUndefined(dropdownFieldSettings.color);\n this.dropdownFieldPropertyChanged.isFontFamilyChanged = !isNullOrUndefined(dropdownFieldSettings.fontFamily);\n this.dropdownFieldPropertyChanged.isFontSizeChanged = !isNullOrUndefined(dropdownFieldSettings.fontSize);\n this.dropdownFieldPropertyChanged.isFontStyleChanged = !isNullOrUndefined(dropdownFieldSettings.fontStyle);\n this.dropdownFieldPropertyChanged.isNameChanged = !isNullOrUndefined(dropdownFieldSettings.name);\n this.dropdownFieldPropertyChanged.isToolTipChanged = !isNullOrUndefined(dropdownFieldSettings.tooltip);\n this.dropdownFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(dropdownFieldSettings.thickness);\n this.dropdownFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(dropdownFieldSettings.visibility);\n this.dropdownFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(dropdownFieldSettings.isPrint);\n this.dropdownFieldPropertyChanged.isOptionChanged = !isNullOrUndefined(dropdownFieldSettings.options);\n };\n /**\n * @private\n */\n FormDesigner.prototype.updateListBoxFieldSettings = function (listBoxFieldSettings) {\n this.listBoxFieldPropertyChanged.isReadOnlyChanged = !isNullOrUndefined(listBoxFieldSettings.isReadOnly);\n this.listBoxFieldPropertyChanged.isRequiredChanged = !isNullOrUndefined(listBoxFieldSettings.isRequired);\n this.listBoxFieldPropertyChanged.isBackgroundColorChanged = !isNullOrUndefined(listBoxFieldSettings.backgroundColor);\n this.listBoxFieldPropertyChanged.isBorderColorChanged = !isNullOrUndefined(listBoxFieldSettings.borderColor);\n this.listBoxFieldPropertyChanged.isAlignmentChanged = !isNullOrUndefined(listBoxFieldSettings.alignment);\n this.listBoxFieldPropertyChanged.isColorChanged = !isNullOrUndefined(listBoxFieldSettings.color);\n this.listBoxFieldPropertyChanged.isFontFamilyChanged = !isNullOrUndefined(listBoxFieldSettings.fontFamily);\n this.listBoxFieldPropertyChanged.isFontSizeChanged = !isNullOrUndefined(listBoxFieldSettings.fontSize);\n this.listBoxFieldPropertyChanged.isFontStyleChanged = !isNullOrUndefined(listBoxFieldSettings.fontStyle);\n this.listBoxFieldPropertyChanged.isNameChanged = !isNullOrUndefined(listBoxFieldSettings.name);\n this.listBoxFieldPropertyChanged.isToolTipChanged = !isNullOrUndefined(listBoxFieldSettings.tooltip);\n this.listBoxFieldPropertyChanged.isThicknessChanged = !isNullOrUndefined(listBoxFieldSettings.thickness);\n this.listBoxFieldPropertyChanged.isVisibilityChanged = !isNullOrUndefined(listBoxFieldSettings.visibility);\n this.listBoxFieldPropertyChanged.isPrintChanged = !isNullOrUndefined(listBoxFieldSettings.isPrint);\n this.listBoxFieldPropertyChanged.isOptionChanged = !isNullOrUndefined(listBoxFieldSettings.options);\n };\n FormDesigner.prototype.getFontStyleName = function (fontStyle, drawingObject) {\n var fontStyleName = 'None';\n if (fontStyle === 1) {\n drawingObject.font.isBold = true;\n fontStyleName = 'Bold';\n }\n if (fontStyle === 2) {\n drawingObject.font.isItalic = true;\n fontStyleName = 'Italic';\n }\n if (fontStyle === 3) {\n drawingObject.font.isBold = true;\n drawingObject.font.isItalic = true;\n fontStyleName = 'Bold Italic';\n }\n if (fontStyle === 4) {\n drawingObject.font.isUnderline = true;\n fontStyleName = 'Underline';\n }\n if (fontStyle === 5) {\n drawingObject.font.isBold = true;\n drawingObject.font.isUnderline = true;\n fontStyleName = 'Bold Underline';\n }\n if (fontStyle === 6) {\n drawingObject.font.isUnderline = true;\n drawingObject.font.isItalic = true;\n fontStyleName = 'Underline Italic';\n }\n if (fontStyle === 7) {\n drawingObject.font.isBold = true;\n drawingObject.font.isItalic = true;\n drawingObject.font.isUnderline = true;\n fontStyleName = 'Bold Italic Underline';\n }\n if (fontStyle === 8) {\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Strikethrough';\n }\n if (fontStyle === 9) {\n drawingObject.font.isBold = true;\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Bold Strikethrough';\n }\n if (fontStyle === 10) {\n drawingObject.font.isItalic = true;\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Italic Strikethrough';\n }\n if (fontStyle === 11) {\n drawingObject.font.isBold = true;\n drawingObject.font.isItalic = true;\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Bold Italic Strikethrough';\n }\n if (fontStyle === 12) {\n drawingObject.font.isUnderline = true;\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Underline Strikethrough';\n }\n if (fontStyle === 13) {\n drawingObject.font.isBold = true;\n drawingObject.font.isUnderline = true;\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Bold Underline Strikethrough';\n }\n if (fontStyle === 14) {\n drawingObject.font.isItalic = true;\n drawingObject.font.isUnderline = true;\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Italic Underline Strikethrough';\n }\n if (fontStyle === 15) {\n drawingObject.font.isBold = true;\n drawingObject.font.isItalic = true;\n drawingObject.font.isUnderline = true;\n drawingObject.font.isStrikeout = true;\n fontStyleName = 'Bold Italic Underline Strikethrough';\n }\n return fontStyleName;\n };\n FormDesigner.prototype.getAlignment = function (alignment) {\n var align;\n if (alignment === 'left') {\n align = 'left';\n }\n else if (alignment === 'right') {\n align = 'right';\n }\n else if (alignment === 'center') {\n align = 'center';\n }\n this.formFieldAlign = align;\n };\n FormDesigner.prototype.getFontStyle = function (font) {\n if (font.isBold) {\n this.formFieldBold = 'bold';\n }\n if (font.isItalic) {\n this.formFieldItalic = 'italic';\n }\n if (font.isUnderline) {\n this.formFieldUnderline = 'underline';\n }\n if (font.isStrikeout) {\n this.formFieldStrikeOut = 'line-through';\n }\n };\n return FormDesigner;\n}());\n\n/**\n * export types\n */\n\n/**\n * PdfViewer component exported items\n */\n\n/**\n * export PDF viewer modules\n */\n\nexport { Drawing, findActiveElement, findObjectsUnderMouse, findObjectUnderMouse, CalculateLeaderPoints, findElementUnderMouse, insertObject, findTargetShapeElement, findObjects, findActivePage, ActiveElements, getConnectorPoints, getSegmentPath, updateSegmentElement, getSegmentElement, updateDecoratorElement, getDecoratorElement, clipDecorators, clipDecorator, initDistanceLabel, updateDistanceLabel, updateRadiusLabel, initPerimeterLabel, updatePerimeterLabel, removePerimeterLabel, updateCalibrateLabel, getPolygonPath, textElement, initLeaders, initLeader, isPointOverConnector, findNearestPoint, getDecoratorShape, renderAdornerLayer, createSvg, isLineShapes, setElementStype, findPointsLength, findPerimeterLength, getBaseShapeAttributes, getFunction, cloneObject, cloneArray, getInternalProperties, isLeader, PdfBounds, PdfFont, PdfAnnotationBase, PdfFormFieldBase, ZOrderPageTable, Selector, ToolBase, SelectTool, MoveTool, StampTool, InkDrawingTool, ConnectTool, ResizeTool, NodeDrawingTool, PolygonDrawingTool, LineTool, RotateTool, Annotation, LinkAnnotation, TextMarkupAnnotation, MeasureAnnotation, ShapeAnnotation, StampAnnotation, StickyNotesAnnotation, FreeTextAnnotation, InputElement, InkAnnotation, NavigationPane, PdfViewerBase, TextLayer, ContextMenu$1 as ContextMenu, CommentStatus, FontStyle, ContextMenuItem, SignatureType, AnnotationResizerLocation, DisplayMode, CursorType, DynamicStampItem, SignStampItem, StandardBusinessStampItem, AllowedInteraction, AnnotationDataFormat, FormFieldDataFormat, AjaxHandler, Signature, Spinner, createSpinner, showSpinner, hideSpinner, setSpinner, BlazorUiAdaptor, Magnification, Navigation, ThumbnailView, Toolbar$1 as Toolbar, AnnotationToolbar, FormDesignerToolbar, ToolbarSettings, AjaxRequestSettings, CustomStamp, AnnotationToolbarSettings, FormDesignerToolbarSettings, SignatureFieldSettings, InitialFieldSettings, SignatureIndicatorSettings, SignatureDialogSettings, ServerActionSettings, StrikethroughSettings, UnderlineSettings, HighlightSettings, LineSettings, ArrowSettings, RectangleSettings, CircleSettings, ShapeLabelSettings, PolygonSettings, StampSettings, CustomStampSettings, DistanceSettings, PerimeterSettings, AreaSettings, RadiusSettings, VolumeSettings, InkAnnotationSettings, StickyNotesSettings, MeasurementSettings, FreeTextSettings, AnnotationSelectorSettings, TextSearchColorSettings, HandWrittenSignatureSettings, AnnotationSettings, DocumentTextCollectionSettings, TextDataSettings, RectangleBounds, TileRenderingSettings, ScrollSettings, FormField, ContextMenuSettings, TextFieldSettings, PasswordFieldSettings, CheckBoxFieldSettings, RadioButtonFieldSettings, DropdownFieldSettings, ListBoxFieldSettings, Item, PdfViewer, BookmarkView, TextSelection, TextSearch, Print, FormFields, FormDesigner };\n","import { Animation, Browser, ChildProperty, Collection, Complex, Component, Draggable, Event, EventHandler, L10n, NotifyPropertyChanges, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, classList, closest, compile, createElement, detach, extend, formatUnit, getUniqueID, isBlazor, isNullOrUndefined, prepend, remove, removeClass, select, selectAll, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\n\n/**\n * Position library\n */\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nfunction calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nfunction calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && element.classList.contains('e-date-range-wrapper')) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n\n/**\n * Collision module.\n */\nvar parentDocument$1;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nfunction fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument$1 = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nfunction isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument$1 = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nfunction flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument$1 = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n element.style.top = (pos.position.top + pos.offsetY - (top)) + 'px';\n element.style.left = (pos.position.left + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft$1()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft$1()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop$1()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop$1()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft$1() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft$1() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop$1() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop$1() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop$1() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument$1.documentElement.scrollTop || parentDocument$1.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft$1() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument$1.documentElement.scrollLeft || parentDocument$1.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * Specifies the offset position values.\n */\nvar PositionData = /** @__PURE__ @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
    \n *
    Popup Content
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @__PURE__ @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY) {\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nfunction getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nfunction getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nfunction getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n\n/**\n * Popup Components\n */\n\n/**\n * Popup Components\n */\n\n/**\n * Resize library\n */\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nfunction createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNullOrUndefined(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNullOrUndefined(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNullOrUndefined(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNullOrUndefined(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNullOrUndefined(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNullOrUndefined(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNullOrUndefined(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNullOrUndefined(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNullOrUndefined(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNullOrUndefined(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNullOrUndefined(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNullOrUndefined(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNullOrUndefined(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNullOrUndefined(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNullOrUndefined(containerElement)) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNullOrUndefined(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNullOrUndefined(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNullOrUndefined(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNullOrUndefined(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNullOrUndefined(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNullOrUndefined(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNullOrUndefined(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNullOrUndefined(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNullOrUndefined(resizeWestWidth)) {\n if (!isNullOrUndefined(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNullOrUndefined(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNullOrUndefined(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNullOrUndefined(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNullOrUndefined(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNullOrUndefined(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nfunction setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nfunction setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nfunction setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nfunction removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNullOrUndefined(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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 ButtonProps = /** @__PURE__ @class */ (function (_super) {\n __extends$1(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate$1([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate$1([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate$1([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$1(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$1([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate$1([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate$1([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @__PURE__ @class */ (function (_super) {\n __extends$1(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains(\"e-toolbar-pop\"))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n _this.element.style.position = 'relative';\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
    Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = isNullOrUndefined(oldProp.position.X) ? this.position.X : oldProp.position.X;\n var positionY = isNullOrUndefined(oldProp.position.Y) ? this.position.Y : oldProp.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n _this.element.style.position = 'relative';\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.show() : _this.popupObj.show(openAnimation);\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n _this.animationSettings.effect === 'None' ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation);\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate$1([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate$1([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate$1([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate$1([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate$1([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate$1([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate$1([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate$1([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate$1([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate$1([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate$1([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate$1([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate$1([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nvar DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : DLG_UTIL_DEFAULT_TITLE;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n // eslint-disable-next-line\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n\n/**\n * Dialog Component\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT$1 = 'e-tooltip';\nvar RTL$1 = 'e-rtl';\nvar DEVICE$1 = 'e-bigger';\nvar ICON$1 = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT$1 = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation$1 = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Animation$$1, _super);\n function Animation$$1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation$$1.prototype, \"open\", void 0);\n __decorate$2([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation$$1.prototype, \"close\", void 0);\n return Animation$$1;\n}(ChildProperty));\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
    Show Tooltip
    \n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @__PURE__ @class */ (function (_super) {\n __extends$2(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT$1);\n this.element.setAttribute('tabindex', '0');\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var offsetPos = this.calculateTooltipOffset(this.position);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === \"Click\" && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position) {\n var pos = { top: 0, left: 0 };\n var tooltipEleWidth = this.tooltipEle.offsetWidth;\n var tooltipEleHeight = this.tooltipEle.offsetHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n var tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n var tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n var tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n var tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n if (this.showTipPointer === false) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n // eslint-disable-next-line\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n if (this.enableHtmlParse) {\n var nodeList = tempArr.length;\n for (var i = 0; i < nodeList; i++) {\n tooltipContent[append(tempArr, tooltipContent), 'innerHTML'] = this.content;\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n }\n else {\n // eslint-disable-next-line\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n return;\n }\n var tipClose = this.createElement('div', { className: ICON$1 + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n // eslint-disable-next-line\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n // eslint-disable-next-line security/detect-non-literal-fs-filename -- Safe as no value holds user input\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // eslint-disable-next-line\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT$1 + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n Animation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE$1);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n Animation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n // eslint-disable-next-line\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n // eslint-disable-next-line\n var openAnimation_1 = {\n name: showAnimation.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n // eslint-disable-next-line\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var offsetPos = this.calculateTooltipOffset(newpos);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var left = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: false }, eleOffset).left : eleOffset.left;\n this.tooltipEle.style.display = 'block';\n if (this.showTipPointer && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n var arrowleft = parseInt(arrowEle.style.left, 10) - (left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = left;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n // eslint-disable-next-line\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n // eslint-disable-next-line\n var closeAnimation = {\n name: hideAnimation.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT$1);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n Animation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var pos = this.calculateTooltipOffset(this.position);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT$1) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT$1))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n EventHandler.add(this.element, 'DOMNodeInserted', this.updateTarget, this);\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.updateTarget = function (e) {\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target = [].slice.call(selectAll(this.target, this.element));\n if (target.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n target.setAttribute('tabindex', '0');\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focus', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n target.setAttribute(\"tabindex\", \"0\");\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n EventHandler.remove(this.element, 'DOMNodeInserted', this.updateTarget);\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n target.removeAttribute('tabindex');\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focus', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL$1);\n }\n else {\n removeClass([this.tooltipEle], RTL$1);\n }\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT$1);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n };\n __decorate$2([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate$2([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate$2([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate$2([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate$2([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate$2([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate$2([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate$2([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate$2([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate$2([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate$2([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate$2([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate$2([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate$2([\n Complex({}, Animation$1)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate$2([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate$2([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate$2([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate$2([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\n\n/**\n * Tooltip modules\n */\n\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nfunction Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nfunction createSpinner(args, internalCreateElement) {\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n container.wrap.classList.add(args.cssClass);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if ((!isNullOrUndefined(container.querySelector('svg.e-spin-material')))\n && (!isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle')))) {\n var svg = container.querySelector('svg.e-spin-material');\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nfunction showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n spinnerWrap = container.classList.contains(CLS_SPINWRAP) ? container :\n container.querySelector('.' + CLS_SPINWRAP);\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nfunction hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nfunction setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n}\n\n/**\n * spinner modules\n */\n\n/**\n * Popup Components\n */\n\nexport { PositionData, Popup, getScrollableParent, getZindexPartial, getMaxZindex, calculateRelativeBasedPosition, calculatePosition, fit, isCollide, flip, ButtonProps, AnimationSettings, Dialog, DialogUtility, Animation$1 as Animation, Tooltip, Spinner, createSpinner, showSpinner, hideSpinner, setSpinner };\n","import { Ajax, Base, Browser, ChildProperty, Complex, Component, Event, EventHandler, KeyboardEvents, L10n, NotifyPropertyChanges, Observer, Property, SanitizeHtmlHelper, Touch, addClass, append, attributes, closest, compile, createElement, debounce, detach, extend, formatUnit, getEnumValue, getInstance, getUniqueID, isNullOrUndefined, prepend, print, removeClass, select, selectAll, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { DropDownButton } from '@syncfusion/ej2-splitbuttons';\nimport { Dialog, Popup, getScrollableParent, isCollide } from '@syncfusion/ej2-popups';\nimport { ColorPicker, NumericTextBox, TextBox, Uploader } from '@syncfusion/ej2-inputs';\nimport { Button, CheckBox, RadioButton } from '@syncfusion/ej2-buttons';\nimport { AjaxSettings, ContextMenu, ContextMenuSettings, DetailsView, DetailsViewSettings, FileManager, NavigationPane, NavigationPaneSettings, SearchSettings, Toolbar as Toolbar$1, ToolbarSettings, UploadSettings } from '@syncfusion/ej2-filemanager';\n\n/**\n * @hidden\n * @deprecated\n */\nvar created = 'create';\n/**\n * @hidden\n * @deprecated\n */\nvar destroyed = 'destroy';\n/**\n * @hidden\n * @deprecated\n */\nvar tableclass = 'tableclass';\n/**\n * @hidden\n * @deprecated\n */\nvar load = 'load';\n/**\n * Specifies Rich Text Editor internal events\n */\n/**\n * @hidden\n * @deprecated\n */\nvar initialLoad = 'initial-load';\n/**\n * @hidden\n * @deprecated\n */\nvar contentChanged = 'content-changed';\n/**\n * @hidden\n * @deprecated\n */\nvar initialEnd = 'initial-end';\n/**\n * @hidden\n * @deprecated\n */\nvar iframeMouseDown = 'iframe-click';\n/**\n * @hidden\n * @deprecated\n */\nvar destroy = 'destroy';\n/**\n * @hidden\n * @deprecated\n */\nvar toolbarClick = 'toolbarClick';\n/**\n * @hidden\n * @deprecated\n */\nvar toolbarRefresh = 'toolbar-refresh';\n/**\n * @hidden\n * @deprecated\n */\nvar refreshBegin = 'refresh-begin';\n/**\n * @hidden\n * @deprecated\n */\nvar toolbarUpdated = 'toolbar-updated';\n/**\n * @hidden\n * @deprecated\n */\nvar bindOnEnd = 'bind-on-end';\n/**\n * @hidden\n * @deprecated\n */\nvar renderColorPicker = 'render-color-picker';\n/**\n * @hidden\n * @deprecated\n */\nvar htmlToolbarClick = 'html-toolbar-click';\n/**\n * @hidden\n * @deprecated\n */\nvar markdownToolbarClick = 'markdown-toolbar-click';\n/**\n * @hidden\n * @deprecated\n */\nvar destroyColorPicker = 'destroy-color-picker';\n/**\n * @hidden\n * @deprecated\n */\nvar modelChanged = 'model-changed';\n/**\n * @hidden\n * @deprecated\n */\nvar tableModulekeyUp = 'tableModulekeyUp';\n/**\n * @hidden\n * @deprecated\n */\nvar keyUp = 'keyUp';\n/**\n * @hidden\n * @deprecated\n */\nvar keyDown = 'keyDown';\n/**\n * @hidden\n * @deprecated\n */\nvar mouseUp = 'mouseUp';\n/**\n * @hidden\n * @deprecated\n */\nvar toolbarCreated = 'toolbarCreated';\n/**\n * @hidden\n * @deprecated\n */\nvar toolbarRenderComplete = 'toolbarRenderComplete';\n/**\n * @hidden\n * @deprecated\n */\nvar enableFullScreen = 'enableFullScreen';\n/**\n * @hidden\n * @deprecated\n */\nvar disableFullScreen = 'disableFullScreen';\n/**\n * @hidden\n * @deprecated\n */\nvar dropDownSelect = 'dropDownSelect';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeDropDownItemRender = 'beforeDropDownItemRender';\n/**\n * @hidden\n * @deprecated\n */\nvar execCommandCallBack = 'execCommandCallBack';\n/**\n * @hidden\n * @deprecated\n */\nvar imageToolbarAction = 'image-toolbar-action';\n/**\n * @hidden\n * @deprecated\n */\nvar audioToolbarAction = 'audio-toolbar-action';\n/**\n * @hidden\n * @deprecated\n */\nvar videoToolbarAction = 'video-toolbar-action';\n/**\n * @hidden\n * @deprecated\n */\nvar linkToolbarAction = 'link-toolbar-action';\n/**\n * @hidden\n * @deprecated\n */\nvar windowResize = 'resize';\n/**\n * @hidden\n * @deprecated\n */\nvar resizeStart = 'resizeStart';\n/**\n * @hidden\n * @deprecated\n */\nvar onResize = 'resizing';\n/**\n * @hidden\n * @deprecated\n */\nvar resizeStop = 'resizeStop';\n/**\n * @hidden\n * @deprecated\n */\nvar undo = 'undo';\n/**\n * @hidden\n * @deprecated\n */\nvar redo = 'redo';\n/**\n * @hidden\n * @deprecated\n */\nvar insertLink = 'insertLink';\n/**\n * @hidden\n * @deprecated\n */\nvar unLink = 'unLink';\n/**\n * @hidden\n * @deprecated\n */\nvar editLink = 'editLink';\n/**\n * @hidden\n * @deprecated\n */\nvar openLink = 'openLink';\n/**\n * @hidden\n * @deprecated\n */\nvar actionBegin = 'actionBegin';\n/**\n * @hidden\n * @deprecated\n */\nvar actionComplete = 'actionComplete';\n/**\n * @hidden\n * @deprecated\n */\nvar updatedToolbarStatus = 'updatedToolbarStatus';\n/**\n * @hidden\n * @deprecated\n */\nvar actionSuccess = 'actionSuccess';\n/**\n * @hidden\n * @deprecated\n */\nvar updateToolbarItem = 'updateToolbarItem';\n/**\n * @hidden\n * @deprecated\n */\nvar insertImage = 'insertImage';\n/**\n * @hidden\n * @deprecated\n */\nvar insertAudio = 'insertAudio';\n/**\n * @hidden\n * @deprecated\n */\nvar insertVideo = 'insertVideo';\n/**\n * @hidden\n * @deprecated\n */\nvar insertCompleted = 'insertCompleted';\n/**\n * @hidden\n * @deprecated\n */\nvar imageLeft = 'justifyLeft';\n/**\n * @hidden\n * @deprecated\n */\nvar imageRight = 'justifyRight';\n/**\n * @hidden\n * @deprecated\n */\nvar imageCenter = 'justifyCenter';\n/**\n * @hidden\n * @deprecated\n */\nvar imageBreak = 'break';\n/**\n * @hidden\n * @deprecated\n */\nvar imageInline = 'inline';\n/**\n * @hidden\n * @deprecated\n */\nvar imageLink = 'insertImgLink';\n/**\n * @hidden\n * @deprecated\n */\nvar imageAlt = 'imgAltText';\n/**\n * @hidden\n * @deprecated\n */\nvar imageDelete = 'delete';\n/**\n * @hidden\n * @deprecated\n */\nvar audioDelete = 'delete';\n/**\n * @hidden\n * @deprecated\n */\nvar videoDelete = 'delete';\n/**\n * @hidden\n * @deprecated\n */\nvar imageCaption = 'caption';\n/**\n * @hidden\n * @deprecated\n */\nvar imageSize = 'imageSize';\n/**\n * @hidden\n * @deprecated\n */\nvar videoSize = 'videoSize';\n/**\n * @hidden\n * @deprecated\n */\nvar sourceCode = 'sourceCode';\n/**\n * @hidden\n * @deprecated\n */\nvar updateSource = 'updateSource';\n/**\n * @hidden\n * @deprecated\n */\nvar toolbarOpen = 'toolbarOpen';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeDropDownOpen = 'beforeDropDownOpen';\n/**\n * @hidden\n * @deprecated\n */\nvar selectionSave = 'selection-save';\n/**\n * @hidden\n * @deprecated\n */\nvar selectionRestore = 'selection-restore';\n/**\n * @hidden\n * @deprecated\n */\nvar expandPopupClick = 'expandPopupClick';\n/**\n * @hidden\n * @deprecated\n */\nvar count = 'count';\n/**\n * @hidden\n * @deprecated\n */\nvar contentFocus = 'contentFocus';\n/**\n * @hidden\n * @deprecated\n */\nvar contentBlur = 'contentBlur';\n/**\n * @hidden\n * @deprecated\n */\nvar mouseDown = 'mouseDown';\n/**\n * @hidden\n * @deprecated\n */\nvar sourceCodeMouseDown = 'sourceCodeMouseDown';\n/**\n * @hidden\n * @deprecated\n */\nvar editAreaClick = 'editAreaClick';\n/**\n * @hidden\n * @deprecated\n */\nvar scroll = 'scroll';\n/**\n * @hidden\n * @deprecated\n */\nvar contentscroll = 'contentscroll';\n/**\n * @hidden\n * @deprecated\n */\nvar colorPickerChanged = 'colorPickerChanged';\n/**\n * @hidden\n * @deprecated\n */\nvar tableColorPickerChanged = 'tableColorPickerChanged';\n/**\n * @hidden\n * @deprecated\n */\nvar focusChange = 'focusChange';\n/**\n * @hidden\n * @deprecated\n */\nvar selectAll$1 = 'selectAll';\n/**\n * @hidden\n * @deprecated\n */\nvar selectRange = 'selectRange';\n/**\n * @hidden\n * @deprecated\n */\nvar getSelectedHtml = 'getSelectedHtml';\n/**\n * @hidden\n * @deprecated\n */\nvar renderInlineToolbar = 'renderInlineToolbar';\n/**\n * @hidden\n * @deprecated\n */\nvar paste = 'paste-content';\n/**\n * @hidden\n * @deprecated\n */\nvar imgModule = 'imageModule';\n/**\n * @hidden\n * @deprecated\n */\nvar rtlMode = 'rtl-mode';\n/**\n * @hidden\n * @deprecated\n */\nvar createTable = 'createTable';\n/**\n * @hidden\n * @deprecated\n */\nvar docClick = 'docClick';\n/**\n * @hidden\n * @deprecated\n */\nvar tableToolbarAction = 'table-toolbar-action';\n/**\n * @hidden\n * @deprecated\n */\nvar checkUndo = 'checkUndoStack';\n/**\n * @hidden\n * @deprecated\n */\nvar readOnlyMode = 'readOnlyMode';\n/**\n * @hidden\n * @deprecated\n */\nvar moduleDestroy = 'moduleDestroy';\n/**\n * @hidden\n * @deprecated\n */\nvar pasteClean = 'pasteClean';\n/**\n * @hidden\n * @deprecated\n */\nvar enterHandler = 'enterHandler';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeDialogOpen = 'beforeDialogOpen';\n/**\n * @hidden\n * @deprecated\n */\nvar clearDialogObj = 'clearDialogObj';\n/**\n * @hidden\n * @deprecated\n */\nvar dialogOpen = 'dialogOpen';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeDialogClose = 'beforeDialogClose';\n/**\n * @hidden\n * @deprecated\n */\nvar dialogClose = 'dialogClose';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeQuickToolbarOpen = 'beforeQuickToolbarOpen';\n/**\n * @hidden\n * @deprecated\n */\nvar quickToolbarOpen = 'quickToolbarOpen';\n/**\n * @hidden\n * @deprecated\n */\nvar quickToolbarClose = 'quickToolbarClose';\n/**\n * @hidden\n * @deprecated\n */\nvar popupHide = 'popupHide';\n/**\n * @hidden\n * @deprecated\n */\nvar imageSelected = 'imageSelected';\n/**\n * @hidden\n * @deprecated\n */\nvar imageUploading = 'imageUploading';\n/**\n * @hidden\n * @deprecated\n */\nvar imageUploadSuccess = 'imageUploadSuccess';\n/**\n * @hidden\n * @deprecated\n */\nvar imageUploadFailed = 'imageUploadFailed';\n/**\n * @hidden\n * @deprecated\n */\nvar imageRemoving = 'imageRemoving';\n/**\n * @hidden\n * @deprecated\n */\nvar fileSelected = 'fileSelected';\n/**\n * @hidden\n * @deprecated\n */\nvar fileUploading = 'fileUploading';\n/**\n * @hidden\n * @deprecated\n */\nvar fileUploadSuccess = 'fileUploadSuccess';\n/**\n * @hidden\n * @deprecated\n */\nvar fileUploadFailed = 'fileUploadFailed';\n/**\n * @hidden\n * @deprecated\n */\nvar fileRemoving = 'fileRemoving';\n/**\n * @hidden\n * @deprecated\n */\nvar afterImageDelete = 'afterImageDelete';\n/**\n * @hidden\n * @deprecated\n */\nvar afterMediaDelete = 'afterMediaDelete';\n/**\n * @hidden\n * @deprecated\n */\nvar drop = 'drop';\n/**\n * @hidden\n * @deprecated\n */\nvar xhtmlValidation = 'xhtmlValidation';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeImageUpload = 'beforeImageUpload';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeFileUpload = 'beforeFileUpload';\n/**\n * @hidden\n * @deprecated\n */\nvar resizeInitialized = 'resizeInitialized';\n/**\n * @hidden\n * @deprecated\n */\nvar renderFileManager = 'renderFileManager';\n/**\n * @hidden\n * @deprecated\n */\nvar beforeImageDrop = 'beforeImageDrop';\n/**\n * @hidden\n * @deprecated\n */\nvar dynamicModule = 'dynamicModule';\n/**\n * @hidden\n * @deprecated\n */\nvar beforePasteCleanup = 'beforePasteCleanup';\n/**\n * @hidden\n * @deprecated\n */\nvar afterPasteCleanup = 'afterPasteCleanup';\n/**\n * @hidden\n * @deprecated\n */\nvar updateTbItemsStatus = 'updateTbItemsStatus';\n/**\n * @hidden\n * @deprecated\n */\nvar showLinkDialog = 'showLinkDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar closeLinkDialog = 'closeLinkDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar showImageDialog = 'showImageDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar showAudioDialog = 'showAudioDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar showVideoDialog = 'showVideoDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar closeImageDialog = 'closeImageDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar closeAudioDialog = 'closeAudioDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar closeVideoDialog = 'closeVideoDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar showTableDialog = 'showTableDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar closeTableDialog = 'closeTableDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar bindCssClass = 'closeTableDialog';\n/**\n * @hidden\n * @deprecated\n */\nvar blockEmptyNodes = \"address:empty, article:empty, aside:empty, blockquote:empty,\\n details:empty, dd:empty, div:empty, dl:empty, dt:empty, fieldset:empty, footer:empty,form:empty, h1:empty,\\n h2:empty, h3:empty, h4:empty, h5:empty, h6:empty, header:empty, hgroup:empty, li:empty, main:empty, nav:empty,\\n noscript:empty, output:empty, p:empty, pre:empty, section:empty, td:empty, th:empty\";\n/**\n * @hidden\n * @deprecated\n */\nvar inlineEmptyNodes = \"a:empty, abbr:empty, acronym:empty, b:empty, bdi:empty, bdo:empty, big:empty, button:empty,\\ncanvas:empty, cite:empty, code:empty, data:empty, datalist:empty, del:empty, dfn:empty, em:empty, font:empty, i:empty, iframe:empty,\\nins:empty, kbd:empty, label:empty, map:empty, mark:empty, meter:empty, noscript:empty, object:empty, output:empty, picture:empty, progress:empty,\\nq:empty, ruby:empty, s:empty, samp:empty, script:empty, select:empty, slot:empty, small:empty, span:empty, strong:empty, strike:empty, sub:empty, sup:empty, svg:empty,\\ntemplate:empty, textarea:empty, time:empty, u:empty, tt:empty, var:empty, wbr:empty\";\n\n/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE = 'e-richtexteditor';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTL = 'e-rtl';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_CONTENT = 'e-content';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_DISABLED = 'e-disabled';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_SCRIPT_SHEET = 'rte-iframe-script-sheet';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_STYLE_SHEET = 'rte-iframe-style-sheet';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TOOLBAR = 'e-rte-toolbar';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_FIXED = 'e-rte-tb-fixed';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_FLOAT = 'e-rte-tb-float';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_ABS_FLOAT = 'e-rte-tb-abs-float';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_INLINE = 'e-rte-inline';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_INLINE = 'e-rte-tb-inline';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_EXPAND_TB = 'e-rte-tb-expand';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FULL_SCREEN = 'e-rte-full-screen';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_QUICK_TB = 'e-rte-quick-toolbar';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_POP = 'e-rte-pop';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_STATIC = 'e-tb-static';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_QUICK_POP = 'e-rte-quick-popup';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_QUICK_DROPDOWN = 'e-quick-dropdown';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMAGE_POP = 'e-rte-image-popup';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_INLINE_POP = 'e-rte-inline-popup';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_INLINE_DROPDOWN = 'e-rte-inline-dropdown';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_DROPDOWN_POPUP = 'e-rte-dropdown-popup';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_DROPDOWN_ICONS = 'e-rte-dropdown-icons';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_DROPDOWN_ITEMS = 'e-rte-dropdown-items';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_DROPDOWN_BTN = 'e-rte-dropdown-btn';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_CONTENT = 'e-rte-content';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_ITEM = 'e-toolbar-item';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_EXTENDED = 'e-toolbar-extended';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_WRAP = 'e-toolbar-wrapper';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_POPUP = 'e-popup';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_SEPARATOR = 'e-separator';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_MINIMIZE = 'e-minimize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_MAXIMIZE = 'e-maximize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_BACK = 'e-back';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_SHOW = 'e-show';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_HIDE = 'e-hide';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_VISIBLE = 'e-visible';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FOCUS = 'e-focused';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RM_WHITE_SPACE = 'e-remove-white-space';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMGRIGHT = 'e-imgright';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMGLEFT = 'e-imgleft';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMGCENTER = 'e-imgcenter';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMGBREAK = 'e-imgbreak';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_AUDIOBREAK = 'e-audio-break';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_CLICKELEM = 'e-clickelem';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_VID_CLICK_ELEM = 'e-video-clickelem';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_AUDIOWRAP = 'e-audio-wrap';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_VIDEOWRAP = 'e-video-wrap';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_VIDEOBREAK = 'e-video-break';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_CAPTION = 'e-img-caption';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_CAPTION = 'e-rte-img-caption';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_CAPINLINE = 'e-caption-inline';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMGINLINE = 'e-imginline';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_AUDIOINLINE = 'e-audio-inline';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_VIDEOINLINE = 'e-video-inline';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_COUNT = 'e-rte-character-count';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_WARNING = 'e-warning';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_ERROR = 'e-error';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_ICONS = 'e-icons';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_ACTIVE = 'e-active';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_EXPAND_OPEN = 'e-expand-open';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_ELEMENTS = 'e-rte-elements';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_BTN = 'e-tbar-btn';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_HR_SEPARATOR = 'e-rte-horizontal-separator';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_IOS_FIX = 'e-tbar-ios-fixed';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_LIST_PRIMARY_CONTENT = 'e-rte-list-primary-content';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_NUMBERFORMATLIST_TB_BTN = 'e-rte-numberformatlist-dropdown';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_BULLETFORMATLIST_TB_BTN = 'e-rte-bulletformatlist-dropdown';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FORMATS_TB_BTN = 'e-formats-tbar-btn';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FONT_NAME_TB_BTN = 'e-font-name-tbar-btn';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FONT_SIZE_TB_BTN = 'e-font-size-tbar-btn';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_ALIGN_TB_BTN = 'e-alignment-tbar-btn';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FONT_COLOR_TARGET = 'e-rte-fontcolor-element';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_BACKGROUND_COLOR_TARGET = 'e-rte-backgroundcolor-element';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_COLOR_CONTENT = 'e-rte-color-content';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FONT_COLOR_DROPDOWN = 'e-rte-fontcolor-dropdown';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_BACKGROUND_COLOR_DROPDOWN = 'e-rte-backgroundcolor-dropdown';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_COLOR_PALETTE = 'e-rte-square-palette';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_FONT_COLOR_PICKER = 'e-rte-fontcolor-colorpicker';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_BACKGROUND_COLOR_PICKER = 'e-rte-backgroundcolor-colorpicker';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_READONLY = 'e-rte-readonly';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TABLE_SEL = 'e-cell-select';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_DASH_BOR = 'e-dashed-border';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_ALT_BOR = 'e-alternate-border';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_COL_RES = 'e-column-resize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_ROW_RES = 'e-row-resize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TB_BOX_RES = 'e-table-box';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_HIDDEN = 'e-rte-hidden';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_PASTE_KEEP_FORMAT = 'e-rte-keepformat';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_PASTE_REMOVE_FORMAT = 'e-rte-removeformat';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_PASTE_PLAIN_FORMAT = 'e-rte-plainformat';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_PASTE_OK = 'e-rte-pasteok';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_PASTE_CANCEL = 'e-rte-pastecancel';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_DIALOG_MIN_HEIGHT = 'e-rte-dialog-minheight';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_RES_HANDLE = 'e-resize-handle';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_RES_EAST = 'e-south-east';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_IMAGE = 'e-rte-image';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RESIZE = 'e-resize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMG_FOCUS = 'e-img-focus';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_AUD_FOCUS = 'e-audio-focus';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_VID_FOCUS = 'e-video-focus';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_DRAG_IMAGE = 'e-rte-drag-image';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_UPLOAD_POPUP = 'e-rte-upload-popup';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_POPUP_OPEN = 'e-popup-open';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMG_RESIZE = 'e-img-resize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_DROPAREA = 'e-droparea';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_IMG_INNER = 'e-img-inner';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_UPLOAD_FILES = 'e-upload-files';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_DIALOG_UPLOAD = 'e-rte-dialog-upload';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_RES_CNT = 'e-rte-resize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_CUSTOM_TILE = 'e-custom-tile';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_NOCOLOR_ITEM = 'e-nocolor-item';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TABLE = 'e-rte-table';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_TABLE_BORDER = 'e-rte-table-border';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_TABLE_RESIZE = 'e-rte-table-resize';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_FIXED_TB_EXPAND = 'e-rte-fixed-tb-expand';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_TB_ENABLED = 'e-rte-toolbar-enabled';\n/**\n * @hidden\n * @deprecated\n */\nvar CLS_RTE_RES_WEST = 'e-south-west';\n\n/**\n * Defines types of Render\n *\n * @hidden\n * @deprecated\n */\nvar RenderType;\n(function (RenderType) {\n /* eslint-disable */\n /** Defines RenderType as Toolbar */\n RenderType[RenderType[\"Toolbar\"] = 0] = \"Toolbar\";\n /** Defines RenderType as Content */\n RenderType[RenderType[\"Content\"] = 1] = \"Content\";\n /** Defines RenderType as Popup */\n RenderType[RenderType[\"Popup\"] = 2] = \"Popup\";\n /** Defines RenderType as LinkToolbar */\n RenderType[RenderType[\"LinkToolbar\"] = 3] = \"LinkToolbar\";\n /** Defines RenderType as TextToolbar */\n RenderType[RenderType[\"TextToolbar\"] = 4] = \"TextToolbar\";\n /** Defines RenderType as ImageToolbar */\n RenderType[RenderType[\"ImageToolbar\"] = 5] = \"ImageToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"AudioToolbar\"] = 6] = \"AudioToolbar\";\n /** Defines RenderType as AudioToolbar */\n RenderType[RenderType[\"VideoToolbar\"] = 7] = \"VideoToolbar\";\n /** Defines RenderType as InlineToolbar */\n RenderType[RenderType[\"InlineToolbar\"] = 8] = \"InlineToolbar\";\n /** Defines RenderType as TableToolbar */\n RenderType[RenderType[\"TableToolbar\"] = 9] = \"TableToolbar\";\n /* eslint-enable */\n})(RenderType || (RenderType = {}));\n/**\n * Defines types to be used as Toolbar.\n */\nvar ToolbarType;\n(function (ToolbarType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n ToolbarType[\"Expand\"] = \"Expand\";\n /** Defines ToolbarType as MultiRow */\n ToolbarType[\"MultiRow\"] = \"MultiRow\";\n /** Defines ToolbarType as Scrollable */\n ToolbarType[\"Scrollable\"] = \"Scrollable\";\n /* eslint-enable */\n})(ToolbarType || (ToolbarType = {}));\n/**\n * Defines the type of dialog, which open or close in the Rich Text Editor.\n */\nvar DialogType;\n(function (DialogType) {\n /* eslint-disable */\n /** Defines ToolbarType as Standard */\n DialogType[\"InsertLink\"] = \"InsertLink\";\n /** Defines ToolbarType as MultiRow */\n DialogType[\"InsertImage\"] = \"InsertImage\";\n /** Defines DialogType as Audio*/\n DialogType[\"InsertAudio\"] = \"InsertAudio\";\n /** Defines DialogType as Video*/\n DialogType[\"InsertVideo\"] = \"InsertVideo\";\n /** Defines ToolbarType as Scrollable */\n DialogType[\"InsertTable\"] = \"InsertTable\";\n /* eslint-enable */\n})(DialogType || (DialogType = {}));\n\n/* eslint-disable */\n/**\n * Export items model\n */\nvar templateItems = ['alignments', 'formats', 'fontname', 'fontsize', 'fontcolor', 'backgroundcolor', 'align', 'display', 'audiolayoutoption', 'videolayoutoption', 'videoalign', 'tablerows', 'tablecolumns', 'tablecell', 'tablecellhorizontalalign', 'tablecellverticalalign', 'styles', 'numberformatlist', 'bulletformatlist'];\nvar tools = {\n 'alignments': {\n 'id': 'Alignments',\n 'icon': 'e-alignments',\n 'tooltip': 'Alignments',\n 'command': 'Alignments',\n 'subCommand': 'Alignments'\n },\n 'justifyleft': {\n 'id': 'JustifyLeft',\n 'icon': 'e-justify-left',\n 'tooltip': 'JustifyLeft',\n 'command': 'Alignments',\n 'subCommand': 'JustifyLeft'\n },\n 'justifycenter': {\n 'id': 'JustifyCenter',\n 'icon': 'e-justify-center',\n 'tooltip': 'JustifyCenter',\n 'command': 'Alignments',\n 'subCommand': 'JustifyCenter'\n },\n 'justifyright': {\n 'id': 'JustifyRight',\n 'icon': 'e-justify-right',\n 'tooltip': 'JustifyRight',\n 'command': 'Alignments',\n 'subCommand': 'JustifyRight'\n },\n 'justifyfull': {\n 'id': 'JustifyFull',\n 'icon': 'e-justify-full',\n 'tooltip': 'JustifyFull',\n 'command': 'Alignments',\n 'subCommand': 'JustifyFull'\n },\n 'fontname': {\n 'id': 'FontName',\n 'icon': 'e-font-name',\n 'tooltip': 'Font Name',\n 'command': 'Font',\n 'subCommand': 'FontName'\n },\n 'fontsize': {\n 'id': 'FontSize',\n 'icon': 'e-font-size',\n 'tooltip': 'Font Size',\n 'command': 'Font',\n 'subCommand': 'FontSize'\n },\n 'fontcolor': {\n 'id': 'FontColor',\n 'icon': 'e-rte-font-color',\n 'tooltip': 'Font Color',\n 'command': 'Font',\n 'subCommand': 'FontColor',\n 'value': '#ff0000ff'\n },\n 'backgroundcolor': {\n 'id': 'BackgroundColor',\n 'icon': 'e-background-color',\n 'tooltip': 'Background Color',\n 'command': 'Font',\n 'subCommand': 'BackgroundColor',\n 'value': '#ffff00ff'\n },\n 'bold': {\n 'id': 'Bold',\n 'icon': 'e-bold',\n 'tooltip': 'Bold',\n 'command': 'Style',\n 'subCommand': 'Bold'\n },\n 'italic': {\n 'id': 'Italic',\n 'icon': 'e-italic',\n 'tooltip': 'Italic',\n 'command': 'Style',\n 'subCommand': 'Italic'\n },\n 'underline': {\n 'id': 'Underline',\n 'icon': 'e-underline',\n 'tooltip': 'Underline',\n 'command': 'Style',\n 'subCommand': 'Underline'\n },\n 'strikethrough': {\n 'id': 'StrikeThrough',\n 'icon': 'e-strike-through',\n 'tooltip': 'StrikeThrough',\n 'command': 'Style',\n 'subCommand': 'StrikeThrough'\n },\n 'clearformat': {\n 'id': 'ClearFormat',\n 'icon': 'e-clear-format',\n 'tooltip': 'Clear Format',\n 'command': 'Clear',\n 'subCommand': 'ClearFormat'\n },\n 'clearall': {\n 'id': 'ClearAll',\n 'icon': 'e-clear-all',\n 'tooltip': 'Clear All',\n 'command': 'Clear',\n 'subCommand': 'ClearAll'\n },\n 'cut': {\n 'id': 'Cut',\n 'icon': 'e-cut',\n 'tooltip': 'Cut',\n 'command': 'ClipBoard',\n 'subCommand': 'Cut'\n },\n 'copy': {\n 'id': 'Copy',\n 'icon': 'e-copy',\n 'tooltip': 'Copy',\n 'command': 'ClipBoard',\n 'subCommand': 'Copy'\n },\n 'paste': {\n 'id': 'Paste',\n 'icon': 'e-paste',\n 'tooltip': 'Paste',\n 'command': 'ClipBoard',\n 'subCommand': 'Paste'\n },\n 'unorderedlist': {\n 'id': 'UnorderedList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bulleted List',\n 'command': 'Lists',\n 'subCommand': 'UL'\n },\n 'orderedlist': {\n 'id': 'OrderedList',\n 'icon': 'e-order-list',\n 'tooltip': 'Numbered List',\n 'command': 'Lists',\n 'subCommand': 'OL'\n },\n 'numberformatlist': {\n 'id': 'NumberFormatList',\n 'icon': 'e-order-list',\n 'tooltip': 'Number Format List',\n 'command': 'NumberFormatList',\n 'subCommand': 'NumberFormatList'\n },\n 'bulletformatlist': {\n 'id': 'BulletFormatList',\n 'icon': 'e-unorder-list',\n 'tooltip': 'Bullet Format List',\n 'command': 'BulletFormatList',\n 'subCommand': 'BulletFormatList'\n },\n 'indent': {\n 'id': 'Indent',\n 'icon': 'e-indent',\n 'tooltip': 'Increase Indent',\n 'command': 'Indents',\n 'subCommand': 'Indent'\n },\n 'outdent': {\n 'id': 'Outdent',\n 'icon': 'e-outdent',\n 'tooltip': 'Decrease Indent',\n 'command': 'Indents',\n 'subCommand': 'Outdent'\n },\n 'undo': {\n 'id': 'Undo',\n 'icon': 'e-undo',\n 'tooltip': 'Undo',\n 'command': 'Actions',\n 'subCommand': 'Undo'\n },\n 'redo': {\n 'id': 'Redo',\n 'icon': 'e-redo',\n 'tooltip': 'Redo',\n 'command': 'Actions',\n 'subCommand': 'Redo'\n },\n 'superscript': {\n 'id': 'SuperScript',\n 'icon': 'e-super-script',\n 'tooltip': 'Superscript',\n 'command': 'Effects',\n 'subCommand': 'SuperScript'\n },\n 'subscript': {\n 'id': 'SubScript',\n 'icon': 'e-sub-script',\n 'tooltip': 'Subscript',\n 'command': 'Effects',\n 'subCommand': 'SubScript'\n },\n 'createlink': {\n 'id': 'CreateLink',\n 'icon': 'e-create-link',\n 'tooltip': 'Insert Hyperlink',\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n },\n 'openlink': {\n 'id': 'OpenLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Links',\n 'subCommand': 'OpenLink'\n },\n 'editlink': {\n 'id': 'EditLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Links',\n 'subCommand': 'EditLink'\n },\n 'removelink': {\n 'id': 'RemoveLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Links',\n 'subCommand': 'RemoveLink'\n },\n 'image': {\n 'id': 'Image',\n 'icon': 'e-image',\n 'tooltip': 'Insert Image',\n 'command': 'Images',\n 'subCommand': 'Image'\n },\n 'audio': {\n 'id': 'Audio',\n 'icon': 'e-audio',\n 'tooltip': 'Insert Audio',\n 'command': 'Audios',\n 'subCommand': 'Audio'\n },\n 'video': {\n 'id': 'Video',\n 'icon': 'e-video',\n 'tooltip': 'Insert Video',\n 'command': 'Videos',\n 'subCommand': 'Video'\n },\n 'filemanager': {\n 'id': 'FileManager',\n 'icon': 'e-rte-file-manager',\n 'tooltip': 'File Manager',\n 'command': 'Files',\n 'subCommand': 'File'\n },\n 'createtable': {\n 'id': 'CreateTable',\n 'icon': 'e-create-table',\n 'tooltip': 'Create Table',\n 'command': 'Table',\n 'subCommand': 'CreateTable'\n },\n 'removetable': {\n 'id': 'removeTable',\n 'icon': 'e-remove-table',\n 'tooltip': 'Remove Table',\n 'command': 'removeTable',\n 'subCommand': 'removeTable'\n },\n 'replace': {\n 'id': 'Replace',\n 'icon': 'e-replace',\n 'tooltip': 'Replace',\n 'command': 'Images',\n 'subCommand': 'Replace'\n },\n 'audioreplace': {\n 'id': 'AudioReplace',\n 'icon': 'e-audio-replace',\n 'tooltip': 'Audio Replace',\n 'command': 'Audios',\n 'subCommand': 'AudioReplace'\n },\n 'audioremove': {\n 'id': 'AudioRemove',\n 'icon': 'e-audio-remove',\n 'tooltip': 'Audio Remove',\n 'command': 'Audios',\n 'subCommand': 'AudioRemove'\n },\n 'audiolayoutoption': {\n 'id': 'AudioLayoutOption',\n 'icon': 'e-audio-display',\n 'tooltip': 'Audio LayoutOption',\n 'command': 'Audios',\n 'subCommand': 'AudioLayoutOption'\n },\n 'videoreplace': {\n 'id': 'VideoReplace',\n 'icon': 'e-video-replace',\n 'tooltip': 'Video Replace',\n 'command': 'Videos',\n 'subCommand': 'VideoReplace'\n },\n 'videoalign': {\n 'id': 'VideoAlign',\n 'icon': 'e-video-align',\n 'tooltip': 'Video Align',\n 'command': 'Videos',\n 'subCommand': 'VideoAlign'\n },\n 'videoremove': {\n 'id': 'VideoRemove',\n 'icon': 'e-video-remove',\n 'tooltip': 'Video Remove',\n 'command': 'Videos',\n 'subCommand': 'VideoRemove'\n },\n 'videolayoutoption': {\n 'id': 'VideoLayoutOption',\n 'icon': 'e-video-display',\n 'tooltip': 'Video LayoutOption',\n 'command': 'Videos',\n 'subCommand': 'VideoLayoutOption'\n },\n 'videodimension': {\n 'id': 'VideoDimension',\n 'icon': 'e-video-dimension',\n 'tooltip': 'Video Dimension',\n 'command': 'Videos',\n 'subCommand': 'VideoDimension'\n },\n 'align': {\n 'id': 'Align',\n 'icon': 'e-align',\n 'tooltip': 'Align',\n 'command': 'Images',\n 'subCommand': 'Align'\n },\n 'caption': {\n 'id': 'Caption',\n 'icon': 'e-caption',\n 'tooltip': 'Image Caption',\n 'command': 'Images',\n 'subCommand': 'Caption'\n },\n 'remove': {\n 'id': 'Remove',\n 'icon': 'e-remove',\n 'tooltip': 'Remove',\n 'command': 'Images',\n 'subCommand': 'Remove'\n },\n 'openimagelink': {\n 'id': 'OpenImageLink',\n 'icon': 'e-open-link',\n 'tooltip': 'Open Link',\n 'command': 'Images',\n 'subCommand': 'OpenImageLink'\n },\n 'editimagelink': {\n 'id': 'EditImageLink',\n 'icon': 'e-edit-link',\n 'tooltip': 'Edit Link',\n 'command': 'Images',\n 'subCommand': 'EditImageLink'\n },\n 'removeimagelink': {\n 'id': 'RemoveImageLink',\n 'icon': 'e-remove-link',\n 'tooltip': 'Remove Link',\n 'command': 'Images',\n 'subCommand': 'RemoveImageLink'\n },\n 'insertlink': {\n 'id': 'InsertLink',\n 'icon': 'e-insert-link',\n 'tooltip': 'Insert Link',\n 'command': 'Images',\n 'subCommand': 'InsertLink'\n },\n 'display': {\n 'id': 'Display',\n 'icon': 'e-display',\n 'tooltip': 'Display',\n 'command': 'Images',\n 'subCommand': 'Display'\n },\n 'alttext': {\n 'id': 'AltText',\n 'icon': 'e-alt-text',\n 'tooltip': 'Alternative Text',\n 'command': 'Images',\n 'subCommand': 'AltText'\n },\n 'dimension': {\n 'id': 'Dimension',\n 'icon': 'e-img-dimension',\n 'tooltip': 'Change Size',\n 'command': 'Images',\n 'subCommand': 'Dimension'\n },\n 'fullscreen': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'View',\n 'subCommand': 'Maximize'\n },\n 'maximize': {\n 'id': 'Maximize',\n 'icon': 'e-maximize',\n 'tooltip': 'Maximize',\n 'command': 'FullScreen',\n 'subCommand': 'Maximize'\n },\n 'minimize': {\n 'id': 'Minimize',\n 'icon': 'e-minimize',\n 'tooltip': 'Minimize',\n 'command': 'FullScreen',\n 'subCommand': 'Minimize'\n },\n 'lowercase': {\n 'id': 'LowerCase',\n 'icon': 'e-lower-case',\n 'tooltip': 'Lower Case',\n 'command': 'Casing',\n 'subCommand': 'LowerCase'\n },\n 'uppercase': {\n 'id': 'UpperCase',\n 'icon': 'e-upper-case',\n 'tooltip': 'Upper Case',\n 'command': 'Casing',\n 'subCommand': 'UpperCase'\n },\n 'print': {\n 'id': 'Print',\n 'icon': 'e-print',\n 'tooltip': 'Print',\n 'command': 'Print',\n 'subCommand': 'Print'\n },\n 'formats': {\n 'id': 'Formats',\n 'icon': 'e-formats',\n 'tooltip': 'Formats',\n 'command': 'Formats',\n 'subCommand': 'Formats'\n },\n 'sourcecode': {\n 'id': 'SourceCode',\n 'icon': 'e-source-code',\n 'tooltip': 'Source Code',\n 'command': 'SourceCode',\n 'subCommand': 'SourceCode'\n },\n 'preview': {\n 'id': 'Preview',\n 'icon': 'e-preview',\n 'tooltip': 'Preview',\n 'command': 'Preview',\n 'subCommand': 'Preview'\n },\n 'viewside': {\n 'id': 'ViewSide',\n 'icon': 'e-view-side',\n 'tooltip': 'ViewSide',\n 'command': 'ViewSide',\n 'subCommand': 'ViewSide'\n },\n 'insertcode': {\n 'id': 'InsertCode',\n 'icon': 'e-insert-code',\n 'tooltip': 'Insert Code',\n 'command': 'Formats',\n 'subCommand': 'Pre'\n },\n 'tableheader': {\n 'id': 'TableHeader',\n 'icon': 'e-table-header',\n 'tooltip': 'Table Header',\n 'command': 'Table',\n 'subCommand': 'TableHeader'\n },\n 'tableremove': {\n 'id': 'TableRemove',\n 'icon': 'e-table-remove',\n 'tooltip': 'Table Remove',\n 'command': 'Table',\n 'subCommand': 'TableRemove'\n },\n 'tablerows': {\n 'id': 'TableRows',\n 'icon': 'e-table-rows',\n 'tooltip': 'Table Rows',\n 'command': 'Table',\n 'subCommand': 'TableRows'\n },\n 'tablecolumns': {\n 'id': 'TableColumns',\n 'icon': 'e-table-columns',\n 'tooltip': 'Table Columns',\n 'command': 'Table',\n 'subCommand': 'TableColumns'\n },\n 'tablecell': {\n 'id': 'TableCell',\n 'icon': 'e-table-cell',\n 'tooltip': 'Table Cell',\n 'command': 'Table',\n 'subCommand': 'TableCell'\n },\n 'tablecellbackground': {\n 'id': 'TableCellBackground',\n 'icon': 'e-table-cell-background',\n 'tooltip': 'Table Cell Background',\n 'command': 'Table',\n 'subCommand': 'TableCellBackground'\n },\n 'tablecellhorizontalalign': {\n 'id': 'TableCellHorizontalAlign',\n 'icon': 'e-table-cell-horizontalAlign',\n 'tooltip': 'Table Cell HorizontalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellHorizontalAlign'\n },\n 'tablecellverticalalign': {\n 'id': 'TableCellVerticalAlign',\n 'icon': 'e-table-cell-verticalAlign',\n 'tooltip': 'Table Cell VerticalAlign',\n 'command': 'Table',\n 'subCommand': 'TableCellVerticalAlign'\n },\n 'tableeditproperties': {\n 'id': 'TableEditProperties',\n 'icon': 'e-table-edit-properties',\n 'tooltip': 'Table Edit Properties',\n 'command': 'Table',\n 'subCommand': 'TableEditProperties'\n },\n 'styles': {\n 'id': 'Styles',\n 'icon': 'e-table-styles',\n 'tooltip': 'Styles',\n 'command': 'Table',\n 'subCommand': 'Styles'\n }\n};\nvar alignmentLocale = [\n { locale: 'alignmentsDropDownLeft', value: 'JustifyLeft' },\n { locale: 'alignmentsDropDownCenter', value: 'JustifyCenter' },\n { locale: 'alignmentsDropDownRight', value: 'JustifyRight' },\n { locale: 'alignmentsDropDownJustify', value: 'JustifyFull' }\n];\nvar alignmentItems = [\n { iconCss: 'e-icons e-justify-left', text: 'Align Left', command: 'Alignments', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', text: 'Align Center', command: 'Alignments', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', text: 'Align Right', command: 'Alignments', subCommand: 'JustifyRight' },\n { iconCss: 'e-icons e-justify-full', text: 'Align Justify', command: 'Alignments', subCommand: 'JustifyFull' }\n];\nvar imageAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Images', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Images', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Images', subCommand: 'JustifyRight' },\n];\nvar videoAlignItems = [\n { iconCss: 'e-icons e-justify-left', command: 'Videos', subCommand: 'JustifyLeft' },\n { iconCss: 'e-icons e-justify-center', command: 'Videos', subCommand: 'JustifyCenter' },\n { iconCss: 'e-icons e-justify-right', command: 'Videos', subCommand: 'JustifyRight' },\n];\nvar displayLocale = [\n { locale: 'imageDisplayDropDownInline', value: 'Inline' },\n { locale: 'imageDisplayDropDownBreak', value: 'Break' }\n];\nvar audioLayoutOptionLocale = [\n { locale: 'audioLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'audioLayoutOptionDropDownBreak', value: 'Break' }\n];\nvar videoLayoutOptionLocale = [\n { locale: 'videoLayoutOptionDropDownInline', value: 'Inline' },\n { locale: 'videoLayoutOptionDropDownBreak', value: 'Break' }\n];\nvar imageDisplayItems = [\n { text: 'Inline', cssClass: 'e-inline', command: 'Images', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-break', command: 'Images', subCommand: 'Break' },\n];\nvar audioLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-audio-inline', command: 'Audios', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-audio-break', command: 'Audios', subCommand: 'Break' },\n];\nvar videoLayoutOptionItems = [\n { text: 'Inline', cssClass: 'e-video-inline', command: 'Videos', subCommand: 'Inline' },\n { text: 'Break', cssClass: 'e-video-break', command: 'Videos', subCommand: 'Break' },\n];\nvar tableCellItems = [\n { iconCss: 'e-icons e-cell-merge', text: 'Merge cells', command: 'Table', subCommand: 'Merge' },\n { iconCss: 'e-icons e-cell-horizontal-split', text: 'Horizontal split', command: 'Table', subCommand: 'HorizontalSplit' },\n { iconCss: 'e-icons e-cell-vertical-split', text: 'Vertical split', command: 'Table', subCommand: 'VerticalSplit' },\n];\nvar tableRowLocale = [\n { locale: 'tableInsertRowDropDownBefore', value: 'InsertRowBefore' },\n { locale: 'tableInsertRowDropDownAfter', value: 'InsertRowAfter' },\n { locale: 'tableInsertRowDropDownDelete', value: 'DeleteRow' }\n];\nvar tableRowsItems = [\n { iconCss: 'e-icons e-insert-row-before', text: 'Insert row before', command: 'Table', subCommand: 'InsertRowBefore' },\n { iconCss: 'e-icons e-insert-row-after', text: 'Insert row after', command: 'Table', subCommand: 'InsertRowAfter' },\n { iconCss: 'e-icons e-delete-row', text: 'Delete row', command: 'Table', subCommand: 'DeleteRow' },\n];\nvar tableColumnLocale = [\n { locale: 'tableInsertColumnDropDownLeft', value: 'InsertColumnLeft' },\n { locale: 'tableInsertColumnDropDownRight', value: 'InsertColumnRight' },\n { locale: 'tableInsertColumnDropDownDelete', value: 'DeleteColumn' }\n];\nvar tableColumnsItems = [\n { iconCss: 'e-icons e-insert-column-left', text: 'Insert column left', command: 'Table', subCommand: 'InsertColumnLeft' },\n { iconCss: 'e-icons e-insert-column-right', text: 'Insert column right', command: 'Table', subCommand: 'InsertColumnRight' },\n { iconCss: 'e-icons e-delete-column', text: 'Delete column', command: 'Table', subCommand: 'DeleteColumn' },\n];\nvar tableVerticalLocale = [\n { locale: 'tableVerticalAlignDropDownTop', value: 'AlignTop' },\n { locale: 'tableVerticalAlignDropDownMiddle', value: 'AlignMiddle' },\n { locale: 'tableVerticalAlignDropDownBottom', value: 'AlignBottom' }\n];\nvar TableCellVerticalAlignItems = [\n { iconCss: 'e-icons e-align-top', text: 'Align Top', command: 'Table', subCommand: 'AlignTop' },\n { iconCss: 'e-icons e-align-middle', text: 'Align Middle', command: 'Table', subCommand: 'AlignMiddle' },\n { iconCss: 'e-icons e-align-bottom', text: 'Align Bottom', command: 'Table', subCommand: 'AlignBottom' },\n];\nvar tableStyleLocale = [\n { locale: 'tableStylesDropDownDashedBorder', value: 'Dashed' },\n { locale: 'tableStylesDropDownAlternateRows', value: 'Alternate' }\n];\nvar TableStyleItems = [\n { text: 'Dashed Borders', cssClass: 'e-dashed-borders', command: 'Table', subCommand: 'Dashed' },\n { text: 'Alternate Rows', cssClass: 'e-alternate-rows', command: 'Table', subCommand: 'Alternate' }\n];\nvar predefinedItems = ['Bold', 'Italic', 'Underline', '|', 'Formats', 'Alignments',\n 'OrderedList', 'UnorderedList', '|', 'CreateLink', 'Image', '|', 'SourceCode', 'Undo', 'Redo'];\nvar fontFamily = [\n { cssClass: 'e-segoe-ui', text: 'Segoe UI', command: 'Font', subCommand: 'FontName', value: 'Segoe UI' },\n { cssClass: 'e-arial', text: 'Arial', command: 'Font', subCommand: 'FontName', value: 'Arial,Helvetica,sans-serif' },\n { cssClass: 'e-georgia', text: 'Georgia', command: 'Font', subCommand: 'FontName', value: 'Georgia,serif' },\n { cssClass: 'e-impact', text: 'Impact', command: 'Font', subCommand: 'FontName', value: 'Impact,Charcoal,sans-serif' },\n { cssClass: 'e-tahoma', text: 'Tahoma', command: 'Font', subCommand: 'FontName', value: 'Tahoma,Geneva,sans-serif' },\n { cssClass: 'e-times-new-roman', text: 'Times New Roman', command: 'Font', subCommand: 'FontName', value: 'Times New Roman,Times,serif' },\n { cssClass: 'e-verdana', text: 'Verdana', command: 'Font', subCommand: 'FontName', value: 'Verdana,Geneva,sans-serif' }\n];\nvar fontSize = [\n { text: '8 pt', value: '8pt' },\n { text: '10 pt', value: '10pt' },\n { text: '12 pt', value: '12pt' },\n { text: '14 pt', value: '14pt' },\n { text: '18 pt', value: '18pt' },\n { text: '24 pt', value: '24pt' },\n { text: '36 pt', value: '36pt' }\n];\nvar formatItems = [\n { cssClass: 'e-paragraph', text: 'Paragraph', command: 'Formats', subCommand: 'P', value: 'P' },\n { cssClass: 'e-code', text: 'Code', command: 'Formats', subCommand: 'Pre', value: 'Pre' },\n { cssClass: 'e-quote', text: 'Quotation', command: 'Formats', subCommand: 'BlockQuote', value: 'BlockQuote' },\n { cssClass: 'e-h1', text: 'Heading 1', command: 'Formats', subCommand: 'H1', value: 'H1' },\n { cssClass: 'e-h2', text: 'Heading 2', command: 'Formats', subCommand: 'H2', value: 'H2' },\n { cssClass: 'e-h3', text: 'Heading 3', command: 'Formats', subCommand: 'H3', value: 'H3' },\n { cssClass: 'e-h4', text: 'Heading 4', command: 'Formats', subCommand: 'H4', value: 'H4' }\n];\nvar fontColor = {\n 'Custom': [\n '', '#000000', '#e7e6e6', '#44546a', '#4472c4', '#ed7d31', '#a5a5a5', '#ffc000', '#70ad47', '#ff0000',\n '#f2f2f2', '#808080', '#cfcdcd', '#d5dce4', '#d9e2f3', '#fbe4d5', '#ededed', '#fff2cc', '#e2efd9', '#ffcccc',\n '#d9d9d9', '#595959', '#aeaaaa', '#acb9ca', '#b4c6e7', '#f7caac', '#dbdbdb', '#ffe599', '#c5e0b3', '#ff8080',\n '#bfbfbf', '#404040', '#747070', '#8496b0', '#8eaadb', '#f4b083', '#c9c9c9', '#ffd966', '#a8d08d', '#ff3333',\n '#a6a6a6', '#262626', '#3b3838', '#323e4f', '#2f5496', '#c45911', '#7b7b7b', '#bf8f00', '#538135', '#b30000',\n '#7f7f7f', '#0d0d0d', '#161616', '#212934', '#1f3763', '#823b0b', '#525252', '#7f5f00', '#375623', '#660000'\n ]\n};\nvar backgroundColor = {\n 'Custom': [\n '', '#000000', '#ffff00', '#00ff00', '#00ffff', '#0000ff', '#ff0000', '#000080', '#800080', '#996633',\n '#f2f2f2', '#808080', '#ffffcc', '#b3ffb3', '#ccffff', '#ccccff', '#ffcccc', '#ccccff', '#ff80ff', '#f2e6d9',\n '#d9d9d9', '#595959', '#ffff80', '#80ff80', '#b3ffff', '#8080ff', '#ff8080', '#8080ff', '#ff00ff', '#dfbf9f',\n '#bfbfbf', '#404040', '#ffff33', '#33ff33', '#33ffff', '#3333ff', '#ff3333', '#0000b3', '#b300b3', '#c68c53',\n '#a6a6a6', '#262626', '#e6e600', '#00b300', '#009999', '#000099', '#b30000', '#000066', '#660066', '#86592d',\n '#7f7f7f', '#0d0d0d', '#999900', '#006600', '#006666', '#000066', '#660000', '#00004d', '#4d004d', '#734d26'\n ]\n};\nvar numberFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'NumberFormatList', value: 'none' },\n { text: 'Number', command: 'Lists', subCommand: 'NumberFormatList', value: 'decimal' },\n { text: 'Lower Greek', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerGreek' },\n { text: 'Lower Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerRoman' },\n { text: 'Upper Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperAlpha' },\n { text: 'Lower Alpha', command: 'Lists', subCommand: 'NumberFormatList', value: 'lowerAlpha' },\n { text: 'Upper Roman', command: 'Lists', subCommand: 'NumberFormatList', value: 'upperRoman' },\n];\nvar bulletFormatList = [\n { text: 'None', command: 'Lists', subCommand: 'BulletFormatList', value: 'none' },\n { text: 'Disc', command: 'Lists', subCommand: 'BulletFormatList', value: 'disc' },\n { text: 'Circle', command: 'Lists', subCommand: 'BulletFormatList', value: 'circle' },\n { text: 'Square', command: 'Lists', subCommand: 'BulletFormatList', value: 'square' },\n];\nfunction getLocale(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\nfunction updateDropDownLocale(self) {\n alignmentItems.forEach(function (item, i) {\n alignmentItems[i].text = getLocale(self, alignmentLocale, alignmentItems[i]);\n });\n imageDisplayItems.forEach(function (item, i) {\n imageDisplayItems[i].text = getLocale(self, displayLocale, imageDisplayItems[i]);\n });\n audioLayoutOptionItems.forEach(function (item, i) {\n audioLayoutOptionItems[i].text = getLocale(self, audioLayoutOptionLocale, audioLayoutOptionItems[i]);\n });\n videoLayoutOptionItems.forEach(function (item, i) {\n videoLayoutOptionItems[i].text = getLocale(self, videoLayoutOptionLocale, videoLayoutOptionItems[i]);\n });\n tableRowsItems.forEach(function (item, i) {\n tableRowsItems[i].text = getLocale(self, tableRowLocale, tableRowsItems[i]);\n });\n tableColumnsItems.forEach(function (item, i) {\n tableColumnsItems[i].text = getLocale(self, tableColumnLocale, tableColumnsItems[i]);\n });\n TableCellVerticalAlignItems.forEach(function (item, i) {\n TableCellVerticalAlignItems[i].text = getLocale(self, tableVerticalLocale, TableCellVerticalAlignItems[i]);\n });\n TableStyleItems.forEach(function (item, i) {\n TableStyleItems[i].text = getLocale(self, tableStyleLocale, TableStyleItems[i]);\n });\n}\n\n/* eslint-disable */\n/**\n * Export default locale\n */\nvar defaultLocale = {\n 'alignments': 'Alignments',\n 'justifyLeft': 'Align Left',\n 'justifyCenter': 'Align Center',\n 'justifyRight': 'Align Right',\n 'justifyFull': 'Align Justify',\n 'fontName': 'Font Name',\n 'fontSize': 'Font Size',\n 'fontColor': 'Font Color',\n 'backgroundColor': 'Background Color',\n 'bold': 'Bold',\n 'italic': 'Italic',\n 'underline': 'Underline',\n 'strikethrough': 'Strikethrough',\n 'clearFormat': 'Clear Format',\n 'clearAll': 'Clear All',\n 'cut': 'Cut',\n 'copy': 'Copy',\n 'paste': 'Paste',\n 'unorderedList': 'Bulleted List',\n 'orderedList': 'Numbered List',\n 'indent': 'Increase Indent',\n 'outdent': 'Decrease Indent',\n 'undo': 'Undo',\n 'redo': 'Redo',\n 'superscript': 'Superscript',\n 'subscript': 'Subscript',\n 'createLink': 'Insert Link',\n 'openLink': 'Open Link',\n 'editLink': 'Edit Link',\n 'removeLink': 'Remove Link',\n 'image': 'Insert Image',\n 'audio': 'Insert Audio',\n 'video': 'Insert Video',\n 'replace': 'Replace',\n 'numberFormatList': 'Number Format List',\n 'bulletFormatList': 'Bullet Format List',\n 'audioReplace': 'Replace',\n 'videoReplace': 'Replace',\n 'videoAlign': 'Align',\n 'videoDimension': 'Dimension',\n 'audioRemove': 'Remove',\n 'videoRemove': 'Remove',\n 'audioLayoutOption': 'Layout option',\n 'videoLayoutOption': 'Layout option',\n 'align': 'Align',\n 'caption': 'Image Caption',\n 'remove': 'Remove',\n 'insertLink': 'Insert Link',\n 'display': 'Display',\n 'altText': 'Alternative Text',\n 'dimension': 'Change Size',\n 'fullscreen': 'Maximize',\n 'maximize': 'Maximize',\n 'minimize': 'Minimize',\n 'lowerCase': 'Lower Case',\n 'upperCase': 'Upper Case',\n 'print': 'Print',\n 'formats': 'Formats',\n 'sourcecode': 'Code View',\n 'preview': 'Preview',\n 'viewside': 'ViewSide',\n 'insertCode': 'Insert Code',\n 'linkText': 'Display Text',\n 'linkTooltipLabel': 'Title',\n 'linkWebUrl': 'Web Address',\n 'linkTitle': 'Enter a title',\n 'linkurl': 'http://example.com',\n 'linkOpenInNewWindow': 'Open Link in New Window',\n 'linkHeader': 'Insert Link',\n 'dialogInsert': 'Insert',\n 'dialogCancel': 'Cancel',\n 'dialogUpdate': 'Update',\n 'imageHeader': 'Insert Image',\n 'audioHeader': 'Insert Audio',\n 'videoHeader': 'Insert Video',\n 'imageLinkHeader': 'You can also provide a link from the web',\n 'audioLinkHeader': 'You can also provide a link from the web',\n 'videoLinkHeader': 'Web URL',\n 'embedVideoLinkHeader': 'Media Embed URL',\n 'mdimageLink': 'Please provide a URL for your image',\n 'imageUploadMessage': 'Drop image here or browse to upload',\n 'audioUploadMessage': 'Drop an audio file or browse to upload',\n 'videoUploadMessage': 'Drop a video file or browse to upload',\n 'imageDeviceUploadMessage': 'Click here to upload',\n 'audioDeviceUploadMessage': 'Click here to upload',\n 'videoDeviceUploadMessage': 'Click here to upload',\n 'imageAlternateText': 'Alternate Text',\n 'alternateHeader': 'Alternative Text',\n 'browse': 'Browse',\n 'imageUrl': 'http://example.com/image.png',\n 'audioUrl': 'http://example.com/audio.mp3',\n 'videoUrl': 'http://example.com/video.mp3',\n 'webUrl': 'Web URL',\n 'embedUrl': 'Embed Code',\n 'imageCaption': 'Caption',\n 'imageSizeHeader': 'Image Size',\n 'videoSizeHeader': 'Video Size',\n 'imageHeight': 'Height',\n 'imageWidth': 'Width',\n 'videoHeight': 'Height',\n 'videoWidth': 'Width',\n 'textPlaceholder': 'Enter Text',\n 'inserttablebtn': 'Insert Table',\n 'tabledialogHeader': 'Insert Table',\n 'tableWidth': 'Width',\n 'cellpadding': 'Cell Padding',\n 'cellspacing': 'Cell Spacing',\n 'columns': 'Number of columns',\n 'rows': 'Number of rows',\n 'tableRows': 'Table Rows',\n 'tableColumns': 'Table Columns',\n 'tableCellHorizontalAlign': 'Table Cell Horizontal Align',\n 'tableCellVerticalAlign': 'Table Cell Vertical Align',\n 'createTable': 'Create Table',\n 'removeTable': 'Remove Table',\n 'tableHeader': 'Table Header',\n 'tableRemove': 'Table Remove',\n 'tableCellBackground': 'Table Cell Background',\n 'tableEditProperties': 'Table Edit Properties',\n 'styles': 'Styles',\n 'insertColumnLeft': 'Insert Column Left',\n 'insertColumnRight': 'Insert Column Right',\n 'deleteColumn': 'Delete Column',\n 'insertRowBefore': 'Insert Row Before',\n 'insertRowAfter': 'Insert Row After',\n 'deleteRow': 'Delete Row',\n 'tableEditHeader': 'Edit Table',\n 'TableHeadingText': 'Heading',\n 'TableColText': 'Col',\n 'imageInsertLinkHeader': 'Insert Link',\n 'editImageHeader': 'Edit Image',\n 'editAudioHeader': 'Edit Audio',\n 'editVideoHeader': 'Edit Video',\n \"alignmentsDropDownLeft\": 'Align Left',\n \"alignmentsDropDownCenter\": 'Align Center',\n \"alignmentsDropDownRight\": 'Align Right',\n \"alignmentsDropDownJustify\": 'Align Justify',\n \"imageDisplayDropDownInline\": 'Inline',\n \"imageDisplayDropDownBreak\": 'Break',\n \"audioLayoutOptionDropDownInline\": 'Inline',\n \"audioLayoutOptionDropDownBreak\": 'Break',\n \"videoLayoutOptionDropDownInline\": 'Inline',\n \"videoLayoutOptionDropDownBreak\": 'Break',\n \"tableInsertRowDropDownBefore\": 'Insert row before',\n \"tableInsertRowDropDownAfter\": 'Insert row after',\n \"tableInsertRowDropDownDelete\": 'Delete row',\n \"tableInsertColumnDropDownLeft\": 'Insert column left',\n \"tableInsertColumnDropDownRight\": 'Insert column right',\n \"tableInsertColumnDropDownDelete\": 'Delete column',\n \"tableVerticalAlignDropDownTop\": 'Align Top',\n \"tableVerticalAlignDropDownMiddle\": 'Align Middle',\n \"tableVerticalAlignDropDownBottom\": 'Align Bottom',\n \"tableStylesDropDownDashedBorder\": 'Dashed Borders',\n \"tableStylesDropDownAlternateRows\": 'Alternate Rows',\n 'pasteFormat': 'Paste Format',\n 'pasteFormatContent': 'Choose the formatting action',\n 'plainText': 'Plain Text',\n 'cleanFormat': 'Clean',\n 'keepFormat': 'Keep',\n 'pasteDialogOk': 'OK',\n 'pasteDialogCancel': 'Cancel',\n 'fileManager': 'File Manager',\n 'fileDialogHeader': 'File Browser',\n \"formatsDropDownParagraph\": 'Paragraph',\n 'formatsDropDownCode': 'Code',\n 'formatsDropDownQuotation': 'Quotation',\n 'formatsDropDownHeading1': 'Heading 1',\n 'formatsDropDownHeading2': 'Heading 2',\n 'formatsDropDownHeading3': 'Heading 3',\n 'formatsDropDownHeading4': 'Heading 4',\n 'fontNameSegoeUI': 'Segoe UI',\n 'fontNameArial': 'Arial',\n 'fontNameGeorgia': 'Georgia',\n 'fontNameImpact': 'Impact',\n 'fontNameTahoma': 'Tahoma',\n 'fontNameTimesNewRoman': 'Times New Roman',\n 'fontNameVerdana': 'Verdana',\n 'numberFormatListNumber': 'Number',\n 'numberFormatListLowerAlpha': 'LowerAlpha',\n 'numberFormatListUpperAlpha': 'UpperAlpha',\n 'numberFormatListLowerRoman': 'LowerRoman',\n 'numberFormatListUpperRoman': 'UpperRoman',\n 'numberFormatListLowerGreek': 'LowerGreek',\n 'bulletFormatListDisc': 'Disc',\n 'bulletFormatListCircle': 'Circle',\n 'bulletFormatListSquare': 'Square',\n 'numberFormatListNone': 'None',\n 'bulletFormatListNone': 'None'\n};\nvar toolsLocale = {\n 'alignments': 'alignments',\n 'justifyleft': 'justifyLeft',\n 'justifycenter': 'justifyCenter',\n 'justifyright': 'justifyRight',\n 'justifyfull': 'justifyFull',\n 'fontname': 'fontName',\n 'fontsize': 'fontSize',\n 'fontcolor': 'fontColor',\n 'backgroundcolor': 'backgroundColor',\n 'bold': 'bold',\n 'italic': 'italic',\n 'underline': 'underline',\n 'strikethrough': 'strikethrough',\n 'clearformat': 'clearFormat',\n 'clearall': 'clearAll',\n 'cut': 'cut',\n 'copy': 'copy',\n 'paste': 'paste',\n 'unorderedlist': 'unorderedList',\n 'orderedlist': 'orderedList',\n 'indent': 'indent',\n 'outdent': 'outdent',\n 'numberformatlist': 'numberFormatList',\n 'bulletformatlist': 'bulletFormatList',\n 'undo': 'undo',\n 'redo': 'redo',\n 'superscript': 'superscript',\n 'subscript': 'subscript',\n 'createlink': 'createLink',\n 'openlink': 'openLink',\n 'editlink': 'editLink',\n 'removelink': 'removeLink',\n 'openimagelink': 'openLink',\n 'editimagelink': 'editLink',\n 'removeimagelink': 'removeLink',\n 'image': 'image',\n 'audio': 'audio',\n 'video': 'video',\n 'replace': 'replace',\n 'audioreplace': 'audioReplace',\n 'videoreplace': 'videoReplace',\n 'videoalign': 'videoAlign',\n 'videodimension': 'videoDimension',\n 'audioremove': 'audioRemove',\n 'videoremove': 'videoRemove',\n 'audiolayoutoption': 'audioLayoutOption',\n 'videolayoutoption': 'videoLayoutOption',\n 'align': 'align',\n 'caption': 'caption',\n 'remove': 'remove',\n 'insertlink': 'insertLink',\n 'display': 'display',\n 'alttext': 'altText',\n 'dimension': 'dimension',\n 'fullscreen': 'fullscreen',\n 'maximize': 'maximize',\n 'minimize': 'minimize',\n 'lowercase': 'lowerCase',\n 'uppercase': 'upperCase',\n 'print': 'print',\n 'formats': 'formats',\n 'sourcecode': 'sourcecode',\n 'preview': 'preview',\n 'viewside': 'viewside',\n 'insertcode': 'insertCode',\n 'tablerows': 'tableRows',\n 'tablecolumns': 'tableColumns',\n 'tablecellhorizontalalign': 'tableCellHorizontalAlign',\n 'tablecellverticalalign': 'tableCellVerticalAlign',\n 'createtable': 'createTable',\n 'removetable': 'removeTable',\n 'tableheader': 'tableHeader',\n 'tableremove': 'tableRemove',\n 'tablecellbackground': 'tableCellBackground',\n 'tableeditproperties': 'tableEditProperties',\n 'styles': 'styles',\n 'insertcolumnleft': 'insertColumnLeft',\n 'insertcolumnright': 'insertColumnRight',\n 'deletecolumn': 'deleteColumn',\n 'aligntop': 'AlignTop',\n 'alignmiddle': 'AlignMiddle',\n 'alignbottom': 'AlignBottom',\n 'insertrowbefore': 'insertRowBefore',\n 'insertrowafter': 'insertRowAfter',\n 'deleterow': 'deleteRow'\n};\nvar fontNameLocale = [\n { locale: 'fontNameSegoeUI', value: 'Segoe UI' },\n { locale: 'fontNameArial', value: 'Arial,Helvetica,sans-serif' },\n { locale: 'fontNameGeorgia', value: 'Georgia,serif' },\n { locale: 'fontNameImpact', value: 'Impact,Charcoal,sans-serif' },\n { locale: 'fontNameTahoma', value: 'Tahoma,Geneva,sans-serif' },\n { locale: 'fontNameTimesNewRoman', value: 'Times New Roman,Times,serif' },\n { locale: 'fontNameVerdana', value: 'Verdana,Geneva,sans-serif' }\n];\nvar formatsLocale = [\n { locale: 'formatsDropDownParagraph', value: 'P' },\n { locale: 'formatsDropDownCode', value: 'Pre' },\n { locale: 'formatsDropDownQuotation', value: 'BlockQuote' },\n { locale: 'formatsDropDownHeading1', value: 'H1' },\n { locale: 'formatsDropDownHeading2', value: 'H2' },\n { locale: 'formatsDropDownHeading3', value: 'H3' },\n { locale: 'formatsDropDownHeading4', value: 'H4' }\n];\nvar numberFormatListLocale = [\n { locale: 'numberFormatListNone', value: 'none' },\n { locale: 'numberFormatListNumber', value: 'decimal' },\n { locale: 'numberFormatListLowerAlpha', value: 'lower-alpha' },\n { locale: 'numberFormatListUpperAlpha', value: 'upper-alpha' },\n { locale: 'numberFormatListLowerRoman', value: 'lower-roman' },\n { locale: 'numberFormatListUpperRoman', value: 'upper-roman' },\n { locale: 'numberFormatListLowerGreek', value: 'lower-greek' }\n];\nvar bulletFormatListLocale = [\n { locale: 'bulletFormatListNone', value: 'none' },\n { locale: 'bulletFormatListDisc', value: 'disc' },\n { locale: 'bulletFormatListCircle', value: 'circle' },\n { locale: 'bulletFormatListSquare', value: 'square' },\n];\n\n/**\n * Defines util methods used by Rich Text Editor.\n */\nvar undoRedoItems = ['Undo', 'Redo'];\nvar inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @param {string} val - specifies the string value\n * @param {string} items - specifies the value\n * @returns {number} - returns the number value\n * @hidden\n */\nfunction getIndex(val, items) {\n var index = -1;\n items.some(function (item, i) {\n if (typeof item === 'string' && val === item.toLocaleLowerCase()) {\n index = i;\n return true;\n }\n return false;\n });\n return index;\n}\n/**\n * @param {Element} element - specifies the element\n * @param {string} className - specifies the string value\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nfunction hasClass(element, className) {\n var hasClass = false;\n if (element.classList.contains(className)) {\n hasClass = true;\n }\n return hasClass;\n}\n/**\n * @param {IDropDownItemModel} items - specifies the item model\n * @param {string} value - specifies the string value\n * @param {string} type - specifies the string value\n * @param {string} returnType - specifies the return type\n * @returns {string} - returns the string value\n * @hidden\n */\nfunction getDropDownValue(items, value, type, returnType) {\n var data;\n var result;\n for (var k = 0; k < items.length; k++) {\n if (type === 'value' && items[k].value.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'text' && items[k].text.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n else if (type === 'subCommand' && items[k].subCommand.toLocaleLowerCase() === value.toLocaleLowerCase()) {\n data = items[k];\n break;\n }\n }\n if (!isNullOrUndefined(data)) {\n switch (returnType) {\n case 'text':\n result = data.text;\n break;\n case 'value':\n result = data.value;\n break;\n case 'iconCss':\n result = data.iconCss;\n break;\n }\n }\n return result;\n}\n/**\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nfunction isIDevice() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {string} - returns the string value\n * @hidden\n */\nfunction getFormattedFontSize(value) {\n if (isNullOrUndefined(value)) {\n return '';\n }\n return value;\n}\n/**\n * @param {MouseEvent} e - specifies the mouse event\n * @param {HTMLElement} parentElement - specifies the parent element\n * @param {boolean} isIFrame - specifies the boolean value\n * @returns {number} - returns the number\n * @hidden\n */\nfunction pageYOffset(e, parentElement, isIFrame) {\n var y = 0;\n if (isIFrame) {\n y = window.pageYOffset + parentElement.getBoundingClientRect().top + e.clientY;\n }\n else {\n y = e.pageY;\n }\n return y;\n}\n/**\n * @param {string} item - specifies the string\n * @param {ServiceLocator} serviceLocator - specifies the service locator\n * @returns {string} - returns the string\n * @hidden\n */\nfunction getTooltipText(item, serviceLocator) {\n var i10n = serviceLocator.getService('rteLocale');\n var itemLocale = toolsLocale[\"\" + item];\n var tooltipText = i10n.getConstant(itemLocale);\n return tooltipText;\n}\n/**\n * @param {ISetToolbarStatusArgs} e - specifies the e element\n * @param {boolean} isPopToolbar - specifies the boolean value\n * @param {IRichTextEditor} self - specifies the parent element\n * @returns {void}\n * @hidden\n */\nfunction setToolbarStatus(e, isPopToolbar, self) {\n updateDropDownFontFormatLocale(self);\n var dropDown = e.dropDownModule;\n var data = e.args;\n var keys = Object.keys(e.args);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n for (var j = 0; j < e.tbItems.length; j++) {\n var item = e.tbItems[j].subCommand;\n var itemStr = item && item.toLocaleLowerCase();\n if (item && (itemStr === key) || (item === 'UL' && key === 'unorderedlist') || (item === 'OL' && key === 'orderedlist') ||\n (itemStr === 'pre' && key === 'insertcode')) {\n if (typeof data[\"\" + key] === 'boolean') {\n if (data[\"\" + key] === true) {\n addClass([e.tbElements[j]], [CLS_ACTIVE]);\n }\n else {\n removeClass([e.tbElements[j]], [CLS_ACTIVE]);\n }\n }\n else if ((typeof data[\"\" + key] === 'string' || data[\"\" + key] === null) &&\n getIndex(key, e.parent.toolbarSettings.items) > -1) {\n var value = ((data[\"\" + key]) ? data[\"\" + key] : '');\n var result = '';\n switch (key) {\n case 'formats': {\n if (isNullOrUndefined(dropDown.formatDropDown) || isPopToolbar ||\n (!isNullOrUndefined(dropDown.formatDropDown) && dropDown.formatDropDown.isDestroyed)) {\n break;\n }\n var formatItems$$1 = e.parent.format.types;\n var formatContent = isNullOrUndefined(e.parent.format.default) ? formatItems$$1[0].text :\n e.parent.format.default;\n result = getDropDownValue(formatItems$$1, value, 'subCommand', 'text');\n dropDown.formatDropDown.content = ('' +\n ''\n + (isNullOrUndefined(result) ? formatContent : result) +\n '');\n dropDown.formatDropDown.dataBind();\n break;\n }\n case 'alignments': {\n if (isNullOrUndefined(dropDown.alignDropDown) ||\n (!isNullOrUndefined(dropDown.alignDropDown) && dropDown.alignDropDown.isDestroyed)) {\n break;\n }\n var alignItems = alignmentItems;\n result = getDropDownValue(alignItems, value, 'subCommand', 'iconCss');\n dropDown.alignDropDown.iconCss = isNullOrUndefined(result) ? 'e-icons e-justify-left' : result;\n dropDown.alignDropDown.dataBind();\n break;\n }\n case 'fontname': {\n if (isNullOrUndefined(dropDown.fontNameDropDown) || isPopToolbar ||\n (!isNullOrUndefined(dropDown.fontNameDropDown) && dropDown.fontNameDropDown.isDestroyed)) {\n break;\n }\n var fontNameItems = e.parent.fontFamily.items;\n result = getDropDownValue(fontNameItems, value, 'value', 'text');\n var fontNameContent = isNullOrUndefined(e.parent.fontFamily.default) ? fontNameItems[0].text :\n e.parent.fontFamily.default;\n var name_1 = (isNullOrUndefined(result) ? fontNameContent : result);\n e.tbElements[j].title = name_1;\n dropDown.fontNameDropDown.content = ('' +\n ''\n + name_1 + '');\n dropDown.fontNameDropDown.dataBind();\n break;\n }\n case 'fontsize': {\n if (isNullOrUndefined(dropDown.fontSizeDropDown) ||\n (!isNullOrUndefined(dropDown.fontSizeDropDown) && dropDown.fontSizeDropDown.isDestroyed)) {\n break;\n }\n var fontSizeItems = e.parent.fontSize.items;\n var fontSizeContent = isNullOrUndefined(e.parent.fontSize.default) ? fontSizeItems[1].text :\n e.parent.fontSize.default;\n result = getDropDownValue(fontSizeItems, (value === '' ? fontSizeContent.replace(/\\s/g, '') : value), 'value', 'text');\n dropDown.fontSizeDropDown.content = ('' +\n ''\n + getFormattedFontSize(result) + '');\n dropDown.fontSizeDropDown.dataBind();\n break;\n }\n }\n }\n }\n }\n }\n}\n/**\n * @param {string} items - specifies the string value\n * @returns {string[]} - returns the array value\n * @hidden\n */\nfunction getCollection(items) {\n if (typeof items === 'object') {\n return items;\n }\n else {\n return [items];\n }\n}\n/**\n * @param {string[]} items - specifies the array of string value\n * @param {IToolbarItemModel} toolbarItems - specifies the tool bar model\n * @returns {number} - returns the number\n * @hidden\n */\nfunction getTBarItemsIndex(items, toolbarItems) {\n var itemsIndex = [];\n for (var i = 0; i < items.length; i++) {\n for (var j = 0; j < toolbarItems.length; j++) {\n if (toolbarItems[j].type === 'Separator') {\n continue;\n }\n else {\n if (items[i] === 'OrderedList' && toolbarItems[j].subCommand === 'OL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'UnorderedList' && toolbarItems[j].subCommand === 'UL') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'InsertCode' && toolbarItems[j].subCommand === 'Pre') {\n itemsIndex.push(j);\n break;\n }\n else if (items[i] === 'FileManager' && toolbarItems[j].subCommand === 'File') {\n itemsIndex.push(j);\n break;\n }\n else if (typeof (items[i]) === 'object' && items[i].command === 'Custom') {\n itemsIndex.push(i);\n break;\n }\n else if (items[i] === toolbarItems[j].subCommand) {\n itemsIndex.push(j);\n break;\n }\n }\n }\n }\n return itemsIndex;\n}\n/**\n * @param {BaseToolbar} baseToolbar - specifies the base\n * @param {boolean} undoRedoStatus - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nfunction updateUndoRedoStatus(baseToolbar, undoRedoStatus) {\n var i = 0;\n var trgItems = getTBarItemsIndex(getCollection(undoRedoItems), baseToolbar.toolbarObj.items);\n var tbItems = selectAll('.' + CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n var keys = Object.keys(undoRedoStatus);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var target = tbItems[trgItems[i]];\n if (target) {\n baseToolbar.toolbarObj.enableItems(target, undoRedoStatus[\"\" + key]);\n }\n i++;\n }\n}\n/**\n * To dispatch the event manually\n *\n * @param {Element} element - specifies the element.\n * @param {string} type - specifies the string type.\n * @returns {void}\n * @hidden\n * @deprecated\n */\nfunction dispatchEvent(element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n element.dispatchEvent(evt);\n}\n/**\n * To parse the HTML\n *\n * @param {string} value - specifies the string value\n * @returns {DocumentFragment} - returns the document\n * @hidden\n */\nfunction parseHtml(value) {\n var tempNode = createElement('template');\n tempNode.innerHTML = value;\n if (tempNode.content instanceof DocumentFragment) {\n return tempNode.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n}\n/**\n * @param {Document} docElement - specifies the document element\n * @param {Element} node - specifies the node\n * @returns {Node[]} - returns the node array\n * @hidden\n */\nfunction getTextNodesUnder(docElement, node) {\n var nodes = [];\n for (node = node.firstChild; node; node = node.nextSibling) {\n if (node.nodeType === 3) {\n nodes.push(node);\n }\n else {\n nodes = nodes.concat(getTextNodesUnder(docElement, node));\n }\n }\n return nodes;\n}\n/**\n * @param {IToolsItemConfigs} obj - specifies the configuration\n * @returns {void}\n * @hidden\n */\nfunction toObjectLowerCase(obj) {\n var convertedValue = {};\n var keys = Object.keys(obj);\n for (var i = 0; i < Object.keys(obj).length; i++) {\n convertedValue[keys[i].toLocaleLowerCase()] = obj[keys[i]];\n }\n return convertedValue;\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} rteObj - specifies the rte object\n * @returns {string} - returns the string\n * @hidden\n */\nfunction getEditValue(value, rteObj) {\n var val;\n if (value !== null && value !== '') {\n val = rteObj.enableHtmlEncode ? updateTextNode(decode(value), rteObj) : updateTextNode(value, rteObj);\n rteObj.setProperties({ value: val }, true);\n }\n else {\n if (rteObj.enterKey === 'DIV') {\n val = rteObj.enableHtmlEncode ? '<div><br/></div>' : '

    ';\n }\n else if (rteObj.enterKey === 'BR') {\n val = rteObj.enableHtmlEncode ? '<br/>' : '
    ';\n }\n else {\n val = rteObj.enableHtmlEncode ? '<p><br/></p>' : '


    ';\n }\n }\n return val;\n}\n/**\n * @param {string} value - specifies the value\n * @param {IRichTextEditor} rteObj - specifies the rich text editor instance.\n * @returns {string} - returns the string\n * @hidden\n */\nfunction updateTextNode(value, rteObj) {\n var tempNode = document.createElement('div');\n var resultElm = document.createElement('div');\n var childNodes = tempNode.childNodes;\n tempNode.innerHTML = value;\n tempNode.setAttribute('class', 'tempDiv');\n if (childNodes.length > 0) {\n var isPreviousInlineElem = void 0;\n var previousParent = void 0;\n var insertElem = void 0;\n while (tempNode.firstChild) {\n var emptyBlockElem = tempNode.querySelectorAll(blockEmptyNodes);\n for (var i = 0; i < emptyBlockElem.length; i++) {\n emptyBlockElem[i].innerHTML = '
    ';\n }\n var emptyInlineElem = tempNode.querySelectorAll(inlineEmptyNodes);\n for (var i = 0; i < emptyInlineElem.length; i++) {\n emptyInlineElem[i].innerHTML = '​';\n }\n if (rteObj.enterKey !== 'BR' && ((tempNode.firstChild.nodeName === '#text' &&\n (tempNode.firstChild.textContent.indexOf('\\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||\n inlineNode.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0)) {\n if (!isPreviousInlineElem) {\n if (rteObj.enterKey === 'DIV') {\n insertElem = createElement('div');\n }\n else {\n insertElem = createElement('p');\n }\n resultElm.appendChild(insertElem);\n insertElem.appendChild(tempNode.firstChild);\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n }\n previousParent = insertElem;\n isPreviousInlineElem = true;\n }\n else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\\n' ||\n (tempNode.firstChild.textContent.indexOf('\\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {\n detach(tempNode.firstChild);\n }\n else {\n resultElm.appendChild(tempNode.firstChild);\n isPreviousInlineElem = false;\n }\n }\n var imageElm = resultElm.querySelectorAll('img');\n for (var i = 0; i < imageElm.length; i++) {\n if (!imageElm[i].classList.contains(CLS_RTE_IMAGE)) {\n imageElm[i].classList.add(CLS_RTE_IMAGE);\n }\n if (!(imageElm[i].classList.contains(CLS_IMGINLINE) ||\n imageElm[i].classList.contains(CLS_IMGBREAK))) {\n imageElm[i].classList.add(CLS_IMGINLINE);\n }\n }\n }\n return resultElm.innerHTML;\n}\n/**\n * @param {IRichTextEditor} rteObj - specifies the rte object\n * @returns {string} - returns the value based on enter configuration.\n * @hidden\n */\nfunction getDefaultValue(rteObj) {\n var currentVal;\n if (rteObj.enterKey === 'DIV') {\n currentVal = rteObj.enableHtmlEncode ? '<div><br/></div>' : '

    ';\n }\n else if (rteObj.enterKey === 'BR') {\n currentVal = rteObj.enableHtmlEncode ? '<br/>' : '
    ';\n }\n else {\n currentVal = rteObj.enableHtmlEncode ? '<p><br/></p>' : '


    ';\n }\n return currentVal;\n}\n/**\n * @param {string} value - specifies the value\n * @returns {boolean} - returns the boolean value\n * @hidden\n */\nfunction isEditableValueEmpty(value) {\n return (value === '


    ' || value === '<p><br></p>'\n || value === '

    ' || value === '<div><br></div>'\n || value === '
    ' || value === '<br>'\n || value === '') ? true : false;\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {string} - returns the string\n * @hidden\n */\nfunction decode(value) {\n return value.replace(/&/g, '&').replace(/&lt;/g, '<')\n .replace(/</g, '<').replace(/&gt;/g, '>')\n .replace(/>/g, '>').replace(/ /g, ' ')\n .replace(/&nbsp;/g, ' ').replace(/"/g, '');\n}\n/**\n * @param {string} value - specifies the string value\n * @param {IRichTextEditor} parent - specifies the rte\n * @returns {string} - returns the string value\n * @hidden\n */\nfunction sanitizeHelper(value, parent) {\n if (parent.enableHtmlSanitizer) {\n var item = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(item, item, beforeEvent);\n parent.trigger('beforeSanitizeHtml', item);\n if (item.cancel && !isNullOrUndefined(item.helper)) {\n value = item.helper(value);\n }\n else if (!item.cancel) {\n value = SanitizeHtmlHelper.serializeValue(item, value);\n }\n }\n return value;\n}\n/**\n * @param {string} dataUrl - specifies the string value\n * @returns {BaseToolbar} - returns the value\n * @hidden\n */\n//Converting the base64 url to blob\nfunction convertToBlob(dataUrl) {\n var arr = dataUrl.split(',');\n var mime = arr[0].match(/:(.*?);/)[1];\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n return new Blob([u8arr], { type: mime });\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @param {string} localeItems - specifies the locale items\n * @param {IDropDownItemModel} item - specifies the dropdown item\n * @returns {string} - returns the value\n * @hidden\n */\nfunction getLocaleFontFormat(self, localeItems, item) {\n for (var i = 0; localeItems.length > i; i++) {\n if (localeItems[i].value === item.value || localeItems[i].value === item.subCommand) {\n return self.localeObj.getConstant(localeItems[i].locale);\n }\n }\n return item.text;\n}\n/**\n * @param {IRichTextEditor} self - specifies the rte\n * @returns {void}\n * @hidden\n */\nfunction updateDropDownFontFormatLocale(self) {\n fontFamily.forEach(function (item, i) {\n fontFamily[i].text = getLocaleFontFormat(self, fontNameLocale, fontFamily[i]);\n });\n formatItems.forEach(function (item, i) {\n formatItems[i].text = getLocaleFontFormat(self, formatsLocale, formatItems[i]);\n });\n numberFormatList.forEach(function (item, i) {\n numberFormatList[i].text = getLocaleFontFormat(self, numberFormatListLocale, numberFormatList[i]);\n });\n bulletFormatList.forEach(function (item, i) {\n bulletFormatList[i].text = getLocaleFontFormat(self, bulletFormatListLocale, bulletFormatList[i]);\n });\n}\n\n/**\n * `Toolbar renderer` module is used to render toolbar in RichTextEditor.\n *\n * @hidden\n * @deprecated\n */\nvar ToolbarRenderer = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for toolbar renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n */\n function ToolbarRenderer(parent) {\n this.parent = parent;\n this.wireEvent();\n }\n ToolbarRenderer.prototype.wireEvent = function () {\n this.parent.on(destroy, this.unWireEvent, this);\n };\n ToolbarRenderer.prototype.unWireEvent = function () {\n this.parent.off(destroy, this.unWireEvent);\n if (this.popupOverlay) {\n EventHandler.remove(this.popupOverlay, 'click touchmove', this.onPopupOverlay);\n }\n this.removePopupContainer();\n };\n ToolbarRenderer.prototype.toolbarBeforeCreate = function (e) {\n if (this.mode === 'Extended') {\n e.enableCollision = false;\n }\n };\n ToolbarRenderer.prototype.toolbarCreated = function () {\n this.parent.notify(toolbarCreated, this);\n };\n ToolbarRenderer.prototype.toolbarClicked = function (args) {\n if (!this.parent.enabled) {\n return;\n }\n if (!this.parent.readonly || isNullOrUndefined(args.item)) {\n this.parent.notify(toolbarClick, args);\n }\n this.parent.trigger('toolbarClick', args);\n };\n ToolbarRenderer.prototype.dropDownSelected = function (args) {\n this.parent.notify(dropDownSelect, args);\n this.onPopupOverlay();\n };\n ToolbarRenderer.prototype.beforeDropDownItemRender = function (args) {\n if (this.parent.readonly || !this.parent.enabled) {\n return;\n }\n this.parent.notify(beforeDropDownItemRender, args);\n };\n ToolbarRenderer.prototype.dropDownOpen = function (args) {\n if (args.element.parentElement.getAttribute('id').indexOf('TableCell') > -1 && !isNullOrUndefined(args.element.parentElement.querySelector('.e-cell-merge')) &&\n (!isNullOrUndefined(args.element.parentElement.querySelector('.e-cell-horizontal-split')) || !isNullOrUndefined(args.element.parentElement.querySelector('.e-cell-vertical-split')))) {\n var listEle = args.element.querySelectorAll('li');\n if (this.parent.inputElement.querySelectorAll('.e-cell-select').length === 1) {\n addClass([listEle[0]], 'e-disabled');\n removeClass([listEle[1], listEle[2]], 'e-disabled');\n }\n else if (this.parent.inputElement.querySelectorAll('.e-cell-select').length > 1) {\n removeClass([listEle[0]], 'e-disabled');\n addClass([listEle[1], listEle[2]], 'e-disabled');\n }\n }\n if (Browser.isDevice && !args.element.parentElement.classList.contains(CLS_QUICK_DROPDOWN)) {\n this.popupModal(args.element.parentElement);\n }\n this.parent.notify(selectionSave, args);\n };\n ToolbarRenderer.prototype.dropDownClose = function (args) {\n this.removePopupContainer();\n this.parent.notify(selectionRestore, args);\n };\n ToolbarRenderer.prototype.removePopupContainer = function () {\n if (Browser.isDevice && !isNullOrUndefined(this.popupContainer)) {\n var popupEle = this.popupContainer.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n this.popupContainer.parentNode.insertBefore(popupEle, this.popupContainer.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(this.popupContainer);\n this.popupContainer = undefined;\n }\n };\n /**\n * renderToolbar method\n *\n * @param {IToolbarOptions} args - specifies the arguments.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.renderToolbar = function (args) {\n this.setPanel(args.target);\n this.renderPanel();\n this.mode = args.overflowMode;\n args.rteToolbarObj.toolbarObj = new Toolbar({\n items: args.items,\n width: '100%',\n overflowMode: args.overflowMode,\n beforeCreate: this.toolbarBeforeCreate.bind(this),\n created: this.toolbarCreated.bind(this),\n clicked: this.toolbarClicked.bind(this),\n enablePersistence: args.enablePersistence,\n enableRtl: args.enableRtl,\n cssClass: args.cssClass\n });\n args.rteToolbarObj.toolbarObj.isStringTemplate = true;\n args.rteToolbarObj.toolbarObj.createElement = this.parent.createElement;\n args.rteToolbarObj.toolbarObj.appendTo(args.target);\n };\n /**\n * renderDropDownButton method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.renderDropDownButton = function (args) {\n var _this = this;\n var css;\n args.element.classList.add(CLS_DROPDOWN_BTN);\n css = args.cssClass + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN;\n if (this.parent.inlineMode.enable && Browser.isDevice) {\n css = css + ' ' + CLS_INLINE_DROPDOWN;\n }\n // eslint-disable-next-line\n var proxy = this;\n var dropDown = new DropDownButton({\n items: args.items,\n iconCss: args.iconCss,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n // eslint-disable-next-line\n for (var index = 0; index < args.element.childNodes.length; index++) {\n var divNode = _this.parent.createElement('div');\n divNode.innerHTML = dropDown.content.trim();\n if (divNode.textContent.trim() !== ''\n && args.element.childNodes[index].textContent.trim() === divNode.textContent.trim()) {\n if (!args.element.childNodes[index].classList.contains('e-active')) {\n addClass([args.element.childNodes[index]], 'e-active');\n }\n }\n else {\n removeClass([args.element.childNodes[index]], 'e-active');\n }\n }\n proxy.parent.notify(beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n return dropDown;\n };\n /**\n * renderListDropDown method\n *\n * @param {IDropDownModel} args - specifies the the arguments.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.renderListDropDown = function (args) {\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((args.itemName === 'NumberFormatList') ? CLS_NUMBERFORMATLIST_TB_BTN : CLS_BULLETFORMATLIST_TB_BTN));\n var content = proxy.parent.createElement('span', { className: CLS_LIST_PRIMARY_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n items: args.items,\n cssClass: css,\n content: args.content,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n select: this.dropDownSelected.bind(this),\n beforeOpen: function (args) {\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n args.cancel = true;\n return;\n }\n var element = (args.event) ? args.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n if (args.event && args.event.type === 'click' && (element.classList.contains(CLS_LIST_PRIMARY_CONTENT)\n || element.parentElement.classList.contains(CLS_LIST_PRIMARY_CONTENT))) {\n args.cancel = true;\n return;\n }\n proxy.parent.notify(beforeDropDownOpen, args);\n },\n close: this.dropDownClose.bind(this),\n open: this.dropDownOpen.bind(this),\n beforeItemRender: this.beforeDropDownItemRender.bind(this)\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n dropDown.appendTo(args.element);\n args.element.tabIndex = -1;\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n if (args.element.childElementCount === 1) {\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n }\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n return dropDown;\n };\n // eslint-disable-next-line\n ToolbarRenderer.prototype.onPopupOverlay = function (args) {\n if (!isNullOrUndefined(this.popupOverlay)) {\n closest(this.popupOverlay, '.e-popup-container').style.display = 'none';\n this.popupOverlay.style.display = 'none';\n removeClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.setIsModel = function (element) {\n if (!closest(element, '.e-popup-container')) {\n this.popupContainer = this.parent.createElement('div', {\n className: 'e-rte-modal-popup e-popup-container e-center'\n });\n element.parentNode.insertBefore(this.popupContainer, element);\n this.popupContainer.appendChild(element);\n this.popupContainer.style.zIndex = element.style.zIndex;\n this.popupContainer.style.display = 'flex';\n element.style.position = 'relative';\n addClass([element], 'e-popup-modal');\n this.popupOverlay = this.parent.createElement('div', { className: 'e-popup-overlay' });\n // eslint-disable-next-line\n this.popupOverlay.style.zIndex = (parseInt(element.style.zIndex, null) - 1).toString();\n this.popupOverlay.style.display = 'block';\n this.popupContainer.appendChild(this.popupOverlay);\n EventHandler.add(this.popupOverlay, 'click touchmove', this.onPopupOverlay, this);\n }\n else {\n element.parentElement.style.display = 'flex';\n this.popupOverlay = element.nextElementSibling;\n this.popupOverlay.style.display = 'block';\n addClass([this.popupOverlay], 'e-popup-overlay');\n }\n };\n ToolbarRenderer.prototype.paletteSelection = function (dropDownArgs, currentElement) {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var colorbox = [].slice.call(selectAll('.e-tile', ele.parentElement));\n removeClass(colorbox, 'e-selected');\n var style = currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n (colorbox.filter(function (colorbox) {\n if (colorbox.style.backgroundColor === style) {\n addClass([colorbox], 'e-selected');\n }\n }));\n };\n /**\n * renderColorPickerDropDown method\n *\n * @param {IColorPickerModel} args - specifies the arguments.\n * @param {string} item - specifies the item.\n * @param {ColorPicker} colorPicker - specifies the colorpicker.\n * @param {string} defaultColor -specifies the defaultColor.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.renderColorPickerDropDown = function (args, item, colorPicker, defaultColor) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var css = CLS_RTE_ELEMENTS + ' ' + CLS_TB_BTN + ((this.parent.inlineMode) ? (' ' + CLS_INLINE_DROPDOWN) : '');\n css += (' ' + ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_DROPDOWN : CLS_FONT_COLOR_DROPDOWN));\n css += ' ' + this.parent.cssClass;\n var content = proxy.parent.createElement('span', { className: CLS_COLOR_CONTENT });\n var inlineEle = proxy.parent.createElement('span', { className: args.cssClass });\n var range;\n var initialBackgroundColor = (isNullOrUndefined(defaultColor)) ? proxy.parent.backgroundColor.default : defaultColor;\n inlineEle.style.borderBottomColor = (item === 'backgroundcolor') ?\n initialBackgroundColor : proxy.parent.fontColor.default;\n content.appendChild(inlineEle);\n var dropDown = new DropDownButton({\n target: colorPicker.element.parentElement, cssClass: css,\n enablePersistence: this.parent.enablePersistence, enableRtl: this.parent.enableRtl,\n beforeOpen: function (dropDownArgs) {\n colorPicker.inline = true;\n colorPicker.dataBind();\n if (proxy.parent.readonly || !proxy.parent.enabled) {\n dropDownArgs.cancel = true;\n return;\n }\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n proxy.currentElement = dropDown.element;\n proxy.currentDropdown = dropDown;\n proxy.paletteSelection(dropDownArgs, proxy.currentElement);\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n dropDownArgs.cancel = true;\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n proxy.parent.notify(selectionRestore, {});\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var parentNode = range.startContainer.parentNode;\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n (closest(range.startContainer.parentNode, 'td,th')) ||\n (proxy.parent.iframeSettings.enable && !hasClass(parentNode.ownerDocument.querySelector('body'), 'e-lib')))\n && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + CLS_RTE)) {\n proxy.parent.notify(tableColorPickerChanged, {\n item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n else {\n proxy.parent.notify(colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n else {\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n var inst = getInstance(ele, ColorPicker);\n inst.showButtons = (dropDownArgs.element.querySelector('.e-color-palette')) ? false : true;\n inst.dataBind();\n }\n dropDownArgs.element.onclick = function (args) {\n if (args.target.classList.contains('e-cancel')) {\n dropDown.toggle();\n }\n };\n },\n open: function (dropDownArgs) {\n _this.setColorPickerContentWidth(colorPicker);\n var focusEle;\n var ele = dropDownArgs.element.querySelector('.e-control.e-colorpicker');\n if (dropDownArgs.element.querySelector('.e-color-palette')) {\n focusEle = ele.parentElement.querySelector('.e-palette');\n }\n else {\n focusEle = ele.parentElement.querySelector('e-handler');\n }\n if (focusEle) {\n focusEle.focus();\n }\n if (Browser.isDevice) {\n _this.popupModal(dropDownArgs.element.parentElement);\n }\n _this.pickerRefresh(dropDownArgs);\n },\n beforeClose: function (dropDownArgs) {\n var element = (dropDownArgs.event) ? dropDownArgs.event.target : null;\n if (dropDownArgs.event && dropDownArgs.event.type === 'click' && (element.classList.contains(CLS_COLOR_CONTENT)\n || element.parentElement.classList.contains(CLS_COLOR_CONTENT))) {\n var colorpickerValue = element.classList.contains(CLS_RTE_ELEMENTS) ? element.style.borderBottomColor :\n element.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor;\n range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed) {\n proxy.parent.notify(tableColorPickerChanged, { item: {\n command: args.command, subCommand: args.subCommand,\n value: colorpickerValue\n }\n });\n }\n else {\n proxy.parent.notify(colorPickerChanged, { item: { command: args.command, subCommand: args.subCommand,\n value: colorpickerValue }\n });\n }\n return;\n }\n },\n close: function (dropDownArgs) {\n proxy.parent.notify(selectionRestore, {});\n var dropElement = closest(dropDownArgs.element.parentElement, '.e-popup-container');\n if (dropElement) {\n dropElement.style.display = 'none';\n dropElement.lastElementChild.style.display = 'none';\n removeClass([dropElement.lastElementChild], 'e-popup-overlay');\n }\n if (Browser.isDevice && !isNullOrUndefined(dropElement)) {\n var popupEle = dropElement.querySelector('.e-dropdown-popup.e-tbar-btn.e-control');\n if (popupEle) {\n dropElement.parentNode.insertBefore(popupEle, dropElement.nextSibling);\n popupEle.style.removeProperty('position');\n removeClass([popupEle], 'e-popup-modal');\n }\n detach(dropElement);\n proxy.popupContainer = undefined;\n }\n }\n });\n dropDown.isStringTemplate = true;\n dropDown.createElement = proxy.parent.createElement;\n args.element.setAttribute('role', 'button');\n dropDown.appendTo(args.element);\n var popupElement = document.getElementById(dropDown.element.id + '-popup');\n popupElement.setAttribute('aria-owns', this.parent.getID());\n dropDown.element.insertBefore(content, dropDown.element.querySelector('.e-caret'));\n args.element.tabIndex = -1;\n dropDown.element.removeAttribute('type');\n dropDown.element.onmousedown = function () {\n proxy.parent.notify(selectionSave, {});\n };\n dropDown.element.onkeydown = function () {\n proxy.parent.notify(selectionSave, {});\n };\n return dropDown;\n };\n ToolbarRenderer.prototype.pickerRefresh = function (dropDownArgs) {\n if (this.parent.backgroundColor.mode === 'Picker') {\n var popupElem = dropDownArgs.element.parentElement;\n popupElem.style.width = (popupElem.offsetWidth + 5).toString() + 'px';\n getInstance(popupElem, Popup).refreshPosition(popupElem);\n popupElem.style.width = (popupElem.offsetWidth - 5).toString() + 'px';\n }\n };\n ToolbarRenderer.prototype.popupModal = function (element) {\n var popupInst = getInstance(element, Popup);\n popupInst.relateTo = document.body;\n popupInst.position = { X: 0, Y: 0 };\n popupInst.targetType = 'container';\n popupInst.collision = { X: 'fit', Y: 'fit' };\n popupInst.offsetY = 4;\n popupInst.dataBind();\n this.setIsModel(element);\n };\n ToolbarRenderer.prototype.setColorPickerContentWidth = function (colorPicker) {\n var colorPickerContent = colorPicker.element.nextSibling;\n if (colorPickerContent.style.width === '0px') {\n colorPickerContent.style.width = '';\n var borderWidth = parseInt(getComputedStyle(colorPickerContent).borderBottomWidth, 10);\n colorPickerContent.style.width = formatUnit(colorPickerContent.children[0].offsetWidth\n + borderWidth + borderWidth);\n }\n };\n /**\n * renderColorPicker method\n *\n * @param {IColorPickerModel} args - specifies the arguments\n * @param {string} item - specifies the string values\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.renderColorPicker = function (args, item) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var value;\n var colorPicker = new ColorPicker({\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n inline: false,\n value: '#fff',\n created: function () {\n var value = (item === 'backgroundcolor') ? proxy.parent.backgroundColor.default : proxy.parent.fontColor.default;\n colorPicker.setProperties({ value: value });\n },\n mode: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.mode : proxy.parent.fontColor.mode),\n modeSwitcher: ((item === 'backgroundcolor') ? proxy.parent.backgroundColor.modeSwitcher : proxy.parent.fontColor.modeSwitcher),\n beforeTileRender: function (args) {\n args.element.classList.add(CLS_COLOR_PALETTE);\n args.element.classList.add(CLS_CUSTOM_TILE);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n args.element.classList.add(allClassName[i]);\n }\n }\n }\n if (args.value === '') {\n args.element.classList.add(CLS_NOCOLOR_ITEM);\n }\n },\n change: function (colorPickerArgs) {\n var colorpickerValue = colorPickerArgs.currentValue.rgba;\n colorPickerArgs.item = {\n command: args.command,\n subCommand: args.subCommand,\n value: colorpickerValue\n };\n proxy.parent.notify(selectionRestore, {});\n proxy.currentElement.querySelector('.' + CLS_RTE_ELEMENTS).style.borderBottomColor = colorpickerValue;\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n var closestElement = closest(range.startContainer.parentNode, 'table');\n if ((range.startContainer.nodeName === 'TD' || range.startContainer.nodeName === 'TH' || range.startContainer.nodeName === 'BODY' ||\n closest(range.startContainer.parentNode, 'td,th')) && range.collapsed && args.subCommand === 'BackgroundColor' && closest(closestElement, '.' + CLS_RTE)) {\n proxy.parent.notify(tableColorPickerChanged, colorPickerArgs);\n }\n else {\n proxy.parent.notify(colorPickerChanged, colorPickerArgs);\n }\n proxy.currentDropdown.toggle();\n },\n beforeModeSwitch: function (args) {\n value = colorPicker.value;\n if (value === '') {\n colorPicker.setProperties({ value: ((args.mode === 'Picker') ? '#008000ff' : '') }, true);\n }\n colorPicker.showButtons = args.mode === 'Palette' ? false : true;\n }\n });\n colorPicker.isStringTemplate = true;\n colorPicker.columns = (item === 'backgroundcolor') ? this.parent.backgroundColor.columns : this.parent.fontColor.columns;\n colorPicker.presetColors = (item === 'backgroundcolor') ? this.parent.backgroundColor.colorCode :\n this.parent.fontColor.colorCode;\n colorPicker.cssClass = ((item === 'backgroundcolor') ? CLS_BACKGROUND_COLOR_PICKER : CLS_FONT_COLOR_PICKER) + ' ' + args.cssClass;\n colorPicker.createElement = this.parent.createElement;\n colorPicker.appendTo(document.getElementById(args.target));\n return colorPicker;\n };\n /**\n * The function is used to render Rich Text Editor toolbar\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_TOOLBAR);\n };\n /**\n * Get the toolbar element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.getPanel = function () {\n return this.toolbarPanel;\n };\n /**\n * Set the toolbar element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element.\n * @hidden\n * @deprecated\n */\n ToolbarRenderer.prototype.setPanel = function (panel) {\n this.toolbarPanel = panel;\n };\n return ToolbarRenderer;\n}());\n\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar BaseToolbar = /** @__PURE__ @class */ (function () {\n function BaseToolbar(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n BaseToolbar.prototype.addEventListener = function () {\n this.parent.on(rtlMode, this.setRtl, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n BaseToolbar.prototype.removeEventListener = function () {\n this.parent.off(rtlMode, this.setRtl);\n this.parent.off(bindCssClass, this.setCssClass);\n this.parent.off(destroy, this.removeEventListener);\n };\n BaseToolbar.prototype.setCssClass = function (e) {\n if (!isNullOrUndefined(this.toolbarObj)) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n BaseToolbar.prototype.setRtl = function (args) {\n if (!isNullOrUndefined(this.toolbarObj)) {\n this.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n BaseToolbar.prototype.getClass = function (item) {\n var classes;\n switch (item) {\n case 'fontsize':\n classes = 'e-rte-inline-size-template';\n break;\n case 'fontcolor':\n case 'backgroundcolor':\n classes = 'e-rte-inline-color-template';\n break;\n default:\n classes = 'e-rte-inline-template';\n break;\n }\n return classes;\n };\n BaseToolbar.prototype.getTemplateObject = function (itemStr, container) {\n var tagName;\n switch (itemStr) {\n case 'fontcolor':\n case 'backgroundcolor':\n case 'numberformatlist':\n case 'bulletformatlist':\n tagName = 'span';\n break;\n default:\n tagName = 'button';\n break;\n }\n return {\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand,\n template: this.parent.createElement(tagName, {\n id: this.parent.getID() + '_' + container\n + '_' + this.tools[itemStr.toLocaleLowerCase()].id\n }).outerHTML,\n cssClass: this.parent.inlineMode.enable ? this.getClass(itemStr) : '',\n tooltipText: getTooltipText(itemStr, this.locator)\n };\n };\n /**\n * getObject method\n *\n * @param {string} item - specifies the string value\n * @param {string} container - specifies the value of string\n * @returns {IToolbarItemModel} - returns the model element\n * @hidden\n * @deprecated\n */\n BaseToolbar.prototype.getObject = function (item, container) {\n var itemStr = item.toLowerCase();\n if (templateItems.indexOf(itemStr) !== -1) {\n return this.getTemplateObject(itemStr, container);\n }\n else {\n switch (itemStr) {\n case '|':\n return { type: 'Separator' };\n case '-':\n return { type: 'Separator', cssClass: CLS_HR_SEPARATOR };\n default:\n return {\n id: this.parent.getID() + '_' + container + '_' + this.tools[itemStr.toLocaleLowerCase()].id,\n prefixIcon: this.tools[itemStr.toLocaleLowerCase()].icon,\n tooltipText: getTooltipText(itemStr, this.locator),\n command: this.tools[itemStr.toLocaleLowerCase()].command,\n subCommand: this.tools[itemStr.toLocaleLowerCase()].subCommand\n };\n }\n }\n };\n /**\n * @param {string} tbItems - specifies the string value\n * @param {string} container - specifies the container value\n * @returns {ItemModel} - retunrs the model element\n * @hidden\n * @deprecated\n */\n BaseToolbar.prototype.getItems = function (tbItems, container) {\n var _this = this;\n if (this.parent.toolbarSettings.items.length < 1) {\n return [];\n }\n var items = [];\n var _loop_1 = function (item) {\n switch (typeof item) {\n case 'string':\n items.push(this_1.getObject(item, container));\n break;\n default:\n if (!isNullOrUndefined(item.click)) {\n var proxy_1 = item;\n var callback_1 = proxy_1.click;\n proxy_1.click = function () {\n if (proxy_1.undo && _this.parent.formatter.getUndoRedoStack().length === 0) {\n _this.parent.formatter.saveData();\n }\n callback_1.call(_this);\n if ((_this.parent.formatter.getUndoRedoStack()[_this.parent.formatter.getUndoRedoStack().length - 1].text.trim()\n === _this.parent.inputElement.innerHTML.trim())) {\n return;\n }\n if (proxy_1.undo) {\n _this.parent.formatter.saveData();\n }\n };\n }\n items.push(item);\n }\n };\n var this_1 = this;\n for (var _i = 0, tbItems_1 = tbItems; _i < tbItems_1.length; _i++) {\n var item = tbItems_1[_i];\n _loop_1(item);\n }\n return items;\n };\n BaseToolbar.prototype.getToolbarOptions = function (args) {\n return {\n target: args.target,\n rteToolbarObj: this,\n items: this.getItems(args.items, args.container),\n overflowMode: args.mode,\n enablePersistence: this.parent.enablePersistence,\n enableRtl: this.parent.enableRtl,\n cssClass: args.cssClass\n };\n };\n /**\n * render method\n *\n * @param {IToolbarRenderOptions} args - specifies the toolbar options\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseToolbar.prototype.render = function (args) {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.toolbarRenderer.renderToolbar(this.getToolbarOptions(args));\n };\n return BaseToolbar;\n}());\n\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar DropDownButtons = /** @__PURE__ @class */ (function () {\n function DropDownButtons(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n DropDownButtons.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n DropDownButtons.prototype.beforeRender = function (args) {\n var item = args.item;\n if (item.cssClass) {\n addClass([args.element], item.cssClass);\n }\n if (item.command === 'Alignments' || item.subCommand === 'JustifyLeft'\n || item.subCommand === 'JustifyRight' || item.subCommand === 'JustifyCenter') {\n args.element.setAttribute('title', getTooltipText(item.subCommand.toLocaleLowerCase(), this.locator));\n }\n };\n DropDownButtons.prototype.dropdownContent = function (width, type, content) {\n return ('' +\n '' + content + '');\n };\n /**\n * renderDropDowns method\n *\n * @param {IDropDownRenderArgs} args - specifies the arguments\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DropDownButtons.prototype.renderDropDowns = function (args) {\n var _this = this;\n this.initializeInstance();\n var type = args.containerType;\n var tbElement = args.container;\n templateItems.forEach(function (item) {\n var targetElement = undefined;\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'numberformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_NumberFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatOLItem = _this.parent.numberFormatList.types.slice();\n formatOLItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'NumberFormatList', enumerable: true }\n });\n });\n _this.numberFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-order-list' + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS,\n itemName: 'NumberFormatList', items: formatOLItem, element: targetElement\n });\n break;\n }\n case 'bulletformatlist': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_BulletFormatList', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatULItem = _this.parent.bulletFormatList.types.slice();\n formatULItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Lists', enumerable: true }, subCommand: { value: 'BulletFormatList', enumerable: true }\n });\n });\n _this.bulletFormatListDropDown = _this.toolbarRenderer.renderListDropDown({\n cssClass: 'e-unorder-list' + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS,\n itemName: 'BulletFormatList', items: formatULItem, element: targetElement\n });\n break;\n }\n case 'formats': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Formats', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n var formatItem = _this.parent.format.types.slice();\n formatItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Formats', enumerable: true }, subCommand: { value: item.value, enumerable: true }\n });\n });\n var formatContent = isNullOrUndefined(_this.parent.format.default) ? formatItem[0].text :\n _this.parent.format.default;\n _this.formatDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-formats e-icons' : ''),\n content: _this.dropdownContent(_this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItem, formatContent, 'text', 'text'))),\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_FORMATS_TB_BTN,\n itemName: 'Formats', items: formatItem, element: targetElement\n });\n break;\n }\n case 'fontname': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontName', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontItem = _this.parent.fontFamily.items.slice();\n fontItem.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontName', enumerable: true }\n });\n });\n var fontNameContent = isNullOrUndefined(_this.parent.fontFamily.default) ? fontItem[0].text :\n _this.parent.fontFamily.default;\n _this.fontNameDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: ((type === 'quick') ? 'e-font-name e-icons' : ''),\n content: _this.dropdownContent(_this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItem, fontNameContent, 'text', 'text'))),\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_FONT_NAME_TB_BTN,\n itemName: 'FontName', items: fontItem, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontFamily.default)) {\n _this.getEditNode().style.fontFamily = _this.parent.fontFamily.default;\n }\n break;\n }\n case 'fontsize': {\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_FontSize', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n var fontsize = _this.parent.fontSize.items.slice();\n fontsize.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: 'Font', enumerable: true }, subCommand: { value: 'FontSize', enumerable: true }\n });\n });\n var fontSizeContent = isNullOrUndefined(_this.parent.fontSize.default) ? fontsize[1].text :\n _this.parent.fontSize.default;\n _this.fontSizeDropDown = _this.toolbarRenderer.renderDropDownButton({\n content: _this.dropdownContent(_this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text'))),\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_FONT_SIZE_TB_BTN,\n itemName: 'FontSize', items: fontsize, element: targetElement\n });\n if (!isNullOrUndefined(_this.parent.fontSize.default)) {\n _this.getEditNode().style.fontSize = _this.parent.fontSize.default;\n }\n break;\n }\n case 'alignments':\n targetElement = select('#' + _this.parent.getID() + '_' + type + '_Alignments', tbElement);\n if (isNullOrUndefined(targetElement) || targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n _this.alignDropDown = _this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_ALIGN_TB_BTN,\n itemName: 'Alignments', items: alignmentItems, element: targetElement\n });\n break;\n case 'align':\n case 'videoalign':\n _this.renderAlignmentDropDown(type, tbElement, targetElement, item);\n break;\n case 'display':\n case 'audiolayoutoption':\n case 'videolayoutoption':\n _this.renderDisplayDropDown(type, tbElement, targetElement, item);\n break;\n case 'tablerows':\n _this.rowDropDown(type, tbElement, targetElement);\n break;\n case 'tablecolumns':\n _this.columnDropDown(type, tbElement, targetElement);\n break;\n case 'tablecell':\n _this.cellDropDown(type, tbElement, targetElement);\n break;\n case 'tablecellverticalalign':\n _this.verticalAlignDropDown(type, tbElement, targetElement);\n break;\n case 'styles':\n _this.tableStylesDropDown(type, tbElement, targetElement);\n break;\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.cssClass });\n }\n };\n DropDownButtons.prototype.getUpdateItems = function (items, value) {\n var dropDownItems = items.slice();\n dropDownItems.forEach(function (item) {\n Object.defineProperties(item, {\n command: { value: (value === 'Format' ? 'Formats' : 'Font'), enumerable: true },\n subCommand: { value: (value === 'Format' ? item.value : value), enumerable: true }\n });\n });\n return dropDownItems;\n };\n DropDownButtons.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var type;\n var content;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontFamily':\n if (this.fontNameDropDown) {\n for (var _b = 0, _c = Object.keys(newProp.fontFamily); _b < _c.length; _b++) {\n var fontFamily$$1 = _c[_b];\n switch (fontFamily$$1) {\n case 'default':\n case 'width': {\n var fontItems = this.fontNameDropDown.items;\n type = !isNullOrUndefined(closest(this.fontNameDropDown.element, '.' + CLS_QUICK_TB)) ?\n 'quick' : 'toolbar';\n var fontNameContent = isNullOrUndefined(this.parent.fontFamily.default) ? fontItems[0].text :\n this.parent.fontFamily.default;\n content = this.dropdownContent(this.parent.fontFamily.width, type, ((type === 'quick') ? '' : getDropDownValue(fontItems, fontNameContent, 'text', 'text')));\n this.fontNameDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n this.getEditNode().style.fontFamily = this.parent.fontFamily.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-family');\n }\n break;\n }\n case 'items':\n this.fontNameDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontFamily.items, 'FontName')\n });\n break;\n }\n }\n }\n break;\n case 'fontSize':\n if (this.fontSizeDropDown) {\n for (var _d = 0, _e = Object.keys(newProp.fontSize); _d < _e.length; _d++) {\n var fontSize$$1 = _e[_d];\n switch (fontSize$$1) {\n case 'default':\n case 'width': {\n var fontsize = this.fontSizeDropDown.items;\n type = !isNullOrUndefined(closest(this.fontSizeDropDown.element, '.' + CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var fontSizeContent = isNullOrUndefined(this.parent.fontSize.default) ? fontsize[1].text :\n this.parent.fontSize.default;\n content = this.dropdownContent(this.parent.fontSize.width, type, getFormattedFontSize(getDropDownValue(fontsize, fontSizeContent.replace(/\\s/g, ''), 'value', 'text')));\n this.fontSizeDropDown.setProperties({ content: content });\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n this.getEditNode().style.fontSize = this.parent.fontSize.default;\n }\n else {\n this.getEditNode().style.removeProperty('font-size');\n }\n break;\n }\n case 'items':\n this.fontSizeDropDown.setProperties({\n items: this.getUpdateItems(newProp.fontSize.items, 'FontSize')\n });\n break;\n }\n }\n }\n break;\n case 'format':\n if (this.formatDropDown) {\n for (var _f = 0, _g = Object.keys(newProp.format); _f < _g.length; _f++) {\n var format = _g[_f];\n switch (format) {\n case 'default':\n case 'width': {\n var formatItems$$1 = this.formatDropDown.items;\n type = !isNullOrUndefined(closest(this.formatDropDown.element, '.' + CLS_QUICK_TB)) ? 'quick' : 'toolbar';\n var formatContent = isNullOrUndefined(this.parent.format.default) ? formatItems$$1[0].text :\n this.parent.format.default;\n content = this.dropdownContent(this.parent.format.width, type, ((type === 'quick') ? '' : getDropDownValue(formatItems$$1, formatContent, 'text', 'text')));\n this.formatDropDown.setProperties({ content: content });\n break;\n }\n case 'types':\n this.formatDropDown.setProperties({\n items: this.getUpdateItems(newProp.format.types, 'Format')\n });\n break;\n }\n }\n }\n break;\n }\n }\n };\n DropDownButtons.prototype.getEditNode = function () {\n return this.parent.contentModule.getEditPanel();\n };\n DropDownButtons.prototype.rowDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableRows', tbElement);\n if (targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-rows e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_QUICK_DROPDOWN,\n itemName: 'TableRows',\n items: tableRowsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.columnDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableColumns', tbElement);\n if (targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableColumnsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-columns e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_QUICK_DROPDOWN,\n itemName: 'TableColumns',\n items: tableColumnsItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.cellDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCell', tbElement);\n if (targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableRowsDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_QUICK_DROPDOWN,\n itemName: 'TableCell',\n items: tableCellItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.verticalAlignDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_TableCellVerticalAlign', tbElement);\n if (targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n this.tableCellVerticalAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-table-cell-ver-align e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_QUICK_DROPDOWN,\n itemName: 'TableCellVerticalAlign',\n items: TableCellVerticalAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderDisplayDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'display' ? '_Display' : item === 'videolayoutoption' ? '_VideoLayoutOption' : '_AudioLayoutOption'), tbElement);\n if (targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n this.displayDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: item === 'display' ? 'e-display e-icons' : item === 'videolayoutoption' ? 'e-video-display e-icons' : 'e-audio-display e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ITEMS + ' ' + CLS_QUICK_DROPDOWN,\n itemName: item === 'display' ? 'Display' : item === 'videolayoutoption' ? 'VideoLayoutOption' : 'AudioLayoutOption',\n items: item === 'display' ? imageDisplayItems : item === 'videolayoutoption' ? videoLayoutOptionItems : audioLayoutOptionItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.renderAlignmentDropDown = function (type, tbElement, targetElement, item) {\n targetElement = select('#' + this.parent.getID() + '_' + type + (item === 'align' ? '_Align' : '_VideoAlign'), tbElement);\n if (targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-justify-left e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ICONS + ' ' + CLS_QUICK_DROPDOWN,\n itemName: item === 'align' ? 'Align' : 'VideoAlign',\n items: item === 'align' ? imageAlignItems : videoAlignItems,\n element: targetElement\n });\n };\n DropDownButtons.prototype.tableStylesDropDown = function (type, tbElement, targetElement) {\n targetElement = select('#' + this.parent.getID() + '_' + type + '_Styles', tbElement);\n if (targetElement.classList.contains(CLS_DROPDOWN_BTN)) {\n return;\n }\n this.imageAlignDropDown = this.toolbarRenderer.renderDropDownButton({\n iconCss: 'e-style e-icons',\n cssClass: CLS_DROPDOWN_POPUP + ' ' + CLS_DROPDOWN_ICONS + ' ' + CLS_QUICK_DROPDOWN,\n itemName: 'Styles',\n items: this.parent.tableSettings.styles,\n element: targetElement\n });\n };\n DropDownButtons.prototype.removeDropDownClasses = function (target) {\n removeClass([target], [\n CLS_DROPDOWN_BTN,\n CLS_DROPDOWN_POPUP,\n CLS_DROPDOWN_ICONS,\n CLS_DROPDOWN_ITEMS\n ]);\n };\n /**\n * destroyDropDowns method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DropDownButtons.prototype.destroyDropDowns = function () {\n if (this.formatDropDown) {\n this.removeDropDownClasses(this.formatDropDown.element);\n this.formatDropDown.destroy();\n }\n if (this.fontNameDropDown) {\n this.removeDropDownClasses(this.fontNameDropDown.element);\n this.fontNameDropDown.destroy();\n }\n if (this.fontSizeDropDown) {\n this.removeDropDownClasses(this.fontSizeDropDown.element);\n this.fontSizeDropDown.destroy();\n }\n if (this.alignDropDown) {\n this.removeDropDownClasses(this.alignDropDown.element);\n this.alignDropDown.destroy();\n }\n if (this.imageAlignDropDown) {\n this.removeDropDownClasses(this.imageAlignDropDown.element);\n this.imageAlignDropDown.destroy();\n }\n if (this.displayDropDown) {\n this.removeDropDownClasses(this.displayDropDown.element);\n this.displayDropDown.destroy();\n }\n if (this.tableRowsDropDown) {\n this.removeDropDownClasses(this.tableRowsDropDown.element);\n this.tableRowsDropDown.destroy();\n }\n if (this.tableColumnsDropDown) {\n this.removeDropDownClasses(this.tableColumnsDropDown.element);\n this.tableColumnsDropDown.destroy();\n }\n if (this.tableCellVerticalAlignDropDown) {\n this.removeDropDownClasses(this.tableCellVerticalAlignDropDown.element);\n this.tableCellVerticalAlignDropDown.destroy();\n }\n if (this.numberFormatListDropDown) {\n this.removeDropDownClasses(this.numberFormatListDropDown.element);\n this.numberFormatListDropDown.destroy();\n }\n if (this.bulletFormatListDropDown) {\n this.removeDropDownClasses(this.bulletFormatListDropDown.element);\n this.bulletFormatListDropDown.destroy();\n }\n };\n DropDownButtons.prototype.setRtl = function (args) {\n if (this.formatDropDown) {\n this.formatDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontNameDropDown) {\n this.fontNameDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.fontSizeDropDown) {\n this.fontSizeDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.alignDropDown) {\n this.alignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageAlignDropDown) {\n this.imageAlignDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.displayDropDown) {\n this.displayDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.numberFormatListDropDown) {\n this.numberFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.bulletFormatListDropDown) {\n this.bulletFormatListDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n DropDownButtons.prototype.updateCss = function (dropDownObj, e) {\n if (dropDownObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n DropDownButtons.prototype.setCssClass = function (e) {\n var dropDownObj = [\n this.formatDropDown, this.fontNameDropDown, this.fontSizeDropDown, this.alignDropDown, this.imageAlignDropDown,\n this.displayDropDown, this.numberFormatListDropDown, this.bulletFormatListDropDown, this.tableRowsDropDown,\n this.tableColumnsDropDown, this.tableCellVerticalAlignDropDown\n ];\n for (var i = 0; i < dropDownObj.length; i++) {\n this.updateCss(dropDownObj[i], e);\n }\n };\n DropDownButtons.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(beforeDropDownItemRender, this.beforeRender, this);\n this.parent.on(iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(rtlMode, this.setRtl, this);\n this.parent.on(destroy, this.removeEventListener, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n };\n DropDownButtons.prototype.onIframeMouseDown = function () {\n dispatchEvent(document, 'mousedown');\n };\n DropDownButtons.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(rtlMode, this.setRtl);\n this.parent.off(beforeDropDownItemRender, this.beforeRender);\n this.parent.off(destroy, this.removeEventListener);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(bindCssClass, this.setCssClass);\n };\n return DropDownButtons;\n}());\n\n/**\n * ServiceLocator\n *\n * @hidden\n * @deprecated\n */\nvar ServiceLocator = /** @__PURE__ @class */ (function () {\n function ServiceLocator() {\n this.services = {};\n }\n /* eslint-disable */\n /**\n * register method\n *\n * @param {string} name - specifies the name.\n * @param {T} type - specifies the type.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-enable */\n ServiceLocator.prototype.register = function (name, type) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n this.services[\"\" + name] = type;\n }\n };\n /**\n * getService method\n *\n * @param {string} name - specifies the name.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ServiceLocator.prototype.getService = function (name) {\n if (isNullOrUndefined(this.services[\"\" + name])) {\n // eslint-disable-next-line\n throw \"The service \" + name + \" is not registered\";\n }\n return this.services[\"\" + name];\n };\n return ServiceLocator;\n}());\n\n/**\n * RendererFactory\n *\n * @hidden\n * @deprecated\n */\nvar RendererFactory = /** @__PURE__ @class */ (function () {\n function RendererFactory() {\n this.rendererMap = {};\n }\n /**\n * addRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @param {IRenderer} type - specifies the renderer.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RendererFactory.prototype.addRenderer = function (name, type) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n this.rendererMap[\"\" + rName] = type;\n }\n };\n /**\n * getRenderer method\n *\n * @param {RenderType} name - specifies the render type\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RendererFactory.prototype.getRenderer = function (name) {\n var rName = getEnumValue(RenderType, name);\n if (isNullOrUndefined(this.rendererMap[\"\" + rName])) {\n // eslint-disable-next-line\n throw \"The renderer \" + rName + \" is not found\";\n }\n else {\n return this.rendererMap[\"\" + rName];\n }\n };\n return RendererFactory;\n}());\n\n/**\n * `ToolbarAction` module is used to toolbar click action\n */\nvar ToolbarAction = /** @__PURE__ @class */ (function () {\n function ToolbarAction(parent) {\n this.parent = parent;\n this.addEventListener();\n this.serviceLocator = new ServiceLocator;\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n }\n ToolbarAction.prototype.addEventListener = function () {\n this.parent.on(toolbarClick, this.toolbarClick, this);\n this.parent.on(dropDownSelect, this.dropDownSelect, this);\n this.parent.on(colorPickerChanged, this.renderSelection, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n ToolbarAction.prototype.toolbarClick = function (args) {\n if (isNullOrUndefined(args.item)) {\n return;\n }\n if (!isNullOrUndefined(args.item.controlParent)) {\n // eslint-disable-next-line\n var activeEle = args.item.controlParent\n .activeEle;\n if (activeEle) {\n activeEle.tabIndex = -1;\n }\n }\n if (args.item.command === 'NumberFormatList' || args.item.command === 'BulletFormatList') {\n if (args.originalEvent.target.classList.contains('e-order-list') || args.originalEvent.target.classList.contains('e-unorder-list')) {\n args.item.command = 'Lists';\n args.item.subCommand = args.item.subCommand === 'NumberFormatList' ? 'OL' : 'UL';\n }\n }\n if (args.item.command === 'Lists') {\n if (args.originalEvent.target.classList.contains('e-caret') &&\n (args.originalEvent.target.parentElement.classList.contains('e-rte-bulletformatlist-dropdown') || args.originalEvent.target.parentElement.classList.contains('e-rte-numberformatlist-dropdown'))) {\n args.item.command = args.item.subCommand = null;\n }\n }\n this.parent.notify(htmlToolbarClick, args);\n this.parent.notify(markdownToolbarClick, args);\n };\n ToolbarAction.prototype.dropDownSelect = function (e) {\n this.parent.notify(selectionRestore, {});\n if (!(document.body.contains(document.body.querySelector('.e-rte-quick-toolbar'))\n && e.item && (e.item.command === 'Images' || e.item.command === 'Audios' || e.item.command === 'Videos' ||\n e.item.command === 'VideoLayoutOption' || e.item.command === 'Display' || e.item.command === 'Table'))) {\n var value = e.item.controlParent && this.parent.quickToolbarModule && this.parent.quickToolbarModule.tableQTBar\n && this.parent.quickToolbarModule.tableQTBar.element.contains(e.item.controlParent.element) ? 'Table' : null;\n if (e.item.command === 'Lists') {\n var listItem = { listStyle: e.item.value, listImage: e.item.listImage, type: e.item.subCommand };\n this.parent.formatter.process(this.parent, e, e.originalEvent, listItem);\n }\n else {\n this.parent.formatter.process(this.parent, e, e.originalEvent, value);\n }\n }\n this.parent.notify(selectionSave, {});\n };\n ToolbarAction.prototype.renderSelection = function (args) {\n this.parent.notify(selectionRestore, {});\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n this.parent.notify(selectionSave, {});\n };\n ToolbarAction.prototype.removeEventListener = function () {\n this.parent.off(toolbarClick, this.toolbarClick);\n this.parent.off(dropDownSelect, this.dropDownSelect);\n this.parent.off(colorPickerChanged, this.renderSelection);\n this.parent.off(destroy, this.removeEventListener);\n };\n return ToolbarAction;\n}());\n\n/**\n * `Toolbar` module is used to handle Toolbar actions.\n */\nvar Toolbar$2 = /** @__PURE__ @class */ (function () {\n function Toolbar$$1(parent, serviceLocator) {\n this.parent = parent;\n this.isToolbar = false;\n this.locator = serviceLocator;\n this.isTransformChild = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n updateDropDownLocale(this.parent);\n updateDropDownFontFormatLocale(this.parent);\n this.renderFactory.addRenderer(RenderType.Toolbar, new ToolbarRenderer(this.parent));\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n this.baseToolbar = new BaseToolbar(this.parent, this.locator);\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n Toolbar$$1.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editableElement = this.contentRenderer.getEditPanel();\n this.editPanel = this.contentRenderer.getPanel();\n };\n Toolbar$$1.prototype.toolbarBindEvent = function () {\n if (!this.parent.inlineMode.enable) {\n this.keyBoardModule = new KeyboardEvents(this.getToolbarElement(), {\n keyAction: this.toolBarKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n }\n };\n Toolbar$$1.prototype.toolBarKeyDown = function (e) {\n switch (e.action) {\n case 'escape':\n this.parent.contentModule.getEditPanel().focus();\n break;\n }\n };\n Toolbar$$1.prototype.createToolbarElement = function () {\n this.tbElement = this.parent.createElement('div', { id: this.parent.getID() + '_toolbar' });\n if (!Browser.isDevice && this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n else {\n if (this.parent.toolbarSettings.enableFloating && !this.parent.inlineMode.enable) {\n this.tbWrapper = this.parent.createElement('div', {\n id: this.parent.getID() + '_toolbar_wrapper',\n innerHTML: this.tbElement.outerHTML,\n className: CLS_TB_WRAP\n });\n this.tbElement = this.tbWrapper.firstElementChild;\n this.parent.element.insertBefore(this.tbWrapper, this.editPanel);\n }\n else {\n this.parent.element.insertBefore(this.tbElement, this.editPanel);\n }\n }\n };\n Toolbar$$1.prototype.getToolbarMode = function () {\n var tbMode;\n switch (this.parent.toolbarSettings.type) {\n case ToolbarType.Expand:\n tbMode = 'Extended';\n break;\n case ToolbarType.Scrollable:\n tbMode = 'Scrollable';\n break;\n default:\n tbMode = 'MultiRow';\n }\n if (isIDevice() && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tbMode = ToolbarType.Scrollable;\n }\n return tbMode;\n };\n Toolbar$$1.prototype.checkToolbarResponsive = function (ele) {\n if (!Browser.isDevice || isIDevice()) {\n return false;\n }\n var tBarMode;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n tBarMode = ToolbarType.MultiRow;\n }\n else {\n tBarMode = this.parent.toolbarSettings.type;\n }\n this.baseToolbar.render({\n container: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items,\n mode: tBarMode,\n target: ele,\n cssClass: this.parent.cssClass\n });\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([ele], ['e-rte-tb-mobile']);\n if (this.parent.inlineMode.enable) {\n this.addFixedTBarClass();\n }\n else {\n addClass([ele], [CLS_TB_STATIC]);\n }\n }\n this.wireEvents();\n this.dropDownModule.renderDropDowns({\n container: ele,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(renderColorPicker, {\n container: this.tbElement,\n containerType: ((this.parent.inlineMode.enable) ? 'quick' : 'toolbar'),\n items: this.parent.toolbarSettings.items\n });\n return true;\n };\n Toolbar$$1.prototype.checkIsTransformChild = function () {\n this.isTransformChild = false;\n var transformElements = selectAll('[style*=\"transform\"]', document);\n for (var i = 0; i < transformElements.length; i++) {\n // eslint-disable-next-line max-len\n if (!isNullOrUndefined(transformElements[i].contains) && transformElements[i].contains(this.parent.element)) {\n this.isTransformChild = true;\n break;\n }\n }\n };\n Toolbar$$1.prototype.toggleFloatClass = function (e) {\n var topValue;\n var isBody = false;\n var isFloat = false;\n var scrollParent;\n var floatOffset = this.parent.floatingToolbarOffset;\n if (e && this.parent.iframeSettings.enable && this.parent.inputElement.ownerDocument === e.target) {\n scrollParent = e.target.body;\n }\n else if (e && e.target !== document) {\n scrollParent = e.target;\n }\n else {\n isBody = true;\n scrollParent = document.body;\n }\n var tbHeight = this.getToolbarHeight() + this.getExpandTBarPopHeight();\n if (this.isTransformChild) {\n topValue = 0;\n var scrollParentRelativeTop = 0;\n var trgHeight = this.parent.element.offsetHeight;\n if (isBody) {\n var bodyStyle = window.getComputedStyle(scrollParent);\n scrollParentRelativeTop = parseFloat(bodyStyle.marginTop.split('px')[0]) + parseFloat(bodyStyle.paddingTop.split('px')[0]);\n }\n var targetTop = this.parent.element.getBoundingClientRect().top;\n var scrollParentYOffset = (Browser.isMSPointer && isBody) ? window.pageYOffset : scrollParent.parentElement.scrollTop;\n var scrollParentRect = scrollParent.getBoundingClientRect();\n var scrollParentTop = (!isBody) ? scrollParentRect.top : (scrollParentRect.top + scrollParentYOffset);\n var outOfRange = ((targetTop - ((!isBody) ? scrollParentTop : 0))\n + trgHeight > tbHeight + floatOffset) ? false : true;\n if (targetTop > (scrollParentTop + floatOffset) || targetTop < -trgHeight || ((targetTop < 0) ? outOfRange : false)) {\n isFloat = false;\n removeClass([this.tbElement], [CLS_TB_ABS_FLOAT]);\n }\n else if (targetTop < (scrollParentTop + floatOffset)) {\n if (targetTop < 0) {\n topValue = (-targetTop) + scrollParentTop;\n }\n else {\n topValue = scrollParentTop - targetTop;\n }\n topValue = (isBody) ? topValue - scrollParentRelativeTop : topValue;\n addClass([this.tbElement], [CLS_TB_ABS_FLOAT]);\n isFloat = true;\n }\n }\n else {\n var parent_1 = this.parent.element.getBoundingClientRect();\n if (window.innerHeight < parent_1.top) {\n return;\n }\n topValue = (e && e.target !== document) ? scrollParent.getBoundingClientRect().top : 0;\n if ((parent_1.bottom < (floatOffset + tbHeight + topValue)) || parent_1.bottom < 0 || parent_1.top > floatOffset + topValue) {\n isFloat = false;\n }\n else if (parent_1.top < floatOffset || parent_1.top < floatOffset + topValue) {\n isFloat = true;\n }\n }\n if (!isFloat) {\n removeClass([this.tbElement], [CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { top: 0 + 'px', width: '100%' });\n }\n else {\n addClass([this.tbElement], [CLS_TB_FLOAT]);\n setStyleAttribute(this.tbElement, { width: this.parent.element.offsetWidth + 'px', top: (floatOffset + topValue) + 'px' });\n }\n };\n Toolbar$$1.prototype.renderToolbar = function () {\n this.initializeInstance();\n this.createToolbarElement();\n if (this.checkToolbarResponsive(this.tbElement)) {\n return;\n }\n if (this.parent.inlineMode.enable) {\n this.parent.notify(renderInlineToolbar, {});\n }\n else {\n this.baseToolbar.render({\n container: 'toolbar',\n items: this.parent.toolbarSettings.items,\n mode: this.getToolbarMode(),\n target: this.tbElement,\n cssClass: this.parent.cssClass\n });\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating) {\n this.checkIsTransformChild();\n this.toggleFloatClass();\n }\n addClass([this.parent.element], [CLS_RTE_TB_ENABLED]);\n if (this.parent.toolbarSettings.type === ToolbarType.Expand) {\n addClass([this.parent.element], [CLS_RTE_EXPAND_TB]);\n }\n }\n }\n this.wireEvents();\n if (this.parent.inlineMode.enable && !isIDevice()) {\n this.addFixedTBarClass();\n }\n if (!this.parent.inlineMode.enable) {\n this.dropDownModule.renderDropDowns({\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.parent.notify(renderColorPicker, {\n container: this.tbElement,\n containerType: 'toolbar',\n items: this.parent.toolbarSettings.items\n });\n this.refreshToolbarOverflow();\n }\n var divEle = this.parent.element.querySelector('.e-rte-srctextarea');\n var iframeEle = this.parent.element.querySelector('.e-source-content');\n if ((!this.parent.iframeSettings.enable && (!isNullOrUndefined(divEle) && divEle.style.display === 'block')) ||\n (this.parent.iframeSettings.enable && (!isNullOrUndefined(iframeEle) && iframeEle.style.display === 'block'))) {\n this.parent.notify(updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n }\n };\n /**\n * addFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.addFixedTBarClass = function () {\n addClass([this.tbElement], [CLS_TB_FIXED]);\n };\n /**\n * removeFixedTBarClass method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.removeFixedTBarClass = function () {\n removeClass([this.tbElement], [CLS_TB_FIXED]);\n };\n Toolbar$$1.prototype.showFixedTBar = function () {\n addClass([this.tbElement], [CLS_SHOW]);\n if (Browser.isIos) {\n addClass([this.tbElement], [CLS_TB_IOS_FIX]);\n }\n };\n Toolbar$$1.prototype.hideFixedTBar = function () {\n // eslint-disable-next-line\n (!this.isToolbar) ? removeClass([this.tbElement], [CLS_SHOW, CLS_TB_IOS_FIX]) : this.isToolbar = false;\n };\n /**\n * updateItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.updateItem = function (args) {\n var item = this.tools[args.updateItem.toLocaleLowerCase()];\n if (this.parent.locale !== 'en-US') {\n item.tooltip = getTooltipText(args.updateItem.toLocaleLowerCase(), this.locator);\n }\n var trgItem = this.tools[args.targetItem.toLocaleLowerCase()];\n var index = getTBarItemsIndex(getCollection(trgItem.subCommand), args.baseToolbar.toolbarObj.items)[0];\n if (!isNullOrUndefined(index)) {\n var prefixId = this.parent.inlineMode.enable ? '_quick_' : '_toolbar_';\n args.baseToolbar.toolbarObj.items[index].id = this.parent.getID() + prefixId + item.id;\n args.baseToolbar.toolbarObj.items[index].prefixIcon = item.icon;\n args.baseToolbar.toolbarObj.items[index].tooltipText = item.tooltip;\n args.baseToolbar.toolbarObj.items[index].subCommand = item.subCommand;\n args.baseToolbar.toolbarObj.dataBind();\n }\n else {\n this.addTBarItem(args, 0);\n }\n };\n Toolbar$$1.prototype.updateToolbarStatus = function (args) {\n if (!this.tbElement || (this.parent.inlineMode.enable && (isIDevice() || !Browser.isDevice))) {\n return;\n }\n var options = {\n args: args,\n dropDownModule: this.dropDownModule,\n parent: this.parent,\n tbElements: selectAll('.' + CLS_TB_ITEM, this.tbElement),\n tbItems: this.baseToolbar.toolbarObj.items\n };\n setToolbarStatus(options, (this.parent.inlineMode.enable ? true : false), this.parent);\n };\n Toolbar$$1.prototype.fullScreen = function (e) {\n this.parent.fullScreenModule.showFullScreen(e);\n };\n Toolbar$$1.prototype.hideScreen = function (e) {\n this.parent.fullScreenModule.hideFullScreen(e);\n };\n /**\n * getBaseToolbar method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.getBaseToolbar = function () {\n return this.baseToolbar;\n };\n /**\n * addTBarItem method\n *\n * @param {IUpdateItemsModel} args - specifies the arguments.\n * @param {number} index - specifies the index value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.addTBarItem = function (args, index) {\n args.baseToolbar.toolbarObj.addItems([args.baseToolbar.getObject(args.updateItem, 'toolbar')], index);\n };\n /**\n * enableTBarItems method\n *\n * @param {BaseToolbar} baseToolbar - specifies the toolbar.\n * @param {string} items - specifies the string value.\n * @param {boolean} isEnable - specifies the boolean value.\n * @param {boolean} muteToolbarUpdate - specifies the toolbar.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.enableTBarItems = function (baseToolbar, items, isEnable, muteToolbarUpdate) {\n var trgItems = getTBarItemsIndex(getCollection(items), baseToolbar.toolbarObj.items);\n this.tbItems = selectAll('.' + CLS_TB_ITEM, baseToolbar.toolbarObj.element);\n for (var i = 0; i < trgItems.length; i++) {\n var item = this.tbItems[trgItems[i]];\n if (item) {\n baseToolbar.toolbarObj.enableItems(item, isEnable);\n }\n }\n if (!select('.e-rte-srctextarea', this.parent.element) && !muteToolbarUpdate) {\n updateUndoRedoStatus(baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * removeTBarItems method\n *\n * @param {string} items - specifies the string value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.removeTBarItems = function (items) {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var trgItems = getTBarItemsIndex(getCollection(items), this.baseToolbar.toolbarObj.items);\n this.tbItems = (this.parent.inlineMode.enable) ? selectAll('.' + CLS_TB_ITEM, this.baseToolbar.toolbarObj.element)\n : selectAll('.' + CLS_TB_ITEM, this.parent.element);\n for (var i = 0; i < trgItems.length; i++) {\n this.baseToolbar.toolbarObj.removeItems(this.tbItems[trgItems[i]]);\n }\n };\n /**\n * getExpandTBarPopHeight method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.getExpandTBarPopHeight = function () {\n var popHeight = 0;\n if (this.parent.toolbarSettings.type === ToolbarType.Expand && this.tbElement.classList.contains('e-extended-toolbar')) {\n var expandPopup = select('.e-toolbar-extended', this.tbElement);\n if (expandPopup && this.tbElement.classList.contains('e-expand-open')\n || expandPopup && expandPopup.classList.contains('e-popup-open')) {\n addClass([expandPopup], [CLS_VISIBLE]);\n popHeight = popHeight + expandPopup.offsetHeight;\n removeClass([expandPopup], [CLS_VISIBLE]);\n }\n else {\n removeClass([this.tbElement], [CLS_EXPAND_OPEN]);\n }\n }\n return popHeight;\n };\n /**\n * getToolbarHeight method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.getToolbarHeight = function () {\n return this.tbElement.offsetHeight;\n };\n /**\n * getToolbarElement method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.getToolbarElement = function () {\n return select('.' + CLS_TOOLBAR, this.parent.element);\n };\n /**\n * refreshToolbarOverflow method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.refreshToolbarOverflow = function () {\n this.baseToolbar.toolbarObj.refreshOverflow();\n };\n Toolbar$$1.prototype.isToolbarDestroyed = function () {\n return this.baseToolbar.toolbarObj && !this.baseToolbar.toolbarObj.isDestroyed;\n };\n Toolbar$$1.prototype.destroyToolbar = function () {\n if (this.isToolbarDestroyed()) {\n this.parent.unWireScrollElementsEvents();\n this.unWireEvents();\n this.parent.notify(destroyColorPicker, {});\n this.dropDownModule.destroyDropDowns();\n this.baseToolbar.toolbarObj.destroy();\n this.removeEventListener();\n removeClass([this.parent.element], [CLS_RTE_TB_ENABLED]);\n removeClass([this.parent.element], [CLS_RTE_EXPAND_TB]);\n var tbWrapper = select('.' + CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + CLS_TOOLBAR, this.parent.element);\n if (!isNullOrUndefined(tbWrapper)) {\n detach(tbWrapper);\n }\n else if (!isNullOrUndefined(tbElement)) {\n detach(tbElement);\n }\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.destroy = function () {\n if (this.isToolbarDestroyed()) {\n this.destroyToolbar();\n if (this.keyBoardModule) {\n this.keyBoardModule.destroy();\n }\n }\n };\n Toolbar$$1.prototype.moduleDestroy = function () {\n this.parent = null;\n this.baseToolbar.parent = null;\n this.toolbarActionModule.parent = null;\n this.dropDownModule.parent = null;\n };\n Toolbar$$1.prototype.scrollHandler = function (e) {\n if (!this.parent.inlineMode.enable) {\n if (this.parent.toolbarSettings.enableFloating && this.getDOMVisibility(this.tbElement)) {\n this.toggleFloatClass(e.args);\n }\n }\n };\n Toolbar$$1.prototype.getDOMVisibility = function (el) {\n if (!el.offsetParent && el.offsetWidth === 0 && el.offsetHeight === 0) {\n return false;\n }\n return true;\n };\n Toolbar$$1.prototype.mouseDownHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.showFixedTBar();\n }\n };\n Toolbar$$1.prototype.focusChangeHandler = function () {\n if (Browser.isDevice && this.parent.inlineMode.enable && !isIDevice()) {\n this.isToolbar = false;\n this.hideFixedTBar();\n }\n };\n Toolbar$$1.prototype.dropDownBeforeOpenHandler = function () {\n this.isToolbar = true;\n };\n // eslint-disable-next-line\n Toolbar$$1.prototype.tbFocusHandler = function (e) {\n var activeElm = document.activeElement;\n var isToolbaractive = closest(activeElm, '.e-rte-toolbar');\n if (activeElm === this.parent.getToolbarElement() || isToolbaractive === this.parent.getToolbarElement()) {\n var toolbarItem = this.parent.getToolbarElement().querySelectorAll('.e-expended-nav');\n for (var i = 0; i < toolbarItem.length; i++) {\n if (isNullOrUndefined(this.parent.getToolbarElement().querySelector('.e-insert-table-btn'))) {\n toolbarItem[i].setAttribute('tabindex', '0');\n }\n else {\n toolbarItem[i].setAttribute('tabindex', '1');\n }\n }\n }\n };\n Toolbar$$1.prototype.tbKeydownHandler = function (e) {\n if (e.target.classList.contains('e-dropdown-btn') ||\n e.target.getAttribute('id') === this.parent.getID() + '_toolbar_CreateTable') {\n e.target.setAttribute('tabindex', '0');\n }\n };\n Toolbar$$1.prototype.toolbarClickHandler = function (e) {\n var trg = closest(e.originalEvent.target, '.e-hor-nav');\n if (trg && this.parent.toolbarSettings.type === ToolbarType.Expand && !isNullOrUndefined(trg)) {\n var extendedTbar = this.tbElement.querySelector('.e-toolbar-extended');\n if (!isNullOrUndefined(extendedTbar)) {\n setStyleAttribute(extendedTbar, { maxHeight: '', display: 'block' });\n setStyleAttribute(extendedTbar, { maxHeight: extendedTbar.offsetHeight + 'px', display: '' });\n }\n if (!trg.classList.contains('e-nav-active')) {\n removeClass([this.tbElement], [CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', false);\n }\n else {\n addClass([this.tbElement], [CLS_EXPAND_OPEN]);\n this.parent.setContentHeight('toolbar', true);\n }\n }\n else if (Browser.isDevice || this.parent.inlineMode.enable) {\n this.isToolbar = true;\n }\n if (isNullOrUndefined(trg) && this.parent.toolbarSettings.type === ToolbarType.Expand) {\n removeClass([this.tbElement], [CLS_EXPAND_OPEN]);\n }\n };\n Toolbar$$1.prototype.wireEvents = function () {\n if (this.parent.inlineMode.enable && isIDevice()) {\n return;\n }\n EventHandler.add(this.tbElement, 'focusin', this.tbFocusHandler, this);\n EventHandler.add(this.tbElement, 'keydown', this.tbKeydownHandler, this);\n };\n Toolbar$$1.prototype.unWireEvents = function () {\n EventHandler.remove(this.tbElement, 'focusin', this.tbFocusHandler);\n EventHandler.remove(this.tbElement, 'keydown', this.tbKeydownHandler);\n };\n Toolbar$$1.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.dropDownModule = new DropDownButtons(this.parent, this.locator);\n this.toolbarActionModule = new ToolbarAction(this.parent);\n this.parent.on(initialEnd, this.renderToolbar, this);\n this.parent.on(scroll, this.scrollHandler, this);\n this.parent.on(bindOnEnd, this.toolbarBindEvent, this);\n this.parent.on(toolbarUpdated, this.updateToolbarStatus, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(refreshBegin, this.onRefresh, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(enableFullScreen, this.fullScreen, this);\n this.parent.on(disableFullScreen, this.hideScreen, this);\n this.parent.on(updateToolbarItem, this.updateItem, this);\n this.parent.on(beforeDropDownOpen, this.dropDownBeforeOpenHandler, this);\n this.parent.on(expandPopupClick, this.parent.setContentHeight, this.parent);\n this.parent.on(focusChange, this.focusChangeHandler, this);\n this.parent.on(mouseDown, this.mouseDownHandler, this);\n this.parent.on(sourceCodeMouseDown, this.mouseDownHandler, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.on(toolbarClick, this.toolbarClickHandler, this);\n }\n };\n Toolbar$$1.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.renderToolbar);\n this.parent.off(scroll, this.scrollHandler);\n this.parent.off(bindOnEnd, this.toolbarBindEvent);\n this.parent.off(toolbarUpdated, this.updateToolbarStatus);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(refreshBegin, this.onRefresh);\n this.parent.off(destroy, this.destroy);\n this.parent.off(enableFullScreen, this.parent.fullScreenModule.showFullScreen);\n this.parent.off(disableFullScreen, this.parent.fullScreenModule.hideFullScreen);\n this.parent.off(updateToolbarItem, this.updateItem);\n this.parent.off(beforeDropDownOpen, this.dropDownBeforeOpenHandler);\n this.parent.off(expandPopupClick, this.parent.setContentHeight);\n this.parent.off(focusChange, this.focusChangeHandler);\n this.parent.off(mouseDown, this.mouseDownHandler);\n this.parent.off(sourceCodeMouseDown, this.mouseDownHandler);\n this.parent.off(bindCssClass, this.setCssClass);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n if (!this.parent.inlineMode.enable && !isIDevice()) {\n this.parent.off(toolbarClick, this.toolbarClickHandler);\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Toolbar$$1.prototype.setCssClass = function (e) {\n if (this.toolbarObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.toolbarObj.setProperties({ cssClass: (this.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n Toolbar$$1.prototype.onRefresh = function () {\n if (!this.parent.inlineMode.enable) {\n this.refreshToolbarOverflow();\n }\n this.parent.setContentHeight('', true);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the string value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Toolbar$$1.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n this.refreshToolbar();\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n this.refreshToolbar();\n };\n Toolbar$$1.prototype.refreshToolbar = function () {\n if (isNullOrUndefined(this.baseToolbar.toolbarObj)) {\n this.baseToolbar = this.parent.getBaseToolbarObject();\n }\n var tbWrapper = select('.' + CLS_TB_WRAP, this.parent.element);\n var tbElement = select('.' + CLS_TOOLBAR, this.parent.element);\n if (tbElement || tbWrapper) {\n this.destroyToolbar();\n }\n if (this.parent.toolbarSettings.enable) {\n this.addEventListener();\n this.renderToolbar();\n this.parent.wireScrollElementsEvents();\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.baseToolbar, this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n this.parent.notify(dynamicModule, {});\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Toolbar$$1.prototype.getModuleName = function () {\n return 'toolbar';\n };\n return Toolbar$$1;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222,\n ']': 221,\n '[': 219,\n '=': 187\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
    ;\n * \n * ```\n *\n * @hidden\n * @deprecated\n */\nvar KeyboardEvents$1 = /** @__PURE__ @class */ (function (_super) {\n __extends(KeyboardEvents$$1, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element - specifies the elements.\n * @param {KeyboardEventsModel} options - specify the options\n */\n function KeyboardEvents$$1(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e - specifies the event arguments.\n * @returns {void}\n */\n _this.keyPressHandler = function (e) {\n /* eslint-disable */\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var isMetaKey = e.metaKey;\n /* eslint-enable */\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && (isCtrlKey === rKeyObj.ctrlKey || isMetaKey) &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n }\n }\n }\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents$$1;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void}\n */\n KeyboardEvents$$1.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp - specifies the keyboard event.\n * @param {KeyboardEventsModel} oldProp - specifies the old property.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents$$1.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents$$1.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {void}\n */\n KeyboardEvents$$1.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void}\n */\n KeyboardEvents$$1.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void}\n */\n KeyboardEvents$$1.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} - specifies the key data\n */\n KeyboardEvents$$1.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents$$1.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents$$1.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents$$1.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents$$1.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents$$1.prototype, \"keyAction\", void 0);\n KeyboardEvents$$1 = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents$$1);\n return KeyboardEvents$$1;\n}(Base));\n\n/**\n * `Color Picker` module is used to handle ColorPicker actions.\n */\nvar ColorPickerInput = /** @__PURE__ @class */ (function () {\n function ColorPickerInput(parent, serviceLocator) {\n this.tools = {};\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n if (this.parent.toolbarSettings && Object.keys(this.parent.toolbarSettings.itemConfigs).length > 0) {\n extend(this.tools, tools, toObjectLowerCase(this.parent.toolbarSettings.itemConfigs), true);\n }\n else {\n this.tools = tools;\n }\n }\n ColorPickerInput.prototype.initializeInstance = function () {\n this.toolbarRenderer = this.renderFactory.getRenderer(RenderType.Toolbar);\n };\n /**\n * renderColorPickerInput method\n *\n * @param {IColorPickerRenderArgs} args - specify the arguments.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ColorPickerInput.prototype.renderColorPickerInput = function (args) {\n var _this = this;\n this.initializeInstance();\n var suffixID = args.containerType;\n var tbElement = args.container;\n var targetID;\n var options;\n templateItems.forEach(function (item) {\n if (getIndex(item, args.items) !== -1) {\n switch (item) {\n case 'fontcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_FontColor_Target';\n var fontNode = _this.parent.createElement('input');\n fontNode.id = targetID;\n fontNode.classList.add(CLS_FONT_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n fontNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(fontNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS + ' ' + _this.parent.cssClass,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_FontColor', tbElement),\n target: (targetID)\n };\n _this.fontColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'fontcolor');\n _this.fontColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'fontcolor', _this.fontColorPicker);\n break;\n }\n case 'backgroundcolor': {\n targetID = _this.parent.getID() + '_' + suffixID + '_BackgroundColor_Target';\n var backNode = _this.parent.createElement('input');\n backNode.id = targetID;\n backNode.classList.add(CLS_BACKGROUND_COLOR_TARGET);\n if (!isNullOrUndefined(_this.parent.cssClass)) {\n var allClassName = _this.parent.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n backNode.classList.add(allClassName[i]);\n }\n }\n }\n document.body.appendChild(backNode);\n options = {\n cssClass: _this.tools[item.toLocaleLowerCase()].icon\n + ' ' + CLS_RTE_ELEMENTS + ' ' + CLS_ICONS + ' ' + _this.parent.cssClass,\n value: _this.tools[item.toLocaleLowerCase()].value,\n command: _this.tools[item.toLocaleLowerCase()].command,\n subCommand: _this.tools[item.toLocaleLowerCase()].subCommand,\n element: select('#' + _this.parent.getID() + '_' + suffixID + '_BackgroundColor', tbElement),\n target: (targetID)\n };\n _this.backgroundColorPicker = _this.toolbarRenderer.renderColorPicker(options, 'backgroundcolor');\n _this.backgroundColorDropDown = _this.toolbarRenderer.renderColorPickerDropDown(options, 'backgroundcolor', _this.backgroundColorPicker, _this.defaultColorPicker);\n break;\n }\n }\n }\n });\n if (this.parent.inlineMode.enable) {\n this.setCssClass({ cssClass: this.parent.cssClass });\n }\n };\n ColorPickerInput.prototype.destroy = function () {\n this.removeEventListener();\n this.destroyColorPicker();\n };\n /**\n * destroyColorPicker method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ColorPickerInput.prototype.destroyColorPicker = function () {\n if (this.fontColorPicker && !this.fontColorPicker.isDestroyed) {\n this.fontColorPicker.destroy();\n }\n if (this.backgroundColorPicker && !this.backgroundColorPicker.isDestroyed) {\n this.backgroundColorPicker.destroy();\n }\n if (this.fontColorDropDown && !this.fontColorDropDown.isDestroyed) {\n var innerEle = this.fontColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n detach(innerEle);\n }\n this.fontColorDropDown.destroy();\n }\n if (this.backgroundColorDropDown && !this.backgroundColorDropDown.isDestroyed) {\n var innerEle = this.backgroundColorDropDown.element.querySelector('.e-rte-color-content');\n if (innerEle) {\n this.defaultColorPicker = innerEle.children[0].style.borderBottomColor;\n detach(innerEle);\n }\n this.backgroundColorDropDown.destroy();\n }\n };\n ColorPickerInput.prototype.setRtl = function (args) {\n if (this.fontColorPicker) {\n this.fontColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.fontColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.backgroundColorPicker) {\n this.backgroundColorPicker.setProperties({ enableRtl: args.enableRtl });\n this.backgroundColorDropDown.setProperties({ enableRtl: args.enableRtl });\n }\n };\n ColorPickerInput.prototype.setCssClass = function (e) {\n this.updateCss(this.fontColorPicker, this.fontColorDropDown, e);\n this.updateCss(this.backgroundColorPicker, this.backgroundColorDropDown, e);\n };\n ColorPickerInput.prototype.updateCss = function (colorPickerObj, dropDownObj, e) {\n if (colorPickerObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n colorPickerObj.setProperties({ cssClass: (colorPickerObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n dropDownObj.setProperties({ cssClass: (dropDownObj.cssClass.replace(e.oldCssClass, '').replace(' ', ' ').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n ColorPickerInput.prototype.addEventListener = function () {\n this.parent.on(toolbarRenderComplete, this.renderColorPickerInput, this);\n this.parent.on(rtlMode, this.setRtl, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(destroyColorPicker, this.destroyColorPicker, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n };\n ColorPickerInput.prototype.onPropertyChanged = function (model) {\n var newProp = model.newProp;\n var element;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'fontColor':\n if (this.fontColorPicker) {\n for (var _b = 0, _c = Object.keys(newProp.fontColor); _b < _c.length; _b++) {\n var font = _c[_b];\n switch (font) {\n case 'default': {\n this.fontColorPicker.setProperties({ value: newProp.fontColor.default });\n element = this.fontColorDropDown.element;\n var fontBorder = element.querySelector('.' + this.tools['fontcolor'].icon);\n fontBorder.style.borderBottomColor = newProp.fontColor.default;\n break;\n }\n case 'mode':\n this.fontColorPicker.setProperties({ mode: newProp.fontColor.mode });\n break;\n case 'columns':\n this.fontColorPicker.setProperties({ columns: newProp.fontColor.columns });\n break;\n case 'colorCode':\n this.fontColorPicker.setProperties({ presetColors: newProp.fontColor.colorCode });\n break;\n case 'modeSwitcher':\n this.fontColorPicker.setProperties({ modeSwitcher: newProp.fontColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n case 'backgroundColor':\n if (this.backgroundColorPicker) {\n for (var _d = 0, _e = Object.keys(newProp.backgroundColor); _d < _e.length; _d++) {\n var background = _e[_d];\n switch (background) {\n case 'default': {\n this.backgroundColorPicker.setProperties({ value: newProp.backgroundColor.default });\n element = this.backgroundColorDropDown.element;\n var backgroundBorder = element.querySelector('.' + this.tools['backgroundcolor'].icon);\n backgroundBorder.style.borderBottomColor = newProp.backgroundColor.default;\n break;\n }\n case 'mode':\n this.backgroundColorPicker.setProperties({ mode: newProp.backgroundColor.mode });\n break;\n case 'columns':\n this.backgroundColorPicker.setProperties({ columns: newProp.backgroundColor.columns });\n break;\n case 'colorCode':\n this.backgroundColorPicker.setProperties({ presetColors: newProp.backgroundColor.colorCode });\n break;\n case 'modeSwitcher':\n this.backgroundColorPicker.setProperties({ modeSwitcher: newProp.backgroundColor.modeSwitcher });\n break;\n }\n }\n }\n break;\n }\n }\n };\n ColorPickerInput.prototype.removeEventListener = function () {\n this.parent.off(toolbarRenderComplete, this.renderColorPickerInput);\n this.parent.off(destroy, this.destroy);\n this.parent.off(rtlMode, this.setRtl);\n this.parent.off(destroyColorPicker, this.destroyColorPicker);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(bindCssClass, this.setCssClass);\n };\n return ColorPickerInput;\n}());\n\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar BaseQuickToolbar = /** @__PURE__ @class */ (function () {\n function BaseQuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.isDOMElement = false;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.popupRenderer = this.renderFactory.getRenderer(RenderType.Popup);\n this.dropDownButtons = new DropDownButtons(this.parent, this.locator);\n this.colorPickerObj = new ColorPickerInput(this.parent, this.locator);\n }\n BaseQuickToolbar.prototype.appendPopupContent = function () {\n this.toolbarElement = this.parent.createElement('div', { className: CLS_QUICK_TB });\n this.element.appendChild(this.toolbarElement);\n };\n /**\n * render method\n *\n * @param {IQuickToolbarOptions} args - specifies the arguments\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.render = function (args) {\n var className;\n if (args.popupType === 'Image') {\n className = CLS_IMAGE_POP;\n }\n else if (args.popupType === 'Inline') {\n className = CLS_INLINE_POP;\n }\n else {\n className = '';\n }\n var popupId = getUniqueID(args.popupType + '_Quick_Popup');\n this.stringItems = args.toolbarItems;\n this.element = this.parent.createElement('div', { id: popupId, className: className + ' ' + CLS_RTE_ELEMENTS });\n this.element.setAttribute('aria-owns', this.parent.getID());\n this.appendPopupContent();\n this.createToolbar(args.toolbarItems, args.mode, args.cssClass);\n this.popupRenderer.renderPopup(this);\n this.addEventListener();\n };\n BaseQuickToolbar.prototype.createToolbar = function (items, mode, cssClass) {\n this.quickTBarObj = new BaseToolbar(this.parent, this.locator);\n this.quickTBarObj.render({\n container: 'quick',\n target: this.toolbarElement,\n items: items,\n mode: mode,\n cssClass: cssClass\n });\n this.quickTBarObj.toolbarObj.refresh();\n };\n BaseQuickToolbar.prototype.setPosition = function (e) {\n var x;\n var y;\n var imgWrapper = closest(e.target, '.e-img-caption');\n var target = !isNullOrUndefined(imgWrapper) ? imgWrapper : e.target;\n addClass([this.toolbarElement], [CLS_RM_WHITE_SPACE]);\n var targetOffsetTop = target.offsetTop;\n var parentOffsetTop = window.pageYOffset + e.parentData.top;\n if ((targetOffsetTop - e.editTop) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) - e.popHeight - 5;\n }\n else if (((e.editTop + e.editHeight) - (targetOffsetTop + target.offsetHeight)) > e.popHeight) {\n y = parentOffsetTop + e.tBarElementHeight + (targetOffsetTop - e.editTop) + target.offsetHeight + 5;\n }\n else {\n y = e.y;\n }\n if (target.offsetWidth > e.popWidth) {\n x = (target.offsetWidth / 2) - (e.popWidth / 2) + e.parentData.left + target.offsetLeft;\n }\n else {\n x = e.parentData.left + target.offsetLeft;\n }\n this.popupObj.position.X = ((x + e.popWidth) > e.parentData.right) ? e.parentData.right - e.popWidth : x;\n this.popupObj.position.Y = (y >= 0) ? y : e.y + 5;\n this.popupObj.dataBind();\n removeClass([this.toolbarElement], [CLS_RM_WHITE_SPACE]);\n };\n BaseQuickToolbar.prototype.checkCollision = function (e, viewPort, type) {\n var x;\n var y;\n var parentTop = e.parentData.top;\n var contentTop = e.windowY + parentTop + e.tBarElementHeight;\n var collision = [];\n if (viewPort === 'document') {\n collision = isCollide(e.popup);\n }\n else {\n collision = isCollide(e.popup, e.parentElement);\n }\n for (var i = 0; i < collision.length; i++) {\n switch (collision[i]) {\n case 'top':\n if (viewPort === 'document') {\n y = e.windowY;\n }\n else {\n y = (window.pageYOffset + parentTop) + e.tBarElementHeight;\n }\n break;\n case 'bottom': {\n var posY = void 0;\n if (viewPort === 'document') {\n if (type === 'inline') {\n posY = (e.y - e.popHeight - 10);\n }\n else {\n if ((e.windowHeight - (parentTop + e.tBarElementHeight)) > e.popHeight) {\n if ((contentTop - e.windowHeight) > e.popHeight) {\n posY = (contentTop + (e.windowHeight - parentTop)) - e.popHeight;\n }\n else {\n posY = contentTop;\n }\n }\n else {\n posY = e.windowY + (parentTop + e.tBarElementHeight);\n }\n }\n }\n else {\n if (e.target.tagName !== 'IMG') {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 10;\n }\n else {\n posY = (e.parentData.bottom + window.pageYOffset) - e.popHeight - 5;\n }\n }\n y = posY;\n break;\n }\n case 'right':\n if (type === 'inline') {\n x = window.pageXOffset + (e.windowWidth - (e.popWidth + e.bodyRightSpace + 10));\n }\n else {\n x = e.x - e.popWidth;\n }\n break;\n case 'left':\n if (type === 'inline') {\n x = 0;\n }\n else {\n x = e.parentData.left;\n }\n break;\n }\n }\n this.popupObj.position.X = (x) ? x : this.popupObj.position.X;\n this.popupObj.position.Y = (y) ? y : this.popupObj.position.Y;\n this.popupObj.dataBind();\n };\n /**\n * showPopup method\n *\n * @param {number} x - specifies the x value\n * @param {number} y - specifies the y value\n * @param {Element} target - specifies the element\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.showPopup = function (x, y, target) {\n var _this = this;\n var eventArgs = { popup: this.popupObj, cancel: false, targetElement: target };\n this.parent.trigger(beforeQuickToolbarOpen, eventArgs, function (beforeQuickToolbarArgs) {\n if (!beforeQuickToolbarArgs.cancel) {\n var editPanelTop = void 0;\n var editPanelHeight = void 0;\n var bodyStyle = window.getComputedStyle(document.body);\n var bodyRight = parseFloat(bodyStyle.marginRight.split('px')[0]) + parseFloat(bodyStyle.paddingRight.split('px')[0]);\n var windowHeight = window.innerHeight;\n var windowWidth = window.innerWidth;\n var parent_1 = _this.parent.element;\n var toolbarAvail = !isNullOrUndefined(_this.parent.getToolbar());\n var tbHeight = toolbarAvail && _this.parent.toolbarModule.getToolbarHeight();\n var expTBHeight = toolbarAvail && _this.parent.toolbarModule.getExpandTBarPopHeight();\n var tBarHeight = (toolbarAvail) ? (tbHeight + expTBHeight) : 0;\n addClass([_this.element], [CLS_HIDE]);\n if (Browser.isDevice && !isIDevice()) {\n addClass([_this.parent.getToolbar()], [CLS_HIDE]);\n }\n if (_this.parent.iframeSettings.enable) {\n var cntEle = _this.contentRenderer.getPanel().contentWindow;\n editPanelTop = cntEle.pageYOffset;\n editPanelHeight = cntEle.innerHeight;\n }\n else {\n var cntEle = closest(target, '.' + CLS_RTE_CONTENT);\n editPanelTop = (cntEle) ? cntEle.scrollTop : 0;\n editPanelHeight = (cntEle) ? cntEle.offsetHeight : 0;\n }\n if (!_this.parent.inlineMode.enable && !closest(target, 'table')) {\n _this.parent.disableToolbarItem(_this.parent.toolbarSettings.items);\n _this.parent.enableToolbarItem(['Undo', 'Redo']);\n }\n append([_this.element], document.body);\n _this.popupObj.position.X = x + 20;\n _this.popupObj.position.Y = y + 20;\n _this.popupObj.dataBind();\n _this.popupObj.element.classList.add('e-popup-open');\n _this.dropDownButtons.renderDropDowns({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n _this.colorPickerObj.renderColorPickerInput({\n container: _this.toolbarElement,\n containerType: 'quick',\n items: _this.stringItems\n });\n var showPopupData = {\n x: x, y: y,\n target: target,\n editTop: editPanelTop,\n editHeight: editPanelHeight,\n popup: _this.popupObj.element,\n popHeight: _this.popupObj.element.offsetHeight,\n popWidth: _this.popupObj.element.offsetWidth,\n parentElement: parent_1,\n bodyRightSpace: bodyRight,\n windowY: window.pageYOffset,\n windowHeight: windowHeight,\n windowWidth: windowWidth,\n parentData: parent_1.getBoundingClientRect(),\n tBarElementHeight: tBarHeight\n };\n if (target.tagName === 'IMG' || target.tagName === 'AUDIO' || target.tagName === 'VIDEO' || target.tagName === 'IFRAME' || (target.classList &&\n (target.classList.contains(CLS_AUDIOWRAP) || target.classList.contains(CLS_CLICKELEM) ||\n target.classList.contains(CLS_VID_CLICK_ELEM)))) {\n _this.setPosition(showPopupData);\n }\n if (!_this.parent.inlineMode.enable) {\n _this.checkCollision(showPopupData, 'parent', '');\n }\n _this.checkCollision(showPopupData, 'document', ((_this.parent.inlineMode.enable) ? 'inline' : ''));\n _this.popupObj.element.classList.remove('e-popup-open');\n removeClass([_this.element], [CLS_HIDE]);\n _this.popupObj.show({ name: 'ZoomIn', duration: (Browser.isIE ? 250 : 400) });\n if (_this.popupObj && _this.parent.cssClass) {\n removeClass([_this.popupObj.element], _this.parent.cssClass);\n addClass([_this.popupObj.element], _this.parent.cssClass);\n }\n setStyleAttribute(_this.element, {\n maxWidth: window.outerWidth + 'px'\n });\n addClass([_this.element], [CLS_POP]);\n _this.isDOMElement = true;\n }\n });\n };\n /**\n * hidePopup method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.hidePopup = function () {\n var viewSourcePanel = this.parent.sourceCodeModule.getViewPanel();\n if (Browser.isDevice && !isIDevice()) {\n removeClass([this.parent.getToolbar()], [CLS_HIDE]);\n }\n if (!isNullOrUndefined(this.parent.getToolbar()) && !this.parent.inlineMode.enable) {\n if (isNullOrUndefined(viewSourcePanel) || viewSourcePanel.style.display === 'none') {\n this.parent.enableToolbarItem(this.parent.toolbarSettings.items);\n }\n }\n this.removeEleFromDOM();\n this.isDOMElement = false;\n };\n /**\n * @param {string} item - specifies the string value\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.addQTBarItem = function (item, index) {\n this.quickTBarObj.toolbarObj.addItems(this.quickTBarObj.getItems(item, 'toolbar'), index);\n };\n /**\n * @param {number} index - specifies the index value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.removeQTBarItem = function (index) {\n this.quickTBarObj.toolbarObj.removeItems(index);\n };\n BaseQuickToolbar.prototype.removeEleFromDOM = function () {\n var element = this.popupObj.element;\n if (this.isDOMElement) {\n this.dropDownButtons.destroyDropDowns();\n this.colorPickerObj.destroyColorPicker();\n removeClass([this.element], [CLS_POP]);\n detach(element);\n var args = this.popupObj;\n this.parent.trigger(quickToolbarClose, args);\n }\n };\n BaseQuickToolbar.prototype.updateStatus = function (args) {\n var options = {\n args: args,\n dropDownModule: this.dropDownButtons,\n parent: this.parent,\n tbElements: selectAll('.' + CLS_TB_ITEM, this.element),\n tbItems: this.quickTBarObj.toolbarObj.items\n };\n setToolbarStatus(options, true, this.parent);\n if (!select('.e-rte-srctextarea', this.parent.element)) {\n updateUndoRedoStatus(this.parent.getBaseToolbarObject(), this.parent.formatter.editorManager.undoRedoManager.getUndoStatus());\n }\n };\n /**\n * Destroys the Quick toolbar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.destroy = function () {\n if (this.popupObj && !this.popupObj.isDestroyed) {\n this.popupObj.destroy();\n this.removeEleFromDOM();\n }\n this.removeEventListener();\n };\n /**\n * addEventListener method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n if (this.parent.inlineMode.enable) {\n this.parent.on(toolbarUpdated, this.updateStatus, this);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the model element\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.inlineMode)) {\n for (var _i = 0, _a = Object.keys(e.newProp.inlineMode); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enable':\n if (e.newProp.inlineMode.enable) {\n this.parent.on(toolbarUpdated, this.updateStatus, this);\n }\n else {\n this.parent.off(toolbarUpdated, this.updateStatus);\n }\n break;\n }\n }\n }\n };\n /**\n * removeEventListener method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n BaseQuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(destroy, this.destroy);\n this.parent.off(modelChanged, this.onPropertyChanged);\n if (this.parent.inlineMode.enable) {\n this.parent.off(toolbarUpdated, this.updateStatus);\n }\n };\n return BaseQuickToolbar;\n}());\n\n/**\n * `Popup renderer` module is used to render popup in RichTextEditor.\n *\n * @hidden\n * @deprecated\n */\nvar PopupRenderer = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for popup renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent.\n */\n function PopupRenderer(parent) {\n this.parent = parent;\n }\n PopupRenderer.prototype.quickToolbarOpen = function () {\n var args = this.popupObj;\n this.parent.trigger(quickToolbarOpen, args);\n };\n /**\n * renderPopup method\n *\n * @param {BaseQuickToolbar} args - specifies the arguments.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n PopupRenderer.prototype.renderPopup = function (args) {\n this.setPanel(args.element);\n this.renderPanel();\n args.popupObj = new Popup(args.element, {\n targetType: 'relative',\n relateTo: this.parent.element,\n open: this.quickToolbarOpen.bind(this)\n });\n this.popupObj = args.popupObj;\n args.popupObj.hide();\n };\n /**\n * The function is used to add popup class in Quick Toolbar\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n PopupRenderer.prototype.renderPanel = function () {\n this.getPanel().classList.add(CLS_QUICK_POP);\n };\n /**\n * Get the popup element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n * @deprecated\n */\n PopupRenderer.prototype.getPanel = function () {\n return this.popupPanel;\n };\n /**\n * Set the popup element of RichTextEditor\n *\n * @returns {void}\n * @param {Element} panel - specifies the element\n * @hidden\n * @deprecated\n */\n PopupRenderer.prototype.setPanel = function (panel) {\n this.popupPanel = panel;\n };\n return PopupRenderer;\n}());\n\n/**\n * `Quick toolbar` module is used to handle Quick toolbar actions.\n */\nvar QuickToolbar = /** @__PURE__ @class */ (function () {\n function QuickToolbar(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.renderFactory.addRenderer(RenderType.Popup, new PopupRenderer(this.parent));\n this.addEventListener();\n }\n QuickToolbar.prototype.formatItems = function (items) {\n var formattedItems = [];\n items.forEach(function (item) {\n if (typeof item === 'string') {\n switch (item.toLocaleLowerCase()) {\n case 'open':\n formattedItems.push('openLink');\n break;\n case 'edit':\n formattedItems.push('editLink');\n break;\n case 'unlink':\n formattedItems.push('removeLink');\n break;\n default:\n formattedItems.push(item);\n break;\n }\n }\n else {\n formattedItems.push(item);\n }\n });\n return formattedItems;\n };\n QuickToolbar.prototype.getQTBarOptions = function (popType, mode, items, type) {\n return {\n popupType: popType,\n toolbarItems: items,\n mode: mode,\n renderType: type,\n cssClass: this.parent.cssClass\n };\n };\n /**\n * createQTBar method\n *\n * @param {string} popupType - specifies the string value\n * @param {string} mode - specifies the string value.\n * @param {string} items - specifies the string.\n * @param {RenderType} type - specifies the render type.\n * @returns {BaseQuickToolbar} - specifies the quick toolbar\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.createQTBar = function (popupType, mode, items, type) {\n if (items.length < 1) {\n return null;\n }\n var qTBar = new BaseQuickToolbar(this.parent, this.locator);\n qTBar.render(this.getQTBarOptions(popupType, mode, this.formatItems(items), type));\n return qTBar;\n };\n QuickToolbar.prototype.initializeQuickToolbars = function () {\n this.parent.quickToolbarModule = this;\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n if (this.parent.inlineMode.enable && this.parent.inlineMode.onSelection && isIDevice()) {\n EventHandler.add(this.contentRenderer.getDocument(), 'selectionchange', this.selectionChangeHandler, this);\n }\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.onMouseDown = function (e) {\n this.parent.isBlur = false;\n this.parent.isRTE = true;\n };\n QuickToolbar.prototype.keyUpQT = function (e) {\n if (e.which === 27) {\n this.hideQuickToolbars();\n }\n };\n QuickToolbar.prototype.renderQuickToolbars = function () {\n if (this.linkQTBar || this.imageQTBar || this.audioQTBar || this.videoQTBar || this.textQTBar || this.tableQTBar) {\n return;\n }\n this.linkQTBar = this.createQTBar('Link', 'Scrollable', this.parent.quickToolbarSettings.link, RenderType.LinkToolbar);\n this.renderFactory.addRenderer(RenderType.LinkToolbar, this.linkQTBar);\n this.textQTBar = this.createQTBar('Text', 'Scrollable', this.parent.quickToolbarSettings.text, RenderType.TextToolbar);\n this.renderFactory.addRenderer(RenderType.TextToolbar, this.textQTBar);\n this.imageQTBar = this.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n this.renderFactory.addRenderer(RenderType.ImageToolbar, this.imageQTBar);\n this.audioQTBar = this.createQTBar('Audio', 'MultiRow', this.parent.quickToolbarSettings.audio, RenderType.AudioToolbar);\n this.renderFactory.addRenderer(RenderType.AudioToolbar, this.audioQTBar);\n this.videoQTBar = this.createQTBar('Video', 'MultiRow', this.parent.quickToolbarSettings.video, RenderType.VideoToolbar);\n this.renderFactory.addRenderer(RenderType.VideoToolbar, this.videoQTBar);\n this.tableQTBar = this.createQTBar('Table', 'MultiRow', this.parent.quickToolbarSettings.table, RenderType.TableToolbar);\n this.renderFactory.addRenderer(RenderType.TableToolbar, this.tableQTBar);\n if (this.linkQTBar) {\n EventHandler.add(this.linkQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.linkQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.imageQTBar) {\n EventHandler.add(this.imageQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.imageQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.audioQTBar) {\n EventHandler.add(this.audioQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.audioQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.videoQTBar) {\n EventHandler.add(this.videoQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.videoQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.textQTBar) {\n EventHandler.add(this.textQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.textQTBar.element, 'keyup', this.keyUpQT, this);\n }\n if (this.tableQTBar) {\n EventHandler.add(this.tableQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.tableQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n QuickToolbar.prototype.renderInlineQuickToolbar = function () {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.inlineQTBar = this.createQTBar('Inline', 'MultiRow', this.parent.toolbarSettings.items, RenderType.InlineToolbar);\n this.renderFactory.addRenderer(RenderType.InlineToolbar, this.inlineQTBar);\n EventHandler.add(this.inlineQTBar.element, 'mousedown', this.onMouseDown, this);\n EventHandler.add(this.inlineQTBar.element, 'keyup', this.keyUpQT, this);\n }\n };\n /**\n * Method for showing the inline quick toolbar\n *\n * @param {number} x -specifies the value of x.\n * @param {number} y - specifies the y valu.\n * @param {HTMLElement} target - specifies the target element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.showInlineQTBar = function (x, y, target) {\n if (this.parent.readonly || target.tagName.toLowerCase() === 'img') {\n return;\n }\n this.inlineQTBar.showPopup(x, y, target);\n };\n /**\n * Method for hidding the inline quick toolbar\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.hideInlineQTBar = function () {\n if (this.inlineQTBar && !hasClass(this.inlineQTBar.element, 'e-popup-close')) {\n this.inlineQTBar.hidePopup();\n }\n };\n /**\n * Method for hidding the quick toolbar\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.hideQuickToolbars = function () {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close') && document.body.contains(this.linkQTBar.element)) {\n this.linkQTBar.hidePopup();\n }\n if (this.textQTBar && !hasClass(this.textQTBar.element, 'e-popup-close') && document.body.contains(this.textQTBar.element)) {\n this.textQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close') && document.body.contains(this.imageQTBar.element)) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close') && document.body.contains(this.audioQTBar.element)) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close') && document.body.contains(this.videoQTBar.element)) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close') && document.body.contains(this.tableQTBar.element)) {\n this.tableQTBar.hidePopup();\n }\n if (!isNullOrUndefined(this.parent) && this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.deBounce = function (x, y, target) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.showInlineQTBar(x, y, target);\n }, 1000);\n };\n QuickToolbar.prototype.mouseUpHandler = function (e) {\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n var args = e.args.touches ?\n e.args.changedTouches[0] : e.args;\n var range = this.parent.getRange();\n var target = e.args.target;\n if (isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n if (isIDevice() && e.touchData && e.touchData.prevClientX !== e.touchData.clientX\n && e.touchData.prevClientY !== e.touchData.clientY) {\n return;\n }\n this.hideInlineQTBar();\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n this.offsetX = this.parent.iframeSettings.enable ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n this.offsetY = pageYOffset(args, this.parent.element, this.parent.iframeSettings.enable);\n if (target.nodeName === 'TEXTAREA') {\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n else {\n var closestAnchor = closest(target, 'a');\n target = closestAnchor ? closestAnchor : target;\n var startNode = this.parent.getRange().startContainer.parentElement;\n var endNode = this.parent.getRange().endContainer.parentElement;\n if ((isNullOrUndefined(closest(startNode, 'A')) || isNullOrUndefined(closest(endNode, 'A'))) && (!closest(target, 'td,th') || !range.collapsed) &&\n (target.tagName !== 'IMG' || this.parent.getRange().startOffset !== this.parent.getRange().endOffset)) {\n if (this.parent.inlineMode.onSelection && range.collapsed) {\n return;\n }\n this.target = target;\n this.showInlineQTBar(this.offsetX, this.offsetY, target);\n }\n }\n }\n }\n };\n QuickToolbar.prototype.keyDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.inlineQTBarMouseDownHandler = function () {\n if ((this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice()))\n && !isNullOrUndefined(select('.' + CLS_INLINE_POP, document))) {\n this.hideInlineQTBar();\n }\n };\n QuickToolbar.prototype.keyUpHandler = function (e) {\n if (this.parent.inlineMode.enable && !Browser.isDevice) {\n var args = e.args;\n if (this.parent.inlineMode.onSelection) {\n if (this.parent.getSelection().length > 0) {\n if ((args.ctrlKey && args.keyCode === 65) || (args.shiftKey && (args.keyCode === 33 || args.keyCode === 34 ||\n args.keyCode === 35 || args.keyCode === 36 || args.keyCode === 37 || args.keyCode === 38 ||\n args.keyCode === 39 || args.keyCode === 40))) {\n this.showInlineQTBar(this.offsetX, this.offsetY, args.target);\n }\n }\n return;\n }\n this.deBounce(this.offsetX, this.offsetY, args.target);\n }\n };\n QuickToolbar.prototype.selectionChangeHandler = function (e) {\n var _this = this;\n clearTimeout(this.deBouncer);\n this.deBouncer = window.setTimeout(function () {\n _this.onSelectionChange(e);\n }, 1000);\n };\n QuickToolbar.prototype.onSelectionChange = function (e) {\n if (!isNullOrUndefined(select('.' + CLS_INLINE_POP, document.body))) {\n return;\n }\n var selection = this.contentRenderer.getDocument().getSelection();\n if (!selection.isCollapsed) {\n this.mouseUpHandler({ args: e });\n }\n };\n /**\n * getInlineBaseToolbar method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.getInlineBaseToolbar = function () {\n return this.inlineQTBar && this.inlineQTBar.quickTBarObj;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.destroy = function () {\n if (this.linkQTBar) {\n EventHandler.remove(this.linkQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.linkQTBar.element, 'keyup', this.keyUpQT);\n this.linkQTBar.destroy();\n }\n if (this.textQTBar) {\n EventHandler.remove(this.textQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.textQTBar.element, 'keyup', this.keyUpQT);\n this.textQTBar.destroy();\n }\n if (this.imageQTBar) {\n EventHandler.remove(this.imageQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.imageQTBar.element, 'keyup', this.keyUpQT);\n this.imageQTBar.destroy();\n }\n if (this.audioQTBar) {\n EventHandler.remove(this.audioQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.audioQTBar.element, 'keyup', this.keyUpQT);\n this.audioQTBar.destroy();\n }\n if (this.videoQTBar) {\n EventHandler.remove(this.videoQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.videoQTBar.element, 'keyup', this.keyUpQT);\n this.videoQTBar.destroy();\n }\n if (this.tableQTBar) {\n EventHandler.remove(this.tableQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.tableQTBar.element, 'keyup', this.keyUpQT);\n this.tableQTBar.destroy();\n }\n if (this.inlineQTBar) {\n EventHandler.remove(this.inlineQTBar.element, 'mousedown', this.onMouseDown);\n EventHandler.remove(this.inlineQTBar.element, 'keyup', this.keyUpQT);\n if (isIDevice()) {\n EventHandler.remove(document, 'selectionchange', this.selectionChangeHandler);\n }\n this.inlineQTBar.destroy();\n }\n this.removeEventListener();\n };\n QuickToolbar.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n QuickToolbar.prototype.wireInlineQTBarEvents = function () {\n this.parent.on(mouseUp, this.mouseUpHandler, this);\n this.parent.on(mouseDown, this.inlineQTBarMouseDownHandler, this);\n this.parent.on(keyDown, this.keyDownHandler, this);\n this.parent.on(keyUp, this.keyUpHandler, this);\n this.parent.on(sourceCodeMouseDown, this.mouseUpHandler, this);\n this.parent.on(renderInlineToolbar, this.renderInlineQuickToolbar, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n QuickToolbar.prototype.unWireInlineQTBarEvents = function () {\n this.parent.off(mouseUp, this.mouseUpHandler);\n this.parent.off(mouseDown, this.inlineQTBarMouseDownHandler);\n this.parent.off(keyDown, this.keyDownHandler);\n this.parent.off(keyUp, this.keyUpHandler);\n this.parent.off(sourceCodeMouseDown, this.mouseUpHandler);\n this.parent.off(renderInlineToolbar, this.renderInlineQuickToolbar);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n // eslint-disable-next-line\n QuickToolbar.prototype.toolbarUpdated = function (args) {\n if (this.linkQTBar && !hasClass(this.linkQTBar.element, 'e-popup-close')) {\n this.linkQTBar.hidePopup();\n }\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n if (this.tableQTBar && !hasClass(this.tableQTBar.element, 'e-popup-close')) {\n this.tableQTBar.hidePopup();\n }\n };\n /**\n * addEventListener\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.initializeQuickToolbars, this);\n this.parent.on(mouseDown, this.renderQuickToolbars, this);\n this.parent.on(toolbarUpdated, this.toolbarUpdated, this);\n this.parent.on(drop, this.renderQuickToolbars, this);\n this.wireInlineQTBarEvents();\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.on(scroll, this.hideQuickToolbars, this);\n this.parent.on(contentscroll, this.hideQuickToolbars, this);\n }\n this.parent.on(focusChange, this.hideQuickToolbars, this);\n this.parent.on(iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(rtlMode, this.setRtl, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n };\n QuickToolbar.prototype.onKeyDown = function (e) {\n var args = e.args;\n if (args.which === 8 || args.which === 46) {\n if (this.imageQTBar && !hasClass(this.imageQTBar.element, 'e-popup-close')) {\n this.imageQTBar.hidePopup();\n }\n if (this.audioQTBar && !hasClass(this.audioQTBar.element, 'e-popup-close')) {\n this.audioQTBar.hidePopup();\n }\n if (this.videoQTBar && !hasClass(this.videoQTBar.element, 'e-popup-close')) {\n this.videoQTBar.hidePopup();\n }\n }\n };\n QuickToolbar.prototype.onIframeMouseDown = function () {\n this.hideQuickToolbars();\n this.hideInlineQTBar();\n };\n QuickToolbar.prototype.updateCss = function (baseQTObj, e) {\n if (baseQTObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass && baseQTObj.quickTBarObj.toolbarObj.cssClass !== e.cssClass)) {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n baseQTObj.quickTBarObj.toolbarObj.setProperties({ cssClass: (baseQTObj.quickTBarObj.toolbarObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n QuickToolbar.prototype.setCssClass = function (e) {\n var baseQuickToolbarObj = [\n this.inlineQTBar, this.imageQTBar, this.linkQTBar, this.textQTBar, this.tableQTBar\n ];\n for (var i = 0; i < baseQuickToolbarObj.length; i++) {\n this.updateCss(baseQuickToolbarObj[i], e);\n }\n };\n QuickToolbar.prototype.setRtl = function (args) {\n if (this.inlineQTBar) {\n this.inlineQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.imageQTBar) {\n this.imageQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.audioQTBar) {\n this.audioQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.videoQTBar) {\n this.videoQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n if (this.linkQTBar) {\n this.linkQTBar.quickTBarObj.toolbarObj.setProperties({ enableRtl: args.enableRtl });\n }\n };\n /**\n * removeEventListener\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.initializeQuickToolbars);\n this.parent.off(mouseDown, this.renderQuickToolbars);\n this.parent.off(toolbarUpdated, this.toolbarUpdated);\n this.parent.off(drop, this.renderQuickToolbars);\n this.unWireInlineQTBarEvents();\n this.parent.off(modelChanged, this.onPropertyChanged);\n if (this.parent.quickToolbarSettings.actionOnScroll === 'hide') {\n this.parent.off(scroll, this.hideQuickToolbars);\n this.parent.off(contentscroll, this.hideQuickToolbars);\n }\n this.parent.off(focusChange, this.hideQuickToolbars);\n this.parent.off(destroy, this.destroy);\n this.parent.off(iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(rtlMode, this.setRtl);\n this.parent.off(bindCssClass, this.setCssClass);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n QuickToolbar.prototype.onPropertyChanged = function (e) {\n if (!isNullOrUndefined(e.newProp.quickToolbarSettings)) {\n for (var _i = 0, _a = Object.keys(e.newProp.quickToolbarSettings); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'actionOnScroll':\n if (e.newProp.quickToolbarSettings.actionOnScroll === 'none') {\n this.parent.off(scroll, this.hideQuickToolbars);\n this.parent.off(contentscroll, this.hideQuickToolbars);\n }\n else {\n this.parent.on(scroll, this.hideQuickToolbars, this);\n this.parent.on(contentscroll, this.hideQuickToolbars, this);\n }\n break;\n }\n }\n }\n if (e.module !== this.getModuleName()) {\n return;\n }\n if (this.inlineQTBar) {\n removeClass([this.parent.element], [CLS_INLINE]);\n this.unWireInlineQTBarEvents();\n this.hideInlineQTBar();\n }\n if (this.parent.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n addClass([this.parent.element], [CLS_INLINE]);\n this.wireInlineQTBarEvents();\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n QuickToolbar.prototype.getModuleName = function () {\n return 'quickToolbar';\n };\n return QuickToolbar;\n}());\n\n/**\n * `Count` module is used to handle Count actions.\n */\nvar Count = /** @__PURE__ @class */ (function () {\n function Count(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n Count.prototype.initializeInstance = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n this.editPanel = this.contentRenderer.getEditPanel();\n this.addEventListener();\n };\n /**\n * renderCount method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Count.prototype.renderCount = function () {\n this.initializeInstance();\n this.element = this.parent.createElement('span', { className: CLS_COUNT });\n this.contentRenderer.getPanel().parentElement.appendChild(this.element);\n this.appendCount();\n if (this.parent.maxLength !== -1) {\n this.charCountBackground(this.htmlLength);\n }\n };\n Count.prototype.appendCount = function () {\n var htmlText = this.parent.editorMode === 'Markdown' ? this.editPanel.value :\n this.editPanel.textContent;\n if (this.parent.editorMode !== 'Markdown' && htmlText.indexOf('\\u200B') !== -1) {\n this.htmlLength = htmlText.replace(/\\u200B/g, '').length;\n }\n else {\n this.htmlLength = htmlText.length;\n }\n var string = this.parent.maxLength === -1 ? this.htmlLength : this.htmlLength + ' / ' + this.parent.maxLength;\n this.element.innerHTML = string;\n };\n Count.prototype.charCountBackground = function (htmlLength) {\n var percentage = (htmlLength / this.parent.maxLength) * 100;\n if (percentage < 85) {\n this.element.classList.remove(CLS_WARNING);\n this.element.classList.remove(CLS_ERROR);\n }\n else if (percentage > 85 && percentage <= 90) {\n this.element.classList.remove(CLS_ERROR);\n this.element.classList.add(CLS_WARNING);\n }\n else if (percentage > 90) {\n this.element.classList.remove(CLS_WARNING);\n this.element.classList.add(CLS_ERROR);\n }\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Count.prototype.refresh = function () {\n if (!isNullOrUndefined(this.editPanel)) {\n this.appendCount();\n if (this.parent.maxLength !== -1) {\n this.charCountBackground(this.htmlLength);\n }\n }\n };\n /**\n * Destroys the Count.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Count.prototype.destroy = function () {\n if (this.element && !isNullOrUndefined(this.parent.element.querySelector('.' + CLS_COUNT))) {\n detach(this.element);\n }\n this.removeEventListener();\n };\n Count.prototype.toggle = function (e) {\n this.element.style.display = (e.member === 'viewSource') ? 'none' : 'block';\n };\n Count.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.renderCount, this);\n this.parent.on(keyUp, this.refresh, this);\n this.parent.on(count, this.refresh, this);\n this.parent.on(refreshBegin, this.refresh, this);\n this.parent.on(mouseDown, this.refresh, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(sourceCode, this.toggle, this);\n this.parent.on(updateSource, this.toggle, this);\n };\n Count.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.renderCount);\n this.parent.off(keyUp, this.refresh);\n this.parent.off(refreshBegin, this.refresh);\n this.parent.off(count, this.refresh);\n this.parent.off(mouseDown, this.refresh);\n this.parent.off(destroy, this.destroy);\n this.parent.off(sourceCode, this.toggle);\n this.parent.off(updateSource, this.toggle);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n */\n Count.prototype.getModuleName = function () {\n return 'count';\n };\n return Count;\n}());\n\n/**\n * MarkdownSelection internal module\n *\n * @hidden\n * @deprecated\n */\nvar MarkdownSelection = /** @__PURE__ @class */ (function () {\n function MarkdownSelection() {\n }\n /**\n * markdown getLineNumber method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @param {number} point - specifies the number value\n * @returns {number} - returns the value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.getLineNumber = function (textarea, point) {\n return textarea.value.substr(0, point).split('\\n').length;\n };\n /**\n * markdown getSelectedText method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @returns {string} - specifies the string value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.getSelectedText = function (textarea) {\n var start = textarea.selectionStart;\n var end = textarea.selectionEnd;\n return textarea.value.substring(start, end);\n };\n /**\n * markdown getAllParents method\n *\n * @param {string} value - specifies the string value\n * @returns {string[]} - returns the string value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.getAllParents = function (value) {\n return value.split('\\n');\n };\n /**\n * markdown getSelectedLine method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @returns {string} - returns the string value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.getSelectedLine = function (textarea) {\n var lines = this.getAllParents(textarea.value);\n var index = this.getLineNumber(textarea, textarea.selectionStart);\n return lines[index - 1];\n };\n /**\n * markdown getLine method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @param {number} index - specifies the number value\n * @returns {string} - returns the string value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.getLine = function (textarea, index) {\n var lines = this.getAllParents(textarea.value);\n return lines[index];\n };\n /**\n * markdown getSelectedParentPoints method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @returns {string} - returns the string value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.getSelectedParentPoints = function (textarea) {\n var lines = this.getAllParents(textarea.value);\n var start = this.getLineNumber(textarea, textarea.selectionStart);\n var end = this.getLineNumber(textarea, textarea.selectionEnd);\n var parents = this.getSelectedText(textarea).split('\\n');\n var selectedPoints = [];\n var selectedLine = lines[start - 1];\n var startLength = lines.slice(0, start - 1).join('').length;\n var firstPoint = {};\n firstPoint.line = start - 1;\n firstPoint.start = startLength + firstPoint.line;\n firstPoint.end = selectedLine !== '' ? firstPoint.start +\n selectedLine.length + 1 : firstPoint.start + selectedLine.length;\n firstPoint.text = selectedLine;\n selectedPoints.push(firstPoint);\n if (parents.length > 1) {\n for (var i = 1; i < parents.length - 1; i++) {\n var points = {};\n points.line = selectedPoints[i - 1].line + 1;\n points.start = parents[i] !== '' ? selectedPoints[i - 1].end : selectedPoints[i - 1].end;\n points.end = points.start + parents[i].length + 1;\n points.text = parents[i];\n selectedPoints.push(points);\n }\n var lastPoint = {};\n lastPoint.line = selectedPoints[selectedPoints.length - 1].line + 1;\n lastPoint.start = selectedPoints[selectedPoints.length - 1].end;\n lastPoint.end = lastPoint.start + lines[end - 1].length + 1;\n lastPoint.text = lines[end - 1];\n selectedPoints.push(lastPoint);\n }\n return selectedPoints;\n };\n /**\n * markdown setSelection method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area element\n * @param {number} start - specifies the start vaulue\n * @param {number} end - specifies the end value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.setSelection = function (textarea, start, end) {\n textarea.setSelectionRange(start, end);\n textarea.focus();\n };\n /**\n * markdown save method\n *\n * @param {number} start - specifies the start vaulue\n * @param {number} end - specifies the end value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.save = function (start, end) {\n this.selectionStart = start;\n this.selectionEnd = end;\n };\n /**\n * markdown restore method\n *\n * @param {HTMLTextAreaElement} textArea - specifies the text area element\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.restore = function (textArea) {\n this.setSelection(textArea, this.selectionStart, this.selectionEnd);\n };\n /**\n * markdown isStartWith method\n *\n * @param {string} line - specifies the string value\n * @param {string} command - specifies the string value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.isStartWith = function (line, command) {\n var isStart = false;\n if (line) {\n var reg = line.trim() === command.trim() ?\n // eslint-disable-next-line\n new RegExp('^(' + this.replaceSpecialChar(command.trim()) + ')', 'gim') :\n // eslint-disable-next-line\n new RegExp('^(' + this.replaceSpecialChar(command) + ')', 'gim');\n isStart = reg.test(line.trim());\n }\n return isStart;\n };\n /**\n * markdown replaceSpecialChar method\n *\n * @param {string} value - specifies the string value\n * @returns {string} - returns the value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.replaceSpecialChar = function (value) {\n // eslint-disable-next-line\n return value.replace(/[`~!@#$%^&*()_|+\\-=?;:'\",.<>\\{\\}\\[\\]\\\\\\/]/g, '\\\\$&');\n };\n /**\n * markdown isClear method\n *\n * @param {string} parents - specifies the parent element\n * @param {string} regex - specifies the regex value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.isClear = function (parents, regex) {\n var isClear = false;\n for (var i = 0; i < parents.length; i++) {\n // eslint-disable-next-line\n if (new RegExp(regex, 'gim').test(parents[i].text)) {\n return true;\n }\n }\n return isClear;\n };\n /**\n * markdown getSelectedInlinePoints method\n *\n * @param {HTMLTextAreaElement} textarea - specifies the text area\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownSelection.prototype.getSelectedInlinePoints = function (textarea) {\n var start = textarea.selectionStart;\n var end = textarea.selectionEnd;\n var selection = this.getSelectedText(textarea);\n return { start: start, end: end, text: selection };\n };\n return MarkdownSelection;\n}());\n\n/**\n * Defines common util methods used by Rich Text Editor.\n */\nvar inlineNode$1 = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'strike', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n/**\n * @returns {void}\n * @hidden\n */\nfunction isIDevice$1() {\n var result = false;\n if (Browser.isDevice && Browser.isIos) {\n result = true;\n }\n return result;\n}\n/**\n * @param {Element} editableElement - specifies the editable element.\n * @param {string} selector - specifies the string values.\n * @returns {void}\n * @hidden\n */\nfunction setEditFrameFocus(editableElement, selector) {\n if (editableElement.nodeName === 'BODY' && !isNullOrUndefined(selector)) {\n var iframe = top.window.document.querySelector(selector);\n if (!isNullOrUndefined(iframe)) {\n iframe.contentWindow.focus();\n }\n }\n}\n/**\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n */\nfunction updateTextNode$1(value, enterAction) {\n var tempNode = document.createElement('div');\n tempNode.innerHTML = value;\n tempNode.setAttribute('class', 'tempDiv');\n var resultElm = document.createElement('div');\n var childNodes = tempNode.childNodes;\n if (childNodes.length > 0) {\n var isPreviousInlineElem = void 0;\n var previousParent = void 0;\n var paraElm = void 0;\n while (tempNode.firstChild) {\n if ((tempNode.firstChild.nodeName === '#text' &&\n (tempNode.firstChild.textContent.indexOf('\\n') < 0 || tempNode.firstChild.textContent.trim() !== '')) ||\n inlineNode$1.indexOf(tempNode.firstChild.nodeName.toLocaleLowerCase()) >= 0) {\n if (!isPreviousInlineElem) {\n if (enterAction === 'BR') {\n resultElm.appendChild(tempNode.firstChild);\n previousParent = resultElm;\n }\n else {\n paraElm = createElement('p');\n resultElm.appendChild(paraElm);\n paraElm.appendChild(tempNode.firstChild);\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n }\n else {\n previousParent.appendChild(tempNode.firstChild);\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n }\n else if (tempNode.firstChild.nodeName === '#text' && (tempNode.firstChild.textContent === '\\n' ||\n (tempNode.firstChild.textContent.indexOf('\\n') >= 0 && tempNode.firstChild.textContent.trim() === ''))) {\n detach(tempNode.firstChild);\n }\n else {\n resultElm.appendChild(tempNode.firstChild);\n isPreviousInlineElem = false;\n }\n }\n var tableElm = resultElm.querySelectorAll('table');\n for (var i = 0; i < tableElm.length; i++) {\n if (tableElm[i].getAttribute('border') === '0') {\n tableElm[i].removeAttribute('border');\n }\n var tdElm = tableElm[i].querySelectorAll('td');\n for (var j = 0; j < tdElm.length; j++) {\n if (tdElm[j].style.borderLeft === 'none') {\n tdElm[j].style.removeProperty('border-left');\n }\n if (tdElm[j].style.borderRight === 'none') {\n tdElm[j].style.removeProperty('border-right');\n }\n if (tdElm[j].style.borderBottom === 'none') {\n tdElm[j].style.removeProperty('border-bottom');\n }\n if (tdElm[j].style.borderTop === 'none') {\n tdElm[j].style.removeProperty('border-top');\n }\n if (tdElm[j].style.border === 'none') {\n tdElm[j].style.removeProperty('border');\n }\n }\n if (!tableElm[i].classList.contains('e-rte-table')) {\n tableElm[i].classList.add('e-rte-table');\n }\n }\n var imageElm = resultElm.querySelectorAll('img');\n for (var i = 0; i < imageElm.length; i++) {\n if (!imageElm[i].classList.contains('e-rte-image')) {\n imageElm[i].classList.add('e-rte-image');\n }\n if (!(imageElm[i].classList.contains('e-imginline') ||\n imageElm[i].classList.contains('e-imgbreak'))) {\n imageElm[i].classList.add('e-imginline');\n }\n }\n }\n return resultElm.innerHTML;\n}\n/**\n * @param {Node} startChildNodes - specifies the node\n * @returns {void}\n * @hidden\n */\nfunction getLastTextNode(startChildNodes) {\n var finalNode = startChildNodes;\n do {\n if (finalNode.childNodes.length > 0) {\n finalNode = finalNode.childNodes[0];\n }\n } while (finalNode.childNodes.length > 0);\n return finalNode;\n}\n/**\n * @returns {void}\n * @hidden\n */\nfunction getDefaultHtmlTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n unorderedlist: false,\n underline: false,\n alignments: null,\n backgroundcolor: null,\n fontcolor: null,\n fontname: null,\n fontsize: null,\n formats: null,\n createlink: false,\n insertcode: false\n };\n}\n/**\n * @returns {void}\n * @hidden\n */\nfunction getDefaultMDTbStatus() {\n return {\n bold: false,\n italic: false,\n subscript: false,\n superscript: false,\n strikethrough: false,\n orderedlist: false,\n uppercase: false,\n lowercase: false,\n inlinecode: false,\n unorderedlist: false,\n formats: null\n };\n}\n\n/**\n * MarkdownToolbarStatus module for refresh the toolbar status\n */\nvar MarkdownToolbarStatus = /** @__PURE__ @class */ (function () {\n function MarkdownToolbarStatus(parent) {\n this.toolbarStatus = this.prevToolbarStatus = getDefaultMDTbStatus();\n this.selection = new MarkdownSelection();\n this.parent = parent;\n this.element = this.parent.contentModule.getEditPanel();\n this.addEventListener();\n }\n MarkdownToolbarStatus.prototype.addEventListener = function () {\n this.parent.on(toolbarRefresh, this.onRefreshHandler, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n MarkdownToolbarStatus.prototype.removeEventListener = function () {\n this.parent.off(toolbarRefresh, this.onRefreshHandler);\n this.parent.off(destroy, this.removeEventListener);\n };\n MarkdownToolbarStatus.prototype.onRefreshHandler = function (args) {\n var parentsLines = this.selection.getSelectedParentPoints(this.element);\n this.toolbarStatus = {\n orderedlist: args.documentNode ? false : this.isListsApplied(parentsLines, 'OL'),\n unorderedlist: args.documentNode ? false : this.isListsApplied(parentsLines, 'UL'),\n formats: this.currentFormat(parentsLines, args.documentNode),\n bold: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('Bold'),\n italic: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('Italic'),\n inlinecode: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('InlineCode'),\n strikethrough: args.documentNode ? false :\n this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('StrikeThrough'),\n subscript: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('SubScript'),\n superscript: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('SuperScript'),\n uppercase: args.documentNode ? false : this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('UpperCase')\n };\n if (this.parent.formatter.editorManager.mdSelectionFormats.isAppliedCommand('InlineCode')) {\n this.toolbarStatus.formats = 'pre';\n }\n var tbStatusString = JSON.stringify(this.toolbarStatus);\n this.parent.notify(toolbarUpdated, this.toolbarStatus);\n if (JSON.stringify(this.prevToolbarStatus) !== tbStatusString) {\n this.parent.notify(updateTbItemsStatus, { html: null, markdown: JSON.parse(tbStatusString) });\n this.prevToolbarStatus = JSON.parse(tbStatusString);\n }\n };\n MarkdownToolbarStatus.prototype.isListsApplied = function (lines, type) {\n var isApply = true;\n if (type === 'OL') {\n for (var i = 0; i < lines.length; i++) {\n var lineSplit = lines[i].text.trim().split(' ', 2)[0] + ' ';\n if (!/^[\\d.]+[ ]+$/.test(lineSplit)) {\n isApply = false;\n break;\n }\n }\n }\n else {\n for (var i = 0; i < lines.length; i++) {\n if (!this.selection.isStartWith(lines[i].text, this.parent.formatter.listTags[\"\" + type])) {\n isApply = false;\n break;\n }\n }\n }\n return isApply;\n };\n MarkdownToolbarStatus.prototype.currentFormat = function (lines, documentNode) {\n var format = 'p';\n var keys = Object.keys(this.parent.formatter.formatTags);\n var direction = this.element.selectionDirection;\n var checkLine = direction === 'backward' ? lines[0].text : lines[lines.length - 1].text;\n for (var i = 0; !documentNode && i < keys.length; i++) {\n if (keys[i] !== 'pre' && this.selection.isStartWith(checkLine, this.parent.formatter.formatTags[keys[i]])) {\n format = keys[i];\n break;\n }\n else if (keys[i] === 'pre') {\n if (this.codeFormat()) {\n format = keys[i];\n break;\n }\n }\n }\n return format;\n };\n MarkdownToolbarStatus.prototype.codeFormat = function () {\n var isFormat = false;\n var textArea = this.parent.inputElement;\n var start = textArea.selectionStart;\n var splitAt = function (index) { return function (x) { return [x.slice(0, index), x.slice(index)]; }; };\n var splitText = splitAt(start)(textArea.value);\n var cmdPre = this.parent.formatter.formatTags.pre;\n var selectedText = this.getSelectedText(textArea);\n if (selectedText !== '' && selectedText === selectedText.toLocaleUpperCase()) {\n return true;\n }\n else if (selectedText === '') {\n var beforeText = textArea.value.substr(splitText[0].length - 1, 1);\n var afterText = splitText[1].substr(0, 1);\n if ((beforeText !== '' && afterText !== '' && beforeText.match(/[a-z]/i)) &&\n beforeText === beforeText.toLocaleUpperCase() && afterText === afterText.toLocaleUpperCase()) {\n return true;\n }\n }\n if ((this.isCode(splitText[0], cmdPre) && this.isCode(splitText[1], cmdPre)) &&\n (splitText[0].match(this.multiCharRegx(cmdPre)).length % 2 === 1 &&\n splitText[1].match(this.multiCharRegx(cmdPre)).length % 2 === 1)) {\n isFormat = true;\n }\n return isFormat;\n };\n MarkdownToolbarStatus.prototype.getSelectedText = function (textarea) {\n return textarea.value.substring(textarea.selectionStart, textarea.selectionEnd);\n };\n MarkdownToolbarStatus.prototype.isCode = function (text, cmd) {\n return text.search('\\\\' + cmd + '') !== -1;\n };\n MarkdownToolbarStatus.prototype.multiCharRegx = function (cmd) {\n // eslint-disable-next-line\n return new RegExp('(\\\\' + cmd + ')', 'g');\n };\n return MarkdownToolbarStatus;\n}());\n\n/**\n * `ExecCommandCallBack` module is used to run the editor manager command\n */\nvar ExecCommandCallBack = /** @__PURE__ @class */ (function () {\n function ExecCommandCallBack(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ExecCommandCallBack.prototype.addEventListener = function () {\n this.parent.on(execCommandCallBack, this.commandCallBack, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n ExecCommandCallBack.prototype.commandCallBack = function (args) {\n if (args.requestType !== 'Undo' && args.requestType !== 'Redo') {\n this.parent.formatter.saveData();\n }\n this.parent.notify(toolbarRefresh, { args: args });\n this.parent.notify(count, {});\n };\n ExecCommandCallBack.prototype.removeEventListener = function () {\n this.parent.off(execCommandCallBack, this.commandCallBack);\n this.parent.off(destroy, this.removeEventListener);\n };\n return ExecCommandCallBack;\n}());\n\n/**\n * Constant values for Common\n */\n/**\n * Keydown event trigger\n *\n * @hidden\n */\nvar KEY_DOWN = 'keydown';\n/**\n * Undo and Redo action HTML plugin events\n *\n * @hidden\n */\nvar ACTION = 'action';\n/**\n * Formats plugin events\n *\n * @hidden\n */\nvar FORMAT_TYPE = 'format-type';\n/**\n * Keydown handler event trigger\n *\n * @hidden\n */\nvar KEY_DOWN_HANDLER = 'keydown-handler';\n/**\n * List plugin events\n *\n * @hidden\n */\nvar LIST_TYPE = 'list-type';\n/**\n * Keyup handler event trigger\n *\n * @hidden\n */\nvar KEY_UP_HANDLER = 'keyup-handler';\n/**\n * Keyup event trigger\n *\n * @hidden\n */\nvar KEY_UP = 'keyup';\n/**\n * Model changed plugin event trigger\n *\n * @hidden\n */\nvar MODEL_CHANGED_PLUGIN = 'model_changed_plugin';\n/**\n * Model changed event trigger\n *\n * @hidden\n */\nvar MODEL_CHANGED = 'model_changed';\n/**\n * PasteCleanup plugin for MSWord content\n *\n * @hidden\n */\nvar MS_WORD_CLEANUP_PLUGIN = 'ms_word_cleanup_plugin';\n/**\n * PasteCleanup for MSWord content\n *\n * @hidden\n */\nvar MS_WORD_CLEANUP = 'ms_word_cleanup';\n/**\n * ActionBegin event callback\n *\n * @hidden\n */\nvar ON_BEGIN = 'onBegin';\n/**\n * Callback for spacelist action\n *\n * @hidden\n */\nvar SPACE_ACTION = 'actionBegin';\n\n/**\n * Formatter\n *\n * @hidden\n * @deprecated\n */\nvar Formatter = /** @__PURE__ @class */ (function () {\n function Formatter() {\n }\n /**\n * To execute the command\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {ActionBeginEventArgs} args - specifies the event arguments.\n * @param {MouseEvent|KeyboardEvent} event - specifies the keyboard event.\n * @param {IItemCollectionArgs} value - specifies the collection arguments\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Formatter.prototype.process = function (self, args, event, value) {\n var _this = this;\n var selection = self.contentModule.getDocument().getSelection();\n var range = (selection.rangeCount > 0) ? selection.getRangeAt(selection.rangeCount - 1) : null;\n var saveSelection;\n if (self.editorMode === 'HTML') {\n saveSelection = this.editorManager.nodeSelection.save(range, self.contentModule.getDocument());\n }\n if (!isNullOrUndefined(args)\n && args.item.command\n && args.item.command !== 'Table'\n && args.item.command !== 'Actions'\n && args.item.command !== 'Links'\n && args.item.command !== 'Images'\n && args.item.command !== 'Files'\n && args.item.command !== 'Audios'\n && args.item.command !== 'Videos'\n && range\n && !(self.contentModule.getEditPanel().contains(this.getAncestorNode(range.commonAncestorContainer))\n || self.contentModule.getEditPanel() === range.commonAncestorContainer\n || self.contentModule.getPanel() === range.commonAncestorContainer)) {\n return;\n }\n if (!isNullOrUndefined(args) && self.maxLength !== -1 && !isNullOrUndefined(args.item.command)) {\n var currentInsertContentLength = 0;\n if (args.item.command === 'Links') {\n currentInsertContentLength = value.text.length === 0 ? value.url.length : value.text.length;\n }\n if (args.item.command === 'Images' || args.item.command === 'Videos' || args.item.command === 'Table' || args.item.command === 'Files') {\n currentInsertContentLength = 1;\n }\n var currentLength = self.getText().trim().length;\n var selectionLength = self.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(self.maxLength === -1 || totalLength <= self.maxLength)) {\n return;\n }\n }\n if (isNullOrUndefined(args)) {\n var action_1 = event.action;\n if (action_1 !== 'tab' && action_1 !== 'enter' && action_1 !== 'space' && action_1 !== 'escape') {\n args = {};\n if (self.editorMode === 'Markdown' && action_1 === 'insert-table') {\n value = {\n 'headingText': self.localeObj.getConstant('TableHeadingText'),\n 'colText': self.localeObj.getConstant('TableColText')\n };\n }\n var items = {\n originalEvent: event, cancel: false,\n requestType: action_1 || (event.key + 'Key'),\n itemCollection: value\n };\n extend(args, args, items, true);\n self.trigger(actionBegin, args, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n if (action_1 === 'paste' || action_1 === 'cut' || action_1 === 'copy') {\n event.preventDefault();\n }\n }\n });\n }\n var isTableModule = isNullOrUndefined(self.tableModule) ? true : self.tableModule ?\n self.tableModule.ensureInsideTableList : false;\n if ((event.which === 9 && isTableModule) || event.which !== 9) {\n if (event.which === 13 && self.editorMode === 'HTML') {\n value = {\n 'enterAction': self.enterKey\n };\n }\n this.editorManager.observer.notify((event.type === 'keydown' ? KEY_DOWN : KEY_UP), {\n event: event,\n callBack: this.onSuccess.bind(this, self),\n value: value,\n enterAction: self.enterKey\n });\n }\n }\n else if (!isNullOrUndefined(args) && args.item.command && args.item.subCommand && ((args.item.command !== args.item.subCommand\n && args.item.command !== 'Font')\n || ((args.item.subCommand === 'FontName' || args.item.subCommand === 'FontSize') && args.name === 'dropDownSelect')\n || ((args.item.subCommand === 'BackgroundColor' || args.item.subCommand === 'FontColor')\n && args.name === 'colorPickerChanged'))) {\n extend(args, args, { requestType: args.item.subCommand, cancel: false, itemCollection: value, selectType: args.name }, true);\n self.trigger(actionBegin, args, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n if (_this.getUndoRedoStack().length === 0 && actionBeginArgs.item.command !== 'Links'\n && actionBeginArgs.item.command !== 'Images') {\n _this.saveData();\n }\n self.isBlur = false;\n self.contentModule.getEditPanel().focus();\n if (self.editorMode === 'HTML') {\n saveSelection.restore();\n }\n var command = actionBeginArgs.item.subCommand.toLocaleLowerCase();\n if (command === 'paste' || command === 'cut' || command === 'copy') {\n self.clipboardAction(command, event);\n }\n else {\n _this.editorManager.observer.notify(checkUndo, { subCommand: actionBeginArgs.item.subCommand });\n _this.editorManager.execCommand(actionBeginArgs.item.command, actionBeginArgs.item.subCommand, event, _this.onSuccess.bind(_this, self), actionBeginArgs.item.value, actionBeginArgs.item.subCommand === 'Pre' && actionBeginArgs.selectType === 'dropDownSelect' ?\n { name: actionBeginArgs.selectType } : value, ('#' + self.getID() + ' iframe'), self.enterKey);\n }\n }\n });\n }\n if (isNullOrUndefined(event) || event && event.action !== 'copy') {\n this.enableUndo(self);\n }\n };\n Formatter.prototype.getAncestorNode = function (node) {\n node = node.nodeType === 3 ? node.parentNode : node;\n return node;\n };\n /**\n * onKeyHandler method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Formatter.prototype.onKeyHandler = function (self, e) {\n var _this = this;\n this.editorManager.observer.notify(KEY_UP, {\n event: e, callBack: function () {\n self.notify(contentChanged, {});\n _this.enableUndo(self);\n }\n });\n };\n /**\n * onSuccess method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @param {IMarkdownFormatterCallBack} events - specifies the event call back\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Formatter.prototype.onSuccess = function (self, events) {\n self.notify(contentChanged, {});\n if (events && (isNullOrUndefined(events.event) || events.event.action !== 'copy')) {\n this.enableUndo(self);\n self.notify(execCommandCallBack, events);\n }\n self.trigger(actionComplete, events, function (callbackArgs) {\n self.setPlaceHolder();\n if ((callbackArgs.requestType === 'Images' || callbackArgs.requestType === 'Links' || callbackArgs.requestType === 'Audios' || callbackArgs.requestType === 'Videos') && self.editorMode === 'HTML') {\n var args = callbackArgs;\n if (callbackArgs.requestType === 'Links' && callbackArgs.event &&\n callbackArgs.event.type === 'keydown' &&\n callbackArgs.event.keyCode === 32) {\n return;\n }\n self.notify(insertCompleted, {\n args: args.event, type: callbackArgs.requestType, isNotify: true,\n elements: args.elements\n });\n }\n if (callbackArgs.requestType === 'VideosPlayPause') {\n self.notify('editAreaClick', { args: event });\n }\n self.autoResize();\n });\n };\n /**\n * Save the data for undo and redo action.\n *\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Formatter.prototype.saveData = function (e) {\n this.editorManager.undoRedoManager.saveData(e);\n };\n /**\n * getUndoStatus method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Formatter.prototype.getUndoStatus = function () {\n return this.editorManager.undoRedoManager.getUndoStatus();\n };\n /* eslint-disable */\n /**\n * getUndoRedoStack method\n *\n * @param {IHtmlUndoRedoData} - specifies the redo data.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-enable */\n Formatter.prototype.getUndoRedoStack = function () {\n return this.editorManager.undoRedoManager.undoRedoStack;\n };\n /**\n * enableUndo method\n *\n * @param {IRichTextEditor} self - specifies the self element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Formatter.prototype.enableUndo = function (self) {\n var status = this.getUndoStatus();\n if (self.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n updateUndoRedoStatus(self.quickToolbarModule.inlineQTBar.quickTBarObj, status);\n }\n else {\n if (self.toolbarModule) {\n updateUndoRedoStatus(self.toolbarModule.baseToolbar, status);\n }\n }\n };\n return Formatter;\n}());\n\n/**\n * Constant values for Markdown Parser\n */\n/**\n * List plugin events\n *\n * @hidden\n */\nvar LISTS_COMMAND = 'lists-commands';\n/**\n * selectioncommand plugin events\n *\n * @hidden\n */\nvar selectionCommand = 'command-type';\n/**\n * Link plugin events\n *\n * @hidden\n */\nvar LINK_COMMAND = 'link-commands';\n/**\n * Clear plugin events\n *\n * @hidden\n */\nvar CLEAR_COMMAND = 'clear-commands';\n/**\n * Table plugin events\n *\n * @hidden\n */\nvar MD_TABLE = 'insert-table';\n/**\n * insertText plugin events\n *\n * @hidden\n */\nvar INSERT_TEXT_COMMAND = 'insert-text';\n\n/**\n * Lists internal component\n *\n * @hidden\n */\nvar MDLists = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Lists plugin\n *\n * @param {IMDFormats} options - specifies the options\n * @hidden\n */\n function MDLists(options) {\n extend(this, this, options, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDLists.prototype.addEventListener = function () {\n this.parent.observer.on(LISTS_COMMAND, this.applyListsHandler, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.keyDownHandler, this);\n this.parent.observer.on(KEY_UP_HANDLER, this.keyUpHandler, this);\n };\n MDLists.prototype.keyDownHandler = function (event) {\n switch (event.event.which) {\n case 9:\n this.tabKey(event);\n break;\n }\n switch (event.event.action) {\n case 'ordered-list':\n this.applyListsHandler({ subCommand: 'OL', callBack: event.callBack });\n event.event.preventDefault();\n break;\n case 'unordered-list':\n this.applyListsHandler({ subCommand: 'UL', callBack: event.callBack });\n event.event.preventDefault();\n break;\n }\n };\n MDLists.prototype.keyUpHandler = function (event) {\n switch (event.event.which) {\n case 13:\n this.enterKey(event);\n break;\n }\n };\n MDLists.prototype.tabKey = function (event) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var parents = this.selection.getSelectedParentPoints(textArea);\n var addedLength = 0;\n var isNotFirst = this.isNotFirstLine(textArea, parents[0]);\n if (!isNotFirst && !event.event.shiftKey) {\n this.restore(textArea, start, end + addedLength, event);\n return;\n }\n var listFormat = this.olListType();\n var regex = this.getListRegex();\n this.currentAction = this.getAction(parents[0].text);\n for (var i = 0; i < parents.length; i++) {\n // eslint-disable-next-line max-len\n var prevIndex = event.event.shiftKey ? parents[i].line - 1 : parents[i].line - 1;\n var prevLine = this.selection.getLine(textArea, prevIndex);\n if (prevLine && (!event.event.shiftKey && isNotFirst || (event.event.shiftKey))) {\n var prevLineSplit = prevLine.split('. ');\n var tabSpace = '\\t';\n var tabSpaceLength = event.event.shiftKey ? -tabSpace.length : tabSpace.length;\n var splitTab = parents[i].text.split('\\t');\n if (event.event.shiftKey && splitTab.length === 1) {\n break;\n }\n if (this.currentAction === 'OL' && /^\\d+$/.test(prevLineSplit[0].trim()) && listFormat) {\n event.event.preventDefault();\n parents[i].text = event.event.shiftKey ? splitTab.splice(1, splitTab.length).join('\\t') : tabSpace + parents[i].text;\n var curTabSpace = this.getTabSpace(parents[i].text);\n var prevTabSpace = this.getTabSpace(prevLine);\n var splitText = parents[i].text.split('. ');\n if (curTabSpace === prevTabSpace) {\n this.changeTextAreaValue(splitText, this.nextOrderedListValue(prevLineSplit[0].trim()), event, textArea, parents, i, end);\n }\n else if (prevTabSpace < curTabSpace) {\n this.changeTextAreaValue(splitText, '1. ', event, textArea, parents, i, end);\n }\n else {\n for (; prevTabSpace.length > curTabSpace.length; null) {\n prevIndex = prevIndex - 1;\n prevLine = this.selection.getLine(textArea, prevIndex);\n var prevLineSplit_1 = prevLine.trim().split('. ');\n if (/^\\d+$/.test(prevLineSplit_1[0])) {\n prevTabSpace = this.getTabSpace(prevLine);\n if (prevTabSpace.length <= curTabSpace.length) {\n this.changeTextAreaValue(splitText, this.nextOrderedListValue(prevLineSplit_1[0]), event, textArea, parents, i, end);\n break;\n }\n }\n }\n }\n }\n else if (this.currentAction === 'UL' && regex.test(prevLine.trim()) || !listFormat) {\n event.event.preventDefault();\n parents[i].text = event.event.shiftKey ? splitTab.splice(1, splitTab.length).join('\\t') : tabSpace + parents[i].text;\n textArea.value = textArea.value.substr(0, parents[i].start) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n }\n start = i === 0 ? start + tabSpaceLength : start;\n addedLength += tabSpaceLength;\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n // eslint-disable-next-line max-len\n parents[j].start = j !== 0 ? parents[j].start + tabSpaceLength : parents[j].start;\n parents[j].end = parents[j].end + tabSpaceLength;\n }\n }\n }\n }\n this.restore(textArea, start, end + addedLength, event);\n };\n MDLists.prototype.changeTextAreaValue = function (splitText, prefixValue, event, \n // eslint-disable-next-line\n textArea, parents, k, end) {\n var prefix = prefixValue;\n splitText.splice(0, 1);\n var textAreaLength = this.selection.getAllParents(textArea.value).length;\n var changedList = '';\n var curTabSpace = this.getTabSpace(parents[k].text);\n // eslint-disable-next-line\n var prefixNumber = parseInt(prefix.split('.')[0], null);\n var nestedTabSpace = this.getTabSpace(parents[k].text);\n var nestedlistorder = true;\n var nestedListStart = true;\n var curTabSpaceLength;\n var nextPrefixValue = -1;\n var traversIncreased = true;\n var nextLineLength = 0;\n var lineBreak = '';\n changedList = (this.selection.getLine(textArea, parents[0].line + 1) !== '') ?\n '' : changedList + textArea.value.substr(parents[0].end, textArea.value.length);\n for (var i = 1; i < textAreaLength &&\n !isNullOrUndefined(this.selection.getLine(textArea, parents[0].line + i))\n && this.selection.getLine(textArea, parents[0].line + i) !== ''; i++) {\n var nextLine = this.selection.getLine(textArea, parents[0].line + i);\n var nextTabSpace = this.getTabSpace(nextLine);\n var nextLineSplit = nextLine.split('. ');\n if (nextLineSplit.length === 1) {\n changedList += textArea.value.substr(parents[0].end + nextLineLength, textArea.value.length);\n break;\n }\n else {\n nextLineLength += nextLine.length;\n var shiftTabTargetList = false;\n curTabSpaceLength = event.event.shiftKey ? curTabSpace.length + 1 : curTabSpace.length - 1;\n if (nextTabSpace.length > nestedTabSpace.length) {\n traversIncreased = false;\n }\n if (curTabSpace.length !== nextTabSpace.length && nextTabSpace.length < nestedTabSpace.length) {\n nestedListStart = true;\n nestedlistorder = false;\n shiftTabTargetList = event.event.shiftKey &&\n curTabSpace.length === nextTabSpace.length ? (nestedListStart = false, true) : false;\n }\n else if (traversIncreased && event.event.shiftKey &&\n curTabSpace.length === nextTabSpace.length && nextTabSpace.length === nestedTabSpace.length) {\n nestedListStart = false;\n shiftTabTargetList = true;\n }\n lineBreak = changedList === '' ? '' : '\\n';\n if (curTabSpaceLength === nextTabSpace.length && nestedListStart) {\n var nextPrefix = event.event.shiftKey ?\n (nextPrefixValue++, this.nextOrderedListValue(nextPrefixValue.toString()))\n : this.previousOrderedListValue(nextLineSplit[0]);\n nextLineSplit.splice(0, 1);\n changedList = changedList + lineBreak + nextTabSpace + nextPrefix + nextLineSplit.join('. ');\n }\n else if (curTabSpace.length === nextTabSpace.length && nestedlistorder || shiftTabTargetList) {\n var nextPrefix = this.nextOrderedListValue(prefixNumber.toString());\n prefixNumber++;\n nextLineSplit.splice(0, 1);\n changedList = changedList + lineBreak + nextTabSpace + nextPrefix + nextLineSplit.join('. ');\n }\n else {\n changedList = changedList + lineBreak + nextLine;\n nestedListStart = false;\n }\n nestedTabSpace = this.getTabSpace(nextLine);\n }\n }\n parents[k].text = this.getTabSpace(parents[k].text) + prefix + splitText.join('. ') + '\\n';\n textArea.value = textArea.value.substr(0, parents[k].start) + parents[k].text + changedList;\n };\n MDLists.prototype.getTabSpace = function (line) {\n var split = line.split('\\t');\n var tabs = '';\n for (var i = 0; i < split.length; i++) {\n if (split[i] === '') {\n tabs += '\\t';\n }\n else {\n break;\n }\n }\n return tabs;\n };\n MDLists.prototype.isNotFirstLine = function (textArea, points) {\n var currentLine = points.text;\n var prevIndex = points.line - 1;\n var prevLine = this.selection.getLine(textArea, prevIndex);\n var regex = this.getListRegex();\n var isNotFirst = false;\n var regexFirstCondition;\n if (prevLine) {\n this.currentAction = this.getAction(prevLine);\n var prevLineSplit = prevLine.split('. ');\n regexFirstCondition = this.currentAction === 'OL' ? /^\\d+$/.test(prevLineSplit[0].trim()) : regex.test(prevLine.trim());\n }\n if (prevLine && regexFirstCondition) {\n var curTabSpace = this.getTabSpace(currentLine);\n var prevTabSpace = this.getTabSpace(prevLine);\n isNotFirst = curTabSpace === prevTabSpace ? true : isNotFirst;\n for (; prevTabSpace.length > curTabSpace.length; null) {\n prevIndex = prevIndex - 1;\n prevLine = this.selection.getLine(textArea, prevIndex);\n var prevLineSplit = prevLine.trim().split('. ');\n var regexSecondCondition = this.currentAction === 'OL' ?\n /^\\d+$/.test(prevLineSplit[0]) : regex.test(prevLine.trim());\n if (regexSecondCondition) {\n prevTabSpace = this.getTabSpace(prevLine);\n if (prevTabSpace.length <= curTabSpace.length) {\n isNotFirst = true;\n break;\n }\n }\n }\n }\n return isNotFirst;\n };\n MDLists.prototype.getAction = function (line) {\n var ol = line.split('. ')[0];\n // eslint-disable-next-line\n var currentState = /^\\d+$/.test(ol.trim());\n // eslint-disable-next-line\n var ul = line.trim().split(new RegExp('^(' + this.selection.replaceSpecialChar(this.syntax.UL).trim() + ')'))[1];\n return (currentState ? 'OL' : ul ? 'UL' : 'NOTLIST');\n };\n MDLists.prototype.nextOrderedListValue = function (previousLine) {\n // eslint-disable-next-line\n var currentValue = parseInt(previousLine, null);\n var nextValue = currentValue + 1;\n return nextValue.toString() + '. ';\n };\n MDLists.prototype.previousOrderedListValue = function (previousLine) {\n // eslint-disable-next-line\n var currentValue = parseInt(previousLine, null);\n var nextValue = currentValue - 1;\n return nextValue.toString() + '. ';\n };\n MDLists.prototype.enterKey = function (event) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var parents = this.selection.getSelectedParentPoints(textArea);\n var prevLine = this.selection.getLine(textArea, parents[0].line - 1);\n var listFormat = this.olListType();\n var regex = this.getListRegex();\n var prevLineSplit = [];\n if (!isNullOrUndefined(prevLine)) {\n prevLineSplit = prevLine.split('. ');\n this.currentAction = this.getAction(prevLine);\n }\n var addedLength = 0;\n if (this.currentAction === 'OL' && prevLineSplit.length > 1 && /^\\d+$/.test(prevLineSplit[0].trim()) && listFormat\n && prevLineSplit[1] !== '') {\n var tabSpace = this.getTabSpace(prevLine);\n this.currentAction = this.getAction(prevLine);\n var prefix = this.nextOrderedListValue(prevLineSplit[0]);\n parents[0].text = tabSpace + prefix + parents[0].text;\n var textAreaLength = this.selection.getAllParents(textArea.value).length;\n var changedList = '\\n';\n var curTabSpace = this.getTabSpace(prevLine);\n var nestedTabSpace = this.getTabSpace(parents[0].text);\n var nestedListOrder = true;\n for (var i = 1; i < textAreaLength &&\n textArea.value.substr(parents[0].end, textArea.value.length) !== ''; i++) {\n var nextLine = this.selection.getLine(textArea, parents[0].line + i);\n if (isNullOrUndefined(nextLine)) {\n changedList = changedList + '';\n }\n else {\n var nextLineSplit = nextLine.split('. ');\n var nextTabSpace = this.getTabSpace(nextLine);\n if (nextTabSpace.length < nestedTabSpace.length) {\n nestedListOrder = false;\n }\n if (nextLineSplit.length > 1 && /^\\d+$/.test(nextLineSplit[0].trim()) &&\n curTabSpace.length === nextTabSpace.length && nestedListOrder) {\n var nextPrefix = this.nextOrderedListValue(nextLineSplit[0]);\n nextLineSplit.splice(0, 1);\n changedList = changedList + nextTabSpace + nextPrefix + nextLineSplit.join('. ') + '\\n';\n }\n else {\n changedList = changedList + nextLine + '\\n';\n nestedTabSpace = this.getTabSpace(nextLine);\n }\n }\n }\n textArea.value = textArea.value.substr(0, parents[0].start) + curTabSpace +\n prefix + this.selection.getLine(textArea, parents[0].line) + changedList;\n start = start + prefix.length + tabSpace.length;\n addedLength += prefix.length + tabSpace.length;\n }\n else if (this.currentAction === 'UL' && (prevLine && regex.test(prevLine.trim())) &&\n prevLine.trim().replace(regex, '') !== '' || this.currentAction === 'OL' && !listFormat) {\n var tabSpace = this.getTabSpace(prevLine);\n var prefix = this.syntax[this.currentAction];\n parents[0].text = tabSpace + prefix + parents[0].text +\n (parents[0].text.trim().length > 0 ? '\\n' : '');\n textArea.value = textArea.value.substr(0, parents[0].start) + parents[0].text +\n textArea.value.substr(parents[0].end, textArea.value.length);\n start = start + prefix.length + tabSpace.length;\n addedLength += prefix.length + tabSpace.length;\n }\n this.restore(textArea, start, end + addedLength, event);\n };\n MDLists.prototype.olListType = function () {\n var olSyntaxList = this.syntax.OL.split('.,');\n var listType = olSyntaxList.length === 1 ? null :\n // eslint-disable-next-line\n parseInt(olSyntaxList[2].trim(), null) - parseInt(olSyntaxList[0].trim(), null);\n if (listType) {\n return 1;\n }\n else {\n return 0;\n }\n };\n MDLists.prototype.applyListsHandler = function (e) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n this.currentAction = e.subCommand;\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var addedLength = 0;\n var startLength = 0;\n var endLength = 0;\n var parents = this.selection.getSelectedParentPoints(textArea);\n var prefix = '';\n var listFormat = this.olListType();\n var regex;\n var perfixObj = {};\n for (var i = 0; i < parents.length; i++) {\n if (listFormat) {\n regex = this.currentAction === 'OL' ? i + listFormat + '. ' : this.syntax[this.currentAction];\n }\n else {\n regex = this.currentAction === 'OL' ? this.syntax.OL : this.syntax[this.currentAction];\n }\n if (!this.selection.isStartWith(parents[i].text, regex)) {\n if (parents[i].text === '' && i === 0) {\n this.selection.save(start, end);\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? 1 + parents[j].start : parents[j].start;\n parents[j].end = 1 + parents[j].end;\n }\n }\n }\n var preLineTabSpaceLength = !isNullOrUndefined(parents[i - 1]) ?\n this.getTabSpace(parents[i - 1].text).length : 0;\n var replace = this.appliedLine(parents[i].text, regex, perfixObj, preLineTabSpaceLength);\n prefix = replace.line ? prefix : regex;\n parents[i].text = replace.line ? replace.line : prefix + parents[i].text;\n replace.space = replace.space ? replace.space : 0;\n textArea.value = textArea.value.substr(0, parents[i].start + endLength) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? (start + prefix.length + replace.space) > 0 ?\n start + prefix.length + replace.space : 0 : start;\n addedLength += prefix.length + replace.space;\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? prefix.length +\n parents[j].start + replace.space : parents[j].start;\n parents[j].end = prefix.length + parents[j].end + replace.space;\n }\n }\n this.restore(textArea, start, end + addedLength, null);\n }\n else {\n parents[i].text = parents[i].text.replace(regex, '');\n textArea.value = textArea.value.substr(0, parents[i].start + endLength) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end + endLength, textArea.value.length);\n endLength -= regex.length;\n startLength = regex.length;\n this.restore(textArea, start - startLength, end + endLength, null);\n }\n }\n this.restore(textArea, null, null, e);\n };\n MDLists.prototype.appliedLine = function (line, prefixPattern, perfixObj, preTabSpaceLength) {\n var points = {};\n // eslint-disable-next-line\n var regex = new RegExp('^[' + this.syntax.UL.trim() + ']');\n var lineSplit = line.split('. ');\n var currentPrefix = lineSplit[0] + '. ';\n var isExist = regex.test(line.trim()) || line.trim() === this.syntax.OL.trim()\n || line.trim() === this.syntax.UL.trim() || /^\\d+$/.test(lineSplit[0].trim());\n var listFormat = this.olListType();\n var curTabSpaceLength = this.getTabSpace(line).length;\n if (this.currentAction === 'OL' && listFormat) {\n perfixObj[curTabSpaceLength.toString()] = !isNullOrUndefined(perfixObj[curTabSpaceLength.toString()]) ?\n perfixObj[curTabSpaceLength.toString()].valueOf() + 1 : 1;\n prefixPattern = perfixObj[curTabSpaceLength.toString()].valueOf().toString() + '. ';\n if (!isNullOrUndefined(preTabSpaceLength) && preTabSpaceLength > curTabSpaceLength) {\n perfixObj[preTabSpaceLength.toString()] = 0;\n }\n }\n if (isExist) {\n var replace = void 0;\n var pattern = void 0;\n // eslint-disable-next-line\n if (regex.test(line.trim())) {\n pattern = this.syntax.UL;\n replace = prefixPattern;\n points.space = prefixPattern.trim().length - this.syntax.UL.trim().length;\n }\n else if (/^\\d+$/.test(lineSplit[0].trim()) && listFormat) {\n pattern = lineSplit[0].trim() + '. ';\n replace = prefixPattern;\n points.space = this.syntax.UL.trim().length - currentPrefix.trim().length;\n }\n else if (/^\\d+$/.test(lineSplit[0].trim())) {\n pattern = lineSplit[0].trim() + '. ';\n replace = this.syntax.UL;\n points.space = this.syntax.UL.trim().length - currentPrefix.trim().length;\n }\n points.line = line.replace(pattern, replace);\n }\n return points;\n };\n MDLists.prototype.restore = function (textArea, start, end, event) {\n if (!isNullOrUndefined(start) && !isNullOrUndefined(start)) {\n this.selection.save(start, end);\n }\n if (!isNullOrUndefined(event)) {\n this.selection.restore(textArea);\n }\n if (event && event.callBack) {\n event.callBack({\n requestType: this.currentAction,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n MDLists.prototype.getListRegex = function () {\n var regex = '';\n var configKey = Object.keys(this.syntax);\n for (var j = 0; j < configKey.length; j++) {\n var syntax = this.selection.replaceSpecialChar(this.syntax[configKey[j]]);\n regex += regex === '' ? '^(' + syntax + ')|^(' + syntax.trim() + ')' :\n '|^(' + syntax + ')|^(' + syntax.trim() + ')';\n }\n // eslint-disable-next-line\n return new RegExp(regex);\n };\n return MDLists;\n}());\n\n/**\n * MDFormats internal plugin\n *\n * @hidden\n * @deprecated\n */\nvar MDFormats = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {IMDFormats} options - specifies the formats\n * @hidden\n * @deprecated\n */\n function MDFormats(options) {\n extend(this, this, options, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDFormats.prototype.addEventListener = function () {\n this.parent.observer.on(FORMAT_TYPE, this.applyFormats, this);\n };\n MDFormats.prototype.applyFormats = function (e) {\n e.subCommand = e.subCommand.toLowerCase();\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var parents = this.selection.getSelectedParentPoints(textArea);\n if (this.isAppliedFormat(parents) === e.subCommand) {\n if (e.subCommand === 'pre') {\n if (parents.length > 1) {\n this.applyCodeBlock(textArea, e, parents);\n }\n else {\n return;\n }\n }\n this.cleanFormat(textArea);\n this.restore(textArea, textArea.selectionStart, textArea.selectionEnd, e);\n return;\n }\n if (e.subCommand === 'p') {\n this.cleanFormat(textArea);\n this.restore(textArea, textArea.selectionStart, textArea.selectionEnd, e);\n return;\n }\n else {\n if ((e.subCommand === 'pre' && parents.length !== 1) || e.subCommand !== 'pre') {\n this.cleanFormat(textArea, e.subCommand);\n }\n }\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var addedLength = 0;\n parents = this.selection.getSelectedParentPoints(textArea);\n if (e.subCommand === 'pre') {\n if (parents.length > 1) {\n this.applyCodeBlock(textArea, e, parents);\n }\n else {\n extend(e, e, { subCommand: 'InlineCode' }, true);\n this.parent.observer.notify(selectionCommand, e);\n }\n return;\n }\n for (var i = 0; i < parents.length; i++) {\n if (parents[i].text !== '' && !this.selection.isStartWith(parents[i].text, '\\\\' + this.syntax[e.subCommand])) {\n parents[i].text = this.syntax[e.subCommand] + parents[i].text;\n textArea.value = textArea.value.substr(0, parents[i].start) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? start + this.syntax[e.subCommand].length : start;\n addedLength += this.syntax[e.subCommand].length;\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ?\n this.syntax[e.subCommand].length + parents[j].start : parents[j].start;\n parents[j].end = this.syntax[e.subCommand].length + parents[j].end;\n }\n }\n }\n else if (parents[i].text === '' && i === 0) {\n this.selection.save(start, end);\n if (this.selection.getSelectedText(textArea).length === 0) {\n parents[i].text = this.syntax[e.subCommand];\n textArea.value = textArea.value.substr(0, parents[i].start) + this.syntax[e.subCommand] +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? start + this.syntax[e.subCommand].length : start;\n addedLength += this.syntax[e.subCommand].length;\n }\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? 1 + parents[j].start : parents[j].start;\n parents[j].end = 1 + parents[j].end;\n }\n }\n }\n }\n this.restore(textArea, start, end + addedLength, e);\n };\n MDFormats.prototype.clearRegex = function () {\n var regex = '';\n var configKey = Object.keys(this.syntax);\n for (var j = 0; j < configKey.length && configKey[j] !== 'pre' && configKey[j] !== 'p'; j++) {\n regex += regex === '' ? '^(' + this.selection.replaceSpecialChar(this.syntax[configKey[j]].trim()) + ')' :\n '|^(' + this.selection.replaceSpecialChar(this.syntax[configKey[j]].trim()) + ')';\n }\n return regex;\n };\n MDFormats.prototype.cleanFormat = function (textArea, command) {\n var parents = this.selection.getSelectedParentPoints(textArea);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var removeLength = 0;\n if (this.selection.isClear(parents, this.clearRegex())) {\n for (var i = 0; i < parents.length; i++) {\n var configKey = Object.keys(this.syntax);\n for (var j = 0; parents[i].text !== '' && j < configKey.length; j++) {\n var removeText = this.syntax[configKey[j]];\n if (configKey[j] === command) {\n continue;\n }\n // eslint-disable-next-line\n var regex = new RegExp('^(' + this.selection.replaceSpecialChar(removeText) + ')', 'gim');\n if (regex.test(parents[i].text)) {\n parents[i].text = parents[i].text.replace(regex, '');\n textArea.value = textArea.value.substr(0, parents[i].start) + parents[i].text + '\\n' +\n textArea.value.substr(parents[i].end, textArea.value.length);\n start = i === 0 ? (start - (removeText.length)) > 0 ? start - (removeText.length) : 0 : start;\n removeLength += removeText.length;\n if (parents.length !== 1) {\n for (var k = 0; k < parents.length; k++) {\n parents[k].start = k !== 0 ?\n parents[k].start - removeText.length : parents[k].start;\n parents[k].end = parents[k].end - removeText.length;\n }\n }\n break;\n }\n }\n if (parents[i].text === '' && i === 0) {\n this.selection.save(start, end);\n if (parents.length !== 1) {\n for (var j = i; j < parents.length; j++) {\n parents[j].start = j !== 0 ? 1 + parents[j].start : parents[j].start;\n parents[j].end = 1 + parents[j].end;\n }\n }\n }\n }\n this.restore(textArea, start, end - removeLength);\n }\n };\n MDFormats.prototype.applyCodeBlock = function (textArea, event, parents) {\n var command = event.subCommand;\n var start = parents[0].start;\n var end = parents[parents.length - 1].end;\n var parentLines = this.selection.getAllParents(textArea.value);\n var firstPrevText = parentLines[parents[0].line - 1];\n var lastNextText = parentLines[(parents.length + 1) + 1];\n // eslint-disable-next-line\n if (!this.selection.isStartWith(firstPrevText, this.syntax.pre.split('\\n')[0]) &&\n !this.selection.isStartWith(lastNextText, this.syntax.pre.split('\\n')[0])) {\n var lines = textArea.value.substring(start, end).split('\\n');\n var lastLine = lines[lines.length - 1] === '' ? '' : '\\n';\n textArea.value = textArea.value.substr(0, start) + this.syntax[\"\" + command] + textArea.value.substring(start, end) +\n lastLine + this.syntax[\"\" + command] +\n textArea.value.substr(end, textArea.value.length);\n start = this.selection.selectionStart + this.syntax[\"\" + command].length;\n end = this.selection.selectionEnd + this.syntax[\"\" + command].length - 1;\n }\n else {\n var cmd = this.syntax[\"\" + command];\n var selection = this.parent.markdownSelection.getSelectedInlinePoints(textArea);\n var startNo = textArea.value.substr(0, textArea.selectionStart).lastIndexOf(cmd);\n var endNo = textArea.value.substr(textArea.selectionEnd, textArea.selectionEnd).indexOf(cmd);\n endNo = endNo + selection.end;\n var repStartText = this.replaceAt(textArea.value.substr(0, selection.start), cmd, '', startNo, selection.start);\n var repEndText = this.replaceAt(textArea.value.substr(selection.end, textArea.value.length), cmd, '', 0, endNo);\n textArea.value = repStartText + selection.text + repEndText;\n start = this.selection.selectionStart - cmd.length;\n end = this.selection.selectionEnd - cmd.length;\n }\n this.restore(textArea, start, end, event);\n };\n MDFormats.prototype.replaceAt = function (input, search, replace, start, end) {\n return input.slice(0, start)\n + input.slice(start, end).replace(search, replace)\n + input.slice(end);\n };\n MDFormats.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n MDFormats.prototype.isAppliedFormat = function (lines, documentNode) {\n var format = 'p';\n // eslint-disable-next-line\n var configKey = Object.keys(this.syntax);\n var keys = Object.keys(this.syntax);\n var direction = this.parent.element.selectionDirection;\n var checkLine = direction === 'backward' ? lines[0].text : lines[lines.length - 1].text;\n for (var i = 0; !documentNode && i < keys.length; i++) {\n if (keys[i] !== 'pre' && this.selection.isStartWith(checkLine, this.syntax[keys[i]])) {\n format = keys[i];\n break;\n }\n else if (keys[i] === 'pre') {\n var parentLines = this.selection.getAllParents(this.parent.element.value);\n var firstPrevText = parentLines[lines[0].line - 1];\n var lastNextText = parentLines[lines.length + 1];\n if (this.selection.isStartWith(firstPrevText, this.syntax[keys[i]].split('\\n')[0]) &&\n this.selection.isStartWith(lastNextText, this.syntax[keys[i]].split('\\n')[0])) {\n format = keys[i];\n break;\n }\n }\n }\n return format;\n };\n return MDFormats;\n}());\n\n/**\n * SelectionCommands internal component\n *\n * @hidden\n * @deprecated\n */\nvar MDSelectionFormats = /** @__PURE__ @class */ (function () {\n function MDSelectionFormats(parent) {\n extend(this, this, parent, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDSelectionFormats.prototype.addEventListener = function () {\n this.parent.observer.on(selectionCommand, this.applyCommands, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.keyDownHandler, this);\n };\n MDSelectionFormats.prototype.keyDownHandler = function (e) {\n switch (e.event.action) {\n case 'bold':\n this.applyCommands({ subCommand: 'Bold', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'italic':\n this.applyCommands({ subCommand: 'Italic', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'strikethrough':\n this.applyCommands({ subCommand: 'StrikeThrough', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'uppercase':\n this.applyCommands({ subCommand: 'UpperCase', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'lowercase':\n this.applyCommands({ subCommand: 'LowerCase', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'superscript':\n this.applyCommands({ subCommand: 'SuperScript', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'subscript':\n this.applyCommands({ subCommand: 'SubScript', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n MDSelectionFormats.prototype.isBold = function (text, cmd) {\n return text.search('\\\\' + cmd + '\\\\' + cmd + '') !== -1;\n };\n MDSelectionFormats.prototype.isItalic = function (text, cmd) {\n return text.search('\\\\' + cmd) !== -1;\n };\n MDSelectionFormats.prototype.isMatch = function (text, cmd) {\n var matchText = [''];\n switch (cmd) {\n case this.syntax.Italic:\n matchText = text.match(this.singleCharRegx(cmd));\n break;\n case this.syntax.InlineCode:\n matchText = text.match(this.singleCharRegx(cmd));\n break;\n case this.syntax.StrikeThrough:\n matchText = text.match(this.singleCharRegx(cmd));\n break;\n }\n return matchText;\n };\n MDSelectionFormats.prototype.multiCharRegx = function (cmd) {\n // eslint-disable-next-line\n return new RegExp('(\\\\' + cmd + '\\\\' + cmd + ')', 'g');\n };\n MDSelectionFormats.prototype.singleCharRegx = function (cmd) {\n // eslint-disable-next-line\n return new RegExp('(\\\\' + cmd + ')', 'g');\n };\n MDSelectionFormats.prototype.isAppliedCommand = function (cmd) {\n // eslint-disable-next-line\n var isFormat = false;\n var textArea = this.parent.element;\n var start = textArea.selectionStart;\n var splitAt = function (index) { return function (x) { return [x.slice(0, index), x.slice(index)]; }; };\n var splitText = splitAt(start)(textArea.value);\n var cmdB = this.syntax.Bold.substr(0, 1);\n var cmdI = this.syntax.Italic;\n var selectedText = this.parent.markdownSelection.getSelectedText(textArea);\n if (selectedText !== '' && selectedText === selectedText.toLocaleUpperCase() && cmd === 'UpperCase') {\n return true;\n }\n else if (selectedText === '') {\n var beforeText = textArea.value.substr(splitText[0].length - 1, 1);\n var afterText = splitText[1].substr(0, 1);\n if ((beforeText !== '' && afterText !== '' && beforeText.match(/[a-z]/i)) &&\n beforeText === beforeText.toLocaleUpperCase() && afterText === afterText.toLocaleUpperCase() && cmd === 'UpperCase') {\n return true;\n }\n }\n if (!(this.isBold(splitText[0], cmdB)) && !(this.isItalic(splitText[0], cmdI)) && !(this.isBold(splitText[1], cmdB)) &&\n !(this.isItalic(splitText[1], cmdI))) {\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.StrikeThrough)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.StrikeThrough))) &&\n (this.isMatch(splitText[0], this.syntax.StrikeThrough).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.StrikeThrough).length % 2 === 1) && cmd === 'StrikeThrough') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.InlineCode)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.InlineCode))) &&\n (this.isMatch(splitText[0], this.syntax.InlineCode).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.InlineCode).length % 2 === 1) && cmd === 'InlineCode') {\n isFormat = true;\n }\n /* eslint-disable */\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sub>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 &&\n splitText[1].match(/\\<\\/sub>/g).length % 2 === 1) && cmd === 'SubScript') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sup>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 && splitText[1].match(/\\<\\/sup>/g).length % 2 === 1) &&\n cmd === 'SuperScript') {\n isFormat = true;\n }\n /* eslint-enable */\n }\n if ((this.isBold(splitText[0], cmdB) && this.isBold(splitText[1], cmdB)) &&\n (splitText[0].match(this.multiCharRegx(cmdB)).length % 2 === 1 &&\n splitText[1].match(this.multiCharRegx(cmdB)).length % 2 === 1) && cmd === 'Bold') {\n isFormat = true;\n }\n splitText[0] = this.isBold(splitText[0], cmdB) ? splitText[0].replace(this.multiCharRegx(cmdB), '$%@') : splitText[0];\n splitText[1] = this.isBold(splitText[1], cmdB) ? splitText[1].replace(this.multiCharRegx(cmdB), '$%@') : splitText[1];\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.Italic)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.Italic))) &&\n (this.isMatch(splitText[0], this.syntax.Italic).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.Italic).length % 2 === 1) && cmd === 'Italic') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.StrikeThrough)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.StrikeThrough))) &&\n (this.isMatch(splitText[0], this.syntax.StrikeThrough).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.StrikeThrough).length % 2 === 1) && cmd === 'StrikeThrough') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(this.isMatch(splitText[0], this.syntax.InlineCode)) &&\n !isNullOrUndefined(this.isMatch(splitText[1], this.syntax.InlineCode))) &&\n (this.isMatch(splitText[0], this.syntax.InlineCode).length % 2 === 1 &&\n this.isMatch(splitText[1], this.syntax.InlineCode).length % 2 === 1) && cmd === 'InlineCode') {\n isFormat = true;\n }\n /* eslint-disable */\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sub>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 && splitText[1].match(/\\<\\/sub>/g).length % 2 === 1) && cmd === 'SubScript') {\n isFormat = true;\n }\n if ((!isNullOrUndefined(splitText[0].match(/\\/g)) && !isNullOrUndefined(splitText[1].match(/\\<\\/sup>/g))) &&\n (splitText[0].match(/\\/g).length % 2 === 1 && splitText[1].match(/\\<\\/sup>/g).length % 2 === 1) && cmd === 'SuperScript') {\n isFormat = true;\n /* eslint-enable */\n }\n return isFormat;\n };\n MDSelectionFormats.prototype.applyCommands = function (e) {\n this.currentAction = e.subCommand;\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var addedLength = 0;\n var selection = this.parent.markdownSelection.getSelectedInlinePoints(textArea);\n if (this.isAppliedCommand(e.subCommand) && selection.text !== '') {\n var startCmd = this.syntax[e.subCommand];\n var endCmd = e.subCommand === 'SubScript' ? '' :\n e.subCommand === 'SuperScript' ? '' : this.syntax[e.subCommand];\n var startLength = (e.subCommand === 'UpperCase' || e.subCommand === 'LowerCase') ? 0 : startCmd.length;\n var startNo = textArea.value.substr(0, selection.start).lastIndexOf(startCmd);\n var endNo = textArea.value.substr(selection.end, textArea.value.length).indexOf(endCmd);\n endNo = endNo + selection.end;\n var repStartText = this.replaceAt(textArea.value.substr(0, selection.start), startCmd, '', startNo, selection.start);\n var repEndText = this.replaceAt(textArea.value.substr(selection.end, textArea.value.length), endCmd, '', 0, endNo);\n textArea.value = repStartText + selection.text + repEndText;\n this.restore(textArea, start - startLength, end - startLength, e);\n return;\n }\n if (selection.text !== '' && !this.isApplied(selection, e.subCommand)) {\n addedLength = (e.subCommand === 'UpperCase' || e.subCommand === 'LowerCase') ? 0 :\n this.syntax[e.subCommand].length;\n var repStart = textArea.value.substr(selection.start - this.syntax[e.subCommand].length, this.syntax[e.subCommand].length);\n var repEnd = void 0;\n if ((repStart === e.subCommand) || ((selection.start - this.syntax[e.subCommand].length ===\n textArea.value.indexOf(this.syntax[e.subCommand])) && (selection.end === textArea.value.lastIndexOf(this.syntax[e.subCommand]) || selection.end === textArea.value.lastIndexOf('/g, '').replace(/<\\/sub>/g, '');\n break;\n case 'SuperScript':\n text = text.replace(//g, '').replace(/<\\/sup>/g, '');\n break;\n }\n return text;\n };\n MDSelectionFormats.prototype.isApplied = function (line, command) {\n var regx = this.singleCharRegx(this.syntax[\"\" + command]);\n switch (command) {\n case 'SubScript':\n case 'SuperScript':\n regx = this.singleCharRegx(this.syntax[\"\" + command]);\n return regx.test(line.text);\n case 'Bold':\n case 'StrikeThrough':\n regx = this.multiCharRegx(this.syntax[\"\" + command].substr(0, 1));\n return regx.test(line.text);\n case 'UpperCase':\n case 'LowerCase':\n // eslint-disable-next-line\n regx = new RegExp('^[' + this.syntax[\"\" + command] + ']*$', 'g');\n return regx.test(line.text);\n case 'Italic': {\n var regTest = void 0;\n var regxB = this.multiCharRegx(this.syntax[\"\" + command].substr(0, 1));\n if (regxB.test(line.text)) {\n var repText = line.text;\n repText = repText.replace(regxB, '$%#');\n regTest = regx.test(repText);\n }\n else {\n regTest = regx.test(line.text);\n }\n return regTest;\n }\n case 'InlineCode':\n return regx.test(line.text);\n }\n };\n return MDSelectionFormats;\n}());\n\n/**\n * Default Markdown formats config for adapter\n */\nvar markdownFormatTags = {\n 'h6': '###### ',\n 'h5': '##### ',\n 'h4': '#### ',\n 'h3': '### ',\n 'h2': '## ',\n 'h1': '# ',\n 'blockquote': '> ',\n 'pre': '```\\n',\n 'p': ''\n};\n/**\n * Default selection formats config for adapter\n */\nvar markdownSelectionTags = {\n 'Bold': '**',\n 'Italic': '*',\n 'StrikeThrough': '~~',\n 'InlineCode': '`',\n 'SubScript': '',\n 'SuperScript': '',\n 'UpperCase': 'A-Z',\n 'LowerCase': 'a-z'\n};\n/**\n * Default Markdown lists config for adapter\n */\nvar markdownListsTags = {\n 'OL': '1. ',\n 'UL': '- '\n};\n/**\n * Default html key config for adapter\n */\nvar htmlKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-audio': 'ctrl+shift+a',\n 'insert-video': 'ctrl+shift+v',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'underline': 'ctrl+u',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'indents': 'ctrl+]',\n 'outdents': 'ctrl+[',\n 'html-source': 'ctrl+shift+h',\n 'full-screen': 'ctrl+shift+f',\n 'decrease-fontsize': 'ctrl+shift+<',\n 'increase-fontsize': 'ctrl+shift+>',\n 'justify-center': 'ctrl+e',\n 'justify-full': 'ctrl+j',\n 'justify-left': 'ctrl+l',\n 'justify-right': 'ctrl+r',\n 'clear-format': 'ctrl+shift+r',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o',\n 'space': '32',\n 'enter': '13',\n 'tab': 'tab',\n 'delete': '46'\n};\n/**\n * Default markdown key config for adapter\n */\nvar markdownKeyConfig = {\n 'toolbar-focus': 'alt+f10',\n 'escape': '27',\n 'insert-link': 'ctrl+k',\n 'insert-image': 'ctrl+shift+i',\n 'insert-table': 'ctrl+shift+e',\n 'undo': 'ctrl+z',\n 'redo': 'ctrl+y',\n 'copy': 'ctrl+c',\n 'cut': 'ctrl+x',\n 'paste': 'ctrl+v',\n 'bold': 'ctrl+b',\n 'italic': 'ctrl+i',\n 'strikethrough': 'ctrl+shift+s',\n 'uppercase': 'ctrl+shift+u',\n 'lowercase': 'ctrl+shift+l',\n 'superscript': 'ctrl+shift+=',\n 'subscript': 'ctrl+=',\n 'full-screen': 'ctrl+shift+f',\n 'ordered-list': 'ctrl+shift+o',\n 'unordered-list': 'ctrl+alt+o'\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nvar pasteCleanupGroupingTags = {\n 'b': ['strong'],\n 'strong': ['b'],\n 'i': ['emp', 'cite'],\n 'emp': ['i', 'cite'],\n 'cite': ['i', 'emp']\n};\n/**\n * PasteCleanup Grouping of similar functionality tags\n */\nvar listConversionFilters = {\n 'first': 'MsoListParagraphCxSpFirst',\n 'middle': 'MsoListParagraphCxSpMiddle',\n 'last': 'MsoListParagraphCxSpLast'\n};\n/**\n * Dom-Node Grouping of self closing tags\n *\n * @hidden\n */\nvar selfClosingTags = [\n 'BR',\n 'IMG'\n];\n\n/**\n * `Undo` module is used to handle undo actions.\n */\nvar UndoRedoCommands = /** @__PURE__ @class */ (function () {\n function UndoRedoCommands(parent, options) {\n this.undoRedoStack = [];\n this.parent = parent;\n this.undoRedoSteps = !isNullOrUndefined(options) ? options.undoRedoSteps : 30;\n this.undoRedoTimer = !isNullOrUndefined(options) ? options.undoRedoTimer : 300;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n UndoRedoCommands.prototype.addEventListener = function () {\n var debounceListener = debounce(this.keyUp, this.undoRedoTimer);\n this.parent.observer.on(KEY_UP_HANDLER, debounceListener, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.keyDown, this);\n this.parent.observer.on(ACTION, this.onAction, this);\n this.parent.observer.on(MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n UndoRedoCommands.prototype.onPropertyChanged = function (props) {\n for (var _i = 0, _a = Object.keys(props.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'undoRedoSteps':\n this.undoRedoSteps = props.newProp.undoRedoSteps;\n break;\n case 'undoRedoTimer':\n this.undoRedoTimer = props.newProp.undoRedoTimer;\n break;\n }\n }\n };\n UndoRedoCommands.prototype.removeEventListener = function () {\n var debounceListener = debounce(this.keyUp, 300);\n this.parent.observer.off(KEY_UP_HANDLER, debounceListener);\n this.parent.observer.off(KEY_DOWN_HANDLER, this.keyDown);\n this.parent.observer.off(ACTION, this.onAction);\n this.parent.observer.off(MODEL_CHANGED_PLUGIN, this.onPropertyChanged);\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoCommands.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * onAction method\n *\n * @param {IMarkdownSubCommands} e - specifies the sub commands\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoCommands.prototype.onAction = function (e) {\n if (e.subCommand === 'Undo') {\n this.undo(e);\n }\n else {\n this.redo(e);\n }\n };\n UndoRedoCommands.prototype.keyDown = function (e) {\n var event = e.event;\n // eslint-disable-next-line\n var proxy = this;\n switch (event.action) {\n case 'undo':\n event.preventDefault();\n proxy.undo(e);\n break;\n case 'redo':\n event.preventDefault();\n proxy.redo(e);\n break;\n }\n };\n UndoRedoCommands.prototype.keyUp = function (e) {\n if (e.event.keyCode !== 17 && !e.event.ctrlKey) {\n this.saveData(e);\n }\n };\n /**\n * MD collection stored string format.\n *\n * @param {KeyboardEvent} e - specifies the key board event\n * @function saveData\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoCommands.prototype.saveData = function (e) {\n var textArea = this.parent.element;\n this.selection.save(textArea.selectionStart, textArea.selectionEnd);\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var textValue = this.parent.element.value;\n var changEle = { text: textValue, start: start, end: end };\n if (this.undoRedoStack.length >= this.steps) {\n this.undoRedoStack = this.undoRedoStack.slice(0, this.steps + 1);\n }\n if (this.undoRedoStack.length > 1 && (this.undoRedoStack[this.undoRedoStack.length - 1].start === start) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].end === end)) {\n return;\n }\n this.undoRedoStack.push(changEle);\n this.steps = this.undoRedoStack.length - 1;\n if (this.steps > this.undoRedoSteps) {\n this.undoRedoStack.shift();\n this.steps--;\n }\n if (e && e.callBack) {\n e.callBack();\n }\n };\n /**\n * Undo the editable text.\n *\n * @param {IMarkdownSubCommands} e - specifies the sub commands\n * @function undo\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoCommands.prototype.undo = function (e) {\n if (this.steps > 0) {\n this.currentAction = 'Undo';\n var start = this.undoRedoStack[this.steps - 1].start;\n var end = this.undoRedoStack[this.steps - 1].end;\n var removedContent = this.undoRedoStack[this.steps - 1].text;\n this.parent.element.value = removedContent;\n this.parent.element.focus();\n this.steps--;\n this.restore(this.parent.element, start, end, e);\n }\n };\n /**\n * Redo the editable text.\n *\n * @param {IMarkdownSubCommands} e - specifies the sub commands\n * @function redo\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoCommands.prototype.redo = function (e) {\n if (this.undoRedoStack[this.steps + 1] != null) {\n this.currentAction = 'Redo';\n var start = this.undoRedoStack[this.steps + 1].start;\n var end = this.undoRedoStack[this.steps + 1].end;\n this.parent.element.value = this.undoRedoStack[this.steps + 1].text;\n this.parent.element.focus();\n this.steps++;\n this.restore(this.parent.element, start, end, e);\n }\n };\n UndoRedoCommands.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: this.currentAction,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n /**\n * getUndoStatus method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n UndoRedoCommands.prototype.getUndoStatus = function () {\n var status = { undo: false, redo: false };\n if (this.steps > 0) {\n status.undo = true;\n }\n if (this.undoRedoStack[this.steps + 1] != null) {\n status.redo = true;\n }\n return status;\n };\n return UndoRedoCommands;\n}());\n\n/**\n * Link internal component\n *\n * @hidden\n * @deprecated\n */\nvar MDLink = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {MarkdownParser} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function MDLink(parent) {\n this.parent = parent;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDLink.prototype.addEventListener = function () {\n this.parent.observer.on(LINK_COMMAND, this.createLink, this);\n };\n MDLink.prototype.createLink = function (e) {\n var textArea = this.parent.element;\n textArea.focus();\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var text = (e.subCommand === 'Image') ? this.selection.getSelectedText(textArea) : e.item.text;\n var startOffset = (e.subCommand === 'Image') ? (start + 2) : (start + 1);\n var endOffset = (e.subCommand === 'Image') ? (end + 2) : (end + 1);\n text = (e.subCommand === 'Image') ? '![' + text + '](' + e.item.url + ')' : '[' + text + '](' + e.item.url + ')';\n textArea.value = textArea.value.substr(0, start)\n + text + textArea.value.substr(end, textArea.value.length);\n this.parent.markdownSelection.setSelection(textArea, startOffset, endOffset);\n this.restore(textArea, startOffset, endOffset, e);\n };\n MDLink.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return MDLink;\n}());\n\n/**\n * Link internal component\n *\n * @hidden\n * @deprecated\n */\nvar MDTable = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {IMDTable} options - specifies the options\n * @hidden\n * @deprecated\n */\n function MDTable(options) {\n extend(this, this, options, true);\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDTable.prototype.addEventListener = function () {\n this.parent.observer.on(MD_TABLE, this.createTable, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n MDTable.prototype.removeEventListener = function () {\n this.parent.observer.off(MD_TABLE, this.createTable);\n this.parent.observer.off(KEY_DOWN_HANDLER, this.onKeyDown);\n };\n /**\n * markdown destroy method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MDTable.prototype.destroy = function () {\n this.removeEventListener();\n };\n MDTable.prototype.onKeyDown = function (e) {\n if (e.event.action === 'insert-table') {\n e.item = e.value;\n this.createTable(e);\n }\n };\n MDTable.prototype.createTable = function (e) {\n this.element = this.parent.element;\n var start = this.element.selectionStart;\n var end = this.element.selectionEnd;\n var textAreaInitial = this.element.value;\n this.locale = e;\n this.selection.save(start, end);\n this.restore(this.element.selectionStart, this.element.selectionEnd, null);\n this.insertTable(start, end, textAreaInitial, e);\n };\n MDTable.prototype.getTable = function () {\n var table = '';\n table += this.textNonEmpty();\n table += this.tableHeader(this.locale);\n table += this.tableCell(this.locale);\n return table;\n };\n MDTable.prototype.tableHeader = function (e) {\n var text = '';\n for (var i = 1; i <= 2; i++) {\n text += '|';\n for (var j = 1; j <= 2; j++) {\n if (i === 1) {\n text += e.item.headingText + ' ' + j + '|';\n }\n else {\n text += '---------|';\n }\n }\n text += this.insertLine();\n }\n return text;\n };\n MDTable.prototype.tableCell = function (e) {\n var text = '';\n for (var i = 1; i <= 2; i++) {\n text += '|';\n for (var j = 1; j <= 2; j++) {\n text += e.item.colText + ' ' + this.convertToLetters(i) + j + '|';\n }\n text += this.insertLine();\n }\n text += this.insertLine();\n return text;\n };\n MDTable.prototype.insertLine = function () {\n var dummyElement = document.createElement('div');\n dummyElement.innerHTML = '\\n';\n return dummyElement.textContent;\n };\n MDTable.prototype.insertTable = function (start, end, textAreaInitial, e) {\n var parentText = this.selection.getSelectedParentPoints(this.element);\n var lastLineSplit = parentText[parentText.length - 1].text.split(' ', 2);\n var syntaxArr = this.getFormatTag();\n // eslint-disable-next-line\n if (lastLineSplit.length < 2) {\n this.element.value = this.updateValue(this.getTable());\n this.makeSelection(textAreaInitial, start, end);\n }\n else {\n if (this.ensureFormatApply(parentText[parentText.length - 1].text)) {\n this.checkValid(start, end, this.getTable(), textAreaInitial, e, lastLineSplit, parentText, syntaxArr);\n }\n else {\n this.element.value = this.updateValue(this.getTable());\n this.makeSelection(textAreaInitial, start, end);\n }\n }\n this.restore(this.element.selectionStart, this.element.selectionEnd, e);\n };\n MDTable.prototype.makeSelection = function (textAreaInitial, start, end) {\n end = start + (textAreaInitial.length > 0 ? 12 : 10); //end is added 12 or 10 because to make the table heading selected\n start += textAreaInitial.length > 0 ? 3 : 1; // Start is added 3 or 1 because new lines are added when inserting table\n this.selection.setSelection(this.element, start, end);\n };\n MDTable.prototype.getFormatTag = function () {\n var syntaxFormatKey = Object.keys(this.syntaxTag.Formats);\n var syntaxListKey = Object.keys(this.syntaxTag.List);\n var syntaxArr = [];\n for (var i = 0; i < syntaxFormatKey.length; i++) {\n syntaxArr.push(this.syntaxTag.Formats[syntaxFormatKey[i]]);\n }\n for (var j = 0; j < syntaxListKey.length; j++) {\n syntaxArr.push(this.syntaxTag.List[syntaxListKey[j]]);\n }\n return syntaxArr;\n };\n MDTable.prototype.ensureFormatApply = function (line) {\n var formatTags = this.getFormatTag();\n var formatSplitZero = line.trim().split(' ', 2)[0] + ' ';\n for (var i = 0; i < formatTags.length; i++) {\n if (formatSplitZero === formatTags[i] || /^[\\d.]+[ ]+$/.test(formatSplitZero)) {\n return true;\n }\n }\n return false;\n };\n MDTable.prototype.ensureStartValid = function (firstLine, parentText) {\n var firstLineSplit = parentText[0].text.split(' ', 2);\n for (var i = firstLine + 1; i <= firstLine + firstLineSplit[0].length + 1; i++) {\n if (this.element.selectionStart === i || this.element.selectionEnd === i) {\n return false;\n }\n }\n return true;\n };\n MDTable.prototype.ensureEndValid = function (lastLine, formatSplitLength) {\n for (var i = lastLine + 1; i <= lastLine + formatSplitLength + 1; i++) {\n if (this.element.selectionEnd === i) {\n return false;\n }\n }\n return true;\n };\n MDTable.prototype.updateValueWithFormat = function (formatSplit, text) {\n var textApplyFormat = this.element.value.substring(this.element.selectionEnd, this.element.value.length);\n text += textApplyFormat.replace(textApplyFormat, (formatSplit[0] + ' ' + textApplyFormat));\n return this.element.value.substr(0, this.element.selectionStart) + text;\n };\n MDTable.prototype.updateValue = function (text) {\n return this.element.value.substr(0, this.element.selectionStart) + text +\n this.element.value.substr(this.element.selectionEnd, this.element.value.length);\n };\n MDTable.prototype.checkValid = function (start, end, text, textAreaInitial, \n // eslint-disable-next-line\n e, formatSplit, parentText, syntaxArr) {\n if (this.ensureStartValid(parentText[0].start, parentText) &&\n this.ensureEndValid(parentText[parentText.length - 1].start, formatSplit[0].length)) {\n if (start === parentText[0].start) {\n if (start !== end && end !== (parentText[parentText.length - 1].end - 1)) {\n this.element.value = this.updateValueWithFormat(formatSplit, text);\n }\n else {\n this.element.value = this.updateValue(text);\n }\n }\n else if (end === parentText[parentText.length - 1].end - 1) {\n this.element.value = this.updateValue(text);\n }\n else {\n this.element.value = this.updateValueWithFormat(formatSplit, text);\n }\n this.makeSelection(textAreaInitial, start, end);\n }\n };\n MDTable.prototype.convertToLetters = function (rowNumber) {\n var baseChar = ('A').charCodeAt(0);\n var letters = '';\n do {\n rowNumber -= 1;\n letters = String.fromCharCode(baseChar + (rowNumber % 26)) + letters;\n rowNumber = (rowNumber / 26) >> 0;\n } while (rowNumber > 0);\n return letters;\n };\n MDTable.prototype.textNonEmpty = function () {\n var emptyText = '';\n if (this.isCursorBased() || this.isSelectionBased()) {\n if (this.element.value.length > 0) {\n emptyText += this.insertLine();\n emptyText += this.insertLine(); // to append two new line when textarea having content.\n }\n }\n return emptyText;\n };\n MDTable.prototype.isCursorBased = function () {\n return this.element.selectionStart === this.element.selectionEnd;\n };\n MDTable.prototype.isSelectionBased = function () {\n return this.element.selectionStart !== this.element.selectionEnd;\n };\n MDTable.prototype.restore = function (start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(this.element);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(this.element),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return MDTable;\n}());\n\n/**\n * Link internal component\n *\n * @hidden\n * @deprecated\n */\nvar ClearFormat = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the clear format plugin\n *\n * @param {MarkdownParser} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function ClearFormat(parent) {\n this.parent = parent;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n ClearFormat.prototype.addEventListener = function () {\n this.parent.observer.on(CLEAR_COMMAND, this.clear, this);\n };\n ClearFormat.prototype.replaceRegex = function (data) {\n /* eslint-disable */\n return data.replace(/\\*/ig, '\\\\*').replace(/\\&/ig, '\\\\&')\n .replace(/\\-/ig, '\\\\-').replace(/\\^/ig, '\\\\^')\n .replace(/\\$/ig, '\\\\$').replace(/\\./ig, '\\\\.')\n .replace(/\\|/ig, '\\\\|').replace(/\\?/ig, '\\\\?')\n .replace(/\\+/ig, '\\\\+').replace(/\\-/ig, '\\\\-')\n .replace(/\\&/ig, '\\\\&');\n /* eslint-enable */\n };\n ClearFormat.prototype.clearSelectionTags = function (text) {\n var data = this.parent.selectionTags;\n var keys = Object.keys(data);\n for (var num = 0; num < keys.length; num++) {\n var key = keys[num];\n // eslint-disable-next-line\n if (data.hasOwnProperty(key) && data[key] !== '') {\n var expString = this.replaceRegex(data[\"\" + key]);\n var regExp = void 0;\n var startExp = data[\"\" + key].length;\n var endExp = (data[\"\" + key] === '' || data[\"\" + key] === '') ? data[\"\" + key].length + 1 : data[\"\" + key].length;\n if (data[\"\" + key] === '') {\n // eslint-disable-next-line\n regExp = new RegExp('(.*?)<\\/sup>', 'ig');\n }\n else if (data[\"\" + key] === '') {\n // eslint-disable-next-line\n regExp = new RegExp('(.*?)<\\/sub>', 'ig');\n }\n else {\n // eslint-disable-next-line\n regExp = new RegExp(expString + '(.*?)' + expString, 'ig');\n }\n var val = text.match(regExp);\n for (var index = 0; val && index < val.length && val[index] !== ''; index++) {\n // eslint-disable-next-line max-len\n text = text.replace(val[index], val[index].substr(startExp, val[index].length - endExp - startExp));\n }\n }\n }\n return text;\n };\n ClearFormat.prototype.clearFormatTags = function (text) {\n var lines = text.split('\\n');\n return this.clearFormatLines(lines);\n };\n ClearFormat.prototype.clearFormatLines = function (lines) {\n var tags = [this.parent.formatTags, this.parent.listTags];\n var str = '';\n for (var len = 0; len < lines.length; len++) {\n for (var num = 0; num < tags.length; num++) {\n var data = tags[num];\n var keys = Object.keys(data);\n for (var index = 0; index < keys.length; index++) {\n var key = keys[index];\n // eslint-disable-next-line\n if (data.hasOwnProperty(key) && data[key] !== '') {\n if (lines[len].indexOf(data[\"\" + key]) === 0) {\n lines[len] = lines[len].replace(data[\"\" + key], '');\n lines[len] = this.clearFormatLines([lines[len]]);\n }\n }\n }\n }\n str = str + lines[len] + ((len !== lines.length - 1) ? '\\n' : '');\n }\n return str;\n };\n ClearFormat.prototype.clear = function (e) {\n var textArea = this.parent.element;\n textArea.focus();\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var text = this.selection.getSelectedText(textArea);\n text = this.clearSelectionTags(text);\n text = this.clearFormatTags(text);\n textArea.value = textArea.value.substr(0, start)\n + text + textArea.value.substr(end, textArea.value.length);\n this.parent.markdownSelection.setSelection(textArea, start, start + text.length);\n this.restore(textArea, start, start + text.length, e);\n };\n ClearFormat.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return ClearFormat;\n}());\n\n/**\n * Link internal component\n *\n * @hidden\n * @deprecated\n */\nvar MDInsertText = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the insert text plugin\n *\n * @param {MarkdownParser} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function MDInsertText(parent) {\n this.parent = parent;\n this.selection = this.parent.markdownSelection;\n this.addEventListener();\n }\n MDInsertText.prototype.addEventListener = function () {\n this.parent.observer.on(INSERT_TEXT_COMMAND, this.InsertTextExec, this);\n };\n MDInsertText.prototype.InsertTextExec = function (e) {\n var textArea = this.parent.element;\n textArea.focus();\n var start = textArea.selectionStart;\n var end = textArea.selectionEnd;\n var text = e.value.text;\n var startOffset = start + text.length;\n var endOffset = end + text.length;\n textArea.value = textArea.value.substr(0, start)\n + text + textArea.value.substr(end, textArea.value.length);\n this.parent.markdownSelection.setSelection(textArea, startOffset, endOffset);\n this.restore(textArea, startOffset, endOffset, e);\n };\n MDInsertText.prototype.restore = function (textArea, start, end, event) {\n this.selection.save(start, end);\n this.selection.restore(textArea);\n if (event && event.callBack) {\n event.callBack({\n requestType: event.subCommand,\n selectedText: this.selection.getSelectedText(textArea),\n editorMode: 'Markdown',\n event: event.event\n });\n }\n };\n return MDInsertText;\n}());\n\n/**\n * MarkdownParser internal component\n *\n * @hidden\n * @deprecated\n */\nvar MarkdownParser = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the component\n *\n * @param {IMarkdownParserModel} options - specifies the options\n * @hidden\n * @deprecated\n */\n function MarkdownParser(options) {\n this.initialize();\n extend(this, this, options, true);\n this.observer = new Observer(this);\n this.markdownSelection = new MarkdownSelection();\n this.listObj = new MDLists({ parent: this, syntax: this.listTags });\n this.formatObj = new MDFormats({ parent: this, syntax: this.formatTags });\n this.undoRedoManager = new UndoRedoCommands(this, options.options);\n this.mdSelectionFormats = new MDSelectionFormats({ parent: this, syntax: this.selectionTags });\n this.linkObj = new MDLink(this);\n this.tableObj = new MDTable({ parent: this, syntaxTag: ({ Formats: this.formatTags, List: this.listTags }) });\n this.clearObj = new ClearFormat(this);\n this.insertTextObj = new MDInsertText(this);\n this.wireEvents();\n }\n MarkdownParser.prototype.initialize = function () {\n this.formatTags = markdownFormatTags;\n this.listTags = markdownListsTags;\n this.selectionTags = markdownSelectionTags;\n };\n MarkdownParser.prototype.wireEvents = function () {\n this.observer.on(KEY_DOWN, this.editorKeyDown, this);\n this.observer.on(KEY_UP, this.editorKeyUp, this);\n this.observer.on(MODEL_CHANGED, this.onPropertyChanged, this);\n };\n MarkdownParser.prototype.onPropertyChanged = function (props) {\n this.observer.notify(MODEL_CHANGED_PLUGIN, props);\n };\n MarkdownParser.prototype.editorKeyDown = function (e) {\n this.observer.notify(KEY_DOWN_HANDLER, e);\n };\n MarkdownParser.prototype.editorKeyUp = function (e) {\n this.observer.notify(KEY_UP_HANDLER, e);\n };\n /* eslint-disable */\n /**\n * markdown execCommand method\n *\n * @param {MarkdownExecCommand} command - specifies the command\n * @param {T} - specifies the value\n * @param {Event} event - specifies the event\n * @param {Function} callBack - specifies the call back function\n * @param {string} text - specifies the string value\n * @param {T} exeValue - specifies the value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-enable */\n MarkdownParser.prototype.execCommand = function (command, value, event, callBack, text, exeValue) {\n switch (command.toLocaleLowerCase()) {\n case 'lists':\n this.observer.notify(LISTS_COMMAND, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'formats':\n this.observer.notify(FORMAT_TYPE, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'actions':\n this.observer.notify(ACTION, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'style':\n case 'effects':\n case 'casing':\n this.observer.notify(selectionCommand, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'links':\n case 'images':\n this.observer.notify(LINK_COMMAND, { subCommand: value, event: event, callBack: callBack, item: exeValue });\n break;\n case 'table':\n switch (value.toString().toLocaleLowerCase()) {\n case 'createtable':\n this.observer.notify(MD_TABLE, { subCommand: value, item: exeValue, event: event, callBack: callBack });\n break;\n }\n break;\n case 'clear':\n this.observer.notify(CLEAR_COMMAND, { subCommand: value, event: event, callBack: callBack });\n break;\n case 'inserttext':\n this.observer.notify(INSERT_TEXT_COMMAND, { subCommand: value, event: event, callBack: callBack,\n value: { text: exeValue } });\n break;\n }\n };\n return MarkdownParser;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * Markdown adapter\n *\n * @hidden\n * @deprecated\n */\nvar MarkdownFormatter = /** @__PURE__ @class */ (function (_super) {\n __extends$1(MarkdownFormatter, _super);\n function MarkdownFormatter(options) {\n var _this = _super.call(this) || this;\n _this.initialize();\n extend(_this, _this, options, true);\n if (options && _this.element) {\n _this.updateFormatter(_this.element, document, options.options);\n }\n return _this;\n }\n MarkdownFormatter.prototype.initialize = function () {\n this.keyConfig = markdownKeyConfig;\n this.formatTags = markdownFormatTags;\n this.listTags = markdownListsTags;\n this.selectionTags = markdownSelectionTags;\n };\n /**\n * Update the formatter of RichTextEditor\n *\n * @param {Element} editElement - specifies the edit element.\n * @param {Document} doc - specifies the document.\n * @param {number} options - specifies the options\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownFormatter.prototype.updateFormatter = function (editElement, doc, options) {\n if (editElement) {\n this.editorManager = new MarkdownParser({\n element: editElement,\n formatTags: this.formatTags,\n listTags: this.listTags,\n selectionTags: this.selectionTags,\n options: options\n });\n }\n };\n return MarkdownFormatter;\n}(Formatter));\n\n/**\n * Markdown module is used to render Rich Text Editor as Markdown editor content\n *\n * @hidden\n * @deprecated\n */\nvar MarkdownRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent.\n */\n function MarkdownRender(parent) {\n this.parent = parent;\n }\n /**\n * The function is used to render Rich Text Editor content div\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var div = this.parent.createElement('div', { id: this.parent.getID() + '_view', className: 'e-rte-content' });\n this.editableElement = this.parent.createElement('textarea', {\n className: 'e-content',\n id: this.parent.getID() + '_editable-content',\n attrs: { 'aria-labelledby': this.parent.getID() + '_view' }\n });\n div.appendChild(this.editableElement);\n this.setPanel(div);\n rteObj.element.appendChild(div);\n };\n /**\n * Get the content div element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n * @deprecated\n */\n MarkdownRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the element\n * @hidden\n * @deprecated\n */\n MarkdownRender.prototype.getEditPanel = function () {\n return this.editableElement;\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string values.\n */\n MarkdownRender.prototype.getText = function () {\n return this.getEditPanel().value;\n };\n /**\n * Set the content div element of RichTextEditor\n *\n * @param {Element} panel - specifies the element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return MarkdownRender;\n}());\n\n/**\n * `MarkdownEditor` module is used to markdown editor\n */\nvar MarkdownEditor = /** @__PURE__ @class */ (function () {\n function MarkdownEditor(parent, serviceLocator) {\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * Destroys the Markdown.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownEditor.prototype.destroy = function () {\n this.removeEventListener();\n };\n MarkdownEditor.prototype.moduleDestroy = function () {\n this.parent = null;\n this.toolbarUpdate.parent = null;\n };\n MarkdownEditor.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.saveSelection = new MarkdownSelection();\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(initialEnd, this.render, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(markdownToolbarClick, this.onToolbarClick, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(selectAll$1, this.selectAll, this);\n this.parent.on(getSelectedHtml, this.getSelectedHtml, this);\n this.parent.on(selectionSave, this.onSelectionSave, this);\n this.parent.on(selectionRestore, this.onSelectionRestore, this);\n this.parent.on(readOnlyMode, this.updateReadOnly, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n MarkdownEditor.prototype.updateReadOnly = function () {\n if (this.parent.readonly) {\n this.parent.contentModule.getEditPanel().setAttribute('readonly', 'readonly');\n addClass([this.parent.element], CLS_RTE_READONLY);\n }\n else {\n this.parent.contentModule.getEditPanel().removeAttribute('readonly');\n removeClass([this.parent.element], CLS_RTE_READONLY);\n }\n };\n MarkdownEditor.prototype.onSelectionSave = function () {\n var textArea = this.parent.contentModule.getEditPanel();\n this.saveSelection.save(textArea.selectionStart, textArea.selectionEnd);\n };\n // eslint-disable-next-line\n MarkdownEditor.prototype.onSelectionRestore = function (e) {\n this.contentRenderer.getEditPanel().focus();\n var textArea = this.parent.contentModule.getEditPanel();\n this.saveSelection.restore(textArea);\n };\n MarkdownEditor.prototype.onToolbarClick = function (args) {\n var item = args.item;\n var textArea = this.parent.contentModule.getEditPanel();\n textArea.focus();\n var startOffset = textArea.selectionStart;\n var endOffset = textArea.selectionEnd;\n var text = textArea.value.substring(startOffset, endOffset);\n switch (item.subCommand) {\n case 'Maximize':\n this.parent.notify(enableFullScreen, { args: args });\n break;\n case 'Minimize':\n this.parent.notify(disableFullScreen, { args: args });\n break;\n case 'CreateLink':\n this.parent.notify(insertLink, { member: 'link', args: args, text: text, module: 'Markdown' });\n break;\n case 'Image':\n this.parent.notify(insertImage, { member: 'image', args: args, text: text, module: 'Markdown' });\n break;\n case 'CreateTable': {\n var tableConstant = {\n 'headingText': this.parent.localeObj.getConstant('TableHeadingText'),\n 'colText': this.parent.localeObj.getConstant('TableColText')\n };\n this.parent.formatter.process(this.parent, args, args.originalEvent, tableConstant);\n break;\n }\n default:\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n break;\n }\n };\n MarkdownEditor.prototype.instantiateRenderer = function () {\n this.renderFactory.addRenderer(RenderType.Content, new MarkdownRender(this.parent));\n };\n MarkdownEditor.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.render);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(destroy, this.destroy);\n this.parent.off(markdownToolbarClick, this.onToolbarClick);\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(selectAll$1, this.selectAll);\n this.parent.off(getSelectedHtml, this.getSelectedHtml);\n this.parent.off(selectionSave, this.onSelectionSave);\n this.parent.off(selectionRestore, this.onSelectionRestore);\n this.parent.off(readOnlyMode, this.updateReadOnly);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n MarkdownEditor.prototype.render = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps, undoRedoTimer: this.parent.undoRedoTimer };\n if (isNullOrUndefined(this.parent.formatter)) {\n this.parent.formatter = new MarkdownFormatter({\n element: editElement,\n options: option\n });\n }\n else {\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n if (this.parent.toolbarSettings.enable) {\n this.toolbarUpdate = new MarkdownToolbarStatus(this.parent);\n }\n this.parent.notify(bindOnEnd, {});\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the editor model\n * @returns {void}\n * @hidden\n * @deprecated\n */\n MarkdownEditor.prototype.onPropertyChanged = function (e) {\n // On property code change here\n if (!isNullOrUndefined(e.newProp.formatter)) {\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps,\n undoRedoTimer: this.parent.undoRedoTimer };\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n MarkdownEditor.prototype.getModuleName = function () {\n return 'markdownEditor';\n };\n /**\n * For selecting all content in RTE\n *\n * @returns {void}\n * @private\n */\n MarkdownEditor.prototype.selectAll = function () {\n this.parent.formatter.editorManager.markdownSelection.setSelection(this.parent.contentModule.getEditPanel(), 0, this.parent.contentModule.getEditPanel().value.length);\n };\n /**\n * For get a selected text in RTE\n *\n * @param {NotifyArgs} e - specifies the arguments.\n * @returns {void}\n * @private\n */\n MarkdownEditor.prototype.getSelectedHtml = function (e) {\n e.callBack(this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()));\n };\n return MarkdownEditor;\n}());\n\n/**\n * Constant values for EditorManager\n */\n/**\n * Image plugin events\n *\n * @hidden\n */\nvar IMAGE = 'INSERT-IMAGE';\nvar AUDIO = 'INSERT-AUDIO';\nvar VIDEO = 'INSERT-VIDEO';\nvar TABLE = 'INSERT-TABLE';\nvar LINK = 'INSERT-LINK';\nvar INSERT_ROW = 'INSERT-ROW';\nvar INSERT_COLUMN = 'INSERT-COLUMN';\nvar DELETEROW = 'DELETE-ROW';\nvar DELETECOLUMN = 'DELETE-COLUMN';\nvar REMOVETABLE = 'REMOVE-TABLE';\nvar TABLEHEADER = 'TABLE-HEADER';\nvar TABLE_VERTICAL_ALIGN = 'TABLE_VERTICAL_ALIGN';\nvar TABLE_MERGE = 'TABLE_MERGE';\nvar TABLE_VERTICAL_SPLIT = 'TABLE_VERTICAL_SPLIT';\nvar TABLE_HORIZONTAL_SPLIT = 'TABLE_HORIZONTAL_SPLIT';\nvar TABLE_MOVE = 'TABLE_MOVE';\n/**\n * Alignments plugin events\n *\n * @hidden\n */\nvar ALIGNMENT_TYPE = 'alignment-type';\n/**\n * Indents plugin events\n *\n * @hidden\n */\nvar INDENT_TYPE = 'indent-type';\n/**\n * Constant tag names\n *\n * @hidden\n */\nvar DEFAULT_TAG = 'p';\n/**\n * @hidden\n */\nvar BLOCK_TAGS = ['address', 'article', 'aside', 'audio', 'blockquote',\n 'canvas', 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'hr', 'li', 'main', 'nav',\n 'noscript', 'ol', 'output', 'p', 'pre', 'section', 'table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr', 'ul', 'video', 'body'];\n/**\n * @hidden\n */\nvar IGNORE_BLOCK_TAGS = ['td', 'th'];\n/**\n * @hidden\n */\nvar TABLE_BLOCK_TAGS = ['table', 'tbody', 'td', 'tfoot', 'th',\n 'thead', 'tr'];\n/**\n * Selection plugin events\n *\n * @hidden\n */\nvar SELECTION_TYPE = 'selection-type';\n/**\n * Insert HTML plugin events\n *\n * @hidden\n */\nvar INSERTHTML_TYPE = 'inserthtml-type';\n/**\n * Insert Text plugin events\n *\n * @hidden\n */\nvar INSERT_TEXT_TYPE = 'insert-text-type';\n/**\n * Clear Format HTML plugin events\n *\n * @hidden\n */\nvar CLEAR_TYPE = 'clear-type';\n/**\n * Self closing tags\n *\n * @hidden\n */\nvar SELF_CLOSING_TAGS = ['area', 'base', 'br', 'embed', 'hr', 'img', 'input', 'param', 'source', 'track', 'wbr', 'iframe', 'td'];\n\n/**\n * `Selection` module is used to handle RTE Selections.\n */\nvar NodeSelection = /** @__PURE__ @class */ (function () {\n function NodeSelection() {\n this.startNodeName = [];\n this.endNodeName = [];\n }\n NodeSelection.prototype.saveInstance = function (range, body) {\n this.range = range.cloneRange();\n this.rootNode = this.documentFromRange(range);\n this.body = body;\n this.startContainer = this.getNodeArray(range.startContainer, true);\n this.endContainer = this.getNodeArray(range.endContainer, false);\n this.startOffset = range.startOffset;\n this.endOffset = range.endOffset;\n this.html = this.body.innerHTML;\n return this;\n };\n NodeSelection.prototype.documentFromRange = function (range) {\n return (9 === range.startContainer.nodeType) ? range.startContainer : range.startContainer.ownerDocument;\n };\n NodeSelection.prototype.getRange = function (docElement) {\n var select$$1 = this.get(docElement);\n var range = select$$1 && select$$1.rangeCount > 0 ? select$$1.getRangeAt(select$$1.rangeCount - 1) : docElement.createRange();\n return (range.startContainer !== docElement || range.endContainer !== docElement\n || range.startOffset || range.endOffset || (range.setStart(docElement.body, 0), range.collapse(!0)), range);\n };\n /**\n * get method\n *\n * @param {Document} docElement - specifies the get function\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.get = function (docElement) {\n return docElement.defaultView.getSelection();\n };\n /**\n * save method\n *\n * @param {Range} range - range value.\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.save = function (range, docElement) {\n range = (range) ? range.cloneRange() : this.getRange(docElement);\n return this.saveInstance(range, docElement.body);\n };\n /**\n * getIndex method\n *\n * @param {Node} node - specifies the node value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getIndex = function (node) {\n var index;\n var num = 0;\n node = !node.previousSibling && node.tagName === 'BR' ? node : node.previousSibling;\n if (node) {\n for (var type = node.nodeType; node; null) {\n index = node.nodeType;\n num++;\n //eslint-disable-next-line\n type = index;\n node = node.previousSibling;\n }\n }\n return num;\n };\n NodeSelection.prototype.isChildNode = function (nodeCollection, parentNode) {\n for (var index = 0; index < parentNode.childNodes.length; index++) {\n if (nodeCollection.indexOf(parentNode.childNodes[index]) > -1) {\n return true;\n }\n }\n return false;\n };\n NodeSelection.prototype.getNode = function (startNode, endNode, nodeCollection) {\n if (endNode === startNode &&\n (startNode.nodeType === 3 || !startNode.firstChild || nodeCollection.indexOf(startNode.firstChild) !== -1\n || this.isChildNode(nodeCollection, startNode))) {\n return null;\n }\n if (nodeCollection.indexOf(startNode.firstChild) === -1 && startNode.firstChild && !this.isChildNode(nodeCollection, startNode)) {\n return startNode.firstChild;\n }\n if (startNode.nextSibling) {\n return startNode.nextSibling;\n }\n if (!startNode.parentNode) {\n return null;\n }\n else {\n return startNode.parentNode;\n }\n };\n /**\n * getNodeCollection method\n *\n * @param {Range} range -specifies the range.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getNodeCollection = function (range) {\n var startNode = range.startContainer.childNodes[range.startOffset]\n || range.startContainer;\n var endNode = range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer;\n if ((startNode === endNode || (startNode.nodeName === 'BR' && startNode === range.endContainer.childNodes[range.endOffset])) &&\n startNode.childNodes.length === 0) {\n return [startNode];\n }\n if (range.startOffset === range.endOffset && range.startOffset !== 0 && range.startContainer.nodeName === 'PRE') {\n return [startNode.nodeName === 'BR' || startNode.nodeName === '#text' ? startNode : startNode.childNodes[0]];\n }\n var nodeCollection = [];\n do {\n if (nodeCollection.indexOf(startNode) === -1) {\n nodeCollection.push(startNode);\n }\n startNode = this.getNode(startNode, endNode, nodeCollection);\n } while (startNode);\n return nodeCollection;\n };\n /**\n * getParentNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getParentNodeCollection = function (range) {\n return this.getParentNodes(this.getNodeCollection(range), range);\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @param {Range} range - specifies the range values.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getParentNodes = function (nodeCollection, range) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection.indexOf(nodeCollection[index].parentNode) !== -1)\n || (nodeCollection[index].nodeType === 3 &&\n range.startContainer !== range.endContainer &&\n range.startContainer.parentNode !== range.endContainer.parentNode)) {\n nodeCollection.splice(index, 1);\n index--;\n }\n else if (nodeCollection[index].nodeType === 3) {\n nodeCollection[index] = nodeCollection[index].parentNode;\n }\n }\n return nodeCollection;\n };\n /**\n * getSelectionNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getSelectionNodeCollection = function (range) {\n return this.getSelectionNodes(this.getNodeCollection(range));\n };\n /**\n * getSelectionNodeCollection along with BR node method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getSelectionNodeCollectionBr = function (range) {\n return this.getSelectionNodesBr(this.getNodeCollection(range));\n };\n /**\n * getParentNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx)))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * Get selection text nodes with br method.\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getSelectionNodesBr = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeName !== 'BR' &&\n (nodeCollection[index].nodeType !== 3 || (nodeCollection[index].textContent.trim() === '' ||\n (nodeCollection[index].textContent.length === 1 && nodeCollection[index].textContent.match(regEx))))) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getInsertNodeCollection method\n *\n * @param {Range} range - specifies the range value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getInsertNodeCollection = function (range) {\n return this.getInsertNodes(this.getNodeCollection(range));\n };\n /**\n * getInsertNodes method\n *\n * @param {Node[]} nodeCollection - specifies the collection of nodes.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getInsertNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if ((nodeCollection[index].childNodes.length !== 0 &&\n nodeCollection[index].nodeType !== 3) ||\n (nodeCollection[index].nodeType === 3 &&\n nodeCollection[index].textContent === '')) {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n return nodeCollection.reverse();\n };\n /**\n * getNodeArray method\n *\n * @param {Node} node - specifies the node content.\n * @param {boolean} isStart - specifies the boolean value.\n * @param {Document} root - specifies the root document.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getNodeArray = function (node, isStart, root) {\n var array = [];\n // eslint-disable-next-line\n ((isStart) ? (this.startNodeName = []) : (this.endNodeName = []));\n for (; node !== (root ? root : this.rootNode); null) {\n if (isNullOrUndefined(node)) {\n break;\n }\n // eslint-disable-next-line\n (isStart) ? this.startNodeName.push(node.nodeName.toLowerCase()) : this.endNodeName.push(node.nodeName.toLowerCase());\n array.push(this.getIndex(node));\n node = node.parentNode;\n }\n return array;\n };\n NodeSelection.prototype.setRangePoint = function (range, isvalid, num, size) {\n var node = this.rootNode;\n var index = num.length;\n var constant = size;\n for (; index--; null) {\n node = node && node.childNodes[num[index]];\n }\n if (node && constant >= 0 && node.nodeName !== 'html') {\n if (node.nodeType === 3 && node.nodeValue.replace(/\\u00a0/g, ' ') === ' ') {\n constant = node.textContent.length;\n }\n range[isvalid ? 'setStart' : 'setEnd'](node, constant);\n }\n return range;\n };\n /**\n * restore method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.restore = function () {\n var range = this.range.cloneRange();\n range = this.setRangePoint(range, true, this.startContainer, this.startOffset);\n range = this.setRangePoint(range, false, this.endContainer, this.endOffset);\n this.selectRange(this.rootNode, range);\n return range;\n };\n NodeSelection.prototype.selectRange = function (docElement, range) {\n this.setRange(docElement, range);\n this.save(range, docElement);\n };\n /**\n * setRange method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.setRange = function (docElement, range) {\n var selection = this.get(docElement);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n /**\n * setSelectionText method\n *\n * @param {Document} docElement - specifies the documrent\n * @param {Node} startNode - specifies the starting node.\n * @param {Node} endNode - specifies the the end node.\n * @param {number} startIndex - specifies the starting index.\n * @param {number} endIndex - specifies the end index.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.setSelectionText = function (docElement, startNode, endNode, startIndex, endIndex) {\n var range = docElement.createRange();\n range.setStart(startNode, startIndex);\n range.setEnd(endNode, endIndex);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionContents method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.setSelectionContents = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNode(element);\n this.setRange(docElement, range);\n };\n /**\n * setSelectionNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} element - specifies the node.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.setSelectionNode = function (docElement, element) {\n var range = docElement.createRange();\n range.selectNodeContents(element);\n this.setRange(docElement, range);\n };\n /**\n * getSelectedNodes method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.getSelectedNodes = function (docElement) {\n return this.getNodeCollection(this.getRange(docElement));\n };\n /**\n * Clear method\n *\n * @param {Document} docElement - specifies the document.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.Clear = function (docElement) {\n this.get(docElement).removeAllRanges();\n };\n /**\n * insertParentNode method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Node} newNode - specicfies the new node.\n * @param {Range} range - specifies the range.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.insertParentNode = function (docElement, newNode, range) {\n range.surroundContents(newNode);\n this.selectRange(docElement, range);\n };\n /**\n * setCursorPoint method\n *\n * @param {Document} docElement - specifies the document.\n * @param {Element} element - specifies the element.\n * @param {number} point - specifies the point.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n NodeSelection.prototype.setCursorPoint = function (docElement, element, point) {\n var range = docElement.createRange();\n var selection = docElement.defaultView.getSelection();\n range.setStart(element, point);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n };\n return NodeSelection;\n}());\n\n/**\n * `Selection` module is used to handle RTE Selections.\n */\n\nvar markerClassName = {\n startSelection: 'e-editor-select-start',\n endSelection: 'e-editor-select-end'\n};\n/**\n * DOMNode internal plugin\n *\n * @hidden\n * @deprecated\n */\nvar DOMNode = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the DOMNode plugin\n *\n * @param {Element} parent - specifies the parent element\n * @param {Document} currentDocument - specifies the current document.\n * @hidden\n * @deprecated\n */\n function DOMNode(parent, currentDocument) {\n this.parent = parent;\n this.nodeSelection = new NodeSelection();\n this.currentDocument = currentDocument;\n }\n /**\n * contents method\n *\n * @param {Element} element - specifies the element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.contents = function (element) {\n return (element && 'IFRAME' !== element.tagName ? Array.prototype.slice.call(element.childNodes || []) : []);\n };\n /**\n * isBlockNode method\n *\n * @param {Element} element - specifies the node element.\n * @returns {boolean} - sepcifies the boolean value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n /**\n * isLink method\n *\n * @param {Element} element - specifies the element\n * @returns {boolean} - specifies the boolean value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.isLink = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && 'a' === element.tagName.toLowerCase()));\n };\n /**\n * blockParentNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.blockParentNode = function (element) {\n for (; element && element.parentNode !== this.parent && ((!element.parentNode ||\n !this.hasClass(element.parentNode, 'e-node-inner'))); null) {\n element = element.parentNode;\n if (this.isBlockNode(element)) {\n return element;\n }\n }\n return element;\n };\n /**\n * rawAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.rawAttributes = function (element) {\n var rawAttr = {};\n var attributes$$1 = element.attributes;\n if (attributes$$1.length > 0) {\n for (var d = 0; d < attributes$$1.length; d++) {\n var e = attributes$$1[d];\n rawAttr[e.nodeName] = e.value;\n }\n }\n return rawAttr;\n };\n /**\n * attributes method\n *\n * @param {Element} element - sepcifies the element.\n * @returns {string} - returns the string value.\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.attributes = function (element) {\n if (!element) {\n return '';\n }\n var attr = '';\n var rawAttr = this.rawAttributes(element);\n var orderRawAttr = Object.keys(rawAttr).sort();\n for (var e = 0; e < orderRawAttr.length; e++) {\n var attrKey = orderRawAttr[e];\n var attrValue = rawAttr[\"\" + attrKey];\n /* eslint-disable */\n if (attrValue.indexOf(\"'\") < 0 && attrValue.indexOf('\"') >= 0) {\n attr += ' ' + attrKey + \"='\" + attrValue + \"'\";\n }\n else if (attrValue.indexOf('\"') >= 0 && attrValue.indexOf(\"'\") >= 0) {\n /* eslint-enable */\n attrValue = attrValue.replace(/\"/g, '"');\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n else {\n attr += ' ' + attrKey + '=\"' + attrValue + '\"';\n }\n }\n return attr;\n };\n /**\n * clearAttributes method\n *\n * @param {Element} element - specifies the element\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.clearAttributes = function (element) {\n for (var attr = element.attributes, c = attr.length - 1; c >= 0; c--) {\n var key = attr[c];\n element.removeAttribute(key.nodeName);\n }\n };\n /**\n * openTagString method\n *\n * @param {Element} element - specifies the element.\n * @returns {string} - returns the string\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.openTagString = function (element) {\n return '<' + element.tagName.toLowerCase() + this.attributes(element) + '>';\n };\n /**\n * closeTagString method\n *\n * @param {Element} element - specifies the element\n * @returns {string} - returns the string value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.closeTagString = function (element) {\n return '';\n };\n /**\n * createTagString method\n *\n * @param {string} tagName - specifies the tag name\n * @param {Element} relativeElement - specifies the relative element\n * @param {string} innerHTML - specifies the string value\n * @returns {string} - returns the string value.\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.createTagString = function (tagName, relativeElement, innerHTML) {\n return '<' + tagName.toLowerCase() + this.attributes(relativeElement) + '>' + innerHTML + '';\n };\n /**\n * isList method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.isList = function (element) {\n return !!element && ['UL', 'OL'].indexOf(element.tagName) >= 0;\n };\n /**\n * isElement method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.isElement = function (element) {\n return element === this.parent;\n };\n /**\n * isEditable method\n *\n * @param {Element} element - specifes the element.\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.isEditable = function (element) {\n return ((!element.getAttribute || element.getAttribute('contenteditable') === 'true')\n && ['STYLE', 'SCRIPT'].indexOf(element.tagName) < 0);\n };\n /**\n * hasClass method\n *\n * @param {Element} element - specifes the element.\n * @param {string} className - specifies the class name value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.hasClass = function (element, className) {\n return element && element.classList && element.classList.contains(className);\n };\n /**\n * replaceWith method\n *\n * @param {Element} element - specifes the element.\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.replaceWith = function (element, value) {\n var parentNode = element.parentNode;\n parentNode.insertBefore(this.parseHTMLFragment(value), element);\n detach(element);\n };\n /**\n * parseHTMLFragment method\n *\n * @param {string} value - specifies the string value\n * @returns {Element} - returns the element\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.parseHTMLFragment = function (value) {\n /* eslint-disable */\n var temp = createElement('template');\n temp.innerHTML = value;\n if (temp.content instanceof DocumentFragment) {\n return temp.content;\n }\n else {\n return document.createRange().createContextualFragment(value);\n }\n /* eslint-enable */\n };\n /**\n * wrap method\n *\n * @param {Element} element - specifies the element\n * @param {Element} wrapper - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.wrap = function (element, wrapper) {\n element.parentNode.insertBefore(wrapper, element);\n wrapper = element.previousSibling;\n wrapper.appendChild(element);\n return wrapper;\n };\n /**\n * insertAfter method\n *\n * @param {Element} newNode - specifies the new node element\n * @param {Element} referenceNode - specifies the referenece node\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n /**\n * wrapInner method\n *\n * @param {Element} parent - specifies the parent element.\n * @param {Element} wrapper - specifies the wrapper element.\n * @returns {Element} - returns the element\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.wrapInner = function (parent, wrapper) {\n parent.appendChild(wrapper);\n wrapper = parent.querySelector('.e-rte-wrap-inner');\n wrapper.classList.remove('e-rte-wrap-inner');\n if (wrapper.classList.length === 0) {\n wrapper.removeAttribute('class');\n }\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n return wrapper;\n };\n /**\n * unWrap method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element.\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.unWrap = function (element) {\n var parent = element.parentNode;\n var unWrapNode = [];\n while (element.firstChild) {\n unWrapNode.push(element.firstChild);\n parent.insertBefore(element.firstChild, element);\n }\n unWrapNode = unWrapNode.length > 0 ? unWrapNode : [element.parentNode];\n parent.removeChild(element);\n return unWrapNode;\n };\n /**\n * getSelectedNode method\n *\n * @param {Element} element - specifies the element\n * @param {number} index - specifies the index value.\n * @returns {Element} - returns the element\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.getSelectedNode = function (element, index) {\n if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 &&\n element.childNodes[index - 1] && element.childNodes[index - 1].nodeType === Node.ELEMENT_NODE &&\n (element.childNodes[index - 1].classList.contains(markerClassName.startSelection) ||\n element.childNodes[index - 1].classList.contains(markerClassName.endSelection))) {\n element = element.childNodes[index - 1];\n }\n else if (element.nodeType === Node.ELEMENT_NODE && element.childNodes.length > 0 && element.childNodes[index]) {\n element = element.childNodes[index];\n }\n if (element.nodeType === Node.TEXT_NODE) {\n element = element.parentNode;\n }\n return element;\n };\n /**\n * nodeFinds method\n *\n * @param {Element} element - specifies the element.\n * @param {Element[]} elements - specifies the array of elements\n * @returns {Element[]} - returnts the array elements\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.nodeFinds = function (element, elements) {\n var existNodes = [];\n for (var i = 0; i < elements.length; i++) {\n if (element.contains(elements[i]) && element !== elements[i]) {\n existNodes.push(elements[i]);\n }\n }\n return existNodes;\n };\n /**\n * isEditorArea method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.isEditorArea = function () {\n var range = this.getRangePoint(0);\n var element;\n for (element = range.commonAncestorContainer; element && !this.isElement(element); null) {\n element = element.parentNode;\n }\n return !!this.isElement(element);\n };\n /**\n * getRangePoint method\n *\n * @param {number} point - specifies the number value.\n * @returns {Range} - returns the range.\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.getRangePoint = function (point) {\n var selection = this.getSelection();\n var ranges = [];\n if (selection && selection.getRangeAt && selection.rangeCount) {\n ranges = [];\n for (var f = 0; f < selection.rangeCount; f++) {\n ranges.push(selection.getRangeAt(f));\n }\n }\n else {\n ranges = [this.currentDocument.createRange()];\n }\n return 'undefined' !== typeof point ? ranges[point] : ranges;\n };\n DOMNode.prototype.getSelection = function () {\n return this.nodeSelection.get(this.currentDocument);\n };\n /**\n * getPreviousNode method\n *\n * @param {Element} element - specifies the element\n * @returns {Element} - returns the element\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.getPreviousNode = function (element) {\n element = element.previousElementSibling;\n for (; element && element.textContent === '\\n'; null) {\n element = element.previousElementSibling;\n }\n return element;\n };\n /**\n * encode method\n *\n * @param {string} value - specifies the string value\n * @returns {string} - specifies the string value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.encode = function (value) {\n var divNode = document.createElement('div');\n divNode.innerText = value;\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * saveMarker method\n *\n * @param {NodeSelection} save - specifies the node selection,\n * @param {string} action - specifies the action value.\n * @returns {NodeSelection} - returns the value\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.saveMarker = function (save, action) {\n var start = this.parent.querySelector('.' + markerClassName.startSelection);\n var end = this.parent.querySelector('.' + markerClassName.endSelection);\n var startTextNode;\n var endTextNode;\n if (start.textContent === '' && isNullOrUndefined(end) && action !== 'tab') {\n if (start.childNodes.length === 1 && start.childNodes[0].nodeName === 'BR') {\n start.innerHTML = '
    ';\n }\n else {\n start.innerHTML = '';\n }\n }\n if (this.hasClass(start, markerClassName.startSelection) && start.classList.length > 1) {\n var replace = this.createTagString(DEFAULT_TAG, start, this.encode(start.textContent));\n this.replaceWith(start, replace);\n start = this.parent.querySelector('.' + markerClassName.startSelection);\n start.classList.remove(markerClassName.startSelection);\n startTextNode = start.childNodes[0];\n }\n else {\n startTextNode = this.unWrap(start)[0];\n }\n if (this.hasClass(end, markerClassName.endSelection) && end.classList.length > 1) {\n var replace = this.createTagString(DEFAULT_TAG, end, this.encode(end.textContent));\n this.replaceWith(end, replace);\n end = this.parent.querySelector('.' + markerClassName.endSelection);\n end.classList.remove(markerClassName.endSelection);\n endTextNode = end.childNodes[0];\n }\n else {\n endTextNode = end ? this.unWrap(end)[0] : startTextNode;\n }\n save.startContainer = save.getNodeArray(startTextNode, true);\n save.endContainer = save.getNodeArray(endTextNode, false);\n return save;\n };\n DOMNode.prototype.marker = function (className, textContent) {\n return '' + textContent + '';\n };\n /**\n * setMarker method\n *\n * @param {NodeSelection} save - specifies the node selection.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.setMarker = function (save) {\n var range = save.range;\n var startChildNodes = range.startContainer.childNodes;\n var isTableStart = startChildNodes.length > 1 && startChildNodes[0].nodeName === 'TABLE';\n var start = ((isTableStart ? getLastTextNode(startChildNodes[range.startOffset + 1]) :\n startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) : range.startOffset]) || range.startContainer);\n var end = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) : range.endOffset]\n || range.endContainer);\n if ((start.nodeType === Node.ELEMENT_NODE && end.nodeType === Node.ELEMENT_NODE) && (start.contains(end) || end.contains(start))) {\n var existNode = start.contains(end) ? start : end;\n var isElement = existNode.nodeType !== Node.TEXT_NODE;\n if (isElement) {\n var nodes = [];\n var textNodes = [];\n for (var node = existNode; existNode.contains(node); null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (textNodes.indexOf(node) < 0 && (node.nodeType === Node.TEXT_NODE ||\n (IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0\n && (node.tagName === 'BR' || node.tagName === 'IMG')))) {\n textNodes.push(node);\n }\n }\n if (textNodes.length) {\n start = start.contains(end) ? textNodes[0] : start;\n end = textNodes[textNodes.length - 1];\n }\n }\n }\n if (start !== end) {\n if (start.nodeType !== Node.TEXT_NODE && ((start.tagName === 'BR' &&\n IGNORE_BLOCK_TAGS.indexOf(start.parentNode.tagName.toLocaleLowerCase()) >= 0) ||\n start.tagName === 'IMG')) {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + markerClassName.startSelection);\n markerStart.appendChild(start);\n }\n else {\n if (start.nodeType !== 3 && start.nodeName !== '#text') {\n var marker = this.marker(markerClassName.startSelection, '');\n append([this.parseHTMLFragment(marker)], start);\n }\n else {\n this.replaceWith(start, this.marker(markerClassName.startSelection, this.encode(start.textContent)));\n }\n }\n if (end.nodeType !== Node.TEXT_NODE && end.tagName === 'BR' &&\n IGNORE_BLOCK_TAGS.indexOf(end.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n this.replaceWith(end, this.marker(markerClassName.endSelection, this.encode(end.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(end);\n }\n else {\n this.ensureSelfClosingTag(end, markerClassName.endSelection, range);\n }\n }\n else {\n this.ensureSelfClosingTag(start, markerClassName.startSelection, range);\n }\n };\n /**\n * ensureSelfClosingTag method\n *\n * @param {Element} start - specifies the element.\n * @param {string} className - specifes the class name string value\n * @param {Range} range - specifies the range value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.ensureSelfClosingTag = function (start, className, range) {\n var isTable = false;\n if (start.nodeType === 3) {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.tagName === 'BR') {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n var markerStart = range.startContainer.querySelector('.' + className);\n markerStart.appendChild(start);\n }\n else {\n if (start.tagName === 'IMG') {\n var parNode = document.createElement('p');\n start.parentElement.insertBefore(parNode, start);\n parNode.appendChild(start);\n start = parNode.children[0];\n }\n if (start.tagName === 'TABLE') {\n isTable = true;\n if (start.textContent === '') {\n var tdNode = start.querySelectorAll('td');\n start = tdNode[tdNode.length - 1];\n start = !isNullOrUndefined(start.childNodes[0]) ? start.childNodes[0] : start;\n }\n else {\n var lastNode = start.lastChild;\n while (lastNode.nodeType !== 3 && lastNode.nodeName !== '#text' &&\n lastNode.nodeName !== 'BR') {\n lastNode = lastNode.lastChild;\n }\n start = lastNode;\n }\n }\n for (var i = 0; i < selfClosingTags.length; i++) {\n start = (start.tagName === selfClosingTags[i] && !isTable) ? start.parentNode : start;\n }\n if (start.nodeType === 3 && start.nodeName === '#text') {\n this.replaceWith(start, this.marker(className, this.encode(start.textContent)));\n }\n else if (start.nodeName === 'BR') {\n this.replaceWith(start, this.marker(markerClassName.endSelection, this.encode(start.textContent)));\n var markerEnd = range.endContainer.querySelector('.' + markerClassName.endSelection);\n markerEnd.appendChild(start);\n }\n else {\n var marker = this.marker(className, '');\n append([this.parseHTMLFragment(marker)], start);\n }\n }\n };\n /**\n * createTempNode method\n *\n * @param {Element} element - specifies the element.\n * @returns {Element} - returns the element\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.createTempNode = function (element) {\n var textContent = element.textContent;\n if (element.tagName === 'BR') {\n var wrapper = '<' + DEFAULT_TAG + '>';\n var node = element.parentNode;\n if (IGNORE_BLOCK_TAGS.indexOf(node.tagName.toLocaleLowerCase()) >= 0) {\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n }\n }\n else if (((element.nodeType !== Node.TEXT_NODE &&\n (element.classList.contains(markerClassName.startSelection) ||\n element.classList.contains(markerClassName.endSelection))) ||\n textContent.replace(/\\n/g, '').replace(/(^ *)|( *$)/g, '').length > 0 ||\n textContent.length && textContent.indexOf('\\n') < 0)) {\n var wrapper = '<' + DEFAULT_TAG + '>';\n var target = element;\n element = this.wrap(element, this.parseHTMLFragment(wrapper));\n var ignoreBr = target.nodeType === Node.ELEMENT_NODE && target.firstChild && target.firstChild.nodeName === 'BR'\n && (target.classList.contains(markerClassName.startSelection) ||\n target.classList.contains(markerClassName.endSelection));\n if (!ignoreBr && element.nextElementSibling && element.nextElementSibling.tagName === 'BR') {\n element.appendChild(element.nextElementSibling);\n }\n }\n return element;\n };\n /**\n * getImageTagInSelection method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.getImageTagInSelection = function () {\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n return selection.focusNode.querySelectorAll('img');\n }\n return null;\n };\n /**\n * blockNodes method\n *\n * @returns {Node[]} - returns the node array values\n * @hidden\n * @deprecated\n */\n DOMNode.prototype.blockNodes = function () {\n var collectionNodes = [];\n var selection = this.getSelection();\n if (this.isEditorArea() && selection.rangeCount) {\n var ranges = this.getRangePoint();\n for (var j = 0; j < ranges.length; j++) {\n var parentNode = void 0;\n var range = ranges[j];\n var startNode = this.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.getSelectedNode(range.endContainer, range.endOffset);\n if (this.isBlockNode(startNode) && collectionNodes.indexOf(startNode) < 0) {\n collectionNodes.push(startNode);\n }\n parentNode = this.blockParentNode(startNode);\n if (parentNode && collectionNodes.indexOf(parentNode) < 0) {\n if (IGNORE_BLOCK_TAGS.indexOf(parentNode.tagName.toLocaleLowerCase()) >= 0 && (startNode.tagName === 'BR' ||\n startNode.nodeType === Node.TEXT_NODE ||\n startNode.classList.contains(markerClassName.startSelection) ||\n startNode.classList.contains(markerClassName.endSelection))) {\n var tempNode = startNode.previousSibling &&\n startNode.previousSibling.nodeType === Node.TEXT_NODE ?\n startNode.previousSibling : startNode;\n if (!startNode.nextSibling && !startNode.previousSibling && startNode.tagName === 'BR') {\n collectionNodes.push(tempNode);\n }\n else {\n collectionNodes.push(this.createTempNode(tempNode));\n }\n }\n else {\n collectionNodes.push(parentNode);\n }\n }\n var nodes = [];\n for (var node = startNode; node !== endNode && node !== this.parent; null) {\n if (nodes.indexOf(node) < 0 && node.childNodes && node.childNodes.length) {\n nodes.push(node);\n node = node.childNodes[0];\n }\n else if (node && node.nodeType !== 8 && (node.tagName === 'BR' || (node.nodeType === Node.TEXT_NODE &&\n node.textContent.trim() !== '') || (node.nodeType !== Node.TEXT_NODE &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection)))) &&\n IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node);\n }\n else if (node.nextSibling && node.nextSibling.nodeType !== 8 &&\n (node.nextSibling.tagName === 'BR' ||\n node.nextSibling.nodeType === Node.TEXT_NODE ||\n node.nextSibling.classList.contains(markerClassName.startSelection) ||\n node.nextSibling.classList.contains(markerClassName.endSelection)) &&\n IGNORE_BLOCK_TAGS.indexOf(node.nextSibling.parentNode.tagName.toLocaleLowerCase()) >= 0) {\n node = this.createTempNode(node.nextSibling);\n }\n else if (node.nextSibling) {\n node = node.nextSibling;\n }\n else if (node.parentNode) {\n node = node.parentNode;\n nodes.push(node);\n }\n if (collectionNodes.indexOf(node) < 0 && node.nodeType === Node.ELEMENT_NODE &&\n IGNORE_BLOCK_TAGS.indexOf(node.parentNode.tagName.toLocaleLowerCase()) >= 0 &&\n (node.classList.contains(markerClassName.startSelection) ||\n node.classList.contains(markerClassName.endSelection))) {\n collectionNodes.push(this.createTempNode(node));\n }\n if (this.isBlockNode(node) && this.ignoreTableTag(node) && nodes.indexOf(node) < 0 &&\n collectionNodes.indexOf(node) < 0 && (node !== endNode || range.endOffset > 0)) {\n collectionNodes.push(node);\n }\n if (node.nodeName === 'IMG' && node.parentElement.contentEditable === 'true') {\n collectionNodes.push(node);\n }\n }\n parentNode = this.blockParentNode(endNode);\n if (parentNode && this.ignoreTableTag(parentNode) && collectionNodes.indexOf(parentNode) < 0 &&\n (!isNullOrUndefined(parentNode.previousElementSibling) && parentNode.previousElementSibling.tagName !== 'IMG')) {\n collectionNodes.push(parentNode);\n }\n }\n }\n for (var i = collectionNodes.length - 1; i > 0; i--) {\n var nodes = this.nodeFinds(collectionNodes[i], collectionNodes);\n if (nodes.length) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (collectionNodes[i].tagName === 'LI' && listNodes.length > 0) {\n continue;\n }\n else {\n collectionNodes.splice(i, 1);\n }\n }\n }\n return collectionNodes;\n };\n DOMNode.prototype.ignoreTableTag = function (element) {\n return !(TABLE_BLOCK_TAGS.indexOf(element.tagName.toLocaleLowerCase()) >= 0);\n };\n return DOMNode;\n}());\n\n/**\n * Lists internal component\n *\n * @hidden\n * @deprecated\n */\nvar Lists = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Lists plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function Lists(parent) {\n this.parent = parent;\n this.domNode = this.parent.domNode;\n this.addEventListener();\n }\n Lists.prototype.addEventListener = function () {\n this.parent.observer.on(LIST_TYPE, this.applyListsHandler, this);\n this.parent.observer.on(KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.keyDownHandler, this);\n this.parent.observer.on(SPACE_ACTION, this.spaceKeyAction, this);\n };\n Lists.prototype.testList = function (elem) {\n var olListRegex = [/^[\\d]+[.]+$/,\n /^(?=[MDCLXVI])M*(C[MD]|D?C{0,3})(X[CL]|L?X{0,3})(I[XV]|V?I{0,3})[.]$/gi,\n /^[a-zA-Z][.]+$/];\n var elementStart = !isNullOrUndefined(elem) ? elem.innerText.trim().split('.')[0] + '.' : null;\n if (!isNullOrUndefined(elementStart)) {\n for (var i = 0; i < olListRegex.length; i++) {\n if (olListRegex[i].test(elementStart)) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.testCurrentList = function (range) {\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(range.startContainer.textContent.slice(0, range.startOffset))) {\n var currentContent = range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim();\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(currentContent) && currentContent.length === 2) {\n return true;\n }\n }\n }\n return false;\n };\n Lists.prototype.spaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n // eslint-disable-next-line\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n var preElement = startNode.previousElementSibling;\n var nextElement = startNode.nextElementSibling;\n var preElemULStart = !isNullOrUndefined(preElement) ?\n preElement.innerText.trim().substring(0, 1) : null;\n var nextElemULStart = !isNullOrUndefined(nextElement) ?\n nextElement.innerText.trim().substring(0, 1) : null;\n var startElementOLTest = this.testCurrentList(range);\n var preElementOLTest = this.testList(preElement);\n var nextElementOLTest = this.testList(nextElement);\n if (!preElementOLTest && !nextElementOLTest && preElemULStart !== '*' && nextElemULStart !== '*') {\n if (startElementOLTest) {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n }\n else if (range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '*' ||\n range.startContainer.textContent.replace(/\\u200B/g, '').slice(0, range.startOffset).trim() === '-') {\n range.startContainer.textContent = range.startContainer.textContent.slice(range.startOffset, range.startContainer.textContent.length);\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n }\n }\n };\n Lists.prototype.enterList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = range.startContainer.nodeName === 'LI' ? range.startContainer :\n range.startContainer.parentElement.closest('LI');\n var endNode = range.endContainer.nodeName === 'LI' ? range.endContainer :\n range.endContainer.parentElement.closest('LI');\n // Checks for Image, Audio , Video Element inside List Element\n var hasMediaElem = false;\n if (!isNullOrUndefined(startNode)) {\n var videoElemList = startNode.querySelectorAll('.e-video-clickelem');\n var embedVideoElem = videoElemList.length > 0 && videoElemList[0].childNodes[0].nodeName === 'IFRAME';\n hasMediaElem = startNode.querySelectorAll('IMG').length > 0 || startNode.querySelectorAll('AUDIO').length > 0 || startNode.querySelectorAll('VIDEO').length > 0 || embedVideoElem;\n }\n if (!isNullOrUndefined(startNode) && !isNullOrUndefined(endNode) && startNode === endNode && startNode.tagName === 'LI' &&\n startNode.textContent.trim() === '' && !hasMediaElem) {\n if (startNode.innerHTML.indexOf(' ') >= 0) {\n return;\n }\n if (startNode.textContent.charCodeAt(0) === 65279) {\n startNode.textContent = '';\n }\n var startNodeParent = startNode.parentElement;\n if (isNullOrUndefined(startNodeParent.parentElement.closest('UL')) && isNullOrUndefined(startNodeParent.parentElement.closest('OL'))) {\n if (!isNullOrUndefined(startNode.nextElementSibling)) {\n var nearBlockNode = this.parent.domNode.blockParentNode(startNode);\n this.parent.nodeCutter.GetSpliceNode(range, nearBlockNode);\n }\n var insertTag = void 0;\n if (e.enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
    ';\n }\n else if (e.enterAction === 'P') {\n insertTag = createElement('p');\n insertTag.innerHTML = '
    ';\n }\n else {\n insertTag = createElement('br');\n }\n this.parent.domNode.insertAfter(insertTag, startNodeParent);\n e.event.preventDefault();\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n if (startNodeParent.textContent === '') {\n detach(startNodeParent);\n }\n else {\n detach(startNode);\n }\n }\n }\n };\n Lists.prototype.backspaceList = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n if (startNode === endNode && !isNullOrUndefined(closest(startNode, 'li')) &&\n ((startNode.textContent.trim() === '' && startNode.textContent.charCodeAt(0) === 65279) ||\n (startNode.textContent.length === 1 && startNode.textContent.charCodeAt(0) === 8203))) {\n startNode.textContent = '';\n }\n if (startNode === endNode && startNode.tagName === 'LI' && startNode.textContent.length === 0 &&\n isNullOrUndefined(startNode.previousElementSibling)) {\n startNode.removeAttribute('style');\n }\n if (startNode === endNode && startNode.textContent === '') {\n if (startNode.parentElement.tagName === 'LI' && endNode.parentElement.tagName === 'LI') {\n detach(startNode);\n }\n else if (startNode.closest('ul') || startNode.closest('ol')) {\n var parentList = !isNullOrUndefined(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.firstElementChild === startNode && !isNullOrUndefined(parentList.children[1]) &&\n (parentList.children[1].tagName === 'OL' || parentList.children[1].tagName === 'UL')) {\n if (parentList.tagName === parentList.children[1].tagName) {\n while (parentList.children[1].lastChild) {\n this.parent.domNode.insertAfter(parentList.children[1].lastChild, parentList.children[1]);\n }\n detach(parentList.children[1]);\n }\n else {\n parentList.parentElement.insertBefore(parentList.children[1], parentList);\n }\n }\n }\n }\n else if (!isNullOrUndefined(startNode.firstChild) && startNode.firstChild.nodeName === 'BR' &&\n (!isNullOrUndefined(startNode.childNodes[1]) && (startNode.childNodes[1].nodeName === 'UL' ||\n startNode.childNodes[1].nodeName === 'OL'))) {\n var parentList = !isNullOrUndefined(startNode.closest('ul')) ? startNode.closest('ul') : startNode.closest('ol');\n if (parentList.tagName === startNode.childNodes[1].nodeName) {\n while (startNode.childNodes[1].lastChild) {\n this.parent.domNode.insertAfter(startNode.children[1].lastChild, startNode);\n }\n detach(startNode.childNodes[1]);\n }\n else {\n parentList.parentElement.insertBefore(startNode.children[1], parentList);\n }\n }\n this.removeList(range, e);\n this.firstListBackSpace(range, e);\n };\n Lists.prototype.removeList = function (range, e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n startNode = startNode.nodeName === 'BR' ? startNode.parentElement : startNode;\n endNode = endNode.nodeName === 'BR' ? endNode.parentElement : endNode;\n startNode = startNode.nodeName !== 'LI' && !isNullOrUndefined(startNode.closest('LI')) ? startNode.closest('LI') : startNode;\n endNode = endNode.nodeName !== 'LI' && !isNullOrUndefined(endNode.closest('LI')) ? endNode.closest('LI') : endNode;\n if (((range.commonAncestorContainer.nodeName === 'OL' || range.commonAncestorContainer.nodeName === 'UL' || range.commonAncestorContainer.nodeName === 'LI') &&\n isNullOrUndefined(endNode.nextElementSibling) && endNode.textContent.length === range.endOffset &&\n isNullOrUndefined(startNode.previousElementSibling) && range.startOffset === 0) ||\n (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === 0 && range.endOffset === 1)) {\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n detach(range.commonAncestorContainer.childNodes[0]);\n }\n else if (range.commonAncestorContainer.nodeName === 'LI') {\n detach(range.commonAncestorContainer.parentElement);\n }\n else {\n detach(range.commonAncestorContainer);\n }\n e.event.preventDefault();\n }\n };\n Lists.prototype.onKeyUp = function () {\n if (!isNullOrUndefined(this.commonLIParent) && !isNullOrUndefined(this.commonLIParent.querySelector('.removeList'))) {\n var currentLIElem = this.commonLIParent.querySelector('.removeList');\n while (!isNullOrUndefined(currentLIElem.firstChild)) {\n this.parent.domNode.insertAfter(currentLIElem.firstChild, currentLIElem);\n }\n detach(currentLIElem);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Lists.prototype.firstListBackSpace = function (range, _e) {\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n if (!isNullOrUndefined(startNode.closest('OL'))) {\n this.commonLIParent = startNode.closest('OL');\n }\n else if (!isNullOrUndefined(startNode.closest('UL'))) {\n this.commonLIParent = startNode.closest('UL');\n }\n if (startNode.nodeName === 'LI' && range.startOffset === 0 && range.endOffset === 0 &&\n isNullOrUndefined(startNode.previousSibling) && !isNullOrUndefined(this.commonLIParent) && isNullOrUndefined(this.commonLIParent.previousSibling) &&\n (isNullOrUndefined(this.commonLIParent.parentElement.closest('OL')) && isNullOrUndefined(this.commonLIParent.parentElement.closest('UL')) &&\n isNullOrUndefined(this.commonLIParent.parentElement.closest('LI')))) {\n var currentElem = createElement('P');\n currentElem.innerHTML = '​';\n startNode.classList.add('removeList');\n this.commonLIParent.parentElement.insertBefore(currentElem, this.commonLIParent);\n }\n };\n Lists.prototype.keyDownHandler = function (e) {\n if (e.event.which === 13) {\n this.enterList(e);\n }\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n if (e.event.which === 8) {\n this.backspaceList(e);\n }\n if (e.event.which === 46 && e.event.action === 'delete') {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var commonAncestor = range.commonAncestorContainer;\n var startEle = range.startContainer;\n var endEle = range.endContainer;\n var startNode = startEle.nodeType === 3 ? startEle.parentElement : startEle;\n var endNode = endEle.nodeType === 3 ? endEle.parentElement : endEle;\n if ((commonAncestor.nodeName === 'UL' || commonAncestor.nodeName === 'OL') && startNode !== endNode\n && (!isNullOrUndefined(closest(startNode, 'ul')) || !isNullOrUndefined(closest(startNode, 'ol')))\n && (!isNullOrUndefined(closest(endNode, 'ul')) || !isNullOrUndefined(closest(endNode, 'ol')))\n && (commonAncestor.lastElementChild === closest(endNode, 'li')) && !range.collapsed) {\n detach(commonAncestor);\n }\n this.removeList(range, e);\n }\n if (e.event.which === 9) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n }\n var blockNodes = void 0;\n var startOffset = range.startOffset;\n var endOffset = range.endOffset;\n var startNode = this.parent.domNode.getSelectedNode(range.startContainer, range.startOffset);\n var endNode = this.parent.domNode.getSelectedNode(range.endContainer, range.endOffset);\n if ((startNode === endNode && (startNode.nodeName === 'BR' || startNode.nodeName === '#text') &&\n IGNORE_BLOCK_TAGS.indexOf(startNode.parentNode.tagName.toLocaleLowerCase()) >= 0)) {\n return;\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n this.domNode.setMarker(this.saveSelection);\n }\n blockNodes = this.domNode.blockNodes();\n }\n var nodes = [];\n var isNested = true;\n for (var i = 0; i < blockNodes.length; i++) {\n if (blockNodes[i].parentNode.tagName === 'LI') {\n nodes.push(blockNodes[i].parentNode);\n }\n else if (blockNodes[i].tagName === 'LI' && blockNodes[i].childNodes[0].tagName !== 'P' &&\n (blockNodes[i].childNodes[0].tagName !== 'OL' &&\n blockNodes[i].childNodes[0].tagName !== 'UL')) {\n nodes.push(blockNodes[i]);\n }\n }\n if (nodes.length > 1 || nodes.length && ((startOffset === 0 && endOffset === 0) || e.ignoreDefault)) {\n e.event.preventDefault();\n e.event.stopPropagation();\n this.currentAction = this.getAction(nodes[0]);\n if (e.event.shiftKey) {\n this.revertList(nodes, e);\n this.revertClean();\n }\n else {\n isNested = this.nestedList(nodes);\n }\n if (isNested) {\n this.cleanNode();\n this.parent.editableElement.focus();\n }\n if (!(e.event.action && e.event.action === 'indent')) {\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes(),\n event: e.event\n });\n }\n }\n }\n else {\n if (!(e.event.action && e.event.action === 'indent')) {\n if (e.event && e.event.shiftKey && e.event.key === 'Tab') {\n e.event.action = 'tab';\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection, e.event.action);\n this.saveSelection.restore();\n }\n }\n }\n else {\n switch (e.event.action) {\n case 'ordered-list':\n this.applyListsHandler({ subCommand: 'OL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'unordered-list':\n this.applyListsHandler({ subCommand: 'UL', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n }\n };\n Lists.prototype.spaceKeyAction = function (e) {\n if (e.event.which === 32) {\n this.spaceList(e);\n }\n };\n Lists.prototype.getAction = function (element) {\n var parentNode = element.parentNode;\n return (parentNode.nodeName === 'OL' ? 'OL' : 'UL');\n };\n Lists.prototype.revertClean = function () {\n var collectionNodes = this.parent.editableElement.querySelectorAll('ul, ol');\n for (var i = 0; i < collectionNodes.length; i++) {\n var listNodes = collectionNodes[i].querySelectorAll('ul, ol');\n if (listNodes.length > 0) {\n for (var j = 0; j < listNodes.length; j++) {\n var prevSibling = listNodes[j].previousSibling;\n if (prevSibling && prevSibling.tagName === 'LI') {\n prevSibling.appendChild(listNodes[j]);\n }\n }\n }\n }\n };\n Lists.prototype.noPreviousElement = function (elements) {\n var firstNode;\n var firstNodeOL;\n var siblingListOL = elements.querySelectorAll('ol, ul');\n var siblingListLI = elements\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNode = siblingListLI[0];\n }\n else {\n firstNodeOL = siblingListOL[0];\n }\n if (firstNode) {\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNode);\n setStyleAttribute(elements, { 'list-style-type': 'none' });\n setStyleAttribute(firstNode, { 'list-style-type': '' });\n h = nextSibling;\n }\n }\n else if (firstNodeOL) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNodeOL);\n for (var h = this.domNode.contents(elements)[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n prepend([firstNodeOL], elements.parentNode);\n detach(elements);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], firstNodeOL.parentNode);\n append([firstNodeOL], nestedElementLI);\n }\n else {\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n prepend([nestedElementLI], elements.parentNode);\n var nestedElement = createElement(elements.parentNode.tagName);\n prepend([nestedElement], nestedElementLI);\n append([elements], nestedElement);\n }\n };\n Lists.prototype.nestedList = function (elements) {\n var isNested = false;\n for (var i = 0; i < elements.length; i++) {\n var prevSibling = this.domNode.getPreviousNode(elements[i]);\n if (prevSibling) {\n isNested = true;\n var firstNode = void 0;\n var firstNodeLI = void 0;\n var siblingListOL = elements[i].querySelectorAll('ol, ul');\n var siblingListLI = elements[i]\n .querySelectorAll('li');\n var siblingListLIFirst = this.domNode.contents(siblingListLI[0])[0];\n if (siblingListLI.length > 0 && (siblingListLIFirst.nodeName === 'OL' || siblingListLIFirst.nodeName === 'UL')) {\n firstNodeLI = siblingListLI[0];\n }\n else {\n firstNode = siblingListOL[0];\n }\n if (firstNode) {\n var nestedElement = createElement('li');\n prepend([nestedElement], firstNode);\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n nestedElement.appendChild(h);\n h = nextSibling;\n }\n append([firstNode], prevSibling);\n detach(elements[i]);\n }\n else if (firstNodeLI) {\n if (prevSibling.tagName === 'LI') {\n for (var h = this.domNode.contents(elements[i])[0]; h && !this.domNode.isList(h); null) {\n var nextSibling = h.nextSibling;\n prepend([h], firstNodeLI);\n setStyleAttribute(elements[i], { 'list-style-type': 'none' });\n setStyleAttribute(firstNodeLI, { 'list-style-type': '' });\n h = nextSibling;\n }\n append([firstNodeLI.parentNode], prevSibling);\n detach(elements[i]);\n }\n }\n else {\n if (prevSibling.tagName === 'LI') {\n var nestedElement = createElement(elements[i].parentNode.tagName);\n append([nestedElement], prevSibling);\n append([elements[i]], nestedElement);\n }\n else if (prevSibling.tagName === 'OL' || prevSibling.tagName === 'UL') {\n append([elements[i]], prevSibling);\n }\n }\n }\n else {\n var element = elements[i];\n isNested = true;\n this.noPreviousElement(element);\n }\n }\n return isNested;\n };\n Lists.prototype.applyListsHandler = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement) {\n var startChildNodes = range.startContainer.childNodes;\n var startNode = ((startChildNodes[(range.startOffset > 0) ? (range.startOffset - 1) :\n range.startOffset]) || range.startContainer);\n var endNode = (range.endContainer.childNodes[(range.endOffset > 0) ? (range.endOffset - 1) :\n range.endOffset] || range.endContainer);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var lastSelectionNode = endNode.lastChild.nodeName === 'BR' ? (isNullOrUndefined(endNode.lastChild.previousSibling) ? endNode\n : endNode.lastChild.previousSibling) : endNode.lastChild;\n while (!isNullOrUndefined(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, lastSelectionNode, 0, lastSelectionNode.textContent.length);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n if (range.startContainer === range.endContainer && range.startContainer === this.parent.editableElement &&\n range.startOffset === range.endOffset && range.startOffset === 0 &&\n this.parent.editableElement.textContent.length === 0 && (this.parent.editableElement.childNodes[0].nodeName !== 'TABLE' &&\n this.parent.editableElement.childNodes[0].nodeName !== 'IMG')) {\n var focusNode = range.startContainer.childNodes[0];\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, focusNode, focusNode, 0, 0);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n }\n this.saveSelection = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.currentAction = e.subCommand;\n this.currentAction = e.subCommand = this.currentAction === 'NumberFormatList' ? 'OL' : this.currentAction === 'BulletFormatList' ? 'UL' : this.currentAction;\n this.domNode.setMarker(this.saveSelection);\n var listsNodes = this.domNode.blockNodes();\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(listsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('p');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNullOrUndefined(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNullOrUndefined(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNullOrUndefined(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNullOrUndefined(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n listsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < listsNodes.length; i++) {\n if (listsNodes[i].tagName === 'TABLE' && !range.collapsed) {\n listsNodes.splice(i, 1);\n }\n if (listsNodes.length > 0 && listsNodes[i].tagName !== 'LI'\n && 'LI' === listsNodes[i].parentNode.tagName) {\n listsNodes[i] = listsNodes[i].parentNode;\n }\n }\n this.applyLists(listsNodes, this.currentAction, e.selector, e.item, e);\n if (e.callBack) {\n e.callBack({\n requestType: this.currentAction,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Lists.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNullOrUndefined(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Lists.prototype.applyLists = function (elements, type, selector, item, e) {\n if (this.isRevert(elements, type, item) && isNullOrUndefined(item)) {\n this.revertList(elements, e);\n this.removeEmptyListElements();\n }\n else {\n this.checkLists(elements, type, item);\n for (var i = 0; i < elements.length; i++) {\n if (!isNullOrUndefined(item) && !isNullOrUndefined(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(elements[i], { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(elements[i], { 'list-style-image': 'none' });\n setStyleAttribute(elements[i], { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if (elements[i].getAttribute('contenteditable') === 'true'\n && elements[i].childNodes.length === 1 && elements[i].childNodes[0].nodeName === 'TABLE') {\n var listEle = document.createElement(type);\n listEle.innerHTML = '

  • ';\n elements[i].appendChild(listEle);\n }\n else if ('LI' !== elements[i].tagName && isNullOrUndefined(item)) {\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + '>';\n var closeTag = '';\n var newTag = 'li' + elemAtt;\n var replaceHTML = (elements[i].tagName.toLowerCase() === DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n else if (!isNullOrUndefined(item) && 'LI' !== elements[i].tagName) {\n // eslint-disable-next-line\n var elemAtt = elements[i].tagName === 'IMG' ? '' : this.domNode.attributes(elements[i]);\n var openTag = '<' + type + elemAtt + '>';\n var closeTag = '';\n var newTag = 'li';\n var replaceHTML = (elements[i].tagName.toLowerCase() === DEFAULT_TAG ?\n elements[i].innerHTML : elements[i].outerHTML);\n var innerHTML = this.domNode.createTagString(newTag, null, replaceHTML);\n var collectionString = openTag + innerHTML + closeTag;\n this.domNode.replaceWith(elements[i], collectionString);\n }\n }\n }\n this.cleanNode();\n this.parent.editableElement.focus();\n if (isIDevice$1()) {\n setEditFrameFocus(this.parent.editableElement, selector);\n }\n this.saveSelection = this.domNode.saveMarker(this.saveSelection);\n this.saveSelection.restore();\n };\n Lists.prototype.removeEmptyListElements = function () {\n var listElem = this.parent.editableElement.querySelectorAll('ol, ul');\n for (var i = 0; i < listElem.length; i++) {\n if (listElem[i].textContent.trim() === '') {\n detach(listElem[i]);\n }\n }\n };\n Lists.prototype.isRevert = function (nodes, tagName, item) {\n var isRevert = true;\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].tagName !== 'LI') {\n return false;\n }\n if (nodes[i].parentNode.tagName !== tagName ||\n isNullOrUndefined(item) && nodes[i].parentNode.style.listStyleType !== '') {\n isRevert = false;\n }\n }\n return isRevert;\n };\n Lists.prototype.checkLists = function (nodes, tagName, item) {\n var nodesTemp = [];\n for (var i = 0; i < nodes.length; i++) {\n var node = nodes[i].parentNode;\n if (!isNullOrUndefined(item) && 'LI' === nodes[i].tagName && !isNullOrUndefined(item.listStyle)) {\n if (item.listStyle === 'listImage') {\n setStyleAttribute(node, { 'list-style-image': item.listImage });\n }\n else {\n setStyleAttribute(node, { 'list-style-image': 'none' });\n setStyleAttribute(node, { 'list-style-type': item.listStyle.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase() });\n }\n }\n if ((nodes[i].tagName === 'LI' && node.tagName !== tagName && nodesTemp.indexOf(node) < 0) ||\n (nodes[i].tagName === 'LI' && node.tagName === tagName && nodesTemp.indexOf(node) < 0 && item !== null)) {\n nodesTemp.push(node);\n }\n if (isNullOrUndefined(item) && (node.tagName === tagName ||\n ((node.tagName === 'UL' || node.tagName === 'OL') && node.hasAttribute('style')))) {\n if (node.hasAttribute('style')) {\n node.removeAttribute('style');\n }\n }\n }\n for (var j = nodesTemp.length - 1; j >= 0; j--) {\n var h = nodesTemp[j];\n var replace = '<' + tagName.toLowerCase() + ' '\n + this.domNode.attributes(h) + '>' + h.innerHTML + '';\n this.domNode.replaceWith(nodesTemp[j], replace);\n }\n };\n Lists.prototype.cleanNode = function () {\n var liParents = this.parent.editableElement.querySelectorAll('ol + ol, ul + ul');\n for (var c = 0; c < liParents.length; c++) {\n var node = liParents[c];\n if (this.domNode.isList(node.previousElementSibling) &&\n this.domNode.openTagString(node) === this.domNode.openTagString(node.previousElementSibling)) {\n var contentNodes = this.domNode.contents(node);\n for (var f = 0; f < contentNodes.length; f++) {\n node.previousElementSibling.appendChild(contentNodes[f]);\n }\n node.parentNode.removeChild(node);\n }\n else if (!isNullOrUndefined(node.getAttribute('level'))) {\n if (node.tagName === node.previousElementSibling.tagName) {\n node.previousElementSibling.lastChild.append(node);\n }\n }\n }\n };\n Lists.prototype.findUnSelected = function (temp, elements) {\n temp = temp.slice().reverse();\n if (temp.length > 0) {\n var rightIndent = [];\n var indentElements = [];\n var lastElement = elements[elements.length - 1];\n var lastElementChild = [];\n var childElements = [];\n lastElementChild = (lastElement.childNodes);\n for (var z = 0; z < lastElementChild.length; z++) {\n if (lastElementChild[z].tagName === 'OL' || lastElementChild[z].tagName === 'UL') {\n var childLI = lastElementChild[z]\n .querySelectorAll('li');\n if (childLI.length > 0) {\n for (var y = 0; y < childLI.length; y++) {\n childElements.push(childLI[y]);\n }\n }\n }\n }\n for (var i = 0; i < childElements.length; i++) {\n var count = 0;\n for (var j = 0; j < temp.length; j++) {\n if (!childElements[i].contains((temp[j]))) {\n count = count + 1;\n }\n }\n if (count === temp.length) {\n indentElements.push(childElements[i]);\n }\n }\n if (indentElements.length > 0) {\n for (var x = 0; x < indentElements.length; x++) {\n if (this.domNode.contents(indentElements[x])[0].nodeName !== 'OL' &&\n this.domNode.contents(indentElements[x])[0].nodeName !== 'UL') {\n rightIndent.push(indentElements[x]);\n }\n }\n }\n if (rightIndent.length > 0) {\n this.nestedList(rightIndent);\n }\n }\n };\n Lists.prototype.revertList = function (elements, e) {\n var temp = [];\n for (var i = elements.length - 1; i >= 0; i--) {\n for (var j = i - 1; j >= 0; j--) {\n if (elements[j].contains((elements[i])) || elements[j] === elements[i]) {\n temp.push(elements[i]);\n elements.splice(i, 1);\n break;\n }\n }\n }\n this.findUnSelected(temp, elements);\n var viewNode = [];\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (this.domNode.contents(element)[0].nodeType === 3 && this.domNode.contents(element)[0].textContent.trim().length === 0) {\n detach(this.domNode.contents(element)[0]);\n }\n var parentNode = elements[i].parentNode;\n var className = element.getAttribute('class');\n if (temp.length === 0) {\n var siblingList = elements[i].querySelectorAll('ul, ol');\n var firstNode = siblingList[0];\n if (firstNode) {\n var child = firstNode\n .querySelectorAll('li');\n if (child) {\n var nestedElement = createElement(firstNode.tagName);\n append([nestedElement], firstNode.parentNode);\n var nestedElementLI = createElement('li', { styles: 'list-style-type: none;' });\n append([nestedElementLI], nestedElement);\n append([firstNode], nestedElementLI);\n }\n }\n }\n if (element.parentNode.insertBefore(this.closeTag(parentNode.tagName), element), 'LI' === parentNode.parentNode.tagName || 'OL' === parentNode.parentNode.tagName ||\n 'UL' === parentNode.parentNode.tagName) {\n element.parentNode.insertBefore(this.closeTag('LI'), element);\n }\n else {\n if (DEFAULT_TAG && 0 === element.querySelectorAll(BLOCK_TAGS.join(', ')).length) {\n var wrapperclass = isNullOrUndefined(className) ? ' class=\"e-rte-wrap-inner\"' :\n ' class=\"' + className + ' e-rte-wrap-inner\"';\n var wrapper = '<' + DEFAULT_TAG + wrapperclass +\n this.domNode.attributes(parentNode) + '>';\n if (e.enterAction !== 'BR') {\n this.domNode.wrapInner(element, this.domNode.parseHTMLFragment(wrapper));\n }\n }\n else if (this.domNode.contents(element)[0].nodeType === 3) {\n var replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.parent.domNode.encode(this.domNode.contents(element)[0].textContent));\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else if (this.domNode.contents(element)[0].classList.contains(markerClassName.startSelection) ||\n this.domNode.contents(element)[0].classList.contains(markerClassName.endSelection)) {\n var replace = this.domNode.createTagString(DEFAULT_TAG, parentNode, this.domNode.contents(element)[0].outerHTML);\n this.domNode.replaceWith(this.domNode.contents(element)[0], replace);\n }\n else {\n var childNode = element.firstChild;\n className = childNode.getAttribute('class');\n attributes(childNode, this.domNode.rawAttributes(parentNode));\n if (className && childNode.getAttribute('class')) {\n attributes(childNode, { 'class': className + ' ' + childNode.getAttribute('class') });\n }\n }\n append([this.openTag('LI')], element);\n prepend([this.closeTag('LI')], element);\n }\n this.domNode.insertAfter(this.openTag(parentNode.tagName), element);\n if (parentNode.parentNode.tagName === 'LI') {\n parentNode = parentNode.parentNode.parentNode;\n }\n if (viewNode.indexOf(parentNode) < 0) {\n viewNode.push(parentNode);\n }\n }\n for (var i = 0; i < viewNode.length; i++) {\n var node = viewNode[i];\n var nodeInnerHtml = node.innerHTML;\n var closeTag = /<\\/span>/g;\n var openTag = /<\\/span>/g;\n nodeInnerHtml = nodeInnerHtml.replace(closeTag, '');\n nodeInnerHtml = nodeInnerHtml.replace(openTag, '<$1 ' + this.domNode.attributes(node) + '>');\n this.domNode.replaceWith(node, this.domNode.openTagString(node) + nodeInnerHtml.trim() + this.domNode.closeTagString(node));\n }\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n Lists.prototype.openTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n Lists.prototype.closeTag = function (type) {\n return this.domNode.parseHTMLFragment('');\n };\n return Lists;\n}());\n\n/**\n * Node appending methods.\n *\n * @hidden\n */\nvar InsertMethods = /** @__PURE__ @class */ (function () {\n function InsertMethods() {\n }\n /**\n * WrapBefore method\n *\n * @param {Text} textNode - specifies the text node\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {Text} - returns the text value\n * @hidden\n * @deprecated\n */\n InsertMethods.WrapBefore = function (textNode, parentNode, isAfter) {\n parentNode.innerText = textNode.textContent;\n //eslint-disable-next-line\n (!isAfter) ? this.AppendBefore(parentNode, textNode) : this.AppendBefore(parentNode, textNode, true);\n if (textNode.parentNode) {\n textNode.parentNode.removeChild(textNode);\n }\n return parentNode.childNodes[0];\n };\n /**\n * Wrap method\n *\n * @param {HTMLElement} childNode - specifies the child node\n * @param {HTMLElement} parentNode - specifies the parent node.\n * @returns {HTMLElement} - returns the element\n * @hidden\n * @deprecated\n */\n InsertMethods.Wrap = function (childNode, parentNode) {\n this.AppendBefore(parentNode, childNode);\n parentNode.appendChild(childNode);\n return childNode;\n };\n /**\n * unwrap method\n *\n * @param {Node} node - specifies the node element.\n * @returns {Node[]} - returns the array of value\n * @hidden\n * @deprecated\n */\n InsertMethods.unwrap = function (node) {\n var parent = node.parentNode;\n var child = [];\n for (; node.firstChild; null) {\n child.push(parent.insertBefore(node.firstChild, node));\n }\n parent.removeChild(node);\n return child;\n };\n /**\n * AppendBefore method\n *\n * @param {HTMLElement} textNode - specifies the element\n * @param {HTMLElement} parentNode - specifies the parent node\n * @param {boolean} isAfter - specifies the boolean value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n InsertMethods.AppendBefore = function (textNode, parentNode, isAfter) {\n return (parentNode.parentNode) ? ((!isAfter) ? parentNode.parentNode.insertBefore(textNode, parentNode)\n : parentNode.parentNode.insertBefore(textNode, parentNode.nextSibling)) :\n parentNode;\n };\n return InsertMethods;\n}());\n\n/**\n * Split the Node based on selection\n *\n * @hidden\n * @deprecated\n */\nvar NodeCutter = /** @__PURE__ @class */ (function () {\n function NodeCutter() {\n this.enterAction = 'P';\n this.position = -1;\n this.nodeSelection = new NodeSelection();\n }\n // Split Selection Node\n /**\n * GetSpliceNode method\n *\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @returns {Node} - returns the node value\n * @hidden\n * @deprecated\n */\n NodeCutter.prototype.GetSpliceNode = function (range, node) {\n node = this.SplitNode(range, node, true);\n node = this.SplitNode(range, node, false);\n return node;\n };\n /**\n * @param {Range} range - specifies the range\n * @param {HTMLElement} node - specifies the node element.\n * @param {boolean} isCollapsed - specifies the boolean value\n * @returns {HTMLElement} - returns the element\n * @hidden\n * @deprecated\n */\n NodeCutter.prototype.SplitNode = function (range, node, isCollapsed) {\n if (node) {\n var clone = range.cloneRange();\n var parent_1 = node.parentNode;\n var index = this.nodeSelection.getIndex(node);\n clone.collapse(isCollapsed);\n // eslint-disable-next-line\n (isCollapsed) ? clone.setStartBefore(node) : clone.setEndAfter(node);\n var fragment = clone.extractContents();\n if (isCollapsed) {\n node = parent_1.childNodes[index];\n fragment = this.spliceEmptyNode(fragment, false);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n node = divNode.firstChild;\n parent_1.appendChild(node);\n }\n }\n }\n }\n else {\n node = parent_1.childNodes.length > 1 ? parent_1.childNodes[index] :\n parent_1.childNodes[0];\n fragment = this.spliceEmptyNode(fragment, true);\n if (fragment && fragment.childNodes.length > 0) {\n var isEmpty = (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG'\n && this.isRteElm(fragment) && fragment.textContent === '') ? true : false;\n if (!isEmpty) {\n if (node) {\n InsertMethods.AppendBefore(fragment, node, true);\n }\n else {\n parent_1.appendChild(fragment);\n var divNode = document.createElement('div');\n divNode.innerHTML = '';\n parent_1.insertBefore(divNode.firstChild, parent_1.firstChild);\n node = parent_1.firstChild;\n }\n }\n }\n }\n return node;\n }\n else {\n return null;\n }\n };\n NodeCutter.prototype.isRteElm = function (fragment) {\n var result = true;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName !== 'IMG') {\n var firstChild = fragment.childNodes[0];\n for (var i = 0; !isNullOrUndefined(firstChild.childNodes) && i < firstChild.childNodes.length; i++) {\n if (firstChild.childNodes[i].nodeName === 'IMG' || (firstChild.childNodes[i].nodeName === 'SPAN' &&\n (firstChild.childNodes[i].classList.contains('e-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-embed-video-wrap') ||\n firstChild.childNodes[i].classList.contains('e-audio-wrap')))) {\n result = false;\n }\n }\n }\n else {\n result = true;\n }\n return result;\n };\n NodeCutter.prototype.spliceEmptyNode = function (fragment, isStart) {\n var len;\n if (fragment.childNodes.length === 1 && fragment.childNodes[0].nodeName === '#text' &&\n fragment.childNodes[0].textContent === '' || fragment.textContent === '') {\n len = -1;\n }\n else {\n len = fragment.childNodes.length - 1;\n }\n if (len > -1 && !isStart) {\n this.spliceEmptyNode(fragment.childNodes[len], isStart);\n }\n else if (len > -1) {\n this.spliceEmptyNode(fragment.childNodes[0], isStart);\n }\n else if (fragment.nodeType !== 3 && fragment.nodeType !== 11 && fragment.nodeName !== 'IMG' && !(fragment.classList.contains('e-video-wrap')) && !(fragment.classList.contains('e-audio-wrap'))) {\n fragment.parentNode.removeChild(fragment);\n }\n return fragment;\n };\n // Cursor Position split\n NodeCutter.prototype.GetCursorStart = function (indexes, index, isStart) {\n indexes = (isStart) ? indexes : indexes.reverse();\n var position = indexes[0];\n for (var num = 0; num < indexes.length && ((isStart) ? (indexes[num] < index) : (indexes[num] >= index)); num++) {\n position = indexes[num];\n }\n return position;\n };\n /**\n * GetCursorRange method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Range} - returns the range value\n * @hidden\n * @deprecated\n */\n NodeCutter.prototype.GetCursorRange = function (docElement, range, node) {\n var cursorRange = docElement.createRange();\n var indexes = [];\n indexes.push(0);\n var str = this.TrimLineBreak(node.data);\n var index = str.indexOf(' ', 0);\n while (index !== -1) {\n if (indexes.indexOf(index) < 0) {\n indexes.push(index);\n }\n if (new RegExp('\\\\s').test(str[index - 1]) && (indexes.indexOf(index - 1) < 0)) {\n indexes.push(index - 1);\n }\n if (new RegExp('\\\\s').test(str[index + 1])) {\n indexes.push(index + 1);\n }\n index = str.indexOf(' ', (index + 1));\n }\n indexes.push(str.length);\n if ((indexes.indexOf(range.startOffset) >= 0)\n || ((indexes.indexOf(range.startOffset - 1) >= 0) && (range.startOffset !== 1\n || (range.startOffset === 1 && new RegExp('\\\\s').test(str[0])))\n || ((indexes[indexes.length - 1] - 1) === range.startOffset))) {\n cursorRange = range;\n this.position = 1;\n }\n else {\n var startOffset = this.GetCursorStart(indexes, range.startOffset, true);\n this.position = range.startOffset - startOffset;\n cursorRange.setStart(range.startContainer, startOffset);\n cursorRange.setEnd(range.startContainer, this.GetCursorStart(indexes, range.startOffset, false));\n }\n return cursorRange;\n };\n /**\n * GetCursorNode method\n *\n * @param {Document} docElement - specifies the document\n * @param {Range} range - specifies the range\n * @param {Node} node - specifies the node.\n * @returns {Node} - returns the node value\n * @hidden\n * @deprecated\n */\n NodeCutter.prototype.GetCursorNode = function (docElement, range, node) {\n return this.GetSpliceNode(this.GetCursorRange(docElement, range, node), node);\n };\n /**\n * TrimLineBreak method\n *\n * @param {string} line - specifies the string value.\n * @returns {string} - returns the string\n * @hidden\n * @deprecated\n */\n NodeCutter.prototype.TrimLineBreak = function (line) {\n return line.replace(/(\\r\\n\\t|\\n|\\r\\t)/gm, ' ');\n };\n return NodeCutter;\n}());\n\n/**\n * Formats internal component\n *\n * @hidden\n * @deprecated\n */\nvar Formats = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @hidden\n * @deprecated\n */\n function Formats(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n Formats.prototype.addEventListener = function () {\n this.parent.observer.on(FORMAT_TYPE, this.applyFormats, this);\n this.parent.observer.on(KEY_UP_HANDLER, this.onKeyUp, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Formats.prototype.getParentNode = function (node) {\n for (; node.parentNode && node.parentNode !== this.parent.editableElement; null) {\n node = node.parentNode;\n }\n return node;\n };\n Formats.prototype.onKeyUp = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var endCon = range.endContainer;\n var lastChild = endCon.lastChild;\n if (e.event.which === 13 && range.startContainer === endCon && endCon.nodeType !== 3) {\n var pTag = createElement('p');\n pTag.innerHTML = '
    ';\n if (!isNullOrUndefined(lastChild) && lastChild && lastChild.nodeName === 'BR' && (lastChild.previousSibling && lastChild.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, lastChild);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n else {\n var brNode = this.parent.nodeSelection.getSelectionNodeCollectionBr(range)[0];\n if (!isNullOrUndefined(brNode) && brNode.nodeName === 'BR' && (brNode.previousSibling && brNode.previousSibling.nodeName === 'TABLE')) {\n endCon.replaceChild(pTag, brNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, pTag, 0);\n }\n }\n }\n };\n Formats.prototype.onKeyDown = function (e) {\n if (e.event.which === 13) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var startCon = (range.startContainer.textContent.length === 0 || range.startContainer.nodeName === 'PRE')\n ? range.startContainer : range.startContainer.parentElement;\n var endCon = (range.endContainer.textContent.length === 0 || range.endContainer.nodeName === 'PRE')\n ? range.endContainer : range.endContainer.parentElement;\n var preElem = closest(startCon, 'pre');\n var endPreElem = closest(endCon, 'pre');\n var liParent = !isNullOrUndefined(preElem) && !isNullOrUndefined(preElem.parentElement) && preElem.parentElement.tagName === 'LI';\n if (liParent) {\n return;\n }\n if (((isNullOrUndefined(preElem) && !isNullOrUndefined(endPreElem)) || (!isNullOrUndefined(preElem) && isNullOrUndefined(endPreElem)))) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, endCon, 0);\n }\n if (e.event.which === 13 && !isNullOrUndefined(preElem) && !isNullOrUndefined(endPreElem)) {\n e.event.preventDefault();\n this.deleteContent(range);\n this.removeCodeContent(range);\n range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var lastEmpty = range.startContainer.childNodes[range.endOffset];\n var lastBeforeBr = range.startContainer.childNodes[range.endOffset - 1];\n var startParent = range.startContainer;\n if (!isNullOrUndefined(lastEmpty) && !isNullOrUndefined(lastBeforeBr) && isNullOrUndefined(lastEmpty.nextSibling) &&\n lastEmpty.nodeName === 'BR' && lastBeforeBr.nodeName === 'BR') {\n this.paraFocus(range.startContainer, e.enterAction);\n }\n else if ((startParent.textContent.charCodeAt(0) === 8203 &&\n startParent.textContent.length === 1) || startParent.textContent.length === 0) {\n //Double enter with any parent tag for the node\n while (startParent.parentElement.nodeName !== 'PRE' &&\n (startParent.textContent.length === 1 || startParent.textContent.length === 0)) {\n startParent = startParent.parentElement;\n }\n if (!isNullOrUndefined(startParent.previousSibling) && startParent.previousSibling.nodeName === 'BR' &&\n isNullOrUndefined(startParent.nextSibling)) {\n this.paraFocus(startParent.parentElement);\n }\n else {\n this.isNotEndCursor(preElem, range);\n }\n }\n else {\n //Cursor at start and middle\n this.isNotEndCursor(preElem, range);\n }\n }\n }\n };\n Formats.prototype.removeCodeContent = function (range) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(65279), 'g');\n if (!isNullOrUndefined(range.endContainer.textContent.match(regEx))) {\n var pointer = range.endContainer.textContent.charCodeAt(range.endOffset - 1) === 65279 ?\n range.endOffset - 2 : range.endOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n if (range.endContainer.textContent === '') {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer.parentElement, 0);\n }\n else {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, range.endContainer, pointer);\n }\n }\n };\n Formats.prototype.deleteContent = function (range) {\n if (range.startContainer !== range.endContainer || range.startOffset !== range.endOffset) {\n range.deleteContents();\n }\n };\n Formats.prototype.paraFocus = function (referNode, enterAction) {\n var insertTag;\n if (enterAction === 'DIV') {\n insertTag = createElement('div');\n insertTag.innerHTML = '
    ';\n }\n else if (enterAction === 'BR') {\n insertTag = createElement('br');\n }\n else {\n insertTag = createElement('p');\n insertTag.innerHTML = '
    ';\n }\n this.parent.domNode.insertAfter(insertTag, referNode);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, insertTag, 0);\n detach(referNode.lastChild);\n };\n Formats.prototype.isNotEndCursor = function (preElem, range) {\n var nodeCutter = new NodeCutter();\n var isEnd = range.startOffset === preElem.lastChild.textContent.length &&\n preElem.lastChild.textContent === range.startContainer.textContent;\n //Cursor at start point\n if (preElem.textContent.indexOf(range.startContainer.textContent) === 0 &&\n ((range.startOffset === 0 && range.endOffset === 0) || range.startContainer.nodeName === 'PRE')) {\n this.insertMarker(preElem, range);\n var brTag = createElement('br');\n preElem.childNodes[range.endOffset].parentElement.insertBefore(brTag, preElem.childNodes[range.endOffset]);\n }\n else {\n //Cursor at middle\n var cloneNode = nodeCutter.SplitNode(range, preElem, true);\n this.insertMarker(preElem, range);\n var previousSib = preElem.previousElementSibling;\n if (previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + cloneNode.innerHTML);\n detach(preElem);\n }\n }\n //To place the cursor position\n this.setCursorPosition(isEnd, preElem);\n };\n Formats.prototype.setCursorPosition = function (isEnd, preElem) {\n var isEmpty = false;\n var markerElem = this.parent.editableElement.querySelector('.tempSpan');\n var mrkParentElem = markerElem.parentElement;\n // eslint-disable-next-line\n markerElem.parentNode.textContent === '' ? isEmpty = true :\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n if (isEnd) {\n if (isEmpty) {\n //Enter press when pre element is empty\n if (mrkParentElem === preElem) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n else {\n this.focusSelectionParent(markerElem, mrkParentElem);\n }\n }\n else {\n var brElm = createElement('br');\n this.parent.domNode.insertAfter(brElm, markerElem);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, markerElem, 0);\n detach(markerElem);\n }\n }\n else {\n // eslint-disable-next-line\n isEmpty ? this.focusSelectionParent(markerElem, mrkParentElem) : detach(markerElem);\n }\n };\n Formats.prototype.focusSelectionParent = function (markerElem, tempSpanPElem) {\n detach(markerElem);\n tempSpanPElem.innerHTML = '\\u200B';\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, tempSpanPElem, 0);\n };\n Formats.prototype.insertMarker = function (preElem, range) {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n if (range.startContainer.nodeName === 'PRE') {\n preElem.childNodes[range.endOffset].parentElement.insertBefore(tempSpan, preElem.childNodes[range.endOffset]);\n }\n else {\n range.startContainer.parentElement.insertBefore(tempSpan, range.startContainer);\n }\n };\n Formats.prototype.applyFormats = function (e) {\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var isSelectAll = false;\n if (this.parent.editableElement === range.endContainer &&\n !isNullOrUndefined(this.parent.editableElement.children[range.endOffset - 1]) &&\n this.parent.editableElement.children[range.endOffset - 1].tagName === 'TABLE' && !range.collapsed) {\n isSelectAll = true;\n }\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var formatsNodes = this.parent.domNode.blockNodes();\n if (e.enterAction === 'BR') {\n this.setSelectionBRConfig();\n var allSelectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument);\n var selectedNodes = this.parent.nodeSelection.getSelectionNodes(allSelectedNode);\n var currentFormatNodes = [];\n if (selectedNodes.length === 0) {\n selectedNodes.push(formatsNodes[0]);\n }\n for (var i = 0; i < selectedNodes.length; i++) {\n var currentNode = selectedNodes[i];\n var previousCurrentNode = void 0;\n while (!this.parent.domNode.isBlockNode(currentNode) && currentNode !== this.parent.editableElement) {\n previousCurrentNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n if (this.parent.domNode.isBlockNode(currentNode) && currentNode === this.parent.editableElement) {\n currentFormatNodes.push(previousCurrentNode);\n }\n }\n for (var i = 0; i < currentFormatNodes.length; i++) {\n if (!this.parent.domNode.isBlockNode(currentFormatNodes[i])) {\n var currentNode = currentFormatNodes[i];\n var previousNode = currentNode;\n while (currentNode === this.parent.editableElement) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n var tempElem = void 0;\n if (this.parent.domNode.isBlockNode(previousNode.parentElement) &&\n previousNode.parentElement === this.parent.editableElement) {\n tempElem = createElement('div');\n previousNode.parentElement.insertBefore(tempElem, previousNode);\n tempElem.appendChild(previousNode);\n }\n else {\n tempElem = previousNode;\n }\n var preNode = tempElem.previousSibling;\n while (!isNullOrUndefined(preNode) && preNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(preNode)) {\n tempElem.firstChild.parentElement.insertBefore(preNode, tempElem.firstChild);\n preNode = tempElem.previousSibling;\n }\n if (!isNullOrUndefined(preNode) && preNode.nodeName === 'BR') {\n detach(preNode);\n }\n var postNode = tempElem.nextSibling;\n while (!isNullOrUndefined(postNode) && postNode.nodeName !== 'BR' &&\n !this.parent.domNode.isBlockNode(postNode)) {\n tempElem.appendChild(postNode);\n postNode = tempElem.nextSibling;\n }\n if (!isNullOrUndefined(postNode) && postNode.nodeName === 'BR') {\n detach(postNode);\n }\n }\n }\n this.setSelectionBRConfig();\n formatsNodes = this.parent.domNode.blockNodes();\n }\n for (var i = 0; i < formatsNodes.length; i++) {\n var parentNode = void 0;\n var replaceHTML = void 0;\n if (e.subCommand.toLowerCase() === 'blockquote') {\n parentNode = this.getParentNode(formatsNodes[i]);\n replaceHTML = this.parent.domNode.isList(parentNode) ||\n parentNode.tagName === 'TABLE' ? parentNode.outerHTML : parentNode.innerHTML;\n }\n else {\n parentNode = formatsNodes[i];\n replaceHTML = parentNode.innerHTML;\n }\n if ((e.subCommand.toLowerCase() === parentNode.tagName.toLowerCase() &&\n (e.subCommand.toLowerCase() !== 'pre' ||\n (!isNullOrUndefined(e.exeValue) && e.exeValue.name === 'dropDownSelect'))) ||\n isNullOrUndefined(parentNode.parentNode) ||\n (parentNode.tagName === 'TABLE' && e.subCommand.toLowerCase() === 'pre')) {\n continue;\n }\n this.cleanFormats(parentNode, e.subCommand);\n var replaceNode = (e.subCommand.toLowerCase() === 'pre' && parentNode.tagName.toLowerCase() === 'pre') ?\n 'p' : e.subCommand;\n var replaceTag = this.parent.domNode.createTagString(replaceNode, parentNode, replaceHTML.replace(/>\\s+<'));\n if (parentNode.tagName === 'LI') {\n parentNode.innerHTML = '';\n parentNode.insertAdjacentHTML('beforeend', replaceTag);\n }\n else {\n this.parent.domNode.replaceWith(parentNode, replaceTag);\n }\n }\n this.preFormatMerge();\n var startNode = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endNode = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (!isNullOrUndefined(startNode) && !isNullOrUndefined(endNode)) {\n startNode = startNode.lastChild;\n endNode = endNode.lastChild;\n }\n save = this.parent.domNode.saveMarker(save, null);\n if (isIDevice$1()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n if (isSelectAll) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startNode, endNode, 0, endNode.textContent.length);\n }\n else {\n save.restore();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n Formats.prototype.setSelectionBRConfig = function () {\n var startElem = this.parent.editableElement.querySelector('.' + markerClassName.startSelection);\n var endElem = this.parent.editableElement.querySelector('.' + markerClassName.endSelection);\n if (isNullOrUndefined(endElem)) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, startElem, 0);\n }\n else {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, startElem, endElem, 0, 0);\n }\n };\n Formats.prototype.preFormatMerge = function () {\n var preNodes = this.parent.editableElement.querySelectorAll('PRE');\n if (!isNullOrUndefined(preNodes)) {\n for (var i = 0; i < preNodes.length; i++) {\n var previousSib = preNodes[i].previousElementSibling;\n if (!isNullOrUndefined(previousSib) && previousSib.tagName === 'PRE') {\n previousSib.insertAdjacentHTML('beforeend', '
    ' + preNodes[i].innerHTML);\n detach(preNodes[i]);\n }\n }\n }\n };\n Formats.prototype.cleanFormats = function (element, tagName) {\n var ignoreAttr = ['display', 'font-size', 'margin-top', 'margin-bottom', 'margin-left', 'margin-right', 'font-weight'];\n tagName = tagName.toLowerCase();\n for (var i = 0; i < ignoreAttr.length && (tagName !== 'p' && tagName !== 'blockquote' && tagName !== 'pre'); i++) {\n element.style.removeProperty(ignoreAttr[i]);\n }\n };\n return Formats;\n}());\n\n/**\n * Insert a HTML Node or Text\n *\n * @hidden\n * @deprecated\n */\nvar InsertHtml = /** @__PURE__ @class */ (function () {\n function InsertHtml() {\n }\n InsertHtml.Insert = function (docElement, insertNode, editNode, isExternal, enterAction) {\n var node;\n if (typeof insertNode === 'string') {\n var divNode = document.createElement('div');\n divNode.innerHTML = insertNode;\n node = isExternal ? divNode : divNode.firstChild;\n }\n else {\n if (isExternal && !(!isNullOrUndefined(insertNode) && !isNullOrUndefined(insertNode.classList) &&\n insertNode.classList.contains('pasteContent'))) {\n var divNode = document.createElement('div');\n divNode.appendChild(insertNode);\n node = divNode;\n }\n else {\n node = insertNode;\n }\n }\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n if (range.startContainer === editNode && range.startContainer === range.endContainer && range.startOffset === 0 &&\n range.startOffset === range.endOffset && editNode.textContent.length === 0 &&\n (editNode.children[0].tagName === 'P' || (editNode.children[0].tagName === 'BR'))) {\n nodeSelection.setSelectionText(docElement, range.startContainer.children[0], range.startContainer.children[0], 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n if (range.startContainer.nodeName === 'BR' && range.startOffset === 0 && range.startOffset === range.endOffset &&\n range.startContainer === range.endContainer) {\n var currentIndex = Array.prototype.slice.call(range.startContainer.parentElement.childNodes).indexOf(range.startContainer);\n nodeSelection.setSelectionText(docElement, range.startContainer.parentElement, range.startContainer.parentElement, currentIndex, currentIndex);\n range = nodeSelection.getRange(docElement);\n }\n var isCursor = range.startOffset === range.endOffset && range.startOffset === 0 &&\n range.startContainer === range.endContainer;\n var isCollapsed = range.collapsed;\n var nodes = this.getNodeCollection(range, nodeSelection, node);\n var closestParentNode = (node.nodeName.toLowerCase() === 'table') ? this.closestEle(nodes[0].parentNode, editNode) : nodes[0];\n if (isExternal || (!isNullOrUndefined(node) && !isNullOrUndefined(node.classList) &&\n node.classList.contains('pasteContent'))) {\n this.pasteInsertHTML(nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction);\n return;\n }\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n var preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n var sibNode = preNode.previousSibling;\n var parentNode = preNode.parentNode;\n if (nodes.length === 1 || (node.nodeName.toLowerCase() === 'table' && preNode.childElementCount === 0)) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else {\n var lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNullOrUndefined(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n range.extractContents();\n if (insertNode.tagName === 'TABLE') {\n this.removeEmptyElements(editNode);\n }\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].nodeType !== 3 && nodes[index].parentNode != null) {\n if (nodes[index].nodeName === 'IMG') {\n continue;\n }\n nodes[index].parentNode.removeChild(nodes[index]);\n }\n }\n if (sibNode) {\n InsertMethods.AppendBefore(node, sibNode, true);\n }\n else {\n var previousNode = null;\n while (parentNode !== editNode && parentNode.firstChild &&\n (parentNode.textContent.trim() === '')) {\n var parentNode1 = parentNode.parentNode;\n previousNode = parentNode;\n parentNode = parentNode1;\n }\n if (previousNode !== null) {\n parentNode = previousNode;\n }\n if (parentNode.firstChild && (parentNode !== editNode ||\n (node.nodeName === 'TABLE' && isCursor && parentNode === range.startContainer &&\n parentNode === range.endContainer))) {\n if (parentNode.textContent.trim() === '' && parentNode !== editNode) {\n InsertMethods.AppendBefore(node, parentNode, false);\n detach(parentNode);\n }\n else {\n InsertMethods.AppendBefore(node, parentNode.firstChild, false);\n }\n }\n else {\n parentNode.appendChild(node);\n }\n }\n if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.childNodes.length);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, 0, node.textContent.length);\n }\n }\n else {\n range.deleteContents();\n if (isCursor && range.startContainer.textContent === '' && range.startContainer.nodeName !== 'BR') {\n range.startContainer.innerHTML = '';\n }\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(node);\n range.insertNode(frag);\n }\n else if (range.startContainer.nodeType === 1 && range.startContainer.nodeName.toLowerCase() === 'hr'\n && range.endContainer.nodeName.toLowerCase() === 'hr') {\n var paraElem = range.startContainer.nextElementSibling;\n if (paraElem) {\n if (paraElem.querySelector('br')) {\n detach(paraElem.querySelector('br'));\n }\n paraElem.appendChild(node);\n }\n }\n else {\n if (range.startContainer.nodeName === 'BR') {\n range.startContainer.parentElement.insertBefore(node, range.startContainer);\n }\n else {\n range.insertNode(node);\n }\n }\n if (node.nodeType !== 3 && node.childNodes.length > 0) {\n nodeSelection.setSelectionText(docElement, node, node, 1, 1);\n }\n else if (node.nodeName === 'IMG') {\n this.imageFocus(node, nodeSelection, docElement);\n }\n else if (node.nodeType !== 3) {\n nodeSelection.setSelectionContents(docElement, node);\n }\n else {\n nodeSelection.setSelectionText(docElement, node, node, node.textContent.length, node.textContent.length);\n }\n }\n };\n InsertHtml.pasteInsertHTML = function (nodes, node, range, nodeSelection, nodeCutter, docElement, isCollapsed, closestParentNode, editNode, enterAction) {\n var isCursor = range.startOffset === range.endOffset &&\n range.startContainer === range.endContainer;\n if (isCursor && range.startContainer === editNode && editNode.textContent === '') {\n var currentBlockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n nodeSelection.setSelectionText(docElement, currentBlockNode, currentBlockNode, 0, 0);\n range = nodeSelection.getRange(docElement);\n }\n var lasNode;\n var sibNode;\n var isSingleNode;\n var preNode;\n if (editNode !== range.startContainer && ((!isCollapsed && !(closestParentNode.nodeType === Node.ELEMENT_NODE &&\n TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) !== -1))\n || (node.nodeName.toLowerCase() === 'table' && closestParentNode &&\n TABLE_BLOCK_TAGS.indexOf(closestParentNode.tagName.toLocaleLowerCase()) === -1))) {\n preNode = nodeCutter.GetSpliceNode(range, closestParentNode);\n sibNode = isNullOrUndefined(preNode.previousSibling) ? preNode.parentNode.previousSibling : preNode.previousSibling;\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n isSingleNode = true;\n }\n else {\n lasNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length - 1].parentElement);\n lasNode = isNullOrUndefined(lasNode) ? preNode : lasNode;\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n isSingleNode = false;\n }\n }\n var containsBlockNode = false;\n this.removingComments(node);\n var allChildNodes = node.childNodes;\n for (var i = 0; i < allChildNodes.length; i++) {\n if (BLOCK_TAGS.indexOf(allChildNodes[i].nodeName.toLocaleLowerCase()) >= 0) {\n containsBlockNode = true;\n break;\n }\n }\n var lastSelectionNode;\n var fragment = document.createDocumentFragment();\n if (!containsBlockNode) {\n if (!isCursor) {\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n if (isSingleNode) {\n preNode.parentNode.replaceChild(fragment, preNode);\n }\n else {\n range.deleteContents();\n detach(lasNode);\n // eslint-disable-next-line\n !isNullOrUndefined(sibNode) ? sibNode.parentNode.appendChild(fragment) : editNode.appendChild(fragment);\n }\n }\n else {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n var nearestAnchor = closest(range.startContainer.parentElement, 'a');\n if (range.startContainer.nodeType === 3 && nearestAnchor && closest(nearestAnchor, 'span')) {\n var immediateBlockNode = this.getImmediateBlockNode(range.startContainer, editNode);\n if (immediateBlockNode.querySelectorAll('br').length > 0) {\n detach(immediateBlockNode.querySelector('br'));\n }\n var rangeElement = closest(nearestAnchor, 'span');\n rangeElement.appendChild(tempSpan);\n }\n else {\n range.insertNode(tempSpan);\n }\n while (node.firstChild) {\n lastSelectionNode = node.firstChild;\n fragment.appendChild(node.firstChild);\n }\n tempSpan.parentNode.replaceChild(fragment, tempSpan);\n }\n }\n else {\n var parentElem = range.startContainer;\n while (!isNullOrUndefined(parentElem) && parentElem.nodeName !== 'PRE' && parentElem !== editNode) {\n parentElem = parentElem.parentElement;\n }\n if (!isNullOrUndefined(node) && !isNullOrUndefined(parentElem) && parentElem.nodeName === 'PRE') {\n range.insertNode(node);\n lastSelectionNode = node.lastChild;\n }\n else {\n this.insertTempNode(range, node, nodes, nodeCutter, editNode);\n var isFirstTextNode = true;\n var isPreviousInlineElem = void 0;\n var paraElm = void 0;\n var previousParent = void 0;\n if (!this.contentsDeleted) {\n range.deleteContents();\n }\n while (node.firstChild) {\n if (node.firstChild.nodeName === '#text' && node.firstChild.textContent.trim() === '') {\n detach(node.firstChild);\n continue;\n }\n if (node.firstChild.nodeName === '#text' && isFirstTextNode ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0 && isFirstTextNode)) {\n lastSelectionNode = node.firstChild;\n if (isNullOrUndefined(node.previousElementSibling)) {\n var firstParaElm = createElement('p');\n node.parentElement.insertBefore(firstParaElm, node);\n }\n if (node.previousElementSibling.nodeName === 'BR') {\n node.parentElement.insertBefore(node.firstChild, node);\n }\n else {\n node.previousElementSibling.appendChild(node.firstChild);\n }\n }\n else {\n lastSelectionNode = node.firstChild;\n if (node.firstChild.nodeName === '#text' ||\n (this.inlineNode.indexOf(node.firstChild.nodeName.toLocaleLowerCase()) >= 0)) {\n if (!isPreviousInlineElem) {\n paraElm = createElement('p');\n paraElm.appendChild(node.firstChild);\n fragment.appendChild(paraElm);\n }\n else {\n previousParent.appendChild(node.firstChild);\n fragment.appendChild(previousParent);\n }\n previousParent = paraElm;\n isPreviousInlineElem = true;\n }\n else {\n fragment.appendChild(node.firstChild);\n isPreviousInlineElem = false;\n }\n isFirstTextNode = false;\n }\n }\n node.parentNode.replaceChild(fragment, node);\n }\n }\n if (lastSelectionNode.nodeName === '#text') {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n }\n else {\n this.cursorPos(lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction);\n }\n };\n InsertHtml.placeCursorEnd = function (lastSelectionNode, node, nodeSelection, docElement, editNode) {\n lastSelectionNode = lastSelectionNode.nodeName === 'BR' ? (isNullOrUndefined(lastSelectionNode.previousSibling) ? lastSelectionNode.parentNode\n : lastSelectionNode.previousSibling) : lastSelectionNode;\n while (!isNullOrUndefined(lastSelectionNode) && lastSelectionNode.nodeName !== '#text' && lastSelectionNode.nodeName !== 'IMG' &&\n lastSelectionNode.nodeName !== 'BR' && lastSelectionNode.nodeName !== 'HR') {\n lastSelectionNode = lastSelectionNode.lastChild;\n }\n lastSelectionNode = isNullOrUndefined(lastSelectionNode) ? node : lastSelectionNode;\n if (lastSelectionNode.nodeName === 'IMG') {\n this.imageFocus(lastSelectionNode, nodeSelection, docElement);\n }\n else {\n nodeSelection.setSelectionText(docElement, lastSelectionNode, lastSelectionNode, lastSelectionNode.textContent.length, lastSelectionNode.textContent.length);\n }\n this.removeEmptyElements(editNode);\n };\n InsertHtml.getNodeCollection = function (range, nodeSelection, node) {\n var nodes = [];\n if (range.startOffset === range.endOffset && range.startContainer === range.endContainer &&\n range.startContainer.nodeName !== 'BR' && range.startContainer.childNodes.length > 0 &&\n (range.startContainer.nodeName === 'TD' || (range.startContainer.nodeType !== 3 &&\n node.classList && node.classList.contains('pasteContent')))) {\n nodes.push(range.startContainer.childNodes[range.endOffset]);\n }\n else {\n nodes = nodeSelection.getInsertNodeCollection(range);\n }\n return nodes;\n };\n InsertHtml.insertTempNode = function (range, node, nodes, nodeCutter, editNode) {\n if (range.startContainer === editNode && !isNullOrUndefined(range.startContainer.childNodes[range.endOffset - 1]) &&\n range.startContainer.childNodes[range.endOffset - 1].nodeName === 'TABLE') {\n if (isNullOrUndefined(range.startContainer.childNodes[range.endOffset - 1].nextSibling)) {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset - 1].nextSibling);\n }\n }\n else if (range.startContainer === editNode && !isNullOrUndefined(range.startContainer.childNodes[range.endOffset]) &&\n range.startContainer.childNodes[range.endOffset].nodeName === 'TABLE') {\n range.startContainer.insertBefore(node, range.startContainer.childNodes[range.endOffset]);\n }\n else if (range.startContainer === range.endContainer && range.startContainer.nodeType !== 3\n && node.firstChild.nodeName === 'HR') {\n if (range.startContainer.classList.contains('e-content') || range.startContainer.nodeName === 'BODY') {\n range.startContainer.appendChild(node);\n }\n else {\n range.startContainer.parentNode.insertBefore(node, range.startContainer);\n }\n }\n else {\n var blockNode = this.getImmediateBlockNode(nodes[nodes.length - 1], editNode);\n if ((isNullOrUndefined(blockNode) || isNullOrUndefined(blockNode.parentElement)) && range.endContainer.nodeType !== 3) {\n blockNode = range.endContainer;\n range.setEnd(blockNode, range.endContainer.textContent.length);\n }\n if (blockNode.nodeName === 'BODY' && range.startContainer === range.endContainer && range.startContainer.nodeType === 1) {\n blockNode = range.startContainer;\n }\n if (blockNode.closest('LI') && node && node.firstElementChild &&\n ((node).firstElementChild.tagName === 'OL' || node.firstElementChild.tagName === 'UL')) {\n var liNode = void 0;\n while (node.firstElementChild.lastElementChild && node.firstElementChild.lastElementChild.tagName === 'LI') {\n liNode = node.firstElementChild.lastElementChild;\n liNode.style.removeProperty('margin-left');\n liNode.style.removeProperty('margin-top');\n liNode.style.removeProperty('margin-bottom');\n node.firstElementChild.insertAdjacentElement('afterend', liNode);\n }\n }\n if (blockNode.nodeName === 'TD' || blockNode.nodeName === 'TH' || blockNode.nodeName === 'TR') {\n var tempSpan = createElement('span', { className: 'tempSpan' });\n range.insertNode(tempSpan);\n tempSpan.parentNode.replaceChild(node, tempSpan);\n }\n else {\n var nodeSelection = new NodeSelection();\n var currentNode = this.getNodeCollection(range, nodeSelection, node)[this.getNodeCollection(range, nodeSelection, node).length - 1];\n var splitedElm = void 0;\n if ((currentNode.nodeName === 'BR' || currentNode.nodeName === 'HR' ||\n (currentNode.nodeName === '#text' && !isNullOrUndefined(currentNode.parentElement) && currentNode.parentElement.nodeName === 'LI')) &&\n (!isNullOrUndefined(currentNode.parentElement) && currentNode.parentElement.textContent.trim().length === 0)) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNullOrUndefined(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n }\n else if ((currentNode.nodeName === '#text' || currentNode.nodeName === \"BR\") && !isNullOrUndefined(currentNode.parentElement) &&\n (currentNode.parentElement.nodeName === 'LI' || (blockNode === editNode && currentNode.parentElement === blockNode)) &&\n currentNode.parentElement.textContent.trim().length > 0) {\n splitedElm = currentNode;\n if (currentNode.parentElement.nodeName === 'LI' && !isNullOrUndefined(currentNode.nextSibling) &&\n currentNode.nextSibling.nodeName === 'BR') {\n detach(currentNode.nextSibling);\n }\n if (!range.collapsed) {\n range.deleteContents();\n }\n range.insertNode(node);\n this.contentsDeleted = true;\n return;\n }\n else {\n splitedElm = nodeCutter.GetSpliceNode(range, blockNode);\n }\n splitedElm.parentNode.replaceChild(node, splitedElm);\n }\n }\n };\n InsertHtml.cursorPos = function (lastSelectionNode, node, nodeSelection, docElement, editNode, enterAction) {\n lastSelectionNode.classList.add('lastNode');\n editNode.innerHTML = updateTextNode$1(editNode.innerHTML, enterAction);\n lastSelectionNode = editNode.querySelector('.lastNode');\n if (!isNullOrUndefined(lastSelectionNode)) {\n this.placeCursorEnd(lastSelectionNode, node, nodeSelection, docElement, editNode);\n lastSelectionNode.classList.remove('lastNode');\n if (lastSelectionNode.classList.length === 0) {\n lastSelectionNode.removeAttribute('class');\n }\n }\n };\n InsertHtml.imageFocus = function (node, nodeSelection, docElement) {\n var focusNode = document.createTextNode(' ');\n node.parentNode.insertBefore(focusNode, node.nextSibling);\n nodeSelection.setSelectionText(docElement, node.nextSibling, node.nextSibling, 0, 0);\n };\n // eslint-disable-next-line\n InsertHtml.getImmediateBlockNode = function (node, editNode) {\n do {\n node = node.parentNode;\n } while (node && BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n InsertHtml.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n InsertHtml.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNullOrUndefined(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' && element.parentElement.contentEditable !== 'true') {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n InsertHtml.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (SELF_CLOSING_TAGS.indexOf(emptyElements[i].tagName.toLowerCase()) < 0) {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNullOrUndefined(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n InsertHtml.closestEle = function (element, editNode) {\n var el = element;\n while (el && el.nodeType === 1) {\n if (el.parentNode === editNode ||\n (!isNullOrUndefined(el.parentNode.tagName) &&\n IGNORE_BLOCK_TAGS.indexOf(el.parentNode.tagName.toLocaleLowerCase()) !== -1)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n };\n /**\n * Insert method\n *\n * @hidden\n * @deprecated\n */\n InsertHtml.inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n InsertHtml.contentsDeleted = false;\n return InsertHtml;\n}());\n\n/**\n * Link internal component\n *\n * @hidden\n * @deprecated\n */\nvar LinkCommand = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the editor manager\n * @hidden\n * @deprecated\n */\n function LinkCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n LinkCommand.prototype.addEventListener = function () {\n this.parent.observer.on(LINK, this.linkCommand, this);\n };\n LinkCommand.prototype.linkCommand = function (e) {\n switch (e.value.toString().toLocaleLowerCase()) {\n case 'createlink':\n case 'editlink':\n this.createLink(e);\n break;\n case 'openlink':\n this.openLink(e);\n break;\n case 'removelink':\n this.removeLink(e);\n break;\n }\n };\n LinkCommand.prototype.createLink = function (e) {\n var closestAnchor = (!isNullOrUndefined(e.item.selectParent) && e.item.selectParent.length > 0) &&\n closest(e.item.selectParent[0], 'a');\n closestAnchor = !isNullOrUndefined(closestAnchor) ? closestAnchor :\n (!isNullOrUndefined(e.item.selectParent) && e.item.selectParent.length > 0) ? (e.item.selectParent[0]) : null;\n if (!isNullOrUndefined(closestAnchor) && closestAnchor.tagName === 'A') {\n var anchorEle = closestAnchor;\n var linkText = '';\n if (!isNullOrUndefined(e.item.url)) {\n anchorEle.setAttribute('href', e.item.url);\n }\n if (!isNullOrUndefined(e.item.title)) {\n anchorEle.setAttribute('title', e.item.title);\n }\n if (!isNullOrUndefined(e.item.text) && e.item.text !== '') {\n linkText = anchorEle.innerText;\n anchorEle.innerText = e.item.text;\n }\n if (!isNullOrUndefined(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n else {\n anchorEle.removeAttribute('target');\n }\n if (linkText === e.item.text) {\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle, anchorEle, 1, 1);\n e.item.selection.restore();\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchorEle.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchorEle.childNodes[0], anchorEle.childNodes[0], startIndex, anchorEle.childNodes[0].textContent.length);\n }\n }\n else {\n var domSelection = new NodeSelection();\n var range = domSelection.getRange(this.parent.currentDocument);\n if (range.endContainer.nodeName === '#text' && range.startContainer.textContent.length === (range.endOffset + 1) &&\n range.endContainer.textContent.charAt(range.endOffset) === ' ' && range.endContainer.nextSibling.nodeName === 'A') {\n domSelection.setSelectionText(this.parent.currentDocument, range.startContainer, range.endContainer, range.startOffset, range.endOffset + 1);\n range = domSelection.getRange(this.parent.currentDocument);\n }\n var text = isNullOrUndefined(e.item.text) ? true : e.item.text.replace(/ /g, '').localeCompare(range.toString()\n .replace(/\\n/g, ' ').replace(/ /g, '')) < 0;\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13) || e.item.action === 'Paste' || range.collapsed || text) {\n var anchor = this.createAchorNode(e);\n anchor.innerText = e.item.text === '' ? e.item.url : e.item.text;\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n if (e.event && e.event.type === 'keydown' && (e.event.keyCode === 32\n || e.event.keyCode === 13)) {\n var startContainer = e.item.selection.range.startContainer;\n startContainer.textContent = this.removeText(startContainer.textContent, e.item.text);\n }\n else {\n var startIndex = e.item.action === 'Paste' ? anchor.childNodes[0].textContent.length : 0;\n e.item.selection.setSelectionText(this.parent.currentDocument, anchor.childNodes[0], anchor.childNodes[0], startIndex, anchor.childNodes[0].textContent.length);\n }\n }\n else {\n this.createLinkNode(e);\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: 'Links',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n LinkCommand.prototype.createLinkNode = function (e) {\n var domSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = domSelection.getRange(this.parent.currentDocument);\n var nodes = this.getSelectionNodes(domSelection.getNodeCollection(range));\n var save = domSelection.save(range, this.parent.currentDocument);\n var txtArray = [];\n var inlineNodes = [];\n var currentNode;\n var removeNodes = [];\n var anchorNodes = [];\n var finalinlineNodes = [];\n var cloneNode;\n for (var index = 0; index < nodes.length; index++) {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n txtArray[index] = nodes[index];\n }\n for (var i = 0; i < txtArray.length; i++) {\n var check = true;\n currentNode = txtArray[i];\n while (check === true) {\n if (currentNode.parentNode.nodeName === 'A') {\n var anchorEle = currentNode.parentNode;\n currentNode.parentNode.parentNode.insertBefore(anchorEle.firstChild, anchorEle);\n currentNode.parentNode.removeChild(anchorEle);\n }\n if (this.isBlockNode(currentNode.parentNode) || txtArray.length === 0 || i === 0 || i === txtArray.length - 1\n || range.startContainer.nodeType === 3) {\n inlineNodes[i] = currentNode;\n check = false;\n }\n else {\n currentNode = currentNode.parentNode;\n }\n }\n }\n for (var i = 0, j_1 = 0; i < inlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[j_1] = inlineNodes[i];\n }\n if (inlineNodes.length > 1 && i < inlineNodes.length - 1) {\n if ((inlineNodes[i].parentElement === inlineNodes[i + 1].parentElement) &&\n (inlineNodes[i] === inlineNodes[i + 1])) {\n continue;\n }\n else {\n finalinlineNodes[j_1 + 1] = inlineNodes[i + 1];\n j_1++;\n }\n }\n }\n var j = 0;\n anchorNodes[j] = this.createAchorNode(e);\n for (var i = 0; i < finalinlineNodes.length; i++) {\n if (i === 0) {\n cloneNode = finalinlineNodes[i].cloneNode(true);\n anchorNodes[i].appendChild(cloneNode);\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n var cln = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cln);\n }\n else {\n j = j + 1;\n anchorNodes[j] = this.createAchorNode(e);\n cloneNode = finalinlineNodes[i + 1].cloneNode(true);\n anchorNodes[j].appendChild(cloneNode);\n }\n }\n }\n this.parent.nodeSelection.setRange(document, save.range);\n for (var i = 0, j_2 = 0, k = 0; i <= finalinlineNodes.length; i++) {\n if (i === 0) {\n finalinlineNodes[i].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i].nextSibling);\n if (this.parent.domNode.blockNodes().length === 1) {\n this.parent.nodeSelection.setSelectionNode(this.parent.currentDocument, anchorNodes[j_2]);\n }\n removeNodes[k] = finalinlineNodes[i];\n k++;\n }\n if (i < finalinlineNodes.length - 1) {\n if (finalinlineNodes[i].parentNode === finalinlineNodes[i + 1].parentNode) {\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n else {\n j_2 = j_2 + 1;\n finalinlineNodes[i + 1].parentNode.insertBefore(anchorNodes[j_2], finalinlineNodes[i + 1]);\n removeNodes[k] = finalinlineNodes[i + 1];\n k++;\n }\n }\n }\n for (var i = 0; i < removeNodes.length; i++) {\n if (removeNodes[i].parentNode) {\n removeNodes[i].parentNode.removeChild(removeNodes[i]);\n }\n }\n };\n LinkCommand.prototype.createAchorNode = function (e) {\n var anchorEle = createElement('a', {\n className: 'e-rte-anchor',\n attrs: {\n href: e.item.url,\n title: isNullOrUndefined(e.item.title) || e.item.title === '' ? e.item.url : e.item.title\n }\n });\n if (!isNullOrUndefined(e.item.target)) {\n anchorEle.setAttribute('target', e.item.target);\n }\n return anchorEle;\n };\n LinkCommand.prototype.getSelectionNodes = function (nodeCollection) {\n nodeCollection = nodeCollection.reverse();\n for (var index = 0; index < nodeCollection.length; index++) {\n if (nodeCollection[index].nodeType !== 3 || nodeCollection[index].textContent.trim() === '') {\n if (nodeCollection[index].nodeName !== 'IMG') {\n nodeCollection.splice(index, 1);\n index--;\n }\n }\n }\n return nodeCollection.reverse();\n };\n LinkCommand.prototype.isBlockNode = function (element) {\n return (!!element && (element.nodeType === Node.ELEMENT_NODE && BLOCK_TAGS.indexOf(element.tagName.toLowerCase()) >= 0));\n };\n LinkCommand.prototype.removeText = function (text, val) {\n var arr = text.split(' ');\n for (var i = 0; i < arr.length; i++) {\n if (arr[i] === val) {\n arr.splice(i, 1);\n i--;\n }\n }\n return arr.join(' ') + ' ';\n };\n LinkCommand.prototype.openLink = function (e) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n LinkCommand.prototype.removeLink = function (e) {\n var blockNodes = this.parent.domNode.blockNodes();\n if (blockNodes.length < 2) {\n this.parent.domNode.setMarker(e.item.selection);\n var closestAnchor = closest(e.item.selectParent[0], 'a');\n var selectParent = closestAnchor ? closestAnchor : e.item.selectParent[0];\n var parent_1 = selectParent.parentNode;\n var child = [];\n for (; selectParent.firstChild; null) {\n child.push(parent_1.insertBefore(selectParent.firstChild, selectParent));\n }\n parent_1.removeChild(selectParent);\n if (child && child.length === 1) {\n e.item.selection.startContainer = e.item.selection.getNodeArray(child[child.length - 1], true);\n e.item.selection.endContainer = e.item.selection.startContainer;\n }\n e.item.selection = this.parent.domNode.saveMarker(e.item.selection);\n }\n else {\n for (var i = 0; i < blockNodes.length; i++) {\n var linkNode = blockNodes[i].querySelectorAll('a');\n for (var j = 0; j < linkNode.length; j++) {\n if (document.getSelection().containsNode(linkNode[j], true)) {\n linkNode[j].outerHTML = linkNode[j].innerHTML;\n }\n }\n }\n }\n e.item.selection.restore();\n this.callBack(e);\n };\n LinkCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return LinkCommand;\n}());\n\n/**\n * Formats internal component\n *\n * @hidden\n * @deprecated\n */\nvar Alignments = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n function Alignments(parent) {\n this.alignments = {\n 'JustifyLeft': 'left',\n 'JustifyCenter': 'center',\n 'JustifyRight': 'right',\n 'JustifyFull': 'justify'\n };\n this.parent = parent;\n this.addEventListener();\n }\n Alignments.prototype.addEventListener = function () {\n this.parent.observer.on(ALIGNMENT_TYPE, this.applyAlignment, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Alignments.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'justify-center':\n this.applyAlignment({ subCommand: 'JustifyCenter', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-full':\n this.applyAlignment({ subCommand: 'JustifyFull', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-left':\n this.applyAlignment({ subCommand: 'JustifyLeft', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'justify-right':\n this.applyAlignment({ subCommand: 'JustifyRight', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Alignments.prototype.getTableNode = function (range) {\n var startNode = range.startContainer.nodeType === Node.ELEMENT_NODE\n ? range.startContainer : range.startContainer.parentNode;\n var cellNode = closest(startNode, 'td,th');\n return [cellNode];\n };\n Alignments.prototype.applyAlignment = function (e) {\n var isTableAlign = e.value === 'Table' ? true : false;\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n if (!isTableAlign) {\n this.parent.domNode.setMarker(save);\n var alignmentNodes = this.parent.domNode.blockNodes();\n for (var i = 0; i < alignmentNodes.length; i++) {\n var parentNode = alignmentNodes[i];\n setStyleAttribute(parentNode, { 'text-align': this.alignments[e.subCommand] });\n }\n var imageTags = this.parent.domNode.getImageTagInSelection();\n for (var i = 0; i < imageTags.length; i++) {\n var elementNode = [];\n elementNode.push(imageTags[i]);\n this.parent.imgObj.imageCommand({\n item: {\n selectNode: elementNode\n },\n subCommand: e.subCommand,\n value: e.subCommand,\n callBack: e.callBack,\n selector: e.selector\n });\n }\n this.parent.editableElement.focus();\n save = this.parent.domNode.saveMarker(save);\n if (isIDevice$1()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n save.restore();\n }\n else {\n setStyleAttribute(this.getTableNode(range)[0], { 'text-align': this.alignments[e.subCommand] });\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: (isTableAlign ? this.getTableNode(range) : this.parent.domNode.blockNodes())\n });\n }\n };\n return Alignments;\n}());\n\n/**\n * Indents internal component\n *\n * @hidden\n * @deprecated\n */\nvar Indents = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function Indents(parent) {\n this.indentValue = 20;\n this.parent = parent;\n this.addEventListener();\n }\n Indents.prototype.addEventListener = function () {\n this.parent.observer.on(INDENT_TYPE, this.applyIndents, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n Indents.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'indents':\n this.applyIndents({ subCommand: 'Indent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n case 'outdents':\n this.applyIndents({ subCommand: 'Outdent', callBack: e.callBack });\n e.event.preventDefault();\n break;\n }\n };\n Indents.prototype.applyIndents = function (e) {\n var editEle = this.parent.editableElement;\n var isRtl = editEle.classList.contains('e-rtl');\n var range = this.parent.nodeSelection.getRange(this.parent.currentDocument);\n var save = this.parent.nodeSelection.save(range, this.parent.currentDocument);\n this.parent.domNode.setMarker(save);\n var indentsNodes = this.parent.domNode.blockNodes();\n var parentNodes = indentsNodes.slice();\n var listsNodes = [];\n for (var i = 0; i < parentNodes.length; i++) {\n if (parentNodes[i].tagName !== 'LI' && 'LI' === parentNodes[i].parentNode.tagName) {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i].parentNode);\n }\n else if (parentNodes[i].tagName === 'LI') {\n indentsNodes.splice(indentsNodes.indexOf(parentNodes[i]), 1);\n listsNodes.push(parentNodes[i]);\n }\n }\n if (listsNodes.length > 0) {\n this.parent.observer.notify(KEY_DOWN_HANDLER, {\n event: {\n preventDefault: function () {\n return;\n },\n stopPropagation: function () {\n return;\n },\n shiftKey: (e.subCommand === 'Indent' ? false : true),\n which: 9,\n action: 'indent'\n },\n ignoreDefault: true\n });\n }\n for (var i = 0; i < indentsNodes.length; i++) {\n var parentNode = indentsNodes[i];\n var marginLeftOrRight = isRtl ? parentNode.style.marginRight : parentNode.style.marginLeft;\n var indentsValue = void 0;\n if (e.subCommand === 'Indent') {\n /* eslint-disable */\n indentsValue = marginLeftOrRight === '' ? this.indentValue + 'px' : parseInt(marginLeftOrRight, null) + this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n }\n else {\n indentsValue = (marginLeftOrRight === '' || marginLeftOrRight === '0px') ? '' : parseInt(marginLeftOrRight, null) - this.indentValue + 'px';\n isRtl ? (parentNode.style.marginRight = indentsValue) : (parentNode.style.marginLeft = indentsValue);\n /* eslint-enable */\n }\n }\n editEle.focus();\n if (isIDevice$1()) {\n setEditFrameFocus(editEle, e.selector);\n }\n save = this.parent.domNode.saveMarker(save);\n save.restore();\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.domNode.blockNodes()\n });\n }\n };\n return Indents;\n}());\n\n/**\n * Rich Text Editor classes defined here.\n */\n/**\n * @hidden\n * @deprecated\n */\nvar CLASS_IMAGE_RIGHT = 'e-imgright';\nvar CLASS_IMAGE_LEFT = 'e-imgleft';\nvar CLASS_IMAGE_CENTER = 'e-imgcenter';\nvar CLASS_VIDEO_RIGHT = 'e-video-right';\nvar CLASS_VIDEO_LEFT = 'e-video-left';\nvar CLASS_VIDEO_CENTER = 'e-video-center';\nvar CLASS_IMAGE_BREAK = 'e-imgbreak';\nvar CLASS_AUDIO_BREAK = 'e-audio-break';\nvar CLASS_VIDEO_BREAK = 'e-video-break';\nvar CLASS_CAPTION = 'e-img-caption';\nvar CLASS_RTE_CAPTION = 'e-rte-img-caption';\nvar CLASS_CAPTION_INLINE = 'e-caption-inline';\nvar CLASS_IMAGE_INLINE = 'e-imginline';\nvar CLASS_AUDIO_INLINE = 'e-audio-inline';\nvar CLASS_CLICK_ELEM = 'e-clickelem';\nvar CLASS_VIDEO_CLICK_ELEM = 'e-video-clickelem';\nvar CLASS_AUDIO = 'e-rte-audio';\nvar CLASS_VIDEO = 'e-rte-video';\nvar CLASS_AUDIO_WRAP = 'e-audio-wrap';\nvar CLASS_VIDEO_WRAP = 'e-video-wrap';\nvar CLASS_EMBED_VIDEO_WRAP = 'e-embed-video-wrap';\nvar CLASS_AUDIO_FOCUS = 'e-audio-focus';\nvar CLASS_VIDEO_FOCUS = 'e-video-focus';\nvar CLASS_VIDEO_INLINE = 'e-video-inline';\n\n/**\n * Link internal component\n *\n * @hidden\n * @deprecated\n */\nvar ImageCommand = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function ImageCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ImageCommand.prototype.addEventListener = function () {\n this.parent.observer.on(IMAGE, this.imageCommand, this);\n };\n /**\n * imageCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ImageCommand.prototype.imageCommand = function (e) {\n switch (e.value.toString().toLowerCase()) {\n case 'image':\n case 'replace':\n this.createImage(e);\n break;\n case 'insertlink':\n this.insertImageLink(e);\n break;\n case 'openimagelink':\n this.openImageLink(e);\n break;\n case 'editimagelink':\n this.editImageLink(e);\n break;\n case 'removeimagelink':\n this.removeImageLink(e);\n break;\n case 'remove':\n this.removeImage(e);\n break;\n case 'alttext':\n this.insertAltTextImage(e);\n break;\n case 'dimension':\n this.imageDimension(e);\n break;\n case 'caption':\n this.imageCaption(e);\n break;\n case 'justifyleft':\n this.imageJustifyLeft(e);\n break;\n case 'justifycenter':\n this.imageJustifyCenter(e);\n break;\n case 'justifyright':\n this.imageJustifyRight(e);\n break;\n case 'inline':\n this.imageInline(e);\n break;\n case 'break':\n this.imageBreak(e);\n break;\n }\n };\n ImageCommand.prototype.createImage = function (e) {\n var _this = this;\n var isReplaced = false;\n e.item.url = isNullOrUndefined(e.item.url) || e.item.url === 'undefined' ? e.item.src : e.item.url;\n if (!isNullOrUndefined(e.item.selectParent) && e.item.selectParent[0].tagName === 'IMG') {\n var imgEle = e.item.selectParent[0];\n this.setStyle(imgEle, e);\n isReplaced = true;\n }\n else {\n var imgElement = createElement('img');\n this.setStyle(imgElement, e);\n if (!isNullOrUndefined(e.item.selection)) {\n e.item.selection.restore();\n }\n if (!isNullOrUndefined(e.selector) && e.selector === 'pasteCleanupModule') {\n e.callBack({ requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [imgElement]\n });\n }\n else {\n InsertHtml.Insert(this.parent.currentDocument, imgElement, this.parent.editableElement);\n }\n }\n if (e.callBack && (isNullOrUndefined(e.selector) || !isNullOrUndefined(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var imgElm_1 = (e.value === 'Replace' || isReplaced) ? e.item.selectParent[0] :\n (Browser.isIE ? selectedNode.previousSibling : selectedNode.previousElementSibling);\n imgElm_1.addEventListener('load', function () {\n if (e.value !== 'Replace' || !isReplaced) {\n e.callBack({\n requestType: 'Images',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [imgElm_1]\n });\n }\n });\n }\n };\n ImageCommand.prototype.setStyle = function (imgElement, e) {\n if (!isNullOrUndefined(e.item.url)) {\n imgElement.setAttribute('src', e.item.url);\n }\n imgElement.setAttribute('class', 'e-rte-image' + (isNullOrUndefined(e.item.cssClass) ? '' : ' ' + e.item.cssClass));\n if (!isNullOrUndefined(e.item.altText)) {\n imgElement.setAttribute('alt', e.item.altText);\n }\n if (!isNullOrUndefined(e.item.width) && !isNullOrUndefined(e.item.width.width)) {\n imgElement.setAttribute('width', this.calculateStyleValue(e.item.width.width));\n }\n if (!isNullOrUndefined(e.item.height) && !isNullOrUndefined(e.item.height.height)) {\n imgElement.setAttribute('height', this.calculateStyleValue(e.item.height.height));\n }\n if (!isNullOrUndefined(e.item.width) && !isNullOrUndefined(e.item.width.minWidth)) {\n imgElement.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNullOrUndefined(e.item.width) && !isNullOrUndefined(e.item.width.maxWidth)) {\n imgElement.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n if (!isNullOrUndefined(e.item.height) && !isNullOrUndefined(e.item.height.minHeight)) {\n imgElement.style.minHeight = this.calculateStyleValue(e.item.height.minHeight);\n }\n if (!isNullOrUndefined(e.item.height) && !isNullOrUndefined(e.item.height.maxHeight)) {\n imgElement.style.maxHeight = this.calculateStyleValue(e.item.height.maxHeight);\n }\n };\n ImageCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n ImageCommand.prototype.insertImageLink = function (e) {\n var anchor = createElement('a', {\n attrs: {\n href: e.item.url\n }\n });\n if (e.item.selectNode[0].parentElement.classList.contains('e-img-wrap')) {\n e.item.selection.restore();\n anchor.setAttribute('contenteditable', 'true');\n }\n anchor.appendChild(e.item.selectNode[0]);\n if (!isNullOrUndefined(e.item.target)) {\n anchor.setAttribute('target', e.item.target);\n }\n InsertHtml.Insert(this.parent.currentDocument, anchor, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.openImageLink = function (e) {\n // eslint-disable-next-line security/detect-non-literal-fs-filename\n document.defaultView.open(e.item.url, e.item.target);\n this.callBack(e);\n };\n ImageCommand.prototype.removeImageLink = function (e) {\n var selectParent = e.item.selectParent[0];\n if (selectParent.classList.contains('e-img-caption')) {\n var capImgWrap = select('.e-img-wrap', selectParent);\n var textEle = select('.e-img-inner', selectParent);\n var newTextEle = textEle.cloneNode(true);\n detach(select('a', selectParent));\n detach(textEle);\n capImgWrap.appendChild(e.item.insertElement);\n capImgWrap.appendChild(newTextEle);\n }\n else {\n detach(selectParent);\n if (Browser.isIE && e.item.selection) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.editImageLink = function (e) {\n e.item.selectNode[0].parentElement.href = e.item.url;\n if (isNullOrUndefined(e.item.target)) {\n e.item.selectNode[0].parentElement.removeAttribute('target');\n }\n else {\n e.item.selectNode[0].parentElement.target = e.item.target;\n }\n this.callBack(e);\n };\n ImageCommand.prototype.removeImage = function (e) {\n if (closest(e.item.selectNode[0], 'a')) {\n if (e.item.selectNode[0].parentElement.nodeName === 'A' && !isNullOrUndefined(e.item.selectNode[0].parentElement.innerText)) {\n if (!isNullOrUndefined(closest(e.item.selectNode[0], '.' + CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n }\n else {\n detach(closest(e.item.selectNode[0], 'a'));\n }\n }\n else if (!isNullOrUndefined(closest(e.item.selectNode[0], '.' + CLASS_CAPTION))) {\n detach(closest(e.item.selectNode[0], '.' + CLASS_CAPTION));\n }\n else {\n detach(e.item.selectNode[0]);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.insertAltTextImage = function (e) {\n e.item.selectNode[0].setAttribute('alt', e.item.altText);\n this.callBack(e);\n };\n ImageCommand.prototype.imageDimension = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageCaption = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.item.insertElement, this.parent.editableElement);\n this.callBack(e);\n };\n ImageCommand.prototype.imageJustifyLeft = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNullOrUndefined(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNullOrUndefined(closest(selectNode, '.' + CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_LEFT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], CLASS_IMAGE_LEFT);\n addClass([selectNode], CLASS_IMAGE_LEFT);\n }\n else {\n addClass([selectNode], CLASS_IMAGE_LEFT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyCenter = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNullOrUndefined(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNullOrUndefined(closest(selectNode, '.' + CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_CENTER);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], CLASS_IMAGE_LEFT);\n removeClass([selectNode.parentElement], CLASS_IMAGE_RIGHT);\n addClass([selectNode.parentElement], CLASS_IMAGE_CENTER);\n addClass([selectNode], CLASS_IMAGE_CENTER);\n }\n else {\n addClass([selectNode], CLASS_IMAGE_CENTER);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageJustifyRight = function (e) {\n var selectNode = e.item.selectNode[0];\n if (!isNullOrUndefined(selectNode)) {\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n if (!isNullOrUndefined(closest(selectNode, '.' + CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_LEFT);\n addClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_RIGHT);\n }\n if (selectNode.parentElement.nodeName === 'A') {\n removeClass([selectNode.parentElement], CLASS_IMAGE_LEFT);\n addClass([selectNode.parentElement], CLASS_IMAGE_RIGHT);\n addClass([selectNode], CLASS_IMAGE_RIGHT);\n }\n else {\n addClass([selectNode], CLASS_IMAGE_RIGHT);\n }\n this.callBack(e);\n }\n };\n ImageCommand.prototype.imageInline = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], 'e-rte-image');\n addClass([selectNode], CLASS_IMAGE_INLINE);\n if (!isNullOrUndefined(closest(selectNode, '.' + CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_BREAK);\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_CAPTION_INLINE);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.imageBreak = function (e) {\n var selectNode = e.item.selectNode[0];\n selectNode.removeAttribute('class');\n addClass([selectNode], CLASS_IMAGE_BREAK);\n addClass([selectNode], 'e-rte-image');\n if (!isNullOrUndefined(closest(selectNode, '.' + CLASS_CAPTION))) {\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_CAPTION_INLINE);\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_CENTER);\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_LEFT);\n removeClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_RIGHT);\n addClass([closest(selectNode, '.' + CLASS_CAPTION)], CLASS_IMAGE_BREAK);\n }\n this.callBack(e);\n };\n ImageCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return ImageCommand;\n}());\n\n/**\n * Audio internal component\n *\n * @hidden\n * @deprecated\n */\nvar AudioCommand = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Audio plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function AudioCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n AudioCommand.prototype.addEventListener = function () {\n this.parent.observer.on(AUDIO, this.audioCommand, this);\n };\n /**\n * audioCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n * @deprecated\n */\n AudioCommand.prototype.audioCommand = function (e) {\n var selectNode;\n var value = e.value.toString().toLowerCase();\n if (value === 'inline' || value === 'break' || value === 'audioremove') {\n selectNode = e.item.selectNode[0];\n }\n switch (value) {\n case 'audio':\n case 'audioreplace':\n this.createAudio(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + CLASS_AUDIO_WRAP).style.display = 'inline-block';\n addClass([selectNode], [CLASS_AUDIO, CLASS_AUDIO_INLINE, CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n selectNode.closest('.' + CLASS_AUDIO_WRAP).style.display = 'block';\n addClass([selectNode], [CLASS_AUDIO_BREAK, CLASS_AUDIO, CLASS_AUDIO_FOCUS]);\n this.callBack(e);\n break;\n case 'audioremove':\n detach(selectNode);\n this.callBack(e);\n break;\n }\n };\n AudioCommand.prototype.createAudio = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n if (!isNullOrUndefined(e.item.selectParent) && e.item.selectParent[0].classList &&\n (e.item.selectParent[0].classList.contains(CLASS_CLICK_ELEM) ||\n e.item.selectParent[0].classList.contains(CLASS_AUDIO_WRAP))) {\n var audioEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(audioEle, e);\n isReplaced = true;\n }\n else {\n wrapElement = createElement('span', { className: CLASS_AUDIO_WRAP, attrs: { contentEditable: 'false', title: e.item.fileName } });\n var audElement = createElement('audio', { className: CLASS_AUDIO + ' ' + CLASS_AUDIO_INLINE, attrs: { controls: '' } });\n var sourceElement = createElement('source');\n var clickElement = createElement('span', { className: CLASS_CLICK_ELEM });\n this.setStyle(sourceElement, e);\n audElement.appendChild(sourceElement);\n clickElement.appendChild(audElement);\n wrapElement.appendChild(clickElement);\n if (!isNullOrUndefined(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNullOrUndefined(e.selector) || !isNullOrUndefined(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var audioElm_1 = (e.value === 'AudioReplace' || isReplaced) ? e.item.selectParent[0].querySelector('audio')\n : (Browser.isIE ? selectedNode : selectedNode.querySelector('audio'));\n audioElm_1.addEventListener('loadeddata', function () {\n if (e.value !== 'AudioReplace' || !isReplaced) {\n e.callBack({\n requestType: 'Audios',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [audioElm_1]\n });\n }\n });\n if (isReplaced) {\n audioElm_1.load();\n }\n }\n };\n AudioCommand.prototype.setStyle = function (sourceElement, e) {\n if (!isNullOrUndefined(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'audio/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'audio/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n };\n AudioCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return AudioCommand;\n}());\n\n/**\n * Video internal component\n *\n * @hidden\n * @deprecated\n */\nvar VideoCommand = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Video plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function VideoCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n VideoCommand.prototype.addEventListener = function () {\n this.parent.observer.on(VIDEO, this.videoCommand, this);\n };\n /**\n * videoCommand method\n *\n * @param {IHtmlItem} e - specifies the element\n * @returns {void}\n * @hidden\n * @deprecated\n */\n VideoCommand.prototype.videoCommand = function (e) {\n var selectNode;\n var videoWrapNode;\n var videoClickElem;\n var value = e.value.toString().toLowerCase();\n if (value !== 'video' && value !== 'videoreplace') {\n selectNode = e.item.selectNode[0];\n videoWrapNode = selectNode.closest('.' + CLASS_EMBED_VIDEO_WRAP);\n videoClickElem = selectNode.closest('.' + CLASS_VIDEO_CLICK_ELEM);\n }\n switch (value) {\n case 'video':\n case 'videoreplace':\n this.createVideo(e);\n break;\n case 'videodimension':\n this.videoDimension(e);\n break;\n case 'inline':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'inline-block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [CLASS_VIDEO, CLASS_VIDEO_INLINE, CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'break':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [CLASS_VIDEO_BREAK, CLASS_VIDEO, CLASS_VIDEO_FOCUS]);\n this.callBack(e);\n break;\n case 'justifyleft':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'left';\n }\n addClass([selectNode], [CLASS_VIDEO, CLASS_VIDEO_LEFT]);\n this.callBack(e);\n break;\n case 'justifycenter':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = '';\n }\n addClass([selectNode], [CLASS_VIDEO, CLASS_VIDEO_CENTER]);\n this.callBack(e);\n break;\n case 'justifyright':\n selectNode.removeAttribute('class');\n if (videoWrapNode) {\n videoWrapNode.style.display = 'block';\n }\n if (videoClickElem) {\n selectNode.parentElement.style.cssFloat = 'right';\n }\n addClass([selectNode], [CLASS_VIDEO, CLASS_VIDEO_RIGHT]);\n this.callBack(e);\n break;\n case 'videoremove':\n detach(selectNode.parentElement);\n this.callBack(e);\n break;\n }\n };\n VideoCommand.prototype.createVideo = function (e) {\n var _this = this;\n var isReplaced = false;\n var wrapElement;\n var vidElement;\n var sourceElement;\n if (e.value === 'VideoReplace' && !isNullOrUndefined(e.item.selectParent) && (e.item.selectParent[0].tagName === 'VIDEO')) {\n var videoEle = e.item.selectParent[0].querySelector('source');\n this.setStyle(videoEle, e, videoEle);\n isReplaced = true;\n }\n else if (e.value === 'VideoReplace' && !isNullOrUndefined(e.item.selectParent) &&\n e.item.selectParent[0].classList &&\n e.item.selectParent[0].classList.contains(CLASS_VIDEO_CLICK_ELEM)) {\n e.item.selectParent[0].innerHTML = e.item.fileName;\n this.setStyle(e.item.selectParent[0].firstElementChild, e, e.item.selectParent[0].firstElementChild);\n }\n else {\n if (!e.item.isEmbedUrl) {\n wrapElement = createElement('span', { className: CLASS_VIDEO_WRAP, attrs: { contentEditable: 'false', title: e.item.fileName } });\n vidElement = createElement('video', { className: CLASS_VIDEO + ' ' + CLASS_VIDEO_INLINE, attrs: { controls: '' } });\n sourceElement = createElement('source');\n this.setStyle(sourceElement, e, vidElement);\n vidElement.appendChild(sourceElement);\n wrapElement.appendChild(vidElement);\n }\n else {\n wrapElement = createElement('span', { className: CLASS_EMBED_VIDEO_WRAP, attrs: { contentEditable: 'false' } });\n var clickElement = createElement('span', { className: CLASS_VIDEO_CLICK_ELEM });\n var temp = createElement('template');\n temp.innerHTML = e.item.fileName;\n clickElement.appendChild(temp.content);\n vidElement = sourceElement = clickElement.firstElementChild;\n this.setStyle(sourceElement, e, vidElement);\n wrapElement.appendChild(clickElement);\n }\n if (!isNullOrUndefined(e.item.selection)) {\n e.item.selection.restore();\n }\n InsertHtml.Insert(this.parent.currentDocument, wrapElement, this.parent.editableElement);\n if (wrapElement.nextElementSibling === null) {\n var insertElem = createElement('br');\n wrapElement.parentNode.insertBefore(insertElem, wrapElement.nextSibling);\n }\n }\n if (e.callBack && (isNullOrUndefined(e.selector) || !isNullOrUndefined(e.selector) && e.selector !== 'pasteCleanupModule')) {\n var selectedNode = this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)[0];\n var videoElm_1 = (e.value === 'VideoReplace' || isReplaced) ? !e.item.isEmbedUrl ? e.item.selectParent[0] : e.item.selectParent[0].querySelector('iframe')\n : (Browser.isIE ? selectedNode : !e.item.isEmbedUrl ? selectedNode.lastElementChild : selectedNode.querySelector('iframe'));\n videoElm_1.addEventListener(videoElm_1.tagName !== 'IFRAME' ? 'loadeddata' : 'load', function () {\n if (e.value !== 'VideoReplace' || !isReplaced) {\n e.callBack({\n requestType: 'Videos',\n editorMode: 'HTML',\n event: e.event,\n range: _this.parent.nodeSelection.getRange(_this.parent.currentDocument),\n elements: [videoElm_1]\n });\n }\n });\n if (isReplaced) {\n videoElm_1.load();\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n vidElement.addEventListener('play', function () { _this.editAreaVideoClick(e); });\n vidElement.addEventListener('pause', function () { _this.editAreaVideoClick(e); });\n }\n }\n };\n VideoCommand.prototype.editAreaVideoClick = function (e) {\n e.callBack({\n requestType: 'VideosPlayPause',\n editorMode: 'HTML',\n event: e.event\n });\n };\n VideoCommand.prototype.setStyle = function (sourceElement, e, videoEle) {\n if (e.item.url !== '' && !isNullOrUndefined(e.item.url)) {\n sourceElement.setAttribute('src', e.item.url);\n }\n if (!e.item.isEmbedUrl) {\n sourceElement.type = e.item.fileName && e.item.fileName.split('.').length > 0 ?\n 'video/' + e.item.fileName.split('.')[e.item.fileName.split('.').length - 1] :\n e.item.url && e.item.url.split('.').length > 0 ? 'video/' + e.item.url.split('.')[e.item.url.split('.').length - 1] : '';\n }\n if (!isNullOrUndefined(e.item.width) && !isNullOrUndefined(e.item.width.width)) {\n videoEle.setAttribute('width', formatUnit(e.item.width.width));\n }\n if (!isNullOrUndefined(e.item.height) && !isNullOrUndefined(e.item.height.height)) {\n videoEle.setAttribute('height', formatUnit(e.item.height.height));\n }\n if (!isNullOrUndefined(e.item.width) && !isNullOrUndefined(e.item.width.minWidth)) {\n videoEle.style.minWidth = formatUnit(e.item.width.minWidth);\n }\n if (!isNullOrUndefined(e.item.width) && !isNullOrUndefined(e.item.width.maxWidth)) {\n videoEle.style.maxWidth = formatUnit(e.item.width.maxWidth);\n }\n if (!isNullOrUndefined(e.item.height) && !isNullOrUndefined(e.item.height.minHeight)) {\n videoEle.style.minHeight = formatUnit(e.item.height.minHeight);\n }\n if (!isNullOrUndefined(e.item.height) && !isNullOrUndefined(e.item.height.maxHeight)) {\n videoEle.style.maxHeight = formatUnit(e.item.height.maxHeight);\n }\n };\n VideoCommand.prototype.videoDimension = function (e) {\n var selectNode = !(e.item.selectNode[0].classList.contains(CLASS_VIDEO_CLICK_ELEM)) ? e.item.selectNode[0] :\n e.item.selectNode[0].querySelector('iframe');\n selectNode.style.height = '';\n selectNode.style.width = '';\n if (e.item.width !== 'auto') {\n selectNode.style.width = formatUnit(e.item.width);\n }\n else {\n selectNode.removeAttribute('width');\n }\n if (e.item.height !== 'auto') {\n selectNode.style.height = formatUnit(e.item.height);\n }\n else {\n selectNode.removeAttribute('height');\n }\n this.callBack(e);\n };\n VideoCommand.prototype.callBack = function (e) {\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return VideoCommand;\n}());\n\n/**\n * Link internal component\n *\n * @hidden\n * @deprecated\n */\nvar TableCommand = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function TableCommand(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n TableCommand.prototype.addEventListener = function () {\n this.parent.observer.on(TABLE, this.createTable, this);\n this.parent.observer.on(INSERT_ROW, this.insertRow, this);\n this.parent.observer.on(INSERT_COLUMN, this.insertColumn, this);\n this.parent.observer.on(DELETEROW, this.deleteRow, this);\n this.parent.observer.on(DELETECOLUMN, this.deleteColumn, this);\n this.parent.observer.on(REMOVETABLE, this.removeTable, this);\n this.parent.observer.on(TABLEHEADER, this.tableHeader, this);\n this.parent.observer.on(TABLE_VERTICAL_ALIGN, this.tableVerticalAlign, this);\n this.parent.observer.on(TABLE_MERGE, this.cellMerge, this);\n this.parent.observer.on(TABLE_HORIZONTAL_SPLIT, this.HorizontalSplit, this);\n this.parent.observer.on(TABLE_VERTICAL_SPLIT, this.VerticalSplit, this);\n this.parent.observer.on(TABLE_MOVE, this.tableMove, this);\n };\n TableCommand.prototype.createTable = function (e) {\n var table = createElement('table', { className: 'e-rte-table' });\n var tblBody = createElement('tbody');\n if (!isNullOrUndefined(e.item.width.width)) {\n table.style.width = this.calculateStyleValue(e.item.width.width);\n }\n if (!isNullOrUndefined(e.item.width.minWidth)) {\n table.style.minWidth = this.calculateStyleValue(e.item.width.minWidth);\n }\n if (!isNullOrUndefined(e.item.width.maxWidth)) {\n table.style.maxWidth = this.calculateStyleValue(e.item.width.maxWidth);\n }\n var tdWid = parseInt(e.item.width.width, 10) > 100 ?\n 100 / e.item.columns : parseInt(e.item.width.width, 10) / e.item.columns;\n for (var i = 0; i < e.item.rows; i++) {\n var row = createElement('tr');\n for (var j = 0; j < e.item.columns; j++) {\n var cell = createElement('td');\n cell.appendChild(createElement('br'));\n cell.style.width = tdWid + '%';\n row.appendChild(cell);\n }\n tblBody.appendChild(row);\n }\n table.appendChild(tblBody);\n e.item.selection.restore();\n InsertHtml.Insert(this.parent.currentDocument, table, this.parent.editableElement);\n this.removeEmptyNode();\n e.item.selection.setSelectionText(this.parent.currentDocument, table.querySelector('td'), table.querySelector('td'), 0, 0);\n if (table.nextElementSibling === null) {\n var insertElem = void 0;\n if (e.enterAction === 'DIV') {\n insertElem = createElement('div');\n insertElem.appendChild(createElement('br'));\n }\n else if (e.enterAction === 'BR') {\n insertElem = createElement('br');\n }\n else {\n insertElem = createElement('p');\n insertElem.appendChild(createElement('br'));\n }\n this.insertAfter(insertElem, table);\n }\n table.querySelector('td').classList.add('e-cell-select');\n if (e.callBack) {\n e.callBack({\n requestType: 'Table',\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: [table]\n });\n }\n return table;\n };\n TableCommand.prototype.calculateStyleValue = function (value) {\n var styleValue;\n if (typeof (value) === 'string') {\n if (value.indexOf('px') || value.indexOf('%') || value.indexOf('auto')) {\n styleValue = value;\n }\n else {\n styleValue = value + 'px';\n }\n }\n else {\n styleValue = value + 'px';\n }\n return styleValue;\n };\n TableCommand.prototype.removeEmptyNode = function () {\n var emptyUl = this.parent.editableElement.querySelectorAll('ul:empty, ol:empty');\n for (var i = 0; i < emptyUl.length; i++) {\n detach(emptyUl[i]);\n }\n var emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');\n for (var i = 0; i < emptyLiChild.length; i++) {\n detach(emptyLiChild[i]);\n if (emptyLiChild.length === i + 1) {\n emptyLiChild = this.parent.editableElement.querySelectorAll('li *:empty:not(img)');\n i = -1;\n }\n }\n var emptyLi = this.parent.editableElement.querySelectorAll('li:empty');\n for (var i = 0; i < emptyLi.length; i++) {\n detach(emptyLi[i]);\n }\n };\n TableCommand.prototype.insertAfter = function (newNode, referenceNode) {\n referenceNode.parentNode.insertBefore(newNode, referenceNode.nextSibling);\n };\n TableCommand.prototype.getSelectedCellMinMaxIndex = function (e) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var a = 0;\n var minI = e.length;\n var maxI = 0;\n var minJ = e[0].length;\n var maxJ = 0;\n //eslint-disable-next-line\n for (; a < selectedCells.length; a++) {\n var selectedCellIndex = this.getCorrespondingIndex(selectedCells[a], e);\n var minMaxIndex = this.FindIndex(selectedCellIndex[0], selectedCellIndex[1], e);\n //eslint-disable-next-line\n minI = Math.min(selectedCellIndex[0], minI), maxI = Math.max(minMaxIndex[0], maxI), minJ = Math.min(selectedCellIndex[1], minJ), maxJ = Math.max(minMaxIndex[1], maxJ);\n }\n return {\n startRow: minI,\n endRow: maxI,\n startColumn: minJ,\n endColumn: maxJ\n };\n };\n TableCommand.prototype.insertRow = function (e) {\n var isBelow = e.item.subCommand === 'InsertRowBefore' ? false : true;\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n if (selectedCell.nodeName.toLowerCase() === 'th' && e.item.subCommand === 'InsertRowBefore') {\n return;\n }\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length === 0) {\n var lastRow = this.curTable.rows[this.curTable.rows.length - 1];\n var cloneRow = lastRow.cloneNode(true);\n cloneRow.removeAttribute('rowspan');\n this.insertAfter(cloneRow, lastRow);\n }\n else {\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minVal = isBelow ? minMaxIndex.endRow : minMaxIndex.startRow;\n var newRow = createElement('tr');\n var isHeaderSelect = this.curTable.querySelectorAll('th.e-cell-select').length > 0;\n for (var i = 0; i < allCells[minVal].length; i++) {\n // eslint-disable-next-line max-len\n if (isBelow && minVal < allCells.length - 1 && allCells[minVal][i] === allCells[minVal + 1][i] ||\n !isBelow && 0 < minVal && allCells[minVal][i] === allCells[minVal - 1][i]) {\n if (0 === i || 0 < i && allCells[minVal][i] !== allCells[minVal][i - 1]) {\n allCells[minVal][i].setAttribute('rowspan', (parseInt(allCells[minVal][i].getAttribute('rowspan'), 10) + 1).toString());\n }\n }\n else {\n var tdElement = createElement('td');\n tdElement.appendChild(createElement('br'));\n newRow.appendChild(tdElement);\n tdElement.setAttribute('style', allCells[(isHeaderSelect && isBelow) ? allCells[(minVal + 1)] ? (minVal + 1) : minVal : minVal][i].getAttribute('style'));\n }\n }\n // eslint-disable-next-line\n var selectedRow = void 0;\n if (isHeaderSelect && isBelow) {\n selectedRow = this.curTable.querySelector('tbody').childNodes[0];\n }\n else {\n selectedRow = this.curTable.rows[minVal];\n }\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertRowBefore') ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n (isHeaderSelect ? selectedRow.parentElement.insertBefore(newRow, selectedRow) :\n this.insertAfter(newRow, selectedRow));\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.insertColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (!(selectedCell.nodeName === 'TH' || selectedCell.nodeName === 'TD')) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var curRow = closest(selectedCell, 'tr');\n var curCell;\n var allRows = closest((curRow), 'table').rows;\n var colIndex = Array.prototype.slice.call(curRow.querySelectorAll(':scope > td, :scope > th')).indexOf(selectedCell);\n var previousWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length);\n var currentWidth = parseInt(e.item.width, 10) / (curRow.querySelectorAll(':scope > td, :scope > th').length + 1);\n var currentTabElm = closest(curRow, 'table');\n var thTdElm = closest(curRow, 'table').querySelectorAll('th,td');\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].dataset.oldWidth = (thTdElm[i].offsetWidth / currentTabElm.offsetWidth * 100) + '%';\n }\n for (var i = 0; i < allRows.length; i++) {\n curCell = allRows[i].querySelectorAll(':scope > td, :scope > th')[colIndex];\n var colTemplate = curCell.cloneNode(true);\n colTemplate.innerHTML = '';\n colTemplate.appendChild(createElement('br'));\n colTemplate.removeAttribute('class');\n colTemplate.removeAttribute('colspan');\n colTemplate.removeAttribute('rowspan');\n // eslint-disable-next-line\n (e.item.subCommand === 'InsertColumnLeft') ? curCell.parentElement.insertBefore(colTemplate, curCell) :\n this.insertAfter(colTemplate, curCell);\n colTemplate.style.width = currentWidth.toFixed(4) + '%';\n delete colTemplate.dataset.oldWidth;\n }\n for (var i = 0; i < thTdElm.length; i++) {\n thTdElm[i].style.width = (Number(thTdElm[i].dataset.oldWidth.split('%')[0]) * currentWidth / previousWidth).toFixed(4) + '%';\n delete thTdElm[i].dataset.oldWidth;\n }\n e.item.selection.setSelectionText(this.parent.currentDocument, selectedCell, selectedCell, 0, 0);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteColumn = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var tBodyHeadEle = closest(selectedCell, selectedCell.tagName === 'TH' ? 'thead' : 'tbody');\n var rowIndex = tBodyHeadEle && Array.prototype.indexOf.call(tBodyHeadEle.childNodes, selectedCell.parentNode);\n this.curTable = closest(selectedCell, 'table');\n var curRow = closest(selectedCell, 'tr');\n if (curRow.querySelectorAll('th,td').length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n var deleteIndex = void 0;\n var allCells = this.getCorrespondingColumns();\n //eslint-disable-next-line\n var selectedMinMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var minCol = selectedMinMaxIndex.startColumn;\n var maxCol = selectedMinMaxIndex.endColumn;\n for (var i = 0; i < allCells.length; i++) {\n var currentRow = allCells[i];\n for (var j = 0; j < currentRow.length; j++) {\n var currentCell = currentRow[j];\n //eslint-disable-next-line\n var currentCellIndex = this.getCorrespondingIndex(currentCell, allCells);\n var colSpanVal = parseInt(currentCell.getAttribute('colspan'), 10) || 1;\n if (currentCellIndex[1] + (colSpanVal - 1) >= minCol && currentCellIndex[1] <= maxCol) {\n if (colSpanVal > 1) {\n currentCell.setAttribute('colspan', (colSpanVal - 1).toString());\n }\n else {\n detach(currentCell);\n deleteIndex = j;\n if (Browser.isIE) {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n }\n }\n if (deleteIndex > -1) {\n var rowHeadEle = tBodyHeadEle.children[rowIndex];\n var nextFocusCell = rowHeadEle &&\n rowHeadEle.children[(deleteIndex <= rowHeadEle.children.length - 1 ? deleteIndex : deleteIndex - 1)];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n var sContainer = this.parent.nodeSelection.getRange(this.parent.currentDocument).startContainer;\n if (sContainer.nodeName !== 'TD') {\n var startChildLength = this.parent.nodeSelection.getRange(this.parent.currentDocument).startOffset;\n var focusNode = sContainer.children[startChildLength];\n if (focusNode) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, focusNode, 0);\n }\n }\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.deleteRow = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n if (selectedCell.nodeType === 3) {\n selectedCell = closest(selectedCell.parentElement, 'td,th');\n }\n var colIndex = Array.prototype.indexOf.call(selectedCell.parentNode.childNodes, selectedCell);\n this.curTable = closest(selectedCell, 'table');\n var currentRow;\n var allCells = this.getCorrespondingColumns();\n var minMaxIndex = this.getSelectedCellMinMaxIndex(allCells);\n var maxI;\n var j;\n if (this.curTable.rows.length === 1) {\n e.item.selection.restore();\n detach(closest(selectedCell.parentElement, 'table'));\n }\n else {\n for (maxI = minMaxIndex.endRow; maxI >= minMaxIndex.startRow; maxI--) {\n currentRow = this.curTable.rows[maxI];\n for (j = 0; j < allCells[maxI].length; j++) {\n if (j === 0 || allCells[maxI][j] !== allCells[maxI][j - 1]) {\n if (1 < parseInt(allCells[maxI][j].getAttribute('rowspan'), 10)) {\n var rowSpanVal = parseInt(allCells[maxI][j].getAttribute('rowspan'), 10) - 1;\n //eslint-disable-next-line\n 1 === rowSpanVal ? allCells[maxI][j].removeAttribute('rowspan') : allCells[maxI][j].setAttribute('rowspan', rowSpanVal.toString());\n }\n }\n // eslint-disable-next-line max-len\n if (maxI < allCells.length - 1 && allCells[maxI][j] === allCells[maxI + 1][j] && (0 === maxI ||\n allCells[maxI][j] !== allCells[maxI - 1][j])) {\n var element = allCells[maxI][j];\n var index = void 0;\n // eslint-disable-next-line max-len\n for (index = j; 0 < index && allCells[maxI][index] === allCells[maxI][index - 1]; index--) {\n if (index === 0) {\n this.curTable.rows[maxI + 1].prepend(element);\n }\n else {\n allCells[maxI + 1][index - 1].insertAdjacentElement('afterend', element);\n }\n }\n }\n }\n var deleteIndex = currentRow.rowIndex;\n this.curTable.deleteRow(deleteIndex);\n var focusTrEle = !isNullOrUndefined(this.curTable.rows[deleteIndex]) ? this.curTable.querySelectorAll('tbody tr')[deleteIndex]\n : this.curTable.querySelectorAll('tbody tr')[deleteIndex - 1];\n var nextFocusCell = focusTrEle && focusTrEle.querySelectorAll('td')[colIndex];\n if (nextFocusCell) {\n e.item.selection.setSelectionText(this.parent.currentDocument, nextFocusCell, nextFocusCell, 0, 0);\n nextFocusCell.classList.add('e-cell-select');\n }\n else {\n e.item.selection.setSelectionText(this.parent.currentDocument, this.curTable.querySelector('td'), this.curTable.querySelector('td'), 0, 0);\n this.curTable.querySelector('td, th').classList.add('e-cell-select');\n }\n }\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.removeTable = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var selectedTable = closest(selectedCell.parentElement, 'table');\n if (selectedTable) {\n e.item.selection.restore();\n detach(selectedTable);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableHeader = function (e) {\n var headerExit = false;\n var selectedCell = e.item.selection.range.startContainer;\n selectedCell = (selectedCell.nodeType === 3) ? selectedCell.parentNode : selectedCell;\n var table = closest(selectedCell.parentElement, 'table');\n [].slice.call(table.childNodes).forEach(function (el) {\n if (el.nodeName === 'THEAD') {\n headerExit = true;\n }\n });\n if (table && !headerExit) {\n var cellCount = table.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(table.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n var header = table.createTHead();\n var row = header.insertRow(0);\n for (var j = 0; j < colSpanCount; j++) {\n var th = createElement('th');\n th.appendChild(createElement('br'));\n row.appendChild(th);\n }\n }\n else {\n table.deleteTHead();\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.tableVerticalAlign = function (e) {\n if (e.item.subCommand === 'AlignTop') {\n e.item.tableCell.style.verticalAlign = 'top';\n }\n else if (e.item.subCommand === 'AlignMiddle') {\n e.item.tableCell.style.verticalAlign = 'middle';\n }\n else {\n e.item.tableCell.style.verticalAlign = 'bottom';\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.cellMerge = function (e) {\n if (isNullOrUndefined(this.curTable)) {\n this.curTable = closest(this.parent.nodeSelection.range.startContainer.parentElement, 'table');\n }\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (selectedCells.length < 2) {\n return;\n }\n this.mergeCellContent();\n var minMaxIndexes = this.getSelectedMinMaxIndexes(this.getCorrespondingColumns());\n var firstCell = selectedCells[0];\n var rowSelectedCells = firstCell.parentElement.querySelectorAll('.e-cell-select');\n if (minMaxIndexes.startColumn < minMaxIndexes.endColumn) {\n firstCell.setAttribute('colspan', (minMaxIndexes.endColumn - minMaxIndexes.startColumn + 1).toString());\n }\n if (minMaxIndexes.startRow < minMaxIndexes.endRow) {\n firstCell.setAttribute('rowspan', (minMaxIndexes.endRow - minMaxIndexes.startRow + 1).toString());\n }\n var totalWidth = 0;\n for (var j = rowSelectedCells.length - 1; j >= 0; j--) {\n totalWidth = totalWidth + parseFloat(rowSelectedCells[j].style.width);\n }\n firstCell.style.width = totalWidth + '%';\n for (var i = 1; i <= selectedCells.length - 1; i++) {\n detach(selectedCells[i]);\n }\n for (var i = 0; i < this.curTable.rows.length; i++) {\n if (this.curTable.rows[i].innerHTML === '') {\n detach(this.curTable.rows[i]);\n }\n }\n this.updateRowSpanStyle(minMaxIndexes.startRow, minMaxIndexes.endRow, this.getCorrespondingColumns());\n this.updateColSpanStyle(minMaxIndexes.startColumn, minMaxIndexes.endColumn, this.getCorrespondingColumns());\n e.item.selection.setSelectionText(this.parent.currentDocument, e.item.selection.range.startContainer, e.item.selection.range.startContainer, 0, 0);\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, \n // eslint-disable-next-line\n this.parent.nodeSelection.range.endContainer, 0);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.updateColSpanStyle = function (min, max, elements) {\n var colValue;\n var colIndex;\n var colMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = elements;\n //eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray[0].length - 1))) {\n for (colIndex === min; colIndex <= max; colIndex++) {\n // eslint-disable-next-line\n if (!(min < colIndex && eleArray[0][colIndex] === eleArray[0][colIndex - 1]) && 1 < (index =\n Math.min(parseInt(eleArray[0][colIndex].getAttribute('colspan'), 10) || 1, max - min + 1)) &&\n eleArray[0][colIndex] === eleArray[0][colIndex + 1]) {\n for (count = index - 1, colValue = 1; colValue < eleArray.length; colValue++) {\n if (eleArray[colValue][colIndex] !== eleArray[colValue - 1][colIndex]) {\n /* eslint-disable */\n for (colMin = colIndex; colMin < colIndex + index; colMin++) {\n if (1 < (attrValue = parseInt(eleArray[colValue][colMin].getAttribute('colspan'), 10) || 1) &&\n eleArray[colValue][colMin] === eleArray[colValue][colMin + 1]) {\n colMin += count = Math.min(count, attrValue - 1);\n }\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n /* eslint-enable */\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'colspan', 0, eleArray.length - 1, min, max);\n }\n }\n };\n TableCommand.prototype.updateRowSpanStyle = function (min, max, ele) {\n var rowValue;\n var colIndex;\n var rowMin;\n var index = 0;\n var attrValue;\n var count = 0;\n var eleArray = ele;\n // eslint-disable-next-line\n if (min < (max = Math.min(max, eleArray.length - 1))) {\n for (rowValue = min; rowValue <= max; rowValue++) {\n // eslint-disable-next-line\n if (!(min < rowValue && eleArray[rowValue][0] === eleArray[rowValue - 1][0])\n // eslint-disable-next-line no-cond-assign\n && eleArray[rowValue][0] && 1 < (index = Math.min(parseInt(eleArray[rowValue][0].getAttribute('rowspan'), 10) ||\n 1, max - min + 1)) && eleArray[rowValue][0] === eleArray[rowValue + 1][0]) {\n for (count = index - 1, colIndex = 1; colIndex < eleArray[0].length; colIndex++) {\n if (eleArray[rowValue][colIndex] !== eleArray[rowValue][colIndex - 1]) {\n for (rowMin = rowValue; rowMin < rowValue + index; rowMin++) {\n // eslint-disable-next-line\n if (1 < (attrValue = parseInt(eleArray[rowMin][colIndex].getAttribute('rowspan'), 10) || 1) && eleArray[rowMin][colIndex] === eleArray[rowMin + 1][colIndex]) {\n rowMin += count = Math.min(count, attrValue - 1);\n }\n // eslint-disable-next-line\n else if (!(count = Math.max(0, count - 1))) {\n break;\n }\n }\n if (!count) {\n break;\n }\n }\n }\n }\n }\n if (count) {\n this.updateCellAttribute(eleArray, count, 'rowspan', min, max, 0, eleArray[0].length - 1);\n }\n }\n };\n TableCommand.prototype.updateCellAttribute = function (elements, index, attr, min, max, firstIndex, length) {\n var rowIndex;\n var colIndex;\n var spanCount;\n for (rowIndex = min; rowIndex <= max; rowIndex++) {\n for (colIndex = firstIndex; colIndex <= length; colIndex++) {\n // eslint-disable-next-line\n min < rowIndex && elements[rowIndex][colIndex] === elements[rowIndex - 1][colIndex] ||\n firstIndex < colIndex && elements[rowIndex][colIndex] === elements[rowIndex][colIndex - 1] ||\n 1 < (spanCount = parseInt(elements[rowIndex][colIndex].getAttribute(attr), 10) || 1) &&\n // eslint-disable-next-line max-len\n (1 < spanCount - index ? elements[rowIndex][colIndex].setAttribute(attr, (spanCount - index).toString()) :\n elements[rowIndex][colIndex].removeAttribute(attr));\n }\n }\n };\n TableCommand.prototype.mergeCellContent = function () {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n var innerHtml = selectedCells[0].innerHTML === '
    ' ? '' : selectedCells[0].innerHTML;\n for (var i = 1; i < selectedCells.length; i++) {\n if ('
    ' !== selectedCells[i].innerHTML) {\n innerHtml = innerHtml ? innerHtml + '
    ' + selectedCells[i].innerHTML : innerHtml + selectedCells[i].innerHTML;\n }\n }\n selectedCells[0].innerHTML = innerHtml;\n };\n TableCommand.prototype.getSelectedMinMaxIndexes = function (correspondingCells) {\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n if (0 < selectedCells.length) {\n var minRow = correspondingCells.length;\n var maxRow = 0;\n var minCol = correspondingCells[0].length;\n var maxCol = 0;\n for (var i = 0; i < selectedCells.length; i++) {\n var currentRowCol = this.getCorrespondingIndex(selectedCells[i], correspondingCells);\n var targetRowCol = this.FindIndex(currentRowCol[0], currentRowCol[1], correspondingCells);\n minRow = Math.min(currentRowCol[0], minRow);\n maxRow = Math.max(targetRowCol[0], maxRow);\n minCol = Math.min(currentRowCol[1], minCol);\n maxCol = Math.max(targetRowCol[1], maxCol);\n }\n return {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n };\n }\n return null;\n };\n TableCommand.prototype.HorizontalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
    ';\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingCells = this.getCorrespondingColumns();\n var activeCellRowSpan = this.activeCell.getAttribute('rowspan') ? parseInt(this.activeCell.getAttribute('rowspan'), 10) : 1;\n if (activeCellRowSpan > 1) {\n var avgCount = Math.ceil(activeCellRowSpan / 2);\n // eslint-disable-next-line\n 1 < avgCount ? this.activeCell.setAttribute('rowspan', avgCount.toString()) :\n this.activeCell.removeAttribute('rowspan');\n // eslint-disable-next-line\n 1 < (activeCellRowSpan - avgCount) ? newCell.setAttribute('rowspan', (activeCellRowSpan - avgCount).toString()) : newCell.removeAttribute('rowspan');\n var avgRowIndex = void 0;\n var colIndex = void 0;\n for (avgRowIndex = activeCellIndex[0] + Math.ceil(activeCellRowSpan / 2), colIndex = 0 === activeCellIndex[1] ? activeCellIndex[1]\n : activeCellIndex[1] - 1; 0 <= colIndex && (correspondingCells[avgRowIndex][colIndex] ===\n // eslint-disable-next-line max-len\n correspondingCells[avgRowIndex][colIndex - 1] || 0 < avgRowIndex && correspondingCells[avgRowIndex][colIndex]\n === correspondingCells[avgRowIndex - 1][colIndex]);) {\n colIndex--;\n }\n if (colIndex === -1) {\n // eslint-disable-next-line\n this.curTable.rows[avgRowIndex].firstChild ? this.curTable.rows[avgRowIndex].prepend(newCell) : this.curTable.appendChild(newCell);\n }\n else {\n correspondingCells[avgRowIndex][colIndex].insertAdjacentElement('afterend', newCell);\n }\n }\n else {\n var newTrEle = createElement('tr');\n newTrEle.appendChild(newCell);\n var selectedRow = correspondingCells[activeCellIndex[0]];\n for (var j = 0; j <= selectedRow.length - 1; j++) {\n if (selectedRow[j] !== selectedRow[j - 1] && selectedRow[j] !== this.activeCell) {\n selectedRow[j].setAttribute('rowspan', ((parseInt(selectedRow[j].getAttribute('rowspan'), 10) ?\n parseInt(selectedRow[j].getAttribute('rowspan'), 10) : 1) + 1).toString());\n }\n }\n this.activeCell.parentNode.insertAdjacentElement('afterend', newTrEle);\n }\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.VerticalSplit = function (e) {\n var selectedCell = e.item.selection.range.startContainer;\n this.curTable = closest(selectedCell.parentElement, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n return;\n }\n this.activeCell = this.curTable.querySelector('.e-cell-select');\n var allRows = this.curTable.rows;\n var newCell = this.activeCell.cloneNode(true);\n newCell.removeAttribute('class');\n newCell.innerHTML = '
    ';\n var avgWidth = parseFloat(this.activeCell.style.width) / 2;\n if (this.activeCell.tagName === 'TH' && isNaN(avgWidth)) {\n var cellCount = this.curTable.querySelector('tr').childElementCount;\n var colSpanCount = 0;\n for (var i = 0; i < cellCount; i++) {\n colSpanCount = colSpanCount + (parseInt(this.curTable.querySelector('tr').children[i].getAttribute('colspan'), 10) || 1);\n }\n avgWidth = parseFloat((((this.activeCell.offsetWidth / 2) / this.curTable.offsetWidth) * 100).toFixed(1));\n }\n var activeCellIndex = this.getCorrespondingIndex(this.activeCell, this.getCorrespondingColumns());\n var correspondingColumns = this.getCorrespondingColumns();\n var activeCellcolSpan = parseInt(this.activeCell.getAttribute('colspan'), 10);\n if (activeCellcolSpan > 1) {\n // eslint-disable-next-line\n 1 < Math.ceil(activeCellcolSpan / 2) ? this.activeCell.setAttribute('colspan', (activeCellcolSpan / 2).toString())\n : this.activeCell.removeAttribute('colspan');\n // eslint-disable-next-line\n 1 < (activeCellcolSpan - activeCellcolSpan / 2) ? newCell.setAttribute('colspan', \n // eslint-disable-next-line\n (activeCellcolSpan - activeCellcolSpan / 2).toString()) : newCell.removeAttribute('colspan');\n }\n else {\n for (var i = 0; i <= allRows.length - 1; i++) {\n if (0 === i || correspondingColumns[i][activeCellIndex[1]] !== correspondingColumns[i - 1][activeCellIndex[1]]) {\n var currentCell = correspondingColumns[i][activeCellIndex[1]];\n if (currentCell !== this.activeCell) {\n currentCell.setAttribute('colspan', ((parseInt(currentCell.getAttribute('colspan'), 10) ?\n parseInt(currentCell.getAttribute('colspan'), 10) : 1) + 1).toString());\n }\n }\n }\n }\n this.activeCell.style.width = avgWidth + '%';\n newCell.style.width = avgWidth + '%';\n this.activeCell.parentNode.insertBefore(newCell, this.activeCell.nextSibling);\n if (e.callBack) {\n e.callBack({\n requestType: e.item.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n TableCommand.prototype.getCorrespondingColumns = function () {\n var elementArray = [];\n // eslint-disable-next-line\n var _this = this;\n var colspan = 0;\n var allRows = _this.curTable.rows;\n for (var i = 0; i <= allRows.length - 1; i++) {\n var ele = allRows[i];\n var index = 0;\n for (var j = 0; j <= ele.children.length - 1; j++) {\n /* eslint-disable */\n var colEle = ele.children[j];\n for (var ele_1 = colEle, colspan_1 = parseInt(ele_1.getAttribute('colspan'), 10) || 1, rowSpan = parseInt(ele_1.getAttribute('rowspan'), 10) || 1, rowIndex = i; rowIndex < i + rowSpan; rowIndex++) {\n for (var colIndex = index; colIndex < index + colspan_1; colIndex++) {\n elementArray[rowIndex] || (elementArray[rowIndex] = []);\n elementArray[rowIndex][colIndex] ? index++ : elementArray[rowIndex][colIndex] = colEle;\n }\n }\n index += colspan;\n }\n /* eslint-enable */\n }\n return elementArray;\n };\n // eslint-disable-next-line\n TableCommand.prototype.FindIndex = function (rowIndex, columnIndex, cells) {\n var nextIndex;\n var nextCol;\n for (nextIndex = rowIndex + 1, nextCol = columnIndex + 1; nextIndex < cells.length;) {\n if (cells[nextIndex][columnIndex] !== cells[rowIndex][columnIndex]) {\n nextIndex--;\n break;\n }\n nextIndex++;\n }\n for (nextIndex === cells.length && nextIndex--; nextCol < cells[rowIndex].length;) {\n if (cells[rowIndex][nextCol] !== cells[rowIndex][columnIndex]) {\n nextCol--;\n break;\n }\n nextCol++;\n }\n return nextCol === cells[rowIndex].length && nextCol--, [\n nextIndex,\n nextCol\n ];\n };\n TableCommand.prototype.getCorrespondingIndex = function (cell, allCells) {\n //let value: RowCol = new RowCol();\n for (var i = 0; i < allCells.length; i++) {\n for (var j = 0; j < allCells[i].length; j++) {\n if (allCells[i][j] === cell) {\n return [i, j];\n }\n }\n }\n return [];\n };\n TableCommand.prototype.highlightCells = function (minRow, maxRow, minCol, maxCol, eleArray) {\n var j;\n var k;\n var startCell;\n var endCell;\n var minRowIndex = minRow;\n var maxRowIndex = maxRow;\n var minColIndex = minCol;\n var maxColIndex = maxCol;\n var minMaxValues = new MinMax();\n for (j = minRowIndex; j <= maxRowIndex; j++) {\n /* eslint-disable */\n if ((1 < (parseInt(eleArray[j][minColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][minColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][minColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[j][maxColIndex].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[j][maxColIndex].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[j][maxColIndex], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n for (k = minColIndex; k <= maxColIndex; k++) {\n if ((1 < (parseInt(eleArray[minRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[minRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[minRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n else if ((1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('rowspan'), 10) || 1) ||\n 1 < (parseInt(eleArray[maxRowIndex][k].getAttribute('colspan'), 10) || 1)) &&\n (endCell = this.FindIndex((startCell = this.getCorrespondingIndex(eleArray[maxRowIndex][k], eleArray))[0], startCell[1], eleArray))) {\n minRowIndex = Math.min(startCell[0], minRowIndex);\n maxRowIndex = Math.max(endCell[0], maxRowIndex);\n minColIndex = Math.min(startCell[1], minColIndex);\n maxColIndex = Math.max(endCell[1], maxColIndex);\n }\n }\n minMaxValues = minRowIndex === minRow && maxRowIndex === maxRow && minColIndex === minCol && maxColIndex === maxCol ? {\n startRow: minRow,\n endRow: maxRow,\n startColumn: minCol,\n endColumn: maxCol\n } : this.highlightCells(minRowIndex, maxRowIndex, minColIndex, maxColIndex, eleArray);\n }\n return minMaxValues;\n /* eslint-enable */\n };\n TableCommand.prototype.tableMove = function (e) {\n this.activeCell = e.selectNode[0];\n var target = e.event.target;\n var activeCellTag = this.activeCell.tagName;\n var targetCellTag = target.tagName;\n this.curTable = closest(target, 'table');\n if (this.curTable.querySelectorAll('.e-cell-select').length > 1) {\n this.parent.nodeSelection.Clear(this.parent.currentDocument);\n }\n if ((target.tagName !== 'TD' && target.tagName !== 'TH') && activeCellTag !== targetCellTag) {\n return;\n }\n var activeRowIndex = Array.prototype.slice.call((this.activeCell).parentElement.parentElement.children)\n .indexOf((this.activeCell).parentElement);\n var activeColumnIndex = Array.prototype.slice.call((this.activeCell).parentElement.children).indexOf(this.activeCell);\n var targetRowIndex = Array.prototype.slice.call(target.parentElement.parentElement.children)\n .indexOf(target.parentElement);\n var targetColumnIndex = Array.prototype.slice.call(target.parentElement.children).indexOf(target);\n var activeCellList = this.curTable.querySelectorAll('.e-cell-select');\n for (var i = activeCellList.length - 1; i >= 0; i--) {\n if (this.activeCell !== activeCellList[i]) {\n activeCellList[i].classList.remove('e-cell-select');\n }\n }\n if (activeRowIndex === targetRowIndex && activeColumnIndex === targetColumnIndex) {\n return;\n }\n var correspondingCells = this.getCorrespondingColumns();\n var activeIndexes = this.getCorrespondingIndex(this.activeCell, correspondingCells);\n var targetIndexes = this.getCorrespondingIndex(target, correspondingCells);\n var minMaxIndexes = this.highlightCells(Math.min(activeIndexes[0], targetIndexes[0]), Math.max(activeIndexes[0], \n /* eslint-disable */\n targetIndexes[0]), Math.min(activeIndexes[1], targetIndexes[1]), Math.max(activeIndexes[1], targetIndexes[1]), correspondingCells);\n for (var rowIndex = minMaxIndexes.startRow; rowIndex <= minMaxIndexes.endRow; rowIndex++) {\n for (var colIndex = minMaxIndexes.startColumn; colIndex <= minMaxIndexes.endColumn; colIndex++) {\n correspondingCells[rowIndex][colIndex].classList.add('e-cell-select');\n }\n }\n if (this.parent.nodeSelection.range) {\n this.parent.nodeSelection.setSelectionText(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, this.parent.nodeSelection.range.endContainer, 0, 0);\n this.parent.nodeSelection.setCursorPoint(this.parent.currentDocument, this.parent.nodeSelection.range.endContainer, 0);\n }\n };\n \n return TableCommand;\n}());\nvar MinMax = /** @__PURE__ @class */ (function () {\n function MinMax() {\n }\n return MinMax;\n}());\n\n/**\n * Is formatted or not.\n *\n * @hidden\n * @deprecated\n */\nvar IsFormatted = /** @__PURE__ @class */ (function () {\n function IsFormatted() {\n }\n /**\n * getFormattedNode method\n *\n * @param {Node} node - specifies the node.\n * @param {string} format - specifies the string value.\n * @param {Node} endNode - specifies the end node\n * @returns {Node} - returns the node\n * @hidden\n * @deprecated\n */\n IsFormatted.prototype.getFormattedNode = function (node, format, endNode) {\n var parentNode = this.getFormatParent(node, format, endNode);\n if (parentNode !== null && parentNode !== endNode) {\n return parentNode;\n }\n return null;\n };\n IsFormatted.prototype.getFormatParent = function (node, format, endNode) {\n do {\n node = node.parentNode;\n } while (node && (node !== endNode) && !this.isFormattedNode(node, format));\n return node;\n };\n IsFormatted.prototype.isFormattedNode = function (node, format) {\n switch (format) {\n case 'bold':\n return IsFormatted.isBold(node);\n case 'italic':\n return IsFormatted.isItalic(node);\n case 'underline':\n return IsFormatted.isUnderline(node);\n case 'strikethrough':\n return IsFormatted.isStrikethrough(node);\n case 'superscript':\n return IsFormatted.isSuperscript(node);\n case 'subscript':\n return IsFormatted.isSubscript(node);\n case 'fontcolor':\n return this.isFontColor(node);\n case 'fontname':\n return this.isFontName(node);\n case 'fontsize':\n return this.isFontSize(node);\n case 'backgroundcolor':\n return this.isBackgroundColor(node);\n default:\n return false;\n }\n };\n /**\n * isBold method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n IsFormatted.isBold = function (node) {\n var validTags = ['strong', 'b'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontWeight === 'bold') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isItalic method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n IsFormatted.isItalic = function (node) {\n var validTags = ['em', 'i'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.fontStyle === 'italic') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isUnderline method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n IsFormatted.isUnderline = function (node) {\n var validTags = ['u'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.textDecoration === 'underline') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isStrikethrough method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n IsFormatted.isStrikethrough = function (node) {\n var validTags = ['del', 'strike'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else if (this.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n node.style && node.style.textDecoration === 'line-through') {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSuperscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n IsFormatted.isSuperscript = function (node) {\n var validTags = ['sup'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * isSubscript method\n *\n * @param {Node} node - specifies the node value\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n IsFormatted.isSubscript = function (node) {\n var validTags = ['sub'];\n if (validTags.indexOf(node.nodeName.toLowerCase()) !== -1) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontColor = function (node) {\n var color = node.style && node.style.color;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n color !== null && color !== '' && color !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n backColor !== null && backColor !== '' && backColor !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontSize = function (node) {\n var size = node.style && node.style.fontSize;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n size !== null && size !== '' && size !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n IsFormatted.prototype.isFontName = function (node) {\n var name = node.style && node.style.fontFamily;\n if (IsFormatted.inlineTags.indexOf(node.nodeName.toLowerCase()) !== -1 &&\n name !== null && name !== '' && name !== undefined) {\n return true;\n }\n else {\n return false;\n }\n };\n // Get Formatted Node\n IsFormatted.inlineTags = [\n 'a',\n 'abbr',\n 'acronym',\n 'b',\n 'bdo',\n 'big',\n 'cite',\n 'code',\n 'dfn',\n 'em',\n 'i',\n 'kbd',\n 'label',\n 'q',\n 'samp',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'sup',\n 'tt',\n 'u',\n 'var',\n 'del'\n ];\n return IsFormatted;\n}());\n\n/**\n * `Selection` module is used to handle RTE Selections.\n */\nvar SelectionCommands = /** @__PURE__ @class */ (function () {\n function SelectionCommands() {\n }\n /**\n * applyFormat method\n *\n * @param {Document} docElement - specifies the document\n * @param {string} format - specifies the string value\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} value - specifies the string value\n * @param {string} selector - specifies the string\n * @returns {void}\n * @hidden\n * @deprecated\n */\n SelectionCommands.applyFormat = function (docElement, format, endNode, enterAction, value, selector) {\n this.enterAction = enterAction;\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase', 'fontcolor', 'fontname', 'fontsize', 'backgroundcolor'];\n if (validFormats.indexOf(format) > -1) {\n if (format === 'backgroundcolor' && value === '') {\n value = 'transparent';\n }\n var domSelection = new NodeSelection();\n var domNode = new DOMNode(endNode, docElement);\n var nodeCutter = new NodeCutter();\n var isFormatted = new IsFormatted();\n var range = domSelection.getRange(docElement);\n var save = domSelection.save(range, docElement);\n var nodes = range.collapsed ? domSelection.getSelectionNodeCollection(range) :\n domSelection.getSelectionNodeCollectionBr(range);\n var isCollapsed = false;\n var isFormat = false;\n var isCursor = false;\n var preventRestore = false;\n var isFontStyle = (['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1);\n if (range.collapsed) {\n var currentFormatNode = isFormatted.getFormattedNode(range.startContainer, format, endNode);\n var currentSelector = !isNullOrUndefined(currentFormatNode) ?\n (currentFormatNode.getAttribute('style') === null ? currentFormatNode.nodeName :\n currentFormatNode.nodeName + '[style=\\'' + currentFormatNode.getAttribute('style') + '\\']') : null;\n if (nodes.length > 0) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, nodes[0]);\n }\n else if (range.startContainer.nodeType === 3 && ((range.startContainer.parentElement.childElementCount > 0 &&\n range.startOffset > 0 && range.startContainer.parentElement.firstElementChild.tagName.toLowerCase() !== 'br') ||\n !isNullOrUndefined(currentFormatNode) && currentFormatNode ===\n (range.startContainer.parentElement.closest(currentSelector)) &&\n ((range.startContainer.parentElement.closest(currentSelector)).textContent.replace(\n // eslint-disable-next-line\n new RegExp(String.fromCharCode(8203), 'g'), '').trim().length !== 0))) {\n isCollapsed = true;\n range = nodeCutter.GetCursorRange(docElement, range, range.startContainer);\n nodes.push(range.startContainer);\n }\n else {\n var cursorNode = this.insertCursorNode(docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode);\n domSelection.endContainer = domSelection.startContainer = domSelection.getNodeArray(cursorNode, true);\n var childNodes = cursorNode.nodeName === 'BR' && cursorNode.parentNode.childNodes;\n if (!isNullOrUndefined(childNodes) && childNodes.length === 1 && childNodes[0].nodeName === 'BR' && nodes.length === 0) {\n domSelection.setSelectionText(docElement, range.startContainer, range.endContainer, 0, 0);\n preventRestore = true;\n }\n else {\n domSelection.endOffset = domSelection.startOffset = 1;\n }\n if (cursorNode.nodeName === 'BR' && cursorNode.parentNode.textContent.length === 0) {\n preventRestore = true;\n }\n }\n }\n isCursor = range.collapsed;\n var isSubSup = false;\n for (var index = 0; index < nodes.length; index++) {\n var formatNode = isFormatted.getFormattedNode(nodes[index], format, endNode);\n if (formatNode === null) {\n if (format === 'subscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'superscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n else if (format === 'superscript') {\n formatNode = isFormatted.getFormattedNode(nodes[index], 'subscript', endNode);\n isSubSup = formatNode === null ? false : true;\n }\n }\n else if ((format === 'fontsize' || format === 'fontname' || format === 'fontcolor' || format === 'backgroundcolor') && range.startContainer.parentElement === endNode) {\n formatNode = null;\n }\n if (index === 0 && formatNode === null) {\n isFormat = true;\n }\n if (formatNode !== null && (!isFormat || isFontStyle)) {\n nodes[index] = this.removeFormat(nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode);\n }\n else if (range.startContainer.parentElement !== endNode || (range.commonAncestorContainer === endNode || nodes.length === 1)) {\n nodes[index] = this.insertFormat(docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domNode, endNode);\n }\n domSelection = this.applySelection(nodes, domSelection, nodeCutter, index, isCollapsed);\n }\n if (isIDevice$1()) {\n setEditFrameFocus(endNode, selector);\n }\n if (!preventRestore) {\n save.restore();\n }\n if (isSubSup) {\n this.applyFormat(docElement, format, endNode, enterAction);\n }\n }\n };\n SelectionCommands.insertCursorNode = function (docElement, domSelection, range, isFormatted, nodeCutter, format, value, endNode) {\n var cursorNodes = domSelection.getNodeCollection(range);\n var domNode = new DOMNode(endNode, docElement);\n var cursorFormat = (cursorNodes.length > 0) ?\n (cursorNodes.length > 1 && range.startContainer === range.endContainer) ?\n this.getCursorFormat(isFormatted, cursorNodes, format, endNode) :\n isFormatted.getFormattedNode(cursorNodes[0], format, endNode) : null;\n var cursorNode = null;\n if (cursorFormat) {\n cursorNode = cursorNodes[0];\n if (cursorFormat.firstChild.textContent.charCodeAt(0) === 8203 && cursorFormat.firstChild.nodeType === 3) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var emptySpaceNode = void 0;\n if (cursorFormat.firstChild === cursorNode) {\n cursorNode.textContent = (cursorFormat.parentElement && (domNode.isBlockNode(cursorFormat.parentElement) &&\n cursorFormat.parentElement.textContent.length <= 1 ? cursorFormat.parentElement.childElementCount > 1 :\n cursorFormat.childElementCount === 0) &&\n (cursorFormat.parentElement.textContent.length > 1 ||\n cursorFormat.parentElement.firstChild && cursorFormat.parentElement.firstChild.nodeType === 1) ?\n cursorNode.textContent : cursorNode.textContent.replace(regEx, ''));\n emptySpaceNode = cursorNode;\n }\n else {\n cursorFormat.firstChild.textContent = cursorFormat.firstChild.textContent.replace(regEx, '');\n emptySpaceNode = cursorFormat.firstChild;\n }\n var pointer = void 0;\n if (emptySpaceNode.textContent.length === 0) {\n if (!isNullOrUndefined(emptySpaceNode.previousSibling)) {\n cursorNode = emptySpaceNode.previousSibling;\n pointer = emptySpaceNode.textContent.length - 1;\n domSelection.setCursorPoint(docElement, emptySpaceNode, pointer);\n }\n else if (!isNullOrUndefined(emptySpaceNode.parentElement) && emptySpaceNode.parentElement.textContent.length === 0) {\n var brElem = document.createElement('BR');\n emptySpaceNode.parentElement.appendChild(brElem);\n detach(emptySpaceNode);\n cursorNode = brElem;\n domSelection.setCursorPoint(docElement, cursorNode.parentElement, 0);\n }\n }\n }\n if ((['fontcolor', 'fontname', 'fontsize', 'backgroundcolor'].indexOf(format) > -1)) {\n if (format === 'fontcolor') {\n cursorFormat.style.color = value;\n }\n else if (format === 'fontname') {\n cursorFormat.style.fontFamily = value;\n }\n else if (format === 'fontsize') {\n cursorFormat.style.fontSize = value;\n }\n else {\n cursorFormat.style.backgroundColor = value;\n }\n cursorNode = cursorFormat;\n }\n else {\n InsertMethods.unwrap(cursorFormat);\n }\n }\n else {\n if (cursorNodes.length > 1 && range.startOffset > 0 && (cursorNodes[0].firstElementChild &&\n cursorNodes[0].firstElementChild.tagName.toLowerCase() === 'br')) {\n cursorNodes[0].innerHTML = '';\n }\n if (cursorNodes.length === 1 && range.startOffset === 0 && (cursorNodes[0].nodeName === 'BR' ||\n cursorNodes[0].nextSibling.nodeName === 'BR')) {\n detach(cursorNodes[0].nodeName === '#text' ? cursorNodes[0].nextSibling : cursorNodes[0]);\n }\n cursorNode = this.getInsertNode(docElement, range, format, value).firstChild;\n }\n return cursorNode;\n };\n SelectionCommands.getCursorFormat = function (isFormatted, cursorNodes, format, endNode) {\n var currentNode;\n for (var index = 0; index < cursorNodes.length; index++) {\n currentNode = cursorNodes[index].lastElementChild ?\n cursorNodes[index].lastElementChild : cursorNodes[index];\n }\n return isFormatted.getFormattedNode(currentNode, format, endNode);\n };\n SelectionCommands.removeFormat = function (nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domSelection, endNode, domNode) {\n var splitNode = null;\n var startText = range.startContainer.nodeName === '#text' ?\n range.startContainer.textContent.substring(range.startOffset, range.startContainer.textContent.length) :\n range.startContainer.textContent;\n var nodeText = nodes[index].textContent;\n if (!(range.startContainer === range.endContainer && range.startOffset === 0\n && range.endOffset === range.startContainer.length)) {\n var nodeIndex = [];\n var cloneNode = nodes[index];\n do {\n nodeIndex.push(domSelection.getIndex(cloneNode));\n cloneNode = cloneNode.parentNode;\n } while (cloneNode && (cloneNode !== formatNode));\n if (nodes[index].nodeName !== 'BR') {\n cloneNode = splitNode = (isCursor && (formatNode.textContent.length - 1) === range.startOffset) ?\n nodeCutter.SplitNode(range, formatNode, true)\n : nodeCutter.GetSpliceNode(range, formatNode);\n }\n if (!isCursor) {\n while (cloneNode && cloneNode.childNodes.length > 0 && ((nodeIndex.length - 1) >= 0)\n && (cloneNode.childNodes.length > nodeIndex[nodeIndex.length - 1])) {\n cloneNode = cloneNode.childNodes[nodeIndex[nodeIndex.length - 1]];\n nodeIndex.pop();\n }\n if (nodes[index].nodeName !== 'BR') {\n if (cloneNode.nodeType === 3 && !(isCursor && cloneNode.nodeValue === '')) {\n nodes[index] = cloneNode;\n }\n else {\n var divNode = document.createElement('div');\n divNode.innerHTML = '​';\n if (cloneNode.nodeType !== 3) {\n cloneNode.insertBefore(divNode.firstChild, cloneNode.firstChild);\n nodes[index] = cloneNode.firstChild;\n }\n else {\n cloneNode.parentNode.insertBefore(divNode.firstChild, cloneNode);\n nodes[index] = cloneNode.previousSibling;\n cloneNode.parentNode.removeChild(cloneNode);\n }\n }\n }\n }\n else {\n var lastNode = splitNode;\n for (; lastNode.firstChild !== null && lastNode.firstChild.nodeType !== 3; null) {\n lastNode = lastNode.firstChild;\n }\n lastNode.innerHTML = '​';\n nodes[index] = lastNode.firstChild;\n }\n }\n var fontStyle;\n if (format === 'backgroundcolor') {\n fontStyle = formatNode.style.fontSize;\n }\n var bgStyle;\n if (format === 'fontsize') {\n var bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');\n if (!isNullOrUndefined(bg)) {\n bgStyle = bg.style.backgroundColor;\n }\n }\n var formatNodeStyles = formatNode.getAttribute('style');\n var formatNodeTagName = formatNode.tagName;\n var child = InsertMethods.unwrap(formatNode);\n if (child[0] && !isFontStyle) {\n var nodeTraverse = child[index] ? child[index] : child[0];\n var textNode = nodeTraverse;\n for (; nodeTraverse && nodeTraverse.parentElement && nodeTraverse.parentElement !== endNode; \n // eslint-disable-next-line\n nodeTraverse = nodeTraverse) {\n var nodeTraverseCondition = void 0;\n if (formatNode.nodeName === 'SPAN') {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase() && nodeTraverse.parentElement.getAttribute('style') === formatNodeStyles;\n }\n else {\n nodeTraverseCondition = nodeTraverse.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase();\n }\n if (nodeTraverse.parentElement && nodeTraverseCondition &&\n (nodeTraverse.parentElement.childElementCount > 1 || range.startOffset > 1)) {\n if (textNode.parentElement && textNode.parentElement.tagName.toLocaleLowerCase()\n === formatNode.tagName.toLocaleLowerCase()) {\n if ((range.startOffset === range.endOffset) && textNode.nodeType !== 1 &&\n !isNullOrUndefined(textNode.textContent) && textNode.parentElement.childElementCount > 1) {\n range.setStart(textNode, 0);\n range.setEnd(textNode, textNode.textContent.length);\n nodeCutter.SplitNode(range, textNode.parentElement, false);\n }\n }\n if (nodeTraverse.parentElement.tagName.toLocaleLowerCase() === 'span') {\n if (formatNode.style.textDecoration === 'underline' &&\n nodeTraverse.parentElement.style.textDecoration !== 'underline') {\n nodeTraverse = nodeTraverse.parentElement;\n continue;\n }\n }\n InsertMethods.unwrap(nodeTraverse.parentElement);\n nodeTraverse = !isNullOrUndefined(nodeTraverse.parentElement) && !domNode.isBlockNode(nodeTraverse.parentElement) ? textNode :\n nodeTraverse.parentElement;\n }\n else {\n nodeTraverse = nodeTraverse.parentElement;\n }\n }\n }\n if (child.length > 0 && isFontStyle) {\n for (var num = 0; num < child.length; num++) {\n if (child[num].nodeType !== 3 || (child[num].textContent &&\n child[num].textContent.trim().length > 0)) {\n child[num] = InsertMethods.Wrap(child[num], this.GetFormatNode(format, value, formatNodeTagName, formatNodeStyles));\n if (child[num].textContent === startText) {\n if (num === 0) {\n range.setStartBefore(child[num]);\n }\n else if (num === child.length - 1) {\n range.setEndAfter(child[num]);\n }\n }\n }\n }\n var currentNodeElem = nodes[index].parentElement;\n if (!isNullOrUndefined(fontStyle) && fontStyle !== '') {\n currentNodeElem.style.fontSize = fontStyle;\n }\n if (!isNullOrUndefined(bgStyle) && bgStyle !== '') {\n currentNodeElem.style.backgroundColor = bgStyle;\n }\n if ((format === 'backgroundcolor' && !isNullOrUndefined(fontStyle) && fontStyle !== '') &&\n currentNodeElem.parentElement.innerHTML === currentNodeElem.outerHTML) {\n var curParentElem = currentNodeElem.parentElement;\n curParentElem.parentElement.insertBefore(currentNodeElem, curParentElem);\n detach(curParentElem);\n }\n if (format === 'fontsize' || format === 'fontcolor') {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNullOrUndefined(parentElement) && parentElement.tagName.toLowerCase() !== 'li') {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n var num = index;\n var liChildContent = '';\n while (num >= 0 && !isNullOrUndefined(liElement) && liElement.tagName.toLowerCase() === 'li' && liElement.textContent.replace('/\\u200B/g', '').trim().includes(nodes[num].textContent.trim())) {\n liChildContent = ' ' + nodes[num].textContent.trim() + liChildContent;\n num--;\n }\n var isNestedList = false;\n var nestedListCount = 0;\n var isNestedListItem = false;\n if (!isNullOrUndefined(liElement) && liElement.childNodes) {\n for (var num_1 = 0; num_1 < liElement.childNodes.length; num_1++) {\n if (liElement.childNodes[num_1].nodeName === ('OL' || 'UL')) {\n nestedListCount++;\n isNestedList = true;\n }\n }\n }\n if (!isNullOrUndefined(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.split('\\u200B').join('').trim() === liChildContent.split('\\u200B').join('').trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n else if (!isNullOrUndefined(liElement) && liElement.tagName.toLowerCase() === 'li' && isNestedList) {\n if (isNestedList && nestedListCount > 0) {\n for (var num_2 = 0; num_2 < liElement.childNodes.length; num_2++) {\n if (nodes[index].textContent === liElement.childNodes[num_2].textContent && nodes[index].textContent === nodeText && liElement.textContent.replace('/\\u200B/g', '').trim().includes(liChildContent.split('\\u200B').join('').trim())) {\n isNestedListItem = true;\n }\n }\n }\n if (isNestedListItem) {\n for (var num_3 = 0; num_3 < liElement.childNodes.length; num_3++) {\n if (liElement.childNodes[num_3].nodeName === ('OL' || 'UL')) {\n liElement.childNodes[num_3].style.fontSize = 'initial';\n }\n }\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n }\n }\n }\n return nodes[index];\n };\n SelectionCommands.insertFormat = function (docElement, nodes, index, formatNode, isCursor, isFormat, isFontStyle, range, nodeCutter, format, value, domNode, endNode) {\n var rootElementNode;\n if (!isCursor) {\n if ((formatNode === null && isFormat) || isFontStyle) {\n if (nodes[index].nodeName !== 'BR') {\n if (format === 'fontsize' || format === 'fontname' || format === 'fontcolor' || format === 'backgroundcolor') {\n var rangeNode = nodes[index];\n while (rangeNode && !domNode.isBlockNode(rangeNode) && rangeNode !== endNode) {\n if (domNode.isBlockNode(rangeNode.parentElement)) {\n rootElementNode = rangeNode;\n }\n rangeNode = rangeNode.parentElement;\n }\n if (rootElementNode && rootElementNode.nodeType !== 3) {\n nodeCutter.SplitNode(range, rootElementNode, true).cloneNode(true);\n nodeCutter.SplitNode(range, rootElementNode, false).cloneNode(false);\n }\n }\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n nodes[index].textContent = nodeCutter.TrimLineBreak(nodes[index].textContent);\n }\n if (format === 'uppercase' || format === 'lowercase') {\n nodes[index].textContent = (format === 'uppercase') ? nodes[index].textContent.toLocaleUpperCase()\n : nodes[index].textContent.toLocaleLowerCase();\n }\n else if (!(isFontStyle === true && value === '')) {\n var element = this.GetFormatNode(format, value);\n if (format === 'fontsize' || format === 'fontcolor' || format === 'fontname' || format === 'backgroundcolor') {\n if (format !== 'fontname' && format !== 'backgroundcolor') {\n var liElement = nodes[index].parentElement;\n var parentElement = nodes[index].parentElement;\n while (!isNullOrUndefined(parentElement) && parentElement.tagName.toLowerCase() !== 'li' && parentElement !== endNode) {\n parentElement = parentElement.parentElement;\n liElement = parentElement;\n }\n if (!isNullOrUndefined(liElement) && liElement.tagName.toLowerCase() === 'li' &&\n liElement.textContent.trim() === nodes[index].textContent.trim()) {\n if (format === 'fontsize') {\n liElement.style.fontSize = value;\n }\n else {\n liElement.style.color = value;\n liElement.style.textDecoration = 'inherit';\n }\n }\n }\n if (rootElementNode && rootElementNode.nodeType !== 3) {\n var save = new NodeSelection();\n save.save(range, docElement);\n domNode.setMarker(save);\n var cloneNode = rootElementNode.cloneNode(true);\n element.appendChild(cloneNode);\n domNode.replaceWith(rootElementNode, element.outerHTML);\n var currentStartNode = endNode.querySelector('.e-editor-select-start');\n var currrentEndNode = endNode.querySelector('.e-editor-select-end');\n if (index === 0) {\n nodes[index] = currentStartNode ? currentStartNode.lastChild : nodes[index];\n }\n if (range.startContainer.parentElement === endNode) {\n if (nodes.length > 1) {\n nodes[nodes.length - 1] = currrentEndNode ? currrentEndNode.lastChild : nodes[index];\n }\n }\n domNode.saveMarker(save, null);\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n if (format === 'fontsize') {\n var bg = closest(nodes[index].parentElement, 'span[style*=' + 'background-color' + ']');\n if (!isNullOrUndefined(bg)) {\n nodes[index].parentElement.style.backgroundColor = bg.style.backgroundColor;\n }\n }\n }\n else {\n nodes[index] = this.applyStyles(nodes, index, element);\n }\n }\n }\n else {\n nodes[index] = nodeCutter.GetSpliceNode(range, nodes[index]);\n }\n }\n else {\n if (format !== 'uppercase' && format !== 'lowercase') {\n var element = this.getInsertNode(docElement, range, format, value);\n nodes[index] = element.firstChild;\n nodeCutter.position = 1;\n }\n else {\n nodeCutter.position = range.startOffset;\n }\n }\n return nodes[index];\n };\n SelectionCommands.applyStyles = function (nodes, index, element) {\n if (!(nodes[index].nodeName === 'BR' && this.enterAction === 'BR')) {\n nodes[index] = (index === (nodes.length - 1)) || nodes[index].nodeName === 'BR' ?\n InsertMethods.Wrap(nodes[index], element)\n : InsertMethods.WrapBefore(nodes[index], element, true);\n nodes[index] = this.getChildNode(nodes[index], element);\n }\n return nodes[index];\n };\n SelectionCommands.getInsertNode = function (docElement, range, format, value) {\n var element = this.GetFormatNode(format, value);\n element.innerHTML = '​';\n if (Browser.isIE) {\n var frag = docElement.createDocumentFragment();\n frag.appendChild(element);\n range.insertNode(frag);\n }\n else {\n range.insertNode(element);\n }\n return element;\n };\n SelectionCommands.getChildNode = function (node, element) {\n if (node === undefined || node === null) {\n element.innerHTML = '​';\n node = element.firstChild;\n }\n return node;\n };\n SelectionCommands.applySelection = function (nodes, domSelection, nodeCutter, index, isCollapsed) {\n if (nodes.length === 1 && !isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = 0;\n domSelection.endOffset = nodes[index].textContent.length;\n }\n else if (nodes.length === 1 && isCollapsed) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.endContainer = domSelection.startContainer;\n domSelection.startOffset = nodeCutter.position;\n domSelection.endOffset = nodeCutter.position;\n }\n else if (index === 0) {\n domSelection.startContainer = domSelection.getNodeArray(nodes[index], true);\n domSelection.startOffset = 0;\n }\n else if (index === nodes.length - 1) {\n domSelection.endContainer = domSelection.getNodeArray(nodes[index], false);\n domSelection.endOffset = nodes[index].textContent.length;\n }\n return domSelection;\n };\n SelectionCommands.GetFormatNode = function (format, value, tagName, styles) {\n var node;\n switch (format) {\n case 'bold':\n return document.createElement('strong');\n case 'italic':\n return document.createElement('em');\n case 'underline':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'underline';\n return node;\n case 'strikethrough':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.textDecoration = 'line-through';\n return node;\n case 'superscript':\n return document.createElement('sup');\n case 'subscript':\n return document.createElement('sub');\n case 'fontcolor':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.color = value;\n node.style.textDecoration = 'inherit';\n return node;\n case 'fontname':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontFamily = value;\n return node;\n case 'fontsize':\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.fontSize = value;\n return node;\n default:\n node = document.createElement('span');\n this.updateStyles(node, tagName, styles);\n node.style.backgroundColor = value;\n return node;\n }\n };\n SelectionCommands.updateStyles = function (ele, tag, styles) {\n if (styles !== null && tag === 'SPAN') {\n ele.setAttribute('style', styles);\n }\n };\n SelectionCommands.enterAction = 'P';\n return SelectionCommands;\n}());\n\n/**\n * Selection EXEC internal component\n *\n * @hidden\n * @deprecated\n */\nvar SelectionBasedExec = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function SelectionBasedExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n SelectionBasedExec.prototype.addEventListener = function () {\n this.parent.observer.on(SELECTION_TYPE, this.applySelection, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.keyDownHandler, this);\n };\n SelectionBasedExec.prototype.keyDownHandler = function (e) {\n var validFormats = ['bold', 'italic', 'underline', 'strikethrough', 'superscript',\n 'subscript', 'uppercase', 'lowercase'];\n if (e.event.ctrlKey && validFormats.indexOf(e.event.action) > -1) {\n e.event.preventDefault();\n SelectionCommands.applyFormat(this.parent.currentDocument, e.event.action, this.parent.editableElement, e.enterAction);\n this.callBack(e, e.event.action);\n }\n };\n SelectionBasedExec.prototype.applySelection = function (e) {\n SelectionCommands.applyFormat(this.parent.currentDocument, e.subCommand.toLocaleLowerCase(), this.parent.editableElement, e.enterAction, e.value, e.selector);\n this.callBack(e, e.subCommand);\n };\n SelectionBasedExec.prototype.callBack = function (event, action) {\n if (event.callBack) {\n event.callBack({\n requestType: action,\n event: event.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return SelectionBasedExec;\n}());\n\n/**\n * Selection EXEC internal component\n *\n * @hidden\n * @deprecated\n */\nvar InsertHtmlExec = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - sepcifies the parent element\n * @hidden\n * @deprecated\n */\n function InsertHtmlExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertHtmlExec.prototype.addEventListener = function () {\n this.parent.observer.on(INSERTHTML_TYPE, this.applyHtml, this);\n };\n InsertHtmlExec.prototype.applyHtml = function (e) {\n InsertHtml.Insert(this.parent.currentDocument, e.value, this.parent.editableElement, true, e.enterAction);\n if (e.subCommand === 'pasteCleanup') {\n var pastedElements = this.parent.editableElement.querySelectorAll('.pasteContent_RTE');\n var allPastedElements = [].slice.call(pastedElements);\n var imgElements = this.parent.editableElement.querySelectorAll('.pasteContent_Img');\n var allImgElm = [].slice.call(imgElements);\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n elements: allPastedElements,\n imgElem: allImgElm\n });\n }\n else {\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return InsertHtmlExec;\n}());\n\n/**\n * `Clear Format` module is used to handle Clear Format.\n */\nvar ClearFormat$1 = /** @__PURE__ @class */ (function () {\n function ClearFormat() {\n }\n /**\n * clear method\n *\n * @param {Document} docElement - specifies the document element.\n * @param {Node} endNode - specifies the end node\n * @param {string} enterAction - specifies the enter key action\n * @param {string} selector - specifies the string value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ClearFormat.clear = function (docElement, endNode, enterAction, selector) {\n this.domNode = new DOMNode(endNode, docElement);\n this.defaultTag = enterAction === 'P' ? this.defaultTag : 'div';\n var nodeSelection = new NodeSelection();\n var nodeCutter = new NodeCutter();\n var range = nodeSelection.getRange(docElement);\n var isCollapsed = range.collapsed;\n var nodes = nodeSelection.getInsertNodeCollection(range);\n var save = nodeSelection.save(range, docElement);\n if (!isCollapsed) {\n var preNode = void 0;\n if (nodes[0].nodeName === 'BR' && closest(nodes[0], 'table')) {\n preNode = nodeCutter.GetSpliceNode(range, closest(nodes[0], 'table'));\n }\n else {\n preNode = nodeCutter.GetSpliceNode(range, nodes[nodes.length > 1 && nodes[0].nodeName === 'IMG' ? 1 : 0]);\n }\n if (nodes.length === 1) {\n nodeSelection.setSelectionContents(docElement, preNode);\n range = nodeSelection.getRange(docElement);\n }\n else {\n var i = 1;\n var lastText = nodes[nodes.length - i];\n while (nodes.length <= i && nodes[nodes.length - i].nodeName === 'BR') {\n i++;\n lastText = nodes[nodes.length - i];\n }\n var lasNode = nodeCutter.GetSpliceNode(range, lastText);\n nodeSelection.setSelectionText(docElement, preNode, lasNode, 0, (lasNode.nodeType === 3) ?\n lasNode.textContent.length : lasNode.childNodes.length);\n range = nodeSelection.getRange(docElement);\n }\n var exactNodes = nodeSelection.getNodeCollection(range);\n var cloneSelectNodes = exactNodes.slice();\n this.clearInlines(nodeSelection.getSelectionNodes(cloneSelectNodes), cloneSelectNodes, nodeSelection.getRange(docElement), nodeCutter, endNode);\n this.reSelection(docElement, save, exactNodes);\n range = nodeSelection.getRange(docElement);\n exactNodes = nodeSelection.getNodeCollection(range);\n var cloneParentNodes = exactNodes.slice();\n this.clearBlocks(docElement, cloneParentNodes, endNode, nodeCutter, nodeSelection);\n if (isIDevice$1()) {\n setEditFrameFocus(endNode, selector);\n }\n this.reSelection(docElement, save, exactNodes);\n }\n };\n ClearFormat.reSelection = function (docElement, save, exactNodes) {\n var selectionNodes = save.getInsertNodes(exactNodes);\n save.startContainer = save.getNodeArray(selectionNodes[0], true, docElement);\n save.startOffset = 0;\n save.endContainer = save.getNodeArray(selectionNodes[selectionNodes.length - 1], false, docElement);\n var endIndexNode = selectionNodes[selectionNodes.length - 1];\n save.endOffset = (endIndexNode.nodeType === 3) ? endIndexNode.textContent.length\n : endIndexNode.childNodes.length;\n save.restore();\n };\n ClearFormat.clearBlocks = function (docElement, nodes, endNode, nodeCutter, nodeSelection) {\n var parentNodes = [];\n for (var index = 0; index < nodes.length; index++) {\n if (this.BLOCK_TAGS.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1\n && parentNodes.indexOf(nodes[index]) === -1) {\n parentNodes.push(nodes[index]);\n }\n else if ((this.BLOCK_TAGS.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1)\n && parentNodes.indexOf(nodes[index].parentNode) === -1\n && endNode !== nodes[index].parentNode) {\n parentNodes.push(nodes[index].parentNode);\n }\n }\n parentNodes = this.spliceParent(parentNodes, nodes)[0];\n parentNodes = this.removeParent(parentNodes);\n this.unWrap(docElement, parentNodes, nodeCutter, nodeSelection);\n };\n ClearFormat.spliceParent = function (parentNodes, nodes) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n var len = parentNodes[index1].childNodes.length;\n for (var index2 = 0; index2 < len; index2++) {\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) > 0)\n && (parentNodes[index1].childNodes[index2].childNodes.length > 0)) {\n nodes = this.spliceParent([parentNodes[index1].childNodes[index2]], nodes)[1];\n }\n if ((nodes.indexOf(parentNodes[index1].childNodes[index2]) <= -1) &&\n (parentNodes[index1].childNodes[index2].textContent.trim() !== '')) {\n for (var index3 = 0; index3 < len; index3++) {\n if (nodes.indexOf(parentNodes[index1].childNodes[index3]) > -1) {\n nodes.splice(nodes.indexOf(parentNodes[index1].childNodes[index3]), 1);\n }\n }\n index2 = parentNodes[index1].childNodes.length;\n var parentIndex = parentNodes.indexOf(parentNodes[index1].parentNode);\n var nodeIndex = nodes.indexOf(parentNodes[index1].parentNode);\n if (parentIndex > -1) {\n parentNodes.splice(parentIndex, 1);\n }\n if (nodeIndex > -1) {\n nodes.splice(nodeIndex, 1);\n }\n var elementIndex = nodes.indexOf(parentNodes[index1]);\n if (elementIndex > -1) {\n nodes.splice(elementIndex, 1);\n }\n parentNodes.splice(index1, 1);\n index1--;\n }\n }\n }\n return [parentNodes, nodes];\n };\n ClearFormat.removeChild = function (parentNodes, parentNode) {\n var count = parentNode.childNodes.length;\n if (count > 0) {\n for (var index = 0; index < count; index++) {\n if (parentNodes.indexOf(parentNode.childNodes[index]) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNode.childNodes[index]);\n parentNodes.splice(parentNodes.indexOf(parentNode.childNodes[index]), 1);\n }\n }\n }\n return parentNodes;\n };\n ClearFormat.removeParent = function (parentNodes) {\n for (var index = 0; index < parentNodes.length; index++) {\n if (parentNodes.indexOf(parentNodes[index].parentNode) > -1) {\n parentNodes = this.removeChild(parentNodes, parentNodes[index]);\n parentNodes.splice(index, 1);\n index--;\n }\n }\n return parentNodes;\n };\n ClearFormat.unWrap = function (docElement, parentNodes, nodeCutter, nodeSelection) {\n for (var index1 = 0; index1 < parentNodes.length; index1++) {\n if (this.NONVALID_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) > -1\n && parentNodes[index1].parentNode\n && this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].parentNode.nodeName.toLowerCase()) > -1) {\n nodeSelection.setSelectionText(docElement, parentNodes[index1], parentNodes[index1], 0, parentNodes[index1].childNodes.length);\n InsertMethods.unwrap(nodeCutter.GetSpliceNode(nodeSelection.getRange(docElement), parentNodes[index1].parentNode));\n }\n if (parentNodes[index1].nodeName.toLocaleLowerCase() !== 'p') {\n if (this.NONVALID_PARENT_TAGS.indexOf(parentNodes[index1].nodeName.toLowerCase()) < 0\n && parentNodes[index1].parentNode.nodeName.toLocaleLowerCase() !== 'p'\n && !((parentNodes[index1].nodeName.toLocaleLowerCase() === 'blockquote'\n || parentNodes[index1].nodeName.toLocaleLowerCase() === 'li')\n && this.IGNORE_PARENT_TAGS.indexOf(parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase()) > -1)\n && !(parentNodes[index1].childNodes.length === 1\n && parentNodes[index1].childNodes[0].nodeName.toLocaleLowerCase() === 'p')) {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n }\n var childNodes = InsertMethods.unwrap(parentNodes[index1]);\n if (childNodes.length === 1\n && childNodes[0].parentNode.nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n for (var index2 = 0; index2 < childNodes.length; index2++) {\n if (this.NONVALID_TAGS.indexOf(childNodes[index2].nodeName.toLowerCase()) > -1) {\n this.unWrap(docElement, [childNodes[index2]], nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() !== 'p') {\n var blockNodes = this.removeParent([childNodes[index2]]);\n this.unWrap(docElement, blockNodes, nodeCutter, nodeSelection);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].parentNode.nodeName.toLocaleLowerCase() ===\n childNodes[index2].nodeName.toLocaleLowerCase()) {\n InsertMethods.unwrap(childNodes[index2]);\n }\n else if (this.BLOCK_TAGS.indexOf(childNodes[index2].nodeName.toLocaleLowerCase()) > -1 &&\n childNodes[index2].nodeName.toLocaleLowerCase() === 'p') {\n InsertMethods.Wrap(childNodes[index2], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(childNodes[index2]);\n }\n }\n }\n else {\n InsertMethods.Wrap(parentNodes[index1], docElement.createElement(this.defaultTag));\n InsertMethods.unwrap(parentNodes[index1]);\n }\n }\n };\n ClearFormat.clearInlines = function (textNodes, nodes, range, nodeCutter, \n // eslint-disable-next-line\n endNode) {\n for (var index = 0; index < textNodes.length; index++) {\n var currentInlineNode = textNodes[index];\n var currentNode = void 0;\n while (!this.domNode.isBlockNode(currentInlineNode) &&\n (currentInlineNode.parentElement && !currentInlineNode.parentElement.classList.contains('e-img-inner'))) {\n currentNode = currentInlineNode;\n currentInlineNode = currentInlineNode.parentElement;\n }\n if (currentNode &&\n IsFormatted.inlineTags.indexOf(currentNode.nodeName.toLocaleLowerCase()) > -1) {\n nodeCutter.GetSpliceNode(range, currentNode);\n this.removeInlineParent(currentNode);\n }\n }\n };\n ClearFormat.removeInlineParent = function (textNodes) {\n var nodes = InsertMethods.unwrap(textNodes);\n for (var index = 0; index < nodes.length; index++) {\n if (nodes[index].parentNode.childNodes.length === 1 && !nodes[index].parentNode.classList.contains('e-img-inner')\n && IsFormatted.inlineTags.indexOf(nodes[index].parentNode.nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index].parentNode);\n }\n else if (IsFormatted.inlineTags.indexOf(nodes[index].nodeName.toLocaleLowerCase()) > -1) {\n this.removeInlineParent(nodes[index]);\n }\n }\n };\n ClearFormat.BLOCK_TAGS = ['address', 'article', 'aside', 'blockquote',\n 'details', 'dd', 'div', 'dl', 'dt', 'fieldset', 'figcaption', 'figure', 'footer',\n 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'header', 'hgroup', 'li', 'main', 'nav',\n 'noscript', 'ol', 'p', 'pre', 'section', 'ul'];\n ClearFormat.NONVALID_PARENT_TAGS = ['thead', 'tbody', 'ul', 'ol', 'table', 'tfoot', 'tr'];\n ClearFormat.IGNORE_PARENT_TAGS = ['ul', 'ol', 'table'];\n ClearFormat.NONVALID_TAGS = ['thead', 'tbody', 'figcaption', 'td', 'tr', 'th', 'tfoot', 'figcaption', 'li'];\n ClearFormat.defaultTag = 'p';\n return ClearFormat;\n}());\n\n/**\n * Clear Format EXEC internal component\n *\n * @hidden\n * @deprecated\n */\nvar ClearFormatExec = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the Formats plugin\n *\n * @param {EditorManager} parent - specifies the parent element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n function ClearFormatExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n ClearFormatExec.prototype.addEventListener = function () {\n this.parent.observer.on(CLEAR_TYPE, this.applyClear, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ClearFormatExec.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'clear-format':\n this.applyClear({ subCommand: 'ClearFormat', callBack: e.callBack, enterAction: e.enterAction });\n e.event.preventDefault();\n break;\n }\n };\n ClearFormatExec.prototype.applyClear = function (e) {\n if (e.subCommand === 'ClearFormat') {\n ClearFormat$1.clear(this.parent.currentDocument, this.parent.editableElement, e.enterAction, e.selector);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n event: e.event,\n editorMode: 'HTML',\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n }\n };\n return ClearFormatExec;\n}());\n\n/**\n * `Undo` module is used to handle undo actions.\n */\nvar UndoRedoManager = /** @__PURE__ @class */ (function () {\n function UndoRedoManager(parent, options) {\n this.undoRedoStack = [];\n this.parent = parent;\n this.undoRedoSteps = !isNullOrUndefined(options) ? options.undoRedoSteps : 30;\n this.undoRedoTimer = !isNullOrUndefined(options) ? options.undoRedoTimer : 300;\n this.addEventListener();\n }\n UndoRedoManager.prototype.addEventListener = function () {\n var debounceListener = debounce(this.keyUp, this.undoRedoTimer);\n this.parent.observer.on(KEY_UP_HANDLER, debounceListener, this);\n this.parent.observer.on(KEY_DOWN_HANDLER, this.keyDown, this);\n this.parent.observer.on(ACTION, this.onAction, this);\n this.parent.observer.on(MODEL_CHANGED_PLUGIN, this.onPropertyChanged, this);\n };\n UndoRedoManager.prototype.onPropertyChanged = function (props) {\n for (var _i = 0, _a = Object.keys(props.newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'undoRedoSteps':\n this.undoRedoSteps = props.newProp.undoRedoSteps;\n break;\n case 'undoRedoTimer':\n this.undoRedoTimer = props.newProp.undoRedoTimer;\n break;\n }\n }\n };\n UndoRedoManager.prototype.removeEventListener = function () {\n this.parent.observer.off(KEY_UP_HANDLER, this.keyUp);\n this.parent.observer.off(KEY_DOWN_HANDLER, this.keyDown);\n this.parent.observer.off(ACTION, this.onAction);\n };\n /**\n * onAction method\n *\n * @param {IHtmlSubCommands} e - specifies the sub command\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoManager.prototype.onAction = function (e) {\n if (e.subCommand === 'Undo') {\n this.undo(e);\n }\n else {\n this.redo(e);\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoManager.prototype.destroy = function () {\n this.removeEventListener();\n };\n UndoRedoManager.prototype.keyDown = function (e) {\n var event = e.event;\n // eslint-disable-next-line\n var proxy = this;\n switch (event.action) {\n case 'undo':\n event.preventDefault();\n proxy.undo(e);\n break;\n case 'redo':\n event.preventDefault();\n proxy.redo(e);\n break;\n }\n };\n UndoRedoManager.prototype.keyUp = function (e) {\n if (e.event.keyCode !== 17 && !e.event.ctrlKey) {\n this.saveData(e);\n }\n };\n /**\n * RTE collection stored html format.\n *\n * @function saveData\n * @param {KeyboardEvent} e - specifies the keyboard event\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoManager.prototype.saveData = function (e) {\n var range = new NodeSelection().getRange(this.parent.currentDocument);\n var currentContainer = this.parent.editableElement === range.startContainer.parentElement ?\n range.startContainer.parentElement : range.startContainer;\n for (var i = currentContainer.childNodes.length - 1; i >= 0; i--) {\n if (!isNullOrUndefined(currentContainer.childNodes[i]) && currentContainer.childNodes[i].nodeName === '#text' &&\n currentContainer.childNodes[i].textContent.length === 0 && currentContainer.childNodes[i].nodeName !== 'IMG' &&\n currentContainer.childNodes[i].nodeName !== 'BR' && currentContainer.childNodes[i].nodeName && 'HR') {\n detach(currentContainer.childNodes[i]);\n }\n }\n range = new NodeSelection().getRange(this.parent.currentDocument);\n var save = new NodeSelection().save(range, this.parent.currentDocument);\n var htmlText = this.parent.editableElement.innerHTML;\n var changEle = { text: htmlText, range: save };\n if (this.undoRedoStack.length >= this.steps) {\n this.undoRedoStack = this.undoRedoStack.slice(0, this.steps + 1);\n }\n if (this.undoRedoStack.length > 1 && (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.collapsed === range.collapsed)\n && (this.undoRedoStack[this.undoRedoStack.length - 1].range.startOffset === save.range.startOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.endOffset === save.range.endOffset) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].range.range.startContainer === save.range.startContainer) &&\n (this.undoRedoStack[this.undoRedoStack.length - 1].text.trim() === changEle.text.trim())) {\n return;\n }\n this.undoRedoStack.push(changEle);\n this.steps = this.undoRedoStack.length - 1;\n if (this.steps > this.undoRedoSteps) {\n this.undoRedoStack.shift();\n this.steps--;\n }\n if (e && e.callBack) {\n e.callBack();\n }\n };\n /**\n * Undo the editable text.\n *\n * @function undo\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoManager.prototype.undo = function (e) {\n if (this.steps > 0) {\n var range = this.undoRedoStack[this.steps - 1].range;\n var removedContent = this.undoRedoStack[this.steps - 1].text;\n this.parent.editableElement.innerHTML = removedContent;\n this.parent.editableElement.focus();\n if (isIDevice$1()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps--;\n if (e.callBack) {\n e.callBack({\n requestType: 'Undo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * Redo the editable text.\n *\n * @param {IHtmlSubCommands} e - specifies the sub commands\n * @function redo\n * @returns {void}\n * @hidden\n * @deprecated\n */\n UndoRedoManager.prototype.redo = function (e) {\n if (this.undoRedoStack[this.steps + 1] != null) {\n var range = this.undoRedoStack[this.steps + 1].range;\n this.parent.editableElement.innerHTML = this.undoRedoStack[this.steps + 1].text;\n this.parent.editableElement.focus();\n if (isIDevice$1()) {\n setEditFrameFocus(this.parent.editableElement, e.selector);\n }\n range.restore();\n this.steps++;\n if (e.callBack) {\n e.callBack({\n requestType: 'Redo',\n editorMode: 'HTML',\n range: range,\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument),\n event: e.event\n });\n }\n }\n };\n /**\n * getUndoStatus method\n *\n * @returns {boolean} - returns the boolean value\n * @hidden\n * @deprecated\n */\n UndoRedoManager.prototype.getUndoStatus = function () {\n var status = { undo: false, redo: false };\n if (this.steps > 0) {\n status.undo = true;\n }\n if (this.undoRedoStack[this.steps + 1] != null) {\n status.redo = true;\n }\n return status;\n };\n return UndoRedoManager;\n}());\n\n/**\n * PasteCleanup for MsWord content\n *\n * @hidden\n * @deprecated\n */\nvar MsWordPaste = /** @__PURE__ @class */ (function () {\n function MsWordPaste(parent) {\n this.olData = [\n 'decimal',\n 'lower-alpha',\n 'lower-roman',\n 'upper-alpha',\n 'upper-roman',\n 'lower-greek'\n ];\n this.ulData = [\n 'disc',\n 'square',\n 'circle',\n 'disc',\n 'square',\n 'circle'\n ];\n this.ignorableNodes = ['A', 'APPLET', 'B', 'BLOCKQUOTE', 'BR',\n 'BUTTON', 'CENTER', 'CODE', 'COL', 'COLGROUP', 'DD', 'DEL', 'DFN', 'DIR', 'DIV',\n 'DL', 'DT', 'EM', 'FIELDSET', 'FONT', 'FORM', 'FRAME', 'FRAMESET', 'H1', 'H2',\n 'H3', 'H4', 'H5', 'H6', 'HR', 'I', 'IMG', 'IFRAME', 'INPUT', 'INS', 'LABEL',\n 'LI', 'OL', 'OPTION', 'P', 'PARAM', 'PRE', 'Q', 'S', 'SELECT', 'SPAN', 'STRIKE',\n 'STRONG', 'SUB', 'SUP', 'TABLE', 'TBODY', 'TD', 'TEXTAREA', 'TFOOT', 'TH',\n 'THEAD', 'TITLE', 'TR', 'TT', 'U', 'UL'];\n this.blockNode = ['div', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'address', 'blockquote', 'button', 'center', 'dd', 'dir', 'dl', 'dt', 'fieldset',\n 'frameset', 'hr', 'iframe', 'isindex', 'li', 'map', 'menu', 'noframes', 'noscript',\n 'object', 'ol', 'pre', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul',\n 'header', 'article', 'nav', 'footer', 'section', 'aside', 'main', 'figure', 'figcaption'];\n this.borderStyle = ['border-top', 'border-right', 'border-bottom', 'border-left'];\n this.removableElements = ['o:p', 'style'];\n this.listContents = [];\n this.parent = parent;\n this.addEventListener();\n }\n MsWordPaste.prototype.addEventListener = function () {\n this.parent.observer.on(MS_WORD_CLEANUP_PLUGIN, this.wordCleanup, this);\n };\n MsWordPaste.prototype.wordCleanup = function (e) {\n var wordPasteStyleConfig = !isNullOrUndefined(e.allowedStylePropertiesArray) ? e.allowedStylePropertiesArray : [];\n var listNodes = [];\n var tempHTMLContent = e.args.clipboardData.getData('text/HTML');\n var rtfData = e.args.clipboardData.getData('text/rtf');\n var elm = createElement('p');\n elm.setAttribute('id', 'MSWord-Content');\n elm.innerHTML = tempHTMLContent;\n var patern = /class='?Mso|style='[^ ]*\\bmso-/i;\n var patern2 = /class=\"?Mso|style=\"[^ ]*\\bmso-/i;\n var patern3 = /(class=\"?Mso|class='?Mso|class=\"?Xl|class='?Xl|class=Xl|style=\"[^\"]*\\bmso-|style='[^']*\\bmso-|w:WordDocument)/gi;\n var pattern4 = /style='mso-width-source:/i;\n if (patern.test(tempHTMLContent) || patern2.test(tempHTMLContent) || patern3.test(tempHTMLContent) ||\n pattern4.test(tempHTMLContent)) {\n this.imageConversion(elm, rtfData);\n tempHTMLContent = tempHTMLContent.replace(/]+>/i, '');\n this.addListClass(elm);\n listNodes = this.cleanUp(elm, listNodes);\n if (!isNullOrUndefined(listNodes[0]) && listNodes[0].parentElement.tagName !== 'UL' &&\n listNodes[0].parentElement.tagName !== 'OL') {\n this.listConverter(listNodes);\n }\n this.styleCorrection(elm, wordPasteStyleConfig);\n this.removingComments(elm);\n this.removeUnwantedElements(elm);\n this.removeEmptyElements(elm);\n this.breakLineAddition(elm);\n this.removeClassName(elm);\n if (pattern4.test(tempHTMLContent)) {\n this.addTableBorderClass(elm);\n }\n // Removing the margin for list items \n var liChildren = elm.querySelectorAll('li');\n if (liChildren.length > 0) {\n for (var i = 0; i < liChildren.length; i++) {\n if (!isNullOrUndefined(liChildren[i].style.marginLeft)) {\n liChildren[i].style.marginLeft = '';\n }\n }\n }\n e.callBack(elm.innerHTML);\n }\n else {\n e.callBack(elm.innerHTML);\n }\n };\n MsWordPaste.prototype.addListClass = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (!isNullOrUndefined(allNodes[index].getAttribute('style')) && allNodes[index].getAttribute('style').replace(/ /g, '').replace('\\n', '').indexOf('mso-list:l') >= 0 &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') === -1 && allNodes[index].tagName.charAt(0) !== 'H') {\n allNodes[index].classList.add('msolistparagraph');\n }\n }\n };\n MsWordPaste.prototype.addTableBorderClass = function (elm) {\n var allTableElm = elm.querySelectorAll('table');\n var hasTableBorder = false;\n for (var i = 0; i < allTableElm.length; i++) {\n for (var j = 0; j < this.borderStyle.length; j++) {\n if (allTableElm[i].innerHTML.indexOf(this.borderStyle[j]) >= 0) {\n hasTableBorder = true;\n break;\n }\n }\n if (hasTableBorder) {\n allTableElm[i].classList.add('e-rte-table-border');\n hasTableBorder = false;\n }\n }\n };\n MsWordPaste.prototype.imageConversion = function (elm, rtfData) {\n this.checkVShape(elm);\n var imgElem = elm.querySelectorAll('img');\n for (var i = 0; i < imgElem.length; i++) {\n if (!isNullOrUndefined(imgElem[i].getAttribute('v:shapes')) &&\n imgElem[i].getAttribute('v:shapes').indexOf('Picture') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('圖片') < 0 &&\n imgElem[i].getAttribute('v:shapes').indexOf('Image') < 0) {\n detach(imgElem[i]);\n }\n }\n imgElem = elm.querySelectorAll('img');\n var imgSrc = [];\n var base64Src = [];\n var imgName = [];\n // eslint-disable-next-line\n var linkRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (imgElem.length > 0) {\n for (var i = 0; i < imgElem.length; i++) {\n imgSrc.push(imgElem[i].getAttribute('src'));\n imgName.push(imgElem[i].getAttribute('src').split('/')[imgElem[i].getAttribute('src').split('/').length - 1].split('.')[0]);\n }\n var hexValue = this.hexConversion(rtfData);\n for (var i = 0; i < hexValue.length; i++) {\n base64Src.push(this.convertToBase64(hexValue[i]));\n }\n for (var i = 0; i < imgElem.length; i++) {\n if (imgSrc[i].match(linkRegex)) {\n imgElem[i].setAttribute('src', imgSrc[i]);\n }\n else {\n imgElem[i].setAttribute('src', base64Src[i]);\n }\n imgElem[i].setAttribute('id', 'msWordImg-' + imgName[i]);\n }\n }\n };\n MsWordPaste.prototype.checkVShape = function (elm) {\n var allNodes = elm.querySelectorAll('*');\n for (var i = 0; i < allNodes.length; i++) {\n switch (allNodes[i].nodeName) {\n case 'V:SHAPETYPE':\n detach(allNodes[i]);\n break;\n case 'V:SHAPE':\n if (allNodes[i].firstElementChild.nodeName === 'V:IMAGEDATA') {\n var src = allNodes[i].firstElementChild.getAttribute('src');\n var imgElement = createElement('img');\n imgElement.setAttribute('src', src);\n allNodes[i].parentElement.insertBefore(imgElement, allNodes[i]);\n detach(allNodes[i]);\n }\n break;\n }\n }\n };\n MsWordPaste.prototype.convertToBase64 = function (hexValue) {\n var byteArr = this.conHexStringToBytes(hexValue.hex);\n var base64String = this.conBytesToBase64(byteArr);\n var base64 = hexValue.type ? 'data:' + hexValue.type + ';base64,' + base64String : null;\n return base64;\n };\n MsWordPaste.prototype.conBytesToBase64 = function (byteArr) {\n var base64Str = '';\n var base64Char = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n var byteArrLen = byteArr.length;\n for (var i = 0; i < byteArrLen; i += 3) {\n var array3 = byteArr.slice(i, i + 3);\n var array3length = array3.length;\n var array4 = [];\n if (array3length < 3) {\n for (var j = array3length; j < 3; j++) {\n array3[j] = 0;\n }\n }\n array4[0] = (array3[0] & 0xFC) >> 2;\n array4[1] = ((array3[0] & 0x03) << 4) | (array3[1] >> 4);\n array4[2] = ((array3[1] & 0x0F) << 2) | ((array3[2] & 0xC0) >> 6);\n array4[3] = array3[2] & 0x3F;\n for (var j = 0; j < 4; j++) {\n if (j <= array3length) {\n base64Str += base64Char.charAt(array4[j]);\n }\n else {\n base64Str += '=';\n }\n }\n }\n return base64Str;\n };\n MsWordPaste.prototype.conHexStringToBytes = function (hex) {\n var byteArr = [];\n var byteArrLen = hex.length / 2;\n for (var i = 0; i < byteArrLen; i++) {\n byteArr.push(parseInt(hex.substr(i * 2, 2), 16));\n }\n return byteArr;\n };\n MsWordPaste.prototype.hexConversion = function (rtfData) {\n // eslint-disable-next-line\n var picHead = /\\{\\\\pict[\\s\\S]+?\\\\bliptag\\-?\\d+(\\\\blipupi\\-?\\d+)?(\\{\\\\\\*\\\\blipuid\\s?[\\da-fA-F]+)?[\\s\\}]*?/;\n // eslint-disable-next-line security/detect-non-literal-regexp\n var pic = new RegExp('(?:(' + picHead.source + '))([\\\\da-fA-F\\\\s]+)\\\\}', 'g');\n var fullImg = rtfData.match(pic);\n var imgType;\n var result = [];\n if (!isNullOrUndefined(fullImg)) {\n for (var i = 0; i < fullImg.length; i++) {\n if (picHead.test(fullImg[i])) {\n if (fullImg[i].indexOf('\\\\pngblip') !== -1) {\n imgType = 'image/png';\n }\n else if (fullImg[i].indexOf('\\\\jpegblip') !== -1) {\n imgType = 'image/jpeg';\n }\n else {\n continue;\n }\n result.push({\n hex: imgType ? fullImg[i].replace(picHead, '').replace(/[^\\da-fA-F]/g, '') : null,\n type: imgType\n });\n }\n }\n }\n return result;\n };\n MsWordPaste.prototype.removeClassName = function (elm) {\n var elmWithClass = elm.querySelectorAll('*[class]');\n for (var i = 0; i < elmWithClass.length; i++) {\n elmWithClass[i].removeAttribute('class');\n }\n };\n MsWordPaste.prototype.breakLineAddition = function (elm) {\n var allElements = elm.querySelectorAll('*');\n for (var i = 0; i < allElements.length; i++) {\n if (allElements[i].children.length === 0 && allElements[i].innerHTML === ' ' &&\n (allElements[i].innerHTML === ' ' && !allElements[i].closest('li')) &&\n !allElements[i].closest('td') && (allElements[i].nodeName !== 'SPAN' ||\n allElements[i].nodeName === 'SPAN' && (isNullOrUndefined(allElements[i].previousElementSibling) &&\n isNullOrUndefined(allElements[i].nextElementSibling)))) {\n var detachableElement = this.findDetachElem(allElements[i]);\n var brElement = createElement('br');\n if (!isNullOrUndefined(detachableElement.parentElement)) {\n detachableElement.parentElement.insertBefore(brElement, detachableElement);\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.findDetachElem = function (element) {\n var removableElement;\n if (!isNullOrUndefined(element.parentElement) &&\n element.parentElement.textContent.trim() === '' && element.parentElement.tagName !== 'TD' &&\n isNullOrUndefined(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeUnwantedElements = function (elm) {\n var innerElement = elm.innerHTML;\n for (var i = 0; i < this.removableElements.length; i++) {\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regExpStartElem = new RegExp('<' + this.removableElements[i] + '>', 'g');\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regExpEndElem = new RegExp('', 'g');\n innerElement = innerElement.replace(regExpStartElem, '');\n innerElement = innerElement.replace(regExpEndElem, '');\n }\n elm.innerHTML = innerElement;\n elm.querySelectorAll(':empty');\n };\n MsWordPaste.prototype.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNullOrUndefined(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' &&\n element.parentElement.getAttribute('id') !== 'MSWord-Content' &&\n isNullOrUndefined(element.parentElement.querySelector('img'))) {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n MsWordPaste.prototype.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (!isNullOrUndefined(emptyElements[i].closest('td')) &&\n !isNullOrUndefined(emptyElements[i].closest('td').querySelector('.MsoNormal'))) {\n emptyElements[i].innerHTML = '-';\n }\n if (emptyElements[i].tagName !== 'IMG' && emptyElements[i].tagName !== 'BR' &&\n emptyElements[i].tagName !== 'IFRAME' && emptyElements[i].tagName !== 'TD' &&\n emptyElements[i].tagName !== 'HR') {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNullOrUndefined(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n MsWordPaste.prototype.styleCorrection = function (elm, wordPasteStyleConfig) {\n var styleElement = elm.querySelectorAll('style');\n if (styleElement.length > 0) {\n var styles = styleElement[0].innerHTML.match(/[\\S ]+\\s+{[\\s\\S]+?}/gi);\n var styleClassObject_1 = !isNullOrUndefined(styles) ? this.findStyleObject(styles) : null;\n var keys = Object.keys(styleClassObject_1);\n var values = keys.map(function (key) {\n return styleClassObject_1[\"\" + key];\n });\n values = this.removeUnwantedStyle(values, wordPasteStyleConfig);\n this.filterStyles(elm, wordPasteStyleConfig);\n var resultElem = void 0;\n var fromClass = false;\n for (var i = 0; i < keys.length; i++) {\n if (keys[i].split('.')[0] === '') {\n resultElem = elm.getElementsByClassName(keys[i].split('.')[1]);\n fromClass = true;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') >= 0) {\n continue;\n }\n else if (keys[i].split('.').length === 1 && keys[i].split('.')[0].indexOf('@') < 0) {\n resultElem = elm.getElementsByTagName(keys[i]);\n }\n else {\n resultElem = elm.querySelectorAll(keys[i]);\n }\n for (var j = 0; j < resultElem.length; j++) {\n var styleProperty = resultElem[j].getAttribute('style');\n if (!isNullOrUndefined(styleProperty) && styleProperty.trim() !== '') {\n var valueSplit = values[i].split(';');\n if (!fromClass) {\n for (var k = 0; k < valueSplit.length; k++) {\n if (styleProperty.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n valueSplit.splice(k, 1);\n k--;\n }\n }\n }\n var changedValue = styleProperty + valueSplit.join(';') + ';';\n resultElem[j].setAttribute('style', changedValue);\n }\n else {\n values[i] = values[i].replace(/text-indent:-(.*?)(?=;|$)/gm, '');\n resultElem[j].setAttribute('style', values[i]);\n }\n }\n fromClass = false;\n }\n var listClass = ['MsoListParagraphCxSpFirst', 'MsoListParagraphCxSpMiddle', 'MsoListParagraphCxSpLast'];\n for (var i = 0; i < listClass.length; i++) {\n if (keys.indexOf('li.' + listClass[i]) > -1) {\n var olULElems = elm.querySelectorAll('ol.' + listClass[i] + ', ul.' + listClass[i]);\n for (var j = 0; j < olULElems.length; j++) {\n var styleProperty = olULElems[j].getAttribute('style');\n if (!isNullOrUndefined(styleProperty) && styleProperty.trim() !== '' && olULElems[j].style.marginLeft !== '') {\n var valueSplit = values[keys.indexOf('li.' + listClass[i])].split(';');\n for (var k = 0; k < valueSplit.length; k++) {\n if ('margin-left'.indexOf(valueSplit[k].split(':')[0]) >= 0) {\n if (!isNullOrUndefined(valueSplit[k].split(':')[1]) &&\n valueSplit[k].split(':')[1].indexOf('in') >= 0 &&\n olULElems[j].style.marginLeft.indexOf('in') >= 0) {\n var classStyle = parseFloat(valueSplit[k].split(':')[1].split('in')[0]);\n var inlineStyle = parseFloat(olULElems[j].style.marginLeft.split('in')[0]);\n olULElems[j].style.marginLeft = (inlineStyle - classStyle) + 'in';\n }\n }\n }\n }\n }\n }\n }\n }\n };\n MsWordPaste.prototype.filterStyles = function (elm, wordPasteStyleConfig) {\n var elmWithStyles = elm.querySelectorAll('*[style]');\n for (var i = 0; i < elmWithStyles.length; i++) {\n var elemStyleProperty = elmWithStyles[i].getAttribute('style').split(';');\n var styleValue = '';\n for (var j = 0; j < elemStyleProperty.length; j++) {\n if (wordPasteStyleConfig.indexOf(elemStyleProperty[j].split(':')[0].trim()) >= 0) {\n styleValue += elemStyleProperty[j] + ';';\n }\n }\n elmWithStyles[i].setAttribute('style', styleValue);\n }\n };\n MsWordPaste.prototype.removeUnwantedStyle = function (values, wordPasteStyleConfig) {\n for (var i = 0; i < values.length; i++) {\n var styleValues = values[i].split(';');\n values[i] = '';\n for (var j = 0; j < styleValues.length; j++) {\n if (wordPasteStyleConfig.indexOf(styleValues[j].split(':')[0]) >= 0) {\n values[i] += styleValues[j] + ';';\n }\n }\n }\n return values;\n };\n MsWordPaste.prototype.findStyleObject = function (styles) {\n var styleClassObject = {};\n for (var i = 0; i < styles.length; i++) {\n var tempStyle = styles[i];\n var classNameCollection = tempStyle.replace(/([\\S ]+\\s+){[\\s\\S]+?}/gi, '$1');\n var stylesCollection = tempStyle.replace(/[\\S ]+\\s+{([\\s\\S]+?)}/gi, '$1');\n classNameCollection = classNameCollection.replace(/^[\\s]|[\\s]$/gm, '');\n stylesCollection = stylesCollection.replace(/^[\\s]|[\\s]$/gm, '');\n classNameCollection = classNameCollection.replace(/\\n|\\r|\\n\\r/g, '');\n stylesCollection = stylesCollection.replace(/\\n|\\r|\\n\\r/g, '');\n for (var classNames = classNameCollection.split(', '), j = 0; j < classNames.length; j++) {\n styleClassObject[classNames[j]] = stylesCollection;\n }\n }\n return styleClassObject;\n };\n MsWordPaste.prototype.removingComments = function (elm) {\n var innerElement = elm.innerHTML;\n innerElement = innerElement.replace(//g, '');\n elm.innerHTML = innerElement;\n };\n MsWordPaste.prototype.cleanUp = function (node, listNodes) {\n // eslint-disable-next-line\n var tempCleaner = [];\n var prevflagState;\n var allNodes = node.querySelectorAll('*');\n for (var index = 0; index < allNodes.length; index++) {\n if (this.ignorableNodes.indexOf(allNodes[index].nodeName) === -1 ||\n (allNodes[index].nodeType === 3 && allNodes[index].textContent.trim() === '')) {\n tempCleaner.push(allNodes[index]);\n continue;\n }\n else if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 &&\n allNodes[index].childElementCount !== 1 && !isNullOrUndefined(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n if (allNodes[index].className.indexOf('MsoListParagraphCxSpFirst') >= 0 && listNodes.length > 0 &&\n listNodes[listNodes.length - 1] !== null) {\n listNodes.push(null);\n }\n listNodes.push(allNodes[index]);\n }\n if (prevflagState && (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) &&\n !(allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNullOrUndefined(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0)) {\n listNodes.push(null);\n }\n if (this.blockNode.indexOf(allNodes[index].nodeName.toLowerCase()) !== -1) {\n if (allNodes[index].className &&\n allNodes[index].className.toLowerCase().indexOf('msolistparagraph') !== -1 && !isNullOrUndefined(allNodes[index].getAttribute('style')) &&\n allNodes[index].getAttribute('style').indexOf('mso-list:') >= 0) {\n prevflagState = true;\n }\n else {\n prevflagState = false;\n }\n }\n }\n if (listNodes.length && (listNodes[listNodes.length - 1] !== null)) {\n listNodes.push(null);\n }\n return listNodes;\n };\n MsWordPaste.prototype.listConverter = function (listNodes) {\n var level;\n var data = [];\n var collection = [];\n var content = '';\n var stNode;\n var currentListStyle = '';\n for (var i = 0; i < listNodes.length; i++) {\n if (listNodes[i] === null) {\n data.push({ content: this.makeConversion(collection), node: listNodes[i - 1] });\n collection = [];\n continue;\n }\n if (listNodes[i].getAttribute('style') && listNodes[i].getAttribute('style').indexOf('mso-outline-level') !== -1) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('mso-outline-level', 'mso-outline'));\n }\n content = listNodes[i].getAttribute('style');\n if (content && content.indexOf('level') !== -1) {\n // eslint-disable-next-line\n level = parseInt(content.charAt(content.indexOf('level') + 5), null);\n }\n else {\n level = 1;\n }\n this.listContents = [];\n this.getListContent(listNodes[i]);\n var type = void 0;\n var listStyleType = void 0;\n var startAttr = void 0;\n var styleMarginLeft = void 0;\n if (!isNullOrUndefined(this.listContents[0])) {\n type = this.listContents[0].trim().length > 1 ? 'ol' : 'ul';\n listStyleType = this.getlistStyleType(this.listContents[0], type);\n if (type === 'ol' && (i === 0 || listNodes[i - 1] === null)) {\n var startString = this.listContents[0].split('.')[0];\n var listTypes = ['A', 'a', 'I', 'i', 'α', '1', '1-']; // Add '1-' for rare list type. \n if (listTypes.indexOf(startString) === -1) {\n if (listStyleType === 'decimal') {\n // Bug in getlistStyleType() list style stype is returned as decimal for nested list with start attribute\n if (!isNaN(parseInt(startString))) {\n startAttr = parseInt(startString);\n }\n }\n else if (listStyleType === 'upper-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 64);\n }\n else if (listStyleType === 'lower-alpha') {\n startAttr = (startString.split('.')[0].charCodeAt(0) - 96);\n }\n }\n if (listNodes[i].style.marginLeft !== '') {\n styleMarginLeft = listNodes[i].style.marginLeft;\n }\n }\n var tempNode = [];\n for (var j = 1; j < this.listContents.length; j++) {\n tempNode.push(this.listContents[j]);\n }\n var currentClassName = void 0;\n if (!isNullOrUndefined(listNodes[i].className)) {\n currentClassName = listNodes[i].className;\n }\n if (!isNullOrUndefined(listNodes[i].getAttribute('style'))) {\n listNodes[i].setAttribute('style', listNodes[i].getAttribute('style').replace('text-align:start;', ''));\n if (listNodes[i].style.textAlign !== '') {\n listNodes[i].setAttribute('style', 'text-align:' + listNodes[i].style.textAlign);\n currentListStyle = listNodes[i].getAttribute('style');\n }\n }\n collection.push({ listType: type, content: tempNode, nestedLevel: level, class: currentClassName,\n listStyle: currentListStyle, listStyleTypeName: listStyleType, start: startAttr, styleMarginLeft: styleMarginLeft });\n }\n }\n stNode = listNodes.shift();\n while (stNode) {\n var elemColl = [];\n for (var temp1 = 0; temp1 < data.length; temp1++) {\n if (data[temp1].node === stNode) {\n for (var index = 0; index < data[temp1].content.childNodes.length; index++) {\n elemColl.push(data[temp1].content.childNodes[index]);\n }\n for (var index = 0; index < elemColl.length; index++) {\n stNode.parentElement.insertBefore(elemColl[index], stNode);\n }\n break;\n }\n }\n stNode.remove();\n stNode = listNodes.shift();\n if (!stNode) {\n stNode = listNodes.shift();\n }\n }\n };\n MsWordPaste.prototype.getlistStyleType = function (listContent, type) {\n var currentListClass;\n var upperRomanNumber = ['I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX',\n 'X', 'XI', 'XII', 'XIII', 'XIV', 'XV', 'XVI', 'XVII', 'XVIII', 'XIX', 'XX'];\n var lowerRomanNumber = ['i', 'ii', 'iii', 'iv', 'v', 'vi', 'vii', 'viii', 'ix',\n 'x', 'xi', 'xii', 'xiii', 'xiv', 'xv', 'xvi', 'xvii', 'xviii', 'xix', 'xx'];\n var lowerGreekNumber = ['α', 'β', 'γ', 'δ', 'ε', 'ζ', 'η', 'θ', 'ι', 'κ', 'λ',\n 'μ', 'ν', 'ξ', 'ο', 'π', 'ρ', 'σ', 'τ', 'υ', 'φ', 'χ', 'ψ', 'ω'];\n if (type === 'ol') {\n var charCode = listContent.split('.')[0].charCodeAt(0);\n switch (true) {\n case upperRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'upper-roman';\n break;\n case lowerRomanNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'lower-roman';\n break;\n case lowerGreekNumber.indexOf(listContent.split('.')[0]) > -1:\n currentListClass = 'lower-greek';\n break;\n case (charCode > 64 && charCode < 91):\n currentListClass = 'upper-alpha';\n break;\n case (charCode > 96 && charCode < 123):\n currentListClass = 'lower-alpha';\n break;\n default:\n currentListClass = 'decimal';\n break;\n }\n }\n else {\n switch (listContent.split('.')[0]) {\n case 'o':\n currentListClass = 'circle';\n break;\n case '§':\n currentListClass = 'square';\n break;\n default:\n currentListClass = 'disc';\n break;\n }\n }\n return currentListClass;\n };\n MsWordPaste.prototype.makeConversion = function (collection) {\n var root = createElement('div');\n var temp;\n var pLevel = 1;\n var prevList;\n var listCount = 0;\n var elem;\n for (var index = 0; index < collection.length; index++) {\n var pElement = createElement('p');\n pElement.innerHTML = collection[index].content.join(' ');\n if ((collection[index].nestedLevel === 1) && listCount === 0 && collection[index].content) {\n root.appendChild(temp = createElement(collection[index].listType, { className: collection[index].class }));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.marginLeft = collection[index].styleMarginLeft;\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else if (collection[index].nestedLevel === pLevel) {\n if (prevList.parentElement.tagName.toLowerCase() === collection[index].listType) {\n prevList.parentElement.appendChild(prevList = createElement('li'));\n prevList.appendChild(pElement);\n }\n else {\n temp = createElement(collection[index].listType);\n temp.style.listStyleType = collection[index].listStyleTypeName;\n prevList.parentElement.parentElement.appendChild(temp);\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n }\n else if (collection[index].nestedLevel > pLevel) {\n if (!isNullOrUndefined(prevList)) {\n for (var j = 0; j < collection[index].nestedLevel - pLevel; j++) {\n prevList.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n if (j !== collection[index].nestedLevel - pLevel - 1 &&\n collection[index].nestedLevel - pLevel > 1) {\n prevList.style.listStyleType = 'none';\n }\n temp.appendChild(prevList);\n }\n prevList.appendChild(pElement);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n }\n else if (collection[index].nestedLevel === 1) {\n if (root.lastChild.tagName.toLowerCase() === collection[index].listType) {\n temp = root.lastChild;\n }\n else {\n root.appendChild(temp = createElement(collection[index].listType));\n temp.style.listStyleType = collection[index].listStyleTypeName;\n }\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n }\n else {\n elem = prevList;\n while (elem.parentElement) {\n elem = elem.parentElement;\n if (elem.attributes.getNamedItem('level')) {\n // eslint-disable-next-line\n if (parseInt(elem.attributes.getNamedItem('level').textContent, null) === collection[index].nestedLevel) {\n prevList = createElement('li');\n prevList.appendChild(pElement);\n elem.appendChild(prevList);\n break;\n // eslint-disable-next-line\n }\n else if (collection[index].nestedLevel > parseInt(elem.attributes.getNamedItem('level').textContent, null)) {\n elem.appendChild(temp = createElement(collection[index].listType));\n prevList = createElement('li');\n prevList.appendChild(pElement);\n temp.appendChild(prevList);\n temp.setAttribute('level', collection[index].nestedLevel.toString());\n temp.style.listStyleType = collection[index].listStyleTypeName;\n break;\n }\n }\n continue;\n }\n }\n prevList.setAttribute('class', collection[index].class);\n var currentStyle = prevList.getAttribute('style');\n prevList.setAttribute('style', (!isNullOrUndefined(currentStyle) ? currentStyle : ''));\n pLevel = collection[index].nestedLevel;\n listCount++;\n if (!isNullOrUndefined(collection[index].start)) {\n temp.setAttribute('start', collection[index].start.toString());\n }\n }\n return root;\n };\n MsWordPaste.prototype.getListContent = function (elem) {\n var pushContent = '';\n var firstChild = elem.firstElementChild;\n if (firstChild.textContent.trim() === '' && !isNullOrUndefined(firstChild.firstElementChild) &&\n firstChild.firstElementChild.nodeName === 'IMG') {\n pushContent = elem.innerHTML.trim();\n this.listContents.push('');\n this.listContents.push(pushContent);\n }\n else {\n var styleNodes = ['b', 'em'];\n if (firstChild.childNodes.length > 0 && (firstChild.querySelectorAll('b').length > 0\n || firstChild.querySelectorAll('em').length > 0)) {\n for (var i = 0; i < firstChild.childNodes.length; i++) {\n var nodeName = firstChild.childNodes[i].nodeName.toLowerCase();\n if (firstChild.childNodes[i].textContent.trim().length > 1 && styleNodes.indexOf(nodeName) !== -1) {\n pushContent = '<' + nodeName + '>' + firstChild.childNodes[i].textContent + '';\n this.listContents.push(pushContent);\n }\n else if (firstChild.childNodes[i].textContent.trim().length === 1) {\n this.listContents.push(firstChild.childNodes[i].textContent.trim());\n }\n }\n }\n else {\n pushContent = firstChild.textContent.trim();\n this.listContents.push(pushContent);\n }\n }\n detach(firstChild);\n this.listContents.push(elem.innerHTML);\n };\n return MsWordPaste;\n}());\n\n/**\n * Insert a Text Node or Text\n *\n * @hidden\n * @deprecated\n */\nvar InsertTextExec = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the InsertText plugin\n *\n * @param {EditorManager} parent - specifies the parent element\n * @hidden\n * @deprecated\n */\n function InsertTextExec(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n InsertTextExec.prototype.addEventListener = function () {\n this.parent.observer.on(INSERT_TEXT_TYPE, this.insertText, this);\n };\n InsertTextExec.prototype.insertText = function (e) {\n var node = document.createTextNode(e.value);\n InsertHtml.Insert(this.parent.currentDocument, node, this.parent.editableElement);\n if (e.callBack) {\n e.callBack({\n requestType: e.subCommand,\n editorMode: 'HTML',\n event: e.event,\n range: this.parent.nodeSelection.getRange(this.parent.currentDocument),\n elements: this.parent.nodeSelection.getSelectedNodes(this.parent.currentDocument)\n });\n }\n };\n return InsertTextExec;\n}());\n\n/**\n * EditorManager internal component\n *\n * @hidden\n * @deprecated\n */\nvar EditorManager = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for creating the component\n *\n * @hidden\n * @deprecated\n * @param {ICommandModel} options - specifies the command Model\n */\n function EditorManager(options) {\n this.currentDocument = options.document;\n this.editableElement = options.editableElement;\n this.nodeSelection = new NodeSelection();\n this.nodeCutter = new NodeCutter();\n this.domNode = new DOMNode(this.editableElement, this.currentDocument);\n this.observer = new Observer(this);\n this.listObj = new Lists(this);\n this.formatObj = new Formats(this);\n this.alignmentObj = new Alignments(this);\n this.indentsObj = new Indents(this);\n this.linkObj = new LinkCommand(this);\n this.imgObj = new ImageCommand(this);\n this.audioObj = new AudioCommand(this);\n this.videoObj = new VideoCommand(this);\n this.selectionObj = new SelectionBasedExec(this);\n this.inserthtmlObj = new InsertHtmlExec(this);\n this.insertTextObj = new InsertTextExec(this);\n this.clearObj = new ClearFormatExec(this);\n this.tableObj = new TableCommand(this);\n this.undoRedoManager = new UndoRedoManager(this, options.options);\n this.msWordPaste = new MsWordPaste(this);\n this.wireEvents();\n }\n EditorManager.prototype.wireEvents = function () {\n this.observer.on(KEY_DOWN, this.editorKeyDown, this);\n this.observer.on(KEY_UP, this.editorKeyUp, this);\n this.observer.on(KEY_UP, this.editorKeyUp, this);\n this.observer.on(MODEL_CHANGED, this.onPropertyChanged, this);\n this.observer.on(MS_WORD_CLEANUP, this.onWordPaste, this);\n this.observer.on(ON_BEGIN, this.onBegin, this);\n };\n EditorManager.prototype.onWordPaste = function (e) {\n this.observer.notify(MS_WORD_CLEANUP_PLUGIN, e);\n };\n EditorManager.prototype.onPropertyChanged = function (props) {\n this.observer.notify(MODEL_CHANGED_PLUGIN, props);\n };\n EditorManager.prototype.editorKeyDown = function (e) {\n this.observer.notify(KEY_DOWN_HANDLER, e);\n };\n EditorManager.prototype.editorKeyUp = function (e) {\n this.observer.notify(KEY_UP_HANDLER, e);\n };\n EditorManager.prototype.onBegin = function (e) {\n this.observer.notify(SPACE_ACTION, e);\n };\n /* eslint-disable */\n /**\n * execCommand\n *\n * @param {ExecCommand} command - specifies the execution command\n * @param {T} value - specifes the value.\n * @param {Event} event - specifies the call back event\n * @param {Function} callBack - specifies the function\n * @param {string} text - specifies the string value\n * @param {T} exeValue - specifies the values to be executed\n * @param {string} selector - specifies the selector values\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-enable */\n EditorManager.prototype.execCommand = function (command, value, event, callBack, text, exeValue, selector, enterAction) {\n switch (command.toLowerCase()) {\n case 'lists':\n this.observer.notify(LIST_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, item: exeValue, enterAction: enterAction });\n break;\n case 'formats':\n this.observer.notify(FORMAT_TYPE, { subCommand: value, event: event, callBack: callBack,\n selector: selector, exeValue: exeValue, enterAction: enterAction\n });\n break;\n case 'alignments':\n this.observer.notify(ALIGNMENT_TYPE, {\n subCommand: value, event: event, callBack: callBack,\n selector: selector,\n value: exeValue\n });\n break;\n case 'indents':\n this.observer.notify(INDENT_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n case 'links':\n this.observer.notify(LINK, { command: command, value: value, item: exeValue, event: event, callBack: callBack });\n break;\n case 'files':\n this.observer.notify(IMAGE, {\n command: command, value: 'Image', item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'images':\n this.observer.notify(IMAGE, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'audios':\n this.observer.notify(AUDIO, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'videos':\n this.observer.notify(VIDEO, {\n command: command, value: value, item: exeValue, event: event, callBack: callBack, selector: selector\n });\n break;\n case 'table':\n switch (value.toString().toLocaleLowerCase()) {\n case 'createtable':\n this.observer.notify(TABLE, { item: exeValue, event: event, callBack: callBack, enterAction: enterAction });\n break;\n case 'insertrowbefore':\n case 'insertrowafter':\n this.observer.notify(INSERT_ROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'insertcolumnleft':\n case 'insertcolumnright':\n this.observer.notify(INSERT_COLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deleterow':\n this.observer.notify(DELETEROW, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'deletecolumn':\n this.observer.notify(DELETECOLUMN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableremove':\n this.observer.notify(REMOVETABLE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'tableheader':\n this.observer.notify(TABLEHEADER, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'aligntop':\n case 'alignmiddle':\n case 'alignbottom':\n this.observer.notify(TABLE_VERTICAL_ALIGN, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'merge':\n this.observer.notify(TABLE_MERGE, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'horizontalsplit':\n this.observer.notify(TABLE_HORIZONTAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n case 'verticalsplit':\n this.observer.notify(TABLE_VERTICAL_SPLIT, { item: exeValue, event: event, callBack: callBack });\n break;\n }\n break;\n case 'font':\n case 'style':\n case 'effects':\n case 'casing':\n this.observer.notify(SELECTION_TYPE, { subCommand: value, event: event, callBack: callBack, value: text, selector: selector, enterAction: enterAction });\n break;\n case 'inserthtml':\n this.observer.notify(INSERTHTML_TYPE, { subCommand: value, callBack: callBack, value: text, enterAction: enterAction });\n break;\n case 'inserttext':\n this.observer.notify(INSERT_TEXT_TYPE, { subCommand: value, callBack: callBack, value: text });\n break;\n case 'clear':\n this.observer.notify(CLEAR_TYPE, { subCommand: value, event: event, callBack: callBack, selector: selector, enterAction: enterAction });\n break;\n case 'actions':\n this.observer.notify(ACTION, { subCommand: value, event: event, callBack: callBack, selector: selector });\n break;\n }\n };\n return EditorManager;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 * HTML adapter\n *\n * @hidden\n * @deprecated\n */\nvar HTMLFormatter = /** @__PURE__ @class */ (function (_super) {\n __extends$2(HTMLFormatter, _super);\n function HTMLFormatter(options) {\n var _this = _super.call(this) || this;\n _this.initialize();\n extend(_this, _this, options, true);\n if (_this.currentDocument && _this.element) {\n _this.updateFormatter(_this.element, _this.currentDocument, options.options);\n }\n return _this;\n }\n HTMLFormatter.prototype.initialize = function () {\n this.keyConfig = htmlKeyConfig;\n };\n /**\n * Update the formatter of RichTextEditor\n *\n * @param {Element} editElement - specifies the edit element.\n * @param {Document} doc - specifies the doucment\n * @param {number} options - specifies the options\n * @returns {void}\n * @hidden\n * @deprecated\n */\n HTMLFormatter.prototype.updateFormatter = function (editElement, doc, options) {\n if (editElement && doc) {\n this.editorManager = new EditorManager({\n document: doc,\n editableElement: editElement,\n options: options\n });\n }\n };\n return HTMLFormatter;\n}(Formatter));\n\n/**\n * Update Toolbar Status\n *\n * @hidden\n * @deprecated\n */\nvar statusCollection = getDefaultHtmlTbStatus();\nvar ToolbarStatus = /** @__PURE__ @class */ (function () {\n function ToolbarStatus() {\n }\n /**\n * get method\n *\n * @param {Document} docElement - specifies the document element\n * @param {Node} targetNode - specifies the target node\n * @param {string[]} formatNode - specifies the format node\n * @param {string[]} fontSize - specifies the font size\n * @param {string[]} fontName - specifies the font name.\n * @param {Node} documentNode - specifies the document node.\n * @returns {IToolbarStatus} - returns the toolbar status\n * @hidden\n * @deprecated\n */\n ToolbarStatus.get = function (docElement, targetNode, formatNode, fontSize, fontName, documentNode) {\n var formatCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeCollection = JSON.parse(JSON.stringify(statusCollection));\n var nodeSelection = new NodeSelection();\n var range = nodeSelection.getRange(docElement);\n var nodes = documentNode ? [documentNode] : range.collapsed ? nodeSelection.getNodeCollection(range) :\n nodeSelection.getSelectionNodeCollectionBr(range);\n var nodesLength = nodes.length;\n var isNodeChanged = false;\n for (var index = 0; index < nodes.length; index++) {\n while (nodes[index].nodeType === 3 && range.startContainer.nodeType === 3 && nodes[index].parentNode &&\n nodes[index].parentNode.lastElementChild && nodes[index].parentNode.lastElementChild.nodeName !== 'BR' &&\n (this.getImmediateBlockNode(nodes[index].parentNode)).textContent.replace(/\\u200B/g, '').length === 0 &&\n range.startContainer.textContent.replace(/\\u200B/g, '').length === 0 &&\n nodeSelection.get(docElement).toString().replace(/\\u200B/g, '').length === 0) {\n nodes[index] = nodes[index].parentNode.lastElementChild.firstChild;\n isNodeChanged = true;\n }\n if (isNodeChanged && nodes[index]) {\n nodeSelection.setCursorPoint(docElement, nodes[index], nodes[index].textContent.length);\n isNodeChanged = false;\n }\n if ((nodes[index].nodeName !== 'BR' && nodes[index].nodeType !== 3) ||\n (nodesLength > 1 && nodes[index].nodeType === 3 && nodes[index].textContent.trim() === '')) {\n nodes.splice(index, 1);\n index--;\n }\n }\n for (var index = 0; index < nodes.length; index++) {\n // eslint-disable-next-line max-len\n formatCollection = this.getFormatParent(docElement, formatCollection, nodes[index], targetNode, formatNode, fontSize, fontName);\n if ((index === 0 && formatCollection.bold) || !formatCollection.bold) {\n nodeCollection.bold = formatCollection.bold;\n }\n if ((index === 0 && formatCollection.insertcode) || !formatCollection.insertcode) {\n nodeCollection.insertcode = formatCollection.insertcode;\n }\n if ((index === 0 && formatCollection.italic) || !formatCollection.italic) {\n nodeCollection.italic = formatCollection.italic;\n }\n if ((index === 0 && formatCollection.underline) || !formatCollection.underline) {\n nodeCollection.underline = formatCollection.underline;\n }\n if ((index === 0 && formatCollection.strikethrough) || !formatCollection.strikethrough) {\n nodeCollection.strikethrough = formatCollection.strikethrough;\n }\n if ((index === 0 && formatCollection.superscript) || !formatCollection.superscript) {\n nodeCollection.superscript = formatCollection.superscript;\n }\n if ((index === 0 && formatCollection.subscript) || !formatCollection.subscript) {\n nodeCollection.subscript = formatCollection.subscript;\n }\n if ((index === 0 && formatCollection.fontcolor) || !formatCollection.fontcolor) {\n nodeCollection.fontcolor = formatCollection.fontcolor;\n }\n if ((index === 0 && formatCollection.fontname) || !formatCollection.fontname) {\n nodeCollection.fontname = formatCollection.fontname;\n }\n if ((index === 0 && formatCollection.fontsize) || !formatCollection.fontsize) {\n nodeCollection.fontsize = formatCollection.fontsize;\n }\n if ((index === 0 && formatCollection.backgroundcolor) || !formatCollection.backgroundcolor) {\n nodeCollection.backgroundcolor = formatCollection.backgroundcolor;\n }\n if ((index === 0 && formatCollection.orderedlist) || !formatCollection.orderedlist) {\n nodeCollection.orderedlist = formatCollection.orderedlist;\n }\n if ((index === 0 && formatCollection.unorderedlist) || !formatCollection.unorderedlist) {\n nodeCollection.unorderedlist = formatCollection.unorderedlist;\n }\n if ((index === 0 && formatCollection.alignments) || !formatCollection.alignments) {\n nodeCollection.alignments = formatCollection.alignments;\n }\n if ((index === 0 && formatCollection.formats) || !formatCollection.formats) {\n nodeCollection.formats = formatCollection.formats;\n }\n if ((index === 0 && formatCollection.createlink) || !formatCollection.createlink) {\n nodeCollection.createlink = formatCollection.createlink;\n }\n if ((index === 0 && formatCollection.numberFormatList) || !formatCollection.numberFormatList) {\n nodeCollection.numberFormatList = formatCollection.numberFormatList;\n }\n if ((index === 0 && formatCollection.bulletFormatList) || !formatCollection.bulletFormatList) {\n nodeCollection.bulletFormatList = formatCollection.bulletFormatList;\n }\n formatCollection = JSON.parse(JSON.stringify(statusCollection));\n }\n return nodeCollection;\n };\n ToolbarStatus.getImmediateBlockNode = function (node) {\n do {\n node = node.parentNode;\n } while (node && BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) < 0);\n return node;\n };\n ToolbarStatus.getFormatParent = function (docElement, formatCollection, node, targetNode, formatNode, fontSize, fontName) {\n if (targetNode.contains(node) ||\n (node.nodeType === 3 && targetNode.nodeType !== 3 && targetNode.contains(node.parentNode))) {\n do {\n formatCollection = this.isFormattedNode(docElement, formatCollection, node, formatNode, fontSize, fontName);\n node = node.parentNode;\n } while (node && (node !== targetNode));\n }\n return formatCollection;\n };\n ToolbarStatus.isFormattedNode = function (docElement, formatCollection, node, formatNode, fontSize, fontName) {\n if (!formatCollection.bold) {\n formatCollection.bold = IsFormatted.isBold(node);\n }\n if (!formatCollection.italic) {\n formatCollection.italic = IsFormatted.isItalic(node);\n }\n if (!formatCollection.underline) {\n formatCollection.underline = IsFormatted.isUnderline(node);\n }\n if (!formatCollection.strikethrough) {\n formatCollection.strikethrough = IsFormatted.isStrikethrough(node);\n }\n if (!formatCollection.superscript) {\n formatCollection.superscript = IsFormatted.isSuperscript(node);\n }\n if (!formatCollection.subscript) {\n formatCollection.subscript = IsFormatted.isSubscript(node);\n }\n if (!formatCollection.fontcolor) {\n formatCollection.fontcolor = this.isFontColor(docElement, node);\n }\n if (!formatCollection.fontname) {\n formatCollection.fontname = this.isFontName(docElement, node, fontName);\n }\n if (!formatCollection.fontsize) {\n formatCollection.fontsize = this.isFontSize(docElement, node, fontSize);\n }\n if (!formatCollection.backgroundcolor) {\n formatCollection.backgroundcolor = this.isBackgroundColor(node);\n }\n if (!formatCollection.orderedlist) {\n formatCollection.orderedlist = this.isOrderedList(node);\n }\n if (!formatCollection.unorderedlist) {\n formatCollection.unorderedlist = this.isUnorderedList(node);\n }\n if (!formatCollection.alignments) {\n formatCollection.alignments = this.isAlignment(node);\n }\n if (!formatCollection.formats) {\n formatCollection.formats = this.isFormats(node, formatNode);\n if (formatCollection.formats === 'pre') {\n formatCollection.insertcode = true;\n }\n }\n if (!formatCollection.createlink) {\n formatCollection.createlink = this.isLink(node);\n }\n if (!formatCollection.numberFormatList) {\n formatCollection.numberFormatList = this.isNumberFormatList(node);\n }\n if (!formatCollection.bulletFormatList) {\n formatCollection.bulletFormatList = this.isBulletFormatList(node);\n }\n return formatCollection;\n };\n ToolbarStatus.isFontColor = function (docElement, node) {\n var color = node.style && node.style.color;\n if ((color === null || color === undefined || color === '') && node.nodeType !== 3) {\n color = this.getComputedStyle(docElement, node, 'color');\n }\n if (color !== null && color !== '' && color !== undefined) {\n return color;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isLink = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'a') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isBackgroundColor = function (node) {\n var backColor = node.style && node.style.backgroundColor;\n if (backColor !== null && backColor !== '' && backColor !== undefined) {\n return backColor;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontSize = function (docElement, node, fontSize) {\n var size = node.style && node.style.fontSize;\n if ((size === null || size === undefined || size === '') && node.nodeType !== 3 &&\n node.parentElement.classList.contains('e-content')) {\n size = this.getComputedStyle(docElement, node, 'font-size');\n }\n if ((size !== null && size !== '' && size !== undefined)\n && (fontSize === null || fontSize === undefined || (fontSize.indexOf(size) > -1))) {\n return size;\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFontName = function (docElement, node, fontName) {\n var name = node.style && node.style.fontFamily;\n if ((name === null || name === undefined || name === '') && node.nodeType !== 3) {\n name = this.getComputedStyle(docElement, node, 'font-family');\n }\n var index = null;\n if ((name !== null && name !== '' && name !== undefined)\n && (fontName === null || fontName === undefined || (fontName.filter(function (value, pos) {\n // eslint-disable-next-line\n var pattern = new RegExp(name, 'i');\n if ((value.replace(/\"/g, '').replace(/ /g, '').toLowerCase() === name.replace(/\"/g, '').replace(/ /g, '').toLowerCase()) ||\n (value.split(',')[0] && value.split(',')[0].search(pattern) > -1)) {\n index = pos;\n }\n }) && (index !== null)))) {\n // eslint-disable-next-line\n return (index !== null) ? fontName[index] : name.replace(/\"/g, '');\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isOrderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ol') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isUnorderedList = function (node) {\n if (node.nodeName.toLocaleLowerCase() === 'ul') {\n return true;\n }\n else {\n return false;\n }\n };\n ToolbarStatus.isAlignment = function (node) {\n var align = node.style && node.style.textAlign;\n if (align === 'left') {\n return 'justifyleft';\n }\n else if (align === 'center') {\n return 'justifycenter';\n }\n else if (align === 'right') {\n return 'justifyright';\n }\n else if (align === 'justify') {\n return 'justifyfull';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isFormats = function (node, formatNode) {\n if (((formatNode === undefined || formatNode === null)\n && BLOCK_TAGS.indexOf(node.nodeName.toLocaleLowerCase()) > -1)\n || (formatNode !== null && formatNode !== undefined\n && formatNode.indexOf(node.nodeName.toLocaleLowerCase()) > -1)) {\n return node.nodeName.toLocaleLowerCase();\n }\n else {\n return null;\n }\n };\n ToolbarStatus.getComputedStyle = function (docElement, node, prop) {\n return docElement.defaultView.getComputedStyle(node, null).getPropertyValue(prop);\n };\n ToolbarStatus.isNumberFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'lower-alpha') {\n return 'Lower Alpha';\n }\n else if (list === 'number') {\n return 'Number';\n }\n else if (list === 'upper-alpha') {\n return 'Upper Alpha';\n }\n else if (list === 'lower-roman') {\n return 'Lower Roman';\n }\n else if (list === 'upper-roman') {\n return 'Upper Roman';\n }\n else if (list === 'lower-greek') {\n return 'Lower Greek';\n }\n else if (list === 'none') {\n return 'None';\n }\n else {\n return null;\n }\n };\n ToolbarStatus.isBulletFormatList = function (node) {\n var list = node.style && node.style.listStyleType;\n if (list === 'circle') {\n return 'Circle';\n }\n else if (list === 'square') {\n return 'Square';\n }\n else if (list === 'none') {\n return 'None';\n }\n else if (list === 'disc') {\n return 'Disc';\n }\n else {\n return null;\n }\n };\n return ToolbarStatus;\n}());\n\n/**\n * HtmlToolbarStatus module for refresh the toolbar status\n */\nvar HtmlToolbarStatus = /** @__PURE__ @class */ (function () {\n function HtmlToolbarStatus(parent) {\n this.parent = parent;\n this.toolbarStatus = this.prevToolbarStatus = getDefaultHtmlTbStatus();\n this.addEventListener();\n }\n HtmlToolbarStatus.prototype.addEventListener = function () {\n this.parent.on(toolbarRefresh, this.onRefreshHandler, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n HtmlToolbarStatus.prototype.removeEventListener = function () {\n this.parent.off(toolbarRefresh, this.onRefreshHandler);\n this.parent.off(destroy, this.removeEventListener);\n };\n HtmlToolbarStatus.prototype.onRefreshHandler = function (args) {\n if (this.parent.readonly) {\n return;\n }\n var fontsize = [];\n var fontName = [];\n var formats = [];\n this.parent.fontSize.items.forEach(function (item) {\n fontsize.push(item.value);\n });\n this.parent.fontFamily.items.forEach(function (item) {\n fontName.push(item.value);\n });\n this.parent.format.types.forEach(function (item) {\n formats.push(item.value.toLocaleLowerCase());\n });\n this.toolbarStatus = ToolbarStatus.get(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel(), formats, fontsize, fontName, args.documentNode);\n var tbStatusString = JSON.stringify(this.toolbarStatus);\n this.parent.notify(toolbarUpdated, this.toolbarStatus);\n if (JSON.stringify(this.prevToolbarStatus) !== tbStatusString) {\n this.parent.notify(updateTbItemsStatus, { html: JSON.parse(tbStatusString), markdown: null });\n this.prevToolbarStatus = JSON.parse(tbStatusString);\n }\n };\n return HtmlToolbarStatus;\n}());\n\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n * @deprecated\n */\nvar ContentRender = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for content renderer module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} serviceLocator - specifies the service.\n * @returns {void}\n */\n function ContentRender(parent, serviceLocator) {\n this.parent = parent;\n this.serviceLocator = serviceLocator;\n }\n /**\n * The function is used to render Rich Text Editor content div\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var div = this.parent.createElement('div', { className: 'e-rte-content', id: this.parent.getID() + 'rte-view' });\n var rteContent = getEditValue(rteObj.value, rteObj);\n this.editableElement = this.parent.createElement('div', {\n className: 'e-content',\n id: this.parent.getID() + '_rte-edit-view',\n attrs: {\n 'contenteditable': 'true'\n },\n innerHTML: rteContent\n });\n div.appendChild(this.editableElement);\n this.setPanel(div);\n rteObj.element.appendChild(div);\n };\n /**\n * Get the content div element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n * @deprecated\n */\n ContentRender.prototype.getPanel = function () {\n return this.contentPanel;\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the return element.\n * @hidden\n * @deprecated\n */\n ContentRender.prototype.getEditPanel = function () {\n return this.editableElement;\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string element.\n */\n ContentRender.prototype.getText = function () {\n var textString = this.getEditPanel().innerText;\n return textString === '\\n' ? '' : textString;\n };\n /**\n * Set the content div element of RichTextEditor\n *\n * @param {Element} panel - specifies the panel element.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ContentRender.prototype.setPanel = function (panel) {\n this.contentPanel = panel;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {Document} - specifies the document.\n * @hidden\n * @deprecated\n */\n ContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return ContentRender;\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar IFRAMEHEADER = \"\\n \\n \\n \\n \\n \\n \";\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n * @deprecated\n */\nvar IframeContentRender = /** @__PURE__ @class */ (function (_super) {\n __extends$3(IframeContentRender, _super);\n function IframeContentRender() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * The function is used to render Rich Text Editor iframe\n *\n * @hidden\n * @deprecated\n */\n IframeContentRender.prototype.renderPanel = function () {\n var rteObj = this.parent;\n var rteContent = getEditValue(rteObj.value, rteObj);\n var iFrameBodyContent = '' +\n rteContent + '';\n var iFrameContent = IFRAMEHEADER + iFrameBodyContent;\n var iframe = this.parent.createElement('iframe', {\n id: this.parent.getID() + '_rte-view',\n className: 'e-rte-content',\n styles: 'display:block;',\n attrs: { 'srcdoc': iFrameContent }\n });\n this.setPanel(iframe);\n rteObj.element.appendChild(iframe);\n iframe.contentDocument.body.id = this.parent.getID() + '_rte-edit-view';\n iframe.contentDocument.body.setAttribute('aria-owns', this.parent.getID());\n iframe.contentDocument.open();\n iFrameContent = this.setThemeColor(iFrameContent, { color: '#333' });\n iframe.contentDocument.write(iFrameContent);\n iframe.contentDocument.close();\n if (rteObj.enableRtl) {\n this.contentPanel.contentDocument.body.setAttribute('class', 'e-rtl');\n }\n };\n IframeContentRender.prototype.setThemeColor = function (content, styles) {\n var fontColor = getComputedStyle(this.parent.element, '.e-richtexteditor').getPropertyValue('color');\n return content.replace(styles.color, fontColor);\n };\n /**\n * Get the editable element of RichTextEditor\n *\n * @returns {Element} - specifies the element.\n * @hidden\n * @deprecated\n */\n IframeContentRender.prototype.getEditPanel = function () {\n var editNode;\n if (!isNullOrUndefined(this.contentPanel.contentDocument)) {\n editNode = this.contentPanel.contentDocument.body;\n }\n else {\n editNode = this.parent.inputElement;\n }\n return editNode;\n };\n /**\n * Get the document of RichTextEditor\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n IframeContentRender.prototype.getDocument = function () {\n return this.getEditPanel().ownerDocument;\n };\n return IframeContentRender;\n}(ContentRender));\n\n/**\n * XhtmlValidation module called when set enableXhtml as true\n */\nvar XhtmlValidation = /** @__PURE__ @class */ (function () {\n function XhtmlValidation(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n XhtmlValidation.prototype.addEventListener = function () {\n this.parent.on(xhtmlValidation, this.enableXhtmlValidation, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n XhtmlValidation.prototype.removeEventListener = function () {\n this.parent.off(xhtmlValidation, this.enableXhtmlValidation);\n this.parent.off(destroy, this.removeEventListener);\n };\n XhtmlValidation.prototype.enableXhtmlValidation = function () {\n if (this.parent.enableXhtml) {\n if (isNullOrUndefined(this.parent.inputElement)) {\n this.currentElement = this.parent.element;\n }\n else {\n this.currentElement = this.parent.inputElement;\n }\n this.clean(this.currentElement);\n this.ImageTags();\n this.removeTags();\n this.RemoveUnsupported();\n this.currentElement.innerHTML = this.selfEncloseValidation(this.currentElement.innerHTML, this.currentElement.innerText === '\\n' ?\n this.currentElement.innerText.length : this.currentElement.innerText.trim().length);\n this.parent.setProperties({ value: this.currentElement.innerHTML }, true);\n }\n };\n /**\n * @param {string} currentValue - specifies the string value.\n * @param {number} valueLength - specifies the length of the current value.\n * @returns {void}\n * @deprecated\n */\n XhtmlValidation.prototype.selfEncloseValidation = function (currentValue, valueLength) {\n if (valueLength === 0 && currentValue.indexOf('table') < 0 && currentValue.indexOf('img') < 0) {\n var arrayValue = currentValue.split(' ');\n arrayValue[arrayValue.length - 1] = '​' + arrayValue[arrayValue.length - 1];\n currentValue = arrayValue.join('');\n }\n currentValue = currentValue.replace(/
    /g, '
    ').replace(/
    /g, '
    ').replace(/ /g, ' ');\n var valueTemp;\n var valueDupe = [];\n var valueOriginal = [];\n var imgRegexp = [//gi, //gi, //gi, //gi, //gi,\n //gi, //gi, //gi, //gi, //gi,\n //gi, //gi];\n for (var j = 0; j < imgRegexp.length; j++) {\n valueTemp = imgRegexp[j].exec(currentValue);\n while ((valueTemp) !== null) {\n valueDupe.push(valueTemp[0].toString());\n valueTemp = imgRegexp[j].exec(currentValue);\n }\n valueOriginal = valueDupe.slice(0);\n for (var i = 0; i < valueDupe.length; i++) {\n if (valueDupe[i].indexOf('/') === -1 || valueDupe[i].lastIndexOf('/') !== valueDupe[i].length - 2) {\n valueDupe[i] = valueDupe[i].substr(0, valueDupe[i].length - 1) + ' /' +\n valueDupe[i].substr(valueDupe[i].length - 1, valueDupe[i].length);\n }\n }\n for (var g = 0; g <= valueDupe.length - 1; g++) {\n currentValue = currentValue.replace(valueOriginal[g], valueDupe[g]);\n }\n }\n return currentValue;\n };\n XhtmlValidation.prototype.clean = function (node) {\n for (var n = 0; n < node.childNodes.length; n++) {\n var child = node.childNodes[n];\n if (child.nodeType === 8 || child.nodeName === 'V:IMAGE') {\n node.removeChild(child);\n n--;\n }\n else if (child.nodeType === 1) {\n this.clean(child);\n }\n }\n return this.currentElement.innerHTML;\n };\n XhtmlValidation.prototype.ImageTags = function () {\n var imgNodes = this.currentElement.querySelectorAll('IMG');\n for (var i = imgNodes.length - 1; i >= 0; i--) {\n if (!imgNodes[i].hasAttribute('alt')) {\n var img = imgNodes[i];\n img.setAttribute('alt', '');\n }\n }\n };\n XhtmlValidation.prototype.removeTags = function () {\n var removeAttribute = [['br', 'ul'], ['br', 'ol'], ['table', 'span'], ['div', 'span'], ['p', 'span']];\n for (var i = 0; i < removeAttribute.length; i++) {\n this.RemoveElementNode(removeAttribute[i][0], removeAttribute[i][1]);\n }\n };\n XhtmlValidation.prototype.RemoveElementNode = function (rmvNode, parentNode) {\n var parentArray = this.currentElement.querySelectorAll(parentNode);\n for (var i = 0; i < parentArray.length; i++) {\n var rmvArray = parentArray[i].querySelectorAll(rmvNode);\n for (var j = rmvArray.length; j > 0; j--) {\n detach(rmvArray[j - 1]);\n }\n }\n };\n XhtmlValidation.prototype.RemoveUnsupported = function () {\n var underlineEle = this.currentElement.querySelectorAll('u');\n for (var i = underlineEle.length - 1; i >= 0; i--) {\n var spanEle = this.parent.createElement('span');\n spanEle.style.textDecoration = 'underline';\n spanEle.innerHTML = underlineEle[i].innerHTML;\n underlineEle[i].parentNode.insertBefore(spanEle, underlineEle[i]);\n detach(underlineEle[i]);\n }\n var strongEle = this.currentElement.querySelectorAll('strong');\n for (var i = strongEle.length - 1; i >= 0; i--) {\n var boldEle = this.parent.createElement('b');\n boldEle.innerHTML = strongEle[i].innerHTML;\n strongEle[i].parentNode.insertBefore(boldEle, strongEle[i]);\n detach(strongEle[i]);\n }\n var attrArray = ['language', 'role', 'target', 'contenteditable', 'cellspacing',\n 'cellpadding', 'border', 'valign', 'colspan'];\n for (var i = 0; i <= attrArray.length; i++) {\n this.RemoveAttributeByName(attrArray[i]);\n }\n };\n XhtmlValidation.prototype.RemoveAttributeByName = function (attrName) {\n if (this.currentElement.firstChild !== null) {\n if (this.currentElement.firstChild.nodeType !== 3) {\n for (var i = 0; i < this.currentElement.childNodes.length; i++) {\n var ele = this.currentElement.childNodes[i];\n if (ele.nodeType !== 3 && ele.nodeName !== 'TABLE' && ele.nodeName !== 'TBODY' && ele.nodeName !== 'THEAD' &&\n ele.nodeName !== 'TH' && ele.nodeName !== 'TR' && ele.nodeName !== 'TD') {\n if (ele.hasAttribute(attrName)) {\n ele.removeAttribute(attrName);\n }\n if (ele.hasChildNodes()) {\n for (var j = 0; j < ele.childNodes.length; j++) {\n var childEle = ele.childNodes[j];\n if (childEle.nodeType !== 3 && childEle.nodeName !== 'TABLE' && childEle.nodeName !== 'TBODY' &&\n childEle.nodeName !== 'THEAD' && childEle.nodeName !== 'TH' && childEle.nodeName !== 'TR' &&\n childEle.nodeName !== 'TD' && childEle.hasAttribute(attrName)) {\n childEle.removeAttribute(attrName);\n }\n if (childEle.hasChildNodes()) {\n for (var k = 0; k < childEle.childNodes.length; k++) {\n if (childEle.childNodes[k].nodeType !== 3 && childEle.childNodes[k].nodeName !== 'TABLE' &&\n childEle.childNodes[k].nodeName !== 'TBODY' && childEle.childNodes[k].nodeName !== 'THEAD' &&\n childEle.childNodes[k].nodeName !== 'TH' && childEle.childNodes[k].nodeName !== 'TR'\n && childEle.childNodes[k].nodeName !== 'TD'\n && childEle.childNodes[k].hasAttribute(attrName)) {\n childEle.childNodes[k].removeAttribute(attrName);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n };\n return XhtmlValidation;\n}());\n\n/**\n * `HtmlEditor` module is used to HTML editor\n */\nvar HtmlEditor = /** @__PURE__ @class */ (function () {\n function HtmlEditor(parent, serviceLocator) {\n this.rangeCollection = [];\n this.isImageDelete = false;\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.xhtmlValidation = new XhtmlValidation(parent);\n this.addEventListener();\n }\n /**\n * Destroys the Markdown.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n HtmlEditor.prototype.destroy = function () {\n this.removeEventListener();\n };\n /**\n * @param {string} value - specifies the string value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n HtmlEditor.prototype.sanitizeHelper = function (value) {\n value = sanitizeHelper(value, this.parent);\n return value;\n };\n HtmlEditor.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.nodeSelectionObj = new NodeSelection();\n this.colorPickerModule = new ColorPickerInput(this.parent, this.locator);\n this.parent.on(initialLoad, this.instantiateRenderer, this);\n this.parent.on(htmlToolbarClick, this.onToolbarClick, this);\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(keyUp, this.onKeyUp, this);\n this.parent.on(renderColorPicker, this.renderColorPicker, this);\n this.parent.on(initialEnd, this.render, this);\n this.parent.on(modelChanged, this.onPropertyChanged, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(selectAll$1, this.selectAll, this);\n this.parent.on(selectRange, this.selectRange, this);\n this.parent.on(getSelectedHtml, this.getSelectedHtml, this);\n this.parent.on(selectionSave, this.onSelectionSave, this);\n this.parent.on(selectionRestore, this.onSelectionRestore, this);\n this.parent.on(readOnlyMode, this.updateReadOnly, this);\n this.parent.on(paste, this.onPaste, this);\n this.parent.on(tableclass, this.isTableClassAdded, this);\n };\n HtmlEditor.prototype.updateReadOnly = function () {\n if (this.parent.readonly) {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'false' });\n addClass([this.parent.element], CLS_RTE_READONLY);\n }\n else {\n attributes(this.parent.contentModule.getEditPanel(), { contenteditable: 'true' });\n removeClass([this.parent.element], CLS_RTE_READONLY);\n }\n };\n HtmlEditor.prototype.onSelectionSave = function () {\n var currentDocument = this.contentRenderer.getDocument();\n var range = this.nodeSelectionObj.getRange(currentDocument);\n this.saveSelection = this.nodeSelectionObj.save(range, currentDocument);\n };\n HtmlEditor.prototype.onSelectionRestore = function (e) {\n this.parent.isBlur = false;\n this.contentRenderer.getEditPanel().focus();\n if (isNullOrUndefined(e.items) || e.items) {\n this.saveSelection.restore();\n }\n };\n HtmlEditor.prototype.isTableClassAdded = function () {\n var tableElement = this.parent.inputElement.querySelectorAll('table');\n for (var i = 0; i < tableElement.length; i++) {\n if (!tableElement[i].classList.contains('e-rte-table')) {\n tableElement[i].classList.add('e-rte-table');\n }\n }\n };\n HtmlEditor.prototype.onKeyUp = function (e) {\n var args = e.args;\n var restrictKeys = [8, 9, 13, 16, 17, 18, 20, 27, 37, 38, 39, 40, 44, 45, 46, 91,\n 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123];\n var range = this.parent.getRange();\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer;\n var isRootParent = false;\n if (restrictKeys.indexOf(args.keyCode) < 0 && !args.shiftKey && !args.ctrlKey && !args.altKey) {\n pointer = range.startOffset;\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n range.startContainer.nodeName === '#text' ? range.startContainer.parentElement !== this.parent.inputElement ? range.startContainer.parentElement.classList.add('currentStartMark')\n : isRootParent = true : range.startContainer.classList.add('currentStartMark');\n if (range.startContainer.textContent.charCodeAt(0) === 8203) {\n pointer = range.startOffset === 0 ? range.startOffset : range.startOffset - 1;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n var previousLength = this.parent.inputElement.innerHTML.length;\n var currentLength = this.parent.inputElement.innerHTML.replace(regEx, '').length;\n var focusNode = range.startContainer;\n if (previousLength > currentLength && !isRootParent) {\n var currentChild = this.parent.inputElement.firstChild;\n while (!isNullOrUndefined(currentChild) && currentChild.textContent.replace(regEx, '').trim().length > 0) {\n currentChild.innerHTML = currentChild.innerHTML.replace(regEx, '');\n currentChild = currentChild.nextElementSibling;\n }\n var currentChildNode = this.parent.inputElement.querySelector('.currentStartMark').childNodes;\n if (currentChildNode.length > 1) {\n for (var i = 0; i < currentChildNode.length; i++) {\n if (currentChildNode[i].nodeName === '#text' && currentChildNode[i].textContent.length === 0) {\n detach(currentChildNode[i]);\n i--;\n }\n if (focusNode.textContent.replace(regEx, '') === currentChildNode[i].textContent) {\n pointer = focusNode.textContent.length > 1 ? focusNode.textContent.length - 1 : focusNode.textContent.length;\n focusNode = currentChildNode[i];\n }\n }\n }\n else if (currentChildNode.length === 1) {\n if (focusNode.textContent.replace(regEx, '') === currentChildNode[0].textContent) {\n focusNode = currentChildNode[0];\n }\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), focusNode, pointer);\n }\n var currentElem = this.parent.inputElement.querySelector('.currentStartMark');\n if (!isNullOrUndefined(currentElem)) {\n currentElem.classList.remove('currentStartMark');\n if (currentElem.getAttribute('class').trim() === '') {\n currentElem.removeAttribute('class');\n }\n }\n if (!isNullOrUndefined(range.startContainer.previousSibling) && !isNullOrUndefined(range.startContainer.previousSibling.parentElement) &&\n range.startContainer.parentElement === range.startContainer.previousSibling.parentElement &&\n range.startContainer.previousSibling.textContent.charCodeAt(0) === 8203 &&\n range.startContainer.previousSibling.textContent.length <= 1) {\n range.startContainer.previousSibling.textContent = range.startContainer.previousSibling.textContent.replace(regEx, '');\n }\n if (range.endContainer.textContent.charCodeAt(range.endOffset) === 8203) {\n pointer = range.startOffset;\n range.endContainer.textContent = range.endContainer.textContent.replace(regEx, '');\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), range.startContainer, pointer);\n }\n }\n };\n HtmlEditor.prototype.onKeyDown = function (e) {\n var _this = this;\n var currentRange;\n var args = e.args;\n if (Browser.info.name === 'chrome') {\n currentRange = this.parent.getRange();\n this.backSpaceCleanup(e, currentRange);\n this.deleteCleanup(e, currentRange);\n }\n if (args.keyCode === 9 && this.parent.enableTabKey) {\n if (!isNullOrUndefined(args.target) && isNullOrUndefined(closest(args.target, '.e-rte-toolbar'))) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var parentNode = this.nodeSelectionObj.getParentNodeCollection(range);\n if (!((parentNode[0].nodeName === 'LI' || closest(parentNode[0], 'li') ||\n closest(parentNode[0], 'table')) && range.startOffset === 0)) {\n args.preventDefault();\n if (!args.shiftKey) {\n InsertHtml.Insert(this.contentRenderer.getDocument(), '    ');\n this.rangeCollection.push(this.nodeSelectionObj.getRange(this.contentRenderer.getDocument()));\n }\n else if (this.rangeCollection.length > 0 &&\n this.rangeCollection[this.rangeCollection.length - 1].startContainer.textContent.length === 4) {\n var textCont = this.rangeCollection[this.rangeCollection.length - 1].startContainer;\n this.nodeSelectionObj.setSelectionText(this.contentRenderer.getDocument(), textCont, textCont, 0, textCont.textContent.length);\n InsertHtml.Insert(this.contentRenderer.getDocument(), document.createTextNode(''));\n this.rangeCollection.pop();\n }\n }\n }\n }\n if (e.args.action === 'space' ||\n e.args.action === 'enter' ||\n e.args.keyCode === 13) {\n this.spaceLink(e.args);\n if (this.parent.editorMode === 'HTML' && !this.parent.readonly) {\n var currentLength = this.parent.getText().trim().length;\n var selectionLength = this.parent.getSelection().length;\n var totalLength = (currentLength - selectionLength) + 1;\n if (!(this.parent.maxLength === -1 || totalLength <= this.parent.maxLength) &&\n e.args.keyCode === 13) {\n e.args.preventDefault();\n return;\n }\n else {\n this.parent.notify(enterHandler, { args: e.args });\n }\n }\n }\n if (e.args.action === 'space') {\n var currentRange_1 = this.parent.getRange();\n var editorValue = currentRange_1.startContainer.textContent.slice(0, currentRange_1.startOffset);\n var orderedList_1 = this.isOrderedList(editorValue);\n var unOrderedList = this.isUnOrderedList(editorValue);\n if (orderedList_1 && !unOrderedList || unOrderedList && !orderedList_1) {\n var eventArgs_1 = {\n callBack: null,\n event: e.args,\n name: 'keydown-handler'\n };\n var actionBeginArgs = {\n cancel: false,\n item: { command: 'Lists', subCommand: orderedList_1 ? 'OL' : 'UL' },\n name: 'actionBegin',\n originalEvent: e.args,\n requestType: orderedList_1 ? 'OL' : 'UL'\n };\n this.parent.trigger(actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n _this.parent.formatter.editorManager.observer.notify(ON_BEGIN, eventArgs_1);\n _this.parent.trigger(actionComplete, {\n editorMode: _this.parent.editorMode,\n elements: _this.parent.formatter.editorManager.domNode.blockNodes(),\n event: e.args,\n name: actionComplete,\n range: _this.parent.getRange(),\n requestType: orderedList_1 ? 'OL' : 'UL'\n });\n }\n });\n }\n }\n if (Browser.info.name === 'chrome' && (!isNullOrUndefined(this.rangeElement) && !isNullOrUndefined(this.oldRangeElement) ||\n !isNullOrUndefined(this.deleteRangeElement) && !isNullOrUndefined(this.deleteOldRangeElement)) &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.rangeElement = null;\n this.oldRangeElement = null;\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n if (!this.isImageDelete) {\n args.preventDefault();\n }\n args.preventDefault();\n }\n };\n HtmlEditor.prototype.isOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var olListStartRegex = [/^[1]+[.]+$/, /^[i]+[.]+$/, /^[a]+[.]+$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < olListStartRegex.length; i++) {\n if (olListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.isUnOrderedList = function (editorValue) {\n editorValue = editorValue.replace(/\\u200B/g, '');\n var ulListStartRegex = [/^[*]$/, /^[-]$/];\n if (!isNullOrUndefined(editorValue)) {\n for (var i = 0; i < ulListStartRegex.length; i++) {\n if (ulListStartRegex[i].test(editorValue)) {\n return true;\n }\n }\n }\n return false;\n };\n HtmlEditor.prototype.backSpaceCleanup = function (e, currentRange) {\n var isLiElement = false;\n if (e.args.code === 'Backspace' && e.args.keyCode === 8 && currentRange.startOffset === 0 &&\n currentRange.endOffset === 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.textContent.length > 0 &&\n currentRange.startContainer.parentElement.tagName !== 'TD' && currentRange.startContainer.parentElement.tagName !== 'TH') {\n var checkNode = currentRange.startContainer.nodeName === '#text' ? currentRange.startContainer.parentElement : currentRange.startContainer;\n if (!this.parent.formatter.editorManager.domNode.isBlockNode(checkNode) &&\n !isNullOrUndefined(checkNode.previousSibling) && checkNode.previousSibling.nodeName === 'BR') {\n return;\n }\n this.rangeElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.rangeElement.tagName === 'OL' || this.rangeElement.tagName === 'UL') {\n var liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.previousElementSibling && liElement.previousElementSibling.childElementCount > 0) {\n this.oldRangeElement = liElement.previousElementSibling.lastElementChild.nodeName === 'BR' ?\n liElement.previousElementSibling : liElement.previousElementSibling.lastElementChild;\n if (!isNullOrUndefined(liElement.lastElementChild) && liElement.lastElementChild.nodeName !== 'BR') {\n this.rangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.rangeElement = liElement;\n }\n }\n }\n else if (this.rangeElement === this.parent.inputElement || this.rangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.rangeElement.previousElementSibling) && this.rangeElement.previousElementSibling.tagName === 'TABLE')) {\n return;\n }\n else {\n this.oldRangeElement = this.rangeElement.previousElementSibling;\n }\n if (isNullOrUndefined(this.oldRangeElement)) {\n return;\n }\n else {\n if (this.oldRangeElement.tagName === 'OL' || this.oldRangeElement.tagName === 'UL') {\n this.oldRangeElement = this.oldRangeElement.lastElementChild.lastElementChild\n ? this.oldRangeElement.lastElementChild.lastElementChild :\n this.oldRangeElement.lastElementChild;\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), \n // eslint-disable-next-line\n this.oldRangeElement, this.oldRangeElement.childNodes.length);\n if (this.oldRangeElement.querySelector('BR')) {\n detach(this.oldRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.rangeElement) && this.oldRangeElement !== this.rangeElement) {\n while (this.rangeElement.firstChild) {\n this.oldRangeElement.appendChild(this.rangeElement.childNodes[0]);\n }\n // eslint-disable-next-line\n !isLiElement ? detach(this.rangeElement) : detach(this.rangeElement.parentElement);\n this.oldRangeElement.normalize();\n }\n }\n }\n };\n HtmlEditor.prototype.deleteCleanup = function (e, currentRange) {\n var isLiElement = false;\n var liElement;\n var rootElement;\n if (e.args.code === 'Delete' && e.args.keyCode === 46 &&\n this.parent.contentModule.getText().trim().length !== 0 && this.parent.getSelection().length === 0 && currentRange.startContainer.parentElement.tagName !== 'TD' &&\n currentRange.startContainer.parentElement.tagName !== 'TH') {\n this.deleteRangeElement = rootElement = this.getRootBlockNode(currentRange.startContainer);\n if (this.deleteRangeElement.tagName === 'OL' || this.deleteRangeElement.tagName === 'UL') {\n liElement = this.getRangeLiNode(currentRange.startContainer);\n if (liElement.nextElementSibling && liElement.nextElementSibling.childElementCount > 0\n && !liElement.nextElementSibling.querySelector('BR')) {\n if (!isNullOrUndefined(liElement.lastElementChild)) {\n this.deleteRangeElement = liElement.lastElementChild;\n isLiElement = true;\n }\n else {\n this.deleteRangeElement = liElement;\n }\n }\n else {\n this.deleteRangeElement = this.getRangeElement(liElement);\n }\n }\n else if (this.deleteRangeElement.nodeType === 3 || (this.deleteRangeElement.tagName === 'TABLE' ||\n (!isNullOrUndefined(this.deleteRangeElement.nextElementSibling) && this.deleteRangeElement.nextElementSibling.tagName === 'TABLE'))) {\n return;\n }\n if (this.getCaretIndex(currentRange, this.deleteRangeElement) === this.deleteRangeElement.textContent.length) {\n if (!isNullOrUndefined(liElement)) {\n if (isLiElement || !isNullOrUndefined(liElement.nextElementSibling)) {\n this.deleteOldRangeElement = this.getRangeElement(liElement.nextElementSibling);\n }\n else {\n this.deleteOldRangeElement = rootElement.nextElementSibling;\n }\n }\n else {\n this.deleteOldRangeElement = this.deleteRangeElement.nextElementSibling;\n }\n if (isNullOrUndefined(this.deleteOldRangeElement)) {\n return;\n }\n else {\n if (currentRange.startOffset === 0 && currentRange.endOffset === 1 &&\n this.deleteRangeElement.childNodes[0].nodeName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement, 0, 1);\n this.isImageDelete = true;\n }\n else {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), this.deleteRangeElement, this.deleteRangeElement.childNodes.length);\n this.isImageDelete = false;\n }\n if (this.deleteRangeElement.querySelector('BR')) {\n detach(this.deleteRangeElement.querySelector('BR'));\n }\n if (!isNullOrUndefined(this.deleteRangeElement) && (this.deleteOldRangeElement.tagName !== 'OL' && this.deleteOldRangeElement.tagName !== 'UL')\n && this.deleteOldRangeElement !== this.deleteRangeElement) {\n while (this.deleteOldRangeElement.firstChild) {\n this.deleteRangeElement.appendChild(this.deleteOldRangeElement.childNodes[0]);\n }\n if (!isLiElement) {\n detach(this.deleteOldRangeElement);\n }\n else {\n detach(this.deleteOldRangeElement.parentElement);\n }\n this.deleteRangeElement.normalize();\n }\n else {\n this.deleteRangeElement = null;\n this.deleteOldRangeElement = null;\n }\n }\n }\n else {\n this.deleteRangeElement = null;\n }\n }\n };\n HtmlEditor.prototype.getCaretIndex = function (currentRange, element) {\n var position = 0;\n if (this.parent.contentModule.getDocument().getSelection().rangeCount !== 0) {\n var preCaretRange = currentRange.cloneRange();\n preCaretRange.selectNodeContents(element);\n preCaretRange.setEnd(currentRange.endContainer, currentRange.endOffset);\n position = preCaretRange.toString().length;\n }\n return position;\n };\n HtmlEditor.prototype.getRangeElement = function (element) {\n var rangeElement = element.lastElementChild ? element.lastElementChild.tagName === 'BR' ?\n element.lastElementChild.previousElementSibling ? element.lastElementChild.previousElementSibling\n : element : element.lastElementChild : element;\n return rangeElement;\n };\n HtmlEditor.prototype.getRootBlockNode = function (rangeBlockNode) {\n // eslint-disable-next-line\n for (; rangeBlockNode && this.parent && this.parent.inputElement !== rangeBlockNode; rangeBlockNode = rangeBlockNode) {\n if (rangeBlockNode.parentElement === this.parent.inputElement) {\n break;\n }\n else {\n rangeBlockNode = rangeBlockNode.parentElement;\n }\n }\n return rangeBlockNode;\n };\n HtmlEditor.prototype.getRangeLiNode = function (rangeLiNode) {\n var node = rangeLiNode.parentElement;\n while (node !== this.parent.inputElement) {\n if (node.nodeType === 1 && node.tagName === 'LI') {\n break;\n }\n node = node.parentElement;\n }\n return node;\n };\n HtmlEditor.prototype.onPaste = function (e) {\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (e.text.match(regex)) {\n if (e.isWordPaste) {\n return;\n }\n e.args.preventDefault();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var saveSelection = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n // eslint-disable-next-line\n var httpRegex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)))/gi);\n var wwwRegex = new RegExp(/([^\\S]|^)(((www\\.))(\\S+))/gi);\n var enterSplitText = e.text.split('\\n');\n var contentInnerElem = '';\n for (var i = 0; i < enterSplitText.length; i++) {\n if (enterSplitText[i].trim() === '') {\n contentInnerElem += getDefaultValue(this.parent);\n }\n else {\n var contentWithSpace = '';\n var spaceBetweenContent = true;\n var spaceSplit = enterSplitText[i].split(' ');\n for (var j = 0; j < spaceSplit.length; j++) {\n if (spaceSplit[j].trim() === '') {\n contentWithSpace += spaceBetweenContent ? ' ' : ' ';\n }\n else {\n spaceBetweenContent = false;\n contentWithSpace += spaceSplit[j] + ' ';\n }\n }\n if (i === 0) {\n contentInnerElem += '' + contentWithSpace.trim() + '';\n }\n else {\n contentInnerElem += '

    ' + contentWithSpace.trim() + '

    ';\n }\n }\n }\n var divElement = this.parent.createElement('div');\n divElement.setAttribute('class', 'pasteContent');\n divElement.style.display = 'inline';\n divElement.innerHTML = contentInnerElem.replace('¶', '&para');\n var paraElem = divElement.querySelectorAll('span, p');\n for (var i = 0; i < paraElem.length; i++) {\n var splitTextContent = paraElem[i].innerHTML.split(' ');\n var resultSplitContent = '';\n for (var j = 0; j < splitTextContent.length; j++) {\n if (splitTextContent[j].match(httpRegex) || splitTextContent[j].match(wwwRegex)) {\n resultSplitContent += '' + splitTextContent[j] + ' ';\n }\n else {\n resultSplitContent += splitTextContent[j] + ' ';\n }\n }\n paraElem[i].innerHTML = resultSplitContent.trim();\n }\n if (!isNullOrUndefined(this.parent.pasteCleanupModule)) {\n e.callBack(divElement.innerHTML);\n }\n else {\n this.parent.formatter.editorManager.execCommand('insertHTML', null, null, null, divElement);\n }\n }\n };\n HtmlEditor.prototype.spaceLink = function (e) {\n var range = this.nodeSelectionObj.getRange(this.contentRenderer.getDocument());\n var selectNodeEle = this.nodeSelectionObj.getParentNodeCollection(range);\n var text = range.startContainer.textContent.substr(0, range.endOffset);\n var splitText = text.split(' ');\n var urlText = splitText[splitText.length - 1];\n var urlTextRange = range.startOffset - (text.length - splitText[splitText.length - 1].length);\n urlText = urlText.slice(0, urlTextRange);\n // eslint-disable-next-line\n var regex = new RegExp(/([^\\S]|^)(((https?\\:\\/\\/)|(www\\.))(\\S+))/gi);\n if (selectNodeEle[0].nodeName !== 'A' && urlText.match(regex)) {\n var selection = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n var url = urlText.indexOf('http') > -1 ? urlText : 'http://' + urlText;\n var selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var value = {\n url: url,\n selection: selection, selectParent: selectParent,\n text: urlText,\n title: '',\n target: '_blank'\n };\n this.parent.formatter.process(this.parent, {\n item: {\n 'command': 'Links',\n 'subCommand': 'CreateLink'\n }\n }, e, value);\n }\n };\n HtmlEditor.prototype.onToolbarClick = function (args) {\n var save;\n var selectNodeEle;\n var selectParentEle;\n var item = args.item;\n var closestElement = closest(args.originalEvent.target, '.e-rte-quick-popup');\n if (closestElement && !closestElement.classList.contains('e-rte-inline-popup')) {\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n if (isIDevice$1() && item.command === 'Images') {\n this.nodeSelectionObj.restore();\n }\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n if (item.command === 'Images') {\n this.parent.notify(imageToolbarAction, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Audios') {\n this.parent.notify(audioToolbarAction, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Videos') {\n this.parent.notify(videoToolbarAction, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Links') {\n this.parent.notify(linkToolbarAction, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n if (item.command === 'Table') {\n this.parent.notify(tableToolbarAction, {\n member: 'table', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n }\n }\n else {\n var linkDialog = document.getElementById(this.parent.getID() + '_rtelink');\n var imageDialog = document.getElementById(this.parent.getID() + '_image');\n if (!(item.subCommand === 'SourceCode' || item.subCommand === 'Preview' ||\n item.subCommand === 'FontColor' || item.subCommand === 'BackgroundColor')) {\n var range = this.nodeSelectionObj.getRange(this.parent.contentModule.getDocument());\n if (isNullOrUndefined(linkDialog) && isNullOrUndefined(imageDialog)) {\n save = this.nodeSelectionObj.save(range, this.parent.contentModule.getDocument());\n }\n selectNodeEle = this.nodeSelectionObj.getNodeCollection(range);\n selectParentEle = this.nodeSelectionObj.getParentNodeCollection(range);\n }\n switch (item.subCommand) {\n case 'Maximize':\n this.parent.notify(enableFullScreen, { args: args });\n break;\n case 'Minimize':\n this.parent.notify(disableFullScreen, { args: args });\n break;\n case 'CreateLink':\n this.parent.notify(insertLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'RemoveLink':\n this.parent.notify(unLink, {\n member: 'link', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Print':\n this.parent.print();\n break;\n case 'Image':\n this.parent.notify(insertImage, {\n member: 'image', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Audio':\n this.parent.notify(insertAudio, {\n member: 'audio', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'Video':\n this.parent.notify(insertVideo, {\n member: 'video', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n case 'CreateTable':\n this.parent.notify(createTable, {\n member: 'table', args: args, selection: save\n });\n break;\n case 'SourceCode':\n this.parent.notify(sourceCode, { member: 'viewSource', args: args });\n break;\n case 'Preview':\n this.parent.notify(updateSource, { member: 'updateSource', args: args });\n break;\n case 'FontColor':\n case 'BackgroundColor':\n break;\n case 'File':\n this.parent.notify(renderFileManager, {\n member: 'fileManager', args: args, selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n });\n break;\n default:\n this.parent.formatter.process(this.parent, args, args.originalEvent, null);\n break;\n }\n }\n };\n HtmlEditor.prototype.renderColorPicker = function (args) {\n this.colorPickerModule.renderColorPickerInput(args);\n };\n HtmlEditor.prototype.instantiateRenderer = function () {\n if (this.parent.iframeSettings.enable) {\n this.renderFactory.addRenderer(RenderType.Content, new IframeContentRender(this.parent, this.locator));\n }\n else {\n this.renderFactory.addRenderer(RenderType.Content, new ContentRender(this.parent, this.locator));\n }\n };\n HtmlEditor.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.render);\n this.parent.off(modelChanged, this.onPropertyChanged);\n this.parent.off(htmlToolbarClick, this.onToolbarClick);\n this.parent.off(renderColorPicker, this.renderColorPicker);\n this.parent.off(destroy, this.destroy);\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(initialLoad, this.instantiateRenderer);\n this.parent.off(selectAll$1, this.selectAll);\n this.parent.off(selectRange, this.selectRange);\n this.parent.off(getSelectedHtml, this.getSelectedHtml);\n this.parent.off(selectionSave, this.onSelectionSave);\n this.parent.off(selectionRestore, this.onSelectionRestore);\n this.parent.off(readOnlyMode, this.updateReadOnly);\n this.parent.off(paste, this.onPaste);\n this.parent.off(tableclass, this.isTableClassAdded);\n };\n HtmlEditor.prototype.render = function () {\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps, undoRedoTimer: this.parent.undoRedoTimer };\n if (isNullOrUndefined(this.parent.formatter)) {\n var formatterClass = new HTMLFormatter({\n currentDocument: this.contentRenderer.getDocument(),\n element: editElement,\n options: option\n });\n this.parent.setProperties({ formatter: formatterClass }, true);\n }\n else {\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n if (this.parent.enableXhtml) {\n this.parent.notify(xhtmlValidation, {});\n }\n if (this.parent.toolbarSettings.enable) {\n this.toolbarUpdate = new HtmlToolbarStatus(this.parent);\n }\n if (this.parent.inlineMode.enable) {\n if (!isNullOrUndefined(this.parent.fontFamily.default)) {\n editElement.style.fontFamily = this.parent.fontFamily.default;\n }\n if (!isNullOrUndefined(this.parent.fontSize.default)) {\n editElement.style.fontSize = this.parent.fontSize.default;\n }\n }\n this.parent.notify(bindOnEnd, {});\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} e - specifies the editor model\n * @returns {void}\n * @hidden\n * @deprecated\n */\n HtmlEditor.prototype.onPropertyChanged = function (e) {\n // On property code change here\n if (!isNullOrUndefined(e.newProp.formatter)) {\n var editElement = this.contentRenderer.getEditPanel();\n var option = { undoRedoSteps: this.parent.undoRedoSteps,\n undoRedoTimer: this.parent.undoRedoTimer };\n this.parent.formatter.updateFormatter(editElement, this.contentRenderer.getDocument(), option);\n }\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n * @hidden\n */\n HtmlEditor.prototype.getModuleName = function () {\n return 'htmlEditor';\n };\n /**\n * For selecting all content in RTE\n *\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectAll = function () {\n var nodes = getTextNodesUnder(this.parent.contentModule.getDocument(), this.parent.contentModule.getEditPanel());\n if (nodes.length > 0) {\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.parent.contentModule.getDocument(), nodes[0], nodes[nodes.length - 1], 0, nodes[nodes.length - 1].textContent.length);\n }\n };\n /**\n * For selecting all content in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @private\n * @hidden\n */\n HtmlEditor.prototype.selectRange = function (e) {\n this.parent.formatter.editorManager.nodeSelection.setRange(this.parent.contentModule.getDocument(), e.range);\n };\n /**\n * For get a selected text in RTE\n *\n * @param {NotifyArgs} e - specifies the notified arguments\n * @returns {void}\n * @hidden\n */\n HtmlEditor.prototype.getSelectedHtml = function (e) {\n e.callBack(this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument()).toString());\n };\n return HtmlEditor;\n}());\n\n/**\n * PasteCleanup module called when pasting content in RichTextEditor\n */\nvar PasteCleanup = /** @__PURE__ @class */ (function () {\n function PasteCleanup(parent, serviceLocator) {\n this.inlineNode = ['a', 'abbr', 'acronym', 'audio', 'b', 'bdi', 'bdo', 'big', 'br', 'button',\n 'canvas', 'cite', 'code', 'data', 'datalist', 'del', 'dfn', 'em', 'embed', 'font', 'i', 'iframe', 'img', 'input',\n 'ins', 'kbd', 'label', 'map', 'mark', 'meter', 'noscript', 'object', 'output', 'picture', 'progress',\n 'q', 'ruby', 's', 'samp', 'script', 'select', 'slot', 'small', 'span', 'strong', 'sub', 'sup', 'svg',\n 'template', 'textarea', 'time', 'u', 'tt', 'var', 'video', 'wbr'];\n this.blockNode = ['div', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'address', 'blockquote', 'button', 'center', 'dd', 'dir', 'dl', 'dt', 'fieldset',\n 'frameset', 'hr', 'iframe', 'isindex', 'li', 'map', 'menu', 'noframes', 'noscript',\n 'object', 'ol', 'pre', 'td', 'tr', 'th', 'tbody', 'tfoot', 'thead', 'table', 'ul',\n 'header', 'article', 'nav', 'footer', 'section', 'aside', 'main', 'figure', 'figcaption'];\n this.isNotFromHtml = false;\n this.containsHtml = false;\n this.parent = parent;\n this.locator = serviceLocator;\n this.renderFactory = this.locator.getService('rendererFactory');\n this.i10n = serviceLocator.getService('rteLocale');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n this.addEventListener();\n }\n PasteCleanup.prototype.addEventListener = function () {\n this.nodeSelectionObj = new NodeSelection();\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(pasteClean, this.pasteClean, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n this.parent.on(destroy, this.destroy, this);\n };\n PasteCleanup.prototype.destroy = function () {\n this.removeEventListener();\n };\n PasteCleanup.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(pasteClean, this.pasteClean);\n this.parent.off(bindCssClass, this.setCssClass);\n this.parent.off(destroy, this.destroy);\n };\n PasteCleanup.prototype.pasteClean = function (e) {\n var _this = this;\n var args = {\n requestType: 'Paste',\n editorMode: this.parent.editorMode,\n event: e\n };\n var value = null;\n var imageproperties;\n if (e.args && !isNullOrUndefined(e.args.clipboardData)) {\n value = e.args.clipboardData.getData('text/html');\n }\n this.parent.trigger(beforePasteCleanup, { value: value });\n if (e.args && value !== null && this.parent.editorMode === 'HTML') {\n if (value.length === 0) {\n var htmlRegex = new RegExp(/<\\/[a-z][\\s\\S]*>/i);\n value = e.args.clipboardData.getData('text/plain');\n this.isNotFromHtml = value !== '' ? true : false;\n value = value.replace(//g, '>');\n this.containsHtml = htmlRegex.test(value);\n var file = e && e.args.clipboardData &&\n e.args.clipboardData.items.length > 0 ?\n (e.args.clipboardData.items[0].getAsFile() === null ?\n (!isNullOrUndefined(e.args.clipboardData.items[1]) ?\n e.args.clipboardData.items[1].getAsFile() : null) :\n e.args.clipboardData.items[0].getAsFile()) : null;\n this.parent.notify(paste, {\n file: file,\n args: e.args,\n text: value,\n callBack: function (b) {\n imageproperties = b;\n if (typeof (imageproperties) === 'object') {\n _this.parent.formatter.editorManager.execCommand('Images', 'Image', e.args, _this.imageFormatting.bind(_this, args), 'pasteCleanup', imageproperties, 'pasteCleanupModule');\n }\n else {\n value = imageproperties;\n }\n }\n });\n if (!htmlRegex.test(value)) {\n var divElement = this.parent.createElement('div');\n divElement.innerHTML = this.splitBreakLine(value);\n value = divElement.innerHTML;\n }\n }\n else if (value.length > 0) {\n this.parent.formatter.editorManager.observer.notify(MS_WORD_CLEANUP, {\n args: e.args,\n text: e.text,\n allowedStylePropertiesArray: this.parent.pasteCleanupSettings.allowedStyleProps,\n callBack: function (a) {\n value = a.trim();\n }\n });\n }\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var currentDocument = this.contentRenderer.getDocument();\n var range = this.nodeSelectionObj.getRange(currentDocument);\n this.saveSelection = this.nodeSelectionObj.save(range, currentDocument);\n this.parent.trigger(afterPasteCleanup, { value: value }, function (updatedArgs) {\n value = updatedArgs.value;\n });\n if (this.parent.pasteCleanupSettings.prompt) {\n e.args.preventDefault();\n var tempDivElem = this.parent.createElement('div');\n tempDivElem.innerHTML = value;\n if (tempDivElem.textContent !== '' || !isNullOrUndefined(tempDivElem.querySelector('img')) ||\n !isNullOrUndefined(tempDivElem.querySelector('table'))) {\n this.pasteDialog(value, args);\n }\n }\n else if (this.parent.pasteCleanupSettings.plainText) {\n e.args.preventDefault();\n this.plainFormatting(value, args);\n }\n else if (this.parent.pasteCleanupSettings.keepFormat) {\n e.args.preventDefault();\n this.formatting(value, false, args);\n }\n else {\n e.args.preventDefault();\n this.formatting(value, true, args);\n }\n }\n };\n PasteCleanup.prototype.splitBreakLine = function (value) {\n var enterSplitText = value.split('\\n');\n var contentInnerElem = '';\n for (var i = 0; i < enterSplitText.length; i++) {\n if (enterSplitText[i].trim() === '') {\n contentInnerElem += getDefaultValue(this.parent);\n }\n else {\n var contentWithSpace = this.makeSpace(enterSplitText[i]);\n contentInnerElem += '

    ' + contentWithSpace.trim() + '

    ';\n }\n }\n return contentInnerElem;\n };\n PasteCleanup.prototype.makeSpace = function (enterSplitText) {\n var contentWithSpace = '';\n var spaceBetweenContent = true;\n var spaceSplit = enterSplitText.split(' ');\n for (var j = 0; j < spaceSplit.length; j++) {\n if (spaceSplit[j].trim() === '') {\n contentWithSpace += spaceBetweenContent ? ' ' : ' ';\n }\n else {\n spaceBetweenContent = false;\n contentWithSpace += spaceSplit[j] + ' ';\n }\n }\n return contentWithSpace;\n };\n PasteCleanup.prototype.imgUploading = function (elm) {\n var allImgElm = elm.querySelectorAll('.pasteContent_Img');\n if (this.parent.insertImageSettings.saveUrl && allImgElm.length > 0) {\n var base64Src = [];\n var imgName = [];\n var uploadImg = [];\n for (var i = 0; i < allImgElm.length; i++) {\n if (allImgElm[i].getAttribute('src').split(',')[0].indexOf('base64') >= 0) {\n base64Src.push(allImgElm[i].getAttribute('src'));\n imgName.push(getUniqueID('rte_image'));\n uploadImg.push(allImgElm[i]);\n }\n }\n var fileList = [];\n for (var i = 0; i < base64Src.length; i++) {\n fileList.push(this.base64ToFile(base64Src[i], imgName[i]));\n }\n for (var i = 0; i < fileList.length; i++) {\n this.uploadMethod(fileList[i], uploadImg[i]);\n }\n if (isNullOrUndefined(this.parent.insertImageSettings.path) &&\n this.parent.insertImageSettings.saveFormat === 'Blob') {\n this.getBlob(allImgElm);\n }\n }\n else if (this.parent.insertImageSettings.saveFormat === 'Blob') {\n this.getBlob(allImgElm);\n }\n var allImgElmId = elm.querySelectorAll('.pasteContent_Img');\n for (var i = 0; i < allImgElmId.length; i++) {\n allImgElmId[i].classList.remove('pasteContent_Img');\n if (allImgElmId[i].getAttribute('class').trim() === '') {\n allImgElm[i].removeAttribute('class');\n }\n }\n };\n PasteCleanup.prototype.getBlob = function (allImgElm) {\n for (var i = 0; i < allImgElm.length; i++) {\n if (!isNullOrUndefined(allImgElm[i].getAttribute('src')) &&\n allImgElm[i].getAttribute('src').split(',')[0].indexOf('base64') >= 0) {\n var blopUrl = URL.createObjectURL(convertToBlob(allImgElm[i].getAttribute('src')));\n allImgElm[i].setAttribute('src', blopUrl);\n }\n }\n };\n PasteCleanup.prototype.toolbarEnableDisable = function (state) {\n if (!this.parent.inlineMode.enable) {\n this.parent.toolbarModule.baseToolbar.toolbarObj.disable(state);\n }\n };\n PasteCleanup.prototype.uploadMethod = function (fileList, imgElem) {\n var _this = this;\n var uploadEle = document.createElement('div');\n document.body.appendChild(uploadEle);\n uploadEle.setAttribute('display', 'none');\n imgElem.style.opacity = '0.5';\n var popupEle = this.parent.createElement('div');\n this.parent.element.appendChild(popupEle);\n var contentEle = this.parent.createElement('input', {\n id: this.parent.element.id + '_upload', attrs: { type: 'File', name: 'UploadFiles' }\n });\n var offsetY = this.parent.iframeSettings.enable ? -50 : -90;\n this.popupObj = new Popup(popupEle, {\n relateTo: imgElem,\n height: '85px',\n width: '300px',\n offsetY: offsetY,\n content: contentEle,\n viewPortElement: this.parent.element,\n position: { X: 'center', Y: 'top' },\n enableRtl: this.parent.enableRtl,\n zIndex: 10001,\n // eslint-disable-next-line\n close: function (event) {\n _this.parent.isBlur = false;\n _this.popupObj.destroy();\n detach(_this.popupObj.element);\n }\n });\n this.popupObj.element.style.display = 'none';\n addClass([this.popupObj.element], [CLS_POPUP_OPEN, CLS_RTE_UPLOAD_POPUP]);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n addClass([this.popupObj.element], this.parent.cssClass);\n }\n var timeOut = fileList.size > 1000000 ? 300 : 100;\n setTimeout(function () {\n _this.refreshPopup(imgElem, _this.popupObj);\n }, timeOut);\n var rawFile;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: {\n saveUrl: this.parent.insertImageSettings.saveUrl,\n removeUrl: this.parent.insertImageSettings.removeUrl\n },\n cssClass: CLS_RTE_DIALOG_UPLOAD,\n dropArea: this.parent.inputElement,\n allowedExtensions: this.parent.insertImageSettings.allowedTypes.toString(),\n success: function (e) {\n setTimeout(function () {\n _this.popupClose(_this.popupObj, _this.uploadObj, imgElem, e);\n }, 900);\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n _this.parent.trigger(imageUploading, e, function (imageUploadingArgs) {\n if (imageUploadingArgs.cancel) {\n if (!isNullOrUndefined(imgElem)) {\n detach(imgElem);\n }\n if (!isNullOrUndefined(_this.popupObj.element)) {\n detach(_this.popupObj.element);\n }\n }\n else {\n _this.parent.inputElement.contentEditable = 'false';\n }\n });\n }\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = rawFile;\n args.cancel = true;\n _this.parent.trigger(imageUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n _this.toolbarEnableDisable(true);\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(beforeImageUpload, args);\n _this.toolbarEnableDisable(true);\n }\n },\n // eslint-disable-next-line\n failure: function (e) {\n setTimeout(function () {\n _this.uploadFailure(imgElem, _this.uploadObj, _this.popupObj, e);\n }, 900);\n },\n canceling: function () {\n _this.parent.inputElement.contentEditable = 'true';\n if (imgElem.nextSibling.textContent === ' ') {\n detach(imgElem.nextSibling);\n }\n detach(imgElem);\n _this.popupObj.close();\n },\n selected: function (e) {\n e.cancel = true;\n if (_this.parent.isServerRendered) {\n rawFile = e.filesData;\n }\n },\n removing: function () {\n _this.parent.inputElement.contentEditable = 'true';\n if (imgElem.nextSibling.textContent === ' ') {\n detach(imgElem.nextSibling);\n }\n detach(imgElem);\n _this.popupObj.close();\n }\n });\n this.uploadObj.appendTo(this.popupObj.element.childNodes[0]);\n /* eslint-disable */\n var fileData = [{\n name: fileList.name,\n rawFile: fileList,\n size: fileList.size,\n type: fileList.type,\n validationMessages: { minSize: \"\", maxSize: \"\" },\n statusCode: '1'\n }];\n this.uploadObj.createFileList(fileData);\n this.uploadObj.filesData.push(fileData[0]);\n /* eslint-enable */\n rawFile = fileData;\n this.uploadObj.upload(fileData);\n this.popupObj.element.getElementsByClassName('e-file-select-wrap')[0].style.display = 'none';\n detach(this.popupObj.element.querySelector('.e-rte-dialog-upload .e-file-select-wrap'));\n };\n PasteCleanup.prototype.uploadFailure = function (imgElem, uploadObj, popupObj, e) {\n this.parent.inputElement.contentEditable = 'true';\n detach(imgElem);\n if (popupObj) {\n popupObj.close();\n }\n this.parent.trigger(imageUploadFailed, e);\n uploadObj.destroy();\n };\n PasteCleanup.prototype.popupClose = function (popupObj, uploadObj, imgElem, e) {\n var _this = this;\n this.parent.inputElement.contentEditable = 'true';\n e.element = imgElem;\n this.parent.trigger(imageUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var url = _this.parent.insertImageSettings.path + e.file.name;\n imgElem.src = url;\n imgElem.setAttribute('alt', e.file.name);\n }\n });\n popupObj.close();\n imgElem.style.opacity = '1';\n uploadObj.destroy();\n this.toolbarEnableDisable(false);\n };\n PasteCleanup.prototype.refreshPopup = function (imageElement, popupObj) {\n var imgPosition = this.parent.iframeSettings.enable ? this.parent.element.offsetTop +\n imageElement.offsetTop : imageElement.offsetTop;\n var rtePosition = this.parent.element.offsetTop + this.parent.element.offsetHeight;\n if (imgPosition > rtePosition) {\n popupObj.relateTo = this.parent.inputElement;\n popupObj.offsetY = this.parent.iframeSettings.enable ? -30 : -65;\n popupObj.element.style.display = 'block';\n }\n else {\n if (popupObj) {\n popupObj.refreshPosition(imageElement);\n popupObj.element.style.display = 'block';\n }\n }\n };\n PasteCleanup.prototype.base64ToFile = function (base64, filename) {\n var baseStr = base64.split(',');\n var typeStr = baseStr[0].match(/:(.*?);/)[1];\n var extension = typeStr.split('/')[1];\n var decodeStr = atob(baseStr[1]);\n var strLen = decodeStr.length;\n var decodeArr = new Uint8Array(strLen);\n while (strLen--) {\n decodeArr[strLen] = decodeStr.charCodeAt(strLen);\n }\n if (Browser.isIE || navigator.appVersion.indexOf('Edge') > -1) {\n var blob = new Blob([decodeArr], { type: extension });\n extend(blob, { name: filename + '.' + (!isNullOrUndefined(extension) ? extension : '') });\n return blob;\n }\n else {\n return new File([decodeArr], filename + '.' + (!isNullOrUndefined(extension) ? extension : ''), { type: extension });\n }\n };\n /**\n * Method for image formatting when pasting\n *\n * @param {Object} pasteArgs - specifies the paste arguments.\n * @param {Element []} imgElement - specifies the array elements.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n PasteCleanup.prototype.imageFormatting = function (pasteArgs, imgElement) {\n var imageElement = this.parent.createElement('span');\n imageElement.appendChild(imgElement.elements[0]);\n var imageValue = imageElement.innerHTML;\n this.contentRenderer = this.renderFactory.getRenderer(RenderType.Content);\n var currentDocument = this.contentRenderer.getDocument();\n var range = this.nodeSelectionObj.getRange(currentDocument);\n this.saveSelection = this.nodeSelectionObj.save(range, currentDocument);\n if (this.parent.pasteCleanupSettings.prompt) {\n this.pasteDialog(imageValue, pasteArgs);\n }\n else if (this.parent.pasteCleanupSettings.plainText) {\n this.plainFormatting(imageValue, pasteArgs);\n }\n else if (this.parent.pasteCleanupSettings.keepFormat) {\n this.formatting(imageValue, false, pasteArgs);\n }\n else {\n this.formatting(imageValue, true, pasteArgs);\n }\n };\n PasteCleanup.prototype.radioRender = function () {\n this.keepRadioButton = new RadioButton({ label: this.i10n.getConstant('keepFormat'),\n name: 'pasteOption', checked: true });\n this.keepRadioButton.isStringTemplate = true;\n var keepFormatElement = this.parent.element.querySelector('#keepFormating');\n this.keepRadioButton.appendTo(keepFormatElement);\n this.cleanRadioButton = new RadioButton({ label: this.i10n.getConstant('cleanFormat'), name: 'pasteOption' });\n this.cleanRadioButton.isStringTemplate = true;\n var cleanFormatElement = this.parent.element.querySelector('#cleanFormat');\n this.cleanRadioButton.appendTo(cleanFormatElement);\n this.plainTextRadioButton = new RadioButton({ label: this.i10n.getConstant('plainText'), name: 'pasteOption' });\n this.plainTextRadioButton.isStringTemplate = true;\n var plainTextElement = this.parent.element.querySelector('#plainTextFormat');\n this.plainTextRadioButton.appendTo(plainTextElement);\n };\n PasteCleanup.prototype.selectFormatting = function (value, args, keepChecked, cleanChecked) {\n if (keepChecked) {\n this.formatting(value, false, args);\n }\n else if (cleanChecked) {\n this.formatting(value, true, args);\n }\n else {\n this.plainFormatting(value, args);\n }\n };\n PasteCleanup.prototype.pasteDialog = function (value, args) {\n var _this = this;\n var isHeight = false;\n var preRTEHeight = this.parent.height;\n var dialogModel = {\n buttons: [\n {\n click: function () {\n if (!_this.dialogObj.isDestroyed) {\n var keepChecked = _this.parent.element.querySelector('#keepFormating').checked;\n var cleanChecked = _this.parent.element.querySelector('#cleanFormat').checked;\n _this.dialogObj.hide();\n _this.parent.height = isHeight ? preRTEHeight : _this.parent.height;\n isHeight = false;\n var argument = _this.dialogObj;\n _this.dialogRenderObj.close(argument);\n _this.dialogObj.destroy();\n _this.selectFormatting(value, args, keepChecked, cleanChecked);\n }\n },\n buttonModel: {\n isPrimary: true,\n cssClass: 'e-flat ' + CLS_RTE_PASTE_OK,\n content: this.i10n.getConstant('pasteDialogOk')\n }\n },\n {\n click: function () {\n if (!_this.dialogObj.isDestroyed) {\n _this.dialogObj.hide();\n _this.parent.height = isHeight ? preRTEHeight : _this.parent.height;\n isHeight = false;\n var args_1 = _this.dialogObj;\n _this.dialogRenderObj.close(args_1);\n _this.dialogObj.destroy();\n }\n },\n buttonModel: {\n cssClass: 'e-flat ' + CLS_RTE_PASTE_CANCEL,\n content: this.i10n.getConstant('pasteDialogCancel')\n }\n }\n ],\n header: this.i10n.getConstant('pasteFormat'),\n content: this.i10n.getConstant('pasteFormatContent') + '
    ' +\n '' +\n '
    ' +\n '
    ',\n target: this.parent.element,\n width: '300px',\n height: '265px',\n cssClass: CLS_RTE_DIALOG_MIN_HEIGHT,\n isModal: true,\n visible: false\n };\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n var rteDialogWrapper = this.parent.element.querySelector('#' + this.parent.getID()\n + '_pasteCleanupDialog');\n if (rteDialogWrapper !== null && rteDialogWrapper.innerHTML !== '') {\n this.destroyDialog(rteDialogWrapper);\n }\n if (rteDialogWrapper === null) {\n rteDialogWrapper = this.parent.createElement('div', {\n id: this.parent.getID() + '_pasteCleanupDialog'\n });\n this.parent.element.appendChild(rteDialogWrapper);\n }\n this.dialogObj.appendTo(rteDialogWrapper);\n this.radioRender();\n /* eslint-disable */\n if (this.parent.element.offsetHeight < parseInt(this.dialogObj.height.split('px')[0], null)) {\n this.parent.setProperties({ height: parseInt(this.dialogObj.height.split('px')[0], null) + 40 });\n /* eslint-enable */\n isHeight = true;\n }\n this.dialogObj.show();\n this.setCssClass({ cssClass: this.parent.cssClass });\n };\n PasteCleanup.prototype.updateCss = function (currentObj, e) {\n if (currentObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n currentObj.setProperties({ cssClass: (currentObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n currentObj.setProperties({ cssClass: (currentObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n PasteCleanup.prototype.setCssClass = function (e) {\n if (this.popupObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n addClass([this.popupObj.element], e.cssClass);\n }\n else {\n removeClass([this.popupObj.element], e.oldCssClass);\n addClass([this.popupObj.element], e.cssClass);\n }\n }\n this.updateCss(this.dialogObj, e);\n this.updateCss(this.uploadObj, e);\n this.updateCss(this.plainTextRadioButton, e);\n this.updateCss(this.cleanRadioButton, e);\n this.updateCss(this.keepRadioButton, e);\n };\n PasteCleanup.prototype.destroyDialog = function (rteDialogWrapper) {\n var rteDialogContainer = this.parent.element.querySelector('.e-dlg-container');\n detach(rteDialogContainer);\n var rteDialogWrapperChildLength = rteDialogWrapper.children.length;\n for (var i = 0; i < rteDialogWrapperChildLength; i++) {\n detach(rteDialogWrapper.children[0]);\n }\n };\n PasteCleanup.prototype.cleanAppleClass = function (elem) {\n var appleClassElem = elem.querySelectorAll('br.Apple-interchange-newline');\n for (var i = 0; i < appleClassElem.length; i++) {\n detach(appleClassElem[i]);\n }\n return elem;\n };\n PasteCleanup.prototype.formatting = function (value, clean, args) {\n var _this = this;\n var clipBoardElem = this.parent.createElement('div', { className: 'pasteContent', styles: 'display:inline;' });\n if (this.isNotFromHtml && this.containsHtml) {\n value = this.splitBreakLine(value);\n }\n clipBoardElem.innerHTML = value;\n clipBoardElem = this.cleanAppleClass(clipBoardElem);\n if (this.parent.pasteCleanupSettings.deniedTags !== null) {\n clipBoardElem = this.deniedTags(clipBoardElem);\n }\n if (clean) {\n clipBoardElem = this.deniedAttributes(clipBoardElem, clean);\n }\n else if (this.parent.pasteCleanupSettings.deniedAttrs !== null) {\n clipBoardElem = this.deniedAttributes(clipBoardElem, clean);\n }\n if (this.parent.pasteCleanupSettings.allowedStyleProps !== null) {\n clipBoardElem = this.allowedStyle(clipBoardElem);\n }\n this.saveSelection.restore();\n clipBoardElem.innerHTML = this.sanitizeHelper(clipBoardElem.innerHTML);\n var allImg = clipBoardElem.querySelectorAll('img');\n for (var i = 0; i < allImg.length; i++) {\n allImg[i].classList.add('pasteContent_Img');\n if (this.parent.insertImageSettings.width !== 'auto') {\n allImg[i].setAttribute('width', this.parent.insertImageSettings.width);\n }\n if (this.parent.insertImageSettings.minWidth !== '0' && this.parent.insertImageSettings.minWidth !== 0) {\n allImg[i].style.minWidth = this.parent.insertImageSettings.minWidth.toString();\n }\n if (this.parent.insertImageSettings.maxWidth !== null) {\n allImg[i].style.maxWidth = this.parent.getInsertImgMaxWidth().toString();\n }\n if (this.parent.insertImageSettings.height !== 'auto') {\n allImg[i].setAttribute('height', this.parent.insertImageSettings.height);\n }\n if (this.parent.insertImageSettings.minHeight !== '0' && this.parent.insertImageSettings.minHeight !== 0) {\n allImg[i].style.minHeight = this.parent.insertImageSettings.minHeight.toString();\n }\n if (this.parent.insertImageSettings.maxHeight !== null) {\n allImg[i].style.maxHeight = this.parent.insertImageSettings.maxHeight.toString();\n }\n }\n this.addTempClass(clipBoardElem);\n if (clipBoardElem.textContent !== '' || !isNullOrUndefined(clipBoardElem.querySelector('img')) ||\n !isNullOrUndefined(clipBoardElem.querySelector('table'))) {\n this.parent.formatter.editorManager.execCommand('inserthtml', 'pasteCleanup', args, function (returnArgs) {\n extend(args, { elements: returnArgs.elements, imageElements: returnArgs.imgElem }, true);\n _this.parent.formatter.onSuccess(_this.parent, args);\n }, clipBoardElem, null, null, this.parent.enterKey);\n this.removeTempClass();\n this.parent.notify(toolbarRefresh, {});\n this.imgUploading(this.parent.inputElement);\n if (this.parent.iframeSettings.enable) {\n this.parent.updateValue();\n }\n }\n };\n PasteCleanup.prototype.addTempClass = function (clipBoardElem) {\n var allChild = clipBoardElem.children;\n for (var i = 0; i < allChild.length; i++) {\n allChild[i].classList.add('pasteContent_RTE');\n }\n };\n PasteCleanup.prototype.removeTempClass = function () {\n var classElm = this.parent.inputElement.querySelectorAll('.pasteContent_RTE');\n for (var i = 0; i < classElm.length; i++) {\n classElm[i].classList.remove('pasteContent_RTE');\n if (classElm[i].getAttribute('class') === '') {\n classElm[i].removeAttribute('class');\n }\n }\n };\n PasteCleanup.prototype.sanitizeHelper = function (value) {\n value = sanitizeHelper(value, this.parent);\n return value;\n };\n //Plain Formatting\n PasteCleanup.prototype.plainFormatting = function (value, args) {\n var _this = this;\n var clipBoardElem = this.parent.createElement('div', { className: 'pasteContent', styles: 'display:inline;' });\n clipBoardElem.innerHTML = value;\n this.detachInlineElements(clipBoardElem);\n this.getTextContent(clipBoardElem);\n if (clipBoardElem.textContent.trim() !== '') {\n if (!isNullOrUndefined(clipBoardElem.firstElementChild) && clipBoardElem.firstElementChild.tagName !== 'BR') {\n var firstElm = clipBoardElem.firstElementChild;\n if (!isNullOrUndefined(clipBoardElem.firstElementChild)) {\n var spanElm = this.parent.createElement('span');\n for (var i = 0, j = 0; i < firstElm.childNodes.length; i++, j++) {\n if (firstElm.childNodes[i].nodeName === '#text') {\n spanElm.appendChild(firstElm.childNodes[i]);\n clipBoardElem.insertBefore(spanElm, clipBoardElem.firstElementChild);\n i--;\n }\n else if (firstElm.childNodes[i].nodeName !== '#text' && j === 0) {\n for (var k = 0; k < firstElm.childNodes[i].childNodes.length; k++) {\n spanElm.appendChild(firstElm.childNodes[i].childNodes[k]);\n clipBoardElem.insertBefore(spanElm, clipBoardElem.firstElementChild);\n k--;\n }\n i--;\n }\n else {\n break;\n }\n }\n if (!firstElm.hasChildNodes()) {\n detach(firstElm);\n }\n }\n }\n this.removeEmptyElements(clipBoardElem);\n this.saveSelection.restore();\n clipBoardElem.innerHTML = this.sanitizeHelper(clipBoardElem.innerHTML);\n this.addTempClass(clipBoardElem);\n this.parent.formatter.editorManager.execCommand('inserthtml', 'pasteCleanup', args, function (returnArgs) {\n extend(args, { elements: returnArgs.elements, imageElements: returnArgs.imgElem }, true);\n _this.parent.formatter.onSuccess(_this.parent, args);\n }, clipBoardElem, null, null, this.parent.enterKey);\n this.removeTempClass();\n }\n else {\n this.saveSelection.restore();\n extend(args, { elements: [] }, true);\n this.parent.formatter.onSuccess(this.parent, args);\n }\n };\n PasteCleanup.prototype.getTextContent = function (clipBoardElem) {\n for (var i = 0; i < this.blockNode.length; i++) {\n var inElem = clipBoardElem.querySelectorAll(this.blockNode[i]);\n for (var j = 0; j < inElem.length; j++) {\n var parElem = void 0;\n for (var k = 0, l = 0, preNode = void 0; k < inElem[j].childNodes.length; k++, l++) {\n if (inElem[j].childNodes[k].nodeName === 'DIV' || inElem[j].childNodes[k].nodeName === 'P' ||\n (inElem[j].childNodes[k].nodeName === '#text' &&\n (inElem[j].childNodes[k].nodeValue.replace(/\\u00a0/g, ' ') !== ' ') &&\n inElem[j].childNodes[k].textContent.trim() === '')) {\n parElem = inElem[j].childNodes[k].parentElement;\n inElem[j].childNodes[k].parentElement.parentElement.insertBefore(inElem[j].childNodes[k], inElem[j].childNodes[k].parentElement);\n k--;\n }\n else {\n parElem = inElem[j].childNodes[k].parentElement;\n if (preNode === 'text') {\n var previousElem = parElem.previousElementSibling;\n previousElem.appendChild(inElem[j].childNodes[k]);\n }\n else {\n var divElement = this.parent.createElement('div', { id: 'newDiv' });\n divElement.appendChild(inElem[j].childNodes[k]);\n parElem.parentElement.insertBefore(divElement, parElem);\n }\n k--;\n preNode = 'text';\n }\n }\n if (!isNullOrUndefined(parElem)) {\n detach(parElem);\n }\n }\n }\n var allElems = clipBoardElem.querySelectorAll('*');\n for (var i = 0; i < allElems.length; i++) {\n var allAtr = allElems[i].attributes;\n for (var j = 0; j < allAtr.length; j++) {\n allElems[i].removeAttribute(allAtr[j].name);\n j--;\n }\n }\n };\n PasteCleanup.prototype.detachInlineElements = function (clipBoardElem) {\n for (var i = 0; i < this.inlineNode.length; i++) {\n var inElem = clipBoardElem.querySelectorAll(this.inlineNode[i]);\n for (var j = 0; j < inElem.length; j++) {\n var parElem = void 0;\n for (var k = 0; k < inElem[j].childNodes.length; k++) {\n parElem = inElem[j].childNodes[k].parentElement;\n inElem[j].childNodes[k].parentElement.parentElement.insertBefore(inElem[j].childNodes[k], inElem[j].childNodes[k].parentElement);\n k--;\n }\n if (!isNullOrUndefined(parElem)) {\n detach(parElem);\n }\n }\n }\n };\n PasteCleanup.prototype.findDetachEmptyElem = function (element) {\n var removableElement;\n if (!isNullOrUndefined(element.parentElement)) {\n if (element.parentElement.textContent.trim() === '' &&\n element.parentElement.getAttribute('class') !== 'pasteContent') {\n removableElement = this.findDetachEmptyElem(element.parentElement);\n }\n else {\n removableElement = element;\n }\n }\n else {\n removableElement = null;\n }\n return removableElement;\n };\n PasteCleanup.prototype.removeEmptyElements = function (element) {\n var emptyElements = element.querySelectorAll(':empty');\n for (var i = 0; i < emptyElements.length; i++) {\n if (emptyElements[i].tagName !== 'BR') {\n var detachableElement = this.findDetachEmptyElem(emptyElements[i]);\n if (!isNullOrUndefined(detachableElement)) {\n detach(detachableElement);\n }\n }\n }\n };\n //GroupingTags\n PasteCleanup.prototype.tagGrouping = function (deniedTags) {\n var groupingTags = deniedTags.slice();\n var keys = Object.keys(pasteCleanupGroupingTags);\n var values = keys.map(function (key) {\n return pasteCleanupGroupingTags[\"\" + key];\n });\n var addTags = [];\n for (var i = 0; i < groupingTags.length; i++) {\n //The value split using '[' because to retrieve the tag name from the user given format which may contain tag with attributes\n if (groupingTags[i].split('[').length > 1) {\n groupingTags[i] = groupingTags[i].split('[')[0].trim();\n }\n if (keys.indexOf(groupingTags[i]) > -1) {\n for (var j = 0; j < values[keys.indexOf(groupingTags[i])].length; j++) {\n if (groupingTags.indexOf(values[keys.indexOf(groupingTags[i])][j]) < 0 &&\n addTags.indexOf(values[keys.indexOf(groupingTags[i])][j]) < 0) {\n addTags.push(values[keys.indexOf(groupingTags[i])][j]);\n }\n }\n }\n }\n return deniedTags = deniedTags.concat(addTags);\n };\n //Filter Attributes in Denied Tags\n PasteCleanup.prototype.attributesfilter = function (deniedTags) {\n for (var i = 0; i < deniedTags.length; i++) {\n if (deniedTags[i].split('[').length > 1) {\n var userAttributes = deniedTags[i].split('[')[1].split(']')[0].split(',');\n var allowedAttributeArray = [];\n var deniedAttributeArray = [];\n for (var j = 0; j < userAttributes.length; j++) {\n // eslint-disable-next-line\n userAttributes[j].indexOf('!') < 0 ? allowedAttributeArray.push(userAttributes[j].trim())\n : deniedAttributeArray.push(userAttributes[j].split('!')[1].trim());\n }\n var allowedAttribute = allowedAttributeArray.length > 1 ?\n (allowedAttributeArray.join('][')) : (allowedAttributeArray.join());\n var deniedAttribute = deniedAttributeArray.length > 1 ?\n deniedAttributeArray.join('][') : (deniedAttributeArray.join());\n if (deniedAttribute.length > 0) {\n var select$$1 = allowedAttribute !== '' ? deniedTags[i].split('[')[0] +\n '[' + allowedAttribute + ']' : deniedTags[i].split('[')[0];\n deniedTags[i] = select$$1 + ':not([' + deniedAttribute + '])';\n }\n else {\n deniedTags[i] = deniedTags[i].split('[')[0] + '[' + allowedAttribute + ']';\n }\n }\n }\n return deniedTags;\n };\n //Denied Tags\n PasteCleanup.prototype.deniedTags = function (clipBoardElem) {\n var deniedTags = isNullOrUndefined(this.parent.pasteCleanupSettings.deniedTags) ? [] : this.parent.pasteCleanupSettings.deniedTags.slice();\n deniedTags = this.attributesfilter(deniedTags);\n deniedTags = this.tagGrouping(deniedTags);\n for (var i = 0; i < deniedTags.length; i++) {\n var removableElement = clipBoardElem.querySelectorAll(deniedTags[i]);\n for (var j = removableElement.length - 1; j >= 0; j--) {\n var parentElem = removableElement[j].parentNode;\n while (removableElement[j].firstChild) {\n parentElem.insertBefore(removableElement[j].firstChild, removableElement[j]);\n }\n parentElem.removeChild(removableElement[j]);\n }\n }\n return clipBoardElem;\n };\n //Denied Attributes\n PasteCleanup.prototype.deniedAttributes = function (clipBoardElem, clean) {\n var deniedAttrs = isNullOrUndefined(this.parent.pasteCleanupSettings.deniedAttrs) ? [] : this.parent.pasteCleanupSettings.deniedAttrs.slice();\n if (clean) {\n deniedAttrs.push('style');\n }\n for (var i = 0; i < deniedAttrs.length; i++) {\n var removableAttrElement = clipBoardElem.\n querySelectorAll('[' + deniedAttrs[i] + ']');\n for (var j = 0; j < removableAttrElement.length; j++) {\n removableAttrElement[j].removeAttribute(deniedAttrs[i]);\n }\n }\n return clipBoardElem;\n };\n //Allowed Style Properties\n PasteCleanup.prototype.allowedStyle = function (clipBoardElem) {\n var allowedStyleProps = isNullOrUndefined(this.parent.pasteCleanupSettings.allowedStyleProps) ? [] : this.parent.pasteCleanupSettings.allowedStyleProps.slice();\n allowedStyleProps.push('list-style-type', 'list-style');\n var styleElement = clipBoardElem.querySelectorAll('[style]');\n for (var i = 0; i < styleElement.length; i++) {\n var allowedStyleValue = '';\n var allowedStyleValueArray = [];\n var styleValue = styleElement[i].getAttribute('style').split(';');\n for (var k = 0; k < styleValue.length; k++) {\n if (allowedStyleProps.indexOf(styleValue[k].split(':')[0].trim()) >= 0) {\n allowedStyleValueArray.push(styleValue[k]);\n }\n }\n styleElement[i].removeAttribute('style');\n allowedStyleValue = allowedStyleValueArray.join(';').trim() === '' ?\n allowedStyleValueArray.join(';') : allowedStyleValueArray.join(';') + ';';\n if (allowedStyleValue) {\n styleElement[i].setAttribute('style', allowedStyleValue);\n }\n }\n return clipBoardElem;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n PasteCleanup.prototype.getModuleName = function () {\n return 'pasteCleanup';\n };\n return PasteCleanup;\n}());\n\n/**\n * `Resize` module is used to resize the editor\n */\nvar Resize = /** @__PURE__ @class */ (function () {\n function Resize(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n Resize.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(initialEnd, this.renderResizable, this);\n this.parent.on(destroy, this.destroy, this);\n };\n Resize.prototype.renderResizable = function () {\n var enableRtlClass = (this.parent.enableRtl) ? CLS_RTE_RES_WEST : CLS_RTE_RES_EAST;\n this.resizer = this.parent.createElement('div', {\n id: this.parent.getID() + '-resizable', className: 'e-icons'\n + ' ' + CLS_RTE_RES_HANDLE + ' ' + enableRtlClass\n });\n this.parent.element.classList.add(CLS_RTE_RES_CNT);\n this.parent.element.appendChild(this.resizer);\n this.touchStartEvent = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(this.resizer, 'mousedown', this.resizeStart, this);\n EventHandler.add(this.resizer, this.touchStartEvent, this.resizeStart, this);\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n if (e.cancelable) {\n e.preventDefault();\n }\n this.wireResizeEvents();\n this.parent.notify(resizeInitialized, {});\n var args = { event: e, requestType: 'editor' };\n this.parent.trigger(resizeStart, args, function (resizeStartArgs) {\n if (resizeStartArgs.cancel) {\n _this.unwireResizeEvents();\n }\n });\n };\n Resize.prototype.performResize = function (e) {\n var _this = this;\n var args = { event: e, requestType: 'editor' };\n this.parent.trigger(onResize, args, function (resizingArgs) {\n if (resizingArgs.cancel) {\n _this.unwireResizeEvents();\n }\n });\n var boundRect = this.parent.element.getBoundingClientRect();\n if (this.isMouseEvent(e)) {\n this.parent.element.style.height = e.clientY - boundRect.top + 'px';\n this.parent.element.style.width = (!this.parent.enableRtl) ? e.clientX - boundRect.left + 'px' :\n boundRect.right - e.clientX + 'px';\n var toolBarEle = this.parent.toolbarModule.getToolbarElement();\n if (toolBarEle !== null) {\n if (toolBarEle.classList.contains(CLS_TB_FLOAT) && this.parent.toolbarSettings.enableFloating &&\n this.parent.getToolbar() && !this.parent.inlineMode.enable) {\n var contentPanel = this.parent.contentModule.getPanel();\n var contentPanelWidth = contentPanel.getBoundingClientRect().width;\n toolBarEle.style.width = contentPanelWidth + 'px';\n }\n }\n }\n else {\n var eventType = Browser.info.name !== 'msie' ? e.touches[0] : e;\n this.parent.element.style.height = eventType.clientY - boundRect.top + 'px';\n this.parent.element.style.width = (!this.parent.enableRtl) ? e.clientX - boundRect.left + 'px' : boundRect.right - e.clientX + 'px';\n }\n if (!this.parent.toolbarSettings.enable) {\n this.parent.setContentHeight('', false);\n }\n this.parent.refreshUI();\n };\n Resize.prototype.stopResize = function (e) {\n this.parent.refreshUI();\n this.unwireResizeEvents();\n var args = { event: e, requestType: 'editor' };\n this.parent.trigger(resizeStop, args);\n };\n Resize.prototype.getEventType = function (e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n };\n Resize.prototype.isMouseEvent = function (e) {\n var isMouse = false;\n if (this.getEventType(e.type) === 'mouse' || (!isNullOrUndefined(e.pointerType) &&\n this.getEventType(e.pointerType) === 'mouse')) {\n isMouse = true;\n }\n return isMouse;\n };\n Resize.prototype.wireResizeEvents = function () {\n EventHandler.add(document, 'mousemove', this.performResize, this);\n EventHandler.add(document, 'mouseup', this.stopResize, this);\n this.touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n this.touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n EventHandler.add(document, this.touchMoveEvent, this.performResize, this);\n EventHandler.add(document, this.touchEndEvent, this.stopResize, this);\n };\n Resize.prototype.unwireResizeEvents = function () {\n EventHandler.remove(document, 'mousemove', this.performResize);\n EventHandler.remove(document, 'mouseup', this.stopResize);\n EventHandler.remove(document, this.touchMoveEvent, this.performResize);\n EventHandler.remove(document, this.touchEndEvent, this.stopResize);\n };\n Resize.prototype.destroy = function () {\n this.removeEventListener();\n };\n Resize.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(initialEnd, this.renderResizable);\n this.parent.element.classList.remove(CLS_RTE_RES_CNT);\n EventHandler.remove(this.resizer, 'mousedown', this.resizeStart);\n EventHandler.remove(this.resizer, this.touchStartEvent, this.resizeStart);\n if (this.resizer) {\n detach(this.resizer);\n }\n this.parent.off(destroy, this.destroy);\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n return Resize;\n}());\n\n/**\n * `FileManager` module is used to display the directories and images inside the editor.\n */\nvar FileManager$1 = /** @__PURE__ @class */ (function () {\n function FileManager$$1(parent, locator) {\n FileManager.Inject(ContextMenu, DetailsView, NavigationPane, Toolbar$1);\n this.parent = parent;\n this.i10n = locator.getService('rteLocale');\n this.dialogRenderObj = locator.getService('dialogRenderObject');\n this.rendererFactory = locator.getService('rendererFactory');\n this.addEventListener();\n }\n FileManager$$1.prototype.initialize = function () {\n this.parent.fileManagerModule = this;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n };\n FileManager$$1.prototype.render = function (e) {\n var _this = this;\n var dlgInsert;\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG') {\n dlgInsert = this.parent.localeObj.getConstant('dialogUpdate');\n }\n else {\n dlgInsert = this.i10n.getConstant('dialogInsert');\n }\n var dlgHeader = this.parent.localeObj.getConstant('fileDialogHeader');\n var dlgCancel = this.i10n.getConstant('dialogCancel');\n this.dlgButtons = [{\n click: this.insertImageUrl.bind(this),\n buttonModel: { content: dlgInsert, cssClass: 'e-flat e-insertImage', isPrimary: true }\n },\n {\n // eslint-disable-next-line\n click: function (e) {\n _this.cancelDialog();\n },\n buttonModel: { cssClass: 'e-flat e-cancel', content: dlgCancel }\n }];\n this.dlgButtons[0].buttonModel.disabled = true;\n this.selectObj = { selection: e.selection, args: e.args, selectParent: e.selectParent };\n var dlgTarget = this.parent.createElement('div', {\n className: 'e-rte-file-manager-dialog', id: this.parent.getID() + '_file-manager-dialog',\n attrs: { 'aria-owns': this.parent.getID() }\n });\n document.body.appendChild(dlgTarget);\n this.fileWrap = this.parent.createElement('div', {\n id: this.parent.getID() + '_rte-file-manager', className: 'e-img-file-wrap'\n });\n dlgTarget.appendChild(this.fileWrap);\n dlgTarget.appendChild(this.getInputUrlElement());\n var dialogModel = {\n visible: false,\n isModal: true, header: dlgHeader,\n target: document.body, locale: this.parent.locale,\n enableRtl: this.parent.enableRtl, cssClass: CLS_RTE_ELEMENTS,\n animationSettings: { effect: 'None' },\n showCloseIcon: true, closeOnEscape: true, width: '720px', height: 'auto',\n position: { X: 'center', Y: 'center' },\n buttons: this.dlgButtons,\n created: this.renderFileManager.bind(this),\n close: function (e) {\n _this.parent.isBlur = false;\n if (e && e.event.returnValue) {\n _this.selectObj.selection.restore();\n }\n _this.destroyComponents();\n _this.dialogRenderObj.close(e);\n }\n };\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(dlgTarget);\n this.dialogObj.show(Browser.isDevice ? true : false);\n this.setCssClass({ cssClass: this.parent.cssClass });\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n FileManager$$1.prototype.setCssClass = function (e) {\n if (this.dialogObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n this.dialogObj.setProperties({ cssClass: (this.dialogObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n this.dialogObj.setProperties({ cssClass: (this.dialogObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n FileManager$$1.prototype.renderFileManager = function () {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n this.fileObj = new FileManager({\n allowMultiSelection: false,\n locale: this.parent.locale,\n enableRtl: this.parent.enableRtl,\n path: this.parent.fileManagerSettings.path,\n view: this.parent.fileManagerSettings.view,\n enablePersistence: this.parent.enablePersistence,\n cssClass: this.parent.fileManagerSettings.cssClass,\n sortOrder: this.parent.fileManagerSettings.sortOrder,\n ajaxSettings: this.parent.fileManagerSettings.ajaxSettings,\n showThumbnail: this.parent.fileManagerSettings.showThumbnail,\n rootAliasName: this.parent.fileManagerSettings.rootAliasName,\n uploadSettings: this.parent.fileManagerSettings.uploadSettings,\n searchSettings: this.parent.fileManagerSettings.searchSettings,\n toolbarSettings: this.parent.fileManagerSettings.toolbarSettings,\n showHiddenItems: this.parent.fileManagerSettings.showHiddenItems,\n allowDragAndDrop: this.parent.fileManagerSettings.allowDragAndDrop,\n showFileExtension: this.parent.fileManagerSettings.showFileExtension,\n detailsViewSettings: this.parent.fileManagerSettings.detailsViewSettings,\n contextMenuSettings: this.parent.fileManagerSettings.contextMenuSettings,\n navigationPaneSettings: this.parent.fileManagerSettings.navigationPaneSettings,\n fileSelect: function (e) {\n var selectedFile = e.fileDetails;\n if (selectedFile.isFile && proxy.parent.insertImageSettings.allowedTypes.indexOf(selectedFile.type) > -1) {\n proxy.inputUrl.value = proxy.parent.fileManagerSettings.ajaxSettings.getImageUrl + '?path=' +\n (selectedFile.filterPath && selectedFile.filterPath.replace(/\\\\/g, '/')) + selectedFile.name;\n _this.dlgButtons[0].buttonModel.disabled = false;\n }\n else {\n proxy.inputUrl.value = '';\n _this.dlgButtons[0].buttonModel.disabled = true;\n }\n _this.dialogObj.buttons = _this.dlgButtons;\n },\n created: function () {\n _this.inputUrl.removeAttribute('disabled');\n },\n success: function () {\n _this.fileObj.refreshLayout();\n }\n });\n if (Browser.isDevice) {\n this.fileObj.height = '85%';\n }\n this.fileObj.appendTo(this.fileWrap);\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n };\n FileManager$$1.prototype.getInputUrlElement = function () {\n var imgUrl = this.parent.createElement('div', { className: 'imgUrl' });\n var urlLabel = this.parent.createElement('div', { className: 'e-rte-label' });\n urlLabel.innerHTML = '';\n imgUrl.appendChild(urlLabel);\n var placeUrl = this.i10n.getConstant('imageUrl');\n this.inputUrl = this.parent.createElement('input', {\n className: 'e-input e-img-url',\n attrs: { placeholder: placeUrl, spellcheck: 'false', disabled: 'true' }\n });\n imgUrl.appendChild(this.inputUrl);\n return imgUrl;\n };\n // eslint-disable-next-line\n FileManager$$1.prototype.insertImageUrl = function (e) {\n var url = this.inputUrl.value;\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n if (url !== '') {\n if (this.parent.editorMode === 'HTML' &&\n isNullOrUndefined(closest(this.selectObj.selection.range.startContainer.parentNode, '#' + this.contentModule.getPanel().id))) {\n this.contentModule.getEditPanel().focus();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n this.selectObj.selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());\n this.selectObj.selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var regex = /[\\w-]+.(jpg|png|jpeg|gif)/g;\n var matchUrl = (!isNullOrUndefined(url.match(regex)) && this.parent.editorMode === 'HTML') ? url.match(regex)[0] : '';\n var value = {\n cssClass: (this.parent.insertImageSettings.display === 'inline' ? CLS_IMGINLINE : CLS_IMGBREAK),\n url: url, selection: this.selectObj.selection, altText: matchUrl, selectParent: this.selectObj.selectParent,\n width: {\n width: this.parent.insertImageSettings.width, minWidth: this.parent.insertImageSettings.minWidth,\n maxWidth: this.parent.getInsertImgMaxWidth()\n },\n height: {\n height: this.parent.insertImageSettings.height, minHeight: this.parent.insertImageSettings.minHeight,\n maxHeight: this.parent.insertImageSettings.maxHeight\n }\n };\n this.parent.formatter.process(this.parent, this.selectObj.args, this.selectObj.args.originalEvent, value);\n this.dialogObj.hide({ returnValue: false });\n }\n };\n FileManager$$1.prototype.cancelDialog = function () {\n this.parent.isBlur = false;\n this.dialogObj.hide({ returnValue: true });\n };\n FileManager$$1.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var prevEle = target.nodeName !== '#document' && !isNullOrUndefined(target.previousElementSibling) && target.previousElementSibling;\n if (!isNullOrUndefined(this.dialogObj) &&\n (!closest(target, '#' + this.parent.getID() + '_file-manager-dialog') &&\n !closest(target, '#' + this.parent.getID() + '_rte-file-manager_tb_sortby-popup') &&\n !closest(target, '#' + this.parent.getID() + '_rte-file-manager_tb_view-popup') &&\n !closest(target, '#' + this.parent.getID() + '_rte-file-manager_contextmenu') &&\n (!(!isNullOrUndefined(closest(target, '.e-contextmenu-wrapper')) &&\n closest(target, '.e-contextmenu-wrapper').querySelector('#' + this.parent.getID() + '_rte-file-manager_contextmenu'))) &&\n (!isNullOrUndefined(prevEle) && !prevEle.classList.contains('e-rte-file-manager-dialog')) &&\n (!isNullOrUndefined(prevEle) && prevEle.id !== this.parent.getID() + '_rte-file-manager_contextmenu'))) {\n this.dialogObj.hide({ returnValue: true });\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n else {\n this.parent.isRTE = true;\n }\n };\n FileManager$$1.prototype.addEventListener = function () {\n this.parent.on(initialEnd, this.initialize, this);\n this.parent.on(renderFileManager, this.render, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n this.parent.on(destroy, this.destroy, this);\n };\n FileManager$$1.prototype.removeEventListener = function () {\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n this.parent.off(initialEnd, this.initialize);\n this.parent.off(renderFileManager, this.render);\n this.parent.off(bindCssClass, this.setCssClass);\n this.parent.off(destroy, this.destroy);\n };\n FileManager$$1.prototype.destroyComponents = function () {\n if (this.fileObj) {\n this.fileObj.destroy();\n this.fileObj = null;\n }\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n FileManager$$1.prototype.destroy = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.destroyComponents();\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} - returns the string value\n * @hidden\n */\n FileManager$$1.prototype.getModuleName = function () {\n return 'fileManager';\n };\n return FileManager$$1;\n}());\n\n/**\n * `FullScreen` module is used to maximize and minimize screen\n */\nvar FullScreen = /** @__PURE__ @class */ (function () {\n function FullScreen(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * showFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n * @deprecated\n */\n FullScreen.prototype.showFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNullOrUndefined(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n this.scrollableParent = getScrollableParent(this.parent.element);\n if (!this.parent.element.classList.contains(CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Maximize',\n targetItem: 'Maximize',\n args: event\n };\n this.parent.trigger(actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n if (_this.parent.toolbarSettings.enableFloating &&\n !_this.parent.inlineMode.enable && _this.parent.toolbarSettings.enable) {\n _this.parent.getToolbarElement().style.width = '100%';\n _this.parent.getToolbarElement().style.top = '0px';\n }\n _this.parent.element.classList.add(CLS_FULL_SCREEN);\n _this.toggleParentOverflow(true);\n var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight(null, isExpand);\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n if (Browser.isDevice) {\n _this.parent.toolbarModule.removeFixedTBarClass();\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Maximize',\n updateItem: 'Minimize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n }\n _this.parent.refreshUI();\n _this.parent.trigger(actionComplete, { requestType: 'Maximize', targetItem: 'Maximize', args: event });\n }\n });\n }\n };\n /**\n * hideFullScreen method\n *\n * @param {MouseEvent} event - specifies the mouse event\n * @returns {void}\n * @hidden\n * @deprecated\n */\n FullScreen.prototype.hideFullScreen = function (event) {\n var _this = this;\n if (this.parent.toolbarSettings.enable === true && this.parent.editorMode !== 'Markdown'\n && !isNullOrUndefined(this.parent.quickToolbarModule)) {\n this.parent.quickToolbarModule.hideQuickToolbars();\n }\n if (this.parent.element.classList.contains(CLS_FULL_SCREEN)) {\n var evenArgs = {\n cancel: false,\n requestType: 'Minimize',\n targetItem: 'Minimize',\n args: event\n };\n this.parent.trigger(actionBegin, evenArgs, function (beginEventArgs) {\n if (!beginEventArgs.cancel) {\n _this.parent.element.classList.remove(CLS_FULL_SCREEN);\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n var isExpand = _this.parent.element.querySelectorAll('.e-toolbar-extended.e-popup-open').length > 0 ? true : false;\n _this.parent.setContentHeight(null, isExpand);\n if (_this.parent.toolbarModule) {\n if (!_this.parent.getBaseToolbarObject().toolbarObj.items[0].properties) {\n _this.parent.getBaseToolbarObject().toolbarObj.removeItems(0);\n }\n _this.parent.toolbarModule.updateItem({\n targetItem: 'Minimize',\n updateItem: 'Maximize',\n baseToolbar: _this.parent.getBaseToolbarObject()\n });\n if (Browser.isDevice && _this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.addFixedTBarClass();\n }\n }\n _this.parent.refreshUI();\n _this.parent.trigger(actionComplete, { requestType: 'Minimize', targetItem: 'Minimize', args: event });\n }\n });\n }\n };\n // eslint-disable-next-line\n FullScreen.prototype.toggleParentOverflow = function (isAdd) {\n if (isNullOrUndefined(this.scrollableParent)) {\n return;\n }\n for (var i = 0; i < this.scrollableParent.length; i++) {\n if (this.scrollableParent[i].nodeName === '#document') {\n var elem = document.querySelector('body');\n addClass([elem], ['e-rte-overflow']);\n }\n else {\n var elem = this.scrollableParent[i];\n addClass([elem], ['e-rte-overflow']);\n }\n }\n };\n FullScreen.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'full-screen':\n this.showFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n case 'escape':\n this.hideFullScreen(event.args);\n originalEvent.preventDefault();\n break;\n }\n };\n FullScreen.prototype.addEventListener = function () {\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n FullScreen.prototype.removeEventListener = function () {\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(destroy, this.destroy);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n /**\n * destroy method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n FullScreen.prototype.destroy = function () {\n if (this.parent.element.classList.contains(CLS_FULL_SCREEN)) {\n this.toggleParentOverflow(false);\n }\n var elem = document.querySelectorAll('.e-rte-overflow');\n for (var i = 0; i < elem.length; i++) {\n removeClass([elem[i]], ['e-rte-overflow']);\n }\n this.removeEventListener();\n };\n FullScreen.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return FullScreen;\n}());\n\n/**\n * @param {string} htmlAttributes - specifies the string value\n * @param {IRichTextEditor} rte - specifies the rte value\n * @param {boolean} isFrame - specifies the boolean value\n * @param {boolean} initial - specifies the boolean value\n * @returns {void}\n * @hidden\n */\nfunction setAttributes(htmlAttributes, rte, isFrame, initial) {\n var target;\n if (isFrame) {\n var iFrame = rte.contentModule.getDocument();\n target = iFrame.querySelector('body');\n }\n else {\n target = rte.element;\n }\n if (Object.keys(htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n target.classList.add(htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'disabled' && htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n rte.enabled = false;\n rte.setEnable();\n }\n else if (htmlAttr === 'readonly' && htmlAttributes[\"\" + htmlAttr] === 'readonly') {\n rte.readonly = true;\n rte.setReadOnly(initial);\n }\n else if (htmlAttr === 'style') {\n target.setAttribute('style', htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'tabindex') {\n rte.inputElement.setAttribute('tabindex', htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'placeholder') {\n rte.placeholder = htmlAttributes[\"\" + htmlAttr];\n rte.setPlaceHolder();\n }\n else {\n var validateAttr = ['name', 'required'];\n if (validateAttr.indexOf(htmlAttr) > -1) {\n rte.valueContainer.setAttribute(htmlAttr, htmlAttributes[\"\" + htmlAttr]);\n }\n else {\n target.setAttribute(htmlAttr, htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n}\n\n/**\n * Action export\n */\n\n/**\n * Formatter\n */\n\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n * @deprecated\n */\nvar Render = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for render module\n *\n * @param {IRichTextEditor} parent - specifies the parent\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function Render(parent, locator) {\n this.parent = parent;\n this.locator = locator;\n this.renderer = this.locator.getService('rendererFactory');\n this.addEventListener();\n }\n /**\n * To initialize Rich Text Editor header, content and footer rendering\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Render.prototype.render = function () {\n // eslint-disable-next-line\n var rteObj = this.parent;\n this.contentRenderer = this.renderer.getRenderer(RenderType.Content);\n this.contentRenderer.renderPanel();\n };\n /**\n * Refresh the entire RichTextEditor.\n *\n * @param {NotifyArgs} e - specifies the arguments.\n * @returns {void}\n */\n Render.prototype.refresh = function (e) {\n if (e === void 0) { e = { requestType: 'refresh' }; }\n this.parent.notify(e.requestType + \"-begin\", e);\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n */\n Render.prototype.destroy = function () {\n this.removeEventListener();\n };\n Render.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n Render.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(modelChanged, this.refresh, this);\n this.parent.on(keyUp, this.keyUp, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n Render.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(modelChanged, this.refresh);\n this.parent.off(keyUp, this.keyUp);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n Render.prototype.keyUp = function (e) {\n if (this.parent.editorMode === 'HTML') {\n switch (e.args.which) {\n case 46:\n case 8:\n // eslint-disable-next-line\n var childNodes = this.parent.contentModule.getEditPanel().childNodes;\n if ((childNodes.length === 0) ||\n (childNodes.length === 1 && childNodes[0].childNodes.length === 0 && ((childNodes[0].tagName === 'BR') ||\n ((childNodes[0].tagName === 'P' || childNodes[0].tagName === 'DIV') && childNodes[0].textContent === '')))) {\n var node = this.parent.contentModule.getEditPanel();\n if (this.parent.enterKey === 'DIV') {\n node.innerHTML = '

    ';\n }\n else if (this.parent.enterKey === 'BR') {\n node.innerHTML = '
    ';\n }\n else {\n node.innerHTML = '


    ';\n }\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), node.childNodes[0], 0);\n }\n break;\n }\n }\n };\n return Render;\n}());\n\n/**\n * `Link` module is used to handle undo actions.\n */\nvar Link = /** @__PURE__ @class */ (function () {\n function Link(parent, serviceLocator) {\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.addEventListener();\n this.serviceLocator = serviceLocator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n }\n Link.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(insertLink, this.linkDialog, this);\n this.parent.on(showLinkDialog, this.showDialog, this);\n this.parent.on(closeLinkDialog, this.closeDialog, this);\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(insertCompleted, this.showLinkQuickToolbar, this);\n this.parent.on(clearDialogObj, this.clearDialogObj, this);\n this.parent.on(linkToolbarAction, this.onToolbarAction, this);\n this.parent.on(iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(unLink, this.removeLink, this);\n this.parent.on(editLink, this.editLink, this);\n this.parent.on(openLink, this.openLink, this);\n this.parent.on(editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n Link.prototype.onToolbarAction = function (args) {\n var item = args.args.item;\n switch (item.subCommand) {\n case 'OpenLink':\n this.parent.notify(openLink, args);\n break;\n case 'EditLink':\n this.parent.notify(editLink, args);\n break;\n case 'RemoveLink':\n this.parent.notify(unLink, args);\n break;\n }\n };\n Link.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(insertLink, this.linkDialog);\n this.parent.off(showLinkDialog, this.showDialog);\n this.parent.off(closeLinkDialog, this.closeDialog);\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(insertCompleted, this.showLinkQuickToolbar);\n this.parent.off(clearDialogObj, this.clearDialogObj);\n this.parent.off(linkToolbarAction, this.onToolbarAction);\n this.parent.off(unLink, this.removeLink);\n this.parent.off(iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(editLink, this.editLink);\n this.parent.off(openLink, this.openLink);\n this.parent.off(editAreaClick, this.editAreaClickHandler);\n this.parent.off(bindCssClass, this.setCssClass);\n this.parent.off(destroy, this.destroy);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n Link.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.updateCss = function (currentObj, e) {\n if (currentObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n currentObj.setProperties({ cssClass: (currentObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n currentObj.setProperties({ cssClass: (currentObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Link.prototype.setCssClass = function (e) {\n this.updateCss(this.checkBoxObj, e);\n this.updateCss(this.dialogObj, e);\n };\n Link.prototype.showLinkQuickToolbar = function (e) {\n if (!isNullOrUndefined(e.args) && e.args.action !== 'enter' &&\n e.args.action !== 'space') {\n var pageX = void 0;\n var pageY = void 0;\n if (e.type !== 'Links' || isNullOrUndefined(this.parent.quickToolbarModule) ||\n isNullOrUndefined(this.parent.quickToolbarModule.linkQTBar)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var parentTop = this.parent.element.getBoundingClientRect().top;\n var parentLeft = this.parent.element.getBoundingClientRect().left;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var target_1;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target_1 = ((element.nodeName === '#text') ? (element.parentNode) : element);\n }\n });\n if (e.isNotify) {\n var tbElement = this.parent.toolbarModule.getToolbarElement();\n var linkTop = target_1.getBoundingClientRect().top;\n var linkLeft = target_1.getBoundingClientRect().left;\n var linkPos = linkTop - parentTop;\n var tbHeight = (tbElement) ? (tbElement.offsetHeight + this.parent.toolbarModule.getExpandTBarPopHeight()) : 0;\n pageX = (this.parent.iframeSettings.enable) ? parentLeft + linkLeft : target_1.getBoundingClientRect().left;\n pageY = window.pageYOffset + ((this.parent.iframeSettings.enable) ?\n (parentTop + tbHeight + linkTop) : (parentTop + linkPos));\n }\n else {\n var args = void 0;\n args = e.args.touches ? e.args.changedTouches[0] : args = e.args;\n pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset + parentLeft + args.clientX : args.pageX;\n pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset + parentTop + args.clientY : args.pageY;\n }\n if (this.quickToolObj.linkQTBar) {\n this.quickToolObj.linkQTBar.showPopup(pageX, pageY, range.endContainer);\n }\n }\n };\n Link.prototype.hideLinkQuickToolbar = function () {\n if (this.quickToolObj && this.quickToolObj.linkQTBar && document.body.contains(this.quickToolObj.linkQTBar.element)) {\n this.quickToolObj.linkQTBar.hidePopup();\n }\n };\n Link.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideLinkQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.linkQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n target = this.getAnchorNode(target);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.linkQTBar.element.classList.contains('e-rte-pop');\n if (target.nodeName === 'A' && (target.childNodes.length > 0 && target.childNodes[0].nodeName !== 'IMG') &&\n e.args.target.nodeName !== 'IMG' &&\n !isNullOrUndefined(closest(this.parent.getRange().startContainer.parentElement, 'A')) && !isNullOrUndefined(closest(this.parent.getRange().endContainer.parentElement, 'A'))) {\n if (isPopupOpen) {\n return;\n }\n this.showLinkQuickToolbar({\n args: args,\n isNotify: false,\n type: 'Links',\n elements: [args.target]\n });\n }\n else {\n this.hideLinkQuickToolbar();\n }\n }\n };\n Link.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'insert-link':\n this.openDialog(true, event);\n originalEvent.preventDefault();\n break;\n }\n };\n Link.prototype.openDialog = function (isInternal, event) {\n if (!isInternal) {\n this.parent.contentModule.getEditPanel().focus();\n }\n if (this.parent.editorMode === 'HTML') {\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n var selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n var eventArgs = {\n args: event ? event.args : {\n item: { command: 'Links', subCommand: 'CreateLink' },\n originalEvent: undefined\n },\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle\n };\n this.linkDialog(eventArgs);\n }\n else {\n var textArea = this.parent.contentModule.getEditPanel();\n this.parent.formatter.editorManager.markdownSelection.save(textArea.selectionStart, textArea.selectionEnd);\n this.linkDialog({\n args: {\n item: { command: 'Links', subCommand: 'Link' },\n originalEvent: event && event.args\n },\n member: 'link',\n text: this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()),\n module: 'Markdown',\n name: 'insertLink'\n });\n }\n };\n Link.prototype.showDialog = function () {\n this.openDialog(false);\n this.setCssClass({ cssClass: this.parent.cssClass });\n };\n Link.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Link.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n Link.prototype.linkDialog = function (e, inputDetails) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n if (this.parent.editorMode === 'HTML' && (e.selectParent.length > 0 &&\n !isNullOrUndefined(e.selectParent[0].classList) &&\n e.selectParent[0].classList.contains('e-rte-anchor')) && isNullOrUndefined(inputDetails)) {\n this.editLink(e);\n return;\n }\n var linkWebAddress = this.i10n.getConstant('linkWebUrl');\n var linkDisplayText = this.i10n.getConstant('linkText');\n var linkTooltip = this.i10n.getConstant('linkTooltipLabel');\n var urlPlace = this.i10n.getConstant('linkurl');\n var textPlace = this.i10n.getConstant('textPlaceholder');\n var title = this.i10n.getConstant('linkTitle');\n var linkDialogEle = this.parent.createElement('div', {\n className: 'e-rte-link-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_rtelink'\n });\n this.parent.element.appendChild(linkDialogEle);\n var linkContent = this.parent.createElement('div', {\n className: 'e-rte-linkcontent' + ' ' + this.parent.cssClass, id: this.rteID + '_linkContent'\n });\n var htmlTextbox = (this.parent.editorMode === 'HTML') ? '
    ' +\n '
    ' +\n '
    ' + '
    ' +\n '
    ' : '';\n var content = '
    ' + '
    ' +\n '
    ' +\n '
    ' + '
    ' +\n '' +\n '
    ' + htmlTextbox;\n var contentElem = parseHtml(content);\n linkContent.appendChild(contentElem);\n var linkTarget = linkContent.querySelector('.e-rte-linkTarget');\n var linkUrl = linkContent.querySelector('.e-rte-linkurl');\n var linkText = linkContent.querySelector('.e-rte-linkText');\n var linkTitle = linkContent.querySelector('.e-rte-linkTitle');\n var linkOpenLabel = this.i10n.getConstant('linkOpenInNewWindow');\n this.checkBoxObj = new CheckBox({ label: linkOpenLabel, checked: true, enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass });\n this.checkBoxObj.isStringTemplate = true;\n this.checkBoxObj.createElement = this.parent.createElement;\n this.checkBoxObj.appendTo(linkTarget);\n var selectText = (this.parent.editorMode === 'HTML') ?\n e.selection.getRange(this.parent.contentModule.getDocument()).toString() : e.text;\n var linkInsert = this.i10n.getConstant('dialogInsert');\n var linkCancel = this.i10n.getConstant('dialogCancel');\n var selection = e.selection;\n var selectObj = { selfLink: this, selection: e.selection, selectParent: e.selectParent, args: e.args };\n var dialogModel = {\n header: this.i10n.getConstant('linkHeader'),\n content: linkContent,\n cssClass: CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '310px',\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertlink.bind(selectObj),\n buttonModel: { content: linkInsert, cssClass: 'e-flat e-insertLink' + ' ' + this.parent.cssClass, isPrimary: true }\n },\n { click: this.cancelDialog.bind(selectObj), buttonModel: { cssClass: 'e-flat' + ' ' + this.parent.cssClass, content: linkCancel } }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n else {\n _this.parent.formatter.editorManager.markdownSelection.restore(_this.parent.contentModule.getEditPanel());\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n var args = _this.dialogObj;\n _this.dialogRenderObj.close(args);\n _this.dialogObj = null;\n }\n };\n // eslint-disable-next-line\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(linkDialogEle);\n linkDialogEle.style.maxHeight = 'inherit';\n if (isNullOrUndefined(this.dialogObj)) {\n return;\n }\n if (!isNullOrUndefined(inputDetails)) {\n linkUrl.value = inputDetails.url;\n linkText.value = inputDetails.text;\n linkTitle.value = inputDetails.title;\n // eslint-disable-next-line\n (inputDetails.target) ? this.checkBoxObj.checked = true : this.checkBoxObj.checked = false;\n this.dialogObj.header = inputDetails.header;\n this.dialogObj.element.querySelector('.e-insertLink').textContent = inputDetails.btnText;\n }\n this.checkUrl(false);\n if ((this.parent.editorMode === 'HTML' && isNullOrUndefined(inputDetails) && ((!isNullOrUndefined(selectText)\n && selectText !== '') && (e.selection.range.startOffset === 0) || e.selection.range.startOffset !==\n e.selection.range.endOffset)) || e.module === 'Markdown') {\n linkText.value = selectText;\n }\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n if (this.quickToolObj) {\n this.hideLinkQuickToolbar();\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Link.prototype.insertlink = function (e) {\n var linkEle = this.selfLink.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl').value;\n var linkText = linkEle.querySelector('.e-rte-linkText').value;\n var linkTitle;\n if (this.selfLink.parent.editorMode === 'HTML') {\n linkTitle = linkEle.querySelector('.e-rte-linkTitle').value;\n }\n var target = (this.selfLink.checkBoxObj.checked) ? '_blank' : null;\n if (linkUrl === '') {\n this.selfLink.checkUrl(true);\n return;\n }\n if (!this.selfLink.isUrl(linkUrl)) {\n linkText = (linkText === '') ? linkUrl : linkText;\n if (!this.selfLink.parent.enableAutoUrl) {\n linkUrl = linkUrl.indexOf('http') > -1 ? linkUrl : 'http://' + linkUrl;\n }\n else {\n // eslint-disable-next-line\n linkUrl = linkUrl;\n }\n }\n else {\n this.selfLink.checkUrl(false);\n }\n var proxy = this.selfLink;\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(this.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + proxy.parent.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.parent.contentModule.getEditPanel().focus();\n if (Browser.isIE && proxy.parent.iframeSettings.enable) {\n this.selection.restore();\n }\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.parent.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.parent.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var value = {\n url: linkUrl, text: linkText, title: linkTitle, target: target,\n selection: this.selection, selectParent: this.selectParent\n };\n if (document.body.contains(proxy.dialogObj.element)) {\n this.selfLink.dialogObj.hide({ returnValue: false });\n }\n if (isIDevice$1() && proxy.parent.iframeSettings.enable) {\n select('iframe', proxy.parent.element).contentWindow.focus();\n }\n if (proxy.parent.editorMode === 'HTML') {\n this.selection.restore();\n }\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var argsValue;\n if (!isNullOrUndefined(this.args) &&\n this.args.code === 'KeyK') {\n var originalEvent = this.args;\n extend(this.args, { item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent }, true);\n var argsVal = {\n item: { command: 'Links', subCommand: 'CreateLink' }, originalEvent: originalEvent\n };\n argsValue = argsVal;\n }\n else {\n argsValue = this.args;\n }\n this.selfLink.parent.formatter.process(this.selfLink.parent, argsValue, (!isNullOrUndefined(this.args) &&\n this.args.originalEvent), value);\n this.selfLink.parent.contentModule.getEditPanel().focus();\n };\n Link.prototype.isUrl = function (url) {\n // eslint-disable-next-line\n var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/gi;\n return regexp.test(url);\n };\n Link.prototype.checkUrl = function (e) {\n var linkEle = this.dialogObj.element;\n var linkUrl = linkEle.querySelector('.e-rte-linkurl');\n if (e) {\n addClass([linkUrl], 'e-error');\n linkUrl.setSelectionRange(0, linkUrl.value.length);\n linkUrl.focus();\n }\n else {\n removeClass([linkUrl], 'e-error');\n }\n };\n Link.prototype.removeLink = function (e) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode, selectParent: e.selectParent, selection: e.selection,\n text: selectParentEle.innerText,\n subCommand: e.args.item.subCommand\n });\n if (isIDevice$1() && this.parent.iframeSettings.enable) {\n select('iframe', this.parent.element).contentWindow.focus();\n }\n else {\n this.parent.contentModule.getEditPanel().focus();\n }\n this.hideLinkQuickToolbar();\n };\n Link.prototype.openLink = function (e) {\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n this.parent.formatter.process(this.parent, e.args, e.args, {\n url: selectParentEle.href, text: selectParentEle.innerText,\n target: selectParentEle.target === '' ? '_self' : '_blank', selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n }\n };\n Link.prototype.getAnchorNode = function (element) {\n var selectParent = closest(element, 'a');\n return (selectParent ? selectParent : element);\n };\n Link.prototype.editLink = function (e) {\n var selectedNode = this.getAnchorNode(e.selectNode[0]);\n var selectParentEle = this.getAnchorNode(e.selectParent[0]);\n selectParentEle = selectedNode.nodeName === 'A' ? selectedNode : selectParentEle;\n if (selectParentEle.classList.contains('e-rte-anchor') || selectParentEle.tagName === 'A') {\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var inputDetails = {\n url: selectParentEle.getAttribute('href'), text: selectParentEle.innerText,\n title: selectParentEle.title, target: selectParentEle.target,\n header: this.i10n.getConstant('editLink'), btnText: linkUpdate\n };\n this.linkDialog(e, inputDetails);\n }\n };\n // eslint-disable-next-line\n Link.prototype.cancelDialog = function (e) {\n this.selfLink.parent.isBlur = false;\n this.selfLink.dialogObj.hide({ returnValue: true });\n if (isIDevice$1()) {\n this.selection.restore();\n }\n else {\n this.selfLink.parent.contentModule.getEditPanel().focus();\n }\n };\n Link.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable &&\n this.parent.getToolbarElement() && !this.parent.getToolbarElement().contains(e.target)) ||\n (((this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target)) ||\n this.parent.inlineMode.enable && !closest(target, '#' + this.dialogObj.element.id)) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_CreateLink') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_CreateLink')))) {\n this.dialogObj.hide({ returnValue: true });\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Link.prototype.destroy = function () {\n this.removeEventListener();\n };\n Link.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Link.prototype.getModuleName = function () {\n return 'link';\n };\n return Link;\n}());\n\n/**\n * `Image` module is used to handle image actions.\n */\nvar Image = /** @__PURE__ @class */ (function () {\n function Image(parent, serviceLocator) {\n this.isImgUploaded = false;\n this.isAllowedTypes = true;\n this.pageX = null;\n this.pageY = null;\n this.mouseX = null;\n this.deletedImg = [];\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n this.addEventListener();\n }\n Image.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(keyUp, this.onKeyUp, this);\n this.parent.on(insertImage, this.insertImage, this);\n this.parent.on(showImageDialog, this.showDialog, this);\n this.parent.on(closeImageDialog, this.closeDialog, this);\n this.parent.on(windowResize, this.onWindowResize, this);\n this.parent.on(insertCompleted, this.showImageQuickToolbar, this);\n this.parent.on(clearDialogObj, this.clearDialogObj, this);\n this.parent.on(imageToolbarAction, this.onToolbarAction, this);\n this.parent.on(imageCaption, this.caption, this);\n this.parent.on(imageDelete, this.deleteImg, this);\n this.parent.on(imageLink, this.insertImgLink, this);\n this.parent.on(imageAlt, this.insertAltText, this);\n this.parent.on(editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(imageSize, this.imageSize, this);\n this.parent.on(dropDownSelect, this.alignmentSelect, this);\n this.parent.on(initialEnd, this.afterRender, this);\n this.parent.on(dynamicModule, this.afterRender, this);\n this.parent.on(paste, this.imagePaste, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n this.parent.on(destroy, this.removeEventListener, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n Image.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(keyUp, this.onKeyUp);\n this.parent.off(windowResize, this.onWindowResize);\n this.parent.off(insertImage, this.insertImage);\n this.parent.off(showImageDialog, this.showDialog);\n this.parent.off(closeImageDialog, this.closeDialog);\n this.parent.off(insertCompleted, this.showImageQuickToolbar);\n this.parent.off(clearDialogObj, this.clearDialogObj);\n this.parent.off(imageCaption, this.caption);\n this.parent.off(imageToolbarAction, this.onToolbarAction);\n this.parent.off(imageDelete, this.deleteImg);\n this.parent.off(imageLink, this.insertImgLink);\n this.parent.off(imageAlt, this.insertAltText);\n this.parent.off(editAreaClick, this.editAreaClickHandler);\n this.parent.off(iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(imageSize, this.imageSize);\n this.parent.off(dropDownSelect, this.alignmentSelect);\n this.parent.off(initialEnd, this.afterRender);\n this.parent.off(dynamicModule, this.afterRender);\n this.parent.off(paste, this.imagePaste);\n this.parent.off(bindCssClass, this.setCssClass);\n this.parent.off(destroy, this.removeEventListener);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n var dropElement = this.parent.iframeSettings.enable ? this.parent.inputElement.ownerDocument\n : this.parent.inputElement;\n dropElement.removeEventListener('drop', this.dragDrop.bind(this), true);\n dropElement.removeEventListener('dragstart', this.dragStart.bind(this), true);\n dropElement.removeEventListener('dragenter', this.dragEnter.bind(this), true);\n dropElement.removeEventListener('dragover', this.dragOver.bind(this), true);\n if (!isNullOrUndefined(this.contentModule)) {\n EventHandler.remove(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.imageClick);\n this.parent.formatter.editorManager.observer.off(checkUndo, this.undoStack);\n if (this.parent.insertImageSettings.resize) {\n EventHandler.remove(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart);\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.contentModule.getEditPanel(), 'cut', this.onCutHandler);\n }\n }\n };\n Image.prototype.updateCss = function (currentObj, e) {\n if (currentObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n currentObj.setProperties({ cssClass: (currentObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n currentObj.setProperties({ cssClass: (currentObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Image.prototype.setCssClass = function (e) {\n if (this.popupObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n addClass([this.popupObj.element], e.cssClass);\n }\n else {\n removeClass([this.popupObj.element], e.oldCssClass);\n addClass([this.popupObj.element], e.cssClass);\n }\n }\n this.updateCss(this.checkBoxObj, e);\n this.updateCss(this.widthNum, e);\n this.updateCss(this.heightNum, e);\n this.updateCss(this.uploadObj, e);\n this.updateCss(this.dialogObj, e);\n };\n Image.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Image.prototype.afterRender = function () {\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n EventHandler.add(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.imageClick, this);\n if (this.parent.insertImageSettings.resize) {\n EventHandler.add(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart, this);\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.contentModule.getEditPanel(), 'cut', this.onCutHandler, this);\n }\n var dropElement = this.parent.iframeSettings.enable ? this.parent.inputElement.ownerDocument :\n this.parent.inputElement;\n dropElement.addEventListener('drop', this.dragDrop.bind(this), true);\n dropElement.addEventListener('dragstart', this.dragStart.bind(this), true);\n dropElement.addEventListener('dragenter', this.dragOver.bind(this), true);\n dropElement.addEventListener('dragover', this.dragOver.bind(this), true);\n };\n Image.prototype.undoStack = function (args) {\n if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {\n for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {\n var temp = this.parent.createElement('div');\n var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);\n temp.appendChild(contentElem);\n var img = temp.querySelectorAll('img');\n if (temp.querySelector('.e-img-resize') && img.length > 0) {\n for (var j = 0; j < img.length; j++) {\n img[j].style.outline = '';\n }\n detach(temp.querySelector('.e-img-resize'));\n this.parent.formatter.getUndoRedoStack()[i].text = temp.innerHTML;\n }\n }\n }\n };\n Image.prototype.resizeEnd = function (e) {\n this.resizeBtnInit();\n this.imgEle.parentElement.style.cursor = 'auto';\n if (Browser.isDevice) {\n removeClass([e.target.parentElement], 'e-mob-span');\n }\n var args = { event: e, requestType: 'images' };\n this.parent.trigger(resizeStop, args);\n /* eslint-disable */\n var pageX = this.getPointX(e);\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + e.clientY : e.pageY;\n /* eslint-enable */\n this.parent.formatter.editorManager.observer.on(checkUndo, this.undoStack, this);\n this.parent.formatter.saveData();\n };\n Image.prototype.resizeStart = function (e, ele) {\n var _this = this;\n if (this.parent.readonly) {\n return;\n }\n var target = ele ? ele : e.target;\n this.prevSelectedImgEle = this.imgEle;\n if (target.tagName === 'IMG') {\n this.parent.preventDefaultResize(e);\n var img = target;\n if (this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n detach(this.imgResizeDiv);\n }\n this.imageResize(img);\n }\n if (target.classList.contains('e-rte-imageboxmark')) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.pageX = this.getPointX(e);\n this.pageY = this.getPointY(e);\n e.preventDefault();\n e.stopImmediatePropagation();\n this.resizeBtnInit();\n if (this.quickToolObj) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n if (target.classList.contains('e-rte-topLeft')) {\n this.resizeBtnStat.topLeft = true;\n }\n if (target.classList.contains('e-rte-topRight')) {\n this.resizeBtnStat.topRight = true;\n }\n if (target.classList.contains('e-rte-botLeft')) {\n this.resizeBtnStat.botLeft = true;\n }\n if (target.classList.contains('e-rte-botRight')) {\n this.resizeBtnStat.botRight = true;\n }\n if (Browser.isDevice && this.contentModule.getEditPanel().contains(this.imgResizeDiv) &&\n !this.imgResizeDiv.classList.contains('e-mob-span')) {\n addClass([this.imgResizeDiv], 'e-mob-span');\n }\n else {\n var args = { event: e, requestType: 'images' };\n this.parent.trigger(resizeStart, args, function (resizeStartArgs) {\n if (resizeStartArgs.cancel) {\n _this.cancelResizeAction();\n }\n });\n }\n EventHandler.add(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd, this);\n }\n };\n Image.prototype.imageClick = function (e) {\n if (Browser.isDevice) {\n if ((e.target.tagName === 'IMG' &&\n e.target.parentElement.tagName === 'A') ||\n (e.target.tagName === 'IMG')) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'false');\n e.target.focus();\n }\n else {\n if (!this.parent.readonly) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'true');\n }\n }\n }\n if (e.target.tagName === 'IMG' &&\n e.target.parentElement.tagName === 'A') {\n e.preventDefault();\n }\n };\n Image.prototype.onCutHandler = function () {\n if (this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n this.cancelResizeAction();\n }\n };\n Image.prototype.imageResize = function (e) {\n this.resizeBtnInit();\n this.imgEle = e;\n addClass([this.imgEle], 'e-resize');\n this.imgResizeDiv = this.parent.createElement('span', { className: 'e-img-resize' + ' ' + this.parent.cssClass, id: this.rteID + '_imgResize' });\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-topLeft' + ' ' + this.parent.cssClass, styles: 'cursor: nwse-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-topRight' + ' ' + this.parent.cssClass, styles: 'cursor: nesw-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-botLeft' + ' ' + this.parent.cssClass, styles: 'cursor: nesw-resize'\n }));\n this.imgResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-imageboxmark e-rte-botRight' + ' ' + this.parent.cssClass, styles: 'cursor: nwse-resize'\n }));\n if (Browser.isDevice) {\n addClass([this.imgResizeDiv], 'e-mob-rte');\n }\n e.style.outline = '2px solid #4a90e2';\n this.imgResizePos(e, this.imgResizeDiv);\n this.resizeImgDupPos(e);\n this.contentModule.getEditPanel().appendChild(this.imgResizeDiv);\n EventHandler.add(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing, this);\n };\n Image.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Image.prototype.getPointY = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageY;\n }\n else {\n return e.pageY;\n }\n };\n Image.prototype.imgResizePos = function (e, imgResizeDiv) {\n var pos = this.calcPos(e);\n var top = pos.top;\n var left = pos.left;\n var imgWid = e.getBoundingClientRect().width;\n var imgHgt = e.getBoundingClientRect().height;\n var borWid = (Browser.isDevice) ? (4 * parseInt((e.style.outline.slice(-3)), 10)) + 2 :\n (2 * parseInt((e.style.outline.slice(-3)), 10)) + 2; //span border width + image outline width\n var devWid = ((Browser.isDevice) ? 0 : 2); // span border width\n imgResizeDiv.querySelector('.e-rte-botLeft').style.left = (left - borWid) + 'px';\n imgResizeDiv.querySelector('.e-rte-botLeft').style.top = ((imgHgt - borWid) + top) + 'px';\n imgResizeDiv.querySelector('.e-rte-botRight').style.left = ((imgWid - (borWid - devWid)) + left) + 'px';\n imgResizeDiv.querySelector('.e-rte-botRight').style.top = ((imgHgt - borWid) + top) + 'px';\n imgResizeDiv.querySelector('.e-rte-topRight').style.left = ((imgWid - (borWid - devWid)) + left) + 'px';\n imgResizeDiv.querySelector('.e-rte-topRight').style.top = (top - (borWid)) + 'px';\n imgResizeDiv.querySelector('.e-rte-topLeft').style.left = (left - borWid) + 'px';\n imgResizeDiv.querySelector('.e-rte-topLeft').style.top = (top - borWid) + 'px';\n };\n Image.prototype.calcPos = function (elem) {\n var ignoreOffset = ['TD', 'TH', 'TABLE', 'A'];\n var parentOffset = { top: 0, left: 0 };\n var elementOffset;\n var doc = elem.ownerDocument;\n var offsetParent = ((elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption') ||\n ignoreOffset.indexOf(elem.offsetParent.tagName) > -1)) ?\n closest(elem, '#' + this.parent.getID() + '_rte-edit-view') : elem.offsetParent) || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n if (elem.offsetParent && (elem.offsetParent.classList.contains('e-img-caption'))) {\n elementOffset = elem.getBoundingClientRect();\n return {\n top: elementOffset.top - parentOffset.top,\n left: elementOffset.left - parentOffset.left\n };\n }\n else {\n return {\n top: elem.offsetTop,\n left: elem.offsetLeft\n };\n }\n };\n Image.prototype.setAspectRatio = function (img, expectedX, expectedY, e) {\n if (isNullOrUndefined(img.width)) {\n return;\n }\n // eslint-disable-next-line security/detect-unsafe-regex\n var width = img.style.width !== '' ? img.style.width.match(/^\\d+(\\.\\d*)?%$/g) ? parseFloat(img.style.width) :\n parseInt(img.style.width, 10) : img.width;\n var height = img.style.height !== '' ? parseInt(img.style.height, 10) : img.height;\n if (width > height) {\n img.style.minWidth = this.parent.insertImageSettings.minWidth === 0 ? '20px' : formatUnit(this.parent.insertImageSettings.minWidth);\n if (this.parent.insertImageSettings.resizeByPercent) {\n if (parseInt('' + img.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {\n var original = img.offsetWidth + this.mouseX;\n var finalWidthByPerc = (original / img.offsetWidth) * (parseFloat(img.style.width).toString() === 'NaN' ? (img.offsetWidth / (parseFloat(getComputedStyle(this.parent.element).width)) * 100) : parseFloat(img.style.width));\n img.style.width = ((finalWidthByPerc > 3) ? finalWidthByPerc : 3) + '%';\n }\n else {\n img.style.width = this.pixToPerc((width / height * expectedY), (img.previousElementSibling || img.parentElement)) + '%';\n }\n img.style.height = null;\n img.removeAttribute('height');\n }\n else if (img.style.width === '' && img.style.height !== '') {\n img.style.height = expectedY + 'px';\n }\n else if (img.style.width !== '' && img.style.height === '') {\n var currentWidth = ((width / height * expectedY) + width / height) <\n (this.parent.inputElement.getBoundingClientRect().right - 32) ?\n ((width / height * expectedY) + width / height) : (this.parent.inputElement.getBoundingClientRect().right - 32);\n img.style.width = currentWidth.toString() + 'px';\n }\n else if (img.style.width !== '') {\n var currentWidth = (width / height * expectedY) < (this.parent.inputElement.getBoundingClientRect().right - 32) ?\n (width / height * expectedY) : (this.parent.inputElement.getBoundingClientRect().right - 32);\n img.style.width = currentWidth + 'px';\n img.style.height = expectedY + 'px';\n }\n else {\n if (this.parent.iframeSettings.enable) {\n img.setAttribute('width', (img.width + this.mouseX).toString());\n }\n else {\n img.setAttribute('width', (img.offsetWidth + this.mouseX).toString());\n }\n }\n }\n else if (height > width) {\n if (this.parent.insertImageSettings.resizeByPercent) {\n if (parseInt('' + img.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {\n var original = img.offsetWidth + this.mouseX;\n var finalWidthByPerc = (original / img.offsetWidth) * (parseFloat(img.style.width).toString() === 'NaN' ?\n (img.offsetWidth / (parseFloat(getComputedStyle(this.parent.element).width)) * 100) :\n parseFloat(img.style.width));\n img.style.width = ((finalWidthByPerc > 3) ? finalWidthByPerc : 3) + '%';\n }\n else {\n img.style.width = this.pixToPerc((expectedX / height * expectedY), (img.previousElementSibling || img.parentElement)) + '%';\n }\n img.style.height = null;\n img.removeAttribute('height');\n }\n else if (img.style.width !== '') {\n img.style.width = expectedX + 'px';\n img.style.height = (height / width * expectedX) + 'px';\n }\n else {\n img.setAttribute('width', this.resizeBtnStat.botRight ? (this.getPointX(e.event) - img.getBoundingClientRect().left).toString() : expectedX.toString());\n }\n }\n else {\n if (this.parent.insertImageSettings.resizeByPercent) {\n img.style.width = this.pixToPerc(expectedX, (img.previousElementSibling || img.parentElement)) + '%';\n img.style.height = null;\n img.removeAttribute('height');\n }\n else {\n img.style.width = expectedX + 'px';\n img.style.height = expectedX + 'px';\n }\n }\n };\n Image.prototype.pixToPerc = function (expected, parentEle) {\n return expected / parseFloat(getComputedStyle(parentEle).width) * 100;\n };\n Image.prototype.imgDupMouseMove = function (width, height, e) {\n var _this = this;\n var args = { event: e, requestType: 'images' };\n this.parent.trigger(onResize, args, function (resizingArgs) {\n if (resizingArgs.cancel) {\n _this.cancelResizeAction();\n }\n else {\n if ((parseInt(_this.parent.insertImageSettings.minWidth, 10) >= parseInt(width, 10) ||\n (parseInt(_this.parent.getInsertImgMaxWidth(), 10) <= parseInt(width, 10) &&\n isNullOrUndefined(_this.imgEle.style.width)))) {\n return;\n }\n if (!_this.parent.insertImageSettings.resizeByPercent &&\n (parseInt(_this.parent.insertImageSettings.minHeight, 10) >= parseInt(height, 10) ||\n parseInt(_this.parent.insertImageSettings.maxHeight, 10) <= parseInt(height, 10))) {\n return;\n }\n _this.imgEle.parentElement.style.cursor = 'pointer';\n _this.setAspectRatio(_this.imgEle, parseInt(width, 10), parseInt(height, 10), args);\n _this.resizeImgDupPos(_this.imgEle);\n _this.imgResizePos(_this.imgEle, _this.imgResizeDiv);\n _this.parent.setContentHeight('', false);\n }\n });\n };\n Image.prototype.resizing = function (e) {\n if (!this.parent) {\n this.cancelResizeAction();\n return;\n }\n if (this.imgEle.offsetWidth >= this.parent.getInsertImgMaxWidth()) {\n this.imgEle.style.maxHeight = this.imgEle.offsetHeight + 'px';\n }\n else if (isNullOrUndefined(this.parent.insertImageSettings.maxHeight)) {\n this.imgEle.style.maxHeight = '';\n }\n this.imgEle.style.maxWidth = this.parent.getInsertImgMaxWidth() + 'px';\n var pageX = this.getPointX(e);\n var pageY = this.getPointY(e);\n var mouseX = (this.resizeBtnStat.botLeft || this.resizeBtnStat.topLeft) ? -(pageX - this.pageX) : (pageX - this.pageX);\n var mouseY = (this.resizeBtnStat.topLeft || this.resizeBtnStat.topRight) ? -(pageY - this.pageY) : (pageY - this.pageY);\n var width = parseInt(this.imgDupPos.width, 10) + mouseX;\n var height = parseInt(this.imgDupPos.height, 10) + mouseY;\n this.mouseX = mouseX;\n this.pageX = pageX;\n this.pageY = pageY;\n if (this.resizeBtnStat.botRight) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.botLeft) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topRight) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topLeft) {\n this.imgDupMouseMove(width + 'px', height + 'px', e);\n }\n };\n Image.prototype.cancelResizeAction = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n if (this.imgEle && this.imgResizeDiv && this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n detach(this.imgResizeDiv);\n this.imgEle.style.outline = '';\n this.imgResizeDiv = null;\n this.pageX = null;\n this.pageY = null;\n }\n };\n Image.prototype.resizeImgDupPos = function (e) {\n this.imgDupPos = {\n width: (e.style.width !== '' && (this.parent.insertImageSettings &&\n !this.parent.insertImageSettings.resizeByPercent)) ? this.imgEle.style.width : e.width + 'px',\n height: (e.style.height !== '') ? this.imgEle.style.height : e.height + 'px'\n };\n };\n Image.prototype.resizeBtnInit = function () {\n return this.resizeBtnStat = { botLeft: false, botRight: false, topRight: false, topLeft: false };\n };\n Image.prototype.onToolbarAction = function (args) {\n if (isIDevice$1()) {\n this.parent.notify(selectionRestore, {});\n }\n var item = args.args.item;\n switch (item.subCommand) {\n case 'Replace':\n if (this.parent.fileManagerSettings.enable) {\n this.parent.notify(renderFileManager, args);\n }\n else {\n this.parent.notify(insertImage, args);\n }\n break;\n case 'Caption':\n this.parent.notify(imageCaption, args);\n break;\n case 'InsertLink':\n this.parent.notify(imageLink, args);\n break;\n case 'AltText':\n this.parent.notify(imageAlt, args);\n break;\n case 'Remove':\n this.parent.notify(imageDelete, args);\n break;\n case 'Dimension':\n this.parent.notify(imageSize, args);\n break;\n case 'OpenImageLink':\n this.openImgLink(args);\n break;\n case 'EditImageLink':\n this.editImgLink(args);\n break;\n case 'RemoveImageLink':\n this.removeImgLink(args);\n break;\n }\n };\n Image.prototype.openImgLink = function (e) {\n var target = e.selectParent[0].parentNode.target === '' ? '_self' : '_blank';\n this.parent.formatter.process(this.parent, e.args, e.args, {\n url: e.selectParent[0].parentNode.href, target: target, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n };\n Image.prototype.editImgLink = function (e) {\n var selectParentEle = e.selectParent[0].parentNode;\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var inputDetails = {\n url: selectParentEle.href, target: selectParentEle.target,\n header: 'Edit Link', btnText: linkUpdate\n };\n this.insertImgLink(e, inputDetails);\n };\n Image.prototype.removeImgLink = function (e) {\n if (Browser.isIE) {\n this.contentModule.getEditPanel().focus();\n }\n e.selection.restore();\n var isCapLink = (this.contentModule.getEditPanel().contains(this.captionEle) && select('a', this.captionEle)) ?\n true : false;\n var selectParent = isCapLink ? [this.captionEle] : [e.selectNode[0].parentElement];\n this.parent.formatter.process(this.parent, e.args, e.args, {\n insertElement: e.selectNode[0], selectParent: selectParent, selection: e.selection,\n subCommand: e.args.item.subCommand\n });\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n if (!isNullOrUndefined(e.selectParent)) {\n removeClass([e.selectParent[0]], 'e-img-focus');\n }\n }\n if (isCapLink) {\n select('.e-img-inner', this.captionEle).focus();\n }\n };\n Image.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n this.deletedImg = [];\n var isCursor;\n var keyCodeValues = [27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,\n 44, 45, 9, 16, 17, 18, 19, 20, 33, 34, 35, 36, 37, 38, 39, 40, 91, 92, 93, 144, 145, 182, 183];\n if (this.parent.editorMode === 'HTML') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n isCursor = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n }\n if (!isCursor && this.parent.editorMode === 'HTML' && keyCodeValues.indexOf(originalEvent.which) < 0) {\n var nodes = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].nodeName === 'IMG') {\n this.deletedImg.push(nodes[i]);\n }\n }\n }\n if (this.parent.editorMode === 'HTML' && ((originalEvent.which === 8 && originalEvent.code === 'Backspace') ||\n (originalEvent.which === 46 && originalEvent.code === 'Delete'))) {\n var isCursor_1 = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n if ((originalEvent.which === 8 && originalEvent.code === 'Backspace' && isCursor_1)) {\n this.checkImageBack(range);\n }\n else if ((originalEvent.which === 46 && originalEvent.code === 'Delete' && isCursor_1)) {\n this.checkImageDel(range);\n }\n }\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&\n originalEvent.code !== 'KeyK') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&\n (selectParentEle[0].tagName === 'IMG') && selectParentEle[0].parentElement) {\n var prev = selectParentEle[0].parentElement.childNodes[0];\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), prev, prev, prev.textContent.length, prev.textContent.length);\n removeClass([selectParentEle[0]], 'e-img-focus');\n this.quickToolObj.imageQTBar.hidePopup();\n }\n }\n if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {\n this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });\n }\n if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {\n if (selectNodeEle && selectNodeEle[0].nodeName === 'IMG' && selectNodeEle.length < 1) {\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n originalEvent.preventDefault();\n var event_1 = {\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,\n args: {\n item: { command: 'Images', subCommand: 'Remove' },\n originalEvent: originalEvent\n }\n };\n this.deleteImg(event_1, originalEvent.keyCode);\n }\n if (this.parent.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n }\n if (originalEvent.code === 'Backspace') {\n originalEvent.action = 'backspace';\n }\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'backspace':\n case 'delete':\n for (var i = 0; i < this.deletedImg.length; i++) {\n var src = this.deletedImg[i].src;\n this.imageRemovePost(src);\n }\n if (this.parent.editorMode !== 'Markdown') {\n if (range.startContainer.nodeType === 3) {\n if (originalEvent.code === 'Backspace') {\n if (range.startContainer.previousElementSibling && range.startOffset === 0 &&\n range.startContainer.previousElementSibling.classList.contains(CLS_CAPTION) &&\n range.startContainer.previousElementSibling.classList.contains(CLS_CAPINLINE)) {\n detach(range.startContainer.previousElementSibling);\n }\n }\n else {\n if (range.startContainer.nextElementSibling &&\n range.endContainer.textContent.length === range.endOffset &&\n range.startContainer.nextElementSibling.classList.contains(CLS_CAPTION) &&\n range.startContainer.nextElementSibling.classList.contains(CLS_CAPINLINE)) {\n detach(range.startContainer.nextElementSibling);\n }\n }\n }\n else if ((range.startContainer.nodeType === 1 &&\n range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_CAPINLINE))) {\n detach(range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_CAPINLINE));\n }\n else if (range.startContainer.nodeType === 1 &&\n range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_IMGBREAK)) {\n detach(range.startContainer.querySelector('.' + CLS_CAPTION + '.' + CLS_IMGBREAK));\n }\n }\n break;\n case 'insert-image':\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);\n originalEvent.preventDefault();\n break;\n }\n };\n Image.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n if (!isInternal && !isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection)) {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = selection;\n selectNodeEle = ele;\n selectParentEle = parentEle;\n }\n if (this.parent.editorMode === 'HTML') {\n this.insertImage({\n args: {\n item: { command: 'Images', subCommand: 'Image' },\n originalEvent: event\n },\n selectNode: selectNodeEle,\n selection: save,\n selectParent: selectParentEle\n });\n }\n else {\n this.insertImage({\n args: {\n item: { command: 'Images', subCommand: 'Image' },\n originalEvent: event\n },\n member: 'image',\n text: this.parent.formatter.editorManager.markdownSelection.getSelectedText(this.parent.contentModule.getEditPanel()),\n module: 'Markdown',\n name: 'insertImage'\n });\n }\n };\n Image.prototype.showDialog = function () {\n this.openDialog(false);\n this.setCssClass({ cssClass: this.parent.cssClass });\n };\n Image.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n // eslint-disable-next-line\n Image.prototype.onKeyUp = function (event) {\n if (!isNullOrUndefined(this.deletedImg) && this.deletedImg.length > 0) {\n for (var i = 0; i < this.deletedImg.length; i++) {\n var args = {\n element: this.deletedImg[i],\n src: this.deletedImg[i].getAttribute('src')\n };\n this.parent.trigger(afterImageDelete, args);\n }\n }\n };\n Image.prototype.checkImageBack = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === 0 &&\n !isNullOrUndefined(range.startContainer.previousSibling) && range.startContainer.previousSibling.nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.previousSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNullOrUndefined(range.startContainer.childNodes[range.startOffset - 1]) &&\n range.startContainer.childNodes[range.startOffset - 1].nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.childNodes[range.startOffset - 1]);\n }\n };\n Image.prototype.checkImageDel = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === range.startContainer.textContent.length &&\n !isNullOrUndefined(range.startContainer.nextSibling) && range.startContainer.nextSibling.nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.nextSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNullOrUndefined(range.startContainer.childNodes[range.startOffset]) &&\n range.startContainer.childNodes[range.startOffset].nodeName === 'IMG') {\n this.deletedImg.push(range.startContainer.childNodes[range.startOffset]);\n }\n };\n Image.prototype.alignmentSelect = function (e) {\n var item = e.item;\n if (!document.body.contains(document.body.querySelector('.e-rte-quick-toolbar')) || item.command !== 'Images') {\n return;\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectNodeEle = (selectNodeEle[0].nodeName === 'IMG') ? selectNodeEle : [this.imgEle];\n var args = { args: e, selectNode: selectNodeEle };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n switch (item.subCommand) {\n case 'JustifyLeft':\n this.alignImage(args, 'JustifyLeft');\n break;\n case 'JustifyCenter':\n this.alignImage(args, 'JustifyCenter');\n break;\n case 'JustifyRight':\n this.alignImage(args, 'JustifyRight');\n break;\n case 'Inline':\n this.inline(args);\n break;\n case 'Break':\n this.break(args);\n break;\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n removeClass([selectNodeEle[0]], 'e-img-focus');\n }\n this.cancelResizeAction();\n };\n Image.prototype.imageWithLinkQTBarItemUpdate = function () {\n var separator;\n var items = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item');\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute('title') === this.i10n.getConstant('openLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('editLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('removeLink')) {\n addClass([items[i]], 'e-link-groups');\n items[i].style.display = 'none';\n }\n else if (items[i].getAttribute('title') === 'Insert Link') {\n items[i].style.display = '';\n }\n else if (items[i].classList.contains('e-rte-horizontal-separator')) {\n // eslint-disable-next-line\n separator = items[i];\n detach(items[i]);\n }\n }\n var newItems = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item:not(.e-link-groups)');\n this.quickToolObj.imageQTBar.addQTBarItem(['-'], Math.round(newItems.length / 2));\n };\n Image.prototype.showImageQuickToolbar = function (e) {\n var _this = this;\n if (e.type !== 'Images' || isNullOrUndefined(this.parent.quickToolbarModule)\n || isNullOrUndefined(this.parent.quickToolbarModule.imageQTBar) || isNullOrUndefined(e.args)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var args = e.args;\n var target = e.elements;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target = element;\n }\n });\n if (target && !closest(target, 'a')) {\n this.imageWithLinkQTBarItemUpdate();\n }\n if (target.nodeName === 'IMG') {\n addClass([target], ['e-img-focus']);\n }\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + args.clientY : args.pageY;\n if (this.parent.quickToolbarModule.imageQTBar) {\n if (e.isNotify) {\n setTimeout(function () {\n _this.parent.formatter.editorManager.nodeSelection.Clear(_this.contentModule.getDocument());\n _this.parent.formatter.editorManager.nodeSelection.setSelectionContents(_this.contentModule.getDocument(), target);\n _this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);\n }, 400);\n }\n else {\n this.quickToolObj.imageQTBar.showPopup(args.pageX, pageY, target);\n }\n }\n };\n Image.prototype.hideImageQuickToolbar = function () {\n if (!isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.e-img-focus'))) {\n removeClass([this.contentModule.getEditPanel().querySelector('.e-img-focus')], 'e-img-focus');\n if (this.quickToolObj && this.quickToolObj.imageQTBar && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n }\n };\n Image.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideImageQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n if ((showOnRightClick && args.which === 1) && !isNullOrUndefined(args.target) &&\n args.target.tagName === 'IMG') {\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), args.target);\n }\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.imageQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.imageQTBar.element.classList.contains('e-rte-pop');\n if (target.nodeName === 'IMG' && this.parent.quickToolbarModule) {\n if (isPopupOpen) {\n return;\n }\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);\n if (isIDevice$1()) {\n this.parent.notify(selectionSave, e);\n }\n addClass([target], 'e-img-focus');\n var items = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item');\n var separator = void 0;\n if (closest(target, 'a')) {\n for (var i = 0; i < items.length; i++) {\n if (items[i].getAttribute('title') === this.i10n.getConstant('openLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('editLink') ||\n items[i].getAttribute('title') === this.i10n.getConstant('removeLink')) {\n items[i].style.display = '';\n removeClass([items[i]], 'e-link-groups');\n }\n else if (items[i].getAttribute('title') === 'Insert Link') {\n items[i].style.display = 'none';\n }\n else if (items[i].classList.contains('e-rte-horizontal-separator')) {\n // eslint-disable-next-line\n separator = items[i];\n detach(items[i]);\n }\n }\n var newItems = this.quickToolObj.imageQTBar.toolbarElement.querySelectorAll('.e-toolbar-item:not(.e-link-groups)');\n this.quickToolObj.imageQTBar.addQTBarItem(['-'], Math.round(newItems.length / 2));\n }\n else if (!closest(target, 'a')) {\n this.imageWithLinkQTBarItemUpdate();\n }\n this.showImageQuickToolbar({ args: args, type: 'Images', elements: [args.target] });\n }\n else {\n this.hideImageQuickToolbar();\n }\n }\n };\n Image.prototype.insertImgLink = function (e, inputDetails) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n var linkWrap = this.parent.createElement('div', { className: 'e-img-linkwrap' + ' ' + this.parent.cssClass });\n var linkUrl = this.i10n.getConstant('linkurl');\n var content = '
    ' +\n '
    ' +\n '
    ' + '
    ' +\n '
    ';\n var contentElem = parseHtml(content);\n linkWrap.appendChild(contentElem);\n var linkTarget = linkWrap.querySelector('.e-rte-linkTarget');\n var inputLink = linkWrap.querySelector('.e-img-link');\n var linkOpenLabel = this.i10n.getConstant('linkOpenInNewWindow');\n this.checkBoxObj = new CheckBox({\n label: linkOpenLabel, checked: true, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass,\n change: function (e) {\n if (e.checked) {\n target_1 = '_blank';\n }\n else {\n target_1 = null;\n }\n }\n });\n this.checkBoxObj.isStringTemplate = true;\n this.checkBoxObj.createElement = this.parent.createElement;\n this.checkBoxObj.appendTo(linkTarget);\n var target_1 = this.checkBoxObj.checked ? '_blank' : null;\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var linkargs_1 = {\n args: e.args,\n selfImage: this, selection: e.selection,\n selectNode: e.selectNode, selectParent: e.selectParent, link: inputLink, target: target_1\n };\n this.dialogObj.setProperties({\n height: 'inherit',\n width: '290px',\n header: this.parent.localeObj.getConstant('imageInsertLinkHeader'),\n content: linkWrap,\n position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertlink(linkargs_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-link' + ' ' + this.parent.cssClass, isPrimary: true\n }\n }],\n cssClass: this.dialogObj.cssClass + ' e-rte-img-link-dialog'\n });\n if (!isNullOrUndefined(this.parent.cssClass)) {\n this.dialogObj.setProperties({ cssClass: this.parent.cssClass });\n }\n if (!isNullOrUndefined(inputDetails)) {\n inputLink.value = inputDetails.url;\n // eslint-disable-next-line\n (inputDetails.target) ? this.checkBoxObj.checked = true : this.checkBoxObj.checked = false;\n this.dialogObj.header = inputDetails.header;\n }\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.insertAltText = function (e) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n var altText = this.i10n.getConstant('altText');\n if (!isNullOrUndefined(this.dialogObj)) {\n var altWrap = this.parent.createElement('div', { className: 'e-img-altwrap' + ' ' + this.parent.cssClass });\n var altHeader = this.i10n.getConstant('alternateHeader');\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var getAlt = (e.selectNode[0].getAttribute('alt') === null) ? '' :\n e.selectNode[0].getAttribute('alt');\n var content = '
    ' +\n '' +\n '
    ';\n var contentElem = parseHtml(content);\n altWrap.appendChild(contentElem);\n var inputAlt = altWrap.querySelector('.e-img-alt');\n var altArgs_1 = {\n args: e.args, selfImage: this, selection: e.selection, selectNode: e.selectNode,\n alt: inputAlt\n };\n this.dialogObj.setProperties({\n height: 'inherit', width: '290px', header: altHeader, content: altWrap, position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertAlt(altArgs_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-alt' + ' ' + this.parent.cssClass, isPrimary: true\n }\n }],\n cssClass: this.dialogObj.cssClass + ' e-rte-img-alt-dialog'\n });\n if (!isNullOrUndefined(this.parent.cssClass)) {\n this.dialogObj.setProperties({ cssClass: this.parent.cssClass });\n }\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.insertAlt = function (e) {\n if (!isNullOrUndefined(e.alt)) {\n e.selection.restore();\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n var altText = e.alt.value;\n this.parent.formatter.process(this.parent, e.args, e.args, {\n altText: altText, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n this.dialogObj.hide({ returnValue: false });\n }\n };\n Image.prototype.insertlink = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var url = e.link.value;\n if (url === '') {\n addClass([e.link], 'e-error');\n e.link.setSelectionRange(0, url.length);\n e.link.focus();\n return;\n }\n if (!this.isUrl(url)) {\n url = 'http://' + url;\n }\n else {\n removeClass([e.link], 'e-error');\n }\n var proxy = e.selfImage;\n if (proxy.parent.editorMode === 'HTML') {\n e.selection.restore();\n }\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (e.selectNode[0].parentElement.nodeName === 'A') {\n proxy.parent.formatter.process(proxy.parent, e.args, e.args, {\n url: url, target: proxy.checkBoxObj.checked ? '_blank' : null, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n proxy.dialogObj.hide({ returnValue: true });\n return;\n }\n proxy.parent.formatter.process(proxy.parent, e.args, e.args, {\n url: url, target: proxy.checkBoxObj.checked ? '_blank' : null, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand, selection: e.selection\n });\n var captionEle = closest(e.selectNode[0], '.e-img-caption');\n if (captionEle) {\n select('.e-img-inner', captionEle).focus();\n }\n if (captionEle) {\n select('.e-img-inner', captionEle).focus();\n }\n proxy.dialogObj.hide({ returnValue: false });\n };\n Image.prototype.isUrl = function (url) {\n // eslint-disable-next-line\n var regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/gi;\n return regexp.test(url);\n };\n Image.prototype.deleteImg = function (e, keyCode) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var args = {\n element: e.selectNode[0],\n src: e.selectNode[0].getAttribute('src')\n };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n e.selection.restore();\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n this.removeResizeEle();\n }\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode,\n captionClass: CLS_CAPTION,\n subCommand: e.args.item.subCommand\n });\n this.imageRemovePost(args.src);\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n }\n this.cancelResizeAction();\n if (isNullOrUndefined(keyCode)) {\n this.parent.trigger(afterImageDelete, args);\n }\n };\n Image.prototype.imageRemovePost = function (src) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var absoluteUrl = '';\n if (isNullOrUndefined(this.parent.insertImageSettings.removeUrl) || this.parent.insertImageSettings.removeUrl === '') {\n return;\n }\n if (src.indexOf('http://') > -1 || src.indexOf('https://') > -1) {\n absoluteUrl = src;\n }\n else {\n absoluteUrl = new URL(src, document.baseURI).href;\n }\n this.removingImgName = absoluteUrl.replace(/^.*[\\\\/]/, '');\n var xhr = new XMLHttpRequest();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n xhr.addEventListener('readystatechange', function () {\n if (this.readyState === 4 && this.status === 200) {\n proxy.triggerPost(this.response);\n }\n });\n xhr.open('GET', absoluteUrl);\n xhr.responseType = 'blob';\n xhr.send();\n };\n Image.prototype.triggerPost = function (response) {\n var removeUrl = this.parent.insertImageSettings.removeUrl;\n if (isNullOrUndefined(removeUrl) || removeUrl === '') {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/tslint/config\n var file = new File([response], this.removingImgName);\n var ajax = new Ajax(removeUrl, 'POST', true, null);\n var formData = new FormData();\n formData.append('UploadFiles', file);\n ajax.send(formData);\n };\n Image.prototype.caption = function (e) {\n var selectNode = e.selectNode[0];\n if (selectNode.nodeName !== 'IMG') {\n return;\n }\n e.selection.restore();\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.cancelResizeAction();\n addClass([selectNode], 'e-rte-image');\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Caption';\n if (!isNullOrUndefined(closest(selectNode, '.' + CLS_CAPTION))) {\n detach(closest(selectNode, '.' + CLS_CAPTION));\n if (Browser.isIE) {\n this.contentModule.getEditPanel().focus();\n e.selection.restore();\n }\n if (selectNode.parentElement.tagName === 'A') {\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: selectNode.parentElement, selectNode: e.selectNode, subCommand: subCommand });\n }\n else {\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: selectNode, selectNode: e.selectNode, subCommand: subCommand });\n }\n }\n else {\n this.captionEle = this.parent.createElement('span', {\n className: CLS_CAPTION + ' ' + CLS_RTE_CAPTION + ' ' + this.parent.cssClass,\n attrs: { contenteditable: 'false', draggable: 'false', style: 'width:' + this.parent.insertImageSettings.width }\n });\n var imgWrap = this.parent.createElement('span', { className: 'e-img-wrap' + ' ' + this.parent.cssClass });\n var imgInner = this.parent.createElement('span', { className: 'e-img-inner' + ' ' + this.parent.cssClass,\n attrs: { contenteditable: 'true' } });\n var parent_1 = e.selectNode[0].parentElement;\n if (parent_1.tagName === 'A') {\n parent_1.setAttribute('contenteditable', 'true');\n }\n imgWrap.appendChild(parent_1.tagName === 'A' ? parent_1 : e.selectNode[0]);\n imgWrap.appendChild(imgInner);\n var imgCaption = this.i10n.getConstant('imageCaption');\n imgInner.innerHTML = imgCaption;\n this.captionEle.appendChild(imgWrap);\n if (selectNode.classList.contains(CLS_IMGINLINE)) {\n addClass([this.captionEle], CLS_CAPINLINE);\n }\n if (selectNode.classList.contains(CLS_IMGBREAK)) {\n addClass([this.captionEle], CLS_IMGBREAK);\n }\n if (selectNode.classList.contains(CLS_IMGLEFT)) {\n addClass([this.captionEle], CLS_IMGLEFT);\n }\n if (selectNode.classList.contains(CLS_IMGRIGHT)) {\n addClass([this.captionEle], CLS_IMGRIGHT);\n }\n if (selectNode.classList.contains(CLS_IMGCENTER)) {\n addClass([this.captionEle], CLS_IMGCENTER);\n }\n this.parent.formatter.process(this.parent, e.args, e.args, { insertElement: this.captionEle, selectNode: e.selectNode, subCommand: subCommand });\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), imgInner.childNodes[0], imgInner.childNodes[0], 0, imgInner.childNodes[0].textContent.length);\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n removeClass([selectNode], 'e-img-focus');\n }\n };\n Image.prototype.imageSize = function (e) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n var imgSizeHeader = this.i10n.getConstant('imageSizeHeader');\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var dialogContent = this.imgsizeInput(e);\n var selectObj_1 = { args: e.args, selfImage: this, selection: e.selection, selectNode: e.selectNode };\n this.dialogObj.setProperties({\n height: 'inherit', width: '290px', header: imgSizeHeader, content: dialogContent, position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertSize(selectObj_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-size' + ' ' + this.parent.cssClass, isPrimary: true\n }\n }],\n cssClass: this.dialogObj.cssClass + ' e-rte-img-size-dialog'\n });\n if (!isNullOrUndefined(this.parent.cssClass)) {\n this.dialogObj.setProperties({ cssClass: this.parent.cssClass });\n }\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Image.prototype.break = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Break';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.inline = function (e) {\n if (e.selectNode[0].nodeName !== 'IMG') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Inline';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.alignImage = function (e, type) {\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : type;\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Image.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n Image.prototype.imagDialog = function (e) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n var imgDialog = this.parent.createElement('div', { className: 'e-rte-img-dialog' + ' ' + this.parent.cssClass, id: this.rteID + '_image' });\n this.parent.element.appendChild(imgDialog);\n var imgInsert = this.i10n.getConstant('dialogInsert');\n var imglinkCancel = this.i10n.getConstant('dialogCancel');\n var imgHeader = this.i10n.getConstant('imageHeader');\n var selection = e.selection;\n var selectObj = { selfImage: this, selection: e.selection, args: e.args, selectParent: e.selectParent };\n var dialogModel = {\n header: imgHeader,\n cssClass: CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px',\n position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertImageUrl.bind(selectObj),\n buttonModel: { content: imgInsert, cssClass: 'e-flat e-insertImage' + ' ' + this.parent.cssClass, isPrimary: true, disabled: true }\n },\n {\n click: function (e) {\n _this.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: imglinkCancel }\n }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n if (_this.isImgUploaded) {\n _this.uploadObj.removing();\n }\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n else {\n _this.parent.formatter.editorManager.markdownSelection.restore(_this.parent.contentModule.getEditPanel());\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n _this.dialogRenderObj.close(event);\n _this.dialogObj = null;\n }\n };\n var dialogContent = this.parent.createElement('div', { className: 'e-img-content' + ' ' + this.parent.cssClass });\n if ((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')\n || this.parent.editorMode === 'HTML') {\n dialogContent.appendChild(this.imgUpload(e));\n }\n var linkHeader = this.parent.createElement('div', { className: 'e-linkheader' + ' ' + this.parent.cssClass });\n var linkHeaderText = this.i10n.getConstant('imageLinkHeader');\n if (this.parent.editorMode === 'HTML') {\n linkHeader.innerHTML = linkHeaderText;\n }\n else {\n linkHeader.innerHTML = this.i10n.getConstant('mdimageLink');\n }\n dialogContent.appendChild(linkHeader);\n dialogContent.appendChild(this.imageUrlPopup(e));\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG') {\n dialogModel.header = this.parent.localeObj.getConstant('editImageHeader');\n dialogModel.content = dialogContent;\n }\n else {\n dialogModel.content = dialogContent;\n }\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(imgDialog);\n if (isNullOrUndefined(this.dialogObj)) {\n return;\n }\n if (e.selectNode && e.selectNode[0].nodeName === 'IMG' && (e.name === 'insertImage')) {\n this.dialogObj.element.querySelector('.e-insertImage').textContent = this.parent.localeObj.getConstant('dialogUpdate');\n }\n imgDialog.style.maxHeight = 'inherit';\n if (this.quickToolObj) {\n if (this.quickToolObj.imageQTBar && document.body.contains(this.quickToolObj.imageQTBar.element)) {\n this.quickToolObj.imageQTBar.hidePopup();\n if (!isNullOrUndefined(e.selectParent)) {\n removeClass([e.selectParent[0]], 'e-img-focus');\n }\n }\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Image.prototype.cancelDialog = function (e) {\n this.parent.isBlur = false;\n this.dialogObj.hide({ returnValue: true });\n if (this.isImgUploaded) {\n this.uploadObj.removing();\n }\n };\n Image.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (target.nodeName === 'IMG') {\n this.imgEle = target;\n }\n if (!this.parent) {\n return;\n }\n if (target.nodeName !== '#document') {\n this.parent.currentTarget = e.target;\n }\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable && this.parent.getToolbarElement() &&\n !this.parent.getToolbarElement().contains(e.target)) ||\n (this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_Image') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_Image')))) {\n /* eslint-disable */\n if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {\n }\n else {\n this.dialogObj.hide({ returnValue: true });\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n /* eslint-enable */\n }\n if (!(this.parent.iframeSettings.enable && !isNullOrUndefined(this.parent.currentTarget) && this.parent.currentTarget.nodeName === 'IMG') &&\n e.target.tagName !== 'IMG' && this.imgResizeDiv && !(this.quickToolObj &&\n this.quickToolObj.imageQTBar && this.quickToolObj.imageQTBar.element.contains(e.target)) &&\n this.contentModule.getEditPanel().contains(this.imgResizeDiv)) {\n this.cancelResizeAction();\n }\n if (this.contentModule.getEditPanel().querySelector('.e-img-resize') && !(this.parent.iframeSettings.enable && this.parent.currentTarget.nodeName === 'IMG')) {\n if (target.tagName !== 'IMG') {\n this.removeResizeEle();\n }\n if (target.tagName !== 'IMG' && !isNullOrUndefined(this.imgEle)) {\n this.imgEle.style.outline = '';\n }\n else if (!isNullOrUndefined(this.prevSelectedImgEle) && this.prevSelectedImgEle !== target) {\n this.prevSelectedImgEle.style.outline = '';\n }\n }\n };\n Image.prototype.removeResizeEle = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n detach(this.contentModule.getEditPanel().querySelector('.e-img-resize'));\n };\n Image.prototype.onWindowResize = function () {\n if (!isNullOrUndefined(this.contentModule) && !isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.e-img-resize'))) {\n this.cancelResizeAction();\n }\n };\n // eslint-disable-next-line\n Image.prototype.imageUrlPopup = function (e) {\n var _this = this;\n var imgUrl = this.parent.createElement('div', { className: 'imgUrl' + ' ' + this.parent.cssClass });\n var placeUrl = this.i10n.getConstant('imageUrl');\n this.inputUrl = this.parent.createElement('input', {\n className: 'e-input e-img-url' + ' ' + this.parent.cssClass,\n attrs: { placeholder: placeUrl, spellcheck: 'false', 'aria-label': this.i10n.getConstant('imageLinkHeader') }\n });\n this.inputUrl.addEventListener('input', function () {\n if (!isNullOrUndefined(_this.inputUrl)) {\n if (_this.inputUrl.value.length === 0) {\n _this.dialogObj.getButtons(0).element.disabled = true;\n }\n else {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n }\n });\n imgUrl.appendChild(this.inputUrl);\n return imgUrl;\n };\n // eslint-disable-next-line\n Image.prototype.insertImageUrl = function (e) {\n var proxy = this.selfImage;\n proxy.isImgUploaded = false;\n var url = proxy.inputUrl.value;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (!isNullOrUndefined(proxy.uploadUrl) && proxy.uploadUrl.url !== '') {\n proxy.uploadUrl.cssClass = (proxy.parent.insertImageSettings.display === 'inline' ?\n CLS_IMGINLINE : CLS_IMGBREAK);\n proxy.dialogObj.hide({ returnValue: false });\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);\n proxy.uploadUrl.url = '';\n if (proxy.contentModule.getEditPanel().querySelector('.e-img-resize')) {\n proxy.imgEle.style.outline = '';\n proxy.removeResizeEle();\n }\n }\n else if (url !== '') {\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(\n // eslint-disable-next-line\n this.selection.range.startContainer.parentNode, '[id=' + \"'\" + proxy.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.contentModule.getEditPanel().focus();\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var regex = /[\\w-]+.(jpg|png|jpeg|gif)/g;\n var matchUrl = (!isNullOrUndefined(url.match(regex)) && proxy.parent.editorMode === 'HTML') ? url.match(regex)[0] : '';\n var value = {\n cssClass: (proxy.parent.insertImageSettings.display === 'inline' ? CLS_IMGINLINE : CLS_IMGBREAK),\n url: url, selection: this.selection, altText: matchUrl,\n selectParent: this.selectParent, width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy.parent.insertImageSettings.height, minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);\n proxy.dialogObj.hide({ returnValue: false });\n }\n };\n Image.prototype.imgsizeInput = function (e) {\n var _this = this;\n var selectNode = e.selectNode[0];\n var imgHeight = this.i10n.getConstant('imageHeight');\n var imgWidth = this.i10n.getConstant('imageWidth');\n var imgSizeWrap = this.parent.createElement('div', { className: 'e-img-sizewrap' + ' ' + this.parent.cssClass });\n var widthVal = isNullOrUndefined(this.changedWidthValue) && (selectNode.style.width.toString() === 'auto' ||\n selectNode.style.width !== '') ? selectNode.style.width : !isNullOrUndefined(this.changedWidthValue) ?\n this.changedWidthValue : (parseInt(selectNode.getClientRects()[0].width.toString(), 10)).toString();\n var heightVal = isNullOrUndefined(this.changedHeightValue) && (selectNode.style.height.toString() === 'auto' ||\n selectNode.style.height !== '') ? selectNode.style.height : !isNullOrUndefined(this.changedHeightValue) ?\n this.changedHeightValue : (parseInt(selectNode.getClientRects()[0].height.toString(), 10)).toString();\n this.changedWidthValue = null;\n this.changedHeightValue = null;\n var content = '
    ' +\n '
    ' + '
    ' +\n '
    ';\n var contentElem = parseHtml(content);\n imgSizeWrap.appendChild(contentElem);\n this.widthNum = new TextBox({\n value: formatUnit(widthVal),\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass,\n input: function (e) {\n _this.inputWidthValue = formatUnit(_this.inputValue(e.value));\n }\n });\n this.widthNum.createElement = this.parent.createElement;\n this.widthNum.appendTo(imgSizeWrap.querySelector('#imgwidth'));\n this.heightNum = new TextBox({\n value: formatUnit(heightVal),\n enableRtl: this.parent.enableRtl,\n cssClass: this.parent.cssClass,\n input: function (e) {\n _this.inputHeightValue = formatUnit(_this.inputValue(e.value));\n }\n });\n this.heightNum.createElement = this.parent.createElement;\n this.heightNum.appendTo(imgSizeWrap.querySelector('#imgheight'));\n return imgSizeWrap;\n };\n Image.prototype.inputValue = function (value) {\n if (value === 'auto' || value.indexOf('%') !== -1 || value.indexOf('px') !== -1\n || value.match(/(\\d+)/)) {\n return value;\n }\n else {\n return 'auto';\n }\n };\n Image.prototype.insertSize = function (e) {\n e.selection.restore();\n var proxy = e.selfImage;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var dialogEle = proxy.dialogObj.element;\n this.changedWidthValue = this.inputWidthValue;\n this.changedHeightValue = this.inputHeightValue;\n var width = dialogEle.querySelector('.e-img-width').value;\n var height = dialogEle.parentElement.querySelector('.e-img-height').value;\n proxy.parent.formatter.process(this.parent, e.args, e.args, {\n width: width, height: height, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n if (this.imgResizeDiv) {\n proxy.imgResizePos(e.selectNode[0], this.imgResizeDiv);\n }\n proxy.dialogObj.hide({ returnValue: true });\n };\n Image.prototype.insertImage = function (e) {\n this.imagDialog(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.element.style.maxHeight = 'inherit';\n var dialogContent = this.dialogObj.element.querySelector('.e-img-content');\n if (((!isNullOrUndefined(this.parent.insertImageSettings.path) && this.parent.editorMode === 'Markdown')\n || this.parent.editorMode === 'HTML')) {\n document.getElementById(this.rteID + '_insertImage').focus();\n }\n else {\n dialogContent.querySelector('.e-img-url').focus();\n }\n }\n };\n Image.prototype.imgUpload = function (e) {\n var _this = this;\n var save;\n var selectParent;\n // eslint-disable-next-line\n var proxy = this;\n var iframe = proxy.parent.iframeSettings.enable;\n if (proxy.parent.editorMode === 'HTML' && (!iframe && isNullOrUndefined(closest(e.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + this.parent.contentModule.getPanel().id + \"'\" + ']'))\n || (iframe && !hasClass(e.selection.range.startContainer.parentNode.ownerDocument.querySelector('body'), 'e-lib')))) {\n this.contentModule.getEditPanel().focus();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = e.selection;\n selectParent = e.selectParent;\n }\n var uploadParentEle = this.parent.createElement('div', { className: 'e-img-uploadwrap e-droparea' + ' ' + this.parent.cssClass });\n var deviceImgUpMsg = this.i10n.getConstant('imageDeviceUploadMessage');\n var imgUpMsg = this.i10n.getConstant('imageUploadMessage');\n var span = this.parent.createElement('span', { className: 'e-droptext' + ' ' + this.parent.cssClass });\n var spanMsg = this.parent.createElement('span', {\n className: 'e-rte-upload-text' + ' ' + this.parent.cssClass, innerHTML: ((Browser.isDevice) ? deviceImgUpMsg : imgUpMsg)\n });\n span.appendChild(spanMsg);\n var btnEle = this.parent.createElement('button', {\n className: 'e-browsebtn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertImage', attrs: { autofocus: 'true', type: 'button' }\n });\n span.appendChild(btnEle);\n uploadParentEle.appendChild(span);\n var browserMsg = this.i10n.getConstant('browse');\n this.browseButton = new Button({ content: browserMsg, enableRtl: this.parent.enableRtl });\n this.browseButton.isStringTemplate = true;\n this.browseButton.createElement = this.parent.createElement;\n this.browseButton.appendTo(btnEle);\n var btnClick = (Browser.isDevice) ? span : btnEle;\n EventHandler.add(btnClick, 'click', this.fileSelect, this);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }, className: this.parent.cssClass\n });\n uploadParentEle.appendChild(uploadEle);\n var altText;\n var rawFile;\n var selectArgs;\n var filesData;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: { saveUrl: this.parent.insertImageSettings.saveUrl, removeUrl: this.parent.insertImageSettings.removeUrl },\n dropArea: span, multiple: false, enableRtl: this.parent.enableRtl, cssClass: this.parent.cssClass,\n allowedExtensions: this.parent.insertImageSettings.allowedTypes.toString(),\n selected: function (e) {\n proxy.isImgUploaded = true;\n selectArgs = e;\n filesData = e.filesData;\n if (_this.parent.isServerRendered) {\n selectArgs = JSON.parse(JSON.stringify(e));\n e.cancel = true;\n rawFile = e.filesData;\n selectArgs.filesData = rawFile;\n }\n _this.parent.trigger(imageSelected, selectArgs, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.checkExtension(selectArgs.filesData[0]);\n altText = selectArgs.filesData[0].name;\n if (_this.parent.editorMode === 'HTML' && isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var reader_1 = new FileReader();\n // eslint-disable-next-line\n reader_1.addEventListener('load', function (e) {\n var url = _this.parent.insertImageSettings.saveFormat === 'Base64' ? reader_1.result :\n URL.createObjectURL(convertToBlob(reader_1.result));\n proxy.uploadUrl = {\n url: url, selection: save, altText: altText,\n selectParent: selectParent,\n width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n }, height: {\n height: proxy.parent.insertImageSettings.height,\n minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n if (isNullOrUndefined(proxy.parent.insertImageSettings.saveUrl) && _this.isAllowedTypes\n && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n reader_1.readAsDataURL(selectArgs.filesData[0].rawFile);\n }\n if (_this.parent.isServerRendered) {\n /* eslint-disable */\n _this.uploadObj._internalRenderSelect(selectArgs, rawFile);\n /* eslint-enable */\n }\n }\n });\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = filesData;\n args.cancel = true;\n _this.parent.trigger(imageUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(beforeImageUpload, args);\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n _this.parent.trigger(imageUploading, e);\n }\n },\n success: function (e) {\n _this.parent.trigger(imageUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var url = _this.parent.insertImageSettings.path + e.file.name;\n // eslint-disable-next-line\n proxy.uploadUrl = {\n url: url, selection: save, altText: altText, selectParent: selectParent,\n width: {\n width: proxy.parent.insertImageSettings.width, minWidth: proxy.parent.insertImageSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n }, height: {\n height: proxy.parent.insertImageSettings.height, minHeight: proxy.parent.insertImageSettings.minHeight,\n maxHeight: proxy.parent.insertImageSettings.maxHeight\n }\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n }\n if (e.operation === 'upload' && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n },\n failure: function (e) {\n _this.parent.trigger(imageUploadFailed, e);\n },\n removing: function () {\n // eslint-disable-next-line\n _this.parent.trigger(imageRemoving, e, function (e) {\n proxy.isImgUploaded = false;\n _this.dialogObj.getButtons(0).element.disabled = true;\n proxy.inputUrl.removeAttribute('disabled');\n if (proxy.uploadUrl) {\n proxy.uploadUrl.url = '';\n }\n });\n }\n });\n this.uploadObj.isStringTemplate = true;\n this.uploadObj.createElement = this.parent.createElement;\n this.uploadObj.appendTo(uploadEle);\n return uploadParentEle;\n };\n Image.prototype.checkExtension = function (e) {\n if (this.uploadObj.allowedExtensions) {\n if (this.uploadObj.allowedExtensions.toLocaleLowerCase().indexOf(('.' + e.type).toLocaleLowerCase()) === -1) {\n this.dialogObj.getButtons(0).element.setAttribute('disabled', 'disabled');\n this.isAllowedTypes = false;\n }\n else {\n this.isAllowedTypes = true;\n }\n }\n };\n Image.prototype.fileSelect = function () {\n this.dialogObj.element.getElementsByClassName('e-file-select-wrap')[0].querySelector('button').click();\n return false;\n };\n Image.prototype.dragStart = function (e) {\n if (e.target.nodeName === 'IMG') {\n this.parent.trigger(actionBegin, e, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n e.preventDefault();\n }\n else {\n e.dataTransfer.effectAllowed = 'copyMove';\n e.target.classList.add(CLS_RTE_DRAG_IMAGE);\n }\n });\n }\n else {\n return true;\n }\n };\n Image.prototype.dragEnter = function (e) {\n e.dataTransfer.dropEffect = 'copy';\n e.preventDefault();\n };\n Image.prototype.dragOver = function (e) {\n if ((Browser.info.name === 'edge' && e.dataTransfer.items[0].type.split('/')[0].indexOf('image') > -1) ||\n (Browser.isIE && e.dataTransfer.types[0] === 'Files')) {\n e.preventDefault();\n }\n else {\n return true;\n }\n };\n /**\n * Used to set range When drop an image\n *\n * @param {ImageDropEventArgs} args - specifies the image arguments.\n * @returns {void}\n */\n Image.prototype.dragDrop = function (args) {\n var _this = this;\n this.parent.trigger(beforeImageDrop, args, function (e) {\n var imgElement = _this.parent.inputElement.ownerDocument.querySelector('.' + CLS_RTE_DRAG_IMAGE);\n var isImgOrFileDrop = (imgElement && imgElement.tagName === 'IMG') || e.dataTransfer.files.length > 0;\n if (!e.cancel && isImgOrFileDrop) {\n _this.parent.trigger(actionBegin, e, function (actionBeginArgs) {\n if (actionBeginArgs.cancel) {\n e.preventDefault();\n }\n else {\n if (closest(e.target, '#' + _this.parent.getID() + '_toolbar') ||\n _this.parent.inputElement.contentEditable === 'false') {\n e.preventDefault();\n return;\n }\n if (_this.parent.element.querySelector('.' + CLS_IMG_RESIZE)) {\n detach(_this.imgResizeDiv);\n }\n e.preventDefault();\n var range = void 0;\n if (_this.contentModule.getDocument().caretRangeFromPoint) { //For chrome\n range = _this.contentModule.getDocument().caretRangeFromPoint(e.clientX, e.clientY);\n }\n else if ((e.rangeParent)) { //For mozilla firefox\n range = _this.contentModule.getDocument().createRange();\n range.setStart(e.rangeParent, e.rangeOffset);\n }\n else {\n range = _this.getDropRange(e.clientX, e.clientY); //For internet explorer\n }\n _this.parent.notify(selectRange, { range: range });\n var uploadArea = _this.parent.element.querySelector('.' + CLS_DROPAREA);\n if (uploadArea) {\n return;\n }\n _this.insertDragImage(e);\n }\n });\n }\n else {\n if (isImgOrFileDrop) {\n e.preventDefault();\n }\n }\n });\n };\n /**\n * Used to calculate range on internet explorer\n *\n * @param {number} x - specifies the x range.\n * @param {number} y - specifies the y range.\n * @returns {void}\n */\n Image.prototype.getDropRange = function (x, y) {\n var startRange = this.contentModule.getDocument().createRange();\n this.parent.formatter.editorManager.nodeSelection.setRange(this.contentModule.getDocument(), startRange);\n var elem = this.contentModule.getDocument().elementFromPoint(x, y);\n var startNode = (elem.childNodes.length > 0 ? elem.childNodes[0] : elem);\n var startCharIndexCharacter = 0;\n if (this.parent.inputElement.firstChild.innerHTML === '
    ') {\n startRange.setStart(startNode, startCharIndexCharacter);\n startRange.setEnd(startNode, startCharIndexCharacter);\n }\n else {\n var rangeRect = void 0;\n do {\n startCharIndexCharacter++;\n startRange.setStart(startNode, startCharIndexCharacter);\n startRange.setEnd(startNode, startCharIndexCharacter + 1);\n rangeRect = startRange.getBoundingClientRect();\n } while (rangeRect.left < x && startCharIndexCharacter < startNode.length - 1);\n }\n return startRange;\n };\n Image.prototype.insertDragImage = function (e) {\n var _this = this;\n e.preventDefault();\n var activePopupElement = this.parent.element.querySelector('' + CLS_POPUP_OPEN);\n this.parent.notify(drop, { args: e });\n if (activePopupElement) {\n activePopupElement.classList.add(CLS_HIDE);\n }\n var imgElement = this.parent.inputElement.ownerDocument.querySelector('.' + CLS_RTE_DRAG_IMAGE);\n if (e.dataTransfer.files.length > 0 && imgElement === null) { //For external image drag and drop\n if (e.dataTransfer.files.length > 1) {\n return;\n }\n var imgFiles = e.dataTransfer.files;\n var fileName = imgFiles[0].name;\n var imgType = fileName.substring(fileName.lastIndexOf('.'));\n var allowedTypes = this.parent.insertImageSettings.allowedTypes;\n for (var i = 0; i < allowedTypes.length; i++) {\n if (imgType.toLocaleLowerCase() === allowedTypes[i].toLowerCase()) {\n if (this.parent.insertImageSettings.saveUrl) {\n this.onSelect(e);\n }\n else {\n var args = { args: e, text: '', file: imgFiles[0] };\n e.preventDefault();\n this.imagePaste(args);\n }\n }\n }\n }\n else { //For internal image drag and drop\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n if (imgElement && imgElement.tagName === 'IMG') {\n if (imgElement.nextElementSibling) {\n if (imgElement.nextElementSibling.classList.contains(CLS_IMG_INNER)) {\n range.insertNode(imgElement.parentElement.parentElement);\n }\n else {\n range.insertNode(imgElement);\n }\n }\n else {\n range.insertNode(imgElement);\n }\n imgElement.classList.remove(CLS_RTE_DRAG_IMAGE);\n var imgArgs_1 = { elements: [imgElement] };\n imgElement.addEventListener('load', function () {\n _this.parent.trigger(actionComplete, imgArgs_1);\n });\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n var args = e;\n this.resizeStart(args, imgElement);\n this.hideImageQuickToolbar();\n }\n }\n };\n Image.prototype.onSelect = function (args) {\n var _this = this;\n // eslint-disable-next-line\n var proxy = this;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var parentElement = this.parent.createElement('ul', { className: CLS_UPLOAD_FILES });\n this.parent.element.appendChild(parentElement);\n var validFiles = {\n name: '',\n size: 0,\n status: '',\n statusCode: '',\n type: '',\n rawFile: args.dataTransfer.files[0],\n validationMessages: {}\n };\n var imageTag = this.parent.createElement('IMG');\n imageTag.style.opacity = '0.5';\n imageTag.classList.add(CLS_RTE_IMAGE);\n imageTag.classList.add(CLS_IMGINLINE);\n imageTag.classList.add(CLS_RESIZE);\n var file = validFiles.rawFile;\n var reader = new FileReader();\n reader.addEventListener('load', function () {\n var url = URL.createObjectURL(convertToBlob(reader.result));\n imageTag.src = proxy.parent.insertImageSettings.saveFormat === 'Blob' ? url : reader.result;\n });\n if (file) {\n reader.readAsDataURL(file);\n }\n range.insertNode(imageTag);\n this.uploadMethod(args, imageTag);\n var e = { elements: [imageTag] };\n imageTag.addEventListener('load', function () {\n _this.parent.trigger(actionComplete, e);\n });\n detach(parentElement);\n };\n /**\n * Rendering uploader and popup for drag and drop\n *\n * @param {DragEvent} dragEvent - specifies the event.\n * @param {HTMLImageElement} imageElement - specifies the element.\n * @returns {void}\n */\n Image.prototype.uploadMethod = function (dragEvent, imageElement) {\n var _this = this;\n var isUploading = false;\n // eslint-disable-next-line\n var proxy = this;\n var popupEle = this.parent.createElement('div');\n this.parent.element.appendChild(popupEle);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }\n });\n var offsetY = this.parent.iframeSettings.enable ? -50 : -90;\n this.popupObj = new Popup(popupEle, {\n relateTo: imageElement,\n height: '85px',\n width: '300px',\n offsetY: offsetY,\n content: uploadEle,\n viewPortElement: this.parent.element,\n position: { X: 'center', Y: 'top' },\n enableRtl: this.parent.enableRtl,\n zIndex: 10001,\n // eslint-disable-next-line\n close: function (event) {\n _this.parent.isBlur = false;\n _this.popupObj.destroy();\n detach(_this.popupObj.element);\n _this.popupObj = null;\n if (!_this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.baseToolbar.toolbarObj.disable(false);\n }\n }\n });\n this.popupObj.element.style.display = 'none';\n addClass([this.popupObj.element], CLS_POPUP_OPEN);\n addClass([this.popupObj.element], CLS_RTE_UPLOAD_POPUP);\n if (!isNullOrUndefined(this.parent.cssClass)) {\n addClass([this.popupObj.element], this.parent.cssClass);\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var timeOut = dragEvent.dataTransfer.files[0].size > 1000000 ? 300 : 100;\n setTimeout(function () {\n proxy.refreshPopup(imageElement);\n }, timeOut);\n var rawFile;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: {\n saveUrl: this.parent.insertImageSettings.saveUrl,\n removeUrl: this.parent.insertImageSettings.removeUrl\n },\n cssClass: CLS_RTE_DIALOG_UPLOAD + ' ' + this.parent.cssClass,\n dropArea: this.parent.element,\n allowedExtensions: this.parent.insertImageSettings.allowedTypes.toString(),\n removing: function () {\n _this.parent.inputElement.contentEditable = 'true';\n isUploading = false;\n detach(imageElement);\n _this.popupObj.close();\n },\n canceling: function () {\n _this.parent.inputElement.contentEditable = 'true';\n isUploading = false;\n detach(imageElement);\n _this.popupObj.close();\n _this.quickToolObj.imageQTBar.hidePopup();\n setTimeout(function () {\n _this.uploadObj.destroy();\n }, 900);\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = rawFile;\n isUploading = true;\n args.cancel = true;\n _this.parent.trigger(imageUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n if (!_this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.baseToolbar.toolbarObj.disable(true);\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n _this.parent.inputElement.contentEditable = 'false';\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(beforeImageUpload, args);\n if (!_this.parent.inlineMode.enable) {\n _this.parent.toolbarModule.baseToolbar.toolbarObj.disable(true);\n }\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n isUploading = true;\n _this.parent.trigger(imageUploading, e, function (imageUploadingArgs) {\n if (imageUploadingArgs.cancel) {\n if (!isNullOrUndefined(imageElement)) {\n detach(imageElement);\n }\n if (!isNullOrUndefined(_this.popupObj.element)) {\n detach(_this.popupObj.element);\n }\n }\n else {\n _this.parent.inputElement.contentEditable = 'false';\n }\n });\n }\n },\n selected: function (e) {\n if (isUploading) {\n e.cancel = true;\n }\n if (_this.parent.isServerRendered) {\n rawFile = e.filesData;\n }\n },\n failure: function (e) {\n isUploading = false;\n _this.parent.inputElement.contentEditable = 'true';\n var args = {\n args: dragEvent,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n setTimeout(function () {\n _this.uploadFailure(imageElement, args, e);\n }, 900);\n },\n success: function (e) {\n if (e.operation === 'cancel') {\n return;\n }\n isUploading = false;\n _this.parent.inputElement.contentEditable = 'true';\n var args = {\n args: dragEvent,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n setTimeout(function () {\n _this.uploadSuccess(imageElement, dragEvent, args, e);\n }, 900);\n }\n });\n this.uploadObj.appendTo(this.popupObj.element.childNodes[0]);\n this.popupObj.element.querySelector('.e-rte-dialog-upload .e-file-select-wrap').style.display = 'none';\n range.selectNodeContents(imageElement);\n this.parent.formatter.editorManager.nodeSelection.setRange(this.contentModule.getDocument(), range);\n };\n Image.prototype.refreshPopup = function (imageElement) {\n var imgPosition = this.parent.iframeSettings.enable ? this.parent.element.offsetTop +\n imageElement.offsetTop : imageElement.offsetTop;\n var rtePosition = this.parent.element.offsetTop + this.parent.element.offsetHeight;\n if (imgPosition > rtePosition) {\n this.popupObj.relateTo = this.parent.inputElement;\n this.popupObj.offsetY = this.parent.iframeSettings.enable ? -30 : -65;\n this.popupObj.element.style.display = 'block';\n }\n else {\n if (this.popupObj) {\n this.popupObj.refreshPosition(imageElement);\n this.popupObj.element.style.display = 'block';\n }\n }\n };\n /**\n * Called when drop image upload was failed\n *\n * @param {HTMLElement} imgEle - specifies the image element.\n * @param {IShowPopupArgs} args - specifies the arguments.\n * @param {Object} e - specfies the object.\n * @returns {void}\n */\n Image.prototype.uploadFailure = function (imgEle, args, e) {\n detach(imgEle);\n if (this.popupObj) {\n this.popupObj.close();\n }\n this.parent.trigger(imageUploadFailed, e);\n this.uploadObj.destroy();\n };\n /**\n * Called when drop image upload was successful\n *\n * @param {HTMLElement} imageElement - specifies the image element.\n * @param {DragEvent} dragEvent - specifies the drag event.\n * @param {IShowPopupArgs} args - specifies the arguments.\n * @param {ImageSuccessEventArgs} e - specifies the success event.\n * @returns {void}\n */\n Image.prototype.uploadSuccess = function (imageElement, dragEvent, args, e) {\n var _this = this;\n imageElement.style.opacity = '1';\n imageElement.classList.add(CLS_IMG_FOCUS);\n e.element = imageElement;\n this.parent.trigger(imageUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertImageSettings.path)) {\n var url = _this.parent.insertImageSettings.path + e.file.name;\n imageElement.src = url;\n imageElement.setAttribute('alt', e.file.name);\n }\n });\n if (this.popupObj) {\n this.popupObj.close();\n this.uploadObj.destroy();\n }\n this.showImageQuickToolbar(args);\n this.resizeStart(dragEvent, imageElement);\n };\n Image.prototype.imagePaste = function (args) {\n var _this = this;\n if (args.text.length === 0 && !isNullOrUndefined(args.file)) {\n // eslint-disable-next-line\n var proxy_1 = this;\n var reader_2 = new FileReader();\n args.args.preventDefault();\n // eslint-disable-next-line\n reader_2.addEventListener('load', function (e) {\n var url = {\n cssClass: (proxy_1.parent.insertImageSettings.display === 'inline' ? CLS_IMGINLINE : CLS_IMGBREAK),\n url: _this.parent.insertImageSettings.saveFormat === 'Base64' || !isNullOrUndefined(args.callBack) ?\n reader_2.result : URL.createObjectURL(convertToBlob(reader_2.result)),\n width: {\n width: proxy_1.parent.insertImageSettings.width, minWidth: proxy_1.parent.insertImageSettings.minWidth,\n maxWidth: proxy_1.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy_1.parent.insertImageSettings.height, minHeight: proxy_1.parent.insertImageSettings.minHeight,\n maxHeight: proxy_1.parent.insertImageSettings.maxHeight\n }\n };\n if (!isNullOrUndefined(args.callBack)) {\n args.callBack(url);\n return;\n }\n else {\n proxy_1.parent.formatter.process(proxy_1.parent, { item: { command: 'Images', subCommand: 'Image' } }, args.args, url);\n _this.showPopupToolBar(args, url);\n }\n });\n reader_2.readAsDataURL(args.file);\n }\n };\n Image.prototype.showPopupToolBar = function (e, url) {\n var _this = this;\n var imageSrc = 'img[src=\"' + url.url + '\"]';\n var imageElement = this.parent.inputElement.querySelector(imageSrc);\n this.parent.quickToolbarModule.createQTBar('Image', 'MultiRow', this.parent.quickToolbarSettings.image, RenderType.ImageToolbar);\n var args = {\n args: e.args,\n type: 'Images',\n isNotify: undefined,\n elements: imageElement\n };\n if (imageElement) {\n setTimeout(function () {\n _this.showImageQuickToolbar(args);\n _this.resizeStart(e.args, imageElement);\n }, 0);\n }\n };\n /* eslint-disable */\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-enable */\n Image.prototype.destroy = function () {\n this.prevSelectedImgEle = undefined;\n this.removeEventListener();\n };\n Image.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Image.prototype.getModuleName = function () {\n return 'image';\n };\n return Image;\n}());\n\n/**\n * `Audio` module is used to handle audio actions.\n */\nvar Audio = /** @__PURE__ @class */ (function () {\n function Audio(parent, serviceLocator) {\n this.isAudioUploaded = false;\n this.isAllowedTypes = true;\n this.deletedAudio = [];\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n this.addEventListener();\n }\n Audio.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(keyUp, this.onKeyUp, this);\n this.parent.on(insertAudio, this.insertingAudio, this);\n this.parent.on(initialEnd, this.afterRender, this);\n this.parent.on(dynamicModule, this.afterRender, this);\n this.parent.on(showAudioDialog, this.showDialog, this);\n this.parent.on(closeAudioDialog, this.closeDialog, this);\n this.parent.on(audioToolbarAction, this.onToolbarAction, this);\n this.parent.on(dropDownSelect, this.alignmentSelect, this);\n this.parent.on(audioDelete, this.deleteAudio, this);\n this.parent.on(editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(insertCompleted, this.showAudioQuickToolbar, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n Audio.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(keyUp, this.onKeyUp);\n this.parent.off(insertAudio, this.insertingAudio);\n this.parent.off(initialEnd, this.afterRender);\n this.parent.off(dynamicModule, this.afterRender);\n this.parent.off(showAudioDialog, this.showDialog);\n this.parent.off(closeAudioDialog, this.closeDialog);\n this.parent.off(audioToolbarAction, this.onToolbarAction);\n this.parent.off(dropDownSelect, this.alignmentSelect);\n this.parent.off(audioDelete, this.deleteAudio);\n this.parent.off(editAreaClick, this.editAreaClickHandler);\n this.parent.off(insertCompleted, this.showAudioQuickToolbar);\n this.parent.off(destroy, this.removeEventListener);\n if (!isNullOrUndefined(this.contentModule)) {\n EventHandler.remove(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.touchStart);\n EventHandler.remove(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.audioClick);\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n }\n };\n Audio.prototype.afterRender = function () {\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n EventHandler.add(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.touchStart, this);\n EventHandler.add(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.audioClick, this);\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n };\n Audio.prototype.checkAudioBack = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === 0 &&\n !isNullOrUndefined(range.startContainer.previousSibling) && this.isAudioElem(range.startContainer.previousSibling)) {\n this.deletedAudio.push(range.startContainer.previousSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNullOrUndefined(range.startContainer.childNodes[range.startOffset - 1]) &&\n this.isAudioElem(range.startContainer.childNodes[range.startOffset - 1])) {\n this.deletedAudio.push(range.startContainer.childNodes[range.startOffset - 1]);\n }\n };\n Audio.prototype.checkAudioDel = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === range.startContainer.textContent.length &&\n !isNullOrUndefined(range.startContainer.nextSibling) && range.startContainer.nextSibling.nodeName === 'IMG') {\n this.deletedAudio.push(range.startContainer.nextSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNullOrUndefined(range.startContainer.childNodes[range.startOffset]) &&\n this.isAudioElem(range.startContainer.childNodes[range.startOffset])) {\n this.deletedAudio.push(range.startContainer.childNodes[range.startOffset]);\n }\n };\n Audio.prototype.undoStack = function (args) {\n if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {\n for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {\n var temp = this.parent.createElement('div');\n var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);\n temp.appendChild(contentElem);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Audio.prototype.touchStart = function (e, ele) {\n if (this.parent.readonly) {\n return;\n }\n this.prevSelectedAudEle = this.audEle;\n };\n Audio.prototype.onToolbarAction = function (args) {\n if (isIDevice$1()) {\n this.parent.notify(selectionRestore, {});\n }\n var item = args.args.item;\n switch (item.subCommand) {\n case 'AudioReplace':\n this.parent.notify(insertAudio, args);\n break;\n case 'AudioRemove':\n this.parent.notify(audioDelete, args);\n break;\n }\n };\n // eslint-disable-next-line\n Audio.prototype.onKeyUp = function (event) {\n if (!isNullOrUndefined(this.deletedAudio) && this.deletedAudio.length > 0) {\n for (var i = 0; i < this.deletedAudio.length - 1; i++) {\n var args = {\n element: this.deletedAudio[i].querySelector('audio'),\n src: this.deletedAudio[i].querySelector('source').getAttribute('src')\n };\n this.parent.trigger(afterMediaDelete, args);\n }\n }\n };\n Audio.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n this.deletedAudio = [];\n var isCursor;\n var keyCodeValues = [27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,\n 44, 45, 9, 16, 17, 18, 19, 20, 33, 34, 35, 36, 37, 38, 39, 40, 91, 92, 93, 144, 145, 182, 183];\n if (this.parent.editorMode === 'HTML') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n isCursor = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n }\n if (!isCursor && this.parent.editorMode === 'HTML' && keyCodeValues.indexOf(originalEvent.which) < 0) {\n var nodes = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n for (var i = 0; i < nodes.length; i++) {\n if (this.isAudioElem(nodes[i])) {\n this.deletedAudio.push(nodes[i]);\n }\n }\n }\n if (this.parent.editorMode === 'HTML' && ((originalEvent.which === 8 && originalEvent.code === 'Backspace') ||\n (originalEvent.which === 46 && originalEvent.code === 'Delete'))) {\n var isCursor_1 = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n if ((originalEvent.which === 8 && originalEvent.code === 'Backspace' && isCursor_1)) {\n this.checkAudioBack(range);\n }\n else if ((originalEvent.which === 46 && originalEvent.code === 'Delete' && isCursor_1)) {\n this.checkAudioDel(range);\n }\n }\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&\n originalEvent.code !== 'KeyK') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&\n (this.isAudioElem(selectParentEle[0])) && selectParentEle[0].parentElement) {\n var prev = selectParentEle[0].parentElement.childNodes[0];\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), prev, prev, prev.textContent.length, prev.textContent.length);\n removeClass([selectParentEle[0]], CLS_AUD_FOCUS);\n this.quickToolObj.audioQTBar.hidePopup();\n }\n }\n if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {\n this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });\n }\n if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {\n if (selectNodeEle && this.isAudioElem(selectNodeEle[0]) && selectNodeEle.length < 1) {\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n originalEvent.preventDefault();\n var event_1 = {\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,\n args: {\n item: { command: 'Audios', subCommand: 'AudioRemove' },\n originalEvent: originalEvent\n }\n };\n this.deleteAudio(event_1, originalEvent.keyCode);\n }\n }\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'backspace':\n case 'delete':\n for (var i = 0; i < this.deletedAudio.length; i++) {\n var src = this.deletedAudio[i].src;\n this.audioRemovePost(src);\n }\n if (this.parent.editorMode !== 'Markdown') {\n if (range.startContainer.nodeType === 3) {\n if (originalEvent.code === 'Backspace') {\n if (range.startContainer.previousElementSibling && range.startOffset === 0 &&\n range.startContainer.previousElementSibling.classList.contains(CLS_AUDIOWRAP)) {\n detach(range.startContainer.previousElementSibling);\n }\n }\n else {\n if (range.startContainer.nextElementSibling &&\n range.endContainer.textContent.length === range.endOffset &&\n range.startContainer.nextElementSibling.classList.contains(CLS_AUDIOWRAP)) {\n detach(range.startContainer.nextElementSibling);\n }\n }\n }\n else if (range.startContainer.nodeType === 1 && (range.startContainer.classList &&\n (range.startContainer.classList.contains(CLS_AUDIOWRAP) ||\n range.startContainer.classList.contains(CLS_CLICKELEM) ||\n range.startContainer.classList.contains(CLS_VID_CLICK_ELEM)))) {\n detach(range.startContainer);\n }\n }\n break;\n case 'insert-audio':\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);\n originalEvent.preventDefault();\n break;\n }\n };\n Audio.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n if (!isInternal && !isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection)) {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = selection;\n selectNodeEle = ele;\n selectParentEle = parentEle;\n }\n if (this.parent.editorMode === 'HTML') {\n this.insertAudio({\n args: {\n item: { command: 'Audios', subCommand: 'Audio' },\n originalEvent: event\n },\n selectNode: selectNodeEle,\n selection: save,\n selectParent: selectParentEle\n });\n }\n };\n Audio.prototype.showDialog = function () {\n this.openDialog(false);\n };\n Audio.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Audio.prototype.deleteAudio = function (e, keyCode) {\n if (!this.isAudioElem(e.selectNode[0])) {\n return;\n }\n if (this.audEle) {\n if (e.selectNode[0].nodeType === 3) {\n e.selectNode[0] = this.audEle;\n }\n else if (this.isAudioElem(e.selectNode[0])) {\n e.selectNode[0] = e.selectNode[0].classList.contains(CLS_AUDIOWRAP) ? e.selectNode[0] :\n e.selectNode[0].parentElement;\n }\n }\n var args = {\n element: e.selectNode[0].querySelector('audio'),\n src: e.selectNode[0].querySelector('source').getAttribute('src')\n };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n e.selection.restore();\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n this.audioRemovePost(args.src);\n if (this.quickToolObj && document.body.contains(this.quickToolObj.audioQTBar.element)) {\n this.quickToolObj.audioQTBar.hidePopup();\n }\n if (isNullOrUndefined(keyCode)) {\n this.parent.trigger(afterMediaDelete, args);\n }\n };\n Audio.prototype.audioRemovePost = function (src) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var absoluteUrl = '';\n if (isNullOrUndefined(this.parent.insertAudioSettings.removeUrl) || this.parent.insertAudioSettings.removeUrl === '') {\n return;\n }\n if (src.indexOf('http://') > -1 || src.indexOf('https://') > -1) {\n absoluteUrl = src;\n }\n else {\n absoluteUrl = new URL(src, document.baseURI).href;\n }\n this.removingAudioName = absoluteUrl.replace(/^.*[\\\\/]/, '');\n var xhr = new XMLHttpRequest();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n xhr.addEventListener('readystatechange', function () {\n if (this.readyState === 4 && this.status === 200) {\n proxy.triggerPost(this.response);\n }\n });\n xhr.open('GET', absoluteUrl);\n xhr.responseType = 'blob';\n xhr.send();\n };\n Audio.prototype.triggerPost = function (response) {\n var removeUrl = this.parent.insertAudioSettings.removeUrl;\n if (isNullOrUndefined(removeUrl) || removeUrl === '') {\n return;\n }\n var file = new File([response], this.removingAudioName);\n var ajax = new Ajax(removeUrl, 'POST', true, null);\n var formData = new FormData();\n formData.append('UploadFiles', file);\n ajax.send(formData);\n };\n Audio.prototype.audioClick = function (e) {\n if (Browser.isDevice) {\n if (this.isAudioElem(e.target)) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'false');\n e.target.focus();\n }\n else {\n if (!this.parent.readonly) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'true');\n }\n }\n }\n if (this.isAudioElem(e.target)) {\n this.audEle = e.target.querySelector('audio');\n e.preventDefault();\n }\n };\n Audio.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (this.isAudioElem(target)) {\n this.audEle = target.querySelector('audio');\n }\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable && this.parent.getToolbarElement() &&\n !this.parent.getToolbarElement().contains(e.target)) ||\n (this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_Audio') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_Audio')))) {\n /* eslint-disable */\n if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {\n }\n else {\n this.dialogObj.hide({ returnValue: true });\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n /* eslint-enable */\n }\n if (this.contentModule.getEditPanel().querySelector('.' + CLS_AUD_FOCUS)) {\n if (!this.isAudioElem(e.target) && !isNullOrUndefined(this.audEle)) {\n this.audEle.style.outline = '';\n }\n else if (!isNullOrUndefined(this.prevSelectedAudEle) && this.prevSelectedAudEle !== target) {\n this.prevSelectedAudEle.style.outline = '';\n }\n }\n };\n Audio.prototype.alignmentSelect = function (e) {\n var item = e.item;\n if (!document.body.contains(document.body.querySelector('.e-rte-quick-toolbar')) || item.command !== 'Audios') {\n return;\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectNodeEle = [this.audEle];\n var args = { args: e, selectNode: selectNodeEle };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n switch (item.subCommand) {\n case 'Inline':\n this.inline(args);\n break;\n case 'Break':\n this.break(args);\n break;\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.audioQTBar.element)) {\n this.quickToolObj.audioQTBar.hidePopup();\n removeClass([selectNodeEle[0]], CLS_AUD_FOCUS);\n }\n };\n Audio.prototype.break = function (e) {\n if (e.selectNode[0].nodeName !== 'AUDIO') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Break';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Audio.prototype.inline = function (e) {\n if (e.selectNode[0].nodeName !== 'AUDIO') {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Inline';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Audio.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideAudioQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n if ((showOnRightClick && args.which === 1) && !isNullOrUndefined(args.target) &&\n this.isAudioElem(args.target)) {\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), args.target);\n }\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.audioQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.audioQTBar.element.classList.contains('e-rte-pop');\n if (this.isAudioElem(target) && this.parent.quickToolbarModule) {\n if (isPopupOpen) {\n return;\n }\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);\n if (isIDevice$1()) {\n this.parent.notify(selectionSave, e);\n }\n target.querySelector('audio').style.outline = '2px solid #4a90e2';\n this.showAudioQuickToolbar({ args: args, type: 'Audios', elements: [args.target] });\n }\n else {\n this.hideAudioQuickToolbar();\n }\n }\n };\n Audio.prototype.isAudioElem = function (target) {\n if (target && target.nodeType !== 3 && target.nodeName !== 'BR' && (target.classList &&\n (target.classList.contains(CLS_AUDIOWRAP) || target.classList.contains(CLS_CLICKELEM)))) {\n return true;\n }\n else {\n return false;\n }\n };\n Audio.prototype.showAudioQuickToolbar = function (e) {\n var _this = this;\n if (e.type !== 'Audios' || isNullOrUndefined(this.parent.quickToolbarModule)\n || isNullOrUndefined(this.parent.quickToolbarModule.audioQTBar) || isNullOrUndefined(e.args)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var args = e.args;\n var target = e.elements;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target = element;\n }\n });\n if (this.isAudioElem(target)) {\n addClass([target.querySelector('audio')], [CLS_AUD_FOCUS]);\n target.querySelector('audio').style.outline = '2px solid #4a90e2';\n }\n if (this.parent.quickToolbarModule.audioQTBar) {\n if (e.isNotify) {\n setTimeout(function () {\n _this.parent.formatter.editorManager.nodeSelection.Clear(_this.contentModule.getDocument());\n _this.parent.formatter.editorManager.nodeSelection.setSelectionContents(_this.contentModule.getDocument(), target);\n _this.quickToolObj.audioQTBar.showPopup(args.pageX - 50, target.getBoundingClientRect().top + 34, target);\n }, 400);\n }\n else {\n this.quickToolObj.audioQTBar.showPopup(args.pageX - 50, target.getBoundingClientRect().top + 34, target);\n }\n }\n };\n Audio.prototype.hideAudioQuickToolbar = function () {\n if (!isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.' + CLS_AUD_FOCUS))) {\n removeClass([this.contentModule.getEditPanel().querySelector('.' + CLS_AUD_FOCUS)], CLS_AUD_FOCUS);\n if (!isNullOrUndefined(this.audEle)) {\n this.audEle.style.outline = '';\n }\n if (this.quickToolObj && this.quickToolObj.audioQTBar && document.body.contains(this.quickToolObj.audioQTBar.element)) {\n this.quickToolObj.audioQTBar.hidePopup();\n }\n }\n };\n Audio.prototype.insertingAudio = function (e) {\n this.insertAudio(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.element.style.maxHeight = 'inherit';\n var dialogContent = this.dialogObj.element.querySelector('.e-audio-content');\n if (!isNullOrUndefined(this.parent.insertAudioSettings.path) || this.parent.editorMode === 'HTML') {\n document.getElementById(this.rteID + '_insertAudio').focus();\n }\n else {\n dialogContent.querySelector('.e-audio-url').focus();\n }\n }\n };\n Audio.prototype.insertAudio = function (e) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n var audioDialog = this.parent.createElement('div', { className: 'e-rte-audio-dialog', id: this.rteID + '_audio' });\n this.parent.element.appendChild(audioDialog);\n var audioInsert = this.i10n.getConstant('dialogInsert');\n var audiolinkCancel = this.i10n.getConstant('dialogCancel');\n var audioHeader = this.i10n.getConstant('audioHeader');\n var selection = e.selection;\n var selectObj = { selfAudio: this, selection: e.selection, args: e.args, selectParent: e.selectParent };\n var dialogModel = {\n header: audioHeader,\n cssClass: CLS_RTE_ELEMENTS,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px',\n position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertAudioUrl.bind(selectObj),\n buttonModel: { content: audioInsert, cssClass: 'e-flat e-insertAudio', isPrimary: true, disabled: true }\n },\n {\n click: function (e) {\n _this.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel', content: audiolinkCancel }\n }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n if (_this.isAudioUploaded) {\n _this.uploadObj.removing();\n }\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n _this.dialogRenderObj.close(event);\n _this.dialogObj = null;\n }\n };\n var dialogContent = this.parent.createElement('div', { className: 'e-audio-content' });\n if (!isNullOrUndefined(this.parent.insertAudioSettings.path) || this.parent.editorMode === 'HTML') {\n dialogContent.appendChild(this.audioUpload(e));\n }\n var linkHeader = this.parent.createElement('div', { className: 'e-audioheader' });\n var linkHeaderText = this.i10n.getConstant('audioLinkHeader');\n if (this.parent.editorMode === 'HTML') {\n linkHeader.innerHTML = linkHeaderText;\n }\n dialogContent.appendChild(linkHeader);\n dialogContent.appendChild(this.audioUrlPopup(e));\n if (e.selectNode && e.selectNode[0].nodeType === 1 && this.isAudioElem(e.selectNode[0])) {\n dialogModel.header = this.parent.localeObj.getConstant('editAudioHeader');\n dialogModel.content = dialogContent;\n }\n else {\n dialogModel.content = dialogContent;\n }\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(audioDialog);\n if (e.selectNode && e.selectNode[0].nodeType === 1 && this.isAudioElem(e.selectNode[0]) && (e.name === 'insertAudio')) {\n this.dialogObj.element.querySelector('.e-insertAudio').textContent = this.parent.localeObj.getConstant('dialogUpdate');\n }\n audioDialog.style.maxHeight = 'inherit';\n if (this.quickToolObj) {\n if (this.quickToolObj.audioQTBar && document.body.contains(this.quickToolObj.audioQTBar.element)) {\n this.quickToolObj.audioQTBar.hidePopup();\n }\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Audio.prototype.audioUrlPopup = function (e) {\n var _this = this;\n var audioUrl = this.parent.createElement('div', { className: 'audioUrl' });\n var placeUrl = this.i10n.getConstant('audioUrl');\n this.inputUrl = this.parent.createElement('input', {\n className: 'e-input e-audio-url',\n attrs: { placeholder: placeUrl, spellcheck: 'false', 'aria-label': this.i10n.getConstant('audioLinkHeader') }\n });\n this.inputUrl.addEventListener('input', function () {\n if (!isNullOrUndefined(_this.inputUrl)) {\n if (_this.inputUrl.value.length === 0) {\n _this.dialogObj.getButtons(0).element.disabled = true;\n }\n else {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n }\n });\n audioUrl.appendChild(this.inputUrl);\n return audioUrl;\n };\n Audio.prototype.audioUpload = function (e) {\n var _this = this;\n var save;\n var selectParent;\n // eslint-disable-next-line\n var proxy = this;\n var iframe = proxy.parent.iframeSettings.enable;\n if (proxy.parent.editorMode === 'HTML' && (!iframe && isNullOrUndefined(closest(e.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + this.parent.contentModule.getPanel().id + \"'\" + ']'))\n || (iframe && !hasClass(e.selection.range.startContainer.parentNode.ownerDocument.querySelector('body'), 'e-lib')))) {\n this.contentModule.getEditPanel().focus();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = e.selection;\n selectParent = e.selectParent;\n }\n var uploadParentEle = this.parent.createElement('div', { className: 'e-aud-uploadwrap e-droparea' });\n var deviceAudioUpMsg = this.i10n.getConstant('audioDeviceUploadMessage');\n var audioUpMsg = this.i10n.getConstant('audioUploadMessage');\n var span = this.parent.createElement('span', { className: 'e-droptext' });\n var spanMsg = this.parent.createElement('span', {\n className: 'e-rte-upload-text', innerHTML: ((Browser.isDevice) ? deviceAudioUpMsg : audioUpMsg)\n });\n span.appendChild(spanMsg);\n var btnEle = this.parent.createElement('button', {\n className: 'e-browsebtn', id: this.rteID + '_insertAudio', attrs: { autofocus: 'true', type: 'button' }\n });\n span.appendChild(btnEle);\n uploadParentEle.appendChild(span);\n var browserMsg = this.i10n.getConstant('browse');\n var button = new Button({ content: browserMsg, enableRtl: this.parent.enableRtl });\n button.isStringTemplate = true;\n button.createElement = this.parent.createElement;\n button.appendTo(btnEle);\n var btnClick = (Browser.isDevice) ? span : btnEle;\n EventHandler.add(btnClick, 'click', this.fileSelect, this);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }\n });\n uploadParentEle.appendChild(uploadEle);\n var fileName;\n var rawFile;\n var selectArgs;\n var filesData;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: { saveUrl: this.parent.insertAudioSettings.saveUrl, removeUrl: this.parent.insertAudioSettings.removeUrl },\n dropArea: span, multiple: false, enableRtl: this.parent.enableRtl,\n allowedExtensions: this.parent.insertAudioSettings.allowedTypes.toString(),\n selected: function (e) {\n proxy.isAudioUploaded = true;\n selectArgs = e;\n filesData = e.filesData;\n if (_this.parent.isServerRendered) {\n selectArgs = JSON.parse(JSON.stringify(e));\n e.cancel = true;\n rawFile = e.filesData;\n selectArgs.filesData = rawFile;\n }\n _this.parent.trigger(fileSelected, selectArgs, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.checkExtension(selectArgs.filesData[0]);\n fileName = selectArgs.filesData[0].name;\n if (_this.parent.editorMode === 'HTML' && isNullOrUndefined(_this.parent.insertAudioSettings.path)) {\n var reader_1 = new FileReader();\n // eslint-disable-next-line\n reader_1.addEventListener('load', function (e) {\n var url = _this.parent.insertAudioSettings.saveFormat === 'Base64' ? reader_1.result :\n URL.createObjectURL(convertToBlob(reader_1.result));\n proxy.uploadUrl = {\n url: url, selection: save, fileName: fileName,\n selectParent: selectParent\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n if (isNullOrUndefined(proxy.parent.insertAudioSettings.saveUrl) && _this.isAllowedTypes\n && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n reader_1.readAsDataURL(selectArgs.filesData[0].rawFile);\n }\n if (_this.parent.isServerRendered) {\n /* eslint-disable */\n _this.uploadObj._internalRenderSelect(selectArgs, rawFile);\n /* eslint-enable */\n }\n }\n });\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = filesData;\n args.cancel = true;\n _this.parent.trigger(fileUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(beforeFileUpload, args);\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n _this.parent.trigger(fileUploading, e);\n }\n },\n success: function (e) {\n _this.parent.trigger(fileUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertAudioSettings.path)) {\n var url = _this.parent.insertAudioSettings.path + e.file.name;\n // eslint-disable-next-line\n proxy.uploadUrl = {\n url: url, selection: save, fileName: fileName, selectParent: selectParent\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n }\n if (e.operation === 'upload' && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n },\n failure: function (e) {\n _this.parent.trigger(fileUploadFailed, e);\n },\n removing: function () {\n // eslint-disable-next-line\n _this.parent.trigger(fileRemoving, e, function (e) {\n proxy.isAudioUploaded = false;\n _this.dialogObj.getButtons(0).element.disabled = true;\n proxy.inputUrl.removeAttribute('disabled');\n if (proxy.uploadUrl) {\n proxy.uploadUrl.url = '';\n }\n });\n }\n });\n this.uploadObj.isStringTemplate = true;\n this.uploadObj.createElement = this.parent.createElement;\n this.uploadObj.appendTo(uploadEle);\n return uploadParentEle;\n };\n Audio.prototype.checkExtension = function (e) {\n if (this.uploadObj.allowedExtensions) {\n if (this.uploadObj.allowedExtensions.toLocaleLowerCase().indexOf(('.' + e.type).toLocaleLowerCase()) === -1) {\n this.dialogObj.getButtons(0).element.setAttribute('disabled', 'disabled');\n this.isAllowedTypes = false;\n }\n else {\n this.isAllowedTypes = true;\n }\n }\n };\n Audio.prototype.fileSelect = function () {\n this.dialogObj.element.getElementsByClassName('e-file-select-wrap')[0].querySelector('button').click();\n return false;\n };\n // eslint-disable-next-line\n Audio.prototype.cancelDialog = function (e) {\n this.parent.isBlur = false;\n this.dialogObj.hide({ returnValue: true });\n if (this.isAudioUploaded) {\n this.uploadObj.removing();\n }\n };\n // eslint-disable-next-line\n Audio.prototype.insertAudioUrl = function (e) {\n var proxy = this.selfAudio;\n //let audioSelectParent: Node = proxy.uploadUrl.selectParent[0];\n proxy.isAudioUploaded = false;\n var url = proxy.inputUrl.value;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (!isNullOrUndefined(proxy.uploadUrl) && proxy.uploadUrl.url !== '') {\n proxy.uploadUrl.cssClass = (proxy.parent.insertAudioSettings.layoutOption === 'Inline' ?\n CLS_AUDIOINLINE : CLS_AUDIOBREAK);\n proxy.dialogObj.hide({ returnValue: false });\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);\n proxy.uploadUrl.url = '';\n }\n else if (url !== '') {\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(\n // eslint-disable-next-line\n this.selection.range.startContainer.parentNode, '[id=' + \"'\" + proxy.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.contentModule.getEditPanel().focus();\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var name_1 = proxy.parent.editorMode === 'HTML' ? url.split('/')[url.split('/').length - 1] : '';\n var value = {\n cssClass: (proxy.parent.insertAudioSettings.layoutOption === 'Inline' ? CLS_AUDIOINLINE : CLS_AUDIOBREAK),\n url: url, selection: this.selection, fileName: name_1,\n selectParent: this.selectParent\n };\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);\n proxy.dialogObj.hide({ returnValue: false });\n }\n };\n /* eslint-disable */\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-enable */\n Audio.prototype.destroy = function () {\n this.prevSelectedAudEle = undefined;\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Audio.prototype.getModuleName = function () {\n return 'audio';\n };\n return Audio;\n}());\n\nvar Video = /** @__PURE__ @class */ (function () {\n function Video(parent, serviceLocator) {\n this.isVideoUploaded = false;\n this.isAllowedTypes = true;\n this.pageX = null;\n this.pageY = null;\n this.deletedVid = [];\n this.parent = parent;\n this.rteID = parent.element.id;\n this.i10n = serviceLocator.getService('rteLocale');\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n this.addEventListener();\n }\n Video.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(keyDown, this.onKeyDown, this);\n this.parent.on(keyUp, this.onKeyUp, this);\n this.parent.on(insertVideo, this.insertingVideo, this);\n this.parent.on(initialEnd, this.afterRender, this);\n this.parent.on(dynamicModule, this.afterRender, this);\n this.parent.on(windowResize, this.onWindowResize, this);\n this.parent.on(showVideoDialog, this.showDialog, this);\n this.parent.on(closeVideoDialog, this.closeDialog, this);\n this.parent.on(dropDownSelect, this.alignmentSelect, this);\n this.parent.on(videoDelete, this.deleteVideo, this);\n this.parent.on(videoToolbarAction, this.onToolbarAction, this);\n this.parent.on(editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(iframeMouseDown, this.onIframeMouseDown, this);\n this.parent.on(videoSize, this.videoSize, this);\n this.parent.on(insertCompleted, this.showVideoQuickToolbar, this);\n this.parent.on(clearDialogObj, this.clearDialogObj, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n Video.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(keyDown, this.onKeyDown);\n this.parent.off(keyUp, this.onKeyUp);\n this.parent.off(insertVideo, this.insertingVideo);\n this.parent.off(windowResize, this.onWindowResize);\n this.parent.off(initialEnd, this.afterRender);\n this.parent.off(dynamicModule, this.afterRender);\n this.parent.off(showVideoDialog, this.showDialog);\n this.parent.off(closeVideoDialog, this.closeDialog);\n this.parent.off(dropDownSelect, this.alignmentSelect);\n this.parent.off(videoDelete, this.deleteVideo);\n this.parent.off(videoToolbarAction, this.onToolbarAction);\n this.parent.off(editAreaClick, this.editAreaClickHandler);\n this.parent.off(iframeMouseDown, this.onIframeMouseDown);\n this.parent.off(videoSize, this.videoSize);\n this.parent.off(insertCompleted, this.showVideoQuickToolbar);\n this.parent.off(clearDialogObj, this.clearDialogObj);\n this.parent.off(destroy, this.removeEventListener);\n if (!isNullOrUndefined(this.contentModule)) {\n EventHandler.remove(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.videoClick);\n this.parent.formatter.editorManager.observer.off(checkUndo, this.undoStack);\n if (this.parent.insertVideoSettings.resize) {\n EventHandler.remove(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart);\n EventHandler.remove(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick);\n EventHandler.remove(this.contentModule.getEditPanel(), 'cut', this.onCutHandler);\n }\n }\n };\n Video.prototype.afterRender = function () {\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n EventHandler.add(this.contentModule.getEditPanel(), Browser.touchEndEvent, this.videoClick, this);\n if (this.parent.insertVideoSettings.resize) {\n EventHandler.add(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart, this);\n EventHandler.add(this.parent.element.ownerDocument, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.contentModule.getEditPanel(), 'cut', this.onCutHandler, this);\n }\n };\n Video.prototype.clearDialogObj = function () {\n if (this.dialogObj) {\n this.dialogObj.destroy();\n detach(this.dialogObj.element);\n this.dialogObj = null;\n }\n };\n // eslint-disable-next-line\n Video.prototype.onKeyUp = function (event) {\n if (!isNullOrUndefined(this.deletedVid) && this.deletedVid.length > 0) {\n for (var i = 0; i < this.deletedVid.length; i++) {\n var args = {\n element: this.deletedVid[i],\n src: this.deletedVid[i].tagName !== 'IFRAME' ? this.deletedVid[i].querySelector('source').getAttribute('src') :\n this.deletedVid[i].src\n };\n this.parent.trigger(afterMediaDelete, args);\n }\n }\n };\n Video.prototype.undoStack = function (args) {\n if (args.subCommand.toLowerCase() === 'undo' || args.subCommand.toLowerCase() === 'redo') {\n for (var i = 0; i < this.parent.formatter.getUndoRedoStack().length; i++) {\n var temp = this.parent.createElement('div');\n var contentElem = parseHtml(this.parent.formatter.getUndoRedoStack()[i].text);\n temp.appendChild(contentElem);\n var vid = temp.querySelectorAll('video');\n if (temp.querySelector('.e-vid-resize') && vid.length > 0) {\n for (var j = 0; j < vid.length; j++) {\n vid[j].style.outline = '';\n }\n detach(temp.querySelector('.e-vid-resize'));\n this.parent.formatter.getUndoRedoStack()[i].text = temp.innerHTML;\n }\n }\n }\n };\n Video.prototype.onIframeMouseDown = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Video.prototype.videoSize = function (e) {\n var _this = this;\n if (e.selectNode[0].nodeName !== 'VIDEO' && !this.isEmbedVidElem(e.selectNode[0])) {\n return;\n }\n this.insertVideo(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n var vidSizeHeader = this.i10n.getConstant('videoSizeHeader');\n var linkUpdate = this.i10n.getConstant('dialogUpdate');\n var dialogContent = this.vidsizeInput(e);\n var selectObj_1 = { args: e.args, selfVideo: this, selection: e.selection, selectNode: e.selectNode };\n this.dialogObj.setProperties({\n height: 'inherit', width: '290px', header: vidSizeHeader, content: dialogContent, position: { X: 'center', Y: 'center' },\n buttons: [{\n // eslint-disable-next-line\n click: function (e) {\n _this.insertSize(selectObj_1);\n },\n buttonModel: {\n content: linkUpdate, cssClass: 'e-flat e-update-size', isPrimary: true\n }\n }]\n });\n this.dialogObj.element.style.maxHeight = 'inherit';\n this.dialogObj.content.querySelector('input').focus();\n }\n };\n Video.prototype.vidsizeInput = function (e) {\n var _this = this;\n var selectNode = e.selectNode[0];\n var vidHeight = this.i10n.getConstant('videoHeight');\n var vidWidth = this.i10n.getConstant('videoWidth');\n var vidSizeWrap = this.parent.createElement('div', { className: 'e-video-sizewrap' });\n var widthVal = isNullOrUndefined(this.changedWidthValue) && (selectNode.style.width.toString() === 'auto' ||\n selectNode.style.width !== '') ? selectNode.style.width : !isNullOrUndefined(this.changedWidthValue) ?\n this.changedWidthValue : (parseInt(selectNode.getClientRects()[0].width.toString(), 10)).toString();\n var heightVal = isNullOrUndefined(this.changedHeightValue) && (selectNode.style.height.toString() === 'auto' ||\n selectNode.style.height !== '') ? selectNode.style.height : !isNullOrUndefined(this.changedHeightValue) ?\n this.changedHeightValue : (parseInt(selectNode.getClientRects()[0].height.toString(), 10)).toString();\n this.changedWidthValue = null;\n this.changedHeightValue = null;\n var content = '
    ' +\n '
    ' + '
    ' +\n '
    ';\n var contentElem = parseHtml(content);\n vidSizeWrap.appendChild(contentElem);\n var widthNum = new TextBox({\n value: formatUnit(widthVal),\n enableRtl: this.parent.enableRtl,\n input: function (e) {\n _this.inputWidthValue = formatUnit((e.value));\n }\n });\n widthNum.createElement = this.parent.createElement;\n widthNum.appendTo(vidSizeWrap.querySelector('#vidwidth'));\n var heightNum = new TextBox({\n value: formatUnit(heightVal),\n enableRtl: this.parent.enableRtl,\n input: function (e) {\n _this.inputHeightValue = formatUnit((e.value));\n }\n });\n heightNum.createElement = this.parent.createElement;\n heightNum.appendTo(vidSizeWrap.querySelector('#vidheight'));\n return vidSizeWrap;\n };\n Video.prototype.insertSize = function (e) {\n e.selection.restore();\n var proxy = e.selfVideo;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n var dialogEle = proxy.dialogObj.element;\n this.changedWidthValue = this.inputWidthValue;\n this.changedHeightValue = this.inputHeightValue;\n var width = dialogEle.querySelector('.e-vid-width').value;\n var height = dialogEle.parentElement.querySelector('.e-vid-height').value;\n proxy.parent.formatter.process(this.parent, e.args, e.args, {\n width: width, height: height, selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n if (this.vidResizeDiv) {\n e.selectNode[0] = (e.selectNode[0].tagName === 'VIDEO' || e.selectNode[0].tagName === 'IFRAME') ?\n e.selectNode[0] : e.selectNode[0].querySelector('iframe');\n proxy.vidResizePos(e.selectNode[0], this.vidResizeDiv);\n }\n proxy.dialogObj.hide({ returnValue: true });\n };\n Video.prototype.resizeEnd = function (e) {\n this.resizeBtnInit();\n this.videoEle.parentElement.style.cursor = 'auto';\n if (Browser.isDevice) {\n removeClass([e.target.parentElement], 'e-mob-span');\n }\n var args = { event: e, requestType: 'videos' };\n this.parent.trigger(resizeStop, args);\n /* eslint-disable */\n var pageX = this.getPointX(e);\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + e.clientY : e.pageY;\n /* eslint-enable */\n this.parent.formatter.editorManager.observer.on(checkUndo, this.undoStack, this);\n this.parent.formatter.saveData();\n };\n Video.prototype.resizeStart = function (e, ele) {\n var _this = this;\n if (this.parent.readonly) {\n return;\n }\n var target = ele ? ele : !this.isEmbedVidElem(e.target) ? e.target : e.target.querySelector('iframe');\n this.prevSelectedVidEle = this.videoEle;\n if (target.tagName === 'VIDEO' || target.tagName === 'IFRAME') {\n this.parent.preventDefaultResize(e);\n var videoElem = target;\n if (this.vidResizeDiv && this.contentModule.getEditPanel().contains(this.vidResizeDiv)) {\n detach(this.vidResizeDiv);\n }\n this.videoResize(videoElem);\n }\n if (target.classList.contains('e-rte-videoboxmark')) {\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n this.pageX = this.getPointX(e);\n this.pageY = this.getPointY(e);\n e.preventDefault();\n e.stopImmediatePropagation();\n this.resizeBtnInit();\n if (this.quickToolObj) {\n this.quickToolObj.videoQTBar.hidePopup();\n }\n if (target.classList.contains('e-rte-topLeft')) {\n this.resizeBtnStat.topLeft = true;\n }\n if (target.classList.contains('e-rte-topRight')) {\n this.resizeBtnStat.topRight = true;\n }\n if (target.classList.contains('e-rte-botLeft')) {\n this.resizeBtnStat.botLeft = true;\n }\n if (target.classList.contains('e-rte-botRight')) {\n this.resizeBtnStat.botRight = true;\n }\n if (Browser.isDevice && this.contentModule.getEditPanel().contains(this.vidResizeDiv) &&\n !this.vidResizeDiv.classList.contains('e-mob-span')) {\n addClass([this.vidResizeDiv], 'e-mob-span');\n }\n else {\n var args = { event: e, requestType: 'videos' };\n this.parent.trigger(resizeStart, args, function (resizeStartArgs) {\n if (resizeStartArgs.cancel) {\n _this.cancelResizeAction();\n }\n });\n }\n EventHandler.add(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd, this);\n }\n };\n Video.prototype.videoClick = function (e) {\n if (Browser.isDevice) {\n if ((e.target.tagName === 'VIDEO' || this.isEmbedVidElem(e.target))) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'false');\n e.target.focus();\n }\n else {\n if (!this.parent.readonly) {\n this.contentModule.getEditPanel().setAttribute('contenteditable', 'true');\n }\n }\n }\n if (e.target.tagName === 'VIDEO' || this.isEmbedVidElem(e.target)) {\n e.preventDefault();\n }\n };\n Video.prototype.onCutHandler = function () {\n if (this.vidResizeDiv && this.contentModule.getEditPanel().contains(this.vidResizeDiv)) {\n this.cancelResizeAction();\n }\n };\n Video.prototype.videoResize = function (e) {\n this.resizeBtnInit();\n this.videoEle = e;\n addClass([this.videoEle], 'e-resize');\n this.vidResizeDiv = this.parent.createElement('span', { className: 'e-vid-resize', id: this.rteID + '_vidResize' });\n this.vidResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-videoboxmark e-rte-topLeft', styles: 'cursor: nwse-resize'\n }));\n this.vidResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-videoboxmark e-rte-topRight', styles: 'cursor: nesw-resize'\n }));\n this.vidResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-videoboxmark e-rte-botLeft', styles: 'cursor: nesw-resize'\n }));\n this.vidResizeDiv.appendChild(this.parent.createElement('span', {\n className: 'e-rte-videoboxmark e-rte-botRight', styles: 'cursor: nwse-resize'\n }));\n if (Browser.isDevice) {\n addClass([this.vidResizeDiv], 'e-mob-rte');\n }\n e.style.outline = '2px solid #4a90e2';\n this.vidResizePos(e, this.vidResizeDiv);\n this.resizeVidDupPos(e);\n this.contentModule.getEditPanel().appendChild(this.vidResizeDiv);\n EventHandler.add(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing, this);\n };\n Video.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Video.prototype.getPointY = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageY;\n }\n else {\n return e.pageY;\n }\n };\n Video.prototype.vidResizePos = function (e, vidResizeDiv) {\n if (isNullOrUndefined(vidResizeDiv)) {\n return;\n }\n var pos = this.calcPos(e);\n var top = pos.top;\n var left = pos.left;\n var vidWid = e.width !== 0 && e.width !== 'auto' && e.width !== 'NaN' ? e.width : e.getBoundingClientRect().width;\n var vidHgt = e.height !== 0 && e.height !== 'auto' && e.height !== 'NaN' ? e.height : e.getBoundingClientRect().height;\n var borWid = (Browser.isDevice) ? (4 * parseInt((e.style.outline.slice(-3)), 10)) + 2 :\n (2 * parseInt((e.style.outline.slice(-3)), 10)) + 2; //span border width + video outline width\n var devWid = ((Browser.isDevice) ? 0 : 2); // span border width\n vidResizeDiv.querySelector('.e-rte-botLeft').style.left = (left - borWid) + 'px';\n vidResizeDiv.querySelector('.e-rte-botLeft').style.top = ((parseInt(vidHgt.toString(), 10) - borWid) + top) + 'px';\n vidResizeDiv.querySelector('.e-rte-botRight').style.left = ((parseInt(vidWid.toString(), 10) - (borWid - devWid)) + left) + 'px';\n vidResizeDiv.querySelector('.e-rte-botRight').style.top = ((parseInt(vidHgt.toString(), 10) - borWid) + top) + 'px';\n vidResizeDiv.querySelector('.e-rte-topRight').style.left = ((parseInt(vidWid.toString(), 10) - (borWid - devWid)) + left) + 'px';\n vidResizeDiv.querySelector('.e-rte-topRight').style.top = (top - (borWid)) + 'px';\n vidResizeDiv.querySelector('.e-rte-topLeft').style.left = (left - borWid) + 'px';\n vidResizeDiv.querySelector('.e-rte-topLeft').style.top = (top - borWid) + 'px';\n };\n Video.prototype.calcPos = function (elem) {\n var ignoreOffset = ['TD', 'TH', 'TABLE', 'A'];\n var parentOffset = { top: 0, left: 0 };\n var elementOffset;\n var doc = elem.ownerDocument;\n var offsetParent = ((elem.offsetParent && (elem.offsetParent.classList.contains('e-video-clickelem') ||\n ignoreOffset.indexOf(elem.offsetParent.tagName) > -1)) ? closest(elem, '#' + this.parent.getID() + '_rte-edit-view') : elem.offsetParent) || doc.documentElement;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n if (elem && elem.nodeType === 1 && elem.tagName === 'IFRAME') {\n elementOffset = elem.getBoundingClientRect();\n return {\n top: elementOffset.top - parentOffset.top,\n left: elementOffset.left - parentOffset.left\n };\n }\n else {\n return {\n top: elem.offsetTop,\n left: elem.offsetLeft\n };\n }\n };\n Video.prototype.setAspectRatio = function (vid, expectedX, expectedY, e) {\n var vidEleStyle = getComputedStyle(vid);\n if (isNullOrUndefined(vidEleStyle)) {\n return;\n }\n // eslint-disable-next-line\n var width = vidEleStyle.width !== '' ? vidEleStyle.width.match(/^\\d+(\\.\\d*)?%$/g) ? parseFloat(vidEleStyle.width) :\n parseInt(vidEleStyle.width, 10) : vid.style.width !== '' ? vid.style.width : vid.width;\n var height = vidEleStyle.height !== '' ? parseInt(vidEleStyle.height, 10) : vid.style.height !== '' ? vid.style.height : vid.height;\n if (width > height) {\n vid.style.minWidth = this.parent.insertVideoSettings.minWidth === 0 ? '140px' : formatUnit(this.parent.insertVideoSettings.minWidth);\n vid.style.minHeight = this.parent.insertVideoSettings.minHeight === 0 ? '50px' : formatUnit(this.parent.insertVideoSettings.minHeight);\n if (this.parent.insertVideoSettings.resizeByPercent) {\n if (parseInt('' + vid.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {\n var percentageValue = this.pixToPerc((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY), (vid.previousElementSibling || vid.parentElement));\n vid.style.width = Math.min(Math.round((percentageValue / vid.getBoundingClientRect().width) * expectedX * 100) / 100, 100) + '%';\n }\n else {\n vid.style.width = this.pixToPerc(parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY, (vid.previousElementSibling || vid.parentElement)) + '%';\n }\n vid.style.height = null;\n vid.removeAttribute('height');\n }\n else if ((vid.style.width === '' && vid.style.height !== '') || (vidEleStyle.width === '' && vidEleStyle.height !== '')) {\n vid.style.height = expectedY + 'px';\n }\n else if ((vid.style.width !== '' && vid.style.height === '') || (vidEleStyle.width !== '' && vidEleStyle.height === '')) {\n var currentWidth = ((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) +\n parseInt(width.toString(), 10) / parseInt(height.toString(), 10)) <\n (this.parent.inputElement.getBoundingClientRect().right - 32) ?\n ((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) +\n parseInt(width.toString(), 10) / parseInt(height.toString(), 10)) :\n (this.parent.inputElement.getBoundingClientRect().right - 32);\n vid.style.width = currentWidth.toString() + 'px';\n }\n else if (vid.style.width !== '' || vidEleStyle.width !== '') {\n var currentWidth = (parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) <\n (this.parent.inputElement.getBoundingClientRect().right - 32) ?\n (parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) :\n (this.parent.inputElement.getBoundingClientRect().right - 32);\n vid.style.width = currentWidth + 'px';\n vid.style.height = expectedY + 'px';\n }\n else {\n vid.setAttribute('width', (parseInt(((parseInt(width.toString(), 10) / parseInt(height.toString(), 10) * expectedY) + parseInt(width.toString(), 10) / parseInt(height.toString(), 10)).toString(), 10)).toString());\n }\n }\n else if (height > width) {\n if (this.parent.insertVideoSettings.resizeByPercent) {\n if (parseInt('' + vid.getBoundingClientRect().width + '', 10) !== 0 && parseInt('' + width + '', 10) !== 0) {\n vid.style.width = Math.min(Math.round((parseInt(width.toString(), 10) / vid.getBoundingClientRect().width) * expectedX * 100) / 100, 100) + '%';\n }\n else {\n vid.style.width = this.pixToPerc((expectedX / parseInt(height.toString(), 10) * expectedY), (vid.previousElementSibling || vid.parentElement)) + '%';\n }\n vid.style.height = null;\n vid.removeAttribute('height');\n }\n else if (vid.style.width !== '' || vidEleStyle.width !== '') {\n vid.style.width = expectedX + 'px';\n vid.style.height = (parseInt(height.toString(), 10) / parseInt(width.toString(), 10) * expectedX) + 'px';\n }\n else {\n vid.setAttribute('width', this.resizeBtnStat.botRight ? (this.getPointX(e.event) - vid.getBoundingClientRect().left).toString() : expectedX.toString());\n }\n }\n else {\n if (this.parent.insertVideoSettings.resizeByPercent) {\n vid.style.width = this.pixToPerc(expectedX, (vid.previousElementSibling || vid.parentElement)) + '%';\n vid.style.height = null;\n vid.removeAttribute('height');\n }\n else {\n vid.style.width = expectedX + 'px';\n vid.style.height = expectedX + 'px';\n }\n }\n };\n Video.prototype.pixToPerc = function (expected, parentEle) {\n return expected / parseFloat(getComputedStyle(parentEle).width) * 100;\n };\n Video.prototype.vidDupMouseMove = function (width, height, e) {\n var _this = this;\n var args = { event: e, requestType: 'videos' };\n this.parent.trigger(onResize, args, function (resizingArgs) {\n if (resizingArgs.cancel) {\n _this.cancelResizeAction();\n }\n else {\n if ((parseInt(_this.parent.insertVideoSettings.minWidth, 10) >= parseInt(width, 10) ||\n (parseInt(_this.parent.getInsertVidMaxWidth(), 10) <= parseInt(width, 10) &&\n isNullOrUndefined(_this.videoEle.style.width)))) {\n return;\n }\n if (!_this.parent.insertVideoSettings.resizeByPercent &&\n (parseInt(_this.parent.insertVideoSettings.minHeight, 10) >= parseInt(height, 10) ||\n parseInt(_this.parent.insertVideoSettings.maxHeight, 10) <= parseInt(height, 10))) {\n return;\n }\n _this.videoEle.parentElement.style.cursor = 'pointer';\n _this.setAspectRatio(_this.videoEle, parseInt(width, 10), parseInt(height, 10), args);\n _this.resizeVidDupPos(_this.videoEle);\n _this.vidResizePos(_this.videoEle, _this.vidResizeDiv);\n _this.parent.setContentHeight('', false);\n }\n });\n };\n Video.prototype.resizing = function (e) {\n if (this.videoEle.offsetWidth >= this.parent.getInsertVidMaxWidth()) {\n this.videoEle.style.maxHeight = this.videoEle.offsetHeight + 'px';\n }\n var pageX = this.getPointX(e);\n var pageY = this.getPointY(e);\n var mouseX = (this.resizeBtnStat.botLeft || this.resizeBtnStat.topLeft) ? -(pageX - this.pageX) : (pageX - this.pageX);\n var mouseY = (this.resizeBtnStat.topLeft || this.resizeBtnStat.topRight) ? -(pageY - this.pageY) : (pageY - this.pageY);\n var width = parseInt(this.vidDupPos.width, 10) + mouseX;\n var height = parseInt(this.vidDupPos.height, 10) + mouseY;\n this.pageX = pageX;\n this.pageY = pageY;\n if (this.resizeBtnStat.botRight) {\n this.vidDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.botLeft) {\n this.vidDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topRight) {\n this.vidDupMouseMove(width + 'px', height + 'px', e);\n }\n else if (this.resizeBtnStat.topLeft) {\n this.vidDupMouseMove(width + 'px', height + 'px', e);\n }\n };\n Video.prototype.cancelResizeAction = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n if (this.videoEle && this.vidResizeDiv && this.contentModule.getEditPanel().contains(this.vidResizeDiv)) {\n detach(this.vidResizeDiv);\n this.videoEle.style.outline = '';\n this.vidResizeDiv = null;\n this.pageX = null;\n this.pageY = null;\n }\n };\n Video.prototype.resizeVidDupPos = function (e) {\n this.vidDupPos = {\n width: (e.style.width !== '' && (this.parent.insertVideoSettings &&\n !this.parent.insertVideoSettings.resizeByPercent)) ? this.videoEle.style.width : e.width !== 'auto' && e.width !== 0 && e.width !== 'NaN' ? e.width + 'px' : parseInt(getComputedStyle(e).width, 10) + 'px',\n height: (e.style.height !== '') ? this.videoEle.style.height : e.height !== 'auto' && e.height !== 0 && e.height !== 'NaN' ? e.height + 'px' : parseInt(getComputedStyle(e).height, 10) + 'px'\n };\n };\n Video.prototype.resizeBtnInit = function () {\n return this.resizeBtnStat = { botLeft: false, botRight: false, topRight: false, topLeft: false };\n };\n Video.prototype.onToolbarAction = function (args) {\n if (isIDevice$1()) {\n this.parent.notify(selectionRestore, {});\n }\n var item = args.args.item;\n switch (item.subCommand) {\n case 'VideoReplace':\n this.parent.notify(insertVideo, args);\n break;\n case 'VideoRemove':\n this.parent.notify(videoDelete, args);\n break;\n case 'VideoDimension':\n this.parent.notify(videoSize, args);\n }\n };\n Video.prototype.onKeyDown = function (event) {\n var originalEvent = event.args;\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n this.deletedVid = [];\n var isCursor;\n var keyCodeValues = [27, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123,\n 44, 45, 9, 16, 17, 18, 19, 20, 33, 34, 35, 36, 37, 38, 39, 40, 91, 92, 93, 144, 145, 182, 183];\n if (this.parent.editorMode === 'HTML') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n isCursor = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n }\n if (!isCursor && this.parent.editorMode === 'HTML' && keyCodeValues.indexOf(originalEvent.which) < 0) {\n var nodes = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n for (var i = 0; i < nodes.length; i++) {\n if (nodes[i].nodeName === 'VIDEO' || nodes[i].nodeName === 'IFRAME') {\n this.deletedVid.push(nodes[i]);\n }\n }\n }\n if (this.parent.editorMode === 'HTML' && ((originalEvent.which === 8 && originalEvent.code === 'Backspace') ||\n (originalEvent.which === 46 && originalEvent.code === 'Delete'))) {\n var isCursor_1 = range.startContainer === range.endContainer && range.startOffset === range.endOffset;\n if ((originalEvent.which === 8 && originalEvent.code === 'Backspace' && isCursor_1)) {\n this.checkVideoBack(range);\n }\n else if ((originalEvent.which === 46 && originalEvent.code === 'Delete' && isCursor_1)) {\n this.checkVideoDel(range);\n }\n }\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) &&\n originalEvent.code !== 'KeyK') {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n if (!originalEvent.ctrlKey && originalEvent.key && (originalEvent.key.length === 1 || originalEvent.action === 'enter') &&\n ((selectParentEle[0].tagName === 'VIDEO' || this.isEmbedVidElem(selectParentEle[0]))) &&\n selectParentEle[0].parentElement) {\n var prev = selectParentEle[0].parentElement.childNodes[0];\n if (this.contentModule.getEditPanel().querySelector('.e-vid-resize')) {\n this.removeResizeEle();\n }\n this.parent.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), prev, prev, prev.textContent.length, prev.textContent.length);\n removeClass([selectParentEle[0]], CLS_VID_FOCUS);\n this.quickToolObj.videoQTBar.hidePopup();\n }\n }\n if (originalEvent.ctrlKey && (originalEvent.keyCode === 89 || originalEvent.keyCode === 90)) {\n this.undoStack({ subCommand: (originalEvent.keyCode === 90 ? 'undo' : 'redo') });\n }\n if (originalEvent.keyCode === 8 || originalEvent.keyCode === 46) {\n if (selectNodeEle && (selectNodeEle[0].nodeName === 'VIDEO' || this.isEmbedVidElem(selectNodeEle[0])) && selectNodeEle.length < 1) {\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n originalEvent.preventDefault();\n var event_1 = {\n selectNode: selectNodeEle, selection: save, selectParent: selectParentEle,\n args: {\n item: { command: 'Videos', subCommand: 'VideoRemove' },\n originalEvent: originalEvent\n }\n };\n this.deleteVideo(event_1, originalEvent.keyCode);\n }\n if (this.parent.contentModule.getEditPanel().querySelector('.e-vid-resize')) {\n this.removeResizeEle();\n }\n }\n if (originalEvent.code === 'Backspace') {\n originalEvent.action = 'backspace';\n }\n switch (originalEvent.action) {\n case 'escape':\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.close();\n }\n break;\n case 'backspace':\n case 'delete':\n for (var i = 0; i < this.deletedVid.length; i++) {\n var src = this.deletedVid[i].src;\n this.videoRemovePost(src);\n }\n if (this.parent.editorMode !== 'Markdown') {\n if (range.startContainer.nodeType === 3) {\n if (originalEvent.code === 'Backspace') {\n if (range.startContainer.previousElementSibling && range.startOffset === 0 &&\n range.startContainer.previousElementSibling.classList.contains(CLS_VIDEOWRAP)) {\n detach(range.startContainer.previousElementSibling);\n }\n }\n else {\n if (range.startContainer.nextElementSibling &&\n range.endContainer.textContent.length === range.endOffset &&\n range.startContainer.nextElementSibling.classList.contains(CLS_VIDEOWRAP)) {\n detach(range.startContainer.nextElementSibling);\n }\n }\n }\n else if (range.startContainer.nodeType === 1 && (range.startContainer.classList &&\n range.startContainer.classList.contains(CLS_VIDEOWRAP))) {\n detach(range.startContainer);\n }\n }\n break;\n case 'insert-video':\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection))\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n this.openDialog(true, originalEvent, save, selectNodeEle, selectParentEle);\n originalEvent.preventDefault();\n break;\n }\n };\n Video.prototype.openDialog = function (isInternal, event, selection, ele, parentEle) {\n var range;\n var save;\n var selectNodeEle;\n var selectParentEle;\n if (!isInternal && !isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection)) {\n range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectParentEle = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = selection;\n selectNodeEle = ele;\n selectParentEle = parentEle;\n }\n if (this.parent.editorMode === 'HTML') {\n this.insertVideo({\n args: {\n item: { command: 'Videos', subCommand: 'Video' },\n originalEvent: event\n },\n selectNode: selectNodeEle,\n selection: save,\n selectParent: selectParentEle\n });\n }\n };\n Video.prototype.showDialog = function () {\n this.openDialog(false);\n };\n Video.prototype.closeDialog = function () {\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n }\n };\n Video.prototype.checkVideoBack = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === 0 &&\n !isNullOrUndefined(range.startContainer.previousSibling) && (range.startContainer.previousSibling.nodeName === 'VIDEO' ||\n this.isEmbedVidElem(range.startContainer.previousSibling))) {\n this.deletedVid.push(range.startContainer.previousSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNullOrUndefined(range.startContainer.childNodes[range.startOffset - 1]) &&\n (range.startContainer.childNodes[range.startOffset - 1].nodeName === 'VIDEO' ||\n this.isEmbedVidElem(range.startContainer.childNodes[range.startOffset - 1]))) {\n this.deletedVid.push(range.startContainer.childNodes[range.startOffset - 1]);\n }\n };\n Video.prototype.checkVideoDel = function (range) {\n if (range.startContainer.nodeName === '#text' && range.startOffset === range.startContainer.textContent.length &&\n !isNullOrUndefined(range.startContainer.nextSibling) && (range.startContainer.nextSibling.nodeName === 'VIDEO' ||\n this.isEmbedVidElem(range.startContainer.nextSibling))) {\n this.deletedVid.push(range.startContainer.nextSibling);\n }\n else if (range.startContainer.nodeName !== '#text' && !isNullOrUndefined(range.startContainer.childNodes[range.startOffset]) &&\n (range.startContainer.childNodes[range.startOffset].nodeName === 'VIDEO' ||\n this.isEmbedVidElem(range.startContainer.childNodes[range.startOffset]))) {\n this.deletedVid.push(range.startContainer.childNodes[range.startOffset]);\n }\n };\n Video.prototype.alignmentSelect = function (e) {\n var item = e.item;\n if (!document.body.contains(document.body.querySelector('.e-rte-quick-toolbar')) || item.command !== 'Videos') {\n return;\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var selectNodeEle = this.parent.formatter.editorManager.nodeSelection.getNodeCollection(range);\n selectNodeEle = (selectNodeEle[0].nodeName === 'VIDEO') ? selectNodeEle : [this.videoEle];\n var args = { args: e, selectNode: selectNodeEle };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n switch (item.subCommand) {\n case 'JustifyLeft':\n case 'JustifyCenter':\n case 'JustifyRight':\n this.alignVideo(args, item.subCommand);\n break;\n case 'Inline':\n this.inline(args);\n break;\n case 'Break':\n this.break(args);\n break;\n }\n if (this.quickToolObj && document.body.contains(this.quickToolObj.videoQTBar.element)) {\n this.quickToolObj.videoQTBar.hidePopup();\n removeClass([selectNodeEle[0]], CLS_VID_FOCUS);\n }\n this.cancelResizeAction();\n };\n Video.prototype.deleteVideo = function (e, keyCode) {\n if (e.selectNode[0].nodeName !== 'VIDEO' && !this.isEmbedVidElem(e.selectNode[0])) {\n return;\n }\n if (this.isEmbedVidElem(e.selectNode[0])) {\n e.selectNode[0] = e.selectNode[0].classList.contains(CLS_VID_CLICK_ELEM) ? e.selectNode[0] :\n e.selectNode[0].parentElement;\n }\n var args = {\n element: !this.isEmbedVidElem(e.selectNode[0]) ? e.selectNode[0].querySelector('iframe') :\n e.selectNode[0],\n src: !this.isEmbedVidElem(e.selectNode[0]) ? e.selectNode[0].querySelector('source').getAttribute('src') :\n e.selectNode[0].querySelector('iframe').getAttribute('src')\n };\n if (this.parent.formatter.getUndoRedoStack().length === 0) {\n this.parent.formatter.saveData();\n }\n e.selection.restore();\n this.parent.formatter.process(this.parent, e.args, e.args, {\n selectNode: e.selectNode,\n subCommand: e.args.item.subCommand\n });\n this.videoRemovePost(args.src);\n if (this.quickToolObj && document.body.contains(this.quickToolObj.videoQTBar.element)) {\n this.quickToolObj.videoQTBar.hidePopup();\n }\n this.cancelResizeAction();\n if (isNullOrUndefined(keyCode)) {\n this.parent.trigger(afterMediaDelete, args);\n }\n };\n Video.prototype.videoRemovePost = function (src) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n var absoluteUrl = '';\n if (isNullOrUndefined(this.parent.insertVideoSettings.removeUrl) || this.parent.insertVideoSettings.removeUrl === '') {\n return;\n }\n if (src.indexOf('http://') > -1 || src.indexOf('https://') > -1) {\n absoluteUrl = src;\n }\n else {\n absoluteUrl = new URL(src, document.baseURI).href;\n }\n // eslint-disable-next-line no-useless-escape\n this.removingVideoName = absoluteUrl.replace(/^.*[\\\\\\/]/, '');\n var xhr = new XMLHttpRequest();\n // eslint-disable-next-line @typescript-eslint/tslint/config\n xhr.addEventListener('readystatechange', function () {\n if (this.readyState === 4 && this.status === 200) {\n proxy.triggerPost(this.response);\n }\n });\n xhr.open('GET', absoluteUrl);\n xhr.responseType = 'blob';\n xhr.send();\n };\n Video.prototype.triggerPost = function (response) {\n var removeUrl = this.parent.insertVideoSettings.removeUrl;\n if (isNullOrUndefined(removeUrl) || removeUrl === '') {\n return;\n }\n var file = new File([response], this.removingVideoName);\n var ajax = new Ajax(removeUrl, 'POST', true, null);\n var formData = new FormData();\n formData.append('UploadFiles', file);\n ajax.send(formData);\n };\n Video.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (target.nodeName === 'VIDEO' || this.isEmbedVidElem(target)) {\n this.videoEle = !this.isEmbedVidElem(target) ? target : target.querySelector('iframe');\n }\n if (!isNullOrUndefined(this.dialogObj) && ((\n // eslint-disable-next-line\n !closest(target, '[id=' + \"'\" + this.dialogObj.element.id + \"'\" + ']') && this.parent.toolbarSettings.enable && this.parent.getToolbarElement() &&\n !this.parent.getToolbarElement().contains(e.target)) ||\n (this.parent.getToolbarElement() && this.parent.getToolbarElement().contains(e.target) &&\n !closest(target, '#' + this.parent.getID() + '_toolbar_Video') &&\n !target.querySelector('#' + this.parent.getID() + '_toolbar_Video')))) {\n /* eslint-disable */\n if (e.offsetX > e.target.clientWidth || e.offsetY > e.target.clientHeight) {\n }\n else {\n this.dialogObj.hide({ returnValue: true });\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n /* eslint-enable */\n }\n // if (((e.target as HTMLElement).tagName !== 'VIDEO' || !this.isEmbedVidElem(e.target as HTMLElement)) && this.vidResizeDiv && !(this.quickToolObj &&\n // this.quickToolObj.videoQTBar && this.quickToolObj.videoQTBar.element.contains(e.target as HTMLElement)) &&\n // this.contentModule.getEditPanel().contains(this.vidResizeDiv)) {\n // this.cancelResizeAction();\n // }\n if (this.contentModule.getEditPanel().querySelector('.e-vid-resize')) {\n if (target.tagName !== 'VIDEO' && !this.isEmbedVidElem(target)) {\n this.removeResizeEle();\n }\n if ((target.tagName !== 'VIDEO' && !this.isEmbedVidElem(target)) && !isNullOrUndefined(this.videoEle)) {\n this.videoEle.style.outline = '';\n }\n else if (!isNullOrUndefined(this.prevSelectedVidEle) &&\n this.prevSelectedVidEle !== ((target.tagName === 'IFRAME' || target.tagName === 'VIDEO') ? target : target.querySelector('iframe'))) {\n this.prevSelectedVidEle.style.outline = '';\n }\n }\n };\n Video.prototype.removeResizeEle = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n detach(this.contentModule.getEditPanel().querySelector('.e-vid-resize'));\n };\n Video.prototype.onWindowResize = function () {\n if (!isNullOrUndefined(this.contentModule) && !isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.e-vid-resize'))) {\n this.cancelResizeAction();\n }\n };\n Video.prototype.break = function (e) {\n if (e.selectNode[0].nodeName !== 'VIDEO' && !this.isEmbedVidElem(e.selectNode[0])) {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Break';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Video.prototype.inline = function (e) {\n if (e.selectNode[0].nodeName !== 'VIDEO' && !this.isEmbedVidElem(e.selectNode[0])) {\n return;\n }\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : 'Inline';\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Video.prototype.alignVideo = function (e, type) {\n var subCommand = (e.args.item) ?\n e.args.item.subCommand : type;\n this.parent.formatter.process(this.parent, e.args, e.args, { selectNode: e.selectNode, subCommand: subCommand });\n };\n Video.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly) {\n this.hideVideoQuickToolbar();\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n if ((showOnRightClick && args.which === 1) && !isNullOrUndefined(args.target) &&\n (args.target.tagName === 'VIDEO' || this.isEmbedVidElem(args.target))) {\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), args.target);\n }\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.videoQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.videoQTBar.element.classList.contains('e-rte-pop');\n if ((target.nodeName === 'VIDEO' || this.isEmbedVidElem(target)) && this.parent.quickToolbarModule) {\n if (isPopupOpen) {\n return;\n }\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.setSelectionContents(this.contentModule.getDocument(), target);\n if (isIDevice$1()) {\n this.parent.notify(selectionSave, e);\n }\n addClass([!this.isEmbedVidElem(target) ? target : target.querySelector('iframe')], CLS_VID_FOCUS);\n this.showVideoQuickToolbar({ args: args, type: 'Videos', elements: [args.target] });\n }\n else {\n this.hideVideoQuickToolbar();\n }\n }\n };\n Video.prototype.showVideoQuickToolbar = function (e) {\n var _this = this;\n if (e.type !== 'Videos' || e.args.detail === 2 || isNullOrUndefined(this.parent.quickToolbarModule)\n || isNullOrUndefined(this.parent.quickToolbarModule.videoQTBar) || isNullOrUndefined(e.args)) {\n return;\n }\n this.quickToolObj = this.parent.quickToolbarModule;\n var args = e.args;\n var target = e.elements;\n [].forEach.call(e.elements, function (element, index) {\n if (index === 0) {\n target = element;\n }\n });\n if (target.tagName === 'VIDEO' || this.isEmbedVidElem(target)) {\n addClass([(!this.isEmbedVidElem(target) || target.tagName === 'IFRAME') ? target : target.querySelector('iframe')], [CLS_VID_FOCUS]);\n }\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + args.clientY : args.pageY;\n if (this.parent.quickToolbarModule.videoQTBar) {\n if (e.isNotify) {\n setTimeout(function () {\n _this.parent.formatter.editorManager.nodeSelection.Clear(_this.contentModule.getDocument());\n _this.parent.formatter.editorManager.nodeSelection.setSelectionContents(_this.contentModule.getDocument(), target);\n _this.quickToolObj.videoQTBar.showPopup(args.pageX - 50, pageY + (target.getBoundingClientRect().height / 2) - target.offsetTop, target);\n }, 400);\n }\n else {\n this.quickToolObj.videoQTBar.showPopup(args.pageX - 50, pageY + (target.getBoundingClientRect().height / 2) - target.offsetTop, target);\n }\n }\n };\n Video.prototype.hideVideoQuickToolbar = function () {\n if (!isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.' + CLS_VID_FOCUS))) {\n removeClass([this.contentModule.getEditPanel().querySelector('.' + CLS_VID_FOCUS)], CLS_VID_FOCUS);\n if (!isNullOrUndefined(this.videoEle)) {\n this.videoEle.style.outline = '';\n }\n if (!isNullOrUndefined(this.contentModule.getEditPanel().querySelector('.e-vid-resize'))) {\n detach(this.contentModule.getEditPanel().querySelector('.e-vid-resize'));\n }\n if (this.quickToolObj && this.quickToolObj.videoQTBar && document.body.contains(this.quickToolObj.videoQTBar.element)) {\n this.quickToolObj.videoQTBar.hidePopup();\n }\n }\n };\n Video.prototype.isEmbedVidElem = function (target) {\n if ((target && target.nodeType !== 3 && target.nodeName !== 'BR' && (target.classList && target.classList.contains(CLS_VID_CLICK_ELEM))) ||\n (target && target.nodeName === 'IFRAME')) {\n return true;\n }\n else {\n return false;\n }\n };\n Video.prototype.insertingVideo = function (e) {\n this.insertVideo(e);\n if (!isNullOrUndefined(this.dialogObj)) {\n this.dialogObj.element.style.maxHeight = 'inherit';\n var dialogContent = this.dialogObj.element.querySelector('.e-video-content');\n if (!isNullOrUndefined(this.parent.insertVideoSettings.path) || this.parent.editorMode === 'HTML') {\n document.getElementById(this.rteID + '_insertVideo').focus();\n }\n else {\n dialogContent.querySelector('.e-video-url').focus();\n }\n }\n };\n Video.prototype.insertVideo = function (e) {\n var _this = this;\n if (this.dialogObj) {\n this.dialogObj.hide({ returnValue: true });\n return;\n }\n var videoDialog = this.parent.createElement('div', { className: 'e-rte-video-dialog', id: this.rteID + '_video' });\n this.parent.element.appendChild(videoDialog);\n var videoInsert = this.i10n.getConstant('dialogInsert');\n var videolinkCancel = this.i10n.getConstant('dialogCancel');\n var videoHeader = this.i10n.getConstant('videoHeader');\n var selection = e.selection;\n var selectObj = { selfVideo: this, selection: e.selection, args: e.args, selectParent: e.selectParent };\n var dialogModel = {\n header: videoHeader,\n cssClass: CLS_RTE_ELEMENTS,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px',\n position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },\n isModal: Browser.isDevice,\n buttons: [{\n click: this.insertVideoUrl.bind(selectObj),\n buttonModel: { content: videoInsert, cssClass: 'e-flat e-insertVideo', isPrimary: true, disabled: true }\n },\n {\n click: function (e) {\n _this.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel', content: videolinkCancel }\n }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n if (_this.isVideoUploaded) {\n _this.uploadObj.removing();\n }\n _this.parent.isBlur = false;\n if (event && event.event.returnValue) {\n if (_this.parent.editorMode === 'HTML') {\n selection.restore();\n }\n }\n _this.dialogObj.destroy();\n detach(_this.dialogObj.element);\n _this.dialogRenderObj.close(event);\n _this.dialogObj = null;\n }\n };\n var dialogContent = this.parent.createElement('div', { className: 'e-video-content' });\n if (!isNullOrUndefined(this.parent.insertVideoSettings.path) || this.parent.editorMode === 'HTML') {\n dialogContent.appendChild(this.videoUpload(e));\n }\n var linkHeader = this.parent.createElement('div', { className: 'e-videoheader' });\n var embedLinkHeader = this.parent.createElement('div', { className: 'e-embed-videoheader' });\n var linkHeaderText = this.i10n.getConstant('videoLinkHeader');\n var embedLinkHeaderText = this.i10n.getConstant('embedVideoLinkHeader');\n if (this.parent.editorMode === 'HTML') {\n linkHeader.innerHTML = linkHeaderText;\n embedLinkHeader.innerHTML = embedLinkHeaderText;\n }\n dialogContent.appendChild(this.urlPopup(e));\n if (e.selectNode && e.selectNode[0].nodeType === 1 && (e.selectNode[0].tagName === 'VIDEO' || this.isEmbedVidElem(e.selectNode[0]))) {\n dialogModel.header = this.parent.localeObj.getConstant('editVideoHeader');\n dialogModel.content = dialogContent;\n }\n else {\n dialogModel.content = dialogContent;\n }\n this.dialogObj = this.dialogRenderObj.render(dialogModel);\n this.dialogObj.createElement = this.parent.createElement;\n this.dialogObj.appendTo(videoDialog);\n if (e.selectNode && e.selectNode[0].nodeType === 1 && (e.selectNode[0].tagName === 'VIDEO' || this.isEmbedVidElem(e.selectNode[0]))\n && (e.name === 'insertVideo')) {\n this.dialogObj.element.querySelector('.e-insertVideo').textContent = this.parent.localeObj.getConstant('dialogUpdate');\n }\n videoDialog.style.maxHeight = 'inherit';\n if (this.quickToolObj) {\n if (this.quickToolObj.videoQTBar && document.body.contains(this.quickToolObj.videoQTBar.element)) {\n this.quickToolObj.videoQTBar.hidePopup();\n if (!isNullOrUndefined(e.selectParent)) {\n removeClass([e.selectParent[0]], CLS_VID_FOCUS);\n }\n }\n if (this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n }\n };\n // eslint-disable-next-line\n Video.prototype.urlPopup = function (e) {\n var _this = this;\n var videoUrl = this.parent.createElement('div', { className: 'e-video-url-wrap' });\n var urlContent = this.parent.createElement('div', { id: 'urlcontent' });\n var placeUrl = this.i10n.getConstant('videoUrl');\n var content = '' + '';\n var contentElem = parseHtml(content);\n videoUrl.appendChild(contentElem);\n videoUrl.appendChild(urlContent);\n this.embedInputUrl = this.parent.createElement('textarea', {\n className: 'e-input e-embed-video-url',\n attrs: { placeholder: 'Paste Embed URL here', type: 'text', tabindex: '-1', 'aria-label': this.i10n.getConstant('embedVideoLinkHeader') }\n });\n this.embedInputUrl.addEventListener('keyup', function () {\n if (!isNullOrUndefined(_this.embedInputUrl)) {\n if (_this.embedInputUrl.value.length === 0) {\n _this.dialogObj.getButtons(0).element.disabled = true;\n }\n else {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n }\n });\n this.inputUrl = this.parent.createElement('input', {\n className: 'e-input e-video-url',\n attrs: { placeholder: placeUrl, spellcheck: 'false' }\n });\n this.inputUrl.addEventListener('input', function () {\n if (!isNullOrUndefined(_this.inputUrl)) {\n if (_this.inputUrl.value.length === 0) {\n _this.dialogObj.getButtons(0).element.disabled = true;\n }\n else {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n }\n });\n var embedUrlBtn = new RadioButton({\n label: 'Embed URL',\n checked: true,\n name: 'URL',\n created: function () {\n urlContent.appendChild(_this.embedInputUrl);\n },\n change: function () {\n urlContent.innerHTML = '';\n _this.inputUrl.value = '';\n urlContent.appendChild(_this.embedInputUrl);\n }\n });\n embedUrlBtn.appendTo(videoUrl.querySelector('#embedURL'));\n var webUrlBtn = new RadioButton({\n label: 'Web URL',\n name: 'URL',\n change: function () {\n urlContent.innerHTML = '';\n _this.embedInputUrl.value = '';\n urlContent.appendChild(_this.inputUrl);\n }\n });\n webUrlBtn.appendTo(videoUrl.querySelector('#webURL'));\n return videoUrl;\n };\n Video.prototype.videoUpload = function (e) {\n var _this = this;\n var save;\n var selectParent;\n // eslint-disable-next-line\n var proxy = this;\n var iframe = proxy.parent.iframeSettings.enable;\n if (proxy.parent.editorMode === 'HTML' && (!iframe && isNullOrUndefined(closest(e.selection.range.startContainer.parentNode, '[id='\n // eslint-disable-next-line\n + \"'\" + this.parent.contentModule.getPanel().id + \"'\" + ']'))\n || (iframe && !hasClass(e.selection.range.startContainer.parentNode.ownerDocument.querySelector('body'), 'e-lib')))) {\n this.contentModule.getEditPanel().focus();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n save = this.parent.formatter.editorManager.nodeSelection.save(range, this.parent.contentModule.getDocument());\n selectParent = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n else {\n save = e.selection;\n selectParent = e.selectParent;\n }\n var uploadParentEle = this.parent.createElement('div', { className: 'e-vid-uploadwrap e-droparea' });\n var deviceVideoUpMsg = this.i10n.getConstant('videoDeviceUploadMessage');\n var videoUpMsg = this.i10n.getConstant('videoUploadMessage');\n var span = this.parent.createElement('span', { className: 'e-droptext' });\n var spanMsg = this.parent.createElement('span', {\n className: 'e-rte-upload-text', innerHTML: ((Browser.isDevice) ? deviceVideoUpMsg : videoUpMsg)\n });\n span.appendChild(spanMsg);\n var btnEle = this.parent.createElement('button', {\n className: 'e-browsebtn', id: this.rteID + '_insertVideo', attrs: { autofocus: 'true', type: 'button' }\n });\n span.appendChild(btnEle);\n uploadParentEle.appendChild(span);\n var browserMsg = this.i10n.getConstant('browse');\n var button = new Button({ content: browserMsg, enableRtl: this.parent.enableRtl });\n button.isStringTemplate = true;\n button.createElement = this.parent.createElement;\n button.appendTo(btnEle);\n var btnClick = (Browser.isDevice) ? span : btnEle;\n EventHandler.add(btnClick, 'click', this.fileSelect, this);\n var uploadEle = this.parent.createElement('input', {\n id: this.rteID + '_upload', attrs: { type: 'File', name: 'UploadFiles' }\n });\n uploadParentEle.appendChild(uploadEle);\n var fileName;\n var rawFile;\n var selectArgs;\n var filesData;\n var beforeUploadArgs;\n this.uploadObj = new Uploader({\n asyncSettings: { saveUrl: this.parent.insertVideoSettings.saveUrl, removeUrl: this.parent.insertVideoSettings.removeUrl },\n dropArea: span, multiple: false, enableRtl: this.parent.enableRtl,\n allowedExtensions: this.parent.insertVideoSettings.allowedTypes.toString(),\n selected: function (e) {\n proxy.isVideoUploaded = true;\n selectArgs = e;\n filesData = e.filesData;\n if (_this.parent.isServerRendered) {\n selectArgs = JSON.parse(JSON.stringify(e));\n e.cancel = true;\n rawFile = e.filesData;\n selectArgs.filesData = rawFile;\n }\n _this.parent.trigger(fileSelected, selectArgs, function (selectArgs) {\n if (!selectArgs.cancel) {\n _this.checkExtension(selectArgs.filesData[0]);\n fileName = selectArgs.filesData[0].name;\n if (_this.parent.editorMode === 'HTML' && isNullOrUndefined(_this.parent.insertVideoSettings.path)) {\n var reader_1 = new FileReader();\n // eslint-disable-next-line\n reader_1.addEventListener('load', function (e) {\n var url = _this.parent.insertVideoSettings.saveFormat === 'Base64' ? reader_1.result :\n URL.createObjectURL(convertToBlob(reader_1.result));\n proxy.uploadUrl = {\n url: url, selection: save, fileName: fileName,\n selectParent: selectParent\n };\n proxy.inputUrl.setAttribute('disabled', 'true');\n proxy.embedInputUrl.setAttribute('disabled', 'true');\n if (isNullOrUndefined(proxy.parent.insertVideoSettings.saveUrl) && _this.isAllowedTypes\n && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n reader_1.readAsDataURL(selectArgs.filesData[0].rawFile);\n }\n if (_this.parent.isServerRendered) {\n /* eslint-disable */\n _this.uploadObj._internalRenderSelect(selectArgs, rawFile);\n /* eslint-enable */\n }\n }\n });\n },\n beforeUpload: function (args) {\n if (_this.parent.isServerRendered) {\n beforeUploadArgs = JSON.parse(JSON.stringify(args));\n beforeUploadArgs.filesData = filesData;\n args.cancel = true;\n _this.parent.trigger(fileUploading, beforeUploadArgs, function (beforeUploadArgs) {\n if (beforeUploadArgs.cancel) {\n return;\n }\n /* eslint-disable */\n _this.uploadObj.currentRequestHeader = beforeUploadArgs.currentRequest ?\n beforeUploadArgs.currentRequest : _this.uploadObj.currentRequestHeader;\n _this.uploadObj.customFormDatas = beforeUploadArgs.customFormData && beforeUploadArgs.customFormData.length > 0 ?\n beforeUploadArgs.customFormData : _this.uploadObj.customFormDatas;\n _this.uploadObj.uploadFiles(rawFile, null);\n /* eslint-enable */\n });\n }\n else {\n _this.parent.trigger(beforeFileUpload, args);\n }\n },\n uploading: function (e) {\n if (!_this.parent.isServerRendered) {\n _this.parent.trigger(fileUploading, e);\n }\n },\n success: function (e) {\n _this.parent.trigger(fileUploadSuccess, e, function (e) {\n if (!isNullOrUndefined(_this.parent.insertVideoSettings.path)) {\n var url = _this.parent.insertVideoSettings.path + e.file.name;\n // eslint-disable-next-line\n proxy.uploadUrl = {\n url: url, selection: save, fileName: fileName, selectParent: selectParent,\n width: {\n width: proxy.parent.insertVideoSettings.width, minWidth: proxy.parent.insertVideoSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy.parent.insertVideoSettings.height, minHeight: proxy.parent.insertVideoSettings.minHeight,\n maxHeight: proxy.parent.insertVideoSettings.maxHeight\n }\n };\n //proxy.inputUrl.setAttribute('disabled', 'true');\n proxy.embedInputUrl.setAttribute('disabled', 'true');\n }\n if (e.operation === 'upload' && !isNullOrUndefined(_this.dialogObj)) {\n _this.dialogObj.getButtons(0).element.removeAttribute('disabled');\n }\n });\n },\n failure: function (e) {\n _this.parent.trigger(fileUploadFailed, e);\n },\n removing: function () {\n // eslint-disable-next-line\n _this.parent.trigger(fileRemoving, e, function (e) {\n proxy.isVideoUploaded = false;\n _this.dialogObj.getButtons(0).element.disabled = true;\n //proxy.inputUrl.removeAttribute('disabled');\n proxy.embedInputUrl.removeAttribute('disabled');\n if (proxy.uploadUrl) {\n proxy.uploadUrl.url = '';\n }\n });\n }\n });\n this.uploadObj.isStringTemplate = true;\n this.uploadObj.createElement = this.parent.createElement;\n this.uploadObj.appendTo(uploadEle);\n return uploadParentEle;\n };\n Video.prototype.checkExtension = function (e) {\n if (this.uploadObj.allowedExtensions) {\n if (this.uploadObj.allowedExtensions.toLocaleLowerCase().indexOf(('.' + e.type).toLocaleLowerCase()) === -1) {\n this.dialogObj.getButtons(0).element.setAttribute('disabled', 'disabled');\n this.isAllowedTypes = false;\n }\n else {\n this.isAllowedTypes = true;\n }\n }\n };\n Video.prototype.fileSelect = function () {\n this.dialogObj.element.getElementsByClassName('e-file-select-wrap')[0].querySelector('button').click();\n return false;\n };\n // eslint-disable-next-line\n Video.prototype.cancelDialog = function (e) {\n this.parent.isBlur = false;\n this.dialogObj.hide({ returnValue: true });\n if (this.isVideoUploaded) {\n this.uploadObj.removing();\n }\n };\n // eslint-disable-next-line\n Video.prototype.insertVideoUrl = function (e) {\n var proxy = this.selfVideo;\n //let audioSelectParent: Node = proxy.uploadUrl.selectParent[0];\n proxy.isVideoUploaded = false;\n var url = proxy.inputUrl.value;\n var embedUrl = proxy.embedInputUrl.value;\n if (proxy.parent.formatter.getUndoRedoStack().length === 0) {\n proxy.parent.formatter.saveData();\n }\n if (!isNullOrUndefined(proxy.uploadUrl) && proxy.uploadUrl.url !== '') {\n proxy.uploadUrl.cssClass = (proxy.parent.insertVideoSettings.layoutOption === 'Inline' ?\n CLS_VIDEOINLINE : CLS_VIDEOBREAK);\n proxy.dialogObj.hide({ returnValue: false });\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, proxy.uploadUrl);\n proxy.uploadUrl.url = '';\n }\n else if (proxy.parent.editorMode === 'HTML' && (url !== '' || embedUrl !== '')) {\n if (proxy.parent.editorMode === 'HTML' && isNullOrUndefined(closest(\n // eslint-disable-next-line\n this.selection.range.startContainer.parentNode, '[id=' + \"'\" + proxy.contentModule.getPanel().id + \"'\" + ']'))) {\n proxy.contentModule.getEditPanel().focus();\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.contentModule.getDocument());\n this.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());\n this.selectParent = proxy.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range);\n }\n var name_1 = url !== '' ? url.split('/')[url.split('/').length - 1] : embedUrl;\n var value = {\n cssClass: (proxy.parent.insertVideoSettings.layoutOption === 'Inline' ? CLS_VIDEOINLINE : CLS_VIDEOBREAK),\n url: url, selection: this.selection, fileName: name_1, isEmbedUrl: embedUrl !== '' ? true : false,\n selectParent: this.selectParent, width: {\n width: proxy.parent.insertVideoSettings.width, minWidth: proxy.parent.insertVideoSettings.minWidth,\n maxWidth: proxy.parent.getInsertImgMaxWidth()\n },\n height: {\n height: proxy.parent.insertVideoSettings.height, minHeight: proxy.parent.insertVideoSettings.minHeight,\n maxHeight: proxy.parent.insertVideoSettings.maxHeight\n }\n };\n proxy.parent.formatter.process(proxy.parent, this.args, this.args.originalEvent, value);\n proxy.dialogObj.hide({ returnValue: false });\n }\n };\n /* eslint-disable */\n /**\n * Destroys the ToolBar.\n *\n * @method destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-enable */\n Video.prototype.destroy = function () {\n this.prevSelectedVidEle = undefined;\n this.removeEventListener();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @hidden\n */\n Video.prototype.getModuleName = function () {\n return 'video';\n };\n return Video;\n}());\n\n/**\n * Content module is used to render Rich Text Editor content\n *\n * @hidden\n * @deprecated\n */\nvar ViewSource = /** @__PURE__ @class */ (function () {\n /**\n * Constructor for view source module\n *\n * @param {IRichTextEditor} parent - specifies the parent element.\n * @param {ServiceLocator} locator - specifies the locator.\n * @returns {void}\n */\n function ViewSource(parent, locator) {\n this.parent = parent;\n var serviceLocator = locator;\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.addEventListener();\n }\n ViewSource.prototype.addEventListener = function () {\n this.parent.on(sourceCode, this.sourceCode, this);\n this.parent.on(initialEnd, this.onInitialEnd, this);\n this.parent.on(updateSource, this.updateSourceCode, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n ViewSource.prototype.onInitialEnd = function () {\n this.parent.formatter.editorManager.observer.on(KEY_DOWN_HANDLER, this.onKeyDown, this);\n };\n ViewSource.prototype.removeEventListener = function () {\n this.unWireEvent();\n this.parent.off(sourceCode, this.sourceCode);\n this.parent.off(updateSource, this.updateSourceCode);\n this.parent.off(initialEnd, this.onInitialEnd);\n this.parent.off(destroy, this.destroy);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n this.parent.formatter.editorManager.observer.off(KEY_DOWN_HANDLER, this.onKeyDown);\n };\n ViewSource.prototype.getSourceCode = function () {\n return this.parent.createElement('textarea', { className: 'e-rte-srctextarea' + ' ' + this.parent.cssClass });\n };\n ViewSource.prototype.wireEvent = function (element) {\n this.keyboardModule = new KeyboardEvents$1(element, {\n keyAction: this.previewKeyDown.bind(this), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n EventHandler.add(this.previewElement, 'mousedown', this.mouseDownHandler, this);\n };\n ViewSource.prototype.unWireEvent = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n if (this.previewElement) {\n EventHandler.remove(this.previewElement, 'mousedown', this.mouseDownHandler);\n }\n };\n ViewSource.prototype.wireBaseKeyDown = function () {\n this.parent.keyboardModule = new KeyboardEvents$1(this.contentModule.getEditPanel(), {\n keyAction: this.parent.keyDown.bind(this.parent), keyConfigs: this.parent.formatter.keyConfig, eventName: 'keydown'\n });\n };\n ViewSource.prototype.unWireBaseKeyDown = function () {\n this.parent.keyboardModule.destroy();\n };\n ViewSource.prototype.mouseDownHandler = function (e) {\n this.parent.notify(sourceCodeMouseDown, { args: e });\n };\n ViewSource.prototype.previewKeyDown = function (event) {\n switch (event.action) {\n case 'html-source':\n this.updateSourceCode(event);\n event.preventDefault();\n break;\n case 'toolbar-focus':\n if (this.parent.toolbarSettings.enable) {\n var selector = '.e-toolbar-item[aria-disabled=\"false\"][title] [tabindex]';\n this.parent.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n }\n };\n ViewSource.prototype.onKeyDown = function (e) {\n switch (e.event.action) {\n case 'html-source':\n e.event.preventDefault();\n this.sourceCode(e);\n e.callBack({\n requestType: 'SourceCode',\n editorMode: 'HTML',\n event: e.event\n });\n break;\n }\n };\n /**\n * sourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ViewSource.prototype.sourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(actionBegin, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n var tbItems = selectAll('.' + CLS_TB_ITEM, this.parent.element);\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n this.parent.notify(updateToolbarItem, {\n targetItem: 'SourceCode', updateItem: 'Preview',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n if (isNullOrUndefined(this.previewElement)) {\n this.previewElement = this.getSourceCode();\n }\n this.parent.updateValueData();\n if (this.parent.iframeSettings.enable) {\n var rteContent = void 0;\n if (isNullOrUndefined(this.parent.element.querySelector('#' + this.parent.element.id + '_source-view'))) {\n rteContent = this.parent.createElement('div', {\n className: 'e-source-content', id: this.parent.element.id + '_source-view'\n });\n }\n else {\n rteContent = this.parent.element.querySelector('#' + this.parent.element.id + '_source-view');\n }\n rteContent.appendChild(this.previewElement);\n this.parent.element.appendChild(rteContent);\n rteContent.style.height = this.contentModule.getPanel().style.height;\n rteContent.style.marginTop = this.contentModule.getPanel().style.marginTop;\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getPanel().style.display = 'none';\n rteContent.style.display = 'block';\n this.getPanel().style.display = 'block';\n }\n else {\n this.contentModule.getPanel().appendChild(this.previewElement);\n this.getPanel().value = this.getTextAreaValue();\n this.contentModule.getEditPanel().style.display = 'none';\n this.previewElement.style.display = 'block';\n }\n this.parent.isBlur = false;\n this.parent.disableToolbarItem(this.parent.toolbarSettings.items);\n this.parent.enableToolbarItem('SourceCode');\n if (this.parent.getToolbar()) {\n removeClass([this.parent.getToolbar()], [CLS_EXPAND_OPEN]);\n }\n removeClass(tbItems, [CLS_ACTIVE]);\n this.parent.setContentHeight('sourceCode', true);\n this.wireEvent(this.previewElement);\n this.unWireBaseKeyDown();\n this.previewElement.focus();\n this.parent.updateValue();\n if (!isNullOrUndefined(this.parent.placeholder) && !this.parent.iframeSettings.enable) {\n var placeHolderWrapper = this.parent.element.querySelector('.rte-placeholder.e-rte-placeholder');\n placeHolderWrapper.style.display = 'none';\n }\n this.parent.trigger(actionComplete, { requestType: 'SourceCode', targetItem: 'SourceCode', args: args });\n this.parent.invokeChangeEvent();\n };\n /**\n * updateSourceCode method\n *\n * @param {ClickEventArgs} args - specifies the click event.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ViewSource.prototype.updateSourceCode = function (args) {\n this.parent.isBlur = false;\n this.parent.trigger(actionBegin, { requestType: 'Preview', targetItem: 'Preview', args: args });\n var editHTML = this.getPanel();\n this.parent.notify(updateToolbarItem, {\n targetItem: 'Preview', updateItem: 'SourceCode',\n baseToolbar: this.parent.getBaseToolbarObject()\n });\n var serializeValue = this.parent.serializeValue(editHTML.value);\n var value;\n if (serializeValue === null || serializeValue === '') {\n if (this.parent.enterKey === 'DIV') {\n value = '

    ';\n }\n else if (this.parent.enterKey === 'BR') {\n value = '
    ';\n }\n else {\n value = '


    ';\n }\n }\n else {\n value = serializeValue;\n }\n if (this.parent.iframeSettings.enable) {\n editHTML.parentElement.style.display = 'none';\n editHTML.style.display = 'none';\n this.contentModule.getPanel().style.display = 'block';\n this.contentModule.getEditPanel().innerHTML = value;\n }\n else {\n editHTML.style.display = 'none';\n this.contentModule.getEditPanel().style.display = 'block';\n this.contentModule.getEditPanel().innerHTML = value;\n }\n this.parent.isBlur = false;\n this.parent.enableToolbarItem(this.parent.toolbarSettings.items);\n if (this.parent.getToolbar()) {\n removeClass([this.parent.getToolbar()], [CLS_EXPAND_OPEN]);\n }\n this.parent.setContentHeight('preview', true);\n this.unWireEvent();\n this.wireBaseKeyDown();\n this.contentModule.getEditPanel().focus();\n this.parent.updateValue();\n if (!isNullOrUndefined(this.parent.placeholder) && this.contentModule.getEditPanel().innerText.length === 0) {\n var placeHolderWrapper = this.parent.element.querySelector('.rte-placeholder.e-rte-placeholder');\n placeHolderWrapper.style.display = 'block';\n }\n this.parent.trigger(actionComplete, { requestType: 'Preview', targetItem: 'Preview', args: args });\n this.parent.formatter.enableUndo(this.parent);\n this.parent.addAudioVideoWrapper();\n this.parent.invokeChangeEvent();\n this.parent.notify(tableclass, {});\n };\n ViewSource.prototype.getTextAreaValue = function () {\n return (this.contentModule.getEditPanel().innerHTML === '


    ') ||\n (this.contentModule.getEditPanel().innerHTML === '

    ') ||\n (this.contentModule.getEditPanel().innerHTML === '
    ') ||\n (this.contentModule.getEditPanel().childNodes.length === 1 &&\n (this.contentModule.getEditPanel().childNodes[0].tagName === 'P' &&\n this.contentModule.getEditPanel().innerHTML.length === 7) ||\n (this.contentModule.getEditPanel().childNodes[0].tagName === 'DIV' &&\n this.contentModule.getEditPanel().innerHTML.length === 11)) ? '' : this.parent.value;\n };\n /**\n * getPanel method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ViewSource.prototype.getPanel = function () {\n return this.parent.element && this.parent.element.querySelector('.e-rte-srctextarea');\n };\n /**\n * getViewPanel method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ViewSource.prototype.getViewPanel = function () {\n return (this.parent.iframeSettings.enable && this.getPanel()) ? this.getPanel().parentElement : this.getPanel();\n };\n /**\n * Destroy the entire RichTextEditor.\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n ViewSource.prototype.destroy = function () {\n this.removeEventListener();\n };\n ViewSource.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return ViewSource;\n}());\n\n/**\n * `Table` module is used to handle table actions.\n */\nvar Table = /** @__PURE__ @class */ (function () {\n function Table(parent, serviceLocator) {\n this.ensureInsideTableList = true;\n this.pageX = null;\n this.pageY = null;\n this.moveEle = null;\n this.currentColumnResize = '';\n this.currentMarginLeft = 0;\n this.parent = parent;\n this.rteID = parent.element.id;\n this.l10n = serviceLocator.getService('rteLocale');\n this.rendererFactory = serviceLocator.getService('rendererFactory');\n this.dialogRenderObj = serviceLocator.getService('dialogRenderObject');\n this.addEventListener();\n }\n Table.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(createTable, this.renderDlgContent, this);\n this.parent.on(initialEnd, this.afterRender, this);\n this.parent.on(dynamicModule, this.afterRender, this);\n this.parent.on(showTableDialog, this.showDialog, this);\n this.parent.on(closeTableDialog, this.closeDialog, this);\n this.parent.on(docClick, this.docClick, this);\n this.parent.on(editAreaClick, this.editAreaClickHandler, this);\n this.parent.on(clearDialogObj, this.clearDialogObj, this);\n this.parent.on(tableToolbarAction, this.onToolbarAction, this);\n this.parent.on(dropDownSelect, this.dropdownSelect, this);\n this.parent.on(keyDown, this.keyDown, this);\n this.parent.on(mouseUp, this.selectionTable, this);\n this.parent.on(tableModulekeyUp, this.tableModulekeyUp, this);\n this.parent.on(bindCssClass, this.setCssClass, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n Table.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(createTable, this.renderDlgContent);\n this.parent.off(initialEnd, this.afterRender);\n this.parent.off(dynamicModule, this.afterRender);\n this.parent.off(docClick, this.docClick);\n this.parent.off(showTableDialog, this.showDialog);\n this.parent.off(closeTableDialog, this.closeDialog);\n this.parent.off(editAreaClick, this.editAreaClickHandler);\n this.parent.off(clearDialogObj, this.clearDialogObj);\n this.parent.off(tableToolbarAction, this.onToolbarAction);\n this.parent.off(dropDownSelect, this.dropdownSelect);\n this.parent.off(mouseDown, this.cellSelect);\n this.parent.off(tableColorPickerChanged, this.setBGColor);\n this.parent.off(keyDown, this.keyDown);\n this.parent.off(mouseUp, this.selectionTable);\n this.parent.off(tableModulekeyUp, this.tableModulekeyUp);\n this.parent.off(bindCssClass, this.setCssClass);\n this.parent.off(destroy, this.destroy);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n Table.prototype.updateCss = function (currentObj, e) {\n if (currentObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n currentObj.setProperties({ cssClass: (currentObj.cssClass + ' ' + e.cssClass).trim() });\n }\n else {\n currentObj.setProperties({ cssClass: (currentObj.cssClass.replace(e.oldCssClass, '').trim() + ' ' + e.cssClass).trim() });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/tslint/config\n Table.prototype.setCssClass = function (e) {\n if (this.popupObj && e.cssClass) {\n if (isNullOrUndefined(e.oldCssClass)) {\n addClass([this.popupObj.element], e.cssClass);\n }\n else {\n removeClass([this.popupObj.element], e.oldCssClass);\n addClass([this.popupObj.element], e.cssClass);\n }\n }\n this.updateCss(this.createTableButton, e);\n this.updateCss(this.editdlgObj, e);\n var numericTextBoxObj = [\n this.columnTextBox, this.rowTextBox, this.tableWidthNum, this.tableCellPadding, this.tableCellSpacing\n ];\n for (var i = 0; i < numericTextBoxObj.length; i++) {\n this.updateCss(numericTextBoxObj[i], e);\n }\n };\n Table.prototype.selectionTable = function (e) {\n var target = e.args.target;\n if (Browser.info.name === 'mozilla' && !isNullOrUndefined(closest(target, 'table')) && closest(target, 'table').tagName === 'TABLE') {\n this.parent.contentModule.getEditPanel().setAttribute('contenteditable', 'true');\n }\n };\n Table.prototype.afterRender = function () {\n if (isNullOrUndefined(this.contentModule)) {\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n this.parent.on(tableColorPickerChanged, this.setBGColor, this);\n this.parent.on(mouseDown, this.cellSelect, this);\n if (this.parent.tableSettings.resize) {\n EventHandler.add(this.parent.contentModule.getEditPanel(), Browser.touchStartEvent, this.resizeStart, this);\n }\n if (!Browser.isDevice && this.parent.tableSettings.resize) {\n EventHandler.add(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper, this);\n }\n }\n };\n Table.prototype.dropdownSelect = function (e) {\n var item = e.item;\n if (!document.body.contains(document.body.querySelector('.e-rte-quick-toolbar')) || item.command !== 'Table') {\n return;\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var args = {\n args: e,\n selection: this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument()),\n selectParent: this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range)\n };\n switch (item.subCommand) {\n case 'InsertRowBefore':\n case 'InsertRowAfter':\n this.addRow(args.selection, e);\n break;\n case 'InsertColumnLeft':\n case 'InsertColumnRight':\n this.addColumn(args.selection, e);\n break;\n case 'DeleteColumn':\n case 'DeleteRow':\n this.removeRowColumn(args.selection, e);\n break;\n case 'AlignTop':\n case 'AlignMiddle':\n case 'AlignBottom':\n this.verticalAlign(args, e);\n break;\n case 'Dashed':\n case 'Alternate':\n case 'Custom':\n this.tableStyles(args, item.subCommand);\n break;\n case 'Merge':\n case 'VerticalSplit':\n case 'HorizontalSplit':\n this.UpdateCells(args.selection, e);\n break;\n }\n };\n Table.prototype.UpdateCells = function (selectCell, e) {\n this.parent.formatter.process(this.parent, e, e, { selection: selectCell, subCommand: e.item.subCommand });\n this.hideTableQuickToolbar();\n };\n Table.prototype.keyDown = function (e) {\n var event = e.args;\n // eslint-disable-next-line\n var proxy = this;\n switch (event.action) {\n case 'escape':\n break;\n case 'insert-table':\n this.openDialog(true, e);\n event.preventDefault();\n break;\n }\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule\n && event.code !== 'KeyK') {\n var selection = void 0;\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var ele = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range)[0];\n ele = (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') ? ele.parentElement : ele;\n if ((event.keyCode === 8 || event.keyCode === 46) ||\n (event.ctrlKey && event.keyCode === 88)) {\n if (ele && ele.tagName === 'TBODY') {\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule)\n selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());\n event.preventDefault();\n proxy.removeTable(selection, event, true);\n }\n else if (ele && ele.querySelectorAll('table').length > 0) {\n this.removeResizeElement();\n this.hideTableQuickToolbar();\n }\n }\n if (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') {\n var closestTd = closest(ele, 'td');\n ele = !isNullOrUndefined(closestTd) && this.parent.inputElement.contains(closestTd) ? closestTd : ele;\n }\n if (ele && (ele.tagName === 'TD' || ele.tagName === 'TH')) {\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule)\n selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());\n switch (event.keyCode) {\n case 9:\n case 37:\n case 39:\n proxy.tabSelection(event, selection, ele);\n break;\n case 40:\n case 38:\n proxy.tableArrowNavigation(event, selection, ele);\n break;\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Table.prototype.tableModulekeyUp = function (e) {\n if (!isNullOrUndefined(this.parent.formatter.editorManager.nodeSelection) && this.contentModule) {\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.parent.contentModule.getDocument());\n var ele = this.parent.formatter.editorManager.nodeSelection.getParentNodeCollection(range)[0];\n ele = (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') ? ele.parentElement : ele;\n if (ele && ele.tagName !== 'TD' && ele.tagName !== 'TH') {\n var closestTd = closest(ele, 'td');\n ele = !isNullOrUndefined(closestTd) && this.parent.inputElement.contains(closestTd) ? closestTd : ele;\n }\n if (this.previousTableElement !== ele && !isNullOrUndefined(this.previousTableElement)) {\n this.previousTableElement.classList.remove(CLS_TABLE_SEL);\n }\n }\n };\n Table.prototype.openDialog = function (isInternal, e) {\n if (!isInternal) {\n this.parent.contentModule.getEditPanel().focus();\n }\n if (this.parent.editorMode === 'HTML') {\n var docElement = this.parent.contentModule.getDocument();\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(docElement);\n var selection = this.parent.formatter.editorManager.nodeSelection.save(range, docElement);\n var args = {\n originalEvent: e ? e.args : { action: 'insert-table' },\n item: {\n command: 'Table',\n subCommand: 'CreateTable'\n }\n };\n this.insertTableDialog({ self: this, args: args, selection: selection });\n }\n };\n Table.prototype.showDialog = function () {\n this.openDialog(false);\n this.setCssClass({ cssClass: this.parent.cssClass });\n };\n Table.prototype.closeDialog = function () {\n if (this.editdlgObj) {\n this.editdlgObj.hide({ returnValue: true });\n }\n };\n Table.prototype.onToolbarAction = function (args) {\n var item = args.args.item;\n switch (item.subCommand) {\n case 'TableHeader':\n this.tableHeader(args.selection, args.args);\n break;\n case 'TableRemove':\n this.removeTable(args.selection, args.args);\n break;\n case 'TableEditProperties':\n this.editTable(args);\n break;\n }\n };\n Table.prototype.verticalAlign = function (args, e) {\n var tdEle = closest(args.selectParent[0], 'td') || closest(args.selectParent[0], 'th');\n if (tdEle) {\n this.parent.formatter.process(this.parent, e, e, { tableCell: tdEle, subCommand: e.item.subCommand });\n }\n };\n Table.prototype.tableStyles = function (args, command) {\n var table = closest(args.selectParent[0], 'table');\n if (command === 'Dashed') {\n /* eslint-disable */\n (this.parent.element.classList.contains(CLS_TB_DASH_BOR)) ?\n this.parent.element.classList.remove(CLS_TB_DASH_BOR) : this.parent.element.classList.add(CLS_TB_DASH_BOR);\n (table.classList.contains(CLS_TB_DASH_BOR)) ? table.classList.remove(CLS_TB_DASH_BOR) :\n table.classList.add(CLS_TB_DASH_BOR);\n }\n if (command === 'Alternate') {\n (this.parent.element.classList.contains(CLS_TB_ALT_BOR)) ?\n this.parent.element.classList.remove(CLS_TB_ALT_BOR) : this.parent.element.classList.add(CLS_TB_ALT_BOR);\n (table.classList.contains(CLS_TB_ALT_BOR)) ? table.classList.remove(CLS_TB_ALT_BOR) :\n table.classList.add(CLS_TB_ALT_BOR);\n /* eslint-enable */\n }\n if (args.args && args.args.item.cssClass) {\n var classList = args.args.item.cssClass.split(' ');\n for (var i = 0; i < classList.length; i++) {\n if (table.classList.contains(classList[i])) {\n table.classList.remove(classList[i]);\n }\n else {\n table.classList.add(classList[i]);\n }\n }\n }\n this.parent.formatter.saveData();\n this.parent.formatter.editorManager.nodeSelection.restore();\n };\n Table.prototype.insideList = function (range) {\n var blockNodes = this.parent.formatter.editorManager.domNode.blockNodes();\n var nodes = [];\n for (var i = 0; i < blockNodes.length; i++) {\n if (blockNodes[i].parentNode.tagName === 'LI') {\n nodes.push(blockNodes[i].parentNode);\n }\n else if (blockNodes[i].tagName === 'LI' && blockNodes[i].childNodes[0].tagName !== 'P' &&\n (blockNodes[i].childNodes[0].tagName !== 'OL' &&\n blockNodes[i].childNodes[0].tagName !== 'UL')) {\n nodes.push(blockNodes[i]);\n }\n }\n if (nodes.length > 1 || nodes.length && ((range.startOffset === 0 && range.endOffset === 0))) {\n this.ensureInsideTableList = true;\n return true;\n }\n else {\n this.ensureInsideTableList = false;\n return false;\n }\n };\n Table.prototype.tabSelection = function (event, selection, ele) {\n this.previousTableElement = ele;\n var insideList = this.insideList(selection.range);\n if ((event.keyCode === 37 || event.keyCode === 39) && selection.range.startContainer.nodeType === 3 ||\n insideList) {\n return;\n }\n event.preventDefault();\n ele.classList.remove(CLS_TABLE_SEL);\n if (!event.shiftKey && event.keyCode !== 37) {\n var nextElement = (!isNullOrUndefined(ele.nextSibling)) ? ele.nextSibling :\n (!isNullOrUndefined(closest(ele, 'tr').nextSibling) ? closest(ele, 'tr').nextSibling.childNodes[0] :\n (!isNullOrUndefined(closest(ele, 'table').nextSibling)) ?\n (closest(ele, 'table').nextSibling.nodeName.toLowerCase() === 'td') ?\n closest(ele, 'table').nextSibling : ele : ele);\n if (ele === nextElement && ele.nodeName === 'TH') {\n nextElement = closest(ele, 'table').rows[1].cells[0];\n }\n if (event.keyCode === 39 && ele === nextElement) {\n nextElement = closest(ele, 'table').nextSibling;\n }\n if (nextElement) {\n // eslint-disable-next-line\n (nextElement.textContent.trim() !== '' && closest(nextElement, 'td')) ?\n selection.setSelectionNode(this.contentModule.getDocument(), nextElement) :\n selection.setSelectionText(this.contentModule.getDocument(), nextElement, nextElement, 0, 0);\n }\n if (ele === nextElement && event.keyCode !== 39 && nextElement) {\n ele.classList.add(CLS_TABLE_SEL);\n this.addRow(selection, event, true);\n ele.classList.remove(CLS_TABLE_SEL);\n nextElement = nextElement.parentElement.nextSibling ? nextElement.parentElement.nextSibling.firstChild :\n nextElement.parentElement.firstChild;\n // eslint-disable-next-line\n (nextElement.textContent.trim() !== '' && closest(nextElement, 'td')) ?\n selection.setSelectionNode(this.contentModule.getDocument(), nextElement) :\n selection.setSelectionText(this.contentModule.getDocument(), nextElement, nextElement, 0, 0);\n }\n }\n else {\n var prevElement = (!isNullOrUndefined(ele.previousSibling)) ? ele.previousSibling :\n (!isNullOrUndefined(closest(ele, 'tr').previousSibling) ?\n closest(ele, 'tr').previousSibling.childNodes[closest(ele, 'tr').previousSibling.childNodes.length - 1] :\n (!isNullOrUndefined(closest(ele, 'table').previousSibling)) ?\n (closest(ele, 'table').previousSibling.nodeName.toLowerCase() === 'td') ? closest(ele, 'table').previousSibling :\n ele : ele);\n if (ele === prevElement && ele.cellIndex === 0 &&\n closest(ele, 'table').tHead) {\n var clsTble = closest(ele, 'table');\n prevElement = clsTble.rows[0].cells[clsTble.rows[0].cells.length - 1];\n }\n if (event.keyCode === 37 && ele === prevElement) {\n prevElement = closest(ele, 'table').previousSibling;\n }\n if (prevElement) {\n // eslint-disable-next-line\n (prevElement.textContent.trim() !== '' && closest(prevElement, 'td')) ?\n selection.setSelectionNode(this.contentModule.getDocument(), prevElement) :\n selection.setSelectionText(this.contentModule.getDocument(), prevElement, prevElement, 0, 0);\n }\n }\n };\n Table.prototype.tableArrowNavigation = function (event, selection, ele) {\n var selText = selection.range.startContainer;\n if ((event.keyCode === 40 && selText.nodeType === 3 && (selText.nextSibling && selText.nextSibling.nodeName === 'BR' ||\n selText.parentNode && selText.parentNode.nodeName !== 'TD')) ||\n (event.keyCode === 38 && selText.nodeType === 3 && (selText.previousSibling && selText.previousSibling.nodeName === 'BR' ||\n selText.parentNode && selText.parentNode.nodeName !== 'TD'))) {\n return;\n }\n event.preventDefault();\n ele.classList.remove(CLS_TABLE_SEL);\n if (event.keyCode === 40) {\n ele = (!isNullOrUndefined(closest(ele, 'tr').nextElementSibling)) ?\n closest(ele, 'tr').nextElementSibling.children[ele.cellIndex] :\n (closest(ele, 'table').tHead && ele.nodeName === 'TH') ?\n closest(ele, 'table').rows[1].cells[ele.cellIndex] :\n (!isNullOrUndefined(closest(ele, 'table').nextSibling)) ? closest(ele, 'table').nextSibling :\n ele;\n }\n else {\n ele = (!isNullOrUndefined(closest(ele, 'tr').previousElementSibling)) ?\n closest(ele, 'tr').previousElementSibling.children[ele.cellIndex] :\n (closest(ele, 'table').tHead && ele.nodeName !== 'TH') ?\n closest(ele, 'table').tHead.rows[0].cells[ele.cellIndex] :\n (!isNullOrUndefined(closest(ele, 'table').previousSibling)) ? closest(ele, 'table').previousSibling :\n ele;\n }\n if (ele) {\n selection.setSelectionText(this.contentModule.getDocument(), ele, ele, 0, 0);\n }\n };\n Table.prototype.setBGColor = function (args) {\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n // eslint-disable-next-line\n var selection = this.parent.formatter.editorManager.nodeSelection.save(range, this.contentModule.getDocument());\n // eslint-disable-next-line\n var selectedCells = this.curTable.querySelectorAll('.e-cell-select');\n for (var i = 0; i < selectedCells.length; i++) {\n selectedCells[i].style.backgroundColor = args.item.value;\n }\n this.parent.formatter.saveData();\n };\n Table.prototype.hideTableQuickToolbar = function () {\n if (this.quickToolObj && this.quickToolObj.tableQTBar && document.body.contains(this.quickToolObj.tableQTBar.element)) {\n this.quickToolObj.tableQTBar.hidePopup();\n }\n };\n Table.prototype.tableHeader = function (selection, e) {\n this.parent.formatter.process(this.parent, e, e.originalEvent, { selection: selection, subCommand: e.item.subCommand });\n };\n Table.prototype.editAreaClickHandler = function (e) {\n if (this.parent.readonly || !isNullOrUndefined(closest(e.args.target, '.e-img-caption'))) {\n return;\n }\n var args = e.args;\n var showOnRightClick = this.parent.quickToolbarSettings.showOnRightClick;\n if (args.which === 2 || (showOnRightClick && args.which === 1) || (!showOnRightClick && args.which === 3)) {\n return;\n }\n if (this.parent.editorMode === 'HTML' && this.parent.quickToolbarModule && this.parent.quickToolbarModule.tableQTBar) {\n this.quickToolObj = this.parent.quickToolbarModule;\n var target = args.target;\n this.contentModule = this.rendererFactory.getRenderer(RenderType.Content);\n var isPopupOpen = this.quickToolObj.tableQTBar.element.classList.contains('e-rte-pop');\n if (isPopupOpen) {\n return;\n }\n var range = this.parent.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n var closestTable = closest(target, 'table');\n var startNode = this.parent.getRange().startContainer.parentElement;\n var endNode = this.parent.getRange().endContainer.parentElement;\n if (target && target.nodeName !== 'A' && target.nodeName !== 'IMG' && target.nodeName !== 'VIDEO' && !target.classList.contains(CLS_CLICKELEM) &&\n target.nodeName !== 'AUDIO' && startNode === endNode && (target.nodeName === 'TD' || target.nodeName === 'TH' ||\n target.nodeName === 'TABLE' || (closestTable && this.parent.contentModule.getEditPanel().contains(closestTable)))\n && !(range.startContainer.nodeType === 3 && !range.collapsed)) {\n var range_1 = this.parent.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.save(range_1, this.contentModule.getDocument());\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n var pageX = (this.parent.iframeSettings.enable) ? window.pageXOffset + this.parent.element.getBoundingClientRect().left + args.clientX : args.pageX;\n var pageY = (this.parent.iframeSettings.enable) ? window.pageYOffset +\n this.parent.element.getBoundingClientRect().top + args.clientY : args.pageY;\n this.quickToolObj.tableQTBar.showPopup(pageX, pageY, target);\n this.parent.formatter.editorManager.nodeSelection.restore();\n }\n else {\n this.hideTableQuickToolbar();\n }\n }\n };\n Table.prototype.tableCellSelect = function (e) {\n var target = e.target;\n var row = Array.prototype.slice.call(target.parentElement.parentElement.children).indexOf(target.parentElement);\n var col = Array.prototype.slice.call(target.parentElement.children).indexOf(target);\n var list = this.dlgDiv.querySelectorAll('.e-rte-tablecell');\n Array.prototype.forEach.call(list, function (item) {\n var parentIndex = Array.prototype.slice.call(item.parentElement.parentElement.children).indexOf(item.parentElement);\n var cellIndex = Array.prototype.slice.call(item.parentElement.children).indexOf(item);\n removeClass([item], 'e-active');\n if (parentIndex <= row && cellIndex <= col) {\n addClass([item], 'e-active');\n }\n });\n this.tblHeader.innerHTML = (col + 1) + 'x' + (row + 1);\n };\n // eslint-disable-next-line\n Table.prototype.tableMouseUp = function (e) {\n EventHandler.remove(this.curTable, 'mousemove', this.tableMove);\n };\n // eslint-disable-next-line\n Table.prototype.tableCellLeave = function (e) {\n removeClass(this.dlgDiv.querySelectorAll('.e-rte-tablecell'), 'e-active');\n addClass([this.dlgDiv.querySelector('.e-rte-tablecell')], 'e-active');\n this.tblHeader.innerHTML = 1 + 'x' + 1;\n };\n Table.prototype.tableCellClick = function (e) {\n var target = e.target;\n var row = Array.prototype.slice.call(target.parentElement.parentElement.children).indexOf(target.parentElement) + 1;\n var col = Array.prototype.slice.call(target.parentElement.children).indexOf(target) + 1;\n this.self.tableInsert(row, col, e, this);\n };\n Table.prototype.tableInsert = function (row, col, e, selectionObj) {\n var proxy = (selectionObj.self) ? selectionObj.self : this;\n var startContainer = selectionObj.selection.range.startContainer;\n if (startContainer.nodeName === 'P' && startContainer.textContent.trim() === '' && !(startContainer.childNodes.length > 0)) {\n startContainer.innerHTML = '
    ';\n }\n var parentNode = startContainer.parentNode;\n if (proxy.parent.editorMode === 'HTML' &&\n ((proxy.parent.iframeSettings.enable && !hasClass(parentNode.ownerDocument.querySelector('body'), 'e-lib')) ||\n // eslint-disable-next-line\n (!proxy.parent.iframeSettings.enable && isNullOrUndefined(closest(parentNode, '[id=' + \"'\" + proxy.contentModule.getPanel().id + \"'\" + ']'))))) {\n proxy.contentModule.getEditPanel().focus();\n var range = proxy.parent.formatter.editorManager.nodeSelection.getRange(proxy.contentModule.getDocument());\n selectionObj.selection = proxy.parent.formatter.editorManager.nodeSelection.save(range, proxy.contentModule.getDocument());\n }\n var value = {\n rows: row, columns: col, width: {\n minWidth: proxy.parent.tableSettings.minWidth,\n maxWidth: proxy.parent.tableSettings.maxWidth,\n width: proxy.parent.tableSettings.width\n },\n selection: selectionObj.selection\n };\n if (proxy.popupObj) {\n proxy.popupObj.hide();\n }\n if (proxy.editdlgObj) {\n proxy.editdlgObj.hide();\n }\n proxy.parent.formatter.process(proxy.parent, selectionObj.args, selectionObj.args.originalEvent, value);\n proxy.contentModule.getEditPanel().focus();\n proxy.parent.on(mouseDown, proxy.cellSelect, proxy);\n };\n Table.prototype.cellSelect = function (e) {\n var target = e.args.target;\n var tdNode = closest(target, 'td,th');\n target = (target.nodeName !== 'TD' && tdNode && this.parent.contentModule.getEditPanel().contains(tdNode)) ?\n tdNode : target;\n removeClass(this.contentModule.getEditPanel().querySelectorAll('table td, table th'), CLS_TABLE_SEL);\n if (target && (target.tagName === 'TD' || target.tagName === 'TH')) {\n addClass([target], CLS_TABLE_SEL);\n this.activeCell = target;\n this.curTable = (this.curTable) ? this.curTable : closest(target, 'table');\n EventHandler.add(this.curTable, 'mousemove', this.tableMove, this);\n EventHandler.add(this.curTable, 'mouseup', this.tableMouseUp, this);\n this.removeResizeElement();\n if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {\n detach(this.helper);\n }\n }\n if (Browser.info.name === 'mozilla' && !isNullOrUndefined(closest(target, 'table')) &&\n closest(target, 'table').tagName === 'TABLE') {\n this.parent.contentModule.getEditPanel().setAttribute('contenteditable', 'false');\n }\n };\n Table.prototype.tableMove = function (event) {\n this.parent.formatter.editorManager.observer.notify('TABLE_MOVE', { event: event, selectNode: [this.activeCell] });\n };\n Table.prototype.resizeHelper = function (e) {\n if (this.parent.readonly) {\n return;\n }\n var target = e.target || e.targetTouches[0].target;\n var closestTable = closest(target, 'table.e-rte-table');\n if (!isNullOrUndefined(this.curTable) && !isNullOrUndefined(closestTable) && closestTable !== this.curTable &&\n this.parent.contentModule.getEditPanel().contains(closestTable)) {\n this.removeResizeElement();\n this.removeHelper(e);\n this.cancelResizeAction();\n }\n if (target.nodeName === 'TABLE' || target.nodeName === 'TD' || target.nodeName === 'TH') {\n this.curTable = (closestTable && this.parent.contentModule.getEditPanel().contains(closestTable))\n && (target.nodeName === 'TD' || target.nodeName === 'TH') ?\n closestTable : target;\n this.removeResizeElement();\n this.tableResizeEleCreation(this.curTable, e);\n }\n };\n Table.prototype.tableResizeEleCreation = function (table, e) {\n this.parent.preventDefaultResize(e);\n var columns = table.rows[this.calMaxCol(table)].cells;\n var rows = [];\n for (var i = 0; i < table.rows.length; i++) {\n rows.push(Array.prototype.slice.call(table.rows[i].cells, 0, 1)[0]);\n }\n var height = parseInt(getComputedStyle(table).height, 10);\n var width = parseInt(getComputedStyle(table).width, 10);\n var pos = this.calcPos(table);\n for (var i = 0; columns.length >= i; i++) {\n var colReEle = this.parent.createElement('span', {\n attrs: {\n 'data-col': (i).toString(), 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n colReEle.classList.add(CLS_RTE_TABLE_RESIZE, CLS_TB_COL_RES);\n if (columns.length === i) {\n colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +\n 'px; left:' + (pos.left + this.calcPos(columns[i - 1]).left + columns[i - 1].offsetWidth) + 'px;';\n }\n else {\n colReEle.style.cssText = 'height: ' + height + 'px; width: 4px; top: ' + pos.top +\n 'px; left:' + (pos.left + this.calcPos(columns[i]).left) + 'px;';\n }\n this.contentModule.getEditPanel().appendChild(colReEle);\n }\n for (var i = 0; rows.length > i; i++) {\n var rowReEle = this.parent.createElement('span', {\n attrs: {\n 'data-row': (i).toString(), 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n rowReEle.classList.add(CLS_RTE_TABLE_RESIZE, CLS_TB_ROW_RES);\n var rowPosLeft = !isNullOrUndefined(table.getAttribute('cellspacing')) || table.getAttribute('cellspacing') !== '' ?\n 0 : this.calcPos(rows[i]).left;\n rowReEle.style.cssText = 'width: ' + width + 'px; height: 4px; top: ' +\n (this.calcPos(rows[i]).top + pos.top + rows[i].offsetHeight - 2) +\n 'px; left:' + (rowPosLeft + pos.left) + 'px;';\n this.contentModule.getEditPanel().appendChild(rowReEle);\n }\n var tableReBox = this.parent.createElement('span', {\n className: CLS_TB_BOX_RES + ' ' + this.parent.cssClass, attrs: {\n 'data-col': columns.length.toString(), 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n tableReBox.style.cssText = 'top: ' + (pos.top + height - 4) +\n 'px; left:' + (pos.left + width - 4) + 'px;';\n if (Browser.isDevice) {\n tableReBox.classList.add('e-rmob');\n }\n this.contentModule.getEditPanel().appendChild(tableReBox);\n };\n Table.prototype.removeResizeElement = function () {\n var item = this.parent.contentModule.getEditPanel().\n querySelectorAll('.e-column-resize, .e-row-resize, .e-table-box');\n if (item.length > 0) {\n for (var i = 0; i < item.length; i++) {\n detach(item[i]);\n }\n }\n };\n Table.prototype.calcPos = function (elem) {\n var parentOffset = {\n top: 0,\n left: 0\n };\n var offset = elem.getBoundingClientRect();\n var doc = elem.ownerDocument;\n var offsetParent = elem.offsetParent || doc.documentElement;\n var isNestedTable = false;\n while (offsetParent &&\n (offsetParent === doc.body || offsetParent === doc.documentElement) &&\n offsetParent.style.position === 'static') {\n offsetParent = offsetParent.parentNode;\n }\n if (offsetParent.nodeName === 'TD' && elem.nodeName === 'TABLE') {\n offsetParent = closest(offsetParent, '.e-rte-content');\n isNestedTable = true;\n }\n if (offsetParent && offsetParent !== elem && offsetParent.nodeType === 1) {\n parentOffset = offsetParent.getBoundingClientRect();\n }\n if (isNestedTable) {\n isNestedTable = false;\n var topValue = this.parent.inputElement && this.parent.inputElement.scrollTop > 0 ?\n (this.parent.inputElement.scrollTop + offset.top) - parentOffset.top : offset.top - parentOffset.top;\n var leftValue = this.parent.inputElement && this.parent.inputElement.scrollLeft > 0 ?\n (this.parent.inputElement.scrollLeft + offset.left) - parentOffset.left : offset.left - parentOffset.left;\n return {\n top: topValue,\n left: leftValue\n };\n }\n else {\n return {\n top: elem.offsetTop,\n left: elem.offsetLeft\n };\n }\n };\n Table.prototype.getPointX = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageX;\n }\n else {\n return e.pageX;\n }\n };\n Table.prototype.getPointY = function (e) {\n if (e.touches && e.touches.length) {\n return e.touches[0].pageY;\n }\n else {\n return e.pageY;\n }\n };\n Table.prototype.resizeStart = function (e) {\n var _this = this;\n if (this.parent.readonly) {\n return;\n }\n if (Browser.isDevice) {\n this.resizeHelper(e);\n }\n var target = e.target;\n if (target.classList.contains(CLS_TB_COL_RES) ||\n target.classList.contains(CLS_TB_ROW_RES) ||\n target.classList.contains(CLS_TB_BOX_RES)) {\n e.preventDefault();\n this.parent.preventDefaultResize(e);\n removeClass(this.curTable.querySelectorAll('td,th'), CLS_TABLE_SEL);\n this.parent.formatter.editorManager.nodeSelection.Clear(this.contentModule.getDocument());\n this.pageX = this.getPointX(e);\n this.pageY = this.getPointY(e);\n this.resizeBtnInit();\n this.hideTableQuickToolbar();\n if (target.classList.contains(CLS_TB_COL_RES)) {\n this.resizeBtnStat.column = true;\n if (parseInt(target.getAttribute('data-col'), 10) === this.curTable.rows[this.calMaxCol(this.curTable)].cells.length) {\n this.currentColumnResize = 'last';\n this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10) - 1];\n }\n else {\n if (parseInt(target.getAttribute('data-col'), 10) === 0) {\n this.currentColumnResize = 'first';\n }\n else {\n this.currentColumnResize = 'middle';\n }\n this.columnEle = this.curTable.rows[this.calMaxCol(this.curTable)].cells[parseInt(target.getAttribute('data-col'), 10)];\n }\n this.colIndex = this.columnEle.cellIndex;\n this.moveEle = e.target;\n this.appendHelper();\n }\n if (target.classList.contains(CLS_TB_ROW_RES)) {\n this.rowEle = this.curTable.rows[parseInt(target.getAttribute('data-row'), 10)];\n this.resizeBtnStat.row = true;\n this.appendHelper();\n }\n if (target.classList.contains(CLS_TB_BOX_RES)) {\n this.resizeBtnStat.tableBox = true;\n }\n if (Browser.isDevice && this.helper && !this.helper.classList.contains('e-reicon')) {\n this.helper.classList.add('e-reicon');\n EventHandler.add(document, Browser.touchStartEvent, this.removeHelper, this);\n EventHandler.add(this.helper, Browser.touchStartEvent, this.resizeStart, this);\n }\n else {\n var args = { event: e, requestType: 'Table' };\n this.parent.trigger(resizeStart, args, function (resizeStartArgs) {\n if (resizeStartArgs.cancel) {\n _this.cancelResizeAction();\n }\n });\n }\n EventHandler.add(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing, this);\n EventHandler.add(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd, this);\n }\n };\n Table.prototype.removeHelper = function (e) {\n var cls = e.target.classList;\n if (!(cls.contains('e-reicon')) && this.helper) {\n EventHandler.remove(document, Browser.touchStartEvent, this.removeHelper);\n EventHandler.remove(this.helper, Browser.touchStartEvent, this.resizeStart);\n if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {\n detach(this.helper);\n }\n this.pageX = null;\n this.helper = null;\n }\n };\n Table.prototype.appendHelper = function () {\n this.helper = this.parent.createElement('div', {\n className: 'e-table-rhelper' + ' ' + this.parent.cssClass\n });\n if (Browser.isDevice) {\n this.helper.classList.add('e-reicon');\n }\n this.contentModule.getEditPanel().appendChild(this.helper);\n this.setHelperHeight();\n };\n Table.prototype.setHelperHeight = function () {\n var pos = this.calcPos(this.curTable);\n if (this.resizeBtnStat.column) {\n this.helper.classList.add('e-column-helper');\n this.helper.style.cssText = 'height: ' + getComputedStyle(this.curTable).height + '; top: ' +\n pos.top + 'px; left:' + ((pos.left + this.calcPos(this.columnEle).left) +\n (this.currentColumnResize === 'last' ? this.columnEle.offsetWidth + 2 : 0) - 1) + 'px;';\n }\n else {\n this.helper.classList.add('e-row-helper');\n this.helper.style.cssText = 'width: ' + getComputedStyle(this.curTable).width + '; top: ' +\n (this.calcPos(this.rowEle).top + pos.top + this.rowEle.offsetHeight) +\n 'px; left:' + (this.calcPos(this.rowEle).left + pos.left) + 'px;';\n }\n };\n Table.prototype.updateHelper = function () {\n var pos = this.calcPos(this.curTable);\n if (this.resizeBtnStat.column) {\n var left = (pos.left + this.calcPos(this.columnEle).left) +\n (this.currentColumnResize === 'last' ? this.columnEle.offsetWidth + 2 : 0) - 1;\n this.helper.style.left = left + 'px';\n }\n else {\n var top_1 = this.calcPos(this.rowEle).top + pos.top + this.rowEle.offsetHeight;\n this.helper.style.top = top_1 + 'px';\n }\n };\n Table.prototype.calMaxCol = function (element) {\n var max = 0;\n var maxRowIndex;\n for (var i = 0; i < element.rows.length; i++) {\n if (max < element.rows[i].cells.length) {\n maxRowIndex = i;\n max = element.rows[i].cells.length;\n }\n }\n return maxRowIndex;\n };\n Table.prototype.resizing = function (e) {\n var _this = this;\n var pageX = this.getPointX(e);\n var pageY = this.getPointY(e);\n var mouseX = (this.parent.enableRtl) ? -(pageX - this.pageX) : (pageX - this.pageX);\n var mouseY = (this.parent.enableRtl) ? -(pageY - this.pageY) : (pageY - this.pageY);\n this.pageX = pageX;\n this.pageY = pageY;\n var maxiumWidth;\n var currentTdElement = this.curTable.closest('td');\n var args = { event: e, requestType: 'table' };\n this.parent.trigger(onResize, args, function (resizingArgs) {\n if (resizingArgs.cancel) {\n _this.cancelResizeAction();\n }\n else {\n var tableReBox = _this.contentModule.getEditPanel().querySelector('.e-table-box');\n var tableWidth = parseInt(getComputedStyle(_this.curTable).width, 10);\n var tableHeight = parseInt(getComputedStyle(_this.curTable).height, 10);\n var paddingSize = +getComputedStyle(_this.contentModule.getEditPanel()).paddingRight.match(/\\d/g).join('');\n var rteWidth = _this.contentModule.getEditPanel().offsetWidth -\n (_this.contentModule.getEditPanel().offsetWidth -\n _this.contentModule.getEditPanel().clientWidth) - paddingSize * 2;\n var widthCompare = void 0;\n if (!isNullOrUndefined(_this.curTable.parentElement.closest('table')) && !isNullOrUndefined(_this.curTable.closest('td')) &&\n _this.contentModule.getEditPanel().contains(_this.curTable.closest('td'))) {\n var currentTd = _this.curTable.closest('td');\n var currentTDPad = +getComputedStyle(currentTd).paddingRight.match(/\\d/g).join('');\n // Padding of the current table with the parent element multiply with 2.\n widthCompare = currentTd.offsetWidth - (currentTd.offsetWidth - currentTd.clientWidth) - currentTDPad * 2;\n }\n else {\n widthCompare = rteWidth;\n }\n if (_this.resizeBtnStat.column) {\n var width = parseFloat(_this.columnEle.offsetWidth.toString());\n var cellRow = _this.curTable.rows[0].cells[0].nodeName === 'TH' ? 1 : 0;\n var currentTableWidth = parseFloat(_this.curTable.style.width.split('%')[0]);\n var currentColumnCellWidth = parseFloat(_this.curTable.rows[cellRow].cells[_this.colIndex >= _this.curTable.rows[cellRow].cells.length ? _this.curTable.rows[cellRow].cells.length - 1 : _this.colIndex].style.width.split('%')[0]);\n if (_this.currentColumnResize === 'first') {\n mouseX = mouseX - 0.75; //This was done for to make the gripper and the table first/last column will be close.\n _this.removeResizeElement();\n if (currentTdElement) {\n maxiumWidth = _this.curTable.getBoundingClientRect().right - _this.calcPos(currentTdElement).left;\n _this.curTable.style.maxWidth = maxiumWidth + 'px';\n }\n // Below the value '100' is the 100% width of the parent element.\n if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX < 0) && currentTableWidth <= 100 &&\n _this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) <= 100) {\n var firstColumnsCell = _this.findFirstLastColCells(_this.curTable, true);\n _this.curTable.style.width = _this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) > 100 ? (100 + '%') :\n (_this.convertPixelToPercentage(tableWidth - mouseX, widthCompare) + '%');\n var differenceWidth = currentTableWidth - _this.convertPixelToPercentage(tableWidth - mouseX, widthCompare);\n _this.currentMarginLeft = _this.currentMarginLeft + differenceWidth;\n _this.curTable.style.marginLeft = 'calc(' + (_this.curTable.style.width === '100%' ? 0 : _this.currentMarginLeft) + '%)';\n for (var i = 0; i < firstColumnsCell.length; i++) {\n _this.curTable.rows[i].cells[_this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';\n }\n }\n }\n else if (_this.currentColumnResize === 'last') {\n mouseX = mouseX + 0.75; //This was done for to make the gripper and the table first/last column will be close.\n _this.removeResizeElement();\n if (currentTdElement) {\n maxiumWidth = currentTdElement.getBoundingClientRect().right - _this.curTable.getBoundingClientRect().left;\n _this.curTable.style.maxWidth = maxiumWidth + 'px';\n }\n // Below the value '100' is the 100% width of the parent element.\n if (((mouseX !== 0 && 5 < currentColumnCellWidth) || mouseX > 0) &&\n currentTableWidth <= 100 && _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) <= 100) {\n var lastColumnsCell = _this.findFirstLastColCells(_this.curTable, false);\n _this.curTable.style.width = _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) > 100 ? (100 + '%') : (_this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%');\n var differenceWidth = currentTableWidth - _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare);\n for (var i = 0; i < lastColumnsCell.length; i++) {\n _this.curTable.rows[i].cells[_this.colIndex].style.width = (currentColumnCellWidth - differenceWidth) + '%';\n }\n }\n }\n else {\n var cellColl = _this.curTable.rows[_this.calMaxCol(_this.curTable)].cells;\n var actualwid = width - mouseX;\n var totalwid = parseFloat(_this.columnEle.offsetWidth.toString()) +\n parseFloat(cellColl[_this.colIndex - 1].offsetWidth.toString());\n for (var i = 0; i < _this.curTable.rows.length; i++) {\n if ((totalwid - actualwid) > 20 && actualwid > 20) {\n var leftColumnWidth = totalwid - actualwid;\n var rightColWidth = actualwid;\n var index = _this.curTable.rows[i].cells[i].hasAttribute('colspan') ?\n parseInt(_this.curTable.rows[i].cells[i].getAttribute('colspan'), 10) - 1 : _this.colIndex;\n if (!isNullOrUndefined(_this.curTable.rows[i].cells[index - 1])) {\n _this.curTable.rows[i].cells[index - 1].style.width =\n _this.convertPixelToPercentage(leftColumnWidth, tableWidth) + '%';\n }\n if (!isNullOrUndefined(_this.curTable.rows[i].cells[index])) {\n _this.curTable.rows[i].cells[index].style.width =\n _this.convertPixelToPercentage(rightColWidth, tableWidth) + '%';\n }\n }\n }\n }\n _this.updateHelper();\n }\n else if (_this.resizeBtnStat.row) {\n _this.parent.preventDefaultResize(e);\n var height = parseFloat(_this.rowEle.clientHeight.toString()) + mouseY;\n if (height > 20) {\n _this.rowEle.style.height = height + 'px';\n }\n _this.curTable.style.height = '';\n if (!isNullOrUndefined(tableReBox)) {\n tableReBox.style.cssText = 'top: ' + (_this.calcPos(_this.curTable).top + tableHeight - 4) +\n 'px; left:' + (_this.calcPos(_this.curTable).left + tableWidth - 4) + 'px;';\n }\n _this.updateHelper();\n }\n else if (_this.resizeBtnStat.tableBox) {\n if (!Browser.isDevice) {\n EventHandler.remove(_this.contentModule.getEditPanel(), 'mouseover', _this.resizeHelper);\n }\n if (currentTdElement) {\n // eslint-disable-next-line max-len\n var tableBoxPosition = _this.curTable.getBoundingClientRect().left - currentTdElement.getBoundingClientRect().left;\n maxiumWidth = Math.abs(tableBoxPosition - currentTdElement.getBoundingClientRect().width) - 5;\n _this.curTable.style.maxWidth = maxiumWidth + 'px';\n }\n var widthType = _this.curTable.style.width.indexOf('%') > -1;\n _this.curTable.style.width = widthType ? _this.convertPixelToPercentage(tableWidth + mouseX, widthCompare) + '%'\n : tableWidth + mouseX + 'px';\n _this.curTable.style.height = tableHeight + mouseY + 'px';\n tableReBox.classList.add('e-rbox-select');\n tableReBox.style.cssText = 'top: ' + (_this.calcPos(_this.curTable).top + tableHeight - 4) +\n 'px; left:' + (_this.calcPos(_this.curTable).left + tableWidth - 4) + 'px;';\n }\n }\n });\n };\n Table.prototype.findFirstLastColCells = function (table, isFirst) {\n var resultColumns = [];\n var rows = table.querySelectorAll('tr');\n for (var i = 0; i < rows.length; i++) {\n if (rows[i].closest('table') === table) {\n var columns = rows[i].querySelectorAll('th, td');\n resultColumns.push(isFirst ? columns[0] : columns[columns.length - 1]);\n }\n }\n return resultColumns;\n };\n Table.prototype.convertPixelToPercentage = function (value, offsetValue) {\n return (value / offsetValue) * 100;\n };\n Table.prototype.cancelResizeAction = function () {\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n this.removeResizeElement();\n };\n Table.prototype.resizeEnd = function (e) {\n this.resizeBtnInit();\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(this.contentModule.getDocument(), Browser.touchEndEvent, this.resizeEnd);\n if (this.contentModule.getEditPanel().querySelector('.e-table-box') &&\n this.contentModule.getEditPanel().contains(this.contentModule.getEditPanel().querySelector('.e-table-box'))) {\n if (!Browser.isDevice) {\n EventHandler.add(this.contentModule.getEditPanel(), 'mouseover', this.resizeHelper, this);\n }\n this.removeResizeElement();\n }\n if (this.helper && this.contentModule.getEditPanel().contains(this.helper)) {\n detach(this.helper);\n this.helper = null;\n }\n this.pageX = null;\n this.pageY = null;\n this.moveEle = null;\n var args = { event: e, requestType: 'table' };\n this.parent.trigger(resizeStop, args);\n this.parent.formatter.saveData();\n };\n Table.prototype.resizeBtnInit = function () {\n return this.resizeBtnStat = { column: false, row: false, tableBox: false };\n };\n Table.prototype.addRow = function (selectCell, e, tabkey) {\n var cmd;\n if (tabkey) {\n cmd = {\n item: { command: 'Table', subCommand: 'InsertRowAfter' }\n };\n }\n var value = {\n selection: selectCell,\n subCommand: (tabkey) ? cmd.item.subCommand : e.item.subCommand\n };\n this.parent.formatter.process(this.parent, (tabkey) ? cmd : e, e, value);\n };\n Table.prototype.addColumn = function (selectCell, e) {\n this.parent.formatter.process(this.parent, e, e, { selection: selectCell, width: this.parent.tableSettings.width, subCommand: e.item.subCommand });\n };\n Table.prototype.removeRowColumn = function (selectCell, e) {\n this.parent.formatter.process(this.parent, e, e, { selection: selectCell, subCommand: e.item.subCommand });\n this.hideTableQuickToolbar();\n };\n Table.prototype.removeTable = function (selection, args, delKey) {\n var cmd;\n if (delKey) {\n cmd = { item: { command: 'Table', subCommand: 'TableRemove' } };\n }\n var value = {\n selection: selection,\n subCommand: (delKey) ? cmd.item.subCommand : args.item.subCommand\n };\n this.parent.formatter.process(this.parent, (delKey) ? cmd : args, args.originalEvent, value);\n this.contentModule.getEditPanel().focus();\n if (this.parent.inputElement.innerHTML === null || this.parent.inputElement.innerHTML === '') {\n if (this.parent.enterKey === 'DIV') {\n this.contentModule.getEditPanel().innerHTML = '

    ';\n }\n else if (this.parent.enterKey === 'BR') {\n this.contentModule.getEditPanel().innerHTML = '
    ';\n }\n else {\n this.contentModule.getEditPanel().innerHTML = '


    ';\n }\n }\n this.removeResizeElement();\n this.hideTableQuickToolbar();\n };\n Table.prototype.renderDlgContent = function (args) {\n var _this = this;\n if (Browser.isDevice || this.parent.inlineMode.enable) {\n this.insertTableDialog(args);\n return;\n }\n if (this.popupObj) {\n this.popupObj.hide();\n return;\n }\n this.hideTableQuickToolbar();\n var header = '1X1';\n var insertbtn = this.l10n.getConstant('inserttablebtn');\n this.dlgDiv = this.parent.createElement('div', { className: 'e-rte-table-popup' + ' ' + this.parent.cssClass, id: this.rteID + '_table' });\n this.tblHeader = this.parent.createElement('div', { className: 'e-rte-popup-header' + ' ' + this.parent.cssClass });\n this.tblHeader.innerHTML = header;\n this.dlgDiv.appendChild(this.tblHeader);\n var tableDiv = this.parent.createElement('div', { className: 'e-rte-table-span' + ' ' + this.parent.cssClass });\n this.drawTable(tableDiv, args);\n this.dlgDiv.appendChild(tableDiv);\n this.dlgDiv.appendChild(this.parent.createElement('span', { className: 'e-span-border' + ' ' + this.parent.cssClass }));\n var btnEle = this.parent.createElement('button', {\n className: 'e-insert-table-btn' + ' ' + this.parent.cssClass, id: this.rteID + '_insertTable',\n attrs: { type: 'button', tabindex: '0' }\n });\n if (!isNullOrUndefined(this.parent.getToolbarElement().querySelector('.e-expended-nav'))) {\n this.parent.getToolbarElement().querySelector('.e-expended-nav').setAttribute('tabindex', '1');\n }\n this.dlgDiv.appendChild(btnEle);\n this.createTableButton = new Button({\n iconCss: 'e-icons e-create-table', content: insertbtn, cssClass: 'e-flat' + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n this.createTableButton.isStringTemplate = true;\n this.createTableButton.appendTo(btnEle);\n EventHandler.add(btnEle, 'click', this.insertTableDialog, { self: this, args: args.args, selection: args.selection });\n this.parent.getToolbar().appendChild(this.dlgDiv);\n var target = args.args.originalEvent.target;\n target = target.classList.contains('e-toolbar-item') ? target.firstChild : target.parentElement;\n this.popupObj = new Popup(this.dlgDiv, {\n targetType: 'relative',\n relateTo: target,\n collision: { X: 'fit', Y: 'none' },\n offsetY: 8,\n viewPortElement: this.parent.element,\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl,\n zIndex: 10001,\n // eslint-disable-next-line\n close: function (event) {\n _this.parent.isBlur = false;\n _this.popupObj.destroy();\n detach(_this.popupObj.element);\n _this.popupObj = null;\n }\n });\n addClass([this.popupObj.element], 'e-popup-open');\n if (!isNullOrUndefined(this.parent.cssClass)) {\n addClass([this.popupObj.element], this.parent.cssClass);\n }\n this.popupObj.refreshPosition(target);\n };\n Table.prototype.docClick = function (e) {\n var target = e.args.target;\n // eslint-disable-next-line\n if (target && target.classList && ((this.popupObj && !closest(target, '[id=' + \"'\" + this.popupObj.element.id + \"'\" + ']') ||\n (this.editdlgObj && !closest(target, '#' + this.editdlgObj.element.id)))) && !target.classList.contains('e-create-table') &&\n target.offsetParent && !target.offsetParent.classList.contains('e-rte-backgroundcolor-dropdown')) {\n if (this.popupObj) {\n this.popupObj.hide();\n }\n if (this.editdlgObj) {\n this.editdlgObj.hide();\n }\n this.parent.isBlur = true;\n dispatchEvent(this.parent.element, 'focusout');\n }\n var closestEle = closest(target, 'td');\n var isExist = closestEle && this.parent.contentModule.getEditPanel().contains(closestEle) ? true : false;\n if (target && target.tagName !== 'TD' && target.tagName !== 'TH' && !isExist &&\n closest(target, '.e-rte-quick-popup') === null && target.offsetParent &&\n !target.offsetParent.classList.contains('e-quick-dropdown') &&\n !target.offsetParent.classList.contains('e-rte-backgroundcolor-dropdown') && !closest(target, '.e-rte-dropdown-popup')\n && !closest(target, '.e-rte-elements')) {\n removeClass(this.parent.inputElement.querySelectorAll('table td'), CLS_TABLE_SEL);\n if (!Browser.isIE) {\n this.hideTableQuickToolbar();\n }\n }\n if (target && target.classList && !target.classList.contains(CLS_TB_COL_RES) &&\n !target.classList.contains(CLS_TB_ROW_RES) && !target.classList.contains(CLS_TB_BOX_RES)) {\n this.removeResizeElement();\n }\n };\n Table.prototype.drawTable = function (tableDiv, args) {\n var rowDiv;\n var tableCell;\n for (var row = 0; row < 3; row++) {\n rowDiv = this.parent.createElement('div', { className: 'e-rte-table-row' + ' ' + this.parent.cssClass, attrs: { 'data-column': '' + row } });\n for (var col = 0; col < 10; col++) {\n var display = (row > 2) ? 'none' : 'inline-block';\n tableCell = this.parent.createElement('div', { className: 'e-rte-tablecell e-default' + ' ' + this.parent.cssClass, attrs: { 'data-cell': '' + col } });\n rowDiv.appendChild(tableCell);\n tableCell.style.display = display;\n if (col === 0 && row === 0) {\n addClass([tableCell], 'e-active');\n }\n EventHandler.add(tableCell, 'mousemove', this.tableCellSelect, this);\n EventHandler.add(rowDiv, 'mouseleave', this.tableCellLeave, this);\n EventHandler.add(tableCell, 'mouseup', this.tableCellClick, { self: this, args: args.args, selection: args.selection });\n }\n tableDiv.appendChild(rowDiv);\n }\n };\n Table.prototype.editTable = function (args) {\n var _this = this;\n this.createDialog(args);\n var editContent = this.tableDlgContent(args);\n var update = this.l10n.getConstant('dialogUpdate');\n var cancel = this.l10n.getConstant('dialogCancel');\n var editHeader = this.l10n.getConstant('tableEditHeader');\n this.editdlgObj.setProperties({\n height: 'initial', width: '290px', content: editContent, header: editHeader,\n buttons: [{\n click: this.applyProperties.bind(this, args),\n buttonModel: { content: update, cssClass: 'e-flat e-size-update' + ' ' + this.parent.cssClass, isPrimary: true }\n },\n {\n click: function (e) {\n _this.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }\n }],\n cssClass: this.editdlgObj.cssClass + ' e-rte-edit-table-prop-dialog'\n });\n this.editdlgObj.element.style.maxHeight = 'none';\n this.editdlgObj.content.querySelector('input').focus();\n this.hideTableQuickToolbar();\n };\n Table.prototype.insertTableDialog = function (args) {\n var proxy = (this.self) ? this.self : this;\n if (proxy.popupObj) {\n proxy.popupObj.hide();\n }\n proxy.createDialog(args);\n var dlgContent = proxy.tableCellDlgContent();\n var insert = proxy.l10n.getConstant('dialogInsert');\n var cancel = proxy.l10n.getConstant('dialogCancel');\n if (isNullOrUndefined(proxy.editdlgObj)) {\n return;\n }\n proxy.editdlgObj.setProperties({\n height: 'initial', width: '290px', content: dlgContent,\n buttons: [{\n click: proxy.customTable.bind(this, args),\n buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + ' ' + proxy.parent.cssClass, isPrimary: true }\n },\n {\n click: function (e) {\n proxy.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + proxy.parent.cssClass, content: cancel }\n }]\n });\n if (!isNullOrUndefined(proxy.parent.cssClass)) {\n proxy.editdlgObj.setProperties({ cssClass: proxy.parent.cssClass });\n }\n proxy.editdlgObj.element.style.maxHeight = 'none';\n proxy.editdlgObj.content.querySelector('input').focus();\n };\n Table.prototype.tableCellDlgContent = function () {\n var tableColumn = this.l10n.getConstant('columns');\n var tableRow = this.l10n.getConstant('rows');\n var tableWrap = this.parent.createElement('div', { className: 'e-cell-wrap' + ' ' + this.parent.cssClass });\n var content = '
    '\n + '
    ';\n var contentElem = parseHtml(content);\n tableWrap.appendChild(contentElem);\n this.columnTextBox = new NumericTextBox({\n format: 'n0',\n min: 1,\n value: 3,\n placeholder: tableColumn,\n floatLabelType: 'Auto',\n max: 50,\n enableRtl: this.parent.enableRtl, locale: this.parent.locale,\n cssClass: this.parent.cssClass\n });\n this.columnTextBox.isStringTemplate = true;\n this.columnTextBox.appendTo(tableWrap.querySelector('#tableColumn'));\n this.rowTextBox = new NumericTextBox({\n format: 'n0',\n min: 1,\n value: 3,\n placeholder: tableRow,\n floatLabelType: 'Auto',\n max: 50,\n enableRtl: this.parent.enableRtl, locale: this.parent.locale,\n cssClass: this.parent.cssClass\n });\n this.rowTextBox.isStringTemplate = true;\n this.rowTextBox.appendTo(tableWrap.querySelector('#tableRow'));\n return tableWrap;\n };\n Table.prototype.clearDialogObj = function () {\n if (this.editdlgObj) {\n this.editdlgObj.destroy();\n detach(this.editdlgObj.element);\n this.editdlgObj = null;\n }\n };\n // eslint-disable-next-line\n Table.prototype.createDialog = function (args) {\n var _this = this;\n if (this.editdlgObj) {\n this.editdlgObj.hide({ returnValue: true });\n return;\n }\n var tableDialog = this.parent.createElement('div', {\n className: 'e-rte-edit-table' + ' ' + this.parent.cssClass, id: this.rteID + '_tabledialog'\n });\n this.parent.element.appendChild(tableDialog);\n var insert = this.l10n.getConstant('dialogInsert');\n var cancel = this.l10n.getConstant('dialogCancel');\n var header = this.l10n.getConstant('tabledialogHeader');\n var dialogModel = {\n header: header,\n cssClass: CLS_RTE_ELEMENTS + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n showCloseIcon: true, closeOnEscape: true, width: (Browser.isDevice) ? '290px' : '340px', height: 'initial',\n position: { X: 'center', Y: (Browser.isDevice) ? 'center' : 'top' },\n isModal: Browser.isDevice,\n buttons: [{\n buttonModel: { content: insert, cssClass: 'e-flat e-insert-table' + ' ' + this.parent.cssClass, isPrimary: true }\n },\n {\n click: function (e) {\n _this.cancelDialog(e);\n },\n buttonModel: { cssClass: 'e-flat e-cancel' + ' ' + this.parent.cssClass, content: cancel }\n }],\n target: (Browser.isDevice) ? document.body : this.parent.element,\n animationSettings: { effect: 'None' },\n close: function (event) {\n _this.parent.isBlur = false;\n _this.editdlgObj.destroy();\n detach(_this.editdlgObj.element);\n _this.dialogRenderObj.close(event);\n _this.editdlgObj = null;\n }\n };\n this.editdlgObj = this.dialogRenderObj.render(dialogModel);\n this.editdlgObj.appendTo(tableDialog);\n if (this.quickToolObj && this.quickToolObj.inlineQTBar && document.body.contains(this.quickToolObj.inlineQTBar.element)) {\n this.quickToolObj.inlineQTBar.hidePopup();\n }\n };\n Table.prototype.customTable = function (args, e) {\n var proxy = (this.self) ? this.self : this;\n if (proxy.rowTextBox.value && proxy.columnTextBox.value) {\n var argument = ((Browser.isDevice || (!isNullOrUndefined(args.args)\n && !isNullOrUndefined(args.args.originalEvent) &&\n args.args.originalEvent.action === 'insert-table')\n || proxy.parent.inlineMode.enable) ? args : this);\n proxy.tableInsert(proxy.rowTextBox.value, proxy.columnTextBox.value, e, argument);\n }\n };\n // eslint-disable-next-line\n Table.prototype.cancelDialog = function (e) {\n this.parent.isBlur = false;\n this.editdlgObj.hide({ returnValue: true });\n };\n // eslint-disable-next-line\n Table.prototype.applyProperties = function (args, e) {\n var dialogEle = this.editdlgObj.element;\n var table = closest(args.selectNode[0], 'table');\n table.style.width = dialogEle.querySelector('.e-table-width').value + 'px';\n if (dialogEle.querySelector('.e-cell-padding').value !== '') {\n var tdElm = table.querySelectorAll('td');\n for (var i = 0; i < tdElm.length; i++) {\n var padVal = '';\n if (tdElm[i].style.padding === '') {\n padVal = tdElm[i].getAttribute('style') + ' padding:' +\n dialogEle.querySelector('.e-cell-padding').value + 'px;';\n }\n else {\n tdElm[i].style.padding = dialogEle.querySelector('.e-cell-padding').value + 'px';\n padVal = tdElm[i].getAttribute('style');\n }\n tdElm[i].setAttribute('style', padVal);\n }\n }\n table.cellSpacing = dialogEle.querySelector('.e-cell-spacing').value;\n if (!isNullOrUndefined(table.cellSpacing) || table.cellSpacing !== '0') {\n addClass([table], CLS_TABLE_BORDER);\n }\n else {\n removeClass([table], CLS_TABLE_BORDER);\n }\n this.parent.formatter.saveData();\n this.editdlgObj.hide({ returnValue: true });\n };\n Table.prototype.tableDlgContent = function (e) {\n var selectNode = e.selectParent[0];\n var tableWidth = this.l10n.getConstant('tableWidth');\n var cellPadding = this.l10n.getConstant('cellpadding');\n var cellSpacing = this.l10n.getConstant('cellspacing');\n var tableWrap = this.parent.createElement('div', { className: 'e-table-sizewrap' + ' ' + this.parent.cssClass });\n var widthVal = closest(selectNode, 'table').getClientRects()[0].width;\n var padVal = closest(selectNode, 'td').style.padding;\n var brdSpcVal = closest(selectNode, 'table').getAttribute('cellspacing');\n var content = '
    ' + '
    '\n + '
    ';\n var contentElem = parseHtml(content);\n tableWrap.appendChild(contentElem);\n this.tableWidthNum = new NumericTextBox({\n format: 'n0',\n min: 0,\n value: widthVal,\n placeholder: tableWidth,\n floatLabelType: 'Auto',\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n this.tableWidthNum.isStringTemplate = true;\n this.tableWidthNum.appendTo(tableWrap.querySelector('#tableWidth'));\n this.tableCellPadding = new NumericTextBox({\n format: 'n0',\n min: 0,\n // eslint-disable-next-line\n value: padVal !== '' ? parseInt(padVal, null) : 0,\n placeholder: cellPadding,\n floatLabelType: 'Auto',\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n this.tableCellPadding.isStringTemplate = true;\n this.tableCellPadding.appendTo(tableWrap.querySelector('#cellPadding'));\n this.tableCellSpacing = new NumericTextBox({\n format: 'n0',\n min: 0,\n // eslint-disable-next-line\n value: brdSpcVal !== '' && !isNullOrUndefined(brdSpcVal) ? parseInt(brdSpcVal, null) : 0,\n placeholder: cellSpacing,\n floatLabelType: 'Auto',\n enableRtl: this.parent.enableRtl, locale: this.parent.locale\n });\n this.tableCellSpacing.isStringTemplate = true;\n this.tableCellSpacing.appendTo(tableWrap.querySelector('#cellSpacing'));\n return tableWrap;\n };\n /**\n * Destroys the ToolBar.\n *\n * @function destroy\n * @returns {void}\n * @hidden\n * @deprecated\n */\n Table.prototype.destroy = function () {\n this.removeEventListener();\n };\n Table.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n */\n Table.prototype.getModuleName = function () {\n return 'table';\n };\n return Table;\n}());\n\n/**\n * Dialog Renderer\n */\nvar DialogRenderer = /** @__PURE__ @class */ (function () {\n function DialogRenderer(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n DialogRenderer.prototype.addEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n this.parent.on(destroy, this.removeEventListener, this);\n };\n DialogRenderer.prototype.removeEventListener = function () {\n if (this.parent.isDestroyed) {\n return;\n }\n this.parent.off(destroy, this.removeEventListener);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n /**\n * dialog render method\n *\n * @param {DialogModel} e - specifies the dialog model.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DialogRenderer.prototype.render = function (e) {\n var dlgObj;\n e.beforeOpen = this.beforeOpen.bind(this);\n e.open = this.open.bind(this);\n if (isNullOrUndefined(e.close)) {\n e.close = this.close.bind(this);\n }\n e.beforeClose = this.beforeClose.bind(this);\n // eslint-disable-next-line\n dlgObj = new Dialog(e);\n dlgObj.isStringTemplate = true;\n return dlgObj;\n };\n DialogRenderer.prototype.beforeOpen = function (args) {\n this.parent.trigger(beforeDialogOpen, args, this.beforeOpenCallback.bind(this, args));\n };\n DialogRenderer.prototype.beforeOpenCallback = function (args) {\n if (args.cancel) {\n this.parent.notify(clearDialogObj, null);\n }\n };\n DialogRenderer.prototype.open = function (args) {\n this.parent.trigger(dialogOpen, args);\n };\n DialogRenderer.prototype.beforeClose = function (args) {\n this.parent.trigger(beforeDialogClose, args, function (closeArgs) {\n if (!closeArgs.cancel) {\n if (closeArgs.container.classList.contains('e-popup-close')) {\n closeArgs.cancel = true;\n }\n }\n });\n };\n /**\n * dialog close method\n *\n * @param {Object} args - specifies the arguments.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n DialogRenderer.prototype.close = function (args) {\n this.parent.trigger(dialogClose, args);\n };\n DialogRenderer.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n return DialogRenderer;\n}());\n\n/**\n * Renderer\n */\n\n/**\n * @hidden\n * @deprecated\n */\nvar executeGroup = {\n 'bold': {\n command: 'Style',\n subCommand: 'Bold',\n value: 'strong'\n },\n 'italic': {\n command: 'Style',\n subCommand: 'Italic',\n value: 'em'\n },\n 'underline': {\n command: 'Style',\n subCommand: 'Underline',\n value: 'span'\n },\n 'strikeThrough': {\n command: 'Style',\n subCommand: 'StrikeThrough',\n value: 'span'\n },\n 'insertCode': {\n command: 'Formats',\n subCommand: 'Pre',\n value: 'pre'\n },\n 'superscript': {\n command: 'Effects',\n subCommand: 'SuperScript',\n value: 'sup'\n },\n 'subscript': {\n command: 'Effects',\n subCommand: 'SubScript',\n value: 'sub'\n },\n 'uppercase': {\n command: 'Casing',\n subCommand: 'UpperCase'\n },\n 'lowercase': {\n command: 'Casing',\n subCommand: 'LowerCase'\n },\n 'fontColor': {\n command: 'font',\n subCommand: 'fontcolor',\n value: '#ff0000'\n },\n 'fontName': {\n command: 'font',\n subCommand: 'fontname',\n value: 'Segoe UI'\n },\n 'fontSize': {\n command: 'font',\n subCommand: 'fontsize',\n value: '10pt'\n },\n 'backColor': {\n command: 'font',\n subCommand: 'backgroundcolor',\n value: '#ffff00'\n },\n 'justifyCenter': {\n command: 'Alignments',\n subCommand: 'JustifyCenter'\n },\n 'justifyFull': {\n command: 'Alignments',\n subCommand: 'JustifyFull'\n },\n 'justifyLeft': {\n command: 'Alignments',\n subCommand: 'JustifyLeft'\n },\n 'justifyRight': {\n command: 'Alignments',\n subCommand: 'JustifyRight'\n },\n 'undo': {\n command: 'Actions',\n subCommand: 'Undo'\n },\n 'redo': {\n command: 'Actions',\n subCommand: 'Redo'\n },\n 'createLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'editLink': {\n command: 'Links',\n subCommand: 'createLink'\n },\n 'createImage': {\n command: 'Images',\n subCommand: 'Images'\n },\n 'formatBlock': {\n command: 'Formats',\n value: 'P'\n },\n 'heading': {\n command: 'Formats',\n value: 'H1'\n },\n 'indent': {\n command: 'Indents',\n subCommand: 'Indent'\n },\n 'outdent': {\n command: 'Indents',\n subCommand: 'Outdent'\n },\n 'insertHTML': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: ''\n },\n 'insertText': {\n command: 'InsertText',\n subCommand: 'InsertText',\n value: ''\n },\n 'insertHorizontalRule': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
    '\n },\n 'insertImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'insertAudio': {\n command: 'Audios',\n subCommand: 'Audio'\n },\n 'insertVideo': {\n command: 'Videos',\n subCommand: 'Video'\n },\n 'editImage': {\n command: 'Images',\n subCommand: 'Image'\n },\n 'insertTable': {\n command: 'Table',\n subCommand: 'CreateTable'\n },\n 'insertBrOnReturn': {\n command: 'InsertHTML',\n subCommand: 'InsertHTML',\n value: '
    '\n },\n 'insertOrderedList': {\n command: 'Lists',\n value: 'OL'\n },\n 'insertUnorderedList': {\n command: 'Lists',\n value: 'UL'\n },\n 'insertParagraph': {\n command: 'Formats',\n value: 'P'\n },\n 'removeFormat': {\n command: 'Clear',\n subCommand: 'ClearFormat'\n }\n};\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Configures the toolbar settings of the RichTextEditor.\n */\nvar ToolbarSettings$1 = /** @__PURE__ @class */ (function (_super) {\n __extends$5(ToolbarSettings$$1, _super);\n function ToolbarSettings$$1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(true)\n ], ToolbarSettings$$1.prototype, \"enable\", void 0);\n __decorate$2([\n Property(true)\n ], ToolbarSettings$$1.prototype, \"enableFloating\", void 0);\n __decorate$2([\n Property(ToolbarType.Expand)\n ], ToolbarSettings$$1.prototype, \"type\", void 0);\n __decorate$2([\n Property(predefinedItems)\n ], ToolbarSettings$$1.prototype, \"items\", void 0);\n __decorate$2([\n Property({})\n ], ToolbarSettings$$1.prototype, \"itemConfigs\", void 0);\n return ToolbarSettings$$1;\n}(ChildProperty));\n/**\n * Configures the image settings of the RichTextEditor.\n */\nvar ImageSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(ImageSettings, _super);\n function ImageSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(['.jpeg', '.jpg', '.png'])\n ], ImageSettings.prototype, \"allowedTypes\", void 0);\n __decorate$2([\n Property('inline')\n ], ImageSettings.prototype, \"display\", void 0);\n __decorate$2([\n Property('Blob')\n ], ImageSettings.prototype, \"saveFormat\", void 0);\n __decorate$2([\n Property('auto')\n ], ImageSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property('auto')\n ], ImageSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(null)\n ], ImageSettings.prototype, \"saveUrl\", void 0);\n __decorate$2([\n Property(null)\n ], ImageSettings.prototype, \"path\", void 0);\n __decorate$2([\n Property(true)\n ], ImageSettings.prototype, \"resize\", void 0);\n __decorate$2([\n Property(null)\n ], ImageSettings.prototype, \"removeUrl\", void 0);\n __decorate$2([\n Property(0)\n ], ImageSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(null)\n ], ImageSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(0)\n ], ImageSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(null)\n ], ImageSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(false)\n ], ImageSettings.prototype, \"resizeByPercent\", void 0);\n return ImageSettings;\n}(ChildProperty));\n/**\n * Configures the audio settings of the RichTextEditor.\n */\nvar AudioSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(AudioSettings, _super);\n function AudioSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(['.wav', '.mp3', '.m4a', '.wma'])\n ], AudioSettings.prototype, \"allowedTypes\", void 0);\n __decorate$2([\n Property('Inline')\n ], AudioSettings.prototype, \"layoutOption\", void 0);\n __decorate$2([\n Property('Blob')\n ], AudioSettings.prototype, \"saveFormat\", void 0);\n __decorate$2([\n Property(null)\n ], AudioSettings.prototype, \"saveUrl\", void 0);\n __decorate$2([\n Property(null)\n ], AudioSettings.prototype, \"removeUrl\", void 0);\n __decorate$2([\n Property(null)\n ], AudioSettings.prototype, \"path\", void 0);\n return AudioSettings;\n}(ChildProperty));\n/**\n * Configures the video settings of the RichTextEditor.\n */\nvar VideoSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(VideoSettings, _super);\n function VideoSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(['.mp4', '.mov', '.wmv', '.avi'])\n ], VideoSettings.prototype, \"allowedTypes\", void 0);\n __decorate$2([\n Property('Inline')\n ], VideoSettings.prototype, \"layoutOption\", void 0);\n __decorate$2([\n Property('Blob')\n ], VideoSettings.prototype, \"saveFormat\", void 0);\n __decorate$2([\n Property('auto')\n ], VideoSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property('auto')\n ], VideoSettings.prototype, \"height\", void 0);\n __decorate$2([\n Property(null)\n ], VideoSettings.prototype, \"saveUrl\", void 0);\n __decorate$2([\n Property(null)\n ], VideoSettings.prototype, \"path\", void 0);\n __decorate$2([\n Property(true)\n ], VideoSettings.prototype, \"resize\", void 0);\n __decorate$2([\n Property(null)\n ], VideoSettings.prototype, \"removeUrl\", void 0);\n __decorate$2([\n Property(0)\n ], VideoSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(null)\n ], VideoSettings.prototype, \"maxWidth\", void 0);\n __decorate$2([\n Property(0)\n ], VideoSettings.prototype, \"minHeight\", void 0);\n __decorate$2([\n Property(null)\n ], VideoSettings.prototype, \"maxHeight\", void 0);\n __decorate$2([\n Property(false)\n ], VideoSettings.prototype, \"resizeByPercent\", void 0);\n return VideoSettings;\n}(ChildProperty));\n/**\n * Configures the file manager settings of the RichTextEditor.\n */\nvar FileManagerSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(FileManagerSettings, _super);\n function FileManagerSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Complex({ getImageUrl: null, url: null, uploadUrl: null }, AjaxSettings)\n ], FileManagerSettings.prototype, \"ajaxSettings\", void 0);\n __decorate$2([\n Property(false)\n ], FileManagerSettings.prototype, \"allowDragAndDrop\", void 0);\n __decorate$2([\n Complex({ visible: true, file: ['Open', '|', 'Cut', 'Copy', '|', 'Delete', 'Rename', '|', 'Details'], folder: ['Open', '|', 'Cut', 'Copy', 'Paste', '|', 'Delete', 'Rename', '|', 'Details'], layout: ['SortBy', 'View', 'Refresh', '|', 'Paste', '|', 'NewFolder', 'Upload', '|', 'Details', '|', 'SelectAll'] }, ContextMenuSettings)\n ], FileManagerSettings.prototype, \"contextMenuSettings\", void 0);\n __decorate$2([\n Property('')\n ], FileManagerSettings.prototype, \"cssClass\", void 0);\n __decorate$2([\n Complex({}, DetailsViewSettings)\n ], FileManagerSettings.prototype, \"detailsViewSettings\", void 0);\n __decorate$2([\n Property(false)\n ], FileManagerSettings.prototype, \"enable\", void 0);\n __decorate$2([\n Complex({ maxWidth: '650px', minWidth: '240px', visible: true }, NavigationPaneSettings)\n ], FileManagerSettings.prototype, \"navigationPaneSettings\", void 0);\n __decorate$2([\n Property('/')\n ], FileManagerSettings.prototype, \"path\", void 0);\n __decorate$2([\n Property(null)\n ], FileManagerSettings.prototype, \"rootAliasName\", void 0);\n __decorate$2([\n Complex({}, SearchSettings)\n ], FileManagerSettings.prototype, \"searchSettings\", void 0);\n __decorate$2([\n Property(true)\n ], FileManagerSettings.prototype, \"showFileExtension\", void 0);\n __decorate$2([\n Property(false)\n ], FileManagerSettings.prototype, \"showHiddenItems\", void 0);\n __decorate$2([\n Property(true)\n ], FileManagerSettings.prototype, \"showThumbnail\", void 0);\n __decorate$2([\n Property('Ascending')\n ], FileManagerSettings.prototype, \"sortOrder\", void 0);\n __decorate$2([\n Complex({ visible: true, items: ['NewFolder', 'Upload', 'Cut', 'Copy', 'Paste', 'Delete', 'Download', 'Rename', 'SortBy', 'Refresh', 'Selection', 'View', 'Details'] }, ToolbarSettings)\n ], FileManagerSettings.prototype, \"toolbarSettings\", void 0);\n __decorate$2([\n Complex({ autoUpload: true, minFileSize: 0, maxFileSize: 30000000, allowedExtensions: '', autoClose: false }, UploadSettings)\n ], FileManagerSettings.prototype, \"uploadSettings\", void 0);\n __decorate$2([\n Property('LargeIcons')\n ], FileManagerSettings.prototype, \"view\", void 0);\n return FileManagerSettings;\n}(ChildProperty));\nvar TableSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(TableSettings, _super);\n function TableSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('100%')\n ], TableSettings.prototype, \"width\", void 0);\n __decorate$2([\n Property(TableStyleItems)\n ], TableSettings.prototype, \"styles\", void 0);\n __decorate$2([\n Property(true)\n ], TableSettings.prototype, \"resize\", void 0);\n __decorate$2([\n Property(0)\n ], TableSettings.prototype, \"minWidth\", void 0);\n __decorate$2([\n Property(null)\n ], TableSettings.prototype, \"maxWidth\", void 0);\n return TableSettings;\n}(ChildProperty));\n/**\n * Configures the quick toolbar settings of the RichTextEditor.\n */\nvar QuickToolbarSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(QuickToolbarSettings, _super);\n function QuickToolbarSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(true)\n ], QuickToolbarSettings.prototype, \"enable\", void 0);\n __decorate$2([\n Property(false)\n ], QuickToolbarSettings.prototype, \"showOnRightClick\", void 0);\n __decorate$2([\n Property('hide')\n ], QuickToolbarSettings.prototype, \"actionOnScroll\", void 0);\n __decorate$2([\n Property(['Open', 'Edit', 'UnLink'])\n ], QuickToolbarSettings.prototype, \"link\", void 0);\n __decorate$2([\n Property(['Replace', 'Align', 'Caption', 'Remove', '-', 'InsertLink', 'OpenImageLink', 'EditImageLink', 'RemoveImageLink', 'Display', 'AltText', 'Dimension'])\n ], QuickToolbarSettings.prototype, \"image\", void 0);\n __decorate$2([\n Property(['AudioReplace', 'AudioRemove', 'AudioLayoutOption'])\n ], QuickToolbarSettings.prototype, \"audio\", void 0);\n __decorate$2([\n Property(['VideoReplace', 'VideoAlign', 'VideoRemove', 'VideoLayoutOption', 'VideoDimension'])\n ], QuickToolbarSettings.prototype, \"video\", void 0);\n __decorate$2([\n Property(['Cut', 'Copy', 'Paste'])\n ], QuickToolbarSettings.prototype, \"text\", void 0);\n __decorate$2([\n Property(['TableHeader', 'TableRows', 'TableColumns', 'BackgroundColor', '-', 'TableRemove', 'Alignments', 'TableCellVerticalAlign', 'Styles'])\n ], QuickToolbarSettings.prototype, \"table\", void 0);\n return QuickToolbarSettings;\n}(ChildProperty));\n/**\n * Configures the Paste Cleanup settings of the RichTextEditor.\n */\nvar PasteCleanupSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$5(PasteCleanupSettings, _super);\n function PasteCleanupSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(false)\n ], PasteCleanupSettings.prototype, \"prompt\", void 0);\n __decorate$2([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedAttrs\", void 0);\n __decorate$2([\n Property(['background', 'background-color', 'border', 'border-bottom', 'border-left', 'border-radius', 'border-right', 'border-style', 'border-top', 'border-width', 'clear', 'color', 'cursor', 'direction', 'display', 'float', 'font', 'font-family', 'font-size', 'font-weight', 'font-style', 'height', 'left', 'line-height', 'list-style-type', 'margin', 'margin-top', 'margin-left', 'margin-right', 'margin-bottom', 'max-height', 'max-width', 'min-height', 'min-width', 'overflow', 'overflow-x', 'overflow-y', 'padding', 'padding-bottom', 'padding-left', 'padding-right', 'padding-top', 'position', 'right', 'table-layout', 'text-align', 'text-decoration', 'text-indent', 'top', 'vertical-align', 'visibility', 'white-space', 'width'])\n ], PasteCleanupSettings.prototype, \"allowedStyleProps\", void 0);\n __decorate$2([\n Property(null)\n ], PasteCleanupSettings.prototype, \"deniedTags\", void 0);\n __decorate$2([\n Property(true)\n ], PasteCleanupSettings.prototype, \"keepFormat\", void 0);\n __decorate$2([\n Property(false)\n ], PasteCleanupSettings.prototype, \"plainText\", void 0);\n return PasteCleanupSettings;\n}(ChildProperty));\n/**\n * Configures the font family settings of the RichTextEditor.\n */\nvar FontFamily = /** @__PURE__ @class */ (function (_super) {\n __extends$5(FontFamily, _super);\n function FontFamily() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(null)\n ], FontFamily.prototype, \"default\", void 0);\n __decorate$2([\n Property('65px')\n ], FontFamily.prototype, \"width\", void 0);\n __decorate$2([\n Property(fontFamily)\n ], FontFamily.prototype, \"items\", void 0);\n return FontFamily;\n}(ChildProperty));\n/**\n * Configures the font size settings of the RichTextEditor.\n */\nvar FontSize = /** @__PURE__ @class */ (function (_super) {\n __extends$5(FontSize, _super);\n function FontSize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(null)\n ], FontSize.prototype, \"default\", void 0);\n __decorate$2([\n Property('35px')\n ], FontSize.prototype, \"width\", void 0);\n __decorate$2([\n Property(fontSize)\n ], FontSize.prototype, \"items\", void 0);\n return FontSize;\n}(ChildProperty));\n/**\n * Configures the format settings of the RichTextEditor.\n */\nvar Format = /** @__PURE__ @class */ (function (_super) {\n __extends$5(Format, _super);\n function Format() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(null)\n ], Format.prototype, \"default\", void 0);\n __decorate$2([\n Property('65px')\n ], Format.prototype, \"width\", void 0);\n __decorate$2([\n Property(formatItems)\n ], Format.prototype, \"types\", void 0);\n return Format;\n}(ChildProperty));\n/**\n * Configures the font Color settings of the RichTextEditor.\n */\nvar FontColor = /** @__PURE__ @class */ (function (_super) {\n __extends$5(FontColor, _super);\n function FontColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('#ff0000')\n ], FontColor.prototype, \"default\", void 0);\n __decorate$2([\n Property('Palette')\n ], FontColor.prototype, \"mode\", void 0);\n __decorate$2([\n Property(10)\n ], FontColor.prototype, \"columns\", void 0);\n __decorate$2([\n Property(fontColor)\n ], FontColor.prototype, \"colorCode\", void 0);\n __decorate$2([\n Property(false)\n ], FontColor.prototype, \"modeSwitcher\", void 0);\n return FontColor;\n}(ChildProperty));\n/**\n * Configures the background Color settings of the RichTextEditor.\n */\nvar BackgroundColor = /** @__PURE__ @class */ (function (_super) {\n __extends$5(BackgroundColor, _super);\n function BackgroundColor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property('#ffff00')\n ], BackgroundColor.prototype, \"default\", void 0);\n __decorate$2([\n Property('Palette')\n ], BackgroundColor.prototype, \"mode\", void 0);\n __decorate$2([\n Property(10)\n ], BackgroundColor.prototype, \"columns\", void 0);\n __decorate$2([\n Property(backgroundColor)\n ], BackgroundColor.prototype, \"colorCode\", void 0);\n __decorate$2([\n Property(false)\n ], BackgroundColor.prototype, \"modeSwitcher\", void 0);\n return BackgroundColor;\n}(ChildProperty));\n/**\n * Configures the numberFormatList settings of the RichTextEditor.\n */\nvar NumberFormatList = /** @__PURE__ @class */ (function (_super) {\n __extends$5(NumberFormatList, _super);\n function NumberFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(numberFormatList)\n ], NumberFormatList.prototype, \"types\", void 0);\n return NumberFormatList;\n}(ChildProperty));\n/**\n * Configures the bulletFormatList settings of the RichTextEditor.\n */\nvar BulletFormatList = /** @__PURE__ @class */ (function (_super) {\n __extends$5(BulletFormatList, _super);\n function BulletFormatList() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$2([\n Property(bulletFormatList)\n ], BulletFormatList.prototype, \"types\", void 0);\n return BulletFormatList;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n/**\n * Objects used for configuring the iframe resources properties.\n */\nvar Resources = /** @__PURE__ @class */ (function (_super) {\n __extends$6(Resources, _super);\n function Resources() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property([])\n ], Resources.prototype, \"styles\", void 0);\n __decorate$3([\n Property([])\n ], Resources.prototype, \"scripts\", void 0);\n return Resources;\n}(ChildProperty));\n/**\n * Configures the iframe settings of the RTE.\n */\nvar IFrameSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$6(IFrameSettings, _super);\n function IFrameSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property(false)\n ], IFrameSettings.prototype, \"enable\", void 0);\n __decorate$3([\n Property(null)\n ], IFrameSettings.prototype, \"attributes\", void 0);\n __decorate$3([\n Complex({}, Resources)\n ], IFrameSettings.prototype, \"resources\", void 0);\n return IFrameSettings;\n}(ChildProperty));\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\n/**\n * Configures the inlineMode property of the RTE.\n */\nvar InlineMode = /** @__PURE__ @class */ (function (_super) {\n __extends$7(InlineMode, _super);\n function InlineMode() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$4([\n Property(false)\n ], InlineMode.prototype, \"enable\", void 0);\n __decorate$4([\n Property(true)\n ], InlineMode.prototype, \"onSelection\", void 0);\n return InlineMode;\n}(ChildProperty));\n\n/**\n * `EnterKey` module is used to handle enter key press actions.\n */\nvar EnterKeyAction = /** @__PURE__ @class */ (function () {\n function EnterKeyAction(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n EnterKeyAction.prototype.addEventListener = function () {\n this.parent.on(enterHandler, this.enterHandler, this);\n this.parent.on(destroy, this.destroy, this);\n this.parent.on(moduleDestroy, this.moduleDestroy, this);\n };\n EnterKeyAction.prototype.destroy = function () {\n this.removeEventListener();\n };\n EnterKeyAction.prototype.moduleDestroy = function () {\n this.parent = null;\n };\n EnterKeyAction.prototype.removeEventListener = function () {\n this.parent.off(enterHandler, this.enterHandler);\n this.parent.off(destroy, this.destroy);\n this.parent.off(moduleDestroy, this.moduleDestroy);\n };\n EnterKeyAction.prototype.getRangeNode = function () {\n this.range = this.parent.getRange();\n this.startNode = this.range.startContainer.nodeName === '#text' ? this.range.startContainer.parentElement :\n this.range.startContainer;\n this.endNode = this.range.endContainer.nodeName === '#text' ? this.range.endContainer.parentElement :\n this.range.endContainer;\n };\n EnterKeyAction.prototype.enterHandler = function (e) {\n var _this = this;\n this.getRangeNode();\n var isTableEnter = true;\n this.formatTags = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'blockquote'];\n if (!isNullOrUndefined(this.startNode.closest('TABLE')) && !isNullOrUndefined(this.endNode.closest('TABLE'))) {\n isTableEnter = false;\n var curElement = this.startNode;\n var blockElement = curElement;\n while (!this.parent.formatter.editorManager.domNode.isBlockNode(curElement)) {\n curElement = curElement.parentElement;\n blockElement = curElement;\n }\n isTableEnter = blockElement.tagName === 'TD' || blockElement.tagName === 'TBODY' ? false : true;\n }\n if (e.args.which === 13 && e.args.code === 'Enter') {\n if (isNullOrUndefined(this.startNode.closest('LI,UL,OL')) && isNullOrUndefined(this.endNode.closest('LI,UL,OL')) && isTableEnter &&\n isNullOrUndefined(this.startNode.closest('PRE')) && isNullOrUndefined(this.endNode.closest('PRE'))) {\n var shiftKey_1 = e.args.shiftKey;\n var actionBeginArgs = {\n cancel: false,\n name: actionBegin,\n requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction',\n originalEvent: e.args\n };\n this.parent.trigger(actionBegin, actionBeginArgs, function (actionBeginArgs) {\n if (!actionBeginArgs.cancel) {\n if (!(_this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.range.endContainer)) {\n if (!(_this.range.startContainer.nodeName === 'SPAN' && (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap')))) {\n _this.range.deleteContents();\n }\n if (_this.range.startContainer.nodeName === '#text' && _this.range.startContainer.textContent.length === 0 &&\n _this.range.startContainer.parentElement !== _this.parent.inputElement) {\n if (_this.parent.enterKey === 'BR') {\n _this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n _this.range.startContainer.parentElement.innerHTML = '
    ';\n }\n }\n else if (_this.range.startContainer === _this.parent.inputElement && _this.range.startContainer.innerHTML === '') {\n _this.range.startContainer.innerHTML = '
    ';\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n else if (_this.parent.inputElement === _this.range.startContainer) {\n var focusElem = _this.range.startContainer.childNodes[_this.range.startOffset];\n if (focusElem.nodeName === '#text' && focusElem.textContent.length === 0) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length === 0 ? 0 : focusElem.previousSibling.textContent.length);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, focusElem.textContent.length >= 0 ? 0 : 1);\n if (focusElem.previousSibling.textContent.length === 0) {\n detach(focusElem.previousSibling);\n if (!shiftKey_1) {\n var currentFocusElem = !isNullOrUndefined(focusElem.lastChild) ? focusElem.lastChild : focusElem;\n while (!isNullOrUndefined(currentFocusElem) && currentFocusElem.nodeName !== '#text' && currentFocusElem.nodeName !== 'BR') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n if (currentFocusElem.nodeName !== 'BR' && currentFocusElem.parentElement.textContent.length === 0 && currentFocusElem.parentElement.innerHTML.length === 0 &&\n currentFocusElem.parentElement.nodeName !== 'BR') {\n currentFocusElem.parentElement.appendChild(_this.parent.createElement('BR'));\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem.nodeName === 'BR' ? currentFocusElem : currentFocusElem.parentElement, currentFocusElem.parentElement.textContent.length >= 0 || currentFocusElem.nodeName === 'BR' ? 0 : 1);\n }\n }\n else if (focusElem.textContent.length === 0) {\n var currentFocusElem = focusElem.previousSibling.nodeName === '#text' ? focusElem.previousSibling : focusElem.previousSibling.lastChild;\n while (!isNullOrUndefined(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, currentFocusElem.textContent.length);\n detach(focusElem);\n }\n else if (_this.parent.enterKey !== 'BR' &&\n focusElem.previousSibling.textContent.length !== 0 && focusElem.textContent.length !== 0) {\n e.args.preventDefault();\n return;\n }\n }\n _this.getRangeNode();\n }\n }\n if (_this.range.startContainer === _this.range.endContainer &&\n _this.range.startOffset === _this.range.endOffset && _this.range.startContainer === _this.parent.inputElement) {\n if (!isNullOrUndefined(_this.range.startContainer.childNodes[_this.range.startOffset]) &&\n !isNullOrUndefined(_this.range.startContainer.childNodes[_this.range.startOffset].previousElementSibling) &&\n _this.range.startContainer.childNodes[_this.range.startOffset].previousElementSibling.nodeName === 'TABLE') {\n _this.parent.tableModule.removeResizeElement();\n }\n if (!(_this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE')) {\n if (isNullOrUndefined(_this.range.startContainer.childNodes[_this.range.startOffset])) {\n var currentLastElem = _this.range.startContainer.childNodes[_this.range.startOffset - 1];\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentLastElem, (currentLastElem.nodeName === 'BR' ? 0 : currentLastElem.textContent.length));\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.range.startContainer.childNodes[_this.range.startOffset], 0);\n }\n }\n _this.getRangeNode();\n }\n if ((_this.parent.enterKey === 'P' && !shiftKey_1) || (_this.parent.enterKey === 'DIV' && !shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'P' && shiftKey_1) ||\n (_this.parent.shiftEnterKey === 'DIV' && shiftKey_1)) {\n if (_this.range.startOffset === 1 && _this.parent.inputElement.childNodes.length === 1 && _this.parent.inputElement.childNodes[0].nodeName === 'TABLE') {\n var newElem = _this.createInsertElement(shiftKey_1);\n newElem.appendChild(_this.parent.createElement('BR'));\n _this.parent.inputElement.appendChild(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\n var nearBlockNode = void 0;\n if (isTableEnter && _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n nearBlockNode = _this.startNode;\n }\n else {\n nearBlockNode = _this.parent.formatter.editorManager.domNode.blockParentNode(_this.startNode);\n }\n var isMediaNode = false; // To check the image audio and video node cases\n var isFocusedFirst = false;\n if (_this.range.startOffset !== 0 && _this.range.endOffset !== 0 &&\n _this.range.startContainer === _this.range.endContainer && !(!isNullOrUndefined(nearBlockNode.childNodes[0])\n && nearBlockNode.childNodes[0].nodeName === 'IMG' && nearBlockNode.querySelectorAll('img,audio,video').length > 0)) {\n var startNodeText = _this.range.startContainer.textContent;\n var splitFirstText = startNodeText.substring(0, _this.range.startOffset);\n // eslint-disable-next-line max-len\n if (splitFirstText.charCodeAt(_this.range.startOffset - 1) !== 160 && splitFirstText.trim().length === 0) {\n isFocusedFirst = true;\n }\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0) {\n isFocusedFirst = true;\n }\n _this.removeBRElement(nearBlockNode);\n var fireFoxEnterAtMiddle = Browser.userAgent.indexOf('Firefox') !== -1 && _this.range.startOffset === 0 && _this.range.startContainer === _this.range.endContainer &&\n _this.range.startContainer.nodeName === '#text' && !_this.parent.formatter.editorManager.domNode.isBlockNode(_this.range.startContainer.previousSibling) &&\n _this.range.startContainer.parentElement === _this.range.startContainer.previousSibling.parentElement;\n // eslint-disable-next-line max-len\n if (!fireFoxEnterAtMiddle && ((_this.range.startOffset === 0 && _this.range.endOffset === 0) || isFocusedFirst) &&\n !(!isNullOrUndefined(_this.range.startContainer.previousSibling) &&\n (_this.range.startContainer.previousSibling.nodeName === 'IMG' || _this.range.startContainer.previousSibling.nodeName === 'BR'))) {\n var isNearBlockLengthZero = void 0;\n var newElem = void 0;\n if (!isNullOrUndefined(_this.range.startContainer.childNodes) && _this.range.startContainer.textContent.length === 0 &&\n (_this.range.startContainer.querySelectorAll('img,audio,video').length > 0 ||\n _this.range.startContainer.nodeName === 'IMG' || _this.range.startContainer.nodeName === 'TABLE')) {\n newElem = _this.createInsertElement(shiftKey_1);\n isMediaNode = true;\n isNearBlockLengthZero = false;\n }\n else {\n if ((nearBlockNode.textContent.trim().length !== 0 ||\n nearBlockNode.childNodes[0].nodeName === 'IMG' ||\n (nearBlockNode.textContent.trim() === '' && nearBlockNode.querySelectorAll('img,audio,video').length > 0))) {\n if ((_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0)) {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isMediaNode = true;\n }\n isNearBlockLengthZero = false;\n }\n else {\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true).cloneNode(true);\n isNearBlockLengthZero = true;\n }\n }\n var insertElem = void 0;\n if (_this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase()) < 0) {\n insertElem = _this.createInsertElement(shiftKey_1);\n }\n else {\n insertElem = _this.parent.createElement(newElem.nodeName);\n }\n while (newElem.firstChild) {\n insertElem.appendChild(newElem.firstChild);\n }\n nearBlockNode.parentElement.insertBefore(insertElem, nearBlockNode);\n if (!isNearBlockLengthZero) {\n var currentFocusElem = insertElem;\n var finalFocusElem = void 0;\n if (_this.range.startOffset === _this.range.endOffset && _this.range.startOffset !== 0) {\n while (!isNullOrUndefined(currentFocusElem) && currentFocusElem.nodeName !== '#text' &&\n currentFocusElem.nodeName !== 'BR') {\n finalFocusElem = currentFocusElem;\n currentFocusElem = currentFocusElem.lastChild;\n }\n }\n else {\n finalFocusElem = currentFocusElem;\n }\n finalFocusElem.innerHTML = '
    ';\n if (!isMediaNode) {\n detach(nearBlockNode);\n }\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem.nextElementSibling, 0);\n }\n else if (nearBlockNode.textContent.length === 0 && !(!isNullOrUndefined(nearBlockNode.childNodes[0]) && nearBlockNode.childNodes[0].nodeName === 'IMG')) {\n if (!isNullOrUndefined(nearBlockNode.children[0]) && nearBlockNode.children[0].tagName !== 'BR') {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, newElem.textContent.length >= 0 ? 0 : 1);\n }\n else {\n var insertElem = _this.createInsertElement(shiftKey_1);\n insertElem.innerHTML = '
    ';\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElem, nearBlockNode);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), insertElem, 0);\n }\n }\n else if (_this.range.startContainer === _this.range.endContainer && _this.range.startContainer.nodeName === 'SPAN' &&\n (_this.range.startContainer.classList.contains('e-video-wrap') ||\n _this.range.startContainer.classList.contains('e-audio-wrap'))) {\n if (nearBlockNode.textContent.trim().length > 0) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var audioVideoElem = !isNullOrUndefined(newElem.previousSibling.querySelector('.e-video-wrap')) ?\n newElem.previousSibling.querySelector('.e-video-wrap') : newElem.previousSibling.querySelector('.e-audio-wrap');\n var isBRInserted = false;\n var lastNode = audioVideoElem.previousSibling;\n while (!isNullOrUndefined(lastNode) && lastNode.nodeName !== '#text') {\n lastNode = lastNode.lastChild;\n }\n if (isNullOrUndefined(lastNode)) {\n var brElm = _this.parent.createElement('br');\n audioVideoElem.parentElement.appendChild(brElm);\n isBRInserted = true;\n }\n if (isBRInserted) {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), audioVideoElem.parentElement, 0);\n }\n else {\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), lastNode, lastNode.textContent.length);\n }\n detach(audioVideoElem);\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n var focusElem = newElem.previousSibling;\n while (!isNullOrUndefined(focusElem.firstChild)) {\n detach(focusElem.firstChild);\n }\n var brElm = _this.parent.createElement('br');\n focusElem.appendChild(brElm);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusElem, 0);\n }\n if (!isNullOrUndefined(_this.parent.audioModule)) {\n _this.parent.audioModule.hideAudioQuickToolbar();\n }\n if (!isNullOrUndefined(_this.parent.videoModule)) {\n _this.parent.videoModule.hideVideoQuickToolbar();\n }\n }\n else {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, nearBlockNode, true);\n if (!isNullOrUndefined(newElem.childNodes[0]) && newElem.childNodes[0].nodeName === '#text' &&\n newElem.childNodes[0].textContent.length === 0) {\n detach(newElem.childNodes[0]);\n }\n if (newElem.textContent.trim().length === 0) {\n var brElm = _this.parent.createElement('br');\n if (_this.startNode.nodeName === 'A') {\n var startParentElem = _this.startNode.parentElement;\n _this.startNode.parentElement.insertBefore(brElm, _this.startNode);\n detach(_this.startNode);\n _this.startNode = startParentElem;\n }\n else {\n if (_this.startNode.nodeName !== 'BR') {\n _this.startNode.appendChild(brElm);\n }\n }\n if (newElem.childNodes[0].textContent === '\\n') {\n detach(newElem.childNodes[0]);\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.startNode, 0);\n }\n if (((_this.parent.enterKey === 'P' || _this.parent.enterKey === 'DIV') && !shiftKey_1) || ((_this.parent.shiftEnterKey === 'DIV' ||\n _this.parent.shiftEnterKey === 'P') && shiftKey_1)) {\n var isHeadingTag = _this.formatTags.indexOf(newElem.nodeName.toLocaleLowerCase());\n if ((isHeadingTag < 0) || (isHeadingTag >= 0 && newElem.textContent.trim().length === 0)) {\n var insertElm = _this.createInsertElement(shiftKey_1);\n while (newElem.firstChild) {\n insertElm.appendChild(newElem.firstChild);\n }\n _this.parent.formatter.editorManager.domNode.insertAfter(insertElm, newElem);\n detach(newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), _this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode) ?\n insertElm : _this.startNode, 0);\n }\n }\n }\n }\n e.args.preventDefault();\n }\n if ((_this.parent.enterKey === 'BR' && !shiftKey_1) || (_this.parent.shiftEnterKey === 'BR' && shiftKey_1)) {\n var currentParent = void 0;\n if (!_this.parent.formatter.editorManager.domNode.isBlockNode(_this.startNode)) {\n var currentNode = _this.startNode;\n var previousNode = currentNode;\n while (!_this.parent.formatter.editorManager.domNode.isBlockNode(currentNode)) {\n previousNode = currentNode;\n currentNode = currentNode.parentElement;\n }\n currentParent = currentNode === _this.parent.inputElement ?\n previousNode : currentNode;\n }\n else {\n currentParent = _this.startNode;\n }\n _this.removeBRElement(currentParent);\n var currentParentLastChild = currentParent.lastChild;\n while (!isNullOrUndefined(currentParentLastChild) && !(currentParentLastChild.nodeName === '#text' || currentParentLastChild.nodeName === 'BR'\n || currentParentLastChild.nodeName === 'IMG')) {\n currentParentLastChild = currentParentLastChild.lastChild;\n }\n var isLastNodeLength = _this.range.startContainer === currentParentLastChild ?\n _this.range.startContainer.textContent.length : currentParent.textContent.length;\n var isImageElement = (_this.range.startContainer.nodeName === 'IMG' || (_this.range.startContainer.childNodes.length > 0\n && _this.range.startContainer.childNodes[_this.range.startOffset].nodeName === 'IMG'));\n if (currentParent !== _this.parent.inputElement &&\n _this.parent.formatter.editorManager.domNode.isBlockNode(currentParent) &&\n _this.range.startOffset === _this.range.endOffset &&\n (_this.range.startOffset === isLastNodeLength ||\n (currentParent.textContent.trim().length === 0 && isImageElement))) {\n var focusBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.startContainer.nodeName === 'TABLE') {\n _this.range.startContainer.parentElement.insertBefore(focusBRElem, _this.range.startContainer);\n }\n else {\n if (currentParentLastChild.nodeName === 'BR' && currentParent.textContent.length === 0) {\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, currentParentLastChild);\n }\n else if (_this.range.startOffset === 0 && _this.range.endOffset === 0 && isImageElement) {\n var imageElement = _this.range.startContainer.nodeName === 'IMG' ? _this.range.startContainer :\n _this.range.startContainer.childNodes[_this.range.startOffset];\n currentParent.insertBefore(focusBRElem, imageElement);\n focusBRElem = imageElement;\n }\n else {\n var lineBreakBRElem = _this.parent.createElement('br');\n _this.parent.formatter.editorManager.domNode.insertAfter(focusBRElem, _this.range.startContainer);\n _this.parent.formatter.editorManager.domNode.insertAfter(lineBreakBRElem, _this.range.startContainer);\n }\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), focusBRElem, 0);\n }\n else if (!isNullOrUndefined(currentParent) && currentParent !== _this.parent.inputElement && currentParent.nodeName !== 'BR') {\n if (currentParent.textContent.trim().length === 0 || (currentParent.textContent.trim().length === 1 &&\n currentParent.textContent.charCodeAt(0) === 8203)) {\n var newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, true).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(newElem, currentParent);\n var outerBRElem = _this.parent.createElement('br');\n newElem.parentElement.insertBefore(outerBRElem, newElem);\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), newElem, 0);\n }\n else {\n var newElem = void 0;\n var outerBRElem = _this.parent.createElement('br');\n if (_this.range.startOffset === 0 && _this.range.endOffset === 0 &&\n !isNullOrUndefined(currentParent.previousSibling) && currentParent.previousSibling.nodeName === 'BR') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n newElem = _this.parent.formatter.editorManager.nodeCutter.SplitNode(_this.range, currentParent, false).cloneNode(true);\n _this.parent.formatter.editorManager.domNode.insertAfter(outerBRElem, currentParent);\n _this.insertFocusContent();\n var currentFocusElem = outerBRElem.nextSibling;\n while (!isNullOrUndefined(currentFocusElem) && currentFocusElem.nodeName !== '#text') {\n currentFocusElem = currentFocusElem.lastChild;\n }\n _this.parent.formatter.editorManager.nodeSelection.setCursorPoint(_this.parent.contentModule.getDocument(), currentFocusElem, 0);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n \n }\n else {\n _this.insertBRElement();\n }\n }\n }\n else {\n _this.insertBRElement();\n }\n e.args.preventDefault();\n }\n _this.parent.trigger(actionComplete, { requestType: shiftKey_1 ? 'ShiftEnterAction' : 'EnterAction', args: e.args });\n }\n });\n }\n }\n };\n EnterKeyAction.prototype.removeBRElement = function (currentElement) {\n if (Browser.userAgent.indexOf('Firefox') !== -1 &&\n this.range.endOffset === currentElement.textContent.length && (currentElement.textContent.length !== 0 ||\n currentElement.querySelectorAll('BR').length > 1) &&\n !isNullOrUndefined(currentElement.lastChild) && currentElement.lastChild.nodeName === 'BR') {\n detach(currentElement.lastChild);\n }\n };\n EnterKeyAction.prototype.insertBRElement = function () {\n var isEmptyBrInserted = false;\n var isFocusTextNode = true;\n if (this.range.endContainer.textContent.length === 0 && this.range.startContainer.nodeName === 'BR') {\n isFocusTextNode = false;\n }\n var brElm = this.parent.createElement('br');\n if (this.startNode.nodeName === 'BR' && this.endNode.nodeName === 'BR' && this.range.startOffset === 0 && this.range.startOffset === this.range.endOffset) {\n this.parent.formatter.editorManager.domNode.insertAfter(brElm, this.startNode);\n isEmptyBrInserted = true;\n }\n else {\n if (this.startNode === this.parent.inputElement && !isNullOrUndefined(this.range.startContainer.previousSibling) &&\n this.range.startContainer.previousSibling.nodeName === 'BR' && this.range.startContainer.textContent.length === 0) {\n isEmptyBrInserted = true;\n }\n this.range.insertNode(brElm);\n }\n if (isEmptyBrInserted || (!isNullOrUndefined(brElm.nextElementSibling) && brElm.nextElementSibling.tagName === 'BR') || (!isNullOrUndefined(brElm.nextSibling) && brElm.nextSibling.textContent.length > 0)) {\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), !isNullOrUndefined(brElm.nextSibling) && isFocusTextNode ? brElm.nextSibling : brElm, 0);\n isEmptyBrInserted = false;\n }\n else {\n var brElm2 = this.parent.createElement('br');\n this.range.insertNode(brElm2);\n this.parent.formatter.editorManager.nodeSelection.setCursorPoint(this.parent.contentModule.getDocument(), brElm, 0);\n }\n };\n EnterKeyAction.prototype.insertFocusContent = function () {\n if (this.range.startContainer.textContent.length === 0) {\n if (this.range.startContainer.nodeName === '#text') {\n this.range.startContainer.parentElement.innerHTML = '​';\n }\n else {\n this.range.startContainer.innerHTML = '​';\n }\n }\n };\n EnterKeyAction.prototype.createInsertElement = function (shiftKey) {\n var insertElem;\n if ((this.parent.enterKey === 'DIV' && !shiftKey) || (this.parent.shiftEnterKey === 'DIV' && shiftKey)) {\n insertElem = this.parent.createElement('div');\n }\n else if ((this.parent.enterKey === 'P' && !shiftKey) || (this.parent.shiftEnterKey === 'P' && shiftKey)) {\n insertElem = this.parent.createElement('p');\n }\n return insertElem;\n };\n return EnterKeyAction;\n}());\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\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 = (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 __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};\n/**\n * Represents the Rich Text Editor component.\n * ```html\n * \n * \n * ```\n */\nvar RichTextEditor = /** @__PURE__ @class */ (function (_super) {\n __extends$4(RichTextEditor, _super);\n function RichTextEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n * To provide the array of modules needed for component rendering\n *\n * @returns {ModuleDeclaration[]} - specifies the declaration.\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.requiredModules = function () {\n var modules = [];\n if (this.toolbarSettings.enable) {\n modules.push({ member: 'toolbar', args: [this, this.serviceLocator] });\n modules.push({\n member: 'link',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'table',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'image',\n args: [this, this.serviceLocator]\n });\n if (this.quickToolbarSettings.enable) {\n modules.push({ member: 'quickToolbar', args: [this, this.serviceLocator] });\n }\n }\n if (this.showCharCount) {\n modules.push({ member: 'count', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'Markdown') {\n modules.push({ member: 'markdownEditor', args: [this, this.serviceLocator] });\n }\n if (this.editorMode === 'HTML') {\n modules.push({ member: 'htmlEditor', args: [this, this.serviceLocator] });\n modules.push({ member: 'pasteCleanup', args: [this, this.serviceLocator] });\n modules.push({\n member: 'audio',\n args: [this, this.serviceLocator]\n });\n modules.push({\n member: 'video',\n args: [this, this.serviceLocator]\n });\n }\n if (this.fileManagerSettings.enable) {\n modules.push({ member: 'fileManager', args: [this, this.serviceLocator] });\n }\n if (this.enableResize) {\n modules.push({ member: 'resize', args: [this] });\n }\n return modules;\n };\n RichTextEditor.prototype.updateEnable = function () {\n if (this.enabled) {\n removeClass([this.element], CLS_DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n if (!isNullOrUndefined(this.htmlAttributes.tabindex)) {\n this.inputElement.setAttribute('tabindex', this.htmlAttributes.tabindex);\n }\n else {\n this.inputElement.setAttribute('tabindex', '0');\n }\n }\n else {\n if (this.getToolbar()) {\n removeClass(this.getToolbar().querySelectorAll('.' + CLS_ACTIVE), CLS_ACTIVE);\n removeClass([this.getToolbar()], [CLS_TB_FLOAT, CLS_TB_ABS_FLOAT]);\n }\n addClass([this.element], CLS_DISABLED);\n this.element.tabIndex = -1;\n this.element.setAttribute('aria-disabled', 'true');\n this.inputElement.setAttribute('tabindex', '-1');\n }\n };\n /**\n * setEnable method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.setEnable = function () {\n this.updateEnable();\n // eslint-disable-next-line\n (this.enabled) ? this.eventInitializer() : this.unWireEvents();\n };\n RichTextEditor.prototype.initializeValue = function () {\n this.isFocusOut = false;\n this.isRTE = false;\n this.isBlur = true;\n this.defaultResetValue = null;\n this.isResizeInitialized = false;\n };\n /**\n * For internal use only - Initialize the event handler;\n *\n * @returns {void}\n * @hidden\n * @private\n */\n RichTextEditor.prototype.preRender = function () {\n this.initializeValue();\n this.onBlurHandler = this.blurHandler.bind(this);\n this.onFocusHandler = this.focusHandler.bind(this);\n this.onResizeHandler = this.resizeHandler.bind(this);\n this.clickPoints = { clientX: 0, clientY: 0 };\n this.initialValue = this.value;\n this.serviceLocator = new ServiceLocator;\n this.initializeServices();\n this.setContainer();\n this.persistData();\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n attributes(this.element, { role: 'application' });\n };\n RichTextEditor.prototype.persistData = function () {\n if (this.enablePersistence && this.originalElement.tagName === 'TEXTAREA') {\n this.element.id = this.originalElement.id + '_wrapper';\n var data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n }\n };\n RichTextEditor.prototype.setContainer = function () {\n this.originalElement = this.element.cloneNode(true);\n if (this.value === null || this.valueTemplate !== null) {\n this.setValue();\n }\n if (this.element.hasAttribute('tabindex')) {\n this.htmlAttributes = { 'tabindex': this.element.getAttribute('tabindex') };\n this.element.removeAttribute('tabindex');\n }\n this.element.innerHTML = '';\n var invalidAttr = ['class', 'style', 'id', 'ejs-for'];\n var htmlAttr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(/^data-val/.test(this.element.attributes[a].name))) { // data-val for asp.net core data annotation validation.\n htmlAttr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(htmlAttr, this.htmlAttributes, htmlAttr);\n this.setProperties({ htmlAttributes: htmlAttr }, true);\n if (!isNullOrUndefined(this.htmlAttributes.id)) {\n this.element.id = this.htmlAttributes.id;\n }\n if (this.element.tagName === 'TEXTAREA') {\n var rteOuterWrapper = this.createElement('div', {\n className: this.element.getAttribute('class')\n });\n this.element.innerHTML = '';\n this.element.parentElement.insertBefore(rteOuterWrapper, this.element);\n this.valueContainer = this.element;\n removeClass([this.valueContainer], this.element.getAttribute('class').split(' '));\n this.element = rteOuterWrapper;\n }\n else {\n this.valueContainer = this.createElement('textarea', {\n id: this.getID() + '-value',\n attrs: { 'aria-labelledby': this.getID() }\n });\n }\n this.valueContainer.name = this.getID();\n addClass([this.valueContainer], CLS_RTE_HIDDEN);\n if (!isNullOrUndefined(this.cssClass)) {\n var currentClassList = this.cssClass.split(' ');\n for (var i = 0; i < currentClassList.length; i++) {\n addClass([this.valueContainer], currentClassList[i]);\n }\n }\n this.element.appendChild(this.valueContainer);\n };\n /**\n * getPersistData method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Focuses the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusIn = function () {\n if (this.enabled) {\n this.inputElement.focus();\n this.focusHandler({});\n }\n };\n /**\n * Blurs the Rich Text Editor component\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.focusOut = function () {\n if (this.enabled) {\n this.inputElement.blur();\n this.blurHandler({});\n }\n };\n /**\n * Selects all the content in RichTextEditor\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectAll = function () {\n this.notify(selectAll$1, {});\n };\n /**\n * Selects a content range or an element\n *\n * @param {Range} range - Specify the range which you want to select within the content.\n * The method used to select a particular sentence or word or entire document.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.selectRange = function (range) {\n this.notify(selectRange, { range: range });\n };\n /**\n * Retrieves the HTML markup content from currently selected content of RichTextEditor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getSelection = function () {\n var str = '';\n this.notify(getSelectedHtml, {\n callBack: function (txt) {\n str = txt;\n }\n });\n return str;\n };\n /**\n * Executes the commands\n *\n * @returns {void}\n * @param {CommandName} commandName - Specifies the name of the command to be executed.\n * @param {string | HTMLElement | ILinkCommandsArgs | IImageCommandsArgs} value - Specifies the value that you want to execute.\n * @param {ExecuteCommandOption} option - specifies the command option\n * @public\n */\n RichTextEditor.prototype.executeCommand = function (commandName, value, option) {\n value = this.htmlPurifier(commandName, value);\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (this.iframeSettings.enable) {\n this.formatter.editorManager.nodeSelection.Clear(this.element.ownerDocument);\n }\n var toFocus = (this.iframeSettings.enable &&\n range.startContainer === this.inputElement) ? true : !this.inputElement.contains(range.startContainer);\n if (toFocus) {\n this.focusIn();\n }\n }\n var tool = executeGroup[\"\" + commandName];\n if (option && option.undo) {\n if (option.undo && this.formatter.getUndoRedoStack().length === 0) {\n this.formatter.saveData();\n }\n }\n if (this.maxLength !== -1 && !isNullOrUndefined(tool.command)) {\n var currentInsertContentLength = 0;\n if (tool.command === 'Links') {\n currentInsertContentLength = value.text.length === 0 ?\n value.url.length : value.text.length;\n }\n if (tool.command === 'Images' || tool.command === 'Table' || tool.command === 'Files') {\n currentInsertContentLength = 1;\n }\n if (tool.command === 'InsertHTML') {\n if (!isNullOrUndefined(value)) {\n var tempElem = this.createElement('div');\n tempElem.innerHTML = value;\n currentInsertContentLength = tempElem.textContent.length;\n }\n else if (!isNullOrUndefined(tool.value) && (tool.value === '
    ' || tool.value === '
    ')) {\n currentInsertContentLength = 1;\n }\n }\n if (tool.command === 'InsertText') {\n currentInsertContentLength = value.length;\n }\n var currentLength = this.getText().trim().length;\n var selectionLength = this.getSelection().length;\n var totalLength = (currentLength - selectionLength) + currentInsertContentLength;\n if (!(this.maxLength === -1 || totalLength <= this.maxLength)) {\n return;\n }\n }\n this.formatter.editorManager.execCommand(tool.command, tool.subCommand ? tool.subCommand : (value ? value : tool.value), null, null, (value ? value : tool.value), (value ? value : tool.value));\n if (option && option.undo) {\n this.formatter.saveData();\n this.formatter.enableUndo(this);\n }\n this.setPlaceHolder();\n this.notify(contentChanged, {});\n };\n RichTextEditor.prototype.htmlPurifier = function (command, value) {\n if (this.editorMode === 'HTML') {\n switch (command) {\n case 'insertHTML':\n if (this.enableHtmlSanitizer) {\n if (typeof value === 'string') {\n value = this.htmlEditorModule.sanitizeHelper(value);\n }\n else {\n value = this.htmlEditorModule.sanitizeHelper(value.outerHTML);\n }\n }\n break;\n case 'insertTable':\n if (isNullOrUndefined(value.width)) {\n value.width = { minWidth: this.tableSettings.minWidth,\n maxWidth: this.tableSettings.maxWidth, width: this.tableSettings.width };\n }\n break;\n case 'insertImage': {\n var temp = this.createElement('img', {\n attrs: {\n src: value.url\n }\n });\n var imageValue = temp.outerHTML;\n if (this.enableHtmlSanitizer) {\n imageValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (imageValue !== '' && (this.createElement('div', {\n innerHTML: imageValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNullOrUndefined(url) ? url : '';\n value.url = url;\n if (isNullOrUndefined(value.width)) {\n value.width = { minWidth: this.insertImageSettings.minWidth,\n maxWidth: this.insertImageSettings.maxWidth, width: this.insertImageSettings.width };\n }\n if (isNullOrUndefined(value.height)) {\n value.height = { minHeight: this.insertImageSettings.minHeight,\n maxHeight: this.insertImageSettings.maxHeight, height: this.insertImageSettings.height };\n }\n break;\n }\n case 'insertAudio': {\n var wrapTemp = this.createElement('audio', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'audio/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(wrapTemp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild.firstElementChild).getAttribute('src')) || null;\n url = !isNullOrUndefined(url) ? url : '';\n value.url = url;\n break;\n }\n case 'insertVideo': {\n var wrapTemp = this.createElement('video', {\n attrs: {\n controls: ''\n }\n });\n var temp = this.createElement('source', {\n attrs: {\n src: value.url,\n type: value.url && value.url.split('.').length > 0\n ? 'video/' + value.url.split('.')[value.url.split('.').length - 1] : ''\n }\n });\n wrapTemp.appendChild(temp);\n var audioValue = wrapTemp.outerHTML;\n if (this.enableHtmlSanitizer) {\n audioValue = this.htmlEditorModule.sanitizeHelper(temp.outerHTML);\n }\n var url = (audioValue !== '' && (this.createElement('div', {\n innerHTML: audioValue\n }).firstElementChild).getAttribute('src')) || null;\n url = !isNullOrUndefined(url) ? url : '';\n value.url = url;\n if (isNullOrUndefined(value.width)) {\n value.width = { minWidth: this.insertVideoSettings.minWidth,\n maxWidth: this.insertVideoSettings.maxWidth, width: this.insertVideoSettings.width };\n }\n if (isNullOrUndefined(value.height)) {\n value.height = { minHeight: this.insertVideoSettings.minHeight,\n maxHeight: this.insertVideoSettings.maxHeight, height: this.insertVideoSettings.height };\n }\n break;\n }\n case 'createLink': {\n var tempNode = this.createElement('a', {\n attrs: {\n href: value.url\n }\n });\n var linkValue = tempNode.outerHTML;\n if (this.enableHtmlSanitizer) {\n linkValue = this.htmlEditorModule.sanitizeHelper(tempNode.outerHTML);\n }\n var href = (linkValue !== '' && (this.createElement('div', {\n innerHTML: linkValue\n }).firstElementChild).getAttribute('href')) || null;\n href = !isNullOrUndefined(href) ? href : '';\n value.url = href;\n break;\n }\n }\n }\n return value;\n };\n RichTextEditor.prototype.encode = function (value) {\n var divNode = this.createElement('div');\n divNode.innerText = value.trim();\n // eslint-disable-next-line\n return divNode.innerHTML.replace(//gi, '\\n');\n };\n /**\n * For internal use only - To Initialize the component rendering.\n *\n * @returns {void}\n * @private\n * @deprecated\n */\n RichTextEditor.prototype.render = function () {\n if (this.value && !this.valueTemplate) {\n this.setProperties({ value: this.serializeValue(this.value) }, true);\n }\n this.renderModule = new Render(this, this.serviceLocator);\n this.sourceCodeModule = new ViewSource(this, this.serviceLocator);\n this.notify(initialLoad, {});\n this.trigger(load);\n this.RTERender();\n // eslint-disable-next-line\n var execCommandCallBack$$1 = new ExecCommandCallBack(this);\n this.notify(initialEnd, {});\n if (this.enableXhtml) {\n this.setProperties({ value: this.getXhtml() }, true);\n }\n if (this.toolbarSettings.enable && this.toolbarSettings.type === 'Expand' && !isNullOrUndefined(this.getToolbar()) &&\n (this.toolbarSettings.items.indexOf('Undo') > -1 && this.toolbarSettings.items.indexOf('Redo') > -1)) {\n this.disableToolbarItem(['Undo', 'Redo']);\n }\n this.setContentHeight();\n if (this.value !== null) {\n this.valueContainer.defaultValue = this.value;\n }\n // eslint-disable-next-line\n (!this.enabled) ? this.unWireEvents() : this.eventInitializer();\n this.notify(bindCssClass, { cssClass: this.cssClass });\n this.addAudioVideoWrapper();\n this.notify(tableclass, {});\n this.renderComplete();\n };\n /**\n * addAudioVideoWrapper method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.addAudioVideoWrapper = function () {\n var _this = this;\n var insertElem;\n var audioElm = this.element.querySelectorAll('audio');\n for (var i = 0; i < audioElm.length; i++) {\n if (!audioElm[i].classList.contains('e-rte-audio')) {\n audioElm[i].classList.add('e-rte-audio');\n audioElm[i].classList.add(CLS_AUDIOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!audioElm[i].parentElement.classList.contains(CLS_CLICKELEM) && !audioElm[i].parentElement.classList.contains(CLS_AUDIOWRAP)) {\n var audioWrapElem = this.createElement('span', { className: CLS_AUDIOWRAP });\n audioWrapElem.setAttribute('style', 'width:300px; margin:0 auto;');\n audioWrapElem.contentEditable = 'false';\n var audioInnerWrapElem = this.createElement('span', { className: CLS_CLICKELEM });\n audioWrapElem.appendChild(audioInnerWrapElem);\n audioElm[i].parentNode.insertBefore(audioWrapElem, audioElm[i].nextSibling);\n audioInnerWrapElem.appendChild(audioElm[i]);\n if (audioWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n audioWrapElem.parentNode.insertBefore(insertElem, audioWrapElem.nextSibling);\n }\n }\n }\n var videoElm = this.element.querySelectorAll('video');\n for (var i = 0; i < videoElm.length; i++) {\n if (!videoElm[i].classList.contains('e-rte-video')) {\n videoElm[i].classList.add('e-rte-video');\n videoElm[i].classList.add(CLS_VIDEOINLINE);\n }\n // eslint-disable-next-line max-len\n if (!videoElm[i].parentElement.classList.contains(CLS_CLICKELEM) && !videoElm[i].parentElement.classList.contains(CLS_VIDEOWRAP)) {\n var videoWrapElem = this.createElement('span', { className: CLS_VIDEOWRAP });\n videoWrapElem.contentEditable = 'false';\n videoElm[i].parentNode.insertBefore(videoWrapElem, videoElm[i].nextSibling);\n videoWrapElem.appendChild(videoElm[i]);\n if (videoWrapElem.nextElementSibling === null) {\n insertElem = this.createElement('br');\n videoWrapElem.parentNode.insertBefore(insertElem, videoWrapElem.nextSibling);\n }\n }\n if (Browser.userAgent.indexOf('Firefox') !== -1) {\n // eslint-disable-next-line\n videoElm[i].addEventListener('play', function (args) {\n _this.notify(mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n // eslint-disable-next-line\n videoElm[i].addEventListener('pause', function (args) {\n _this.notify(mouseDown, { args: args });\n _this.notify('editAreaClick', { args: args });\n });\n }\n }\n };\n /**\n * For internal use only - Initialize the event handler\n *\n * @returns {void}\n * @private\n * @deprecated\n * @hidden\n */\n RichTextEditor.prototype.eventInitializer = function () {\n this.wireEvents();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n RichTextEditor.prototype.cleanList = function (e) {\n var range = this.getRange();\n var currentStartContainer = range.startContainer;\n var currentEndContainer = range.endContainer;\n var currentStartOffset = range.startOffset;\n var isSameContainer = currentStartContainer === currentEndContainer ? true : false;\n var endNode = range.endContainer.nodeName === '#text' ? range.endContainer.parentElement :\n range.endContainer;\n var closestLI = closest(endNode, 'LI');\n var isDetached = false;\n if (!isNullOrUndefined(closestLI) && endNode.textContent.length === range.endOffset &&\n !range.collapsed && isNullOrUndefined(endNode.nextElementSibling)) {\n for (var i = 0; i < closestLI.childNodes.length; i++) {\n if (closestLI.childNodes[i].nodeName === '#text' && closestLI.childNodes[i].textContent.trim().length === 0) {\n detach(closestLI.childNodes[i]);\n isDetached = true;\n i--;\n }\n }\n var currentLastElem = closestLI;\n while (currentLastElem.lastChild !== null && currentLastElem.nodeName !== '#text') {\n currentLastElem = currentLastElem.lastChild;\n }\n if (isDetached) {\n var currentLast = currentLastElem.nodeName === 'BR' && !isNullOrUndefined(currentLastElem.previousSibling) ?\n currentLastElem.previousSibling : currentLastElem;\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), isSameContainer ? currentLast : currentStartContainer, currentLast, currentStartOffset, (currentLast.nodeName === 'BR' ? 0 : currentLast.textContent.length));\n }\n }\n };\n /**\n * For internal use only - keydown the event handler;\n *\n * @param {KeyboardEvent} e - specifies the event.\n * @returns {void}\n * @private\n * @deprecated\n * @hidden\n */\n RichTextEditor.prototype.keyDown = function (e) {\n this.notify(keyDown, { member: 'keydown', args: e });\n this.restrict(e);\n if (this.editorMode === 'HTML') {\n this.cleanList(e);\n }\n if (this.editorMode === 'HTML' && ((e.which === 8 && e.code === 'Backspace') || (e.which === 46 && e.code === 'Delete'))) {\n var range = this.getRange();\n var startNode = range.startContainer.nodeName === '#text' ? range.startContainer.parentElement :\n range.startContainer;\n if (closest(startNode, 'pre') &&\n (e.which === 8 && range.startContainer.textContent.charCodeAt(range.startOffset - 1) === 8203) ||\n (e.which === 46 && range.startContainer.textContent.charCodeAt(range.startOffset) === 8203)) {\n // eslint-disable-next-line\n var regEx = new RegExp(String.fromCharCode(8203), 'g');\n var pointer = e.which === 8 ? range.startOffset - 1 : range.startOffset;\n range.startContainer.textContent = range.startContainer.textContent.replace(regEx, '');\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, pointer);\n }\n else if ((e.code === 'Backspace' && e.which === 8) &&\n range.startContainer.textContent.charCodeAt(0) === 8203 && range.collapsed) {\n var parentEle = range.startContainer.parentElement;\n var index = void 0;\n var i = void 0;\n for (i = 0; i < parentEle.childNodes.length; i++) {\n if (parentEle.childNodes[i] === range.startContainer) {\n index = i;\n }\n }\n var bool = true;\n var removeNodeArray = [];\n for (i = index; i >= 0; i--) {\n // eslint-disable-next-line max-len\n if (parentEle.childNodes[i].nodeType === 3 && parentEle.childNodes[i].textContent.charCodeAt(0) === 8203 && bool) {\n removeNodeArray.push(i);\n }\n else {\n bool = false;\n }\n }\n if (removeNodeArray.length > 0) {\n for (i = removeNodeArray.length - 1; i > 0; i--) {\n parentEle.childNodes[removeNodeArray[i]].textContent = '';\n }\n }\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), range.startContainer, range.startOffset);\n }\n }\n if (this.formatter.getUndoRedoStack().length === 0) {\n this.formatter.saveData();\n }\n if (e.action !== 'insert-link' &&\n (e.action && e.action !== 'paste' && e.action !== 'space'\n || e.which === 9 || (e.code === 'Backspace' && e.which === 8))) {\n this.formatter.process(this, null, e);\n switch (e.action) {\n case 'toolbar-focus':\n if (this.toolbarSettings.enable) {\n // eslint-disable-next-line\n var selector = '.e-toolbar-item[aria-disabled=\"false\"][title] [tabindex]';\n this.toolbarModule.baseToolbar.toolbarObj.element.querySelector(selector).focus();\n }\n break;\n case 'escape':\n this.contentModule.getEditPanel().focus();\n break;\n }\n }\n if (!isNullOrUndefined(this.placeholder)) {\n if ((!isNullOrUndefined(this.placeHolderWrapper)) && (this.inputElement.textContent.length !== 1)) {\n this.placeHolderWrapper.style.display = 'none';\n }\n else {\n this.setPlaceHolder();\n }\n }\n this.autoResize();\n };\n RichTextEditor.prototype.keyUp = function (e) {\n if (this.editorMode === 'HTML') {\n var range = this.getRange();\n if (Browser.userAgent.indexOf('Firefox') !== -1 && range.startContainer.nodeName === '#text' &&\n range.startContainer.parentElement === this.inputElement && this.enterKey !== 'BR') {\n var range_1 = this.getRange();\n var tempElem = this.createElement(this.enterKey);\n range_1.startContainer.parentElement.insertBefore(tempElem, range_1.startContainer);\n tempElem.appendChild(range_1.startContainer);\n this.formatter.editorManager.nodeSelection.setSelectionText(this.contentModule.getDocument(), tempElem.childNodes[0], tempElem.childNodes[0], tempElem.childNodes[0].textContent.length, tempElem.childNodes[0].textContent.length);\n }\n }\n this.notify(keyUp, { member: 'keyup', args: e });\n if (e.keyCode === 39 || e.keyCode === 37) {\n this.notify(tableModulekeyUp, { member: 'tableModulekeyUp', args: e });\n }\n if (e.code === 'KeyX' && e.which === 88 && e.keyCode === 88 && e.ctrlKey && (this.inputElement.innerHTML === '' ||\n this.inputElement.innerHTML === '
    ')) {\n this.inputElement.innerHTML = getEditValue(getDefaultValue(this), this);\n }\n var allowedKeys = e.which === 32 || e.which === 13 || e.which === 8 || e.which === 46;\n if (((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys) || (this.editorMode === 'Markdown'\n && ((e.key !== 'shift' && !e.ctrlKey) && e.key && e.key.length === 1 || allowedKeys)) && !this.inlineMode.enable) {\n this.formatter.onKeyHandler(this, e);\n }\n if (this.inputElement && this.inputElement.textContent.length !== 0\n || this.element.querySelectorAll('.e-toolbar-item.e-active').length > 0) {\n this.notify(toolbarRefresh, { args: e });\n }\n if (!isNullOrUndefined(this.placeholder)) {\n if (!(e.key === 'Enter' && e.keyCode === 13) && (this.inputElement.innerHTML === '


    ' || this.inputElement.innerHTML === '

    ' ||\n this.inputElement.innerHTML === '
    ')) {\n this.setPlaceHolder();\n }\n }\n };\n /**\n * @param {string} value - specifies the value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.serializeValue = function (value) {\n if (this.editorMode === 'HTML' && !isNullOrUndefined(value)) {\n if (this.enableHtmlEncode) {\n value = this.htmlEditorModule.sanitizeHelper(decode(value));\n value = this.encode(value);\n }\n else {\n value = this.htmlEditorModule.sanitizeHelper(value);\n value = this.enableXhtml ? this.htmlEditorModule.xhtmlValidation.selfEncloseValidation(value) : value;\n }\n }\n return value;\n };\n /**\n * This method will clean up the HTML against cross-site scripting attack and return the HTML as string.\n * It's only applicable to editorMode as `HTML`.\n *\n * @param {string} value - Specifies the value that you want to sanitize.\n * @returns {string} - specifies the the string value\n */\n RichTextEditor.prototype.sanitizeHtml = function (value) {\n return this.serializeValue(value);\n };\n /**\n * updateValue method\n *\n * @param {string} value - specifies the string value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.updateValue = function (value) {\n if (isNullOrUndefined(value)) {\n var inputVal = this.inputElement.innerHTML;\n this.setProperties({ value: isEditableValueEmpty(inputVal) ? null : inputVal });\n }\n else {\n this.setProperties({ value: value });\n }\n };\n RichTextEditor.prototype.triggerEditArea = function (e) {\n if (!isIDevice()) {\n this.notify(editAreaClick, { member: 'editAreaClick', args: e });\n }\n else {\n var touch = (e.touches ? e.changedTouches[0] : e);\n if (this.clickPoints.clientX === touch.clientX && this.clickPoints.clientY === touch.clientY) {\n this.notify(editAreaClick, { member: 'editAreaClick', args: e });\n }\n }\n };\n RichTextEditor.prototype.notifyMouseUp = function (e) {\n var touch = (e.touches ? e.changedTouches[0] : e);\n this.notify(mouseUp, { member: 'mouseUp', args: e,\n touchData: { prevClientX: this.clickPoints.clientX, prevClientY: this.clickPoints.clientY,\n clientX: touch.clientX, clientY: touch.clientY }\n });\n if (this.inputElement && ((this.editorMode === 'HTML' && this.inputElement.textContent.length !== 0) ||\n (this.editorMode === 'Markdown' && this.inputElement.value.length !== 0)) || (e.target && (e.target.nodeName === 'VIDEO'\n || e.target.querySelectorAll('.' + CLS_VIDEOWRAP).length > 0) || (e.target && e.target.nodeName !== 'BR' &&\n (e.target.classList.contains(CLS_AUDIOWRAP) ||\n e.target.classList.contains(CLS_CLICKELEM) ||\n e.target.classList.contains(CLS_VID_CLICK_ELEM))))) {\n this.notify(toolbarRefresh, { args: e });\n }\n this.triggerEditArea(e);\n };\n RichTextEditor.prototype.mouseUp = function (e) {\n if (this.quickToolbarSettings.showOnRightClick && Browser.isDevice) {\n var target = e.target;\n var closestTable = closest(target, 'table');\n if (target && target.nodeName === 'A' || target.nodeName === 'IMG' || (target.nodeName === 'TD' || target.nodeName === 'TH' ||\n target.nodeName === 'TABLE' || (closestTable && this.contentModule.getEditPanel().contains(closestTable)))) {\n return;\n }\n }\n this.notifyMouseUp(e);\n if (e.detail === 3) {\n var range = this.getRange();\n var selection = this.formatter.editorManager.domNode.getSelection();\n if (/\\s+$/.test(selection.toString())) {\n if (!isNullOrUndefined(range.startContainer.parentElement) && (!isNullOrUndefined(range.startContainer.parentElement.nextSibling) &&\n (range.startContainer.parentElement.nextSibling.nodeType !== 3 ||\n /\\s+$/.test(range.startContainer.parentElement.nextSibling.textContent)) || range.startOffset === range.endOffset)\n || range.startContainer.parentElement.tagName.toLocaleLowerCase() === 'li') {\n range.setStart(range.startContainer, range.startOffset);\n range.setEnd(range.startContainer, range.startContainer.textContent.length);\n }\n }\n }\n };\n /**\n * @param {Function} module - specifies the module function.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.ensureModuleInjected = function (module) {\n return this.getInjectedModules().indexOf(module) >= 0;\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.onCopy = function () {\n this.contentModule.getDocument().execCommand('copy', false, null);\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.onCut = function () {\n this.contentModule.getDocument().execCommand('cut', false, null);\n };\n /**\n * @param {KeyboardEvent} e - specifies the keyboard event.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.onPaste = function (e) {\n var _this = this;\n var evenArgs = {\n originalEvent: e,\n cancel: false,\n requestType: 'Paste'\n };\n this.trigger(actionBegin, evenArgs, function (pasteArgs) {\n var currentLength = _this.inputElement.textContent.length;\n var selectionLength = _this.getSelection().length;\n var pastedContentLength = (isNullOrUndefined(e) || isNullOrUndefined(e.clipboardData))\n ? 0 : e.clipboardData.getData('text/plain').length;\n var totalLength = (currentLength - selectionLength) + pastedContentLength;\n if (_this.editorMode === 'Markdown') {\n var args_1 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };\n setTimeout(function () {\n _this.formatter.onSuccess(_this, args_1);\n }, 0);\n if (!(_this.maxLength === -1 || totalLength <= _this.maxLength)) {\n e.preventDefault();\n }\n return;\n }\n if (!pasteArgs.cancel && _this.inputElement.contentEditable === 'true' &&\n (_this.maxLength === -1 || totalLength <= _this.maxLength)) {\n if (!isNullOrUndefined(_this.pasteCleanupModule)) {\n _this.notify(pasteClean, { args: e });\n }\n else {\n var args_2 = { requestType: 'Paste', editorMode: _this.editorMode, event: e };\n var value = null;\n var htmlValue = false;\n if (e && !isNullOrUndefined(e.clipboardData)) {\n value = e.clipboardData.getData('text/plain');\n htmlValue = e.clipboardData.getData('text/html').indexOf('MsoNormal') > 0;\n }\n var file = e && e.clipboardData && e.clipboardData.items.length > 0 ?\n e.clipboardData.items[0].getAsFile() : null;\n if (value !== null) {\n _this.notify(paste, {\n file: file,\n args: e,\n text: value,\n isWordPaste: htmlValue\n });\n }\n setTimeout(function () {\n _this.formatter.onSuccess(_this, args_2);\n }, 0);\n }\n }\n else {\n e.preventDefault();\n }\n });\n };\n /**\n * @param {string} action - specifies the string value.\n * @param {MouseEvent} event - specifies the event.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.clipboardAction = function (action, event) {\n switch (action.toLowerCase()) {\n case 'cut':\n this.onCut();\n this.formatter.onSuccess(this, {\n requestType: 'Cut',\n editorMode: this.editorMode,\n event: event\n });\n break;\n case 'copy':\n this.onCopy();\n this.formatter.onSuccess(this, {\n requestType: 'Copy',\n editorMode: this.editorMode,\n event: event\n });\n break;\n case 'paste':\n this.onPaste(event);\n break;\n }\n };\n /**\n * Destroys the component (detaches/removes all event handlers, attributes, classes, and empties the component element).\n *\n * @returns {void}\n */\n RichTextEditor.prototype.destroy = function () {\n if (this.isDestroyed || !this.isRendered) {\n return;\n }\n if (!isNullOrUndefined(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n if (this.element.offsetParent === null) {\n if (!isNullOrUndefined(this.toolbarModule)) {\n this.toolbarModule.destroy();\n }\n this.notify(moduleDestroy, {});\n return;\n }\n this.notify(destroy, {});\n this.destroyDependentModules();\n this.unWireEvents();\n if (this.originalElement.tagName === 'TEXTAREA') {\n this.element.parentElement.insertBefore(this.valueContainer, this.element);\n this.valueContainer.id = this.getID();\n this.valueContainer.removeAttribute('name');\n detach(this.element);\n if (this.originalElement.innerHTML.trim() !== '') {\n this.valueContainer.value = this.originalElement.innerHTML.trim();\n this.setProperties({ value: (!isNullOrUndefined(this.initialValue) ? this.initialValue : null) }, true);\n }\n else {\n this.valueContainer.value = this.valueContainer.defaultValue;\n }\n this.element = this.valueContainer;\n for (var i = 0; i < this.originalElement.classList.length; i++) {\n addClass([this.element], this.originalElement.classList[i]);\n }\n if (!isNullOrUndefined(this.cssClass)) {\n var currentClassList = this.cssClass.split(' ');\n for (var i = 0; i < currentClassList.length; i++) {\n addClass([this.element], currentClassList[i]);\n }\n }\n removeClass([this.element], CLS_RTE_HIDDEN);\n }\n else {\n if (this.originalElement.innerHTML.trim() !== '') {\n this.element.innerHTML = this.originalElement.innerHTML.trim();\n this.setProperties({ value: (!isNullOrUndefined(this.initialValue) ? this.initialValue : null) }, true);\n }\n else {\n this.element.innerHTML = '';\n }\n }\n if (this.placeholder && this.placeHolderWrapper) {\n this.placeHolderWrapper = null;\n }\n if (!isNullOrUndefined(this.cssClass)) {\n var allClassName = this.cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n removeClass([this.element], allClassName[i]);\n }\n }\n }\n this.removeHtmlAttributes();\n this.removeAttributes();\n _super.prototype.destroy.call(this);\n this.isRendered = false;\n if (this.enablePersistence) {\n window.localStorage.removeItem(this.getModuleName() + this.element.id);\n }\n };\n RichTextEditor.prototype.removeHtmlAttributes = function () {\n if (this.htmlAttributes) {\n var keys = Object.keys(this.htmlAttributes);\n for (var i = 0; i < keys.length && this.element.hasAttribute(keys[i]); i++) {\n this.element.removeAttribute(keys[i]);\n }\n }\n };\n RichTextEditor.prototype.removeAttributes = function () {\n if (!this.enabled) {\n removeClass([this.element], CLS_DISABLED);\n }\n if (this.enableRtl) {\n removeClass([this.element], CLS_RTL);\n }\n if (this.readonly) {\n removeClass([this.element], CLS_RTE_READONLY);\n }\n if (this.element.style.width !== '' && this.originalElement.style.width === '') {\n this.element.style.removeProperty('width');\n }\n if (this.element.style.height !== '' && this.originalElement.style.height === '') {\n this.element.style.removeProperty('height');\n }\n this.element.removeAttribute('aria-disabled');\n this.element.removeAttribute('role');\n this.element.removeAttribute('tabindex');\n };\n RichTextEditor.prototype.destroyDependentModules = function () {\n /* destroy dependent modules */\n this.renderModule.destroy();\n this.formatter.editorManager.undoRedoManager.destroy();\n this.sourceCodeModule.destroy();\n };\n /**\n * Returns the HTML or Text inside the RichTextEditor.\n *\n * @returns {Element} - specifies the element.\n */\n RichTextEditor.prototype.getContent = function () {\n return this.contentModule.getPanel();\n };\n /**\n * Returns the text content as string.\n *\n * @returns {string} - specifies the string value.\n */\n RichTextEditor.prototype.getText = function () {\n return this.contentModule.getText();\n };\n /**\n * Returns the html value of the selected content as string.\n *\n * @returns {string} - specifies the string value.\n */\n RichTextEditor.prototype.getSelectedHtml = function () {\n var range;\n var wrapperElm = this.createElement('div');\n var selection = this.contentModule.getDocument().getSelection();\n if (selection.rangeCount > 0) {\n range = selection.getRangeAt(0);\n var selectedHtml = range.cloneContents();\n wrapperElm.appendChild(selectedHtml);\n }\n return wrapperElm.innerHTML;\n };\n /**\n * It shows the inline quick toolbar\n *\n * @returns {void}\n */\n RichTextEditor.prototype.showInlineToolbar = function () {\n if (this.inlineMode.enable) {\n var currentRange = this.getRange();\n var targetElm = currentRange.endContainer.nodeName === '#text' ?\n currentRange.endContainer.parentElement : currentRange.endContainer;\n var x = currentRange.getClientRects()[0].left;\n var y = currentRange.getClientRects()[0].top;\n this.quickToolbarModule.showInlineQTBar(x, y, targetElm);\n }\n };\n /**\n * It hides the inline quick toolbar\n *\n * @returns {void}\n */\n RichTextEditor.prototype.hideInlineToolbar = function () {\n this.quickToolbarModule.hideInlineQTBar();\n };\n /**\n * For internal use only - Get the module name.\n *\n * @returns {void}\n * @private\n * @deprecated\n */\n RichTextEditor.prototype.getModuleName = function () {\n return 'richtexteditor';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {RichTextEditorModel} newProp - specifies the the property.\n * @param {RichTextEditorModel} oldProp - specifies the old property.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n /* eslint-disable */\n RichTextEditor.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enterKey':\n case 'value': {\n var nVal = void 0;\n if (prop === 'enterKey') {\n if (this.value === null || this.value === '

    ' || this.value === '


    ' ||\n this.value === '
    ') {\n nVal = null;\n }\n else {\n nVal = this.value;\n }\n }\n else {\n nVal = newProp[prop];\n }\n var val = this.editorMode === 'HTML' ? getEditValue(nVal, this) : nVal;\n if ((!isNullOrUndefined(nVal) && nVal !== '') || prop === 'enterKey') {\n this.value = this.serializeValue(((this.enableHtmlEncode) ? this.encode(decode(val)) : val));\n }\n this.updatePanelValue();\n if (this.inputElement) {\n this.notify(tableclass, {});\n }\n this.setPlaceHolder();\n this.notify(xhtmlValidation, { module: 'XhtmlValidation', newProp: newProp, oldProp: oldProp });\n if (this.enableXhtml) {\n this.setProperties({ value: this.getXhtml() }, true);\n }\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n this.addAudioVideoWrapper();\n break;\n }\n case 'valueTemplate':\n this.setValue(true);\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'width':\n this.setWidth(newProp[prop]);\n if (this.toolbarSettings.enable && !this.inlineMode.enable) {\n this.toolbarModule.refreshToolbarOverflow();\n this.resizeHandler();\n }\n break;\n case 'height':\n this.setHeight(newProp[prop]);\n this.setContentHeight();\n this.autoResize();\n break;\n case 'readonly':\n this.setReadOnly(false);\n break;\n case 'cssClass':\n this.element.classList.remove(oldProp[prop]);\n this.setCssClass(newProp[prop]);\n this.notify(bindCssClass, { cssClass: newProp[prop], oldCssClass: oldProp[prop] });\n break;\n case 'enabled':\n this.setEnable();\n break;\n case 'enableRtl':\n this.updateRTL();\n break;\n case 'placeholder':\n this.placeholder = newProp[prop];\n this.setPlaceHolder();\n break;\n case 'htmlAttributes':\n setAttributes(this.htmlAttributes, this, false, false);\n break;\n case 'iframeSettings': {\n var frameSetting = oldProp[prop];\n if (frameSetting.resources) {\n var iframe = this.contentModule.getDocument();\n var header = iframe.querySelector('head');\n var files = void 0;\n if (frameSetting.resources.scripts) {\n files = header.querySelectorAll('.' + CLS_SCRIPT_SHEET);\n this.removeSheets(files);\n }\n if (frameSetting.resources.styles) {\n files = header.querySelectorAll('.' + CLS_STYLE_SHEET);\n this.removeSheets(files);\n }\n }\n this.setIframeSettings();\n break;\n }\n case 'locale':\n _super.prototype.refresh.call(this);\n break;\n case 'inlineMode':\n this.notify(modelChanged, { module: 'quickToolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight();\n break;\n case 'toolbarSettings':\n this.notify(modelChanged, { module: 'toolbar', newProp: newProp, oldProp: oldProp });\n this.setContentHeight();\n break;\n case 'maxLength':\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'showCharCount':\n if (newProp[prop] && this.countModule) {\n this.countModule.renderCount();\n }\n else if (newProp[prop] === false && this.countModule) {\n this.countModule.destroy();\n }\n break;\n case 'enableHtmlEncode':\n this.updateValueData();\n this.updatePanelValue();\n this.setPlaceHolder();\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n break;\n case 'undoRedoSteps':\n case 'undoRedoTimer':\n this.formatter.editorManager.observer.notify(MODEL_CHANGED, { newProp: newProp, oldProp: oldProp });\n break;\n case 'enableXhtml':\n this.notify(xhtmlValidation, { module: 'XhtmlValidation', newProp: newProp, oldProp: oldProp });\n break;\n case 'quickToolbarSettings':\n newProp.quickToolbarSettings.showOnRightClick ? this.wireContextEvent() : this.unWireContextEvent();\n this.notify(modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n default:\n this.notify(modelChanged, { newProp: newProp, oldProp: oldProp });\n break;\n }\n }\n };\n /* eslint-enable */\n /**\n * @hidden\n * @returns {void}\n * @deprecated\n */\n RichTextEditor.prototype.updateValueData = function () {\n if (this.enableHtmlEncode) {\n this.setProperties({ value: this.encode(decode(this.inputElement.innerHTML)) }, true);\n }\n else {\n this.setProperties({\n value: /<[a-z][\\s\\S]*>/i.test(this.inputElement.innerHTML) ? this.inputElement.innerHTML :\n decode(this.inputElement.innerHTML)\n });\n }\n };\n RichTextEditor.prototype.removeSheets = function (srcList) {\n var i;\n for (i = 0; i < srcList.length; i++) {\n detach(srcList[i]);\n }\n };\n RichTextEditor.prototype.updatePanelValue = function () {\n var value = this.value;\n value = (this.enableHtmlEncode && this.value) ? decode(value) : value;\n var getTextArea = this.element.querySelector('.e-rte-srctextarea');\n if (value) {\n if (getTextArea && getTextArea.style.display === 'block') {\n getTextArea.value = this.value;\n }\n if (this.valueContainer) {\n this.valueContainer.value = (this.enableHtmlEncode) ? this.value : value;\n }\n if (this.editorMode === 'HTML' && this.inputElement && this.inputElement.innerHTML.replace('&', '&').trim() !== value.trim()) {\n this.inputElement.innerHTML = value;\n }\n else if (this.editorMode === 'Markdown' && this.inputElement\n && this.inputElement.value.trim() !== value.trim()) {\n this.inputElement.value = value;\n }\n }\n else {\n if (getTextArea && getTextArea.style.display === 'block') {\n getTextArea.value = '';\n }\n if (this.editorMode === 'HTML') {\n if (this.enterKey === 'DIV') {\n this.inputElement.innerHTML = '

    ';\n }\n else if (this.enterKey === 'BR') {\n this.inputElement.innerHTML = '
    ';\n }\n else {\n this.inputElement.innerHTML = '


    ';\n if (value === '' && this.formatter && this.inputElement) {\n this.formatter.editorManager.nodeSelection.setCursorPoint(this.contentModule.getDocument(), this.inputElement.firstElementChild, this.inputElement.firstElementChild.childElementCount);\n }\n }\n }\n else {\n this.inputElement.value = '';\n }\n if (this.valueContainer) {\n this.valueContainer.value = '';\n }\n }\n if (this.showCharCount) {\n this.countModule.refresh();\n }\n };\n RichTextEditor.prototype.setHeight = function (height) {\n if (height !== 'auto') {\n this.element.style.height = formatUnit(height);\n }\n else {\n this.element.style.height = 'auto';\n }\n if (this.toolbarSettings.type === 'Expand' && (typeof (this.height) === 'string' &&\n this.height.indexOf('px') > -1 || typeof (this.height) === 'number')) {\n this.element.classList.add(CLS_RTE_FIXED_TB_EXPAND);\n }\n else {\n this.element.classList.remove(CLS_RTE_FIXED_TB_EXPAND);\n }\n };\n /**\n * setPlaceHolder method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.setPlaceHolder = function () {\n if (this.inputElement && this.placeholder && this.iframeSettings.enable !== true) {\n if (this.editorMode !== 'Markdown') {\n if (!this.placeHolderWrapper) {\n this.placeHolderWrapper = this.createElement('span', { className: 'rte-placeholder e-rte-placeholder' + ' ' + this.cssClass });\n if (this.inputElement) {\n this.inputElement.parentElement.insertBefore(this.placeHolderWrapper, this.inputElement);\n }\n attributes(this.placeHolderWrapper, {\n 'style': 'font-size: 14px; margin-left: 0px; margin-right: 0px;'\n });\n }\n this.placeHolderWrapper.innerHTML = this.placeholder;\n if (this.inputElement.textContent.length === 0 && this.inputElement.childNodes.length < 2 && !isNullOrUndefined(this.inputElement.firstChild) && (this.inputElement.firstChild.nodeName === 'BR' ||\n ((this.inputElement.firstChild.nodeName === 'P' || this.inputElement.firstChild.nodeName === 'DIV') && !isNullOrUndefined(this.inputElement.firstChild.firstChild) &&\n this.inputElement.firstChild.firstChild.nodeName === 'BR'))) {\n this.placeHolderWrapper.style.display = 'block';\n }\n else {\n this.placeHolderWrapper.style.display = 'none';\n }\n }\n else {\n this.inputElement.setAttribute('placeholder', this.placeholder);\n }\n }\n };\n RichTextEditor.prototype.setWidth = function (width) {\n if (width !== 'auto') {\n setStyleAttribute(this.element, { 'width': formatUnit(this.width) });\n }\n else {\n this.element.style.width = 'auto';\n }\n };\n RichTextEditor.prototype.setCssClass = function (cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n var allClassName = cssClass.split(' ');\n for (var i = 0; i < allClassName.length; i++) {\n if (allClassName[i].trim() !== '') {\n this.element.classList.add(allClassName[i]);\n }\n }\n }\n };\n RichTextEditor.prototype.updateRTL = function () {\n this.notify(rtlMode, { enableRtl: this.enableRtl });\n if (this.enableRtl) {\n this.element.classList.add(CLS_RTL);\n this.inputElement.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n this.inputElement.classList.remove(CLS_RTL);\n }\n };\n RichTextEditor.prototype.updateReadOnly = function () {\n this.notify(readOnlyMode, { editPanel: this.inputElement, mode: this.readonly });\n };\n /**\n * setReadOnly method\n *\n * @param {boolean} initial - specifies the boolean value\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.setReadOnly = function (initial) {\n this.updateReadOnly();\n if (!initial) {\n if (this.readonly && this.enabled) {\n this.unbindEvents();\n }\n else if (this.enabled) {\n this.bindEvents();\n }\n }\n };\n /**\n * By default, prints all the pages of the RichTextEditor.\n *\n * @returns {void}\n */\n RichTextEditor.prototype.print = function () {\n var _this = this;\n var printWind;\n var printArgs = {\n element: this.inputElement,\n requestType: 'print',\n cancel: false\n };\n this.trigger(actionBegin, printArgs, function (printingArgs) {\n printWind = window.open('', 'print', 'height=' + window.outerHeight + ',width=' + window.outerWidth);\n if (Browser.info.name === 'msie') {\n printWind.resizeTo(screen.availWidth, screen.availHeight);\n }\n printWind = print(_this.inputElement, printWind);\n if (!printingArgs.cancel) {\n var actionArgs = {\n requestType: 'print'\n };\n _this.trigger(actionComplete, actionArgs);\n }\n });\n };\n /**\n * Refresh the view of the editor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.refreshUI = function () {\n this.renderModule.refresh();\n };\n /**\n * Shows the Rich Text Editor component in full-screen mode.\n *\n * @returns {void}\n */\n RichTextEditor.prototype.showFullScreen = function () {\n this.fullScreenModule.showFullScreen();\n };\n /**\n * Enables the give toolbar items in the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * @param {boolean} muteToolbarUpdate enable/disables the toolbar item status in RichTextEditor.\n * that you want to be enable in Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.enableToolbarItem = function (items, muteToolbarUpdate) {\n this.toolbarModule.enableTBarItems(this.getBaseToolbarObject(), items, true, muteToolbarUpdate);\n };\n /**\n * Disables the given toolbar items in the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * @param {boolean} muteToolbarUpdate enable/disables the toolbar item status in RichTextEditor.\n * that you want to be disable in Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.disableToolbarItem = function (items, muteToolbarUpdate) {\n this.toolbarModule.enableTBarItems(this.getBaseToolbarObject(), items, false, muteToolbarUpdate);\n };\n /**\n * Removes the give toolbar items from the Rich Text Editor component.\n *\n * @returns {void}\n * @param {string | string[]} items - Specifies the single or collection of items\n * that you want to be remove from Rich Text Editor’s Toolbar.\n *\n * @public\n */\n RichTextEditor.prototype.removeToolbarItem = function (items) {\n this.toolbarModule.removeTBarItems(items);\n };\n /**\n * Get the selected range from the RichTextEditor's content.\n *\n * @returns {void}\n * @public\n * @deprecated\n */\n RichTextEditor.prototype.getRange = function () {\n return this.formatter.editorManager.nodeSelection.getRange(this.contentModule.getDocument());\n };\n RichTextEditor.prototype.initializeServices = function () {\n this.serviceLocator.register('rendererFactory', new RendererFactory);\n this.serviceLocator.register('rteLocale', this.localeObj = new L10n(this.getModuleName(), defaultLocale, this.locale));\n this.serviceLocator.register('dialogRenderObject', new DialogRenderer(this));\n };\n RichTextEditor.prototype.RTERender = function () {\n var rendererFactory = this.serviceLocator.getService('rendererFactory');\n this.contentModule = rendererFactory.getRenderer(RenderType.Content);\n this.fullScreenModule = new FullScreen(this);\n this.enterKeyModule = new EnterKeyAction(this);\n this.renderModule.render();\n this.inputElement = this.contentModule.getEditPanel();\n this.setHeight(this.height);\n setAttributes(this.htmlAttributes, this, false, true);\n if (this.iframeSettings) {\n this.setIframeSettings();\n }\n this.setCssClass(this.cssClass);\n this.updateEnable();\n this.setPlaceHolder();\n this.updateRTL();\n this.updateReadOnly();\n this.updatePanelValue();\n if (this.enableHtmlEncode && !isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.encode(decode(this.value)) });\n }\n };\n RichTextEditor.prototype.setIframeSettings = function () {\n if (this.iframeSettings.resources) {\n var styleSrc = this.iframeSettings.resources.styles;\n var scriptSrc = this.iframeSettings.resources.scripts;\n if (this.iframeSettings.resources.scripts.length > 0) {\n this.InjectSheet(true, scriptSrc);\n }\n if (this.iframeSettings.resources.styles.length > 0) {\n this.InjectSheet(false, styleSrc);\n }\n }\n if (this.iframeSettings.attributes) {\n setAttributes(this.iframeSettings.attributes, this, true, false);\n }\n };\n RichTextEditor.prototype.InjectSheet = function (scriptSheet, srcList) {\n try {\n if (srcList && srcList.length > 0) {\n var iFrame = this.contentModule.getDocument();\n var target = iFrame.querySelector('head');\n for (var i = 0; i < srcList.length; i++) {\n if (scriptSheet) {\n var scriptEle = this.createScriptElement();\n scriptEle.src = srcList[i];\n target.appendChild(scriptEle);\n }\n else {\n var styleEle = this.createStyleElement();\n styleEle.href = srcList[i];\n target.appendChild(styleEle);\n }\n }\n }\n }\n catch (e) {\n return;\n }\n };\n RichTextEditor.prototype.createScriptElement = function () {\n var scriptEle = this.createElement('script', {\n className: CLS_SCRIPT_SHEET\n });\n scriptEle.type = 'text/javascript';\n return scriptEle;\n };\n RichTextEditor.prototype.createStyleElement = function () {\n var styleEle = this.createElement('link', {\n className: CLS_STYLE_SHEET\n });\n styleEle.rel = 'stylesheet';\n return styleEle;\n };\n RichTextEditor.prototype.setValue = function (isPropertyChange) {\n var _this = this;\n if (this.valueTemplate) {\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n if (regEx.test(this.valueTemplate)) {\n this.setProperties({ value: this.valueTemplate });\n }\n else {\n var compiledTemplate = compile(this.valueTemplate)('', this, 'valueTemplate');\n if (typeof this.valueTemplate !== 'string' && this.isReact) {\n this.displayTempElem = this.createElement('div');\n for (var i = 0; i < compiledTemplate.length; i++) {\n var item = compiledTemplate[i];\n append([item], this.displayTempElem);\n }\n this.renderTemplates(function () {\n _this.inputElement.innerHTML = _this.displayTempElem.childNodes[0].innerHTML;\n _this.setProperties({ value: _this.inputElement.innerHTML.trim() });\n });\n }\n else {\n var appendElem = this.element;\n if (isPropertyChange) {\n this.inputElement.innerHTML = '';\n appendElem = this.inputElement;\n }\n for (var i = 0; i < compiledTemplate.length; i++) {\n var item = compiledTemplate[i];\n append([item], appendElem);\n }\n this.setProperties({ value: appendElem.innerHTML.trim() });\n this.renderReactTemplates();\n }\n }\n }\n else {\n // eslint-disable-next-line\n var innerHtml = !isNullOrUndefined(this.element.innerHTML) && this.element.innerHTML.replace(/<(\\/?|\\!?)(!--!--)>/g, '').trim();\n if (innerHtml !== '') {\n if (this.element.tagName === 'TEXTAREA') {\n this.setProperties({ value: decode(innerHtml) });\n }\n else {\n this.setProperties({ value: innerHtml });\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RichTextEditor.prototype.renderTemplates = function (callBack) {\n this.renderReactTemplates(callBack);\n };\n RichTextEditor.prototype.updateResizeFlag = function () {\n this.isResizeInitialized = true;\n };\n /**\n * Image max width calculation method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.getInsertImgMaxWidth = function () {\n var maxWidth = this.insertImageSettings.maxWidth;\n // eslint-disable-next-line\n var imgPadding = 12;\n var imgResizeBorder = 2;\n var editEle = this.contentModule.getEditPanel();\n var eleStyle = window.getComputedStyle(editEle);\n var editEleMaxWidth = editEle.offsetWidth - (imgPadding + imgResizeBorder +\n parseFloat(eleStyle.paddingLeft.split('px')[0]) + parseFloat(eleStyle.paddingRight.split('px')[0]) +\n parseFloat(eleStyle.marginLeft.split('px')[0]) + parseFloat(eleStyle.marginRight.split('px')[0]));\n return isNullOrUndefined(maxWidth) ? editEleMaxWidth : maxWidth;\n };\n /**\n * Video max width calculation method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.getInsertVidMaxWidth = function () {\n var maxWidth = this.insertVideoSettings.maxWidth;\n // eslint-disable-next-line\n var vidPadding = 12;\n var vidResizeBorder = 2;\n var editEle = this.contentModule.getEditPanel();\n var eleStyle = window.getComputedStyle(editEle);\n var editEleMaxWidth = editEle.offsetWidth - (vidPadding + vidResizeBorder +\n parseFloat(eleStyle.paddingLeft.split('px')[0]) + parseFloat(eleStyle.paddingRight.split('px')[0]) +\n parseFloat(eleStyle.marginLeft.split('px')[0]) + parseFloat(eleStyle.marginRight.split('px')[0]));\n return isNullOrUndefined(maxWidth) ? editEleMaxWidth : maxWidth;\n };\n /**\n * setContentHeight method\n *\n * @param {string} target - specifies the target value.\n * @param {boolean} isExpand - specifies the bollean value.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.setContentHeight = function (target, isExpand) {\n var heightValue;\n var topValue = 0;\n var rteHeightPercent;\n var heightPercent = typeof (this.height) === 'string' && this.height.indexOf('%') > -1;\n var cntEle = (this.sourceCodeModule.getPanel() &&\n this.sourceCodeModule.getPanel().parentElement.style.display === 'block') ? this.sourceCodeModule.getPanel().parentElement :\n this.contentModule.getPanel();\n var rteHeight = this.element.offsetHeight;\n if (rteHeight === 0 && this.height !== 'auto' && !this.getToolbar()) {\n rteHeight = parseInt(this.height, 10);\n if (heightPercent) {\n rteHeightPercent = this.height;\n }\n }\n var tbHeight = this.getToolbar() ? this.toolbarModule.getToolbarHeight() : 0;\n var rzHandle = this.element.querySelector('.' + CLS_RTE_RES_HANDLE);\n var rzHeight = this.enableResize ? (!isNullOrUndefined(rzHandle) ? (rzHandle.offsetHeight + 8) : 0) : 0;\n var expandPopHeight = this.getToolbar() ? this.toolbarModule.getExpandTBarPopHeight() : 0;\n if (this.toolbarSettings.type === ToolbarType.Expand && isExpand) {\n heightValue = (this.height === 'auto' && rzHeight === 0) ? 'auto' : rteHeight - (tbHeight + expandPopHeight + rzHeight) + 'px';\n topValue = (!this.toolbarSettings.enableFloating) ? expandPopHeight : 0;\n }\n else {\n if (this.height === 'auto' && !(this.element.classList.contains('e-rte-full-screen')) && !this.isResizeInitialized) {\n heightValue = 'auto';\n }\n else {\n heightValue = heightPercent && rteHeightPercent ? rteHeightPercent : rteHeight - (tbHeight + rzHeight) + 'px';\n }\n }\n if (target !== 'windowResize') {\n if (this.iframeSettings.enable) {\n if (heightValue !== 'auto') {\n setStyleAttribute(cntEle, { height: heightValue, marginTop: topValue + 'px' });\n }\n }\n else {\n setStyleAttribute(cntEle, { height: heightValue, marginTop: topValue + 'px' });\n }\n }\n if (this.iframeSettings.enable && target === 'sourceCode') {\n var codeElement = select('.' + CLS_RTE_CONTENT, this.element);\n setStyleAttribute(codeElement, { height: heightValue, marginTop: topValue + 'px' });\n }\n if (this.toolbarSettings.enableFloating && this.getToolbar() && !this.inlineMode.enable) {\n var tbWrapHeight = (isExpand ? (tbHeight + expandPopHeight) : tbHeight) + 'px';\n setStyleAttribute(this.getToolbar().parentElement, { height: tbWrapHeight });\n }\n if (rzHeight === 0) {\n this.autoResize();\n }\n };\n /**\n * Retrieves the HTML from RichTextEditor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getHtml = function () {\n return this.serializeValue(this.contentModule.getEditPanel().innerHTML);\n };\n /**\n * Retrieves the Rich Text Editor's XHTML validated HTML content when `enableXhtml` property is enabled.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getXhtml = function () {\n var currentValue = this.value;\n if (!isNullOrUndefined(currentValue) && this.enableXhtml) {\n currentValue = this.htmlEditorModule.xhtmlValidation.selfEncloseValidation(currentValue);\n }\n return currentValue;\n };\n /**\n * Shows the source HTML/MD markup.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showSourceCode = function () {\n if (this.readonly) {\n return;\n }\n this.notify(sourceCode, {});\n };\n /**\n * Returns the maximum number of characters in the Rich Text Editor.\n *\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.getCharCount = function () {\n var htmlText = this.editorMode === 'Markdown' ? this.inputElement.value.trim() :\n this.inputElement.textContent.trim();\n var htmlLength;\n if (this.editorMode !== 'Markdown' && htmlText.indexOf('\\u200B') !== -1) {\n htmlLength = htmlText.replace(/\\u200B/g, '').length;\n }\n else {\n htmlLength = htmlText.length;\n }\n return htmlLength;\n };\n /**\n * Show the dialog in the Rich Text Editor.\n *\n * @param {DialogType} type - specifies the dialog type.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.showDialog = function (type) {\n if (type === DialogType.InsertLink) {\n this.notify(showLinkDialog, {});\n }\n else if (type === DialogType.InsertImage) {\n this.notify(showImageDialog, {});\n }\n else if (type === DialogType.InsertAudio) {\n this.notify(showAudioDialog, {});\n }\n else if (type === DialogType.InsertVideo) {\n this.notify(showVideoDialog, {});\n }\n else if (type === DialogType.InsertTable) {\n this.notify(showTableDialog, {});\n }\n };\n /**\n * Close the dialog in the Rich Text Editor.\n *\n * @param {DialogType} type - specifies the dialog type.\n * @returns {void}\n * @public\n */\n RichTextEditor.prototype.closeDialog = function (type) {\n if (type === DialogType.InsertLink) {\n this.notify(closeLinkDialog, {});\n }\n else if (type === DialogType.InsertImage) {\n this.notify(closeImageDialog, {});\n }\n else if (type === DialogType.InsertAudio) {\n this.notify(closeAudioDialog, {});\n }\n else if (type === DialogType.InsertVideo) {\n this.notify(closeVideoDialog, {});\n }\n else if (type === DialogType.InsertTable) {\n this.notify(closeTableDialog, {});\n }\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.getBaseToolbarObject = function () {\n var tbObj;\n if (this.inlineMode.enable && (!Browser.isDevice || isIDevice())) {\n tbObj = this.quickToolbarModule && this.quickToolbarModule.getInlineBaseToolbar();\n }\n else {\n tbObj = this.toolbarModule && this.toolbarModule.getBaseToolbar();\n }\n return tbObj;\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.getToolbar = function () {\n return this.toolbarModule ? this.toolbarModule.getToolbarElement() : null;\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.getToolbarElement = function () {\n return this.toolbarModule && this.toolbarModule.getToolbarElement();\n };\n /**\n * @returns {void}\n * getID method\n *\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.getID = function () {\n return (this.originalElement.tagName === 'TEXTAREA' ? this.valueContainer.id : this.element.id);\n };\n RichTextEditor.prototype.mouseDownHandler = function (e) {\n var touch = (e.touches ? e.changedTouches[0] : e);\n addClass([this.element], [CLS_FOCUS]);\n this.preventDefaultResize(e);\n this.notify(mouseDown, { args: e });\n this.clickPoints = { clientX: touch.clientX, clientY: touch.clientY };\n };\n RichTextEditor.prototype.preventImgResize = function (e) {\n if (e.target.nodeName.toLocaleLowerCase() === 'img') {\n e.preventDefault();\n }\n };\n /**\n * preventDefaultResize method\n *\n * @param {FocusEvent} e - specifies the event.\n * @returns {void}\n * @hidden\n * @deprecated\n */\n // eslint-disable-next-line\n RichTextEditor.prototype.preventDefaultResize = function (e) {\n if (Browser.info.name === 'msie') {\n this.contentModule.getEditPanel().addEventListener('mscontrolselect', this.preventImgResize);\n }\n else if (Browser.info.name === 'mozilla') {\n this.contentModule.getDocument().execCommand('enableObjectResizing', false, 'false');\n this.contentModule.getDocument().execCommand('enableInlineTableEditing', false, 'false');\n }\n };\n // eslint-disable-next-line\n RichTextEditor.prototype.defaultResize = function (e) {\n if (Browser.info.name === 'msie') {\n this.contentModule.getEditPanel().removeEventListener('mscontrolselect', this.preventImgResize);\n }\n else if (Browser.info.name === 'mozilla') {\n this.contentModule.getDocument().execCommand('enableObjectResizing', true, 'true');\n this.contentModule.getDocument().execCommand('enableInlineTableEditing', true, 'true');\n }\n };\n RichTextEditor.prototype.resizeHandler = function () {\n var isExpand = false;\n if (!document.body.contains(this.element)) {\n document.defaultView.removeEventListener('resize', this.onResizeHandler, true);\n return;\n }\n if (this.toolbarSettings.enable && !this.inlineMode.enable) {\n this.toolbarModule.refreshToolbarOverflow();\n isExpand = this.toolbarModule.baseToolbar.toolbarObj.element.classList.contains(CLS_EXPAND_OPEN);\n }\n this.setContentHeight('windowResize', isExpand);\n this.notify(windowResize, null);\n };\n RichTextEditor.prototype.scrollHandler = function (e) {\n if (this.element) {\n this.notify(scroll, { args: e });\n }\n };\n RichTextEditor.prototype.contentScrollHandler = function (e) {\n this.notify(contentscroll, { args: e });\n };\n RichTextEditor.prototype.focusHandler = function (e) {\n if ((!this.isRTE || this.isFocusOut)) {\n this.isRTE = this.isFocusOut ? false : true;\n this.isFocusOut = false;\n addClass([this.element], [CLS_FOCUS]);\n if (this.editorMode === 'HTML') {\n this.cloneValue = (this.inputElement.innerHTML === '


    ' || this.inputElement.innerHTML === '

    ' ||\n this.inputElement.innerHTML === '
    ') ? null : this.enableHtmlEncode ?\n this.encode(decode(this.inputElement.innerHTML)) : this.inputElement.innerHTML;\n }\n else {\n this.cloneValue = this.inputElement.value === '' ? null :\n this.inputElement.value;\n }\n var active = document.activeElement;\n if (active === this.element || active === this.getToolbarElement() || active === this.contentModule.getEditPanel()\n || ((this.iframeSettings.enable && active === this.contentModule.getPanel()) &&\n e.target && !e.target.classList.contains('e-img-inner')\n && (e.target && e.target.parentElement\n && !e.target.parentElement.classList.contains('e-img-wrap')))\n || closest(active, '.e-rte-toolbar') === this.getToolbarElement()) {\n this.contentModule.getEditPanel().focus();\n if (!isNullOrUndefined(this.getToolbarElement())) {\n this.getToolbarElement().setAttribute('tabindex', '-1');\n var items = this.getToolbarElement().querySelectorAll('[tabindex=\"0\"]');\n for (var i = 0; i < items.length; i++) {\n items[i].setAttribute('tabindex', '-1');\n }\n }\n }\n this.preventDefaultResize(e);\n this.trigger('focus', { event: e, isInteracted: Object.keys(e).length === 0 ? false : true });\n if (!isNullOrUndefined(this.saveInterval) && this.saveInterval > 0 && !this.autoSaveOnIdle) {\n this.timeInterval = setInterval(this.updateValueOnIdle.bind(this), this.saveInterval);\n }\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n }\n if (!isNullOrUndefined(this.getToolbarElement())) {\n var toolbarItem = this.getToolbarElement().querySelectorAll('input,select,button,a,[tabindex]');\n for (var i = 0; i < toolbarItem.length; i++) {\n if ((!toolbarItem[i].classList.contains('e-rte-dropdown-btn') &&\n !toolbarItem[i].classList.contains('e-insert-table-btn')) &&\n (!toolbarItem[i].hasAttribute('tabindex') ||\n toolbarItem[i].getAttribute('tabindex') !== '-1')) {\n toolbarItem[i].setAttribute('tabindex', '-1');\n }\n }\n }\n };\n RichTextEditor.prototype.getUpdatedValue = function () {\n var value;\n if (!isNullOrUndefined(this.tableModule)) {\n this.tableModule.removeResizeElement();\n }\n var getTextArea = this.element.querySelector('.e-rte-srctextarea');\n if (this.editorMode === 'HTML') {\n value = (this.inputElement.innerHTML === '


    ' || this.inputElement.innerHTML === '

    '\n || this.inputElement.innerHTML === '
    ') ? null : this.enableHtmlEncode ?\n this.encode(decode(this.inputElement.innerHTML)) : this.inputElement.innerHTML;\n if (getTextArea && getTextArea.style.display === 'block') {\n value = getTextArea.value;\n }\n }\n else {\n value = this.inputElement.value === '' ? null :\n this.inputElement.value;\n }\n return value;\n };\n RichTextEditor.prototype.updateValueOnIdle = function () {\n if (!isNullOrUndefined(this.tableModule) && !isNullOrUndefined(this.inputElement.querySelector('.e-table-box.e-rbox-select'))) {\n return;\n }\n this.setProperties({ value: this.getUpdatedValue() }, true);\n this.valueContainer.value = this.value;\n this.isValueChangeBlurhandler = false;\n this.invokeChangeEvent();\n };\n RichTextEditor.prototype.updateIntervalValue = function () {\n clearTimeout(this.idleInterval);\n this.idleInterval = setTimeout(this.updateValueOnIdle.bind(this), 0);\n };\n RichTextEditor.prototype.updateStatus = function (e) {\n if (!isNullOrUndefined(e.html) || !isNullOrUndefined(e.markdown)) {\n var status_1 = this.formatter.editorManager.undoRedoManager.getUndoStatus();\n var eventArgs = {\n undo: status_1.undo,\n redo: status_1.redo,\n html: e.html,\n markdown: e.markdown\n };\n this.trigger(updatedToolbarStatus, eventArgs);\n }\n };\n RichTextEditor.prototype.onDocumentClick = function (e) {\n var target = e.target;\n var rteElement = closest(target, '.' + CLS_RTE);\n if (!this.element.contains(e.target) && document !== e.target && rteElement !== this.element &&\n !closest(target, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = true;\n this.isRTE = false;\n }\n this.notify(docClick, { args: e });\n if (Browser.info.name !== 'msie' && e.detail > 3) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.blurHandler = function (e) {\n var trg = e.relatedTarget;\n if (trg) {\n var rteElement = closest(trg, '.' + CLS_RTE);\n if (rteElement && rteElement === this.element) {\n this.isBlur = false;\n if (trg === this.getToolbarElement()) {\n trg.setAttribute('tabindex', '-1');\n }\n }\n else if (closest(trg, '[aria-owns=\"' + this.getID() + '\"]')) {\n this.isBlur = false;\n }\n else {\n this.isBlur = true;\n trg = null;\n }\n }\n if (this.isBlur && isNullOrUndefined(trg)) {\n removeClass([this.element], [CLS_FOCUS]);\n this.notify(focusChange, {});\n var value = this.getUpdatedValue();\n this.setProperties({ value: value });\n this.notify(toolbarRefresh, { args: e, documentNode: document });\n this.isValueChangeBlurhandler = true;\n this.invokeChangeEvent();\n this.isFocusOut = true;\n this.isBlur = false;\n dispatchEvent(this.valueContainer, 'focusout');\n this.defaultResize(e);\n this.trigger('blur', { event: e, isInteracted: Object.keys(e).length === 0 ? false : true });\n if (!isNullOrUndefined(this.timeInterval)) {\n clearInterval(this.timeInterval);\n this.timeInterval = null;\n }\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n }\n else {\n this.isRTE = true;\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.contentChanged = function () {\n if (this.autoSaveOnIdle) {\n if (!isNullOrUndefined(this.saveInterval)) {\n clearTimeout(this.timeInterval);\n this.timeInterval = setTimeout(this.updateIntervalValue.bind(this), this.saveInterval);\n }\n }\n };\n /**\n * invokeChangeEvent method\n *\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.invokeChangeEvent = function () {\n var currentValue;\n if (this.enableXhtml) {\n currentValue = this.getXhtml();\n }\n else {\n currentValue = this.value;\n }\n var eventArgs = {\n value: currentValue,\n isInteracted: this.isValueChangeBlurhandler\n };\n if (this.value !== this.cloneValue) {\n this.trigger('change', eventArgs);\n this.cloneValue = this.value;\n }\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.wireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.add(element, 'scroll', this.scrollHandler, this);\n }\n if (!this.iframeSettings.enable) {\n EventHandler.add(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler, this);\n }\n };\n RichTextEditor.prototype.wireContextEvent = function () {\n if (this.quickToolbarSettings.showOnRightClick) {\n EventHandler.add(this.inputElement, 'contextmenu', this.contextHandler, this);\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.inputElement, { tapHold: this.touchHandler.bind(this), tapHoldThreshold: 500 });\n }\n }\n };\n RichTextEditor.prototype.unWireContextEvent = function () {\n EventHandler.remove(this.inputElement, 'contextmenu', this.contextHandler);\n if (Browser.isDevice && this.touchModule) {\n this.touchModule.destroy();\n }\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.unWireScrollElementsEvents = function () {\n this.scrollParentElements = getScrollableParent(this.element);\n for (var _i = 0, _a = this.scrollParentElements; _i < _a.length; _i++) {\n var element = _a[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (!this.iframeSettings.enable) {\n EventHandler.remove(this.contentModule.getPanel(), 'scroll', this.contentScrollHandler);\n }\n };\n RichTextEditor.prototype.touchHandler = function (e) {\n this.notifyMouseUp(e.originalEvent);\n this.triggerEditArea(e.originalEvent);\n };\n RichTextEditor.prototype.contextHandler = function (e) {\n var closestElem = closest(e.target, 'a, table, img');\n if (this.inlineMode.onSelection === false || (!isNullOrUndefined(closestElem) && this.inputElement.contains(closestElem)\n && (closestElem.tagName === 'IMG' || closestElem.tagName === 'TABLE' || closestElem.tagName === 'A'))) {\n e.preventDefault();\n }\n };\n RichTextEditor.prototype.resetHandler = function () {\n var defaultValue = this.valueContainer.defaultValue.trim();\n this.setProperties({ value: defaultValue === '' ? null : defaultValue });\n };\n /**\n * @returns {void}\n * @hidden\n * @deprecated\n */\n RichTextEditor.prototype.autoResize = function () {\n var _this = this;\n if (this.height === 'auto') {\n if (this.editorMode === 'Markdown') {\n setTimeout(function () {\n _this.setAutoHeight(_this.inputElement);\n }, 0);\n }\n else if (this.iframeSettings.enable) {\n var iframeElement_1 = this.element.querySelector('#' + this.getID() + '_rte-view');\n setTimeout(function () {\n _this.setAutoHeight(iframeElement_1);\n }, 100);\n this.inputElement.style.overflow = 'hidden';\n }\n }\n else {\n this.inputElement.style.overflow = null;\n }\n };\n RichTextEditor.prototype.setAutoHeight = function (element) {\n if (!isNullOrUndefined(element)) {\n element.style.height = '';\n element.style.height = this.inputElement.scrollHeight + 'px';\n element.style.overflow = 'hidden';\n }\n };\n RichTextEditor.prototype.wireEvents = function () {\n this.element.addEventListener('focusin', this.onFocusHandler, true);\n this.element.addEventListener('focusout', this.onBlurHandler, true);\n this.on(contentChanged, this.contentChanged, this);\n this.on(resizeInitialized, this.updateResizeFlag, this);\n this.on(updateTbItemsStatus, this.updateStatus, this);\n if (this.readonly && this.enabled) {\n return;\n }\n this.bindEvents();\n };\n RichTextEditor.prototype.restrict = function (e) {\n if (this.maxLength >= 0) {\n var element = this.editorMode === 'Markdown' ? this.contentModule.getText() :\n (e && e.currentTarget.textContent);\n if (!element) {\n return;\n }\n var array = [8, 16, 17, 37, 38, 39, 40, 46, 65];\n var arrayKey = void 0;\n for (var i = 0; i <= array.length - 1; i++) {\n if (e.which === array[i]) {\n if (e.ctrlKey && e.which === 65) {\n return;\n }\n else if (e.which !== 65) {\n arrayKey = array[i];\n return;\n }\n }\n }\n if ((element.length >= this.maxLength && this.maxLength !== -1) && e.which !== arrayKey) {\n e.preventDefault();\n }\n }\n };\n RichTextEditor.prototype.bindEvents = function () {\n this.keyboardModule = new KeyboardEvents$1(this.inputElement, {\n keyAction: this.keyDown.bind(this), keyConfigs: __assign({}, this.formatter.keyConfig, this.keyConfig), eventName: 'keydown'\n });\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetHandler, this);\n }\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n EventHandler.add(this.inputElement, 'paste', this.onPaste, this);\n EventHandler.add(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30), this);\n EventHandler.add(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler, this);\n this.wireContextEvent();\n this.formatter.editorManager.observer.on(KEY_DOWN_HANDLER, this.editorKeyDown, this);\n this.element.ownerDocument.defaultView.addEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.add(this.inputElement, 'focusin', this.focusHandler, this);\n EventHandler.add(this.inputElement, 'focusout', this.blurHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler, this);\n EventHandler.add(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown, this);\n }\n this.wireScrollElementsEvents();\n };\n RichTextEditor.prototype.onIframeMouseDown = function (e) {\n this.isBlur = false;\n this.currentTarget = e.target;\n this.notify(iframeMouseDown, e);\n };\n RichTextEditor.prototype.editorKeyDown = function (e) {\n switch (e.event.action) {\n case 'copy':\n this.onCopy();\n break;\n case 'cut':\n this.onCut();\n break;\n case 'tab':\n if (this.iframeSettings.enable) {\n this.isBlur = true;\n }\n break;\n }\n if (e.callBack && (e.event.action === 'copy' || e.event.action === 'cut' || e.event.action === 'delete')) {\n e.callBack({\n requestType: e.event.action,\n editorMode: 'HTML',\n event: e.event\n });\n }\n };\n RichTextEditor.prototype.unWireEvents = function () {\n this.element.removeEventListener('focusin', this.onFocusHandler, true);\n this.element.removeEventListener('focusout', this.onBlurHandler, true);\n this.off(contentChanged, this.contentChanged);\n this.off(resizeInitialized, this.updateResizeFlag);\n this.off(updateTbItemsStatus, this.updateStatus);\n if (this.readonly && this.enabled) {\n return;\n }\n this.unbindEvents();\n };\n RichTextEditor.prototype.unbindEvents = function () {\n if (this.keyboardModule) {\n this.keyboardModule.destroy();\n }\n var formElement = closest(this.valueContainer, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetHandler);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n EventHandler.remove(this.inputElement, 'paste', this.onPaste);\n EventHandler.remove(this.inputElement, Browser.touchEndEvent, debounce(this.mouseUp, 30));\n EventHandler.remove(this.inputElement, Browser.touchStartEvent, this.mouseDownHandler);\n this.unWireContextEvent();\n if (this.formatter) {\n this.formatter.editorManager.observer.off(KEY_DOWN_HANDLER, this.editorKeyDown);\n }\n this.element.ownerDocument.defaultView.removeEventListener('resize', this.onResizeHandler, true);\n if (this.iframeSettings.enable) {\n EventHandler.remove(this.inputElement, 'focusin', this.focusHandler);\n EventHandler.remove(this.inputElement, 'focusout', this.blurHandler);\n EventHandler.remove(this.inputElement.ownerDocument, 'scroll', this.contentScrollHandler);\n EventHandler.remove(this.inputElement.ownerDocument, Browser.touchStartEvent, this.onIframeMouseDown);\n }\n this.unWireScrollElementsEvents();\n };\n __decorate$1([\n Complex({}, ToolbarSettings$1)\n ], RichTextEditor.prototype, \"toolbarSettings\", void 0);\n __decorate$1([\n Complex({}, QuickToolbarSettings)\n ], RichTextEditor.prototype, \"quickToolbarSettings\", void 0);\n __decorate$1([\n Complex({}, PasteCleanupSettings)\n ], RichTextEditor.prototype, \"pasteCleanupSettings\", void 0);\n __decorate$1([\n Complex({}, IFrameSettings)\n ], RichTextEditor.prototype, \"iframeSettings\", void 0);\n __decorate$1([\n Complex({}, ImageSettings)\n ], RichTextEditor.prototype, \"insertImageSettings\", void 0);\n __decorate$1([\n Complex({}, AudioSettings)\n ], RichTextEditor.prototype, \"insertAudioSettings\", void 0);\n __decorate$1([\n Complex({}, VideoSettings)\n ], RichTextEditor.prototype, \"insertVideoSettings\", void 0);\n __decorate$1([\n Complex({}, TableSettings)\n ], RichTextEditor.prototype, \"tableSettings\", void 0);\n __decorate$1([\n Property(0)\n ], RichTextEditor.prototype, \"floatingToolbarOffset\", void 0);\n __decorate$1([\n Complex({}, InlineMode)\n ], RichTextEditor.prototype, \"inlineMode\", void 0);\n __decorate$1([\n Complex({}, FileManagerSettings)\n ], RichTextEditor.prototype, \"fileManagerSettings\", void 0);\n __decorate$1([\n Property('100%')\n ], RichTextEditor.prototype, \"width\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"enablePersistence\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"enableResize\", void 0);\n __decorate$1([\n Property({})\n ], RichTextEditor.prototype, \"htmlAttributes\", void 0);\n __decorate$1([\n Property(null)\n ], RichTextEditor.prototype, \"placeholder\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"autoSaveOnIdle\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"readonly\", void 0);\n __decorate$1([\n Property(true)\n ], RichTextEditor.prototype, \"enabled\", void 0);\n __decorate$1([\n Property(true)\n ], RichTextEditor.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"enableHtmlEncode\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"enableXhtml\", void 0);\n __decorate$1([\n Property('auto')\n ], RichTextEditor.prototype, \"height\", void 0);\n __decorate$1([\n Property(null)\n ], RichTextEditor.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(null)\n ], RichTextEditor.prototype, \"value\", void 0);\n __decorate$1([\n Property('P')\n ], RichTextEditor.prototype, \"enterKey\", void 0);\n __decorate$1([\n Property('BR')\n ], RichTextEditor.prototype, \"shiftEnterKey\", void 0);\n __decorate$1([\n Property(30)\n ], RichTextEditor.prototype, \"undoRedoSteps\", void 0);\n __decorate$1([\n Property(300)\n ], RichTextEditor.prototype, \"undoRedoTimer\", void 0);\n __decorate$1([\n Property('HTML')\n ], RichTextEditor.prototype, \"editorMode\", void 0);\n __decorate$1([\n Property(null)\n ], RichTextEditor.prototype, \"keyConfig\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"showCharCount\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"enableTabKey\", void 0);\n __decorate$1([\n Property(false)\n ], RichTextEditor.prototype, \"enableAutoUrl\", void 0);\n __decorate$1([\n Property(-1)\n ], RichTextEditor.prototype, \"maxLength\", void 0);\n __decorate$1([\n Complex({}, Format)\n ], RichTextEditor.prototype, \"format\", void 0);\n __decorate$1([\n Complex({}, NumberFormatList)\n ], RichTextEditor.prototype, \"numberFormatList\", void 0);\n __decorate$1([\n Complex({}, BulletFormatList)\n ], RichTextEditor.prototype, \"bulletFormatList\", void 0);\n __decorate$1([\n Complex({}, FontFamily)\n ], RichTextEditor.prototype, \"fontFamily\", void 0);\n __decorate$1([\n Complex({}, FontSize)\n ], RichTextEditor.prototype, \"fontSize\", void 0);\n __decorate$1([\n Complex({}, FontColor)\n ], RichTextEditor.prototype, \"fontColor\", void 0);\n __decorate$1([\n Complex({}, BackgroundColor)\n ], RichTextEditor.prototype, \"backgroundColor\", void 0);\n __decorate$1([\n Property(null)\n ], RichTextEditor.prototype, \"valueTemplate\", void 0);\n __decorate$1([\n Property(10000)\n ], RichTextEditor.prototype, \"saveInterval\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"actionBegin\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"actionComplete\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogOpen\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"dialogOpen\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforeDialogClose\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"dialogClose\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforeQuickToolbarOpen\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarOpen\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"quickToolbarClose\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"toolbarStatusUpdate\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"updatedToolbarStatus\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"imageSelected\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforeImageUpload\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"imageUploading\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"imageUploadSuccess\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"imageUploadFailed\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"imageRemoving\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"afterImageDelete\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"fileSelected\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforeFileUpload\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"fileUploading\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"fileUploadSuccess\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"fileUploadFailed\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"fileRemoving\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"afterMediaDelete\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"created\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"destroyed\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"blur\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"toolbarClick\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"focus\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"change\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"resizing\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"resizeStart\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"resizeStop\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforePasteCleanup\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"afterPasteCleanup\", void 0);\n __decorate$1([\n Event()\n ], RichTextEditor.prototype, \"beforeImageDrop\", void 0);\n __decorate$1([\n Property(null)\n ], RichTextEditor.prototype, \"formatter\", void 0);\n RichTextEditor = __decorate$1([\n NotifyPropertyChanges\n ], RichTextEditor);\n return RichTextEditor;\n}(Component));\n\n/**\n * Base export\n */\n\n/**\n * Services\n */\n\n/**\n * Rich Text Editor component exported items\n */\n\n/**\n * Base export\n */\n\n/**\n * Base export\n */\n\n/**\n * Base export\n */\n\n/**\n * Base export\n */\n\n/**\n * Export all markdown plugins\n */\n\n/**\n * Base export\n */\n\n/**\n * Export the common module\n */\n\n/**\n * Rich Text Editor component exported items\n */\n\nexport { Toolbar$2 as Toolbar, KeyboardEvents$1 as KeyboardEvents, BaseToolbar, BaseQuickToolbar, QuickToolbar, Count, ColorPickerInput, MarkdownToolbarStatus, ExecCommandCallBack, ToolbarAction, MarkdownEditor, HtmlEditor, PasteCleanup, Resize, DropDownButtons, FileManager$1 as FileManager, FullScreen, setAttributes, HtmlToolbarStatus, XhtmlValidation, HTMLFormatter, Formatter, MarkdownFormatter, ContentRender, Render, ToolbarRenderer, Link, Image, Audio, Video, ViewSource, Table, DialogRenderer, IframeContentRender, MarkdownRender, PopupRenderer, RichTextEditor, RenderType, ToolbarType, DialogType, executeGroup, created, destroyed, tableclass, load, initialLoad, contentChanged, initialEnd, iframeMouseDown, destroy, toolbarClick, toolbarRefresh, refreshBegin, toolbarUpdated, bindOnEnd, renderColorPicker, htmlToolbarClick, markdownToolbarClick, destroyColorPicker, modelChanged, tableModulekeyUp, keyUp, keyDown, mouseUp, toolbarCreated, toolbarRenderComplete, enableFullScreen, disableFullScreen, dropDownSelect, beforeDropDownItemRender, execCommandCallBack, imageToolbarAction, audioToolbarAction, videoToolbarAction, linkToolbarAction, windowResize, resizeStart, onResize, resizeStop, undo, redo, insertLink, unLink, editLink, openLink, actionBegin, actionComplete, updatedToolbarStatus, actionSuccess, updateToolbarItem, insertImage, insertAudio, insertVideo, insertCompleted, imageLeft, imageRight, imageCenter, imageBreak, imageInline, imageLink, imageAlt, imageDelete, audioDelete, videoDelete, imageCaption, imageSize, videoSize, sourceCode, updateSource, toolbarOpen, beforeDropDownOpen, selectionSave, selectionRestore, expandPopupClick, count, contentFocus, contentBlur, mouseDown, sourceCodeMouseDown, editAreaClick, scroll, contentscroll, colorPickerChanged, tableColorPickerChanged, focusChange, selectAll$1 as selectAll, selectRange, getSelectedHtml, renderInlineToolbar, paste, imgModule, rtlMode, createTable, docClick, tableToolbarAction, checkUndo, readOnlyMode, moduleDestroy, pasteClean, enterHandler, beforeDialogOpen, clearDialogObj, dialogOpen, beforeDialogClose, dialogClose, beforeQuickToolbarOpen, quickToolbarOpen, quickToolbarClose, popupHide, imageSelected, imageUploading, imageUploadSuccess, imageUploadFailed, imageRemoving, fileSelected, fileUploading, fileUploadSuccess, fileUploadFailed, fileRemoving, afterImageDelete, afterMediaDelete, drop, xhtmlValidation, beforeImageUpload, beforeFileUpload, resizeInitialized, renderFileManager, beforeImageDrop, dynamicModule, beforePasteCleanup, afterPasteCleanup, updateTbItemsStatus, showLinkDialog, closeLinkDialog, showImageDialog, showAudioDialog, showVideoDialog, closeImageDialog, closeAudioDialog, closeVideoDialog, showTableDialog, closeTableDialog, bindCssClass, blockEmptyNodes, inlineEmptyNodes, CLS_RTE, CLS_RTL, CLS_CONTENT, CLS_DISABLED, CLS_SCRIPT_SHEET, CLS_STYLE_SHEET, CLS_TOOLBAR, CLS_TB_FIXED, CLS_TB_FLOAT, CLS_TB_ABS_FLOAT, CLS_INLINE, CLS_TB_INLINE, CLS_RTE_EXPAND_TB, CLS_FULL_SCREEN, CLS_QUICK_TB, CLS_POP, CLS_TB_STATIC, CLS_QUICK_POP, CLS_QUICK_DROPDOWN, CLS_IMAGE_POP, CLS_INLINE_POP, CLS_INLINE_DROPDOWN, CLS_DROPDOWN_POPUP, CLS_DROPDOWN_ICONS, CLS_DROPDOWN_ITEMS, CLS_DROPDOWN_BTN, CLS_RTE_CONTENT, CLS_TB_ITEM, CLS_TB_EXTENDED, CLS_TB_WRAP, CLS_POPUP, CLS_SEPARATOR, CLS_MINIMIZE, CLS_MAXIMIZE, CLS_BACK, CLS_SHOW, CLS_HIDE, CLS_VISIBLE, CLS_FOCUS, CLS_RM_WHITE_SPACE, CLS_IMGRIGHT, CLS_IMGLEFT, CLS_IMGCENTER, CLS_IMGBREAK, CLS_AUDIOBREAK, CLS_CLICKELEM, CLS_VID_CLICK_ELEM, CLS_AUDIOWRAP, CLS_VIDEOWRAP, CLS_VIDEOBREAK, CLS_CAPTION, CLS_RTE_CAPTION, CLS_CAPINLINE, CLS_IMGINLINE, CLS_AUDIOINLINE, CLS_VIDEOINLINE, CLS_COUNT, CLS_WARNING, CLS_ERROR, CLS_ICONS, CLS_ACTIVE, CLS_EXPAND_OPEN, CLS_RTE_ELEMENTS, CLS_TB_BTN, CLS_HR_SEPARATOR, CLS_TB_IOS_FIX, CLS_LIST_PRIMARY_CONTENT, CLS_NUMBERFORMATLIST_TB_BTN, CLS_BULLETFORMATLIST_TB_BTN, CLS_FORMATS_TB_BTN, CLS_FONT_NAME_TB_BTN, CLS_FONT_SIZE_TB_BTN, CLS_ALIGN_TB_BTN, CLS_FONT_COLOR_TARGET, CLS_BACKGROUND_COLOR_TARGET, CLS_COLOR_CONTENT, CLS_FONT_COLOR_DROPDOWN, CLS_BACKGROUND_COLOR_DROPDOWN, CLS_COLOR_PALETTE, CLS_FONT_COLOR_PICKER, CLS_BACKGROUND_COLOR_PICKER, CLS_RTE_READONLY, CLS_TABLE_SEL, CLS_TB_DASH_BOR, CLS_TB_ALT_BOR, CLS_TB_COL_RES, CLS_TB_ROW_RES, CLS_TB_BOX_RES, CLS_RTE_HIDDEN, CLS_RTE_PASTE_KEEP_FORMAT, CLS_RTE_PASTE_REMOVE_FORMAT, CLS_RTE_PASTE_PLAIN_FORMAT, CLS_RTE_PASTE_OK, CLS_RTE_PASTE_CANCEL, CLS_RTE_DIALOG_MIN_HEIGHT, CLS_RTE_RES_HANDLE, CLS_RTE_RES_EAST, CLS_RTE_IMAGE, CLS_RESIZE, CLS_IMG_FOCUS, CLS_AUD_FOCUS, CLS_VID_FOCUS, CLS_RTE_DRAG_IMAGE, CLS_RTE_UPLOAD_POPUP, CLS_POPUP_OPEN, CLS_IMG_RESIZE, CLS_DROPAREA, CLS_IMG_INNER, CLS_UPLOAD_FILES, CLS_RTE_DIALOG_UPLOAD, CLS_RTE_RES_CNT, CLS_CUSTOM_TILE, CLS_NOCOLOR_ITEM, CLS_TABLE, CLS_TABLE_BORDER, CLS_RTE_TABLE_RESIZE, CLS_RTE_FIXED_TB_EXPAND, CLS_RTE_TB_ENABLED, CLS_RTE_RES_WEST, getIndex, hasClass, getDropDownValue, isIDevice, getFormattedFontSize, pageYOffset, getTooltipText, setToolbarStatus, getCollection, getTBarItemsIndex, updateUndoRedoStatus, dispatchEvent, parseHtml, getTextNodesUnder, toObjectLowerCase, getEditValue, updateTextNode, getDefaultValue, isEditableValueEmpty, decode, sanitizeHelper, convertToBlob, getLocaleFontFormat, updateDropDownFontFormatLocale, ServiceLocator, RendererFactory, EditorManager, IMAGE, AUDIO, VIDEO, TABLE, LINK, INSERT_ROW, INSERT_COLUMN, DELETEROW, DELETECOLUMN, REMOVETABLE, TABLEHEADER, TABLE_VERTICAL_ALIGN, TABLE_MERGE, TABLE_VERTICAL_SPLIT, TABLE_HORIZONTAL_SPLIT, TABLE_MOVE, ALIGNMENT_TYPE, INDENT_TYPE, DEFAULT_TAG, BLOCK_TAGS, IGNORE_BLOCK_TAGS, TABLE_BLOCK_TAGS, SELECTION_TYPE, INSERTHTML_TYPE, INSERT_TEXT_TYPE, CLEAR_TYPE, SELF_CLOSING_TAGS, CLASS_IMAGE_RIGHT, CLASS_IMAGE_LEFT, CLASS_IMAGE_CENTER, CLASS_VIDEO_RIGHT, CLASS_VIDEO_LEFT, CLASS_VIDEO_CENTER, CLASS_IMAGE_BREAK, CLASS_AUDIO_BREAK, CLASS_VIDEO_BREAK, CLASS_CAPTION, CLASS_RTE_CAPTION, CLASS_CAPTION_INLINE, CLASS_IMAGE_INLINE, CLASS_AUDIO_INLINE, CLASS_CLICK_ELEM, CLASS_VIDEO_CLICK_ELEM, CLASS_AUDIO, CLASS_VIDEO, CLASS_AUDIO_WRAP, CLASS_VIDEO_WRAP, CLASS_EMBED_VIDEO_WRAP, CLASS_AUDIO_FOCUS, CLASS_VIDEO_FOCUS, CLASS_VIDEO_INLINE, Lists, markerClassName, DOMNode, Alignments, Indents, Formats, LinkCommand, InsertMethods, InsertTextExec, InsertHtmlExec, InsertHtml, IsFormatted, MsWordPaste, NodeCutter, ImageCommand, AudioCommand, VideoCommand, SelectionCommands, SelectionBasedExec, ClearFormatExec, UndoRedoManager, TableCommand, statusCollection, ToolbarStatus, NodeSelection, MarkdownParser, LISTS_COMMAND, selectionCommand, LINK_COMMAND, CLEAR_COMMAND, MD_TABLE, INSERT_TEXT_COMMAND, ClearFormat, MDLists, MDFormats, MarkdownSelection, UndoRedoCommands, MDSelectionFormats, MDLink, MDTable, markdownFormatTags, markdownSelectionTags, markdownListsTags, htmlKeyConfig, markdownKeyConfig, pasteCleanupGroupingTags, listConversionFilters, selfClosingTags, KEY_DOWN, ACTION, FORMAT_TYPE, KEY_DOWN_HANDLER, LIST_TYPE, KEY_UP_HANDLER, KEY_UP, MODEL_CHANGED_PLUGIN, MODEL_CHANGED, MS_WORD_CLEANUP_PLUGIN, MS_WORD_CLEANUP, ON_BEGIN, SPACE_ACTION };\n","import { Animation, ChildProperty, Collection, Complex, Component, Event, EventHandler, KeyboardEvents, NotifyPropertyChanges, Property, SanitizeHtmlHelper, addClass, attributes, classList, closest, createElement, deleteObject, detach, extend, getComponent, getInstance, getUniqueID, getValue, isNullOrUndefined, isRippleEnabled, remove, removeClass, rippleEffect, select, setValue } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 * @param {Object} props - Specifies the properties\n * @param {string[]} model - Specifies the model\n * @returns {Object} Component Model\n */\nfunction getModel(props, model) {\n var obj = extend({}, props);\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((model).indexOf(prop) < 0) {\n deleteObject(obj, prop);\n }\n }\n return obj;\n}\n/** @hidden\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {number} keyCode - Specifies the keycode\n * @returns {void}\n */\nfunction upDownKeyHandler(ul, keyCode) {\n var defaultIdx = keyCode === 40 ? 0 : ul.childElementCount - 1;\n var liIdx = defaultIdx;\n var li;\n var selectedLi = ul.querySelector('.e-selected');\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n for (var i = 0, len = ul.children.length; i < len; i++) {\n if (ul.children[i].classList.contains('e-focused')) {\n li = ul.children[i];\n liIdx = i;\n li.classList.remove('e-focused');\n if (keyCode === 40) {\n liIdx++;\n }\n else {\n liIdx--;\n }\n if (liIdx === (keyCode === 40 ? ul.childElementCount : -1)) {\n liIdx = defaultIdx;\n }\n }\n }\n li = ul.children[liIdx];\n liIdx = isValidLI(ul, li, liIdx, keyCode);\n if (liIdx !== -1) {\n addClass([ul.children[liIdx]], 'e-focused');\n ul.children[liIdx].focus();\n }\n}\n/**\n * Get Valid LI element\n *\n * @param {HTMLElement} ul - Specifies the UL element\n * @param {Element} li - Specifies the LI element\n * @param {number} index - Specifies the index\n * @param {number} keyCode - Specifies the keycode\n * @param {number} count - Specifies the count\n * @returns {number} - Index\n */\nfunction isValidLI(ul, li, index, keyCode, count) {\n if (count === void 0) { count = 0; }\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n if (index === (keyCode === 40 ? ul.childElementCount - 1 : 0)) {\n index = keyCode === 40 ? 0 : ul.childElementCount - 1;\n }\n else {\n if (keyCode === 40) {\n index++;\n }\n else {\n index--;\n }\n }\n }\n li = ul.children[index];\n if (li.classList.contains('e-separator') || li.classList.contains('e-disabled')) {\n count++;\n if (count === ul.childElementCount) {\n return index = -1;\n }\n index = isValidLI(ul, li, index, keyCode, count);\n }\n return index;\n}\n/** @hidden\n * @param {HTMLElement} popup - Specifies the popup element.\n * @returns {void}\n */\nfunction setBlankIconStyle(popup, blankIcon) {\n var blankIconList = [].slice.call(popup.getElementsByClassName('e-blank-icon'));\n if (blankIcon) {\n var menuItem = [].slice.call(popup.getElementsByClassName('e-item'));\n menuItem.forEach(function (li) {\n if (li.style.paddingLeft || li.style.paddingRight) {\n li.removeAttribute('style');\n }\n });\n }\n if (!blankIconList.length) {\n return;\n }\n var iconLi = popup.querySelector('.e-item:not(.e-blank-icon):not(.e-separator)');\n if (isNullOrUndefined(iconLi)) {\n return;\n }\n if (iconLi.classList.contains('e-url')) {\n iconLi = iconLi.querySelector('.e-menu-url');\n }\n var icon = iconLi.querySelector('.e-menu-icon');\n var cssProp;\n var enableRtl = popup.classList.contains('e-rtl');\n if (enableRtl) {\n cssProp = { padding: 'paddingRight', margin: 'marginLeft' };\n }\n else {\n cssProp = { padding: 'paddingLeft', margin: 'marginRight' };\n }\n /* eslint-disable */\n var size = parseInt(getComputedStyle(icon).fontSize, 10) + parseInt((enableRtl ? getComputedStyle(icon)[cssProp.margin] : getComputedStyle(icon)[cssProp.margin]), 10)\n + parseInt(getComputedStyle(iconLi).paddingLeft, 10) + \"px\";\n blankIconList.forEach(function (li) {\n if (li.classList.contains('e-url')) {\n li.querySelector('.e-menu-url').style[cssProp.padding] = size;\n }\n else {\n li.style[cssProp.padding] = size;\n }\n });\n /* eslint-enable */\n}\n/**\n * Defines the items of Split Button/DropDownButton.\n */\nvar Item = /** @__PURE__ @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"iconCss\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"separator\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"url\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n return Item;\n}(ChildProperty));\n\n/**\n * Common modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n 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 classNames = {\n DISABLED: 'e-disabled',\n FOCUS: 'e-focused',\n ICON: 'e-menu-icon',\n ITEM: 'e-item',\n POPUP: 'e-dropdown-popup',\n RTL: 'e-rtl',\n SEPARATOR: 'e-separator',\n VERTICAL: 'e-vertical'\n};\n/**\n * DropDownButton component is used to toggle contextual overlays for displaying list of action items.\n * It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DropDownButton = /** @__PURE__ @class */ (function (_super) {\n __extends$1(DropDownButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DropDownButtonModel} options - Specifies dropdown button model\n * @param {string|HTMLButtonElement} element - Specifies element\n * @hidden\n */\n function DropDownButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isPopupCreated = true;\n return _this;\n }\n DropDownButton.prototype.preRender = function () {\n /** */\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist data\n */\n DropDownButton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To open/close DropDownButton popup based on current state of the DropDownButton.\n *\n * @returns {void}\n */\n DropDownButton.prototype.toggle = function () {\n if (this.canOpen()) {\n this.openPopUp();\n }\n else {\n this.closePopup();\n }\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n DropDownButton.prototype.addItems = function (items, text) {\n var newItem;\n var idx = this.items.length;\n for (var j = 0, len = this.items.length; j < len; j++) {\n if (text === this.items[j].text) {\n idx = j;\n break;\n }\n }\n for (var i = items.length - 1; i >= 0; i--) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n newItem = new Item(this, 'items', items[i], true);\n this.items.splice(idx, 0, newItem);\n }\n if (!this.canOpen()) {\n this.createItems();\n }\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n DropDownButton.prototype.removeItems = function (items, isUniqueId) {\n var refresh = false;\n for (var i = 0, len = items.length; i < len; i++) {\n for (var j = 0, len_1 = this.items.length; j < len_1; j++) {\n if (items[i] === (isUniqueId ? this.items[j].id : this.items[j].text)) {\n this.items.splice(j, 1);\n refresh = true;\n break;\n }\n }\n }\n if (refresh && this.getULElement()) {\n this.createItems();\n }\n };\n DropDownButton.prototype.createPopup = function () {\n var _a;\n var div = this.createElement('div', {\n className: classNames.POPUP,\n id: this.element.id + '-popup'\n });\n document.body.appendChild(div);\n this.dropDown = new Popup(div, {\n relateTo: this.element,\n collision: { X: 'fit', Y: 'flip' },\n position: { X: 'left', Y: 'bottom' },\n targetType: 'relative',\n content: this.target ? this.getTargetElement() : '',\n enableRtl: this.enableRtl\n });\n if (this.dropDown.element.style.position === 'fixed') {\n this.dropDown.refreshPosition(this.element);\n }\n this.dropDown.hide();\n attributes(this.element, (_a = {}, _a['aria-haspopup'] = this.items.length || this.target ? 'true' : 'false', _a['aria-expanded'] = 'false', _a['type'] = 'button', _a['aria-label'] = this.element.textContent ? this.element.textContent : 'dropdownbutton', _a));\n if (this.cssClass) {\n addClass([div], this.cssClass.split(' '));\n }\n this.isPopupCreated = true;\n };\n DropDownButton.prototype.getTargetElement = function () {\n return typeof (this.target) === 'string' ? select(this.target) : this.target;\n };\n DropDownButton.prototype.createItems = function (appendItems) {\n var items = this.items;\n var showIcon = this.hasIcon(this.items, 'iconCss');\n var span;\n var item;\n var li;\n var eventArgs;\n var ul = this.getULElement();\n if (ul) {\n ul.innerHTML = '';\n }\n else {\n ul = this.createElement('ul', {\n attrs: { 'role': 'menu', 'tabindex': '0' }\n });\n }\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n var tempItem = item.text;\n li = this.createElement('li', {\n innerHTML: item.url ? '' : tempItem,\n className: item.separator ? classNames.ITEM + ' ' + classNames.SEPARATOR : classNames.ITEM,\n attrs: item.separator ? { 'role': 'separator', 'tabindex': '-1' } : { 'role': 'menuitem', 'tabindex': '-1', 'aria-label': tempItem },\n id: item.id ? item.id : getUniqueID('e-' + this.getModuleName() + '-item')\n });\n if (this.enableHtmlSanitizer) {\n li.textContent = item.url ? '' : tempItem;\n }\n else {\n li.innerHTML = item.url ? '' : tempItem;\n }\n if (item.url) {\n li.appendChild(this.createAnchor(item));\n li.classList.add('e-url');\n }\n if (item.iconCss) {\n span = this.createElement('span', { className: classNames.ICON + ' ' + item.iconCss });\n if (item.url) {\n li.childNodes[0].appendChild(span);\n }\n else {\n li.insertBefore(span, li.childNodes[0]);\n }\n }\n else {\n if (showIcon && !item.separator) {\n li.classList.add('e-blank-icon');\n }\n }\n if (item.disabled) {\n li.classList.add('e-disabled');\n }\n eventArgs = { item: item, element: li };\n this.trigger('beforeItemRender', eventArgs);\n ul.appendChild(li);\n }\n if (appendItems) {\n this.getPopUpElement().appendChild(ul);\n }\n if (showIcon) {\n setBlankIconStyle(this.getPopUpElement());\n }\n };\n DropDownButton.prototype.hasIcon = function (items, field) {\n for (var i = 0, len = items.length; i < len; i++) {\n if (items[i][\"\" + field]) {\n return true;\n }\n }\n return false;\n };\n DropDownButton.prototype.createAnchor = function (item) {\n var tempItem = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(item.text) : item.text;\n return this.createElement('a', { className: 'e-menu-text e-menu-url', innerHTML: tempItem, attrs: { 'href': item.url } });\n };\n DropDownButton.prototype.initialize = function () {\n this.button = new Button({\n iconCss: this.iconCss, iconPosition: this.iconPosition, cssClass: this.cssClass, content: this.content,\n disabled: this.disabled, enableRtl: this.enableRtl, enablePersistence: this.enablePersistence\n });\n this.button.createElement = this.createElement;\n this.button.appendTo(this.element);\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.appendArrowSpan();\n this.setActiveElem([this.element]);\n if ((this.target && !this.isColorPicker()) || !this.createPopupOnClick) {\n this.createPopup();\n }\n else {\n this.isPopupCreated = false;\n }\n };\n DropDownButton.prototype.isColorPicker = function () {\n if (!this.element) {\n return false;\n }\n var prevElem = this.element.previousSibling;\n if (prevElem && prevElem.classList && prevElem.classList.contains('e-split-colorpicker')) {\n return true;\n }\n return false;\n };\n DropDownButton.prototype.appendArrowSpan = function () {\n this.element.appendChild(this.createElement('span', {\n className: 'e-btn-icon e-icons ' + 'e-icon-' + (this.cssClass.indexOf(classNames.VERTICAL) > -1\n ? 'bottom' : 'right') + ' e-caret'\n }));\n };\n DropDownButton.prototype.setActiveElem = function (elem) {\n this.activeElem = elem;\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n DropDownButton.prototype.getModuleName = function () {\n return 'dropdown-btn';\n };\n DropDownButton.prototype.canOpen = function () {\n var val = false;\n if (this.isPopupCreated) {\n val = this.getPopUpElement().classList.contains('e-popup-close');\n }\n return val;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n DropDownButton.prototype.destroy = function () {\n var _this = this;\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'dropdown-btn') {\n var classList_1;\n if (this.element.querySelector('span.e-caret')) {\n detach(this.element.querySelector('span.e-caret'));\n }\n if (this.cssClass) {\n classList_1 = this.cssClass.split(' ');\n }\n this.button.destroy();\n if (classList_1) {\n removeClass([this.element], classList_1);\n }\n removeClass(this.activeElem, ['e-active']);\n var attrList = this.element.getAttribute('class') ? ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type']\n : ['aria-haspopup', 'aria-expanded', 'aria-owns', 'type', 'class'];\n attrList.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.popupUnWireEvents();\n this.destroyPopup();\n this.isPopupCreated = false;\n if (!this.disabled) {\n this.unWireEvents();\n }\n }\n };\n DropDownButton.prototype.destroyPopup = function () {\n if (this.isPopupCreated) {\n this.dropDown.destroy();\n if (this.getPopUpElement()) {\n var popupEle = document.getElementById(this.getPopUpElement().id);\n if (popupEle) {\n removeClass([popupEle], ['e-popup-open', 'e-popup-close']);\n detach(popupEle);\n }\n }\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n this.dropDown = undefined;\n }\n }\n this.isPopupCreated = false;\n };\n DropDownButton.prototype.getPopUpElement = function () {\n var val = null;\n if (this.dropDown) {\n val = this.dropDown.element;\n }\n return val;\n };\n DropDownButton.prototype.getULElement = function () {\n var val = null;\n if (this.getPopUpElement()) {\n val = this.getPopUpElement().children[0];\n }\n return val;\n };\n DropDownButton.prototype.wireEvents = function () {\n this.delegateMousedownHandler = this.mousedownHandler.bind(this);\n if (!this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyBoardHandler, this);\n };\n DropDownButton.prototype.popupWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.add(document, 'mousedown touchstart', this.delegateMousedownHandler, this);\n }\n if (popupElement) {\n EventHandler.add(popupElement, 'click', this.clickHandler, this);\n EventHandler.add(popupElement, 'keydown', this.keyBoardHandler, this);\n if (this.closeActionEvents) {\n EventHandler.add(popupElement, this.closeActionEvents, this.focusoutHandler, this);\n }\n }\n this.rippleFn = rippleEffect(popupElement, { selector: '.' + classNames.ITEM });\n };\n DropDownButton.prototype.popupUnWireEvents = function () {\n var popupElement = this.getPopUpElement();\n if (this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n if (popupElement && popupElement.parentElement) {\n EventHandler.remove(popupElement, 'click', this.clickHandler);\n EventHandler.remove(popupElement, 'keydown', this.keyBoardHandler);\n if (this.closeActionEvents) {\n EventHandler.remove(popupElement, this.closeActionEvents, this.focusoutHandler);\n }\n }\n if (isRippleEnabled && this.rippleFn) {\n this.rippleFn();\n }\n };\n /**\n * Handles the keyboard interactions.\n *\n * @param {KeyboardEventArgs} e - Specifies keyboard event args.\n * @returns {void}\n * @hidden\n */\n DropDownButton.prototype.keyBoardHandler = function (e) {\n if (e.target === this.element && (e.keyCode === 9 || (!e.altKey && e.keyCode === 40) || e.keyCode === 38)) {\n return;\n }\n switch (e.keyCode) {\n case 38:\n case 40:\n if (e.altKey && (e.keyCode === 38 || e.keyCode === 40)) {\n this.keyEventHandler(e);\n }\n else {\n this.upDownKeyHandler(e);\n }\n break;\n case 9:\n case 13:\n case 27:\n case 32:\n this.keyEventHandler(e);\n break;\n }\n };\n DropDownButton.prototype.upDownKeyHandler = function (e) {\n if (this.target && (e.keyCode === 38 || e.keyCode === 40)) {\n return;\n }\n e.preventDefault();\n upDownKeyHandler(this.getULElement(), e.keyCode);\n };\n DropDownButton.prototype.keyEventHandler = function (e) {\n if (this.target && (e.keyCode === 13 || e.keyCode === 9)) {\n return;\n }\n if (e.target && e.target.className.indexOf('e-edit-template') > -1 && e.keyCode === 32) {\n return;\n }\n if (e.keyCode !== 9) {\n e.preventDefault();\n }\n if (e.keyCode === 27 || e.keyCode === 38 || e.keyCode === 9) {\n if (!this.canOpen()) {\n this.closePopup(e, this.element);\n }\n }\n else {\n this.clickHandler(e);\n }\n };\n DropDownButton.prototype.getLI = function (elem) {\n return elem.tagName === 'LI' ? elem : closest(elem, 'li');\n };\n DropDownButton.prototype.mousedownHandler = function (e) {\n var trgt = e.target;\n if (this.dropDown && !this.canOpen() && !(closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')\n || closest(trgt, '[id=\"' + this.element.id + '\"]'))) {\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.focusoutHandler = function (e) {\n if (this.isPopupCreated && !this.canOpen()) {\n var liTarget = e.relatedTarget;\n if (liTarget && liTarget.className.indexOf('e-item') > -1) {\n var li = this.getLI(liTarget);\n if (li) {\n var liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n var item = this.items[liIdx];\n if (item) {\n var selectEventArgs = { element: li, item: item };\n this.trigger('select', selectEventArgs);\n }\n }\n }\n this.closePopup(e);\n }\n };\n DropDownButton.prototype.clickHandler = function (e) {\n var trgt = e.target;\n if (closest(trgt, '[id=\"' + this.element.id + '\"]')) {\n if (!this.createPopupOnClick || (this.target && !this.isColorPicker())) {\n if (this.getPopUpElement().classList.contains('e-popup-close')) {\n this.openPopUp(e);\n }\n else {\n this.closePopup(e);\n }\n }\n else if (this.isPopupCreated) {\n this.closePopup(e, this.activeElem[0]);\n }\n else {\n this.createPopup();\n this.openPopUp(e);\n }\n }\n else {\n if (closest(trgt, '[id=\"' + this.getPopUpElement().id + '\"]')) {\n var eventArgs = void 0;\n var liIdx = void 0;\n var item = void 0;\n var li = this.getLI(trgt);\n if (li) {\n liIdx = Array.prototype.indexOf.call(this.getULElement().children, li);\n item = this.items[liIdx];\n if (item) {\n eventArgs = { element: li, item: item };\n this.trigger('select', eventArgs);\n }\n this.closePopup(e, this.activeElem[0]);\n }\n }\n }\n };\n DropDownButton.prototype.openPopUp = function (e) {\n var _this = this;\n if (e === void 0) { e = null; }\n var popupElem = this.getPopUpElement();\n if (!this.target) {\n this.createItems(true);\n }\n else {\n if (this.activeElem.length > 1) {\n var splitButton = getComponent(this.activeElem[0], 'split-btn');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (splitButton.isReact && popupElem.childNodes.length < 1) {\n splitButton.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact && popupElem.childNodes.length < 1) {\n this.appendReactElement(this.getTargetElement(), this.getPopUpElement());\n this.renderReactTemplates();\n }\n }\n }\n var ul = this.getULElement();\n this.popupWireEvents();\n var beforeOpenArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeOpen', beforeOpenArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var ul_1 = _this.getULElement();\n _this.dropDown.show(null, _this.element);\n addClass([_this.element], 'e-active');\n _this.element.setAttribute('aria-expanded', 'true');\n _this.element.setAttribute('aria-owns', _this.getPopUpElement().id);\n if (ul_1) {\n ul_1.focus();\n }\n var openArgs = { element: ul_1, items: _this.items };\n _this.trigger('open', openArgs);\n }\n });\n };\n DropDownButton.prototype.closePopup = function (e, focusEle) {\n var _this = this;\n if (e === void 0) { e = null; }\n var ul = this.getULElement();\n var beforeCloseArgs = { element: ul, items: this.items, event: e, cancel: false };\n this.trigger('beforeClose', beforeCloseArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var popupElement = _this.getPopUpElement();\n if (popupElement) {\n EventHandler.remove(popupElement, 'keydown', _this.keyBoardHandler);\n }\n _this.popupUnWireEvents();\n var ul_2 = _this.getULElement();\n var selectedLi = void 0;\n if (ul_2) {\n selectedLi = ul_2.querySelector('.e-selected');\n }\n if (selectedLi) {\n selectedLi.classList.remove('e-selected');\n }\n _this.dropDown.hide();\n removeClass(_this.activeElem, 'e-active');\n _this.element.setAttribute('aria-expanded', 'false');\n _this.element.removeAttribute('aria-owns');\n if (focusEle) {\n focusEle.focus();\n }\n var closeArgs = { element: ul_2, items: _this.items };\n _this.trigger('close', closeArgs);\n if (!_this.target && ul_2) {\n detach(ul_2);\n }\n if (!_this.target || _this.isColorPicker()) {\n if (_this.createPopupOnClick) {\n _this.destroyPopup();\n }\n }\n if (_this.target) {\n _this.isPopupCreated = _this.createPopupOnClick ? false : true;\n }\n }\n else {\n if (ul) {\n ul.focus();\n }\n }\n });\n };\n DropDownButton.prototype.unWireEvents = function () {\n if (!this.createPopupOnClick) {\n EventHandler.remove(document, 'mousedown touchstart', this.delegateMousedownHandler);\n }\n EventHandler.remove(this.element, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keydown', this.keyBoardHandler);\n if (this.isPopupCreated) {\n EventHandler.remove(this.getPopUpElement(), 'click', this.clickHandler);\n EventHandler.remove(this.getPopUpElement(), 'keydown', this.keyBoardHandler);\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DropDownButtonModel} newProp - Specifies new properties\n * @param {DropDownButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n DropDownButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var btnModel = ['content', 'cssClass', 'iconCss', 'iconPosition', 'disabled', 'enableRtl'];\n this.button.setProperties(getModel(newProp, btnModel));\n var popupElement;\n if (this.isPopupCreated) {\n popupElement = this.getPopUpElement();\n this.dropDown.setProperties(getModel(newProp, ['enableRtl']));\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.unWireEvents();\n if (this.isPopupCreated && !this.canOpen()) {\n this.closePopup();\n }\n }\n else {\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (newProp.cssClass.indexOf(classNames.VERTICAL) > -1 || oldProp.cssClass.indexOf(classNames.VERTICAL) > -1) {\n if (!this.element.querySelector('span.e-caret')) {\n this.appendArrowSpan();\n }\n var arrowSpan = this.element.querySelector('span.e-caret');\n newProp.cssClass.indexOf(classNames.VERTICAL) > -1 ? classList(arrowSpan, ['e-icon-bottom'], ['e-icon-right'])\n : classList(arrowSpan, ['e-icon-right'], ['e-icon-bottom']);\n }\n if (this.isPopupCreated) {\n if (oldProp.cssClass) {\n removeClass([popupElement], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([popupElement], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'target':\n this.dropDown.content = this.getTargetElement();\n this.dropDown.dataBind();\n break;\n case 'items':\n if (this.isPopupCreated && this.getULElement()) {\n this.createItems();\n }\n break;\n case 'createPopupOnClick':\n if (newProp.createPopupOnClick) {\n this.destroyPopup();\n }\n else {\n this.createPopup();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to DropDownButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n DropDownButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"content\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"cssClass\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownButton.prototype, \"disabled\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"iconCss\", void 0);\n __decorate$1([\n Property('Left')\n ], DropDownButton.prototype, \"iconPosition\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$1([\n Collection([], Item)\n ], DropDownButton.prototype, \"items\", void 0);\n __decorate$1([\n Property(false)\n ], DropDownButton.prototype, \"createPopupOnClick\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"target\", void 0);\n __decorate$1([\n Property('')\n ], DropDownButton.prototype, \"closeActionEvents\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"beforeItemRender\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"beforeOpen\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"beforeClose\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"close\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"open\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"select\", void 0);\n __decorate$1([\n Event()\n ], DropDownButton.prototype, \"created\", void 0);\n DropDownButton = __decorate$1([\n NotifyPropertyChanges\n ], DropDownButton);\n return DropDownButton;\n}(Component));\n\n/**\n * DropDownButton modules\n */\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nvar RTL = 'e-rtl';\nvar TAGNAME = 'EJS-SPLITBUTTON';\n/**\n * SplitButton component has primary and secondary button. Primary button is used to select\n * default action and secondary button is used to toggle contextual overlays for displaying list of\n * action items. It can contain both text and images.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar SplitButton = /** @__PURE__ @class */ (function (_super) {\n __extends$2(SplitButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {SplitButtonModel} options - Specifies the splitbutton model\n * @param {string|HTMLButtonElement} element - Specifies the element\n * @hidden\n */\n function SplitButton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize Angular support.\n *\n * @private\n * @returns {void}\n */\n SplitButton.prototype.preRender = function () {\n var ele = this.element;\n if (ele.tagName === TAGNAME) {\n var ejInstance = getValue('ej2_instances', ele);\n var btn = this.createElement('button', { attrs: { 'type': 'button' } });\n var wrapper = this.createElement(TAGNAME, { className: 'e-' + this.getModuleName() + '-wrapper' });\n for (var idx = 0, len = ele.attributes.length; idx < len; idx++) {\n btn.setAttribute(ele.attributes[idx].nodeName, ele.attributes[idx].nodeValue);\n }\n ele.parentNode.insertBefore(wrapper, ele);\n detach(ele);\n ele = btn;\n wrapper.appendChild(ele);\n setValue('ej2_instances', ejInstance, ele);\n this.wrapper = wrapper;\n this.element = ele;\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the Component rendering.\n *\n * @returns {void}\n * @private\n */\n SplitButton.prototype.render = function () {\n this.initWrapper();\n this.createPrimaryButton();\n this.renderControl();\n };\n SplitButton.prototype.renderControl = function () {\n this.createSecondaryButton();\n this.setActiveElem([this.element, this.secondaryBtnObj.element]);\n this.setAria();\n this.wireEvents();\n this.renderComplete();\n };\n /**\n * Adds a new item to the menu. By default, new item appends to the list as the last item,\n * but you can insert based on the text parameter.\n *\n * @param { ItemModel[] } items - Specifies an array of JSON data.\n * @param { string } text - Specifies the text to insert the newly added item in the menu.\n * @returns {void}.\n */\n SplitButton.prototype.addItems = function (items, text) {\n _super.prototype.addItems.call(this, items, text);\n this.secondaryBtnObj.items = this.items;\n };\n /**\n * Removes the items from the menu.\n *\n * @param { string[] } items - Specifies an array of string to remove the items.\n * @param { string } isUniqueId - Set `true` if specified items is a collection of unique id.\n * @returns {void}.\n */\n SplitButton.prototype.removeItems = function (items, isUniqueId) {\n _super.prototype.removeItems.call(this, items, isUniqueId);\n this.secondaryBtnObj.items = this.items;\n };\n SplitButton.prototype.initWrapper = function () {\n if (!this.wrapper) {\n this.wrapper = this.createElement('div', { className: 'e-' + this.getModuleName() + '-wrapper' });\n this.element.parentNode.insertBefore(this.wrapper, this.element);\n }\n this.element.classList.remove('e-' + this.getModuleName());\n if (this.enableRtl) {\n this.wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([this.wrapper], this.cssClass.split(' '));\n }\n };\n SplitButton.prototype.createPrimaryButton = function () {\n var btnModel = {\n cssClass: this.cssClass,\n enableRtl: this.enableRtl,\n iconCss: this.iconCss,\n iconPosition: this.iconPosition,\n content: this.content,\n disabled: this.disabled\n };\n this.primaryBtnObj = new Button(btnModel);\n this.primaryBtnObj.createElement = this.createElement;\n this.primaryBtnObj.appendTo(this.element);\n this.element.classList.add('e-' + this.getModuleName());\n this.element.type = 'button';\n this.wrapper.appendChild(this.element);\n };\n SplitButton.prototype.createSecondaryButton = function () {\n var _this = this;\n var btnElem = this.createElement('button', {\n className: 'e-icon-btn',\n attrs: { 'tabindex': '-1' },\n id: this.element.id + '_dropdownbtn'\n });\n this.wrapper.appendChild(btnElem);\n var dropDownBtnModel = {\n cssClass: this.cssClass,\n disabled: this.disabled,\n enableRtl: this.enableRtl,\n items: this.items,\n target: this.target,\n createPopupOnClick: this.createPopupOnClick\n };\n dropDownBtnModel.beforeItemRender = function (args) {\n if (_this.createPopupOnClick) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n _this.trigger('beforeItemRender', args);\n };\n dropDownBtnModel.open = function (args) {\n _this.trigger('open', args);\n };\n dropDownBtnModel.close = function (args) {\n _this.trigger('close', args);\n };\n dropDownBtnModel.select = function (args) {\n _this.trigger('select', args);\n };\n dropDownBtnModel.beforeOpen = function (args) {\n if (_this.createPopupOnClick && _this.items.length == 0) {\n _this.secondaryBtnObj.dropDown.relateTo = _this.wrapper;\n _this.dropDown = _this.secondaryBtnObj.dropDown;\n }\n var callBackPromise = new Deferred();\n _this.trigger('beforeOpen', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n dropDownBtnModel.beforeClose = function (args) {\n var callBackPromise = new Deferred();\n _this.trigger('beforeClose', args, function (observedArgs) {\n callBackPromise.resolve(observedArgs);\n });\n return callBackPromise;\n };\n this.secondaryBtnObj = new DropDownButton(dropDownBtnModel);\n this.secondaryBtnObj.createElement = this.createElement;\n this.secondaryBtnObj.appendTo(btnElem);\n if (!this.createPopupOnClick) {\n this.secondaryBtnObj.dropDown.relateTo = this.wrapper;\n this.dropDown = this.secondaryBtnObj.dropDown;\n }\n this.secondaryBtnObj.activeElem = [this.element, this.secondaryBtnObj.element];\n this.secondaryBtnObj.element.querySelector('.e-btn-icon').classList.remove('e-icon-right');\n };\n SplitButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-expanded': 'false', 'aria-haspopup': 'true',\n 'aria-label': this.element.textContent + ' splitbutton', 'aria-owns': this.element.id + '_dropdownbtn-popup'\n });\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n SplitButton.prototype.getModuleName = function () {\n return 'split-btn';\n };\n /**\n * To open/close SplitButton popup based on current state of the SplitButton.\n *\n * @returns {void}\n */\n SplitButton.prototype.toggle = function () {\n this.secondaryBtnObj.toggle();\n };\n SplitButton.prototype.destroy = function () {\n var _this = this;\n var classList$$1 = [RTL];\n if (this.cssClass) {\n classList$$1 = classList$$1.concat(this.cssClass.split(' '));\n }\n if (this.element) {\n var element = document.getElementById(this.element.id);\n if (element && element.parentElement === this.wrapper) {\n if (this.wrapper.tagName === TAGNAME) {\n this.wrapper.innerHTML = '';\n removeClass([this.wrapper], ['e-rtl', 'e-' + this.getModuleName() + '-wrapper']);\n removeClass([this.wrapper], this.cssClass.split(' '));\n }\n else {\n removeClass([this.element], classList$$1);\n ['aria-label', 'aria-haspopup', 'aria-expanded', 'aria-owns', 'type'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n this.wrapper.parentNode.insertBefore(this.element, this.wrapper);\n remove(this.wrapper);\n }\n this.unWireEvents();\n }\n }\n this.primaryBtnObj.destroy();\n this.secondaryBtnObj.destroy();\n _super.prototype.destroy.call(this);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n };\n SplitButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.primaryBtnClickHandler, this);\n new KeyboardEvents(this.element, {\n keyAction: this.btnKeyBoardHandler.bind(this),\n keyConfigs: {\n altdownarrow: 'alt+downarrow'\n }\n });\n };\n SplitButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.primaryBtnClickHandler);\n getInstance(this.element, KeyboardEvents).destroy();\n };\n SplitButton.prototype.primaryBtnClickHandler = function () {\n this.trigger('click', { element: this.element });\n };\n SplitButton.prototype.btnKeyBoardHandler = function (e) {\n switch (e.action) {\n case 'altdownarrow':\n this.clickHandler(e);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {SplitButtonModel} newProp - Specifies new properties\n * @param {SplitButtonModel} oldProp - Specifies old properties\n * @returns {void}\n */\n SplitButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var model = ['content', 'iconCss', 'iconPosition', 'cssClass', 'disabled', 'enableRtl'];\n this.primaryBtnObj.setProperties(getModel(newProp, model));\n model = ['beforeOpen', 'beforeItemRender', 'select', 'open',\n 'close', 'cssClass', 'disabled', 'enableRtl', 'createPopupOnClick'];\n if (Object.keys(newProp).indexOf('items') > -1) {\n this.secondaryBtnObj.items = newProp.items;\n this.secondaryBtnObj.dataBind();\n }\n this.secondaryBtnObj.setProperties(getModel(newProp, model));\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.wrapper], oldProp.cssClass.split(' '));\n }\n addClass([this.wrapper], newProp.cssClass.split(' '));\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n addClass([this.wrapper], RTL);\n }\n else {\n removeClass([this.wrapper], RTL);\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to SplitButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n SplitButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate$2([\n Property('')\n ], SplitButton.prototype, \"content\", void 0);\n __decorate$2([\n Property('')\n ], SplitButton.prototype, \"cssClass\", void 0);\n __decorate$2([\n Property(false)\n ], SplitButton.prototype, \"disabled\", void 0);\n __decorate$2([\n Property('')\n ], SplitButton.prototype, \"iconCss\", void 0);\n __decorate$2([\n Property('Left')\n ], SplitButton.prototype, \"iconPosition\", void 0);\n __decorate$2([\n Property(false)\n ], SplitButton.prototype, \"createPopupOnClick\", void 0);\n __decorate$2([\n Collection([], Item)\n ], SplitButton.prototype, \"items\", void 0);\n __decorate$2([\n Property('')\n ], SplitButton.prototype, \"target\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"beforeItemRender\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"beforeOpen\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"beforeClose\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"click\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"close\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"open\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"select\", void 0);\n __decorate$2([\n Event()\n ], SplitButton.prototype, \"created\", void 0);\n SplitButton = __decorate$2([\n NotifyPropertyChanges\n ], SplitButton);\n return SplitButton;\n}(DropDownButton));\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @__PURE__ @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n }\n return Deferred;\n}());\n\n/**\n * Split Button modules\n */\n\n/**\n * Initialize ButtonGroup CSS component with specified properties.\n * ```html\n *
    \n * \n * \n * \n *
    \n * ```\n * ```typescript\n * createButtonGroup('#buttongroup', {\n * cssClass: 'e-outline',\n * buttons: [\n * { content: 'Day' },\n * { content: 'Week' },\n * { content: 'Work Week'}\n * ]\n * });\n * ```\n *\n * @param {string} selector\n * @param {CreateButtonGroupModel} options\n * @returns HTMLElement\n */\n/**\n * Creates button group.\n *\n * @param {string} selector - Specifies the selector.\n * @param {CreateButtonGroupModel} options - Specifies the button group model.\n * @param {Function} createElement - Specifies the element.\n * @returns {HTMLElement} - Button group element.\n */\nfunction createButtonGroup(selector, options, createElement$$1) {\n if (options === void 0) { options = {}; }\n var child;\n var btnElem;\n var nextChild;\n var btnModel;\n if (isNullOrUndefined(createElement$$1)) {\n createElement$$1 = createElement;\n }\n var wrapper = document.querySelector(selector);\n addClass([wrapper], ['e-btn-group', 'e-css']);\n wrapper.setAttribute('role', 'group');\n var childs = wrapper.children;\n options.buttons = options.buttons || [];\n for (var i = 0, j = 0; j < childs.length; i++, j++) {\n child = childs[j];\n btnModel = options.buttons[i];\n if (btnModel !== null) {\n if (child.tagName === 'BUTTON') {\n btnElem = child;\n }\n else {\n btnElem = createElement$$1('label');\n nextChild = childs[j + 1];\n if (nextChild) {\n wrapper.insertBefore(btnElem, nextChild);\n }\n else {\n wrapper.appendChild(btnElem);\n }\n if (child.id) {\n btnElem.setAttribute('for', child.id);\n }\n if (btnModel && btnModel.disabled) {\n child.disabled = true;\n }\n j++;\n }\n if (options.cssClass && btnModel && !btnModel.cssClass) {\n btnModel.cssClass = options.cssClass;\n }\n new Button(btnModel || {}, btnElem);\n }\n }\n return wrapper;\n}\n\n/**\n * ButtonGroup modules\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 (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\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 HIDESPINNER = 'e-hide-spinner';\nvar PROGRESS = 'e-progress';\nvar PROGRESSACTIVE = 'e-progress-active';\nvar CONTENTCLS = 'e-btn-content';\n/**\n * Defines the spin settings.\n */\nvar SpinSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$3(SpinSettings, _super);\n function SpinSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property(null)\n ], SpinSettings.prototype, \"template\", void 0);\n __decorate$3([\n Property(16)\n ], SpinSettings.prototype, \"width\", void 0);\n __decorate$3([\n Property('Left')\n ], SpinSettings.prototype, \"position\", void 0);\n return SpinSettings;\n}(ChildProperty));\n/**\n * Defines the animation settings.\n */\nvar AnimationSettings = /** @__PURE__ @class */ (function (_super) {\n __extends$3(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate$3([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate$3([\n Property('None')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate$3([\n Property('ease')\n ], AnimationSettings.prototype, \"easing\", void 0);\n return AnimationSettings;\n}(ChildProperty));\n/**\n * The ProgressButton visualizes the progression of an operation to indicate the user\n * that a process is happening in the background with visual representation.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar ProgressButton = /** @__PURE__ @class */ (function (_super) {\n __extends$3(ProgressButton, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {ProgressButtonModel} options - Specifies progress button model\n * @param {string|HTMLButtonElement} element - Specifies element\n */\n function ProgressButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.step = 1;\n return _this;\n }\n ProgressButton.prototype.preRender = function () {\n _super.prototype.preRender.call(this);\n };\n /**\n * Initialize the Component rendering\n *\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.render = function () {\n _super.prototype.render.call(this);\n this.init();\n this.wireEvents();\n this.setAria();\n this.renderComplete();\n };\n /**\n * Starts the button progress at the specified percent.\n *\n * @param {number} percent - Starts the button progress at this percent.\n * @returns {void}\n */\n ProgressButton.prototype.start = function (percent) {\n this.isPaused = false;\n this.startProgress(percent ? percent : this.percent, this.progressTime);\n };\n /**\n * Stops the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.stop = function () {\n this.isPaused = true;\n cancelAnimationFrame(this.timerId);\n };\n /**\n * Complete the button progress.\n *\n * @returns {void}\n */\n ProgressButton.prototype.progressComplete = function () {\n this.isPaused = false;\n this.finishProgress();\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module Name\n * @private\n */\n ProgressButton.prototype.getModuleName = function () {\n return 'progress-btn';\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n ProgressButton.prototype.destroy = function () {\n var _this = this;\n var classList$$1 = [HIDESPINNER, PROGRESSACTIVE, 'e-round-corner', 'e-' + _super.prototype.getModuleName.call(this),\n 'e-spin-' + this.spinSettings.position.toLowerCase()];\n _super.prototype.destroy.call(this);\n this.unWireEvents();\n this.element.innerHTML = '';\n if (this.cssClass) {\n classList$$1 = classList$$1.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], classList$$1);\n var css = this.element.getAttribute('class') ? ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow']\n : ['aria-label', 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'class'];\n css.forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n };\n ProgressButton.prototype.init = function () {\n this.element.classList.add('e-' + _super.prototype.getModuleName.call(this));\n this.setContent();\n this.createSpinner();\n if (this.enableProgress) {\n this.createProgress();\n }\n };\n ProgressButton.prototype.createSpinner = function () {\n var spinner = this.createElement('span', { className: 'e-spinner' });\n this.setSpinPosition(spinner);\n createSpinner({\n target: spinner, width: this.spinSettings.width || 16, template: this.spinSettings.template\n }, this.createElement);\n };\n ProgressButton.prototype.getSpinner = function () {\n return this.element.getElementsByClassName('e-spinner')[0];\n };\n ProgressButton.prototype.getProgress = function () {\n return this.element.getElementsByClassName(PROGRESS)[0];\n };\n ProgressButton.prototype.setSpinPosition = function (ele) {\n var position = this.spinSettings.position || 'Left';\n if (position === 'Left' || position === 'Top') {\n this.element.insertBefore(ele, this.element.getElementsByClassName(CONTENTCLS)[0]);\n }\n else {\n this.element.appendChild(ele);\n }\n this.element.classList.add('e-spin-' + position.toLowerCase());\n };\n ProgressButton.prototype.createProgress = function () {\n this.element.appendChild(this.createElement('span', { className: PROGRESS }));\n };\n ProgressButton.prototype.setContent = function () {\n var cont;\n cont = this.element.innerHTML;\n if (this.enableHtmlSanitizer) {\n cont = SanitizeHtmlHelper.sanitize(this.element.innerHTML);\n }\n this.element.innerHTML = '';\n this.element.appendChild(this.createElement('span', { className: CONTENTCLS, innerHTML: cont }));\n };\n ProgressButton.prototype.setContentIcon = function (content) {\n var contElem = this.createElement('span', { className: CONTENTCLS, innerHTML: content });\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add('e-icon-btn');\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = contElem.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n contElem.insertBefore(span, node);\n }\n else {\n contElem.appendChild(span);\n }\n }\n this.element.appendChild(contElem);\n };\n ProgressButton.prototype.clickHandler = function () {\n if (this.element.classList.contains(PROGRESSACTIVE)) {\n return;\n }\n this.startProgress();\n };\n ProgressButton.prototype.startProgress = function (percent, progressTime) {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n if (!(clsList.contains(HIDESPINNER))) {\n showSpinner(this.element);\n }\n this.startAnimate(Date.now(), progressTime ? progressTime : 0, progressTime ? Date.now() - (this.duration * 1 / 100) : Date.now(), percent ? percent : 0, 0, this.step, 0, isVertical);\n this.startContAnimate();\n };\n ProgressButton.prototype.startAnimate = function (timestamp, progressTime, prevTime, percent, prevPercent, step, prevProgressTime, isVertical) {\n var _this = this;\n try {\n var timeDiff = timestamp - prevTime;\n var stepTime = this.duration * step / 100;\n var timeDiffBuffer_1 = timeDiff ? (timeDiff < stepTime ? timeDiff - stepTime : timeDiff % stepTime) : 0;\n this.progressTime = progressTime = progressTime + timeDiff - timeDiffBuffer_1;\n prevTime = timestamp - timeDiffBuffer_1;\n percent = percent + (timeDiff - timeDiffBuffer_1) / this.duration * 100;\n prevPercent = ((progressTime - prevProgressTime) % stepTime === 0 || percent === 100) ? percent : prevPercent;\n var args = { percent: prevPercent, currentDuration: progressTime, step: step };\n this.eIsVertical = isVertical;\n if (percent === 0) {\n this.trigger('begin', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else if (percent === 100 || progressTime === this.duration) {\n this.trigger('end', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n else {\n this.trigger('progress', args, function (observedArgs) {\n _this.successCallback(observedArgs, percent, prevPercent, progressTime, prevProgressTime, timeDiffBuffer_1, prevTime);\n });\n }\n }\n catch (e) {\n cancelAnimationFrame(this.timerId);\n this.trigger('fail', e);\n }\n };\n ProgressButton.prototype.successCallback = function (args, perc, pPerc, prgTim, pPrgTim, timDif, pTim) {\n var _this = this;\n var percent = perc;\n var prevPercent = pPerc;\n var timeDiffBuffer = timDif;\n var progressTime = prgTim;\n var prevProgressTime = pPrgTim;\n var prevTime = pTim;\n var isVertical = this.eIsVertical;\n if (percent !== args.percent && args.percent !== prevPercent) {\n percent = args.percent;\n }\n this.percent = percent;\n this.step = args.step;\n if ((progressTime - prevProgressTime) % (this.duration * args.step / 100) === 0 || percent === 100) {\n this.timerId = requestAnimationFrame(function () {\n if (_this.enableProgress) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = percent + '%';\n }\n _this.element.setAttribute('aria-valuenow', percent.toString());\n });\n prevPercent = percent;\n prevProgressTime = progressTime;\n }\n if (!this.isPaused) {\n if (progressTime < this.duration && percent < 100) {\n this.interval = window.setTimeout(function () {\n _this.startAnimate(Date.now(), progressTime, prevTime, percent, prevPercent, args.step, prevProgressTime, isVertical);\n }, (this.duration / 100) - timeDiffBuffer);\n }\n else {\n this.interval = window.setTimeout(function () {\n _this.progressTime = _this.percent = 0;\n if (_this.enableProgress) {\n _this.getProgress().style[isVertical ? 'height' : 'width'] = '0%';\n }\n _this.element.setAttribute('aria-valuenow', '0');\n _this.hideSpin();\n }, 100);\n }\n }\n };\n ProgressButton.prototype.startContAnimate = function () {\n var _this = this;\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (this.animationSettings.effect !== 'None') {\n (new Animation({})).animate(ele, {\n duration: this.animationSettings.duration,\n name: 'Progress' + this.animationSettings.effect,\n timingFunction: this.animationSettings.easing,\n begin: function () {\n if (_this.spinSettings.position === 'Center') {\n _this.setSpinnerSize();\n }\n },\n end: function () {\n ele.classList.add('e-animate-end');\n }\n });\n }\n else if (this.spinSettings.position === 'Center') {\n this.setSpinnerSize();\n }\n };\n ProgressButton.prototype.finishProgress = function () {\n var clsList = this.element.classList;\n var isVertical = clsList.contains('e-vertical');\n clsList.add(PROGRESSACTIVE);\n var count = 100;\n for (var i = this.percent; i < count; i++) {\n i += 10;\n if (i > 100) {\n i = 100;\n }\n if (this.enableProgress) {\n this.getProgress().style[isVertical ? 'height' : 'width'] = (this.percent < 100) ? (i + '%') : '100%';\n }\n }\n this.element.setAttribute('aria-valuenow', '0');\n this.hideSpin();\n var args = { step: this.step, currentDuration: this.progressTime, percent: 100 };\n clearTimeout(this.interval);\n this.trigger('end', args);\n this.progressTime = this.percent = 0;\n };\n ProgressButton.prototype.setSpinnerSize = function () {\n var ele = this.element.getElementsByClassName(CONTENTCLS)[0];\n var spinner = this.getSpinner();\n spinner.style.width = Math.max(spinner.offsetWidth, ele.offsetWidth) + 'px';\n spinner.style.height = Math.max(spinner.offsetHeight, ele.offsetHeight) + 'px';\n ele.classList.add('e-cont-animate');\n };\n ProgressButton.prototype.hideSpin = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n if (!(this.element.classList.contains(HIDESPINNER))) {\n hideSpinner(this.element);\n }\n this.element.classList.remove(PROGRESSACTIVE);\n if (this.animationSettings.effect !== 'None') {\n cont.classList.remove('e-animate-end');\n }\n if (this.spinSettings.position === 'Center') {\n var ele = this.getSpinner();\n cont.classList.remove('e-cont-animate');\n ele.style.width = 'auto';\n ele.style.height = 'auto';\n }\n };\n ProgressButton.prototype.setIconSpan = function () {\n var cont = this.element.getElementsByClassName(CONTENTCLS)[0];\n var iconSpan = this.element.getElementsByClassName('e-btn-icon')[0];\n if (cont.childNodes[0] && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n cont.insertBefore(iconSpan, cont.childNodes[0]);\n }\n else {\n cont.appendChild(iconSpan);\n }\n };\n ProgressButton.prototype.setAria = function () {\n attributes(this.element, {\n 'aria-label': this.element.textContent + ' progress', 'aria-valuemin': '0', 'aria-valuemax': '100', 'aria-valuenow': '0'\n });\n };\n ProgressButton.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n };\n ProgressButton.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ProgressButtonModel} newProp - Specifies new properties\n * @param {ProgressButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n ProgressButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var ele = this.element;\n var isSpinning = false;\n var clsList = this.element.querySelector('.e-spinner-pane').classList;\n if (clsList.contains('e-spin-show')) {\n isSpinning = true;\n }\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n this.setContent();\n this.createSpinner();\n if (isSpinning) {\n showSpinner(this.element);\n isSpinning = false;\n }\n if (this.enableProgress) {\n this.createProgress();\n }\n ele.setAttribute('aria-label', ele.textContent + ' progress');\n break;\n case 'iconCss':\n if (!oldProp.iconCss) {\n this.setIconSpan();\n }\n break;\n case 'iconPosition':\n this.setIconSpan();\n break;\n case 'enableProgress':\n if (newProp.enableProgress) {\n this.createProgress();\n }\n else {\n remove(this.getProgress());\n }\n break;\n case 'spinSettings':\n if (newProp.spinSettings.position) {\n ele.classList.remove('e-spin-' + oldProp.spinSettings.position.toLowerCase());\n this.setSpinPosition(this.getSpinner());\n }\n if (newProp.spinSettings.template || newProp.spinSettings.width) {\n ele.removeChild(this.getSpinner());\n this.createSpinner();\n }\n break;\n }\n }\n };\n /**\n * Sets the focus to ProgressButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n ProgressButton.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"enableProgress\", void 0);\n __decorate$3([\n Property(2000)\n ], ProgressButton.prototype, \"duration\", void 0);\n __decorate$3([\n Property('Left')\n ], ProgressButton.prototype, \"iconPosition\", void 0);\n __decorate$3([\n Property('')\n ], ProgressButton.prototype, \"iconCss\", void 0);\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"disabled\", void 0);\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"isPrimary\", void 0);\n __decorate$3([\n Property('')\n ], ProgressButton.prototype, \"cssClass\", void 0);\n __decorate$3([\n Property('')\n ], ProgressButton.prototype, \"content\", void 0);\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"isToggle\", void 0);\n __decorate$3([\n Property(false)\n ], ProgressButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate$3([\n Complex({}, SpinSettings)\n ], ProgressButton.prototype, \"spinSettings\", void 0);\n __decorate$3([\n Complex({}, AnimationSettings)\n ], ProgressButton.prototype, \"animationSettings\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"created\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"begin\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"progress\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"end\", void 0);\n __decorate$3([\n Event()\n ], ProgressButton.prototype, \"fail\", void 0);\n ProgressButton = __decorate$3([\n NotifyPropertyChanges\n ], ProgressButton);\n return ProgressButton;\n}(Button));\n\n/**\n * ProgressButton modules\n */\n\n/**\n * SplitButton all module\n */\n\nexport { getModel, upDownKeyHandler, setBlankIconStyle, Item, DropDownButton, SplitButton, Deferred, createButtonGroup, SpinSettings, AnimationSettings, ProgressButton };\n","/**\n * @license\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://raw.githubusercontent.com/l-lin/angular-datatables/master/LICENSE\n */\n/**\n * @module\n * @description\n * Entry point from which you should import all public library APIs.\n */\nexport { DataTableDirective } from './src/angular-datatables.directive';\nexport { DataTablesModule } from './src/angular-datatables.module';\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @license\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://raw.githubusercontent.com/l-lin/angular-datatables/master/LICENSE\n */\nimport { Directive, ElementRef, Input, Renderer2, ViewContainerRef } from '@angular/core';\nimport { Subject } from 'rxjs';\nimport * as i0 from \"@angular/core\";\nvar DataTableDirective = /** @class */ (function () {\n function DataTableDirective(el, vcr, renderer) {\n this.el = el;\n this.vcr = vcr;\n this.renderer = renderer;\n /**\n * The DataTable option you pass to configure your table.\n */\n this.dtOptions = {};\n }\n DataTableDirective.prototype.ngOnInit = function () {\n var _this = this;\n if (this.dtTrigger) {\n this.dtTrigger.subscribe(function (options) {\n _this.displayTable(options);\n });\n }\n else {\n this.displayTable(null);\n }\n };\n DataTableDirective.prototype.ngOnDestroy = function () {\n if (this.dtTrigger) {\n this.dtTrigger.unsubscribe();\n }\n if (this.dt) {\n this.dt.destroy(true);\n }\n };\n DataTableDirective.prototype.displayTable = function (dtOptions) {\n var _this = this;\n // assign new options if provided\n if (dtOptions) {\n this.dtOptions = dtOptions;\n }\n this.dtInstance = new Promise(function (resolve, reject) {\n Promise.resolve(_this.dtOptions).then(function (resolvedDTOptions) {\n // validate object\n var isTableEmpty = Object.keys(resolvedDTOptions).length === 0 && $('tbody tr', _this.el.nativeElement).length === 0;\n if (isTableEmpty) {\n reject('Both the table and dtOptions cannot be empty');\n return;\n }\n // Using setTimeout as a \"hack\" to be \"part\" of NgZone\n setTimeout(function () {\n // Assign DT properties here\n var options = {\n rowCallback: function (row, data, index) {\n if (resolvedDTOptions.columns) {\n var columns = resolvedDTOptions.columns;\n _this.applyNgPipeTransform(row, columns);\n _this.applyNgRefTemplate(row, columns, data);\n }\n // run user specified row callback if provided.\n if (resolvedDTOptions.rowCallback) {\n resolvedDTOptions.rowCallback(row, data, index);\n }\n }\n };\n // merge user's config with ours\n options = Object.assign({}, resolvedDTOptions, options);\n _this.dt = $(_this.el.nativeElement).DataTable(options);\n resolve(_this.dt);\n });\n });\n });\n };\n DataTableDirective.prototype.applyNgPipeTransform = function (row, columns) {\n // Filter columns with pipe declared\n var colsWithPipe = columns.filter(function (x) { return x.ngPipeInstance && !x.ngTemplateRef; });\n colsWithPipe.forEach(function (el) {\n var pipe = el.ngPipeInstance;\n var pipeArgs = el.ngPipeArgs || [];\n // find index of column using `data` attr\n var i = columns.findIndex(function (e) { return e.data === el.data; });\n // get element which holds data using index\n var rowFromCol = row.childNodes.item(i);\n // Transform data with Pipe and PipeArgs\n var rowVal = $(rowFromCol).text();\n var rowValAfter = pipe.transform.apply(pipe, __spreadArray([rowVal], pipeArgs, false));\n // Apply transformed string to \n $(rowFromCol).text(rowValAfter);\n });\n };\n DataTableDirective.prototype.applyNgRefTemplate = function (row, columns, data) {\n var _this = this;\n // Filter columns using `ngTemplateRef`\n var colsWithTemplate = columns.filter(function (x) { return x.ngTemplateRef && !x.ngPipeInstance; });\n colsWithTemplate.forEach(function (el) {\n var _a = el.ngTemplateRef, ref = _a.ref, context = _a.context;\n // get element which holds data using index\n var i = columns.findIndex(function (e) { return e.data === el.data; });\n var cellFromIndex = row.childNodes.item(i);\n // reset cell before applying transform\n $(cellFromIndex).html('');\n // render onto DOM\n // finalize context to be sent to user\n var _context = Object.assign({}, context, context === null || context === void 0 ? void 0 : context.userData, {\n adtData: data\n });\n var instance = _this.vcr.createEmbeddedView(ref, _context);\n _this.renderer.appendChild(cellFromIndex, instance.rootNodes[0]);\n });\n };\n DataTableDirective.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTableDirective, deps: [{ token: i0.ElementRef }, { token: i0.ViewContainerRef }, { token: i0.Renderer2 }], target: i0.ɵɵFactoryTarget.Directive });\n DataTableDirective.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: \"12.0.0\", version: \"13.0.1\", type: DataTableDirective, selector: \"[datatable]\", inputs: { dtOptions: \"dtOptions\", dtTrigger: \"dtTrigger\" }, ngImport: i0 });\n return DataTableDirective;\n}());\nexport { DataTableDirective };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTableDirective, decorators: [{\n type: Directive,\n args: [{\n selector: '[datatable]'\n }]\n }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i0.ViewContainerRef }, { type: i0.Renderer2 }]; }, propDecorators: { dtOptions: [{\n type: Input\n }], dtTrigger: [{\n type: Input\n }] } });\n","/**\n * @license\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://raw.githubusercontent.com/l-lin/angular-datatables/master/LICENSE\n */\nimport { NgModule } from '@angular/core';\nimport { CommonModule } from '@angular/common';\nimport { DataTableDirective } from './angular-datatables.directive';\nimport * as i0 from \"@angular/core\";\nvar DataTablesModule = /** @class */ (function () {\n function DataTablesModule() {\n }\n DataTablesModule.forRoot = function () {\n return {\n ngModule: DataTablesModule\n };\n };\n DataTablesModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule });\n DataTablesModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, declarations: [DataTableDirective], imports: [CommonModule], exports: [DataTableDirective] });\n DataTablesModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, imports: [[CommonModule]] });\n return DataTablesModule;\n}());\nexport { DataTablesModule };\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"13.0.1\", ngImport: i0, type: DataTablesModule, decorators: [{\n type: NgModule,\n args: [{\n imports: [CommonModule],\n declarations: [DataTableDirective],\n exports: [DataTableDirective]\n }]\n }] });\n","import { EventEmitter, Component, ElementRef, NgZone, Input, Output, NgModule } from '@angular/core';\nimport 'highcharts';\n\nimport * as ɵngcc0 from '@angular/core';\nclass HighchartsChartComponent {\n constructor(el, _zone // #75\n ) {\n this.el = el;\n this._zone = _zone;\n this.updateChange = new EventEmitter(true);\n this.chartInstance = new EventEmitter(); // #26\n }\n ngOnChanges(changes) {\n const update = changes.update && changes.update.currentValue;\n if (changes.options || update) {\n this.wrappedUpdateOrCreateChart();\n if (update) {\n this.updateChange.emit(false); // clear the flag after update\n }\n }\n }\n wrappedUpdateOrCreateChart() {\n if (this.runOutsideAngular) {\n this._zone.runOutsideAngular(() => {\n this.updateOrCreateChart();\n });\n }\n else {\n this.updateOrCreateChart();\n }\n }\n updateOrCreateChart() {\n if (this.chart && this.chart.update) {\n this.chart.update(this.options, true, this.oneToOne || false);\n }\n else {\n this.chart = this.Highcharts[this.constructorType || 'chart'](this.el.nativeElement, this.options, this.callbackFunction || null);\n // emit chart instance on init\n this.chartInstance.emit(this.chart);\n }\n }\n ngOnDestroy() {\n if (this.chart) { // #56\n this.chart.destroy();\n this.chart = null;\n }\n }\n}\nHighchartsChartComponent.ɵfac = function HighchartsChartComponent_Factory(t) { return new (t || HighchartsChartComponent)(ɵngcc0.ɵɵdirectiveInject(ɵngcc0.ElementRef), ɵngcc0.ɵɵdirectiveInject(ɵngcc0.NgZone)); };\nHighchartsChartComponent.ɵcmp = /*@__PURE__*/ ɵngcc0.ɵɵdefineComponent({ type: HighchartsChartComponent, selectors: [[\"highcharts-chart\"]], inputs: { Highcharts: \"Highcharts\", constructorType: \"constructorType\", callbackFunction: \"callbackFunction\", oneToOne: \"oneToOne\", runOutsideAngular: \"runOutsideAngular\", options: \"options\", update: \"update\" }, outputs: { updateChange: \"updateChange\", chartInstance: \"chartInstance\" }, features: [ɵngcc0.ɵɵNgOnChangesFeature], decls: 0, vars: 0, template: function HighchartsChartComponent_Template(rf, ctx) { }, encapsulation: 2 });\nHighchartsChartComponent.ctorParameters = () => [\n { type: ElementRef },\n { type: NgZone }\n];\nHighchartsChartComponent.propDecorators = {\n Highcharts: [{ type: Input }],\n constructorType: [{ type: Input }],\n callbackFunction: [{ type: Input }],\n oneToOne: [{ type: Input }],\n runOutsideAngular: [{ type: Input }],\n options: [{ type: Input }],\n update: [{ type: Input }],\n updateChange: [{ type: Output }],\n chartInstance: [{ type: Output }]\n};\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HighchartsChartComponent, [{\n type: Component,\n args: [{\n selector: 'highcharts-chart',\n template: ''\n }]\n }], function () { return [{ type: ɵngcc0.ElementRef }, { type: ɵngcc0.NgZone }]; }, { updateChange: [{\n type: Output\n }], chartInstance: [{\n type: Output\n }], Highcharts: [{\n type: Input\n }], constructorType: [{\n type: Input\n }], callbackFunction: [{\n type: Input\n }], oneToOne: [{\n type: Input\n }], runOutsideAngular: [{\n type: Input\n }], options: [{\n type: Input\n }], update: [{\n type: Input\n }] }); })();\n\nclass HighchartsChartModule {\n}\nHighchartsChartModule.ɵfac = function HighchartsChartModule_Factory(t) { return new (t || HighchartsChartModule)(); };\nHighchartsChartModule.ɵmod = /*@__PURE__*/ ɵngcc0.ɵɵdefineNgModule({ type: HighchartsChartModule });\nHighchartsChartModule.ɵinj = /*@__PURE__*/ ɵngcc0.ɵɵdefineInjector({});\n(function () { (typeof ngDevMode === \"undefined\" || ngDevMode) && ɵngcc0.ɵsetClassMetadata(HighchartsChartModule, [{\n type: NgModule,\n args: [{\n declarations: [HighchartsChartComponent],\n exports: [HighchartsChartComponent]\n }]\n }], null, null); })();\n(function () { (typeof ngJitMode === \"undefined\" || ngJitMode) && ɵngcc0.ɵɵsetNgModuleScope(HighchartsChartModule, { declarations: [HighchartsChartComponent], exports: [HighchartsChartComponent] }); })();\n\n/*\n * Public API Surface of highcharts-angular\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { HighchartsChartComponent, HighchartsChartModule };\n\n","/*\n Highcharts JS v9.3.3 (2022-02-01)\n\n (c) 2009-2021 Torstein Honsi\n\n License: www.highcharts.com/license\n*/\n'use strict';(function(Z,M){\"object\"===typeof module&&module.exports?(M[\"default\"]=M,module.exports=Z.document?M(Z):M):\"function\"===typeof define&&define.amd?define(\"highcharts/highcharts\",function(){return M(Z)}):(Z.Highcharts&&Z.Highcharts.error(16,!0),Z.Highcharts=M(Z))})(\"undefined\"!==typeof window?window:this,function(Z){function M(v,a,z,F){v.hasOwnProperty(a)||(v[a]=F.apply(null,z))}var a={};M(a,\"Core/Globals.js\",[],function(){var v=\"undefined\"!==typeof Z?Z:\"undefined\"!==typeof window?window:\n{},a;(function(a){a.SVG_NS=\"http://www.w3.org/2000/svg\";a.product=\"Highcharts\";a.version=\"9.3.3\";a.win=v;a.doc=a.win.document;a.svg=a.doc&&a.doc.createElementNS&&!!a.doc.createElementNS(a.SVG_NS,\"svg\").createSVGRect;a.userAgent=a.win.navigator&&a.win.navigator.userAgent||\"\";a.isChrome=-1!==a.userAgent.indexOf(\"Chrome\");a.isFirefox=-1!==a.userAgent.indexOf(\"Firefox\");a.isMS=/(edge|msie|trident)/i.test(a.userAgent)&&!a.win.opera;a.isSafari=!a.isChrome&&-1!==a.userAgent.indexOf(\"Safari\");a.isTouchDevice=\n/(Mobile|Android|Windows Phone)/.test(a.userAgent);a.isWebKit=-1!==a.userAgent.indexOf(\"AppleWebKit\");a.deg2rad=2*Math.PI/360;a.hasBidiBug=a.isFirefox&&4>parseInt(a.userAgent.split(\"Firefox/\")[1],10);a.hasTouch=!!a.win.TouchEvent;a.marginNames=[\"plotTop\",\"marginRight\",\"marginBottom\",\"plotLeft\"];a.noop=function(){};a.supportsPassiveEvents=function(){var v=!1;if(!a.isMS){var u=Object.defineProperty({},\"passive\",{get:function(){v=!0}});a.win.addEventListener&&a.win.removeEventListener&&(a.win.addEventListener(\"testPassive\",\na.noop,u),a.win.removeEventListener(\"testPassive\",a.noop,u))}return v}();a.charts=[];a.dateFormats={};a.seriesTypes={};a.symbolSizes={};a.chartCount=0})(a||(a={}));\"\";return a});M(a,\"Core/Utilities.js\",[a[\"Core/Globals.js\"]],function(a){function v(m,b,d,g){var D=b?\"Highcharts error\":\"Highcharts warning\";32===m&&(m=D+\": Deprecated member\");var x=n(m),c=x?D+\" #\"+m+\": www.highcharts.com/errors/\"+m+\"/\":m.toString();if(\"undefined\"!==typeof g){var r=\"\";x&&(c+=\"?\");B(g,function(m,b){r+=\"\\n - \"+b+\": \"+m;\nx&&(c+=encodeURI(b)+\"=\"+encodeURI(m))});c+=r}J(a,\"displayError\",{chart:d,code:m,message:c,params:g},function(){if(b)throw Error(c);l.console&&-1===v.messages.indexOf(c)&&console.warn(c)});v.messages.push(c)}function z(m,b){var d={};B(m,function(D,x){if(H(m[x],!0)&&!m.nodeType&&b[x])D=z(m[x],b[x]),Object.keys(D).length&&(d[x]=D);else if(H(m[x])||m[x]!==b[x])d[x]=m[x]});return d}function F(m,b){return parseInt(m,b||10)}function y(m){return\"string\"===typeof m}function G(m){m=Object.prototype.toString.call(m);\nreturn\"[object Array]\"===m||\"[object Array Iterator]\"===m}function H(m,b){return!!m&&\"object\"===typeof m&&(!b||!G(m))}function A(m){return H(m)&&\"number\"===typeof m.nodeType}function q(m){var b=m&&m.constructor;return!(!H(m,!0)||A(m)||!b||!b.name||\"Object\"===b.name)}function n(m){return\"number\"===typeof m&&!isNaN(m)&&Infinity>m&&-Infinity=d-1&&(d=Math.floor(x)),Math.max(0,d-(m(b,\"padding-left\",!0)||0)-(m(b,\"padding-right\",!0)||0));if(\"height\"===d)return Math.max(0,Math.min(b.offsetHeight,b.scrollHeight)-(m(b,\"padding-top\",!0)||0)-(m(b,\"padding-bottom\",!0)||0));l.getComputedStyle||v(27,!0);if(b=l.getComputedStyle(b,void 0)){var g=b.getPropertyValue(d);h(x,\"opacity\"!==d)&&(g=F(g))}return g}function B(b,d,\ng){for(var m in b)Object.hasOwnProperty.call(b,m)&&d.call(g||b[m],b[m],m,b)}function t(b,d,g){function m(d,m){var L=b.removeEventListener||a.removeEventListenerPolyfill;L&&L.call(b,d,m,!1)}function x(g){var x;if(b.nodeName){if(d){var L={};L[d]=!0}else L=g;B(L,function(b,d){if(g[d])for(x=g[d].length;x--;)m(d,g[d][x].fn)})}}var D=\"function\"===typeof b&&b.prototype||b;if(Object.hasOwnProperty.call(D,\"hcEvents\")){var l=D.hcEvents;d?(D=l[d]||[],g?(l[d]=D.filter(function(b){return g!==b.fn}),m(d,g)):(x(l),\nl[d]=[])):(x(l),delete D.hcEvents)}}function J(b,d,g,l){g=g||{};if(r.createEvent&&(b.dispatchEvent||b.fireEvent&&b!==a)){var m=r.createEvent(\"Events\");m.initEvent(d,!0,!0);g=c(m,g);b.dispatchEvent?b.dispatchEvent(g):b.fireEvent(d,g)}else if(b.hcEvents){g.target||c(g,{preventDefault:function(){g.defaultPrevented=!0},target:b,type:d});m=[];for(var x=b,D=!1;x.hcEvents;)Object.hasOwnProperty.call(x,\"hcEvents\")&&x.hcEvents[d]&&(m.length&&(D=!0),m.unshift.apply(m,x.hcEvents[d])),x=Object.getPrototypeOf(x);\nD&&m.sort(function(b,d){return b.order-d.order});m.forEach(function(d){!1===d.fn.call(b,g)&&g.preventDefault()})}l&&!g.defaultPrevented&&l.call(b,g)}var C=a.charts,r=a.doc,l=a.win;(v||(v={})).messages=[];Math.easeInOutSine=function(b){return-.5*(Math.cos(Math.PI*b)-1)};var b=Array.prototype.find?function(b,d){return b.find(d)}:function(b,d){var m,g=b.length;for(m=0;mm&&(m=b[d]);return m},arrayMin:function(b){for(var d=b.length,m=b[0];d--;)b[d]d?b=g&&(d=[1/g])));for(l=0;l=b||!c&&r<=(d[l]+(d[l+1]||d[l]))/2);l++);return m=w(m*g,-Math.round(Math.log(.001)/Math.LN10))},objectEach:B,offset:function(b){var d=r.documentElement;b=b.parentElement||b.parentNode?b.getBoundingClientRect():{top:0,left:0,width:0,height:0};return{top:b.top+(l.pageYOffset||d.scrollTop)-(d.clientTop||0),left:b.left+(l.pageXOffset||d.scrollLeft)-(d.clientLeft||0),width:b.width,height:b.height}},pad:function(b,d,g){return Array((d||2)+1-String(b).replace(\"-\",\"\").length).join(g||\"0\")+\nb},pick:h,pInt:F,relativeLength:function(b,d,g){return/%$/.test(b)?d*parseFloat(b)/100+(g||0):parseFloat(b)},removeEvent:t,splat:function(b){return G(b)?b:[b]},stableSort:function(b,d){var g=b.length,m,l;for(l=0;l>16,(n&65280)>>8,n&255,1]:4===q&&(A=[(n&3840)>>4|(n&3840)>>8,(n&240)>>4|n&240,(n&15)<<4|n&15,1])}if(!A)for(n=u.parsers.length;n--&&!A;){var k=u.parsers[n];(q=k.regex.exec(a))&&(A=k.parse(q))}}A&&\n(this.rgba=A)};u.prototype.get=function(a){var A=this.input,q=this.rgba;if(\"object\"===typeof A&&\"undefined\"!==typeof this.stops){var n=F(A);n.stops=[].slice.call(n.stops);this.stops.forEach(function(k,e){n.stops[e]=[n.stops[e][0],k.get(a)]});return n}return q&&v(q[0])?\"rgb\"===a||!a&&1===q[3]?\"rgb(\"+q[0]+\",\"+q[1]+\",\"+q[2]+\")\":\"a\"===a?\"\"+q[3]:\"rgba(\"+q.join(\",\")+\")\":A};u.prototype.brighten=function(a){var A=this.rgba;if(this.stops)this.stops.forEach(function(n){n.brighten(a)});else if(v(a)&&0!==a)for(var q=\n0;3>q;q++)A[q]+=y(255*a),0>A[q]&&(A[q]=0),255r?\"AM\":\"PM\",P:12>r?\"am\":\"pm\",S:n(h.getSeconds()),L:n(Math.floor(e%1E3),3)},a.dateFormats);q(h,function(b,d){for(;-1!==c.indexOf(\"%\"+d);)c=c.replace(\"%\"+d,\"function\"===typeof b?b.call(p,e):b)});return f?c.substr(0,1).toUpperCase()+c.substr(1):c};w.prototype.resolveDTLFormat=function(c){return H(c,!0)?c:(c=e(c),{main:c[0],from:c[1],to:c[2]})};w.prototype.getTimeTicks=function(e,h,f,w){var p=this,r=[],l={},b=new p.Date(h),g=e.unitRange,d=e.count||1,m;w=k(w,1);if(F(h)){p.set(\"Milliseconds\",\nb,g>=c.second?0:d*Math.floor(p.get(\"Milliseconds\",b)/d));g>=c.second&&p.set(\"Seconds\",b,g>=c.minute?0:d*Math.floor(p.get(\"Seconds\",b)/d));g>=c.minute&&p.set(\"Minutes\",b,g>=c.hour?0:d*Math.floor(p.get(\"Minutes\",b)/d));g>=c.hour&&p.set(\"Hours\",b,g>=c.day?0:d*Math.floor(p.get(\"Hours\",b)/d));g>=c.day&&p.set(\"Date\",b,g>=c.month?1:Math.max(1,d*Math.floor(p.get(\"Date\",b)/d)));if(g>=c.month){p.set(\"Month\",b,g>=c.year?0:d*Math.floor(p.get(\"Month\",b)/d));var D=p.get(\"FullYear\",b)}g>=c.year&&p.set(\"FullYear\",\nb,D-D%d);g===c.week&&(D=p.get(\"Day\",b),p.set(\"Date\",b,p.get(\"Date\",b)-D+w+(D4*c.month||p.getTimezoneOffset(h)!==p.getTimezoneOffset(f));h=b.getTime();for(b=1;hr.length&&r.forEach(function(b){0===b%18E5&&\"000000000\"===p.dateFormat(\"%H%M%S%L\",b)&&(l[b]=\"day\")})}r.info=G(e,{higherRanks:l,totalRange:g*d});return r};w.prototype.getDateFormat=function(e,h,f,w){var p=this.dateFormat(\"%m-%d %H:%M:%S.%L\",h),r={millisecond:15,second:12,minute:9,hour:6,day:3},l=\"millisecond\";for(b in c){if(e===c.week&&+this.dateFormat(\"%w\",h)===f&&\"00:00:00.000\"===p.substr(6)){var b=\"week\";break}if(c[b]>e){b=l;break}if(r[b]&&p.substr(r[b])!==\"01-01 00:00:00.000\".substr(r[b]))break;\n\"week\"!==b&&(l=b)}if(b)var g=this.resolveDTLFormat(w[b]).main;return g};return w}();\"\";return u});M(a,\"Core/DefaultOptions.js\",[a[\"Core/Chart/ChartDefaults.js\"],a[\"Core/Color/Color.js\"],a[\"Core/Globals.js\"],a[\"Core/Color/Palettes.js\"],a[\"Core/Time.js\"],a[\"Core/Utilities.js\"]],function(a,u,z,F,y,G){u=u.parse;var v=G.merge,A={colors:F.colors,symbols:[\"circle\",\"diamond\",\"square\",\"triangle\",\"triangle-down\"],lang:{loading:\"Loading...\",months:\"January February March April May June July August September October November December\".split(\" \"),\nshortMonths:\"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec\".split(\" \"),weekdays:\"Sunday Monday Tuesday Wednesday Thursday Friday Saturday\".split(\" \"),decimalPoint:\".\",numericSymbols:\"kMGTPE\".split(\"\"),resetZoom:\"Reset zoom\",resetZoomTitle:\"Reset zoom level 1:1\",thousandsSep:\" \"},global:{},time:{Date:void 0,getTimezoneOffset:void 0,timezone:void 0,timezoneOffset:0,useUTC:!0},chart:a,title:{text:\"Chart title\",align:\"center\",margin:15,widthAdjust:-44},subtitle:{text:\"\",align:\"center\",widthAdjust:-44},\ncaption:{margin:15,text:\"\",align:\"left\",verticalAlign:\"bottom\"},plotOptions:{},labels:{style:{position:\"absolute\",color:\"#333333\"}},legend:{enabled:!0,align:\"center\",alignColumns:!0,className:\"highcharts-no-tooltip\",layout:\"horizontal\",labelFormatter:function(){return this.name},borderColor:\"#999999\",borderRadius:0,navigation:{activeColor:\"#003399\",inactiveColor:\"#cccccc\"},itemStyle:{color:\"#333333\",cursor:\"pointer\",fontSize:\"12px\",fontWeight:\"bold\",textOverflow:\"ellipsis\"},itemHoverStyle:{color:\"#000000\"},\nitemHiddenStyle:{color:\"#cccccc\"},shadow:!1,itemCheckboxStyle:{position:\"absolute\",width:\"13px\",height:\"13px\"},squareSymbol:!0,symbolPadding:5,verticalAlign:\"bottom\",x:0,y:0,title:{style:{fontWeight:\"bold\"}}},loading:{labelStyle:{fontWeight:\"bold\",position:\"relative\",top:\"45%\"},style:{position:\"absolute\",backgroundColor:\"#ffffff\",opacity:.5,textAlign:\"center\"}},tooltip:{enabled:!0,animation:z.svg,borderRadius:3,dateTimeLabelFormats:{millisecond:\"%A, %b %e, %H:%M:%S.%L\",second:\"%A, %b %e, %H:%M:%S\",\nminute:\"%A, %b %e, %H:%M\",hour:\"%A, %b %e, %H:%M\",day:\"%A, %b %e, %Y\",week:\"Week from %A, %b %e, %Y\",month:\"%B %Y\",year:\"%Y\"},footerFormat:\"\",headerShape:\"callout\",hideDelay:500,padding:8,shape:\"callout\",shared:!1,snap:z.isTouchDevice?25:10,headerFormat:'{point.key}
    ',pointFormat:'\\u25cf {series.name}: {point.y}
    ',backgroundColor:u(\"#f7f7f7\").setOpacity(.85).get(),borderWidth:1,shadow:!0,stickOnContact:!1,\nstyle:{color:\"#333333\",cursor:\"default\",fontSize:\"12px\",whiteSpace:\"nowrap\"},useHTML:!1},credits:{enabled:!0,href:\"https://www.highcharts.com?credits\",position:{align:\"right\",x:-10,verticalAlign:\"bottom\",y:-5},style:{cursor:\"pointer\",color:\"#999999\",fontSize:\"9px\"},text:\"Highcharts.com\"}};A.chart.styledMode=!1;\"\";var q=new y(v(A.global,A.time));a={defaultOptions:A,defaultTime:q,getOptions:function(){return A},setOptions:function(n){v(!0,A,n);if(n.time||n.global)z.time?z.time.update(v(A.global,A.time,\nn.global,n.time)):z.time=q;return A}};\"\";return a});M(a,\"Core/Animation/Fx.js\",[a[\"Core/Color/Color.js\"],a[\"Core/Globals.js\"],a[\"Core/Utilities.js\"]],function(a,u,z){var v=a.parse,y=u.win,G=z.isNumber,H=z.objectEach;return function(){function a(a,n,k){this.pos=NaN;this.options=n;this.elem=a;this.prop=k}a.prototype.dSetter=function(){var a=this.paths,n=a&&a[0];a=a&&a[1];var k=this.now||0,e=[];if(1!==k&&n&&a)if(n.length===a.length&&1>k)for(var c=0;c=h+this.startTime){this.now=this.end;this.pos=1;this.update();var w=f[this.prop]=!0;H(f,function(c){!0!==c&&(w=!1)});w&&c&&c.call(e);a=!1}else this.pos=k.easing((n-this.startTime)/h),this.now=this.start+(this.end-this.start)*this.pos,this.update(),a=!0;return a};a.prototype.initPath=function(a,n,k){function e(c,e){for(;c.lengthw[1]){var B=k+ +w[1];0<=B?(w[0]=(+w[0]).toExponential(B).split(\"e\")[0],k=B):(w[0]=w[0].split(\".\")[0]||0,a=20>k?(w[0]*Math.pow(10,w[1])).toFixed(k):0,w[1]=0)}B=(Math.abs(w[1]?w[0]:a)+Math.pow(10,-Math.max(k,f)-1)).toFixed(k);f=String(q(B));\nvar t=3a?\"-\":\"\")+(t?f.substr(0,t)+c:\"\");a=0>+w[1]&&!p?\"0\":a+f.substr(t).replace(/(\\d{3})(?=\\d)/g,\"$1\"+c);k&&(a+=e+B.slice(-k));w[1]&&0!==+a&&(a+=\"e\"+w[1]);return a}var F=a.defaultOptions,y=a.defaultTime,G=u.getNestedProperty,H=u.isNumber,A=u.pick,q=u.pInt;return{dateFormat:function(a,k,e){return y.dateFormat(a,k,e)},format:function(a,k,e){var c=\"{\",h=!1,f=/f$/,w=/\\.([0-9])/,p=F.lang,B=e&&e.time||y;e=e&&e.numberFormatter||v;for(var t=\n[];a;){var J=a.indexOf(c);if(-1===J)break;var C=a.slice(0,J);if(h){C=C.split(\":\");c=G(C.shift()||\"\",k);if(C.length&&\"number\"===typeof c)if(C=C.join(\":\"),f.test(C)){var r=parseInt((C.match(w)||[\"\",\"-1\"])[1],10);null!==c&&(c=e(c,r,p.decimalPoint,-1e){F(a,c);for(B=f=0;B<=e;)B+=a[f].size,f++;p=a.splice(f-1,a.length)}F(a,h);for(a=a.map(function(c){return{size:c.size,targets:[c.target],align:z(c.align,.5)}});w;){for(f=a.length;f--;)e=a[f],c=(Math.min.apply(0,e.targets)+Math.max.apply(0,e.targets))/2,e.pos=v(c-e.size*e.align,\n0,q-e.size);f=a.length;for(w=!1;f--;)0a[f].pos&&(a[f-1].size+=a[f].size,a[f-1].targets=a[f-1].targets.concat(a[f].targets),a[f-1].align=.5,a[f-1].pos+a[f-1].size>q&&(a[f-1].pos=q-a[f-1].size),a.splice(f,1),w=!0)}k.push.apply(k,p);f=0;a.some(function(c){var e=0;return(c.targets||[]).some(function(){k[f].pos=c.pos+e;if(\"undefined\"!==typeof n&&Math.abs(k[f].pos-k[f].target)>n)return k.slice(0,f+1).forEach(function(c){return delete c.pos}),k.reducedLen=(k.reducedLen||q)-.1*\nq,k.reducedLen>.1*q&&u(k,q,n),!0;e+=k[f].size;f++;return!1})});F(k,h);return k}a.distribute=u})(y||(y={}));return y});M(a,\"Core/Renderer/SVG/SVGElement.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/Renderer/HTML/AST.js\"],a[\"Core/Color/Color.js\"],a[\"Core/Globals.js\"],a[\"Core/Utilities.js\"]],function(a,u,z,F,y){var v=a.animate,H=a.animObject,A=a.stop,q=F.deg2rad,n=F.doc,k=F.noop,e=F.svg,c=F.SVG_NS,h=F.win,f=y.addEvent,w=y.attr,p=y.createElement,B=y.css,t=y.defined,J=y.erase,C=y.extend,r=y.fireEvent,\nl=y.isArray,b=y.isFunction,g=y.isNumber,d=y.isString,m=y.merge,D=y.objectEach,x=y.pick,I=y.pInt,P=y.syncTimeout,S=y.uniqueKey;a=function(){function a(){this.element=void 0;this.onEvents={};this.opacity=1;this.renderer=void 0;this.SVG_NS=c;this.symbolCustomAttribs=\"x y width height r start end innerR anchorX anchorY rounded\".split(\" \")}a.prototype._defaultGetter=function(b){b=x(this[b+\"Value\"],this[b],this.element?this.element.getAttribute(b):null,0);/^[\\-0-9\\.]+$/.test(b)&&(b=parseFloat(b));return b};\na.prototype._defaultSetter=function(b,d,c){c.setAttribute(d,b)};a.prototype.add=function(b){var d=this.renderer,c=this.element;b&&(this.parentGroup=b);this.parentInverted=b&&b.inverted;\"undefined\"!==typeof this.textStr&&\"text\"===this.element.nodeName&&d.buildText(this);this.added=!0;if(!b||b.handleZ||this.zIndex)var g=this.zIndexSetter();g||(b?b.element:d.box).appendChild(c);if(this.onAdd)this.onAdd();return this};a.prototype.addClass=function(b,d){var c=d?\"\":this.attr(\"class\")||\"\";b=(b||\"\").split(/ /g).reduce(function(b,\nd){-1===c.indexOf(d)&&b.push(d);return b},c?[c]:[]).join(\" \");b!==c&&this.attr(\"class\",b);return this};a.prototype.afterSetters=function(){this.doTransform&&(this.updateTransform(),this.doTransform=!1)};a.prototype.align=function(b,c,g){var m={},L=this.renderer,e=L.alignedObjects,l,a,E;if(b){if(this.alignOptions=b,this.alignByTranslate=c,!g||d(g))this.alignTo=l=g||\"renderer\",J(e,this),e.push(this),g=void 0}else b=this.alignOptions,c=this.alignByTranslate,l=this.alignTo;g=x(g,L[l],\"scrollablePlotBox\"===\nl?L.plotBox:void 0,L);l=b.align;var r=b.verticalAlign;L=(g.x||0)+(b.x||0);e=(g.y||0)+(b.y||0);\"right\"===l?a=1:\"center\"===l&&(a=2);a&&(L+=(g.width-(b.width||0))/a);m[c?\"translateX\":\"x\"]=Math.round(L);\"bottom\"===r?E=1:\"middle\"===r&&(E=2);E&&(e+=(g.height-(b.height||0))/E);m[c?\"translateY\":\"y\"]=Math.round(e);this[this.placed?\"animate\":\"attr\"](m);this.placed=!0;this.alignAttr=m;return this};a.prototype.alignSetter=function(b){var d={left:\"start\",center:\"middle\",right:\"end\"};d[b]&&(this.alignValue=b,this.element.setAttribute(\"text-anchor\",\nd[b]))};a.prototype.animate=function(b,d,c){var g=this,m=H(x(d,this.renderer.globalAnimation,!0));d=m.defer;x(n.hidden,n.msHidden,n.webkitHidden,!1)&&(m.duration=0);0!==m.duration?(c&&(m.complete=c),P(function(){g.element&&v(g,b,m)},d)):(this.attr(b,void 0,c),D(b,function(b,d){m.step&&m.step.call(this,b,{prop:d,pos:1,elem:this})},this));return this};a.prototype.applyTextOutline=function(b){var d=this.element;-1!==b.indexOf(\"contrast\")&&(b=b.replace(/contrast/g,this.renderer.getContrast(d.style.fill)));\nvar g=b.split(\" \");b=g[g.length-1];if((g=g[0])&&\"none\"!==g&&F.svg){this.fakeTS=!0;this.ySetter=this.xSetter;g=g.replace(/(^[\\d\\.]+)(.*?)$/g,function(b,d,c){return 2*Number(d)+c});this.removeTextOutline();var m=n.createElementNS(c,\"tspan\");w(m,{\"class\":\"highcharts-text-outline\",fill:b,stroke:b,\"stroke-width\":g,\"stroke-linejoin\":\"round\"});[].forEach.call(d.childNodes,function(b){var d=b.cloneNode(!0);d.removeAttribute&&[\"fill\",\"stroke\",\"stroke-width\",\"stroke\"].forEach(function(b){return d.removeAttribute(b)});\nm.appendChild(d)});var e=n.createElementNS(c,\"tspan\");e.textContent=\"\\u200b\";[\"x\",\"y\"].forEach(function(b){var c=d.getAttribute(b);c&&e.setAttribute(b,c)});m.appendChild(e);d.insertBefore(m,d.firstChild)}};a.prototype.attr=function(b,d,c,g){var m=this.element,e=this.symbolCustomAttribs,L,l=this,E,a;if(\"string\"===typeof b&&\"undefined\"!==typeof d){var K=b;b={};b[K]=d}\"string\"===typeof b?l=(this[b+\"Getter\"]||this._defaultGetter).call(this,b,m):(D(b,function(d,c){E=!1;g||A(this,c);this.symbolName&&-1!==\ne.indexOf(c)&&(L||(this.symbolAttr(b),L=!0),E=!0);!this.rotation||\"x\"!==c&&\"y\"!==c||(this.doTransform=!0);E||(a=this[c+\"Setter\"]||this._defaultSetter,a.call(this,d,c,m),!this.styledMode&&this.shadows&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c)&&this.updateShadows(c,d,a))},this),this.afterSetters());c&&c.call(this);return l};a.prototype.clip=function(b){return this.attr(\"clip-path\",b?\"url(\"+this.renderer.url+\"#\"+b.id+\")\":\"none\")};a.prototype.crisp=function(b,d){d=d||b.strokeWidth||\n0;var c=Math.round(d)%2/2;b.x=Math.floor(b.x||this.x||0)+c;b.y=Math.floor(b.y||this.y||0)+c;b.width=Math.floor((b.width||this.width||0)-2*c);b.height=Math.floor((b.height||this.height||0)-2*c);t(b.strokeWidth)&&(b.strokeWidth=d);return b};a.prototype.complexColor=function(b,d,c){var g=this.renderer,e,L,a,h,E,x,p,f,k,w,B=[],I;r(this.renderer,\"complexColor\",{args:arguments},function(){b.radialGradient?L=\"radialGradient\":b.linearGradient&&(L=\"linearGradient\");if(L){a=b[L];E=g.gradients;x=b.stops;k=c.radialReference;\nl(a)&&(b[L]=a={x1:a[0],y1:a[1],x2:a[2],y2:a[3],gradientUnits:\"userSpaceOnUse\"});\"radialGradient\"===L&&k&&!t(a.gradientUnits)&&(h=a,a=m(a,g.getRadialAttr(k,h),{gradientUnits:\"userSpaceOnUse\"}));D(a,function(b,d){\"id\"!==d&&B.push(d,b)});D(x,function(b){B.push(b)});B=B.join(\",\");if(E[B])w=E[B].attr(\"id\");else{a.id=w=S();var K=E[B]=g.createElement(L).attr(a).add(g.defs);K.radAttr=h;K.stops=[];x.forEach(function(b){0===b[1].indexOf(\"rgba\")?(e=z.parse(b[1]),p=e.get(\"rgb\"),f=e.get(\"a\")):(p=b[1],f=1);b=g.createElement(\"stop\").attr({offset:b[0],\n\"stop-color\":p,\"stop-opacity\":f}).add(K);K.stops.push(b)})}I=\"url(\"+g.url+\"#\"+w+\")\";c.setAttribute(d,I);c.gradient=B;b.toString=function(){return I}}})};a.prototype.css=function(b){var d=this.styles,c={},g=this.element,m=[\"textOutline\",\"textOverflow\",\"width\"],a=\"\",l=!d;b&&b.color&&(b.fill=b.color);d&&D(b,function(b,g){d&&d[g]!==b&&(c[g]=b,l=!0)});if(l){d&&(b=C(d,c));if(b)if(null===b.width||\"auto\"===b.width)delete this.textWidth;else if(\"text\"===g.nodeName.toLowerCase()&&b.width)var r=this.textWidth=\nI(b.width);this.styles=b;r&&!e&&this.renderer.forExport&&delete b.width;if(g.namespaceURI===this.SVG_NS){var E=function(b,d){return\"-\"+d.toLowerCase()};D(b,function(b,d){-1===m.indexOf(d)&&(a+=d.replace(/([A-Z])/g,E)+\":\"+b+\";\")});a&&w(g,\"style\",a)}else B(g,b);this.added&&(\"text\"===this.element.nodeName&&this.renderer.buildText(this),b&&b.textOutline&&this.applyTextOutline(b.textOutline))}return this};a.prototype.dashstyleSetter=function(b){var d=this[\"stroke-width\"];\"inherit\"===d&&(d=1);if(b=b&&b.toLowerCase()){var c=\nb.replace(\"shortdashdotdot\",\"3,1,1,1,1,1,\").replace(\"shortdashdot\",\"3,1,1,1\").replace(\"shortdot\",\"1,1,\").replace(\"shortdash\",\"3,1,\").replace(\"longdash\",\"8,3,\").replace(/dot/g,\"1,3,\").replace(\"dash\",\"4,3,\").replace(/,$/,\"\").split(\",\");for(b=c.length;b--;)c[b]=\"\"+I(c[b])*x(d,NaN);b=c.join(\",\").replace(/NaN/g,\"none\");this.element.setAttribute(\"stroke-dasharray\",b)}};a.prototype.destroy=function(){var b=this,d=b.element||{},c=b.renderer,g=d.ownerSVGElement,m=c.isSVG&&\"SPAN\"===d.nodeName&&b.parentGroup||\nvoid 0;d.onclick=d.onmouseout=d.onmouseover=d.onmousemove=d.point=null;A(b);if(b.clipPath&&g){var e=b.clipPath;[].forEach.call(g.querySelectorAll(\"[clip-path],[CLIP-PATH]\"),function(b){-1f.width)f={width:0,\nheight:0}}else f=this.htmlGetBBox();g.isSVG&&(d=f.width,g=f.height,E&&(f.height=g={\"11px,17\":14,\"13px,20\":16}[(p||\"\")+\",\"+Math.round(g)]||g),c&&(E=c*q,f.width=Math.abs(g*Math.sin(E))+Math.abs(d*Math.cos(E)),f.height=Math.abs(g*Math.cos(E))+Math.abs(d*Math.sin(E))));if(D&&(\"\"===l||0]*>/g,\"\").replace(/</g,\"<\").replace(/>/g,\n\">\")};a.prototype.toFront=function(){var b=this.element;b.parentNode.appendChild(b);return this};a.prototype.translate=function(b,d){return this.attr({translateX:b,translateY:d})};a.prototype.updateShadows=function(b,d,c){var g=this.shadows;if(g)for(var m=g.length;m--;)c.call(g[m],\"height\"===b?Math.max(d-(g[m].cutHeight||0),0):\"d\"===b?this.d:d,b,g[m])};a.prototype.updateTransform=function(){var b=this.scaleX,d=this.scaleY,c=this.inverted,g=this.rotation,m=this.matrix,e=this.element,a=this.translateX||\n0,l=this.translateY||0;c&&(a+=this.width,l+=this.height);a=[\"translate(\"+a+\",\"+l+\")\"];t(m)&&a.push(\"matrix(\"+m.join(\",\")+\")\");c?a.push(\"rotate(90) scale(-1,1)\"):g&&a.push(\"rotate(\"+g+\" \"+x(this.rotationOriginX,e.getAttribute(\"x\"),0)+\" \"+x(this.rotationOriginY,e.getAttribute(\"y\")||0)+\")\");(t(b)||t(d))&&a.push(\"scale(\"+x(b,1)+\" \"+x(d,1)+\")\");a.length&&e.setAttribute(\"transform\",a.join(\" \"))};a.prototype.visibilitySetter=function(b,d,c){\"inherit\"===b?c.removeAttribute(d):this[d]!==b&&c.setAttribute(d,\nb);this[d]=b};a.prototype.xGetter=function(b){\"circle\"===this.element.nodeName&&(\"x\"===b?b=\"cx\":\"y\"===b&&(b=\"cy\"));return this._defaultGetter(b)};a.prototype.zIndexSetter=function(b,d){var c=this.renderer,g=this.parentGroup,m=(g||c).element||c.box,e=this.element;c=m===c.box;var a=!1;var l=this.added;var E;t(b)?(e.setAttribute(\"data-z-index\",b),b=+b,this[d]===b&&(l=!1)):t(this[d])&&e.removeAttribute(\"data-z-index\");this[d]=b;if(l){(b=this.zIndex)&&g&&(g.handleZ=!0);d=m.childNodes;for(E=d.length-1;0<=\nE&&!a;E--){g=d[E];l=g.getAttribute(\"data-z-index\");var r=!t(l);if(g!==e)if(0>b&&r&&!c&&!E)m.insertBefore(e,d[E]),a=!0;else if(I(l)<=b||r&&(!t(b)||0<=b))m.insertBefore(e,d[E+1]||null),a=!0}a||(m.insertBefore(e,d[c?3:0]||null),a=!0)}return a};return a}();a.prototype[\"stroke-widthSetter\"]=a.prototype.strokeSetter;a.prototype.yGetter=a.prototype.xGetter;a.prototype.matrixSetter=a.prototype.rotationOriginXSetter=a.prototype.rotationOriginYSetter=a.prototype.rotationSetter=a.prototype.scaleXSetter=a.prototype.scaleYSetter=\na.prototype.translateXSetter=a.prototype.translateYSetter=a.prototype.verticalAlignSetter=function(b,d){this[d]=b;this.doTransform=!0};\"\";return a});M(a,\"Core/Renderer/RendererRegistry.js\",[a[\"Core/Globals.js\"]],function(a){var v;(function(v){v.rendererTypes={};var u;v.getRendererType=function(a){void 0===a&&(a=u);return v.rendererTypes[a]||v.rendererTypes[u]};v.registerRendererType=function(y,z,H){v.rendererTypes[y]=z;if(!u||H)u=y,a.Renderer=z}})(v||(v={}));return v});M(a,\"Core/Renderer/SVG/SVGLabel.js\",\n[a[\"Core/Renderer/SVG/SVGElement.js\"],a[\"Core/Utilities.js\"]],function(a,u){var v=this&&this.__extends||function(){var a=function(k,e){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(c,e){c.__proto__=e}||function(c,e){for(var a in e)e.hasOwnProperty(a)&&(c[a]=e[a])};return a(k,e)};return function(k,e){function c(){this.constructor=k}a(k,e);k.prototype=null===e?Object.create(e):(c.prototype=e.prototype,new c)}}(),F=u.defined,y=u.extend,G=u.isNumber,H=u.merge,A=u.pick,q=u.removeEvent;\nreturn function(n){function k(e,c,a,f,w,p,B,t,J,C){var r=n.call(this)||this;r.paddingLeftSetter=r.paddingSetter;r.paddingRightSetter=r.paddingSetter;r.init(e,\"g\");r.textStr=c;r.x=a;r.y=f;r.anchorX=p;r.anchorY=B;r.baseline=J;r.className=C;r.addClass(\"button\"===C?\"highcharts-no-tooltip\":\"highcharts-label\");C&&r.addClass(\"highcharts-\"+C);r.text=e.text(void 0,0,0,t).attr({zIndex:1});var l;\"string\"===typeof w&&((l=/^url\\((.*?)\\)$/.test(w))||r.renderer.symbols[w])&&(r.symbolKey=w);r.bBox=k.emptyBBox;r.padding=\n3;r.baselineOffset=0;r.needsBox=e.styledMode||l;r.deferredAttr={};r.alignFactor=0;return r}v(k,n);k.prototype.alignSetter=function(e){e={left:0,center:.5,right:1}[e];e!==this.alignFactor&&(this.alignFactor=e,this.bBox&&G(this.xSetting)&&this.attr({x:this.xSetting}))};k.prototype.anchorXSetter=function(e,c){this.anchorX=e;this.boxAttr(c,Math.round(e)-this.getCrispAdjust()-this.xSetting)};k.prototype.anchorYSetter=function(e,c){this.anchorY=e;this.boxAttr(c,e-this.ySetting)};k.prototype.boxAttr=function(e,\nc){this.box?this.box.attr(e,c):this.deferredAttr[e]=c};k.prototype.css=function(e){if(e){var c={};e=H(e);k.textProps.forEach(function(a){\"undefined\"!==typeof e[a]&&(c[a]=e[a],delete e[a])});this.text.css(c);var h=\"width\"in c;\"fontSize\"in c||\"fontWeight\"in c?this.updateTextPadding():h&&this.updateBoxSize()}return a.prototype.css.call(this,e)};k.prototype.destroy=function(){q(this.element,\"mouseenter\");q(this.element,\"mouseleave\");this.text&&this.text.destroy();this.box&&(this.box=this.box.destroy());\na.prototype.destroy.call(this)};k.prototype.fillSetter=function(e,c){e&&(this.needsBox=!0);this.fill=e;this.boxAttr(c,e)};k.prototype.getBBox=function(){this.textStr&&0===this.bBox.width&&0===this.bBox.height&&this.updateBoxSize();var e=this.padding,c=A(this.paddingLeft,e);return{width:this.width,height:this.height,x:this.bBox.x-c,y:this.bBox.y-e}};k.prototype.getCrispAdjust=function(){return this.renderer.styledMode&&this.box?this.box.strokeWidth()%2/2:(this[\"stroke-width\"]?parseInt(this[\"stroke-width\"],\n10):0)%2/2};k.prototype.heightSetter=function(e){this.heightSetting=e};k.prototype.onAdd=function(){var e=this.textStr;this.text.add(this);this.attr({text:F(e)?e:\"\",x:this.x,y:this.y});this.box&&F(this.anchorX)&&this.attr({anchorX:this.anchorX,anchorY:this.anchorY})};k.prototype.paddingSetter=function(e,c){G(e)?e!==this[c]&&(this[c]=e,this.updateTextPadding()):this[c]=void 0};k.prototype.rSetter=function(e,c){this.boxAttr(c,e)};k.prototype.shadow=function(e){e&&!this.renderer.styledMode&&(this.updateBoxSize(),\nthis.box&&this.box.shadow(e));return this};k.prototype.strokeSetter=function(e,c){this.stroke=e;this.boxAttr(c,e)};k.prototype[\"stroke-widthSetter\"]=function(e,c){e&&(this.needsBox=!0);this[\"stroke-width\"]=e;this.boxAttr(c,e)};k.prototype[\"text-alignSetter\"]=function(e){this.textAlign=e};k.prototype.textSetter=function(e){\"undefined\"!==typeof e&&this.text.attr({text:e});this.updateTextPadding()};k.prototype.updateBoxSize=function(){var e=this.text.element.style,c={},a=this.padding,f=this.bBox=G(this.widthSetting)&&\nG(this.heightSetting)&&!this.textAlign||!F(this.text.textStr)?k.emptyBBox:this.text.getBBox();this.width=this.getPaddedWidth();this.height=(this.heightSetting||f.height||0)+2*a;e=this.renderer.fontMetrics(e&&e.fontSize,this.text);this.baselineOffset=a+Math.min((this.text.firstLineMetrics||e).b,f.height||Infinity);this.heightSetting&&(this.baselineOffset+=(this.heightSetting-e.h)/2);this.needsBox&&(this.box||(a=this.box=this.symbolKey?this.renderer.symbol(this.symbolKey):this.renderer.rect(),a.addClass((\"button\"===\nthis.className?\"\":\"highcharts-label-box\")+(this.className?\" highcharts-\"+this.className+\"-box\":\"\")),a.add(this)),a=this.getCrispAdjust(),c.x=a,c.y=(this.baseline?-this.baselineOffset:0)+a,c.width=Math.round(this.width),c.height=Math.round(this.height),this.box.attr(y(c,this.deferredAttr)),this.deferredAttr={})};k.prototype.updateTextPadding=function(){var a=this.text;this.updateBoxSize();var c=this.baseline?0:this.baselineOffset,h=A(this.paddingLeft,this.padding);F(this.widthSetting)&&this.bBox&&\n(\"center\"===this.textAlign||\"right\"===this.textAlign)&&(h+={center:.5,right:1}[this.textAlign]*(this.widthSetting-this.bBox.width));if(h!==a.x||c!==a.y)a.attr(\"x\",h),a.hasBoxWidthChanged&&(this.bBox=a.getBBox(!0)),\"undefined\"!==typeof c&&a.attr(\"y\",c);a.x=h;a.y=c};k.prototype.widthSetter=function(a){this.widthSetting=G(a)?a:void 0};k.prototype.getPaddedWidth=function(){var a=this.padding,c=A(this.paddingLeft,a);a=A(this.paddingRight,a);return(this.widthSetting||this.bBox.width||0)+c+a};k.prototype.xSetter=\nfunction(a){this.x=a;this.alignFactor&&(a-=this.alignFactor*this.getPaddedWidth(),this[\"forceAnimate:x\"]=!0);this.xSetting=Math.round(a);this.attr(\"translateX\",this.xSetting)};k.prototype.ySetter=function(a){this.ySetting=this.y=Math.round(a);this.attr(\"translateY\",this.ySetting)};k.emptyBBox={width:0,height:0,x:0,y:0};k.textProps=\"color direction fontFamily fontSize fontStyle fontWeight lineHeight textAlign textDecoration textOutline textOverflow width\".split(\" \");return k}(a)});M(a,\"Core/Renderer/SVG/Symbols.js\",\n[a[\"Core/Utilities.js\"]],function(a){function v(a,q,n,k,e){var c=[];if(e){var h=e.start||0,f=H(e.r,n);n=H(e.r,k||n);var w=(e.end||0)-.001;k=e.innerR;var p=H(e.open,.001>Math.abs((e.end||0)-h-2*Math.PI)),B=Math.cos(h),t=Math.sin(h),J=Math.cos(w),C=Math.sin(w);h=H(e.longArc,.001>w-h-Math.PI?0:1);c.push([\"M\",a+f*B,q+n*t],[\"A\",f,n,0,h,H(e.clockwise,1),a+f*J,q+n*C]);y(k)&&c.push(p?[\"M\",a+k*J,q+k*C]:[\"L\",a+k*J,q+k*C],[\"A\",k,k,0,h,y(e.clockwise)?1-e.clockwise:0,a+k*B,q+k*t]);p||c.push([\"Z\"])}return c}function z(a,\nq,n,k,e){return e&&e.r?F(a,q,n,k,e):[[\"M\",a,q],[\"L\",a+n,q],[\"L\",a+n,q+k],[\"L\",a,q+k],[\"Z\"]]}function F(a,q,n,k,e){e=e&&e.r||0;return[[\"M\",a+e,q],[\"L\",a+n-e,q],[\"C\",a+n,q,a+n,q,a+n,q+e],[\"L\",a+n,q+k-e],[\"C\",a+n,q+k,a+n,q+k,a+n-e,q+k],[\"L\",a+e,q+k],[\"C\",a,q+k,a,q+k,a,q+k-e],[\"L\",a,q+e],[\"C\",a,q,a,q,a+e,q]]}var y=a.defined,G=a.isNumber,H=a.pick;return{arc:v,callout:function(a,q,n,k,e){var c=Math.min(e&&e.r||0,n,k),h=c+6,f=e&&e.anchorX;e=e&&e.anchorY||0;var w=F(a,q,n,k,{r:c});if(!G(f))return w;a+f>=n?\ne>q+h&&e=a+f?e>q+h&&ek&&f>a+h&&fe&&f>a+h&&f/g,t=[f,this.ellipsis,this.noWrap,this.textLineHeight,this.textOutline,this.fontSize,this.width].join();if(t!==e.textCache){e.textCache=t;delete e.actualWidth;for(t=p.length;t--;)c.removeChild(p[t]);k||this.ellipsis||this.width||-1!==f.indexOf(\" \")&&(!this.noWrap||B.test(f))?\"\"!==f&&(h&&h.appendChild(c),f=new a(f),this.modifyTree(f.nodes),f.addToDOM(e.element),this.modifyDOM(),this.ellipsis&&-1!==(c.textContent||\"\").indexOf(\"\\u2026\")&&e.attr(\"title\",\nthis.unescapeEntities(e.textStr||\"\",[\"<\",\">\"])),h&&h.removeChild(c)):c.appendChild(v.createTextNode(this.unescapeEntities(f)));A(this.textOutline)&&e.applyTextOutline&&e.applyTextOutline(this.textOutline)}};k.prototype.modifyDOM=function(){var a=this,c=this.svgElement,h=H(c.element,\"x\");c.firstLineMetrics=void 0;for(var f;f=c.element.firstChild;)if(/^[\\s\\u200B]*$/.test(f.textContent||\" \"))c.element.removeChild(f);else break;[].forEach.call(c.element.querySelectorAll(\"tspan.highcharts-br\"),function(e,\np){e.nextSibling&&e.previousSibling&&(0===p&&1===e.previousSibling.nodeType&&(c.firstLineMetrics=c.renderer.fontMetrics(void 0,e.previousSibling)),H(e,{dy:a.getLineHeight(e.nextSibling),x:h}))});var k=this.width||0;if(k){var p=function(e,p){var f=e.textContent||\"\",r=f.replace(/([^\\^])-/g,\"$1- \").split(\" \"),l=!a.noWrap&&(1k){for(;r<=l;)b=Math.ceil((r+l)/2),h&&(g=p(h,b)),m=d(b,g&&g.length-1),r===l?r=l+1:m>k?l=b-1:r=b;0===l?a.textContent=\"\":c&&l===c.length-1||(a.textContent=g||p(c||h,b))}h&&h.splice(0,b);e.actualWidth=m;e.rotation=w};k.prototype.unescapeEntities=\nfunction(a,c){q(this.renderer.escapes,function(e,f){c&&-1!==c.indexOf(e)||(a=a.toString().replace(new RegExp(e,\"g\"),f))});return a};return k}()});M(a,\"Core/Renderer/SVG/SVGRenderer.js\",[a[\"Core/Renderer/HTML/AST.js\"],a[\"Core/Color/Color.js\"],a[\"Core/Globals.js\"],a[\"Core/Renderer/RendererRegistry.js\"],a[\"Core/Renderer/SVG/SVGElement.js\"],a[\"Core/Renderer/SVG/SVGLabel.js\"],a[\"Core/Renderer/SVG/Symbols.js\"],a[\"Core/Renderer/SVG/TextBuilder.js\"],a[\"Core/Utilities.js\"]],function(a,u,z,F,y,G,H,A,q){var n=\nz.charts,k=z.deg2rad,e=z.doc,c=z.isFirefox,h=z.isMS,f=z.isWebKit,w=z.noop,p=z.SVG_NS,B=z.symbolSizes,t=z.win,J=q.addEvent,C=q.attr,r=q.createElement,l=q.css,b=q.defined,g=q.destroyObjectProperties,d=q.extend,m=q.isArray,D=q.isNumber,x=q.isObject,I=q.isString,P=q.merge,v=q.pick,O=q.pInt,U=q.uniqueKey,Y;z=function(){function L(b,d,a,c,g,m,e){this.width=this.url=this.style=this.isSVG=this.imgCount=this.height=this.gradients=this.globalAnimation=this.defs=this.chartIndex=this.cacheKeys=this.cache=this.boxWrapper=\nthis.box=this.alignedObjects=void 0;this.init(b,d,a,c,g,m,e)}L.prototype.init=function(b,d,a,g,m,E,L){var r=this.createElement(\"svg\").attr({version:\"1.1\",\"class\":\"highcharts-root\"}),K=r.element;L||r.css(this.getStyle(g));b.appendChild(K);C(b,\"dir\",\"ltr\");-1===b.innerHTML.indexOf(\"xmlns\")&&C(K,\"xmlns\",this.SVG_NS);this.isSVG=!0;this.box=K;this.boxWrapper=r;this.alignedObjects=[];this.url=this.getReferenceURL();this.createElement(\"desc\").add().element.appendChild(e.createTextNode(\"Created with Highcharts 9.3.3\"));\nthis.defs=this.createElement(\"defs\").add();this.allowHTML=E;this.forExport=m;this.styledMode=L;this.gradients={};this.cache={};this.cacheKeys=[];this.imgCount=0;this.setSize(d,a,!1);var p;c&&b.getBoundingClientRect&&(d=function(){l(b,{left:0,top:0});p=b.getBoundingClientRect();l(b,{left:Math.ceil(p.left)-p.left+\"px\",top:Math.ceil(p.top)-p.top+\"px\"})},d(),this.unSubPixelFix=J(t,\"resize\",d))};L.prototype.definition=function(b){return(new a([b])).addToDOM(this.defs.element)};L.prototype.getReferenceURL=\nfunction(){if((c||f)&&e.getElementsByTagName(\"base\").length){if(!b(Y)){var d=U();d=(new a([{tagName:\"svg\",attributes:{width:8,height:8},children:[{tagName:\"defs\",children:[{tagName:\"clipPath\",attributes:{id:d},children:[{tagName:\"rect\",attributes:{width:4,height:4}}]}]},{tagName:\"rect\",attributes:{id:\"hitme\",width:8,height:8,\"clip-path\":\"url(#\"+d+\")\",fill:\"rgba(0,0,0,0.001)\"}}]}])).addToDOM(e.body);l(d,{position:\"fixed\",top:0,left:0,zIndex:9E5});var g=e.elementFromPoint(6,6);Y=\"hitme\"===(g&&g.id);\ne.body.removeChild(d)}if(Y)return t.location.href.split(\"#\")[0].replace(/<[^>]*>/g,\"\").replace(/([\\('\\)])/g,\"\\\\$1\").replace(/ /g,\"%20\")}return\"\"};L.prototype.getStyle=function(b){return this.style=d({fontFamily:'\"Lucida Grande\", \"Lucida Sans Unicode\", Arial, Helvetica, sans-serif',fontSize:\"12px\"},b)};L.prototype.setStyle=function(b){this.boxWrapper.css(this.getStyle(b))};L.prototype.isHidden=function(){return!this.boxWrapper.getBBox().width};L.prototype.destroy=function(){var b=this.defs;this.box=\nnull;this.boxWrapper=this.boxWrapper.destroy();g(this.gradients||{});this.gradients=null;b&&(this.defs=b.destroy());this.unSubPixelFix&&this.unSubPixelFix();return this.alignedObjects=null};L.prototype.createElement=function(b){var d=new this.Element;d.init(this,b);return d};L.prototype.getRadialAttr=function(b,d){return{cx:b[0]-b[2]/2+(d.cx||0)*b[2],cy:b[1]-b[2]/2+(d.cy||0)*b[2],r:(d.r||0)*b[2]}};L.prototype.buildText=function(b){(new A(b)).buildSVG()};L.prototype.getContrast=function(b){b=u.parse(b).rgba;\nb[0]*=1;b[1]*=1.2;b[2]*=.5;return 459b?b+3:Math.round(1.2*b);return{h:d,b:Math.round(.8*d),f:b}};L.prototype.rotCorr=function(b,d,\na){var c=b;d&&a&&(c=Math.max(c*Math.cos(d*k),4));return{x:-b/3*Math.sin(d*k),y:c}};L.prototype.pathToSegments=function(b){for(var d=[],a=[],c={A:8,C:7,H:2,L:3,M:3,Q:5,S:5,T:3,V:2},g=0;g\":\">\",\"'\":\"'\",'\"':\""\"},symbols:H,draw:w});F.registerRendererType(\"svg\",z,!0);\"\";return z});M(a,\"Core/Renderer/HTML/HTMLElement.js\",[a[\"Core/Globals.js\"],a[\"Core/Renderer/SVG/SVGElement.js\"],a[\"Core/Utilities.js\"]],function(a,u,z){var v=this&&this.__extends||function(){var a=function(c,e){a=Object.setPrototypeOf||{__proto__:[]}instanceof\nArray&&function(a,c){a.__proto__=c}||function(a,c){for(var e in c)c.hasOwnProperty(e)&&(a[e]=c[e])};return a(c,e)};return function(c,e){function p(){this.constructor=c}a(c,e);c.prototype=null===e?Object.create(e):(p.prototype=e.prototype,new p)}}(),y=a.isFirefox,G=a.isMS,H=a.isWebKit,A=a.win,q=z.css,n=z.defined,k=z.extend,e=z.pick,c=z.pInt;return function(a){function h(){return null!==a&&a.apply(this,arguments)||this}v(h,a);h.compose=function(a){if(-1===h.composedClasses.indexOf(a)){h.composedClasses.push(a);\nvar c=h.prototype,e=a.prototype;e.getSpanCorrection=c.getSpanCorrection;e.htmlCss=c.htmlCss;e.htmlGetBBox=c.htmlGetBBox;e.htmlUpdateTransform=c.htmlUpdateTransform;e.setSpanRotation=c.setSpanRotation}return a};h.prototype.getSpanCorrection=function(a,c,e){this.xCorr=-a*e;this.yCorr=-c};h.prototype.htmlCss=function(a){var c=\"SPAN\"===this.element.tagName&&a&&\"width\"in a,h=e(c&&a.width,void 0);if(c){delete a.width;this.textWidth=h;var f=!0}a&&\"ellipsis\"===a.textOverflow&&(a.whiteSpace=\"nowrap\",a.overflow=\n\"hidden\");this.styles=k(this.styles,a);q(this.element,a);f&&this.htmlUpdateTransform();return this};h.prototype.htmlGetBBox=function(){var a=this.element;return{x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}};h.prototype.htmlUpdateTransform=function(){if(this.added){var a=this.renderer,e=this.element,h=this.translateX||0,f=this.translateY||0,k=this.x||0,C=this.y||0,r=this.textAlign||\"left\",l={left:0,center:.5,right:1}[r],b=this.styles;b=b&&b.whiteSpace;q(e,{marginLeft:h,marginTop:f});\n!a.styledMode&&this.shadows&&this.shadows.forEach(function(b){q(b,{marginLeft:h+1,marginTop:f+1})});this.inverted&&[].forEach.call(e.childNodes,function(b){a.invertChild(b,e)});if(\"SPAN\"===e.tagName){var g=this.rotation,d=this.textWidth&&c(this.textWidth),m=[g,r,e.innerHTML,this.textWidth,this.textAlign].join(),D=void 0;D=!1;if(d!==this.oldTextWidth){if(this.textPxLength)var x=this.textPxLength;else q(e,{width:\"\",whiteSpace:b||\"nowrap\"}),x=e.offsetWidth;(d>this.oldTextWidth||x>d)&&(/[ \\-]/.test(e.textContent||\ne.innerText)||\"ellipsis\"===e.style.textOverflow)&&(q(e,{width:x>d||g?d+\"px\":\"auto\",display:\"block\",whiteSpace:b||\"normal\"}),this.oldTextWidth=d,D=!0)}this.hasBoxWidthChanged=D;m!==this.cTT&&(D=a.fontMetrics(e.style.fontSize,e).b,!n(g)||g===(this.oldRotation||0)&&r===this.oldAlign||this.setSpanRotation(g,l,D),this.getSpanCorrection(!n(g)&&this.textPxLength||e.offsetWidth,D,l,g,r));q(e,{left:k+(this.xCorr||0)+\"px\",top:C+(this.yCorr||0)+\"px\"});this.cTT=m;this.oldRotation=g;this.oldAlign=r}}else this.alignOnAdd=\n!0};h.prototype.setSpanRotation=function(a,c,e){var h={},p=G&&!/Edge/.test(A.navigator.userAgent)?\"-ms-transform\":H?\"-webkit-transform\":y?\"MozTransform\":A.opera?\"-o-transform\":void 0;p&&(h[p]=h.transform=\"rotate(\"+a+\"deg)\",h[p+(y?\"Origin\":\"-origin\")]=h.transformOrigin=100*c+\"% \"+e+\"px\",q(this.element,h))};h.composedClasses=[];return h}(u)});M(a,\"Core/Renderer/HTML/HTMLRenderer.js\",[a[\"Core/Renderer/HTML/AST.js\"],a[\"Core/Renderer/SVG/SVGElement.js\"],a[\"Core/Renderer/SVG/SVGRenderer.js\"],a[\"Core/Utilities.js\"]],\nfunction(a,u,z,F){var v=this&&this.__extends||function(){var a=function(k,e){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,e){a.__proto__=e}||function(a,e){for(var c in e)e.hasOwnProperty(c)&&(a[c]=e[c])};return a(k,e)};return function(k,e){function c(){this.constructor=k}a(k,e);k.prototype=null===e?Object.create(e):(c.prototype=e.prototype,new c)}}(),G=F.attr,H=F.createElement,A=F.extend,q=F.pick;return function(n){function k(){return null!==n&&n.apply(this,arguments)||this}\nv(k,n);k.compose=function(a){-1===k.composedClasses.indexOf(a)&&(k.composedClasses.push(a),a.prototype.html=k.prototype.html);return a};k.prototype.html=function(e,c,h){var f=this.createElement(\"span\"),k=f.element,p=f.renderer,n=p.isSVG,t=function(a,c){[\"opacity\",\"visibility\"].forEach(function(e){a[e+\"Setter\"]=function(l,b,g){var d=a.div?a.div.style:c;u.prototype[e+\"Setter\"].call(this,l,b,g);d&&(d[b]=l)}});a.addedSetters=!0};f.textSetter=function(c){c!==this.textStr&&(delete this.bBox,delete this.oldTextWidth,\na.setElementHTML(this.element,q(c,\"\")),this.textStr=c,f.doTransform=!0)};n&&t(f,f.element.style);f.xSetter=f.ySetter=f.alignSetter=f.rotationSetter=function(a,c){\"align\"===c?f.alignValue=f.textAlign=a:f[c]=a;f.doTransform=!0};f.afterSetters=function(){this.doTransform&&(this.htmlUpdateTransform(),this.doTransform=!1)};f.attr({text:e,x:Math.round(c),y:Math.round(h)}).css({position:\"absolute\"});p.styledMode||f.css({fontFamily:this.style.fontFamily,fontSize:this.style.fontSize});k.style.whiteSpace=\"nowrap\";\nf.css=f.htmlCss;n&&(f.add=function(a){var c=p.box.parentNode,e=[];if(this.parentGroup=a){var l=a.div;if(!l){for(;a;)e.push(a),a=a.parentGroup;e.reverse().forEach(function(b){function a(d,a){b[a]=d;\"translateX\"===a?r.left=d+\"px\":r.top=d+\"px\";b.doTransform=!0}var d=G(b.element,\"class\"),m=b.styles||{};l=b.div=b.div||H(\"div\",d?{className:d}:void 0,{position:\"absolute\",left:(b.translateX||0)+\"px\",top:(b.translateY||0)+\"px\",display:b.display,opacity:b.opacity,cursor:m.cursor,pointerEvents:m.pointerEvents,\nvisibility:b.visibility},l||c);var r=l.style;A(b,{classSetter:function(b){return function(d){this.element.setAttribute(\"class\",d);b.className=d}}(l),on:function(){e[0].div&&f.on.apply({element:e[0].div,onEvents:b.onEvents},arguments);return b},translateXSetter:a,translateYSetter:a});b.addedSetters||t(b)})}}else l=c;l.appendChild(k);f.added=!0;f.alignOnAdd&&f.htmlUpdateTransform();return f});return f};k.composedClasses=[];return k}(z)});M(a,\"Core/Axis/AxisDefaults.js\",[],function(){var a;(function(a){a.defaultXAxisOptions=\n{alignTicks:!0,allowDecimals:void 0,panningEnabled:!0,zIndex:2,zoomEnabled:!0,dateTimeLabelFormats:{millisecond:{main:\"%H:%M:%S.%L\",range:!1},second:{main:\"%H:%M:%S\",range:!1},minute:{main:\"%H:%M\",range:!1},hour:{main:\"%H:%M\",range:!1},day:{main:\"%e. %b\"},week:{main:\"%e. %b\"},month:{main:\"%b '%y\"},year:{main:\"%Y\"}},endOnTick:!1,gridLineDashStyle:\"Solid\",gridZIndex:1,labels:{autoRotation:void 0,autoRotationLimit:80,distance:void 0,enabled:!0,indentation:10,overflow:\"justify\",padding:5,reserveSpace:void 0,\nrotation:void 0,staggerLines:0,step:0,useHTML:!1,x:0,zIndex:7,style:{color:\"#666666\",cursor:\"default\",fontSize:\"11px\"}},maxPadding:.01,minorGridLineDashStyle:\"Solid\",minorTickLength:2,minorTickPosition:\"outside\",minPadding:.01,offset:void 0,opposite:!1,reversed:void 0,reversedStacks:!1,showEmpty:!0,showFirstLabel:!0,showLastLabel:!0,startOfWeek:1,startOnTick:!1,tickLength:10,tickPixelInterval:100,tickmarkPlacement:\"between\",tickPosition:\"outside\",title:{align:\"middle\",rotation:0,useHTML:!1,x:0,y:0,\nstyle:{color:\"#666666\"}},type:\"linear\",uniqueNames:!0,visible:!0,minorGridLineColor:\"#f2f2f2\",minorGridLineWidth:1,minorTickColor:\"#999999\",lineColor:\"#ccd6eb\",lineWidth:1,gridLineColor:\"#e6e6e6\",gridLineWidth:void 0,tickColor:\"#ccd6eb\"};a.defaultYAxisOptions={reversedStacks:!0,endOnTick:!0,maxPadding:.05,minPadding:.05,tickPixelInterval:72,showLastLabel:!0,labels:{x:-8},startOnTick:!0,title:{rotation:270,text:\"Values\"},stackLabels:{animation:{},allowOverlap:!1,enabled:!1,crop:!0,overflow:\"justify\",\nformatter:function(){var a=this.axis.chart.numberFormatter;return a(this.total,-1)},style:{color:\"#000000\",fontSize:\"11px\",fontWeight:\"bold\",textOutline:\"1px contrast\"}},gridLineWidth:1,lineWidth:0};a.defaultLeftAxisOptions={labels:{x:-15},title:{rotation:270}};a.defaultRightAxisOptions={labels:{x:15},title:{rotation:90}};a.defaultBottomAxisOptions={labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}};a.defaultTopAxisOptions={labels:{autoRotation:[-45],x:0},margin:15,title:{rotation:0}}})(a||\n(a={}));return a});M(a,\"Core/Foundation.js\",[a[\"Core/Utilities.js\"]],function(a){var v=a.addEvent,z=a.isFunction,F=a.objectEach,y=a.removeEvent,G;(function(a){a.registerEventOptions=function(a,q){a.eventOptions=a.eventOptions||{};F(q.events,function(n,k){a.eventOptions[k]!==n&&(a.eventOptions[k]&&(y(a,k,a.eventOptions[k]),delete a.eventOptions[k]),z(n)&&(a.eventOptions[k]=n,v(a,k,n)))})}})(G||(G={}));return G});M(a,\"Core/Axis/Tick.js\",[a[\"Core/FormatUtilities.js\"],a[\"Core/Globals.js\"],a[\"Core/Utilities.js\"]],\nfunction(a,u,z){var v=u.deg2rad,y=z.clamp,G=z.correctFloat,H=z.defined,A=z.destroyObjectProperties,q=z.extend,n=z.fireEvent,k=z.isNumber,e=z.merge,c=z.objectEach,h=z.pick;u=function(){function f(a,c,e,h,f){this.isNewLabel=this.isNew=!0;this.axis=a;this.pos=c;this.type=e||\"\";this.parameters=f||{};this.tickmarkOffset=this.parameters.tickmarkOffset;this.options=this.parameters.options;n(this,\"init\");e||h||this.addLabel()}f.prototype.addLabel=function(){var c=this,e=c.axis,f=e.options,t=e.chart,J=e.categories,\nC=e.logarithmic,r=e.names,l=c.pos,b=h(c.options&&c.options.labels,f.labels),g=e.tickPositions,d=l===g[0],m=l===g[g.length-1],D=(!b.step||1===b.step)&&1===e.tickInterval;g=g.info;var x=c.label,I;J=this.parameters.category||(J?h(J[l],r[l],l):l);C&&k(J)&&(J=G(C.lin2log(J)));if(e.dateTime)if(g){var P=t.time.resolveDTLFormat(f.dateTimeLabelFormats[!f.grid&&g.higherRanks[l]||g.unitName]);var v=P.main}else k(J)&&(v=e.dateTime.getXDateFormat(J,f.dateTimeLabelFormats||{}));c.isFirst=d;c.isLast=m;var O={axis:e,\nchart:t,dateTimeLabelFormat:v,isFirst:d,isLast:m,pos:l,tick:c,tickPositionInfo:g,value:J};n(this,\"labelFormat\",O);var u=function(d){return b.formatter?b.formatter.call(d,d):b.format?(d.text=e.defaultLabelFormatter.call(d),a.format(b.format,d,t)):e.defaultLabelFormatter.call(d,d)};f=u.call(O,O);var A=P&&P.list;c.shortenLabel=A?function(){for(I=0;Ib&&f-g*dn&&(w=Math.round((k-f)/Math.cos(b*v)));else if(k=f+(1-g)*d,f-g*dn&&(x=n-a.x+x*g,I=-1),x=Math.min(m,x),xx||c.autoRotation&&(l.styles||{}).width)w=x;w&&(this.shortenLabel?this.shortenLabel():(D.width=Math.floor(w)+\"px\",(e.style||{}).textOverflow||(D.textOverflow=\n\"ellipsis\"),l.css(D)))};f.prototype.moveLabel=function(a,e){var h=this,f=h.label,k=h.axis,p=k.reversed,r=!1;f&&f.textStr===a?(h.movedLabel=f,r=!0,delete h.label):c(k.ticks,function(b){r||b.isNew||b===h||!b.label||b.label.textStr!==a||(h.movedLabel=b.label,r=!0,b.labelPos=h.movedLabel.xy,delete b.label)});if(!r&&(h.labelPos||f)){var l=h.labelPos||f.xy;f=k.horiz?p?0:k.width+k.left:l.x;k=k.horiz?l.y:p?k.width+k.left:0;h.movedLabel=h.createLabel({x:f,y:k},a,e);h.movedLabel&&h.movedLabel.attr({opacity:0})}};\nf.prototype.render=function(a,c,e){var f=this.axis,k=f.horiz,p=this.pos,r=h(this.tickmarkOffset,f.tickmarkOffset);p=this.getPosition(k,p,r,c);r=p.x;var l=p.y;f=k&&r===f.pos+f.len||!k&&l===f.pos?-1:1;k=h(e,this.label&&this.label.newOpacity,1);e=h(e,1);this.isActive=!0;this.renderGridLine(c,e,f);this.renderMark(p,e,f);this.renderLabel(p,c,k,a);this.isNew=!1;n(this,\"afterRender\")};f.prototype.renderGridLine=function(a,c,e){var f=this.axis,k=f.options,p={},r=this.pos,l=this.type,b=h(this.tickmarkOffset,\nf.tickmarkOffset),g=f.chart.renderer,d=this.gridLine,m=k.gridLineWidth,D=k.gridLineColor,x=k.gridLineDashStyle;\"minor\"===this.type&&(m=k.minorGridLineWidth,D=k.minorGridLineColor,x=k.minorGridLineDashStyle);d||(f.chart.styledMode||(p.stroke=D,p[\"stroke-width\"]=m||0,p.dashstyle=x),l||(p.zIndex=1),a&&(c=0),this.gridLine=d=g.path().attr(p).addClass(\"highcharts-\"+(l?l+\"-\":\"\")+\"grid-line\").add(f.gridGroup));if(d&&(e=f.getPlotLinePath({value:r+b,lineWidth:d.strokeWidth()*e,force:\"pass\",old:a})))d[a||this.isNew?\n\"attr\":\"animate\"]({d:e,opacity:c})};f.prototype.renderMark=function(a,c,e){var f=this.axis,k=f.options,p=f.chart.renderer,r=this.type,l=f.tickSize(r?r+\"Tick\":\"tick\"),b=a.x;a=a.y;var g=h(k[\"minor\"!==r?\"tickWidth\":\"minorTickWidth\"],!r&&f.isXAxis?1:0);k=k[\"minor\"!==r?\"tickColor\":\"minorTickColor\"];var d=this.mark,m=!d;l&&(f.opposite&&(l[0]=-l[0]),d||(this.mark=d=p.path().addClass(\"highcharts-\"+(r?r+\"-\":\"\")+\"tick\").add(f.axisGroup),f.chart.styledMode||d.attr({stroke:k,\"stroke-width\":g})),d[m?\"attr\":\"animate\"]({d:this.getMarkPath(b,\na,l[0],d.strokeWidth()*e,f.horiz,p),opacity:c}))};f.prototype.renderLabel=function(a,c,e,f){var p=this.axis,n=p.horiz,r=p.options,l=this.label,b=r.labels,g=b.step;p=h(this.tickmarkOffset,p.tickmarkOffset);var d=a.x;a=a.y;var m=!0;l&&k(d)&&(l.xy=a=this.getLabelPosition(d,a,l,n,b,p,f,g),this.isFirst&&!this.isLast&&!r.showFirstLabel||this.isLast&&!this.isFirst&&!r.showLastLabel?m=!1:!n||b.step||b.rotation||c||0===e||this.handleOverflow(a),g&&f%g&&(m=!1),m&&k(a.y)?(a.opacity=e,l[this.isNewLabel?\"attr\":\n\"animate\"](a),this.isNewLabel=!1):(l.attr(\"y\",-9999),this.isNewLabel=!0))};f.prototype.replaceMovedLabel=function(){var a=this.label,c=this.axis,e=c.reversed;if(a&&!this.isNew){var f=c.horiz?e?c.left:c.width+c.left:a.xy.x;e=c.horiz?a.xy.y:e?c.width+c.top:c.top;a.animate({x:f,y:e,opacity:0},void 0,a.destroy);delete this.label}c.isDirty=!0;this.label=this.movedLabel;delete this.movedLabel};return f}();\"\";return u});M(a,\"Core/Axis/Axis.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/Axis/AxisDefaults.js\"],\na[\"Core/Color/Color.js\"],a[\"Core/DefaultOptions.js\"],a[\"Core/Foundation.js\"],a[\"Core/Globals.js\"],a[\"Core/Axis/Tick.js\"],a[\"Core/Utilities.js\"]],function(a,u,z,F,y,G,H,A){var q=a.animObject,n=F.defaultOptions,k=y.registerEventOptions,e=G.deg2rad,c=A.arrayMax,h=A.arrayMin,f=A.clamp,w=A.correctFloat,p=A.defined,B=A.destroyObjectProperties,t=A.erase,J=A.error,C=A.extend,r=A.fireEvent,l=A.getMagnitude,b=A.isArray,g=A.isNumber,d=A.isString,m=A.merge,D=A.normalizeTickInterval,x=A.objectEach,I=A.pick,P=\nA.relativeLength,v=A.removeEvent,O=A.splat,U=A.syncTimeout;a=function(){function a(b,d){this.zoomEnabled=this.width=this.visible=this.userOptions=this.translationSlope=this.transB=this.transA=this.top=this.ticks=this.tickRotCorr=this.tickPositions=this.tickmarkOffset=this.tickInterval=this.tickAmount=this.side=this.series=this.right=this.positiveValuesOnly=this.pos=this.pointRangePadding=this.pointRange=this.plotLinesAndBandsGroups=this.plotLinesAndBands=this.paddedTicks=this.overlap=this.options=\nthis.offset=this.names=this.minPixelPadding=this.minorTicks=this.minorTickInterval=this.min=this.maxLabelLength=this.max=this.len=this.left=this.labelFormatter=this.labelEdge=this.isLinked=this.height=this.hasVisibleSeries=this.hasNames=this.eventOptions=this.coll=this.closestPointRange=this.chart=this.categories=this.bottom=this.alternateBands=void 0;this.init(b,d)}a.prototype.init=function(b,d){var a=d.isX;this.chart=b;this.horiz=b.inverted&&!this.isZAxis?!a:a;this.isXAxis=a;this.coll=this.coll||\n(a?\"xAxis\":\"yAxis\");r(this,\"init\",{userOptions:d});this.opposite=I(d.opposite,this.opposite);this.side=I(d.side,this.side,this.horiz?this.opposite?0:2:this.opposite?1:3);this.setOptions(d);var c=this.options,e=c.labels,m=c.type;this.userOptions=d;this.minPixelPadding=0;this.reversed=I(c.reversed,this.reversed);this.visible=c.visible;this.zoomEnabled=c.zoomEnabled;this.hasNames=\"category\"===m||!0===c.categories;this.categories=c.categories||this.hasNames;this.names||(this.names=[],this.names.keys=\n{});this.plotLinesAndBandsGroups={};this.positiveValuesOnly=!!this.logarithmic;this.isLinked=p(c.linkedTo);this.ticks={};this.labelEdge=[];this.minorTicks={};this.plotLinesAndBands=[];this.alternateBands={};this.len=0;this.minRange=this.userMinRange=c.minRange||c.maxZoom;this.range=c.range;this.offset=c.offset||0;this.min=this.max=null;d=I(c.crosshair,O(b.options.tooltip.crosshairs)[a?0:1]);this.crosshair=!0===d?{}:d;-1===b.axes.indexOf(this)&&(a?b.axes.splice(b.xAxis.length,0,this):b.axes.push(this),\nb[this.coll].push(this));this.series=this.series||[];b.inverted&&!this.isZAxis&&a&&\"undefined\"===typeof this.reversed&&(this.reversed=!0);this.labelRotation=g(e.rotation)?e.rotation:void 0;k(this,c);r(this,\"afterInit\")};a.prototype.setOptions=function(b){this.options=m(u.defaultXAxisOptions,\"yAxis\"===this.coll&&u.defaultYAxisOptions,[u.defaultTopAxisOptions,u.defaultRightAxisOptions,u.defaultBottomAxisOptions,u.defaultLeftAxisOptions][this.side],m(n[this.coll],b));r(this,\"afterSetOptions\",{userOptions:b})};\na.prototype.defaultLabelFormatter=function(b){var d=this.axis;b=this.chart.numberFormatter;var a=g(this.value)?this.value:NaN,c=d.chart.time,e=this.dateTimeLabelFormat,m=n.lang,l=m.numericSymbols;m=m.numericSymbolMagnitude||1E3;var f=d.logarithmic?Math.abs(a):d.tickInterval,h=l&&l.length;if(d.categories)var r=\"\"+this.value;else if(e)r=c.dateFormat(e,a);else if(h&&1E3<=f)for(;h--&&\"undefined\"===typeof r;)d=Math.pow(m,h+1),f>=d&&0===10*a%d&&null!==l[h]&&0!==a&&(r=b(a/d,-1)+l[h]);\"undefined\"===typeof r&&\n(r=1E4<=Math.abs(a)?b(a,-1):b(a,-1,void 0,\"\"));return r};a.prototype.getSeriesExtremes=function(){var b=this,d=b.chart,a;r(this,\"getSeriesExtremes\",null,function(){b.hasVisibleSeries=!1;b.dataMin=b.dataMax=b.threshold=null;b.softThreshold=!b.isXAxis;b.stacking&&b.stacking.buildStacks();b.series.forEach(function(c){if(c.visible||!d.options.chart.ignoreHiddenSeries){var e=c.options,m=e.threshold;b.hasVisibleSeries=!0;b.positiveValuesOnly&&0>=m&&(m=null);if(b.isXAxis){if(e=c.xData,e.length){e=b.logarithmic?\ne.filter(b.validatePositiveValue):e;a=c.getXExtremes(e);var l=a.min;var f=a.max;g(l)||l instanceof Date||(e=e.filter(g),a=c.getXExtremes(e),l=a.min,f=a.max);e.length&&(b.dataMin=Math.min(I(b.dataMin,l),l),b.dataMax=Math.max(I(b.dataMax,f),f))}}else if(c=c.applyExtremes(),g(c.dataMin)&&(l=c.dataMin,b.dataMin=Math.min(I(b.dataMin,l),l)),g(c.dataMax)&&(f=c.dataMax,b.dataMax=Math.max(I(b.dataMax,f),f)),p(m)&&(b.threshold=m),!e.softThreshold||b.positiveValuesOnly)b.softThreshold=!1}})});r(this,\"afterGetSeriesExtremes\")};\na.prototype.translate=function(b,d,a,c,e,m){var l=this.linkedParent||this,f=c&&l.old?l.old.min:l.min,r=l.minPixelPadding;e=(l.isOrdinal||l.brokenAxis&&l.brokenAxis.hasBreaks||l.logarithmic&&e)&&l.lin2val;var h=1,k=0;c=c&&l.old?l.old.transA:l.transA;c||(c=l.transA);a&&(h*=-1,k=l.len);l.reversed&&(h*=-1,k-=h*(l.sector||l.len));d?(b=(b*h+k-r)/c+f,e&&(b=l.lin2val(b))):(e&&(b=l.val2lin(b)),b=g(f)?h*(b-f)*c+k+h*r+(g(m)?c*m:0):void 0);return b};a.prototype.toPixels=function(b,d){return this.translate(b,\n!1,!this.horiz,null,!0)+(d?0:this.pos)};a.prototype.toValue=function(b,d){return this.translate(b-(d?0:this.pos),!0,!this.horiz,null,!0)};a.prototype.getPlotLinePath=function(b){function d(b,d,a){if(\"pass\"!==n&&ba)n?b=f(b,d,a):B=!0;return b}var a=this,c=a.chart,e=a.left,m=a.top,l=b.old,h=b.value,k=b.lineWidth,x=l&&c.oldChartHeight||c.chartHeight,D=l&&c.oldChartWidth||c.chartWidth,L=a.transB,p=b.translatedValue,n=b.force,t,C,w,q,B;b={value:h,lineWidth:k,old:l,force:n,acrossPanes:b.acrossPanes,\ntranslatedValue:p};r(this,\"getPlotLinePath\",b,function(b){p=I(p,a.translate(h,null,null,l));p=f(p,-1E5,1E5);t=w=Math.round(p+L);C=q=Math.round(x-p-L);g(p)?a.horiz?(C=m,q=x-a.bottom,t=w=d(t,e,e+a.width)):(t=e,w=D-a.right,C=q=d(C,m,m+a.height)):(B=!0,n=!1);b.path=B&&!n?null:c.renderer.crispLine([[\"M\",t,C],[\"L\",w,q]],k||1)});return b.path};a.prototype.getLinearTickPositions=function(b,d,a){var c=w(Math.floor(d/b)*b);a=w(Math.ceil(a/b)*b);var e=[],g;w(c+b)===c&&(g=20);if(this.single)return[d];for(d=c;d<=\na;){e.push(d);d=w(d+b,g);if(d===m)break;var m=d}return e};a.prototype.getMinorTickInterval=function(){var b=this.options;return!0===b.minorTicks?I(b.minorTickInterval,\"auto\"):!1===b.minorTicks?null:b.minorTickInterval};a.prototype.getMinorTickPositions=function(){var b=this.options,d=this.tickPositions,a=this.minorTickInterval,c=this.pointRangePadding||0,e=this.min-c;c=this.max+c;var g=c-e,m=[];if(g&&g/a=this.minRange;var x=this.minRange;var D=(x-e+a)/2;D=[a-D,I(b.min,a-D)];k&&(D[2]=this.logarithmic?this.logarithmic.log2lin(this.dataMin):this.dataMin);a=c(D);e=[a+x,I(b.max,a+x)];k&&(e[2]=d?d.log2lin(this.dataMax):this.dataMax);e=h(e);e-a=t)B=t,L=0;else if(this.dataMax<=t){var P=t;x=0}this.min=I(C,B,this.dataMin);this.max=I(q,P,this.dataMax)}a&&(this.positiveValuesOnly&&!b&&0>=Math.min(this.min,I(this.dataMin,this.min))&&J(10,1,d),this.min=w(a.log2lin(this.min),16),this.max=w(a.log2lin(this.max),16));this.range&&p(this.max)&&(this.userMin=this.min=C=Math.max(this.dataMin,this.minFromRange()),this.userMax=q=this.max,this.range=null);r(this,\"foundExtremes\");\nthis.beforePadding&&this.beforePadding();this.adjustForMinRange();!(h||this.axisPointRange||this.stacking&&this.stacking.usePercentage||m)&&p(this.min)&&p(this.max)&&(d=this.max-this.min)&&(!p(C)&&L&&(this.min-=d*L),!p(q)&&x&&(this.max+=d*x));g(this.userMin)||(g(c.softMin)&&c.softMinthis.max&&(this.max=q=c.softMax),g(c.ceiling)&&(this.max=Math.min(this.max,c.ceiling)));k&&\np(this.dataMin)&&(t=t||0,!p(C)&&this.min=t?this.min=this.options.minRange?Math.min(t,this.max-this.minRange):t:!p(q)&&this.max>t&&this.dataMax<=t&&(this.max=this.options.minRange?Math.max(t,this.min+this.minRange):t));g(this.min)&&g(this.max)&&!this.chart.polar&&this.min>this.max&&(p(this.options.min)?this.max=this.min:p(this.options.max)&&(this.min=this.max));this.tickInterval=this.min===this.max||\"undefined\"===typeof this.min||\"undefined\"===typeof this.max?1:m&&this.linkedParent&&\n!n&&f===this.linkedParent.options.tickPixelInterval?n=this.linkedParent.tickInterval:I(n,this.tickAmount?(this.max-this.min)/Math.max(this.tickAmount-1,1):void 0,h?1:(this.max-this.min)*f/Math.max(this.len,f));if(e&&!b){var v=this.min!==(this.old&&this.old.min)||this.max!==(this.old&&this.old.max);this.series.forEach(function(b){b.forceCrop=b.forceCropping&&b.forceCropping();b.processData(v)});r(this,\"postProcessData\",{hasExtemesChanged:v})}this.setAxisTranslation();r(this,\"initialAxisTranslation\");\nthis.pointRange&&!n&&(this.tickInterval=Math.max(this.pointRange,this.tickInterval));b=I(c.minTickInterval,this.dateTime&&!this.series.some(function(b){return b.noSharedTooltip})?this.closestPointRange:0);!n&&this.tickIntervalthis.tickInterval||void 0!==this.tickAmount),!!this.tickAmount));this.tickAmount||(this.tickInterval=this.unsquish());this.setTickPositions()};\na.prototype.setTickPositions=function(){var b=this.options,d=b.tickPositions,a=this.getMinorTickInterval(),c=this.hasVerticalPanning(),e=\"colorAxis\"===this.coll,g=(e||!c)&&b.startOnTick;c=(e||!c)&&b.endOnTick;e=b.tickPositioner;this.tickmarkOffset=this.categories&&\"between\"===b.tickmarkPlacement&&1===this.tickInterval?.5:0;this.minorTickInterval=\"auto\"===a&&this.tickInterval?this.tickInterval/5:a;this.single=this.min===this.max&&p(this.min)&&!this.tickAmount&&(parseInt(this.min,10)===this.min||!1!==\nb.allowDecimals);this.tickPositions=a=d&&d.slice();!a&&(this.ordinal&&this.ordinal.positions||!((this.max-this.min)/this.tickInterval>Math.max(2*this.len,200))?a=this.dateTime?this.getTimeTicks(this.dateTime.normalizeTimeTickInterval(this.tickInterval,b.units),this.min,this.max,b.startOfWeek,this.ordinal&&this.ordinal.positions,this.closestPointRange,!0):this.logarithmic?this.logarithmic.getLogTickPositions(this.tickInterval,this.min,this.max):this.getLinearTickPositions(this.tickInterval,this.min,\nthis.max):(a=[this.min,this.max],J(19,!1,this.chart)),a.length>this.len&&(a=[a[0],a.pop()],a[0]===a[1]&&(a.length=1)),this.tickPositions=a,e&&(e=e.apply(this,[this.min,this.max])))&&(this.tickPositions=a=e);this.paddedTicks=a.slice(0);this.trimTicks(a,g,c);this.isLinked||(this.single&&2>a.length&&!this.categories&&!this.series.some(function(b){return b.is(\"heatmap\")&&\"between\"===b.options.pointPlacement})&&(this.min-=.5,this.max+=.5),d||e||this.adjustTickAmount());r(this,\"afterSetTickPositions\")};\na.prototype.trimTicks=function(b,d,a){var c=b[0],e=b[b.length-1],g=!this.isOrdinal&&this.minPointOffset||0;r(this,\"trimTicks\");if(!this.isLinked){if(d&&-Infinity!==c)this.min=c;else for(;this.min-g>b[0];)b.shift();if(a)this.max=e;else for(;this.max+ga&&(this.finalTickAmt=a,a=5);this.tickAmount=a};a.prototype.adjustTickAmount=function(){var b=\nthis.options,d=this.tickInterval,a=this.tickPositions,c=this.tickAmount,e=this.finalTickAmt,m=a&&a.length,l=I(this.threshold,this.softThreshold?0:null);if(this.hasData()&&g(this.min)&&g(this.max)){if(mc&&(this.tickInterval*=2,this.setTickPositions());if(p(e)){for(d=\nb=a.length;d--;)(3===e&&1===d%2||2>=e&&0l&&(d=l)),p(e)&&(gl&&(g=l))),a.displayBtn=\"undefined\"!==typeof d||\"undefined\"!==typeof g,a.setExtremes(d,g,!1,void 0,{trigger:\"zoom\"});b.zoomed=!0});return b.zoomed};a.prototype.setAxisSize=function(){var b=this.chart,\nd=this.options,a=d.offsets||[0,0,0,0],c=this.horiz,e=this.width=Math.round(P(I(d.width,b.plotWidth-a[3]+a[1]),b.plotWidth)),g=this.height=Math.round(P(I(d.height,b.plotHeight-a[0]+a[2]),b.plotHeight)),m=this.top=Math.round(P(I(d.top,b.plotTop+a[0]),b.plotHeight,b.plotTop));d=this.left=Math.round(P(I(d.left,b.plotLeft+a[3]),b.plotWidth,b.plotLeft));this.bottom=b.chartHeight-g-m;this.right=b.chartWidth-e-d;this.len=Math.max(c?e:g,0);this.pos=c?d:m};a.prototype.getExtremes=function(){var b=this.logarithmic;\nreturn{min:b?w(b.lin2log(this.min)):this.min,max:b?w(b.lin2log(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}};a.prototype.getThreshold=function(b){var d=this.logarithmic,a=d?d.lin2log(this.min):this.min;d=d?d.lin2log(this.max):this.max;null===b||-Infinity===b?b=a:Infinity===b?b=d:a>b?b=a:dd?b.align=\"right\":195d&&(b.align=\"left\")});return b.align};a.prototype.tickSize=function(b){var d=this.options,a=I(d[\"tick\"===b?\"tickWidth\":\"minorTickWidth\"],\"tick\"===b&&this.isXAxis&&!this.categories?1:0),c=d[\"tick\"===b?\"tickLength\":\"minorTickLength\"];if(a&&c){\"inside\"===d[b+\"Position\"]&&(c=-c);var e=[c,a]}b={tickSize:e};r(this,\"afterTickSize\",b);return b.tickSize};a.prototype.labelMetrics=function(){var b=this.tickPositions&&this.tickPositions[0]||0;return this.chart.renderer.fontMetrics(this.options.labels.style.fontSize,\nthis.ticks[b]&&this.ticks[b].label)};a.prototype.unsquish=function(){var b=this.options.labels,d=this.horiz,a=this.tickInterval,c=this.len/(((this.categories?1:0)+this.max-this.min)/a),m=b.rotation,l=this.labelMetrics(),f=Math.max(this.max-this.min,0),h=function(b){var d=b/(c||1);d=1f&&Infinity!==b&&Infinity!==c&&f&&(d=Math.ceil(f/a));return w(d*a)},r=a,k,x,D=Number.MAX_VALUE;if(d){if(!b.staggerLines&&!b.step)if(g(m))var p=[m];else c=b){x=h(Math.abs(l.h/Math.sin(e*b)));var d=x+Math.abs(b/360);dc.step)return c.rotation?0:(this.staggerLines||1)*this.len/e;if(!a){b=c.style.width;\nif(void 0!==b)return parseInt(String(b),10);if(m)return m-d.spacing[3]}return.33*d.chartWidth};a.prototype.renderUnsquish=function(){var b=this.chart,a=b.renderer,c=this.tickPositions,e=this.ticks,g=this.options.labels,m=g.style,l=this.horiz,f=this.getSlotWidth(),h=Math.max(1,Math.round(f-2*g.padding)),r={},k=this.labelMetrics(),x=m.textOverflow,D=0;d(g.rotation)||(r.rotation=g.rotation||0);c.forEach(function(b){b=e[b];b.movedLabel&&b.replaceMovedLabel();b&&b.label&&b.label.textPxLength>D&&(D=b.label.textPxLength)});\nthis.maxLabelLength=D;if(this.autoRotation)D>h&&D>k.h?r.rotation=this.labelRotation:this.labelRotation=0;else if(f){var p=h;if(!x){var n=\"clip\";for(h=c.length;!l&&h--;){var I=c[h];if(I=e[I].label)I.styles&&\"ellipsis\"===I.styles.textOverflow?I.css({textOverflow:\"clip\"}):I.textPxLength>f&&I.css({width:f+\"px\"}),I.getBBox().height>this.len/c.length-(k.h-k.f)&&(I.specificTextOverflow=\"ellipsis\")}}}r.rotation&&(p=D>.5*b.chartHeight?.33*b.chartHeight:D,x||(n=\"ellipsis\"));if(this.labelAlign=g.align||this.autoLabelAlign(this.labelRotation))r.align=\nthis.labelAlign;c.forEach(function(b){var d=(b=e[b])&&b.label,a=m.width,c={};d&&(d.attr(r),b.shortenLabel?b.shortenLabel():p&&!a&&\"nowrap\"!==m.whiteSpace&&(p=this.min&&b<=this.max||this.grid&&this.grid.isColumn)c[b]||(c[b]=new H(this,b)),a&&c[b].isNew&&c[b].render(d,!0,\n-1),c[b].render(d)};a.prototype.render=function(){var b=this,d=b.chart,a=b.logarithmic,c=b.options,e=b.isLinked,m=b.tickPositions,l=b.axisTitle,f=b.ticks,h=b.minorTicks,k=b.alternateBands,D=c.stackLabels,p=c.alternateGridColor,n=b.tickmarkOffset,I=b.axisLine,t=b.showAxis,C=q(d.renderer.globalAnimation),w,B;b.labelEdge.length=0;b.overlap=!1;[f,h,k].forEach(function(b){x(b,function(b){b.isActive=!1})});if(b.hasData()||e){var P=b.chart.hasRendered&&b.old&&g(b.old.min);b.minorTickInterval&&!b.categories&&\nb.getMinorTickPositions().forEach(function(d){b.renderMinorTick(d,P)});m.length&&(m.forEach(function(d,a){b.renderTick(d,a,P)}),n&&(0===b.min||b.single)&&(f[-1]||(f[-1]=new H(b,-1,null,!0)),f[-1].render(-1)));p&&m.forEach(function(c,e){B=\"undefined\"!==typeof m[e+1]?m[e+1]+n:b.max-n;0===e%2&&ce&&(!k||n<=f)&&\"undefined\"!==typeof n&&q.push(n);n>f&&(l=!0);n=g}}}else e=this.lin2log(e),f=this.lin2log(f),a=k?c.getMinorTickInterval():n.tickInterval,\na=y(\"auto\"===a?null:a,this.minorAutoInterval,n.tickPixelInterval/(k?5:1)*(f-e)/((k?h/c.tickPositions.length:h)||1)),a=F(a,void 0,z(a)),q=c.getLinearTickPositions(a,e,f).map(this.log2lin),k||(this.minorAutoInterval=a/5);k||(c.tickInterval=a);return q};a.prototype.lin2log=function(a){return Math.pow(10,a)};a.prototype.log2lin=function(a){return Math.log(a)/Math.LN10};return a}();a.Additions=k})(G||(G={}));return G});M(a,\"Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js\",[a[\"Core/Utilities.js\"]],function(a){var v=\na.erase,z=a.extend,F=a.isNumber,y;(function(a){var u=[],A;a.compose=function(a,k){A||(A=a);-1===u.indexOf(k)&&(u.push(k),z(k.prototype,q.prototype));return k};var q=function(){function a(){}a.prototype.getPlotBandPath=function(a,e,c){void 0===c&&(c=this.options);var h=this.getPlotLinePath({value:e,force:!0,acrossPanes:c.acrossPanes}),f=[],k=this.horiz;e=!F(this.min)||!F(this.max)||athis.max&&e>this.max;a=this.getPlotLinePath({value:a,force:!0,acrossPanes:c.acrossPanes});c=\n1;if(a&&h){if(e){var p=a.toString()===h.toString();c=0}for(e=0;en-l?n:n-l);\nelse if(E)g[b]=Math.max(r,m+l+d>a?m:m+l);else return!1},w=function(b,a,d,c,m){var l;ma-e?l=!1:g[b]=ma-c/2?a-c-2:m-d/2;return l},E=function(b){var a=n;n=t;t=a;C=b},T=function(){!1!==B.apply(0,n)?!1!==w.apply(0,t)||C||(E(!0),T()):C?g.x=g.y=0:(E(!0),T())};(c.inverted||1a})&&(b=b.map(function(b){var a=d(b.anchorX,b.anchorY,b.point.isHeader,b.boxWidth,!1);return h(b,{target:a.y,x:a.x})}));c.cleanSplit();A(b,G);\nvar F=R,ba=R;b.forEach(function(b){var a=b.x,d=b.boxWidth;b=b.isHeader;b||(c.outside&&R+aba&&(ba=R+a))});b.forEach(function(b){var a=b.x,d=b.anchorX,e=b.pos,g=b.point.isHeader;e={visibility:\"undefined\"===typeof e?\"hidden\":\"inherit\",x:a,y:e+z,anchorX:d,anchorY:b.anchorY};if(c.outside&&ad[0]?Math.max(Math.abs(d[0]),e.width-d[0]):Math.max(Math.abs(d[0]),\ne.width);c.height=0>d[1]?Math.max(Math.abs(d[1]),e.height-Math.abs(d[1])):Math.max(Math.abs(d[1]),e.height);this.tracker?this.tracker.attr(c):(this.tracker=a.renderer.rect(c).addClass(\"highcharts-tracker\").add(a),b.styledMode||this.tracker.attr({fill:\"rgba(0,0,0,0)\"}))}}};a.prototype.styledModeFormat=function(b){return b.replace('style=\"font-size: 10px\"','class=\"highcharts-header\"').replace(/style=\"color:{(point|series)\\.color}\"/g,'class=\"highcharts-color-{$1.colorIndex}\"')};a.prototype.tooltipFooterHeaderFormatter=\nfunction(b,a){var d=b.series,c=d.tooltipOptions,e=d.xAxis,g=e&&e.dateTime;e={isFooter:a,labelConfig:b};var l=c.xDateFormat,r=c[a?\"footerFormat\":\"headerFormat\"];f(this,\"headerFormatter\",e,function(a){g&&!l&&p(b.key)&&(l=g.getXDateFormat(b.key,c.dateTimeLabelFormats));g&&l&&(b.point&&b.point.tooltipDateKeys||[\"key\"]).forEach(function(b){r=r.replace(\"{point.\"+b+\"}\",\"{point.\"+b+\":\"+l+\"}\")});d.chart.styledMode&&(r=this.styledModeFormat(r));a.text=v(r,{point:b,series:d},this.chart)});return e.text};a.prototype.update=\nfunction(b){this.destroy();t(!0,this.chart.options.tooltip.userOptions,b);this.init(this.chart,t(!0,this.options,b))};a.prototype.updatePosition=function(b){var a=this.chart,d=this.options,c=a.pointer,e=this.getLabel();c=c.getChartPosition();var l=(d.positioner||this.getPosition).call(this,e.width,e.height,b),f=b.plotX+a.plotLeft;b=b.plotY+a.plotTop;if(this.outside){d=d.borderWidth+2*this.distance;this.renderer.setSize(e.width+d,e.height+d,!1);if(1!==c.scaleX||1!==c.scaleY)k(this.container,{transform:\"scale(\"+\nc.scaleX+\", \"+c.scaleY+\")\"}),f*=c.scaleX,b*=c.scaleY;f+=c.left-l.x;b+=c.top-l.y}this.move(Math.round(l.x),Math.round(l.y||0),f,b)};return a}();\"\";return a});M(a,\"Core/Series/Point.js\",[a[\"Core/Renderer/HTML/AST.js\"],a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/DefaultOptions.js\"],a[\"Core/FormatUtilities.js\"],a[\"Core/Utilities.js\"]],function(a,u,z,F,y){var v=u.animObject,H=z.defaultOptions,A=F.format,q=y.addEvent,n=y.defined,k=y.erase,e=y.extend,c=y.fireEvent,h=y.getNestedProperty,f=y.isArray,\nw=y.isFunction,p=y.isNumber,B=y.isObject,t=y.merge,J=y.objectEach,C=y.pick,r=y.syncTimeout,l=y.removeEvent,b=y.uniqueKey;u=function(){function g(){this.colorIndex=this.category=void 0;this.formatPrefix=\"point\";this.id=void 0;this.isNull=!1;this.percentage=this.options=this.name=void 0;this.selected=!1;this.total=this.series=void 0;this.visible=!0;this.x=void 0}g.prototype.animateBeforeDestroy=function(){var b=this,a={x:b.startXPos,opacity:0},c=b.getGraphicalProps();c.singular.forEach(function(d){b[d]=\nb[d].animate(\"dataLabel\"===d?{x:b[d].startXPos,y:b[d].startYPos,opacity:0}:a)});c.plural.forEach(function(a){b[a].forEach(function(a){a.element&&a.animate(e({x:b.startXPos},a.startYPos?{x:a.startXPos,y:a.startYPos}:{}))})})};g.prototype.applyOptions=function(b,a){var d=this.series,c=d.options.pointValKey||d.pointValKey;b=g.prototype.optionsToObject.call(this,b);e(this,b);this.options=this.options?e(this.options,b):b;b.group&&delete this.group;b.dataLabels&&delete this.dataLabels;c&&(this.y=g.prototype.getNestedProperty.call(this,\nc));this.formatPrefix=(this.isNull=C(this.isValid&&!this.isValid(),null===this.x||!p(this.y)))?\"null\":\"point\";this.selected&&(this.state=\"select\");\"name\"in this&&\"undefined\"===typeof a&&d.xAxis&&d.xAxis.hasNames&&(this.x=d.xAxis.nameToX(this));\"undefined\"===typeof this.x&&d?this.x=\"undefined\"===typeof a?d.autoIncrement():a:p(b.x)&&d.options.relativeXValue&&(this.x=d.autoIncrement(b.x));return this};g.prototype.destroy=function(){function b(){if(a.graphic||a.dataLabel||a.dataLabels)l(a),a.destroyElements();\nfor(h in a)a[h]=null}var a=this,c=a.series,e=c.chart;c=c.options.dataSorting;var g=e.hoverPoints,f=v(a.series.chart.renderer.globalAnimation),h;a.legendItem&&e.legend.destroyItem(a);g&&(a.setState(),k(g,a),g.length||(e.hoverPoints=null));if(a===e.hoverPoint)a.onMouseOut();c&&c.enabled?(this.animateBeforeDestroy(),r(b,f.duration)):b();e.pointCount--};g.prototype.destroyElements=function(b){var a=this;b=a.getGraphicalProps(b);b.singular.forEach(function(b){a[b]=a[b].destroy()});b.plural.forEach(function(b){a[b].forEach(function(b){b.element&&\nb.destroy()});delete a[b]})};g.prototype.firePointEvent=function(b,a,e){var d=this,g=this.series.options;(g.point.events[b]||d.options&&d.options.events&&d.options.events[b])&&d.importEvents();\"click\"===b&&g.allowPointSelect&&(e=function(b){d.select&&d.select(null,b.ctrlKey||b.metaKey||b.shiftKey)});c(d,b,a,e)};g.prototype.getClassName=function(){return\"highcharts-point\"+(this.selected?\" highcharts-point-select\":\"\")+(this.negative?\" highcharts-negative\":\"\")+(this.isNull?\" highcharts-null-point\":\"\")+\n(\"undefined\"!==typeof this.colorIndex?\" highcharts-color-\"+this.colorIndex:\"\")+(this.options.className?\" \"+this.options.className:\"\")+(this.zone&&this.zone.className?\" \"+this.zone.className.replace(\"highcharts-negative\",\"\"):\"\")};g.prototype.getGraphicalProps=function(b){var a=this,d=[],c={singular:[],plural:[]},e;b=b||{graphic:1,dataLabel:1};b.graphic&&d.push(\"graphic\",\"upperGraphic\",\"shadowGroup\");b.dataLabel&&d.push(\"dataLabel\",\"dataLabelUpper\",\"connector\");for(e=d.length;e--;){var g=d[e];a[g]&&\nc.singular.push(g)}[\"dataLabel\",\"connector\"].forEach(function(d){var e=d+\"s\";b[d]&&a[e]&&c.plural.push(e)});return c};g.prototype.getLabelConfig=function(){return{x:this.category,y:this.y,color:this.color,colorIndex:this.colorIndex,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}};g.prototype.getNestedProperty=function(b){if(b)return 0===b.indexOf(\"custom.\")?h(b,this.options):this[b]};g.prototype.getZone=function(){var b=this.series,\na=b.zones;b=b.zoneAxis||\"y\";var c,e=0;for(c=a[e];this[b]>=c.value;)c=a[++e];this.nonZonedColor||(this.nonZonedColor=this.color);this.color=c&&c.color&&!this.options.color?c.color:this.nonZonedColor;return c};g.prototype.hasNewShapeType=function(){return(this.graphic&&(this.graphic.symbolName||this.graphic.element.nodeName))!==this.shapeType};g.prototype.init=function(a,e,g){this.series=a;this.applyOptions(e,g);this.id=n(this.id)?this.id:b();this.resolveColor();a.chart.pointCount++;c(this,\"afterInit\");\nreturn this};g.prototype.optionsToObject=function(b){var a=this.series,d=a.options.keys,c=d||a.pointArrayMap||[\"y\"],e=c.length,l={},r=0,h=0;if(p(b)||null===b)l[c[0]]=b;else if(f(b))for(!d&&b.length>e&&(a=typeof b[0],\"string\"===a?l.name=b[0]:\"number\"===a&&(l.x=b[0]),r++);hm+h&&(q=m+h),Bf+r&&(B=f+r),this.hasDragged=Math.sqrt(Math.pow(k-q,2)+Math.pow(p-B,2)),10a.options.findNearestPointBy.indexOf(\"y\");a=\na.searchPoint(b,d);if((d=w(a,!0)&&a.series)&&!(d=!w(l,!0))){d=l.distX-a.distX;var e=l.dist-a.dist,g=(a.series.group&&a.series.group.zIndex)-(l.series.group&&l.series.group.zIndex);d=0<(0!==d&&c?d:0!==e?e:0!==g?g:l.series.index>a.series.index?-1:1)}d&&(l=a)});return l};a.prototype.getChartCoordinatesFromPoint=function(a,c){var b=a.series,e=b.xAxis;b=b.yAxis;var d=a.shapeArgs;if(e&&b){var l=t(a.clientX,a.plotX),h=a.plotY||0;a.isNode&&d&&f(d.x)&&f(d.y)&&(l=d.x,h=d.y);return c?{chartX:b.len+b.pos-h,chartY:e.len+\ne.pos-l}:{chartX:l+e.pos,chartY:h+b.pos}}if(d&&d.x&&d.y)return{chartX:d.x,chartY:d.y}};a.prototype.getChartPosition=function(){if(this.chartPosition)return this.chartPosition;var a=this.chart.container,c=B(a);this.chartPosition={left:c.left,top:c.top,scaleX:1,scaleY:1};var b=a.offsetWidth;a=a.offsetHeight;2x.max&&(b=x.max-w,J=!0);J?(N-=.8*(N-f[l][0]),\"number\"===typeof v&&(v-=.8*(v-f[l][1])),\nc()):f[l]=[N,v];t||(m[l]=E-n,m[r]=w);m=t?1/C:C;d[r]=w;d[l]=b;e[t?a?\"scaleY\":\"scaleX\":\"scale\"+k]=C;e[\"translate\"+k]=m*n+(N-m*D)};a.prototype.reset=function(a,c){var b=this.chart,e=b.hoverSeries,d=b.hoverPoint,m=b.hoverPoints,f=b.tooltip,l=f&&f.shared?m:d;a&&l&&J(l).forEach(function(b){b.series.isCartesian&&\"undefined\"===typeof b.plotX&&(a=!1)});if(a)f&&l&&J(l).length&&(f.refresh(l),f.shared&&m?m.forEach(function(b){b.setState(b.state,!0);b.series.isCartesian&&(b.series.xAxis.crosshair&&b.series.xAxis.drawCrosshair(null,\nb),b.series.yAxis.crosshair&&b.series.yAxis.drawCrosshair(null,b))}):d&&(d.setState(d.state,!0),b.axes.forEach(function(b){b.crosshair&&d.series[b.coll]===b&&b.drawCrosshair(null,d)})));else{if(d)d.onMouseOut();m&&m.forEach(function(b){b.setState()});if(e)e.onMouseOut();f&&f.hide(c);this.unDocMouseMove&&(this.unDocMouseMove=this.unDocMouseMove());b.axes.forEach(function(b){b.hideCrosshair()});this.hoverX=b.hoverPoints=b.hoverPoint=null}};a.prototype.runPointActions=function(e,f){var b=this.chart,\ng=b.tooltip&&b.tooltip.options.enabled?b.tooltip:void 0,d=g?g.shared:!1,m=f||b.hoverPoint,l=m&&m.series||b.hoverSeries;f=this.getHoverData(m,l,b.series,(!e||\"touchmove\"!==e.type)&&(!!f||l&&l.directTouch&&this.isDirectTouch),d,e);m=f.hoverPoint;l=f.hoverSeries;var h=f.hoverPoints;f=l&&l.tooltipOptions.followPointer&&!l.tooltipOptions.split;d=d&&l&&!l.noSharedTooltip;if(m&&(m!==b.hoverPoint||g&&g.isHidden)){(b.hoverPoints||[]).forEach(function(b){-1===h.indexOf(b)&&b.setState()});if(b.hoverSeries!==\nl)l.onMouseOver();this.applyInactiveState(h);(h||[]).forEach(function(b){b.setState(\"hover\")});b.hoverPoint&&b.hoverPoint.firePointEvent(\"mouseOut\");if(!m.series)return;b.hoverPoints=h;b.hoverPoint=m;m.firePointEvent(\"mouseOver\");g&&g.refresh(d?h:m,e)}else f&&g&&!g.isHidden&&(m=g.getAnchor([{}],e),b.isInsidePlot(m[0],m[1],{visiblePlotOnly:!0})&&g.updatePosition({plotX:m[0],plotY:m[1]}));this.unDocMouseMove||(this.unDocMouseMove=A(b.container.ownerDocument,\"mousemove\",function(b){var d=G[a.hoverChartIndex];\nif(d)d.pointer.onDocumentMouseMove(b)}),this.eventsToUnbind.push(this.unDocMouseMove));b.axes.forEach(function(a){var d=t((a.crosshair||{}).snap,!0),g;d&&((g=b.hoverPoint)&&g.series[a.coll]===a||(g=c(h,function(b){return b.series[a.coll]===a})));g||!d?a.drawCrosshair(e,g):a.hideCrosshair()})};a.prototype.scaleGroups=function(a,c){var b=this.chart;b.series.forEach(function(e){var d=a||e.getPlotBox();e.group&&(e.xAxis&&e.xAxis.zoomEnabled||b.mapView)&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),\ne.markerGroup.clip(c?b.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))});b.clipRect.attr(c||b.clipBox)};a.prototype.setDOMEvents=function(){var c=this,e=this.chart.container,b=e.ownerDocument;e.onmousedown=this.onContainerMouseDown.bind(this);e.onmousemove=this.onContainerMouseMove.bind(this);e.onclick=this.onContainerClick.bind(this);this.eventsToUnbind.push(A(e,\"mouseenter\",this.onContainerMouseEnter.bind(this)));this.eventsToUnbind.push(A(e,\"mouseleave\",this.onContainerMouseLeave.bind(this)));\na.unbindDocumentMouseUp||(a.unbindDocumentMouseUp=A(b,\"mouseup\",this.onDocumentMouseUp.bind(this)));for(var g=this.chart.renderTo.parentElement;g&&\"BODY\"!==g.tagName;)this.eventsToUnbind.push(A(g,\"scroll\",function(){delete c.chartPosition})),g=g.parentElement;u.hasTouch&&(this.eventsToUnbind.push(A(e,\"touchstart\",this.onContainerTouchStart.bind(this),{passive:!1})),this.eventsToUnbind.push(A(e,\"touchmove\",this.onContainerTouchMove.bind(this),{passive:!1})),a.unbindDocumentTouchEnd||(a.unbindDocumentTouchEnd=\nA(b,\"touchend\",this.onDocumentTouchEnd.bind(this),{passive:!1})))};a.prototype.setHoverChartIndex=function(){var c=this.chart,e=u.charts[t(a.hoverChartIndex,-1)];if(e&&e!==c)e.pointer.onContainerMouseLeave({relatedTarget:!0});e&&e.mouseIsDown||(a.hoverChartIndex=c.index)};a.prototype.touch=function(a,c){var b=this.chart,e;this.setHoverChartIndex();if(1===a.touches.length)if(a=this.normalize(a),(e=b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop,{visiblePlotOnly:!0}))&&!b.openMenu){c&&this.runPointActions(a);\nif(\"touchmove\"===a.type){c=this.pinchDown;var d=c[0]?4<=Math.sqrt(Math.pow(c[0].chartX-a.chartX,2)+Math.pow(c[0].chartY-a.chartY,2)):!1}t(d,!0)&&this.pinch(a)}else c&&this.reset();else 2===a.touches.length&&this.pinch(a)};a.prototype.touchSelect=function(a){return!(!this.chart.options.chart.zoomBySingleTouch||!a.touches||1!==a.touches.length)};a.prototype.zoomOption=function(a){var c=this.chart,b=c.options.chart;c=c.inverted;var e=b.zoomType||\"\";/touch/.test(a.type)&&(e=t(b.pinchType,e));this.zoomX=\na=/x/.test(e);this.zoomY=b=/y/.test(e);this.zoomHor=a&&!c||b&&c;this.zoomVert=b&&!c||a&&c;this.hasZoom=a||b};return a}();\"\";return a});M(a,\"Core/MSPointer.js\",[a[\"Core/Globals.js\"],a[\"Core/Pointer.js\"],a[\"Core/Utilities.js\"]],function(a,u,z){function v(){var a=[];a.item=function(a){return this[a]};c(f,function(c){a.push({pageX:c.pageX,pageY:c.pageY,target:c.target})});return a}function y(a,c,e,f){var h=H[u.hoverChartIndex||NaN];\"touch\"!==a.pointerType&&a.pointerType!==a.MSPOINTER_TYPE_TOUCH||!h||\n(h=h.pointer,f(a),h[c]({type:e,target:a.currentTarget,preventDefault:q,touches:v()}))}var G=this&&this.__extends||function(){var a=function(c,e){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var e in c)c.hasOwnProperty(e)&&(a[e]=c[e])};return a(c,e)};return function(c,e){function f(){this.constructor=c}a(c,e);c.prototype=null===e?Object.create(e):(f.prototype=e.prototype,new f)}}(),H=a.charts,A=a.doc,q=a.noop,n=a.win,k=z.addEvent,e=z.css,\nc=z.objectEach,h=z.removeEvent,f={},w=!!n.PointerEvent;return function(c){function p(){return null!==c&&c.apply(this,arguments)||this}G(p,c);p.isRequired=function(){return!(a.hasTouch||!n.PointerEvent&&!n.MSPointerEvent)};p.prototype.batchMSEvents=function(a){a(this.chart.container,w?\"pointerdown\":\"MSPointerDown\",this.onContainerPointerDown);a(this.chart.container,w?\"pointermove\":\"MSPointerMove\",this.onContainerPointerMove);a(A,w?\"pointerup\":\"MSPointerUp\",this.onDocumentPointerUp)};p.prototype.destroy=\nfunction(){this.batchMSEvents(h);c.prototype.destroy.call(this)};p.prototype.init=function(a,f){c.prototype.init.call(this,a,f);this.hasZoom&&e(a.container,{\"-ms-touch-action\":\"none\",\"touch-action\":\"none\"})};p.prototype.onContainerPointerDown=function(a){y(a,\"onContainerTouchStart\",\"touchstart\",function(a){f[a.pointerId]={pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}})};p.prototype.onContainerPointerMove=function(a){y(a,\"onContainerTouchMove\",\"touchmove\",function(a){f[a.pointerId]={pageX:a.pageX,\npageY:a.pageY};f[a.pointerId].target||(f[a.pointerId].target=a.currentTarget)})};p.prototype.onDocumentPointerUp=function(a){y(a,\"onDocumentTouchEnd\",\"touchend\",function(a){delete f[a.pointerId]})};p.prototype.setDOMEvents=function(){c.prototype.setDOMEvents.call(this);(this.hasZoom||this.followTouchMove)&&this.batchMSEvents(k)};return p}(u)});M(a,\"Core/Legend/Legend.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/FormatUtilities.js\"],a[\"Core/Globals.js\"],a[\"Core/Series/Point.js\"],a[\"Core/Renderer/RendererUtilities.js\"],\na[\"Core/Utilities.js\"]],function(a,u,z,F,y,G){var v=a.animObject,A=a.setAnimation,q=u.format;a=z.isFirefox;var n=z.marginNames;z=z.win;var k=y.distribute,e=G.addEvent,c=G.createElement,h=G.css,f=G.defined,w=G.discardElement,p=G.find,B=G.fireEvent,t=G.isNumber,J=G.merge,C=G.pick,r=G.relativeLength,l=G.stableSort,b=G.syncTimeout;y=G.wrap;G=function(){function a(b,a){this.allItems=[];this.contentGroup=this.box=void 0;this.display=!1;this.group=void 0;this.offsetWidth=this.maxLegendWidth=this.maxItemWidth=\nthis.legendWidth=this.legendHeight=this.lastLineHeight=this.lastItemY=this.itemY=this.itemX=this.itemMarginTop=this.itemMarginBottom=this.itemHeight=this.initialItemY=0;this.options={};this.padding=0;this.pages=[];this.proximate=!1;this.scrollGroup=void 0;this.widthOption=this.totalItemWidth=this.titleHeight=this.symbolWidth=this.symbolHeight=0;this.chart=b;this.init(b,a)}a.prototype.init=function(b,a){this.chart=b;this.setOptions(a);a.enabled&&(this.render(),e(this.chart,\"endResize\",function(){this.legend.positionCheckboxes()}),\nthis.proximate?this.unchartrender=e(this.chart,\"render\",function(){this.legend.proximatePositions();this.legend.positionItems()}):this.unchartrender&&this.unchartrender())};a.prototype.setOptions=function(b){var a=C(b.padding,8);this.options=b;this.chart.styledMode||(this.itemStyle=b.itemStyle,this.itemHiddenStyle=J(this.itemStyle,b.itemHiddenStyle));this.itemMarginTop=b.itemMarginTop||0;this.itemMarginBottom=b.itemMarginBottom||0;this.padding=a;this.initialItemY=a-5;this.symbolWidth=C(b.symbolWidth,\n16);this.pages=[];this.proximate=\"proximate\"===b.layout&&!this.chart.inverted;this.baseline=void 0};a.prototype.update=function(b,a){var c=this.chart;this.setOptions(J(!0,this.options,b));this.destroy();c.isDirtyLegend=c.isDirtyBox=!0;C(a,!0)&&c.redraw();B(this,\"afterUpdate\")};a.prototype.colorizeItem=function(b,a){b.legendGroup[a?\"removeClass\":\"addClass\"](\"highcharts-legend-item-hidden\");if(!this.chart.styledMode){var c=this.options,d=b.legendItem,e=b.legendLine,g=b.legendSymbol,f=this.itemHiddenStyle.color;\nc=a?c.itemStyle.color:f;var m=a?b.color||f:f,h=b.options&&b.options.marker,l={fill:m};d&&d.css({fill:c,color:c});e&&e.attr({stroke:m});g&&(h&&g.isMarker&&(l=b.pointAttribs(),a||(l.stroke=l.fill=f)),g.attr(l))}B(this,\"afterColorizeItem\",{item:b,visible:a})};a.prototype.positionItems=function(){this.allItems.forEach(this.positionItem,this);this.chart.isResizing||this.positionCheckboxes()};a.prototype.positionItem=function(b){var a=this,c=this.options,d=c.symbolPadding,e=!c.rtl,g=b._legendItemPos;c=\ng[0];g=g[1];var h=b.checkbox,l=b.legendGroup;l&&l.element&&(d={translateX:e?c:this.legendWidth-c-2*d-4,translateY:g},e=function(){B(a,\"afterPositionItem\",{item:b})},f(l.translateY)?l.animate(d,void 0,e):(l.attr(d),e()));h&&(h.x=c,h.y=g)};a.prototype.destroyItem=function(b){var a=b.checkbox;[\"legendItem\",\"legendLine\",\"legendSymbol\",\"legendGroup\"].forEach(function(a){b[a]&&(b[a]=b[a].destroy())});a&&w(b.checkbox)};a.prototype.destroy=function(){function b(b){this[b]&&(this[b]=this[b].destroy())}this.getAllItems().forEach(function(a){[\"legendItem\",\n\"legendGroup\"].forEach(b,a)});\"clipRect up down pager nav box title group\".split(\" \").forEach(b,this);this.display=null};a.prototype.positionCheckboxes=function(){var b=this.group&&this.group.alignAttr,a=this.clipHeight||this.legendHeight,c=this.titleHeight;if(b){var e=b.translateY;this.allItems.forEach(function(d){var g=d.checkbox;if(g){var f=e+c+g.y+(this.scrollOffset||0)+3;h(g,{left:b.translateX+d.checkboxOffset+g.x-20+\"px\",top:f+\"px\",display:this.proximate||f>e-6&&f1.5*c?a.height:c))};a.prototype.layoutItem=function(b){var a=this.options,c=this.padding,d=\"horizontal\"===a.layout,e=b.itemHeight,g=this.itemMarginBottom,f=this.itemMarginTop,h=d?C(a.itemDistance,20):0,l=this.maxLegendWidth;a=a.alignColumns&&\nthis.totalItemWidth>l?this.maxItemWidth:b.itemWidth;d&&this.itemX-c+a>l&&(this.itemX=c,this.lastLineHeight&&(this.itemY+=f+this.lastLineHeight+g),this.lastLineHeight=0);this.lastItemY=f+this.itemY+g;this.lastLineHeight=Math.max(e,this.lastLineHeight);b._legendItemPos=[this.itemX,this.itemY];d?this.itemX+=a:(this.itemY+=f+e+g,this.lastLineHeight=e);this.offsetWidth=this.widthOption||Math.max((d?this.itemX-c-(b.checkbox?0:h):a)+c,this.offsetWidth)};a.prototype.getAllItems=function(){var b=[];this.chart.series.forEach(function(a){var c=\na&&a.options;a&&C(c.showInLegend,f(c.linkedTo)?!1:void 0,!0)&&(b=b.concat(a.legendItems||(\"point\"===c.legendType?a.data:a)))});B(this,\"afterGetAllItems\",{allItems:b});return b};a.prototype.getAlignment=function(){var b=this.options;return this.proximate?b.align.charAt(0)+\"tv\":b.floating?\"\":b.align.charAt(0)+b.verticalAlign.charAt(0)+b.layout.charAt(0)};a.prototype.adjustMargins=function(b,a){var c=this.chart,d=this.options,e=this.getAlignment();e&&[/(lth|ct|rth)/,/(rtv|rm|rbv)/,/(rbh|cb|lbh)/,/(lbv|lm|ltv)/].forEach(function(g,\nh){g.test(e)&&!f(b[h])&&(c[n[h]]=Math.max(c[n[h]],c.legend[(h+1)%2?\"legendHeight\":\"legendWidth\"]+[1,-1,-1,1][h]*d[h%2?\"x\":\"y\"]+C(d.margin,12)+a[h]+(c.titleOffset[h]||0)))})};a.prototype.proximatePositions=function(){var b=this.chart,a=[],c=\"left\"===this.options.align;this.allItems.forEach(function(d){var e;var g=c;if(d.yAxis){d.xAxis.options.reversed&&(g=!g);d.points&&(e=p(g?d.points:d.points.slice(0).reverse(),function(b){return t(b.plotY)}));g=this.itemMarginTop+d.legendItem.getBBox().height+this.itemMarginBottom;\nvar f=d.yAxis.top-b.plotTop;d.visible?(e=e?e.plotY:d.yAxis.height,e+=f-.3*g):e=f+d.yAxis.height;a.push({target:e,size:g,item:d})}},this);k(a,b.plotHeight).forEach(function(a){a.item._legendItemPos&&(a.item._legendItemPos[1]=b.plotTop-b.spacing[0]+a.pos)})};a.prototype.render=function(){var b=this.chart,a=b.renderer,c=this.options,e=this.padding,g=this.getAllItems(),f=this.group,h=this.box;this.itemX=e;this.itemY=this.initialItemY;this.lastItemY=this.offsetWidth=0;this.widthOption=r(c.width,b.spacingBox.width-\ne);var k=b.spacingBox.width-2*e-c.x;-1<[\"rm\",\"lm\"].indexOf(this.getAlignment().substring(0,2))&&(k/=2);this.maxLegendWidth=this.widthOption||k;f||(this.group=f=a.g(\"legend\").addClass(c.className||\"\").attr({zIndex:7}).add(),this.contentGroup=a.g().attr({zIndex:1}).add(f),this.scrollGroup=a.g().add(this.contentGroup));this.renderTitle();l(g,function(b,a){return(b.options&&b.options.legendIndex||0)-(a.options&&a.options.legendIndex||0)});c.reversed&&g.reverse();this.allItems=g;this.display=k=!!g.length;\nthis.itemHeight=this.totalItemWidth=this.maxItemWidth=this.lastLineHeight=0;g.forEach(this.renderItem,this);g.forEach(this.layoutItem,this);g=(this.widthOption||this.offsetWidth)+e;var p=this.lastItemY+this.lastLineHeight+this.titleHeight;p=this.handleOverflow(p);p+=e;h||(this.box=h=a.rect().addClass(\"highcharts-legend-box\").attr({r:c.borderRadius}).add(f),h.isNew=!0);b.styledMode||h.attr({stroke:c.borderColor,\"stroke-width\":c.borderWidth||0,fill:c.backgroundColor||\"none\"}).shadow(c.shadow);0g&&!1!==k.enabled?(this.clipHeight=E=Math.max(g-20-this.titleHeight-\nh,0),this.currentPage=C(this.currentPage,1),this.fullHeight=b,t.forEach(function(b,a){var c=b._legendItemPos[1],d=Math.round(b.legendItem.getBBox().height),e=r.length;if(!e||c-r[e-1]>E&&(B||c)!==r[e-1])r.push(B||c),e++;b.pageIx=e-1;B&&(t[a-1].pageIx=e-1);a===t.length-1&&c+d-r[e-1]>E&&d<=E&&(r.push(c),b.pageIx=e);c!==B&&(B=c)}),v||(v=a.clipRect=d.clipRect(0,h,9999,0),a.contentGroup.clip(v)),q(E),N||(this.nav=N=d.g().attr({zIndex:1}).add(this.group),this.up=d.symbol(\"triangle\",0,0,n,n).add(N),w(\"upTracker\").on(\"click\",\nfunction(){a.scroll(-1,p)}),this.pager=d.text(\"\",15,10).addClass(\"highcharts-legend-navigation\"),c.styledMode||this.pager.css(k.style),this.pager.add(N),this.down=d.symbol(\"triangle-down\",0,0,n,n).add(N),w(\"downTracker\").on(\"click\",function(){a.scroll(1,p)})),a.scroll(0),b=g):N&&(q(),this.nav=N.destroy(),this.scrollGroup.attr({translateY:1}),this.clipHeight=0);return b};a.prototype.scroll=function(a,c){var d=this,e=this.chart,g=this.pages,f=g.length,h=this.clipHeight,l=this.options.navigation,m=this.pager,\nk=this.padding,p=this.currentPage+a;p>f&&(p=f);0=Math.max(l+g,p.pos)&&h<=Math.min(l+g+e.width,p.pos+p.len)||(b.isInsidePlot=!1)}!c.ignoreY&&\nb.isInsidePlot&&(d=m&&(d?m.xAxis:m.yAxis)||{pos:f,len:Infinity},c=c.paneCoordinates?d.pos+a:f+a,c>=Math.max(k+f,d.pos)&&c<=Math.min(k+f+e.height,d.pos+d.len)||(b.isInsidePlot=!1));Q(this,\"afterIsInsidePlot\",b);return b.isInsidePlot};a.prototype.redraw=function(b){Q(this,\"beforeRedraw\");var a=this.hasCartesianSeries?this.axes:this.colorAxis||[],c=this.series,d=this.pointer,e=this.legend,g=this.userOptions.legend,f=this.renderer,h=f.isHidden(),l=[],k=this.isDirtyBox,m=this.isDirtyLegend;this.setResponsive&&\nthis.setResponsive(!1);B(this.hasRendered?b:!1,this);h&&this.temporaryDisplay();this.layOutTitles();for(b=c.length;b--;){var p=c[b];if(p.options.stacking||p.options.centerInCategory){var n=!0;if(p.isDirty){var E=!0;break}}}if(E)for(b=c.length;b--;)p=c[b],p.options.stacking&&(p.isDirty=!0);c.forEach(function(b){b.isDirty&&(\"point\"===b.options.legendType?(\"function\"===typeof b.updateTotals&&b.updateTotals(),m=!0):g&&(g.labelFormatter||g.labelFormat)&&(m=!0));b.isDirtyData&&Q(b,\"updatedData\")});m&&e&&\ne.options.enabled&&(e.render(),this.isDirtyLegend=!1);n&&this.getStacks();a.forEach(function(b){b.updateNames();b.setScale()});this.getMargins();a.forEach(function(b){b.isDirty&&(k=!0)});a.forEach(function(b){var a=b.min+\",\"+b.max;b.extKey!==a&&(b.extKey=a,l.push(function(){Q(b,\"afterSetExtremes\",M(b.eventArgs,b.getExtremes()));delete b.eventArgs}));(k||n)&&b.redraw()});k&&this.drawChartBox();Q(this,\"predraw\");c.forEach(function(b){(k||b.isDirty)&&b.visible&&b.redraw();b.isDirtyData=!1});d&&d.reset(!0);\nf.draw();Q(this,\"redraw\");Q(this,\"render\");h&&this.temporaryDisplay(!0);l.forEach(function(b){b.call()})};a.prototype.get=function(b){function a(a){return a.id===b||a.options&&a.options.id===b}for(var c=this.series,d=da(this.axes,a)||da(this.series,a),e=0;!d&&e=h&&d<=l||k||!U(d))m=!0;c[k?\"zoomX\":\"zoomY\"]&&m&&(g=f.zoom(b.min,b.max),f.displayBtn&&(e=!0))});var f=a.resetZoomButton;e&&!f?a.showResetZoom():!e&&N(f)&&(a.resetZoomButton=f.destroy());g&&a.redraw(R(a.options.chart.animation,\nb&&b.animation,100>a.pointCount))};a.prototype.pan=function(b,a){var c=this,d=c.hoverPoints;a=\"object\"===typeof a?a:{enabled:a,type:\"x\"};var e=c.options.chart,g=c.options.mapNavigation&&c.options.mapNavigation.enabled;e&&e.panning&&(e.panning=a);var f=a.type,h;Q(this,\"pan\",{originalEvent:b},function(){d&&d.forEach(function(b){b.setState()});var a=c.xAxis;\"xy\"===f?a=a.concat(c.yAxis):\"y\"===f&&(a=c.yAxis);var e={};a.forEach(function(a){if(a.options.panningEnabled&&!a.options.isInternal){var d=a.horiz,\nl=b[d?\"chartX\":\"chartY\"];d=d?\"mouseDownX\":\"mouseDownY\";var k=c[d],m=a.minPointOffset||0,p=a.reversed&&!c.inverted||!a.reversed&&c.inverted?-1:1,n=a.getExtremes(),E=a.toValue(k-l,!0)+m*p,r=a.toValue(k+a.len-l,!0)-(m*p||a.isXAxis&&a.pointRangePadding||0),t=r=p&&E<=r&&(a.setExtremes(k,E,!1,\n!1,{trigger:\"pan\"}),c.resetZoomButton||g||k===p||E===r||!f.match(\"y\")||(c.showResetZoom(),a.displayBtn=!1),h=!0),e[d]=l)}});X(e,function(b,a){c[a]=b});h&&c.redraw(!1);O(c.container,{cursor:\"move\"})})};return a}();M(a.prototype,{callbacks:[],collectionsWithInit:{xAxis:[a.prototype.addAxis,[!0]],yAxis:[a.prototype.addAxis,[!1]],series:[a.prototype.addSeries]},collectionsWithUpdate:[\"xAxis\",\"yAxis\",\"series\"],propsRequireDirtyBox:\"backgroundColor borderColor borderWidth borderRadius plotBackgroundColor plotBackgroundImage plotBorderColor plotBorderWidth plotShadow shadow\".split(\" \"),\npropsRequireReflow:\"margin marginTop marginRight marginBottom marginLeft spacing spacingTop spacingRight spacingBottom spacingLeft\".split(\" \"),propsRequireUpdateSeries:\"chart.inverted chart.polar chart.ignoreHiddenSeries chart.type colors plotOptions time tooltip\".split(\" \")});\"\";return a});M(a,\"Core/Legend/LegendSymbol.js\",[a[\"Core/Utilities.js\"]],function(a){var v=a.merge,z=a.pick,F;(function(a){a.drawLineMarker=function(a){var u=this.options,A=a.symbolWidth,q=a.symbolHeight,n=q/2,k=this.chart.renderer,\ne=this.legendGroup;a=a.baseline-Math.round(.3*a.fontMetrics.b);var c={},h=u.marker;this.chart.styledMode||(c={\"stroke-width\":u.lineWidth||0},u.dashStyle&&(c.dashstyle=u.dashStyle));this.legendLine=k.path([[\"M\",0,a],[\"L\",A,a]]).addClass(\"highcharts-graph\").attr(c).add(e);h&&!1!==h.enabled&&A&&(u=Math.min(z(h.radius,n),n),0===this.symbol.indexOf(\"url\")&&(h=v(h,{width:q,height:q}),u=0),this.legendSymbol=A=k.symbol(this.symbol,A/2-u,a-u,2*u,2*u,h).addClass(\"highcharts-point\").add(e),A.isMarker=!0)};a.drawRectangle=\nfunction(a,v){var u=a.symbolHeight,q=a.options.squareSymbol;v.legendSymbol=this.chart.renderer.rect(q?(a.symbolWidth-u)/2:0,a.baseline-u+1,q?u:a.symbolWidth,u,z(a.options.symbolRadius,u/2)).addClass(\"highcharts-point\").attr({zIndex:3}).add(v.legendGroup)}})(F||(F={}));return F});M(a,\"Core/Series/SeriesDefaults.js\",[],function(){return{lineWidth:2,allowPointSelect:!1,crisp:!0,showCheckbox:!1,animation:{duration:1E3},events:{},marker:{enabledThreshold:2,lineColor:\"#ffffff\",lineWidth:0,radius:4,states:{normal:{animation:!0},\nhover:{animation:{duration:50},enabled:!0,radiusPlus:2,lineWidthPlus:1},select:{fillColor:\"#cccccc\",lineColor:\"#000000\",lineWidth:2}}},point:{events:{}},dataLabels:{animation:{},align:\"center\",defer:!0,formatter:function(){var a=this.series.chart.numberFormatter;return\"number\"!==typeof this.y?\"\":a(this.y,-1)},padding:5,style:{fontSize:\"11px\",fontWeight:\"bold\",color:\"contrast\",textOutline:\"1px contrast\"},verticalAlign:\"bottom\",x:0,y:0},cropThreshold:300,opacity:1,pointRange:0,softThreshold:!0,states:{normal:{animation:!0},\nhover:{animation:{duration:50},lineWidthPlus:1,marker:{},halo:{size:10,opacity:.25}},select:{animation:{duration:0}},inactive:{animation:{duration:50},opacity:.2}},stickyTracking:!0,turboThreshold:1E3,findNearestPointBy:\"x\"}});M(a,\"Core/Series/Series.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/DefaultOptions.js\"],a[\"Core/Foundation.js\"],a[\"Core/Globals.js\"],a[\"Core/Legend/LegendSymbol.js\"],a[\"Core/Series/Point.js\"],a[\"Core/Series/SeriesDefaults.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Renderer/SVG/SVGElement.js\"],\na[\"Core/Utilities.js\"]],function(a,u,z,F,y,G,H,A,q,n){var k=a.animObject,e=a.setAnimation,c=u.defaultOptions,h=z.registerEventOptions,f=F.hasTouch,w=F.svg,p=F.win,B=A.seriesTypes,t=n.addEvent,v=n.arrayMax,C=n.arrayMin,r=n.clamp,l=n.cleanRecursively,b=n.correctFloat,g=n.defined,d=n.erase,m=n.error,D=n.extend,x=n.find,I=n.fireEvent,P=n.getNestedProperty,S=n.isArray,O=n.isNumber,U=n.isString,Y=n.merge,L=n.objectEach,K=n.pick,M=n.removeEvent,da=n.splat,Q=n.syncTimeout;a=function(){function a(){this.zones=\nthis.yAxis=this.xAxis=this.userOptions=this.tooltipOptions=this.processedYData=this.processedXData=this.points=this.options=this.linkedSeries=this.index=this.eventsToUnbind=this.eventOptions=this.data=this.chart=this._i=void 0}a.prototype.init=function(a,b){I(this,\"init\",{options:b});var c=this,d=a.series;this.eventsToUnbind=[];c.chart=a;c.options=c.setOptions(b);b=c.options;c.linkedSeries=[];c.bindAxes();D(c,{name:b.name,state:\"\",visible:!1!==b.visible,selected:!0===b.selected});h(this,b);var e=\nb.events;if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;c.getColor();c.getSymbol();c.parallelArrays.forEach(function(a){c[a+\"Data\"]||(c[a+\"Data\"]=[])});c.isCartesian&&(a.hasCartesianSeries=!0);var g;d.length&&(g=d[d.length-1]);c._i=K(g&&g._i,-1)+1;c.opacity=c.options.opacity;a.orderSeries(this.insert(d));b.dataSorting&&b.dataSorting.enabled?c.setDataSortingOptions():c.points||c.data||c.setData(b.data,!1);I(this,\"afterInit\")};a.prototype.is=function(a){return B[a]&&\nthis instanceof B[a]};a.prototype.insert=function(a){var b=this.options.index,c;if(O(b)){for(c=a.length;c--;)if(b>=K(a[c].options.index,a[c]._i)){a.splice(c+1,0,this);break}-1===c&&a.unshift(this);c+=1}else a.push(this);return K(c,a.length-1)};a.prototype.bindAxes=function(){var a=this,b=a.options,c=a.chart,d;I(this,\"bindAxes\",null,function(){(a.axisTypes||[]).forEach(function(e){var g=0;c[e].forEach(function(c){d=c.options;if(b[e]===g&&!d.isInternal||\"undefined\"!==typeof b[e]&&b[e]===d.id||\"undefined\"===\ntypeof b[e]&&0===d.index)a.insert(c.series),a[e]=c,c.isDirty=!0;d.isInternal||g++});a[e]||a.optionalAxis===e||m(18,!0,c)})});I(this,\"afterBindAxes\")};a.prototype.updateParallelArrays=function(a,b){var c=a.series,d=arguments,e=O(b)?function(d){var e=\"y\"===d&&c.toYData?c.toYData(a):a[d];c[d+\"Data\"][b]=e}:function(a){Array.prototype[b].apply(c[a+\"Data\"],Array.prototype.slice.call(d,2))};c.parallelArrays.forEach(e)};a.prototype.hasData=function(){return this.visible&&\"undefined\"!==typeof this.dataMax&&\n\"undefined\"!==typeof this.dataMin||this.visible&&this.yData&&0=this.cropStart?l-this.cropStart:l);!h&&O(l)&&e[l]&&e[l].touched&&(l=void 0);return l};a.prototype.updateData=function(a,b){var c=this.options,d=c.dataSorting,e=this.points,f=[],h=this.requireSorting,l=a.length===e.length,k,m,p,n=!0;this.xIncrement=null;a.forEach(function(a,\nb){var m=g(a)&&this.pointClass.prototype.optionsToObject.call({series:this},a)||{},n=m.x;if(m.id||O(n)){if(m=this.findPointIndex(m,p),-1===m||\"undefined\"===typeof m?f.push(a):e[m]&&a!==c.data[m]?(e[m].update(a,!1,null,!1),e[m].touched=!0,h&&(p=m+1)):e[m]&&(e[m].touched=!0),!l||b!==m||d&&d.enabled||this.hasDerivedData)k=!0}else f.push(a)},this);if(k)for(a=e.length;a--;)(m=e[a])&&!m.touched&&m.remove&&m.remove(!1,b);else!l||d&&d.enabled?n=!1:(a.forEach(function(a,b){a!==e[b].y&&e[b].update&&e[b].update(a,\n!1,null,!1)}),f.length=0);e.forEach(function(a){a&&(a.touched=!1)});if(!n)return!1;f.forEach(function(a){this.addPoint(a,!1,null,null,!1)},this);null===this.xIncrement&&this.xData&&this.xData.length&&(this.xIncrement=v(this.xData),this.autoIncrement());return!0};a.prototype.setData=function(a,b,c,d){var e=this,g=e.points,f=g&&g.length||0,h=e.options,l=e.chart,k=h.dataSorting,p=e.xAxis,n=h.turboThreshold,r=this.xData,E=this.yData,t=e.pointArrayMap;t=t&&t.length;var q=h.keys,w,B=0,C=1,x=null;a=a||[];\nvar v=a.length;b=K(b,!0);k&&k.enabled&&(a=this.sortData(a));!1!==d&&v&&f&&!e.cropped&&!e.hasGroupedData&&e.visible&&!e.isSeriesBoosting&&(w=this.updateData(a,c));if(!w){e.xIncrement=null;e.colorCounter=0;this.parallelArrays.forEach(function(a){e[a+\"Data\"].length=0});if(n&&v>n)if(x=e.getFirstValidPoint(a),O(x))for(c=0;ca?1:0}).forEach(function(a,b){a.x=b},this);b.linkedSeries&&b.linkedSeries.forEach(function(b){var c=\nb.options,e=c.data;c.dataSorting&&c.dataSorting.enabled||!e||(e.forEach(function(c,g){e[g]=d(b,c);a[g]&&(e[g].x=a[g].x,e[g].index=g)}),b.setData(e,!1))});return a};a.prototype.getProcessedData=function(a){var b=this.xAxis,c=this.options,d=c.cropThreshold,e=a||this.getExtremesFromAll||c.getExtremesFromAll,g=this.isCartesian;a=b&&b.val2lin;c=!(!b||!b.logarithmic);var f=0,h=this.xData,l=this.yData,k=this.requireSorting;var p=!1;var n=h.length;if(b){p=b.getExtremes();var r=p.min;var E=p.max;p=b.categories&&\n!b.names.length}if(g&&this.sorted&&!e&&(!d||n>d||this.forceCrop))if(h[n-1]E)h=[],l=[];else if(this.yData&&(h[0]E)){var t=this.cropData(this.xData,this.yData,r,E);h=t.xData;l=t.yData;f=t.start;t=!0}for(d=h.length||1;--d;)if(b=c?a(h[d])-a(h[d-1]):h[d]-h[d-1],0b&&k&&!p&&(m(15,!1,this.chart),k=!1);return{xData:h,yData:l,cropped:t,cropStart:f,closestPointRange:q}};a.prototype.processData=function(a){var b=this.xAxis;if(this.isCartesian&&\n!this.isDirty&&!b.isDirty&&!this.yAxis.isDirty&&!a)return!1;a=this.getProcessedData();this.cropped=a.cropped;this.cropStart=a.cropStart;this.processedXData=a.xData;this.processedYData=a.yData;this.closestPointRange=this.basePointRange=a.closestPointRange;I(this,\"afterProcessData\")};a.prototype.cropData=function(a,b,c,d,e){var g=a.length,f,h=0,l=g;e=K(e,this.cropShoulder);for(f=0;f=c){h=Math.max(0,f-e);break}for(c=f;cd){l=c+e;break}return{xData:a.slice(h,l),yData:b.slice(h,\nl),start:h,end:l}};a.prototype.generatePoints=function(){var a=this.options,b=a.data,c=this.processedXData,d=this.processedYData,e=this.pointClass,g=c.length,f=this.cropStart||0,h=this.hasGroupedData,l=a.keys,k=[];a=a.dataGrouping&&a.dataGrouping.groupAll?f:0;var m,p,n=this.data;if(!n&&!h){var r=[];r.length=b.length;n=this.data=r}l&&h&&(this.options.keys=!1);for(p=0;p=l&&(e[h-f]||r)<=k;if(t&&r)if(t=n.length)for(;t--;)O(n[t])&&(g[m++]=n[t]);else g[m++]=n}a={activeYData:g,dataMin:C(g),dataMax:v(g)};\nI(this,\"afterGetExtremes\",{dataExtremes:a});return a};a.prototype.applyExtremes=function(){var a=this.getExtremes();this.dataMin=a.dataMin;this.dataMax=a.dataMax;return a};a.prototype.getFirstValidPoint=function(a){for(var b=a.length,c=0,d=null;null===d&&c=A&&(A=null),x.total=x.stackTotal=u.total,x.percentage=u.total&&x.y/u.total*100,x.stackY=J,this.irregularWidths||u.setOffset(this.pointXOffset||0,this.barW||0));x.yBottom=g(A)?r(h.translate(A,0,1,0,1),-1E5,1E5):null;this.dataModify&&(J=this.dataModify.modifyValue(J,w));x.plotY=void 0;O(J)&&(u=h.translate(J,!1,!0,!1,!0),\"undefined\"!==typeof u&&(x.plotY=r(u,\n-1E5,1E5)));x.isInside=this.isPointInside(x);x.clientX=p?b(d.translate(v,0,0,0,1,m)):B;x.negative=x[q]<(a[q+\"Threshold\"]||n||0);x.category=e&&\"undefined\"!==typeof e[x.x]?e[x.x]:x.x;if(!x.isNull&&!1!==x.visible){\"undefined\"!==typeof F&&(C=Math.min(C,Math.abs(B-F)));var F=B}x.zone=this.zones.length?x.getZone():void 0;!x.graphic&&this.group&&f&&(x.isNew=!0)}this.closestPointRangePx=C;I(this,\"afterTranslate\")};a.prototype.getValidPoints=function(a,b,c){var d=this.chart;return(a||this.points||[]).filter(function(a){return b&&\n!d.isInsidePlot(a.plotX,a.plotY,{inverted:d.inverted})?!1:!1!==a.visible&&(c||!a.isNull)})};a.prototype.getClipBox=function(){var a=this.chart,b=this.xAxis,c=this.yAxis,d=Y(a.clipBox);b&&b.len!==a.plotSizeX&&(d.width=b.len);c&&c.len!==a.plotSizeY&&(d.height=c.len);return d};a.prototype.getSharedClipKey=function(){return this.sharedClipKey=(this.options.xAxis||0)+\",\"+(this.options.yAxis||0)};a.prototype.setClip=function(){var a=this.chart,b=this.group,c=this.markerGroup,d=a.sharedClips;a=a.renderer;\nvar e=this.getClipBox(),g=this.getSharedClipKey(),f=d[g];f?f.animate(e):d[g]=f=a.clipRect(e);b&&b.clip(!1===this.options.clip?void 0:f);c&&c.clip()};a.prototype.animate=function(a){var b=this.chart,c=this.group,d=this.markerGroup,e=b.inverted,g=k(this.options.animation),f=[this.getSharedClipKey(),g.duration,g.easing,g.defer].join(),h=b.sharedClips[f],l=b.sharedClips[f+\"m\"];if(a&&c)g=this.getClipBox(),h?h.attr(\"height\",g.height):(g.width=0,e&&(g.x=b.plotHeight),h=b.renderer.clipRect(g),b.sharedClips[f]=\nh,l=b.renderer.clipRect({x:e?(b.plotSizeX||0)+99:-99,y:e?-b.plotLeft:-b.plotTop,width:99,height:e?b.chartWidth:b.chartHeight}),b.sharedClips[f+\"m\"]=l),c.clip(h),d&&d.clip(l);else if(h&&!h.hasClass(\"highcharts-animating\")){b=this.getClipBox();var m=g.step;d&&d.element.childNodes.length&&(g.step=function(a,b){m&&m.apply(b,arguments);l&&l.element&&l.attr(b.prop,\"width\"===b.prop?a+99:a)});h.addClass(\"highcharts-animating\").animate(b,g)}};a.prototype.afterAnimate=function(){var a=this;this.setClip();L(this.chart.sharedClips,\nfunction(b,c,d){b&&!a.chart.container.querySelector('[clip-path=\"url(#'+b.id+')\"]')&&(b.destroy(),delete d[c])});this.finishedAnimating=!0;I(this,\"afterAnimate\")};a.prototype.drawPoints=function(){var a=this.points,b=this.chart,c=this.options.marker,d=this[this.specialGroup]||this.markerGroup,e=this.xAxis,g=K(c.enabled,!e||e.isRadial?!0:null,this.closestPointRangePx>=c.enabledThreshold*c.radius),f,h;if(!1!==c.enabled||this._hasPointMarkers)for(f=0;fD.max;a.resetZones&&0===p&&(p=void 0)});this.clips=e}else a.visible&&(g&&g.show(!0),f&&f.show(!0))};a.prototype.invertGroups=function(a){function b(){[\"group\",\"markerGroup\"].forEach(function(b){c[b]&&(d.renderer.isVML&&c[b].attr({width:c.yAxis.len,height:c.xAxis.len}),\nc[b].width=c.yAxis.len,c[b].height=c.xAxis.len,c[b].invert(c.isRadialSeries?!1:a))})}var c=this,d=c.chart;c.xAxis&&(c.eventsToUnbind.push(t(d,\"resize\",b)),b(),c.invertGroups=b)};a.prototype.plotGroup=function(a,b,c,d,e){var f=this[a],h=!f;c={visibility:c,zIndex:d||.1};\"undefined\"===typeof this.opacity||this.chart.styledMode||\"inactive\"===this.state||(c.opacity=this.opacity);h&&(this[a]=f=this.chart.renderer.g().add(e));f.addClass(\"highcharts-\"+b+\" highcharts-series-\"+this.index+\" highcharts-\"+this.type+\n\"-series \"+(g(this.colorIndex)?\"highcharts-color-\"+this.colorIndex+\" \":\"\")+(this.options.className||\"\")+(f.hasClass(\"highcharts-tracker\")?\" highcharts-tracker\":\"\"),!0);f.attr(c)[h?\"attr\":\"animate\"](this.getPlotBox());return f};a.prototype.getPlotBox=function(){var a=this.chart,b=this.xAxis,c=this.yAxis;a.inverted&&(b=c,c=this.xAxis);return{translateX:b?b.left:a.plotLeft,translateY:c?c.top:a.plotTop,scaleX:1,scaleY:1}};a.prototype.removeEvents=function(a){a||M(this);this.eventsToUnbind.length&&(this.eventsToUnbind.forEach(function(a){a()}),\nthis.eventsToUnbind.length=0)};a.prototype.render=function(){var a=this,b=a.chart,c=a.options,d=k(c.animation),e=a.visible?\"inherit\":\"hidden\",g=c.zIndex,f=a.hasRendered,h=b.seriesGroup,l=b.inverted;b=!a.finishedAnimating&&b.renderer.isSVG?d.duration:0;I(this,\"render\");var m=a.plotGroup(\"group\",\"series\",e,g,h);a.markerGroup=a.plotGroup(\"markerGroup\",\"markers\",e,g,h);!1!==c.clip&&a.setClip();a.animate&&b&&a.animate(!0);m.inverted=K(a.invertible,a.isCartesian)?l:!1;a.drawGraph&&(a.drawGraph(),a.applyZones());\na.visible&&a.drawPoints();a.drawDataLabels&&a.drawDataLabels();a.redrawPoints&&a.redrawPoints();a.drawTracker&&!1!==a.options.enableMouseTracking&&a.drawTracker();a.invertGroups(l);a.animate&&b&&a.animate();f||(b&&d.defer&&(b+=d.defer),a.animationTimeout=Q(function(){a.afterAnimate()},b||0));a.isDirty=!1;a.hasRendered=!0;I(a,\"afterRender\")};a.prototype.redraw=function(){var a=this.chart,b=this.isDirty||this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;c&&(a.inverted&&c.attr({width:a.plotWidth,\nheight:a.plotHeight}),c.animate({translateX:K(d&&d.left,a.plotLeft),translateY:K(e&&e.top,a.plotTop)}));this.translate();this.render();b&&delete this.kdTree};a.prototype.searchPoint=function(a,b){var c=this.xAxis,d=this.yAxis,e=this.chart.inverted;return this.searchKDTree({clientX:e?c.len-a.chartY+c.pos:a.chartX-c.pos,plotY:e?d.len-a.chartX+d.pos:a.chartY-d.pos},b,a)};a.prototype.buildKDTree=function(a){function b(a,d,e){var g=a&&a.length;if(g){var f=c.kdAxisArray[d%e];a.sort(function(a,b){return a[f]-\nb[f]});g=Math.floor(g/2);return{point:a[g],left:b(a.slice(0,g),d+1,e),right:b(a.slice(g+1),d+1,e)}}}this.buildingKdTree=!0;var c=this,d=-1p?\"left\":\"right\";r=0>p?\"right\":\"left\";b[t]&&(t=d(a,b[t],c+1,k),n=t[l]r;)t--;this.updateParallelArrays(n,\"splice\",t,0,0);this.updateParallelArrays(n,t);l&&n.name&&(l[r]=n.name);m.splice(t,0,a);p&&(this.data.splice(t,0,null),this.processData());\"point\"===g.legendType&&this.generatePoints();c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(n,\"shift\"),m.shift()));!1!==e&&I(this,\"addPoint\",{point:n});this.isDirtyData=this.isDirty=!0;b&&h.redraw(d)};a.prototype.removePoint=\nfunction(a,b,c){var d=this,g=d.data,f=g[a],h=d.points,l=d.chart,k=function(){h&&h.length===g.length&&h.splice(a,1);g.splice(a,1);d.options.data.splice(a,1);d.updateParallelArrays(f||{series:d},\"splice\",a,1);f&&f.destroy();d.isDirty=!0;d.isDirtyData=!0;b&&l.redraw()};e(c,l);b=K(b,!0);f?f.firePointEvent(\"remove\",null,k):k()};a.prototype.remove=function(a,b,c,d){function e(){g.destroy(d);f.isDirtyLegend=f.isDirtyBox=!0;f.linkSeries();K(a,!0)&&f.redraw(b)}var g=this,f=g.chart;!1!==c?I(g,\"remove\",null,\ne):e()};a.prototype.update=function(a,b){a=l(a,this.userOptions);I(this,\"update\",{options:a});var c=this,d=c.chart,e=c.userOptions,g=c.initialType||c.type,f=d.options.plotOptions,h=B[g].prototype,k=c.finishedAnimating&&{animation:!1},p={},n,r=[\"eventOptions\",\"navigatorSeries\",\"baseSeries\"],t=a.type||e.type||d.options.chart.type,q=!(this.hasDerivedData||t&&t!==this.type||\"undefined\"!==typeof a.pointStart||\"undefined\"!==typeof a.pointInterval||\"undefined\"!==typeof a.relativeXValue||c.hasOptionChanged(\"dataGrouping\")||\nc.hasOptionChanged(\"pointStart\")||c.hasOptionChanged(\"pointInterval\")||c.hasOptionChanged(\"pointIntervalUnit\")||c.hasOptionChanged(\"keys\"));t=t||g;q&&(r.push(\"data\",\"isDirtyData\",\"points\",\"processedXData\",\"processedYData\",\"xIncrement\",\"cropped\",\"_hasPointMarkers\",\"_hasPointLabels\",\"clips\",\"nodes\",\"layout\",\"mapMap\",\"mapData\",\"minY\",\"maxY\",\"minX\",\"maxX\"),!1!==a.visible&&r.push(\"area\",\"graph\"),c.parallelArrays.forEach(function(a){r.push(a+\"Data\")}),a.data&&(a.dataSorting&&D(c.options.dataSorting,a.dataSorting),\nthis.setData(a.data,!1)));a=Y(e,k,{index:\"undefined\"===typeof e.index?c.index:e.index,pointStart:K(f&&f.series&&f.series.pointStart,e.pointStart,c.xData[0])},!q&&{data:c.options.data},a);q&&a.data&&(a.data=c.options.data);r=[\"group\",\"markerGroup\",\"dataLabelsGroup\",\"transformGroup\"].concat(r);r.forEach(function(a){r[a]=c[a];delete c[a]});f=!1;if(B[t]){if(f=t!==c.type,c.remove(!1,!1,!1,!0),f)if(Object.setPrototypeOf)Object.setPrototypeOf(c,B[t].prototype);else{k=Object.hasOwnProperty.call(c,\"hcEvents\")&&\nc.hcEvents;for(n in h)c[n]=void 0;D(c,B[t].prototype);k?c.hcEvents=k:delete c.hcEvents}}else m(17,!0,d,{missingModuleFor:t});r.forEach(function(a){c[a]=r[a]});c.init(d,a);if(q&&this.points){var x=c.options;!1===x.visible?(p.graphic=1,p.dataLabel=1):c._hasPointLabels||(a=x.marker,h=x.dataLabels,!a||!1!==a.enabled&&(e.marker&&e.marker.symbol)===a.symbol||(p.graphic=1),h&&!1===h.enabled&&(p.dataLabel=1));this.points.forEach(function(a){a&&a.series&&(a.resolveColor(),Object.keys(p).length&&a.destroyElements(p),\n!1===x.showInLegend&&a.legendItem&&d.legend.destroyItem(a))},this)}c.initialType=g;d.linkSeries();f&&c.linkedSeries.length&&(c.isDirtyData=!0);I(this,\"afterUpdate\");K(b,!0)&&d.redraw(q?void 0:!1)};a.prototype.setName=function(a){this.name=this.options.name=this.userOptions.name=a;this.chart.isDirtyLegend=!0};a.prototype.hasOptionChanged=function(a){var b=this.options[a],c=this.chart.options.plotOptions,d=this.userOptions[a];return d?b!==d:b!==K(c&&c[this.type]&&c[this.type][a],c&&c.series&&c.series[a],\nb)};a.prototype.onMouseOver=function(){var a=this.chart,b=a.hoverSeries;a.pointer.setHoverChartIndex();if(b&&b!==this)b.onMouseOut();this.options.events.mouseOver&&I(this,\"mouseOver\");this.setState(\"hover\");a.hoverSeries=this};a.prototype.onMouseOut=function(){var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;b.hoverSeries=null;if(d)d.onMouseOut();this&&a.events.mouseOut&&I(this,\"mouseOut\");!c||this.stickyTracking||c.shared&&!this.noSharedTooltip||c.hide();b.series.forEach(function(a){a.setState(\"\",\n!0)})};a.prototype.setState=function(a,b){var c=this,d=c.options,e=c.graph,g=d.inactiveOtherPoints,f=d.states,h=K(f[a||\"normal\"]&&f[a||\"normal\"].animation,c.chart.options.chart.animation),l=d.lineWidth,k=0,m=d.opacity;a=a||\"\";if(c.state!==a&&([c.group,c.markerGroup,c.dataLabelsGroup].forEach(function(b){b&&(c.state&&b.removeClass(\"highcharts-series-\"+c.state),a&&b.addClass(\"highcharts-series-\"+a))}),c.state=a,!c.chart.styledMode)){if(f[a]&&!1===f[a].enabled)return;a&&(l=f[a].lineWidth||l+(f[a].lineWidthPlus||\n0),m=K(f[a].opacity,m));if(e&&!e.dashstyle)for(d={\"stroke-width\":l},e.animate(d,h);c[\"zone-graph-\"+k];)c[\"zone-graph-\"+k].animate(d,h),k+=1;g||[c.group,c.markerGroup,c.dataLabelsGroup,c.labelBySeries].forEach(function(a){a&&a.animate({opacity:m},h)})}b&&g&&c.points&&c.setAllPointsToState(a||void 0)};a.prototype.setAllPointsToState=function(a){this.points.forEach(function(b){b.setState&&b.setState(a)})};a.prototype.setVisible=function(a,b){var c=this,d=c.chart,e=c.legendItem,g=d.options.chart.ignoreHiddenSeries,\nf=c.visible,h=(c.visible=a=c.options.visible=c.userOptions.visible=\"undefined\"===typeof a?!f:a)?\"show\":\"hide\";[\"group\",\"dataLabelsGroup\",\"markerGroup\",\"tracker\",\"tt\"].forEach(function(a){if(c[a])c[a][h]()});if(d.hoverSeries===c||(d.hoverPoint&&d.hoverPoint.series)===c)c.onMouseOut();e&&d.legend.colorizeItem(c,a);c.isDirty=!0;c.options.stacking&&d.series.forEach(function(a){a.options.stacking&&a.visible&&(a.isDirty=!0)});c.linkedSeries.forEach(function(b){b.setVisible(a,!1)});g&&(d.isDirtyBox=!0);\nI(c,h);!1!==b&&d.redraw()};a.prototype.show=function(){this.setVisible(!0)};a.prototype.hide=function(){this.setVisible(!1)};a.prototype.select=function(a){this.selected=a=this.options.selected=\"undefined\"===typeof a?!this.selected:a;this.checkbox&&(this.checkbox.checked=a);I(this,a?\"select\":\"unselect\")};a.prototype.shouldShowTooltip=function(a,b,c){void 0===c&&(c={});c.series=this;c.visiblePlotOnly=!0;return this.chart.isInsidePlot(a,b,c)};a.defaultOptions=H;return a}();D(a.prototype,{axisTypes:[\"xAxis\",\n\"yAxis\"],coll:\"series\",colorCounter:0,cropShoulder:1,directTouch:!1,drawLegendSymbol:y.drawLineMarker,isCartesian:!0,kdAxisArray:[\"clientX\",\"plotY\"],parallelArrays:[\"x\",\"y\"],pointClass:G,requireSorting:!0,sorted:!0});A.series=a;\"\";\"\";return a});M(a,\"Extensions/ScrollablePlotArea.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/Axis/Axis.js\"],a[\"Core/Chart/Chart.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Renderer/RendererRegistry.js\"],a[\"Core/Utilities.js\"]],function(a,u,z,F,y,G){var v=a.stop,A=\nG.addEvent,q=G.createElement,n=G.merge,k=G.pick;A(z,\"afterSetChartSize\",function(a){var c=this.options.chart.scrollablePlotArea,e=c&&c.minWidth;c=c&&c.minHeight;if(!this.renderer.forExport){if(e){if(this.scrollablePixelsX=e=Math.max(0,e-this.chartWidth)){this.scrollablePlotBox=this.renderer.scrollablePlotBox=n(this.plotBox);this.plotBox.width=this.plotWidth+=e;this.inverted?this.clipBox.height+=e:this.clipBox.width+=e;var f={1:{name:\"right\",value:e}}}}else c&&(this.scrollablePixelsY=e=Math.max(0,\nc-this.chartHeight))&&(this.scrollablePlotBox=this.renderer.scrollablePlotBox=n(this.plotBox),this.plotBox.height=this.plotHeight+=e,this.inverted?this.clipBox.width+=e:this.clipBox.height+=e,f={2:{name:\"bottom\",value:e}});f&&!a.skipAxes&&this.axes.forEach(function(a){f[a.side]?a.getPlotLinePath=function(){var c=f[a.side].name,e=this[c];this[c]=e-f[a.side].value;var h=u.prototype.getPlotLinePath.apply(this,arguments);this[c]=e;return h}:(a.setAxisSize(),a.setAxisTranslation())})}});A(z,\"render\",function(){this.scrollablePixelsX||\nthis.scrollablePixelsY?(this.setUpScrolling&&this.setUpScrolling(),this.applyFixed()):this.fixedDiv&&this.applyFixed()});z.prototype.setUpScrolling=function(){var a=this,c={WebkitOverflowScrolling:\"touch\",overflowX:\"hidden\",overflowY:\"hidden\"};this.scrollablePixelsX&&(c.overflowX=\"auto\");this.scrollablePixelsY&&(c.overflowY=\"auto\");this.scrollingParent=q(\"div\",{className:\"highcharts-scrolling-parent\"},{position:\"relative\"},this.renderTo);this.scrollingContainer=q(\"div\",{className:\"highcharts-scrolling\"},\nc,this.scrollingParent);A(this.scrollingContainer,\"scroll\",function(){a.pointer&&delete a.pointer.chartPosition});this.innerContainer=q(\"div\",{className:\"highcharts-inner-container\"},null,this.scrollingContainer);this.innerContainer.appendChild(this.container);this.setUpScrolling=null};z.prototype.moveFixedElements=function(){var a=this.container,c=this.fixedRenderer,h=\".highcharts-contextbutton .highcharts-credits .highcharts-legend .highcharts-legend-checkbox .highcharts-navigator-series .highcharts-navigator-xaxis .highcharts-navigator-yaxis .highcharts-navigator .highcharts-reset-zoom .highcharts-drillup-button .highcharts-scrollbar .highcharts-subtitle .highcharts-title\".split(\" \"),\nf;this.scrollablePixelsX&&!this.inverted?f=\".highcharts-yaxis\":this.scrollablePixelsX&&this.inverted?f=\".highcharts-xaxis\":this.scrollablePixelsY&&!this.inverted?f=\".highcharts-xaxis\":this.scrollablePixelsY&&this.inverted&&(f=\".highcharts-yaxis\");f&&h.push(f+\":not(.highcharts-radial-axis)\",f+\"-labels:not(.highcharts-radial-axis-labels)\");h.forEach(function(e){[].forEach.call(a.querySelectorAll(e),function(a){(a.namespaceURI===c.SVG_NS?c.box:c.box.parentNode).appendChild(a);a.style.pointerEvents=\"auto\"})})};\nz.prototype.applyFixed=function(){var a=!this.fixedDiv,c=this.options.chart,h=c.scrollablePlotArea,f=y.getRendererType();a?(this.fixedDiv=q(\"div\",{className:\"highcharts-fixed\"},{position:\"absolute\",overflow:\"hidden\",pointerEvents:\"none\",zIndex:(c.style&&c.style.zIndex||0)+2,top:0},null,!0),this.scrollingContainer&&this.scrollingContainer.parentNode.insertBefore(this.fixedDiv,this.scrollingContainer),this.renderTo.style.overflow=\"visible\",this.fixedRenderer=c=new f(this.fixedDiv,this.chartWidth,this.chartHeight,\nthis.options.chart.style),this.scrollableMask=c.path().attr({fill:this.options.chart.backgroundColor||\"#fff\",\"fill-opacity\":k(h.opacity,.85),zIndex:-1}).addClass(\"highcharts-scrollable-mask\").add(),A(this,\"afterShowResetZoom\",this.moveFixedElements),A(this,\"afterDrilldown\",this.moveFixedElements),A(this,\"afterLayOutTitles\",this.moveFixedElements)):this.fixedRenderer.setSize(this.chartWidth,this.chartHeight);if(this.scrollableDirty||a)this.scrollableDirty=!1,this.moveFixedElements();c=this.chartWidth+\n(this.scrollablePixelsX||0);f=this.chartHeight+(this.scrollablePixelsY||0);v(this.container);this.container.style.width=c+\"px\";this.container.style.height=f+\"px\";this.renderer.boxWrapper.attr({width:c,height:f,viewBox:[0,0,c,f].join(\" \")});this.chartBackground.attr({width:c,height:f});this.scrollingContainer.style.height=this.chartHeight+\"px\";a&&(h.scrollPositionX&&(this.scrollingContainer.scrollLeft=this.scrollablePixelsX*h.scrollPositionX),h.scrollPositionY&&(this.scrollingContainer.scrollTop=this.scrollablePixelsY*\nh.scrollPositionY));f=this.axisOffset;a=this.plotTop-f[0]-1;h=this.plotLeft-f[3]-1;c=this.plotTop+this.plotHeight+f[2]+1;f=this.plotLeft+this.plotWidth+f[1]+1;var n=this.plotLeft+this.plotWidth-(this.scrollablePixelsX||0),p=this.plotTop+this.plotHeight-(this.scrollablePixelsY||0);a=this.scrollablePixelsX?[[\"M\",0,a],[\"L\",this.plotLeft-1,a],[\"L\",this.plotLeft-1,c],[\"L\",0,c],[\"Z\"],[\"M\",n,a],[\"L\",this.chartWidth,a],[\"L\",this.chartWidth,c],[\"L\",n,c],[\"Z\"]]:this.scrollablePixelsY?[[\"M\",h,0],[\"L\",h,this.plotTop-\n1],[\"L\",f,this.plotTop-1],[\"L\",f,0],[\"Z\"],[\"M\",h,p],[\"L\",h,this.chartHeight],[\"L\",f,this.chartHeight],[\"L\",f,p],[\"Z\"]]:[[\"M\",0,0]];\"adjustHeight\"!==this.redrawTrigger&&this.scrollableMask.attr({d:a})};A(u,\"afterInit\",function(){this.chart.scrollableDirty=!0});A(F,\"show\",function(){this.chart.scrollableDirty=!0});\"\"});M(a,\"Core/Axis/StackingAxis.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/Axis/Axis.js\"],a[\"Core/Utilities.js\"]],function(a,u,z){var v=a.getDeferredAnimation,y=z.addEvent,G=\nz.destroyObjectProperties,H=z.fireEvent,A=z.isNumber,q=z.objectEach,n;(function(a){function e(){var a=this.stacking;if(a){var c=a.stacks;q(c,function(a,e){G(a);c[e]=null});a&&a.stackTotalGroup&&a.stackTotalGroup.destroy()}}function c(){this.stacking||(this.stacking=new f(this))}var h=[];a.compose=function(a){-1===h.indexOf(a)&&(h.push(a),y(a,\"init\",c),y(a,\"destroy\",e));return a};var f=function(){function a(a){this.oldStacks={};this.stacks={};this.stacksTouched=0;this.axis=a}a.prototype.buildStacks=\nfunction(){var a=this.axis,c=a.series,e=a.options.reversedStacks,f=c.length,h;if(!a.isXAxis){this.usePercentage=!1;for(h=f;h--;){var k=c[e?h:f-h-1];k.setStackedPoints();k.setGroupedPoints()}for(h=0;hf&&n.shadow));p&&(p.startX=k.xMap,p.isArea=k.isArea)})};A.prototype.getGraphPath=function(a,n,k){var e=this,c=e.options,h=[],f=[],q,p=c.step;a=a||e.points;var v=a.reversed;v&&a.reverse();\n(p={right:1,center:2}[p]||p&&3)&&v&&(p=4-p);a=this.getValidPoints(a,!1,!(c.connectNulls&&!n&&!k));a.forEach(function(t,v){var w=t.plotX,r=t.plotY,l=a[v-1];(t.leftCliff||l&&l.rightCliff)&&!k&&(q=!0);t.isNull&&!y(n)&&0a&&v>c?(v=Math.max(a,c),t=2*c-v):vk&&t>c?(t=Math.max(k,c),v=2*c-t):t=Math.abs(c)&&.5a.closestPointRange*a.xAxis.transA;f=a.borderWidth=J(d.borderWidth,f?0:1);var l=a.xAxis,k=a.yAxis,n=d.threshold,p=a.translatedThreshold=k.getThreshold(n),r=J(d.minPointLength,5),q=a.getColumnMetrics(),t=q.width,v=a.pointXOffset=q.offset,u=a.dataMin,w=a.dataMax,C=a.barW=Math.max(t,1+2*f);c.inverted&&(p-=.5);d.pointPadding&&(C=Math.ceil(C));y.prototype.translate.apply(a);a.points.forEach(function(b){var g=\nJ(b.yBottom,p),f=999+Math.abs(g),m=b.plotX||0;f=e(b.plotY,-f,k.len+f);var x=Math.min(f,g),D=Math.max(f,g)-x,y=t,A=m+v,z=C;r&&Math.abs(D)r?g-r:p-(m?r:0));h(b.options.pointWidth)&&(y=z=Math.ceil(b.options.pointWidth),A-=Math.round((y-t)/2));d.centerInCategory&&(A=a.adjustForMissingColumns(A,y,b,q));b.barX=A;b.pointWidth=y;b.tooltipPos=c.inverted?[e(k.len+\nk.pos-c.plotLeft-f,k.pos-c.plotLeft,k.len+k.pos-c.plotLeft),l.len+l.pos-c.plotTop-A-z/2,D]:[l.left-c.plotLeft+A+z/2,e(f+k.pos-c.plotTop,k.pos-c.plotTop,k.len+k.pos-c.plotTop),D];b.shapeType=a.pointClass.prototype.shapeType||\"rect\";b.shapeArgs=a.crispCol.apply(a,b.isNull?[A,p,z,0]:[A,x,z,D])})};l.prototype.drawGraph=function(){this.group[this.dense?\"addClass\":\"removeClass\"](\"highcharts-dense-data\")};l.prototype.pointAttribs=function(a,c){var b=this.options,e=this.pointAttrToOptions||{},g=e.stroke||\n\"borderColor\",f=e[\"stroke-width\"]||\"borderWidth\",h=a&&a.color||this.color,l=a&&a[g]||b[g]||h;e=a&&a.options.dashStyle||b.dashStyle;var k=a&&a[f]||b[f]||this[f]||0,p=J(a&&a.opacity,b.opacity,1);if(a&&this.zones.length){var r=a.getZone();h=a.options.color||r&&(r.color||a.nonZonedColor)||this.color;r&&(l=r.borderColor||l,e=r.dashStyle||e,k=r.borderWidth||k)}c&&a&&(a=t(b.states[c],a.options.states&&a.options.states[c]||{}),c=a.brightness,h=a.color||\"undefined\"!==typeof c&&n(h).brighten(a.brightness).get()||\nh,l=a[g]||l,k=a[f]||k,e=a.dashStyle||e,p=J(a.opacity,p));g={fill:h,stroke:l,\"stroke-width\":k,opacity:p};e&&(g.dashstyle=e);return g};l.prototype.drawPoints=function(){var a=this,c=this.chart,d=a.options,e=c.renderer,f=d.animationLimit||250,h;a.points.forEach(function(b){var g=b.graphic,l=!!g,k=g&&c.pointCountv,\"left\"===q?m.y-=v?p.height:0:\"center\"===q?(m.x-=p.width/2,m.y-=p.height/2):\"right\"===q&&(m.x-=p.width,m.y-=v?0:p.height),b.placed=!0,b.alignAttr=m):(v(d),b.align(c,void 0,d),m=b.alignAttr);u&&0<=d.height?this.justifyDataLabel(b,c,m,p,d,f):e(c.crop,!0)&&(w=h.isInsidePlot(m.x,m.y,{paneCoordinates:!0,series:g})&&h.isInsidePlot(m.x+p.width,m.y+p.height,{paneCoordinates:!0,\nseries:g}));if(c.shape&&!r)b[f?\"attr\":\"animate\"]({anchorX:l?h.plotWidth-a.plotY:a.plotX,anchorY:l?h.plotHeight-a.plotX:a.plotY})}f&&k&&(b.placed=!1);w||k&&!u||(b.hide(!0),b.placed=!1)}function h(a,b){var c=b.filter;return c?(b=c.operator,a=a[c.property],c=c.value,\">\"===b&&a>c||\"<\"===b&&a=\"===b&&a>=c||\"<=\"===b&&a<=c||\"==\"===b&&a==c||\"===\"===b&&a===c?!0:!1):!0}function u(){var a=this,b=a.chart,g=a.options,d=a.points,f=a.hasRendered||0,n=b.renderer,p=g.dataLabels,r,t=p.animation;t=p.defer?v(b,\nt,a):{defer:0,duration:0};p=z(z(b.options.plotOptions&&b.options.plotOptions.series&&b.options.plotOptions.series.dataLabels,b.options.plotOptions&&b.options.plotOptions[a.type]&&b.options.plotOptions[a.type].dataLabels),p);A(this,\"drawDataLabels\");if(q(p)||p.enabled||a._hasPointLabels){var u=a.plotGroup(\"dataLabelsGroup\",\"data-labels\",f?\"inherit\":\"hidden\",p.zIndex||6);u.attr({opacity:+f});!f&&(f=a.dataLabelsGroup)&&(a.visible&&u.show(!0),f[g.animation?\"animate\":\"attr\"]({opacity:1},t));d.forEach(function(d){r=\nc(z(p,d.dlOptions||d.options&&d.options.dataLabels));r.forEach(function(c,f){var l=c.enabled&&(!d.isNull||d.dataLabelOnNull)&&h(d,c),m=d.connectors?d.connectors[f]:d.connector,p=d.dataLabels?d.dataLabels[f]:d.dataLabel,r=e(c.distance,d.labelDistance),q=!p;if(l){var t=d.getLabelConfig();var v=e(c[d.formatPrefix+\"Format\"],c.format);t=G(v)?y(v,t,b):(c[d.formatPrefix+\"Formatter\"]||c.formatter).call(t,c);v=c.style;var w=c.rotation;b.styledMode||(v.color=e(c.color,v.color,a.color,\"#000000\"),\"contrast\"===\nv.color?(d.contrastColor=n.getContrast(d.color||a.color),v.color=!G(r)&&c.inside||0>r||g.stacking?d.contrastColor:\"#000000\"):delete d.contrastColor,g.cursor&&(v.cursor=g.cursor));var C={r:c.borderRadius||0,rotation:w,padding:c.padding,zIndex:1};b.styledMode||(C.fill=c.backgroundColor,C.stroke=c.borderColor,C[\"stroke-width\"]=c.borderWidth);k(C,function(a,b){\"undefined\"===typeof a&&delete C[b]})}!p||l&&G(t)&&!!p.div===!!c.useHTML||(d.dataLabel=p=d.dataLabel&&d.dataLabel.destroy(),d.dataLabels&&(1===\nd.dataLabels.length?delete d.dataLabels:delete d.dataLabels[f]),f||delete d.dataLabel,m&&(d.connector=d.connector.destroy(),d.connectors&&(1===d.connectors.length?delete d.connectors:delete d.connectors[f])));l&&G(t)&&(p?C.text=t:(d.dataLabels=d.dataLabels||[],p=d.dataLabels[f]=w?n.text(t,0,-9999,c.useHTML).addClass(\"highcharts-data-label\"):n.label(t,0,-9999,c.shape,null,null,c.useHTML,null,\"data-label\"),f||(d.dataLabel=p),p.addClass(\" highcharts-data-label-color-\"+d.colorIndex+\" \"+(c.className||\n\"\")+(c.useHTML?\" highcharts-tracker\":\"\"))),p.options=c,p.attr(C),b.styledMode||p.css(v).shadow(c.shadow),p.added||p.add(u),c.textPath&&!c.useHTML&&(p.setTextPath(d.getDataLabelPath&&d.getDataLabelPath(p)||d.graphic,c.textPath),d.dataLabelPath&&!c.textPath.enabled&&(d.dataLabelPath=d.dataLabelPath.destroy())),a.alignDataLabel(d,p,c,null,q))})})}A(this,\"afterDrawDataLabels\")}function t(a,b,c,d,e,f){var g=this.chart,h=b.align,k=b.verticalAlign,l=a.box?0:a.padding||0,m=b.x;m=void 0===m?0:m;var n=b.y;\nn=void 0===n?0:n;var p=(c.x||0)+l;if(0>p){\"right\"===h&&0<=m?(b.align=\"left\",b.inside=!0):m-=p;var r=!0}p=(c.x||0)+d.width-l;p>g.plotWidth&&(\"left\"===h&&0>=m?(b.align=\"right\",b.inside=!0):m+=g.plotWidth-p,r=!0);p=c.y+l;0>p&&(\"bottom\"===k&&0<=n?(b.verticalAlign=\"top\",b.inside=!0):n-=p,r=!0);p=(c.y||0)+d.height-l;p>g.plotHeight&&(\"top\"===k&&0>=n?(b.verticalAlign=\"bottom\",b.inside=!0):n+=g.plotHeight-p,r=!0);r&&(b.x=m,b.y=n,a.placed=!f,a.align(b,void 0,e));return r}function z(a,b){var c=[],d;if(q(a)&&\n!q(b))c=a.map(function(a){return n(a,b)});else if(q(b)&&!q(a))c=b.map(function(b){return n(a,b)});else if(q(a)||q(b))for(d=Math.max(a.length,b.length);d--;)c[d]=n(a[d],b[d]);else c=n(a,b);return c}function C(a,b,c,d,e){var g=this.chart,f=g.inverted,h=this.xAxis,k=h.reversed,l=f?b.height/2:b.width/2;a=(a=a.pointWidth)?a/2:0;b.startXPos=f?e.x:k?-l-a:h.width-l+a;b.startYPos=f?k?this.yAxis.height-l+a:-l-a:e.y;d?\"hidden\"===b.visibility&&(b.show(),b.attr({opacity:0}).animate({opacity:1})):b.attr({opacity:1}).animate({opacity:0},\nvoid 0,b.hide);g.hasRendered&&(c&&b.attr({x:b.startXPos,y:b.startYPos}),b.placed=!0)}var r=[];a.compose=function(a){if(-1===r.indexOf(a)){var b=a.prototype;r.push(a);b.alignDataLabel=f;b.drawDataLabels=u;b.justifyDataLabel=t;b.setDataLabelStartPos=C}}})(h||(h={}));\"\";return h});M(a,\"Series/Column/ColumnDataLabel.js\",[a[\"Core/Series/DataLabel.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Utilities.js\"]],function(a,u,z){var v=u.series,y=z.merge,G=z.pick,H;(function(u){function q(a,e,c,h,f){var k=\nthis.chart.inverted,n=a.series,q=(n.xAxis?n.xAxis.len:this.chart.plotSizeX)||0;n=(n.yAxis?n.yAxis.len:this.chart.plotSizeY)||0;var t=a.dlBox||a.shapeArgs,u=G(a.below,a.plotY>G(this.translatedThreshold,n)),C=G(c.inside,!!this.options.stacking);t&&(h=y(t),0>h.y&&(h.height+=h.y,h.y=0),t=h.y+h.height-n,0\\u25cf {series.name}
    ',\npointFormat:\"x: {point.x}
    y: {point.y}
    \"}});return n}(u);H(F.prototype,{drawTracker:a.prototype.drawTracker,sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:[\"group\",\"markerGroup\",\"dataLabelsGroup\"],takeOrdinalPosition:!1});G(F,\"afterTranslate\",function(){this.applyJitter()});z.registerSeriesType(\"scatter\",F);\"\";return F});M(a,\"Series/CenteredUtilities.js\",[a[\"Core/Globals.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Utilities.js\"]],function(a,u,z){var v=a.deg2rad,y=z.isNumber,\nG=z.pick,H=z.relativeLength,A;(function(a){a.getCenter=function(){var a=this.options,k=this.chart,e=2*(a.slicedOffset||0),c=k.plotWidth-2*e,h=k.plotHeight-2*e,f=a.center,q=Math.min(c,h),p=a.size,v=a.innerSize||0;\"string\"===typeof p&&(p=parseFloat(p));\"string\"===typeof v&&(v=parseFloat(v));a=[G(f[0],\"50%\"),G(f[1],\"50%\"),G(p&&0>p?void 0:a.size,\"100%\"),G(v&&0>v?void 0:a.innerSize||0,\"0%\")];!k.angular||this instanceof u||(a[3]=0);for(f=0;4>f;++f)p=a[f],k=2>f||2===f&&/%$/.test(p),a[f]=H(p,[c,h,q,a[2]][f])+\n(k?e:0);a[3]>a[2]&&(a[3]=a[2]);return a};a.getStartAndEndRadians=function(a,k){a=y(a)?a:0;k=y(k)&&k>a&&360>k-a?k:a+360;return{start:v*(a+-90),end:v*(k+-90)}}})(A||(A={}));\"\";return A});M(a,\"Series/Pie/PiePoint.js\",[a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/Series/Point.js\"],a[\"Core/Utilities.js\"]],function(a,u,z){var v=this&&this.__extends||function(){var a=function(e,c){a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var e in c)c.hasOwnProperty(e)&&\n(a[e]=c[e])};return a(e,c)};return function(e,c){function h(){this.constructor=e}a(e,c);e.prototype=null===c?Object.create(c):(h.prototype=c.prototype,new h)}}(),y=a.setAnimation,G=z.addEvent,H=z.defined;a=z.extend;var A=z.isNumber,q=z.pick,n=z.relativeLength;u=function(a){function e(){var c=null!==a&&a.apply(this,arguments)||this;c.labelDistance=void 0;c.options=void 0;c.series=void 0;return c}v(e,a);e.prototype.getConnectorPath=function(){var a=this.labelPosition,e=this.series.options.dataLabels,\nf=this.connectorShapes,k=e.connectorShape;f[k]&&(k=f[k]);return k.call(this,{x:a.final.x,y:a.final.y,alignment:a.alignment},a.connectorPosition,e)};e.prototype.getTranslate=function(){return this.sliced?this.slicedTranslation:{translateX:0,translateY:0}};e.prototype.haloPath=function(a){var c=this.shapeArgs;return this.sliced||!this.visible?[]:this.series.chart.renderer.symbols.arc(c.x,c.y,c.r+a,c.r+a,{innerR:c.r-1,start:c.start,end:c.end})};e.prototype.init=function(){var c=this;a.prototype.init.apply(this,\narguments);this.name=q(this.name,\"Slice\");var e=function(a){c.slice(\"select\"===a.type)};G(this,\"select\",e);G(this,\"unselect\",e);return this};e.prototype.isValid=function(){return A(this.y)&&0<=this.y};e.prototype.setVisible=function(a,e){var c=this,h=this.series,k=h.chart,n=h.options.ignoreHiddenPoint;e=q(e,n);a!==this.visible&&(this.visible=this.options.visible=a=\"undefined\"===typeof a?!this.visible:a,h.options.data[h.data.indexOf(this)]=this.options,[\"graphic\",\"dataLabel\",\"connector\",\"shadowGroup\"].forEach(function(e){if(c[e])c[e][a?\n\"show\":\"hide\"](a)}),this.legendItem&&k.legend.colorizeItem(this,a),a||\"hover\"!==this.state||this.setState(\"\"),n&&(h.isDirty=!0),e&&k.redraw())};e.prototype.slice=function(a,e,f){var c=this.series;y(f,c.chart);q(e,!0);this.sliced=this.options.sliced=H(a)?a:!this.sliced;c.options.data[c.data.indexOf(this)]=this.options;this.graphic&&this.graphic.animate(this.getTranslate());this.shadowGroup&&this.shadowGroup.animate(this.getTranslate())};return e}(u);a(u.prototype,{connectorShapes:{fixedOffset:function(a,\ne,c){var h=e.breakAt;e=e.touchingSliceAt;return[[\"M\",a.x,a.y],c.softConnector?[\"C\",a.x+(\"left\"===a.alignment?-5:5),a.y,2*h.x-e.x,2*h.y-e.y,h.x,h.y]:[\"L\",h.x,h.y],[\"L\",e.x,e.y]]},straight:function(a,e){e=e.touchingSliceAt;return[[\"M\",a.x,a.y],[\"L\",e.x,e.y]]},crookedLine:function(a,e,c){e=e.touchingSliceAt;var h=this.series,f=h.center[0],k=h.chart.plotWidth,p=h.chart.plotLeft;h=a.alignment;var q=this.shapeArgs.r;c=n(c.crookDistance,1);k=\"left\"===h?f+q+(k+p-f-q)*(1-c):p+(f-q)*c;c=[\"L\",k,a.y];f=!0;if(\"left\"===\nh?k>a.x||ke.x)f=!1;a=[[\"M\",a.x,a.y]];f&&a.push(c);a.push([\"L\",e.x,e.y]);return a}}});return u});M(a,\"Series/Pie/PieSeries.js\",[a[\"Series/CenteredUtilities.js\"],a[\"Series/Column/ColumnSeries.js\"],a[\"Core/Globals.js\"],a[\"Core/Legend/LegendSymbol.js\"],a[\"Series/Pie/PiePoint.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Core/Renderer/SVG/Symbols.js\"],a[\"Core/Utilities.js\"]],function(a,u,z,F,y,G,H,A,q){var n=this&&this.__extends||function(){var a=function(c,e){a=Object.setPrototypeOf||\n{__proto__:[]}instanceof Array&&function(a,c){a.__proto__=c}||function(a,c){for(var e in c)c.hasOwnProperty(e)&&(a[e]=c[e])};return a(c,e)};return function(c,e){function f(){this.constructor=c}a(c,e);c.prototype=null===e?Object.create(e):(f.prototype=e.prototype,new f)}}(),k=a.getStartAndEndRadians;z=z.noop;var e=q.clamp,c=q.extend,h=q.fireEvent,f=q.merge,v=q.pick,p=q.relativeLength;q=function(a){function c(){var c=null!==a&&a.apply(this,arguments)||this;c.center=void 0;c.data=void 0;c.maxLabelDistance=\nvoid 0;c.options=void 0;c.points=void 0;return c}n(c,a);c.prototype.animate=function(a){var c=this,e=c.points,f=c.startAngleRad;a||e.forEach(function(a){var b=a.graphic,d=a.shapeArgs;b&&d&&(b.attr({r:v(a.startR,c.center&&c.center[3]/2),start:f,end:f}),b.animate({r:d.r,start:d.start,end:d.end},c.options.animation))})};c.prototype.drawEmpty=function(){var a=this.startAngleRad,c=this.endAngleRad,e=this.options;if(0===this.total&&this.center){var f=this.center[0];var b=this.center[1];this.graph||(this.graph=\nthis.chart.renderer.arc(f,b,this.center[1]/2,0,a,c).addClass(\"highcharts-empty-series\").add(this.group));this.graph.attr({d:A.arc(f,b,this.center[2]/2,0,{start:a,end:c,innerR:this.center[3]/2})});this.chart.styledMode||this.graph.attr({\"stroke-width\":e.borderWidth,fill:e.fillColor||\"none\",stroke:e.color||\"#cccccc\"})}else this.graph&&(this.graph=this.graph.destroy())};c.prototype.drawPoints=function(){var a=this.chart.renderer;this.points.forEach(function(c){c.graphic&&c.hasNewShapeType()&&(c.graphic=\nc.graphic.destroy());c.graphic||(c.graphic=a[c.shapeType](c.shapeArgs).add(c.series.group),c.delayedRendering=!0)})};c.prototype.generatePoints=function(){a.prototype.generatePoints.call(this);this.updateTotals()};c.prototype.getX=function(a,c,f){var h=this.center,b=this.radii?this.radii[f.index]||0:h[2]/2;a=Math.asin(e((a-h[1])/(b+f.labelDistance),-1,1));return h[0]+(c?-1:1)*Math.cos(a)*(b+f.labelDistance)+(01.5*Math.PI?y-=2*Math.PI:y<-Math.PI/2&&(y+=2*Math.PI);u.slicedTranslation={translateX:Math.round(Math.cos(y)*e),translateY:Math.round(Math.sin(y)*e)};B=Math.cos(y)*a[2]/2;var A=Math.sin(y)*a[2]/2;u.tooltipPos=[a[0]+.7*B,a[1]+.7*A];u.half=y<-Math.PI/2||y>Math.PI/2?1:0;u.angle=y;w=Math.min(f,u.labelDistance/5);u.labelPosition={natural:{x:a[0]+B+\nMath.cos(y)*u.labelDistance,y:a[1]+A+Math.sin(y)*u.labelDistance},\"final\":{},alignment:0>u.labelDistance?\"center\":u.half?\"right\":\"left\",connectorPosition:{breakAt:{x:a[0]+B+Math.cos(y)*w,y:a[1]+A+Math.sin(y)*w},touchingSliceAt:{x:a[0]+B,y:a[1]+A}}}}h(this,\"afterTranslate\")};c.prototype.updateTotals=function(){var a=this.points,c=a.length,e=this.options.ignoreHiddenPoint,f,b=0;for(f=0;fv&&(a.dataLabel.css({width:Math.round(.7*\nv)+\"px\"}),a.dataLabel.shortened=!0)):(a.dataLabel=a.dataLabel.destroy(),a.dataLabels&&1===a.dataLabels.length&&delete a.dataLabels))}),C.forEach(function(e,f){var l=e.length,m=[],r;if(l){a.sortByAngle(e,f-.5);if(0h-d&&0===f&&(q=Math.round(N+M-h+d),y[1]=Math.max(q,y[1])),0>V-T/2?y[0]=Math.max(Math.round(-V+T/2),y[0]):V+T/2>n&&(y[2]=Math.max(Math.round(V+T/2-n),y[2])),\nJ.sideOverflow=q)}}}),0===q(y)||this.verifyDataLabelOverflow(y))&&(this.placeDataLabels(),this.points.forEach(function(d){R=e(g,d.options.dataLabels);if(F=c(R.connectorWidth,1)){var f;G=d.connector;if((J=d.dataLabel)&&J._pos&&d.visible&&0c.bottom-2?e:b,c.half,c)},justify:function(a,c,b){return b[0]+(a.half?-1:1)*(c+a.labelDistance)},alignToPlotEdges:function(a,c,b,e){a=a.getBBox().width;return c?a+e:b-a-e},alignToConnectors:function(a,c,b,e){var d=0,g;a.forEach(function(a){g=a.dataLabel.getBBox().width;g>d&&(d=g)});return c?d+e:b-d-e}};f.compose=function(c){a.compose(A);-1===w.indexOf(c)&&(w.push(c),c=c.prototype,c.dataLabelPositioners=C,c.alignDataLabel=\nv,c.drawDataLabels=p,c.placeDataLabels=u,c.verifyDataLabelOverflow=t)}})(f||(f={}));return f});M(a,\"Extensions/OverlappingDataLabels.js\",[a[\"Core/Chart/Chart.js\"],a[\"Core/Utilities.js\"]],function(a,u){function v(a,k){var e=!1;if(a){var c=a.newOpacity;a.oldOpacity!==c&&(a.alignAttr&&a.placed?(a[c?\"removeClass\":\"addClass\"](\"highcharts-data-label-hidden\"),e=!0,a.alignAttr.opacity=c,a[a.isOld?\"animate\":\"attr\"](a.alignAttr,null,function(){k.styledMode||a.css({pointerEvents:c?\"auto\":\"none\"})}),y(k,\"afterHideOverlappingLabel\")):\na.attr({opacity:c}));a.isOld=!0}return e}var F=u.addEvent,y=u.fireEvent,G=u.isArray,H=u.isNumber,A=u.objectEach,q=u.pick;F(a,\"render\",function(){var a=this,k=[];(this.labelCollectors||[]).forEach(function(a){k=k.concat(a())});(this.yAxis||[]).forEach(function(a){a.stacking&&a.options.stackLabels&&!a.options.stackLabels.allowOverlap&&A(a.stacking.stacks,function(a){A(a,function(a){a.label&&\"hidden\"!==a.label.visibility&&k.push(a.label)})})});(this.series||[]).forEach(function(e){var c=e.options.dataLabels;\ne.visible&&(!1!==c.enabled||e._hasPointLabels)&&(c=function(c){return c.forEach(function(c){c.visible&&(G(c.dataLabels)?c.dataLabels:c.dataLabel?[c.dataLabel]:[]).forEach(function(e){var f=e.options;e.labelrank=q(f.labelrank,c.labelrank,c.shapeArgs&&c.shapeArgs.height);f.allowOverlap?(e.oldOpacity=e.opacity,e.newOpacity=1,v(e,a)):k.push(e)})})},c(e.nodes||[]),c(e.points))});this.hideOverlappingLabels(k)});a.prototype.hideOverlappingLabels=function(a){var k=this,e=a.length,c=k.renderer,h,f,n,p=!1;\nvar q=function(a){var e,f=a.box?0:a.padding||0,b=e=0,g;if(a&&(!a.alignAttr||a.placed)){var d=a.alignAttr||{x:a.attr(\"x\"),y:a.attr(\"y\")};var h=a.parentGroup;a.width||(e=a.getBBox(),a.width=e.width,a.height=e.height,e=c.fontMetrics(null,a.element).h);var k=a.width-2*f;(g={left:\"0\",center:\"0.5\",right:\"1\"}[a.alignValue])?b=+g*k:H(a.x)&&Math.round(a.x)!==a.translateX&&(b=a.x-a.translateX);return{x:d.x+(h.translateX||0)+f-(b||0),y:d.y+(h.translateY||0)+f-e,width:a.width-2*f,height:a.height-2*f}}};for(f=\n0;f=t.x+t.width||u.x+u.width<=t.x||u.y>=t.y+t.height||u.y+u.height<=t.y||((q.labelrank=A(e.minWidth,0)&&this.chartHeight>=A(e.minHeight,0)}).call(this)&&c.push(a._id)};a.prototype.setResponsive=\nfunction(a,c){var e=this,f=this.options.responsive,h=this.currentResponsive,k=[];!c&&f&&f.rules&&f.rules.forEach(function(a){\"undefined\"===typeof a._id&&(a._id=n());e.matchResponsiveRule(a,k)},this);c=G.apply(void 0,k.map(function(a){return z((f||{}).rules||[],function(c){return c._id===a})}).map(function(a){return a&&a.chartOptions}));c.isResponsiveOptions=!0;k=k.toString()||void 0;k!==(h&&h.ruleIds)&&(h&&this.update(h.undoOptions,a,!0),k?(h=this.currentOptions(c),h.isResponsiveOptions=!0,this.currentResponsive=\n{ruleIds:k,mergedOptions:c,undoOptions:h},this.update(c,a,!0)):this.currentResponsive=void 0)};return a}()})(k||(k={}));\"\";\"\";return k});M(a,\"masters/highcharts.src.js\",[a[\"Core/Globals.js\"],a[\"Core/Utilities.js\"],a[\"Core/DefaultOptions.js\"],a[\"Core/Animation/Fx.js\"],a[\"Core/Animation/AnimationUtilities.js\"],a[\"Core/Renderer/HTML/AST.js\"],a[\"Core/FormatUtilities.js\"],a[\"Core/Renderer/RendererUtilities.js\"],a[\"Core/Renderer/SVG/SVGElement.js\"],a[\"Core/Renderer/SVG/SVGRenderer.js\"],a[\"Core/Renderer/HTML/HTMLElement.js\"],\na[\"Core/Renderer/HTML/HTMLRenderer.js\"],a[\"Core/Axis/Axis.js\"],a[\"Core/Axis/DateTimeAxis.js\"],a[\"Core/Axis/LogarithmicAxis.js\"],a[\"Core/Axis/PlotLineOrBand/PlotLineOrBand.js\"],a[\"Core/Axis/Tick.js\"],a[\"Core/Tooltip.js\"],a[\"Core/Series/Point.js\"],a[\"Core/Pointer.js\"],a[\"Core/MSPointer.js\"],a[\"Core/Legend/Legend.js\"],a[\"Core/Chart/Chart.js\"],a[\"Core/Series/Series.js\"],a[\"Core/Series/SeriesRegistry.js\"],a[\"Series/Column/ColumnSeries.js\"],a[\"Series/Column/ColumnDataLabel.js\"],a[\"Series/Pie/PieSeries.js\"],\na[\"Series/Pie/PieDataLabel.js\"],a[\"Core/Series/DataLabel.js\"],a[\"Core/Responsive.js\"],a[\"Core/Color/Color.js\"],a[\"Core/Time.js\"]],function(a,u,z,F,y,G,H,A,q,n,k,e,c,h,f,w,p,B,t,J,C,r,l,b,g,d,m,D,x,I,M,S,O){a.animate=y.animate;a.animObject=y.animObject;a.getDeferredAnimation=y.getDeferredAnimation;a.setAnimation=y.setAnimation;a.stop=y.stop;a.timers=F.timers;a.AST=G;a.Axis=c;a.Chart=l;a.chart=l.chart;a.Fx=F;a.Legend=r;a.PlotLineOrBand=w;a.Point=t;a.Pointer=C.isRequired()?C:J;a.Series=b;a.SVGElement=\nq;a.SVGRenderer=n;a.Tick=p;a.Time=O;a.Tooltip=B;a.Color=S;a.color=S.parse;e.compose(n);k.compose(q);a.defaultOptions=z.defaultOptions;a.getOptions=z.getOptions;a.time=z.defaultTime;a.setOptions=z.setOptions;a.dateFormat=H.dateFormat;a.format=H.format;a.numberFormat=H.numberFormat;a.addEvent=u.addEvent;a.arrayMax=u.arrayMax;a.arrayMin=u.arrayMin;a.attr=u.attr;a.clearTimeout=u.clearTimeout;a.correctFloat=u.correctFloat;a.createElement=u.createElement;a.css=u.css;a.defined=u.defined;a.destroyObjectProperties=\nu.destroyObjectProperties;a.discardElement=u.discardElement;a.distribute=A.distribute;a.erase=u.erase;a.error=u.error;a.extend=u.extend;a.extendClass=u.extendClass;a.find=u.find;a.fireEvent=u.fireEvent;a.getMagnitude=u.getMagnitude;a.getStyle=u.getStyle;a.inArray=u.inArray;a.isArray=u.isArray;a.isClass=u.isClass;a.isDOMElement=u.isDOMElement;a.isFunction=u.isFunction;a.isNumber=u.isNumber;a.isObject=u.isObject;a.isString=u.isString;a.keys=u.keys;a.merge=u.merge;a.normalizeTickInterval=u.normalizeTickInterval;\na.objectEach=u.objectEach;a.offset=u.offset;a.pad=u.pad;a.pick=u.pick;a.pInt=u.pInt;a.relativeLength=u.relativeLength;a.removeEvent=u.removeEvent;a.seriesType=g.seriesType;a.splat=u.splat;a.stableSort=u.stableSort;a.syncTimeout=u.syncTimeout;a.timeUnits=u.timeUnits;a.uniqueKey=u.uniqueKey;a.useSerialIds=u.useSerialIds;a.wrap=u.wrap;m.compose(d);I.compose(b);h.compose(c);f.compose(c);x.compose(D);w.compose(c);M.compose(l);return a});a[\"masters/highcharts.src.js\"]._modules=a;return a[\"masters/highcharts.src.js\"]});\n","/*!\n * jQuery JavaScript Library v3.7.0\n * https://jquery.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2023-05-11T18:29Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket trac-14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar version = \"3.7.0\",\n\n\trhtmlSuffix = /HTML$/i,\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\n\t// Retrieve the text value of an array of DOM nodes\n\ttext: function( elem ) {\n\t\tvar node,\n\t\t\tret = \"\",\n\t\t\ti = 0,\n\t\t\tnodeType = elem.nodeType;\n\n\t\tif ( !nodeType ) {\n\n\t\t\t// If no nodeType, this is expected to be an array\n\t\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t\t// Do not traverse comment nodes\n\t\t\t\tret += jQuery.text( node );\n\t\t\t}\n\t\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\t\t\treturn elem.textContent;\n\t\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\t\treturn elem.nodeValue;\n\t\t}\n\n\t\t// Do not include comment or processing instruction nodes\n\n\t\treturn ret;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\tisXMLDoc: function( elem ) {\n\t\tvar namespace = elem && elem.namespaceURI,\n\t\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t\t// Assume HTML when documentElement doesn't yet exist, such as inside\n\t\t// document fragments.\n\t\treturn !rhtmlSuffix.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar pop = arr.pop;\n\n\nvar sort = arr.sort;\n\n\nvar splice = arr.splice;\n\n\nvar whitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\";\n\n\nvar rtrimCSS = new RegExp(\n\t\"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" + whitespace + \"+$\",\n\t\"g\"\n);\n\n\n\n\n// Note: an element does not contain itself\njQuery.contains = function( a, b ) {\n\tvar bup = b && b.parentNode;\n\n\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE doesn't have `contains` on SVG.\n\t\ta.contains ?\n\t\t\ta.contains( bup ) :\n\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t) );\n};\n\n\n\n\n// CSS string/identifier serialization\n// https://drafts.csswg.org/cssom/#common-serializing-idioms\nvar rcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\x80-\\uFFFF\\w-]/g;\n\nfunction fcssescape( ch, asCodePoint ) {\n\tif ( asCodePoint ) {\n\n\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\tif ( ch === \"\\0\" ) {\n\t\t\treturn \"\\uFFFD\";\n\t\t}\n\n\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\treturn ch.slice( 0, -1 ) + \"\\\\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t}\n\n\t// Other potentially-special ASCII characters get backslash-escaped\n\treturn \"\\\\\" + ch;\n}\n\njQuery.escapeSelector = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\n\n\n\nvar preferredDoc = document,\n\tpushNative = push;\n\n( function() {\n\nvar i,\n\tExpr,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\tpush = pushNative,\n\n\t// Local document vars\n\tdocument,\n\tdocumentElement,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\tmatches,\n\n\t// Instance-specific data\n\texpando = jQuery.expando,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|\" +\n\t\t\"loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: https://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trleadingCombinator = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" +\n\t\twhitespace + \"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\tID: new RegExp( \"^#(\" + identifier + \")\" ),\n\t\tCLASS: new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\tTAG: new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\tATTR: new RegExp( \"^\" + attributes ),\n\t\tPSEUDO: new RegExp( \"^\" + pseudos ),\n\t\tCHILD: new RegExp(\n\t\t\t\"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\tbool: new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\tneedsContext: new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// https://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\tif ( nonHex ) {\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\treturn nonHex;\n\t\t}\n\n\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t// Support: IE <=11+\n\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t// surrogate pair\n\t\treturn high < 0 ?\n\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// Used for iframes; see `setDocument`.\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE/Edge.\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && nodeName( elem, \"fieldset\" );\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android <=4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = {\n\t\tapply: function( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t},\n\t\tcall: function( target ) {\n\t\t\tpushNative.apply( target, slice.call( arguments, 1 ) );\n\t\t}\n\t};\n}\n\nfunction find( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE 9 only\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tfind.contains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && context.getElementsByClassName ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( !nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rleadingCombinator.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when\n\t\t\t\t\t// strict-comparing two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( newContext != context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = jQuery.escapeSelector( nid );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrimCSS, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties\n\t\t// (see https://github.com/jquery/sizzle/issues/157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by jQuery selector module\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn nodeName( elem, \"input\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\treturn ( nodeName( elem, \"input\" ) || nodeName( elem, \"button\" ) ) &&\n\t\t\telem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11+\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a jQuery selector context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [node] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nfunction setDocument( node ) {\n\tvar subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocumentElement = document.documentElement;\n\tdocumentIsHTML = !jQuery.isXMLDoc( document );\n\n\t// Support: iOS 7 only, IE 9 - 11+\n\t// Older browsers didn't support unprefixed `matches`.\n\tmatches = documentElement.matches ||\n\t\tdocumentElement.webkitMatchesSelector ||\n\t\tdocumentElement.msMatchesSelector;\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (see trac-13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t\tsubWindow.addEventListener( \"unload\", unloadHandler );\n\t}\n\n\t// Support: IE <10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocumentElement.appendChild( el ).id = jQuery.expando;\n\t\treturn !document.getElementsByName ||\n\t\t\t!document.getElementsByName( jQuery.expando ).length;\n\t} );\n\n\t// Support: IE 9 only\n\t// Check to see if it's possible to do matchesSelector\n\t// on a disconnected node.\n\tsupport.disconnectedMatch = assert( function( el ) {\n\t\treturn matches.call( el, \"*\" );\n\t} );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// IE/Edge don't support the :scope pseudo-class.\n\tsupport.scope = assert( function() {\n\t\treturn document.querySelectorAll( \":scope\" );\n\t} );\n\n\t// Support: Chrome 105 - 111 only, Safari 15.4 - 16.3 only\n\t// Make sure the `:has()` argument is parsed unforgivingly.\n\t// We include `*` in the test to detect buggy implementations that are\n\t// _selectively_ forgiving (specifically when the list includes at least\n\t// one valid selector).\n\t// Note that we treat complete lack of support for `:has()` as if it were\n\t// spec-compliant support, which is fine because use of `:has()` in such\n\t// environments will fail in the qSA path and fall back to jQuery traversal\n\t// anyway.\n\tsupport.cssHas = assert( function() {\n\t\ttry {\n\t\t\tdocument.querySelector( \":has(*,:jqfake)\" );\n\t\t\treturn false;\n\t\t} catch ( e ) {\n\t\t\treturn true;\n\t\t}\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter.ID = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find.ID = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find.TAG = function( tag, context ) {\n\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t// DocumentFragment nodes don't have gEBTN\n\t\t} else {\n\t\t\treturn context.querySelectorAll( tag );\n\t\t}\n\t};\n\n\t// Class\n\tExpr.find.CLASS = function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\trbuggyQSA = [];\n\n\t// Build QSA regex\n\t// Regex strategy adopted from Diego Perini\n\tassert( function( el ) {\n\n\t\tvar input;\n\n\t\tdocumentElement.appendChild( el ).innerHTML =\n\t\t\t\"\" +\n\t\t\t\"\";\n\n\t\t// Support: iOS <=7 - 8 only\n\t\t// Boolean attributes and \"value\" are not treated correctly in some XML documents\n\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t}\n\n\t\t// Support: iOS <=7 - 8 only\n\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\trbuggyQSA.push( \"~=\" );\n\t\t}\n\n\t\t// Support: iOS 8 only\n\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t}\n\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\trbuggyQSA.push( \":checked\" );\n\t\t}\n\n\t\t// Support: Windows 8 Native Apps\n\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t// Support: IE 9 - 11+\n\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t// Support: Chrome <=105+, Firefox <=104+, Safari <=15.4+\n\t\t// In some of the document kinds, these selectors wouldn't work natively.\n\t\t// This is probably OK but for backwards compatibility we want to maintain\n\t\t// handling them through jQuery traversal in jQuery 3.x.\n\t\tdocumentElement.appendChild( el ).disabled = true;\n\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t}\n\n\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t// Adding a temporary attribute to the document before the selection works\n\t\t// around the issue.\n\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\tinput = document.createElement( \"input\" );\n\t\tinput.setAttribute( \"name\", \"\" );\n\t\tel.appendChild( input );\n\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t}\n\t} );\n\n\tif ( !support.cssHas ) {\n\n\t\t// Support: Chrome 105 - 110+, Safari 15.4 - 16.3+\n\t\t// Our regular `try-catch` mechanism fails to detect natively-unsupported\n\t\t// pseudo-classes inside `:has()` (such as `:has(:contains(\"Foo\"))`)\n\t\t// in browsers that parse the `:has()` argument as a forgiving selector list.\n\t\t// https://drafts.csswg.org/selectors/#relational now requires the argument\n\t\t// to be parsed unforgivingly, but browsers have not yet fully adjusted.\n\t\trbuggyQSA.push( \":has\" );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = function( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a === document || a.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b === document || b.ownerDocument == preferredDoc &&\n\t\t\t\tfind.contains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t};\n\n\treturn document;\n}\n\nfind.matches = function( expr, elements ) {\n\treturn find( expr, null, null, elements );\n};\n\nfind.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t\t// fragment in IE 9\n\t\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn find( expr, document, null, [ elem ] ).length > 0;\n};\n\nfind.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn jQuery.contains( context, elem );\n};\n\n\nfind.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (see trac-13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\tif ( val !== undefined ) {\n\t\treturn val;\n\t}\n\n\treturn elem.getAttribute( name );\n};\n\nfind.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\njQuery.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\t//\n\t// Support: Android <=4.0+\n\t// Testing for detecting duplicates is unpredictable so instead assume we can't\n\t// depend on duplicate detection in all browsers without a stable sort.\n\thasDuplicate = !support.sortStable;\n\tsortInput = !support.sortStable && slice.call( results, 0 );\n\tsort.call( results, sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tsplice.call( results, duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\njQuery.fn.uniqueSort = function() {\n\treturn this.pushStack( jQuery.uniqueSort( slice.apply( this ) ) );\n};\n\nExpr = jQuery.expr = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\tATTR: function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] || match[ 5 ] || \"\" )\n\t\t\t\t.replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\tCHILD: function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" )\n\t\t\t\t);\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tfind.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\tPSEUDO: function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr.CHILD.test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\tTAG: function( nodeNameSelector ) {\n\t\t\tvar expectedNodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn nodeName( elem, expectedNodeName );\n\t\t\t\t};\n\t\t},\n\n\t\tCLASS: function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace + \")\" + className +\n\t\t\t\t\t\"(\" + whitespace + \"|$)\" ) ) &&\n\t\t\t\tclassCache( className, function( elem ) {\n\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\tATTR: function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = find.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\tif ( operator === \"=\" ) {\n\t\t\t\t\treturn result === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"!=\" ) {\n\t\t\t\t\treturn result !== check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"^=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) === 0;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"*=\" ) {\n\t\t\t\t\treturn check && result.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"$=\" ) {\n\t\t\t\t\treturn check && result.slice( -check.length ) === check;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"~=\" ) {\n\t\t\t\t\treturn ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" )\n\t\t\t\t\t\t.indexOf( check ) > -1;\n\t\t\t\t}\n\t\t\t\tif ( operator === \"|=\" ) {\n\t\t\t\t\treturn result === check || result.slice( 0, check.length + 1 ) === check + \"-\";\n\t\t\t\t}\n\n\t\t\t\treturn false;\n\t\t\t};\n\t\t},\n\n\t\tCHILD: function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\t\t\t\t\t\t\touterCache = parent[ expando ] || ( parent[ expando ] = {} );\n\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\t\t\t\t\t\t\t\tcache = outerCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnodeName( node, name ) :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\t\t\t\t\t\t\t\t\t\t\touterCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\tPSEUDO: function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// https://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tfind.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as jQuery does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf.call( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\tnot: markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrimCSS, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element\n\t\t\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\thas: markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn find( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\tcontains: markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || jQuery.text( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// https://www.w3.org/TR/selectors/#lang-pseudo\n\t\tlang: markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tfind.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\ttarget: function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\troot: function( elem ) {\n\t\t\treturn elem === documentElement;\n\t\t},\n\n\t\tfocus: function( elem ) {\n\t\t\treturn elem === safeActiveElement() &&\n\t\t\t\tdocument.hasFocus() &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\tenabled: createDisabledPseudo( false ),\n\t\tdisabled: createDisabledPseudo( true ),\n\n\t\tchecked: function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// https://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\treturn ( nodeName( elem, \"input\" ) && !!elem.checked ) ||\n\t\t\t\t( nodeName( elem, \"option\" ) && !!elem.selected );\n\t\t},\n\n\t\tselected: function( elem ) {\n\n\t\t\t// Support: IE <=11+\n\t\t\t// Accessing the selectedIndex property\n\t\t\t// forces the browser to treat the default option as\n\t\t\t// selected when in an optgroup.\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\tempty: function( elem ) {\n\n\t\t\t// https://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\tparent: function( elem ) {\n\t\t\treturn !Expr.pseudos.empty( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\theader: function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\tinput: function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\tbutton: function( elem ) {\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"button\" ||\n\t\t\t\tnodeName( elem, \"button\" );\n\t\t},\n\n\t\ttext: function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn nodeName( elem, \"input\" ) && elem.type === \"text\" &&\n\n\t\t\t\t// Support: IE <10 only\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear\n\t\t\t\t// with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\tfirst: createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\tlast: createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\teq: createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\teven: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\todd: createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tlt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i;\n\n\t\t\tif ( argument < 0 ) {\n\t\t\t\ti = argument + length;\n\t\t\t} else if ( argument > length ) {\n\t\t\t\ti = length;\n\t\t\t} else {\n\t\t\t\ti = argument;\n\t\t\t}\n\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\tgt: createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos.nth = Expr.pseudos.eq;\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\nfunction tokenize( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rleadingCombinator.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrimCSS, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\tif ( parseOnly ) {\n\t\treturn soFar.length;\n\t}\n\n\treturn soFar ?\n\t\tfind.error( selector ) :\n\n\t\t// Cache the tokens\n\t\ttokenCache( selector, groups ).slice( 0 );\n}\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\tif ( skip && nodeName( elem, skip ) ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = outerCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\touterCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tfind( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem, matcherOut,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed ||\n\t\t\t\tmultipleContexts( selector || \"*\",\n\t\t\t\t\tcontext.nodeType ? [ context ] : context, [] ),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems;\n\n\t\tif ( matcher ) {\n\n\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter\n\t\t\t// or preexisting results,\n\t\t\tmatcherOut = postFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t[] :\n\n\t\t\t\t// ...otherwise use results directly\n\t\t\t\tresults;\n\n\t\t\t// Find primary matches\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t} else {\n\t\t\tmatcherOut = matcherIn;\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf.call( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf.call( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tvar ret = ( !leadingRelative && ( xml || context != outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element\n\t\t\t// (see https://github.com/jquery/sizzle/issues/299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\t\ttokens.slice( 0, i - 1 )\n\t\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrimCSS, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find.TAG( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: iOS <=7 - 9 only\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching\n\t\t\t// elements by id. (see trac-14142)\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tpush.call( results, elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tjQuery.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\nfunction compile( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache( selector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers ) );\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n}\n\n/**\n * A low-level selection function that works with jQuery's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with jQuery selector compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nfunction select( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find.ID(\n\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\tcontext\n\t\t\t) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr.needsContext.test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) &&\n\t\t\t\t\t\ttestContext( context.parentNode ) || context\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n}\n\n// One-time assignments\n\n// Support: Android <=4.0 - 4.1+\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Android <=4.0 - 4.1+\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\njQuery.find = find;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.unique = jQuery.uniqueSort;\n\n// These have always been private, but they used to be documented\n// as part of Sizzle so let's maintain them in the 3.x line\n// for backwards compatibility purposes.\nfind.compile = compile;\nfind.select = select;\nfind.setDocument = setDocument;\n\nfind.escape = jQuery.escapeSelector;\nfind.getText = jQuery.text;\nfind.isXML = jQuery.isXMLDoc;\nfind.selectors = jQuery.expr;\nfind.support = jQuery.support;\nfind.uniqueSort = jQuery.uniqueSort;\n\n\t/* eslint-enable */\n\n} )();\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (trac-9521)\n\t// Strict HTML recognition (trac-11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to jQuery#find\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.error );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the error, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getErrorHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getErrorHook();\n\n\t\t\t\t\t\t\t\t// The deprecated alias of the above. While the name suggests\n\t\t\t\t\t\t\t\t// returning the stack, not an error instance, jQuery just passes\n\t\t\t\t\t\t\t\t// it directly to `console.warn` so both will work; an instance\n\t\t\t\t\t\t\t\t// just better cooperates with source maps.\n\t\t\t\t\t\t\t\t} else if ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.error = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\n// If `jQuery.Deferred.getErrorHook` is defined, `asyncError` is an error\n// captured before the async barrier to get the original error cause\n// which may otherwise be hidden.\njQuery.Deferred.exceptionHook = function( error, asyncError ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message,\n\t\t\terror.stack, asyncError );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See trac-6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (trac-9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see trac-8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (trac-14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (trac-11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (trac-14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (trac-13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (trac-15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (trac-12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (trac-13208)\n\t\t\t\t// Don't process clicks on disabled elements (trac-6911, trac-8165, trac-11382, trac-11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (trac-13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", true );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, isSetup ) {\n\n\t// Missing `isSetup` indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !isSetup ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\tif ( !saved ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tdataPriv.set( this, type, false );\n\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\treturn result;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering\n\t\t\t\t// the native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, jQuery.event.trigger(\n\t\t\t\t\tsaved[ 0 ],\n\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\tthis\n\t\t\t\t) );\n\n\t\t\t\t// Abort handling of the native event by all jQuery handlers while allowing\n\t\t\t\t// native handlers on the same element to run. On target, this is achieved\n\t\t\t\t// by stopping immediate propagation just on the jQuery event. However,\n\t\t\t\t// the native event is re-wrapped by a jQuery one on each level of the\n\t\t\t\t// propagation so the only way to stop it for jQuery is to stop it for\n\t\t\t\t// everyone via native `stopPropagation()`. This is not a problem for\n\t\t\t\t// focus/blur which don't bubble, but it does also stop click on checkboxes\n\t\t\t\t// and radios. We accept this limitation.\n\t\t\t\tevent.stopPropagation();\n\t\t\t\tevent.isImmediatePropagationStopped = returnTrue;\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (trac-504, trac-13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\n\tfunction focusMappedHandler( nativeEvent ) {\n\t\tif ( document.documentMode ) {\n\n\t\t\t// Support: IE 11+\n\t\t\t// Attach a single focusin/focusout handler on the document while someone wants\n\t\t\t// focus/blur. This is because the former are synchronous in IE while the latter\n\t\t\t// are async. In other browsers, all those handlers are invoked synchronously.\n\n\t\t\t// `handle` from private data would already wrap the event, but we need\n\t\t\t// to change the `type` here.\n\t\t\tvar handle = dataPriv.get( this, \"handle\" ),\n\t\t\t\tevent = jQuery.event.fix( nativeEvent );\n\t\t\tevent.type = nativeEvent.type === \"focusin\" ? \"focus\" : \"blur\";\n\t\t\tevent.isSimulated = true;\n\n\t\t\t// First, handle focusin/focusout\n\t\t\thandle( nativeEvent );\n\n\t\t\t// ...then, handle focus/blur\n\t\t\t//\n\t\t\t// focus/blur don't bubble while focusin/focusout do; simulate the former by only\n\t\t\t// invoking the handler at the lower level.\n\t\t\tif ( event.target === event.currentTarget ) {\n\n\t\t\t\t// The setup part calls `leverageNative`, which, in turn, calls\n\t\t\t\t// `jQuery.event.add`, so event handle will already have been set\n\t\t\t\t// by this point.\n\t\t\t\thandle( event );\n\t\t\t}\n\t\t} else {\n\n\t\t\t// For non-IE browsers, attach a single capturing handler on the document\n\t\t\t// while someone wants focusin/focusout.\n\t\t\tjQuery.event.simulate( delegateType, nativeEvent.target,\n\t\t\t\tjQuery.event.fix( nativeEvent ) );\n\t\t}\n\t}\n\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\tvar attaches;\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, true );\n\n\t\t\tif ( document.documentMode ) {\n\n\t\t\t\t// Support: IE 9 - 11+\n\t\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\t\tattaches = dataPriv.get( this, delegateType );\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t}\n\t\t\t\tdataPriv.set( this, delegateType, ( attaches || 0 ) + 1 );\n\t\t\t} else {\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\tteardown: function() {\n\t\t\tvar attaches;\n\n\t\t\tif ( document.documentMode ) {\n\t\t\t\tattaches = dataPriv.get( this, delegateType ) - 1;\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t\tdataPriv.remove( this, delegateType );\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.set( this, delegateType, attaches );\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Return false to indicate standard teardown should be applied\n\t\t\t\treturn false;\n\t\t\t}\n\t\t},\n\n\t\t// Suppress native focus or blur if we're currently inside\n\t\t// a leveraged native-event stack\n\t\t_default: function( event ) {\n\t\t\treturn dataPriv.get( event.target, type );\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n\n\t// Support: Firefox <=44\n\t// Firefox doesn't have focus(in | out) events\n\t// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n\t//\n\t// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n\t// focus(in | out) events fire after focus & blur events,\n\t// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n\t// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\n\t//\n\t// Support: IE 9 - 11+\n\t// To preserve relative focusin/focus & focusout/blur event order guaranteed on the 3.x branch,\n\t// attach a single handler for both events in IE.\n\tjQuery.event.special[ delegateType ] = {\n\t\tsetup: function() {\n\n\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType );\n\n\t\t\t// Support: IE 9 - 11+\n\t\t\t// We use the same native handler for focusin & focus (and focusout & blur)\n\t\t\t// so we need to coordinate setup & teardown parts between those events.\n\t\t\t// Use `delegateType` as the key as `type` is already used by `leverageNative`.\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.addEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.addEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t}\n\t\t\tdataPriv.set( dataHolder, delegateType, ( attaches || 0 ) + 1 );\n\t\t},\n\t\tteardown: function() {\n\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\tdataHolder = document.documentMode ? this : doc,\n\t\t\t\tattaches = dataPriv.get( dataHolder, delegateType ) - 1;\n\n\t\t\tif ( !attaches ) {\n\t\t\t\tif ( document.documentMode ) {\n\t\t\t\t\tthis.removeEventListener( delegateType, focusMappedHandler );\n\t\t\t\t} else {\n\t\t\t\t\tdoc.removeEventListener( type, focusMappedHandler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( dataHolder, delegateType );\n\t\t\t} else {\n\t\t\t\tdataPriv.set( dataHolder, delegateType, attaches );\n\t\t\t}\n\t\t}\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (trac-8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Unwrap a CDATA section containing script contents. This shouldn't be\n\t\t\t\t\t\t\t// needed as in XML documents they're already not visible when\n\t\t\t\t\t\t\t// inspecting element contents and in HTML documents they have no\n\t\t\t\t\t\t\t// meaning but we're preserving that logic for backwards compatibility.\n\t\t\t\t\t\t\t// This will be removed completely in 4.0. See gh-4904.\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew jQuery#find here for performance reasons:\n\t\t\t// https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar rcustomProp = /^--/;\n\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (trac-15098, trac-14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (trac-8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\t\tisCustomProp = rcustomProp.test( name ),\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, trac-12537)\n\t// .css('--customProperty) (gh-3144)\n\tif ( computed ) {\n\n\t\t// Support: IE <=9 - 11+\n\t\t// IE only supports `\"float\"` in `getPropertyValue`; in computed styles\n\t\t// it's only available as `\"cssFloat\"`. We no longer modify properties\n\t\t// sent to `.css()` apart from camelCasing, so we need to check both.\n\t\t// Normally, this would create difference in behavior: if\n\t\t// `getPropertyValue` returns an empty string, the value returned\n\t\t// by `.css()` would be `undefined`. This is usually the case for\n\t\t// disconnected elements. However, in IE even disconnected elements\n\t\t// with no styles return `\"none\"` for `getPropertyValue( \"float\" )`\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( isCustomProp && ret ) {\n\n\t\t\t// Support: Firefox 105+, Chrome <=105+\n\t\t\t// Spec requires trimming whitespace for custom properties (gh-4926).\n\t\t\t// Firefox only trims leading whitespace. Chrome just collapses\n\t\t\t// both leading & trailing whitespace to a single space.\n\t\t\t//\n\t\t\t// Fall back to `undefined` if empty string returned.\n\t\t\t// This collapses a missing definition with property defined\n\t\t\t// and set to an empty string but there's no standard API\n\t\t\t// allowing us to differentiate them without a performance penalty\n\t\t\t// and returning `undefined` aligns with older jQuery.\n\t\t\t//\n\t\t\t// rtrimCSS treats U+000D CARRIAGE RETURN and U+000C FORM FEED\n\t\t\t// as whitespace while CSS does not, but this is not a problem\n\t\t\t// because CSS preprocessing replaces them with U+000A LINE FEED\n\t\t\t// (which *is* CSS whitespace)\n\t\t\t// https://www.w3.org/TR/css-syntax-3/#input-preprocessing\n\t\t\tret = ret.replace( rtrimCSS, \"$1\" ) || undefined;\n\t\t}\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0,\n\t\tmarginDelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\t// Count margin delta separately to only add it after scroll gutter adjustment.\n\t\t// This is needed to make negative margins work with `outerHeight( true )` (gh-3982).\n\t\tif ( box === \"margin\" ) {\n\t\t\tmarginDelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta + marginDelta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\tanimationIterationCount: true,\n\t\taspectRatio: true,\n\t\tborderImageSlice: true,\n\t\tcolumnCount: true,\n\t\tflexGrow: true,\n\t\tflexShrink: true,\n\t\tfontWeight: true,\n\t\tgridArea: true,\n\t\tgridColumn: true,\n\t\tgridColumnEnd: true,\n\t\tgridColumnStart: true,\n\t\tgridRow: true,\n\t\tgridRowEnd: true,\n\t\tgridRowStart: true,\n\t\tlineHeight: true,\n\t\topacity: true,\n\t\torder: true,\n\t\torphans: true,\n\t\tscale: true,\n\t\twidows: true,\n\t\tzIndex: true,\n\t\tzoom: true,\n\n\t\t// SVG-related\n\t\tfillOpacity: true,\n\t\tfloodOpacity: true,\n\t\tstopOpacity: true,\n\t\tstrokeMiterlimit: true,\n\t\tstrokeOpacity: true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (trac-7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug trac-9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (trac-7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (trac-12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// Use proper attribute retrieval (trac-12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + className + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += className + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classNames, cur, curValue, className, i, finalValue;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\tif ( classNames.length ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tcurValue = getClass( this );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = this.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + className + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + className + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\tthis.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar classNames, className, i, self,\n\t\t\ttype = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tclassNames = classesToArray( value );\n\n\t\treturn this.each( function() {\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\tself = jQuery( this );\n\n\t\t\t\tfor ( i = 0; i < classNames.length; i++ ) {\n\t\t\t\t\tclassName = classNames[ i ];\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (trac-14686, trac-14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (trac-2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (trac-9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (trac-9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (trac-6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// trac-7653, trac-8125, trac-8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (trac-10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes trac-9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (trac-10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket trac-12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (trac-15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// trac-9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (trac-11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// trac-1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see trac-8605, trac-14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// trac-14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"